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.
- package/README.md +211 -0
- package/next.config.js +19 -48
- package/package.json +39 -85
- package/src/context/BuilderContext.jsx +134 -6
- package/src/context/SystemContext.js +2 -2
- package/src/hooks/useGlobalStore.js +36 -0
- package/src/hooks/useTimerEngine.js +54 -0
- package/src/lib/index.js +11 -3
- package/src/lib/layouts/BlankLayout.jsx +13 -0
- package/src/lib/providers/RoboByteFrontBuilderProvider.jsx +59 -1
- package/src/lib/themes/builderTheme.js +41 -0
- package/src/pages/_app.js +32 -134
- package/src/pages/api/ai.js +87 -0
- package/src/pages/builders/report/index.js +1 -0
- package/src/pages/builders/report/list/index.js +1 -0
- package/src/pages/builders/report/viewer/index.js +1 -0
- package/src/pages/index.js +88 -37
- package/src/pages/printBuilder/index.jsx +263 -0
- package/src/pages/printBuilder/layouts/index.jsx +298 -0
- package/src/pages/reportModule/reportBuilder/index.js +723 -563
- package/src/pages/reportModule/reportBuilder/reportViewer/index.js +137 -71
- package/src/pages/reportModule/reportBuilder/reports/index.js +51 -13
- package/src/pages/reportModule/reportBuilder/reportsPermissions/index.js +126 -0
- package/src/pages/viewBuilder/index.jsx +117 -32
- package/src/pages/viewBuilder/views/index.js +3 -3
- package/src/pages/viewer/[id]/index.js +2 -1
- package/src/services/DeleteService.js +31 -60
- package/src/services/Endpoints/PrintLayoutEndpoints.js +42 -0
- package/src/services/Endpoints.js +2 -0
- package/src/services/GetService.js +33 -54
- package/src/services/PatchService.js +38 -65
- package/src/services/PostService.js +37 -63
- package/src/services/UpdateService.js +39 -65
- package/src/services/builderHelper/actionExecutor.js +141 -25
- package/src/services/builderHelper/builderHelper.js +92 -0
- package/src/services/builderHelper/colorSchema.js +95 -0
- package/src/services/builderHelper/iconResolver.js +50 -0
- package/src/services/builderHelper/jsExecutor.js +212 -46
- package/src/services/builderHelper/nodeFactory.js +32 -15
- package/src/services/builderHelper/numberFormat.js +123 -0
- package/src/services/builderHelper/resolveProps.js +73 -4
- package/src/services/builderHelper/thresholdEngine.js +77 -0
- package/src/services/builderHelper/tree.js +31 -0
- package/src/services/components/agGridAutoComplete.js +5 -9
- package/src/services/config.js +9 -1
- package/src/services/globalStore.js +80 -0
- package/src/services/helper/multiSelectEditor.js +5 -9
- package/src/services/helper/multiSelectEditorByBuilder.js +241 -0
- package/src/services/helper/reportSessionHelper.js +83 -0
- package/src/services/reportData/fetchReportData.js +69 -28
- package/src/services/routerRef.js +35 -0
- package/src/views/ConfirmDialog.js +2 -2
- package/src/views/builder/JSEditor.js +105 -107
- package/src/views/builder/inspector/Inspector.jsx +6 -9
- package/src/views/builder/inspector/Tabs/ComponentActionsTab.jsx +7 -13
- package/src/views/builder/inspector/Tabs/MainTab.jsx +143 -25
- package/src/views/builder/inspector/Tabs/RulesTab.jsx +9 -24
- package/src/views/builder/inspector/Tabs/StyleTab.jsx +9 -24
- package/src/views/builder/inspector/definitions/autocomplete/main.js +4 -6
- package/src/views/builder/inspector/definitions/banner/actions.js +7 -0
- package/src/views/builder/inspector/definitions/banner/main.js +22 -0
- package/src/views/builder/inspector/definitions/banner/rules.js +1 -0
- package/src/views/builder/inspector/definitions/banner/style.js +1 -0
- package/src/views/builder/inspector/definitions/breadcrumb/main.js +43 -6
- package/src/views/builder/inspector/definitions/button/main.js +11 -12
- package/src/views/builder/inspector/definitions/button/style.js +18 -30
- package/src/views/builder/inspector/definitions/checkbox/actions.js +3 -1
- package/src/views/builder/inspector/definitions/checkbox/main.js +4 -6
- package/src/views/builder/inspector/definitions/common/main.js +13 -2
- package/src/views/builder/inspector/definitions/dataGrid/main.js +23 -0
- package/src/views/builder/inspector/definitions/dataTableViewer/main.js +46 -0
- package/src/views/builder/inspector/definitions/datepicker/actions.js +3 -1
- package/src/views/builder/inspector/definitions/datepicker/main.js +6 -14
- package/src/views/builder/inspector/definitions/dialog/main.js +36 -0
- package/src/views/builder/inspector/definitions/dropdown/main.js +5 -8
- package/src/views/builder/inspector/definitions/excelUpload/actions.js +23 -0
- package/src/views/builder/inspector/definitions/excelUpload/main.js +17 -0
- package/src/views/builder/inspector/definitions/excelUpload/rules.js +1 -0
- package/src/views/builder/inspector/definitions/excelUpload/style.js +45 -0
- package/src/views/builder/inspector/definitions/header/main.js +10 -1
- package/src/views/builder/inspector/definitions/index.js +106 -19
- package/src/views/builder/inspector/definitions/input/actions.js +4 -1
- package/src/views/builder/inspector/definitions/input/main.js +20 -11
- package/src/views/builder/inspector/definitions/kpi/avatarGroup.js +22 -0
- package/src/views/builder/inspector/definitions/kpi/badge.js +17 -0
- package/src/views/builder/inspector/definitions/kpi/bulletChart.js +47 -0
- package/src/views/builder/inspector/definitions/kpi/chart.js +55 -0
- package/src/views/builder/inspector/definitions/kpi/colorScale.js +60 -0
- package/src/views/builder/inspector/definitions/kpi/comparisonBars.js +41 -0
- package/src/views/builder/inspector/definitions/kpi/countdown.js +46 -0
- package/src/views/builder/inspector/definitions/kpi/donut.js +51 -0
- package/src/views/builder/inspector/definitions/kpi/funnel.js +25 -0
- package/src/views/builder/inspector/definitions/kpi/gauge.js +39 -0
- package/src/views/builder/inspector/definitions/kpi/heatmapGrid.js +96 -0
- package/src/views/builder/inspector/definitions/kpi/iconBox.js +20 -0
- package/src/views/builder/inspector/definitions/kpi/metric.js +45 -0
- package/src/views/builder/inspector/definitions/kpi/rating.js +27 -0
- package/src/views/builder/inspector/definitions/kpi/statusDot.js +18 -0
- package/src/views/builder/inspector/definitions/kpi/stepStage.js +65 -0
- package/src/views/builder/inspector/definitions/kpi/tagList.js +32 -0
- package/src/views/builder/inspector/definitions/kpi/timeline.js +80 -0
- package/src/views/builder/inspector/definitions/kpi/trend.js +20 -0
- package/src/views/builder/inspector/definitions/label/main.js +10 -1
- package/src/views/builder/inspector/definitions/layout/main.js +27 -3
- package/src/views/builder/inspector/definitions/number/main.js +6 -14
- package/src/views/builder/inspector/definitions/pageNumber/main.js +21 -0
- package/src/views/builder/inspector/definitions/popover/main.js +71 -0
- package/src/views/builder/inspector/definitions/radio/main.js +5 -8
- package/src/views/builder/inspector/definitions/repeater/main.js +31 -0
- package/src/views/builder/inspector/definitions/reportViewer/main.js +15 -1
- package/src/views/builder/inspector/definitions/richtext/main.js +5 -8
- package/src/views/builder/inspector/definitions/signature/main.js +4 -1
- package/src/views/builder/inspector/definitions/tag/main.js +5 -8
- package/src/views/builder/inspector/definitions/textarea/actions.js +4 -1
- package/src/views/builder/inspector/definitions/textarea/main.js +5 -7
- package/src/views/builder/inspector/definitions/time/main.js +5 -8
- package/src/views/builder/inspector/definitions/toggle/main.js +5 -19
- package/src/views/builder/inspector/definitions/treeView/main.js +61 -0
- package/src/views/builder/inspector/definitions/viewRenderer/main.js +53 -0
- package/src/views/builder/inspector/definitions/wizard/main.js +68 -0
- package/src/views/builder/inspector/definitions/wizard-step/main.js +25 -0
- package/src/views/builder/inspector/fields/ActionsConfigEditor.jsx +426 -0
- package/src/views/builder/inspector/fields/ColorSchemaField.jsx +140 -0
- package/src/views/builder/inspector/fields/ColumnFunctionEditor.jsx +238 -0
- package/src/views/builder/inspector/fields/ColumnMappingEditor.jsx +105 -0
- package/src/views/builder/inspector/fields/ColumnsConfigEditor.jsx +506 -0
- package/src/views/builder/inspector/fields/DonutRingsEditorField.jsx +337 -0
- package/src/views/builder/inspector/fields/ExtraColsEditor.jsx +618 -0
- package/src/views/builder/inspector/fields/FunctionHelpPopover.jsx +295 -0
- package/src/views/builder/inspector/fields/IconEditor.jsx +64 -0
- package/src/views/builder/inspector/fields/KpiActionField.jsx +223 -0
- package/src/views/builder/inspector/fields/MarkersEditorField.jsx +173 -0
- package/src/views/builder/inspector/fields/SelectEditor.jsx +9 -5
- package/src/views/builder/inspector/fields/SeriesEditorField.jsx +363 -0
- package/src/views/builder/inspector/fields/TableColumnsEditor.jsx +104 -0
- package/src/views/builder/inspector/fields/ThresholdsEditor.jsx +247 -0
- package/src/views/builder/inspector/fields/ValueFunctionsRefPanel.jsx +217 -0
- package/src/views/builder/inspector/fields/columnEditorShared.jsx +217 -0
- package/src/views/builder/sidebar/Sidebar.jsx +4 -2
- package/src/views/builder/sidebar/SidebarTabs.jsx +28 -17
- package/src/views/builder/sidebar/tabs/ActionsTab.jsx +7 -3
- package/src/views/builder/sidebar/tabs/AiTab/AiPreviewDialog.jsx +193 -0
- package/src/views/builder/sidebar/tabs/AiTab/aiProvider.js +49 -0
- package/src/views/builder/sidebar/tabs/AiTab/index.jsx +409 -0
- package/src/views/builder/sidebar/tabs/AiTab/schemaTransformer.js +102 -0
- package/src/views/builder/sidebar/tabs/AiTab/schemaValidator.js +64 -0
- package/src/views/builder/sidebar/tabs/AiTab/systemPrompt.js +1151 -0
- package/src/views/builder/sidebar/tabs/Components/ComponentsTab.jsx +31 -31
- package/src/views/builder/sidebar/tabs/Components/componentCatalog.js +43 -21
- package/src/views/builder/sidebar/tabs/Components/printComponentCatalog.js +81 -0
- package/src/views/builder/sidebar/tabs/TimersTab.jsx +338 -0
- package/src/views/builder/sidebar/tabs/TreeTab.jsx +13 -4
- package/src/views/builder/sidebar/tabs/ViewTab.jsx +1 -1
- package/src/views/builder/viewer/AdornedLabel.jsx +82 -0
- package/src/views/builder/viewer/ComponentRenderer.jsx +98 -24
- package/src/views/builder/viewer/DialogsZone.jsx +259 -0
- package/src/views/builder/viewer/FieldLabel.jsx +106 -0
- package/src/views/builder/viewer/PrintDialog.jsx +481 -0
- package/src/views/builder/viewer/ProductionViewer.jsx +80 -5
- package/src/views/builder/viewer/Viewer.jsx +106 -8
- package/src/views/builder/viewer/ViewerComponentWrapper.jsx +61 -4
- package/src/views/builder/viewer/ViewerToolbar.jsx +273 -59
- package/src/views/builder/viewer/renderers/AutoCompleteRenderer.jsx +26 -22
- package/src/views/builder/viewer/renderers/AvatarGroupRenderer.jsx +112 -0
- package/src/views/builder/viewer/renderers/BadgeRenderer.jsx +79 -0
- package/src/views/builder/viewer/renderers/BannerRenderer.jsx +62 -0
- package/src/views/builder/viewer/renderers/BreadcrumbRenderer.jsx +203 -15
- package/src/views/builder/viewer/renderers/BulletChartRenderer.jsx +147 -0
- package/src/views/builder/viewer/renderers/ButtonRenderer.jsx +98 -39
- package/src/views/builder/viewer/renderers/CardRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/ChartRenderer.jsx +388 -0
- package/src/views/builder/viewer/renderers/CheckboxRenderer.jsx +17 -9
- package/src/views/builder/viewer/renderers/ColorScaleRenderer.jsx +300 -0
- package/src/views/builder/viewer/renderers/ComparisonBarsRenderer.jsx +133 -0
- package/src/views/builder/viewer/renderers/ContainerRenderer.jsx +3 -1
- package/src/views/builder/viewer/renderers/CountdownRenderer.jsx +249 -0
- package/src/views/builder/viewer/renderers/DataGridRenderer.jsx +380 -0
- package/src/views/builder/viewer/renderers/DataTableViewerRenderer.jsx +240 -0
- package/src/views/builder/viewer/renderers/DatePickerRenderer.jsx +25 -24
- package/src/views/builder/viewer/renderers/DialogRenderer.jsx +327 -0
- package/src/views/builder/viewer/renderers/DividerRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/DonutRenderer.jsx +294 -0
- package/src/views/builder/viewer/renderers/DropdownRenderer.jsx +36 -44
- package/src/views/builder/viewer/renderers/ExcelUploadRenderer.jsx +639 -0
- package/src/views/builder/viewer/renderers/FunnelRenderer.jsx +93 -0
- package/src/views/builder/viewer/renderers/GaugeRenderer.jsx +159 -0
- package/src/views/builder/viewer/renderers/HeaderRenderer.jsx +31 -9
- package/src/views/builder/viewer/renderers/HeatmapGridRenderer.jsx +432 -0
- package/src/views/builder/viewer/renderers/IconBoxRenderer.jsx +59 -0
- package/src/views/builder/viewer/renderers/ImageRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/InputRenderer.jsx +75 -18
- package/src/views/builder/viewer/renderers/LabelRenderer.jsx +35 -9
- package/src/views/builder/viewer/renderers/LayoutCellRenderer.jsx +102 -40
- package/src/views/builder/viewer/renderers/LayoutContextMenu.jsx +8 -8
- package/src/views/builder/viewer/renderers/LayoutRenderer.jsx +48 -6
- package/src/views/builder/viewer/renderers/LinkRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/MenuRenderer.jsx +2 -2
- package/src/views/builder/viewer/renderers/MetricRenderer.jsx +80 -0
- package/src/views/builder/viewer/renderers/NumberFormatRenderer.jsx +21 -30
- package/src/views/builder/viewer/renderers/PageNumberRenderer.jsx +76 -0
- package/src/views/builder/viewer/renderers/PopoverRenderer.jsx +350 -0
- package/src/views/builder/viewer/renderers/ProgressCircleRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/ProgressLineRenderer.jsx +1 -1
- package/src/views/builder/viewer/renderers/RadioGroupRenderer.jsx +28 -39
- package/src/views/builder/viewer/renderers/RatingRenderer.jsx +80 -0
- package/src/views/builder/viewer/renderers/RepeaterRenderer.jsx +297 -38
- package/src/views/builder/viewer/renderers/ReportViewerRenderer.jsx +219 -5
- package/src/views/builder/viewer/renderers/RichTextRenderer.jsx +60 -66
- package/src/views/builder/viewer/renderers/RowActionsCell.jsx +308 -0
- package/src/views/builder/viewer/renderers/SignatureRenderer.jsx +33 -62
- package/src/views/builder/viewer/renderers/StatusDotRenderer.jsx +75 -0
- package/src/views/builder/viewer/renderers/StepStageRenderer.jsx +348 -0
- package/src/views/builder/viewer/renderers/TagListRenderer.jsx +115 -0
- package/src/views/builder/viewer/renderers/TagPickerRenderer.jsx +31 -45
- package/src/views/builder/viewer/renderers/TextAreaRenderer.jsx +25 -18
- package/src/views/builder/viewer/renderers/TextRenderer.jsx +7 -1
- package/src/views/builder/viewer/renderers/TimePickerRenderer.jsx +25 -24
- package/src/views/builder/viewer/renderers/TimelineRenderer.jsx +525 -0
- package/src/views/builder/viewer/renderers/ToggleRenderer.jsx +21 -27
- package/src/views/builder/viewer/renderers/TreeViewRenderer.jsx +832 -0
- package/src/views/builder/viewer/renderers/TrendRenderer.jsx +66 -0
- package/src/views/builder/viewer/renderers/ViewRendererRenderer.jsx +315 -0
- package/src/views/builder/viewer/renderers/WizardRenderer.jsx +380 -64
- package/src/views/builder/viewer/renderers/WizardStepRenderer.jsx +21 -12
- package/src/views/builder/viewer/renderers/dataGridComponents.jsx +824 -0
- package/src/views/customFilter/CustomFilterDialog.js +1023 -660
- package/src/views/customFilter/FixedFilterDialog.js +649 -0
- package/src/views/customFilter/SearchFilterDialog.js +248 -0
- package/src/views/genericTable/BuilderExpressionParams.js +3 -3
- package/src/views/genericTable/ColumnConfiguratorDialog.js +771 -0
- package/src/views/genericTable/FixedFilterDialog.js +3 -2
- package/src/views/genericTable/FormattingSettingsDialog.js +551 -0
- package/src/views/genericTable/ReportSettingsDialog.js +151 -0
- package/src/views/genericTable/SGrid.js +1061 -247
- package/src/views/genericTable/SearchFilterDialog.js +3 -2
- package/src/views/genericTable/TAGGrid.js +83 -69
- package/src/views/genericTable/cellEditors/autocompleteEditor.js +5 -9
- package/src/views/genericTable/convertStringFunctions.js +336 -0
- package/src/views/genericTable/statusBar/rowCountStatusBar.js +3 -1
- package/src/views/genericTable/updateRefHelpers.js +424 -0
- package/src/views/printBuilder/PrintBuilderViewer.jsx +607 -0
- package/src/views/printBuilder/PrintPreviewCanvas.jsx +157 -0
- package/src/views/rolePermissions/UpdateReportPermissionDialog.js +316 -0
- package/src/@core/components/auth/AclGuard.js +0 -55
- package/src/@core/components/auth/AuthGuard.js +0 -40
- package/src/@core/components/auth/GuestGuard.js +0 -30
- package/src/@core/components/custom-inputs/Horizontal.jsx +0 -143
- package/src/@core/components/custom-inputs/Image.jsx +0 -78
- package/src/@core/components/custom-inputs/Vertical.jsx +0 -113
- package/src/@core/components/customizer/index.jsx +0 -470
- package/src/@core/components/customizer/styles.module.css +0 -169
- package/src/@core/components/mui/Avatar.jsx +0 -41
- package/src/@core/components/mui/Badge.jsx +0 -20
- package/src/@core/components/mui/IconButton.jsx +0 -74
- package/src/@core/components/mui/TabList.jsx +0 -60
- package/src/@core/components/option-menu/index.jsx +0 -137
- package/src/@core/components/scroll-to-top/index.jsx +0 -43
- package/src/@core/components/spinner/index.js +0 -26
- package/src/@core/components/window-wrapper/index.js +0 -27
- package/src/@core/contexts/settingsContext.jsx +0 -98
- package/src/@core/hooks/useBgColor.js +0 -63
- package/src/@core/hooks/useImageVariant.js +0 -27
- package/src/@core/hooks/useLayoutInit.js +0 -37
- package/src/@core/hooks/useObjectCookie.js +0 -18
- package/src/@core/hooks/useSettings.jsx +0 -15
- package/src/@core/layouts/BlankLayout.js +0 -37
- package/src/@core/layouts/BlankLayoutWithAppBar.js +0 -51
- package/src/@core/layouts/HorizontalLayout.jsx +0 -151
- package/src/@core/layouts/Layout.js +0 -39
- package/src/@core/layouts/VerticalLayout.jsx +0 -124
- package/src/@core/layouts/components/blank-layout-with-appBar/index.js +0 -115
- package/src/@core/layouts/components/horizontal/app-bar-content/index.js +0 -67
- package/src/@core/layouts/components/horizontal/navigation/HorizontalNavGroup.js +0 -352
- package/src/@core/layouts/components/horizontal/navigation/HorizontalNavItems.js +0 -21
- package/src/@core/layouts/components/horizontal/navigation/HorizontalNavLink.js +0 -195
- package/src/@core/layouts/components/horizontal/navigation/index.js +0 -31
- package/src/@core/layouts/components/shared-components/LanguageDropdown.js +0 -96
- package/src/@core/layouts/components/shared-components/ModeToggler.js +0 -32
- package/src/@core/layouts/components/shared-components/NotificationDropdown.js +0 -226
- package/src/@core/layouts/components/shared-components/UserDropdown.js +0 -177
- package/src/@core/layouts/components/shared-components/footer/FooterContent.js +0 -46
- package/src/@core/layouts/components/shared-components/footer/index.js +0 -61
- package/src/@core/layouts/components/vertical/appBar/index.js +0 -74
- package/src/@core/layouts/components/vertical/navigation/Drawer.js +0 -122
- package/src/@core/layouts/components/vertical/navigation/VerticalNavGroup.js +0 -435
- package/src/@core/layouts/components/vertical/navigation/VerticalNavHeader.js +0 -180
- package/src/@core/layouts/components/vertical/navigation/VerticalNavItems.js +0 -26
- package/src/@core/layouts/components/vertical/navigation/VerticalNavLink.js +0 -258
- package/src/@core/layouts/components/vertical/navigation/VerticalNavSectionTitle.js +0 -102
- package/src/@core/layouts/components/vertical/navigation/index.js +0 -169
- package/src/@core/layouts/utils.js +0 -69
- package/src/@core/styles/Table.module.css +0 -93
- package/src/@core/styles/horizontal/menuItemStyles.js +0 -100
- package/src/@core/styles/horizontal/menuRootStyles.js +0 -19
- package/src/@core/styles/libs/fullcalendar/index.js +0 -461
- package/src/@core/styles/libs/keen-slider/index.js +0 -111
- package/src/@core/styles/libs/react-apexcharts/index.js +0 -107
- package/src/@core/styles/libs/react-cleave/index.js +0 -33
- package/src/@core/styles/libs/react-credit-cards/index.js +0 -11
- package/src/@core/styles/libs/react-datepicker/index.js +0 -388
- package/src/@core/styles/libs/react-draft-wysiwyg/index.js +0 -144
- package/src/@core/styles/libs/react-dropzone/index.js +0 -76
- package/src/@core/styles/libs/react-hot-toast/index.js +0 -37
- package/src/@core/styles/libs/recharts/index.js +0 -47
- package/src/@core/styles/stepper.js +0 -103
- package/src/@core/styles/vertical/menuItemStyles.js +0 -138
- package/src/@core/styles/vertical/menuSectionStyles.js +0 -54
- package/src/@core/styles/vertical/navigationCustomStyles.js +0 -62
- package/src/@core/svg/ContentCompact.jsx +0 -17
- package/src/@core/svg/ContentWide.jsx +0 -17
- package/src/@core/svg/DirectionLtr.jsx +0 -93
- package/src/@core/svg/DirectionRtl.jsx +0 -93
- package/src/@core/svg/LayoutCollapsed.jsx +0 -59
- package/src/@core/svg/LayoutHorizontal.jsx +0 -42
- package/src/@core/svg/LayoutVertical.jsx +0 -59
- package/src/@core/svg/Logo.jsx +0 -76
- package/src/@core/svg/SkinBordered.jsx +0 -54
- package/src/@core/svg/SkinDefault.jsx +0 -59
- package/src/@core/tailwind/plugin.js +0 -78
- package/src/@core/theme/ThemeComponent.js +0 -63
- package/src/@core/theme/ThemeOptions.js +0 -71
- package/src/@core/theme/breakpoints/index.js +0 -11
- package/src/@core/theme/colorSchemes.js +0 -326
- package/src/@core/theme/customShadows.js +0 -11
- package/src/@core/theme/globalStyles.js +0 -81
- package/src/@core/theme/index.js +0 -42
- package/src/@core/theme/overrides/accordion.js +0 -51
- package/src/@core/theme/overrides/accordion.jsx +0 -85
- package/src/@core/theme/overrides/alerts.js +0 -110
- package/src/@core/theme/overrides/alerts.jsx +0 -180
- package/src/@core/theme/overrides/autocomplete.js +0 -14
- package/src/@core/theme/overrides/autocomplete.jsx +0 -68
- package/src/@core/theme/overrides/avatar.js +0 -38
- package/src/@core/theme/overrides/avatars.js +0 -27
- package/src/@core/theme/overrides/backdrop.js +0 -22
- package/src/@core/theme/overrides/badges.js +0 -16
- package/src/@core/theme/overrides/breadcrumbs.js +0 -11
- package/src/@core/theme/overrides/button-group.js +0 -84
- package/src/@core/theme/overrides/button.js +0 -93
- package/src/@core/theme/overrides/buttonGroup.js +0 -9
- package/src/@core/theme/overrides/card.js +0 -83
- package/src/@core/theme/overrides/checkbox.jsx +0 -95
- package/src/@core/theme/overrides/chip.js +0 -72
- package/src/@core/theme/overrides/dataGrid.js +0 -114
- package/src/@core/theme/overrides/dateTimePicker.js +0 -65
- package/src/@core/theme/overrides/dialog.js +0 -120
- package/src/@core/theme/overrides/divider.js +0 -13
- package/src/@core/theme/overrides/drawer.js +0 -20
- package/src/@core/theme/overrides/fab.js +0 -13
- package/src/@core/theme/overrides/form-control-label.js +0 -19
- package/src/@core/theme/overrides/icon-button.js +0 -145
- package/src/@core/theme/overrides/index.js +0 -103
- package/src/@core/theme/overrides/input.js +0 -72
- package/src/@core/theme/overrides/link.js +0 -9
- package/src/@core/theme/overrides/list.js +0 -44
- package/src/@core/theme/overrides/menu.js +0 -25
- package/src/@core/theme/overrides/pagination.js +0 -41
- package/src/@core/theme/overrides/paper.js +0 -9
- package/src/@core/theme/overrides/popover.js +0 -16
- package/src/@core/theme/overrides/progress.js +0 -38
- package/src/@core/theme/overrides/radio.jsx +0 -80
- package/src/@core/theme/overrides/rating.js +0 -16
- package/src/@core/theme/overrides/rating.jsx +0 -32
- package/src/@core/theme/overrides/select.js +0 -19
- package/src/@core/theme/overrides/select.jsx +0 -52
- package/src/@core/theme/overrides/slider.js +0 -97
- package/src/@core/theme/overrides/snackbar.js +0 -19
- package/src/@core/theme/overrides/switch.js +0 -73
- package/src/@core/theme/overrides/switches.js +0 -25
- package/src/@core/theme/overrides/table-pagination.js +0 -39
- package/src/@core/theme/overrides/table.js +0 -81
- package/src/@core/theme/overrides/tabs.js +0 -30
- package/src/@core/theme/overrides/timeline.js +0 -80
- package/src/@core/theme/overrides/toggle-button.js +0 -33
- package/src/@core/theme/overrides/toggleButton.js +0 -16
- package/src/@core/theme/overrides/tooltip.js +0 -21
- package/src/@core/theme/overrides/typography.js +0 -13
- package/src/@core/theme/palette/index.js +0 -107
- package/src/@core/theme/shadows/index.js +0 -61
- package/src/@core/theme/shadows.js +0 -12
- package/src/@core/theme/spacing/index.js +0 -3
- package/src/@core/theme/spacing.js +0 -5
- package/src/@core/theme/typography/index.js +0 -65
- package/src/@core/theme/typography.js +0 -84
- package/src/@core/utils/create-emotion-cache.js +0 -5
- package/src/@core/utils/hex-to-rgba.js +0 -11
- package/src/@core/utils/serverHelpers.js +0 -45
- package/src/@menu/components/RouterLink.jsx +0 -18
- package/src/@menu/components/horizontal-menu/HorizontalNav.jsx +0 -88
- package/src/@menu/components/horizontal-menu/Menu.jsx +0 -83
- package/src/@menu/components/horizontal-menu/MenuButton.jsx +0 -100
- package/src/@menu/components/horizontal-menu/MenuItem.jsx +0 -183
- package/src/@menu/components/horizontal-menu/SubMenu.jsx +0 -418
- package/src/@menu/components/horizontal-menu/SubMenuContent.jsx +0 -41
- package/src/@menu/components/horizontal-menu/VerticalNavInHorizontal.jsx +0 -20
- package/src/@menu/components/vertical-menu/Menu.jsx +0 -161
- package/src/@menu/components/vertical-menu/MenuButton.jsx +0 -95
- package/src/@menu/components/vertical-menu/MenuItem.jsx +0 -180
- package/src/@menu/components/vertical-menu/MenuSection.jsx +0 -124
- package/src/@menu/components/vertical-menu/NavCollapseIcons.jsx +0 -70
- package/src/@menu/components/vertical-menu/NavHeader.jsx +0 -39
- package/src/@menu/components/vertical-menu/SubMenu.jsx +0 -420
- package/src/@menu/components/vertical-menu/SubMenuContent.jsx +0 -101
- package/src/@menu/components/vertical-menu/VerticalNav.jsx +0 -216
- package/src/@menu/contexts/horizontalNavContext.jsx +0 -29
- package/src/@menu/contexts/verticalNavContext.jsx +0 -65
- package/src/@menu/defaultConfigs.js +0 -12
- package/src/@menu/hooks/useHorizontalMenu.jsx +0 -19
- package/src/@menu/hooks/useHorizontalNav.jsx +0 -19
- package/src/@menu/hooks/useMediaQuery.jsx +0 -29
- package/src/@menu/hooks/useVerticalMenu.jsx +0 -19
- package/src/@menu/hooks/useVerticalNav.jsx +0 -19
- package/src/@menu/horizontal-menu/index.jsx +0 -8
- package/src/@menu/styles/StyledBackdrop.jsx +0 -15
- package/src/@menu/styles/StyledMenuIcon.jsx +0 -12
- package/src/@menu/styles/StyledMenuLabel.jsx +0 -16
- package/src/@menu/styles/StyledMenuPrefix.jsx +0 -10
- package/src/@menu/styles/StyledMenuSectionLabel.jsx +0 -21
- package/src/@menu/styles/StyledMenuSuffix.jsx +0 -10
- package/src/@menu/styles/StyledSubMenuContent.jsx +0 -43
- package/src/@menu/styles/horizontal/StyledHorizontalMenu.jsx +0 -13
- package/src/@menu/styles/horizontal/StyledHorizontalMenuItem.jsx +0 -26
- package/src/@menu/styles/horizontal/StyledHorizontalNav.jsx +0 -11
- package/src/@menu/styles/horizontal/StyledHorizontalNavExpandIcon.jsx +0 -33
- package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContent.jsx +0 -18
- package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContentWrapper.jsx +0 -10
- package/src/@menu/styles/horizontal/horizontalUl.module.css +0 -15
- package/src/@menu/styles/styles.module.css +0 -5
- package/src/@menu/styles/vertical/StyledVerticalMenu.jsx +0 -16
- package/src/@menu/styles/vertical/StyledVerticalMenuItem.jsx +0 -28
- package/src/@menu/styles/vertical/StyledVerticalMenuSection.jsx +0 -23
- package/src/@menu/styles/vertical/StyledVerticalNav.jsx +0 -67
- package/src/@menu/styles/vertical/StyledVerticalNavBgColorContainer.jsx +0 -15
- package/src/@menu/styles/vertical/StyledVerticalNavContainer.jsx +0 -23
- package/src/@menu/styles/vertical/StyledVerticalNavExpandIcon.jsx +0 -25
- package/src/@menu/styles/vertical/verticalNavBgImage.module.css +0 -10
- package/src/@menu/svg/ChevronRight.jsx +0 -9
- package/src/@menu/svg/Close.jsx +0 -12
- package/src/@menu/svg/RadioCircle.jsx +0 -12
- package/src/@menu/svg/RadioCircleMarked.jsx +0 -13
- package/src/@menu/utils/menuClasses.js +0 -44
- package/src/@menu/utils/menuUtils.jsx +0 -145
- package/src/@menu/vertical-menu/index.jsx +0 -11
- package/src/configs/acl.js +0 -115
- package/src/configs/auth.js +0 -5
- package/src/configs/aws-exports.js +0 -30
- package/src/configs/firebase.js +0 -25
- package/src/configs/i18n.js +0 -34
- package/src/configs/primaryColorConfig.js +0 -35
- package/src/configs/themeConfig.js +0 -44
- package/src/layouts/UserLayout.js +0 -94
- package/src/layouts/UserThemeOptions.js +0 -191
- package/src/layouts/components/Direction.js +0 -30
- package/src/layouts/components/HtmlTooltip.js +0 -15
- package/src/layouts/components/Translations.js +0 -11
- package/src/layouts/components/UserDropdown.js +0 -217
- package/src/layouts/components/UserIcon.js +0 -40
- package/src/layouts/components/acl/Can.js +0 -6
- package/src/layouts/components/acl/CanViewNavGroup.js +0 -36
- package/src/layouts/components/acl/CanViewNavLink.js +0 -17
- package/src/layouts/components/acl/CanViewNavSectionTitle.js +0 -17
- package/src/layouts/components/horizontal/AppBarContent.js +0 -39
- package/src/layouts/components/horizontal/ServerSideNavItems.js +0 -44
- package/src/layouts/components/mui/StepperComps.js +0 -55
- package/src/layouts/components/vertical/AppBarContent.js +0 -35
- package/src/layouts/components/vertical/ServerSideNavItems.js +0 -44
- package/src/libs/ApexCharts.jsx +0 -5
- package/src/libs/ReactPlayer.jsx +0 -5
- package/src/libs/Recharts.jsx +0 -4
- package/src/libs/auth.js +0 -124
- package/src/libs/styles/AppFullCalendar.js +0 -505
- package/src/libs/styles/AppKeenSlider.js +0 -116
- package/src/libs/styles/AppReactApexCharts.jsx +0 -110
- package/src/libs/styles/AppReactDatepicker.jsx +0 -470
- package/src/libs/styles/AppReactDropzone.js +0 -76
- package/src/libs/styles/AppReactToastify.jsx +0 -108
- package/src/libs/styles/AppRecharts.js +0 -55
- package/src/libs/styles/inputOtp.module.css +0 -39
- package/src/libs/styles/tiptapEditor.css +0 -72
- package/src/navigation/horizontal/index.js +0 -246
- package/src/navigation/vertical/index.js +0 -253
- package/src/pages/401.js +0 -70
- package/src/pages/404.js +0 -67
- package/src/pages/500.js +0 -68
- package/src/pages/[slug].js +0 -115
- package/src/pages/_document.js +0 -72
- package/src/pages/api/navigation/regenerate-registry.js +0 -116
- package/src/pages/api/navigation/save.js +0 -218
- package/src/pages/authModule/acl/index.js +0 -48
- package/src/pages/authModule/forgot-password/index.js +0 -228
- package/src/pages/authModule/permissions/rolePermissions/[id]/rolePermissionsUser/index.js +0 -392
- package/src/pages/authModule/permissions/rolePermissions/index.js +0 -343
- package/src/pages/authModule/permissions/systemPermissions/index.js +0 -354
- package/src/pages/authModule/privacy/index.js +0 -721
- package/src/pages/authModule/users/index.js +0 -210
- package/src/pages/login/index.js +0 -328
- package/src/pages/mainHome/index.js +0 -181
- package/src/views/builder/inspector/definitions/cell/main.js +0 -4
- package/src/views/builder/inspector/definitions/column/main.js +0 -9
- package/src/views/builder/inspector/definitions/column-group/main.js +0 -18
- package/src/views/builder/inspector/definitions/header-cell/main.js +0 -5
- package/src/views/builder/inspector/definitions/table/main.js +0 -9
- package/src/views/builder/viewer/renderers/CellRenderer.jsx +0 -71
- package/src/views/builder/viewer/renderers/ColumnGroupRenderer.jsx +0 -96
- package/src/views/builder/viewer/renderers/ColumnRenderer.jsx +0 -71
- package/src/views/builder/viewer/renderers/HeaderCellRenderer.jsx +0 -78
- package/src/views/builder/viewer/renderers/TabRenderer.jsx +0 -82
- package/src/views/builder/viewer/renderers/TableRenderer.jsx +0 -92
- package/src/views/pages/auth/FooterIllustrationsV2.js +0 -40
- package/src/views/pages/misc/FooterIllustrations.js +0 -47
- package/src/views/pages/misc/muiTable/CustomPagination.js +0 -34
- package/src/views/pages/users/UserManageDialog.js +0 -283
- package/src/views/pages/users/UserViewPage.js +0 -199
- package/src/views/users/AddUserNameDialog.js +0 -162
- package/src/views/users/ContactManage.js +0 -449
- package/src/views/users/ResetPasswordDialog.js +0 -242
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export const COLOR_SCALE_FIELDS = [
|
|
2
|
+
{
|
|
3
|
+
name: 'data_note', type: 'note', label: 'Data',
|
|
4
|
+
text: 'Positions one or more markers on a color scale bar between min and max.\n\nPrimary marker: set valueKey to a single numeric value.\nAdditional markers: use the Markers list below.',
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
name: 'data_example', type: 'note', label: 'Expected data shape',
|
|
8
|
+
text: '{ "riskScore": 67, "target": 80 }\n→ valueKey: "riskScore"\n→ Marker 2 valueKey: "target"\n\nGradient (scaleMode: gradient):\n Color Schema → Tints of red gives a white→red ramp\n Color Schema → Custom [\"#e8f5e9\", \"#1b5e20\"] gives green-to-dark-green\n\nSteps (scaleMode: steps, or ≥ 2 thresholds):\n Threshold colors override; schema colors fill any zone without a threshold color',
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
{ name: 'valueKey', label: 'Primary Value Key', type: 'expression', placeholder: 'Numeric field or expression' },
|
|
12
|
+
{ name: 'min', label: 'Min', type: 'expression' },
|
|
13
|
+
{ name: 'max', label: 'Max', type: 'expression' },
|
|
14
|
+
{ name: 'label', label: 'Label', type: 'expression' },
|
|
15
|
+
|
|
16
|
+
{ name: 'fmt_note', type: 'note', label: 'Format' },
|
|
17
|
+
{ name: 'format', label: 'Format', type: 'select', options: ['number','currency','percent','compact'] },
|
|
18
|
+
{ name: 'prefix', label: 'Prefix', type: 'expression' },
|
|
19
|
+
{ name: 'suffix', label: 'Suffix', type: 'expression' },
|
|
20
|
+
|
|
21
|
+
{
|
|
22
|
+
name: 'coloring_note', type: 'note', label: 'Track Coloring',
|
|
23
|
+
text: '"gradient" → smooth color ramp using the Color Schema colors as gradient stops.\n"steps" → discrete zone blocks; schema colors fill zones, threshold colors override per-zone.\n\nColor Schema controls the palette for both modes the same way as other KPI components.',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'scaleMode', label: 'Scale Mode', type: 'select',
|
|
27
|
+
options: ['gradient', 'steps'],
|
|
28
|
+
},
|
|
29
|
+
{ name: 'colorSchema', label: 'Color Schema', type: 'color-schema' },
|
|
30
|
+
{ name: 'segments', label: 'Gradient Stops', type: 'expression', placeholder: 'Gradient mode — default: 5' },
|
|
31
|
+
|
|
32
|
+
{
|
|
33
|
+
name: 'thresholds_note', type: 'note', label: 'Thresholds (Steps Mode)',
|
|
34
|
+
text: 'Define zone breakpoints and colors. Each threshold value becomes a zone boundary. Threshold colors take priority over Color Schema in steps mode.',
|
|
35
|
+
},
|
|
36
|
+
{ name: 'thresholds', label: 'Thresholds', type: 'thresholds-editor' },
|
|
37
|
+
|
|
38
|
+
{ name: 'appearance_note', type: 'note', label: 'Appearance' },
|
|
39
|
+
{ name: 'height', label: 'Track Height (px)', type: 'expression' },
|
|
40
|
+
{ name: 'borderRadius', label: 'Border Radius', type: 'expression' },
|
|
41
|
+
{ name: 'showLabels', label: 'Show Min/Max Labels', type: 'boolean' },
|
|
42
|
+
|
|
43
|
+
{ name: 'label_style_note', type: 'note', label: 'Label Style' },
|
|
44
|
+
{ name: 'labelFontSize', label: 'Font Size', type: 'expression' },
|
|
45
|
+
{ name: 'labelFontWeight', label: 'Font Weight', type: 'select', options: ['300','400','500','600','700','800'] },
|
|
46
|
+
{ name: 'labelColor', label: 'Color', type: 'expression', placeholder: 'e.g. text.secondary or #555' },
|
|
47
|
+
|
|
48
|
+
{
|
|
49
|
+
name: 'primary_marker_note', type: 'note', label: 'Primary Marker',
|
|
50
|
+
text: 'The main marker driven by valueKey above.',
|
|
51
|
+
},
|
|
52
|
+
{ name: 'showMarker', label: 'Show Primary Marker', type: 'boolean' },
|
|
53
|
+
{ name: 'markerColor', label: 'Marker Color', type: 'expression', placeholder: 'default: #333' },
|
|
54
|
+
|
|
55
|
+
{
|
|
56
|
+
name: 'multi_markers_note', type: 'note', label: 'Additional Markers',
|
|
57
|
+
text: 'Add extra markers with their own value key, color, shape, and label. Useful for target, average, benchmark alongside the primary value.',
|
|
58
|
+
},
|
|
59
|
+
{ name: 'markers', label: 'Markers', type: 'markers-editor' },
|
|
60
|
+
]
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export const COMPARISON_BARS_FIELDS = [
|
|
2
|
+
{ name: 'data_note', type: 'note', label: 'Data', text: 'Bind dataKey to an array. Each item renders a labeled horizontal bar scaled against the max value in the set.' },
|
|
3
|
+
{
|
|
4
|
+
name: 'data_example', type: 'note', label: 'Expected data shape',
|
|
5
|
+
text: '{ "topProducts": [\n { "label": "Widget A", "value": 4820, "color": "#1976d2" },\n { "label": "Widget B", "value": 3210 },\n { "label": "Widget C", "value": 5600 }\n] }\n→ dataKey: "topProducts"\n labelField: "label" valueField: "value"\n colorField: "color" (optional per-item color)\n\nOverride the scale ceiling:\n maxKey: "totalBudget" (reads data["totalBudget"] as the 100% mark)',
|
|
6
|
+
},
|
|
7
|
+
{ name: 'dataKey', label: 'Data Key', type: 'expression' },
|
|
8
|
+
{ name: 'labelField', label: 'Label Field', type: 'expression', placeholder: 'default: label' },
|
|
9
|
+
{ name: 'valueField', label: 'Value Field', type: 'expression', placeholder: 'default: value' },
|
|
10
|
+
{ name: 'colorField', label: 'Color Field', type: 'expression', placeholder: 'default: color — per-item hex in data' },
|
|
11
|
+
{ name: 'maxKey', label: 'Max Value Key', type: 'expression', placeholder: 'data key whose value = 100 % bar width' },
|
|
12
|
+
|
|
13
|
+
{ name: 'fmt_note', type: 'note', label: 'Format' },
|
|
14
|
+
{ name: 'format', label: 'Format', type: 'select', options: ['number','currency','percent','compact'] },
|
|
15
|
+
{ name: 'prefix', label: 'Prefix', type: 'expression' },
|
|
16
|
+
{ name: 'suffix', label: 'Suffix', type: 'expression' },
|
|
17
|
+
|
|
18
|
+
{ name: 'appearance_note', type: 'note', label: 'Appearance' },
|
|
19
|
+
{
|
|
20
|
+
name: 'color_schema_note', type: 'note', label: 'Bar Colors',
|
|
21
|
+
text: 'Color Schema controls bar colors when the data has no per-item color field and no threshold fires.\nPalette: cycles through the global palette.\nTints: monochromatic shades of one base color.\nData: rely entirely on per-item color field.\nCustom: your own JSON color array.\nDefault Color is the fallback when schema mode is "palette" and you want a single solid color.',
|
|
22
|
+
},
|
|
23
|
+
{ name: 'colorSchema', label: 'Color Schema', type: 'color-schema' },
|
|
24
|
+
{ name: 'color', label: 'Default Color', type: 'expression', placeholder: 'fallback when schema = palette' },
|
|
25
|
+
{ name: 'trackColor', label: 'Track Background', type: 'expression', placeholder: 'default: action.hover' },
|
|
26
|
+
{ name: 'height', label: 'Bar Height (px)', type: 'expression', placeholder: 'default: 8' },
|
|
27
|
+
{ name: 'upperRadius', label: 'Bar Radius (top)', type: 'expression', placeholder: 'default: 4' },
|
|
28
|
+
{ name: 'lowerRadius', label: 'Bar Radius (bottom)', type: 'expression', placeholder: 'default: 0' },
|
|
29
|
+
{ name: 'gap', label: 'Gap Between Bars (px)', type: 'expression', placeholder: 'default: 10' },
|
|
30
|
+
{ name: 'labelWidth', label: 'Label Column Width (px)', type: 'expression', placeholder: 'default: 100' },
|
|
31
|
+
{ name: 'showLabels', label: 'Show Labels', type: 'boolean' },
|
|
32
|
+
{ name: 'showValues', label: 'Show Values', type: 'boolean' },
|
|
33
|
+
{ name: 'sortDesc', label: 'Sort Descending', type: 'boolean' },
|
|
34
|
+
{ name: 'maxItems', label: 'Max Bars', type: 'expression', placeholder: 'limit number of bars shown' },
|
|
35
|
+
|
|
36
|
+
{
|
|
37
|
+
name: 'thresholds_note', type: 'note', label: 'Thresholds',
|
|
38
|
+
text: 'Apply conditional bar color based on each bar\'s value. Overrides Color Schema.',
|
|
39
|
+
},
|
|
40
|
+
{ name: 'thresholds', label: 'Thresholds', type: 'thresholds-editor' },
|
|
41
|
+
]
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export const COUNTDOWN_FIELDS = [
|
|
2
|
+
{ name: 'data_note', type: 'note', label: 'Data', text: 'Bind targetDateKey to a page-data key that holds a date/time value, or enter a fixed value in Static Target Date. All common date representations are accepted.' },
|
|
3
|
+
{
|
|
4
|
+
name: 'data_example', type: 'note', label: 'Accepted date formats',
|
|
5
|
+
text: 'ISO datetime string:\n "2025-12-31T23:59:59"\n "2025-12-31T23:59:59Z"\n\nISO date-only (local midnight):\n "2025-12-31"\n\nEpoch milliseconds (number):\n 1735689599000\n\nEpoch seconds (number < 1e11):\n 1735689599\n\nJS Date object (from expression):\n new Date("2025-12-31")\n new Date(data.ts * 1000)\n\nData binding example:\n{ "dealDeadline": "2025-12-31T23:59:59" }\n→ targetDateKey: "dealDeadline"\n\nExpression example (returns Date directly):\n→ targetDateKey: new Date(data.expiresAt)',
|
|
6
|
+
},
|
|
7
|
+
{ name: 'targetDateKey', label: 'Target Date Key', type: 'expression', placeholder: 'data key or expression returning a date' },
|
|
8
|
+
{ name: 'targetDate', label: 'Static Target Date', type: 'expression', placeholder: 'e.g. 2025-12-31 or 2025-12-31T23:59:59' },
|
|
9
|
+
{ name: 'doneLabel', label: 'Done Label', type: 'expression', placeholder: 'Shown when countdown reaches zero' },
|
|
10
|
+
{ name: 'label', label: 'Label', type: 'expression', placeholder: 'Optional heading above the digits' },
|
|
11
|
+
|
|
12
|
+
{ name: 'segments_note', type: 'note', label: 'Segments' },
|
|
13
|
+
{ name: 'showDays', label: 'Show Days', type: 'boolean' },
|
|
14
|
+
{ name: 'showHours', label: 'Show Hours', type: 'boolean' },
|
|
15
|
+
{ name: 'showMinutes', label: 'Show Minutes', type: 'boolean' },
|
|
16
|
+
{ name: 'showSeconds', label: 'Show Seconds', type: 'boolean' },
|
|
17
|
+
|
|
18
|
+
{ name: 'unit_labels_note', type: 'note', label: 'Unit Label Overrides', text: 'Override the default unit labels shown below each digit group.' },
|
|
19
|
+
{ name: 'labelDays', label: 'Days Label', type: 'expression', placeholder: 'default: days' },
|
|
20
|
+
{ name: 'labelHours', label: 'Hours Label', type: 'expression', placeholder: 'default: hrs' },
|
|
21
|
+
{ name: 'labelMinutes', label: 'Minutes Label', type: 'expression', placeholder: 'default: min' },
|
|
22
|
+
{ name: 'labelSeconds', label: 'Seconds Label', type: 'expression', placeholder: 'default: sec' },
|
|
23
|
+
|
|
24
|
+
{ name: 'layout_note', type: 'note', label: 'Layout' },
|
|
25
|
+
{ name: 'size', label: 'Size', type: 'select', options: ['small', 'medium', 'large'] },
|
|
26
|
+
{ name: 'align', label: 'Align', type: 'select', options: ['left', 'center', 'right'] },
|
|
27
|
+
{ name: 'separator', label: 'Separator', type: 'expression', placeholder: 'default: :' },
|
|
28
|
+
|
|
29
|
+
{ name: 'color_note', type: 'note', label: 'Colors' },
|
|
30
|
+
{ name: 'color', label: 'Digit Color', type: 'expression', placeholder: 'Overridden by thresholds' },
|
|
31
|
+
{ name: 'unitColor', label: 'Unit Label Color', type: 'expression', placeholder: 'default: text.disabled' },
|
|
32
|
+
{ name: 'separatorColor', label: 'Separator Color', type: 'expression', placeholder: 'default: text.disabled' },
|
|
33
|
+
{ name: 'doneLabelColor', label: 'Done Label Color', type: 'expression', placeholder: 'default: success.main' },
|
|
34
|
+
|
|
35
|
+
{ name: 'digit_style_note', type: 'note', label: 'Digit Style' },
|
|
36
|
+
{ name: 'numberFontWeight', label: 'Digit Font Weight', type: 'select', options: ['300','400','500','600','700','800','900'], },
|
|
37
|
+
|
|
38
|
+
{ name: 'label_style_note', type: 'note', label: 'Label Style', text: 'Styles the optional heading label above the digits.' },
|
|
39
|
+
{ name: 'labelFontSize', label: 'Label Font Size', type: 'expression' },
|
|
40
|
+
{ name: 'labelFontWeight', label: 'Label Font Weight', type: 'select', options: ['300','400','500','600','700','800'] },
|
|
41
|
+
{ name: 'labelColor', label: 'Label Color', type: 'expression', placeholder: 'default: text.secondary' },
|
|
42
|
+
|
|
43
|
+
{ name: 'thresholds', label: 'Thresholds (on remaining seconds)', type: 'thresholds-editor' },
|
|
44
|
+
|
|
45
|
+
{ name: 'onDoneCode', label: 'On Done', type: 'code', codeType: 'calculation' },
|
|
46
|
+
]
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export const DONUT_FIELDS = [
|
|
2
|
+
{ name: 'data_note', type: 'note', label: 'Data' },
|
|
3
|
+
{
|
|
4
|
+
name: 'data_example', type: 'note', label: 'Expected data shape',
|
|
5
|
+
text: 'Single series:\n{ "salesByRegion": [\n { "name": "North", "value": 4200, "color": "#1976d2" },\n { "name": "South", "value": 3100, "color": "#e91e63" }\n] }\n→ dataKey: "salesByRegion"\n\nSlice colors are read from each item\'s "color" field automatically.\nUse colorField to point to a differently-named field (e.g. "hex").\nFalls back to the Colors palette when no color is present.\n\nMulti-series (concentric rings):\n{ "thisYear": [{ "name": "Q1", "value": 3200 }, ...],\n "lastYear": [{ "name": "Q1", "value": 2800 }, ...] }\n→ donutType: "multi"\n Ring 1 (inner): field "thisYear"\n Ring 2 (outer): field "lastYear"',
|
|
6
|
+
},
|
|
7
|
+
|
|
8
|
+
{ name: 'type_note', type: 'note', label: 'Type' },
|
|
9
|
+
{ name: 'donutType', label: 'Donut Type', type: 'select', options: ['single', 'multi'] },
|
|
10
|
+
|
|
11
|
+
{ name: 'single_note', type: 'note', label: 'Single Series', text: 'Used when Donut Type is "single".' },
|
|
12
|
+
{ name: 'dataKey', label: 'Data Key', type: 'expression' },
|
|
13
|
+
{ name: 'nameField', label: 'Name Field', type: 'expression', placeholder: 'default: name' },
|
|
14
|
+
{ name: 'valueField', label: 'Value Field', type: 'expression', placeholder: 'default: value' },
|
|
15
|
+
{ name: 'colorField', label: 'Color Field', type: 'expression', placeholder: 'default: color — field in each slice object' },
|
|
16
|
+
{ name: 'centerLabel', label: 'Center Label', type: 'expression' },
|
|
17
|
+
{ name: 'centerKey', label: 'Center Value Key', type: 'expression', placeholder: 'data key whose value shows in the hole' },
|
|
18
|
+
|
|
19
|
+
{ name: 'multi_note', type: 'note', label: 'Multi-Series', text: 'Used when Donut Type is "multi". Each ring is a separate data array. First ring = innermost, last = outermost. Set each ring\'s Data Field to the data key that returns its slice array.' },
|
|
20
|
+
{ name: 'series', label: 'Rings', type: 'rings-editor' },
|
|
21
|
+
|
|
22
|
+
{ name: 'fmt_note', type: 'note', label: 'Format' },
|
|
23
|
+
{ name: 'format', label: 'Format', type: 'select', options: ['number','currency','percent','compact'] },
|
|
24
|
+
{ name: 'prefix', label: 'Prefix', type: 'expression' },
|
|
25
|
+
{ name: 'suffix', label: 'Suffix', type: 'expression' },
|
|
26
|
+
|
|
27
|
+
{ name: 'appearance_note', type: 'note', label: 'Appearance' },
|
|
28
|
+
{
|
|
29
|
+
name: 'color_schema_note', type: 'note', label: 'Slice Colors (single series)',
|
|
30
|
+
text: 'Controls how slices are colored when the data has no "color" field.\nPalette: cycles through the global palette.\nTints: monochromatic shades of one base color.\nData: only per-slice data colors — no fallback.\nCustom: your own JSON color array.',
|
|
31
|
+
},
|
|
32
|
+
{ name: 'colorSchema', label: 'Color Schema', type: 'color-schema' },
|
|
33
|
+
{ name: 'height', label: 'Height (px)', type: 'expression' },
|
|
34
|
+
{ name: 'innerRadius', label: 'Inner Radius %', type: 'expression', placeholder: 'default: 55 — hole size' },
|
|
35
|
+
{ name: 'outerRadius', label: 'Outer Radius %', type: 'expression', placeholder: 'default: 80 — overall size' },
|
|
36
|
+
{
|
|
37
|
+
name: 'padAngle', label: 'Gap Between Slices', type: 'expression',
|
|
38
|
+
placeholder: 'degrees, default: 2 — set 0 for no gap',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'startAngle', label: 'First Slice Position', type: 'select',
|
|
42
|
+
options: ['90', '0', '180', '270'],
|
|
43
|
+
},
|
|
44
|
+
{ name: 'showTooltip', label: 'Show Tooltip', type: 'boolean' },
|
|
45
|
+
{ name: 'showLegend', label: 'Show Legend', type: 'boolean' },
|
|
46
|
+
{ name: 'legendPosition', label: 'Legend Position', type: 'select', options: ['bottom','right','top'] },
|
|
47
|
+
{
|
|
48
|
+
name: 'colors', label: 'Fallback Palette (JSON)', type: 'expression',
|
|
49
|
+
placeholder: '["#1976d2","#e91e63","#4caf50"] — used when slice has no color field',
|
|
50
|
+
},
|
|
51
|
+
]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export const FUNNEL_FIELDS = [
|
|
2
|
+
{ name: 'data_note', type: 'note', label: 'Data', text: 'Bind dataKey to an array of stage objects ordered from widest (top) to narrowest (bottom).' },
|
|
3
|
+
{
|
|
4
|
+
name: 'data_example', type: 'note', label: 'Expected data shape',
|
|
5
|
+
text: '{ "pipeline": [\n { "label": "Leads", "value": 1200 },\n { "label": "Qualified", "value": 640 },\n { "label": "Proposal", "value": 280 },\n { "label": "Closed", "value": 95 }\n] }\n→ dataKey: "pipeline"\n labelField: "label", valueField: "value"\n\nOptional per-item color:\n { "label": "Leads", "value": 1200, "color": "#1976d2" }',
|
|
6
|
+
},
|
|
7
|
+
{ name: 'dataKey', label: 'Data Key', type: 'expression' },
|
|
8
|
+
{ name: 'labelField', label: 'Label Field', type: 'expression', placeholder: 'default: label' },
|
|
9
|
+
{ name: 'valueField', label: 'Value Field', type: 'expression', placeholder: 'default: value' },
|
|
10
|
+
{ name: 'colorField', label: 'Color Field', type: 'expression', placeholder: 'default: color — per-item override' },
|
|
11
|
+
|
|
12
|
+
{ name: 'fmt_note', type: 'note', label: 'Format' },
|
|
13
|
+
{ name: 'format', label: 'Format', type: 'select', options: ['number','currency','percent','compact'] },
|
|
14
|
+
{ name: 'prefix', label: 'Prefix', type: 'expression' },
|
|
15
|
+
{ name: 'suffix', label: 'Suffix', type: 'expression' },
|
|
16
|
+
|
|
17
|
+
{ name: 'appearance_note', type: 'note', label: 'Appearance' },
|
|
18
|
+
{ name: 'colorSchema', label: 'Color Schema', type: 'color-schema' },
|
|
19
|
+
{ name: 'height', label: 'Height (px)', type: 'expression' },
|
|
20
|
+
{ name: 'barRadius', label: 'Bar Radius', type: 'expression' },
|
|
21
|
+
{ name: 'gap', label: 'Gap Between Bars', type: 'expression' },
|
|
22
|
+
{ name: 'showValues', label: 'Show Values', type: 'boolean' },
|
|
23
|
+
{ name: 'showLabels', label: 'Show Labels', type: 'boolean' },
|
|
24
|
+
{ name: 'showPercent', label: 'Show Conversion %', type: 'boolean' },
|
|
25
|
+
]
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export const GAUGE_FIELDS = [
|
|
2
|
+
{ name: 'data_note', type: 'note', label: 'Data', text: 'Reads a numeric value from data[valueKey]. Set min/max to define the scale.' },
|
|
3
|
+
{
|
|
4
|
+
name: 'data_example', type: 'note', label: 'Expected data shape',
|
|
5
|
+
text: '{ "cpuUsage": 72 }\n→ valueKey: "cpuUsage", min: 0, max: 100\n\n{ "temperature": 38.5 }\n→ valueKey: "temperature", min: 0, max: 50\n format: "number", suffix: "°C"',
|
|
6
|
+
},
|
|
7
|
+
{ name: 'valueKey', label: 'Value Key', type: 'expression' },
|
|
8
|
+
{ name: 'min', label: 'Min', type: 'expression' },
|
|
9
|
+
{ name: 'max', label: 'Max', type: 'expression' },
|
|
10
|
+
{ name: 'label', label: 'Label', type: 'expression' },
|
|
11
|
+
{ name: 'sublabel', label: 'Sub-label', type: 'expression' },
|
|
12
|
+
|
|
13
|
+
{ name: 'fmt_note', type: 'note', label: 'Format' },
|
|
14
|
+
{ name: 'format', label: 'Format', type: 'select', options: ['number','currency','percent','compact','bytes','duration'] },
|
|
15
|
+
{ name: 'decimals', label: 'Decimals', type: 'expression' },
|
|
16
|
+
{ name: 'prefix', label: 'Prefix', type: 'expression' },
|
|
17
|
+
{ name: 'suffix', label: 'Suffix', type: 'expression' },
|
|
18
|
+
|
|
19
|
+
{ name: 'appearance_note', type: 'note', label: 'Appearance' },
|
|
20
|
+
{ name: 'size', label: 'Size (px)', type: 'expression' },
|
|
21
|
+
{ name: 'strokeWidth', label: 'Track Width', type: 'expression' },
|
|
22
|
+
{ name: 'color', label: 'Arc Color', type: 'expression', placeholder: 'Overridden by thresholds' },
|
|
23
|
+
{ name: 'trackColor', label: 'Track Color', type: 'expression' },
|
|
24
|
+
{ name: 'showValue', label: 'Show Value', type: 'boolean' },
|
|
25
|
+
{ name: 'showMinMax', label: 'Show Min/Max', type: 'boolean' },
|
|
26
|
+
{ name: 'needleMode', label: 'Needle Mode', type: 'boolean' },
|
|
27
|
+
|
|
28
|
+
{ name: 'label_style_note', type: 'note', label: 'Label Style', text: 'Label renders inside the SVG arc. Font size is relative to gauge size when left blank.' },
|
|
29
|
+
{ name: 'labelFontSize', label: 'Label Font Size (px)', type: 'expression', placeholder: 'Default: proportional to size' },
|
|
30
|
+
{ name: 'labelFontWeight', label: 'Label Font Weight', type: 'select', options: ['normal','300','400','500','600','700','800'] },
|
|
31
|
+
{ name: 'labelColor', label: 'Label Color', type: 'expression', placeholder: 'e.g. #888 or #333' },
|
|
32
|
+
|
|
33
|
+
{ name: 'sublabel_style_note', type: 'note', label: 'Sub-label Style', text: 'Sub-label renders below the SVG.' },
|
|
34
|
+
{ name: 'sublabelFontSize', label: 'Sub-label Font Size', type: 'expression' },
|
|
35
|
+
{ name: 'sublabelFontWeight', label: 'Sub-label Font Weight', type: 'select', options: ['300','400','500','600','700','800'] },
|
|
36
|
+
{ name: 'sublabelColor', label: 'Sub-label Color', type: 'expression', placeholder: 'e.g. text.secondary or #999' },
|
|
37
|
+
|
|
38
|
+
{ name: 'thresholds', label: 'Thresholds', type: 'thresholds-editor' },
|
|
39
|
+
]
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export const HEATMAP_GRID_FIELDS = [
|
|
2
|
+
{
|
|
3
|
+
name: 'data_note', type: 'note', label: 'Data',
|
|
4
|
+
text: 'Three layout modes:\n\n① Flat wrap — flat array + cols to wrap into rows.\n② Row/col fields — each item has rowField + colField; renderer groups them into a matrix.\n③ Single-row strip — no cols/row fields.',
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
name: 'ex_calendar', type: 'note', label: 'Example — activity calendar (flat wrap)',
|
|
8
|
+
text: '[\n { "label": "Mon W1", "value": 8 },\n { "label": "Tue W1", "value": 31 },\n ... (28 items total)\n]\n→ dataKey: "activity" cols: 7\n colLabels: ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]\n rowLabels: ["W1","W2","W3","W4"]\n showRowLabels: true showColLabels: true colLabelPosition: bottom\n colorMode: gradient colorSchema: tints of green\n showLegend: true legendPosition: top',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: 'ex_matrix', type: 'note', label: 'Example — matrix with row × col fields',
|
|
12
|
+
text: '[\n { "row": "January", "col": "London", "value": 42 },\n { "row": "January", "col": "Paris", "value": 38 },\n ...\n]\n→ dataKey: "salesMatrix"\n rowField: "row" colField: "col"\n showRowLabels: true rowLabelWidth: 80\n showColLabels: true colLabelPosition: bottom\n colorMode: gradient fillWidth: true\n showLegend: true legendPosition: top\n gap: 1 cellHeight: 36',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'ex_rag', type: 'note', label: 'Example — RAG status grid (threshold mode)',
|
|
16
|
+
text: '[\n { "label": "Service A", "value": 97 },\n { "label": "Service B", "value": 43 },\n { "label": "Service C", "value": 12 }\n]\n→ colorMode: threshold\n Thresholds: < 50 → error, < 80 → warning, ≥ 80 → success\n cellShape: circle cellSize: 20 fillWidth: false\n gap: 4 showLegend: true showTooltip: true',
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
{ name: 'dataKey', label: 'Data Key', type: 'expression' },
|
|
20
|
+
{ name: 'valueField', label: 'Value Field', type: 'expression', placeholder: 'default: value' },
|
|
21
|
+
{ name: 'labelField', label: 'Label Field', type: 'expression', placeholder: 'default: label (shown in tooltip)' },
|
|
22
|
+
|
|
23
|
+
{ name: 'layout_note', type: 'note', label: 'Grid Layout' },
|
|
24
|
+
{ name: 'cols', label: 'Columns (flat-wrap)', type: 'expression', placeholder: 'e.g. 7 → 7 cells per row' },
|
|
25
|
+
{ name: 'rowField', label: 'Row Field', type: 'expression', placeholder: 'default: row' },
|
|
26
|
+
{ name: 'colField', label: 'Col Field', type: 'expression', placeholder: 'default: col' },
|
|
27
|
+
{
|
|
28
|
+
name: 'fillWidth', label: 'Fill Width', type: 'boolean',
|
|
29
|
+
},
|
|
30
|
+
{ name: 'cellHeight', label: 'Cell Height (px)', type: 'expression', placeholder: 'default: 32' },
|
|
31
|
+
{ name: 'cellSize', label: 'Cell Size (px)', type: 'expression', placeholder: 'Used when Fill Width is off (default: 24)' },
|
|
32
|
+
{ name: 'gap', label: 'Gap / Separator (px)', type: 'expression', placeholder: 'default: 1 (shows as grid lines)' },
|
|
33
|
+
{ name: 'separatorColor', label: 'Separator Color', type: 'expression', placeholder: 'default: divider (MUI color or hex)' },
|
|
34
|
+
|
|
35
|
+
{ name: 'cell_note', type: 'note', label: 'Cell Appearance' },
|
|
36
|
+
{ name: 'cellShape', label: 'Cell Shape', type: 'select', options: ['square', 'rounded', 'circle'] },
|
|
37
|
+
{ name: 'borderRadius', label: 'Border Radius', type: 'expression', placeholder: 'rounded shape only' },
|
|
38
|
+
|
|
39
|
+
{ name: 'row_label_note', type: 'note', label: 'Row Labels (Left)' },
|
|
40
|
+
{ name: 'showRowLabels', label: 'Show Row Labels', type: 'boolean' },
|
|
41
|
+
{
|
|
42
|
+
name: 'rowLabels', label: 'Row Labels (static)', type: 'expression',
|
|
43
|
+
placeholder: '["Jan","Feb","Mar",...] — overrides data-driven',
|
|
44
|
+
},
|
|
45
|
+
{ name: 'rowLabelField', label: 'Row Label Field', type: 'expression', placeholder: 'field on item (defaults to rowField)' },
|
|
46
|
+
{ name: 'rowLabelWidth', label: 'Row Label Width (px)', type: 'expression', placeholder: 'default: 70' },
|
|
47
|
+
{ name: 'rowLabelAlign', label: 'Row Label Align', type: 'select', options: ['right', 'left', 'center'] },
|
|
48
|
+
|
|
49
|
+
{ name: 'col_label_note', type: 'note', label: 'Col Labels' },
|
|
50
|
+
{ name: 'showColLabels', label: 'Show Col Labels', type: 'boolean' },
|
|
51
|
+
{ name: 'colLabelPosition', label: 'Col Label Position', type: 'select', options: ['bottom', 'top'] },
|
|
52
|
+
{
|
|
53
|
+
name: 'colLabels', label: 'Col Labels (static)', type: 'expression',
|
|
54
|
+
placeholder: '["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]',
|
|
55
|
+
},
|
|
56
|
+
{ name: 'colLabelField', label: 'Col Label Field', type: 'expression', placeholder: 'field on item (defaults to colField)' },
|
|
57
|
+
|
|
58
|
+
{ name: 'axis_style_note', type: 'note', label: 'Axis Label Style' },
|
|
59
|
+
{ name: 'axisLabelFontSize', label: 'Font Size', type: 'expression', placeholder: 'default: 11' },
|
|
60
|
+
{ name: 'axisLabelColor', label: 'Color', type: 'expression', placeholder: 'default: text.secondary' },
|
|
61
|
+
|
|
62
|
+
{ name: 'fmt_note', type: 'note', label: 'Format' },
|
|
63
|
+
{ name: 'format', label: 'Format', type: 'select', options: ['number','currency','percent','compact'] },
|
|
64
|
+
{ name: 'prefix', label: 'Prefix', type: 'expression' },
|
|
65
|
+
{ name: 'suffix', label: 'Suffix', type: 'expression' },
|
|
66
|
+
|
|
67
|
+
{
|
|
68
|
+
name: 'color_note', type: 'note', label: 'Coloring',
|
|
69
|
+
text: '"gradient" → value-mapped interpolation through Color Schema stops.\n"threshold" → zone colors; schema fills zones without an explicit threshold color.\n"schema" → each cell colored by palette index (categorical / position-based).',
|
|
70
|
+
},
|
|
71
|
+
{ name: 'colorMode', label: 'Color Mode', type: 'select', options: ['gradient', 'threshold', 'schema'] },
|
|
72
|
+
{ name: 'colorSchema', label: 'Color Schema', type: 'color-schema' },
|
|
73
|
+
{ name: 'emptyColor', label: 'Empty Cell Color', type: 'expression', placeholder: 'default: #f5f5f5' },
|
|
74
|
+
{ name: 'minValue', label: 'Min Override', type: 'expression', placeholder: 'Auto-detected from data' },
|
|
75
|
+
{ name: 'maxValue', label: 'Max Override', type: 'expression', placeholder: 'Auto-detected from data' },
|
|
76
|
+
{ name: 'thresholds', label: 'Thresholds', type: 'thresholds-editor' },
|
|
77
|
+
|
|
78
|
+
{ name: 'display_note', type: 'note', label: 'Display' },
|
|
79
|
+
{ name: 'showValues', label: 'Show Values', type: 'boolean' },
|
|
80
|
+
{ name: 'showTooltip', label: 'Show Tooltip', type: 'boolean' },
|
|
81
|
+
{
|
|
82
|
+
name: 'legend_note', type: 'note', label: 'Legend',
|
|
83
|
+
text: 'Gradient mode → color scale bar with min/max values.\nThreshold mode → color swatches with labels.',
|
|
84
|
+
},
|
|
85
|
+
{ name: 'showLegend', label: 'Show Legend', type: 'boolean' },
|
|
86
|
+
{ name: 'legendPosition', label: 'Legend Position', type: 'select', options: ['top', 'bottom'] },
|
|
87
|
+
|
|
88
|
+
{
|
|
89
|
+
name: 'actions_note', type: 'note', label: 'Actions',
|
|
90
|
+
text: 'Fires when a user clicks a cell. Available in the action:\n clickedItem — the full data item\n clickedValue — numeric cell value\n clickedLabel — label field value\n clickedRow — row label (e.g. "Mon")\n clickedCol — col label (e.g. "12:00")\n clickedRowIndex — row position\n clickedColIndex — col position',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'onCellClick', type: 'kpi-action', label: 'On Cell Click',
|
|
94
|
+
context: ['clickedItem', 'clickedValue', 'clickedLabel', 'clickedRow', 'clickedCol', 'clickedRowIndex', 'clickedColIndex'],
|
|
95
|
+
},
|
|
96
|
+
]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const ICON_BOX_FIELDS = [
|
|
2
|
+
{ name: 'data_note', type: 'note', label: 'Data', text: 'Optional: bind valueKey to drive threshold-based color changes.' },
|
|
3
|
+
{
|
|
4
|
+
name: 'data_example', type: 'note', label: 'Expected data shape',
|
|
5
|
+
text: '{ "errorCount": 5 }\n→ valueKey: "errorCount"\n threshold "> 0" → color: error\n (icon stays fixed; only bg/color changes)',
|
|
6
|
+
},
|
|
7
|
+
{ name: 'valueKey', label: 'Value Key (for threshold)', type: 'expression' },
|
|
8
|
+
|
|
9
|
+
{ name: 'appearance_note', type: 'note', label: 'Appearance' },
|
|
10
|
+
{ name: 'icon', label: 'Icon Name', type: 'expression', placeholder: 'e.g. StarOutlined, TrendingUpOutlined' },
|
|
11
|
+
{ name: 'size', label: 'Box Size (px)', type: 'expression' },
|
|
12
|
+
{ name: 'iconSize', label: 'Icon Size (px)', type: 'expression' },
|
|
13
|
+
{ name: 'borderRadius', label: 'Border Radius', type: 'expression' },
|
|
14
|
+
{ name: 'iconColor', label: 'Icon Color', type: 'expression', placeholder: 'Override threshold color' },
|
|
15
|
+
{ name: 'bgColor', label: 'Background', type: 'expression', placeholder: 'Override threshold bg' },
|
|
16
|
+
{ name: 'shadow', label: 'Glow Shadow', type: 'boolean' },
|
|
17
|
+
{ name: 'align', label: 'Align', type: 'select', options: ['left','center','right'] },
|
|
18
|
+
|
|
19
|
+
{ name: 'thresholds', label: 'Thresholds', type: 'thresholds-editor' },
|
|
20
|
+
]
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const METRIC_FIELDS = [
|
|
2
|
+
{ name: 'data_note', type: 'note', label: 'Data', text: 'Value Key accepts a data key string OR any expression that returns a number directly.' },
|
|
3
|
+
{
|
|
4
|
+
name: 'data_example', type: 'note', label: 'Value Key — two modes',
|
|
5
|
+
text: 'Key lookup (string):\n "revenue" → uses data["revenue"]\n\nDirect expression (returns a value):\n data.price * data.qty\n data.revenue - data.cost\n 42\n data.a + data.b\n\nBoth modes work — if the expression\nreturns a non-string, it is used as-is.',
|
|
6
|
+
},
|
|
7
|
+
{ name: 'valueKey', label: 'Value Key', type: 'expression' },
|
|
8
|
+
{ name: 'label', label: 'Label', type: 'expression' },
|
|
9
|
+
{ name: 'sublabel', label: 'Sub-label', type: 'expression' },
|
|
10
|
+
|
|
11
|
+
{ name: 'fmt_note', type: 'note', label: 'Format', text: 'format: number | currency | percent | compact | bytes | duration' },
|
|
12
|
+
{ name: 'format', label: 'Format', type: 'select', options: ['number','currency','percent','compact','bytes','duration'] },
|
|
13
|
+
{ name: 'decimals', label: 'Decimals', type: 'expression' },
|
|
14
|
+
{ name: 'prefix', label: 'Prefix', type: 'expression' },
|
|
15
|
+
{ name: 'suffix', label: 'Suffix', type: 'expression' },
|
|
16
|
+
{ name: 'currency', label: 'Currency Code', type: 'expression' },
|
|
17
|
+
{ name: 'asRatio', label: 'Percent is 0–1 ratio', type: 'boolean' },
|
|
18
|
+
|
|
19
|
+
{ name: 'appearance_note', type: 'note', label: 'Value Appearance' },
|
|
20
|
+
{ name: 'fontSize', label: 'Value Font Size', type: 'expression' },
|
|
21
|
+
{ name: 'fontWeight', label: 'Value Font Weight', type: 'select', options: ['400','500','600','700','800','900'] },
|
|
22
|
+
{ name: 'align', label: 'Align', type: 'select', options: ['left','center','right'] },
|
|
23
|
+
{ name: 'labelPosition', label: 'Label Position', type: 'select', options: ['above','below'] },
|
|
24
|
+
|
|
25
|
+
{ name: 'label_style_note', type: 'note', label: 'Label Style' },
|
|
26
|
+
{ name: 'labelFontSize', label: 'Label Font Size', type: 'expression' },
|
|
27
|
+
{ name: 'labelFontWeight', label: 'Label Font Weight', type: 'select', options: ['300','400','500','600','700','800'] },
|
|
28
|
+
{ name: 'labelColor', label: 'Label Color', type: 'expression', placeholder: 'e.g. text.secondary or #555' },
|
|
29
|
+
|
|
30
|
+
{ name: 'sublabel_style_note', type: 'note', label: 'Sub-label Style' },
|
|
31
|
+
{ name: 'sublabelFontSize', label: 'Sub-label Font Size', type: 'expression' },
|
|
32
|
+
{ name: 'sublabelFontWeight', label: 'Sub-label Font Weight', type: 'select', options: ['300','400','500','600','700','800'] },
|
|
33
|
+
{ name: 'sublabelColor', label: 'Sub-label Color', type: 'expression', placeholder: 'e.g. text.disabled or #999' },
|
|
34
|
+
|
|
35
|
+
{ name: 'thresholds', label: 'Thresholds', type: 'thresholds-editor' },
|
|
36
|
+
|
|
37
|
+
{
|
|
38
|
+
name: 'actions_note', type: 'note', label: 'Actions',
|
|
39
|
+
text: 'Fires when a user clicks the metric. Available in the action:\n clickedValue — the current displayed value',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'onClick', type: 'kpi-action', label: 'On Click',
|
|
43
|
+
context: ['clickedValue'],
|
|
44
|
+
},
|
|
45
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const RATING_FIELDS = [
|
|
2
|
+
{ name: 'data_note', type: 'note', label: 'Data', text: 'Reads and writes the rating value from data[valueKey]. Set readonly to display only.' },
|
|
3
|
+
{
|
|
4
|
+
name: 'data_example', type: 'note', label: 'Expected data shape',
|
|
5
|
+
text: '{ "productRating": 4 }\n→ valueKey: "productRating", max: 5\n\nInteractive mode: clicking a star writes\nthe new value back to data[valueKey]\nand fires onChangeCode.\n\nReadonly mode: just displays the value.',
|
|
6
|
+
},
|
|
7
|
+
{ name: 'valueKey', label: 'Value Key', type: 'expression' },
|
|
8
|
+
|
|
9
|
+
{ name: 'appearance_note', type: 'note', label: 'Appearance' },
|
|
10
|
+
{ name: 'max', label: 'Max Rating', type: 'expression' },
|
|
11
|
+
{ name: 'icon', label: 'Icon', type: 'select', options: ['star','heart','circle','square'] },
|
|
12
|
+
{ name: 'color', label: 'Active Color', type: 'expression' },
|
|
13
|
+
{ name: 'emptyColor', label: 'Empty Color', type: 'expression' },
|
|
14
|
+
{ name: 'size', label: 'Icon Size (px)', type: 'expression' },
|
|
15
|
+
{ name: 'gap', label: 'Gap (px)', type: 'expression' },
|
|
16
|
+
{ name: 'align', label: 'Align', type: 'select', options: ['left','center','right'] },
|
|
17
|
+
{ name: 'readonly', label: 'Read Only', type: 'boolean' },
|
|
18
|
+
|
|
19
|
+
{
|
|
20
|
+
name: 'actions_note', type: 'note', label: 'Actions',
|
|
21
|
+
text: 'Fires when a user selects a rating. The new value is automatically written to data[valueKey] before the action runs. Available in the action:\n newValue — the new star rating (number)\n clickedValue — alias for newValue',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'onChange', type: 'kpi-action', label: 'On Rating Change',
|
|
25
|
+
context: ['newValue', 'clickedValue'],
|
|
26
|
+
},
|
|
27
|
+
]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const STATUS_DOT_FIELDS = [
|
|
2
|
+
{ name: 'data_note', type: 'note', label: 'Data', text: 'Reads value from data[valueKey]. Use thresholds to map values to dot colors.' },
|
|
3
|
+
{
|
|
4
|
+
name: 'data_example', type: 'note', label: 'Expected data shape',
|
|
5
|
+
text: '{ "serverStatus": "online" }\n{ "alertLevel": 2 }\n→ valueKey: "serverStatus"\n threshold "== online" → color: success',
|
|
6
|
+
},
|
|
7
|
+
{ name: 'valueKey', label: 'Value Key', type: 'expression' },
|
|
8
|
+
{ name: 'label', label: 'Static Label', type: 'expression' },
|
|
9
|
+
|
|
10
|
+
{ name: 'appearance_note', type: 'note', label: 'Appearance' },
|
|
11
|
+
{ name: 'size', label: 'Dot Size (px)', type: 'expression' },
|
|
12
|
+
{ name: 'pulse', label: 'Pulse Animation', type: 'boolean' },
|
|
13
|
+
{ name: 'showLabel', label: 'Show Label', type: 'boolean' },
|
|
14
|
+
{ name: 'labelPosition', label: 'Label Position', type: 'select', options: ['right','left','above','below'] },
|
|
15
|
+
{ name: 'align', label: 'Align', type: 'select', options: ['left','center','right'] },
|
|
16
|
+
|
|
17
|
+
{ name: 'thresholds', label: 'Thresholds', type: 'thresholds-editor' },
|
|
18
|
+
]
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export const STEP_STAGE_FIELDS = [
|
|
2
|
+
{
|
|
3
|
+
name: 'data_note', type: 'note', label: 'Data',
|
|
4
|
+
text: 'Bind dataKey to an array of step objects.\n\nTwo ways to mark progress:\n① Status field — set a "status" string on each step (see keywords below).\n② Active key — point activeKey to a data value (index or id); steps before it are "done", matching step is "active", rest are "pending".',
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
name: 'data_example', type: 'note', label: 'Expected data shape',
|
|
8
|
+
text: '[\n { "id": 1, "label": "Placed", "status": "done", "description": "Jan 10, 2025" },\n { "id": 2, "label": "Processing", "status": "done", "description": "Jan 11, 2025" },\n { "id": 3, "label": "Shipped", "status": "active", "description": "Est. Jan 15" },\n { "id": 4, "label": "Out for delivery", "status": "pending" },\n { "id": 5, "label": "Delivered", "status": "pending" }\n]\n\nBuilt-in status keywords:\n done / success / completed / approved / closed / resolved / delivered / shipped / paid\n active / current / in-progress / running / processing / open\n warning / at-risk / delayed / on-hold\n error / failed / rejected / cancelled / blocked\n pending / todo / future / upcoming / planned / queued',
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
{ name: 'dataKey', label: 'Steps Data Key', type: 'expression' },
|
|
12
|
+
{ name: 'activeKey', label: 'Active Value Key', type: 'expression', placeholder: 'data key holding current step index or id' },
|
|
13
|
+
{ name: 'labelField', label: 'Label Field', type: 'expression', placeholder: 'default: label' },
|
|
14
|
+
{ name: 'statusField', label: 'Status Field', type: 'expression', placeholder: 'default: status' },
|
|
15
|
+
{ name: 'descField', label: 'Description Field', type: 'expression', placeholder: 'optional — shown below label' },
|
|
16
|
+
{ name: 'iconField', label: 'Icon Field', type: 'expression', placeholder: 'optional — emoji/char inside dot' },
|
|
17
|
+
{ name: 'idField', label: 'ID Field', type: 'expression', placeholder: 'default: id (used with activeKey)' },
|
|
18
|
+
{ name: 'maxItems', label: 'Max Items', type: 'expression' },
|
|
19
|
+
|
|
20
|
+
{ name: 'layout_note', type: 'note', label: 'Layout' },
|
|
21
|
+
{ name: 'orientation', label: 'Orientation', type: 'select', options: ['horizontal', 'vertical'] },
|
|
22
|
+
{ name: 'labelPosition', label: 'Label Position', type: 'select', options: ['below', 'above'] },
|
|
23
|
+
|
|
24
|
+
{ name: 'dot_note', type: 'note', label: 'Dot',
|
|
25
|
+
text: '"auto" — done steps show ✓, active shows a pulse ring, errors show ✕, pending renders as an outlined ring.\n"filled" — always solid circle.\n"ring" — always outlined ring, no glyphs.' },
|
|
26
|
+
{ name: 'dotStyle', label: 'Dot Style', type: 'select', options: ['auto', 'filled', 'ring'] },
|
|
27
|
+
{ name: 'size', label: 'Dot Size (px)', type: 'expression', placeholder: 'default: 28' },
|
|
28
|
+
{ name: 'showNumbers', label: 'Show Numbers', type: 'boolean' },
|
|
29
|
+
|
|
30
|
+
{ name: 'label_note', type: 'note', label: 'Labels' },
|
|
31
|
+
{ name: 'showLabels', label: 'Show Labels', type: 'boolean' },
|
|
32
|
+
{ name: 'showDesc', label: 'Show Description', type: 'boolean' },
|
|
33
|
+
{ name: 'fontSize', label: 'Font Size', type: 'expression', placeholder: 'default: 12' },
|
|
34
|
+
|
|
35
|
+
{ name: 'line_note', type: 'note', label: 'Connector Line' },
|
|
36
|
+
{ name: 'lineColor', label: 'Line Color', type: 'expression', placeholder: 'default: #e0e0e0' },
|
|
37
|
+
{ name: 'lineStyle', label: 'Line Style', type: 'select', options: ['solid', 'dashed'] },
|
|
38
|
+
{ name: 'filledLine', label: 'Filled Line (done→done)', type: 'boolean' },
|
|
39
|
+
|
|
40
|
+
{
|
|
41
|
+
name: 'color_note', type: 'note', label: 'Coloring',
|
|
42
|
+
text: 'Priority: colorMap (explicit status→color) → Color Schema → thresholds → built-in status keywords → active/done/pending colors.',
|
|
43
|
+
},
|
|
44
|
+
{ name: 'colorSchema', label: 'Color Schema', type: 'color-schema' },
|
|
45
|
+
{ name: 'activeColor', label: 'Active Color', type: 'expression', placeholder: 'default: #1976d2' },
|
|
46
|
+
{ name: 'doneColor', label: 'Done Color', type: 'expression', placeholder: 'default: #4caf50' },
|
|
47
|
+
{ name: 'pendingColor', label: 'Pending Color', type: 'expression', placeholder: 'default: #e0e0e0' },
|
|
48
|
+
{ name: 'warningColor', label: 'Warning Color', type: 'expression', placeholder: 'default: #ff9800' },
|
|
49
|
+
{ name: 'errorColor', label: 'Error Color', type: 'expression', placeholder: 'default: #f44336' },
|
|
50
|
+
{ name: 'thresholds', label: 'Thresholds', type: 'thresholds-editor' },
|
|
51
|
+
{
|
|
52
|
+
name: 'colormap_note', type: 'note', label: 'Color Map',
|
|
53
|
+
text: 'Map statusField string values to colors or MUI palette keys. Takes highest priority.',
|
|
54
|
+
},
|
|
55
|
+
{ name: 'colorMap', label: 'Color Map (JSON)', type: 'expression', placeholder: '{"done":"#4caf50","blocked":"#f44336"}' },
|
|
56
|
+
|
|
57
|
+
{
|
|
58
|
+
name: 'actions_note', type: 'note', label: 'Actions',
|
|
59
|
+
text: 'Fires when a user clicks a step. Available in the action:\n clickedItem — the full step object\n clickedIndex — position in the array (0-based)\n clickedId — the step\'s id field value\n clickedLabel — the step\'s label\n clickedStatus — the step\'s status field value\n\nUse setData to advance the current step:\n setData(prev => ({ ...prev, currentStep: clickedId }))',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'onStepClick', type: 'kpi-action', label: 'On Step Click',
|
|
63
|
+
context: ['clickedItem', 'clickedIndex', 'clickedId', 'clickedLabel', 'clickedStatus'],
|
|
64
|
+
},
|
|
65
|
+
]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const TAG_LIST_FIELDS = [
|
|
2
|
+
{ name: 'data_note', type: 'note', label: 'Data', text: 'Bind dataKey to an array of strings or objects.' },
|
|
3
|
+
{
|
|
4
|
+
name: 'data_example', type: 'note', label: 'Expected data shape',
|
|
5
|
+
text: 'Plain strings:\n{ "skills": ["React", "Node.js", "GraphQL"] }\n→ dataKey: "skills"\n\nObjects:\n{ "tags": [\n { "label": "Urgent", "color": "#e53935" },\n { "label": "Bug", "color": "#fb8c00" }\n] }\n→ dataKey: "tags", labelField: "label", colorField: "color"\n\nColor priority: colorField → colorMap → threshold → Color Schema',
|
|
6
|
+
},
|
|
7
|
+
{ name: 'dataKey', label: 'Data Key', type: 'expression' },
|
|
8
|
+
{ name: 'labelField', label: 'Label Field', type: 'expression', placeholder: 'default: label' },
|
|
9
|
+
{ name: 'colorField', label: 'Color Field', type: 'expression', placeholder: 'per-item color override' },
|
|
10
|
+
|
|
11
|
+
{ name: 'appearance_note', type: 'note', label: 'Appearance' },
|
|
12
|
+
{ name: 'colorSchema', label: 'Color Schema', type: 'color-schema' },
|
|
13
|
+
{ name: 'variant', label: 'Variant', type: 'select', options: ['soft','outlined','filled'] },
|
|
14
|
+
{ name: 'size', label: 'Size', type: 'select', options: ['small','medium','large'] },
|
|
15
|
+
{ name: 'maxTags', label: 'Max Tags', type: 'expression' },
|
|
16
|
+
{ name: 'gap', label: 'Gap (px)', type: 'expression' },
|
|
17
|
+
{ name: 'wrap', label: 'Wrap Tags', type: 'boolean' },
|
|
18
|
+
{ name: 'align', label: 'Align', type: 'select', options: ['left','center','right'] },
|
|
19
|
+
|
|
20
|
+
{ name: 'colormap_note', type: 'note', label: 'Color Map', text: 'Map label values to MUI palette colors. Takes priority over Color Schema.' },
|
|
21
|
+
{ name: 'colorMap', label: 'Color Map (JSON)', type: 'expression', placeholder: '{"Urgent":"error","Done":"success"}' },
|
|
22
|
+
{ name: 'thresholds', label: 'Thresholds (color by value)', type: 'thresholds-editor' },
|
|
23
|
+
|
|
24
|
+
{
|
|
25
|
+
name: 'actions_note', type: 'note', label: 'Actions',
|
|
26
|
+
text: 'Fires when a user clicks a tag chip. Available in the action:\n clickedItem — the raw item (string or object)\n clickedTag — alias for clickedItem\n clickedLabel — the tag\'s display text\n clickedValue — the tag\'s value field (if objects)\n clickedIndex — position in the array',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'onTagClick', type: 'kpi-action', label: 'On Tag Click',
|
|
30
|
+
context: ['clickedItem', 'clickedTag', 'clickedLabel', 'clickedValue', 'clickedIndex'],
|
|
31
|
+
},
|
|
32
|
+
]
|