robobyte-front-builder 1.0.19 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. package/README.md +211 -0
  2. package/next.config.js +19 -48
  3. package/package.json +39 -85
  4. package/src/context/BuilderContext.jsx +134 -6
  5. package/src/context/SystemContext.js +2 -2
  6. package/src/hooks/useGlobalStore.js +36 -0
  7. package/src/hooks/useTimerEngine.js +54 -0
  8. package/src/lib/index.js +11 -3
  9. package/src/lib/layouts/BlankLayout.jsx +13 -0
  10. package/src/lib/providers/RoboByteFrontBuilderProvider.jsx +61 -7
  11. package/src/lib/themes/builderTheme.js +41 -0
  12. package/src/pages/_app.js +32 -134
  13. package/src/pages/api/ai.js +87 -0
  14. package/src/pages/builders/report/index.js +1 -0
  15. package/src/pages/builders/report/list/index.js +1 -0
  16. package/src/pages/builders/report/viewer/index.js +1 -0
  17. package/src/pages/index.js +88 -37
  18. package/src/pages/printBuilder/index.jsx +263 -0
  19. package/src/pages/printBuilder/layouts/index.jsx +298 -0
  20. package/src/pages/reportModule/reportBuilder/index.js +8 -6
  21. package/src/pages/reportModule/reportBuilder/reportViewer/index.js +33 -22
  22. package/src/pages/reportModule/reportBuilder/reports/index.js +3 -5
  23. package/src/pages/reportModule/reportBuilder/reportsPermissions/index.js +2 -3
  24. package/src/pages/viewBuilder/index.jsx +117 -32
  25. package/src/pages/viewBuilder/views/index.js +3 -3
  26. package/src/pages/viewer/[id]/index.js +2 -1
  27. package/src/services/DeleteService.js +31 -60
  28. package/src/services/Endpoints/PrintLayoutEndpoints.js +42 -0
  29. package/src/services/Endpoints.js +2 -0
  30. package/src/services/GetService.js +33 -54
  31. package/src/services/PatchService.js +38 -65
  32. package/src/services/PostService.js +37 -63
  33. package/src/services/UpdateService.js +39 -65
  34. package/src/services/builderHelper/actionExecutor.js +141 -25
  35. package/src/services/builderHelper/builderHelper.js +92 -0
  36. package/src/services/builderHelper/colorSchema.js +95 -0
  37. package/src/services/builderHelper/iconResolver.js +50 -0
  38. package/src/services/builderHelper/jsExecutor.js +212 -46
  39. package/src/services/builderHelper/nodeFactory.js +32 -15
  40. package/src/services/builderHelper/numberFormat.js +123 -0
  41. package/src/services/builderHelper/resolveProps.js +73 -4
  42. package/src/services/builderHelper/thresholdEngine.js +77 -0
  43. package/src/services/builderHelper/tree.js +31 -0
  44. package/src/services/components/agGridAutoComplete.js +5 -9
  45. package/src/services/config.js +9 -1
  46. package/src/services/globalStore.js +80 -0
  47. package/src/services/helper/multiSelectEditor.js +5 -9
  48. package/src/services/helper/multiSelectEditorByBuilder.js +5 -9
  49. package/src/services/reportData/fetchReportData.js +69 -28
  50. package/src/services/routerRef.js +35 -0
  51. package/src/views/ConfirmDialog.js +2 -2
  52. package/src/views/builder/JSEditor.js +105 -107
  53. package/src/views/builder/inspector/Inspector.jsx +6 -9
  54. package/src/views/builder/inspector/Tabs/ComponentActionsTab.jsx +7 -13
  55. package/src/views/builder/inspector/Tabs/MainTab.jsx +143 -25
  56. package/src/views/builder/inspector/Tabs/RulesTab.jsx +9 -24
  57. package/src/views/builder/inspector/Tabs/StyleTab.jsx +9 -24
  58. package/src/views/builder/inspector/definitions/autocomplete/main.js +4 -6
  59. package/src/views/builder/inspector/definitions/banner/actions.js +7 -0
  60. package/src/views/builder/inspector/definitions/banner/main.js +22 -0
  61. package/src/views/builder/inspector/definitions/banner/rules.js +1 -0
  62. package/src/views/builder/inspector/definitions/banner/style.js +1 -0
  63. package/src/views/builder/inspector/definitions/breadcrumb/main.js +43 -6
  64. package/src/views/builder/inspector/definitions/button/main.js +11 -12
  65. package/src/views/builder/inspector/definitions/button/style.js +18 -30
  66. package/src/views/builder/inspector/definitions/checkbox/actions.js +3 -1
  67. package/src/views/builder/inspector/definitions/checkbox/main.js +4 -6
  68. package/src/views/builder/inspector/definitions/common/main.js +13 -2
  69. package/src/views/builder/inspector/definitions/dataGrid/main.js +23 -0
  70. package/src/views/builder/inspector/definitions/dataTableViewer/main.js +46 -0
  71. package/src/views/builder/inspector/definitions/datepicker/actions.js +3 -1
  72. package/src/views/builder/inspector/definitions/datepicker/main.js +6 -14
  73. package/src/views/builder/inspector/definitions/dialog/main.js +36 -0
  74. package/src/views/builder/inspector/definitions/dropdown/main.js +5 -8
  75. package/src/views/builder/inspector/definitions/excelUpload/actions.js +23 -0
  76. package/src/views/builder/inspector/definitions/excelUpload/main.js +17 -0
  77. package/src/views/builder/inspector/definitions/excelUpload/rules.js +1 -0
  78. package/src/views/builder/inspector/definitions/excelUpload/style.js +45 -0
  79. package/src/views/builder/inspector/definitions/header/main.js +10 -1
  80. package/src/views/builder/inspector/definitions/index.js +106 -19
  81. package/src/views/builder/inspector/definitions/input/actions.js +4 -1
  82. package/src/views/builder/inspector/definitions/input/main.js +20 -11
  83. package/src/views/builder/inspector/definitions/kpi/avatarGroup.js +22 -0
  84. package/src/views/builder/inspector/definitions/kpi/badge.js +17 -0
  85. package/src/views/builder/inspector/definitions/kpi/bulletChart.js +47 -0
  86. package/src/views/builder/inspector/definitions/kpi/chart.js +55 -0
  87. package/src/views/builder/inspector/definitions/kpi/colorScale.js +60 -0
  88. package/src/views/builder/inspector/definitions/kpi/comparisonBars.js +41 -0
  89. package/src/views/builder/inspector/definitions/kpi/countdown.js +46 -0
  90. package/src/views/builder/inspector/definitions/kpi/donut.js +51 -0
  91. package/src/views/builder/inspector/definitions/kpi/funnel.js +25 -0
  92. package/src/views/builder/inspector/definitions/kpi/gauge.js +39 -0
  93. package/src/views/builder/inspector/definitions/kpi/heatmapGrid.js +96 -0
  94. package/src/views/builder/inspector/definitions/kpi/iconBox.js +20 -0
  95. package/src/views/builder/inspector/definitions/kpi/metric.js +45 -0
  96. package/src/views/builder/inspector/definitions/kpi/rating.js +27 -0
  97. package/src/views/builder/inspector/definitions/kpi/statusDot.js +18 -0
  98. package/src/views/builder/inspector/definitions/kpi/stepStage.js +65 -0
  99. package/src/views/builder/inspector/definitions/kpi/tagList.js +32 -0
  100. package/src/views/builder/inspector/definitions/kpi/timeline.js +80 -0
  101. package/src/views/builder/inspector/definitions/kpi/trend.js +20 -0
  102. package/src/views/builder/inspector/definitions/label/main.js +10 -1
  103. package/src/views/builder/inspector/definitions/layout/main.js +27 -3
  104. package/src/views/builder/inspector/definitions/number/main.js +6 -14
  105. package/src/views/builder/inspector/definitions/pageNumber/main.js +21 -0
  106. package/src/views/builder/inspector/definitions/popover/main.js +71 -0
  107. package/src/views/builder/inspector/definitions/radio/main.js +5 -8
  108. package/src/views/builder/inspector/definitions/repeater/main.js +31 -0
  109. package/src/views/builder/inspector/definitions/reportViewer/main.js +15 -1
  110. package/src/views/builder/inspector/definitions/richtext/main.js +5 -8
  111. package/src/views/builder/inspector/definitions/signature/main.js +4 -1
  112. package/src/views/builder/inspector/definitions/tag/main.js +5 -8
  113. package/src/views/builder/inspector/definitions/textarea/actions.js +4 -1
  114. package/src/views/builder/inspector/definitions/textarea/main.js +5 -7
  115. package/src/views/builder/inspector/definitions/time/main.js +5 -8
  116. package/src/views/builder/inspector/definitions/toggle/main.js +5 -19
  117. package/src/views/builder/inspector/definitions/treeView/main.js +61 -0
  118. package/src/views/builder/inspector/definitions/viewRenderer/main.js +53 -0
  119. package/src/views/builder/inspector/definitions/wizard/main.js +68 -0
  120. package/src/views/builder/inspector/definitions/wizard-step/main.js +25 -0
  121. package/src/views/builder/inspector/fields/ActionsConfigEditor.jsx +426 -0
  122. package/src/views/builder/inspector/fields/ColorSchemaField.jsx +140 -0
  123. package/src/views/builder/inspector/fields/ColumnFunctionEditor.jsx +238 -0
  124. package/src/views/builder/inspector/fields/ColumnMappingEditor.jsx +105 -0
  125. package/src/views/builder/inspector/fields/ColumnsConfigEditor.jsx +506 -0
  126. package/src/views/builder/inspector/fields/DonutRingsEditorField.jsx +337 -0
  127. package/src/views/builder/inspector/fields/ExtraColsEditor.jsx +618 -0
  128. package/src/views/builder/inspector/fields/FunctionHelpPopover.jsx +295 -0
  129. package/src/views/builder/inspector/fields/IconEditor.jsx +64 -0
  130. package/src/views/builder/inspector/fields/KpiActionField.jsx +223 -0
  131. package/src/views/builder/inspector/fields/MarkersEditorField.jsx +173 -0
  132. package/src/views/builder/inspector/fields/SelectEditor.jsx +9 -5
  133. package/src/views/builder/inspector/fields/SeriesEditorField.jsx +363 -0
  134. package/src/views/builder/inspector/fields/TableColumnsEditor.jsx +104 -0
  135. package/src/views/builder/inspector/fields/ThresholdsEditor.jsx +247 -0
  136. package/src/views/builder/inspector/fields/ValueFunctionsRefPanel.jsx +217 -0
  137. package/src/views/builder/inspector/fields/columnEditorShared.jsx +217 -0
  138. package/src/views/builder/sidebar/Sidebar.jsx +4 -2
  139. package/src/views/builder/sidebar/SidebarTabs.jsx +28 -17
  140. package/src/views/builder/sidebar/tabs/ActionsTab.jsx +7 -3
  141. package/src/views/builder/sidebar/tabs/AiTab/AiPreviewDialog.jsx +193 -0
  142. package/src/views/builder/sidebar/tabs/AiTab/aiProvider.js +49 -0
  143. package/src/views/builder/sidebar/tabs/AiTab/index.jsx +409 -0
  144. package/src/views/builder/sidebar/tabs/AiTab/schemaTransformer.js +102 -0
  145. package/src/views/builder/sidebar/tabs/AiTab/schemaValidator.js +64 -0
  146. package/src/views/builder/sidebar/tabs/AiTab/systemPrompt.js +1151 -0
  147. package/src/views/builder/sidebar/tabs/Components/ComponentsTab.jsx +31 -31
  148. package/src/views/builder/sidebar/tabs/Components/componentCatalog.js +43 -21
  149. package/src/views/builder/sidebar/tabs/Components/printComponentCatalog.js +81 -0
  150. package/src/views/builder/sidebar/tabs/TimersTab.jsx +338 -0
  151. package/src/views/builder/sidebar/tabs/TreeTab.jsx +13 -4
  152. package/src/views/builder/sidebar/tabs/ViewTab.jsx +1 -1
  153. package/src/views/builder/viewer/AdornedLabel.jsx +82 -0
  154. package/src/views/builder/viewer/ComponentRenderer.jsx +98 -24
  155. package/src/views/builder/viewer/DialogsZone.jsx +259 -0
  156. package/src/views/builder/viewer/FieldLabel.jsx +106 -0
  157. package/src/views/builder/viewer/PrintDialog.jsx +481 -0
  158. package/src/views/builder/viewer/ProductionViewer.jsx +80 -5
  159. package/src/views/builder/viewer/Viewer.jsx +106 -8
  160. package/src/views/builder/viewer/ViewerComponentWrapper.jsx +61 -4
  161. package/src/views/builder/viewer/ViewerToolbar.jsx +273 -59
  162. package/src/views/builder/viewer/renderers/AutoCompleteRenderer.jsx +26 -22
  163. package/src/views/builder/viewer/renderers/AvatarGroupRenderer.jsx +112 -0
  164. package/src/views/builder/viewer/renderers/BadgeRenderer.jsx +79 -0
  165. package/src/views/builder/viewer/renderers/BannerRenderer.jsx +62 -0
  166. package/src/views/builder/viewer/renderers/BreadcrumbRenderer.jsx +203 -15
  167. package/src/views/builder/viewer/renderers/BulletChartRenderer.jsx +147 -0
  168. package/src/views/builder/viewer/renderers/ButtonRenderer.jsx +98 -39
  169. package/src/views/builder/viewer/renderers/CardRenderer.jsx +1 -1
  170. package/src/views/builder/viewer/renderers/ChartRenderer.jsx +388 -0
  171. package/src/views/builder/viewer/renderers/CheckboxRenderer.jsx +17 -9
  172. package/src/views/builder/viewer/renderers/ColorScaleRenderer.jsx +300 -0
  173. package/src/views/builder/viewer/renderers/ComparisonBarsRenderer.jsx +133 -0
  174. package/src/views/builder/viewer/renderers/ContainerRenderer.jsx +3 -1
  175. package/src/views/builder/viewer/renderers/CountdownRenderer.jsx +249 -0
  176. package/src/views/builder/viewer/renderers/DataGridRenderer.jsx +380 -0
  177. package/src/views/builder/viewer/renderers/DataTableViewerRenderer.jsx +240 -0
  178. package/src/views/builder/viewer/renderers/DatePickerRenderer.jsx +25 -24
  179. package/src/views/builder/viewer/renderers/DialogRenderer.jsx +327 -0
  180. package/src/views/builder/viewer/renderers/DividerRenderer.jsx +1 -1
  181. package/src/views/builder/viewer/renderers/DonutRenderer.jsx +294 -0
  182. package/src/views/builder/viewer/renderers/DropdownRenderer.jsx +36 -44
  183. package/src/views/builder/viewer/renderers/ExcelUploadRenderer.jsx +639 -0
  184. package/src/views/builder/viewer/renderers/FunnelRenderer.jsx +93 -0
  185. package/src/views/builder/viewer/renderers/GaugeRenderer.jsx +159 -0
  186. package/src/views/builder/viewer/renderers/HeaderRenderer.jsx +31 -9
  187. package/src/views/builder/viewer/renderers/HeatmapGridRenderer.jsx +432 -0
  188. package/src/views/builder/viewer/renderers/IconBoxRenderer.jsx +59 -0
  189. package/src/views/builder/viewer/renderers/ImageRenderer.jsx +1 -1
  190. package/src/views/builder/viewer/renderers/InputRenderer.jsx +75 -18
  191. package/src/views/builder/viewer/renderers/LabelRenderer.jsx +35 -9
  192. package/src/views/builder/viewer/renderers/LayoutCellRenderer.jsx +102 -40
  193. package/src/views/builder/viewer/renderers/LayoutContextMenu.jsx +8 -8
  194. package/src/views/builder/viewer/renderers/LayoutRenderer.jsx +48 -6
  195. package/src/views/builder/viewer/renderers/LinkRenderer.jsx +1 -1
  196. package/src/views/builder/viewer/renderers/MenuRenderer.jsx +2 -2
  197. package/src/views/builder/viewer/renderers/MetricRenderer.jsx +80 -0
  198. package/src/views/builder/viewer/renderers/NumberFormatRenderer.jsx +21 -30
  199. package/src/views/builder/viewer/renderers/PageNumberRenderer.jsx +76 -0
  200. package/src/views/builder/viewer/renderers/PopoverRenderer.jsx +350 -0
  201. package/src/views/builder/viewer/renderers/ProgressCircleRenderer.jsx +1 -1
  202. package/src/views/builder/viewer/renderers/ProgressLineRenderer.jsx +1 -1
  203. package/src/views/builder/viewer/renderers/RadioGroupRenderer.jsx +28 -39
  204. package/src/views/builder/viewer/renderers/RatingRenderer.jsx +80 -0
  205. package/src/views/builder/viewer/renderers/RepeaterRenderer.jsx +297 -38
  206. package/src/views/builder/viewer/renderers/ReportViewerRenderer.jsx +219 -5
  207. package/src/views/builder/viewer/renderers/RichTextRenderer.jsx +60 -66
  208. package/src/views/builder/viewer/renderers/RowActionsCell.jsx +308 -0
  209. package/src/views/builder/viewer/renderers/SignatureRenderer.jsx +33 -62
  210. package/src/views/builder/viewer/renderers/StatusDotRenderer.jsx +75 -0
  211. package/src/views/builder/viewer/renderers/StepStageRenderer.jsx +348 -0
  212. package/src/views/builder/viewer/renderers/TagListRenderer.jsx +115 -0
  213. package/src/views/builder/viewer/renderers/TagPickerRenderer.jsx +31 -45
  214. package/src/views/builder/viewer/renderers/TextAreaRenderer.jsx +25 -18
  215. package/src/views/builder/viewer/renderers/TextRenderer.jsx +7 -1
  216. package/src/views/builder/viewer/renderers/TimePickerRenderer.jsx +25 -24
  217. package/src/views/builder/viewer/renderers/TimelineRenderer.jsx +525 -0
  218. package/src/views/builder/viewer/renderers/ToggleRenderer.jsx +21 -27
  219. package/src/views/builder/viewer/renderers/TreeViewRenderer.jsx +832 -0
  220. package/src/views/builder/viewer/renderers/TrendRenderer.jsx +66 -0
  221. package/src/views/builder/viewer/renderers/ViewRendererRenderer.jsx +315 -0
  222. package/src/views/builder/viewer/renderers/WizardRenderer.jsx +380 -64
  223. package/src/views/builder/viewer/renderers/WizardStepRenderer.jsx +21 -12
  224. package/src/views/builder/viewer/renderers/dataGridComponents.jsx +824 -0
  225. package/src/views/customFilter/CustomFilterDialog.js +1023 -660
  226. package/src/views/customFilter/FixedFilterDialog.js +649 -0
  227. package/src/views/customFilter/SearchFilterDialog.js +248 -0
  228. package/src/views/genericTable/BuilderExpressionParams.js +3 -3
  229. package/src/views/genericTable/ColumnConfiguratorDialog.js +33 -24
  230. package/src/views/genericTable/FixedFilterDialog.js +3 -2
  231. package/src/views/genericTable/FormattingSettingsDialog.js +8 -3
  232. package/src/views/genericTable/SGrid.js +198 -97
  233. package/src/views/genericTable/SearchFilterDialog.js +3 -2
  234. package/src/views/genericTable/cellEditors/autocompleteEditor.js +5 -9
  235. package/src/views/genericTable/convertStringFunctions.js +274 -138
  236. package/src/views/genericTable/statusBar/rowCountStatusBar.js +3 -1
  237. package/src/views/genericTable/updateRefHelpers.js +9 -6
  238. package/src/views/printBuilder/PrintBuilderViewer.jsx +607 -0
  239. package/src/views/printBuilder/PrintPreviewCanvas.jsx +157 -0
  240. package/src/views/rolePermissions/UpdateReportPermissionDialog.js +3 -2
  241. package/src/@core/components/auth/AclGuard.js +0 -55
  242. package/src/@core/components/auth/AuthGuard.js +0 -40
  243. package/src/@core/components/auth/GuestGuard.js +0 -30
  244. package/src/@core/components/custom-inputs/Horizontal.jsx +0 -143
  245. package/src/@core/components/custom-inputs/Image.jsx +0 -78
  246. package/src/@core/components/custom-inputs/Vertical.jsx +0 -113
  247. package/src/@core/components/customizer/index.jsx +0 -470
  248. package/src/@core/components/customizer/styles.module.css +0 -169
  249. package/src/@core/components/mui/Avatar.jsx +0 -41
  250. package/src/@core/components/mui/Badge.jsx +0 -20
  251. package/src/@core/components/mui/IconButton.jsx +0 -74
  252. package/src/@core/components/mui/TabList.jsx +0 -60
  253. package/src/@core/components/option-menu/index.jsx +0 -137
  254. package/src/@core/components/scroll-to-top/index.jsx +0 -43
  255. package/src/@core/components/spinner/index.js +0 -26
  256. package/src/@core/components/window-wrapper/index.js +0 -27
  257. package/src/@core/contexts/settingsContext.jsx +0 -98
  258. package/src/@core/hooks/useBgColor.js +0 -63
  259. package/src/@core/hooks/useImageVariant.js +0 -27
  260. package/src/@core/hooks/useLayoutInit.js +0 -37
  261. package/src/@core/hooks/useObjectCookie.js +0 -18
  262. package/src/@core/hooks/useSettings.jsx +0 -15
  263. package/src/@core/layouts/BlankLayout.js +0 -37
  264. package/src/@core/layouts/BlankLayoutWithAppBar.js +0 -51
  265. package/src/@core/layouts/HorizontalLayout.jsx +0 -151
  266. package/src/@core/layouts/Layout.js +0 -39
  267. package/src/@core/layouts/VerticalLayout.jsx +0 -124
  268. package/src/@core/layouts/components/blank-layout-with-appBar/index.js +0 -115
  269. package/src/@core/layouts/components/horizontal/app-bar-content/index.js +0 -67
  270. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavGroup.js +0 -352
  271. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavItems.js +0 -21
  272. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavLink.js +0 -195
  273. package/src/@core/layouts/components/horizontal/navigation/index.js +0 -31
  274. package/src/@core/layouts/components/shared-components/LanguageDropdown.js +0 -96
  275. package/src/@core/layouts/components/shared-components/ModeToggler.js +0 -32
  276. package/src/@core/layouts/components/shared-components/NotificationDropdown.js +0 -226
  277. package/src/@core/layouts/components/shared-components/UserDropdown.js +0 -177
  278. package/src/@core/layouts/components/shared-components/footer/FooterContent.js +0 -46
  279. package/src/@core/layouts/components/shared-components/footer/index.js +0 -61
  280. package/src/@core/layouts/components/vertical/appBar/index.js +0 -74
  281. package/src/@core/layouts/components/vertical/navigation/Drawer.js +0 -122
  282. package/src/@core/layouts/components/vertical/navigation/VerticalNavGroup.js +0 -435
  283. package/src/@core/layouts/components/vertical/navigation/VerticalNavHeader.js +0 -180
  284. package/src/@core/layouts/components/vertical/navigation/VerticalNavItems.js +0 -26
  285. package/src/@core/layouts/components/vertical/navigation/VerticalNavLink.js +0 -258
  286. package/src/@core/layouts/components/vertical/navigation/VerticalNavSectionTitle.js +0 -102
  287. package/src/@core/layouts/components/vertical/navigation/index.js +0 -169
  288. package/src/@core/layouts/utils.js +0 -69
  289. package/src/@core/styles/Table.module.css +0 -93
  290. package/src/@core/styles/horizontal/menuItemStyles.js +0 -100
  291. package/src/@core/styles/horizontal/menuRootStyles.js +0 -19
  292. package/src/@core/styles/libs/fullcalendar/index.js +0 -461
  293. package/src/@core/styles/libs/keen-slider/index.js +0 -111
  294. package/src/@core/styles/libs/react-apexcharts/index.js +0 -107
  295. package/src/@core/styles/libs/react-cleave/index.js +0 -33
  296. package/src/@core/styles/libs/react-credit-cards/index.js +0 -11
  297. package/src/@core/styles/libs/react-datepicker/index.js +0 -388
  298. package/src/@core/styles/libs/react-draft-wysiwyg/index.js +0 -144
  299. package/src/@core/styles/libs/react-dropzone/index.js +0 -76
  300. package/src/@core/styles/libs/react-hot-toast/index.js +0 -37
  301. package/src/@core/styles/libs/recharts/index.js +0 -47
  302. package/src/@core/styles/stepper.js +0 -103
  303. package/src/@core/styles/vertical/menuItemStyles.js +0 -138
  304. package/src/@core/styles/vertical/menuSectionStyles.js +0 -54
  305. package/src/@core/styles/vertical/navigationCustomStyles.js +0 -62
  306. package/src/@core/svg/ContentCompact.jsx +0 -17
  307. package/src/@core/svg/ContentWide.jsx +0 -17
  308. package/src/@core/svg/DirectionLtr.jsx +0 -93
  309. package/src/@core/svg/DirectionRtl.jsx +0 -93
  310. package/src/@core/svg/LayoutCollapsed.jsx +0 -59
  311. package/src/@core/svg/LayoutHorizontal.jsx +0 -42
  312. package/src/@core/svg/LayoutVertical.jsx +0 -59
  313. package/src/@core/svg/Logo.jsx +0 -76
  314. package/src/@core/svg/SkinBordered.jsx +0 -54
  315. package/src/@core/svg/SkinDefault.jsx +0 -59
  316. package/src/@core/tailwind/plugin.js +0 -78
  317. package/src/@core/theme/ThemeComponent.js +0 -63
  318. package/src/@core/theme/ThemeOptions.js +0 -71
  319. package/src/@core/theme/breakpoints/index.js +0 -11
  320. package/src/@core/theme/colorSchemes.js +0 -326
  321. package/src/@core/theme/customShadows.js +0 -11
  322. package/src/@core/theme/globalStyles.js +0 -81
  323. package/src/@core/theme/index.js +0 -42
  324. package/src/@core/theme/overrides/accordion.js +0 -51
  325. package/src/@core/theme/overrides/accordion.jsx +0 -85
  326. package/src/@core/theme/overrides/alerts.js +0 -110
  327. package/src/@core/theme/overrides/alerts.jsx +0 -180
  328. package/src/@core/theme/overrides/autocomplete.js +0 -14
  329. package/src/@core/theme/overrides/autocomplete.jsx +0 -68
  330. package/src/@core/theme/overrides/avatar.js +0 -38
  331. package/src/@core/theme/overrides/avatars.js +0 -27
  332. package/src/@core/theme/overrides/backdrop.js +0 -22
  333. package/src/@core/theme/overrides/badges.js +0 -16
  334. package/src/@core/theme/overrides/breadcrumbs.js +0 -11
  335. package/src/@core/theme/overrides/button-group.js +0 -84
  336. package/src/@core/theme/overrides/button.js +0 -93
  337. package/src/@core/theme/overrides/buttonGroup.js +0 -9
  338. package/src/@core/theme/overrides/card.js +0 -83
  339. package/src/@core/theme/overrides/checkbox.jsx +0 -95
  340. package/src/@core/theme/overrides/chip.js +0 -72
  341. package/src/@core/theme/overrides/dataGrid.js +0 -114
  342. package/src/@core/theme/overrides/dateTimePicker.js +0 -65
  343. package/src/@core/theme/overrides/dialog.js +0 -120
  344. package/src/@core/theme/overrides/divider.js +0 -13
  345. package/src/@core/theme/overrides/drawer.js +0 -20
  346. package/src/@core/theme/overrides/fab.js +0 -13
  347. package/src/@core/theme/overrides/form-control-label.js +0 -19
  348. package/src/@core/theme/overrides/icon-button.js +0 -145
  349. package/src/@core/theme/overrides/index.js +0 -103
  350. package/src/@core/theme/overrides/input.js +0 -72
  351. package/src/@core/theme/overrides/link.js +0 -9
  352. package/src/@core/theme/overrides/list.js +0 -44
  353. package/src/@core/theme/overrides/menu.js +0 -25
  354. package/src/@core/theme/overrides/pagination.js +0 -41
  355. package/src/@core/theme/overrides/paper.js +0 -9
  356. package/src/@core/theme/overrides/popover.js +0 -16
  357. package/src/@core/theme/overrides/progress.js +0 -38
  358. package/src/@core/theme/overrides/radio.jsx +0 -80
  359. package/src/@core/theme/overrides/rating.js +0 -16
  360. package/src/@core/theme/overrides/rating.jsx +0 -32
  361. package/src/@core/theme/overrides/select.js +0 -19
  362. package/src/@core/theme/overrides/select.jsx +0 -52
  363. package/src/@core/theme/overrides/slider.js +0 -97
  364. package/src/@core/theme/overrides/snackbar.js +0 -19
  365. package/src/@core/theme/overrides/switch.js +0 -73
  366. package/src/@core/theme/overrides/switches.js +0 -25
  367. package/src/@core/theme/overrides/table-pagination.js +0 -39
  368. package/src/@core/theme/overrides/table.js +0 -81
  369. package/src/@core/theme/overrides/tabs.js +0 -30
  370. package/src/@core/theme/overrides/timeline.js +0 -80
  371. package/src/@core/theme/overrides/toggle-button.js +0 -33
  372. package/src/@core/theme/overrides/toggleButton.js +0 -16
  373. package/src/@core/theme/overrides/tooltip.js +0 -21
  374. package/src/@core/theme/overrides/typography.js +0 -13
  375. package/src/@core/theme/palette/index.js +0 -107
  376. package/src/@core/theme/shadows/index.js +0 -61
  377. package/src/@core/theme/shadows.js +0 -12
  378. package/src/@core/theme/spacing/index.js +0 -3
  379. package/src/@core/theme/spacing.js +0 -5
  380. package/src/@core/theme/typography/index.js +0 -65
  381. package/src/@core/theme/typography.js +0 -84
  382. package/src/@core/utils/create-emotion-cache.js +0 -5
  383. package/src/@core/utils/hex-to-rgba.js +0 -11
  384. package/src/@core/utils/serverHelpers.js +0 -45
  385. package/src/@menu/components/RouterLink.jsx +0 -18
  386. package/src/@menu/components/horizontal-menu/HorizontalNav.jsx +0 -88
  387. package/src/@menu/components/horizontal-menu/Menu.jsx +0 -83
  388. package/src/@menu/components/horizontal-menu/MenuButton.jsx +0 -100
  389. package/src/@menu/components/horizontal-menu/MenuItem.jsx +0 -183
  390. package/src/@menu/components/horizontal-menu/SubMenu.jsx +0 -418
  391. package/src/@menu/components/horizontal-menu/SubMenuContent.jsx +0 -41
  392. package/src/@menu/components/horizontal-menu/VerticalNavInHorizontal.jsx +0 -20
  393. package/src/@menu/components/vertical-menu/Menu.jsx +0 -161
  394. package/src/@menu/components/vertical-menu/MenuButton.jsx +0 -95
  395. package/src/@menu/components/vertical-menu/MenuItem.jsx +0 -180
  396. package/src/@menu/components/vertical-menu/MenuSection.jsx +0 -124
  397. package/src/@menu/components/vertical-menu/NavCollapseIcons.jsx +0 -70
  398. package/src/@menu/components/vertical-menu/NavHeader.jsx +0 -39
  399. package/src/@menu/components/vertical-menu/SubMenu.jsx +0 -420
  400. package/src/@menu/components/vertical-menu/SubMenuContent.jsx +0 -101
  401. package/src/@menu/components/vertical-menu/VerticalNav.jsx +0 -216
  402. package/src/@menu/contexts/horizontalNavContext.jsx +0 -29
  403. package/src/@menu/contexts/verticalNavContext.jsx +0 -65
  404. package/src/@menu/defaultConfigs.js +0 -12
  405. package/src/@menu/hooks/useHorizontalMenu.jsx +0 -19
  406. package/src/@menu/hooks/useHorizontalNav.jsx +0 -19
  407. package/src/@menu/hooks/useMediaQuery.jsx +0 -29
  408. package/src/@menu/hooks/useVerticalMenu.jsx +0 -19
  409. package/src/@menu/hooks/useVerticalNav.jsx +0 -19
  410. package/src/@menu/horizontal-menu/index.jsx +0 -8
  411. package/src/@menu/styles/StyledBackdrop.jsx +0 -15
  412. package/src/@menu/styles/StyledMenuIcon.jsx +0 -12
  413. package/src/@menu/styles/StyledMenuLabel.jsx +0 -16
  414. package/src/@menu/styles/StyledMenuPrefix.jsx +0 -10
  415. package/src/@menu/styles/StyledMenuSectionLabel.jsx +0 -21
  416. package/src/@menu/styles/StyledMenuSuffix.jsx +0 -10
  417. package/src/@menu/styles/StyledSubMenuContent.jsx +0 -43
  418. package/src/@menu/styles/horizontal/StyledHorizontalMenu.jsx +0 -13
  419. package/src/@menu/styles/horizontal/StyledHorizontalMenuItem.jsx +0 -26
  420. package/src/@menu/styles/horizontal/StyledHorizontalNav.jsx +0 -11
  421. package/src/@menu/styles/horizontal/StyledHorizontalNavExpandIcon.jsx +0 -33
  422. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContent.jsx +0 -18
  423. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContentWrapper.jsx +0 -10
  424. package/src/@menu/styles/horizontal/horizontalUl.module.css +0 -15
  425. package/src/@menu/styles/styles.module.css +0 -5
  426. package/src/@menu/styles/vertical/StyledVerticalMenu.jsx +0 -16
  427. package/src/@menu/styles/vertical/StyledVerticalMenuItem.jsx +0 -28
  428. package/src/@menu/styles/vertical/StyledVerticalMenuSection.jsx +0 -23
  429. package/src/@menu/styles/vertical/StyledVerticalNav.jsx +0 -67
  430. package/src/@menu/styles/vertical/StyledVerticalNavBgColorContainer.jsx +0 -15
  431. package/src/@menu/styles/vertical/StyledVerticalNavContainer.jsx +0 -23
  432. package/src/@menu/styles/vertical/StyledVerticalNavExpandIcon.jsx +0 -25
  433. package/src/@menu/styles/vertical/verticalNavBgImage.module.css +0 -10
  434. package/src/@menu/svg/ChevronRight.jsx +0 -9
  435. package/src/@menu/svg/Close.jsx +0 -12
  436. package/src/@menu/svg/RadioCircle.jsx +0 -12
  437. package/src/@menu/svg/RadioCircleMarked.jsx +0 -13
  438. package/src/@menu/utils/menuClasses.js +0 -44
  439. package/src/@menu/utils/menuUtils.jsx +0 -145
  440. package/src/@menu/vertical-menu/index.jsx +0 -11
  441. package/src/configs/acl.js +0 -115
  442. package/src/configs/auth.js +0 -5
  443. package/src/configs/aws-exports.js +0 -30
  444. package/src/configs/firebase.js +0 -25
  445. package/src/configs/i18n.js +0 -34
  446. package/src/configs/primaryColorConfig.js +0 -35
  447. package/src/configs/themeConfig.js +0 -44
  448. package/src/layouts/UserLayout.js +0 -94
  449. package/src/layouts/UserThemeOptions.js +0 -191
  450. package/src/layouts/components/Direction.js +0 -30
  451. package/src/layouts/components/HtmlTooltip.js +0 -15
  452. package/src/layouts/components/Translations.js +0 -11
  453. package/src/layouts/components/UserDropdown.js +0 -217
  454. package/src/layouts/components/UserIcon.js +0 -40
  455. package/src/layouts/components/acl/Can.js +0 -6
  456. package/src/layouts/components/acl/CanViewNavGroup.js +0 -36
  457. package/src/layouts/components/acl/CanViewNavLink.js +0 -17
  458. package/src/layouts/components/acl/CanViewNavSectionTitle.js +0 -17
  459. package/src/layouts/components/horizontal/AppBarContent.js +0 -39
  460. package/src/layouts/components/horizontal/ServerSideNavItems.js +0 -44
  461. package/src/layouts/components/mui/StepperComps.js +0 -55
  462. package/src/layouts/components/vertical/AppBarContent.js +0 -35
  463. package/src/layouts/components/vertical/ServerSideNavItems.js +0 -44
  464. package/src/libs/ApexCharts.jsx +0 -5
  465. package/src/libs/ReactPlayer.jsx +0 -5
  466. package/src/libs/Recharts.jsx +0 -4
  467. package/src/libs/auth.js +0 -124
  468. package/src/libs/styles/AppFullCalendar.js +0 -505
  469. package/src/libs/styles/AppKeenSlider.js +0 -116
  470. package/src/libs/styles/AppReactApexCharts.jsx +0 -110
  471. package/src/libs/styles/AppReactDatepicker.jsx +0 -470
  472. package/src/libs/styles/AppReactDropzone.js +0 -76
  473. package/src/libs/styles/AppReactToastify.jsx +0 -108
  474. package/src/libs/styles/AppRecharts.js +0 -55
  475. package/src/libs/styles/inputOtp.module.css +0 -39
  476. package/src/libs/styles/tiptapEditor.css +0 -72
  477. package/src/navigation/horizontal/index.js +0 -246
  478. package/src/navigation/vertical/index.js +0 -253
  479. package/src/pages/401.js +0 -70
  480. package/src/pages/404.js +0 -67
  481. package/src/pages/500.js +0 -68
  482. package/src/pages/[slug].js +0 -115
  483. package/src/pages/_document.js +0 -72
  484. package/src/pages/api/navigation/regenerate-registry.js +0 -116
  485. package/src/pages/api/navigation/save.js +0 -218
  486. package/src/pages/authModule/acl/index.js +0 -48
  487. package/src/pages/authModule/forgot-password/index.js +0 -228
  488. package/src/pages/authModule/permissions/rolePermissions/[id]/rolePermissionsUser/index.js +0 -392
  489. package/src/pages/authModule/permissions/rolePermissions/index.js +0 -343
  490. package/src/pages/authModule/permissions/systemPermissions/index.js +0 -354
  491. package/src/pages/authModule/privacy/index.js +0 -721
  492. package/src/pages/authModule/users/index.js +0 -210
  493. package/src/pages/login/index.js +0 -328
  494. package/src/pages/mainHome/index.js +0 -181
  495. package/src/views/builder/inspector/definitions/cell/main.js +0 -4
  496. package/src/views/builder/inspector/definitions/column/main.js +0 -9
  497. package/src/views/builder/inspector/definitions/column-group/main.js +0 -18
  498. package/src/views/builder/inspector/definitions/header-cell/main.js +0 -5
  499. package/src/views/builder/inspector/definitions/table/main.js +0 -9
  500. package/src/views/builder/viewer/renderers/CellRenderer.jsx +0 -71
  501. package/src/views/builder/viewer/renderers/ColumnGroupRenderer.jsx +0 -96
  502. package/src/views/builder/viewer/renderers/ColumnRenderer.jsx +0 -71
  503. package/src/views/builder/viewer/renderers/HeaderCellRenderer.jsx +0 -78
  504. package/src/views/builder/viewer/renderers/TabRenderer.jsx +0 -82
  505. package/src/views/builder/viewer/renderers/TableRenderer.jsx +0 -92
  506. package/src/views/pages/auth/FooterIllustrationsV2.js +0 -40
  507. package/src/views/pages/misc/FooterIllustrations.js +0 -47
  508. package/src/views/pages/misc/muiTable/CustomPagination.js +0 -34
  509. package/src/views/pages/users/UserManageDialog.js +0 -283
  510. package/src/views/pages/users/UserViewPage.js +0 -199
  511. package/src/views/users/AddUserNameDialog.js +0 -162
  512. package/src/views/users/ContactManage.js +0 -449
  513. package/src/views/users/ResetPasswordDialog.js +0 -242
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Shared parameter-reference popover used by all code/function editors in the app.
3
+ * Import HelpPopover and pass the `type` string matching one of the HELP_CONTENT keys.
4
+ */
5
+ import { useState } from 'react'
6
+ import { Box, IconButton, Popover, Tooltip, Typography } from '@mui/material'
7
+ import { HelpOutlineOutlined } from '@mui/icons-material'
8
+
9
+ // ── Help content per editor type ──────────────────────────────────────────────
10
+
11
+ export const HELP_CONTENT = {
12
+ // ── Builder calculation (JSEditor / ExpressionEditor) ─────────────────────
13
+ calculation: {
14
+ title: 'calculation',
15
+ desc: 'Async function for reactive logic — fetch data, set state, navigate steps, open dialogs.',
16
+ params: [
17
+ { name: 'form', desc: 'Form field values (read)' },
18
+ { name: 'data', desc: 'Reactive page state (read)' },
19
+ { name: 'setData', desc: 'Write to page state (triggers re-render)' },
20
+ { name: 'dataRef', desc: 'Mutable non-reactive store (read/write, no re-render)' },
21
+ { name: 'reportRefs', desc: 'Registry of all grid refs on the page' },
22
+ { name: 'openDialog', desc: 'openDialog(key, data?) — open a dialog by Key' },
23
+ { name: 'closeDialog', desc: 'closeDialog(key) — close a dialog by Key' },
24
+ { name: 'urlParams', desc: '{ query, pathname, asPath } from the current page URL' },
25
+ { name: 'page', desc: 'stepIndex, goToStep(n), nextStep(), prevStep() — step navigation' },
26
+ { name: 'dataItem', desc: '(Repeater only) The current repeated item' },
27
+ { name: 'itemIndex', desc: '(Repeater only) The current iteration index (0-based)' },
28
+ { name: 'newValue', desc: '(Field actions only) The value emitted by the component — e.g. new input text, mapped rows array for onMapped, etc.' },
29
+ { name: 'showToast', desc: "showToast(message, type?) — show a toast notification. type: 'success' | 'error' | 'warning' | 'info' | 'loading'" },
30
+ { name: 'router', desc: "Next.js router — router.push('/path'), router.replace(...), router.back(), router.query" },
31
+ { name: 'globalData', desc: 'Cross-route global state (read) — persists across page navigations' },
32
+ { name: 'setGlobalData', desc: 'Write to global state — setGlobalData(prev => ({ ...prev, key: value }))' },
33
+ ],
34
+ returns: 'Promise<any>',
35
+ },
36
+
37
+ calculationValidate: {
38
+ title: 'calculationValidate',
39
+ desc: 'Validates before advancing to the next step. Same scope as calculation.',
40
+ params: [
41
+ { name: 'form', desc: 'Form field values (read)' },
42
+ { name: 'data', desc: 'Reactive page state (read)' },
43
+ { name: 'setData', desc: 'Write to page state' },
44
+ { name: 'page', desc: 'stepIndex, goToStep(n), nextStep(), prevStep()' },
45
+ ],
46
+ returns: 'true → allow | false → block silently | string → block + show as error',
47
+ },
48
+
49
+ // ── AG Grid column functions ───────────────────────────────────────────────
50
+ valueSetter: {
51
+ title: 'valueSetter',
52
+ desc: 'Called when a cell edit is committed. Must return true to confirm the change.',
53
+ params: [
54
+ { name: 'params.newValue', desc: 'The new value entered by the user' },
55
+ { name: 'params.data', desc: 'AG Grid row object — alias as rowData to avoid shadowing page data' },
56
+ { name: 'params.context', desc: 'Grid context — contains updateRef, nodeName' },
57
+ { name: 'data', desc: 'Reactive page state (read-only snapshot)' },
58
+ { name: 'setData', desc: 'Write to page state (triggers re-render)' },
59
+ { name: 'dataRef', desc: 'Mutable non-reactive store' },
60
+ { name: 'setRefValue', desc: 'Track the edit in updateRef for batch saves' },
61
+ { name: 'getNodeRef', desc: 'Get the updateRef for any grid by nodeId' },
62
+ ],
63
+ returns: 'boolean — true to accept, false to cancel',
64
+ },
65
+
66
+ valueGetter: {
67
+ title: 'valueGetter',
68
+ desc: 'Derives the displayed cell value. Runs on every render cycle.',
69
+ params: [
70
+ { name: 'params.data', desc: 'The AG Grid row object' },
71
+ { name: 'params.context', desc: 'Grid context — contains updateRef, nodeName' },
72
+ { name: 'data', desc: 'Reactive page state (read)' },
73
+ { name: 'dataRef', desc: 'Mutable non-reactive store' },
74
+ { name: 'getRefValue', desc: 'Read a pending edit value from updateRef' },
75
+ ],
76
+ returns: 'any — the value to display in the cell',
77
+ },
78
+
79
+ valueFormatter: {
80
+ title: 'valueFormatter',
81
+ desc: 'Formats the cell value for display only. Does not affect the underlying data.',
82
+ params: [
83
+ { name: 'params.value', desc: 'The raw cell value (from valueGetter or data)' },
84
+ { name: 'params.data', desc: 'The AG Grid row object' },
85
+ { name: 'data', desc: 'Reactive page state (read)' },
86
+ ],
87
+ returns: 'string — the formatted display string',
88
+ },
89
+
90
+ cellStyle: {
91
+ title: 'cellStyle',
92
+ desc: 'Returns a CSS style object applied directly to the cell element.',
93
+ params: [
94
+ { name: 'params.value', desc: 'The cell value' },
95
+ { name: 'params.data', desc: 'The AG Grid row object' },
96
+ { name: 'data', desc: 'Reactive page state (read)' },
97
+ ],
98
+ returns: 'object — CSS properties e.g. { color: "red", fontWeight: "bold" }',
99
+ },
100
+
101
+ tooltipValueGetter: {
102
+ title: 'tooltipValueGetter',
103
+ desc: 'Returns the tooltip string shown on cell hover.',
104
+ params: [
105
+ { name: 'params.value', desc: 'The cell value' },
106
+ { name: 'params.data', desc: 'The AG Grid row object' },
107
+ ],
108
+ returns: 'string — tooltip text',
109
+ },
110
+
111
+ asyncFetchOptions: {
112
+ title: 'asyncFetchOptions',
113
+ desc: 'Fetches options for MultiSelectEditor. Called on open and on each search term change.',
114
+ params: [
115
+ { name: 'search', desc: 'Current search string typed by the user' },
116
+ { name: 'data', desc: 'Reactive page state (read)' },
117
+ { name: 'setData', desc: 'Write to page state' },
118
+ { name: 'dataRef', desc: 'Mutable non-reactive store' },
119
+ { name: 'reportRefs', desc: 'Registry of all grid refs on the page' },
120
+ ],
121
+ returns: 'Promise<array> — list of option objects',
122
+ },
123
+
124
+ // ── Custom filter editor (CustomFilterDialog) ─────────────────────────────
125
+ customFilter: {
126
+ title: 'customFilter',
127
+ desc: 'JavaScript code block that builds a custom filter array appended to the main query.',
128
+ params: [
129
+ { name: 'authContext', desc: 'Auth context — user, permissions, tokens (e.g. authContext.user.id)' },
130
+ { name: 'filters', desc: 'Current filter array from the dialog' },
131
+ { name: 'customFilter', desc: 'Declare this array and push filter objects into it — it is returned automatically' },
132
+ ],
133
+ returns: 'void — populate the customFilter array, e.g. customFilter = [{ path: "UserId", value: authContext.user.id, method: "Equals" }]',
134
+ },
135
+
136
+ // ── Formatting / conditional expression ───────────────────────────────────
137
+ formattingExpression: {
138
+ title: 'formattingExpression',
139
+ desc: 'JavaScript expression evaluated to produce a style value for conditional formatting.',
140
+ params: [
141
+ { name: 'value', desc: 'The cell value being formatted' },
142
+ { name: 'row', desc: 'The full data row object' },
143
+ { name: 'rowIndex', desc: 'Index of the row in the grid' },
144
+ ],
145
+ returns: 'string | number — the resulting CSS value (color, size, etc.)',
146
+ },
147
+
148
+ // ── Generic column params / additional params ─────────────────────────────
149
+ columnParams: {
150
+ title: 'columnParams',
151
+ desc: 'AG Grid column definition properties as key-value pairs (without outer braces). Merged into the colDef object.',
152
+ params: [
153
+ { name: 'valueFormatter', desc: '(p) => string — format display value' },
154
+ { name: 'width', desc: 'number — fixed column width in px' },
155
+ { name: 'minWidth', desc: 'number — minimum column width in px' },
156
+ { name: 'cellClass', desc: 'string | (p) => string — CSS class on the cell' },
157
+ { name: 'comparator', desc: '(a, b, nodeA, nodeB, desc) => number — custom sort' },
158
+ ],
159
+ returns: 'object — merged into the AG Grid colDef',
160
+ },
161
+
162
+ // ── AG Grid / Report Viewer row action ───────────────────────────────────
163
+ actionButton: {
164
+ title: 'actionButton',
165
+ desc: 'Runs when the user clicks this action in the row ⋮ popover. The full AG Grid row object is available as `rowData`.',
166
+ params: [
167
+ { name: 'rowData', desc: 'The AG Grid row object — all server-side field values for this row' },
168
+ { name: 'data', desc: 'Reactive page state (read)' },
169
+ { name: 'setData', desc: 'Write to page state (triggers re-render)' },
170
+ { name: 'dataRef', desc: 'Mutable non-reactive store (read/write, no re-render)' },
171
+ { name: 'reportRefs', desc: 'Registry of all grid refs on the page' },
172
+ { name: 'openDialog', desc: 'openDialog(key, data?) — open a dialog by Key' },
173
+ { name: 'closeDialog', desc: 'closeDialog(key) — close a dialog by Key' },
174
+ { name: 'setRefValue', desc: 'setRefValue(updateRef, rowData, id, field, value) — track pending edits' },
175
+ { name: 'getRefValue', desc: 'getRefValue(updateRef, rowData, id, field) — read a pending edit value' },
176
+ { name: 'clearRefRow', desc: 'clearRefRow(updateRef, rowData, id) — remove pending edits for this row' },
177
+ { name: 'clearAllRef', desc: 'clearAllRef(updateRef) — remove ALL pending edits for the grid' },
178
+ { name: 'getNodeRef', desc: 'getNodeRef(nodeId?) — get the updateRef for any grid (omit for this grid)' },
179
+ { name: 'THIS_NODE', desc: 'Sentinel — pass as `node` argument to target the current grid' },
180
+ { name: 'showToast', desc: "showToast(message, type?) — 'success' | 'error' | 'warning' | 'info'" },
181
+ ],
182
+ returns: 'Promise<any>',
183
+ },
184
+
185
+ // ── Tree View node action ─────────────────────────────────────────────────
186
+ treeViewAction: {
187
+ title: 'treeViewAction',
188
+ desc: 'Runs when the user clicks this action button in the Tree View node popover. The clicked node object is available as `node`.',
189
+ params: [
190
+ { name: 'node', desc: 'The full tree node object that was clicked (all its data fields)' },
191
+ { name: 'data', desc: 'Reactive page state (read)' },
192
+ { name: 'setData', desc: 'Write to page state (triggers re-render)' },
193
+ { name: 'dataRef', desc: 'Mutable non-reactive store (read/write, no re-render)' },
194
+ { name: 'reportRefs', desc: 'Registry of all grid refs on the page' },
195
+ { name: 'openDialog', desc: 'openDialog(key, data?) — open a dialog by Key' },
196
+ { name: 'closeDialog', desc: 'closeDialog(key) — close a dialog by Key' },
197
+ { name: 'showToast', desc: "showToast(message, type?) — 'success' | 'error' | 'warning' | 'info'" },
198
+ ],
199
+ returns: 'Promise<any>',
200
+ },
201
+
202
+ // ── Cell editor params ────────────────────────────────────────────────────
203
+ cellEditorParams: {
204
+ title: 'cellEditorParams',
205
+ desc: 'Object or function returning params passed to the cell editor component.',
206
+ params: [
207
+ { name: 'values', desc: '(agSelectCellEditor) Array of allowed values' },
208
+ { name: 'options', desc: '(SelectEditor / AutocompleteEditor) Array of { value, label } or strings' },
209
+ { name: 'min/max', desc: '(NumberEditor) Numeric bounds' },
210
+ { name: 'color', desc: '(CheckboxEditor) MUI palette key' },
211
+ ],
212
+ returns: 'object — passed directly as props to the editor component',
213
+ },
214
+ }
215
+
216
+ // ── HelpPopover component ─────────────────────────────────────────────────────
217
+
218
+ export function HelpPopover({ type, iconSx }) {
219
+ const [anchor, setAnchor] = useState(null)
220
+ const help = HELP_CONTENT[type]
221
+ if (!help) return null
222
+
223
+ return (
224
+ <>
225
+ <Tooltip title='Parameter reference'>
226
+ <IconButton
227
+ size='small'
228
+ onClick={e => { e.stopPropagation(); setAnchor(e.currentTarget) }}
229
+ sx={{ color: '#5a7a9a', p: 0.4, '&:hover': { color: '#90caf9' }, ...iconSx }}
230
+ >
231
+ <HelpOutlineOutlined sx={{ fontSize: 15 }} />
232
+ </IconButton>
233
+ </Tooltip>
234
+
235
+ <Popover
236
+ open={Boolean(anchor)}
237
+ anchorEl={anchor}
238
+ onClose={() => setAnchor(null)}
239
+ anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}
240
+ transformOrigin={{ vertical: 'top', horizontal: 'left' }}
241
+ sx={{ zIndex: 1600 }}
242
+ PaperProps={{
243
+ sx: {
244
+ bgcolor: '#1a1f2a',
245
+ border: '1px solid #2a3a4a',
246
+ borderRadius: 1.5,
247
+ boxShadow: '0 8px 32px rgba(0,0,0,0.5)',
248
+ p: 2,
249
+ maxWidth: 420,
250
+ minWidth: 280,
251
+ },
252
+ }}
253
+ >
254
+ {/* Title */}
255
+ <Typography sx={{ fontSize: 12, fontWeight: 700, color: '#90caf9', mb: 0.5, fontFamily: 'monospace' }}>
256
+ {help.title}
257
+ </Typography>
258
+ <Typography sx={{ fontSize: 11, color: '#8a9ab0', mb: 1.5, lineHeight: 1.5 }}>
259
+ {help.desc}
260
+ </Typography>
261
+
262
+ {/* Params */}
263
+ {help.params.length > 0 && (
264
+ <>
265
+ <Typography sx={{ fontSize: 10, fontWeight: 700, letterSpacing: '0.1em', textTransform: 'uppercase', color: '#445', mb: 0.75 }}>
266
+ Available
267
+ </Typography>
268
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 0.5, mb: 1.5 }}>
269
+ {help.params.map(p => (
270
+ <Box key={p.name} sx={{ display: 'flex', gap: 1, alignItems: 'flex-start' }}>
271
+ <Typography sx={{ fontSize: 11, color: '#aed581', fontFamily: 'monospace', flexShrink: 0, minWidth: 130 }}>
272
+ {p.name}
273
+ </Typography>
274
+ <Typography sx={{ fontSize: 11, color: '#7a8fa0', lineHeight: 1.4 }}>
275
+ {p.desc}
276
+ </Typography>
277
+ </Box>
278
+ ))}
279
+ </Box>
280
+ </>
281
+ )}
282
+
283
+ {/* Returns */}
284
+ <Box sx={{ borderTop: '1px solid #2a3a4a', pt: 1 }}>
285
+ <Typography sx={{ fontSize: 10, fontWeight: 700, letterSpacing: '0.1em', textTransform: 'uppercase', color: '#445', mb: 0.5 }}>
286
+ Returns / Result
287
+ </Typography>
288
+ <Typography sx={{ fontSize: 11, color: '#ffcc80', fontFamily: 'monospace', whiteSpace: 'pre-wrap' }}>
289
+ {help.returns}
290
+ </Typography>
291
+ </Box>
292
+ </Popover>
293
+ </>
294
+ )
295
+ }
@@ -0,0 +1,64 @@
1
+ import { Box, TextField, Tooltip } from '@mui/material'
2
+ import JSEditor from '../../JSEditor'
3
+ import { resolveIcon } from 'services/builderHelper/iconResolver'
4
+
5
+ /**
6
+ * Inspector field for icon / text adornment values.
7
+ *
8
+ * • User types an MUI icon name (e.g. "SearchOutlined") → shows icon preview
9
+ * • User types plain text (e.g. "$" or "kg") → shows text preview
10
+ * • Expression mode toggle via JSEditor button (same as other field editors)
11
+ *
12
+ * Stored value shape (same as every other field):
13
+ * { valueType: 'value', value: 'SearchOutlined' }
14
+ * { valueType: 'expression', expression: { type: 'js', code: '...' } }
15
+ */
16
+ export default function IconEditor({ field, onChange }) {
17
+ const safeField = field ?? { valueType: 'value', value: '' }
18
+ const isExpr = safeField.valueType === 'expression'
19
+ const rawValue = isExpr ? '' : (safeField.value ?? '')
20
+
21
+ // Resolve preview
22
+ const Icon = !isExpr && rawValue ? resolveIcon(rawValue) : null
23
+ const hasText = !isExpr && rawValue && !Icon
24
+ const previewTip = Icon ? rawValue : (hasText ? `Text: "${rawValue}"` : '')
25
+
26
+ return (
27
+ <Box display='flex' alignItems='center' gap={0.5}>
28
+ <TextField
29
+ size='small'
30
+ fullWidth
31
+ disabled={isExpr}
32
+ value={rawValue}
33
+ placeholder={isExpr ? 'Using expression' : 'Icon name or text…'}
34
+ onChange={e => onChange?.({ valueType: 'value', value: e.target.value })}
35
+ InputProps={{
36
+ endAdornment: (
37
+ <Tooltip title={previewTip} placement='top' disableHoverListener={!previewTip}>
38
+ <Box
39
+ sx={{
40
+ display: 'flex',
41
+ alignItems: 'center',
42
+ pr: 0.5,
43
+ color: 'text.secondary',
44
+ fontSize: 13,
45
+ minWidth: 20,
46
+ }}
47
+ >
48
+ {Icon && <Icon sx={{ fontSize: 18 }} />}
49
+ {hasText && rawValue}
50
+ </Box>
51
+ </Tooltip>
52
+ ),
53
+ }}
54
+ />
55
+
56
+ <JSEditor
57
+ value={isExpr ? undefined : rawValue}
58
+ expression={safeField.expression}
59
+ mode={isExpr ? 'expression' : 'value'}
60
+ onChange={payload => onChange?.(payload)}
61
+ />
62
+ </Box>
63
+ )
64
+ }
@@ -0,0 +1,223 @@
1
+ import { useState } from 'react'
2
+ import { Box, Button, Chip, IconButton, Tooltip, Typography } from '@mui/material'
3
+ import { Close, DeleteOutlined, Fullscreen, FullscreenExit } from '@mui/icons-material'
4
+ import { CodeBraces } from 'mdi-material-ui'
5
+ import Editor from '@monaco-editor/react'
6
+ import { HelpPopover } from './FunctionHelpPopover'
7
+
8
+ // ── Monaco options — identical to ColumnFunctionEditor ────────────────────────
9
+
10
+ const EDITOR_OPTIONS = {
11
+ minimap: { enabled: false },
12
+ fontFamily: "Menlo, Monaco, 'Courier New', monospace",
13
+ fontSize: 13,
14
+ lineNumbers: 'on',
15
+ wordWrap: 'on',
16
+ scrollBeyondLastLine: false,
17
+ automaticLayout: true,
18
+ }
19
+
20
+ function buildTemplate(contextVars = []) {
21
+ const varLines = contextVars.length
22
+ ? contextVars.map(v => ` // ${v}`).join('\n')
23
+ : ' // (no extra variables for this event)'
24
+
25
+ return `async function Calculation(form, data, setData, dataRef, reportRefs, openDialog, closeDialog, urlParams, page) {
26
+ // Available click variables:
27
+ ${varLines}
28
+
29
+ // Examples:
30
+ // setData(prev => ({ ...prev, selected: clickedItem }))
31
+ // openDialog('myDialog', { data: { row: clickedItem } })
32
+ // showToast('Selected: ' + clickedLabel, 'info')
33
+ }
34
+ `
35
+ }
36
+
37
+ // ── Component ─────────────────────────────────────────────────────────────────
38
+
39
+ /**
40
+ * Inspector field for a single KPI event action.
41
+ * Renders identically to ColumnFunctionEditor (slide-up panel, HelpPopover, fullscreen).
42
+ *
43
+ * Props:
44
+ * label — field label shown in FieldWrapper
45
+ * contextVars — string[] of variables injected at click time (shown as chips in panel header)
46
+ * value — { actionType: 'custom', code: '...' } | undefined | null
47
+ * onChange — (newVal) => void (newVal is the action object or null to clear)
48
+ */
49
+ export default function KpiActionField({ label, contextVars = [], value, onChange }) {
50
+ const [open, setOpen] = useState(false)
51
+ const [fullscreen, setFullscreen] = useState(false)
52
+ const [draft, setDraft] = useState('')
53
+
54
+ const hasAction = !!value?.code?.trim()
55
+
56
+ const handleOpen = () => {
57
+ setDraft(value?.code?.trim() || buildTemplate(contextVars))
58
+ setOpen(true)
59
+ }
60
+
61
+ const handleClose = () => {
62
+ setOpen(false)
63
+ setFullscreen(false)
64
+ }
65
+
66
+ const handleSave = () => {
67
+ const trimmed = draft.trim()
68
+ onChange(trimmed ? { actionType: 'custom', code: trimmed } : null)
69
+ handleClose()
70
+ }
71
+
72
+ const handleClear = (e) => {
73
+ e.stopPropagation()
74
+ onChange(null)
75
+ }
76
+
77
+ // First meaningful line for the inline preview
78
+ const preview = hasAction
79
+ ? value.code.split('\n').find(l => {
80
+ const t = l.trim()
81
+ return t && !t.startsWith('//') && !t.startsWith('async function') && !t.startsWith('}')
82
+ }) ?? '(code set)'
83
+ : null
84
+
85
+ return (
86
+ <>
87
+ {/* ── Inline inspector row ── */}
88
+ <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, width: '100%' }}>
89
+ {/* Code preview / placeholder — clicking opens the editor */}
90
+ <Box
91
+ onClick={handleOpen}
92
+ sx={{
93
+ flex: 1, minWidth: 0, cursor: 'pointer',
94
+ px: 1, py: 0.4, borderRadius: 1,
95
+ bgcolor: 'action.hover',
96
+ '&:hover': { bgcolor: 'action.selected' },
97
+ }}
98
+ >
99
+ <Typography noWrap sx={{
100
+ fontSize: 11, fontFamily: 'monospace',
101
+ color: hasAction ? '#aed581' : 'text.disabled',
102
+ }}>
103
+ {preview ?? `(no action)`}
104
+ </Typography>
105
+ </Box>
106
+
107
+ {/* Open editor */}
108
+ <Tooltip title={`Open ${label ?? 'action'} editor`}>
109
+ <IconButton size='small' onClick={handleOpen} sx={{ color: hasAction ? '#aed581' : '#555', p: 0.4 }}>
110
+ <CodeBraces fontSize='small' />
111
+ </IconButton>
112
+ </Tooltip>
113
+
114
+ {/* Clear */}
115
+ {hasAction && (
116
+ <Tooltip title='Clear action'>
117
+ <IconButton size='small' onClick={handleClear} sx={{ color: 'text.disabled', p: 0.4 }}>
118
+ <DeleteOutlined sx={{ fontSize: 15 }} />
119
+ </IconButton>
120
+ </Tooltip>
121
+ )}
122
+ </Box>
123
+
124
+ {/* ── Slide-up editor panel — same style as ColumnFunctionEditor ── */}
125
+ {open && (
126
+ <Box sx={{
127
+ position: 'fixed',
128
+ bottom: 0,
129
+ left: 0,
130
+ right: 0,
131
+ top: fullscreen ? 0 : 'auto',
132
+ height: fullscreen ? '100vh' : '55vh',
133
+ bgcolor: '#1e1e1e',
134
+ zIndex: 1500,
135
+ borderTop: fullscreen ? 'none' : '2px solid #2a3a4a',
136
+ display: 'flex',
137
+ flexDirection: 'column',
138
+ transition: 'height 0.15s ease, top 0.15s ease',
139
+ }}>
140
+ {/* Header */}
141
+ <Box sx={{
142
+ display: 'flex',
143
+ alignItems: 'center',
144
+ justifyContent: 'space-between',
145
+ px: 2, py: 0.8,
146
+ bgcolor: '#252526',
147
+ borderBottom: '1px solid #333',
148
+ flexShrink: 0,
149
+ gap: 1,
150
+ }}>
151
+ {/* Left: icon + label + context chips */}
152
+ <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, flexWrap: 'wrap', flex: 1, minWidth: 0 }}>
153
+ <CodeBraces sx={{ fontSize: 14, color: '#7b8ea0', flexShrink: 0 }} />
154
+ <Typography sx={{ fontSize: 12, color: '#90caf9', fontWeight: 600, letterSpacing: '0.05em', flexShrink: 0 }}>
155
+ {label}
156
+ </Typography>
157
+ {contextVars.length > 0 && (
158
+ <>
159
+ <Typography sx={{ fontSize: 11, color: '#555', flexShrink: 0 }}>·</Typography>
160
+ {contextVars.map(v => (
161
+ <Chip
162
+ key={v}
163
+ label={v}
164
+ size='small'
165
+ sx={{
166
+ fontSize: 10, fontFamily: 'monospace', height: 18,
167
+ bgcolor: '#1e2a1e', color: '#aed581',
168
+ border: '1px solid #2e4a2e',
169
+ '& .MuiChip-label': { px: 0.75 },
170
+ }}
171
+ />
172
+ ))}
173
+ </>
174
+ )}
175
+ </Box>
176
+
177
+ {/* Right: help + fullscreen + close */}
178
+ <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, flexShrink: 0 }}>
179
+ <HelpPopover type='calculation' />
180
+ <Tooltip title={fullscreen ? 'Exit fullscreen' : 'Fullscreen'}>
181
+ <IconButton size='small' onClick={() => setFullscreen(f => !f)} sx={{ color: '#666' }}>
182
+ {fullscreen
183
+ ? <FullscreenExit sx={{ fontSize: 16 }} />
184
+ : <Fullscreen sx={{ fontSize: 16 }} />}
185
+ </IconButton>
186
+ </Tooltip>
187
+ <IconButton size='small' onClick={handleClose} sx={{ color: '#666' }}>
188
+ <Close sx={{ fontSize: 16 }} />
189
+ </IconButton>
190
+ </Box>
191
+ </Box>
192
+
193
+ {/* Monaco editor */}
194
+ <Box sx={{ flex: 1, minHeight: 0 }}>
195
+ <Editor
196
+ height='100%'
197
+ defaultLanguage='javascript'
198
+ theme='vs-dark'
199
+ value={draft}
200
+ options={EDITOR_OPTIONS}
201
+ onChange={v => setDraft(v ?? '')}
202
+ onMount={editor => editor.focus()}
203
+ />
204
+ </Box>
205
+
206
+ {/* Footer */}
207
+ <Box sx={{
208
+ display: 'flex',
209
+ gap: 1,
210
+ justifyContent: 'flex-end',
211
+ px: 2, py: 1,
212
+ bgcolor: '#252526',
213
+ borderTop: '1px solid #333',
214
+ flexShrink: 0,
215
+ }}>
216
+ <Button size='small' onClick={handleClose} sx={{ color: '#888' }}>Cancel</Button>
217
+ <Button size='small' variant='contained' color='primary' onClick={handleSave}>Apply</Button>
218
+ </Box>
219
+ </Box>
220
+ )}
221
+ </>
222
+ )
223
+ }