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
@@ -1,4 +1,4 @@
1
- import { Box } from '@mui/material'
1
+ import { Box, Typography } from '@mui/material'
2
2
  import { useBuilder } from 'src/context/BuilderContext'
3
3
  import FieldWrapper from '../fields/FieldWrapper'
4
4
  import ExpressionEditor from '../fields/ExpressionEditor'
@@ -8,47 +8,98 @@ import TextEditor from '../fields/TextEditor'
8
8
  import OptionsEditor from '../fields/OptionsEditor'
9
9
  import TabsEditor from '../fields/TabsEditor'
10
10
  import ItemsEditor from '../fields/ItemsEditor'
11
+ import ExtraColsEditor from '../fields/ExtraColsEditor'
12
+ import ColumnsConfigEditor from '../fields/ColumnsConfigEditor'
13
+ import ActionsConfigEditor from '../fields/ActionsConfigEditor'
14
+ import ThresholdsEditor from '../fields/ThresholdsEditor'
15
+ import SeriesEditorField from '../fields/SeriesEditorField'
16
+ import DonutRingsEditorField from '../fields/DonutRingsEditorField'
17
+ import ColorSchemaField from '../fields/ColorSchemaField'
18
+ import ColumnFunctionEditor from '../fields/ColumnFunctionEditor'
19
+ import IconEditor from '../fields/IconEditor'
20
+ import ColumnMappingEditor from '../fields/ColumnMappingEditor'
21
+ import TableColumnsEditor from '../fields/TableColumnsEditor'
22
+ import MarkersEditorField from '../fields/MarkersEditorField'
23
+ import KpiActionField from '../fields/KpiActionField'
11
24
  import { getMainFields } from '../definitions'
12
- import { findNode, updateNodeInTree } from 'services/builderHelper'
25
+ import { findNodeAnywhere, updateNodeAnywhere } from 'services/builderHelper'
13
26
 
14
- /**
15
- * Ensure every field is an object:
16
- * { type: 'value' | 'expression', value?, expression? }
17
- */
18
27
  function normalizeField(field) {
19
28
  if (field && typeof field === 'object' && field.valueType) return field
20
-
21
- return {
22
- valueType: 'value',
23
- value: field
24
- }
29
+ return { valueType: 'value', value: field }
25
30
  }
26
31
 
27
32
  export default function MainTab() {
28
33
  const { schema, selectedId, setSchema } = useBuilder()
29
- const node = findNode(schema.root, selectedId)
34
+
35
+ const { node, location, dialogId } = findNodeAnywhere(schema, selectedId)
30
36
  if (!node) return null
31
37
 
32
38
  const fields = getMainFields(node.type)
33
39
 
34
- // 🔑 Normalize ALL main props
35
- const main = Object.fromEntries(Object.entries(node.props?.main ?? {}).map(([k, v]) => [k, normalizeField(v)]))
40
+ const main = Object.fromEntries(
41
+ Object.entries(node.props?.main ?? {}).map(([k, v]) => [k, normalizeField(v)])
42
+ )
43
+
44
+ const actions = node.props?.actions ?? {}
45
+
36
46
  const updateField = (name, fieldState) => {
37
- setSchema(prev => ({
38
- ...prev,
39
- root: updateNodeInTree(prev.root, node.id, {
40
- props: {
41
- main: {
42
- ...main,
43
- [name]: fieldState
44
- }
45
- }
46
- })
47
- }))
47
+ setSchema(prev =>
48
+ updateNodeAnywhere(prev, node.id, { props: { main: { ...main, [name]: fieldState } } }, location, dialogId)
49
+ )
50
+ }
51
+
52
+ // KPI action fields write to node.props.actions, not node.props.main
53
+ const updateAction = (name, actionValue) => {
54
+ const nextActions = { ...actions }
55
+ if (actionValue == null) {
56
+ delete nextActions[name]
57
+ } else {
58
+ nextActions[name] = actionValue
59
+ }
60
+ setSchema(prev =>
61
+ updateNodeAnywhere(prev, node.id, { props: { actions: nextActions } }, location, dialogId)
62
+ )
48
63
  }
49
64
  return (
50
65
  <Box p={2}>
51
66
  {fields.map(field => {
67
+ // ── Note / info block — no input, no FieldWrapper ─────────────────
68
+ if (field.type === 'note') {
69
+ return (
70
+ <Box key={field.name} sx={{
71
+ mb: 1.5, px: 1.25, py: 0.75,
72
+ bgcolor: 'action.hover',
73
+ borderLeft: '3px solid',
74
+ borderColor: 'info.main',
75
+ borderRadius: '0 4px 4px 0',
76
+ }}>
77
+ {field.label && (
78
+ <Typography variant='caption' sx={{ display: 'block', fontWeight: 600, mb: 0.25, color: 'info.main' }}>
79
+ {field.label}
80
+ </Typography>
81
+ )}
82
+ <Typography variant='caption' sx={{ display: 'block', color: 'text.secondary', whiteSpace: 'pre-line' }}>
83
+ {field.text}
84
+ </Typography>
85
+ </Box>
86
+ )
87
+ }
88
+
89
+ // KPI action fields read from node.props.actions, not main
90
+ if (field.type === 'kpi-action') {
91
+ return (
92
+ <FieldWrapper key={field.name} label={field.label}>
93
+ <KpiActionField
94
+ label={field.label}
95
+ contextVars={field.context ?? []}
96
+ value={actions[field.name]}
97
+ onChange={payload => updateAction(field.name, payload)}
98
+ />
99
+ </FieldWrapper>
100
+ )
101
+ }
102
+
52
103
  const fieldValue = main[field.name] ?? { valueType: 'value', value: undefined }
53
104
  return (
54
105
  <FieldWrapper key={field.name} label={field.label}>
@@ -87,6 +138,73 @@ export default function MainTab() {
87
138
  {field.type === 'items-editor' && (
88
139
  <ItemsEditor field={fieldValue} onChange={payload => updateField(field.name, payload)} />
89
140
  )}
141
+
142
+ {field.type === 'extra-cols-editor' && (
143
+ <ExtraColsEditor field={fieldValue} onChange={payload => updateField(field.name, payload)} />
144
+ )}
145
+
146
+ {field.type === 'columns-config-editor' && (
147
+ <ColumnsConfigEditor field={fieldValue} onChange={payload => updateField(field.name, payload)} />
148
+ )}
149
+
150
+ {field.type === 'thresholds-editor' && (
151
+ <ThresholdsEditor field={fieldValue} onChange={payload => updateField(field.name, payload)} />
152
+ )}
153
+
154
+ {field.type === 'series-editor' && (
155
+ <SeriesEditorField field={fieldValue} onChange={payload => updateField(field.name, payload)} />
156
+ )}
157
+
158
+ {field.type === 'rings-editor' && (
159
+ <DonutRingsEditorField field={fieldValue} onChange={payload => updateField(field.name, payload)} />
160
+ )}
161
+
162
+ {field.type === 'markers-editor' && (
163
+ <MarkersEditorField field={fieldValue} onChange={payload => updateField(field.name, payload)} />
164
+ )}
165
+
166
+ {field.type === 'color-schema' && (
167
+ <ColorSchemaField field={fieldValue} onChange={payload => updateField(field.name, payload)} />
168
+ )}
169
+
170
+ {field.type === 'actions-config-editor' && (
171
+ <ActionsConfigEditor field={fieldValue} context={field.context} onChange={payload => updateField(field.name, payload)} />
172
+ )}
173
+
174
+ {field.type === 'icon' && (
175
+ <IconEditor field={fieldValue} onChange={payload => updateField(field.name, payload)} />
176
+ )}
177
+
178
+ {field.type === 'column-mapping-editor' && (
179
+ <ColumnMappingEditor field={fieldValue} onChange={payload => updateField(field.name, payload)} />
180
+ )}
181
+
182
+ {field.type === 'table-columns-editor' && (
183
+ <TableColumnsEditor field={fieldValue} onChange={payload => updateField(field.name, payload)} />
184
+ )}
185
+
186
+ {field.type === 'code' && (
187
+ <Box display='flex' alignItems='center' gap={1}>
188
+ <Typography
189
+ noWrap
190
+ sx={{
191
+ flex: 1, fontSize: 11, fontFamily: 'monospace',
192
+ color: fieldValue.value?.trim() ? '#aed581' : '#555',
193
+ overflow: 'hidden', textOverflow: 'ellipsis',
194
+ }}
195
+ >
196
+ {fieldValue.value?.trim()
197
+ ? fieldValue.value.trim().split('\n').find(l => l.trim() && !l.trim().startsWith('//') && !l.trim().startsWith('/*')) ?? '(code set)'
198
+ : '(no code)'}
199
+ </Typography>
200
+ <ColumnFunctionEditor
201
+ label={field.label}
202
+ type={field.codeType || 'calculation'}
203
+ value={fieldValue.value || ''}
204
+ onChange={v => updateField(field.name, { valueType: 'value', value: v })}
205
+ />
206
+ </Box>
207
+ )}
90
208
  </FieldWrapper>
91
209
  )
92
210
  })}
@@ -6,43 +6,28 @@ import BooleanEditor from '../fields/BooleanEditor'
6
6
  import SelectEditor from '../fields/SelectEditor'
7
7
  import TextEditor from '../fields/TextEditor'
8
8
  import { getRulesFields } from '../definitions'
9
- import { findNode, updateNodeInTree } from 'services/builderHelper'
9
+ import { findNodeAnywhere, updateNodeAnywhere } from 'services/builderHelper'
10
10
 
11
- /**
12
- * Ensure every field is an object:
13
- * { valueType: 'value' | 'expression', value?, expression? }
14
- */
15
11
  function normalizeField(field) {
16
12
  if (field && typeof field === 'object' && field.valueType) return field
17
-
18
- return {
19
- valueType: 'value',
20
- value: field
21
- }
13
+ return { valueType: 'value', value: field }
22
14
  }
23
15
 
24
16
  export default function RulesTab() {
25
17
  const { schema, selectedId, setSchema } = useBuilder()
26
- const node = findNode(schema.root, selectedId)
18
+ const { node, location, dialogId } = findNodeAnywhere(schema, selectedId)
27
19
  if (!node) return null
28
20
 
29
21
  const fields = getRulesFields(node.type)
30
22
 
31
- // 🔑 Normalize ALL rules props
32
- const rules = Object.fromEntries(Object.entries(node.props?.rules ?? {}).map(([k, v]) => [k, normalizeField(v)]))
23
+ const rules = Object.fromEntries(
24
+ Object.entries(node.props?.rules ?? {}).map(([k, v]) => [k, normalizeField(v)])
25
+ )
33
26
 
34
27
  const updateField = (name, fieldState) => {
35
- setSchema(prev => ({
36
- ...prev,
37
- root: updateNodeInTree(prev.root, node.id, {
38
- props: {
39
- rules: {
40
- ...rules,
41
- [name]: fieldState
42
- }
43
- }
44
- })
45
- }))
28
+ setSchema(prev =>
29
+ updateNodeAnywhere(prev, node.id, { props: { rules: { ...rules, [name]: fieldState } } }, location, dialogId)
30
+ )
46
31
  }
47
32
 
48
33
  return (
@@ -6,43 +6,28 @@ import BooleanEditor from '../fields/BooleanEditor'
6
6
  import SelectEditor from '../fields/SelectEditor'
7
7
  import TextEditor from '../fields/TextEditor'
8
8
  import { getStyleFields } from '../definitions'
9
- import { findNode, updateNodeInTree } from 'services/builderHelper'
9
+ import { findNodeAnywhere, updateNodeAnywhere } from 'services/builderHelper'
10
10
 
11
- /**
12
- * Ensure every field is an object:
13
- * { valueType: 'value' | 'expression', value?, expression? }
14
- */
15
11
  function normalizeField(field) {
16
12
  if (field && typeof field === 'object' && field.valueType) return field
17
-
18
- return {
19
- valueType: 'value',
20
- value: field
21
- }
13
+ return { valueType: 'value', value: field }
22
14
  }
23
15
 
24
16
  export default function StyleTab() {
25
17
  const { schema, selectedId, setSchema } = useBuilder()
26
- const node = findNode(schema.root, selectedId)
18
+ const { node, location, dialogId } = findNodeAnywhere(schema, selectedId)
27
19
  if (!node) return null
28
20
 
29
21
  const fields = getStyleFields(node.type)
30
22
 
31
- // 🔑 Normalize ALL style props
32
- const style = Object.fromEntries(Object.entries(node.props?.style ?? {}).map(([k, v]) => [k, normalizeField(v)]))
23
+ const style = Object.fromEntries(
24
+ Object.entries(node.props?.style ?? {}).map(([k, v]) => [k, normalizeField(v)])
25
+ )
33
26
 
34
27
  const updateField = (name, fieldState) => {
35
- setSchema(prev => ({
36
- ...prev,
37
- root: updateNodeInTree(prev.root, node.id, {
38
- props: {
39
- style: {
40
- ...style,
41
- [name]: fieldState
42
- }
43
- }
44
- })
45
- }))
28
+ setSchema(prev =>
29
+ updateNodeAnywhere(prev, node.id, { props: { style: { ...style, [name]: fieldState } } }, location, dialogId)
30
+ )
46
31
  }
47
32
 
48
33
  return (
@@ -1,13 +1,11 @@
1
+ import { LABEL_POSITION_FIELDS } from '../common/main'
2
+
1
3
  export const AUTOCOMPLETE_MAIN_FIELDS = [
2
4
  { name: 'key', label: 'Key', type: 'expression' },
3
5
  { name: 'label', label: 'Label', type: 'expression' },
6
+ ...LABEL_POSITION_FIELDS,
4
7
  { name: 'placeholder', label: 'Placeholder', type: 'text' },
5
- {
6
- name: 'size',
7
- label: 'Size',
8
- type: 'select',
9
- options: ['small', 'medium', 'large']
10
- },
8
+ { name: 'size', label: 'Size', type: 'select', options: ['small', 'medium', 'large'] },
11
9
  { name: 'disabled', label: 'Disabled', type: 'boolean' },
12
10
  { name: 'enabled', label: 'Enabled', type: 'boolean' },
13
11
  { name: 'fullWidth', label: 'Full Width', type: 'boolean' },
@@ -0,0 +1,7 @@
1
+ export const BANNER_ACTIONS_FIELDS = [
2
+ {
3
+ name: 'onClose',
4
+ label: 'On Close',
5
+ desc: 'Fires when the user dismisses the banner (requires Dismissible = true).',
6
+ },
7
+ ]
@@ -0,0 +1,22 @@
1
+ export const BANNER_MAIN_FIELDS = [
2
+ { name: 'key', label: 'Key', type: 'expression' },
3
+ { name: 'message', label: 'Message', type: 'expression' },
4
+ { name: 'title', label: 'Title', type: 'expression' },
5
+ {
6
+ name: 'severity',
7
+ label: 'Severity',
8
+ type: 'select',
9
+ options: ['info', 'success', 'warning', 'error'],
10
+ },
11
+ {
12
+ name: 'variant',
13
+ label: 'Variant',
14
+ type: 'select',
15
+ options: ['standard', 'filled', 'outlined'],
16
+ },
17
+ // Controlled visibility — bind to a data key to show/hide programmatically.
18
+ // Leave blank to let the component manage its own visible state.
19
+ { name: 'open', label: 'Controlled Open', type: 'expression' },
20
+ { name: 'dismissible', label: 'Dismissible', type: 'boolean' },
21
+ { name: 'icon', label: 'Show Icon', type: 'boolean' },
22
+ ]
@@ -0,0 +1 @@
1
+ export const BANNER_RULES_FIELDS = []
@@ -0,0 +1 @@
1
+ export const BANNER_STYLE_FIELDS = []
@@ -1,9 +1,46 @@
1
1
  export const BREADCRUMB_MAIN_FIELDS = [
2
- { name: 'key', label: 'Key', type: 'expression' },
3
- { name: 'separator', label: 'Separator', type: 'expression' },
2
+ { name: 'key', label: 'Key', type: 'expression' },
3
+ { name: 'items', label: 'Items', type: 'expression' },
4
+ // [{label, href?, disabled?}] — last item = current page
5
+
4
6
  {
5
- name: 'items',
6
- label: 'Items',
7
- type: 'options', // Reusing options editor if it supports label/href or just label
8
- }
7
+ name: 'variant', label: 'Variant', type: 'select',
8
+ options: ['breadcrumb', 'chevron'],
9
+ },
10
+ {
11
+ name: 'mode', label: 'Interaction Mode', type: 'select',
12
+ options: ['link', 'click', 'none'],
13
+ // link → uses href for navigation
14
+ // click → calls onClick code with {item, index}
15
+ // none → display only
16
+ },
17
+
18
+ // ── Breadcrumb-variant options ──────────────────────────────────────────
19
+ { name: 'separator', label: 'Separator', type: 'expression' },
20
+ { name: 'maxItems', label: 'Max Items', type: 'number' },
21
+ {
22
+ name: 'linkUnderline', label: 'Link Underline', type: 'select',
23
+ options: ['hover', 'always', 'none'],
24
+ },
25
+ {
26
+ name: 'currentColor', label: 'Current Item Color', type: 'select',
27
+ options: ['text.primary', 'primary.main', 'text.secondary', 'inherit'],
28
+ },
29
+
30
+ // ── Chevron-variant options ─────────────────────────────────────────────
31
+ { name: 'activeIndex', label: 'Active Index', type: 'expression' },
32
+ {
33
+ name: 'itemSize', label: 'Item Size', type: 'select',
34
+ options: ['small', 'medium', 'large'],
35
+ },
36
+ { name: 'fullWidth', label: 'Full Width', type: 'boolean' },
37
+ { name: 'completedColor', label: 'Completed BG Color', type: 'text' },
38
+ { name: 'activeColor', label: 'Active BG Color', type: 'text' },
39
+ { name: 'pendingColor', label: 'Pending BG Color', type: 'text' },
40
+ { name: 'completedTextColor', label: 'Completed Text Color', type: 'text' },
41
+ { name: 'activeTextColor', label: 'Active Text Color', type: 'text' },
42
+ { name: 'pendingTextColor', label: 'Pending Text Color', type: 'text' },
43
+
44
+ // ── onClick code ────────────────────────────────────────────────────────
45
+ { name: 'onClick', label: 'On Item Click', type: 'code', codeType: 'calculation' },
9
46
  ]
@@ -1,14 +1,13 @@
1
1
  export const BUTTON_MAIN_FIELDS = [
2
- { name: 'key', label: 'Key', type: 'expression' },
3
- { name: 'label', label: 'Label', type: 'expression' },
4
- { name: 'variant', label: 'Variant', type: 'select', options: ['text', 'outlined', 'contained'] },
5
- {
6
- name: 'size',
7
- label: 'Size',
8
- type: 'select',
9
- options: ['small', 'medium', 'large']
10
- },
11
- { name: 'disabled', label: 'Disabled', type: 'boolean' },
12
- { name: 'enabled', label: 'Enabled', type: 'boolean' },
13
- { name: 'fullWidth', label: 'FullWidth', type: 'boolean' }
2
+ { name: 'key', label: 'Key', type: 'expression' },
3
+ { name: 'label', label: 'Label', type: 'expression' },
4
+ { name: 'variant', label: 'Variant', type: 'select', options: ['text', 'outlined', 'contained'] },
5
+ { name: 'color', label: 'Color', type: 'select', options: ['default', 'primary', 'secondary', 'error', 'warning', 'info', 'success', 'inherit'] },
6
+ { name: 'size', label: 'Size', type: 'select', options: ['small', 'medium', 'large'] },
7
+ { name: 'prefix', label: 'Prefix', type: 'icon' },
8
+ { name: 'suffix', label: 'Suffix', type: 'icon' },
9
+ { name: 'tooltip', label: 'Tooltip', type: 'expression' },
10
+ { name: 'iconButton', label: 'Icon Button', type: 'boolean' },
11
+ { name: 'disabled', label: 'Disabled', type: 'boolean' },
12
+ { name: 'fullWidth', label: 'Full Width', type: 'boolean' },
14
13
  ]
@@ -1,32 +1,20 @@
1
1
  export const BUTTON_STYLE_FIELDS = [
2
- {
3
- name: 'color',
4
- label: 'Color',
5
- type: 'select',
6
- options: ['default', 'primary', 'secondary', 'error', 'warning', 'info', 'success']
7
- },
8
- { name: 'display', label: 'Display', type: 'expression' },
9
- { name: 'width', label: 'Width', type: 'expression' },
10
- { name: 'height', label: 'Height', type: 'expression' },
11
- { name: 'margin', label: 'Margin', type: 'expression' },
12
- { name: 'padding', label: 'Padding', type: 'expression' },
13
- {
14
- name: 'flexDirection',
15
- label: 'Flex Direction',
16
- type: 'select',
17
- options: ['row', 'column', 'row-reverse', 'column-reverse']
18
- },
19
- {
20
- name: 'justifyContent',
21
- label: 'Justify Content',
22
- type: 'select',
23
- options: ['flex-start', 'center', 'flex-end', 'space-between', 'space-around', 'space-evenly']
24
- },
25
- {
26
- name: 'alignItems',
27
- label: 'Align Items',
28
- type: 'select',
29
- options: ['flex-start', 'center', 'flex-end', 'stretch', 'baseline']
30
- },
31
- { name: 'gap', label: 'Gap', type: 'expression' }
2
+ // ── Visual — applied directly to the Button element via sx ────────────────
3
+ { name: 'background', label: 'Background', type: 'expression' },
4
+ { name: 'backgroundColor', label: 'Background Color', type: 'expression' },
5
+ { name: 'color', label: 'Text Color', type: 'expression' },
6
+ { name: 'borderRadius', label: 'Border Radius', type: 'expression' },
7
+ { name: 'boxShadow', label: 'Box Shadow', type: 'expression' },
8
+ { name: 'border', label: 'Border', type: 'expression' },
9
+ { name: 'borderColor', label: 'Border Color', type: 'expression' },
10
+ { name: 'textTransform', label: 'Text Transform', type: 'select', options: ['none', 'uppercase', 'lowercase', 'capitalize'] },
11
+ { name: 'fontWeight', label: 'Font Weight', type: 'expression' },
12
+ { name: 'fontSize', label: 'Font Size', type: 'expression' },
13
+ { name: 'letterSpacing', label: 'Letter Spacing', type: 'expression' },
14
+ // ── Layout / sizing ───────────────────────────────────────────────────────
15
+ { name: 'width', label: 'Width', type: 'expression' },
16
+ { name: 'height', label: 'Height', type: 'expression' },
17
+ { name: 'padding', label: 'Padding', type: 'expression' },
18
+ { name: 'margin', label: 'Margin', type: 'expression' },
19
+ { name: 'display', label: 'Display', type: 'expression' },
32
20
  ]
@@ -1 +1,3 @@
1
- export const CHECKBOX_ACTIONS_FIELDS = []
1
+ export const CHECKBOX_ACTIONS_FIELDS = [
2
+ { name: 'onChange', label: 'On Change', type: 'action', actionTypes: [{ value: 'custom', label: 'Custom Action' }] },
3
+ ]
@@ -1,13 +1,11 @@
1
+ import { LABEL_POSITION_FIELDS } from '../common/main'
2
+
1
3
  export const CHECKBOX_MAIN_FIELDS = [
2
4
  { name: 'key', label: 'Key', type: 'expression' },
3
5
  { name: 'label', label: 'Label', type: 'expression' },
6
+ ...LABEL_POSITION_FIELDS,
4
7
  { name: 'value', label: 'Value', type: 'expression' },
5
- {
6
- name: 'size',
7
- label: 'Size',
8
- type: 'select',
9
- options: ['small', 'medium', 'large']
10
- },
8
+ { name: 'size', label: 'Size', type: 'select', options: ['small', 'medium', 'large'] },
11
9
  { name: 'disabled', label: 'Disabled', type: 'boolean' },
12
10
  { name: 'enabled', label: 'Enabled', type: 'boolean' },
13
11
  ]
@@ -1,14 +1,25 @@
1
+ export const LABEL_POSITION_FIELDS = [
2
+ {
3
+ name: 'labelPosition',
4
+ label: 'Label Position',
5
+ type: 'select',
6
+ options: ['top', 'left', 'right', 'none'],
7
+ },
8
+ { name: 'required', label: 'Required', type: 'boolean' },
9
+ ]
10
+
1
11
  export const COMMON_MAIN_FIELDS = [
2
12
  { name: 'key', label: 'Key', type: 'expression' },
3
13
  { name: 'label', label: 'Label', type: 'expression' },
14
+ ...LABEL_POSITION_FIELDS,
4
15
  { name: 'value', label: 'Value', type: 'expression' },
5
16
  { name: 'placeholder', label: 'Placeholder', type: 'text' },
6
17
  {
7
18
  name: 'size',
8
19
  label: 'Size',
9
20
  type: 'select',
10
- options: ['small', 'medium', 'large']
21
+ options: ['small', 'medium', 'large'],
11
22
  },
12
23
  { name: 'disabled', label: 'Disabled', type: 'boolean' },
13
- { name: 'enabled', label: 'Enabled', type: 'boolean' }
24
+ { name: 'enabled', label: 'Enabled', type: 'boolean' },
14
25
  ]
@@ -0,0 +1,23 @@
1
+ export const DATA_GRID_MAIN_FIELDS = [
2
+ { name: 'key', label: 'Key', type: 'expression' },
3
+ { name: 'dataKey', label: 'Data Key', type: 'expression' },
4
+ { name: 'columns', label: 'Columns', type: 'expression' },
5
+ // Extra columns: full AG Grid colDef objects added as new columns to the grid.
6
+ // Shape: [{ headerName, field, pinned?, width?, editable?, cellRenderer?, valueSetter?, ... }]
7
+ { name: 'extraCols', label: 'Extra Columns', type: 'extra-cols-editor' },
8
+ // Column config: overrides applied to existing columns, matched by field name.
9
+ // Shape: [{ field: string, config: { editable?, valueSetter?, valueGetter?, ... } }]
10
+ { name: 'columnsConfig', label: 'Columns Config', type: 'columns-config-editor' },
11
+ // Row actions: buttons shown in a popover when the user clicks the Actions cell.
12
+ // Shape: [{ label, color, variant, icon, code, confirmation?, disabled? }]
13
+ { name: 'actionsConfig', label: 'Row Actions', type: 'actions-config-editor' },
14
+ { name: 'addLabel', label: 'Add Button Label', type: 'expression' },
15
+ { name: 'addRow', label: 'New Row Template', type: 'code' },
16
+ { name: 'readOnly', label: 'Read Only', type: 'expression' },
17
+ { name: 'showAddBtn', label: 'Show Add Button', type: 'boolean' },
18
+ { name: 'showDeleteCol', label: 'Show Delete Col', type: 'boolean' },
19
+ { name: 'height', label: 'Height', type: 'expression' },
20
+ { name: 'rowSelection', label: 'Row Selection', type: 'select', options: ['none', 'single', 'multiple'] },
21
+ { name: 'pagination', label: 'Pagination', type: 'boolean' },
22
+ { name: 'pageSize', label: 'Page Size', type: 'number' },
23
+ ]
@@ -0,0 +1,46 @@
1
+ export const DATA_TABLE_VIEWER_MAIN_FIELDS = [
2
+ // Key used in viewerContext.data to read the rows array.
3
+ { name: 'dataKey', label: 'Data Key', type: 'expression' },
4
+
5
+ // Column definitions: [{ label: string, field: string }]
6
+ // label → column header, field → flat key on each row object.
7
+ { name: 'columns', label: 'Columns', type: 'table-columns-editor' },
8
+
9
+ // Sample rows used when data[dataKey] is empty (edit/preview mode).
10
+ // JSON array of plain objects, e.g. [{ name: "Alice", amount: 100 }]
11
+ { name: 'testData', label: 'Test Data (JSON)', type: 'expression' },
12
+
13
+ // ── Table style ──────────────────────────────────────────────────────────────
14
+ { name: 'tableWidth', label: 'Table Width', type: 'expression' }, // e.g. '100%' or '800px'
15
+
16
+ // ── Header style ─────────────────────────────────────────────────────────────
17
+ { name: 'showHeader', label: 'Show Header', type: 'boolean' },
18
+ { name: 'headerBgColor', label: 'Header Background', type: 'expression' },
19
+ { name: 'headerTextColor', label: 'Header Text Color', type: 'expression' },
20
+ { name: 'headerFontSize', label: 'Header Font Size (px)', type: 'expression' },
21
+ { name: 'headerAlign', label: 'Header Align', type: 'select',
22
+ options: ['left', 'center', 'right'] },
23
+ { name: 'headerPaddingH', label: 'Header Padding H (px)', type: 'expression' },
24
+ { name: 'headerPaddingV', label: 'Header Padding V (px)', type: 'expression' },
25
+
26
+ // ── Cell style ───────────────────────────────────────────────────────────────
27
+ { name: 'fontSize', label: 'Cell Font Size (px)', type: 'expression' },
28
+ { name: 'cellTextColor', label: 'Cell Text Color', type: 'expression' },
29
+ { name: 'cellAlign', label: 'Cell Align', type: 'select',
30
+ options: ['left', 'center', 'right'] },
31
+ { name: 'cellPaddingH', label: 'Cell Padding H (px)', type: 'expression' },
32
+ { name: 'cellPaddingV', label: 'Cell Padding V (px)', type: 'expression' },
33
+ { name: 'cellVerticalAlign', label: 'Cell Vertical Align', type: 'select',
34
+ options: ['top', 'middle', 'bottom'] },
35
+
36
+ // ── Row style ────────────────────────────────────────────────────────────────
37
+ { name: 'striped', label: 'Striped Rows', type: 'boolean' },
38
+ { name: 'stripedColor', label: 'Stripe Color', type: 'expression' },
39
+ { name: 'rowHover', label: 'Row Hover Highlight', type: 'boolean' },
40
+ { name: 'rowHoverColor', label: 'Row Hover Color', type: 'expression' },
41
+
42
+ // ── Border style ─────────────────────────────────────────────────────────────
43
+ { name: 'bordered', label: 'Bordered', type: 'boolean' },
44
+ { name: 'borderColor', label: 'Border Color', type: 'expression' },
45
+ { name: 'borderWidth', label: 'Border Width (px)', type: 'expression' },
46
+ ]
@@ -1 +1,3 @@
1
- export const DATEPICKER_ACTIONS_FIELDS = []
1
+ export const DATEPICKER_ACTIONS_FIELDS = [
2
+ { name: 'onChange', label: 'On Change', type: 'action', actionTypes: [{ value: 'custom', label: 'Custom Action' }] },
3
+ ]