@solidstarters/solid-core-ui 1.1.211 → 1.1.212

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 (373) hide show
  1. package/dist/components/Svg/DevDocs.tsx +9 -0
  2. package/dist/components/Svg/DocsSvg.tsx +9 -0
  3. package/dist/components/Svg/ExcelSvg.tsx +15 -0
  4. package/dist/components/Svg/FieldSvg.tsx +9 -0
  5. package/dist/components/Svg/FileSvg.tsx +18 -0
  6. package/dist/components/Svg/HomePageModuleSvg.tsx +179 -0
  7. package/dist/components/Svg/ModelSvg.tsx +9 -0
  8. package/dist/components/Svg/ModuleSvg.tsx +9 -0
  9. package/dist/components/Svg/PDFSvg.tsx +15 -0
  10. package/dist/components/Svg/RightArrowSvg.tsx +9 -0
  11. package/dist/components/Svg/SettingsSvg.tsx +9 -0
  12. package/dist/components/auth/AuthLayout.tsx +223 -0
  13. package/dist/components/auth/ForgotPasswordThankYou.tsx +33 -0
  14. package/dist/components/auth/GoogleAuthChecking.tsx +63 -0
  15. package/dist/components/auth/SolidChangeForcePassword.tsx +222 -0
  16. package/dist/components/auth/SolidForgotPassword.tsx +127 -0
  17. package/dist/components/auth/SolidInitialLoginOtp.tsx +271 -0
  18. package/dist/components/auth/SolidInitiateRegisterOtp.tsx +218 -0
  19. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  20. package/dist/components/auth/SolidLogin.js +14 -8
  21. package/dist/components/auth/SolidLogin.js.map +1 -1
  22. package/dist/components/auth/SolidLogin.tsx +428 -0
  23. package/dist/components/auth/SolidOTPVerify.tsx +133 -0
  24. package/dist/components/auth/SolidRegister.tsx +454 -0
  25. package/dist/components/auth/SolidResetPassword.tsx +194 -0
  26. package/dist/components/common/AuthBanner.tsx +41 -0
  27. package/dist/components/common/AutoCompleteField.tsx +79 -0
  28. package/dist/components/common/BackButton.tsx +72 -0
  29. package/dist/components/common/CancelButton.tsx +61 -0
  30. package/dist/components/common/CodeEditor.tsx +38 -0
  31. package/dist/components/common/CreateButton.tsx +17 -0
  32. package/dist/components/common/DownloadProgressToast.tsx +55 -0
  33. package/dist/components/common/DropzonePlaceholder.tsx +31 -0
  34. package/dist/components/common/DropzoneUpload.tsx +11 -0
  35. package/dist/components/common/FileReaderExt.tsx +20 -0
  36. package/dist/components/common/GeneralSettings.tsx +1225 -0
  37. package/dist/components/common/HeaderDynamicTitles.tsx +13 -0
  38. package/dist/components/common/MarkdownViewer.tsx +84 -0
  39. package/dist/components/common/MultipleSelectAutoCompleteField.tsx +64 -0
  40. package/dist/components/common/NotFound.tsx +22 -0
  41. package/dist/components/common/SingleSelectAutoCompleteField.tsx +73 -0
  42. package/dist/components/common/SocialMediaLogin.tsx +53 -0
  43. package/dist/components/common/SolidAdmin.tsx +6 -0
  44. package/dist/components/common/SolidBreadcrumb.tsx +129 -0
  45. package/dist/components/common/SolidExport.tsx +563 -0
  46. package/dist/components/common/SolidExportStepper.tsx +135 -0
  47. package/dist/components/common/SolidFieldTooltip.tsx +23 -0
  48. package/dist/components/common/SolidFormHeader.tsx +25 -0
  49. package/dist/components/common/SolidFormStepper.tsx +350 -0
  50. package/dist/components/common/SolidModuleHome.tsx +128 -0
  51. package/dist/components/common/SolidPopupContainer.tsx +37 -0
  52. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.tsx +45 -0
  53. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.tsx +45 -0
  54. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.tsx +20 -0
  55. package/dist/components/common/SolidSettings/SettingsImageRemoveButton.tsx +15 -0
  56. package/dist/components/common/SolidSettings/SolidUploadedImage.tsx +16 -0
  57. package/dist/components/common/SolidThemeLink.tsx +6 -0
  58. package/dist/components/common/SolidThemeProvider.tsx +44 -0
  59. package/dist/components/common/StepperArrows/ActiveArrowStep.tsx +18 -0
  60. package/dist/components/common/StepperArrows/ActiveBeforeStepArrow.tsx +18 -0
  61. package/dist/components/common/StepperArrows/InactiveStepArrow.tsx +19 -0
  62. package/dist/components/common/error.tsx +30 -0
  63. package/dist/components/common/useHandleFormCustomButtonClick.ts +40 -0
  64. package/dist/components/common/useHandleListCustomButtonClick.ts +42 -0
  65. package/dist/components/core/chatter/SolidChatter.tsx +248 -0
  66. package/dist/components/core/chatter/SolidChatterAuditMessage.tsx +35 -0
  67. package/dist/components/core/chatter/SolidChatterCustomMessage.tsx +46 -0
  68. package/dist/components/core/chatter/SolidChatterDateDivider.tsx +16 -0
  69. package/dist/components/core/chatter/SolidChatterHeader.tsx +218 -0
  70. package/dist/components/core/chatter/SolidChatterMessageBox.tsx +163 -0
  71. package/dist/components/core/chatter/SolidMessageComposer.tsx +146 -0
  72. package/dist/components/core/common/AvatarWidget.tsx +55 -0
  73. package/dist/components/core/common/DateFieldViewComponent.tsx +36 -0
  74. package/dist/components/core/common/FilterComponent.tsx +458 -0
  75. package/dist/components/core/common/LoadDynamicJsxComponent.tsx +70 -0
  76. package/dist/components/core/common/PDFViewer.tsx +117 -0
  77. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx +89 -0
  78. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.tsx +188 -0
  79. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +139 -0
  80. package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.tsx +311 -0
  81. package/dist/components/core/common/SolidCreateButton.tsx +48 -0
  82. package/dist/components/core/common/SolidGenericImport/DocumentSvg.tsx +15 -0
  83. package/dist/components/core/common/SolidGenericImport/SolidGenericImport.tsx +64 -0
  84. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +125 -0
  85. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.tsx +122 -0
  86. package/dist/components/core/common/SolidGenericImport/SolidImportStepper.tsx +217 -0
  87. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +205 -0
  88. package/dist/components/core/common/SolidGenericImport/SolidImportTransactionStatus.tsx +158 -0
  89. package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.tsx +29 -0
  90. package/dist/components/core/common/SolidGlobalSearchElement.tsx +1470 -0
  91. package/dist/components/core/common/SolidLayoutViews.tsx +87 -0
  92. package/dist/components/core/common/SolidListViewOptions.tsx +31 -0
  93. package/dist/components/core/common/SolidLoaders/SolidCircularLoader.tsx +7 -0
  94. package/dist/components/core/common/SolidPasswordHelperText.tsx +34 -0
  95. package/dist/components/core/common/SolidSaveCustomFilterForm.tsx +75 -0
  96. package/dist/components/core/common/SolidSearchBox.tsx +17 -0
  97. package/dist/components/core/common/SolidViewLayoutManager.ts +421 -0
  98. package/dist/components/core/common/SolidXAiIframe.tsx +77 -0
  99. package/dist/components/core/dashboard/SolidDashboard.tsx +332 -0
  100. package/dist/components/core/dashboard/SolidDashboardBody.tsx +117 -0
  101. package/dist/components/core/dashboard/SolidDashboardFilterRequired.tsx +28 -0
  102. package/dist/components/core/dashboard/SolidDashboardHeader.tsx +10 -0
  103. package/dist/components/core/dashboard/SolidDashboardLoading.tsx +55 -0
  104. package/dist/components/core/dashboard/SolidDashboardNotAvailable.tsx +32 -0
  105. package/dist/components/core/dashboard/SolidDashboardRenderError.tsx +29 -0
  106. package/dist/components/core/dashboard/SolidDashboardVariable.tsx +256 -0
  107. package/dist/components/core/dashboard/SolidQuestionRenderer.tsx +78 -0
  108. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.tsx +18 -0
  109. package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.tsx +54 -0
  110. package/dist/components/core/dashboard/chart-renderers/init-chartjs.ts +25 -0
  111. package/dist/components/core/dashboard/dashboard-utils.ts +39 -0
  112. package/dist/components/core/extension/solid-core/CustomIcon/StatusIcon.tsx +17 -0
  113. package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.tsx +36 -0
  114. package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeChangeHandler.ts +18 -0
  115. package/dist/components/core/extension/solid-core/emailTemplate/emailFormTypeLoad.ts +18 -0
  116. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +114 -0
  117. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +213 -0
  118. package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.tsx +138 -0
  119. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +209 -0
  120. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +131 -0
  121. package/dist/components/core/field/FieldListViewData.tsx +313 -0
  122. package/dist/components/core/filter/SolidBooleanFilterElement.tsx +30 -0
  123. package/dist/components/core/filter/SolidFilterFields.tsx +131 -0
  124. package/dist/components/core/filter/SolidManyToManyFilterElement.tsx +64 -0
  125. package/dist/components/core/filter/SolidManyToOneFilterElement.tsx +61 -0
  126. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.tsx +50 -0
  127. package/dist/components/core/filter/SolidSelectionStaticFilterElement.tsx +32 -0
  128. package/dist/components/core/filter/SolidVarInputsFilterElement.tsx +209 -0
  129. package/dist/components/core/filter/fields/SolidBigintField.tsx +9 -0
  130. package/dist/components/core/filter/fields/SolidBooleanField.tsx +68 -0
  131. package/dist/components/core/filter/fields/SolidComputedField.tsx +23 -0
  132. package/dist/components/core/filter/fields/SolidDateField.tsx +63 -0
  133. package/dist/components/core/filter/fields/SolidDatetimeField.tsx +54 -0
  134. package/dist/components/core/filter/fields/SolidDecimalField.tsx +9 -0
  135. package/dist/components/core/filter/fields/SolidExternalIdField.tsx +52 -0
  136. package/dist/components/core/filter/fields/SolidFloatField.tsx +9 -0
  137. package/dist/components/core/filter/fields/SolidIdField.tsx +46 -0
  138. package/dist/components/core/filter/fields/SolidIntField.tsx +61 -0
  139. package/dist/components/core/filter/fields/SolidLongTextField.tsx +9 -0
  140. package/dist/components/core/filter/fields/SolidMediaMultipleField.tsx +60 -0
  141. package/dist/components/core/filter/fields/SolidMediaSingleField.tsx +62 -0
  142. package/dist/components/core/filter/fields/SolidRelationField.tsx +17 -0
  143. package/dist/components/core/filter/fields/SolidRichTextField.tsx +9 -0
  144. package/dist/components/core/filter/fields/SolidSelectionDynamicField.tsx +52 -0
  145. package/dist/components/core/filter/fields/SolidSelectionStaticField.tsx +54 -0
  146. package/dist/components/core/filter/fields/SolidShortTextField.tsx +60 -0
  147. package/dist/components/core/filter/fields/SolidTimeField.tsx +48 -0
  148. package/dist/components/core/filter/fields/SolidUuidField.tsx +51 -0
  149. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +62 -0
  150. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +84 -0
  151. package/dist/components/core/form/SolidFormActionHeader.tsx +497 -0
  152. package/dist/components/core/form/SolidFormFieldRender.tsx +53 -0
  153. package/dist/components/core/form/SolidFormFieldRenderExtension.tsx +26 -0
  154. package/dist/components/core/form/SolidFormFooter.tsx +162 -0
  155. package/dist/components/core/form/SolidFormLayouts.tsx +104 -0
  156. package/dist/components/core/form/SolidFormUserViewLayout.tsx +84 -0
  157. package/dist/components/core/form/SolidFormView.tsx +1856 -0
  158. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.tsx +52 -0
  159. package/dist/components/core/form/SolidFormViewNormalHeaderButton.tsx +52 -0
  160. package/dist/components/core/form/SolidFormViewShimmerLoading.tsx +109 -0
  161. package/dist/components/core/form/fields/ISolidField.tsx +71 -0
  162. package/dist/components/core/form/fields/SolidBooleanField.tsx +434 -0
  163. package/dist/components/core/form/fields/SolidDateField.tsx +247 -0
  164. package/dist/components/core/form/fields/SolidDateTimeField.tsx +229 -0
  165. package/dist/components/core/form/fields/SolidDecimalField.tsx +171 -0
  166. package/dist/components/core/form/fields/SolidEmailField.tsx +176 -0
  167. package/dist/components/core/form/fields/SolidIntegerField.tsx +282 -0
  168. package/dist/components/core/form/fields/SolidJsonField.tsx +185 -0
  169. package/dist/components/core/form/fields/SolidLongTextField.tsx +618 -0
  170. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +663 -0
  171. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +547 -0
  172. package/dist/components/core/form/fields/SolidPasswordField.tsx +390 -0
  173. package/dist/components/core/form/fields/SolidRelationField.tsx +56 -0
  174. package/dist/components/core/form/fields/SolidRichTextField.tsx +188 -0
  175. package/dist/components/core/form/fields/SolidSelectionDynamicField.tsx +340 -0
  176. package/dist/components/core/form/fields/SolidSelectionStaticField.tsx +462 -0
  177. package/dist/components/core/form/fields/SolidShortTextField.tsx +399 -0
  178. package/dist/components/core/form/fields/SolidTimeField.tsx +245 -0
  179. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +453 -0
  180. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +1036 -0
  181. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +627 -0
  182. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.tsx +38 -0
  183. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +64 -0
  184. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.tsx +135 -0
  185. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.tsx +144 -0
  186. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +265 -0
  187. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.tsx +32 -0
  188. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.tsx +50 -0
  189. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx +222 -0
  190. package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.tsx +70 -0
  191. package/dist/components/core/form/widgets/CustomHtml.tsx +20 -0
  192. package/dist/components/core/kanban/KanbanBoard.tsx +150 -0
  193. package/dist/components/core/kanban/KanbanCard.tsx +279 -0
  194. package/dist/components/core/kanban/KanbanColumn.tsx +139 -0
  195. package/dist/components/core/kanban/KanbanUserViewLayout.tsx +84 -0
  196. package/dist/components/core/kanban/SolidKanbanView.tsx +894 -0
  197. package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +154 -0
  198. package/dist/components/core/kanban/SolidKanbanViewFields.tsx +164 -0
  199. package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +59 -0
  200. package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.tsx +50 -0
  201. package/dist/components/core/kanban/SolidSelectionStaticFilterElement.tsx +32 -0
  202. package/dist/components/core/kanban/SolidVarInputsFilterElement.tsx +184 -0
  203. package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.tsx +9 -0
  204. package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.tsx +16 -0
  205. package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.tsx +23 -0
  206. package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.tsx +14 -0
  207. package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.tsx +13 -0
  208. package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.tsx +9 -0
  209. package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.tsx +12 -0
  210. package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.tsx +9 -0
  211. package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.tsx +14 -0
  212. package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.tsx +20 -0
  213. package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.tsx +9 -0
  214. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +140 -0
  215. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +164 -0
  216. package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.tsx +13 -0
  217. package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.tsx +9 -0
  218. package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.tsx +14 -0
  219. package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.tsx +14 -0
  220. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +121 -0
  221. package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.tsx +12 -0
  222. package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.tsx +13 -0
  223. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +16 -0
  224. package/dist/components/core/list/ListViewRowActionPopup.tsx +41 -0
  225. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +242 -0
  226. package/dist/components/core/list/SolidEmptyListViewPlaceholder.tsx +111 -0
  227. package/dist/components/core/list/SolidListView.tsx +2007 -0
  228. package/dist/components/core/list/SolidListViewColumn.tsx +165 -0
  229. package/dist/components/core/list/SolidListViewConfigure.tsx +339 -0
  230. package/dist/components/core/list/SolidListViewHeaderButton.tsx +31 -0
  231. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +30 -0
  232. package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +41 -0
  233. package/dist/components/core/list/SolidListViewShimmerLoading.tsx +78 -0
  234. package/dist/components/core/list/SolidListingHeader.tsx +42 -0
  235. package/dist/components/core/list/SolidManyToOneFilterElement.tsx +60 -0
  236. package/dist/components/core/list/SolidSelectionDynamicFilterElement.tsx +50 -0
  237. package/dist/components/core/list/SolidSelectionStaticFilterElement.tsx +32 -0
  238. package/dist/components/core/list/SolidTableRowCell.tsx +35 -0
  239. package/dist/components/core/list/SolidVarInputsFilterElement.tsx +184 -0
  240. package/dist/components/core/list/columns/SolidBigintColumn.tsx +9 -0
  241. package/dist/components/core/list/columns/SolidBooleanColumn.tsx +90 -0
  242. package/dist/components/core/list/columns/SolidComputedColumn.tsx +27 -0
  243. package/dist/components/core/list/columns/SolidDateColumn.tsx +90 -0
  244. package/dist/components/core/list/columns/SolidDatetimeColumn.tsx +79 -0
  245. package/dist/components/core/list/columns/SolidDecimalColumn.tsx +9 -0
  246. package/dist/components/core/list/columns/SolidExternalIdColumn.tsx +80 -0
  247. package/dist/components/core/list/columns/SolidFloatColumn.tsx +9 -0
  248. package/dist/components/core/list/columns/SolidIdColumn.tsx +79 -0
  249. package/dist/components/core/list/columns/SolidIntColumn.tsx +87 -0
  250. package/dist/components/core/list/columns/SolidLongTextColumn.tsx +9 -0
  251. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +301 -0
  252. package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +170 -0
  253. package/dist/components/core/list/columns/SolidRelationColumn.tsx +21 -0
  254. package/dist/components/core/list/columns/SolidRichTextColumn.tsx +9 -0
  255. package/dist/components/core/list/columns/SolidSelectionDynamicColumn.tsx +80 -0
  256. package/dist/components/core/list/columns/SolidSelectionStaticColumn.tsx +81 -0
  257. package/dist/components/core/list/columns/SolidShortTextColumn.tsx +160 -0
  258. package/dist/components/core/list/columns/SolidTimeColumn.tsx +78 -0
  259. package/dist/components/core/list/columns/SolidUuidColumn.tsx +79 -0
  260. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.tsx +106 -0
  261. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +117 -0
  262. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.tsx +110 -0
  263. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.tsx +30 -0
  264. package/dist/components/core/list/widgets/SolidManyToOneRelationAvatarListWidget.tsx +30 -0
  265. package/dist/components/core/list/widgets/SolidShortTextAvatarWidget.tsx +70 -0
  266. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.tsx +21 -0
  267. package/dist/components/core/locales/SolidChatterLocaleTabView.tsx +91 -0
  268. package/dist/components/core/locales/SolidLocale.tsx +127 -0
  269. package/dist/components/core/model/CreateModel.tsx +495 -0
  270. package/dist/components/core/model/FieldMetaData.tsx +263 -0
  271. package/dist/components/core/model/FieldMetaDataForm.tsx +3509 -0
  272. package/dist/components/core/model/FieldSelector.tsx +62 -0
  273. package/dist/components/core/model/ModelListViewData.tsx +384 -0
  274. package/dist/components/core/model/ModelMetaData.tsx +921 -0
  275. package/dist/components/core/module/CreateModule.tsx +617 -0
  276. package/dist/components/core/module/ModuleListViewData.tsx +431 -0
  277. package/dist/components/core/solid-ai/SolidAiMainWrapper.tsx +8 -0
  278. package/dist/components/core/solid-ai/SolidXAIIcon.tsx +37 -0
  279. package/dist/components/core/users/CreateUser.tsx +467 -0
  280. package/dist/components/core/users/CreateUserRole.tsx +212 -0
  281. package/dist/components/core/users/UserListView.tsx +376 -0
  282. package/dist/components/layout/AdminLayout.tsx +57 -0
  283. package/dist/components/layout/AdminSidebar.tsx +65 -0
  284. package/dist/components/layout/AppConfig.tsx +104 -0
  285. package/dist/components/layout/AppSidebar.tsx +232 -0
  286. package/dist/components/layout/ButtonLoader.tsx +7 -0
  287. package/dist/components/layout/CustomPagination.tsx +55 -0
  288. package/dist/components/layout/DashboardHeader.tsx +89 -0
  289. package/dist/components/layout/FilterMenu.tsx +122 -0
  290. package/dist/components/layout/Footer.tsx +13 -0
  291. package/dist/components/layout/GlobalSearch.tsx +37 -0
  292. package/dist/components/layout/Header.tsx +8 -0
  293. package/dist/components/layout/Layout.tsx +205 -0
  294. package/dist/components/layout/ListingHeader.tsx +204 -0
  295. package/dist/components/layout/Loader.tsx +16 -0
  296. package/dist/components/layout/UserSidebar.tsx +53 -0
  297. package/dist/components/layout/context/layoutcontext.tsx +52 -0
  298. package/dist/components/layout/navbar-one.tsx +258 -0
  299. package/dist/components/layout/navbar-two-menu.tsx +72 -0
  300. package/dist/components/layout/navbar-two.tsx +37 -0
  301. package/dist/components/layout/user-profile-menu.tsx +213 -0
  302. package/dist/components/layout/user-profile.tsx +7 -0
  303. package/dist/components/modelsComponents/filterIcon.tsx +9 -0
  304. package/dist/constants/error-messages.ts +238 -0
  305. package/dist/declarations.d.ts +22 -0
  306. package/dist/helpers/AppTitle.tsx +12 -0
  307. package/dist/helpers/ToastContainer.tsx +94 -0
  308. package/dist/helpers/autoCompleteVirtualScroll.ts +41 -0
  309. package/dist/helpers/countries.tsx +260 -0
  310. package/dist/helpers/downloadFileWithProgress.ts +91 -0
  311. package/dist/helpers/downloadMediaFile.tsx +21 -0
  312. package/dist/helpers/getAcceptedFileTypes.tsx +22 -0
  313. package/dist/helpers/getRandomColors.tsx +68 -0
  314. package/dist/helpers/helpers.ts +61 -0
  315. package/dist/helpers/hydrateRelationRules.ts +120 -0
  316. package/dist/helpers/permissions.ts +7 -0
  317. package/dist/helpers/registry.ts +337 -0
  318. package/dist/helpers/resendOtpHelper.tsx +5 -0
  319. package/dist/helpers/revalidate.ts +7 -0
  320. package/dist/helpers/rolesHelper.ts +17 -0
  321. package/dist/helpers/solidIcons.tsx +1831 -0
  322. package/dist/helpers/updatePasswordField.ts +41 -0
  323. package/dist/index.ts +421 -0
  324. package/dist/nextAuth/authProviders.d.ts.map +1 -1
  325. package/dist/nextAuth/authProviders.js +6 -5
  326. package/dist/nextAuth/authProviders.js.map +1 -1
  327. package/dist/nextAuth/authProviders.tsx +232 -0
  328. package/dist/nextAuth/handleLogout.tsx +39 -0
  329. package/dist/nextAuth/refreshAccessToken.tsx +28 -0
  330. package/dist/redux/api/aiInteractionApi.ts +59 -0
  331. package/dist/redux/api/authApi.ts +131 -0
  332. package/dist/redux/api/dashboardApi.ts +56 -0
  333. package/dist/redux/api/dashboardQuestionApi.ts +17 -0
  334. package/dist/redux/api/exportTemplateApi.tsx +59 -0
  335. package/dist/redux/api/fetchBaseQuery.tsx +118 -0
  336. package/dist/redux/api/fieldApi.ts +86 -0
  337. package/dist/redux/api/importTransactionApi.tsx +69 -0
  338. package/dist/redux/api/mediaApi.ts +55 -0
  339. package/dist/redux/api/mediaStorageProviderApi.ts +55 -0
  340. package/dist/redux/api/modelApi.ts +80 -0
  341. package/dist/redux/api/moduleApi.ts +72 -0
  342. package/dist/redux/api/permissionApi.ts +32 -0
  343. package/dist/redux/api/pincodeApi.tsx +56 -0
  344. package/dist/redux/api/roleApi.ts +58 -0
  345. package/dist/redux/api/solidActionApi.ts +66 -0
  346. package/dist/redux/api/solidChatterMessageApi.ts +25 -0
  347. package/dist/redux/api/solidEntityApi.tsx +164 -0
  348. package/dist/redux/api/solidMenuApi.ts +71 -0
  349. package/dist/redux/api/solidServiceApi.ts +31 -0
  350. package/dist/redux/api/solidSettingsApi.tsx +83 -0
  351. package/dist/redux/api/solidViewApi.ts +73 -0
  352. package/dist/redux/api/stateApi.tsx +56 -0
  353. package/dist/redux/api/testApi.ts +21 -0
  354. package/dist/redux/api/userApi.ts +135 -0
  355. package/dist/redux/features/authSlice.ts +19 -0
  356. package/dist/redux/features/dataViewSlice.ts +26 -0
  357. package/dist/redux/features/navbarSlice.ts +21 -0
  358. package/dist/redux/features/popupSlice.ts +37 -0
  359. package/dist/redux/features/settingsSlice.ts +60 -0
  360. package/dist/redux/features/themeSlice.ts +17 -0
  361. package/dist/redux/features/userSlice.ts +28 -0
  362. package/dist/redux/hooks/useSolidPopup.ts +20 -0
  363. package/dist/redux/store/defaultStoreConfig.ts +62 -0
  364. package/dist/styles.ts +4 -0
  365. package/dist/types/handlebars.d.ts +4 -0
  366. package/dist/types/index.d.ts +76 -0
  367. package/dist/types/layout.d.ts +94 -0
  368. package/dist/types/next-auth.d.ts +0 -0
  369. package/dist/types/next.d.ts +46 -0
  370. package/dist/types/solid-core.d.ts +320 -0
  371. package/package.json +1 -1
  372. package/src/components/auth/SolidLogin.tsx +26 -13
  373. package/src/nextAuth/authProviders.tsx +9 -5
@@ -0,0 +1,77 @@
1
+ import React, { useEffect, useRef, useState } from "react";
2
+
3
+ interface SolidXAiIframeProps {
4
+ url: string;
5
+ }
6
+
7
+ export const SolidXAiIframe: React.FC<SolidXAiIframeProps> = ({ url }) => {
8
+ const [reachable, setReachable] = useState<boolean | null>(null);
9
+
10
+
11
+ useEffect(() => {
12
+ const handler = (event:any) => {
13
+ if (event.data?.action === "REFRESH_PARENT") {
14
+ window.location.reload();
15
+ }
16
+ };
17
+
18
+ window.addEventListener("message", handler);
19
+ return () => window.removeEventListener("message", handler);
20
+ }, []);
21
+
22
+
23
+
24
+ useEffect(() => {
25
+ const checkServer = async () => {
26
+ try {
27
+ // Try to fetch the page HEAD (fast, no content)
28
+ const res = await fetch(url, { method: "HEAD" });
29
+
30
+ if (res.ok) {
31
+ setReachable(true);
32
+ } else {
33
+ setReachable(false);
34
+ }
35
+ } catch (err) {
36
+ setReachable(false);
37
+ }
38
+ };
39
+
40
+ checkServer();
41
+ }, [url]);
42
+
43
+ // Loading state
44
+ if (reachable === null) {
45
+ return (
46
+ <div className="flex items-center justify-center h-full text-gray-600">
47
+ Checking SolidX AI server...
48
+ </div>
49
+ );
50
+ }
51
+
52
+ // Error state
53
+ if (reachable === false) {
54
+ return (
55
+ <div className="flex items-center justify-center align-items-center h-full text-center p-4 overflow-x-auto ">
56
+ <h3>Mcp Server not reachable. <br></br>
57
+ <span className="opacity-60 mt-2">
58
+ <strong>{url}</strong>
59
+ </span>
60
+ </h3>
61
+ </div>
62
+ );
63
+ }
64
+ // SUCCESS → load iframe
65
+ return (
66
+ <iframe
67
+ src={url}
68
+ style={{
69
+ width: "100%",
70
+ height: "100%",
71
+ border: "none",
72
+ }}
73
+ allow="clipboard-write; clipboard-read"
74
+ title="SolidX AI JSON Viewer"
75
+ />
76
+ );
77
+ };
@@ -0,0 +1,332 @@
1
+ "use client";
2
+ import { DashboardResponse, useGetDashboardQuery } from '../../../redux/api/dashboardApi';
3
+ import { SqlExpression } from '../../../types/solid-core';
4
+ import { Button } from 'primereact/button';
5
+ import { Tooltip } from "primereact/tooltip";
6
+ import qs from 'qs';
7
+ import { Dispatch, SetStateAction, useEffect, useState } from 'react';
8
+ import { SolidXAIIcon } from '../solid-ai/SolidXAIIcon';
9
+ import styles from './SolidDashboard.module.css';
10
+ import SolidDashboardBody from './SolidDashboardBody';
11
+ import SolidDashboardVariable from './SolidDashboardVariable';
12
+ import { SolidAiMainWrapper } from '../solid-ai/SolidAiMainWrapper';
13
+ import { SolidDashboardFilterRequired } from './SolidDashboardFilterRequired';
14
+ import { SolidDashboardLoading } from './SolidDashboardLoading';
15
+ import { SolidDashboardRenderError } from './SolidDashboardRenderError';
16
+ import { useDispatch, useSelector } from "react-redux";
17
+ import { showNavbar, toggleNavbar } from "../../../redux/features/navbarSlice";
18
+ import SolidDashboardNotAvailable from './SolidDashboardNotAvailable';
19
+ import { useLazyGetMcpUrlQuery, useLazyGetSolidSettingsQuery } from '../../../redux/api/solidSettingsApi';
20
+
21
+ export enum DashboardVariableType {
22
+ DATE = 'date',
23
+ SELECTION_STATIC = 'selectionStatic',
24
+ SELECTION_DYNAMIC = 'selectionDynamic',
25
+ }
26
+
27
+ enum SOURCE_TYPE {
28
+ SQL = 'sql',
29
+ PROVIDER = 'provider',
30
+ }
31
+
32
+ export interface DashboardVariableRecord {
33
+ id: number;
34
+ variableName: string;
35
+ variableType: DashboardVariableType;
36
+ selectionStaticValues?: string[];
37
+ selectionDynamicSourceType?: SOURCE_TYPE;
38
+ selectionDynamicProviderName?: string;
39
+ selectionDynamicSQL?: string;
40
+ isMultiSelect?: boolean;
41
+ defaultValue?: string;
42
+ defaultOperator?: string;
43
+ }
44
+
45
+ function handleDashboardData(
46
+ data: DashboardResponse,
47
+ setDashboardVariables: Dispatch<SetStateAction<DashboardVariableRecord[]>>,
48
+ setQuestions: Dispatch<SetStateAction<any[]>>,
49
+ ) {
50
+ const { records, meta } = data;
51
+ if (records && records.length > 0) {
52
+ // Set the layout options for the dashboard body
53
+ const dashboardData = records[0]; // Assuming we want the first dashboard
54
+
55
+ // Set the dashboard variables
56
+ setDashboardVariables(dashboardData.dashboardVariables || []);
57
+
58
+ // Set the dashboard questions
59
+ setQuestions(dashboardData.questions)
60
+
61
+ }
62
+ }
63
+
64
+ function getQueryParams(moduleName: string, dashboardId?: number, dashboardName?: string) {
65
+ const filters: any = {
66
+ module: {
67
+ name: {
68
+ $eq: moduleName
69
+ }
70
+ }
71
+ };
72
+
73
+ if (dashboardId !== undefined) {
74
+ filters.id = { $eq: dashboardId };
75
+ } else if (dashboardName !== undefined) {
76
+ filters.name = { $eq: dashboardName };
77
+ }
78
+
79
+ const query = {
80
+ filters,
81
+ populate: ['dashboardVariables', 'questions']
82
+ };
83
+ const urlQuery = qs.stringify(query, {
84
+ encodeValuesOnly: true,
85
+ });
86
+ return urlQuery;
87
+ }
88
+
89
+ // Render the dashboard body only if:
90
+ // 1. There are dashboard questions
91
+ // AND
92
+ // (
93
+ // 1. There are dashboard variables and all dashboard variable filter rules have been applied i.e (all dashboard variables have been selected)
94
+ //. OR
95
+ // 2. There are no dashboard variables
96
+ // )
97
+ //
98
+ function isRenderDashboardBody(questions: any[], dashboardVariables: DashboardVariableRecord[], filters: SqlExpression[]) {
99
+ if (questions.length === 0) {
100
+ return false;
101
+ }
102
+
103
+ if (dashboardVariables.length === 0) {
104
+ return true;
105
+ }
106
+
107
+ // Check if all dashboard variables have corresponding filters applied
108
+ const allVariablesFiltered = dashboardVariables.every(variable =>
109
+ filters.some(filter => filter.variableName === variable.variableName)
110
+ );
111
+
112
+ return allVariablesFiltered;
113
+ }
114
+
115
+ type SolidDashboardViewProps = {
116
+ moduleName: string;
117
+ dashboardId?: number;
118
+ dashboardName?: string;
119
+ };
120
+
121
+ const SolidDashboard = (params: SolidDashboardViewProps) => {
122
+ const { data, isLoading, error } = useGetDashboardQuery(getQueryParams(params.moduleName, params.dashboardId, params.dashboardName)) // FIXME : error handling should be done properly
123
+ // Define a state called layoutOption and pass it after destructing the widgetOptions and dashboardOptions from layoutOption
124
+ // TODO [HP]: Shouldn't the type of this state variable be something different? Why are we muddling this with layout but calling it body props?
125
+ // TODO [HP]: Body props should be clearly made up of Gridstack layout options, the questions that make up the body & the filter[] which is an array of SqlExpressions
126
+ // TODO [HP]: This is fully CONFUSED
127
+ // const [layoutOption, setLayoutOption] = useState<SolidDashboardBodyProps>({
128
+ // filters: [],
129
+ // questions: [],
130
+ // });
131
+
132
+ // TODO [HP]: replace dashboardVariableFilterRules with filters everywhere...
133
+ // const [dashboardVariableFilterRules, setDashboardVariableFilterRules] = useState<ISolidDashboardVariableFilterRule[]>([]);
134
+ const dispatch = useDispatch();
135
+ const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);
136
+ const [filters, setFilters] = useState<SqlExpression[]>([]);
137
+ const [isOpenSolidXAiPanel, setIsOpenSolidXAiPanel] = useState(false);
138
+ const [chatterWidth, setChatterWidth] = useState(380);
139
+ const [isResizing, setIsResizing] = useState(false);
140
+ const [questions, setQuestions] = useState<any[]>([]);
141
+ const [dashboardVariables, setDashboardVariables] = useState<DashboardVariableRecord[]>([]);
142
+
143
+
144
+ useEffect(() => {
145
+ // Invoke the dashboard api to fetch the dashboard data
146
+ // console.log('Dashboard Data testing:', isLoading, data, error);
147
+ if (!isLoading && data) {
148
+ // Assuming data contains the layout options
149
+ handleDashboardData(data, setDashboardVariables, setQuestions);
150
+ }
151
+ }, [isLoading, data]);
152
+
153
+ useEffect(() => {
154
+ const storedOpen = localStorage.getItem('d_solidxai_open');
155
+ const storedWidth = localStorage.getItem('d_solidxai_width');
156
+
157
+ if (storedOpen !== null) {
158
+ setIsOpenSolidXAiPanel(storedOpen === 'true');
159
+ }
160
+
161
+ if (storedWidth !== null) {
162
+ const width = parseInt(storedWidth, 10);
163
+ if (!isNaN(width)) {
164
+ setChatterWidth(width);
165
+ }
166
+ }
167
+ }, []);
168
+
169
+
170
+ useEffect(() => {
171
+ if (isResizing) {
172
+ const handleMouseMove = (e: MouseEvent) => {
173
+ const newWidth = window.innerWidth - e.clientX;
174
+ const clampedWidth = Math.max(280, Math.min(newWidth, 700));
175
+ setChatterWidth(clampedWidth);
176
+ localStorage.setItem('d_solidxai_width', clampedWidth.toString());
177
+ };
178
+
179
+ const handleMouseUp = () => {
180
+ setIsResizing(false);
181
+ };
182
+
183
+ window.addEventListener('mousemove', handleMouseMove);
184
+ window.addEventListener('mouseup', handleMouseUp);
185
+
186
+ return () => {
187
+ window.removeEventListener('mousemove', handleMouseMove);
188
+ window.removeEventListener('mouseup', handleMouseUp);
189
+ };
190
+ }
191
+ }, [isResizing]);
192
+
193
+
194
+ const handleOpen = () => {
195
+ setIsOpenSolidXAiPanel(true);
196
+ localStorage.setItem('d_solidxai_open', 'true');
197
+ };
198
+
199
+ const handleClose = () => {
200
+ setIsOpenSolidXAiPanel(false);
201
+ localStorage.setItem('d_solidxai_open', 'false');
202
+ };
203
+
204
+ const toggleBothSidebars = () => {
205
+ if (visibleNavbar) {
206
+ dispatch(toggleNavbar()); // close both
207
+ } else {
208
+ dispatch(showNavbar()); // open both
209
+ }
210
+ };
211
+
212
+
213
+
214
+ const [mcpUrl, setMcpUrl] = useState<string | null>(null);
215
+ const [getMcpUrl] = useLazyGetMcpUrlQuery();
216
+
217
+ const [trigger, { data: solidSettingsData }] = useLazyGetSolidSettingsQuery();
218
+ useEffect(() => {
219
+ trigger("") // Fetch settings on mount
220
+ }, [])
221
+
222
+ useEffect(() => {
223
+ if (solidSettingsData?.data?.mcpEnabled && solidSettingsData?.data?.mcpServerUrl) {
224
+ enableSolidXAiPanel();
225
+ }
226
+ }, [solidSettingsData]);
227
+
228
+ const enableSolidXAiPanel = async () => {
229
+ try {
230
+ const queryData = {
231
+ showHeader: "true",
232
+ inListView: "true"
233
+ };
234
+ const queryString = qs.stringify({ ...queryData }, { encodeValuesOnly: true });
235
+ const response = await getMcpUrl(queryString).unwrap();
236
+ console.log("response", response);
237
+ if (response && response?.data?.mcpUrl) {
238
+ setMcpUrl(response?.data?.mcpUrl);
239
+ }
240
+ } catch (error) {
241
+
242
+ }
243
+ }
244
+
245
+
246
+ return (
247
+ <div className={`h-screen surface-0 flex`}>
248
+ <div className={`h-full flex-grow-1 ${styles.SolidDashboardPageContentWrapper}`}>
249
+ {isLoading && <SolidDashboardLoading />}
250
+ {error && <SolidDashboardRenderError />}
251
+ {!isLoading && !error && data && data.records.length === 0 && (
252
+ <SolidDashboardNotAvailable />
253
+ )}
254
+ {!isLoading && !error && data && data.records.length > 0 && (
255
+ <>
256
+ <div className="page-header" style={{ borderBottom: '1px solid var(--primary-light-color)' }}>
257
+ <div className='flex align-items-center gap-2'>
258
+ <div className="apps-icon block md:hidden cursor-pointer" onClick={toggleBothSidebars}>
259
+ <i className="pi pi-th-large"></i>
260
+ </div>
261
+ <p className={`view-title solid-text-wrapper flex align-items-center gap-1 ${styles.SolidDashboardTitle}`}>
262
+ {data?.records[0]?.displayName ? data?.records[0]?.displayName : data?.records[0]?.name}
263
+ {data?.records[0]?.description &&
264
+ <>
265
+ <Tooltip className='solid-field-tooltip' target=".solid-field-tooltip-icon" />
266
+ <i className="pi pi-info-circle solid-field-tooltip-icon"
267
+ data-pr-tooltip={data?.records[0]?.description}
268
+ data-pr-position={'right'}
269
+ />
270
+ </>
271
+ }
272
+ </p>
273
+ </div>
274
+ {dashboardVariables && dashboardVariables.length > 0 && <SolidDashboardVariable dashboardVariables={dashboardVariables} filters={filters} setFilters={setFilters} />}
275
+ </div>
276
+ {!isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardFilterRequired />}
277
+ {isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardBody questions={questions} filters={filters} />}
278
+ </>
279
+ )}
280
+ </div>
281
+ {mcpUrl && (
282
+ <div className={`chatter-section ${isOpenSolidXAiPanel === false ? 'collapsed' : 'open'}`} style={{ width: chatterWidth }}>
283
+ {isOpenSolidXAiPanel && (
284
+ <div
285
+ style={{
286
+ width: 5,
287
+ cursor: 'col-resize',
288
+ position: 'absolute',
289
+ left: 0,
290
+ top: 0,
291
+ bottom: 0,
292
+ height: '100%',
293
+ zIndex: 9,
294
+ }}
295
+ onMouseDown={() => setIsResizing(true)}
296
+ />
297
+ )}
298
+ {isOpenSolidXAiPanel &&
299
+ <Button
300
+ icon="pi pi-angle-double-right"
301
+ size="small"
302
+ text
303
+ className="chatter-collapse-btn"
304
+ style={{ width: 30, height: 30, aspectRatio: '1/1' }}
305
+ onClick={handleClose}
306
+ />
307
+ }
308
+
309
+ {isOpenSolidXAiPanel === false ?
310
+ <div className="flex flex-column gap-2 justify-content-center p-2">
311
+ <div className="chatter-collapsed-content" onClick={handleOpen}>
312
+ <div className="flex gap-2"> <SolidXAIIcon /> SolidX AI </div>
313
+ </div>
314
+ <Button
315
+ icon="pi pi-chevron-left"
316
+ size="small"
317
+ className="px-0"
318
+ style={{ width: 30 }}
319
+ onClick={handleOpen}
320
+ />
321
+ </div>
322
+ :
323
+ <SolidAiMainWrapper mcpUrl={mcpUrl} />
324
+ }
325
+ </div>
326
+ )}
327
+
328
+ </div>
329
+ );
330
+ }
331
+
332
+ export default SolidDashboard;
@@ -0,0 +1,117 @@
1
+ 'use client';
2
+ import 'gridstack/dist/gridstack.min.css';
3
+ import { GridStackOptions, GridStackWidget } from 'gridstack';
4
+ import styles from './SolidDashboard.module.css'
5
+ import { SolidQuestionRenderer } from './SolidQuestionRenderer';
6
+ import { SqlExpression } from '../../../types/solid-core';
7
+ import PrimeReactDatatableRenderer from './chart-renderers/PrimeReactDatatableRenderer';
8
+ import { useGetDashboardQuestionDataByIdQuery } from '../../../redux/api/dashboardQuestionApi';
9
+ import qs from 'qs';
10
+ import { ProgressSpinner } from 'primereact/progressspinner';
11
+
12
+ export interface SolidDashboardBodyProps {
13
+ dashboardOptions?: GridStackOptions;
14
+ widgetOptions?: GridStackWidget[];
15
+ // Replace `any` with a proper `Question` type when available
16
+ questions: any[];
17
+ filters: SqlExpression[];
18
+ }
19
+
20
+ const SolidDashboardBody = ({ questions, filters = [] }: SolidDashboardBodyProps) => {
21
+ // const gridRef = useRef<HTMLDivElement>(null);
22
+
23
+ // useEffect(() => {
24
+ // if (!gridRef.current) return;
25
+
26
+ // // Initialize Gridstack on the specific ref
27
+ // const grid = GridStack.init(dashboardOptions || {}, gridRef.current);
28
+
29
+ // // Load widgets if provided
30
+ // if (widgetOptions && widgetOptions.length > 0) {
31
+ // grid.load(
32
+ // widgetOptions.map((widget) => ({
33
+ // ...widget,
34
+ // content: `${widget.content ?? 'Widget'}`,
35
+ // }))
36
+ // );
37
+ // }
38
+
39
+ // // Cleanup on unmount
40
+ // return () => {
41
+ // grid.destroy(false);
42
+ // };
43
+ // }, [dashboardOptions, widgetOptions]);
44
+
45
+
46
+ // Fallback sequencing
47
+ const questionsWithDefaultIndex = questions.map((q, index) => ({
48
+ ...q,
49
+ defaultIndex: index + 1,
50
+ }));
51
+
52
+
53
+ const sortedQuestions = [...questionsWithDefaultIndex].sort((a, b) => {
54
+ const aSeq = a.sequenceNumber ?? a.defaultIndex;
55
+ const bSeq = b.sequenceNumber ?? b.defaultIndex;
56
+ return aSeq - bSeq;
57
+ });
58
+
59
+
60
+ return (
61
+ <div className={`p-4 overflow-y-auto ${styles.SolidDashboardContentWrapper}`}>
62
+ {/* <div className="grid-stack" ref={gridRef}></div> */}
63
+ <div className='grid'>
64
+ {/* {questions && questions.map((question: any) => {
65
+ return (
66
+ <div className='col-4 p-3'>
67
+ <SolidQuestionRenderer question={question} filters={filters} key={question.id} isPreview={false} />
68
+ </div>
69
+ )
70
+ })} */}
71
+ {sortedQuestions
72
+ .filter((question: any) => question.visualisedAs !== 'prime-datatable')
73
+ .map((question: any) => (
74
+ <div className="col-4 p-3" key={question.id}>
75
+ <SolidQuestionRenderer
76
+ question={question}
77
+ filters={filters}
78
+ isPreview={false}
79
+ />
80
+ </div>
81
+ ))}
82
+
83
+ {sortedQuestions
84
+ .filter((question: any) => question.visualisedAs === 'prime-datatable')
85
+ .map((question: any) => {
86
+ const queryParams = qs.stringify({ isPreview: false, filters }, { arrayFormat: 'brackets' });
87
+
88
+ const { data: questionData, isLoading } = useGetDashboardQuestionDataByIdQuery({
89
+ id: question.id,
90
+ qs: queryParams,
91
+ });
92
+
93
+ if (isLoading) return <ProgressSpinner />;
94
+ const textAlign = question?.textAlign ?? 'start'
95
+
96
+ return (
97
+ <div className="col-12 p-3" key={question.id}>
98
+ <div className={`${styles.SolidChartCardWrapper} p-4`} style={{ maxHeight: '40vh', overflowY: 'scroll' }}>
99
+ <div className={`font-medium text-${textAlign} ${styles.SolidChartTitle}`}>{question.name}</div>
100
+ <div className={`mt-2 font-bold text-3xl text-${textAlign} ${styles.SolidChartTitle}`}>{questionData.data.kpi}</div>
101
+ <div className='mt-3'>
102
+
103
+ <PrimeReactDatatableRenderer
104
+ options={JSON.parse(question?.chartOptions)}
105
+ visualizationData={questionData?.data?.visualizationData}
106
+ />
107
+ </div>
108
+ </div>
109
+ </div>
110
+ )
111
+ })}
112
+ </div>
113
+ </div>
114
+ );
115
+ };
116
+
117
+ export default SolidDashboardBody;
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ export const SolidDashboardFilterRequired = () => {
3
+ return (
4
+ <div className="flex align-items-center justify-content-center" style={{ minHeight: '400px', padding: '2rem' }}>
5
+ <div className="flex flex-column align-items-center gap-3 text-center" style={{ maxWidth: '500px' }}>
6
+ <div
7
+ className="flex align-items-center justify-content-center border-circle"
8
+ style={{
9
+ width: '80px',
10
+ height: '80px',
11
+ backgroundColor: 'var(--blue-50)',
12
+ color: 'var(--blue-500)'
13
+ }}
14
+ >
15
+ <i className="pi pi-filter" style={{ color: "var(--primary-color)", fontSize: '2.5rem' }} />
16
+ </div>
17
+ <div>
18
+ <div className="flex flex-column gap-2">
19
+ <h3 className="m-0" style={{ color: 'var(--text-color)', fontSize: '1.25rem', fontWeight: 600 }}>Filters Required</h3>
20
+ <p className="m-0" style={{ color: 'var(--text-color-secondary)', fontSize: '0.95rem', lineHeight: '1.5' }}>
21
+ Please select the required filters to render your dashboard.
22
+ </p>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </div>
27
+ )
28
+ }
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ const SolidDashboardHeader = () => {
3
+ return (
4
+ <div className="flex flex-col items-center justify-center h-screen">
5
+ <h1 className="text-2xl font-bold mb-4">Solid Dashboard Header</h1>
6
+ <p className="text-lg">This is a placeholder for the Solid Dashboard Header component.</p>
7
+ </div>
8
+ );
9
+ }
10
+ export default SolidDashboardHeader;
@@ -0,0 +1,55 @@
1
+ "use client'"
2
+ import { Skeleton } from 'primereact/skeleton'
3
+
4
+ export const SolidDashboardLoading = () => {
5
+ return (
6
+ <div className="grid p-4">
7
+
8
+ {/* ROW 1 — Responsive KPI Cards */}
9
+ <div className="col-12 sm:col-12 md:col-6 lg:col-6 xl:col-4">
10
+ <div className="surface-card p-3 border-round shadow-1">
11
+ <Skeleton width="40%" height="1.4rem" className="mb-2" />
12
+ <Skeleton width="70%" height="2rem" />
13
+ </div>
14
+ </div>
15
+
16
+ <div className="col-12 sm:col-12 md:col-6 lg:col-6 xl:col-4">
17
+ <div className="surface-card p-3 border-round shadow-1">
18
+ <Skeleton width="40%" height="1.4rem" className="mb-2" />
19
+ <Skeleton width="70%" height="2rem" />
20
+ </div>
21
+ </div>
22
+
23
+ <div className="col-12 sm:col-12 md:col-6 lg:col-6 xl:col-4">
24
+ <div className="surface-card p-3 border-round shadow-1">
25
+ <Skeleton width="40%" height="1.4rem" className="mb-2" />
26
+ <Skeleton width="70%" height="2rem" />
27
+ </div>
28
+ </div>
29
+
30
+ {/* ROW 2 — Responsive Charts: 2 cards on desktop, but collapses */}
31
+ <div className="col-12 sm:col-12 md:col-6 lg:col-6 xl:col-4">
32
+ <div className="surface-card p-3 border-round shadow-1">
33
+ <Skeleton width="30%" height="1.4rem" className="mb-3" />
34
+ <Skeleton width="100%" height="14rem" />
35
+ </div>
36
+ </div>
37
+
38
+ <div className="col-12 sm:col-12 md:col-12 lg:col-12 xl:col-8">
39
+ <div className="surface-card p-3 border-round shadow-1">
40
+ <Skeleton width="30%" height="1.4rem" className="mb-3" />
41
+ <Skeleton width="100%" height="14rem" />
42
+ </div>
43
+ </div>
44
+
45
+ {/* ROW 3 — Full width always */}
46
+ <div className="col-12">
47
+ <div className="surface-card p-3 border-round shadow-1">
48
+ <Skeleton width="30%" height="1.4rem" className="mb-3" />
49
+ <Skeleton width="100%" height="16rem" />
50
+ </div>
51
+ </div>
52
+
53
+ </div>
54
+ )
55
+ }
@@ -0,0 +1,32 @@
1
+ "use client";
2
+
3
+ const SolidDashboardNotAvailable = () => {
4
+ return (
5
+ <div className="flex align-items-center justify-content-center" style={{ minHeight: '400px', padding: '2rem' }}>
6
+ <div className="flex flex-column align-items-center gap-3 text-center" style={{ maxWidth: '500px' }}>
7
+ <div
8
+ className="flex align-items-center justify-content-center border-circle"
9
+ style={{
10
+ width: '80px',
11
+ height: '80px',
12
+ backgroundColor: 'var(--blue-50)',
13
+ color: 'var(--blue-500)'
14
+ }}
15
+ >
16
+ <i className="pi pi-chart-bar" style={{ fontSize: '2.5rem' }}></i>
17
+ </div>
18
+
19
+ <div className="flex flex-column gap-2">
20
+ <h3 className="m-0" style={{ color: 'var(--text-color)', fontSize: '1.25rem', fontWeight: 600 }}>
21
+ Dashboard Not Available
22
+ </h3>
23
+ <p className="m-0" style={{ color: 'var(--text-color-secondary)', fontSize: '0.95rem', lineHeight: '1.5' }}>
24
+ This dashboard has not been configured yet or does not exist. Please check the dashboard settings or contact your administrator.
25
+ </p>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ );
30
+ };
31
+
32
+ export default SolidDashboardNotAvailable;
@@ -0,0 +1,29 @@
1
+ "use client";
2
+
3
+ export const SolidDashboardRenderError = () => {
4
+ return (
5
+ <div className="flex align-items-center justify-content-center" style={{ minHeight: '400px', padding: '2rem' }}>
6
+ <div className="flex flex-column align-items-center gap-3 text-center" style={{ maxWidth: '500px' }}>
7
+ <div
8
+ className="flex align-items-center justify-content-center border-circle"
9
+ style={{
10
+ width: '80px',
11
+ height: '80px',
12
+ backgroundColor: 'var(--red-50)',
13
+ color: 'var(--red-500)'
14
+ }}
15
+ >
16
+ <i className="pi pi-exclamation-triangle"
17
+ style={{ fontSize: '2.5rem' }} />
18
+ </div>
19
+ <div className="flex flex-column gap-2">
20
+ <h3 className="m-0" style={{ color: 'var(--text-color)', fontSize: '1.25rem', fontWeight: 600 }}>Error in Loading Dashboard</h3>
21
+
22
+ <p className="m-0" style={{ color: 'var(--text-color-secondary)', fontSize: '0.95rem', lineHeight: '1.5' }}>
23
+ Failed to load dashboard. Please try again.
24
+ </p>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ )
29
+ }