@solidxai/core-ui 0.1.9-beta.9 → 0.1.10

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 (871) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/auth/handleLogout.d.ts +1 -1
  3. package/dist/adapters/auth/handleLogout.d.ts.map +1 -1
  4. package/dist/adapters/auth/handleLogout.js +20 -32
  5. package/dist/adapters/auth/handleLogout.js.map +1 -1
  6. package/dist/adapters/auth/handleLogout.ts +7 -14
  7. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  8. package/dist/components/auth/AuthLayout.js +23 -19
  9. package/dist/components/auth/AuthLayout.js.map +1 -1
  10. package/dist/components/auth/AuthLayout.tsx +62 -52
  11. package/dist/components/auth/ForgotPasswordThankYou.js +1 -1
  12. package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
  13. package/dist/components/auth/ForgotPasswordThankYou.tsx +2 -2
  14. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.d.ts +2 -0
  15. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.d.ts.map +1 -0
  16. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.js +112 -0
  17. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.js.map +1 -0
  18. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.tsx +78 -0
  19. package/dist/components/auth/SolidChangeForcePassword.js +2 -2
  20. package/dist/components/auth/SolidChangeForcePassword.js.map +1 -1
  21. package/dist/components/auth/SolidChangeForcePassword.tsx +13 -13
  22. package/dist/components/auth/SolidForgotPassword.js +1 -1
  23. package/dist/components/auth/SolidForgotPassword.js.map +1 -1
  24. package/dist/components/auth/SolidForgotPassword.tsx +3 -3
  25. package/dist/components/auth/SolidInitialLoginOtp.js +1 -1
  26. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  27. package/dist/components/auth/SolidInitialLoginOtp.tsx +2 -2
  28. package/dist/components/auth/SolidInitiateRegisterOtp.js +1 -1
  29. package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
  30. package/dist/components/auth/SolidInitiateRegisterOtp.tsx +2 -2
  31. package/dist/components/auth/SolidLogin.js +4 -4
  32. package/dist/components/auth/SolidLogin.js.map +1 -1
  33. package/dist/components/auth/SolidLogin.tsx +13 -13
  34. package/dist/components/auth/SolidOTPVerify.d.ts +3 -0
  35. package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -0
  36. package/dist/components/auth/SolidOTPVerify.js +67 -0
  37. package/dist/components/auth/SolidOTPVerify.js.map +1 -0
  38. package/dist/components/auth/SolidOTPVerify.tsx +133 -0
  39. package/dist/components/auth/SolidRegister.js +6 -6
  40. package/dist/components/auth/SolidRegister.js.map +1 -1
  41. package/dist/components/auth/SolidRegister.tsx +15 -15
  42. package/dist/components/auth/SolidResetPassword.js +2 -2
  43. package/dist/components/auth/SolidResetPassword.js.map +1 -1
  44. package/dist/components/auth/SolidResetPassword.tsx +8 -8
  45. package/dist/components/common/AuthBanner.js.map +1 -1
  46. package/dist/components/common/BackButton.js +1 -1
  47. package/dist/components/common/BackButton.js.map +1 -1
  48. package/dist/components/common/BackButton.tsx +1 -1
  49. package/dist/components/common/CancelButton.js +2 -2
  50. package/dist/components/common/CancelButton.js.map +1 -1
  51. package/dist/components/common/CancelButton.tsx +3 -3
  52. package/dist/components/common/GeneralSettings.js +18 -18
  53. package/dist/components/common/GeneralSettings.js.map +1 -1
  54. package/dist/components/common/GeneralSettings.tsx +137 -137
  55. package/dist/components/common/SettingsComponent.d.ts.map +1 -1
  56. package/dist/components/common/SettingsComponent.js +4 -1
  57. package/dist/components/common/SettingsComponent.js.map +1 -1
  58. package/dist/components/common/SettingsComponent.module.css +95 -2
  59. package/dist/components/common/SettingsComponent.tsx +4 -1
  60. package/dist/components/common/SocialMediaLogin.d.ts.map +1 -1
  61. package/dist/components/common/SocialMediaLogin.js +1 -1
  62. package/dist/components/common/SocialMediaLogin.js.map +1 -1
  63. package/dist/components/common/SocialMediaLogin.tsx +4 -0
  64. package/dist/components/common/SolidExport.d.ts +1 -1
  65. package/dist/components/common/SolidExport.d.ts.map +1 -1
  66. package/dist/components/common/SolidExport.js +11 -4
  67. package/dist/components/common/SolidExport.js.map +1 -1
  68. package/dist/components/common/SolidExport.tsx +12 -2
  69. package/dist/components/common/SolidFaviconProvider.d.ts +3 -0
  70. package/dist/components/common/SolidFaviconProvider.d.ts.map +1 -0
  71. package/dist/components/common/SolidFaviconProvider.js +102 -0
  72. package/dist/components/common/SolidFaviconProvider.js.map +1 -0
  73. package/dist/components/common/SolidFaviconProvider.tsx +55 -0
  74. package/dist/components/common/SolidFormHeader.js +1 -1
  75. package/dist/components/common/SolidFormHeader.js.map +1 -1
  76. package/dist/components/common/SolidFormHeader.tsx +1 -1
  77. package/dist/components/common/SolidModuleHome.js +2 -2
  78. package/dist/components/common/SolidModuleHome.js.map +1 -1
  79. package/dist/components/common/SolidModuleHome.tsx +7 -7
  80. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +3 -3
  81. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
  82. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +6 -6
  83. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.js +1 -1
  84. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.js.map +1 -1
  85. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.tsx +4 -4
  86. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.js +1 -1
  87. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.js.map +1 -1
  88. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.tsx +4 -4
  89. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.js +1 -1
  90. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.js.map +1 -1
  91. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.tsx +1 -1
  92. package/dist/components/core/card/SolidCardView.js +1 -1
  93. package/dist/components/core/card/SolidCardView.js.map +1 -1
  94. package/dist/components/core/card/SolidCardView.tsx +6 -6
  95. package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
  96. package/dist/components/core/card/SolidCardViewConfigure.js +1 -1
  97. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  98. package/dist/components/core/card/SolidCardViewConfigure.tsx +5 -1
  99. package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
  100. package/dist/components/core/chatter/SolidChatter.js +29 -16
  101. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  102. package/dist/components/core/chatter/SolidChatter.tsx +28 -14
  103. package/dist/components/core/chatter/SolidChatterAuditMessage.js +1 -1
  104. package/dist/components/core/chatter/SolidChatterAuditMessage.js.map +1 -1
  105. package/dist/components/core/chatter/SolidChatterAuditMessage.tsx +2 -2
  106. package/dist/components/core/chatter/SolidChatterHeader.d.ts.map +1 -1
  107. package/dist/components/core/chatter/SolidChatterHeader.js +2 -2
  108. package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
  109. package/dist/components/core/chatter/SolidChatterHeader.tsx +10 -6
  110. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts +1 -0
  111. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts.map +1 -1
  112. package/dist/components/core/chatter/SolidChatterMessageBox.js +151 -12
  113. package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
  114. package/dist/components/core/chatter/SolidChatterMessageBox.tsx +256 -15
  115. package/dist/components/core/chatter/SolidMessageComposer.d.ts.map +1 -1
  116. package/dist/components/core/chatter/SolidMessageComposer.js +3 -2
  117. package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
  118. package/dist/components/core/chatter/SolidMessageComposer.tsx +11 -9
  119. package/dist/components/core/chatter/chatter.module.css +1 -1
  120. package/dist/components/core/common/FilterComponent.d.ts.map +1 -1
  121. package/dist/components/core/common/FilterComponent.js +5 -3
  122. package/dist/components/core/common/FilterComponent.js.map +1 -1
  123. package/dist/components/core/common/FilterComponent.tsx +6 -2
  124. package/dist/components/core/common/GroupingComponent.d.ts.map +1 -1
  125. package/dist/components/core/common/GroupingComponent.js +2 -2
  126. package/dist/components/core/common/GroupingComponent.js.map +1 -1
  127. package/dist/components/core/common/GroupingComponent.tsx +2 -0
  128. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +2 -0
  129. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +1 -0
  130. package/dist/components/core/common/LoadDynamicJsxComponent.js +50 -0
  131. package/dist/components/core/common/LoadDynamicJsxComponent.js.map +1 -0
  132. package/dist/components/core/common/LoadDynamicJsxComponent.tsx +70 -0
  133. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.d.ts.map +1 -1
  134. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js +1 -10
  135. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js.map +1 -1
  136. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.tsx +1 -8
  137. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.d.ts.map +1 -1
  138. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js +6 -11
  139. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
  140. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +5 -31
  141. package/dist/components/core/common/SolidCreateButton.d.ts.map +1 -1
  142. package/dist/components/core/common/SolidCreateButton.js +16 -1
  143. package/dist/components/core/common/SolidCreateButton.js.map +1 -1
  144. package/dist/components/core/common/SolidCreateButton.tsx +18 -1
  145. package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +61 -1
  146. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.d.ts.map +1 -1
  147. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js +3 -1
  148. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
  149. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +4 -2
  150. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.d.ts.map +1 -1
  151. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.js +19 -1
  152. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.js.map +1 -1
  153. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.tsx +16 -3
  154. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.d.ts.map +1 -1
  155. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +168 -26
  156. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
  157. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +174 -10
  158. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  159. package/dist/components/core/common/SolidGlobalSearchElement.js +180 -90
  160. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  161. package/dist/components/core/common/SolidGlobalSearchElement.tsx +167 -49
  162. package/dist/components/core/common/SolidLayoutViews.js +2 -2
  163. package/dist/components/core/common/SolidLayoutViews.js.map +1 -1
  164. package/dist/components/core/common/SolidLayoutViews.tsx +4 -4
  165. package/dist/components/core/common/SolidListViewOptions.js +1 -1
  166. package/dist/components/core/common/SolidListViewOptions.js.map +1 -1
  167. package/dist/components/core/common/SolidListViewOptions.tsx +1 -1
  168. package/dist/components/core/common/SolidPasswordHelperText.js +2 -2
  169. package/dist/components/core/common/SolidPasswordHelperText.js.map +1 -1
  170. package/dist/components/core/common/SolidPasswordHelperText.tsx +4 -4
  171. package/dist/components/core/common/SolidSaveCustomFilterForm.d.ts.map +1 -1
  172. package/dist/components/core/common/SolidSaveCustomFilterForm.js +1 -1
  173. package/dist/components/core/common/SolidSaveCustomFilterForm.js.map +1 -1
  174. package/dist/components/core/common/SolidSaveCustomFilterForm.tsx +0 -1
  175. package/dist/components/core/common/SolidSearchBox.js +1 -1
  176. package/dist/components/core/common/SolidSearchBox.js.map +1 -1
  177. package/dist/components/core/common/SolidSearchBox.tsx +1 -1
  178. package/dist/components/core/common/SolidXAiIframe.js +1 -1
  179. package/dist/components/core/common/SolidXAiIframe.js.map +1 -1
  180. package/dist/components/core/common/SolidXAiIframe.tsx +1 -1
  181. package/dist/components/core/dashboard/mappers/echartsOptionMapper.d.ts +4 -0
  182. package/dist/components/core/dashboard/mappers/echartsOptionMapper.d.ts.map +1 -0
  183. package/dist/components/core/dashboard/mappers/echartsOptionMapper.js +79 -0
  184. package/dist/components/core/dashboard/mappers/echartsOptionMapper.js.map +1 -0
  185. package/dist/components/core/dashboard/mappers/echartsOptionMapper.ts +81 -0
  186. package/dist/components/core/dashboard/widgets/DefaultDashboardBarChartWidget.d.ts +3 -0
  187. package/dist/components/core/dashboard/widgets/DefaultDashboardBarChartWidget.d.ts.map +1 -0
  188. package/dist/components/core/dashboard/widgets/DefaultDashboardBarChartWidget.js +17 -0
  189. package/dist/components/core/dashboard/widgets/DefaultDashboardBarChartWidget.js.map +1 -0
  190. package/dist/components/core/dashboard/widgets/DefaultDashboardBarChartWidget.tsx +6 -0
  191. package/dist/components/core/dashboard/widgets/DefaultDashboardChartWidget.d.ts +3 -0
  192. package/dist/components/core/dashboard/widgets/DefaultDashboardChartWidget.d.ts.map +1 -0
  193. package/dist/components/core/dashboard/widgets/DefaultDashboardChartWidget.js +41 -0
  194. package/dist/components/core/dashboard/widgets/DefaultDashboardChartWidget.js.map +1 -0
  195. package/dist/components/core/dashboard/widgets/DefaultDashboardChartWidget.tsx +56 -0
  196. package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.d.ts +3 -0
  197. package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.d.ts.map +1 -0
  198. package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.js +14 -0
  199. package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.js.map +1 -0
  200. package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.tsx +19 -0
  201. package/dist/components/core/dashboard/widgets/DefaultDashboardLineChartWidget.d.ts +3 -0
  202. package/dist/components/core/dashboard/widgets/DefaultDashboardLineChartWidget.d.ts.map +1 -0
  203. package/dist/components/core/dashboard/widgets/DefaultDashboardLineChartWidget.js +17 -0
  204. package/dist/components/core/dashboard/widgets/DefaultDashboardLineChartWidget.js.map +1 -0
  205. package/dist/components/core/dashboard/widgets/DefaultDashboardLineChartWidget.tsx +6 -0
  206. package/dist/components/core/dashboard/widgets/DefaultDashboardPieChartWidget.d.ts +3 -0
  207. package/dist/components/core/dashboard/widgets/DefaultDashboardPieChartWidget.d.ts.map +1 -0
  208. package/dist/components/core/dashboard/widgets/DefaultDashboardPieChartWidget.js +17 -0
  209. package/dist/components/core/dashboard/widgets/DefaultDashboardPieChartWidget.js.map +1 -0
  210. package/dist/components/core/dashboard/widgets/DefaultDashboardPieChartWidget.tsx +6 -0
  211. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.d.ts +3 -0
  212. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.d.ts.map +1 -0
  213. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.js +12 -0
  214. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.js.map +1 -0
  215. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.tsx +39 -0
  216. package/dist/components/core/dashboard/widgets/DefaultDashboardUnknownWidget.d.ts +3 -0
  217. package/dist/components/core/dashboard/widgets/DefaultDashboardUnknownWidget.d.ts.map +1 -0
  218. package/dist/components/core/dashboard/widgets/DefaultDashboardUnknownWidget.js +7 -0
  219. package/dist/components/core/dashboard/widgets/DefaultDashboardUnknownWidget.js.map +1 -0
  220. package/dist/components/core/dashboard/widgets/DefaultDashboardUnknownWidget.tsx +9 -0
  221. package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.d.ts +3 -0
  222. package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.d.ts.map +1 -0
  223. package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.js +203 -0
  224. package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.js.map +1 -0
  225. package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.tsx +251 -0
  226. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.js +1 -1
  227. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.js.map +1 -1
  228. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.tsx +2 -2
  229. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.d.ts +16 -0
  230. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.d.ts.map +1 -0
  231. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.js +31 -0
  232. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.js.map +1 -0
  233. package/dist/components/core/extension/solid-core/metadata/MetadataExplorerFormWidget.tsx +43 -0
  234. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.d.ts +3 -0
  235. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.d.ts.map +1 -0
  236. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.js +141 -0
  237. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.js.map +1 -0
  238. package/dist/components/core/extension/solid-core/moduleMetadata/list/ClearModulePackageRuntimeHeaderAction.tsx +205 -0
  239. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts +4 -0
  240. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts.map +1 -0
  241. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js +112 -0
  242. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js.map +1 -0
  243. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx +146 -0
  244. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts +11 -0
  245. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts.map +1 -0
  246. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js +22 -0
  247. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js.map +1 -0
  248. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx +36 -0
  249. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.d.ts +3 -0
  250. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.d.ts.map +1 -0
  251. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.js +133 -0
  252. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.js.map +1 -0
  253. package/dist/components/core/extension/solid-core/moduleMetadata/list/moduleMetadataListOnLoad.ts +76 -0
  254. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +2 -2
  255. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  256. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +5 -5
  257. package/dist/components/core/field/FieldListViewData.js +2 -2
  258. package/dist/components/core/field/FieldListViewData.js.map +1 -1
  259. package/dist/components/core/field/FieldListViewData.tsx +5 -5
  260. package/dist/components/core/filter/fields/SolidBooleanField.d.ts.map +1 -1
  261. package/dist/components/core/filter/fields/SolidBooleanField.js +2 -2
  262. package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
  263. package/dist/components/core/filter/fields/SolidBooleanField.tsx +5 -13
  264. package/dist/components/core/filter/fields/SolidDateField.d.ts.map +1 -1
  265. package/dist/components/core/filter/fields/SolidDateField.js +2 -2
  266. package/dist/components/core/filter/fields/SolidDateField.js.map +1 -1
  267. package/dist/components/core/filter/fields/SolidDateField.tsx +4 -3
  268. package/dist/components/core/filter/fields/SolidDatetimeField.d.ts.map +1 -1
  269. package/dist/components/core/filter/fields/SolidDatetimeField.js +2 -2
  270. package/dist/components/core/filter/fields/SolidDatetimeField.js.map +1 -1
  271. package/dist/components/core/filter/fields/SolidDatetimeField.tsx +5 -4
  272. package/dist/components/core/filter/fields/SolidExternalIdField.d.ts.map +1 -1
  273. package/dist/components/core/filter/fields/SolidExternalIdField.js +2 -2
  274. package/dist/components/core/filter/fields/SolidExternalIdField.js.map +1 -1
  275. package/dist/components/core/filter/fields/SolidExternalIdField.tsx +4 -3
  276. package/dist/components/core/filter/fields/SolidIdField.d.ts.map +1 -1
  277. package/dist/components/core/filter/fields/SolidIdField.js +2 -2
  278. package/dist/components/core/filter/fields/SolidIdField.js.map +1 -1
  279. package/dist/components/core/filter/fields/SolidIdField.tsx +3 -2
  280. package/dist/components/core/filter/fields/SolidIntField.d.ts.map +1 -1
  281. package/dist/components/core/filter/fields/SolidIntField.js +2 -2
  282. package/dist/components/core/filter/fields/SolidIntField.js.map +1 -1
  283. package/dist/components/core/filter/fields/SolidIntField.tsx +4 -3
  284. package/dist/components/core/filter/fields/SolidMediaMultipleField.d.ts.map +1 -1
  285. package/dist/components/core/filter/fields/SolidMediaMultipleField.js +2 -2
  286. package/dist/components/core/filter/fields/SolidMediaMultipleField.js.map +1 -1
  287. package/dist/components/core/filter/fields/SolidMediaMultipleField.tsx +4 -3
  288. package/dist/components/core/filter/fields/SolidMediaSingleField.d.ts.map +1 -1
  289. package/dist/components/core/filter/fields/SolidMediaSingleField.js +2 -2
  290. package/dist/components/core/filter/fields/SolidMediaSingleField.js.map +1 -1
  291. package/dist/components/core/filter/fields/SolidMediaSingleField.tsx +4 -3
  292. package/dist/components/core/filter/fields/SolidSelectionDynamicField.d.ts.map +1 -1
  293. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js +2 -2
  294. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js.map +1 -1
  295. package/dist/components/core/filter/fields/SolidSelectionDynamicField.tsx +5 -4
  296. package/dist/components/core/filter/fields/SolidSelectionStaticField.d.ts.map +1 -1
  297. package/dist/components/core/filter/fields/SolidSelectionStaticField.js +2 -2
  298. package/dist/components/core/filter/fields/SolidSelectionStaticField.js.map +1 -1
  299. package/dist/components/core/filter/fields/SolidSelectionStaticField.tsx +5 -4
  300. package/dist/components/core/filter/fields/SolidShortTextField.d.ts.map +1 -1
  301. package/dist/components/core/filter/fields/SolidShortTextField.js +2 -2
  302. package/dist/components/core/filter/fields/SolidShortTextField.js.map +1 -1
  303. package/dist/components/core/filter/fields/SolidShortTextField.tsx +4 -3
  304. package/dist/components/core/filter/fields/SolidTimeField.d.ts.map +1 -1
  305. package/dist/components/core/filter/fields/SolidTimeField.js +2 -2
  306. package/dist/components/core/filter/fields/SolidTimeField.js.map +1 -1
  307. package/dist/components/core/filter/fields/SolidTimeField.tsx +5 -4
  308. package/dist/components/core/filter/fields/SolidUuidField.d.ts.map +1 -1
  309. package/dist/components/core/filter/fields/SolidUuidField.js +2 -2
  310. package/dist/components/core/filter/fields/SolidUuidField.js.map +1 -1
  311. package/dist/components/core/filter/fields/SolidUuidField.tsx +5 -4
  312. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  313. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js +2 -2
  314. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  315. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +5 -4
  316. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  317. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js +2 -2
  318. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  319. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +5 -4
  320. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  321. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +2 -2
  322. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  323. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +5 -4
  324. package/dist/components/core/form/SolidFormActionHeader.js +8 -8
  325. package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
  326. package/dist/components/core/form/SolidFormActionHeader.tsx +13 -13
  327. package/dist/components/core/form/SolidFormFieldRender.js +1 -1
  328. package/dist/components/core/form/SolidFormFieldRender.js.map +1 -1
  329. package/dist/components/core/form/SolidFormFieldRender.tsx +1 -1
  330. package/dist/components/core/form/SolidFormFooter.d.ts.map +1 -1
  331. package/dist/components/core/form/SolidFormFooter.js +14 -7
  332. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  333. package/dist/components/core/form/SolidFormFooter.tsx +16 -7
  334. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  335. package/dist/components/core/form/SolidFormView.js +207 -68
  336. package/dist/components/core/form/SolidFormView.js.map +1 -1
  337. package/dist/components/core/form/SolidFormView.tsx +197 -45
  338. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.d.ts.map +1 -1
  339. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js +16 -3
  340. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js.map +1 -1
  341. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.tsx +25 -16
  342. package/dist/components/core/form/SolidFormViewNormalHeaderButton.d.ts.map +1 -1
  343. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js +19 -5
  344. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js.map +1 -1
  345. package/dist/components/core/form/SolidFormViewNormalHeaderButton.tsx +25 -9
  346. package/dist/components/core/form/SolidFormViewShimmerLoading.js +1 -1
  347. package/dist/components/core/form/SolidFormViewShimmerLoading.js.map +1 -1
  348. package/dist/components/core/form/SolidFormViewShimmerLoading.tsx +46 -46
  349. package/dist/components/core/form/field-quality-check-fixes.md +201 -0
  350. package/dist/components/core/form/fields/SolidBooleanField.js +3 -3
  351. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  352. package/dist/components/core/form/fields/SolidBooleanField.tsx +3 -3
  353. package/dist/components/core/form/fields/SolidComputedField.js +1 -1
  354. package/dist/components/core/form/fields/SolidComputedField.js.map +1 -1
  355. package/dist/components/core/form/fields/SolidComputedField.tsx +1 -1
  356. package/dist/components/core/form/fields/SolidDateField.js +2 -2
  357. package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
  358. package/dist/components/core/form/fields/SolidDateField.tsx +2 -2
  359. package/dist/components/core/form/fields/SolidDateTimeField.js +2 -2
  360. package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
  361. package/dist/components/core/form/fields/SolidDateTimeField.tsx +2 -2
  362. package/dist/components/core/form/fields/SolidDecimalField.js +1 -1
  363. package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
  364. package/dist/components/core/form/fields/SolidDecimalField.tsx +1 -1
  365. package/dist/components/core/form/fields/SolidEmailField.js +1 -1
  366. package/dist/components/core/form/fields/SolidEmailField.js.map +1 -1
  367. package/dist/components/core/form/fields/SolidEmailField.tsx +1 -1
  368. package/dist/components/core/form/fields/SolidIntegerField.js +3 -3
  369. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  370. package/dist/components/core/form/fields/SolidIntegerField.tsx +3 -3
  371. package/dist/components/core/form/fields/SolidJsonField.js +3 -3
  372. package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
  373. package/dist/components/core/form/fields/SolidJsonField.tsx +3 -3
  374. package/dist/components/core/form/fields/SolidLongTextField.d.ts +0 -1
  375. package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
  376. package/dist/components/core/form/fields/SolidLongTextField.js +6 -58
  377. package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
  378. package/dist/components/core/form/fields/SolidLongTextField.tsx +12 -107
  379. package/dist/components/core/form/fields/SolidMediaMultipleField.js +11 -11
  380. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  381. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +28 -28
  382. package/dist/components/core/form/fields/SolidMediaSingleField.js +5 -5
  383. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  384. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +9 -9
  385. package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
  386. package/dist/components/core/form/fields/SolidPasswordField.js +12 -6
  387. package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
  388. package/dist/components/core/form/fields/SolidPasswordField.tsx +13 -6
  389. package/dist/components/core/form/fields/SolidRichTextField.js +2 -2
  390. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  391. package/dist/components/core/form/fields/SolidRichTextField.tsx +2 -2
  392. package/dist/components/core/form/fields/SolidSelectionDynamicField.js +2 -2
  393. package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
  394. package/dist/components/core/form/fields/SolidSelectionDynamicField.tsx +2 -2
  395. package/dist/components/core/form/fields/SolidSelectionStaticField.js +1 -1
  396. package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
  397. package/dist/components/core/form/fields/SolidSelectionStaticField.tsx +1 -1
  398. package/dist/components/core/form/fields/SolidShortTextField.js +1 -1
  399. package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
  400. package/dist/components/core/form/fields/SolidShortTextField.tsx +1 -1
  401. package/dist/components/core/form/fields/SolidTimeField.js +2 -2
  402. package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
  403. package/dist/components/core/form/fields/SolidTimeField.tsx +2 -2
  404. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts +8 -0
  405. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -0
  406. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +123 -0
  407. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -0
  408. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +140 -0
  409. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  410. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +20 -18
  411. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  412. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +47 -37
  413. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  414. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +18 -18
  415. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  416. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +17 -13
  417. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  418. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +19 -17
  419. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  420. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +28 -27
  421. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js +1 -1
  422. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js.map +1 -1
  423. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.tsx +1 -1
  424. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.js +1 -1
  425. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.js.map +1 -1
  426. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.tsx +1 -1
  427. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.js +1 -1
  428. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.js.map +1 -1
  429. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.tsx +1 -1
  430. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +5 -5
  431. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
  432. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +17 -17
  433. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.js +1 -1
  434. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.js.map +1 -1
  435. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.tsx +1 -1
  436. package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.js +1 -1
  437. package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.js.map +1 -1
  438. package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.tsx +1 -1
  439. package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
  440. package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
  441. package/dist/components/core/kanban/KanbanBoard.js +2 -2
  442. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  443. package/dist/components/core/kanban/KanbanBoard.tsx +2 -1
  444. package/dist/components/core/kanban/KanbanCard.d.ts +1 -0
  445. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  446. package/dist/components/core/kanban/KanbanCard.js +15 -4
  447. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  448. package/dist/components/core/kanban/KanbanCard.tsx +27 -4
  449. package/dist/components/core/kanban/KanbanColumn.d.ts +2 -1
  450. package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
  451. package/dist/components/core/kanban/KanbanColumn.js +4 -4
  452. package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
  453. package/dist/components/core/kanban/KanbanColumn.tsx +5 -4
  454. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  455. package/dist/components/core/kanban/SolidKanbanView.js +44 -39
  456. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  457. package/dist/components/core/kanban/SolidKanbanView.tsx +22 -10
  458. package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts.map +1 -1
  459. package/dist/components/core/kanban/SolidKanbanViewConfigure.js +1 -1
  460. package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
  461. package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +5 -1
  462. package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -1
  463. package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -1
  464. package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +2 -1
  465. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -1
  466. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +2 -2
  467. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -1
  468. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +10 -21
  469. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -1
  470. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +2 -2
  471. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -1
  472. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +10 -18
  473. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -1
  474. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +6 -3
  475. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -1
  476. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +24 -30
  477. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -1
  478. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +2 -2
  479. package/dist/components/core/list/ListViewRowActionPopup.js +1 -1
  480. package/dist/components/core/list/ListViewRowActionPopup.js.map +1 -1
  481. package/dist/components/core/list/ListViewRowActionPopup.tsx +1 -2
  482. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js +1 -1
  483. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js.map +1 -1
  484. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +3 -3
  485. package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
  486. package/dist/components/core/list/SolidDataTable.js +3 -2
  487. package/dist/components/core/list/SolidDataTable.js.map +1 -1
  488. package/dist/components/core/list/SolidDataTable.tsx +9 -10
  489. package/dist/components/core/list/SolidEmptyListViewPlaceholder.d.ts.map +1 -1
  490. package/dist/components/core/list/SolidEmptyListViewPlaceholder.js +3 -0
  491. package/dist/components/core/list/SolidEmptyListViewPlaceholder.js.map +1 -1
  492. package/dist/components/core/list/SolidEmptyListViewPlaceholder.tsx +2 -0
  493. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  494. package/dist/components/core/list/SolidListView.js +123 -100
  495. package/dist/components/core/list/SolidListView.js.map +1 -1
  496. package/dist/components/core/list/SolidListView.tsx +70 -41
  497. package/dist/components/core/list/SolidListViewColumn.d.ts +3 -1
  498. package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
  499. package/dist/components/core/list/SolidListViewColumn.js +27 -2
  500. package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
  501. package/dist/components/core/list/SolidListViewColumn.tsx +16 -3
  502. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  503. package/dist/components/core/list/SolidListViewConfigure.js +11 -10
  504. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  505. package/dist/components/core/list/SolidListViewConfigure.tsx +9 -3
  506. package/dist/components/core/list/SolidListViewHeaderButton.d.ts.map +1 -1
  507. package/dist/components/core/list/SolidListViewHeaderButton.js +13 -3
  508. package/dist/components/core/list/SolidListViewHeaderButton.js.map +1 -1
  509. package/dist/components/core/list/SolidListViewHeaderButton.tsx +16 -7
  510. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.d.ts.map +1 -1
  511. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js +19 -7
  512. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js.map +1 -1
  513. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +19 -6
  514. package/dist/components/core/list/SolidListViewRowActionMenuItem.d.ts.map +1 -1
  515. package/dist/components/core/list/SolidListViewRowActionMenuItem.js +14 -5
  516. package/dist/components/core/list/SolidListViewRowActionMenuItem.js.map +1 -1
  517. package/dist/components/core/list/SolidListViewRowActionMenuItem.tsx +17 -6
  518. package/dist/components/core/list/SolidListViewRowActionsMenu.d.ts.map +1 -1
  519. package/dist/components/core/list/SolidListViewRowActionsMenu.js +7 -1
  520. package/dist/components/core/list/SolidListViewRowActionsMenu.js.map +1 -1
  521. package/dist/components/core/list/SolidListViewRowActionsMenu.tsx +5 -1
  522. package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts +1 -1
  523. package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts.map +1 -1
  524. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js +7 -6
  525. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -1
  526. package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +10 -9
  527. package/dist/components/core/list/SolidListingHeader.js +1 -1
  528. package/dist/components/core/list/SolidListingHeader.js.map +1 -1
  529. package/dist/components/core/list/SolidListingHeader.tsx +4 -4
  530. package/dist/components/core/list/SolidTableRowCell.js +1 -1
  531. package/dist/components/core/list/SolidTableRowCell.js.map +1 -1
  532. package/dist/components/core/list/SolidTableRowCell.tsx +1 -1
  533. package/dist/components/core/list/columns/SolidBooleanColumn.d.ts.map +1 -1
  534. package/dist/components/core/list/columns/SolidBooleanColumn.js +4 -6
  535. package/dist/components/core/list/columns/SolidBooleanColumn.js.map +1 -1
  536. package/dist/components/core/list/columns/SolidBooleanColumn.tsx +1 -3
  537. package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
  538. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +8 -7
  539. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  540. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +11 -10
  541. package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts.map +1 -1
  542. package/dist/components/core/list/columns/SolidMediaSingleColumn.js +6 -5
  543. package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
  544. package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +6 -5
  545. package/dist/components/core/list/columns/SolidRelationColumn.d.ts +1 -1
  546. package/dist/components/core/list/columns/SolidRelationColumn.d.ts.map +1 -1
  547. package/dist/components/core/list/columns/SolidRelationColumn.js +2 -2
  548. package/dist/components/core/list/columns/SolidRelationColumn.js.map +1 -1
  549. package/dist/components/core/list/columns/SolidRelationColumn.tsx +2 -2
  550. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts +2 -2
  551. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  552. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +9 -4
  553. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  554. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +14 -4
  555. package/dist/components/core/list/field-quality-check-fixes.md +178 -0
  556. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.js +1 -1
  557. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.js.map +1 -1
  558. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.tsx +1 -1
  559. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.js +1 -1
  560. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.js.map +1 -1
  561. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.tsx +1 -2
  562. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.d.ts +3 -0
  563. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.d.ts.map +1 -0
  564. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.js +39 -0
  565. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.js.map +1 -0
  566. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.tsx +50 -0
  567. package/dist/components/core/locales/SolidLocale.js +3 -3
  568. package/dist/components/core/locales/SolidLocale.js.map +1 -1
  569. package/dist/components/core/locales/SolidLocale.tsx +7 -7
  570. package/dist/components/core/locales/solid-locale.css +5 -4
  571. package/dist/components/core/model/CreateModel.css +48 -0
  572. package/dist/components/core/model/CreateModel.d.ts +1 -0
  573. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  574. package/dist/components/core/model/CreateModel.js +80 -128
  575. package/dist/components/core/model/CreateModel.js.map +1 -1
  576. package/dist/components/core/model/CreateModel.tsx +102 -226
  577. package/dist/components/core/model/FieldMetaData.d.ts +1 -1
  578. package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
  579. package/dist/components/core/model/FieldMetaData.js +7 -23
  580. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  581. package/dist/components/core/model/FieldMetaData.tsx +17 -50
  582. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  583. package/dist/components/core/model/FieldMetaDataForm.js +198 -224
  584. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  585. package/dist/components/core/model/FieldMetaDataForm.tsx +75 -302
  586. package/dist/components/core/model/ModelListViewData.js +4 -4
  587. package/dist/components/core/model/ModelListViewData.js.map +1 -1
  588. package/dist/components/core/model/ModelListViewData.tsx +7 -7
  589. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
  590. package/dist/components/core/model/ModelMetaData.js +13 -25
  591. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  592. package/dist/components/core/model/ModelMetaData.tsx +18 -79
  593. package/dist/components/core/module/CreateModule.css +44 -0
  594. package/dist/components/core/module/CreateModule.d.ts +1 -0
  595. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  596. package/dist/components/core/module/CreateModule.js +40 -57
  597. package/dist/components/core/module/CreateModule.js.map +1 -1
  598. package/dist/components/core/module/CreateModule.tsx +246 -264
  599. package/dist/components/core/module/ModuleListViewData.d.ts.map +1 -1
  600. package/dist/components/core/module/ModuleListViewData.js +48 -8
  601. package/dist/components/core/module/ModuleListViewData.js.map +1 -1
  602. package/dist/components/core/module/ModuleListViewData.tsx +65 -7
  603. package/dist/components/core/module/ModuleMetadataExplorer.css +638 -0
  604. package/dist/components/core/module/ModuleMetadataExplorer.d.ts +15 -0
  605. package/dist/components/core/module/ModuleMetadataExplorer.d.ts.map +1 -0
  606. package/dist/components/core/module/ModuleMetadataExplorer.js +666 -0
  607. package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -0
  608. package/dist/components/core/module/ModuleMetadataExplorer.tsx +1000 -0
  609. package/dist/components/core/module/ModulePackageDialog.css +540 -0
  610. package/dist/components/core/module/ModulePackageDialog.d.ts +16 -0
  611. package/dist/components/core/module/ModulePackageDialog.d.ts.map +1 -0
  612. package/dist/components/core/module/ModulePackageDialog.js +625 -0
  613. package/dist/components/core/module/ModulePackageDialog.js.map +1 -0
  614. package/dist/components/core/module/ModulePackageDialog.tsx +906 -0
  615. package/dist/components/core/solid-ai/SolidAiChat.module.css +2 -2
  616. package/dist/components/core/tree/SolidTreeTable.js +1 -1
  617. package/dist/components/core/tree/SolidTreeTable.js.map +1 -1
  618. package/dist/components/core/tree/SolidTreeTable.tsx +1 -1
  619. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  620. package/dist/components/core/tree/SolidTreeView.js +4 -4
  621. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  622. package/dist/components/core/tree/SolidTreeView.tsx +16 -12
  623. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  624. package/dist/components/core/users/CreateUser.js +51 -27
  625. package/dist/components/core/users/CreateUser.js.map +1 -1
  626. package/dist/components/core/users/CreateUser.tsx +47 -68
  627. package/dist/components/core/users/CreateUserRole.js +2 -2
  628. package/dist/components/core/users/CreateUserRole.js.map +1 -1
  629. package/dist/components/core/users/CreateUserRole.tsx +9 -9
  630. package/dist/components/core/users/UserListView.js +4 -4
  631. package/dist/components/core/users/UserListView.js.map +1 -1
  632. package/dist/components/core/users/UserListView.tsx +6 -6
  633. package/dist/components/layout/AdminHeaderActions.d.ts +8 -0
  634. package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -0
  635. package/dist/components/layout/AdminHeaderActions.js +77 -0
  636. package/dist/components/layout/AdminHeaderActions.js.map +1 -0
  637. package/dist/components/layout/AdminHeaderActions.tsx +155 -0
  638. package/dist/components/layout/AdminSidebar.js +1 -1
  639. package/dist/components/layout/AdminSidebar.js.map +1 -1
  640. package/dist/components/layout/AdminSidebar.tsx +1 -1
  641. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
  642. package/dist/components/layout/AdminTopHeader.js +14 -5
  643. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  644. package/dist/components/layout/AdminTopHeader.tsx +35 -28
  645. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  646. package/dist/components/layout/AppSidebar.js +2 -1
  647. package/dist/components/layout/AppSidebar.js.map +1 -1
  648. package/dist/components/layout/AppSidebar.tsx +2 -0
  649. package/dist/components/layout/CustomPagination.js +0 -1
  650. package/dist/components/layout/CustomPagination.js.map +1 -1
  651. package/dist/components/layout/CustomPagination.tsx +0 -1
  652. package/dist/components/layout/FilterMenu.js +1 -1
  653. package/dist/components/layout/FilterMenu.js.map +1 -1
  654. package/dist/components/layout/FilterMenu.tsx +4 -4
  655. package/dist/components/layout/Footer.js +1 -1
  656. package/dist/components/layout/Footer.js.map +1 -1
  657. package/dist/components/layout/Footer.tsx +1 -1
  658. package/dist/components/layout/GlobalSearch.js +1 -1
  659. package/dist/components/layout/GlobalSearch.js.map +1 -1
  660. package/dist/components/layout/GlobalSearch.tsx +1 -1
  661. package/dist/components/layout/ListingHeader.js +3 -3
  662. package/dist/components/layout/ListingHeader.js.map +1 -1
  663. package/dist/components/layout/ListingHeader.tsx +4 -4
  664. package/dist/components/layout/Loader.js +1 -1
  665. package/dist/components/layout/Loader.js.map +1 -1
  666. package/dist/components/layout/Loader.tsx +1 -1
  667. package/dist/components/layout/UserSidebar.js +1 -1
  668. package/dist/components/layout/UserSidebar.js.map +1 -1
  669. package/dist/components/layout/UserSidebar.tsx +1 -1
  670. package/dist/components/layout/navbar-one.js +2 -2
  671. package/dist/components/layout/navbar-one.js.map +1 -1
  672. package/dist/components/layout/navbar-one.tsx +8 -8
  673. package/dist/components/layout/navbar-two-menu.js +2 -2
  674. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  675. package/dist/components/layout/navbar-two-menu.tsx +7 -7
  676. package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
  677. package/dist/components/layout/user-profile-menu.js +57 -33
  678. package/dist/components/layout/user-profile-menu.js.map +1 -1
  679. package/dist/components/layout/user-profile-menu.tsx +11 -59
  680. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts +2 -1
  681. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
  682. package/dist/components/shad-cn-ui/SolidAutocomplete.js +60 -6
  683. package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
  684. package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +81 -22
  685. package/dist/components/shad-cn-ui/SolidButton.d.ts.map +1 -1
  686. package/dist/components/shad-cn-ui/SolidButton.js +10 -2
  687. package/dist/components/shad-cn-ui/SolidButton.js.map +1 -1
  688. package/dist/components/shad-cn-ui/SolidButton.tsx +10 -2
  689. package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
  690. package/dist/components/shad-cn-ui/SolidCodeEditor.js +3 -1
  691. package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
  692. package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +3 -0
  693. package/dist/components/shad-cn-ui/SolidDatePicker.d.ts +1 -1
  694. package/dist/components/shad-cn-ui/SolidDatePicker.d.ts.map +1 -1
  695. package/dist/components/shad-cn-ui/SolidDatePicker.js +2 -2
  696. package/dist/components/shad-cn-ui/SolidDatePicker.js.map +1 -1
  697. package/dist/components/shad-cn-ui/SolidDatePicker.tsx +4 -0
  698. package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
  699. package/dist/components/shad-cn-ui/SolidDialog.js +38 -4
  700. package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
  701. package/dist/components/shad-cn-ui/SolidDialog.tsx +47 -3
  702. package/dist/components/shad-cn-ui/SolidIcon.d.ts +2 -1
  703. package/dist/components/shad-cn-ui/SolidIcon.d.ts.map +1 -1
  704. package/dist/components/shad-cn-ui/SolidIcon.js +1 -0
  705. package/dist/components/shad-cn-ui/SolidIcon.js.map +1 -1
  706. package/dist/components/shad-cn-ui/SolidIcon.tsx +1 -0
  707. package/dist/components/shad-cn-ui/SolidPasswordInput.d.ts.map +1 -1
  708. package/dist/components/shad-cn-ui/SolidPasswordInput.js +1 -1
  709. package/dist/components/shad-cn-ui/SolidPasswordInput.js.map +1 -1
  710. package/dist/components/shad-cn-ui/SolidPasswordInput.tsx +1 -0
  711. package/dist/components/shad-cn-ui/SolidPopover.d.ts +1 -0
  712. package/dist/components/shad-cn-ui/SolidPopover.d.ts.map +1 -1
  713. package/dist/components/shad-cn-ui/SolidPopover.js +124 -5
  714. package/dist/components/shad-cn-ui/SolidPopover.js.map +1 -1
  715. package/dist/components/shad-cn-ui/SolidPopover.tsx +173 -10
  716. package/dist/components/shad-cn-ui/SolidSelect.d.ts +2 -1
  717. package/dist/components/shad-cn-ui/SolidSelect.d.ts.map +1 -1
  718. package/dist/components/shad-cn-ui/SolidSelect.js +51 -1
  719. package/dist/components/shad-cn-ui/SolidSelect.js.map +1 -1
  720. package/dist/components/shad-cn-ui/SolidSelect.tsx +95 -0
  721. package/dist/constants/error-messages.d.ts +13 -0
  722. package/dist/constants/error-messages.d.ts.map +1 -1
  723. package/dist/constants/error-messages.js +17 -0
  724. package/dist/constants/error-messages.js.map +1 -1
  725. package/dist/constants/error-messages.ts +15 -0
  726. package/dist/helpers/buttonEnvironment.d.ts +5 -0
  727. package/dist/helpers/buttonEnvironment.d.ts.map +1 -0
  728. package/dist/helpers/buttonEnvironment.js +30 -0
  729. package/dist/helpers/buttonEnvironment.js.map +1 -0
  730. package/dist/helpers/buttonEnvironment.ts +35 -0
  731. package/dist/helpers/buttonPresentation.d.ts +24 -0
  732. package/dist/helpers/buttonPresentation.d.ts.map +1 -0
  733. package/dist/helpers/buttonPresentation.js +28 -0
  734. package/dist/helpers/buttonPresentation.js.map +1 -0
  735. package/dist/helpers/buttonPresentation.ts +53 -0
  736. package/dist/helpers/fileTypeIcon.d.ts +12 -0
  737. package/dist/helpers/fileTypeIcon.d.ts.map +1 -0
  738. package/dist/helpers/fileTypeIcon.js +37 -0
  739. package/dist/helpers/fileTypeIcon.js.map +1 -0
  740. package/dist/helpers/fileTypeIcon.tsx +65 -0
  741. package/dist/helpers/registry.d.ts.map +1 -1
  742. package/dist/helpers/registry.js +28 -10
  743. package/dist/helpers/registry.js.map +1 -1
  744. package/dist/helpers/registry.ts +31 -13
  745. package/dist/helpers/waitForBackendAvailability.d.ts +7 -0
  746. package/dist/helpers/waitForBackendAvailability.d.ts.map +1 -0
  747. package/dist/helpers/waitForBackendAvailability.js +86 -0
  748. package/dist/helpers/waitForBackendAvailability.js.map +1 -0
  749. package/dist/helpers/waitForBackendAvailability.ts +37 -0
  750. package/dist/index.d.ts +8 -9
  751. package/dist/index.d.ts.map +1 -1
  752. package/dist/index.js +6 -8
  753. package/dist/index.js.map +1 -1
  754. package/dist/index.ts +32 -13
  755. package/dist/nextAuth/authProviders.d.ts +4 -0
  756. package/dist/nextAuth/authProviders.d.ts.map +1 -0
  757. package/dist/nextAuth/authProviders.js +198 -0
  758. package/dist/nextAuth/authProviders.js.map +1 -0
  759. package/dist/nextAuth/authProviders.tsx +232 -0
  760. package/dist/nextAuth/handleLogout.d.ts +2 -0
  761. package/dist/nextAuth/handleLogout.d.ts.map +1 -0
  762. package/dist/nextAuth/handleLogout.js +36 -0
  763. package/dist/nextAuth/handleLogout.js.map +1 -0
  764. package/dist/nextAuth/handleLogout.tsx +39 -0
  765. package/dist/nextAuth/refreshAccessToken.d.ts +2 -0
  766. package/dist/nextAuth/refreshAccessToken.d.ts.map +1 -0
  767. package/dist/nextAuth/refreshAccessToken.js +24 -0
  768. package/dist/nextAuth/refreshAccessToken.js.map +1 -0
  769. package/dist/nextAuth/refreshAccessToken.tsx +28 -0
  770. package/dist/redux/api/dashboardRuntimeApi.d.ts +34 -0
  771. package/dist/redux/api/dashboardRuntimeApi.d.ts.map +1 -0
  772. package/dist/redux/api/dashboardRuntimeApi.js +79 -0
  773. package/dist/redux/api/dashboardRuntimeApi.js.map +1 -0
  774. package/dist/redux/api/dashboardRuntimeApi.ts +75 -0
  775. package/dist/redux/api/moduleApi.d.ts +26 -1
  776. package/dist/redux/api/moduleApi.d.ts.map +1 -1
  777. package/dist/redux/api/moduleApi.js +237 -1
  778. package/dist/redux/api/moduleApi.js.map +1 -1
  779. package/dist/redux/api/moduleApi.ts +181 -1
  780. package/dist/redux/api/solidChatterMessageApi.d.ts +2 -1
  781. package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
  782. package/dist/redux/api/solidChatterMessageApi.js +11 -1
  783. package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
  784. package/dist/redux/api/solidChatterMessageApi.ts +10 -1
  785. package/dist/redux/features/settingsSlice.d.ts +20 -0
  786. package/dist/redux/features/settingsSlice.d.ts.map +1 -0
  787. package/dist/redux/features/settingsSlice.js +39 -0
  788. package/dist/redux/features/settingsSlice.js.map +1 -0
  789. package/dist/redux/features/settingsSlice.ts +60 -0
  790. package/dist/redux/store/defaultStoreConfig.d.ts +57 -9
  791. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  792. package/dist/redux/store/defaultStoreConfig.js +2 -6
  793. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  794. package/dist/redux/store/defaultStoreConfig.ts +2 -6
  795. package/dist/redux/store/solidEntityApiPool.d.ts +1 -0
  796. package/dist/redux/store/solidEntityApiPool.d.ts.map +1 -1
  797. package/dist/redux/store/solidEntityApiPool.js +4 -0
  798. package/dist/redux/store/solidEntityApiPool.js.map +1 -1
  799. package/dist/redux/store/solidEntityApiPool.ts +4 -0
  800. package/dist/resources/globals.css +195 -20
  801. package/dist/resources/shadcn-base.css +392 -175
  802. package/dist/resources/solid-custom.css +6565 -0
  803. package/dist/resources/solid-primereact.css +14 -12
  804. package/dist/resources/solid-responsive.css +259 -51
  805. package/dist/resources/solid-tailwind-generated.css +1 -0
  806. package/dist/resources/solid-tailwind.css +3 -0
  807. package/dist/routes/AppEventListener.d.ts.map +1 -1
  808. package/dist/routes/AppEventListener.js +58 -8
  809. package/dist/routes/AppEventListener.js.map +1 -1
  810. package/dist/routes/AppEventListener.tsx +69 -8
  811. package/dist/routes/pages/admin/core/DashboardPage.d.ts +1 -0
  812. package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
  813. package/dist/routes/pages/admin/core/DashboardPage.js +860 -5
  814. package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
  815. package/dist/routes/pages/admin/core/DashboardPage.module.css +219 -0
  816. package/dist/routes/pages/admin/core/DashboardPage.tsx +1025 -7
  817. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.d.ts +2 -0
  818. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.d.ts.map +1 -0
  819. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.js +6 -0
  820. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.js.map +1 -0
  821. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.tsx +5 -0
  822. package/dist/routes/pages/auth/SsoPage.js +1 -1
  823. package/dist/routes/pages/auth/SsoPage.js.map +1 -1
  824. package/dist/routes/pages/auth/SsoPage.tsx +1 -1
  825. package/dist/routes/solidRoutes.d.ts.map +1 -1
  826. package/dist/routes/solidRoutes.js +2 -2
  827. package/dist/routes/solidRoutes.js.map +1 -1
  828. package/dist/routes/solidRoutes.tsx +2 -2
  829. package/dist/routes/types.d.ts +1 -1
  830. package/dist/routes/types.d.ts.map +1 -1
  831. package/dist/routes/types.js.map +1 -1
  832. package/dist/routes/types.ts +1 -1
  833. package/dist/styles.d.ts +2 -1
  834. package/dist/styles.d.ts.map +1 -1
  835. package/dist/styles.js +2 -1
  836. package/dist/styles.js.map +1 -1
  837. package/dist/styles.ts +2 -1
  838. package/dist/types/dashboard.d.ts +16 -0
  839. package/dist/types/dashboard.d.ts.map +1 -0
  840. package/dist/types/dashboard.js +2 -0
  841. package/dist/types/dashboard.js.map +1 -0
  842. package/dist/types/dashboard.ts +23 -0
  843. package/dist/types/extension-registry.d.ts +1 -0
  844. package/dist/types/extension-registry.d.ts.map +1 -1
  845. package/dist/types/extension-registry.js +1 -0
  846. package/dist/types/extension-registry.js.map +1 -1
  847. package/dist/types/extension-registry.ts +1 -0
  848. package/dist/types/index.d.ts +3 -0
  849. package/dist/types/jsoneditor.d.ts +4 -0
  850. package/dist/types/solid-core.d.ts +1 -0
  851. package/package.json +9 -3
  852. package/dist/components/core/list/SolidDataTablePagination.d.ts +0 -15
  853. package/dist/components/core/list/SolidDataTablePagination.d.ts.map +0 -1
  854. package/dist/components/core/list/SolidDataTablePagination.js +0 -22
  855. package/dist/components/core/list/SolidDataTablePagination.js.map +0 -1
  856. package/dist/components/core/list/SolidDataTablePagination.tsx +0 -71
  857. package/dist/components/solid-ui/SolidButton.d.ts +0 -14
  858. package/dist/components/solid-ui/SolidButton.d.ts.map +0 -1
  859. package/dist/components/solid-ui/SolidButton.js +0 -36
  860. package/dist/components/solid-ui/SolidButton.js.map +0 -1
  861. package/dist/components/solid-ui/SolidButton.tsx +0 -54
  862. package/dist/components/solid-ui/SolidTabs.d.ts +0 -18
  863. package/dist/components/solid-ui/SolidTabs.d.ts.map +0 -1
  864. package/dist/components/solid-ui/SolidTabs.js +0 -22
  865. package/dist/components/solid-ui/SolidTabs.js.map +0 -1
  866. package/dist/components/solid-ui/SolidTabs.tsx +0 -73
  867. package/dist/components/solid-ui/index.d.ts +0 -3
  868. package/dist/components/solid-ui/index.d.ts.map +0 -1
  869. package/dist/components/solid-ui/index.js +0 -3
  870. package/dist/components/solid-ui/index.js.map +0 -1
  871. package/dist/components/solid-ui/index.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"SolidChatterMessageBox.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterMessageBox.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { getTextColor, stringToColor } from '../../../helpers/getRandomColors'\nimport Image from \"../../common/Image\"\nimport { useMemo, useState } from 'react'\nimport styles from './chatter.module.css'\nimport { SolidChatterCustomMessage } from './SolidChatterCustomMessage'\nimport { SolidChatterAuditMessage } from './SolidChatterAuditMessage'\nimport { Check, GitBranch, MessageSquare } from 'lucide-react'\nimport { SolidButton, SolidLightbox, SolidTag, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger, SolidIcon, type SolidIconName } from '../../shad-cn-ui'\nimport type { SolidLightboxSlide } from '../../shad-cn-ui/SolidLightbox'\nimport { usePatchChatterMessageMutation } from '../../../redux/api/solidChatterMessageApi'\n\ninterface Props {\n messageId?: number | string,\n user: string,\n messageType?: string,\n message?: any,\n time?: string,\n auditRecord?: any,\n messageSubType?: string,\n status?: string,\n modelDisplayName?: string,\n modelUserKey?: string,\n onRefresh?: () => void,\n media?: {\n messageAttachments?: Array<{\n id: number;\n relativeUri: string;\n mimeType: string;\n originalFileName: string;\n _full_url: string;\n }>;\n };\n}\n\nconst getFileIcon = (mimeType: string): SolidIconName => {\n if (mimeType.startsWith('image/')) {\n return 'si-image';\n }\n switch (mimeType) {\n case 'application/pdf':\n return 'si-file-pdf';\n case 'application/vnd.ms-excel':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n return 'si-file-excel';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n return 'si-file-word';\n case 'text/plain':\n return 'si-file';\n default:\n return 'si-file';\n }\n};\n\nexport const SolidChatterMessageBox = (props: Props) => {\n const { messageId, user, messageType, message, time, auditRecord, media, messageSubType, status, modelDisplayName, modelUserKey, onRefresh } = props;\n const [lightboxSlides, setLightboxSlides] = useState<SolidLightboxSlide[]>([]);\n const [openLightbox, setOpenLightbox] = useState(false);\n const [taskStatus, setTaskStatus] = useState<string | undefined>(status);\n const [patchChatterMessage, { isLoading: isUpdatingTaskStatus }] = usePatchChatterMessageMutation();\n\n const avatarStyle = useMemo(() => {\n const bg = stringToColor(user)\n const color = getTextColor(bg)\n return { backgroundColor: bg, color }\n }, [user])\n\n const initials = useMemo(() => {\n if (!user) return \"\";\n return user\n .split(\" \")\n .map(part => part.charAt(0))\n .filter(Boolean)\n .slice(0, 2)\n .join(\"\")\n .toUpperCase();\n }, [user]);\n\n const handleImageClick = (url: string) => {\n const imageAttachments = media?.messageAttachments?.filter(att => att.mimeType?.startsWith('image/')) || [];\n if (imageAttachments.length === 0) return;\n\n const startIndex = imageAttachments.findIndex(att => att._full_url === url);\n const ordered = startIndex >= 0\n ? [...imageAttachments.slice(startIndex), ...imageAttachments.slice(0, startIndex)]\n : imageAttachments;\n\n const slides: SolidLightboxSlide[] = ordered.map(att => ({\n src: att._full_url\n }));\n\n setLightboxSlides(slides);\n setOpenLightbox(true);\n };\n\n const renderMessageContent = () => {\n switch (messageType) {\n case 'audit':\n return <SolidChatterAuditMessage auditRecord={auditRecord} />;\n case 'custom':\n default:\n return <SolidChatterCustomMessage message={message} />;\n }\n };\n\n const messageLabel = messageType === 'audit'\n ? (messageSubType === \"audit_update\"\n ? \"Updated\"\n : messageSubType === \"audit_insert\"\n ? \"Inserted\"\n : \"Audit record\")\n : \"Internal note\";\n\n const TypeIcon = messageType === 'audit' ? GitBranch : MessageSquare;\n\n const isTaskMessage = messageSubType === 'task';\n const isTaskCompleted = (taskStatus ?? '').toLowerCase() === 'completed';\n\n const handleMarkTaskDone = async () => {\n if (!messageId || isUpdatingTaskStatus) return;\n try {\n await patchChatterMessage({ id: messageId, data: { status: 'completed' } }).unwrap();\n setTaskStatus('completed');\n onRefresh?.();\n } catch (e) {\n // no-op (parent/global error handling if any)\n }\n };\n\n return (\n <div className={styles.solidChatterMessageBox}>\n <div className={styles.solidChatterMessageCard}>\n <div className={styles.solidChatterMessageLayout}>\n <div className={styles.solidChatterAvatar} style={avatarStyle}>\n {initials || user.charAt(0).toUpperCase()}\n </div>\n <div className={styles.solidChatterMessageContent}>\n <div className={styles.solidChatterMessageHeader}>\n <div className='flex align-items-center gap-2 flex-wrap'>\n <p className={styles.solidChatterUser}>{user}</p>\n <SolidTooltip>\n <SolidTooltipTrigger asChild>\n <span\n className={`${styles.solidChatterBadge} ${messageType === 'audit' ? styles.audit : styles.custom}`}\n aria-label={messageLabel}\n >\n <TypeIcon size={12} />\n </span>\n </SolidTooltipTrigger>\n <SolidTooltipContent side=\"right\">\n {messageLabel}\n </SolidTooltipContent>\n </SolidTooltip>\n </div>\n <span className={styles.solidChatterTime}>{time}</span>\n </div>\n {modelDisplayName && (\n <p className={`${styles.solidChatterMeta} m-0`}>\n {modelDisplayName}\n {modelUserKey && <> · <span className='font-medium'>{modelUserKey}</span></>}\n </p>\n )}\n {message && (\n <div className={styles.solidMessageWrapper}>\n {renderMessageContent()}\n </div>\n )}\n {media?.messageAttachments && media.messageAttachments.length > 0 && (\n <div className={styles.solidChatterAttachments}>\n {media.messageAttachments.map((attachment) => {\n const isImage = attachment.mimeType.startsWith('image/');\n return (\n <div key={attachment.id} className={styles.solidChatterAttachment}>\n {isImage ? (\n <div\n className='cursor-pointer'\n onClick={() => handleImageClick(attachment._full_url)}\n >\n <Image\n src={encodeURI(attachment._full_url)}\n alt={attachment.originalFileName}\n width={54}\n height={54}\n style={{ objectFit: 'cover' }}\n />\n </div>\n ) : (\n <a\n href={encodeURI(attachment._full_url)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className='flex align-items-center gap-2 text-decoration-none text-sm'\n >\n <SolidIcon name={getFileIcon(attachment.mimeType)} aria-hidden />\n <span>{attachment.originalFileName}</span>\n </a>\n )}\n </div>\n );\n })}\n </div>\n )}\n {isTaskMessage && (\n <div className='flex align-items-center justify-content-end'>\n {isTaskCompleted ? (\n <SolidTag tone=\"success\" className=\"inline-flex align-items-center gap-1 text-xs px-2 py-1\">\n <Check size={12} aria-hidden />\n <span className=\"font-medium\">Done</span>\n </SolidTag>\n ) : (\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n className=\"text-xs px-2 py-1\"\n leftIcon={<Check size={12} />}\n loading={isUpdatingTaskStatus}\n onClick={handleMarkTaskDone}\n >\n <span className=\"font-semibold\">Mark as done</span>\n </SolidButton>\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n {openLightbox && (\n <SolidLightbox\n open={openLightbox}\n slides={lightboxSlides}\n onClose={() => setOpenLightbox(false)}\n />\n )}\n </div>\n )\n}\n"]}
1
+ {"version":3,"file":"SolidChatterMessageBox.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterMessageBox.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { getTextColor, stringToColor } from '../../../helpers/getRandomColors'\nimport Image from \"../../common/Image\"\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport styles from './chatter.module.css'\nimport { SolidChatterCustomMessage } from './SolidChatterCustomMessage'\nimport { SolidChatterAuditMessage } from './SolidChatterAuditMessage'\nimport { Check, GitBranch, MessageSquare, Paperclip, Pencil, Trash2, X } from 'lucide-react'\nimport { SolidButton, SolidLightbox, SolidTag, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger, SolidIcon, SolidTextarea, type SolidIconName } from '../../shad-cn-ui'\nimport type { SolidLightboxSlide } from '../../shad-cn-ui/SolidLightbox'\nimport { usePatchChatterMessageMutation, useUpdateChatterNoteMessageMutation } from '../../../redux/api/solidChatterMessageApi'\nimport { useSession } from '../../../hooks/useSession'\n\ninterface Props {\n messageId?: number | string,\n user: string,\n userId?: number,\n messageType?: string,\n message?: any,\n time?: string,\n auditRecord?: any,\n messageSubType?: string,\n status?: string,\n modelDisplayName?: string,\n modelUserKey?: string,\n onRefresh?: () => void,\n media?: {\n messageAttachments?: Array<{\n id: number;\n relativeUri: string;\n mimeType: string;\n originalFileName: string;\n _full_url: string;\n }>;\n };\n}\n\nconst getFileIcon = (mimeType: string): SolidIconName => {\n if (mimeType.startsWith('image/')) {\n return 'si-image';\n }\n switch (mimeType) {\n case 'application/pdf':\n return 'si-file-pdf';\n case 'application/vnd.ms-excel':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n return 'si-file-excel';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n return 'si-file-word';\n case 'text/plain':\n return 'si-file';\n default:\n return 'si-file';\n }\n};\n\nexport const SolidChatterMessageBox = (props: Props) => {\n const { messageId, user, userId, messageType, message, time, auditRecord, media, messageSubType, status, modelDisplayName, modelUserKey, onRefresh } = props;\n const [lightboxSlides, setLightboxSlides] = useState<SolidLightboxSlide[]>([]);\n const [openLightbox, setOpenLightbox] = useState(false);\n const [taskStatus, setTaskStatus] = useState<string | undefined>(status);\n const [isEditing, setIsEditing] = useState(false);\n const [localMessage, setLocalMessage] = useState(message ?? '');\n const [editedMessage, setEditedMessage] = useState(message ?? '');\n const [hasPendingOptimisticUpdate, setHasPendingOptimisticUpdate] = useState(false);\n const [selectedFiles, setSelectedFiles] = useState<File[]>([]);\n const [removedAttachmentIds, setRemovedAttachmentIds] = useState<number[]>([]);\n const [optimisticRemovedAttachmentIds, setOptimisticRemovedAttachmentIds] = useState<number[]>([]);\n const [hasPendingOptimisticAttachmentUpdate, setHasPendingOptimisticAttachmentUpdate] = useState(false);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [patchChatterMessage, { isLoading: isUpdatingTaskStatus }] = usePatchChatterMessageMutation();\n const [updateChatterNoteMessage, { isLoading: isUpdatingNote }] = useUpdateChatterNoteMessageMutation();\n const { data: session } = useSession();\n\n const avatarStyle = useMemo(() => {\n const bg = stringToColor(user)\n const color = getTextColor(bg)\n return { backgroundColor: bg, color }\n }, [user])\n\n const initials = useMemo(() => {\n if (!user) return \"\";\n return user\n .split(\" \")\n .map(part => part.charAt(0))\n .filter(Boolean)\n .slice(0, 2)\n .join(\"\")\n .toUpperCase();\n }, [user]);\n\n const handleImageClick = (url: string) => {\n const imageAttachments = media?.messageAttachments?.filter(att => att.mimeType?.startsWith('image/')) || [];\n if (imageAttachments.length === 0) return;\n\n const startIndex = imageAttachments.findIndex(att => att._full_url === url);\n const ordered = startIndex >= 0\n ? [...imageAttachments.slice(startIndex), ...imageAttachments.slice(0, startIndex)]\n : imageAttachments;\n\n const slides: SolidLightboxSlide[] = ordered.map(att => ({\n src: att._full_url\n }));\n\n setLightboxSlides(slides);\n setOpenLightbox(true);\n };\n\n const renderMessageContent = () => {\n switch (messageType) {\n case 'audit':\n return <SolidChatterAuditMessage auditRecord={auditRecord} />;\n case 'custom':\n default:\n return <SolidChatterCustomMessage message={message} />;\n }\n };\n\n const messageLabel = messageType === 'audit'\n ? (messageSubType === \"audit_update\"\n ? \"Updated\"\n : messageSubType === \"audit_insert\"\n ? \"Inserted\"\n : \"Audit record\")\n : \"Internal note\";\n\n const TypeIcon = messageType === 'audit' ? GitBranch : MessageSquare;\n\n const isTaskMessage = messageSubType === 'task';\n const isTaskCompleted = (taskStatus ?? '').toLowerCase() === 'completed';\n const isCustomMessage = messageType === 'custom';\n const isEditableSubtype = messageSubType === 'note';\n const isCurrentUserAuthor = !!(session?.user?.id && userId && Number(session.user.id) === Number(userId));\n const canEditNote = Boolean(messageId && isCustomMessage && isEditableSubtype && isCurrentUserAuthor);\n\n useEffect(() => {\n const incomingMessage = message ?? '';\n\n // Keep optimistic message visible until server data catches up.\n if (hasPendingOptimisticUpdate && incomingMessage !== localMessage) {\n return;\n }\n\n if (hasPendingOptimisticUpdate && incomingMessage === localMessage) {\n setHasPendingOptimisticUpdate(false);\n }\n\n setLocalMessage(incomingMessage);\n if (!isEditing) {\n setEditedMessage(incomingMessage);\n }\n }, [message, isEditing, hasPendingOptimisticUpdate, localMessage]);\n\n useEffect(() => {\n if (!isEditing) {\n setSelectedFiles([]);\n if (!hasPendingOptimisticAttachmentUpdate) {\n setRemovedAttachmentIds([]);\n }\n }\n }, [isEditing, hasPendingOptimisticAttachmentUpdate]);\n\n useEffect(() => {\n if (!hasPendingOptimisticAttachmentUpdate) return;\n const latestAttachmentIds = (media?.messageAttachments || []).map((attachment) => attachment.id);\n const stillPresent = optimisticRemovedAttachmentIds.some((id) => latestAttachmentIds.includes(id));\n if (!stillPresent) {\n setHasPendingOptimisticAttachmentUpdate(false);\n setOptimisticRemovedAttachmentIds([]);\n setRemovedAttachmentIds([]);\n }\n }, [media?.messageAttachments, hasPendingOptimisticAttachmentUpdate, optimisticRemovedAttachmentIds]);\n\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.files) {\n const files = Array.from(event.target.files);\n setSelectedFiles(prev => [...prev, ...files]);\n event.target.value = '';\n }\n };\n\n const handleMarkTaskDone = async () => {\n if (!messageId || isUpdatingTaskStatus) return;\n try {\n await patchChatterMessage({ id: messageId, data: { status: 'completed' } }).unwrap();\n setTaskStatus('completed');\n onRefresh?.();\n } catch (e) {\n // no-op (parent/global error handling if any)\n }\n };\n\n const handleEditSave = async () => {\n if (!messageId || isUpdatingNote) return;\n const trimmedMessage = editedMessage?.trim();\n const hasBodyChange = trimmedMessage && trimmedMessage !== (message ?? '').trim();\n const hasAttachmentOps = removedAttachmentIds.length > 0 || selectedFiles.length > 0;\n if (!hasBodyChange && !hasAttachmentOps) return;\n if (!trimmedMessage) return;\n const nextMessage = trimmedMessage;\n // Optimistic local update to remove UI lag before refetch resolves.\n setLocalMessage(nextMessage);\n setHasPendingOptimisticUpdate(true);\n if (removedAttachmentIds.length > 0) {\n setOptimisticRemovedAttachmentIds((prev) => Array.from(new Set([...prev, ...removedAttachmentIds])));\n setHasPendingOptimisticAttachmentUpdate(true);\n }\n setIsEditing(false);\n try {\n const formData = new FormData();\n formData.append('messageBody', nextMessage);\n if (removedAttachmentIds.length > 0) {\n formData.append('removeAttachmentIds', removedAttachmentIds.join(','));\n }\n selectedFiles.forEach((file) => formData.append('messageAttachments', file));\n\n await updateChatterNoteMessage({ id: messageId, data: formData }).unwrap();\n onRefresh?.();\n } catch (e) {\n // Revert optimistic update on failure.\n setLocalMessage(message ?? '');\n setHasPendingOptimisticUpdate(false);\n setHasPendingOptimisticAttachmentUpdate(false);\n setOptimisticRemovedAttachmentIds([]);\n setIsEditing(true);\n }\n };\n\n const handleCancelEdit = () => {\n setEditedMessage(localMessage ?? '');\n setSelectedFiles([]);\n setRemovedAttachmentIds([]);\n setIsEditing(false);\n };\n\n const formatFileSize = (size: number) => {\n if (!size) return '';\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n const hiddenAttachmentIds = new Set([\n ...removedAttachmentIds,\n ...optimisticRemovedAttachmentIds,\n ]);\n const visibleAttachments = (media?.messageAttachments || []).filter(\n (attachment) => !hiddenAttachmentIds.has(attachment.id)\n );\n\n const toggleRemoveAttachment = (attachmentId: number) => {\n setRemovedAttachmentIds(prev =>\n prev.includes(attachmentId)\n ? prev.filter(id => id !== attachmentId)\n : [...prev, attachmentId]\n );\n };\n\n return (\n <div className={styles.solidChatterMessageBox}>\n <div className={styles.solidChatterMessageCard}>\n <div className={styles.solidChatterMessageLayout}>\n <div className={styles.solidChatterAvatar} style={avatarStyle}>\n {initials || user.charAt(0).toUpperCase()}\n </div>\n <div className={styles.solidChatterMessageContent}>\n <div className={styles.solidChatterMessageHeader}>\n <div className='flex items-center gap-2 flex-wrap'>\n <p className={styles.solidChatterUser}>{user}</p>\n <SolidTooltip>\n <SolidTooltipTrigger asChild>\n <span\n className={`${styles.solidChatterBadge} ${messageType === 'audit' ? styles.audit : styles.custom}`}\n aria-label={messageLabel}\n >\n <TypeIcon size={12} />\n </span>\n </SolidTooltipTrigger>\n <SolidTooltipContent side=\"right\">\n {messageLabel}\n </SolidTooltipContent>\n </SolidTooltip>\n </div>\n <div className='flex items-center gap-2'>\n {canEditNote && !isEditing && (\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n className=\"solid-icon-button\"\n leftIcon={<Pencil size={12} />}\n onClick={() => setIsEditing(true)}\n aria-label=\"Edit note\"\n title=\"Edit note\"\n />\n )}\n <span className={styles.solidChatterTime}>{time}</span>\n </div>\n </div>\n {modelDisplayName && (\n <p className={`${styles.solidChatterMeta} m-0`}>\n {modelDisplayName}\n {modelUserKey && <> · <span className='font-medium'>{modelUserKey}</span></>}\n </p>\n )}\n {localMessage && !isEditing && (\n <div className={styles.solidMessageWrapper}>\n {messageType === 'audit'\n ? <SolidChatterAuditMessage auditRecord={auditRecord} />\n : <SolidChatterCustomMessage message={localMessage} />}\n </div>\n )}\n {isEditing && (\n <div className='flex flex-col gap-2'>\n <SolidTextarea\n value={editedMessage}\n onChange={(e) => setEditedMessage(e.target.value)}\n rows={4}\n className=\"w-full py-2\"\n />\n <div className='flex flex-col gap-2'>\n <input\n ref={fileInputRef}\n id={`note-edit-file-${messageId}`}\n type=\"file\"\n multiple\n onChange={handleFileSelect}\n style={{ display: 'none' }}\n />\n {selectedFiles.length > 0 && (\n <div className='flex flex-col gap-1'>\n {selectedFiles.map((file, index) => (\n <div key={`${file.name}-${index}`} className='flex items-center justify-between text-xs'>\n <span>{file.name} ({formatFileSize(file.size)})</span>\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n className='solid-icon-button'\n leftIcon={<X size={12} />}\n onClick={() => setSelectedFiles(prev => prev.filter((_, i) => i !== index))}\n aria-label={`Remove ${file.name}`}\n />\n </div>\n ))}\n </div>\n )}\n </div>\n <div className='flex items-center justify-between gap-2 flex-wrap'>\n <div className='flex items-center gap-2'>\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n className=\"solid-icon-button\"\n leftIcon={<Paperclip size={14} />}\n onClick={() => fileInputRef.current?.click()}\n aria-label=\"Attach files\"\n title=\"Attach files\"\n />\n <span className='text-xs text-color-secondary'>Attach file</span>\n </div>\n <div className='flex items-center justify-end gap-2'>\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n leftIcon={<X size={12} />}\n onClick={handleCancelEdit}\n >\n Cancel\n </SolidButton>\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"primary\"\n loading={isUpdatingNote}\n leftIcon={<Check size={12} />}\n onClick={handleEditSave}\n disabled={!editedMessage?.trim() || (removedAttachmentIds.length === 0 && selectedFiles.length === 0 && editedMessage.trim() === (message ?? '').trim())}\n >\n Save\n </SolidButton>\n </div>\n </div>\n </div>\n )}\n {visibleAttachments.length > 0 && (\n <div className={styles.solidChatterAttachments}>\n {visibleAttachments.map((attachment) => {\n const isImage = attachment.mimeType.startsWith('image/');\n return (\n <div key={attachment.id} className={styles.solidChatterAttachment} style={{ position: 'relative' }}>\n {isEditing && canEditNote && (\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n className=\"solid-icon-button\"\n leftIcon={<Trash2 size={12} color=\"#dc2626\" />}\n onClick={() => toggleRemoveAttachment(attachment.id)}\n aria-label={`Remove ${attachment.originalFileName}`}\n title={`Remove ${attachment.originalFileName}`}\n style={{\n position: 'absolute',\n top: -8,\n right: -8,\n zIndex: 2,\n background: '#fff',\n border: '1px solid #fecaca',\n borderRadius: '999px',\n }}\n />\n )}\n {isImage ? (\n <div\n className='cursor-pointer'\n onClick={() => handleImageClick(attachment._full_url)}\n >\n <Image\n src={encodeURI(attachment._full_url)}\n alt={attachment.originalFileName}\n width={54}\n height={54}\n style={{ objectFit: 'cover' }}\n />\n </div>\n ) : (\n <a\n href={encodeURI(attachment._full_url)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className='flex items-center gap-2 text-decoration-none text-sm'\n >\n <SolidIcon name={getFileIcon(attachment.mimeType)} aria-hidden />\n <span>{attachment.originalFileName}</span>\n </a>\n )}\n </div>\n );\n })}\n </div>\n )}\n {isTaskMessage && (\n <div className='flex items-center justify-end'>\n {isTaskCompleted ? (\n <SolidTag tone=\"success\" className=\"inline-flex items-center gap-1 text-xs px-2 py-1\">\n <Check size={12} aria-hidden />\n <span className=\"font-medium\">Done</span>\n </SolidTag>\n ) : (\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n className=\"text-xs px-2 py-1\"\n leftIcon={<Check size={12} />}\n loading={isUpdatingTaskStatus}\n onClick={handleMarkTaskDone}\n >\n <span className=\"font-semibold\">Mark as done</span>\n </SolidButton>\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n {openLightbox && (\n <SolidLightbox\n open={openLightbox}\n slides={lightboxSlides}\n onClose={() => setOpenLightbox(false)}\n />\n )}\n </div>\n )\n}\n"]}
@@ -1,18 +1,20 @@
1
1
 
2
2
  import { getTextColor, stringToColor } from '../../../helpers/getRandomColors'
3
3
  import Image from "../../common/Image"
4
- import { useMemo, useState } from 'react'
4
+ import { useEffect, useMemo, useRef, useState } from 'react'
5
5
  import styles from './chatter.module.css'
6
6
  import { SolidChatterCustomMessage } from './SolidChatterCustomMessage'
7
7
  import { SolidChatterAuditMessage } from './SolidChatterAuditMessage'
8
- import { Check, GitBranch, MessageSquare } from 'lucide-react'
9
- import { SolidButton, SolidLightbox, SolidTag, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger, SolidIcon, type SolidIconName } from '../../shad-cn-ui'
8
+ import { Check, GitBranch, MessageSquare, Paperclip, Pencil, Trash2, X } from 'lucide-react'
9
+ import { SolidButton, SolidLightbox, SolidTag, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger, SolidIcon, SolidTextarea, type SolidIconName } from '../../shad-cn-ui'
10
10
  import type { SolidLightboxSlide } from '../../shad-cn-ui/SolidLightbox'
11
- import { usePatchChatterMessageMutation } from '../../../redux/api/solidChatterMessageApi'
11
+ import { usePatchChatterMessageMutation, useUpdateChatterNoteMessageMutation } from '../../../redux/api/solidChatterMessageApi'
12
+ import { useSession } from '../../../hooks/useSession'
12
13
 
13
14
  interface Props {
14
15
  messageId?: number | string,
15
16
  user: string,
17
+ userId?: number,
16
18
  messageType?: string,
17
19
  message?: any,
18
20
  time?: string,
@@ -54,11 +56,22 @@ const getFileIcon = (mimeType: string): SolidIconName => {
54
56
  };
55
57
 
56
58
  export const SolidChatterMessageBox = (props: Props) => {
57
- const { messageId, user, messageType, message, time, auditRecord, media, messageSubType, status, modelDisplayName, modelUserKey, onRefresh } = props;
59
+ const { messageId, user, userId, messageType, message, time, auditRecord, media, messageSubType, status, modelDisplayName, modelUserKey, onRefresh } = props;
58
60
  const [lightboxSlides, setLightboxSlides] = useState<SolidLightboxSlide[]>([]);
59
61
  const [openLightbox, setOpenLightbox] = useState(false);
60
62
  const [taskStatus, setTaskStatus] = useState<string | undefined>(status);
63
+ const [isEditing, setIsEditing] = useState(false);
64
+ const [localMessage, setLocalMessage] = useState(message ?? '');
65
+ const [editedMessage, setEditedMessage] = useState(message ?? '');
66
+ const [hasPendingOptimisticUpdate, setHasPendingOptimisticUpdate] = useState(false);
67
+ const [selectedFiles, setSelectedFiles] = useState<File[]>([]);
68
+ const [removedAttachmentIds, setRemovedAttachmentIds] = useState<number[]>([]);
69
+ const [optimisticRemovedAttachmentIds, setOptimisticRemovedAttachmentIds] = useState<number[]>([]);
70
+ const [hasPendingOptimisticAttachmentUpdate, setHasPendingOptimisticAttachmentUpdate] = useState(false);
71
+ const fileInputRef = useRef<HTMLInputElement>(null);
61
72
  const [patchChatterMessage, { isLoading: isUpdatingTaskStatus }] = usePatchChatterMessageMutation();
73
+ const [updateChatterNoteMessage, { isLoading: isUpdatingNote }] = useUpdateChatterNoteMessageMutation();
74
+ const { data: session } = useSession();
62
75
 
63
76
  const avatarStyle = useMemo(() => {
64
77
  const bg = stringToColor(user)
@@ -116,6 +129,56 @@ export const SolidChatterMessageBox = (props: Props) => {
116
129
 
117
130
  const isTaskMessage = messageSubType === 'task';
118
131
  const isTaskCompleted = (taskStatus ?? '').toLowerCase() === 'completed';
132
+ const isCustomMessage = messageType === 'custom';
133
+ const isEditableSubtype = messageSubType === 'note';
134
+ const isCurrentUserAuthor = !!(session?.user?.id && userId && Number(session.user.id) === Number(userId));
135
+ const canEditNote = Boolean(messageId && isCustomMessage && isEditableSubtype && isCurrentUserAuthor);
136
+
137
+ useEffect(() => {
138
+ const incomingMessage = message ?? '';
139
+
140
+ // Keep optimistic message visible until server data catches up.
141
+ if (hasPendingOptimisticUpdate && incomingMessage !== localMessage) {
142
+ return;
143
+ }
144
+
145
+ if (hasPendingOptimisticUpdate && incomingMessage === localMessage) {
146
+ setHasPendingOptimisticUpdate(false);
147
+ }
148
+
149
+ setLocalMessage(incomingMessage);
150
+ if (!isEditing) {
151
+ setEditedMessage(incomingMessage);
152
+ }
153
+ }, [message, isEditing, hasPendingOptimisticUpdate, localMessage]);
154
+
155
+ useEffect(() => {
156
+ if (!isEditing) {
157
+ setSelectedFiles([]);
158
+ if (!hasPendingOptimisticAttachmentUpdate) {
159
+ setRemovedAttachmentIds([]);
160
+ }
161
+ }
162
+ }, [isEditing, hasPendingOptimisticAttachmentUpdate]);
163
+
164
+ useEffect(() => {
165
+ if (!hasPendingOptimisticAttachmentUpdate) return;
166
+ const latestAttachmentIds = (media?.messageAttachments || []).map((attachment) => attachment.id);
167
+ const stillPresent = optimisticRemovedAttachmentIds.some((id) => latestAttachmentIds.includes(id));
168
+ if (!stillPresent) {
169
+ setHasPendingOptimisticAttachmentUpdate(false);
170
+ setOptimisticRemovedAttachmentIds([]);
171
+ setRemovedAttachmentIds([]);
172
+ }
173
+ }, [media?.messageAttachments, hasPendingOptimisticAttachmentUpdate, optimisticRemovedAttachmentIds]);
174
+
175
+ const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {
176
+ if (event.target.files) {
177
+ const files = Array.from(event.target.files);
178
+ setSelectedFiles(prev => [...prev, ...files]);
179
+ event.target.value = '';
180
+ }
181
+ };
119
182
 
120
183
  const handleMarkTaskDone = async () => {
121
184
  if (!messageId || isUpdatingTaskStatus) return;
@@ -128,6 +191,72 @@ export const SolidChatterMessageBox = (props: Props) => {
128
191
  }
129
192
  };
130
193
 
194
+ const handleEditSave = async () => {
195
+ if (!messageId || isUpdatingNote) return;
196
+ const trimmedMessage = editedMessage?.trim();
197
+ const hasBodyChange = trimmedMessage && trimmedMessage !== (message ?? '').trim();
198
+ const hasAttachmentOps = removedAttachmentIds.length > 0 || selectedFiles.length > 0;
199
+ if (!hasBodyChange && !hasAttachmentOps) return;
200
+ if (!trimmedMessage) return;
201
+ const nextMessage = trimmedMessage;
202
+ // Optimistic local update to remove UI lag before refetch resolves.
203
+ setLocalMessage(nextMessage);
204
+ setHasPendingOptimisticUpdate(true);
205
+ if (removedAttachmentIds.length > 0) {
206
+ setOptimisticRemovedAttachmentIds((prev) => Array.from(new Set([...prev, ...removedAttachmentIds])));
207
+ setHasPendingOptimisticAttachmentUpdate(true);
208
+ }
209
+ setIsEditing(false);
210
+ try {
211
+ const formData = new FormData();
212
+ formData.append('messageBody', nextMessage);
213
+ if (removedAttachmentIds.length > 0) {
214
+ formData.append('removeAttachmentIds', removedAttachmentIds.join(','));
215
+ }
216
+ selectedFiles.forEach((file) => formData.append('messageAttachments', file));
217
+
218
+ await updateChatterNoteMessage({ id: messageId, data: formData }).unwrap();
219
+ onRefresh?.();
220
+ } catch (e) {
221
+ // Revert optimistic update on failure.
222
+ setLocalMessage(message ?? '');
223
+ setHasPendingOptimisticUpdate(false);
224
+ setHasPendingOptimisticAttachmentUpdate(false);
225
+ setOptimisticRemovedAttachmentIds([]);
226
+ setIsEditing(true);
227
+ }
228
+ };
229
+
230
+ const handleCancelEdit = () => {
231
+ setEditedMessage(localMessage ?? '');
232
+ setSelectedFiles([]);
233
+ setRemovedAttachmentIds([]);
234
+ setIsEditing(false);
235
+ };
236
+
237
+ const formatFileSize = (size: number) => {
238
+ if (!size) return '';
239
+ return size >= 1024 * 1024
240
+ ? `${(size / (1024 * 1024)).toFixed(1)} MB`
241
+ : `${(size / 1024).toFixed(1)} KB`;
242
+ };
243
+
244
+ const hiddenAttachmentIds = new Set([
245
+ ...removedAttachmentIds,
246
+ ...optimisticRemovedAttachmentIds,
247
+ ]);
248
+ const visibleAttachments = (media?.messageAttachments || []).filter(
249
+ (attachment) => !hiddenAttachmentIds.has(attachment.id)
250
+ );
251
+
252
+ const toggleRemoveAttachment = (attachmentId: number) => {
253
+ setRemovedAttachmentIds(prev =>
254
+ prev.includes(attachmentId)
255
+ ? prev.filter(id => id !== attachmentId)
256
+ : [...prev, attachmentId]
257
+ );
258
+ };
259
+
131
260
  return (
132
261
  <div className={styles.solidChatterMessageBox}>
133
262
  <div className={styles.solidChatterMessageCard}>
@@ -137,7 +266,7 @@ export const SolidChatterMessageBox = (props: Props) => {
137
266
  </div>
138
267
  <div className={styles.solidChatterMessageContent}>
139
268
  <div className={styles.solidChatterMessageHeader}>
140
- <div className='flex align-items-center gap-2 flex-wrap'>
269
+ <div className='flex items-center gap-2 flex-wrap'>
141
270
  <p className={styles.solidChatterUser}>{user}</p>
142
271
  <SolidTooltip>
143
272
  <SolidTooltipTrigger asChild>
@@ -153,7 +282,21 @@ export const SolidChatterMessageBox = (props: Props) => {
153
282
  </SolidTooltipContent>
154
283
  </SolidTooltip>
155
284
  </div>
156
- <span className={styles.solidChatterTime}>{time}</span>
285
+ <div className='flex items-center gap-2'>
286
+ {canEditNote && !isEditing && (
287
+ <SolidButton
288
+ type="button"
289
+ size="sm"
290
+ variant="ghost"
291
+ className="solid-icon-button"
292
+ leftIcon={<Pencil size={12} />}
293
+ onClick={() => setIsEditing(true)}
294
+ aria-label="Edit note"
295
+ title="Edit note"
296
+ />
297
+ )}
298
+ <span className={styles.solidChatterTime}>{time}</span>
299
+ </div>
157
300
  </div>
158
301
  {modelDisplayName && (
159
302
  <p className={`${styles.solidChatterMeta} m-0`}>
@@ -161,17 +304,115 @@ export const SolidChatterMessageBox = (props: Props) => {
161
304
  {modelUserKey && <> · <span className='font-medium'>{modelUserKey}</span></>}
162
305
  </p>
163
306
  )}
164
- {message && (
307
+ {localMessage && !isEditing && (
165
308
  <div className={styles.solidMessageWrapper}>
166
- {renderMessageContent()}
309
+ {messageType === 'audit'
310
+ ? <SolidChatterAuditMessage auditRecord={auditRecord} />
311
+ : <SolidChatterCustomMessage message={localMessage} />}
312
+ </div>
313
+ )}
314
+ {isEditing && (
315
+ <div className='flex flex-col gap-2'>
316
+ <SolidTextarea
317
+ value={editedMessage}
318
+ onChange={(e) => setEditedMessage(e.target.value)}
319
+ rows={4}
320
+ className="w-full py-2"
321
+ />
322
+ <div className='flex flex-col gap-2'>
323
+ <input
324
+ ref={fileInputRef}
325
+ id={`note-edit-file-${messageId}`}
326
+ type="file"
327
+ multiple
328
+ onChange={handleFileSelect}
329
+ style={{ display: 'none' }}
330
+ />
331
+ {selectedFiles.length > 0 && (
332
+ <div className='flex flex-col gap-1'>
333
+ {selectedFiles.map((file, index) => (
334
+ <div key={`${file.name}-${index}`} className='flex items-center justify-between text-xs'>
335
+ <span>{file.name} ({formatFileSize(file.size)})</span>
336
+ <SolidButton
337
+ type="button"
338
+ size="sm"
339
+ variant="ghost"
340
+ className='solid-icon-button'
341
+ leftIcon={<X size={12} />}
342
+ onClick={() => setSelectedFiles(prev => prev.filter((_, i) => i !== index))}
343
+ aria-label={`Remove ${file.name}`}
344
+ />
345
+ </div>
346
+ ))}
347
+ </div>
348
+ )}
349
+ </div>
350
+ <div className='flex items-center justify-between gap-2 flex-wrap'>
351
+ <div className='flex items-center gap-2'>
352
+ <SolidButton
353
+ type="button"
354
+ size="sm"
355
+ variant="ghost"
356
+ className="solid-icon-button"
357
+ leftIcon={<Paperclip size={14} />}
358
+ onClick={() => fileInputRef.current?.click()}
359
+ aria-label="Attach files"
360
+ title="Attach files"
361
+ />
362
+ <span className='text-xs text-color-secondary'>Attach file</span>
363
+ </div>
364
+ <div className='flex items-center justify-end gap-2'>
365
+ <SolidButton
366
+ type="button"
367
+ size="sm"
368
+ variant="outline"
369
+ leftIcon={<X size={12} />}
370
+ onClick={handleCancelEdit}
371
+ >
372
+ Cancel
373
+ </SolidButton>
374
+ <SolidButton
375
+ type="button"
376
+ size="sm"
377
+ variant="primary"
378
+ loading={isUpdatingNote}
379
+ leftIcon={<Check size={12} />}
380
+ onClick={handleEditSave}
381
+ disabled={!editedMessage?.trim() || (removedAttachmentIds.length === 0 && selectedFiles.length === 0 && editedMessage.trim() === (message ?? '').trim())}
382
+ >
383
+ Save
384
+ </SolidButton>
385
+ </div>
386
+ </div>
167
387
  </div>
168
388
  )}
169
- {media?.messageAttachments && media.messageAttachments.length > 0 && (
389
+ {visibleAttachments.length > 0 && (
170
390
  <div className={styles.solidChatterAttachments}>
171
- {media.messageAttachments.map((attachment) => {
391
+ {visibleAttachments.map((attachment) => {
172
392
  const isImage = attachment.mimeType.startsWith('image/');
173
393
  return (
174
- <div key={attachment.id} className={styles.solidChatterAttachment}>
394
+ <div key={attachment.id} className={styles.solidChatterAttachment} style={{ position: 'relative' }}>
395
+ {isEditing && canEditNote && (
396
+ <SolidButton
397
+ type="button"
398
+ size="sm"
399
+ variant="ghost"
400
+ className="solid-icon-button"
401
+ leftIcon={<Trash2 size={12} color="#dc2626" />}
402
+ onClick={() => toggleRemoveAttachment(attachment.id)}
403
+ aria-label={`Remove ${attachment.originalFileName}`}
404
+ title={`Remove ${attachment.originalFileName}`}
405
+ style={{
406
+ position: 'absolute',
407
+ top: -8,
408
+ right: -8,
409
+ zIndex: 2,
410
+ background: '#fff',
411
+ border: '1px solid #fecaca',
412
+ borderRadius: '999px',
413
+ }}
414
+ />
415
+ )}
175
416
  {isImage ? (
176
417
  <div
177
418
  className='cursor-pointer'
@@ -190,7 +431,7 @@ export const SolidChatterMessageBox = (props: Props) => {
190
431
  href={encodeURI(attachment._full_url)}
191
432
  target="_blank"
192
433
  rel="noopener noreferrer"
193
- className='flex align-items-center gap-2 text-decoration-none text-sm'
434
+ className='flex items-center gap-2 text-decoration-none text-sm'
194
435
  >
195
436
  <SolidIcon name={getFileIcon(attachment.mimeType)} aria-hidden />
196
437
  <span>{attachment.originalFileName}</span>
@@ -202,9 +443,9 @@ export const SolidChatterMessageBox = (props: Props) => {
202
443
  </div>
203
444
  )}
204
445
  {isTaskMessage && (
205
- <div className='flex align-items-center justify-content-end'>
446
+ <div className='flex items-center justify-end'>
206
447
  {isTaskCompleted ? (
207
- <SolidTag tone="success" className="inline-flex align-items-center gap-1 text-xs px-2 py-1">
448
+ <SolidTag tone="success" className="inline-flex items-center gap-1 text-xs px-2 py-1">
208
449
  <Check size={12} aria-hidden />
209
450
  <span className="font-medium">Done</span>
210
451
  </SolidTag>
@@ -1 +1 @@
1
- {"version":3,"file":"SolidMessageComposer.d.ts","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidMessageComposer.tsx"],"names":[],"mappings":"AAQA,UAAU,yBAAyB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,EAAE,CAAC,EAAE,GAAG,CAAC;IACT,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,oBAAoB,qEAAsE,yBAAyB,4CA2K/H,CAAA"}
1
+ {"version":3,"file":"SolidMessageComposer.d.ts","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidMessageComposer.tsx"],"names":[],"mappings":"AAQA,UAAU,yBAAyB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,EAAE,CAAC,EAAE,GAAG,CAAC;IACT,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,oBAAoB,qEAAsE,yBAAyB,4CA6K/H,CAAA"}
@@ -84,7 +84,7 @@ export var SolidMessageComposer = function (_a) {
84
84
  _a.trys.push([1, 3, , 4]);
85
85
  formData_1 = new FormData();
86
86
  formData_1.append('messageType', "custom");
87
- formData_1.append('messageSubType', "custom");
87
+ formData_1.append('messageSubType', "note");
88
88
  formData_1.append('messageBody', message);
89
89
  formData_1.append('coModelEntityId', id);
90
90
  formData_1.append('coModelName', modelSingularName);
@@ -99,6 +99,7 @@ export var SolidMessageComposer = function (_a) {
99
99
  _a.sent();
100
100
  setMessage('');
101
101
  setSelectedFiles([]);
102
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
102
103
  return [3 /*break*/, 4];
103
104
  case 3:
104
105
  error_1 = _a.sent();
@@ -120,7 +121,7 @@ export var SolidMessageComposer = function (_a) {
120
121
  ? "".concat((size / (1024 * 1024)).toFixed(1), " MB")
121
122
  : "".concat((size / 1024).toFixed(1), " KB");
122
123
  };
123
- return (_jsxs("form", { className: styles.chatterMessageComposer, onSubmit: handleSubmit, children: [_jsxs("div", { className: "".concat(styles.solidMessageWrapper, " flex flex-column gap-2 w-full"), children: [_jsx("div", { className: 'flex align-items-center justify-content-between', children: _jsx("p", { className: 'form-field-label m-0', children: type === 'email' ? 'Email Message' : 'Internal Note' }) }), _jsx(SolidTextarea, { value: message, onChange: function (e) { return setMessage(e.target.value); }, placeholder: type === 'email' ? 'Send a message to followers' : 'Log an internal note.', className: "w-full p-1", rows: 4 }), _jsxs("div", { className: 'flex align-items-center justify-content-between flex-wrap gap-2', children: [_jsxs("div", { className: 'flex align-items-center gap-2', children: [_jsx("input", { type: "file", ref: fileInputRef, onChange: handleFileSelect, multiple: true, style: { display: 'none' } }), _jsx(SolidButton, { type: "button", variant: "outline", size: "sm", className: "solid-icon-button", leftIcon: _jsx(Paperclip, { size: 14 }), onClick: function () { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, "aria-label": "Attach files", title: "Attach files" }), _jsx("span", { className: 'text-xs text-color-secondary', children: "Attach file" })] }), _jsxs("div", { className: 'flex align-items-center gap-2', children: [_jsx(SolidButton, { type: 'submit', size: 'sm', className: 'gap-2 solid-purple-button', variant: 'primary', loading: isLoading, children: type === 'email' ? 'Send' : 'Log' }), _jsx(SolidButton, { type: 'button', size: 'sm', variant: 'ghost', onClick: function () {
124
+ return (_jsxs("form", { className: styles.chatterMessageComposer, onSubmit: handleSubmit, children: [_jsxs("div", { className: "".concat(styles.solidMessageWrapper, " flex flex-col gap-2 w-full"), children: [_jsx("div", { className: 'flex items-center justify-between', children: _jsx("p", { className: 'form-field-label m-0', children: type === 'email' ? 'Email Message' : 'Internal Note' }) }), _jsx(SolidTextarea, { value: message, onChange: function (e) { return setMessage(e.target.value); }, placeholder: type === 'email' ? 'Send a message to followers' : 'Log an internal note.', className: "w-full p-2", rows: 4 }), _jsxs("div", { className: 'flex items-center justify-between flex-wrap gap-2', children: [_jsxs("div", { className: 'flex items-center gap-2', children: [_jsx("input", { type: "file", ref: fileInputRef, onChange: handleFileSelect, multiple: true, style: { display: 'none' } }), _jsx(SolidButton, { type: "button", variant: "outline", size: "sm", className: "solid-icon-button", leftIcon: _jsx(Paperclip, { size: 14 }), onClick: function () { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, "aria-label": "Attach files", title: "Attach files" }), _jsx("span", { className: 'text-xs text-color-secondary', children: "Attach file" })] }), _jsxs("div", { className: 'flex items-center gap-2', children: [_jsx(SolidButton, { type: 'submit', size: 'sm', className: 'gap-2 solid-purple-button', variant: 'primary', loading: isLoading, disabled: !message.trim() && selectedFiles.length === 0, children: type === 'email' ? 'Send' : 'Log' }), _jsx(SolidButton, { type: 'button', size: 'sm', variant: 'ghost', onClick: function () {
124
125
  setMessage('');
125
126
  setSelectedFiles([]);
126
127
  onCancel === null || onCancel === void 0 ? void 0 : onCancel();
@@ -1 +1 @@
1
- {"version":3,"file":"SolidMessageComposer.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidMessageComposer.tsx"],"names":[],"mappings":"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","sourcesContent":["import styles from './chatter.module.css'\nimport { useCreateChatterMessageMutation } from '../../../redux/api/solidChatterMessageApi'\nimport { useEffect, useState, useRef } from 'react'\nimport { ERROR_MESSAGES } from '../../../constants/error-messages'\nimport { useSession } from '../../../hooks/useSession'\nimport { SolidButton, SolidTextarea } from '../../shad-cn-ui'\nimport { FileText, Paperclip, X } from 'lucide-react'\n\ninterface SolidMessageComposerProps {\n type?: string;\n modelSingularName?: any;\n refetch?: any;\n id?: any;\n onCancel?: () => void;\n modelUserKey?: string;\n}\n\nexport const SolidMessageComposer = ({ type, modelSingularName, refetch, id, onCancel, modelUserKey }: SolidMessageComposerProps) => {\n const [message, setMessage] = useState('');\n const [selectedFiles, setSelectedFiles] = useState<File[]>([]);\n\n const { data: session, status } = useSession();\n const user = session?.user;\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // const { data: viewLayoutData } = useGetSolidViewLayoutQuery(null);\n const [createChatterMessage, { isLoading, isSuccess, isError }] = useCreateChatterMessageMutation();\n\n const tempEmails = [\n \"johndoe@gmal.com\",\n \"tempmail@gmail.com\",\n \"example@mail.com\"\n ]\n\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.files) {\n const files = Array.from(event.target.files);\n setSelectedFiles(prev => [...prev, ...files]);\n }\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!message.trim() && selectedFiles.length === 0) return;\n\n try {\n const formData = new FormData();\n formData.append('messageType', \"custom\");\n formData.append('messageSubType', \"custom\");\n formData.append('messageBody', message);\n formData.append('coModelEntityId', id);\n formData.append('coModelName', modelSingularName);\n formData.append('userId', user?.id || 1);\n\n if (modelUserKey) formData.append('modelUserKey', modelUserKey);\n selectedFiles.forEach((file, index) => {\n formData.append(`messageAttachments`, file);\n });\n\n await createChatterMessage(formData).unwrap();\n setMessage('');\n setSelectedFiles([]);\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_MESSAGE, error);\n }\n };\n\n useEffect(() => {\n if (isSuccess) {\n refetch()\n }\n }, [isSuccess]);\n\n const formatFileSize = (size: number) => {\n if (!size) return \"\";\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n return (\n <form className={styles.chatterMessageComposer} onSubmit={handleSubmit}>\n {/* {type === 'email' &&\n <div className='flex align-items-center gap-1 text-sm mb-2'>\n <span className='font-bold'>To:</span>\n <div className={styles.chatterEmails}>\n {tempEmails.map((mail, index) => (\n <span key={index}>\n {mail}\n </span>\n ))}\n </div>\n <div className={`si si-sort-down-fill text-primary ${styles.emailTooltipIcon}`} style={{ fontSize: 8 }}>\n <div className={styles.emailsTooltip}>\n {tempEmails.map((mail, index) => (\n <span key={index} className='text-color text-sm'>\n {mail}\n </span>\n ))}\n </div>\n </div>\n </div>\n } */}\n <div className={`${styles.solidMessageWrapper} flex flex-column gap-2 w-full`}>\n <div className='flex align-items-center justify-content-between'>\n <p className='form-field-label m-0'>\n {type === 'email' ? 'Email Message' : 'Internal Note'}\n </p>\n </div>\n <SolidTextarea\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n placeholder={type === 'email' ? 'Send a message to followers' : 'Log an internal note.'}\n className=\"w-full p-1\"\n rows={4}\n />\n <div className='flex align-items-center justify-content-between flex-wrap gap-2'>\n <div className='flex align-items-center gap-2'>\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileSelect}\n multiple\n style={{ display: 'none' }}\n />\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-icon-button\"\n leftIcon={<Paperclip size={14} />}\n onClick={() => fileInputRef.current?.click()}\n aria-label=\"Attach files\"\n title=\"Attach files\"\n />\n <span className='text-xs text-color-secondary'>Attach file</span>\n </div>\n <div className='flex align-items-center gap-2'>\n <SolidButton\n type='submit'\n size='sm'\n className='gap-2 solid-purple-button'\n variant='primary'\n loading={isLoading}\n >\n {type === 'email' ? 'Send' : 'Log'}\n </SolidButton>\n <SolidButton\n type='button'\n size='sm'\n variant='ghost'\n onClick={() => {\n setMessage('');\n setSelectedFiles([]);\n onCancel?.();\n }}\n >\n Cancel\n </SolidButton>\n </div>\n </div>\n </div>\n {selectedFiles.length > 0 && (\n <div className={styles.chatterSelectedFiles}>\n {selectedFiles.map((file, index) => (\n <div key={index} className={styles.chatterSelectedFileCard}>\n <div className={styles.chatterSelectedFileIcon}>\n <FileText size={16} />\n </div>\n <div className={styles.chatterSelectedFileMeta}>\n <p className={styles.chatterSelectedFileName}>{file.name}</p>\n <span className={styles.chatterSelectedFileSize}>{formatFileSize(file.size)}</span>\n </div>\n <SolidButton\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"solid-icon-button\"\n leftIcon={<X size={12} />}\n onClick={() => setSelectedFiles(prev => prev.filter((_, i) => i !== index))}\n aria-label={`Remove ${file.name}`}\n />\n </div>\n ))}\n </div>\n )}\n </form>\n )\n}\n"]}
1
+ {"version":3,"file":"SolidMessageComposer.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidMessageComposer.tsx"],"names":[],"mappings":"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","sourcesContent":["import styles from './chatter.module.css'\nimport { useCreateChatterMessageMutation } from '../../../redux/api/solidChatterMessageApi'\nimport { useEffect, useState, useRef } from 'react'\nimport { ERROR_MESSAGES } from '../../../constants/error-messages'\nimport { useSession } from '../../../hooks/useSession'\nimport { SolidButton, SolidTextarea } from '../../shad-cn-ui'\nimport { FileText, Paperclip, X } from 'lucide-react'\n\ninterface SolidMessageComposerProps {\n type?: string;\n modelSingularName?: any;\n refetch?: any;\n id?: any;\n onCancel?: () => void;\n modelUserKey?: string;\n}\n\nexport const SolidMessageComposer = ({ type, modelSingularName, refetch, id, onCancel, modelUserKey }: SolidMessageComposerProps) => {\n const [message, setMessage] = useState('');\n const [selectedFiles, setSelectedFiles] = useState<File[]>([]);\n\n const { data: session, status } = useSession();\n const user = session?.user;\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // const { data: viewLayoutData } = useGetSolidViewLayoutQuery(null);\n const [createChatterMessage, { isLoading, isSuccess, isError }] = useCreateChatterMessageMutation();\n\n const tempEmails = [\n \"johndoe@gmal.com\",\n \"tempmail@gmail.com\",\n \"example@mail.com\"\n ]\n\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.files) {\n const files = Array.from(event.target.files);\n setSelectedFiles(prev => [...prev, ...files]);\n }\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!message.trim() && selectedFiles.length === 0) return;\n\n try {\n const formData = new FormData();\n formData.append('messageType', \"custom\");\n formData.append('messageSubType', \"note\");\n formData.append('messageBody', message);\n formData.append('coModelEntityId', id);\n formData.append('coModelName', modelSingularName);\n formData.append('userId', user?.id || 1);\n\n if (modelUserKey) formData.append('modelUserKey', modelUserKey);\n selectedFiles.forEach((file, index) => {\n formData.append(`messageAttachments`, file);\n });\n\n await createChatterMessage(formData).unwrap();\n setMessage('');\n setSelectedFiles([]);\n onCancel?.();\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_MESSAGE, error);\n }\n };\n\n useEffect(() => {\n if (isSuccess) {\n refetch()\n }\n }, [isSuccess]);\n\n const formatFileSize = (size: number) => {\n if (!size) return \"\";\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n return (\n <form className={styles.chatterMessageComposer} onSubmit={handleSubmit}>\n {/* {type === 'email' &&\n <div className='mb-2 flex items-center gap-1 text-sm'>\n <span className='font-bold'>To:</span>\n <div className={styles.chatterEmails}>\n {tempEmails.map((mail, index) => (\n <span key={index}>\n {mail}\n </span>\n ))}\n </div>\n <div className={`si si-sort-down-fill text-[var(--primary-color)] ${styles.emailTooltipIcon}`} style={{ fontSize: 8 }}>\n <div className={styles.emailsTooltip}>\n {tempEmails.map((mail, index) => (\n <span key={index} className='text-color text-sm'>\n {mail}\n </span>\n ))}\n </div>\n </div>\n </div>\n } */}\n <div className={`${styles.solidMessageWrapper} flex flex-col gap-2 w-full`}>\n <div className='flex items-center justify-between'>\n <p className='form-field-label m-0'>\n {type === 'email' ? 'Email Message' : 'Internal Note'}\n </p>\n </div>\n <SolidTextarea\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n placeholder={type === 'email' ? 'Send a message to followers' : 'Log an internal note.'}\n className=\"w-full p-2\"\n rows={4}\n />\n <div className='flex items-center justify-between flex-wrap gap-2'>\n <div className='flex items-center gap-2'>\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileSelect}\n multiple\n style={{ display: 'none' }}\n />\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-icon-button\"\n leftIcon={<Paperclip size={14} />}\n onClick={() => fileInputRef.current?.click()}\n aria-label=\"Attach files\"\n title=\"Attach files\"\n />\n <span className='text-xs text-color-secondary'>Attach file</span>\n </div>\n <div className='flex items-center gap-2'>\n <SolidButton\n type='submit'\n size='sm'\n className='gap-2 solid-purple-button'\n variant='primary'\n loading={isLoading}\n disabled={!message.trim() && selectedFiles.length === 0}\n >\n {type === 'email' ? 'Send' : 'Log'}\n </SolidButton>\n <SolidButton\n type='button'\n size='sm'\n variant='ghost'\n onClick={() => {\n setMessage('');\n setSelectedFiles([]);\n onCancel?.();\n }}\n >\n Cancel\n </SolidButton>\n </div>\n </div>\n </div>\n {selectedFiles.length > 0 && (\n <div className={styles.chatterSelectedFiles}>\n {selectedFiles.map((file, index) => (\n <div key={index} className={styles.chatterSelectedFileCard}>\n <div className={styles.chatterSelectedFileIcon}>\n <FileText size={16} />\n </div>\n <div className={styles.chatterSelectedFileMeta}>\n <p className={styles.chatterSelectedFileName}>{file.name}</p>\n <span className={styles.chatterSelectedFileSize}>{formatFileSize(file.size)}</span>\n </div>\n <SolidButton\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"solid-icon-button\"\n leftIcon={<X size={12} />}\n onClick={() => setSelectedFiles(prev => prev.filter((_, i) => i !== index))}\n aria-label={`Remove ${file.name}`}\n />\n </div>\n ))}\n </div>\n )}\n </form>\n )\n}\n"]}