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
@@ -0,0 +1,53 @@
1
+ export const VIEW_RENDERER_MAIN_FIELDS = [
2
+ // ── Identity ───────────────────────────────────────────────────────────────
3
+ { name: 'key', label: 'Key', type: 'expression' },
4
+
5
+ // ── View to load ──────────────────────────────────────────────────────────
6
+ // Numeric ID returned by UiBuilderModule/View/GetViewDetails.
7
+ { name: 'viewId', label: 'View ID', type: 'expression' },
8
+
9
+ // ── Reload trigger ────────────────────────────────────────────────────────
10
+ // When this expression's value changes (e.g. a counter, a form field value),
11
+ // the view schema is re-fetched and the child is remounted.
12
+ { name: 'refreshKey', label: 'Refresh Key', type: 'expression' },
13
+
14
+ // ── Data seeding ──────────────────────────────────────────────────────────
15
+ // Object expression whose value is merged into the child view's data state
16
+ // when it first loads (and whenever refreshKey fires).
17
+ // Example: { userId: form.userId, mode: 'edit' }
18
+ { name: 'initialData', label: 'Initial Data', type: 'expression' },
19
+
20
+ // Reactive data pushed into the child view on every parent re-render.
21
+ // Unlike initialData (one-time seed), externalData merges into the child
22
+ // state on every expression change — great for passing live parent state.
23
+ // Example: { selectedRow: data.selectedRow }
24
+ { name: 'externalData', label: 'External Data', type: 'expression' },
25
+
26
+ // ── State mode ────────────────────────────────────────────────────────────
27
+ // true (default) → child has its own data/form stores (fully isolated)
28
+ // false → child shares the parent page's setData/data/form
29
+ // (useful for sub-forms whose fields need to appear in
30
+ // the parent's form submit)
31
+ { name: 'isolated', label: 'Isolated State', type: 'boolean' },
32
+
33
+ // ── Height mode ───────────────────────────────────────────────────────────
34
+ // auto — wraps content; minHeight is the floor
35
+ // full — stretches to fill the parent flex container (use inside a
36
+ // container set to flex + full height)
37
+ // fixed — exact pixel height; content scrolls inside
38
+ {
39
+ name: 'heightMode',
40
+ label: 'Height Mode',
41
+ type: 'select',
42
+ options: ['auto', 'full', 'fixed'],
43
+ },
44
+ // Used when heightMode === 'fixed'. Value in pixels.
45
+ { name: 'height', label: 'Height (px)', type: 'number' },
46
+ // Used when heightMode === 'auto'. Sets the minimum height floor.
47
+ { name: 'minHeight', label: 'Min Height (px)', type: 'number' },
48
+
49
+ // ── Layout / decoration ───────────────────────────────────────────────────
50
+ { name: 'title', label: 'Title', type: 'expression' },
51
+ { name: 'showBorder', label: 'Show Border', type: 'boolean' },
52
+ { name: 'showRefresh', label: 'Show Refresh', type: 'boolean' },
53
+ ]
@@ -0,0 +1,68 @@
1
+ export const WIZARD_MAIN_FIELDS = [
2
+ { name: 'key', label: 'Key', type: 'expression' },
3
+
4
+ // ── Layout ────────────────────────────────────────────────────────────────
5
+ {
6
+ name: 'orientation',
7
+ label: 'Orientation',
8
+ type: 'select',
9
+ options: ['horizontal', 'vertical'],
10
+ },
11
+ {
12
+ name: 'variant',
13
+ label: 'Step Variant',
14
+ type: 'select',
15
+ options: ['standard', 'alternativeLabel'],
16
+ },
17
+
18
+ // ── Behaviour ─────────────────────────────────────────────────────────────
19
+ // linear: user must complete steps in order (default true).
20
+ // non-linear: any step label is clickable.
21
+ { name: 'linear', label: 'Linear (sequential)', type: 'boolean' },
22
+ { name: 'hideNavigation', label: 'Hide Nav Buttons', type: 'boolean' },
23
+
24
+ // ── Controlled step ────────────────────────────────────────────────────────
25
+ // When set, the active step is driven by this expression (e.g. data.currentStep).
26
+ // Leave blank for internal uncontrolled state.
27
+ { name: 'activeStep', label: 'Active Step (controlled)', type: 'expression' },
28
+
29
+ // ── Nav button labels ──────────────────────────────────────────────────────
30
+ { name: 'backLabel', label: 'Back Label', type: 'expression' },
31
+ { name: 'nextLabel', label: 'Next Label', type: 'expression' },
32
+ { name: 'finishLabel', label: 'Finish Label', type: 'expression' },
33
+
34
+ // ── Nav button appearance ─────────────────────────────────────────────────
35
+ {
36
+ name: 'nextColor',
37
+ label: 'Next Color',
38
+ type: 'select',
39
+ options: ['primary', 'secondary', 'success', 'error', 'warning', 'info', 'inherit'],
40
+ },
41
+ {
42
+ name: 'nextVariant',
43
+ label: 'Next Variant',
44
+ type: 'select',
45
+ options: ['text', 'outlined', 'contained'],
46
+ },
47
+ {
48
+ name: 'backColor',
49
+ label: 'Back Color',
50
+ type: 'select',
51
+ options: ['primary', 'secondary', 'success', 'error', 'warning', 'info', 'inherit'],
52
+ },
53
+ {
54
+ name: 'backVariant',
55
+ label: 'Back Variant',
56
+ type: 'select',
57
+ options: ['text', 'outlined', 'contained'],
58
+ },
59
+
60
+ // ── Lifecycle hooks ────────────────────────────────────────────────────────
61
+ // onStepChange — called whenever the active step changes.
62
+ // extraVars: { from, to, direction ('next'|'back'|'jump'), goToStep, nextStep, prevStep }
63
+ { name: 'onStepChange', label: 'On Step Change', type: 'code' },
64
+
65
+ // onFinish — called when the user clicks Finish on the last step.
66
+ // extraVars: { goToStep, nextStep, prevStep }
67
+ { name: 'onFinish', label: 'On Finish', type: 'code' },
68
+ ]
@@ -0,0 +1,25 @@
1
+ export const WIZARD_STEP_MAIN_FIELDS = [
2
+ { name: 'key', label: 'Key', type: 'expression' },
3
+ { name: 'label', label: 'Label', type: 'expression' },
4
+ // Short subtitle shown below the step label in the stepper header
5
+ { name: 'description', label: 'Description', type: 'expression' },
6
+
7
+ // ── State expressions ──────────────────────────────────────────────────────
8
+ // optional: shows "(Optional)" below the step label
9
+ { name: 'optional', label: 'Optional', type: 'boolean' },
10
+ // completed: expression — true marks the step with a checkmark
11
+ { name: 'completed', label: 'Completed', type: 'expression' },
12
+ // error: expression — true marks the step in the error state
13
+ { name: 'error', label: 'Error', type: 'expression' },
14
+
15
+ // ── Lifecycle hooks ────────────────────────────────────────────────────────
16
+ // onEnter — called when this step becomes active.
17
+ // extraVars: { stepIndex, goToStep, nextStep, prevStep }
18
+ { name: 'onEnter', label: 'On Enter', type: 'code' },
19
+
20
+ // onNext — called before leaving this step by clicking Next.
21
+ // Return true/undefined to allow, false to silently block,
22
+ // or a string to block and display as an error message.
23
+ // extraVars: { stepIndex, goToStep, nextStep, prevStep }
24
+ { name: 'onNext', label: 'On Next (validate)', type: 'code' },
25
+ ]
@@ -0,0 +1,426 @@
1
+ import { useState } from 'react'
2
+ import {
3
+ Box, Button, Dialog, DialogTitle, DialogContent, DialogActions,
4
+ Typography, IconButton, TextField, Select, MenuItem, FormControl,
5
+ InputLabel, Accordion, AccordionSummary, AccordionDetails, Chip,
6
+ Divider, Tooltip, Switch, FormControlLabel,
7
+ } from '@mui/material'
8
+ import {
9
+ Add, Close, ExpandMore, DragIndicator, BoltOutlined,
10
+ } from '@mui/icons-material'
11
+ import ColumnFunctionEditor from './ColumnFunctionEditor'
12
+ import { HelpPopover } from './FunctionHelpPopover'
13
+
14
+ // ── Constants ─────────────────────────────────────────────────────────────────
15
+
16
+ const COLOR_OPTIONS = [
17
+ { value: 'primary', label: 'Primary' },
18
+ { value: 'secondary', label: 'Secondary' },
19
+ { value: 'success', label: 'Success' },
20
+ { value: 'error', label: 'Error' },
21
+ { value: 'warning', label: 'Warning' },
22
+ { value: 'info', label: 'Info' },
23
+ { value: 'inherit', label: 'Inherit' },
24
+ ]
25
+
26
+ const VARIANT_OPTIONS = [
27
+ { value: 'text', label: 'Text' },
28
+ { value: 'contained', label: 'Contained' },
29
+ { value: 'outlined', label: 'Outlined' },
30
+ ]
31
+
32
+ // Curated list of common MUI icon names (matched to actual imports in RowActionsCell)
33
+ const ICON_OPTIONS = [
34
+ { value: '', label: '(none)' },
35
+ { value: 'EditOutlined', label: 'Edit' },
36
+ { value: 'DeleteOutlined', label: 'Delete' },
37
+ { value: 'VisibilityOutlined',label: 'View' },
38
+ { value: 'OpenInNewOutlined', label: 'Open' },
39
+ { value: 'ContentCopyOutlined',label: 'Copy' },
40
+ { value: 'DownloadOutlined', label: 'Download' },
41
+ { value: 'PrintOutlined', label: 'Print' },
42
+ { value: 'CheckOutlined', label: 'Check' },
43
+ { value: 'CloseOutlined', label: 'Close' },
44
+ { value: 'SendOutlined', label: 'Send' },
45
+ { value: 'RefreshOutlined', label: 'Refresh' },
46
+ { value: 'SettingsOutlined', label: 'Settings' },
47
+ { value: 'InfoOutlined', label: 'Info' },
48
+ { value: 'WarningOutlined', label: 'Warning' },
49
+ { value: 'ArchiveOutlined', label: 'Archive' },
50
+ { value: 'RestoreOutlined', label: 'Restore' },
51
+ { value: 'LockOutlined', label: 'Lock' },
52
+ { value: 'LockOpenOutlined', label: 'Unlock' },
53
+ { value: 'StarOutlined', label: 'Star' },
54
+ { value: 'AddOutlined', label: 'Add' },
55
+ { value: 'RemoveOutlined', label: 'Remove' },
56
+ ]
57
+
58
+ const CODE_TEMPLATE = `async function Calculation(form, data, setData, dataRef, reportRefs, openDialog, closeDialog, urlParams, page) {
59
+
60
+ }
61
+ `
62
+
63
+ const TREE_VIEW_CODE_TEMPLATE = `async function Calculation(form, data, setData, dataRef, reportRefs, openDialog, closeDialog) {
64
+
65
+ }
66
+ `
67
+
68
+ const DEFAULT_ACTION = () => ({
69
+ label: '',
70
+ color: 'primary',
71
+ variant: 'text',
72
+ icon: '',
73
+ code: CODE_TEMPLATE,
74
+ confirmation: '',
75
+ disabled: false,
76
+ })
77
+
78
+ // ── Styles ────────────────────────────────────────────────────────────────────
79
+
80
+ const INPUT_SX = {
81
+ '& .MuiInputBase-root': { color: '#e0e0e0' },
82
+ '& .MuiOutlinedInput-notchedOutline': { borderColor: '#555' },
83
+ '& .MuiInputLabel-root': { color: '#aaa' },
84
+ }
85
+
86
+ const CODE_FIELD_SX = {
87
+ '& .MuiInputBase-root': {
88
+ fontFamily: "Menlo, Monaco, 'Courier New', monospace",
89
+ fontSize: 12,
90
+ bgcolor: '#1e1e1e',
91
+ color: '#d4d4d4',
92
+ },
93
+ '& .MuiOutlinedInput-notchedOutline': { borderColor: '#444' },
94
+ '& .MuiInputLabel-root': { color: '#888' },
95
+ }
96
+
97
+ const SELECT_SX = {
98
+ color: '#e0e0e0',
99
+ '.MuiOutlinedInput-notchedOutline': { borderColor: '#555' },
100
+ }
101
+
102
+ const SECTION_LABEL_SX = {
103
+ fontSize: 11, fontWeight: 600, letterSpacing: '0.08em',
104
+ textTransform: 'uppercase', color: '#888', mb: 1,
105
+ }
106
+
107
+ // ── COLOR CHIP ────────────────────────────────────────────────────────────────
108
+
109
+ const COLOR_MAP = {
110
+ primary: '#1976d2',
111
+ secondary: '#9c27b0',
112
+ success: '#2e7d32',
113
+ error: '#d32f2f',
114
+ warning: '#ed6c02',
115
+ info: '#0288d1',
116
+ inherit: '#666',
117
+ }
118
+
119
+ // ── Action card ───────────────────────────────────────────────────────────────
120
+
121
+ function ActionCard({ action, index, expanded, onToggle, onChange, onRemove, context }) {
122
+ const update = (key, val) => onChange({ ...action, [key]: val })
123
+ const isTreeView = context === 'treeViewAction'
124
+ const helpType = isTreeView ? 'treeViewAction' : 'actionButton'
125
+ const codeDefault = isTreeView ? TREE_VIEW_CODE_TEMPLATE : CODE_TEMPLATE
126
+
127
+ const summary = action.label || `Action ${index + 1}`
128
+ const dot = COLOR_MAP[action.color] ?? '#666'
129
+
130
+ return (
131
+ <Accordion
132
+ expanded={expanded}
133
+ onChange={onToggle}
134
+ disableGutters
135
+ sx={{
136
+ bgcolor: '#2a2d32', color: '#e0e0e0',
137
+ border: '1px solid #3a3f45', borderRadius: '6px !important', mb: 1,
138
+ '&:before': { display: 'none' },
139
+ }}
140
+ >
141
+ <AccordionSummary
142
+ expandIcon={<ExpandMore sx={{ color: '#aaa' }} />}
143
+ sx={{ minHeight: 44, '& .MuiAccordionSummary-content': { alignItems: 'center', gap: 1 } }}
144
+ >
145
+ <DragIndicator sx={{ fontSize: 16, color: '#555', flexShrink: 0 }} />
146
+ {/* colour dot */}
147
+ <Box sx={{ width: 8, height: 8, borderRadius: '50%', bgcolor: dot, flexShrink: 0 }} />
148
+ <Typography variant='body2' sx={{ fontWeight: 600, flex: 1 }} noWrap>{summary}</Typography>
149
+ <Chip
150
+ label={action.variant}
151
+ size='small'
152
+ sx={{ fontSize: 10, height: 18, bgcolor: '#2a3a4a', color: '#90caf9' }}
153
+ />
154
+ {action.icon && (
155
+ <Chip label={action.icon.replace('Outlined', '')} size='small'
156
+ sx={{ fontSize: 10, height: 18, bgcolor: '#1a2a1a', color: '#81c784' }} />
157
+ )}
158
+ {action.confirmation && (
159
+ <Chip label='confirm' size='small'
160
+ sx={{ fontSize: 10, height: 18, bgcolor: '#3a2a1a', color: '#ffcc80' }} />
161
+ )}
162
+ <Tooltip title='Remove action'>
163
+ <IconButton size='small' onClick={e => { e.stopPropagation(); onRemove() }}
164
+ sx={{ color: '#f44336', ml: 0.5 }}>
165
+ <Close fontSize='small' />
166
+ </IconButton>
167
+ </Tooltip>
168
+ </AccordionSummary>
169
+
170
+ <AccordionDetails sx={{ pt: 0, pb: 2, px: 2 }}>
171
+ <Divider sx={{ borderColor: '#3a3f45', mb: 2 }} />
172
+
173
+ {/* ── Identity ── */}
174
+ <Typography sx={SECTION_LABEL_SX}>Identity</Typography>
175
+ <Box display='flex' gap={2} mb={2} flexWrap='wrap'>
176
+ <TextField
177
+ label='Label'
178
+ value={action.label}
179
+ onChange={e => update('label', e.target.value)}
180
+ size='small'
181
+ fullWidth
182
+ placeholder='e.g. Edit Record'
183
+ sx={INPUT_SX}
184
+ InputLabelProps={{ shrink: true }}
185
+ />
186
+ </Box>
187
+
188
+ {/* ── Appearance ── */}
189
+ <Typography sx={SECTION_LABEL_SX}>Appearance</Typography>
190
+ <Box display='flex' gap={2} mb={2} flexWrap='wrap'>
191
+ <FormControl size='small' sx={{ minWidth: 130 }}>
192
+ <InputLabel sx={{ color: '#aaa' }}>Color</InputLabel>
193
+ <Select value={action.color} label='Color'
194
+ onChange={e => update('color', e.target.value)} sx={SELECT_SX}>
195
+ {COLOR_OPTIONS.map(o => (
196
+ <MenuItem key={o.value} value={o.value}>
197
+ <Box display='flex' alignItems='center' gap={1}>
198
+ <Box sx={{ width: 10, height: 10, borderRadius: '50%', bgcolor: COLOR_MAP[o.value] ?? '#666' }} />
199
+ {o.label}
200
+ </Box>
201
+ </MenuItem>
202
+ ))}
203
+ </Select>
204
+ </FormControl>
205
+
206
+ <FormControl size='small' sx={{ minWidth: 130 }}>
207
+ <InputLabel sx={{ color: '#aaa' }}>Variant</InputLabel>
208
+ <Select value={action.variant} label='Variant'
209
+ onChange={e => update('variant', e.target.value)} sx={SELECT_SX}>
210
+ {VARIANT_OPTIONS.map(o => (
211
+ <MenuItem key={o.value} value={o.value}>{o.label}</MenuItem>
212
+ ))}
213
+ </Select>
214
+ </FormControl>
215
+
216
+ <FormControl size='small' sx={{ minWidth: 160 }}>
217
+ <InputLabel sx={{ color: '#aaa' }}>Icon</InputLabel>
218
+ <Select value={action.icon} label='Icon'
219
+ onChange={e => update('icon', e.target.value)} sx={SELECT_SX}>
220
+ {ICON_OPTIONS.map(o => (
221
+ <MenuItem key={o.value} value={o.value}>{o.label}</MenuItem>
222
+ ))}
223
+ </Select>
224
+ </FormControl>
225
+ </Box>
226
+
227
+ {/* ── Behaviour ── */}
228
+ <Typography sx={SECTION_LABEL_SX}>Behaviour</Typography>
229
+ <Box display='flex' gap={2} mb={2} flexWrap='wrap'>
230
+ <TextField
231
+ label='Confirmation message (optional)'
232
+ value={action.confirmation}
233
+ onChange={e => update('confirmation', e.target.value)}
234
+ size='small'
235
+ fullWidth
236
+ placeholder='Are you sure you want to delete this record?'
237
+ sx={INPUT_SX}
238
+ InputLabelProps={{ shrink: true }}
239
+ />
240
+ </Box>
241
+ <Box mb={2}>
242
+ <FormControlLabel
243
+ control={
244
+ <Switch size='small' checked={!!action.disabled}
245
+ onChange={e => update('disabled', e.target.checked)} color='warning' />
246
+ }
247
+ label={<Typography variant='caption'>Disabled</Typography>}
248
+ />
249
+ </Box>
250
+
251
+ {/* ── Code ── */}
252
+ <Typography sx={SECTION_LABEL_SX}>Action Code</Typography>
253
+ <Box display='flex' alignItems='center' gap={0.5} mb={0.5}>
254
+ <Typography sx={{ fontSize: 11, color: '#aaa' }}>Calculation function</Typography>
255
+ <ColumnFunctionEditor label='Action' type={helpType} value={action.code} onChange={v => update('code', v)} />
256
+ <HelpPopover type={helpType} />
257
+ </Box>
258
+ <TextField
259
+ value={action.code}
260
+ onChange={e => update('code', e.target.value)}
261
+ multiline
262
+ minRows={6}
263
+ maxRows={14}
264
+ fullWidth
265
+ size='small'
266
+ placeholder={codeDefault}
267
+ sx={CODE_FIELD_SX}
268
+ />
269
+ {isTreeView ? (
270
+ <Typography variant='caption' sx={{ color: '#555', mt: 0.5, display: 'block' }}>
271
+ <code style={{ color: '#90caf9' }}>node</code> — the clicked tree node object (all its fields).&nbsp;
272
+ <code style={{ color: '#90caf9' }}>data</code> / <code style={{ color: '#90caf9' }}>setData</code> — page state.&nbsp;
273
+ <code style={{ color: '#90caf9' }}>openDialog</code> / <code style={{ color: '#90caf9' }}>closeDialog</code> — dialog helpers.
274
+ </Typography>
275
+ ) : (
276
+ <Typography variant='caption' sx={{ color: '#555', mt: 0.5, display: 'block' }}>
277
+ <code style={{ color: '#90caf9' }}>rowData</code> — current row (all field values).&nbsp;
278
+ <code style={{ color: '#90caf9' }}>data</code> / <code style={{ color: '#90caf9' }}>setData</code> — page state.&nbsp;
279
+ <code style={{ color: '#90caf9' }}>setRefValue</code>, <code style={{ color: '#90caf9' }}>getRefValue</code>, <code style={{ color: '#90caf9' }}>clearRefRow</code>, <code style={{ color: '#90caf9' }}>getNodeRef</code>, <code style={{ color: '#90caf9' }}>THIS_NODE</code> — ref helpers.
280
+ </Typography>
281
+ )}
282
+ </AccordionDetails>
283
+ </Accordion>
284
+ )
285
+ }
286
+
287
+ // ── Main editor ───────────────────────────────────────────────────────────────
288
+
289
+ export default function ActionsConfigEditor({ field, context, onChange }) {
290
+ const safeField = field ?? { valueType: 'value', value: [] }
291
+ const storedValue = Array.isArray(safeField.value) ? safeField.value : []
292
+ const isTreeView = context === 'treeViewAction'
293
+ const dialogTitle = isTreeView ? 'Node Actions' : 'Row Actions'
294
+ const emptyHint = isTreeView
295
+ ? 'Each action opens from the ⋮ button on the tree node. Use `node` to access the clicked item.'
296
+ : 'Each action appears as a button in a popover when the user clicks the ⋮ button in the Actions column. Inside each Calculation, `rowData` is available as a direct variable containing the full AG Grid row object.'
297
+
298
+ const [open, setOpen] = useState(false)
299
+ const [draft, setDraft] = useState([])
300
+ const [expandedIdx, setExpanded] = useState(null)
301
+
302
+ const handleOpen = () => {
303
+ setDraft(storedValue.length > 0 ? storedValue.map(a => ({ ...DEFAULT_ACTION(), ...a })) : [])
304
+ setExpanded(storedValue.length === 0 ? null : null)
305
+ setOpen(true)
306
+ }
307
+
308
+ const handleClose = () => setOpen(false)
309
+
310
+ const handleSave = () => {
311
+ const valid = draft.filter(a => a.label?.trim())
312
+ onChange?.({ valueType: 'value', value: valid })
313
+ setOpen(false)
314
+ }
315
+
316
+ const handleAdd = () => {
317
+ const next = [...draft, DEFAULT_ACTION()]
318
+ setDraft(next)
319
+ setExpanded(next.length - 1)
320
+ }
321
+
322
+ const handleRemove = idx => {
323
+ setDraft(prev => prev.filter((_, i) => i !== idx))
324
+ if (expandedIdx === idx) setExpanded(null)
325
+ }
326
+
327
+ const handleChange = (idx, updated) =>
328
+ setDraft(prev => prev.map((a, i) => i === idx ? updated : a))
329
+
330
+ return (
331
+ <>
332
+ {/* ── Trigger ── */}
333
+ <Box display='flex' alignItems='center' justifyContent='space-between'>
334
+ <Box display='flex' alignItems='center' gap={1}>
335
+ <BoltOutlined sx={{ fontSize: 16, color: '#7b8ea0' }} />
336
+ <Typography variant='caption' sx={{ color: '#aaa' }}>
337
+ {storedValue.length > 0
338
+ ? `${storedValue.length} action${storedValue.length !== 1 ? 's' : ''}`
339
+ : 'No row actions'}
340
+ </Typography>
341
+ </Box>
342
+ <Button
343
+ size='small' variant='outlined' onClick={handleOpen}
344
+ sx={{ fontSize: 11, py: 0.3, borderColor: '#555', color: '#ccc' }}
345
+ >
346
+ Configure
347
+ </Button>
348
+ </Box>
349
+
350
+ {/* ── Dialog ── */}
351
+ <Dialog
352
+ open={open}
353
+ onClose={handleClose}
354
+ fullWidth
355
+ maxWidth='md'
356
+ PaperProps={{ sx: { bgcolor: '#1e2126', color: '#e0e0e0', border: '1px solid #3a3f45' } }}
357
+ >
358
+ <DialogTitle sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', pb: 1 }}>
359
+ <Box display='flex' alignItems='center' gap={1}>
360
+ <BoltOutlined sx={{ color: '#7b8ea0' }} />
361
+ <Typography variant='h6' sx={{ fontWeight: 600 }}>{dialogTitle}</Typography>
362
+ <Chip
363
+ label={`${draft.length} action${draft.length !== 1 ? 's' : ''}`}
364
+ size='small'
365
+ sx={{ bgcolor: '#2a3a4a', color: '#90caf9', fontSize: 11 }}
366
+ />
367
+ </Box>
368
+ <IconButton onClick={handleClose} size='small' sx={{ color: '#aaa' }}>
369
+ <Close />
370
+ </IconButton>
371
+ </DialogTitle>
372
+
373
+ <Divider sx={{ borderColor: '#3a3f45' }} />
374
+
375
+ <DialogContent sx={{ pt: 2, pb: 1 }}>
376
+ <Typography variant='caption' sx={{ color: '#666', display: 'block', mb: 2 }}>
377
+ {emptyHint}
378
+ </Typography>
379
+
380
+ {draft.length === 0 && (
381
+ <Box sx={{ textAlign: 'center', py: 4, color: '#555' }}>
382
+ <BoltOutlined sx={{ fontSize: 40, mb: 1 }} />
383
+ <Typography variant='body2'>No actions yet. Click Add to create one.</Typography>
384
+ </Box>
385
+ )}
386
+
387
+ {draft.map((action, idx) => (
388
+ <ActionCard
389
+ key={idx}
390
+ action={action}
391
+ index={idx}
392
+ context={context}
393
+ expanded={expandedIdx === idx}
394
+ onToggle={() => setExpanded(expandedIdx === idx ? null : idx)}
395
+ onChange={updated => handleChange(idx, updated)}
396
+ onRemove={() => handleRemove(idx)}
397
+ />
398
+ ))}
399
+
400
+ <Button
401
+ startIcon={<Add />}
402
+ onClick={handleAdd}
403
+ size='small'
404
+ fullWidth
405
+ sx={{
406
+ mt: 1, borderStyle: 'dashed', border: '1px dashed #3a3f45',
407
+ color: '#90caf9', borderRadius: 1.5, py: 1,
408
+ '&:hover': { bgcolor: '#1a2a3a', borderColor: '#90caf9' },
409
+ }}
410
+ >
411
+ Add Action
412
+ </Button>
413
+ </DialogContent>
414
+
415
+ <Divider sx={{ borderColor: '#3a3f45' }} />
416
+
417
+ <DialogActions sx={{ px: 3, py: 1.5, gap: 1 }}>
418
+ <Button onClick={handleClose} sx={{ color: '#aaa' }}>Cancel</Button>
419
+ <Button onClick={handleSave} variant='contained' color='primary'>
420
+ Save ({draft.filter(a => a.label?.trim()).length} actions)
421
+ </Button>
422
+ </DialogActions>
423
+ </Dialog>
424
+ </>
425
+ )
426
+ }