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,82 @@
1
+ import { Box } from '@mui/material'
2
+ import { resolveIcon } from 'services/builderHelper/iconResolver'
3
+
4
+ /**
5
+ * Inline prefix + text + suffix row used by LabelRenderer, HeaderRenderer,
6
+ * and FieldLabel.
7
+ *
8
+ * Props
9
+ * ─────
10
+ * prefix / suffix — MUI icon name OR plain text string
11
+ * gap — MUI sx gap between pieces (default 0.5)
12
+ * sx — sx applied to the outer wrapper span
13
+ *
14
+ * Per-adornment styling (each accepts a full MUI sx object):
15
+ * prefixSx / suffixSx — applied to that adornment's wrapper span
16
+ *
17
+ * Shorthand helpers (applied to both adornments unless overridden by *Sx):
18
+ * iconSize — MUI fontSize value ('small' | 'medium' | 'large' | 'inherit' | CSS string)
19
+ * iconColor — CSS / MUI color token for the icon / text adornment
20
+ *
21
+ * When neither adornment is present, children are returned unwrapped so the
22
+ * caller retains full control over display / text-align.
23
+ */
24
+ export default function AdornedLabel({
25
+ prefix,
26
+ suffix,
27
+ gap = 0.5,
28
+ iconSize = 'inherit',
29
+ iconColor,
30
+ prefixSx,
31
+ suffixSx,
32
+ sx,
33
+ children,
34
+ }) {
35
+ if (!prefix && !suffix) return children ?? null
36
+
37
+ // Base sx shared by both adornments (overrideable per-side via *Sx props)
38
+ const baseAdornSx = {
39
+ display: 'inline-flex',
40
+ alignItems: 'center',
41
+ flexShrink: 0,
42
+ ...(iconColor && { color: iconColor }),
43
+ }
44
+
45
+ function Piece({ value, sideSx }) {
46
+ if (!value) return null
47
+ const str = String(value)
48
+ const Icon = resolveIcon(str)
49
+ const merged = { ...baseAdornSx, ...sideSx }
50
+
51
+ if (Icon) {
52
+ return (
53
+ <Box component='span' sx={merged}>
54
+ <Icon fontSize={sideSx?.fontSize ?? iconSize} />
55
+ </Box>
56
+ )
57
+ }
58
+ // Plain-text adornment — fontSize/color come from merged sx
59
+ return (
60
+ <Box component='span' sx={{ flexShrink: 0, lineHeight: 'inherit', ...merged }}>
61
+ {str}
62
+ </Box>
63
+ )
64
+ }
65
+
66
+ return (
67
+ <Box
68
+ component='span'
69
+ sx={{
70
+ display: 'inline-flex',
71
+ alignItems: 'center',
72
+ gap,
73
+ verticalAlign: 'middle',
74
+ ...sx,
75
+ }}
76
+ >
77
+ <Piece value={prefix} sideSx={prefixSx} />
78
+ {children && <Box component='span'>{children}</Box>}
79
+ <Piece value={suffix} sideSx={suffixSx} />
80
+ </Box>
81
+ )
82
+ }
@@ -21,22 +21,46 @@ import MenuRenderer from './renderers/MenuRenderer'
21
21
  import ProgressCircleRenderer from './renderers/ProgressCircleRenderer'
22
22
  import ProgressLineRenderer from './renderers/ProgressLineRenderer'
23
23
  import CardRenderer from './renderers/CardRenderer'
24
- import ColumnGroupRenderer from './renderers/ColumnGroupRenderer'
25
- import ColumnRenderer from './renderers/ColumnRenderer'
26
- import CellRenderer from './renderers/CellRenderer'
27
- import HeaderCellRenderer from './renderers/HeaderCellRenderer'
28
24
  import BreadcrumbRenderer from './renderers/BreadcrumbRenderer'
29
- import TableRenderer from './renderers/TableRenderer'
30
- import TabRenderer from './renderers/TabRenderer'
31
25
  import WizardRenderer from './renderers/WizardRenderer'
32
26
  import WizardStepRenderer from './renderers/WizardStepRenderer'
33
27
  import RepeaterRenderer from './renderers/RepeaterRenderer'
34
28
  import ReportViewerRenderer from './renderers/ReportViewerRenderer'
29
+ import DataTableViewerRenderer from './renderers/DataTableViewerRenderer'
30
+ import ViewRendererRenderer from './renderers/ViewRendererRenderer'
31
+ import DialogRenderer from './renderers/DialogRenderer'
35
32
  import AutoCompleteRenderer from './renderers/AutoCompleteRenderer'
36
33
  import LayoutRenderer from './renderers/LayoutRenderer'
37
34
  import LayoutCellRenderer from './renderers/LayoutCellRenderer'
35
+ import PopoverRenderer from './renderers/PopoverRenderer'
36
+ import DataGridRenderer from './renderers/DataGridRenderer'
37
+ import ExcelUploadRenderer from './renderers/ExcelUploadRenderer'
38
+ import BannerRenderer from './renderers/BannerRenderer'
39
+ import PageNumberRenderer from './renderers/PageNumberRenderer'
40
+ import TreeViewRenderer from './renderers/TreeViewRenderer'
38
41
  import ViewerComponentWrapper from 'views/builder/viewer/ViewerComponentWrapper'
39
42
 
43
+ // KPI / data-viz renderers
44
+ import MetricRenderer from './renderers/MetricRenderer'
45
+ import TrendRenderer from './renderers/TrendRenderer'
46
+ import BadgeRenderer from './renderers/BadgeRenderer'
47
+ import StatusDotRenderer from './renderers/StatusDotRenderer'
48
+ import IconBoxRenderer from './renderers/IconBoxRenderer'
49
+ import ChartRenderer from './renderers/ChartRenderer'
50
+ import GaugeRenderer from './renderers/GaugeRenderer'
51
+ import DonutRenderer from './renderers/DonutRenderer'
52
+ import FunnelRenderer from './renderers/FunnelRenderer'
53
+ import BulletChartRenderer from './renderers/BulletChartRenderer'
54
+ import ComparisonBarsRenderer from './renderers/ComparisonBarsRenderer'
55
+ import TimelineRenderer from './renderers/TimelineRenderer'
56
+ import TagListRenderer from './renderers/TagListRenderer'
57
+ import HeatmapGridRenderer from './renderers/HeatmapGridRenderer'
58
+ import CountdownRenderer from './renderers/CountdownRenderer'
59
+ import AvatarGroupRenderer from './renderers/AvatarGroupRenderer'
60
+ import RatingRenderer from './renderers/RatingRenderer'
61
+ import StepStageRenderer from './renderers/StepStageRenderer'
62
+ import ColorScaleRenderer from './renderers/ColorScaleRenderer'
63
+
40
64
  export default function ComponentRenderer({ node, viewerContext }) {
41
65
  if (!node) return null
42
66
 
@@ -110,27 +134,9 @@ export default function ComponentRenderer({ node, viewerContext }) {
110
134
  case 'card':
111
135
  return <CardRenderer node={node} viewerContext={viewerContext} />
112
136
 
113
- case 'column-group':
114
- return <ColumnGroupRenderer node={node} viewerContext={viewerContext} />
115
-
116
- case 'column':
117
- return <ColumnRenderer node={node} viewerContext={viewerContext} />
118
-
119
- case 'cell':
120
- return <CellRenderer node={node} viewerContext={viewerContext} />
121
-
122
- case 'header-cell':
123
- return <HeaderCellRenderer node={node} viewerContext={viewerContext} />
124
-
125
137
  case 'breadcrumb':
126
138
  return <BreadcrumbRenderer node={node} viewerContext={viewerContext} />
127
139
 
128
- case 'table':
129
- return <TableRenderer node={node} viewerContext={viewerContext} />
130
-
131
- case 'tab':
132
- return <TabRenderer node={node} viewerContext={viewerContext} />
133
-
134
140
  case 'wizard':
135
141
  return <WizardRenderer node={node} viewerContext={viewerContext} />
136
142
 
@@ -142,6 +148,14 @@ export default function ComponentRenderer({ node, viewerContext }) {
142
148
 
143
149
  case 'reportViewer':
144
150
  return <ReportViewerRenderer node={node} viewerContext={viewerContext} />
151
+ case 'data-table-viewer':
152
+ return <DataTableViewerRenderer node={node} viewerContext={viewerContext} />
153
+
154
+ case 'viewRenderer':
155
+ return <ViewRendererRenderer node={node} viewerContext={viewerContext} />
156
+
157
+ case 'dialog':
158
+ return <DialogRenderer node={node} viewerContext={viewerContext} />
145
159
 
146
160
  case 'autocomplete':
147
161
  return <AutoCompleteRenderer node={node} viewerContext={viewerContext} />
@@ -152,6 +166,66 @@ export default function ComponentRenderer({ node, viewerContext }) {
152
166
  case 'layout-cell':
153
167
  return <LayoutCellRenderer node={node} layoutNode={node} viewerContext={viewerContext} />
154
168
 
169
+ case 'popover':
170
+ return <PopoverRenderer node={node} viewerContext={viewerContext} />
171
+
172
+ case 'data-grid':
173
+ return <DataGridRenderer node={node} viewerContext={viewerContext} />
174
+
175
+ case 'excel-upload':
176
+ return <ExcelUploadRenderer node={node} viewerContext={viewerContext} />
177
+
178
+ case 'banner':
179
+ return <BannerRenderer node={node} viewerContext={viewerContext} />
180
+
181
+ case 'pageNumber':
182
+ return <PageNumberRenderer node={node} viewerContext={viewerContext} />
183
+
184
+ case 'treeView':
185
+ return <TreeViewRenderer node={node} viewerContext={viewerContext} />
186
+
187
+ // KPI / data-viz
188
+ case 'kpi-metric':
189
+ return <MetricRenderer node={node} viewerContext={viewerContext} />
190
+ case 'kpi-trend':
191
+ return <TrendRenderer node={node} viewerContext={viewerContext} />
192
+ case 'kpi-badge':
193
+ return <BadgeRenderer node={node} viewerContext={viewerContext} />
194
+ case 'kpi-status-dot':
195
+ return <StatusDotRenderer node={node} viewerContext={viewerContext} />
196
+ case 'kpi-icon-box':
197
+ return <IconBoxRenderer node={node} viewerContext={viewerContext} />
198
+ case 'kpi-chart':
199
+ case 'kpi-sparkline': // legacy alias
200
+ case 'kpi-mini-bar': // legacy alias
201
+ return <ChartRenderer node={node} viewerContext={viewerContext} />
202
+ case 'kpi-gauge':
203
+ return <GaugeRenderer node={node} viewerContext={viewerContext} />
204
+ case 'kpi-donut':
205
+ return <DonutRenderer node={node} viewerContext={viewerContext} />
206
+ case 'kpi-funnel':
207
+ return <FunnelRenderer node={node} viewerContext={viewerContext} />
208
+ case 'kpi-bullet':
209
+ return <BulletChartRenderer node={node} viewerContext={viewerContext} />
210
+ case 'kpi-comparison':
211
+ return <ComparisonBarsRenderer node={node} viewerContext={viewerContext} />
212
+ case 'kpi-timeline':
213
+ return <TimelineRenderer node={node} viewerContext={viewerContext} />
214
+ case 'kpi-tag-list':
215
+ return <TagListRenderer node={node} viewerContext={viewerContext} />
216
+ case 'kpi-heatmap':
217
+ return <HeatmapGridRenderer node={node} viewerContext={viewerContext} />
218
+ case 'kpi-countdown':
219
+ return <CountdownRenderer node={node} viewerContext={viewerContext} />
220
+ case 'kpi-avatar-group':
221
+ return <AvatarGroupRenderer node={node} viewerContext={viewerContext} />
222
+ case 'kpi-rating':
223
+ return <RatingRenderer node={node} viewerContext={viewerContext} />
224
+ case 'kpi-step-stage':
225
+ return <StepStageRenderer node={node} viewerContext={viewerContext} />
226
+ case 'kpi-color-scale':
227
+ return <ColorScaleRenderer node={node} viewerContext={viewerContext} />
228
+
155
229
  case 'widget':
156
230
  return <ViewerComponentWrapper node={node} viewerContext={viewerContext} />
157
231
 
@@ -0,0 +1,259 @@
1
+ import { useState, useCallback } from 'react'
2
+ import { Box, Typography, Chip, Menu, MenuItem, ListItemIcon, ListItemText, Divider } from '@mui/material'
3
+ import { OpenInBrowserOutlined, KeyboardArrowDown, KeyboardArrowUp, AddOutlined, DeleteOutlined } from '@mui/icons-material'
4
+ import { createNode } from 'services/builderHelper/nodeFactory'
5
+ import { useBuilder } from 'src/context/BuilderContext'
6
+ import DialogRenderer from './renderers/DialogRenderer'
7
+
8
+ // ── DialogsZone ───────────────────────────────────────────────────────────────
9
+ //
10
+ // Renders at the bottom of the canvas / ProductionViewer.
11
+ //
12
+ // EDIT MODE
13
+ // • Collapsible panel showing all dialog cards.
14
+ // • Acts as the ONLY valid drop target for 'dialog' type nodes.
15
+ // • Right-click on the zone header opens a context menu (add / delete all).
16
+ // • Right-click on an individual dialog card deletes that dialog.
17
+ // • Each card is clickable → selects the dialog in the inspector.
18
+ //
19
+ // PRODUCTION MODE
20
+ // • Invisible — just mounts every <DialogRenderer> so they register themselves
21
+ // in dialogRefs and are ready to be opened via openDialog(key).
22
+
23
+ function EditDropZone({ onDrop }) {
24
+ const [over, setOver] = useState(false)
25
+
26
+ return (
27
+ <Box
28
+ onDragOver={e => { e.preventDefault(); setOver(true) }}
29
+ onDragLeave={() => setOver(false)}
30
+ onDrop={e => { e.preventDefault(); setOver(false); onDrop(e) }}
31
+ sx={{
32
+ border: `2px dashed ${over ? '#9c27b0' : '#3a3f4a'}`,
33
+ borderRadius: 1.5,
34
+ p: 1.5,
35
+ textAlign: 'center',
36
+ color: over ? '#9c27b0' : '#555',
37
+ fontSize: 11,
38
+ cursor: 'copy',
39
+ bgcolor: over ? 'rgba(156,39,176,0.06)' : 'transparent',
40
+ transition: 'all 0.15s',
41
+ }}
42
+ >
43
+ Drop a Dialog component here
44
+ </Box>
45
+ )
46
+ }
47
+
48
+ // ── Zone-level context menu ───────────────────────────────────────────────────
49
+
50
+ function ZoneContextMenu({ anchor, onClose, onAddDialog, onDeleteAll, hasDialogs }) {
51
+ return (
52
+ <Menu
53
+ open={Boolean(anchor)}
54
+ anchorReference='anchorPosition'
55
+ anchorPosition={anchor ? { top: anchor.mouseY, left: anchor.mouseX } : undefined}
56
+ onClose={onClose}
57
+ slotProps={{ paper: { sx: { bgcolor: '#1e1e2e', border: '1px solid #333', minWidth: 180 } } }}
58
+ >
59
+ <MenuItem onClick={() => { onAddDialog(); onClose() }}
60
+ sx={{ color: '#ce93d8', '&:hover': { bgcolor: 'rgba(156,39,176,0.12)' } }}>
61
+ <ListItemIcon><AddOutlined sx={{ fontSize: 16, color: '#ce93d8' }} /></ListItemIcon>
62
+ <ListItemText primaryTypographyProps={{ fontSize: 13 }}>Add Dialog</ListItemText>
63
+ </MenuItem>
64
+
65
+ {hasDialogs && [
66
+ <Divider key='div' sx={{ borderColor: '#333', my: 0.5 }} />,
67
+ <MenuItem key='del-all' onClick={() => { onDeleteAll(); onClose() }}
68
+ sx={{ color: '#f44336', '&:hover': { bgcolor: 'rgba(244,67,54,0.12)' } }}>
69
+ <ListItemIcon><DeleteOutlined sx={{ fontSize: 16, color: '#f44336' }} /></ListItemIcon>
70
+ <ListItemText primaryTypographyProps={{ fontSize: 13 }}>Delete All Dialogs</ListItemText>
71
+ </MenuItem>
72
+ ]}
73
+ </Menu>
74
+ )
75
+ }
76
+
77
+ // ── Dialog card context menu ──────────────────────────────────────────────────
78
+
79
+ function CardContextMenu({ anchor, onClose, onDelete }) {
80
+ return (
81
+ <Menu
82
+ open={Boolean(anchor)}
83
+ anchorReference='anchorPosition'
84
+ anchorPosition={anchor ? { top: anchor.mouseY, left: anchor.mouseX } : undefined}
85
+ onClose={onClose}
86
+ slotProps={{ paper: { sx: { bgcolor: '#1e1e2e', border: '1px solid #333', minWidth: 160 } } }}
87
+ >
88
+ <MenuItem onClick={() => { onDelete(); onClose() }}
89
+ sx={{ color: '#f44336', '&:hover': { bgcolor: 'rgba(244,67,54,0.12)' } }}>
90
+ <ListItemIcon><DeleteOutlined sx={{ fontSize: 16, color: '#f44336' }} /></ListItemIcon>
91
+ <ListItemText primaryTypographyProps={{ fontSize: 13 }}>Delete Dialog</ListItemText>
92
+ </MenuItem>
93
+ </Menu>
94
+ )
95
+ }
96
+
97
+ // ── Main component ────────────────────────────────────────────────────────────
98
+
99
+ export default function DialogsZone({ dialogs = [], viewerContext }) {
100
+ const isEditMode = viewerContext?.isEditMode
101
+ const builderContext = viewerContext?.builderContext
102
+
103
+ // Edit-mode: collapsible
104
+ const [open, setOpen] = useState(true)
105
+
106
+ // Context menus
107
+ const [zoneMenuAnchor, setZoneMenuAnchor] = useState(null)
108
+ const [cardMenuAnchor, setCardMenuAnchor] = useState(null)
109
+ const [cardMenuDialogId, setCardMenuDialogId] = useState(null)
110
+
111
+ // ── PRODUCTION MODE — just mount all dialog renderers invisibly ───────────
112
+ if (!isEditMode) {
113
+ return (
114
+ <>
115
+ {dialogs.map(dialog => (
116
+ <DialogRenderer key={dialog.id} node={dialog} viewerContext={viewerContext} />
117
+ ))}
118
+ </>
119
+ )
120
+ }
121
+
122
+ // ── EDIT MODE ─────────────────────────────────────────────────────────────
123
+ const { setSchema } = builderContext ?? {}
124
+
125
+ // Add a blank dialog
126
+ const handleAddDialog = useCallback(() => {
127
+ if (!setSchema) return
128
+ const newNode = createNode('dialog', {})
129
+ setSchema(prev => ({
130
+ ...prev,
131
+ dialogs: [...(prev.dialogs ?? []), newNode],
132
+ }))
133
+ builderContext.setSelectedId(newNode.id)
134
+ }, [setSchema, builderContext])
135
+
136
+ // Delete a single dialog by id
137
+ const handleDeleteDialog = useCallback((dialogId) => {
138
+ if (!setSchema) return
139
+ setSchema(prev => ({
140
+ ...prev,
141
+ dialogs: (prev.dialogs ?? []).filter(d => d.id !== dialogId),
142
+ }))
143
+ if (builderContext?.selectedId === dialogId) {
144
+ builderContext.setSelectedId(null)
145
+ }
146
+ }, [setSchema, builderContext])
147
+
148
+ // Delete all dialogs
149
+ const handleDeleteAll = useCallback(() => {
150
+ if (!setSchema) return
151
+ setSchema(prev => ({ ...prev, dialogs: [] }))
152
+ builderContext?.setSelectedId(null)
153
+ }, [setSchema, builderContext])
154
+
155
+ // Drop handler
156
+ const handleDrop = (e) => {
157
+ if (!setSchema) return
158
+ const componentData = e.dataTransfer.getData('application/builder-component')
159
+ if (!componentData) return
160
+ try {
161
+ const component = JSON.parse(componentData)
162
+ if (component.type !== 'dialog') return
163
+ const newNode = createNode('dialog', component.value ? JSON.parse(component.value) : {})
164
+ setSchema(prev => ({
165
+ ...prev,
166
+ dialogs: [...(prev.dialogs ?? []), newNode],
167
+ }))
168
+ builderContext.setSelectedId(newNode.id)
169
+ } catch (err) {
170
+ console.error('[DialogsZone] drop error', err)
171
+ }
172
+ }
173
+
174
+ // Zone header right-click
175
+ const handleZoneContextMenu = (e) => {
176
+ e.preventDefault()
177
+ setZoneMenuAnchor({ mouseX: e.clientX, mouseY: e.clientY })
178
+ }
179
+
180
+ // Dialog card right-click
181
+ const handleCardContextMenu = (e, dialogId) => {
182
+ e.preventDefault()
183
+ e.stopPropagation()
184
+ setCardMenuDialogId(dialogId)
185
+ setCardMenuAnchor({ mouseX: e.clientX, mouseY: e.clientY })
186
+ }
187
+
188
+ return (
189
+ <Box
190
+ sx={{
191
+ borderTop: '2px solid #2a3a4a',
192
+ bgcolor: '#0f141c',
193
+ flexShrink: 0,
194
+ }}
195
+ >
196
+ {/* Header — right-click for context menu */}
197
+ <Box
198
+ display='flex' alignItems='center' justifyContent='space-between'
199
+ px={2} py={0.8}
200
+ onClick={() => setOpen(p => !p)}
201
+ onContextMenu={handleZoneContextMenu}
202
+ sx={{ cursor: 'pointer', userSelect: 'none', '&:hover': { bgcolor: '#141a24' } }}
203
+ >
204
+ <Box display='flex' alignItems='center' gap={1}>
205
+ <OpenInBrowserOutlined sx={{ fontSize: 14, color: '#9c27b0' }} />
206
+ <Typography sx={{ fontSize: 11, fontWeight: 700, letterSpacing: '0.08em', textTransform: 'uppercase', color: '#9c27b0' }}>
207
+ Dialogs
208
+ </Typography>
209
+ <Chip
210
+ label={dialogs.length}
211
+ size='small'
212
+ sx={{ height: 16, fontSize: 10, bgcolor: '#2a1540', color: '#ce93d8', '.MuiChip-label': { px: 0.8 } }}
213
+ />
214
+ </Box>
215
+ {open
216
+ ? <KeyboardArrowDown sx={{ fontSize: 16, color: '#555' }} />
217
+ : <KeyboardArrowUp sx={{ fontSize: 16, color: '#555' }} />}
218
+ </Box>
219
+
220
+ {/* Content */}
221
+ {open && (
222
+ <Box px={2} py={1.5} display='flex' flexDirection='column' gap={1}>
223
+ {/* Existing dialog cards — each gets its own right-click menu */}
224
+ {dialogs.length > 0 && (
225
+ <Box display='flex' flexWrap='wrap' gap={1} mb={1}>
226
+ {dialogs.map(dialog => (
227
+ <Box
228
+ key={dialog.id}
229
+ onContextMenu={e => handleCardContextMenu(e, dialog.id)}
230
+ >
231
+ <DialogRenderer node={dialog} viewerContext={viewerContext} />
232
+ </Box>
233
+ ))}
234
+ </Box>
235
+ )}
236
+
237
+ {/* Drop zone */}
238
+ <EditDropZone onDrop={handleDrop} />
239
+ </Box>
240
+ )}
241
+
242
+ {/* Zone-level context menu */}
243
+ <ZoneContextMenu
244
+ anchor={zoneMenuAnchor}
245
+ onClose={() => setZoneMenuAnchor(null)}
246
+ onAddDialog={handleAddDialog}
247
+ onDeleteAll={handleDeleteAll}
248
+ hasDialogs={dialogs.length > 0}
249
+ />
250
+
251
+ {/* Per-card context menu */}
252
+ <CardContextMenu
253
+ anchor={cardMenuAnchor}
254
+ onClose={() => { setCardMenuAnchor(null); setCardMenuDialogId(null) }}
255
+ onDelete={() => cardMenuDialogId && handleDeleteDialog(cardMenuDialogId)}
256
+ />
257
+ </Box>
258
+ )
259
+ }
@@ -0,0 +1,106 @@
1
+ import { Box, Typography } from '@mui/material'
2
+ import AdornedLabel from './AdornedLabel'
3
+
4
+ /**
5
+ * FieldLabel — renders an external label for any input component.
6
+ *
7
+ * labelPosition : 'top' | 'left' | 'right' | 'none'
8
+ *
9
+ * Styling props (all optional, MUI sx-compatible values):
10
+ * labelFontSize — e.g. '0.75rem', 12
11
+ * labelFontWeight — e.g. 600, 'bold'
12
+ * labelColor — e.g. '#333', 'primary.main' (overrides default text.secondary)
13
+ * labelFontStyle — e.g. 'italic'
14
+ * labelLetterSpacing
15
+ *
16
+ * Adornment props forwarded to AdornedLabel:
17
+ * prefix / suffix — icon name or text
18
+ * iconSize / iconColor / prefixSx / suffixSx
19
+ */
20
+ export default function FieldLabel({
21
+ label,
22
+ required,
23
+ labelPosition = 'top',
24
+ error,
25
+ // label text styling
26
+ labelFontSize,
27
+ labelFontWeight,
28
+ labelColor,
29
+ labelFontStyle,
30
+ labelLetterSpacing,
31
+ // adornment
32
+ prefix,
33
+ suffix,
34
+ iconSize,
35
+ iconColor,
36
+ prefixSx,
37
+ suffixSx,
38
+ iconGap,
39
+ children,
40
+ }) {
41
+ if (!label || labelPosition === 'none') return children
42
+
43
+ const isInline = labelPosition === 'left' || labelPosition === 'right'
44
+
45
+ const labelEl = (
46
+ <Typography
47
+ component='span'
48
+ sx={{
49
+ display: 'flex',
50
+ alignItems: 'center',
51
+ gap: 0.5,
52
+ fontSize: labelFontSize ?? '0.8125rem',
53
+ fontWeight: labelFontWeight ?? 500,
54
+ fontStyle: labelFontStyle,
55
+ letterSpacing: labelLetterSpacing,
56
+ lineHeight: 1.5,
57
+ color: error ? 'error.main' : (labelColor ?? 'text.secondary'),
58
+ userSelect: 'none',
59
+ whiteSpace: 'nowrap',
60
+ ...(isInline ? { flexShrink: 0, pt: '8px' } : { mb: 0.5 }),
61
+ }}
62
+ >
63
+ <AdornedLabel
64
+ prefix={prefix}
65
+ suffix={suffix}
66
+ iconSize={iconSize ?? 'small'}
67
+ iconColor={iconColor}
68
+ prefixSx={prefixSx}
69
+ suffixSx={suffixSx}
70
+ gap={iconGap ?? 0.5}
71
+ >
72
+ {label}
73
+ </AdornedLabel>
74
+ {required && (
75
+ <Box component='span' sx={{ color: 'error.main', ml: 0.25, flexShrink: 0 }}>
76
+ *
77
+ </Box>
78
+ )}
79
+ </Typography>
80
+ )
81
+
82
+ if (labelPosition === 'left') {
83
+ return (
84
+ <Box sx={{ display: 'flex', alignItems: 'flex-start', gap: 1.5, width: '100%' }}>
85
+ {labelEl}
86
+ <Box sx={{ flex: 1, minWidth: 0 }}>{children}</Box>
87
+ </Box>
88
+ )
89
+ }
90
+
91
+ if (labelPosition === 'right') {
92
+ return (
93
+ <Box sx={{ display: 'flex', alignItems: 'flex-start', gap: 1.5, width: '100%' }}>
94
+ <Box sx={{ flex: 1, minWidth: 0 }}>{children}</Box>
95
+ {labelEl}
96
+ </Box>
97
+ )
98
+ }
99
+
100
+ return (
101
+ <Box sx={{ display: 'flex', flexDirection: 'column', width: '100%' }}>
102
+ {labelEl}
103
+ {children}
104
+ </Box>
105
+ )
106
+ }