@solidxai/core-ui 0.1.9-beta.2 → 0.1.9-beta.20

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 (577) hide show
  1. package/dist/adapters/auth/handleLogout.d.ts +1 -1
  2. package/dist/adapters/auth/handleLogout.d.ts.map +1 -1
  3. package/dist/adapters/auth/handleLogout.js +20 -32
  4. package/dist/adapters/auth/handleLogout.js.map +1 -1
  5. package/dist/adapters/auth/handleLogout.ts +7 -14
  6. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  7. package/dist/components/auth/AuthLayout.js +2 -1
  8. package/dist/components/auth/AuthLayout.js.map +1 -1
  9. package/dist/components/auth/AuthLayout.tsx +2 -0
  10. package/dist/components/auth/ForgotPasswordThankYou.js +1 -1
  11. package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
  12. package/dist/components/auth/ForgotPasswordThankYou.tsx +2 -2
  13. package/dist/components/auth/SolidForgotPassword.js +1 -1
  14. package/dist/components/auth/SolidForgotPassword.js.map +1 -1
  15. package/dist/components/auth/SolidForgotPassword.tsx +2 -2
  16. package/dist/components/auth/SolidInitialLoginOtp.js +8 -8
  17. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  18. package/dist/components/auth/SolidInitialLoginOtp.tsx +1 -1
  19. package/dist/components/auth/SolidInitiateRegisterOtp.js +8 -8
  20. package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
  21. package/dist/components/auth/SolidInitiateRegisterOtp.tsx +1 -1
  22. package/dist/components/auth/SolidLogin.js +9 -10
  23. package/dist/components/auth/SolidLogin.js.map +1 -1
  24. package/dist/components/auth/SolidLogin.tsx +3 -3
  25. package/dist/components/auth/SolidRegister.js +10 -10
  26. package/dist/components/auth/SolidRegister.js.map +1 -1
  27. package/dist/components/auth/SolidRegister.tsx +3 -3
  28. package/dist/components/common/GeneralSettings.js +1 -1
  29. package/dist/components/common/GeneralSettings.js.map +1 -1
  30. package/dist/components/common/GeneralSettings.tsx +1 -1
  31. package/dist/components/common/SettingsComponent.d.ts.map +1 -1
  32. package/dist/components/common/SettingsComponent.js +4 -1
  33. package/dist/components/common/SettingsComponent.js.map +1 -1
  34. package/dist/components/common/SettingsComponent.module.css +95 -2
  35. package/dist/components/common/SettingsComponent.tsx +4 -1
  36. package/dist/components/common/SocialMediaLogin.d.ts.map +1 -1
  37. package/dist/components/common/SocialMediaLogin.js +2 -2
  38. package/dist/components/common/SocialMediaLogin.js.map +1 -1
  39. package/dist/components/common/SocialMediaLogin.tsx +8 -4
  40. package/dist/components/common/SolidExport.d.ts.map +1 -1
  41. package/dist/components/common/SolidExport.js +1 -1
  42. package/dist/components/common/SolidExport.js.map +1 -1
  43. package/dist/components/common/SolidExport.tsx +2 -0
  44. package/dist/components/common/SolidFaviconProvider.d.ts +3 -0
  45. package/dist/components/common/SolidFaviconProvider.d.ts.map +1 -0
  46. package/dist/components/common/SolidFaviconProvider.js +102 -0
  47. package/dist/components/common/SolidFaviconProvider.js.map +1 -0
  48. package/dist/components/common/SolidFaviconProvider.tsx +55 -0
  49. package/dist/components/core/card/SolidCardView.js +1 -1
  50. package/dist/components/core/card/SolidCardView.js.map +1 -1
  51. package/dist/components/core/card/SolidCardView.tsx +1 -1
  52. package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
  53. package/dist/components/core/chatter/SolidChatter.js +24 -11
  54. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  55. package/dist/components/core/chatter/SolidChatter.tsx +20 -6
  56. package/dist/components/core/chatter/SolidChatterHeader.d.ts.map +1 -1
  57. package/dist/components/core/chatter/SolidChatterHeader.js +1 -1
  58. package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
  59. package/dist/components/core/chatter/SolidChatterHeader.tsx +4 -0
  60. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts +1 -0
  61. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts.map +1 -1
  62. package/dist/components/core/chatter/SolidChatterMessageBox.js +150 -11
  63. package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
  64. package/dist/components/core/chatter/SolidChatterMessageBox.tsx +252 -11
  65. package/dist/components/core/chatter/SolidMessageComposer.d.ts.map +1 -1
  66. package/dist/components/core/chatter/SolidMessageComposer.js +3 -2
  67. package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
  68. package/dist/components/core/chatter/SolidMessageComposer.tsx +4 -2
  69. package/dist/components/core/chatter/chatter.module.css +1 -1
  70. package/dist/components/core/common/FilterComponent.d.ts.map +1 -1
  71. package/dist/components/core/common/FilterComponent.js +5 -3
  72. package/dist/components/core/common/FilterComponent.js.map +1 -1
  73. package/dist/components/core/common/FilterComponent.tsx +6 -2
  74. package/dist/components/core/common/GroupingComponent.d.ts.map +1 -1
  75. package/dist/components/core/common/GroupingComponent.js +2 -2
  76. package/dist/components/core/common/GroupingComponent.js.map +1 -1
  77. package/dist/components/core/common/GroupingComponent.tsx +2 -0
  78. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.d.ts.map +1 -1
  79. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js +1 -10
  80. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js.map +1 -1
  81. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.tsx +1 -8
  82. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.d.ts.map +1 -1
  83. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js +6 -11
  84. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
  85. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +5 -31
  86. package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +1 -1
  87. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.d.ts.map +1 -1
  88. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js +2 -0
  89. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
  90. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +2 -0
  91. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  92. package/dist/components/core/common/SolidGlobalSearchElement.js +137 -57
  93. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  94. package/dist/components/core/common/SolidGlobalSearchElement.tsx +92 -11
  95. package/dist/components/core/common/SolidSaveCustomFilterForm.d.ts.map +1 -1
  96. package/dist/components/core/common/SolidSaveCustomFilterForm.js +1 -1
  97. package/dist/components/core/common/SolidSaveCustomFilterForm.js.map +1 -1
  98. package/dist/components/core/common/SolidSaveCustomFilterForm.tsx +0 -1
  99. package/dist/components/core/dashboard/mappers/echartsOptionMapper.d.ts +4 -0
  100. package/dist/components/core/dashboard/mappers/echartsOptionMapper.d.ts.map +1 -0
  101. package/dist/components/core/dashboard/mappers/echartsOptionMapper.js +79 -0
  102. package/dist/components/core/dashboard/mappers/echartsOptionMapper.js.map +1 -0
  103. package/dist/components/core/dashboard/mappers/echartsOptionMapper.ts +81 -0
  104. package/dist/components/core/dashboard/widgets/DefaultDashboardBarChartWidget.d.ts +3 -0
  105. package/dist/components/core/dashboard/widgets/DefaultDashboardBarChartWidget.d.ts.map +1 -0
  106. package/dist/components/core/dashboard/widgets/DefaultDashboardBarChartWidget.js +17 -0
  107. package/dist/components/core/dashboard/widgets/DefaultDashboardBarChartWidget.js.map +1 -0
  108. package/dist/components/core/dashboard/widgets/DefaultDashboardBarChartWidget.tsx +6 -0
  109. package/dist/components/core/dashboard/widgets/DefaultDashboardChartWidget.d.ts +3 -0
  110. package/dist/components/core/dashboard/widgets/DefaultDashboardChartWidget.d.ts.map +1 -0
  111. package/dist/components/core/dashboard/widgets/DefaultDashboardChartWidget.js +41 -0
  112. package/dist/components/core/dashboard/widgets/DefaultDashboardChartWidget.js.map +1 -0
  113. package/dist/components/core/dashboard/widgets/DefaultDashboardChartWidget.tsx +56 -0
  114. package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.d.ts +3 -0
  115. package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.d.ts.map +1 -0
  116. package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.js +14 -0
  117. package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.js.map +1 -0
  118. package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.tsx +19 -0
  119. package/dist/components/core/dashboard/widgets/DefaultDashboardLineChartWidget.d.ts +3 -0
  120. package/dist/components/core/dashboard/widgets/DefaultDashboardLineChartWidget.d.ts.map +1 -0
  121. package/dist/components/core/dashboard/widgets/DefaultDashboardLineChartWidget.js +17 -0
  122. package/dist/components/core/dashboard/widgets/DefaultDashboardLineChartWidget.js.map +1 -0
  123. package/dist/components/core/dashboard/widgets/DefaultDashboardLineChartWidget.tsx +6 -0
  124. package/dist/components/core/dashboard/widgets/DefaultDashboardPieChartWidget.d.ts +3 -0
  125. package/dist/components/core/dashboard/widgets/DefaultDashboardPieChartWidget.d.ts.map +1 -0
  126. package/dist/components/core/dashboard/widgets/DefaultDashboardPieChartWidget.js +17 -0
  127. package/dist/components/core/dashboard/widgets/DefaultDashboardPieChartWidget.js.map +1 -0
  128. package/dist/components/core/dashboard/widgets/DefaultDashboardPieChartWidget.tsx +6 -0
  129. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.d.ts +3 -0
  130. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.d.ts.map +1 -0
  131. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.js +12 -0
  132. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.js.map +1 -0
  133. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.tsx +39 -0
  134. package/dist/components/core/dashboard/widgets/DefaultDashboardUnknownWidget.d.ts +3 -0
  135. package/dist/components/core/dashboard/widgets/DefaultDashboardUnknownWidget.d.ts.map +1 -0
  136. package/dist/components/core/dashboard/widgets/DefaultDashboardUnknownWidget.js +7 -0
  137. package/dist/components/core/dashboard/widgets/DefaultDashboardUnknownWidget.js.map +1 -0
  138. package/dist/components/core/dashboard/widgets/DefaultDashboardUnknownWidget.tsx +9 -0
  139. package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.d.ts +3 -0
  140. package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.d.ts.map +1 -0
  141. package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.js +203 -0
  142. package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.js.map +1 -0
  143. package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.tsx +251 -0
  144. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.d.ts +16 -0
  145. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.d.ts.map +1 -0
  146. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.js +31 -0
  147. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.js.map +1 -0
  148. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.tsx +43 -0
  149. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.d.ts +3 -0
  150. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.d.ts.map +1 -0
  151. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.js +141 -0
  152. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.js.map +1 -0
  153. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.tsx +205 -0
  154. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts +4 -0
  155. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts.map +1 -0
  156. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js +112 -0
  157. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js.map +1 -0
  158. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx +146 -0
  159. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts +11 -0
  160. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts.map +1 -0
  161. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js +22 -0
  162. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js.map +1 -0
  163. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx +36 -0
  164. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.d.ts +3 -0
  165. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.d.ts.map +1 -0
  166. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.js +133 -0
  167. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.js.map +1 -0
  168. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.ts +76 -0
  169. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +1 -1
  170. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  171. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +1 -1
  172. package/dist/components/core/filter/fields/SolidBooleanField.d.ts.map +1 -1
  173. package/dist/components/core/filter/fields/SolidBooleanField.js +1 -1
  174. package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
  175. package/dist/components/core/filter/fields/SolidBooleanField.tsx +3 -2
  176. package/dist/components/core/filter/fields/SolidDateField.d.ts.map +1 -1
  177. package/dist/components/core/filter/fields/SolidDateField.js +1 -1
  178. package/dist/components/core/filter/fields/SolidDateField.js.map +1 -1
  179. package/dist/components/core/filter/fields/SolidDateField.tsx +2 -1
  180. package/dist/components/core/filter/fields/SolidDatetimeField.d.ts.map +1 -1
  181. package/dist/components/core/filter/fields/SolidDatetimeField.js +1 -1
  182. package/dist/components/core/filter/fields/SolidDatetimeField.js.map +1 -1
  183. package/dist/components/core/filter/fields/SolidDatetimeField.tsx +3 -2
  184. package/dist/components/core/filter/fields/SolidExternalIdField.d.ts.map +1 -1
  185. package/dist/components/core/filter/fields/SolidExternalIdField.js +1 -1
  186. package/dist/components/core/filter/fields/SolidExternalIdField.js.map +1 -1
  187. package/dist/components/core/filter/fields/SolidExternalIdField.tsx +2 -1
  188. package/dist/components/core/filter/fields/SolidIdField.d.ts.map +1 -1
  189. package/dist/components/core/filter/fields/SolidIdField.js +1 -1
  190. package/dist/components/core/filter/fields/SolidIdField.js.map +1 -1
  191. package/dist/components/core/filter/fields/SolidIdField.tsx +1 -0
  192. package/dist/components/core/filter/fields/SolidIntField.d.ts.map +1 -1
  193. package/dist/components/core/filter/fields/SolidIntField.js +1 -1
  194. package/dist/components/core/filter/fields/SolidIntField.js.map +1 -1
  195. package/dist/components/core/filter/fields/SolidIntField.tsx +2 -1
  196. package/dist/components/core/filter/fields/SolidMediaMultipleField.d.ts.map +1 -1
  197. package/dist/components/core/filter/fields/SolidMediaMultipleField.js +1 -1
  198. package/dist/components/core/filter/fields/SolidMediaMultipleField.js.map +1 -1
  199. package/dist/components/core/filter/fields/SolidMediaMultipleField.tsx +2 -1
  200. package/dist/components/core/filter/fields/SolidMediaSingleField.d.ts.map +1 -1
  201. package/dist/components/core/filter/fields/SolidMediaSingleField.js +1 -1
  202. package/dist/components/core/filter/fields/SolidMediaSingleField.js.map +1 -1
  203. package/dist/components/core/filter/fields/SolidMediaSingleField.tsx +2 -1
  204. package/dist/components/core/filter/fields/SolidSelectionDynamicField.d.ts.map +1 -1
  205. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js +1 -1
  206. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js.map +1 -1
  207. package/dist/components/core/filter/fields/SolidSelectionDynamicField.tsx +3 -2
  208. package/dist/components/core/filter/fields/SolidSelectionStaticField.d.ts.map +1 -1
  209. package/dist/components/core/filter/fields/SolidSelectionStaticField.js +1 -1
  210. package/dist/components/core/filter/fields/SolidSelectionStaticField.js.map +1 -1
  211. package/dist/components/core/filter/fields/SolidSelectionStaticField.tsx +3 -2
  212. package/dist/components/core/filter/fields/SolidShortTextField.d.ts.map +1 -1
  213. package/dist/components/core/filter/fields/SolidShortTextField.js +1 -1
  214. package/dist/components/core/filter/fields/SolidShortTextField.js.map +1 -1
  215. package/dist/components/core/filter/fields/SolidShortTextField.tsx +2 -1
  216. package/dist/components/core/filter/fields/SolidTimeField.d.ts.map +1 -1
  217. package/dist/components/core/filter/fields/SolidTimeField.js +1 -1
  218. package/dist/components/core/filter/fields/SolidTimeField.js.map +1 -1
  219. package/dist/components/core/filter/fields/SolidTimeField.tsx +3 -2
  220. package/dist/components/core/filter/fields/SolidUuidField.d.ts.map +1 -1
  221. package/dist/components/core/filter/fields/SolidUuidField.js +1 -1
  222. package/dist/components/core/filter/fields/SolidUuidField.js.map +1 -1
  223. package/dist/components/core/filter/fields/SolidUuidField.tsx +2 -1
  224. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  225. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js +1 -1
  226. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  227. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +3 -2
  228. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  229. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js +1 -1
  230. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  231. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +3 -2
  232. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  233. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +1 -1
  234. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  235. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +3 -2
  236. package/dist/components/core/form/SolidFormActionHeader.d.ts.map +1 -1
  237. package/dist/components/core/form/SolidFormActionHeader.js +1 -0
  238. package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
  239. package/dist/components/core/form/SolidFormActionHeader.tsx +2 -1
  240. package/dist/components/core/form/SolidFormFooter.d.ts.map +1 -1
  241. package/dist/components/core/form/SolidFormFooter.js +16 -9
  242. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  243. package/dist/components/core/form/SolidFormFooter.tsx +16 -8
  244. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  245. package/dist/components/core/form/SolidFormView.js +12 -7
  246. package/dist/components/core/form/SolidFormView.js.map +1 -1
  247. package/dist/components/core/form/SolidFormView.tsx +11 -5
  248. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.d.ts.map +1 -1
  249. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js +12 -3
  250. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js.map +1 -1
  251. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.tsx +21 -16
  252. package/dist/components/core/form/SolidFormViewNormalHeaderButton.d.ts.map +1 -1
  253. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js +15 -5
  254. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js.map +1 -1
  255. package/dist/components/core/form/SolidFormViewNormalHeaderButton.tsx +21 -9
  256. package/dist/components/core/form/field-quality-check-fixes.md +201 -0
  257. package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
  258. package/dist/components/core/form/fields/SolidBooleanField.js +10 -1
  259. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  260. package/dist/components/core/form/fields/SolidBooleanField.tsx +13 -1
  261. package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -1
  262. package/dist/components/core/form/fields/SolidDecimalField.js +7 -1
  263. package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
  264. package/dist/components/core/form/fields/SolidDecimalField.tsx +10 -1
  265. package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
  266. package/dist/components/core/form/fields/SolidIntegerField.js +14 -2
  267. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  268. package/dist/components/core/form/fields/SolidIntegerField.tsx +20 -2
  269. package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -1
  270. package/dist/components/core/form/fields/SolidJsonField.js +9 -1
  271. package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
  272. package/dist/components/core/form/fields/SolidJsonField.tsx +12 -1
  273. package/dist/components/core/form/fields/SolidLongTextField.d.ts +0 -1
  274. package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
  275. package/dist/components/core/form/fields/SolidLongTextField.js +16 -48
  276. package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
  277. package/dist/components/core/form/fields/SolidLongTextField.tsx +22 -88
  278. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  279. package/dist/components/core/form/fields/SolidMediaMultipleField.js +15 -2
  280. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  281. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +20 -4
  282. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  283. package/dist/components/core/form/fields/SolidMediaSingleField.js +21 -3
  284. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  285. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +30 -3
  286. package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
  287. package/dist/components/core/form/fields/SolidPasswordField.js +2 -1
  288. package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
  289. package/dist/components/core/form/fields/SolidPasswordField.tsx +13 -1
  290. package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
  291. package/dist/components/core/form/fields/SolidRichTextField.js +9 -1
  292. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  293. package/dist/components/core/form/fields/SolidRichTextField.tsx +12 -1
  294. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts +12 -0
  295. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -0
  296. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +168 -0
  297. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -0
  298. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +241 -0
  299. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  300. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +17 -15
  301. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  302. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +10 -2
  303. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  304. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +14 -14
  305. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  306. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +19 -9
  307. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  308. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +9 -7
  309. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  310. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +8 -2
  311. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js +1 -1
  312. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js.map +1 -1
  313. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.tsx +1 -1
  314. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.d.ts.map +1 -1
  315. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +14 -3
  316. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
  317. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +20 -3
  318. package/dist/components/core/kanban/SolidKanbanView.js +1 -1
  319. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  320. package/dist/components/core/kanban/SolidKanbanView.tsx +1 -1
  321. package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
  322. package/dist/components/core/list/SolidDataTable.js +2 -1
  323. package/dist/components/core/list/SolidDataTable.js.map +1 -1
  324. package/dist/components/core/list/SolidDataTable.tsx +8 -9
  325. package/dist/components/core/list/SolidEmptyListViewPlaceholder.d.ts.map +1 -1
  326. package/dist/components/core/list/SolidEmptyListViewPlaceholder.js +3 -0
  327. package/dist/components/core/list/SolidEmptyListViewPlaceholder.js.map +1 -1
  328. package/dist/components/core/list/SolidEmptyListViewPlaceholder.tsx +2 -0
  329. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  330. package/dist/components/core/list/SolidListView.js +180 -101
  331. package/dist/components/core/list/SolidListView.js.map +1 -1
  332. package/dist/components/core/list/SolidListView.tsx +119 -33
  333. package/dist/components/core/list/SolidListViewColumn.d.ts +3 -1
  334. package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
  335. package/dist/components/core/list/SolidListViewColumn.js +27 -2
  336. package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
  337. package/dist/components/core/list/SolidListViewColumn.tsx +16 -3
  338. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  339. package/dist/components/core/list/SolidListViewConfigure.js +11 -10
  340. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  341. package/dist/components/core/list/SolidListViewConfigure.tsx +4 -2
  342. package/dist/components/core/list/SolidListViewHeaderButton.d.ts.map +1 -1
  343. package/dist/components/core/list/SolidListViewHeaderButton.js +9 -3
  344. package/dist/components/core/list/SolidListViewHeaderButton.js.map +1 -1
  345. package/dist/components/core/list/SolidListViewHeaderButton.tsx +12 -7
  346. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.d.ts.map +1 -1
  347. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js +19 -7
  348. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js.map +1 -1
  349. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +19 -6
  350. package/dist/components/core/list/SolidListViewRowActionMenuItem.d.ts.map +1 -1
  351. package/dist/components/core/list/SolidListViewRowActionMenuItem.js +14 -5
  352. package/dist/components/core/list/SolidListViewRowActionMenuItem.js.map +1 -1
  353. package/dist/components/core/list/SolidListViewRowActionMenuItem.tsx +17 -6
  354. package/dist/components/core/list/SolidListViewRowActionsMenu.d.ts.map +1 -1
  355. package/dist/components/core/list/SolidListViewRowActionsMenu.js +7 -1
  356. package/dist/components/core/list/SolidListViewRowActionsMenu.js.map +1 -1
  357. package/dist/components/core/list/SolidListViewRowActionsMenu.tsx +5 -1
  358. package/dist/components/core/list/columns/SolidBooleanColumn.d.ts.map +1 -1
  359. package/dist/components/core/list/columns/SolidBooleanColumn.js +4 -6
  360. package/dist/components/core/list/columns/SolidBooleanColumn.js.map +1 -1
  361. package/dist/components/core/list/columns/SolidBooleanColumn.tsx +1 -3
  362. package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
  363. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +4 -3
  364. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  365. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +4 -3
  366. package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts.map +1 -1
  367. package/dist/components/core/list/columns/SolidMediaSingleColumn.js +3 -2
  368. package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
  369. package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +3 -2
  370. package/dist/components/core/list/columns/SolidRelationColumn.d.ts +1 -1
  371. package/dist/components/core/list/columns/SolidRelationColumn.d.ts.map +1 -1
  372. package/dist/components/core/list/columns/SolidRelationColumn.js +2 -2
  373. package/dist/components/core/list/columns/SolidRelationColumn.js.map +1 -1
  374. package/dist/components/core/list/columns/SolidRelationColumn.tsx +2 -2
  375. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts +2 -2
  376. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  377. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +9 -4
  378. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  379. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +14 -4
  380. package/dist/components/core/list/field-quality-check-fixes.md +178 -0
  381. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.d.ts +3 -0
  382. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.d.ts.map +1 -0
  383. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.js +39 -0
  384. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.js.map +1 -0
  385. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.tsx +50 -0
  386. package/dist/components/core/model/CreateModel.css +48 -0
  387. package/dist/components/core/model/CreateModel.d.ts +1 -0
  388. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  389. package/dist/components/core/model/CreateModel.js +80 -128
  390. package/dist/components/core/model/CreateModel.js.map +1 -1
  391. package/dist/components/core/model/CreateModel.tsx +102 -226
  392. package/dist/components/core/model/FieldMetaData.d.ts +1 -1
  393. package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
  394. package/dist/components/core/model/FieldMetaData.js +6 -22
  395. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  396. package/dist/components/core/model/FieldMetaData.tsx +16 -49
  397. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  398. package/dist/components/core/model/FieldMetaDataForm.js +196 -222
  399. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  400. package/dist/components/core/model/FieldMetaDataForm.tsx +1 -73
  401. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
  402. package/dist/components/core/model/ModelMetaData.js +12 -24
  403. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  404. package/dist/components/core/model/ModelMetaData.tsx +15 -21
  405. package/dist/components/core/module/CreateModule.css +44 -0
  406. package/dist/components/core/module/CreateModule.d.ts +1 -0
  407. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  408. package/dist/components/core/module/CreateModule.js +40 -43
  409. package/dist/components/core/module/CreateModule.js.map +1 -1
  410. package/dist/components/core/module/CreateModule.tsx +243 -247
  411. package/dist/components/core/module/ModuleListViewData.d.ts.map +1 -1
  412. package/dist/components/core/module/ModuleListViewData.js +47 -7
  413. package/dist/components/core/module/ModuleListViewData.js.map +1 -1
  414. package/dist/components/core/module/ModuleListViewData.tsx +58 -0
  415. package/dist/components/core/module/ModuleMetadataExplorer.css +638 -0
  416. package/dist/components/core/module/ModuleMetadataExplorer.d.ts +15 -0
  417. package/dist/components/core/module/ModuleMetadataExplorer.d.ts.map +1 -0
  418. package/dist/components/core/module/ModuleMetadataExplorer.js +666 -0
  419. package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -0
  420. package/dist/components/core/module/ModuleMetadataExplorer.tsx +1000 -0
  421. package/dist/components/core/module/ModulePackageDialog.css +540 -0
  422. package/dist/components/core/module/ModulePackageDialog.d.ts +16 -0
  423. package/dist/components/core/module/ModulePackageDialog.d.ts.map +1 -0
  424. package/dist/components/core/module/ModulePackageDialog.js +625 -0
  425. package/dist/components/core/module/ModulePackageDialog.js.map +1 -0
  426. package/dist/components/core/module/ModulePackageDialog.tsx +906 -0
  427. package/dist/components/core/tree/SolidTreeView.js +2 -2
  428. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  429. package/dist/components/core/tree/SolidTreeView.tsx +3 -3
  430. package/dist/components/core/users/CreateUser.css +27 -2
  431. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  432. package/dist/components/core/users/CreateUser.js +52 -24
  433. package/dist/components/core/users/CreateUser.js.map +1 -1
  434. package/dist/components/core/users/CreateUser.tsx +47 -34
  435. package/dist/components/layout/AdminHeaderActions.d.ts +7 -0
  436. package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -0
  437. package/dist/components/layout/AdminHeaderActions.js +77 -0
  438. package/dist/components/layout/AdminHeaderActions.js.map +1 -0
  439. package/dist/components/layout/AdminHeaderActions.tsx +155 -0
  440. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
  441. package/dist/components/layout/AdminTopHeader.js +8 -17
  442. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  443. package/dist/components/layout/AdminTopHeader.tsx +9 -64
  444. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  445. package/dist/components/layout/AppSidebar.js +2 -1
  446. package/dist/components/layout/AppSidebar.js.map +1 -1
  447. package/dist/components/layout/AppSidebar.tsx +2 -0
  448. package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
  449. package/dist/components/layout/user-profile-menu.js +57 -33
  450. package/dist/components/layout/user-profile-menu.js.map +1 -1
  451. package/dist/components/layout/user-profile-menu.tsx +11 -59
  452. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts +2 -1
  453. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
  454. package/dist/components/shad-cn-ui/SolidAutocomplete.js +60 -6
  455. package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
  456. package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +81 -22
  457. package/dist/components/shad-cn-ui/SolidButton.d.ts.map +1 -1
  458. package/dist/components/shad-cn-ui/SolidButton.js +10 -2
  459. package/dist/components/shad-cn-ui/SolidButton.js.map +1 -1
  460. package/dist/components/shad-cn-ui/SolidButton.tsx +10 -2
  461. package/dist/components/shad-cn-ui/SolidDatePicker.d.ts +1 -1
  462. package/dist/components/shad-cn-ui/SolidDatePicker.d.ts.map +1 -1
  463. package/dist/components/shad-cn-ui/SolidDatePicker.js +2 -2
  464. package/dist/components/shad-cn-ui/SolidDatePicker.js.map +1 -1
  465. package/dist/components/shad-cn-ui/SolidDatePicker.tsx +4 -0
  466. package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
  467. package/dist/components/shad-cn-ui/SolidDialog.js +38 -4
  468. package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
  469. package/dist/components/shad-cn-ui/SolidDialog.tsx +47 -3
  470. package/dist/components/shad-cn-ui/SolidIcon.d.ts +2 -1
  471. package/dist/components/shad-cn-ui/SolidIcon.d.ts.map +1 -1
  472. package/dist/components/shad-cn-ui/SolidIcon.js +1 -0
  473. package/dist/components/shad-cn-ui/SolidIcon.js.map +1 -1
  474. package/dist/components/shad-cn-ui/SolidIcon.tsx +1 -0
  475. package/dist/components/shad-cn-ui/SolidPasswordInput.d.ts.map +1 -1
  476. package/dist/components/shad-cn-ui/SolidPasswordInput.js +1 -1
  477. package/dist/components/shad-cn-ui/SolidPasswordInput.js.map +1 -1
  478. package/dist/components/shad-cn-ui/SolidPasswordInput.tsx +1 -0
  479. package/dist/components/shad-cn-ui/SolidSelect.d.ts +2 -1
  480. package/dist/components/shad-cn-ui/SolidSelect.d.ts.map +1 -1
  481. package/dist/components/shad-cn-ui/SolidSelect.js +51 -1
  482. package/dist/components/shad-cn-ui/SolidSelect.js.map +1 -1
  483. package/dist/components/shad-cn-ui/SolidSelect.tsx +95 -0
  484. package/dist/helpers/buttonEnvironment.d.ts +5 -0
  485. package/dist/helpers/buttonEnvironment.d.ts.map +1 -0
  486. package/dist/helpers/buttonEnvironment.js +30 -0
  487. package/dist/helpers/buttonEnvironment.js.map +1 -0
  488. package/dist/helpers/buttonEnvironment.ts +35 -0
  489. package/dist/helpers/buttonPresentation.d.ts +24 -0
  490. package/dist/helpers/buttonPresentation.d.ts.map +1 -0
  491. package/dist/helpers/buttonPresentation.js +28 -0
  492. package/dist/helpers/buttonPresentation.js.map +1 -0
  493. package/dist/helpers/buttonPresentation.ts +53 -0
  494. package/dist/helpers/fileTypeIcon.d.ts +12 -0
  495. package/dist/helpers/fileTypeIcon.d.ts.map +1 -0
  496. package/dist/helpers/fileTypeIcon.js +37 -0
  497. package/dist/helpers/fileTypeIcon.js.map +1 -0
  498. package/dist/helpers/fileTypeIcon.tsx +65 -0
  499. package/dist/helpers/registry.d.ts.map +1 -1
  500. package/dist/helpers/registry.js +28 -10
  501. package/dist/helpers/registry.js.map +1 -1
  502. package/dist/helpers/registry.ts +31 -13
  503. package/dist/helpers/waitForBackendAvailability.d.ts +7 -0
  504. package/dist/helpers/waitForBackendAvailability.d.ts.map +1 -0
  505. package/dist/helpers/waitForBackendAvailability.js +86 -0
  506. package/dist/helpers/waitForBackendAvailability.js.map +1 -0
  507. package/dist/helpers/waitForBackendAvailability.ts +37 -0
  508. package/dist/index.d.ts +10 -9
  509. package/dist/index.d.ts.map +1 -1
  510. package/dist/index.js +7 -8
  511. package/dist/index.js.map +1 -1
  512. package/dist/index.ts +34 -13
  513. package/dist/redux/api/dashboardRuntimeApi.d.ts +34 -0
  514. package/dist/redux/api/dashboardRuntimeApi.d.ts.map +1 -0
  515. package/dist/redux/api/dashboardRuntimeApi.js +79 -0
  516. package/dist/redux/api/dashboardRuntimeApi.js.map +1 -0
  517. package/dist/redux/api/dashboardRuntimeApi.ts +75 -0
  518. package/dist/redux/api/moduleApi.d.ts +26 -1
  519. package/dist/redux/api/moduleApi.d.ts.map +1 -1
  520. package/dist/redux/api/moduleApi.js +237 -1
  521. package/dist/redux/api/moduleApi.js.map +1 -1
  522. package/dist/redux/api/moduleApi.ts +181 -1
  523. package/dist/redux/api/solidChatterMessageApi.d.ts +2 -1
  524. package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
  525. package/dist/redux/api/solidChatterMessageApi.js +11 -1
  526. package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
  527. package/dist/redux/api/solidChatterMessageApi.ts +10 -1
  528. package/dist/redux/store/defaultStoreConfig.d.ts +57 -9
  529. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  530. package/dist/redux/store/defaultStoreConfig.js +2 -6
  531. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  532. package/dist/redux/store/defaultStoreConfig.ts +2 -6
  533. package/dist/redux/store/solidEntityApiPool.d.ts +1 -0
  534. package/dist/redux/store/solidEntityApiPool.d.ts.map +1 -1
  535. package/dist/redux/store/solidEntityApiPool.js +4 -0
  536. package/dist/redux/store/solidEntityApiPool.js.map +1 -1
  537. package/dist/redux/store/solidEntityApiPool.ts +4 -0
  538. package/dist/resources/globals.css +163 -19
  539. package/dist/resources/shadcn-base.css +408 -183
  540. package/dist/resources/solid-responsive.css +235 -50
  541. package/dist/routes/AppEventListener.d.ts.map +1 -1
  542. package/dist/routes/AppEventListener.js +58 -8
  543. package/dist/routes/AppEventListener.js.map +1 -1
  544. package/dist/routes/AppEventListener.tsx +69 -8
  545. package/dist/routes/SolidRouteMetadataBoundary.d.ts +5 -0
  546. package/dist/routes/SolidRouteMetadataBoundary.d.ts.map +1 -0
  547. package/dist/routes/SolidRouteMetadataBoundary.js +72 -0
  548. package/dist/routes/SolidRouteMetadataBoundary.js.map +1 -0
  549. package/dist/routes/SolidRouteMetadataBoundary.tsx +77 -0
  550. package/dist/routes/pages/admin/core/DashboardPage.d.ts +1 -0
  551. package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
  552. package/dist/routes/pages/admin/core/DashboardPage.js +860 -5
  553. package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
  554. package/dist/routes/pages/admin/core/DashboardPage.module.css +219 -0
  555. package/dist/routes/pages/admin/core/DashboardPage.tsx +1025 -7
  556. package/dist/routes/solidRoutes.d.ts.map +1 -1
  557. package/dist/routes/solidRoutes.js +48 -27
  558. package/dist/routes/solidRoutes.js.map +1 -1
  559. package/dist/routes/solidRoutes.tsx +48 -27
  560. package/dist/routes/types.d.ts +8 -1
  561. package/dist/routes/types.d.ts.map +1 -1
  562. package/dist/routes/types.js.map +1 -1
  563. package/dist/routes/types.ts +9 -1
  564. package/dist/types/dashboard.d.ts +16 -0
  565. package/dist/types/dashboard.d.ts.map +1 -0
  566. package/dist/types/dashboard.js +2 -0
  567. package/dist/types/dashboard.js.map +1 -0
  568. package/dist/types/dashboard.ts +23 -0
  569. package/dist/types/extension-registry.d.ts +1 -0
  570. package/dist/types/extension-registry.d.ts.map +1 -1
  571. package/dist/types/extension-registry.js +1 -0
  572. package/dist/types/extension-registry.js.map +1 -1
  573. package/dist/types/extension-registry.ts +1 -0
  574. package/dist/types/index.d.ts +3 -0
  575. package/dist/types/jsoneditor.d.ts +4 -0
  576. package/dist/types/solid-core.d.ts +1 -0
  577. package/package.json +4 -1
@@ -0,0 +1,906 @@
1
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ import { useDropzone } from "react-dropzone";
3
+ import { FileArchive, FolderTree, RefreshCw, Sparkles, UploadCloud, X } from "lucide-react";
4
+ import {
5
+ useConfirmModulePackageImportMutation,
6
+ useDismissModulePackageImportMutation,
7
+ useLazyGetModulePackageImportStatusQuery,
8
+ useRunModulePackageBuildMutation,
9
+ useRunModulePackageSeedMutation,
10
+ useValidateModulePackageImportMutation,
11
+ } from "../../../redux/api/moduleApi";
12
+ import { showToast } from "../../../redux/features/toastSlice";
13
+ import { useDispatch } from "react-redux";
14
+ import {
15
+ SolidButton,
16
+ SolidCheckbox,
17
+ SolidDialog,
18
+ SolidDialogBody,
19
+ SolidDialogDescription,
20
+ SolidDialogHeader,
21
+ SolidDialogSeparator,
22
+ SolidDialogTitle,
23
+ SolidIcon,
24
+ SolidSpinner,
25
+ } from "../../shad-cn-ui";
26
+ import "./ModulePackageDialog.css";
27
+
28
+ type ModulePackageDialogProps = {
29
+ open: boolean;
30
+ onOpenChange: (open: boolean) => void;
31
+ onImported?: () => void;
32
+ };
33
+
34
+ type ModulePackageImportContentProps = {
35
+ onClose: () => void;
36
+ onImported?: () => void;
37
+ initialTransactionKey?: string | null;
38
+ autoResume?: boolean;
39
+ };
40
+
41
+ type StepStatus = "pending" | "running" | "success" | "warning" | "error";
42
+ type StepKey = "preview" | "import" | "build" | "seed";
43
+
44
+ type StepState = {
45
+ title: string;
46
+ description: string;
47
+ status: StepStatus;
48
+ output?: string;
49
+ };
50
+
51
+ type StepMap = Record<StepKey, StepState>;
52
+
53
+ const STEP_ORDER: StepKey[] = ["preview", "import", "build", "seed"];
54
+
55
+ function createInitialSteps(): StepMap {
56
+ return {
57
+ preview: {
58
+ title: "Preview",
59
+ description: "Upload a `.sldx` archive to validate it and preview its contents automatically.",
60
+ status: "pending",
61
+ },
62
+ import: {
63
+ title: "Import",
64
+ description: "Import the files locally. This may restart the UI and API, dismiss the popup, and require a page refresh before you continue.",
65
+ status: "pending",
66
+ },
67
+ build: {
68
+ title: "Build",
69
+ description: "After the services restart and you refresh this module list page, continue with the build step.",
70
+ status: "pending",
71
+ },
72
+ seed: {
73
+ title: "Seed",
74
+ description: "Seed the imported module after the build step completes.",
75
+ status: "pending",
76
+ },
77
+ };
78
+ }
79
+
80
+ function getErrorMessage(error: any): string {
81
+ const responseData = error?.data;
82
+ if (typeof responseData?.message === "string") return responseData.message;
83
+ if (Array.isArray(responseData?.message)) return responseData.message.join(", ");
84
+ if (typeof responseData?.error === "string") return responseData.error;
85
+ if (typeof error?.error === "string") return error.error;
86
+ if (typeof error?.message === "string") return error.message;
87
+ return "Something went wrong while processing the module package.";
88
+ }
89
+
90
+ function formatBytes(bytes: number) {
91
+ if (!bytes) return "0 B";
92
+ const units = ["B", "KB", "MB", "GB"];
93
+ const exponent = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
94
+ const value = bytes / Math.pow(1024, exponent);
95
+ return `${value.toFixed(exponent === 0 ? 0 : 2)} ${units[exponent]}`;
96
+ }
97
+
98
+ function isResumableModulePackageStatus(status?: string | null) {
99
+ return [
100
+ "import_running",
101
+ "awaiting_restart",
102
+ "build_running",
103
+ "build_failed",
104
+ "build_succeeded",
105
+ "seed_running",
106
+ "seed_failed",
107
+ ].includes(String(status ?? ""));
108
+ }
109
+
110
+ function getBuildStepStatusFromTransaction(transaction: any): StepStatus {
111
+ if (transaction?.status === "build_running") return "warning";
112
+ if (transaction?.outputs?.build) {
113
+ return String(transaction.outputs.build).includes("[failed]") ? "warning" : "success";
114
+ }
115
+ return "pending";
116
+ }
117
+
118
+ function hydrateStepsFromTransaction(transaction: any): StepMap {
119
+ const nextSteps = createInitialSteps();
120
+ const status = String(transaction?.status ?? "");
121
+
122
+ if (transaction?.preview || transaction?.validation) {
123
+ nextSteps.preview = {
124
+ ...nextSteps.preview,
125
+ status: transaction?.validation?.valid ? "success" : "warning",
126
+ description: transaction?.validation?.valid
127
+ ? "Archive validated and ready for import."
128
+ : "Archive preview loaded, but the package has validation issues to fix first.",
129
+ };
130
+ }
131
+
132
+ if (
133
+ transaction?.outputs?.import ||
134
+ ["awaiting_restart", "build_running", "build_failed", "build_succeeded", "seed_running", "seed_failed", "completed"].includes(status)
135
+ ) {
136
+ nextSteps.import = {
137
+ ...nextSteps.import,
138
+ status: "success",
139
+ description: "Archive extracted. Wait for the UI and API to finish restarting, then refresh this page to continue.",
140
+ output: transaction?.outputs?.import ?? undefined,
141
+ };
142
+ }
143
+
144
+ const buildStatus = getBuildStepStatusFromTransaction(transaction);
145
+ if (buildStatus !== "pending") {
146
+ nextSteps.build = {
147
+ ...nextSteps.build,
148
+ status: buildStatus,
149
+ description:
150
+ status === "build_running"
151
+ ? "Build was previously started. Use Build Now to run it again once you are ready."
152
+ : buildStatus === "warning"
153
+ ? transaction?.errorMessage || "The build step completed with warnings."
154
+ : "Both build targets completed successfully.",
155
+ output: transaction?.outputs?.build ?? undefined,
156
+ };
157
+ } else if (status === "awaiting_restart") {
158
+ nextSteps.build = {
159
+ ...nextSteps.build,
160
+ status: "pending",
161
+ description: "Import completed. Once the UI and API are back, refresh this module list page and continue with Build Now.",
162
+ };
163
+ }
164
+
165
+ if (status === "seed_running") {
166
+ nextSteps.seed = {
167
+ ...nextSteps.seed,
168
+ status: "warning",
169
+ description: "Seed was previously started. Use Seed to run it again once you are ready.",
170
+ output: transaction?.outputs?.seed ?? undefined,
171
+ };
172
+ } else if (status === "seed_failed") {
173
+ nextSteps.seed = {
174
+ ...nextSteps.seed,
175
+ status: "warning",
176
+ description: transaction?.errorMessage || "The seed step finished with warnings.",
177
+ output: transaction?.outputs?.seed ?? undefined,
178
+ };
179
+ } else if (status === "completed") {
180
+ nextSteps.seed = {
181
+ ...nextSteps.seed,
182
+ status: "success",
183
+ description: "Module metadata seeding completed successfully.",
184
+ output: transaction?.outputs?.seed ?? undefined,
185
+ };
186
+ }
187
+
188
+ return nextSteps;
189
+ }
190
+
191
+ function getSuggestedStepFromSteps(steps: StepMap, hasPreview: boolean, isArchiveValid: boolean): StepKey {
192
+ if (!hasPreview || !isArchiveValid) return "preview";
193
+ if (steps.import.status !== "success") return "import";
194
+ if (steps.build.status !== "success" && steps.build.status !== "warning") return "build";
195
+ if (steps.seed.status !== "success" && steps.seed.status !== "warning") return "seed";
196
+ return "seed";
197
+ }
198
+
199
+ function StepStatusIcon({ status }: { status: StepStatus }) {
200
+ if (status === "running") {
201
+ return <SolidSpinner size={16} />;
202
+ }
203
+
204
+ if (status === "success") {
205
+ return <SolidIcon name="si-check-circle" />;
206
+ }
207
+
208
+ if (status === "warning" || status === "error") {
209
+ return <SolidIcon name="si-exclamation-triangle" />;
210
+ }
211
+
212
+ return <span className="solid-module-package-step-dot" aria-hidden="true" />;
213
+ }
214
+
215
+ export function ModulePackageDialog({ open, onOpenChange, onImported }: ModulePackageDialogProps) {
216
+ return (
217
+ <SolidDialog
218
+ open={open}
219
+ onOpenChange={(next) => {
220
+ if (!next) {
221
+ onOpenChange(false);
222
+ }
223
+ }}
224
+ className="solid-module-package-dialog"
225
+ dismissible={false}
226
+ showHeader={false}
227
+ >
228
+ {open ? <ModulePackageImportContent onClose={() => onOpenChange(false)} onImported={onImported} /> : null}
229
+ </SolidDialog>
230
+ );
231
+ }
232
+
233
+ export function ModulePackageImportContent({ onClose, onImported, initialTransactionKey = null, autoResume = false }: ModulePackageImportContentProps) {
234
+ const dispatch = useDispatch();
235
+ const [selectedFile, setSelectedFile] = useState<File | null>(null);
236
+ const [previewResponse, setPreviewResponse] = useState<any | null>(null);
237
+ const [transactionKey, setTransactionKey] = useState<string | null>(null);
238
+ const [overwriteExisting, setOverwriteExisting] = useState(false);
239
+ const [steps, setSteps] = useState<StepMap>(() => createInitialSteps());
240
+ const [selectedStep, setSelectedStep] = useState<StepKey>("preview");
241
+ const [finalSummary, setFinalSummary] = useState<string | null>(null);
242
+ const [isPreviewing, setIsPreviewing] = useState(false);
243
+ const [isProcessing, setIsProcessing] = useState(false);
244
+
245
+ const [validateModulePackageImport] = useValidateModulePackageImportMutation();
246
+ const [confirmModulePackageImport] = useConfirmModulePackageImportMutation();
247
+ const [dismissModulePackageImport] = useDismissModulePackageImportMutation();
248
+ const [fetchModulePackageImportStatus] = useLazyGetModulePackageImportStatusQuery();
249
+ const [runModulePackageBuild] = useRunModulePackageBuildMutation();
250
+ const [runModulePackageSeed] = useRunModulePackageSeedMutation();
251
+
252
+ const hasResumedTransactionRef = useRef(false);
253
+ const lastAutoPreviewFileRef = useRef<string | null>(null);
254
+
255
+ const updateStep = useCallback((key: StepKey, nextState: Partial<StepState>) => {
256
+ setSteps((current) => ({
257
+ ...current,
258
+ [key]: {
259
+ ...current[key],
260
+ ...nextState,
261
+ },
262
+ }));
263
+ }, []);
264
+
265
+ const { getRootProps, getInputProps, open: openFilePicker, isDragActive } = useDropzone({
266
+ accept: {
267
+ "application/octet-stream": [".sldx"],
268
+ "application/x-zip-compressed": [".sldx"],
269
+ "application/zip": [".sldx"],
270
+ },
271
+ multiple: false,
272
+ noClick: true,
273
+ noKeyboard: true,
274
+ onDrop: (acceptedFiles) => {
275
+ if (acceptedFiles[0]) {
276
+ setSelectedFile(acceptedFiles[0]);
277
+ }
278
+ },
279
+ });
280
+
281
+ const isArchiveValid = Boolean(previewResponse?.validation?.valid);
282
+ const hasConflicts = (previewResponse?.conflicts?.length ?? 0) > 0;
283
+ const suggestedStep = getSuggestedStepFromSteps(steps, Boolean(previewResponse), isArchiveValid);
284
+
285
+ const canImport = steps.preview.status !== "pending" && isArchiveValid && steps.import.status !== "success" && !isProcessing && !isPreviewing;
286
+ const canRunBuild = steps.import.status === "success" && !isProcessing;
287
+ const canRunSeed = (steps.build.status === "success" || steps.build.status === "warning") && !isProcessing;
288
+ const canContinueFromPreview = Boolean(previewResponse) && isArchiveValid && !isPreviewing;
289
+
290
+ const activeStep = useMemo<StepKey>(() => {
291
+ if (selectedStep === "seed" && !(steps.build.status === "success" || steps.build.status === "warning" || steps.seed.status !== "pending")) {
292
+ return suggestedStep;
293
+ }
294
+
295
+ if (selectedStep === "build" && !(steps.import.status === "success" || steps.build.status !== "pending")) {
296
+ return suggestedStep;
297
+ }
298
+
299
+ if (selectedStep === "import" && !(isArchiveValid || steps.import.status !== "pending")) {
300
+ return suggestedStep;
301
+ }
302
+
303
+ return selectedStep;
304
+ }, [
305
+ previewResponse,
306
+ selectedStep,
307
+ steps.build.status,
308
+ steps.import.status,
309
+ steps.seed.status,
310
+ suggestedStep,
311
+ ]);
312
+
313
+ const completedSteps = STEP_ORDER.filter((stepKey) => steps[stepKey].status === "success").length;
314
+ const maxUnlockedStepIndex = useMemo(() => {
315
+ if (!previewResponse || !isArchiveValid) return 0;
316
+ if (steps.import.status !== "success") return 1;
317
+ if (steps.build.status !== "success" && steps.build.status !== "warning") return 2;
318
+ return 3;
319
+ }, [isArchiveValid, previewResponse, steps.build.status, steps.import.status]);
320
+
321
+ const handlePreviewArchive = useCallback(async () => {
322
+ if (!selectedFile) {
323
+ return;
324
+ }
325
+
326
+ const formData = new FormData();
327
+ formData.append("modulePackage", selectedFile);
328
+
329
+ try {
330
+ setIsPreviewing(true);
331
+ const response = await validateModulePackageImport(formData).unwrap();
332
+ setPreviewResponse(response);
333
+ setTransactionKey(response?.transactionKey ?? null);
334
+ setOverwriteExisting(false);
335
+ setFinalSummary(null);
336
+ setSteps(hydrateStepsFromTransaction(response));
337
+ setSelectedStep("preview");
338
+ dispatch(
339
+ showToast({
340
+ severity: response?.validation?.valid ? "success" : "warn",
341
+ summary: response?.validation?.valid ? "Archive validated" : "Archive needs attention",
342
+ detail: response?.validation?.valid
343
+ ? "Review the preview and continue with the import when you are ready."
344
+ : "The uploaded archive is missing one or more required SolidX validation markers.",
345
+ }),
346
+ );
347
+ } catch (error: any) {
348
+ dispatch(showToast({ severity: "error", summary: "Preview failed", detail: getErrorMessage(error) }));
349
+ } finally {
350
+ setIsPreviewing(false);
351
+ }
352
+ }, [dispatch, selectedFile, validateModulePackageImport]);
353
+
354
+ useEffect(() => {
355
+ if (!selectedFile) {
356
+ lastAutoPreviewFileRef.current = null;
357
+ return;
358
+ }
359
+
360
+ const fileSignature = `${selectedFile.name}:${selectedFile.size}:${selectedFile.lastModified}`;
361
+ if (lastAutoPreviewFileRef.current === fileSignature) {
362
+ return;
363
+ }
364
+
365
+ lastAutoPreviewFileRef.current = fileSignature;
366
+ void handlePreviewArchive();
367
+ }, [handlePreviewArchive, selectedFile]);
368
+
369
+ const executeBuildStep = useCallback(async (activeTransactionKey: string) => {
370
+ updateStep("build", {
371
+ status: "running",
372
+ description: "Running `solidctl build` followed by `solidctl build --ui-only`.",
373
+ });
374
+
375
+ const buildResponse = await runModulePackageBuild({
376
+ transactionKey: activeTransactionKey,
377
+ buildSolidApi: true,
378
+ buildSolidUi: true,
379
+ }).unwrap();
380
+
381
+ const buildFailed = buildResponse?.status === "build_failed";
382
+ updateStep("build", {
383
+ status: buildFailed ? "warning" : "success",
384
+ description: buildFailed
385
+ ? buildResponse?.errorMessage || "The module was imported, but one or more build targets failed."
386
+ : "Both build targets completed successfully.",
387
+ output: buildResponse?.outputs?.build,
388
+ });
389
+
390
+ return buildResponse;
391
+ }, [runModulePackageBuild, updateStep]);
392
+
393
+ const executeSeedStep = useCallback(async (activeTransactionKey: string) => {
394
+ updateStep("seed", {
395
+ status: "running",
396
+ description: "Running `solidctl seed --modules-to-seed` for the imported module.",
397
+ });
398
+
399
+ const seedResponse = await runModulePackageSeed({
400
+ transactionKey: activeTransactionKey,
401
+ seedGlobalMetadata: false,
402
+ }).unwrap();
403
+
404
+ const seedFailed = seedResponse?.status === "seed_failed";
405
+ updateStep("seed", {
406
+ status: seedFailed ? "warning" : "success",
407
+ description: seedFailed
408
+ ? seedResponse?.errorMessage || "The seed step finished with warnings."
409
+ : "Module metadata seeding completed successfully.",
410
+ output: seedResponse?.outputs?.seed,
411
+ });
412
+
413
+ return seedResponse;
414
+ }, [runModulePackageSeed, updateStep]);
415
+
416
+ const handleRunBuild = useCallback(async () => {
417
+ if (!transactionKey) {
418
+ dispatch(showToast({ severity: "error", summary: "Missing transaction", detail: "Import the module before running the build step." }));
419
+ return;
420
+ }
421
+
422
+ try {
423
+ setIsProcessing(true);
424
+ setFinalSummary(null);
425
+ const buildResponse = await executeBuildStep(transactionKey);
426
+ setPreviewResponse(buildResponse);
427
+ setSelectedStep("seed");
428
+ setIsProcessing(false);
429
+ } catch (error: any) {
430
+ updateStep("build", {
431
+ status: "error",
432
+ description: getErrorMessage(error),
433
+ });
434
+ setFinalSummary("The build step needs attention before you continue.");
435
+ setIsProcessing(false);
436
+ }
437
+ }, [dispatch, executeBuildStep, transactionKey, updateStep]);
438
+
439
+ const handleRunSeed = useCallback(async () => {
440
+ if (!transactionKey) {
441
+ dispatch(showToast({ severity: "error", summary: "Missing transaction", detail: "Import the module before running the seed step." }));
442
+ return;
443
+ }
444
+
445
+ try {
446
+ setIsProcessing(true);
447
+ setFinalSummary(null);
448
+ const seedResponse = await executeSeedStep(transactionKey);
449
+ setPreviewResponse(seedResponse);
450
+ setSelectedStep("seed");
451
+ setIsProcessing(false);
452
+
453
+ const buildFailed = steps.build.status === "warning" || String(previewResponse?.outputs?.build ?? "").includes("[failed]");
454
+ const seedFailed = seedResponse?.status === "seed_failed";
455
+
456
+ if (!seedFailed) {
457
+ onImported?.();
458
+ }
459
+
460
+ if (buildFailed && !seedFailed) {
461
+ setFinalSummary("Module imported and seeded successfully, but the build step reported errors.");
462
+ return;
463
+ }
464
+
465
+ if (seedFailed) {
466
+ setFinalSummary("Module imported, but the seed step needs attention.");
467
+ return;
468
+ }
469
+
470
+ setFinalSummary("Module import completed successfully.");
471
+ } catch (error: any) {
472
+ updateStep("seed", {
473
+ status: "error",
474
+ description: getErrorMessage(error),
475
+ });
476
+ setFinalSummary("The seed step needs attention before the workflow can be closed.");
477
+ setIsProcessing(false);
478
+ }
479
+ }, [dispatch, executeSeedStep, onImported, previewResponse?.outputs?.build, steps.build.status, transactionKey, updateStep]);
480
+
481
+ useEffect(() => {
482
+ if (!initialTransactionKey || hasResumedTransactionRef.current) {
483
+ return;
484
+ }
485
+
486
+ hasResumedTransactionRef.current = true;
487
+
488
+ const loadTransaction = async () => {
489
+ try {
490
+ const transaction = await fetchModulePackageImportStatus({ transactionKey: initialTransactionKey }).unwrap();
491
+ const hydratedSteps = hydrateStepsFromTransaction(transaction);
492
+ setPreviewResponse(transaction);
493
+ setTransactionKey(transaction?.transactionKey ?? null);
494
+ setSteps(hydratedSteps);
495
+ setSelectedStep(getSuggestedStepFromSteps(hydratedSteps, Boolean(transaction?.preview || transaction?.validation), Boolean(transaction?.validation?.valid)));
496
+
497
+ if (transaction?.status === "completed") {
498
+ setFinalSummary("Module import completed successfully.");
499
+ return;
500
+ }
501
+
502
+ if (transaction?.status === "seed_failed") {
503
+ setFinalSummary("Module imported, but the seed step needs attention.");
504
+ return;
505
+ }
506
+
507
+ if (!autoResume || !isResumableModulePackageStatus(transaction?.status)) {
508
+ return;
509
+ }
510
+ } catch (error: any) {
511
+ dispatch(showToast({ severity: "error", summary: "Unable to resume import", detail: getErrorMessage(error) }));
512
+ }
513
+ };
514
+
515
+ void loadTransaction();
516
+ }, [autoResume, dispatch, fetchModulePackageImportStatus, initialTransactionKey]);
517
+
518
+ const handleStartImport = async () => {
519
+ if (!transactionKey) {
520
+ dispatch(showToast({ severity: "error", summary: "Missing preview", detail: "Upload an archive and wait for preview to finish first." }));
521
+ return;
522
+ }
523
+
524
+ try {
525
+ setIsProcessing(true);
526
+ setFinalSummary(null);
527
+ updateStep("import", {
528
+ status: "running",
529
+ description: "Extracting the archive and placing files into `solid-api` and `solid-ui`.",
530
+ });
531
+
532
+ const response = await confirmModulePackageImport({
533
+ transactionKey,
534
+ overwriteExisting,
535
+ }).unwrap();
536
+
537
+ updateStep("import", {
538
+ status: "success",
539
+ description: "Archive extracted. The local UI/API may restart now, so refresh this page once both services are back.",
540
+ output: response?.outputs?.import,
541
+ });
542
+ setPreviewResponse(response);
543
+ setIsProcessing(false);
544
+ dispatch(
545
+ showToast({
546
+ severity: "success",
547
+ summary: "Module imported",
548
+ detail: "The module files were placed locally. Wait for the UI and API to restart, then refresh this module list page to continue with build and seed.",
549
+ }),
550
+ );
551
+ onClose();
552
+ } catch (error: any) {
553
+ updateStep("import", {
554
+ status: "error",
555
+ description: getErrorMessage(error),
556
+ });
557
+ setFinalSummary("The module import could not be completed.");
558
+ setIsProcessing(false);
559
+ }
560
+ };
561
+
562
+ const handleClose = () => {
563
+ if (isProcessing) return;
564
+ if (finalSummary && transactionKey) {
565
+ void dismissModulePackageImport({ transactionKey });
566
+ }
567
+ onClose();
568
+ };
569
+
570
+ const renderPreviewContent = () => {
571
+ return (
572
+ <div className="solid-module-package-preview">
573
+ {!selectedFile ? (
574
+ <div
575
+ {...getRootProps({
576
+ className: `solid-module-package-dropzone${isDragActive ? " is-active" : ""}`,
577
+ })}
578
+ >
579
+ <input {...getInputProps()} />
580
+ <div className="solid-module-package-dropzone__icon">
581
+ <UploadCloud size={22} />
582
+ </div>
583
+ <div className="solid-module-package-dropzone__copy">
584
+ <div className="solid-module-package-dropzone__title">Upload `.sldx` archive</div>
585
+ <p>Choose a packaged SolidX module archive from the local file system. Preview starts automatically after upload.</p>
586
+ </div>
587
+ <div className="solid-module-package-dropzone__actions">
588
+ <SolidButton
589
+ type="button"
590
+ size="small"
591
+ variant="outline"
592
+ onClick={(event) => {
593
+ event.stopPropagation();
594
+ openFilePicker();
595
+ }}
596
+ >
597
+ Browse archive
598
+ </SolidButton>
599
+ </div>
600
+ </div>
601
+ ) : (
602
+ <div className="solid-module-package-file-card">
603
+ <div className="solid-module-package-file-card__main">
604
+ <div className="solid-module-package-file-card__icon">
605
+ <FileArchive size={18} />
606
+ </div>
607
+ <div>
608
+ <div className="solid-module-package-file-card__name">{selectedFile.name}</div>
609
+ <div className="solid-module-package-file-card__meta">
610
+ {formatBytes(selectedFile.size)}
611
+ {isPreviewing ? " • Previewing archive..." : ""}
612
+ </div>
613
+ </div>
614
+ </div>
615
+ <SolidButton
616
+ type="button"
617
+ size="small"
618
+ variant="ghost"
619
+ onClick={() => {
620
+ setSelectedFile(null);
621
+ setPreviewResponse(null);
622
+ setTransactionKey(null);
623
+ setOverwriteExisting(false);
624
+ setFinalSummary(null);
625
+ setSelectedStep("preview");
626
+ setSteps(createInitialSteps());
627
+ }}
628
+ disabled={isProcessing}
629
+ >
630
+ Remove
631
+ </SolidButton>
632
+ </div>
633
+ )}
634
+
635
+ {!previewResponse ? (
636
+ <div className="solid-module-package-empty">
637
+ {isPreviewing ? <SolidSpinner size={18} /> : <FolderTree size={18} />}
638
+ <p>
639
+ {isPreviewing
640
+ ? "Reading the archive and validating the SolidX markers."
641
+ : "Upload an archive to start the automatic preview and validation flow."}
642
+ </p>
643
+ </div>
644
+ ) : (
645
+ <>
646
+ <div className="solid-module-package-metrics">
647
+ <div className="solid-module-package-metric">
648
+ <span className="solid-module-package-metric__label">Module</span>
649
+ <span className="solid-module-package-metric__value">{previewResponse?.preview?.module?.name || "Unknown"}</span>
650
+ </div>
651
+ <div className="solid-module-package-metric">
652
+ <span className="solid-module-package-metric__label">solid-api files</span>
653
+ <span className="solid-module-package-metric__value">{previewResponse?.preview?.contentsSummary?.solidApiEntries ?? 0}</span>
654
+ </div>
655
+ <div className="solid-module-package-metric">
656
+ <span className="solid-module-package-metric__label">solid-ui files</span>
657
+ <span className="solid-module-package-metric__value">{previewResponse?.preview?.contentsSummary?.solidUiEntries ?? 0}</span>
658
+ </div>
659
+ </div>
660
+
661
+ <div className="solid-module-package-checklist">
662
+ <div className="solid-module-package-checklist__section">
663
+ <div className="solid-module-package-checklist__title">Required markers</div>
664
+ <ul className="solid-module-package-inline-list">
665
+ <li>{previewResponse?.preview?.requiredPaths?.metadataPath}</li>
666
+ <li>{previewResponse?.preview?.requiredPaths?.apiModulePath}</li>
667
+ <li>{previewResponse?.preview?.requiredPaths?.uiModulePath}</li>
668
+ </ul>
669
+ </div>
670
+
671
+ {(previewResponse?.validation?.warnings?.length ?? 0) > 0 ? (
672
+ <div className="solid-module-package-notice is-warning">
673
+ <div className="solid-module-package-notice__title">Warnings</div>
674
+ <ul className="solid-module-package-inline-list">
675
+ {previewResponse.validation.warnings.map((warning: string) => (
676
+ <li key={warning}>{warning}</li>
677
+ ))}
678
+ </ul>
679
+ </div>
680
+ ) : null}
681
+
682
+ {(previewResponse?.validation?.errors?.length ?? 0) > 0 ? (
683
+ <div className="solid-module-package-notice is-danger">
684
+ <div className="solid-module-package-notice__title">Validation issues</div>
685
+ <ul className="solid-module-package-inline-list">
686
+ {previewResponse.validation.errors.map((error: string) => (
687
+ <li key={error}>{error}</li>
688
+ ))}
689
+ </ul>
690
+ </div>
691
+ ) : null}
692
+
693
+ {hasConflicts ? (
694
+ <div className="solid-module-package-notice is-warning">
695
+ <div className="solid-module-package-notice__title">Existing files detected</div>
696
+ <ul className="solid-module-package-inline-list">
697
+ {previewResponse.conflicts.map((conflict: string) => (
698
+ <li key={conflict}>{conflict}</li>
699
+ ))}
700
+ </ul>
701
+ <SolidCheckbox
702
+ checked={overwriteExisting}
703
+ onChange={(event) => setOverwriteExisting(event.currentTarget.checked)}
704
+ label="Overwrite the existing module folders during import"
705
+ />
706
+ </div>
707
+ ) : null}
708
+ </div>
709
+
710
+ <div className="solid-module-package-tree">
711
+ {(previewResponse?.preview?.fileTree ?? []).map((entry: string) => (
712
+ <div key={entry} className="solid-module-package-tree__row">
713
+ {entry}
714
+ </div>
715
+ ))}
716
+ </div>
717
+ </>
718
+ )}
719
+ </div>
720
+ );
721
+ };
722
+
723
+ const renderActiveStepCta = () => {
724
+ if (activeStep === "preview") {
725
+ return (
726
+ <SolidButton
727
+ type="button"
728
+ size="small"
729
+ onClick={() => setSelectedStep("import")}
730
+ disabled={!canContinueFromPreview}
731
+ rightIcon={<Sparkles size={14} />}
732
+ >
733
+ Continue to import
734
+ </SolidButton>
735
+ );
736
+ }
737
+
738
+ if (activeStep === "import") {
739
+ return (
740
+ <SolidButton
741
+ type="button"
742
+ size="small"
743
+ onClick={handleStartImport}
744
+ disabled={!canImport}
745
+ loading={isProcessing && steps.import.status === "running"}
746
+ leftIcon={<Sparkles size={14} />}
747
+ >
748
+ Import Module
749
+ </SolidButton>
750
+ );
751
+ }
752
+
753
+ if (activeStep === "build") {
754
+ return (
755
+ <SolidButton
756
+ type="button"
757
+ size="small"
758
+ variant="outline"
759
+ onClick={handleRunBuild}
760
+ disabled={!canRunBuild}
761
+ loading={isProcessing && steps.build.status === "running"}
762
+ >
763
+ {steps.build.status === "success" || steps.build.status === "warning" ? "Build Again" : "Build Now"}
764
+ </SolidButton>
765
+ );
766
+ }
767
+
768
+ if (activeStep === "seed") {
769
+ return (
770
+ <SolidButton
771
+ type="button"
772
+ size="small"
773
+ variant="outline"
774
+ onClick={handleRunSeed}
775
+ disabled={!canRunSeed}
776
+ loading={isProcessing && steps.seed.status === "running"}
777
+ >
778
+ {steps.seed.status === "success" || steps.seed.status === "warning" ? "Seed Again" : "Seed"}
779
+ </SolidButton>
780
+ );
781
+ }
782
+
783
+ return null;
784
+ };
785
+
786
+ const renderActiveStepContent = () => {
787
+ if (activeStep === "preview") {
788
+ return renderPreviewContent();
789
+ }
790
+
791
+ if (activeStep === "import") {
792
+ return (
793
+ <div className="solid-module-package-step-stack">
794
+ <div className="solid-module-package-notice is-warning">
795
+ <div className="solid-module-package-notice__title">What happens after import</div>
796
+ <ul className="solid-module-package-inline-list">
797
+ <li>Depending on the files in this archive, both the UI and API services may restart immediately.</li>
798
+ <li>This popup may get dismissed as part of that restart.</li>
799
+ <li>Wait for both services to come back, then refresh this module list page to continue with build and seed.</li>
800
+ </ul>
801
+ </div>
802
+ {steps.import.output ? <pre className="solid-module-package-step__output">{steps.import.output}</pre> : null}
803
+ </div>
804
+ );
805
+ }
806
+
807
+ if (activeStep === "build" && steps.build.output) {
808
+ return <pre className="solid-module-package-step__output">{steps.build.output}</pre>;
809
+ }
810
+
811
+ if (activeStep === "seed" && steps.seed.output) {
812
+ return <pre className="solid-module-package-step__output">{steps.seed.output}</pre>;
813
+ }
814
+
815
+ return null;
816
+ };
817
+
818
+ return (
819
+ <>
820
+ <SolidDialogHeader className="solid-filter-dialog-head solid-module-package-dialog__header">
821
+ <div>
822
+ <SolidDialogTitle className="solid-filter-dialog-title m-0">Import Module Package</SolidDialogTitle>
823
+ <SolidDialogDescription className="solid-filter-dialog-subtitle m-0">
824
+ Upload a `.sldx` archive, let SolidX preview it automatically, then move through import, build, and seed.
825
+ </SolidDialogDescription>
826
+ </div>
827
+ {!isProcessing ? (
828
+ <button type="button" className="solid-filter-dialog-close solid-radix-dialog-close" aria-label="Close" onClick={handleClose}>
829
+ <X size={16} />
830
+ </button>
831
+ ) : null}
832
+ </SolidDialogHeader>
833
+
834
+ <SolidDialogSeparator className="solid-filter-dialog-sep" />
835
+
836
+ <SolidDialogBody className="solid-filter-dialog-body solid-module-package-dialog__body">
837
+ <section className="solid-module-package-shell">
838
+ <div className="solid-module-package-panel solid-module-package-panel--wizard">
839
+ <div className="solid-module-package-stepper">
840
+ {STEP_ORDER.map((stepKey, index) => {
841
+ const step = steps[stepKey];
842
+ const isCurrent = activeStep === stepKey;
843
+ const isDone = step.status === "success";
844
+ const isWarning = step.status === "warning" || step.status === "error";
845
+ const isUnlocked = index <= maxUnlockedStepIndex;
846
+
847
+ return (
848
+ <div
849
+ key={stepKey}
850
+ className={`solid-module-package-stepper__item${isCurrent ? " is-current" : ""}${isDone ? " is-done" : ""}${isWarning ? " is-warning" : ""}${isUnlocked ? " is-clickable" : ""}`}
851
+ >
852
+ <div className="solid-module-package-stepper__track" />
853
+ <button
854
+ type="button"
855
+ className="solid-module-package-stepper__button"
856
+ onClick={() => setSelectedStep(stepKey)}
857
+ disabled={!isUnlocked}
858
+ >
859
+ <div className="solid-module-package-stepper__node">
860
+ {isDone ? <SolidIcon name="si-check" /> : <span>{index + 1}</span>}
861
+ </div>
862
+ <div className="solid-module-package-stepper__label">{step.title}</div>
863
+ <div className="solid-module-package-stepper__caption">{step.description}</div>
864
+ </button>
865
+ </div>
866
+ );
867
+ })}
868
+ </div>
869
+
870
+ <div className="solid-module-package-stage">
871
+ <div className="solid-module-package-stage__meta">
872
+ <span>Step {STEP_ORDER.indexOf(activeStep) + 1} of {STEP_ORDER.length}</span>
873
+ <span>{completedSteps} completed</span>
874
+ </div>
875
+ <div className="solid-module-package-stage__header">
876
+ <p>{steps[activeStep].description}</p>
877
+ <div className={`solid-module-package-stage__status is-${steps[activeStep].status}`}>
878
+ <StepStatusIcon status={steps[activeStep].status} />
879
+ </div>
880
+ </div>
881
+
882
+ {renderActiveStepContent()}
883
+
884
+ <div className="solid-module-package-stage__cta">{renderActiveStepCta()}</div>
885
+ </div>
886
+
887
+ {finalSummary ? (
888
+ <div className="solid-module-package-summary">
889
+ <span className="solid-module-package-summary__copy">{finalSummary}</span>
890
+ <SolidButton
891
+ type="button"
892
+ size="small"
893
+ variant="outline"
894
+ leftIcon={<RefreshCw size={14} />}
895
+ onClick={() => window.location.reload()}
896
+ >
897
+ Reload
898
+ </SolidButton>
899
+ </div>
900
+ ) : null}
901
+ </div>
902
+ </section>
903
+ </SolidDialogBody>
904
+ </>
905
+ );
906
+ }