@solidxai/core-ui 0.1.8-beta.2 → 0.1.8-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/dist/adapters/auth/getSession.d.ts.map +1 -1
  2. package/dist/adapters/auth/getSession.js +1 -1
  3. package/dist/adapters/auth/getSession.js.map +1 -1
  4. package/dist/adapters/auth/getSession.ts +1 -0
  5. package/dist/adapters/auth/helper.d.ts.map +1 -1
  6. package/dist/adapters/auth/helper.js +1 -0
  7. package/dist/adapters/auth/helper.js.map +1 -1
  8. package/dist/adapters/auth/helper.ts +3 -1
  9. package/dist/adapters/auth/signIn.d.ts.map +1 -1
  10. package/dist/adapters/auth/signIn.js +1 -0
  11. package/dist/adapters/auth/signIn.js.map +1 -1
  12. package/dist/adapters/auth/signIn.ts +3 -1
  13. package/dist/adapters/auth/signInWithOAuthAccessCode.d.ts +1 -0
  14. package/dist/adapters/auth/signInWithOAuthAccessCode.d.ts.map +1 -1
  15. package/dist/adapters/auth/signInWithOAuthAccessCode.js +10 -9
  16. package/dist/adapters/auth/signInWithOAuthAccessCode.js.map +1 -1
  17. package/dist/adapters/auth/signInWithOAuthAccessCode.ts +6 -3
  18. package/dist/adapters/auth/signOut.d.ts.map +1 -1
  19. package/dist/adapters/auth/signOut.js +7 -1
  20. package/dist/adapters/auth/signOut.js.map +1 -1
  21. package/dist/adapters/auth/signOut.ts +7 -1
  22. package/dist/adapters/auth/types.d.ts +1 -0
  23. package/dist/adapters/auth/types.d.ts.map +1 -1
  24. package/dist/adapters/auth/types.js.map +1 -1
  25. package/dist/adapters/auth/types.ts +1 -0
  26. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  27. package/dist/components/auth/AuthLayout.js +95 -38
  28. package/dist/components/auth/AuthLayout.js.map +1 -1
  29. package/dist/components/auth/AuthLayout.tsx +50 -39
  30. package/dist/components/auth/AuthSettingsContext.d.ts +10 -0
  31. package/dist/components/auth/AuthSettingsContext.d.ts.map +1 -0
  32. package/dist/components/auth/AuthSettingsContext.js +49 -0
  33. package/dist/components/auth/AuthSettingsContext.js.map +1 -0
  34. package/dist/components/auth/AuthSettingsContext.tsx +19 -0
  35. package/dist/components/auth/AuthTabs.d.ts.map +1 -1
  36. package/dist/components/auth/AuthTabs.js +9 -9
  37. package/dist/components/auth/AuthTabs.js.map +1 -1
  38. package/dist/components/auth/AuthTabs.tsx +14 -15
  39. package/dist/components/auth/FacebookAuthChecking.d.ts +2 -0
  40. package/dist/components/auth/FacebookAuthChecking.d.ts.map +1 -0
  41. package/dist/components/auth/FacebookAuthChecking.js +103 -0
  42. package/dist/components/auth/FacebookAuthChecking.js.map +1 -0
  43. package/dist/components/auth/FacebookAuthChecking.tsx +64 -0
  44. package/dist/components/auth/ForgotPasswordThankYou.d.ts.map +1 -1
  45. package/dist/components/auth/ForgotPasswordThankYou.js +2 -6
  46. package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
  47. package/dist/components/auth/ForgotPasswordThankYou.tsx +2 -7
  48. package/dist/components/auth/GoogleAuthChecking.js +0 -1
  49. package/dist/components/auth/GoogleAuthChecking.js.map +1 -1
  50. package/dist/components/auth/GoogleAuthChecking.tsx +1 -1
  51. package/dist/components/auth/MicrosoftAuthChecking.d.ts +2 -0
  52. package/dist/components/auth/MicrosoftAuthChecking.d.ts.map +1 -0
  53. package/dist/components/auth/MicrosoftAuthChecking.js +103 -0
  54. package/dist/components/auth/MicrosoftAuthChecking.js.map +1 -0
  55. package/dist/components/auth/MicrosoftAuthChecking.tsx +64 -0
  56. package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
  57. package/dist/components/auth/SolidForgotPassword.js +3 -7
  58. package/dist/components/auth/SolidForgotPassword.js.map +1 -1
  59. package/dist/components/auth/SolidForgotPassword.tsx +3 -7
  60. package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
  61. package/dist/components/auth/SolidInitialLoginOtp.js +4 -8
  62. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  63. package/dist/components/auth/SolidInitialLoginOtp.tsx +3 -6
  64. package/dist/components/auth/SolidInitiateRegisterOtp.d.ts.map +1 -1
  65. package/dist/components/auth/SolidInitiateRegisterOtp.js +27 -14
  66. package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
  67. package/dist/components/auth/SolidInitiateRegisterOtp.tsx +27 -15
  68. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  69. package/dist/components/auth/SolidLogin.js +11 -11
  70. package/dist/components/auth/SolidLogin.js.map +1 -1
  71. package/dist/components/auth/SolidLogin.tsx +20 -9
  72. package/dist/components/auth/SolidRegister.d.ts.map +1 -1
  73. package/dist/components/auth/SolidRegister.js +53 -25
  74. package/dist/components/auth/SolidRegister.js.map +1 -1
  75. package/dist/components/auth/SolidRegister.tsx +107 -40
  76. package/dist/components/auth/SolidResetPassword.d.ts.map +1 -1
  77. package/dist/components/auth/SolidResetPassword.js +2 -6
  78. package/dist/components/auth/SolidResetPassword.js.map +1 -1
  79. package/dist/components/auth/SolidResetPassword.tsx +2 -6
  80. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  81. package/dist/components/common/GeneralSettings.js +235 -156
  82. package/dist/components/common/GeneralSettings.js.map +1 -1
  83. package/dist/components/common/GeneralSettings.tsx +1109 -795
  84. package/dist/components/common/SettingsComponent.d.ts +2 -0
  85. package/dist/components/common/SettingsComponent.d.ts.map +1 -0
  86. package/dist/components/common/SettingsComponent.js +351 -0
  87. package/dist/components/common/SettingsComponent.js.map +1 -0
  88. package/dist/components/common/SettingsComponent.module.css +421 -0
  89. package/dist/components/common/SettingsComponent.tsx +582 -0
  90. package/dist/components/common/SocialMediaLogin.d.ts +8 -1
  91. package/dist/components/common/SocialMediaLogin.d.ts.map +1 -1
  92. package/dist/components/common/SocialMediaLogin.js +6 -13
  93. package/dist/components/common/SocialMediaLogin.js.map +1 -1
  94. package/dist/components/common/SocialMediaLogin.tsx +120 -58
  95. package/dist/components/common/SolidAdmin.js +1 -1
  96. package/dist/components/common/SolidAdmin.js.map +1 -1
  97. package/dist/components/common/SolidAdmin.tsx +1 -1
  98. package/dist/components/common/SolidExport.d.ts.map +1 -1
  99. package/dist/components/common/SolidExport.js +1 -1
  100. package/dist/components/common/SolidExport.js.map +1 -1
  101. package/dist/components/common/SolidExport.tsx +2 -1
  102. package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
  103. package/dist/components/common/SolidFormStepper.js +2 -1
  104. package/dist/components/common/SolidFormStepper.js.map +1 -1
  105. package/dist/components/common/SolidFormStepper.tsx +2 -1
  106. package/dist/components/common/SolidThemeProvider.d.ts.map +1 -1
  107. package/dist/components/common/SolidThemeProvider.js +5 -21
  108. package/dist/components/common/SolidThemeProvider.js.map +1 -1
  109. package/dist/components/common/SolidThemeProvider.tsx +6 -24
  110. package/dist/components/common/solid-export.css +26 -0
  111. package/dist/components/common/solidModuleHome.module.css +1 -2
  112. package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
  113. package/dist/components/core/card/SolidCardView.js +24 -25
  114. package/dist/components/core/card/SolidCardView.js.map +1 -1
  115. package/dist/components/core/card/SolidCardView.tsx +23 -28
  116. package/dist/components/core/card/SolidCardViewConfigure.js +1 -1
  117. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  118. package/dist/components/core/card/SolidCardViewConfigure.tsx +1 -1
  119. package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
  120. package/dist/components/core/chatter/SolidChatter.js +39 -9
  121. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  122. package/dist/components/core/chatter/SolidChatter.tsx +42 -7
  123. package/dist/components/core/chatter/SolidChatterAuditMessage.d.ts.map +1 -1
  124. package/dist/components/core/chatter/SolidChatterAuditMessage.js +19 -1
  125. package/dist/components/core/chatter/SolidChatterAuditMessage.js.map +1 -1
  126. package/dist/components/core/chatter/SolidChatterAuditMessage.tsx +22 -1
  127. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts +3 -0
  128. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts.map +1 -1
  129. package/dist/components/core/chatter/SolidChatterMessageBox.js +68 -4
  130. package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
  131. package/dist/components/core/chatter/SolidChatterMessageBox.tsx +45 -3
  132. package/dist/components/core/chatter/chatter.module.css +3 -6
  133. package/dist/components/core/common/PDFViewer.js +1 -1
  134. package/dist/components/core/common/PDFViewer.js.map +1 -1
  135. package/dist/components/core/common/PDFViewer.tsx +2 -2
  136. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.d.ts.map +1 -1
  137. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.js +3 -1
  138. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.js.map +1 -1
  139. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.module.css +1 -1
  140. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx +3 -1
  141. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.d.ts.map +1 -1
  142. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js +9 -8
  143. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
  144. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +4 -2
  145. package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +3 -4
  146. package/dist/components/core/common/dndCompat.d.ts +8 -0
  147. package/dist/components/core/common/dndCompat.d.ts.map +1 -0
  148. package/dist/components/core/common/dndCompat.js +5 -0
  149. package/dist/components/core/common/dndCompat.js.map +1 -0
  150. package/dist/components/core/common/dndCompat.ts +9 -0
  151. package/dist/components/core/dashboard/SolidDashboardFilterRequired.js +2 -2
  152. package/dist/components/core/dashboard/SolidDashboardFilterRequired.js.map +1 -1
  153. package/dist/components/core/dashboard/SolidDashboardFilterRequired.tsx +2 -2
  154. package/dist/components/core/dashboard/SolidDashboardNotAvailable.js +2 -2
  155. package/dist/components/core/dashboard/SolidDashboardNotAvailable.js.map +1 -1
  156. package/dist/components/core/dashboard/SolidDashboardNotAvailable.tsx +2 -2
  157. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.js +1 -1
  158. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.js.map +1 -1
  159. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.tsx +1 -1
  160. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.js +1 -1
  161. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.js.map +1 -1
  162. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.tsx +1 -1
  163. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.js +1 -1
  164. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.js.map +1 -1
  165. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.tsx +1 -1
  166. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.js +1 -1
  167. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.js.map +1 -1
  168. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.tsx +1 -1
  169. package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.d.ts +7 -0
  170. package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.d.ts.map +1 -0
  171. package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.js +75 -0
  172. package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.js.map +1 -0
  173. package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.ts +45 -0
  174. package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.d.ts +3 -0
  175. package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.d.ts.map +1 -0
  176. package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.js +81 -0
  177. package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.js.map +1 -0
  178. package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.tsx +114 -0
  179. package/dist/components/core/form/SolidFormActionHeader.d.ts +1 -1
  180. package/dist/components/core/form/SolidFormActionHeader.d.ts.map +1 -1
  181. package/dist/components/core/form/SolidFormActionHeader.js +5 -3
  182. package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
  183. package/dist/components/core/form/SolidFormActionHeader.tsx +27 -1
  184. package/dist/components/core/form/SolidFormLayouts.js +1 -1
  185. package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
  186. package/dist/components/core/form/SolidFormLayouts.tsx +1 -1
  187. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  188. package/dist/components/core/form/SolidFormView.js +141 -50
  189. package/dist/components/core/form/SolidFormView.js.map +1 -1
  190. package/dist/components/core/form/SolidFormView.tsx +123 -25
  191. package/dist/components/core/form/fields/SolidComputedField.d.ts +25 -0
  192. package/dist/components/core/form/fields/SolidComputedField.d.ts.map +1 -0
  193. package/dist/components/core/form/fields/SolidComputedField.js +128 -0
  194. package/dist/components/core/form/fields/SolidComputedField.js.map +1 -0
  195. package/dist/components/core/form/fields/SolidComputedField.tsx +134 -0
  196. package/dist/components/core/form/fields/SolidDateTimeField.d.ts.map +1 -1
  197. package/dist/components/core/form/fields/SolidDateTimeField.js +8 -2
  198. package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
  199. package/dist/components/core/form/fields/SolidDateTimeField.tsx +8 -2
  200. package/dist/components/core/form/fields/SolidEmailField.d.ts.map +1 -1
  201. package/dist/components/core/form/fields/SolidEmailField.js +5 -4
  202. package/dist/components/core/form/fields/SolidEmailField.js.map +1 -1
  203. package/dist/components/core/form/fields/SolidEmailField.tsx +17 -15
  204. package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
  205. package/dist/components/core/form/fields/SolidIntegerField.js +5 -4
  206. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  207. package/dist/components/core/form/fields/SolidIntegerField.tsx +3 -1
  208. package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts.map +1 -1
  209. package/dist/components/core/form/fields/SolidSelectionDynamicField.js +35 -24
  210. package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
  211. package/dist/components/core/form/fields/SolidSelectionDynamicField.tsx +30 -14
  212. package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
  213. package/dist/components/core/form/fields/SolidSelectionStaticField.js +29 -28
  214. package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
  215. package/dist/components/core/form/fields/SolidSelectionStaticField.tsx +17 -12
  216. package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -1
  217. package/dist/components/core/form/fields/SolidShortTextField.js +8 -6
  218. package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
  219. package/dist/components/core/form/fields/SolidShortTextField.tsx +7 -1
  220. package/dist/components/core/form/fields/SolidTimeField.js +1 -1
  221. package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
  222. package/dist/components/core/form/fields/SolidTimeField.tsx +1 -1
  223. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.d.ts.map +1 -1
  224. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js +3 -3
  225. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js.map +1 -1
  226. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.tsx +0 -5
  227. package/dist/components/core/form/fields/solidFields.module.css +0 -3
  228. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.d.ts +1 -1
  229. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js +1 -1
  230. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js.map +1 -1
  231. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx +1 -1
  232. package/dist/components/core/kanban/KanbanBoard.js +1 -1
  233. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  234. package/dist/components/core/kanban/KanbanBoard.tsx +1 -1
  235. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  236. package/dist/components/core/kanban/KanbanCard.js +2 -2
  237. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  238. package/dist/components/core/kanban/KanbanCard.tsx +4 -3
  239. package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
  240. package/dist/components/core/kanban/KanbanColumn.js +3 -3
  241. package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
  242. package/dist/components/core/kanban/KanbanColumn.tsx +5 -4
  243. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  244. package/dist/components/core/kanban/SolidKanbanView.js +220 -109
  245. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  246. package/dist/components/core/kanban/SolidKanbanView.tsx +219 -96
  247. package/dist/components/core/kanban/SolidKanbanViewConfigure.js +1 -1
  248. package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
  249. package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +1 -1
  250. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.d.ts.map +1 -1
  251. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js +4 -3
  252. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js.map +1 -1
  253. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +13 -12
  254. package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
  255. package/dist/components/core/list/SolidDataTable.js +6 -5
  256. package/dist/components/core/list/SolidDataTable.js.map +1 -1
  257. package/dist/components/core/list/SolidDataTable.tsx +6 -5
  258. package/dist/components/core/list/SolidEmptyListViewPlaceholder.d.ts.map +1 -1
  259. package/dist/components/core/list/SolidEmptyListViewPlaceholder.js +3 -3
  260. package/dist/components/core/list/SolidEmptyListViewPlaceholder.js.map +1 -1
  261. package/dist/components/core/list/SolidEmptyListViewPlaceholder.tsx +7 -4
  262. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  263. package/dist/components/core/list/SolidListView.js +64 -74
  264. package/dist/components/core/list/SolidListView.js.map +1 -1
  265. package/dist/components/core/list/SolidListView.tsx +72 -97
  266. package/dist/components/core/list/SolidListViewConfigure.js +1 -1
  267. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  268. package/dist/components/core/list/SolidListViewConfigure.tsx +1 -1
  269. package/dist/components/core/list/SolidListViewRowActionsMenu.js +2 -2
  270. package/dist/components/core/list/SolidListViewRowActionsMenu.js.map +1 -1
  271. package/dist/components/core/list/SolidListViewRowActionsMenu.tsx +2 -2
  272. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +1 -1
  273. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  274. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +1 -1
  275. package/dist/components/core/solid-ai/SolidAiChat.module.css +3 -3
  276. package/dist/components/core/tree/SolidTreeView.js +1 -1
  277. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  278. package/dist/components/core/tree/SolidTreeView.tsx +1 -1
  279. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.css +283 -9
  280. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.d.ts.map +1 -1
  281. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js +35 -28
  282. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js.map +1 -1
  283. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.tsx +64 -62
  284. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts +2 -1
  285. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts.map +1 -1
  286. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js +4 -4
  287. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js.map +1 -1
  288. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.tsx +17 -10
  289. package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.d.ts.map +1 -1
  290. package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.js +2 -19
  291. package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.js.map +1 -1
  292. package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.tsx +24 -43
  293. package/dist/components/core/users/CreateUser.css +114 -0
  294. package/dist/components/core/users/CreateUser.d.ts +1 -0
  295. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  296. package/dist/components/core/users/CreateUser.js +4 -3
  297. package/dist/components/core/users/CreateUser.js.map +1 -1
  298. package/dist/components/core/users/CreateUser.tsx +32 -26
  299. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
  300. package/dist/components/layout/AdminTopHeader.js +25 -1
  301. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  302. package/dist/components/layout/AdminTopHeader.tsx +38 -1
  303. package/dist/components/layout/context/layoutcontext.js +2 -2
  304. package/dist/components/layout/context/layoutcontext.js.map +1 -1
  305. package/dist/components/layout/context/layoutcontext.tsx +2 -2
  306. package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
  307. package/dist/components/layout/user-profile-menu.js +15 -14
  308. package/dist/components/layout/user-profile-menu.js.map +1 -1
  309. package/dist/components/layout/user-profile-menu.tsx +8 -6
  310. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
  311. package/dist/components/shad-cn-ui/SolidAutocomplete.js +9 -1
  312. package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
  313. package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +10 -1
  314. package/dist/components/shad-cn-ui/SolidConfirmDialog.d.ts +6 -1
  315. package/dist/components/shad-cn-ui/SolidConfirmDialog.d.ts.map +1 -1
  316. package/dist/components/shad-cn-ui/SolidConfirmDialog.js +3 -3
  317. package/dist/components/shad-cn-ui/SolidConfirmDialog.js.map +1 -1
  318. package/dist/components/shad-cn-ui/SolidConfirmDialog.tsx +15 -3
  319. package/dist/components/shad-cn-ui/SolidDatePicker.d.ts.map +1 -1
  320. package/dist/components/shad-cn-ui/SolidDatePicker.js +12 -2
  321. package/dist/components/shad-cn-ui/SolidDatePicker.js.map +1 -1
  322. package/dist/components/shad-cn-ui/SolidDatePicker.tsx +13 -2
  323. package/dist/components/shad-cn-ui/SolidDialog.d.ts +1 -1
  324. package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
  325. package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
  326. package/dist/components/shad-cn-ui/SolidDialog.tsx +1 -1
  327. package/dist/components/shad-cn-ui/SolidIcon.d.ts +2 -2
  328. package/dist/components/shad-cn-ui/SolidIcon.d.ts.map +1 -1
  329. package/dist/components/shad-cn-ui/SolidIcon.js +3 -4
  330. package/dist/components/shad-cn-ui/SolidIcon.js.map +1 -1
  331. package/dist/components/shad-cn-ui/SolidIcon.tsx +12 -15
  332. package/dist/components/shad-cn-ui/SolidRichTextEditor.d.ts.map +1 -1
  333. package/dist/components/shad-cn-ui/SolidRichTextEditor.js +9 -1
  334. package/dist/components/shad-cn-ui/SolidRichTextEditor.js.map +1 -1
  335. package/dist/components/shad-cn-ui/SolidRichTextEditor.tsx +8 -1
  336. package/dist/components/shad-cn-ui/SolidTabs.d.ts +2 -1
  337. package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -1
  338. package/dist/components/shad-cn-ui/SolidTabs.js +6 -3
  339. package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -1
  340. package/dist/components/shad-cn-ui/SolidTabs.tsx +63 -26
  341. package/dist/helpers/hydrateRelationRules.js +1 -1
  342. package/dist/helpers/hydrateRelationRules.js.map +1 -1
  343. package/dist/helpers/hydrateRelationRules.ts +1 -1
  344. package/dist/helpers/permissions.js +2 -2
  345. package/dist/helpers/permissions.js.map +1 -1
  346. package/dist/helpers/permissions.ts +2 -2
  347. package/dist/helpers/registry.d.ts +2 -2
  348. package/dist/helpers/registry.d.ts.map +1 -1
  349. package/dist/helpers/registry.js +6 -0
  350. package/dist/helpers/registry.js.map +1 -1
  351. package/dist/helpers/registry.ts +9 -2
  352. package/dist/helpers/settingsPayload.d.ts +32 -0
  353. package/dist/helpers/settingsPayload.d.ts.map +1 -0
  354. package/dist/helpers/settingsPayload.js +72 -0
  355. package/dist/helpers/settingsPayload.js.map +1 -0
  356. package/dist/helpers/settingsPayload.ts +125 -0
  357. package/dist/index.d.ts +4 -0
  358. package/dist/index.d.ts.map +1 -1
  359. package/dist/index.js +4 -0
  360. package/dist/index.js.map +1 -1
  361. package/dist/index.ts +4 -0
  362. package/dist/redux/api/solidChatterMessageApi.d.ts +2 -1
  363. package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
  364. package/dist/redux/api/solidChatterMessageApi.js +11 -1
  365. package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
  366. package/dist/redux/api/solidChatterMessageApi.ts +10 -1
  367. package/dist/redux/api/solidEntityApi.js +1 -1
  368. package/dist/redux/api/solidEntityApi.js.map +1 -1
  369. package/dist/redux/api/solidEntityApi.tsx +1 -1
  370. package/dist/redux/store/defaultStoreConfig.d.ts +1 -0
  371. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  372. package/dist/resources/globals.css +114 -90
  373. package/dist/resources/images/Background.svg +3 -5
  374. package/dist/resources/images/Navigation/SolidSettinsIcon.svg +3 -5
  375. package/dist/resources/images/errors/error.svg +12 -14
  376. package/dist/resources/shadcn-base.css +356 -429
  377. package/dist/resources/solid-responsive.css +22 -4
  378. package/dist/resources/themes/solid-dark-purple/theme.css +23 -33
  379. package/dist/resources/themes/solid-light-purple/theme.css +31 -31
  380. package/dist/routes/AppEventListener.js +1 -1
  381. package/dist/routes/AppEventListener.js.map +1 -1
  382. package/dist/routes/AppEventListener.tsx +1 -1
  383. package/dist/routes/SolidLayoutRegistry.d.ts.map +1 -1
  384. package/dist/routes/SolidLayoutRegistry.js +3 -1
  385. package/dist/routes/SolidLayoutRegistry.js.map +1 -1
  386. package/dist/routes/SolidLayoutRegistry.tsx +3 -1
  387. package/dist/routes/guards/AuthGuard.d.ts.map +1 -1
  388. package/dist/routes/guards/AuthGuard.js +4 -1
  389. package/dist/routes/guards/AuthGuard.js.map +1 -1
  390. package/dist/routes/guards/AuthGuard.tsx +6 -1
  391. package/dist/routes/pages/admin/core/CardPage.js +1 -1
  392. package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
  393. package/dist/routes/pages/admin/core/CardPage.tsx +1 -1
  394. package/dist/routes/pages/admin/core/FormPage.js +1 -1
  395. package/dist/routes/pages/admin/core/FormPage.js.map +1 -1
  396. package/dist/routes/pages/admin/core/FormPage.tsx +1 -1
  397. package/dist/routes/pages/admin/core/KanbanPage.js +1 -1
  398. package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
  399. package/dist/routes/pages/admin/core/KanbanPage.tsx +1 -1
  400. package/dist/routes/pages/admin/core/ListPage.js +1 -1
  401. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  402. package/dist/routes/pages/admin/core/ListPage.tsx +1 -1
  403. package/dist/routes/pages/admin/core/SettingsPage.js +2 -2
  404. package/dist/routes/pages/admin/core/SettingsPage.js.map +1 -1
  405. package/dist/routes/pages/admin/core/SettingsPage.tsx +2 -2
  406. package/dist/routes/pages/admin/core/TreePage.js +1 -1
  407. package/dist/routes/pages/admin/core/TreePage.js.map +1 -1
  408. package/dist/routes/pages/admin/core/TreePage.tsx +1 -1
  409. package/dist/routes/pages/auth/InitiateFacebookOauthPage.d.ts +2 -0
  410. package/dist/routes/pages/auth/InitiateFacebookOauthPage.d.ts.map +1 -0
  411. package/dist/routes/pages/auth/InitiateFacebookOauthPage.js +6 -0
  412. package/dist/routes/pages/auth/InitiateFacebookOauthPage.js.map +1 -0
  413. package/dist/routes/pages/auth/InitiateFacebookOauthPage.tsx +5 -0
  414. package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.d.ts +2 -0
  415. package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.d.ts.map +1 -0
  416. package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.js +6 -0
  417. package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.js.map +1 -0
  418. package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.tsx +5 -0
  419. package/dist/routes/solidRoutes.d.ts.map +1 -1
  420. package/dist/routes/solidRoutes.js +5 -1
  421. package/dist/routes/solidRoutes.js.map +1 -1
  422. package/dist/routes/solidRoutes.tsx +5 -1
  423. package/dist/routes/types.d.ts +1 -1
  424. package/dist/routes/types.d.ts.map +1 -1
  425. package/dist/routes/types.js.map +1 -1
  426. package/dist/routes/types.ts +2 -0
  427. package/dist/types/extension-registry.d.ts +1 -0
  428. package/dist/types/extension-registry.d.ts.map +1 -1
  429. package/dist/types/extension-registry.js +1 -0
  430. package/dist/types/extension-registry.js.map +1 -1
  431. package/dist/types/extension-registry.ts +1 -0
  432. package/dist/types/index.d.ts +2 -0
  433. package/dist/types/solid-core.d.ts +11 -0
  434. package/package.json +1 -2
@@ -0,0 +1,114 @@
1
+ .solid-user-details-layout {
2
+ width: 100%;
3
+ }
4
+
5
+ .solid-user-details-stack {
6
+ width: min(100%, 1060px);
7
+ margin: 0 auto;
8
+ display: flex;
9
+ flex-direction: column;
10
+ gap: 22px;
11
+ padding-top: 10px;
12
+ }
13
+
14
+ .solid-user-section-helper {
15
+ margin: 0;
16
+ font-size: 11px;
17
+ line-height: 1.45;
18
+ color: color-mix(in srgb, var(--foreground) 62%, transparent);
19
+ }
20
+
21
+ .solid-user-section-copy {
22
+ margin: 0 0 10px;
23
+ font-size: 11px;
24
+ line-height: 1.4;
25
+ color: color-mix(in srgb, var(--foreground) 62%, transparent);
26
+ }
27
+
28
+ .solid-user-edit-api-keys-pane {
29
+ width: min(100%, 1060px);
30
+ margin: 0 auto;
31
+ padding-top: 10px;
32
+ }
33
+
34
+ .solid-user-details-stack .solid-column-panel .solid-panel-header {
35
+ padding: 12px 16px;
36
+ }
37
+
38
+ .solid-user-details-stack .solid-column-panel .solid-panel-content {
39
+ padding: 14px 16px 16px;
40
+ }
41
+
42
+ .solid-user-access-row {
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: space-between;
46
+ gap: 18px;
47
+ }
48
+
49
+ .solid-user-access-copy {
50
+ max-width: 720px;
51
+ }
52
+
53
+ .solid-user-role-grid {
54
+ display: grid;
55
+ grid-template-columns: repeat(2, minmax(0, 1fr));
56
+ gap: 12px;
57
+ }
58
+
59
+ .solid-user-role-card {
60
+ border: 1px solid color-mix(in srgb, var(--border) 88%, transparent);
61
+ border-radius: 10px;
62
+ background: color-mix(in srgb, var(--card) 98%, white 2%);
63
+ transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
64
+ }
65
+
66
+ .solid-user-role-card:hover {
67
+ border-color: color-mix(in srgb, var(--primary) 28%, var(--border));
68
+ background: color-mix(in srgb, var(--accent) 30%, transparent);
69
+ }
70
+
71
+ .solid-user-role-card.is-selected {
72
+ border-color: color-mix(in srgb, var(--primary) 42%, var(--border));
73
+ background: color-mix(in srgb, var(--primary) 10%, var(--card));
74
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--primary) 18%, transparent);
75
+ }
76
+
77
+ .solid-user-role-control {
78
+ width: 100%;
79
+ min-height: 38px;
80
+ padding: 8px 10px;
81
+ }
82
+
83
+ .solid-user-role-control .solid-checkbox-label {
84
+ display: block;
85
+ min-width: 0;
86
+ }
87
+
88
+ @media (max-width: 900px) {
89
+ .solid-user-edit-tabs-list {
90
+ justify-content: flex-start;
91
+ gap: 16px;
92
+ overflow-x: auto;
93
+ }
94
+
95
+ .solid-user-details-stack,
96
+ .solid-user-edit-api-keys-pane {
97
+ width: 100%;
98
+ }
99
+
100
+ .solid-user-role-grid {
101
+ grid-template-columns: 1fr;
102
+ }
103
+ }
104
+
105
+ @media (max-width: 640px) {
106
+ .solid-user-access-row {
107
+ flex-direction: column;
108
+ align-items: stretch;
109
+ }
110
+
111
+ .solid-user-access-row .solid-switch {
112
+ align-self: flex-end;
113
+ }
114
+ }
@@ -1,3 +1,4 @@
1
+ import "./CreateUser.css";
1
2
  declare const CreateUser: ({ data, params }: any) => import("react/jsx-runtime").JSX.Element;
2
3
  export default CreateUser;
3
4
  //# sourceMappingURL=CreateUser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateUser.d.ts","sourceRoot":"","sources":["../../../../src/components/core/users/CreateUser.tsx"],"names":[],"mappings":"AAoCA,QAAA,MAAM,UAAU,qBAAsB,GAAG,4CAyQxC,CAAC;AAiMF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"CreateUser.d.ts","sourceRoot":"","sources":["../../../../src/components/core/users/CreateUser.tsx"],"names":[],"mappings":"AAyBA,OAAO,kBAAkB,CAAC;AAY1B,QAAA,MAAM,UAAU,qBAAsB,GAAG,4CA0QxC,CAAC;AAqMF,eAAe,UAAU,CAAC"}
@@ -59,6 +59,7 @@ import { useDeleteUserMutation } from "../../../redux/api/userApi";
59
59
  import { showToast } from "../../../redux/features/toastSlice";
60
60
  import { SolidButton, SolidCheckbox, SolidInput, SolidMessage, SolidPanel, SolidPasswordInput, SolidSwitch, SolidTabGroup, } from "../../shad-cn-ui";
61
61
  import { ApiKeysTab, GenerateApiKeyModal, RevealApiKeyModal } from "./ApiKeysTab";
62
+ import "./CreateUser.css";
62
63
  function cx() {
63
64
  var parts = [];
64
65
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -214,12 +215,12 @@ var CreateUser = function (_a) {
214
215
  {
215
216
  value: "userDetails",
216
217
  label: "User Details",
217
- content: _jsx(UserDetailsContent, { formik: formik, fieldError: fieldError, rolesData: rolesData, selectedRoles: selectedRoles, handleCheckboxChange: handleCheckboxChange, isEditMode: isEditMode }),
218
+ content: (_jsx(UserDetailsContent, { formik: formik, fieldError: fieldError, rolesData: rolesData, selectedRoles: selectedRoles, handleCheckboxChange: handleCheckboxChange, isEditMode: isEditMode })),
218
219
  },
219
220
  {
220
221
  value: "apiKeys",
221
222
  label: "API Keys",
222
- content: _jsx("div", { className: "pt-4", children: _jsx(ApiKeysTab, { userId: data === null || data === void 0 ? void 0 : data.id, canCreate: (_h = data === null || data === void 0 ? void 0 : data.isAllowedToGenerateApiKeys) !== null && _h !== void 0 ? _h : false }) }),
223
+ content: (_jsx("div", { className: "solid-user-edit-api-keys-pane", children: _jsx(ApiKeysTab, { userId: data === null || data === void 0 ? void 0 : data.id, canCreate: (_h = data === null || data === void 0 ? void 0 : data.isAllowedToGenerateApiKeys) !== null && _h !== void 0 ? _h : false }) })),
223
224
  },
224
225
  ] })) : (_jsx(UserDetailsContent, { formik: formik, fieldError: fieldError, rolesData: rolesData, selectedRoles: selectedRoles, handleCheckboxChange: handleCheckboxChange, isEditMode: isEditMode })) })] }) }), newUserIdForApiKey !== null && (_jsx(GenerateApiKeyModal, { open: true, userId: newUserIdForApiKey, onClose: function () {
225
226
  setNewUserIdForApiKey(null);
@@ -236,7 +237,7 @@ var CreateUser = function (_a) {
236
237
  function UserDetailsContent(_a) {
237
238
  var _b, _c;
238
239
  var formik = _a.formik, fieldError = _a.fieldError, rolesData = _a.rolesData, selectedRoles = _a.selectedRoles, handleCheckboxChange = _a.handleCheckboxChange, isEditMode = _a.isEditMode;
239
- return (_jsx("div", { className: "grid", children: _jsxs("div", { className: "col-12 lg:col-10 xl:col-8 mx-auto", children: [_jsx(SolidPanel, { header: "Basic Info", className: "solid-column-panel solid-user-form-panel", children: _jsxs("div", { className: "grid formgrid", children: [_jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2", children: [_jsx("label", { htmlFor: "fullName", className: "form-field-label", children: "Full Name" }), _jsx(SolidInput, { type: "text", id: "fullName", name: "fullName", autoComplete: "off", onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.fullName, className: cx(fieldError("fullName") && "solid-user-form-input-invalid") }), fieldError("fullName") ? _jsx(SolidMessage, { severity: "error", text: fieldError("fullName") }) : null] }), _jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2", children: [_jsx("label", { htmlFor: "username", className: "form-field-label", children: "Username" }), _jsx(SolidInput, { type: "text", id: "username", name: "username", autoComplete: "off", disabled: Boolean(formik.values.username) && isEditMode, onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.username, className: cx(fieldError("username") && "solid-user-form-input-invalid") }), fieldError("username") ? _jsx(SolidMessage, { severity: "error", text: fieldError("username") }) : null] }), _jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 mt-3", children: [_jsx("label", { htmlFor: "email", className: "form-field-label", children: "Email" }), _jsx(SolidInput, { type: "email", id: "email", name: "email", autoComplete: "off", disabled: isEditMode, onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.email, className: cx(fieldError("email") && "solid-user-form-input-invalid") }), fieldError("email") ? _jsx(SolidMessage, { severity: "error", text: fieldError("email") }) : null] }), _jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 mt-3", children: [_jsx("label", { htmlFor: "mobile", className: "form-field-label", children: "Mobile" }), _jsx(SolidInput, { type: "text", id: "mobile", name: "mobile", autoComplete: "off", onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.mobile, className: cx(fieldError("mobile") && "solid-user-form-input-invalid") }), fieldError("mobile") ? _jsx(SolidMessage, { severity: "error", text: fieldError("mobile") }) : null] }), !isEditMode ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 mt-3", children: [_jsx("label", { htmlFor: "password", className: "form-field-label", children: "Password" }), _jsx(SolidPasswordInput, { id: "password", name: "password", autoComplete: "off", value: formik.values.password, onChange: formik.handleChange, onBlur: formik.handleBlur, className: cx(fieldError("password") && "solid-user-form-input-invalid") }), fieldError("password") ? _jsx(SolidMessage, { severity: "error", text: fieldError("password") }) : null] }), _jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 mt-3", children: [_jsx("label", { htmlFor: "confirmPassword", className: "form-field-label", children: "Confirm Password" }), _jsx(SolidPasswordInput, { id: "confirmPassword", name: "confirmPassword", autoComplete: "off", value: formik.values.confirmPassword, onChange: formik.handleChange, onBlur: formik.handleBlur, className: cx(fieldError("confirmPassword") && "solid-user-form-input-invalid") }), fieldError("confirmPassword") ? (_jsx(SolidMessage, { severity: "error", text: fieldError("confirmPassword") })) : null] })] })) : (_jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 mt-3", children: [_jsx("label", { htmlFor: "failedLoginAttempts", className: "form-field-label", children: "Failed Login Attempts" }), _jsx(SolidInput, { type: "number", id: "failedLoginAttempts", name: "failedLoginAttempts", autoComplete: "off", onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.failedLoginAttempts, className: cx(fieldError("failedLoginAttempts") && "solid-user-form-input-invalid") }), fieldError("failedLoginAttempts") ? (_jsx(SolidMessage, { severity: "error", text: fieldError("failedLoginAttempts") })) : null, _jsx("p", { className: "solid-user-form-helper", children: "Your account has been locked due to repeated unsuccessful login attempts. Please contact your system admin." })] }))] }) }), _jsx(SolidPanel, { toggleable: true, header: "Access", className: "solid-column-panel solid-user-form-panel mt-5", children: _jsx("div", { className: "formgrid grid", children: _jsxs("div", { className: "field col-12 flex align-items-center justify-content-between gap-3", children: [_jsxs("div", { children: [_jsx("p", { className: "form-field-label m-0", children: "Allow API Key Generation" }), _jsx("p", { className: "solid-user-form-helper m-0 mt-1", children: "When enabled, this user can generate API keys for programmatic access." })] }), _jsx(SolidSwitch, { checked: formik.values.isAllowedToGenerateApiKeys, onChange: function (checked) { return formik.setFieldValue("isAllowedToGenerateApiKeys", checked); } })] }) }) }), _jsxs(SolidPanel, { toggleable: true, header: "Roles", className: "solid-column-panel solid-user-form-panel mt-5", children: [_jsx("p", { className: "solid-user-form-panel-copy", children: "Select the roles that should be assigned to this user." }), _jsx("div", { className: "formgrid grid solid-user-role-grid", children: (_c = (_b = rolesData === null || rolesData === void 0 ? void 0 : rolesData.data) === null || _b === void 0 ? void 0 : _b.records) === null || _c === void 0 ? void 0 : _c.map(function (role) { return (_jsx("div", { className: "field col-12 md:col-6 solid-user-role-item", children: _jsx(SolidCheckbox, { id: role.name, checked: selectedRoles.includes(role.name), onChange: function () { return handleCheckboxChange(role.name); }, label: role.name }) }, role.name)); }) })] })] }) }));
240
+ return (_jsx("div", { className: "solid-user-details-layout", children: _jsxs("div", { className: "solid-user-details-stack", children: [_jsx(SolidPanel, { header: "Basic Info", className: "solid-column-panel", children: _jsxs("div", { className: "grid formgrid", children: [_jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2", children: [_jsx("label", { htmlFor: "fullName", className: "form-field-label", children: "Full Name" }), _jsx(SolidInput, { type: "text", id: "fullName", name: "fullName", autoComplete: "off", onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.fullName, className: cx(fieldError("fullName") && "solid-user-form-input-invalid") }), fieldError("fullName") ? _jsx(SolidMessage, { severity: "error", text: fieldError("fullName") }) : null] }), _jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2", children: [_jsx("label", { htmlFor: "username", className: "form-field-label", children: "Username" }), _jsx(SolidInput, { type: "text", id: "username", name: "username", autoComplete: "off", disabled: Boolean(formik.values.username) && isEditMode, onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.username, className: cx(fieldError("username") && "solid-user-form-input-invalid") }), fieldError("username") ? _jsx(SolidMessage, { severity: "error", text: fieldError("username") }) : null] }), _jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 mt-3", children: [_jsx("label", { htmlFor: "email", className: "form-field-label", children: "Email" }), _jsx(SolidInput, { type: "email", id: "email", name: "email", autoComplete: "off", disabled: isEditMode, onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.email, className: cx(fieldError("email") && "solid-user-form-input-invalid") }), fieldError("email") ? _jsx(SolidMessage, { severity: "error", text: fieldError("email") }) : null] }), _jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 mt-3", children: [_jsx("label", { htmlFor: "mobile", className: "form-field-label", children: "Mobile" }), _jsx(SolidInput, { type: "text", id: "mobile", name: "mobile", autoComplete: "off", onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.mobile, className: cx(fieldError("mobile") && "solid-user-form-input-invalid") }), fieldError("mobile") ? _jsx(SolidMessage, { severity: "error", text: fieldError("mobile") }) : null] }), !isEditMode ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 mt-3", children: [_jsx("label", { htmlFor: "password", className: "form-field-label", children: "Password" }), _jsx(SolidPasswordInput, { id: "password", name: "password", autoComplete: "off", value: formik.values.password, onChange: formik.handleChange, onBlur: formik.handleBlur, className: cx(fieldError("password") && "solid-user-form-input-invalid") }), fieldError("password") ? _jsx(SolidMessage, { severity: "error", text: fieldError("password") }) : null] }), _jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 mt-3", children: [_jsx("label", { htmlFor: "confirmPassword", className: "form-field-label", children: "Confirm Password" }), _jsx(SolidPasswordInput, { id: "confirmPassword", name: "confirmPassword", autoComplete: "off", value: formik.values.confirmPassword, onChange: formik.handleChange, onBlur: formik.handleBlur, className: cx(fieldError("confirmPassword") && "solid-user-form-input-invalid") }), fieldError("confirmPassword") ? (_jsx(SolidMessage, { severity: "error", text: fieldError("confirmPassword") })) : null] })] })) : (_jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 mt-3", children: [_jsx("label", { htmlFor: "failedLoginAttempts", className: "form-field-label", children: "Failed Login Attempts" }), _jsx(SolidInput, { type: "number", id: "failedLoginAttempts", name: "failedLoginAttempts", autoComplete: "off", onChange: formik.handleChange, onBlur: formik.handleBlur, value: formik.values.failedLoginAttempts, className: cx(fieldError("failedLoginAttempts") && "solid-user-form-input-invalid") }), fieldError("failedLoginAttempts") ? (_jsx(SolidMessage, { severity: "error", text: fieldError("failedLoginAttempts") })) : null, _jsx("p", { className: "solid-user-section-helper", children: "Your account has been locked due to repeated unsuccessful login attempts. Please contact your system admin." })] }))] }) }), _jsx(SolidPanel, { toggleable: true, header: "Access", className: "solid-column-panel", children: _jsx("div", { className: "formgrid grid", children: _jsxs("div", { className: "field col-12 solid-user-access-row", children: [_jsxs("div", { className: "solid-user-access-copy", children: [_jsx("p", { className: "form-field-label m-0", children: "Allow API Key Generation" }), _jsx("p", { className: "solid-user-section-helper m-0 mt-1", children: "When enabled, this user can generate API keys for programmatic access." })] }), _jsx(SolidSwitch, { checked: formik.values.isAllowedToGenerateApiKeys, onChange: function (checked) { return formik.setFieldValue("isAllowedToGenerateApiKeys", checked); } })] }) }) }), _jsxs(SolidPanel, { toggleable: true, header: "Roles", className: "solid-column-panel", children: [_jsx("p", { className: "solid-user-section-copy", children: "Select the roles that should be assigned to this user." }), _jsx("div", { className: "solid-user-role-grid", children: (_c = (_b = rolesData === null || rolesData === void 0 ? void 0 : rolesData.data) === null || _b === void 0 ? void 0 : _b.records) === null || _c === void 0 ? void 0 : _c.map(function (role) { return (_jsx("div", { className: cx("solid-user-role-card", selectedRoles.includes(role.name) && "is-selected"), children: _jsx(SolidCheckbox, { id: role.name, checked: selectedRoles.includes(role.name), onChange: function () { return handleCheckboxChange(role.name); }, label: role.name, className: "solid-user-role-control" }) }, role.name)); }) })] })] }) }));
240
241
  }
241
242
  export default CreateUser;
242
243
  //# sourceMappingURL=CreateUser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateUser.js","sourceRoot":"","sources":["../../../../src/components/core/users/CreateUser.tsx"],"names":[],"mappings":"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","sourcesContent":["import { FetchBaseQueryError } from \"@reduxjs/toolkit/dist/query\";\nimport { useFormik } from \"formik\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport * as Yup from \"yup\";\nimport { BackButton } from \"../../../components/common/BackButton\";\nimport { CancelButton } from \"../../../components/common/CancelButton\";\nimport { SolidFormHeader } from \"../../../components/common/SolidFormHeader\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { useRegisterPrivateMutation, useUpdateUserMutation } from \"../../../redux/api/authApi\";\nimport { useGetrolesQuery } from \"../../../redux/api/roleApi\";\nimport { useDeleteUserMutation } from \"../../../redux/api/userApi\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport {\n SolidButton,\n SolidCheckbox,\n SolidInput,\n SolidMessage,\n SolidPanel,\n SolidPasswordInput,\n SolidSwitch,\n SolidTabGroup,\n} from \"../../shad-cn-ui\";\nimport { ApiKeysTab, GenerateApiKeyModal, RevealApiKeyModal } from \"./ApiKeysTab\";\n\ninterface ErrorResponseData {\n message: string;\n statusCode: number;\n error: string;\n}\n\nfunction cx(...parts: Array<string | false | undefined>) {\n return parts.filter(Boolean).join(\" \");\n}\n\nconst CreateUser = ({ data, params }: any) => {\n const dispatch = useDispatch();\n const router = useRouter();\n const [selectedRoles, setSelectedRoles] = useState<string[]>([]);\n const [activeTab, setActiveTab] = useState(\"userDetails\");\n const [newUserIdForApiKey, setNewUserIdForApiKey] = useState<number | null>(null);\n const [revealKey, setRevealKey] = useState<{ apiKey: string; keyName: string } | null>(null);\n\n const [registerPrivate, { isLoading, error: userCreateError }] = useRegisterPrivateMutation();\n const [\n updateUser,\n {\n isLoading: isUserUpdating,\n isSuccess: isUpdateUserSuccess,\n error: userUpdateError,\n },\n ] = useUpdateUserMutation();\n\n const [deleteUser, { isLoading: isUserDeleting, isSuccess: isDeleteUserSuccess }] = useDeleteUserMutation();\n const { data: rolesData } = useGetrolesQuery(\"\");\n\n useEffect(() => {\n if (data?.roles) {\n setSelectedRoles(data.roles.map((role: any) => role.name));\n }\n }, [data]);\n\n const initialValues = {\n fullName: data?.fullName ?? \"\",\n username: data?.username ?? \"\",\n email: data?.email ?? \"\",\n mobile: data?.mobile ?? \"\",\n password: \"\",\n confirmPassword: \"\",\n failedLoginAttempts: data?.failedLoginAttempts ?? 0,\n isAllowedToGenerateApiKeys: data?.isAllowedToGenerateApiKeys ?? false,\n };\n\n const validationSchema = Yup.object({\n fullName: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Full Name\")),\n username: Yup.string().required(\"Username is required\"),\n email: Yup.string()\n .email(ERROR_MESSAGES.FIELD_INVALID(\"email address\"))\n .required(ERROR_MESSAGES.FIELD_REUQIRED(\"Email\")),\n password: Yup.string().min(6, ERROR_MESSAGES.PASSWORD_CHARACTER(6)).nullable(),\n confirmPassword: Yup.string().when(\"password\", {\n is: (val: any) => !!val,\n then: (schema) => schema.oneOf([Yup.ref(\"password\")], ERROR_MESSAGES.FIELD_MUST_MATCH(\"Password\")).nullable(),\n otherwise: (schema) => schema.notRequired().nullable(),\n }),\n mobile: Yup.number().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Mobile\")),\n failedLoginAttempts: Yup.number()\n .typeError(\"Failed Login Attempts must be a number\")\n .nullable()\n .transform((value, originalValue) => (originalValue === \"\" ? null : value)),\n });\n\n function isFetchBaseQueryErrorWithErrorResponse(\n error: any\n ): error is FetchBaseQueryError & { data: ErrorResponseData } {\n return error && typeof error === \"object\" && \"data\" in error && \"message\" in error.data;\n }\n\n const formik = useFormik({\n initialValues,\n validationSchema,\n enableReinitialize: true,\n onSubmit: async (values) => {\n if (data) {\n const userData: any = {\n fullName: values.fullName,\n username: values.username,\n email: values.email,\n mobile: values.mobile,\n roles: selectedRoles,\n failedLoginAttempts: values.failedLoginAttempts,\n isAllowedToGenerateApiKeys: values.isAllowedToGenerateApiKeys,\n };\n\n if (values.password) {\n userData.password = values.password;\n }\n\n updateUser({ id: data.id, data: userData });\n return;\n }\n\n try {\n const response = await registerPrivate({\n fullName: values.fullName,\n username: values.username,\n email: values.email,\n mobile: values.mobile,\n password: values.password,\n roles: selectedRoles,\n failedLoginAttempts: values.failedLoginAttempts,\n isAllowedToGenerateApiKeys: values.isAllowedToGenerateApiKeys,\n }).unwrap();\n\n if (values.isAllowedToGenerateApiKeys) {\n const userId = (response as any)?.data?.id ?? (response as any)?.id;\n if (userId) {\n setNewUserIdForApiKey(userId);\n return;\n }\n }\n router.back();\n } catch {\n // error shown via userCreateError effect\n }\n },\n });\n\n const fieldError = (fieldName: keyof typeof initialValues) =>\n formik.touched[fieldName] && formik.errors[fieldName] ? String(formik.errors[fieldName]) : \"\";\n\n const handleCheckboxChange = (roleName: string) => {\n const updatedRoles = selectedRoles.includes(roleName)\n ? selectedRoles.filter((name) => name !== roleName)\n : [...selectedRoles, roleName];\n\n setSelectedRoles(updatedRoles);\n formik.setFieldTouched(\"roles\", true);\n formik.setFieldValue(\"roles\", updatedRoles);\n };\n\n useEffect(() => {\n const handleError = (errorToast: any) => {\n let errorMessage: any = [ERROR_MESSAGES.ERROR_OCCURED];\n\n if (isFetchBaseQueryErrorWithErrorResponse(errorToast)) {\n errorMessage = errorToast.data.message;\n } else {\n errorMessage = [ERROR_MESSAGES.SOMETHING_WRONG];\n }\n\n const detail = Array.isArray(errorMessage) ? errorMessage.join(\", \") : errorMessage;\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.ERROR, detail }));\n };\n\n if (userCreateError) handleError(userCreateError);\n if (userUpdateError) handleError(userUpdateError);\n }, [dispatch, userCreateError, userUpdateError]);\n\n useEffect(() => {\n if (isDeleteUserSuccess || isUpdateUserSuccess) {\n router.back();\n }\n }, [isDeleteUserSuccess, isUpdateUserSuccess, router]);\n\n const isEditMode = params.id !== \"new\";\n const isSaving = isLoading || isUserUpdating;\n\n\n return (\n <div className=\"solid-form-wrapper\">\n <div className=\"solid-form-section\">\n <form onSubmit={formik.handleSubmit}>\n <div className=\"solid-form-header flex align-items-center justify-content-between gap-3 flex-wrap\">\n <div className=\"solid-user-form-titleblock flex align-items-center gap-3\">\n <BackButton />\n <div>\n <div className=\"form-wrapper-title\">{isEditMode ? \"Update User\" : \"Create User\"}</div>\n <p className=\"solid-user-form-subtitle m-0\">\n {isEditMode\n ? \"Update account details, access roles, and security controls.\"\n : \"Create a user account and assign the right access roles.\"}\n </p>\n </div>\n </div>\n <div className=\"gap-3 flex flex-wrap\">\n {formik.dirty ? (\n <SolidButton size=\"small\" type=\"submit\" loading={isSaving}>\n Save\n </SolidButton>\n ) : null}\n {data ? (\n <SolidButton\n size=\"small\"\n type=\"button\"\n variant=\"destructive\"\n loading={isUserDeleting}\n onClick={() => deleteUser(data.id)}\n >\n Delete\n </SolidButton>\n ) : null}\n <CancelButton />\n </div>\n </div>\n\n <SolidFormHeader />\n\n <div className=\"px-4 py-3 md:p-4 solid-form-content\">\n {isEditMode ? (\n <SolidTabGroup\n value={activeTab}\n onValueChange={setActiveTab}\n tabs={[\n {\n value: \"userDetails\",\n label: \"User Details\",\n content: <UserDetailsContent\n formik={formik}\n fieldError={fieldError}\n rolesData={rolesData}\n selectedRoles={selectedRoles}\n handleCheckboxChange={handleCheckboxChange}\n isEditMode={isEditMode}\n />,\n },\n {\n value: \"apiKeys\",\n label: \"API Keys\",\n content: <div className=\"pt-4\">\n <ApiKeysTab\n userId={data?.id}\n canCreate={data?.isAllowedToGenerateApiKeys ?? false}\n />\n </div>,\n },\n ]}\n />\n ) : (\n <UserDetailsContent\n formik={formik}\n fieldError={fieldError}\n rolesData={rolesData}\n selectedRoles={selectedRoles}\n handleCheckboxChange={handleCheckboxChange}\n isEditMode={isEditMode}\n />\n )}\n </div>\n </form>\n </div>\n\n {newUserIdForApiKey !== null && (\n <GenerateApiKeyModal\n open={true}\n userId={newUserIdForApiKey}\n onClose={() => {\n setNewUserIdForApiKey(null);\n router.back();\n }}\n onCreated={(apiKey, keyName) => {\n setNewUserIdForApiKey(null);\n setRevealKey({ apiKey, keyName });\n }}\n />\n )}\n\n {revealKey && (\n <RevealApiKeyModal\n open={true}\n apiKey={revealKey.apiKey}\n keyName={revealKey.keyName}\n onClose={() => {\n setRevealKey(null);\n router.back();\n }}\n />\n )}\n </div>\n );\n};\n\n/** Extracted form body so it can be used both inside and outside the tab wrapper */\nfunction UserDetailsContent({\n formik,\n fieldError,\n rolesData,\n selectedRoles,\n handleCheckboxChange,\n isEditMode,\n}: {\n formik: any;\n fieldError: (field: any) => string;\n rolesData: any;\n selectedRoles: string[];\n handleCheckboxChange: (roleName: string) => void;\n isEditMode: boolean;\n}) {\n return (\n <div className=\"grid\">\n <div className=\"col-12 lg:col-10 xl:col-8 mx-auto\">\n <SolidPanel header=\"Basic Info\" className=\"solid-column-panel solid-user-form-panel\">\n <div className=\"grid formgrid\">\n <div className=\"field col-12 md:col-6 flex flex-column gap-2\">\n <label htmlFor=\"fullName\" className=\"form-field-label\">\n Full Name\n </label>\n <SolidInput\n type=\"text\"\n id=\"fullName\"\n name=\"fullName\"\n autoComplete=\"off\"\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.fullName}\n className={cx(fieldError(\"fullName\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"fullName\") ? <SolidMessage severity=\"error\" text={fieldError(\"fullName\")} /> : null}\n </div>\n\n <div className=\"field col-12 md:col-6 flex flex-column gap-2\">\n <label htmlFor=\"username\" className=\"form-field-label\">\n Username\n </label>\n <SolidInput\n type=\"text\"\n id=\"username\"\n name=\"username\"\n autoComplete=\"off\"\n disabled={Boolean(formik.values.username) && isEditMode}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.username}\n className={cx(fieldError(\"username\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"username\") ? <SolidMessage severity=\"error\" text={fieldError(\"username\")} /> : null}\n </div>\n\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 mt-3\">\n <label htmlFor=\"email\" className=\"form-field-label\">\n Email\n </label>\n <SolidInput\n type=\"email\"\n id=\"email\"\n name=\"email\"\n autoComplete=\"off\"\n disabled={isEditMode}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.email}\n className={cx(fieldError(\"email\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"email\") ? <SolidMessage severity=\"error\" text={fieldError(\"email\")} /> : null}\n </div>\n\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 mt-3\">\n <label htmlFor=\"mobile\" className=\"form-field-label\">\n Mobile\n </label>\n <SolidInput\n type=\"text\"\n id=\"mobile\"\n name=\"mobile\"\n autoComplete=\"off\"\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.mobile}\n className={cx(fieldError(\"mobile\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"mobile\") ? <SolidMessage severity=\"error\" text={fieldError(\"mobile\")} /> : null}\n </div>\n\n {!isEditMode ? (\n <>\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 mt-3\">\n <label htmlFor=\"password\" className=\"form-field-label\">\n Password\n </label>\n <SolidPasswordInput\n id=\"password\"\n name=\"password\"\n autoComplete=\"off\"\n value={formik.values.password}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n className={cx(fieldError(\"password\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"password\") ? <SolidMessage severity=\"error\" text={fieldError(\"password\")} /> : null}\n </div>\n\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 mt-3\">\n <label htmlFor=\"confirmPassword\" className=\"form-field-label\">\n Confirm Password\n </label>\n <SolidPasswordInput\n id=\"confirmPassword\"\n name=\"confirmPassword\"\n autoComplete=\"off\"\n value={formik.values.confirmPassword}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n className={cx(fieldError(\"confirmPassword\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"confirmPassword\") ? (\n <SolidMessage severity=\"error\" text={fieldError(\"confirmPassword\")} />\n ) : null}\n </div>\n </>\n ) : (\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 mt-3\">\n <label htmlFor=\"failedLoginAttempts\" className=\"form-field-label\">\n Failed Login Attempts\n </label>\n <SolidInput\n type=\"number\"\n id=\"failedLoginAttempts\"\n name=\"failedLoginAttempts\"\n autoComplete=\"off\"\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.failedLoginAttempts}\n className={cx(fieldError(\"failedLoginAttempts\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"failedLoginAttempts\") ? (\n <SolidMessage severity=\"error\" text={fieldError(\"failedLoginAttempts\")} />\n ) : null}\n <p className=\"solid-user-form-helper\">\n Your account has been locked due to repeated unsuccessful login attempts. Please contact your\n system admin.\n </p>\n </div>\n )}\n </div>\n </SolidPanel>\n\n <SolidPanel toggleable header=\"Access\" className=\"solid-column-panel solid-user-form-panel mt-5\">\n <div className=\"formgrid grid\">\n <div className=\"field col-12 flex align-items-center justify-content-between gap-3\">\n <div>\n <p className=\"form-field-label m-0\">Allow API Key Generation</p>\n <p className=\"solid-user-form-helper m-0 mt-1\">\n When enabled, this user can generate API keys for programmatic access.\n </p>\n </div>\n <SolidSwitch\n checked={formik.values.isAllowedToGenerateApiKeys}\n onChange={(checked) => formik.setFieldValue(\"isAllowedToGenerateApiKeys\", checked)}\n />\n </div>\n </div>\n </SolidPanel>\n\n <SolidPanel toggleable header=\"Roles\" className=\"solid-column-panel solid-user-form-panel mt-5\">\n <p className=\"solid-user-form-panel-copy\">Select the roles that should be assigned to this user.</p>\n <div className=\"formgrid grid solid-user-role-grid\">\n {rolesData?.data?.records?.map((role: any) => (\n <div key={role.name} className=\"field col-12 md:col-6 solid-user-role-item\">\n <SolidCheckbox\n id={role.name}\n checked={selectedRoles.includes(role.name)}\n onChange={() => handleCheckboxChange(role.name)}\n label={role.name}\n />\n </div>\n ))}\n </div>\n </SolidPanel>\n </div>\n </div>\n );\n}\n\nexport default CreateUser;\n"]}
1
+ {"version":3,"file":"CreateUser.js","sourceRoot":"","sources":["../../../../src/components/core/users/CreateUser.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,kBAAkB,CAAC;AAQ1B,SAAS,EAAE;IAAC,eAA2C;SAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;QAA3C,0BAA2C;;IACrD,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,IAAM,UAAU,GAAG,UAAC,EAAqB;;QAAnB,IAAI,UAAA,EAAE,MAAM,YAAA;IAChC,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IACrB,IAAA,KAAoC,QAAQ,CAAW,EAAE,CAAC,EAAzD,aAAa,QAAA,EAAE,gBAAgB,QAA0B,CAAC;IAC3D,IAAA,KAA4B,QAAQ,CAAC,aAAa,CAAC,EAAlD,SAAS,QAAA,EAAE,YAAY,QAA2B,CAAC;IACpD,IAAA,KAA8C,QAAQ,CAAgB,IAAI,CAAC,EAA1E,kBAAkB,QAAA,EAAE,qBAAqB,QAAiC,CAAC;IAC5E,IAAA,KAA4B,QAAQ,CAA6C,IAAI,CAAC,EAArF,SAAS,QAAA,EAAE,YAAY,QAA8D,CAAC;IAEvF,IAAA,KAA2D,0BAA0B,EAAE,EAAtF,eAAe,QAAA,EAAE,UAAqC,EAAnC,SAAS,eAAA,EAAS,eAAe,WAAkC,CAAC;IACxF,IAAA,KAOF,qBAAqB,EAAE,EANzB,UAAU,QAAA,EACV,UAIC,EAHY,cAAc,eAAA,EACd,mBAAmB,eAAA,EACvB,eAAe,WAEC,CAAC;IAEtB,IAAA,KAA8E,qBAAqB,EAAE,EAApG,UAAU,QAAA,EAAE,UAA6D,EAAhD,cAAc,eAAA,EAAa,mBAAmB,eAA6B,CAAC;IACpG,IAAM,SAAS,GAAK,gBAAgB,CAAC,EAAE,CAAC,KAAzB,CAA0B;IAEjD,SAAS,CAAC;QACR,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE;YACf,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,IAAS,IAAK,OAAA,IAAI,CAAC,IAAI,EAAT,CAAS,CAAC,CAAC,CAAC;SAC5D;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAM,aAAa,GAAG;QACpB,QAAQ,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,mCAAI,EAAE;QAC9B,QAAQ,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,mCAAI,EAAE;QAC9B,KAAK,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,mCAAI,EAAE;QACxB,MAAM,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,mCAAI,EAAE;QAC1B,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,EAAE;QACnB,mBAAmB,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,mCAAI,CAAC;QACnD,0BAA0B,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,0BAA0B,mCAAI,KAAK;KACtE,CAAC;IAEF,IAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC;QAClC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC3E,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACvD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;aAChB,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;aACpD,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC9E,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE;YAC7C,EAAE,EAAE,UAAC,GAAQ,IAAK,OAAA,CAAC,CAAC,GAAG,EAAL,CAAK;YACvB,IAAI,EAAE,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,EAA3F,CAA2F;YAC7G,SAAS,EAAE,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,EAA/B,CAA+B;SACvD,CAAC;QACF,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACtE,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE;aAC9B,SAAS,CAAC,wCAAwC,CAAC;aACnD,QAAQ,EAAE;aACV,SAAS,CAAC,UAAC,KAAK,EAAE,aAAa,IAAK,OAAA,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAArC,CAAqC,CAAC;KAC9E,CAAC,CAAC;IAEH,SAAS,sCAAsC,CAC7C,KAAU;QAEV,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC;IAC1F,CAAC;IAED,IAAM,MAAM,GAAG,SAAS,CAAC;QACvB,aAAa,eAAA;QACb,gBAAgB,kBAAA;QAChB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,UAAO,MAAM;;;;;;wBACrB,IAAI,IAAI,EAAE;4BACF,QAAQ,GAAQ;gCACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gCACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gCACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gCACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gCACrB,KAAK,EAAE,aAAa;gCACpB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;gCAC/C,0BAA0B,EAAE,MAAM,CAAC,0BAA0B;6BAC9D,CAAC;4BAEF,IAAI,MAAM,CAAC,QAAQ,EAAE;gCACnB,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;6BACrC;4BAED,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;4BAC5C,sBAAO;yBACR;;;;wBAGkB,qBAAM,eAAe,CAAC;gCACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gCACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gCACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gCACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gCACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gCACzB,KAAK,EAAE,aAAa;gCACpB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;gCAC/C,0BAA0B,EAAE,MAAM,CAAC,0BAA0B;6BAC9D,CAAC,CAAC,MAAM,EAAE,EAAA;;wBATL,QAAQ,GAAG,SASN;wBAEX,IAAI,MAAM,CAAC,0BAA0B,EAAE;4BAC/B,MAAM,GAAG,MAAA,MAAC,QAAgB,aAAhB,QAAQ,uBAAR,QAAQ,CAAU,IAAI,0CAAE,EAAE,mCAAK,QAAgB,aAAhB,QAAQ,uBAAR,QAAQ,CAAU,EAAE,CAAC;4BACpE,IAAI,MAAM,EAAE;gCACV,qBAAqB,CAAC,MAAM,CAAC,CAAC;gCAC9B,sBAAO;6BACR;yBACF;wBACD,MAAM,CAAC,IAAI,EAAE,CAAC;;;;;;;;aAIjB;KACF,CAAC,CAAC;IAEH,IAAM,UAAU,GAAG,UAAC,SAAqC;QACvD,OAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IAA7F,CAA6F,CAAC;IAEhG,IAAM,oBAAoB,GAAG,UAAC,QAAgB;QAC5C,IAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnD,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,KAAK,QAAQ,EAAjB,CAAiB,CAAC;YACnD,CAAC,iCAAK,aAAa,UAAE,QAAQ,SAAC,CAAC;QAEjC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC/B,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,SAAS,CAAC;QACR,IAAM,WAAW,GAAG,UAAC,UAAe;YAClC,IAAI,YAAY,GAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAEvD,IAAI,sCAAsC,CAAC,UAAU,CAAC,EAAE;gBACtD,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;aACxC;iBAAM;gBACL,YAAY,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;aACjD;YAED,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;YACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC,CAAC;QAEF,IAAI,eAAe;YAAE,WAAW,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,eAAe;YAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;IAEjD,SAAS,CAAC;QACR,IAAI,mBAAmB,IAAI,mBAAmB,EAAE;YAC9C,MAAM,CAAC,IAAI,EAAE,CAAC;SACf;IACH,CAAC,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC;IAEvD,IAAM,UAAU,GAAG,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC;IACvC,IAAM,QAAQ,GAAG,SAAS,IAAI,cAAc,CAAC;IAG7C,OAAO,CACL,eAAK,SAAS,EAAC,oBAAoB,aACjC,cAAK,SAAS,EAAC,oBAAoB,YACjC,gBAAM,QAAQ,EAAE,MAAM,CAAC,YAAY,aACjC,eAAK,SAAS,EAAC,mFAAmF,aAChG,eAAK,SAAS,EAAC,0DAA0D,aACvE,KAAC,UAAU,KAAG,EACd,0BACE,cAAK,SAAS,EAAC,oBAAoB,YAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,GAAO,EACtF,YAAG,SAAS,EAAC,8BAA8B,YACxC,UAAU;wDACT,CAAC,CAAC,8DAA8D;wDAChE,CAAC,CAAC,0DAA0D,GAC5D,IACA,IACF,EACN,eAAK,SAAS,EAAC,sBAAsB,aAClC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACd,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,QAAQ,qBAE3C,CACf,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,WAAW,IACV,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,aAAa,EACrB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,cAAM,OAAA,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAnB,CAAmB,uBAGtB,CACf,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,YAAY,KAAG,IACZ,IACF,EAEN,KAAC,eAAe,KAAG,EAEnB,cAAK,SAAS,EAAC,qCAAqC,YACjD,UAAU,CAAC,CAAC,CAAC,CACZ,KAAC,aAAa,IACZ,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,YAAY,EAC3B,IAAI,EAAE;oCACJ;wCACE,KAAK,EAAE,aAAa;wCACpB,KAAK,EAAE,cAAc;wCACrB,OAAO,EAAE,CACP,KAAC,kBAAkB,IACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,UAAU,GACtB,CACH;qCACF;oCACD;wCACE,KAAK,EAAE,SAAS;wCAChB,KAAK,EAAE,UAAU;wCACjB,OAAO,EAAE,CACP,cAAK,SAAS,EAAC,+BAA+B,YAC5C,KAAC,UAAU,IAAC,MAAM,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,0BAA0B,mCAAI,KAAK,GAAI,GAClF,CACP;qCACF;iCACF,GACD,CACH,CAAC,CAAC,CAAC,CACF,KAAC,kBAAkB,IACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,UAAU,GACtB,CACH,GACG,IACD,GACH,EAEL,kBAAkB,KAAK,IAAI,IAAI,CAC9B,KAAC,mBAAmB,IAClB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE;oBACP,qBAAqB,CAAC,IAAI,CAAC,CAAC;oBAC5B,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,CAAC,EACD,SAAS,EAAE,UAAC,MAAM,EAAE,OAAO;oBACzB,qBAAqB,CAAC,IAAI,CAAC,CAAC;oBAC5B,YAAY,CAAC,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;gBACpC,CAAC,GACD,CACH,EAEA,SAAS,IAAI,CACZ,KAAC,iBAAiB,IAChB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,SAAS,CAAC,MAAM,EACxB,OAAO,EAAE,SAAS,CAAC,OAAO,EAC1B,OAAO,EAAE;oBACP,YAAY,CAAC,IAAI,CAAC,CAAC;oBACnB,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,CAAC,GACD,CACH,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,oFAAoF;AACpF,SAAS,kBAAkB,CAAC,EAc3B;;QAbC,MAAM,YAAA,EACN,UAAU,gBAAA,EACV,SAAS,eAAA,EACT,aAAa,mBAAA,EACb,oBAAoB,0BAAA,EACpB,UAAU,gBAAA;IASV,OAAO,CACL,cAAK,SAAS,EAAC,2BAA2B,YACxC,eAAK,SAAS,EAAC,0BAA0B,aACvC,KAAC,UAAU,IAAC,MAAM,EAAC,YAAY,EAAC,SAAS,EAAC,oBAAoB,YAC5D,eAAK,SAAS,EAAC,eAAe,aAC5B,eAAK,SAAS,EAAC,8CAA8C,aAC3D,gBAAO,OAAO,EAAC,UAAU,EAAC,SAAS,EAAC,kBAAkB,0BAE9C,EACR,KAAC,UAAU,IACT,IAAI,EAAC,MAAM,EACX,EAAE,EAAC,UAAU,EACb,IAAI,EAAC,UAAU,EACf,YAAY,EAAC,KAAK,EAClB,QAAQ,EAAE,MAAM,CAAC,YAAY,EAC7B,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAC7B,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,+BAA+B,CAAC,GACxE,EACD,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,GAAI,CAAC,CAAC,CAAC,IAAI,IAC5F,EAEN,eAAK,SAAS,EAAC,8CAA8C,aAC3D,gBAAO,OAAO,EAAC,UAAU,EAAC,SAAS,EAAC,kBAAkB,yBAE9C,EACR,KAAC,UAAU,IACT,IAAI,EAAC,MAAM,EACX,EAAE,EAAC,UAAU,EACb,IAAI,EAAC,UAAU,EACf,YAAY,EAAC,KAAK,EAClB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU,EACvD,QAAQ,EAAE,MAAM,CAAC,YAAY,EAC7B,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAC7B,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,+BAA+B,CAAC,GACxE,EACD,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,GAAI,CAAC,CAAC,CAAC,IAAI,IAC5F,EAEN,eAAK,SAAS,EAAC,mDAAmD,aAChE,gBAAO,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,kBAAkB,sBAE3C,EACR,KAAC,UAAU,IACT,IAAI,EAAC,OAAO,EACZ,EAAE,EAAC,OAAO,EACV,IAAI,EAAC,OAAO,EACZ,YAAY,EAAC,KAAK,EAClB,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,MAAM,CAAC,YAAY,EAC7B,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAC1B,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,+BAA+B,CAAC,GACrE,EACD,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,GAAI,CAAC,CAAC,CAAC,IAAI,IACtF,EAEN,eAAK,SAAS,EAAC,mDAAmD,aAChE,gBAAO,OAAO,EAAC,QAAQ,EAAC,SAAS,EAAC,kBAAkB,uBAE5C,EACR,KAAC,UAAU,IACT,IAAI,EAAC,MAAM,EACX,EAAE,EAAC,QAAQ,EACX,IAAI,EAAC,QAAQ,EACb,YAAY,EAAC,KAAK,EAClB,QAAQ,EAAE,MAAM,CAAC,YAAY,EAC7B,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAC3B,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,+BAA+B,CAAC,GACtE,EACD,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAI,CAAC,CAAC,CAAC,IAAI,IACxF,EAEL,CAAC,UAAU,CAAC,CAAC,CAAC,CACb,8BACE,eAAK,SAAS,EAAC,mDAAmD,aAChE,gBAAO,OAAO,EAAC,UAAU,EAAC,SAAS,EAAC,kBAAkB,yBAE9C,EACR,KAAC,kBAAkB,IACjB,EAAE,EAAC,UAAU,EACb,IAAI,EAAC,UAAU,EACf,YAAY,EAAC,KAAK,EAClB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAC7B,QAAQ,EAAE,MAAM,CAAC,YAAY,EAC7B,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,+BAA+B,CAAC,GACxE,EACD,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,GAAI,CAAC,CAAC,CAAC,IAAI,IAC5F,EAEN,eAAK,SAAS,EAAC,mDAAmD,aAChE,gBAAO,OAAO,EAAC,iBAAiB,EAAC,SAAS,EAAC,kBAAkB,iCAErD,EACR,KAAC,kBAAkB,IACjB,EAAE,EAAC,iBAAiB,EACpB,IAAI,EAAC,iBAAiB,EACtB,YAAY,EAAC,KAAK,EAClB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,EACpC,QAAQ,EAAE,MAAM,CAAC,YAAY,EAC7B,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,+BAA+B,CAAC,GAC/E,EACD,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAC/B,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAI,CACvE,CAAC,CAAC,CAAC,IAAI,IACJ,IACL,CACJ,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,mDAAmD,aAChE,gBAAO,OAAO,EAAC,qBAAqB,EAAC,SAAS,EAAC,kBAAkB,sCAEzD,EACR,KAAC,UAAU,IACT,IAAI,EAAC,QAAQ,EACb,EAAE,EAAC,qBAAqB,EACxB,IAAI,EAAC,qBAAqB,EAC1B,YAAY,EAAC,KAAK,EAClB,QAAQ,EAAE,MAAM,CAAC,YAAY,EAC7B,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EACxC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,+BAA+B,CAAC,GACnF,EACD,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CACnC,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,UAAU,CAAC,qBAAqB,CAAC,GAAI,CAC3E,CAAC,CAAC,CAAC,IAAI,EACR,YAAG,SAAS,EAAC,2BAA2B,4HAGpC,IACA,CACP,IACG,GACK,EAEb,KAAC,UAAU,IAAC,UAAU,QAAC,MAAM,EAAC,QAAQ,EAAC,SAAS,EAAC,oBAAoB,YACnE,cAAK,SAAS,EAAC,eAAe,YAC5B,eAAK,SAAS,EAAC,oCAAoC,aACjD,eAAK,SAAS,EAAC,wBAAwB,aACrC,YAAG,SAAS,EAAC,sBAAsB,yCAA6B,EAChE,YAAG,SAAS,EAAC,oCAAoC,uFAE7C,IACA,EACN,KAAC,WAAW,IACV,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,0BAA0B,EACjD,QAAQ,EAAE,UAAC,OAAO,IAAK,OAAA,MAAM,CAAC,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC,EAA3D,CAA2D,GAClF,IACE,GACF,GACK,EAEb,MAAC,UAAU,IAAC,UAAU,QAAC,MAAM,EAAC,OAAO,EAAC,SAAS,EAAC,oBAAoB,aAClE,YAAG,SAAS,EAAC,yBAAyB,uEAA2D,EACjG,cAAK,SAAS,EAAC,sBAAsB,YAClC,MAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,0CAAE,OAAO,0CAAE,GAAG,CAAC,UAAC,IAAS,IAAK,OAAA,CAC5C,cAEE,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,YAEzF,KAAC,aAAa,IACZ,EAAE,EAAE,IAAI,CAAC,IAAI,EACb,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAC1C,QAAQ,EAAE,cAAM,OAAA,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAA/B,CAA+B,EAC/C,KAAK,EAAE,IAAI,CAAC,IAAI,EAChB,SAAS,EAAC,yBAAyB,GACnC,IATG,IAAI,CAAC,IAAI,CAUV,CACP,EAb6C,CAa7C,CAAC,GACE,IACK,IACT,GACF,CACP,CAAC;AACJ,CAAC;AAED,eAAe,UAAU,CAAC","sourcesContent":["import { FetchBaseQueryError } from \"@reduxjs/toolkit/dist/query\";\nimport { useFormik } from \"formik\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport * as Yup from \"yup\";\nimport { BackButton } from \"../../../components/common/BackButton\";\nimport { CancelButton } from \"../../../components/common/CancelButton\";\nimport { SolidFormHeader } from \"../../../components/common/SolidFormHeader\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { useRegisterPrivateMutation, useUpdateUserMutation } from \"../../../redux/api/authApi\";\nimport { useGetrolesQuery } from \"../../../redux/api/roleApi\";\nimport { useDeleteUserMutation } from \"../../../redux/api/userApi\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport {\n SolidButton,\n SolidCheckbox,\n SolidInput,\n SolidMessage,\n SolidPanel,\n SolidPasswordInput,\n SolidSwitch,\n SolidTabGroup,\n} from \"../../shad-cn-ui\";\nimport { ApiKeysTab, GenerateApiKeyModal, RevealApiKeyModal } from \"./ApiKeysTab\";\nimport \"./CreateUser.css\";\n\ninterface ErrorResponseData {\n message: string;\n statusCode: number;\n error: string;\n}\n\nfunction cx(...parts: Array<string | false | undefined>) {\n return parts.filter(Boolean).join(\" \");\n}\n\nconst CreateUser = ({ data, params }: any) => {\n const dispatch = useDispatch();\n const router = useRouter();\n const [selectedRoles, setSelectedRoles] = useState<string[]>([]);\n const [activeTab, setActiveTab] = useState(\"userDetails\");\n const [newUserIdForApiKey, setNewUserIdForApiKey] = useState<number | null>(null);\n const [revealKey, setRevealKey] = useState<{ apiKey: string; keyName: string } | null>(null);\n\n const [registerPrivate, { isLoading, error: userCreateError }] = useRegisterPrivateMutation();\n const [\n updateUser,\n {\n isLoading: isUserUpdating,\n isSuccess: isUpdateUserSuccess,\n error: userUpdateError,\n },\n ] = useUpdateUserMutation();\n\n const [deleteUser, { isLoading: isUserDeleting, isSuccess: isDeleteUserSuccess }] = useDeleteUserMutation();\n const { data: rolesData } = useGetrolesQuery(\"\");\n\n useEffect(() => {\n if (data?.roles) {\n setSelectedRoles(data.roles.map((role: any) => role.name));\n }\n }, [data]);\n\n const initialValues = {\n fullName: data?.fullName ?? \"\",\n username: data?.username ?? \"\",\n email: data?.email ?? \"\",\n mobile: data?.mobile ?? \"\",\n password: \"\",\n confirmPassword: \"\",\n failedLoginAttempts: data?.failedLoginAttempts ?? 0,\n isAllowedToGenerateApiKeys: data?.isAllowedToGenerateApiKeys ?? false,\n };\n\n const validationSchema = Yup.object({\n fullName: Yup.string().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Full Name\")),\n username: Yup.string().required(\"Username is required\"),\n email: Yup.string()\n .email(ERROR_MESSAGES.FIELD_INVALID(\"email address\"))\n .required(ERROR_MESSAGES.FIELD_REUQIRED(\"Email\")),\n password: Yup.string().min(6, ERROR_MESSAGES.PASSWORD_CHARACTER(6)).nullable(),\n confirmPassword: Yup.string().when(\"password\", {\n is: (val: any) => !!val,\n then: (schema) => schema.oneOf([Yup.ref(\"password\")], ERROR_MESSAGES.FIELD_MUST_MATCH(\"Password\")).nullable(),\n otherwise: (schema) => schema.notRequired().nullable(),\n }),\n mobile: Yup.number().required(ERROR_MESSAGES.FIELD_REUQIRED(\"Mobile\")),\n failedLoginAttempts: Yup.number()\n .typeError(\"Failed Login Attempts must be a number\")\n .nullable()\n .transform((value, originalValue) => (originalValue === \"\" ? null : value)),\n });\n\n function isFetchBaseQueryErrorWithErrorResponse(\n error: any\n ): error is FetchBaseQueryError & { data: ErrorResponseData } {\n return error && typeof error === \"object\" && \"data\" in error && \"message\" in error.data;\n }\n\n const formik = useFormik({\n initialValues,\n validationSchema,\n enableReinitialize: true,\n onSubmit: async (values) => {\n if (data) {\n const userData: any = {\n fullName: values.fullName,\n username: values.username,\n email: values.email,\n mobile: values.mobile,\n roles: selectedRoles,\n failedLoginAttempts: values.failedLoginAttempts,\n isAllowedToGenerateApiKeys: values.isAllowedToGenerateApiKeys,\n };\n\n if (values.password) {\n userData.password = values.password;\n }\n\n updateUser({ id: data.id, data: userData });\n return;\n }\n\n try {\n const response = await registerPrivate({\n fullName: values.fullName,\n username: values.username,\n email: values.email,\n mobile: values.mobile,\n password: values.password,\n roles: selectedRoles,\n failedLoginAttempts: values.failedLoginAttempts,\n isAllowedToGenerateApiKeys: values.isAllowedToGenerateApiKeys,\n }).unwrap();\n\n if (values.isAllowedToGenerateApiKeys) {\n const userId = (response as any)?.data?.id ?? (response as any)?.id;\n if (userId) {\n setNewUserIdForApiKey(userId);\n return;\n }\n }\n router.back();\n } catch {\n // error shown via userCreateError effect\n }\n },\n });\n\n const fieldError = (fieldName: keyof typeof initialValues) =>\n formik.touched[fieldName] && formik.errors[fieldName] ? String(formik.errors[fieldName]) : \"\";\n\n const handleCheckboxChange = (roleName: string) => {\n const updatedRoles = selectedRoles.includes(roleName)\n ? selectedRoles.filter((name) => name !== roleName)\n : [...selectedRoles, roleName];\n\n setSelectedRoles(updatedRoles);\n formik.setFieldTouched(\"roles\", true);\n formik.setFieldValue(\"roles\", updatedRoles);\n };\n\n useEffect(() => {\n const handleError = (errorToast: any) => {\n let errorMessage: any = [ERROR_MESSAGES.ERROR_OCCURED];\n\n if (isFetchBaseQueryErrorWithErrorResponse(errorToast)) {\n errorMessage = errorToast.data.message;\n } else {\n errorMessage = [ERROR_MESSAGES.SOMETHING_WRONG];\n }\n\n const detail = Array.isArray(errorMessage) ? errorMessage.join(\", \") : errorMessage;\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.ERROR, detail }));\n };\n\n if (userCreateError) handleError(userCreateError);\n if (userUpdateError) handleError(userUpdateError);\n }, [dispatch, userCreateError, userUpdateError]);\n\n useEffect(() => {\n if (isDeleteUserSuccess || isUpdateUserSuccess) {\n router.back();\n }\n }, [isDeleteUserSuccess, isUpdateUserSuccess, router]);\n\n const isEditMode = params.id !== \"new\";\n const isSaving = isLoading || isUserUpdating;\n\n\n return (\n <div className=\"solid-form-wrapper\">\n <div className=\"solid-form-section\">\n <form onSubmit={formik.handleSubmit}>\n <div className=\"solid-form-header flex align-items-center justify-content-between gap-3 flex-wrap\">\n <div className=\"solid-user-form-titleblock flex align-items-center gap-3\">\n <BackButton />\n <div>\n <div className=\"form-wrapper-title\">{isEditMode ? \"Update User\" : \"Create User\"}</div>\n <p className=\"solid-user-form-subtitle m-0\">\n {isEditMode\n ? \"Update account details, access roles, and security controls.\"\n : \"Create a user account and assign the right access roles.\"}\n </p>\n </div>\n </div>\n <div className=\"gap-3 flex flex-wrap\">\n {formik.dirty ? (\n <SolidButton size=\"small\" type=\"submit\" loading={isSaving}>\n Save\n </SolidButton>\n ) : null}\n {data ? (\n <SolidButton\n size=\"small\"\n type=\"button\"\n variant=\"destructive\"\n loading={isUserDeleting}\n onClick={() => deleteUser(data.id)}\n >\n Delete\n </SolidButton>\n ) : null}\n <CancelButton />\n </div>\n </div>\n\n <SolidFormHeader />\n\n <div className=\"px-4 py-3 md:p-4 solid-form-content\">\n {isEditMode ? (\n <SolidTabGroup\n value={activeTab}\n onValueChange={setActiveTab}\n tabs={[\n {\n value: \"userDetails\",\n label: \"User Details\",\n content: (\n <UserDetailsContent\n formik={formik}\n fieldError={fieldError}\n rolesData={rolesData}\n selectedRoles={selectedRoles}\n handleCheckboxChange={handleCheckboxChange}\n isEditMode={isEditMode}\n />\n ),\n },\n {\n value: \"apiKeys\",\n label: \"API Keys\",\n content: (\n <div className=\"solid-user-edit-api-keys-pane\">\n <ApiKeysTab userId={data?.id} canCreate={data?.isAllowedToGenerateApiKeys ?? false} />\n </div>\n ),\n },\n ]}\n />\n ) : (\n <UserDetailsContent\n formik={formik}\n fieldError={fieldError}\n rolesData={rolesData}\n selectedRoles={selectedRoles}\n handleCheckboxChange={handleCheckboxChange}\n isEditMode={isEditMode}\n />\n )}\n </div>\n </form>\n </div>\n\n {newUserIdForApiKey !== null && (\n <GenerateApiKeyModal\n open={true}\n userId={newUserIdForApiKey}\n onClose={() => {\n setNewUserIdForApiKey(null);\n router.back();\n }}\n onCreated={(apiKey, keyName) => {\n setNewUserIdForApiKey(null);\n setRevealKey({ apiKey, keyName });\n }}\n />\n )}\n\n {revealKey && (\n <RevealApiKeyModal\n open={true}\n apiKey={revealKey.apiKey}\n keyName={revealKey.keyName}\n onClose={() => {\n setRevealKey(null);\n router.back();\n }}\n />\n )}\n </div>\n );\n};\n\n/** Extracted form body so it can be used both inside and outside the tab wrapper */\nfunction UserDetailsContent({\n formik,\n fieldError,\n rolesData,\n selectedRoles,\n handleCheckboxChange,\n isEditMode,\n}: {\n formik: any;\n fieldError: (field: any) => string;\n rolesData: any;\n selectedRoles: string[];\n handleCheckboxChange: (roleName: string) => void;\n isEditMode: boolean;\n}) {\n return (\n <div className=\"solid-user-details-layout\">\n <div className=\"solid-user-details-stack\">\n <SolidPanel header=\"Basic Info\" className=\"solid-column-panel\">\n <div className=\"grid formgrid\">\n <div className=\"field col-12 md:col-6 flex flex-column gap-2\">\n <label htmlFor=\"fullName\" className=\"form-field-label\">\n Full Name\n </label>\n <SolidInput\n type=\"text\"\n id=\"fullName\"\n name=\"fullName\"\n autoComplete=\"off\"\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.fullName}\n className={cx(fieldError(\"fullName\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"fullName\") ? <SolidMessage severity=\"error\" text={fieldError(\"fullName\")} /> : null}\n </div>\n\n <div className=\"field col-12 md:col-6 flex flex-column gap-2\">\n <label htmlFor=\"username\" className=\"form-field-label\">\n Username\n </label>\n <SolidInput\n type=\"text\"\n id=\"username\"\n name=\"username\"\n autoComplete=\"off\"\n disabled={Boolean(formik.values.username) && isEditMode}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.username}\n className={cx(fieldError(\"username\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"username\") ? <SolidMessage severity=\"error\" text={fieldError(\"username\")} /> : null}\n </div>\n\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 mt-3\">\n <label htmlFor=\"email\" className=\"form-field-label\">\n Email\n </label>\n <SolidInput\n type=\"email\"\n id=\"email\"\n name=\"email\"\n autoComplete=\"off\"\n disabled={isEditMode}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.email}\n className={cx(fieldError(\"email\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"email\") ? <SolidMessage severity=\"error\" text={fieldError(\"email\")} /> : null}\n </div>\n\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 mt-3\">\n <label htmlFor=\"mobile\" className=\"form-field-label\">\n Mobile\n </label>\n <SolidInput\n type=\"text\"\n id=\"mobile\"\n name=\"mobile\"\n autoComplete=\"off\"\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.mobile}\n className={cx(fieldError(\"mobile\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"mobile\") ? <SolidMessage severity=\"error\" text={fieldError(\"mobile\")} /> : null}\n </div>\n\n {!isEditMode ? (\n <>\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 mt-3\">\n <label htmlFor=\"password\" className=\"form-field-label\">\n Password\n </label>\n <SolidPasswordInput\n id=\"password\"\n name=\"password\"\n autoComplete=\"off\"\n value={formik.values.password}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n className={cx(fieldError(\"password\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"password\") ? <SolidMessage severity=\"error\" text={fieldError(\"password\")} /> : null}\n </div>\n\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 mt-3\">\n <label htmlFor=\"confirmPassword\" className=\"form-field-label\">\n Confirm Password\n </label>\n <SolidPasswordInput\n id=\"confirmPassword\"\n name=\"confirmPassword\"\n autoComplete=\"off\"\n value={formik.values.confirmPassword}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n className={cx(fieldError(\"confirmPassword\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"confirmPassword\") ? (\n <SolidMessage severity=\"error\" text={fieldError(\"confirmPassword\")} />\n ) : null}\n </div>\n </>\n ) : (\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 mt-3\">\n <label htmlFor=\"failedLoginAttempts\" className=\"form-field-label\">\n Failed Login Attempts\n </label>\n <SolidInput\n type=\"number\"\n id=\"failedLoginAttempts\"\n name=\"failedLoginAttempts\"\n autoComplete=\"off\"\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n value={formik.values.failedLoginAttempts}\n className={cx(fieldError(\"failedLoginAttempts\") && \"solid-user-form-input-invalid\")}\n />\n {fieldError(\"failedLoginAttempts\") ? (\n <SolidMessage severity=\"error\" text={fieldError(\"failedLoginAttempts\")} />\n ) : null}\n <p className=\"solid-user-section-helper\">\n Your account has been locked due to repeated unsuccessful login attempts. Please contact your\n system admin.\n </p>\n </div>\n )}\n </div>\n </SolidPanel>\n\n <SolidPanel toggleable header=\"Access\" className=\"solid-column-panel\">\n <div className=\"formgrid grid\">\n <div className=\"field col-12 solid-user-access-row\">\n <div className=\"solid-user-access-copy\">\n <p className=\"form-field-label m-0\">Allow API Key Generation</p>\n <p className=\"solid-user-section-helper m-0 mt-1\">\n When enabled, this user can generate API keys for programmatic access.\n </p>\n </div>\n <SolidSwitch\n checked={formik.values.isAllowedToGenerateApiKeys}\n onChange={(checked) => formik.setFieldValue(\"isAllowedToGenerateApiKeys\", checked)}\n />\n </div>\n </div>\n </SolidPanel>\n\n <SolidPanel toggleable header=\"Roles\" className=\"solid-column-panel\">\n <p className=\"solid-user-section-copy\">Select the roles that should be assigned to this user.</p>\n <div className=\"solid-user-role-grid\">\n {rolesData?.data?.records?.map((role: any) => (\n <div\n key={role.name}\n className={cx(\"solid-user-role-card\", selectedRoles.includes(role.name) && \"is-selected\")}\n >\n <SolidCheckbox\n id={role.name}\n checked={selectedRoles.includes(role.name)}\n onChange={() => handleCheckboxChange(role.name)}\n label={role.name}\n className=\"solid-user-role-control\"\n />\n </div>\n ))}\n </div>\n </SolidPanel>\n </div>\n </div>\n );\n}\n\nexport default CreateUser;\n"]}
@@ -23,6 +23,7 @@ import {
23
23
  SolidTabGroup,
24
24
  } from "../../shad-cn-ui";
25
25
  import { ApiKeysTab, GenerateApiKeyModal, RevealApiKeyModal } from "./ApiKeysTab";
26
+ import "./CreateUser.css";
26
27
 
27
28
  interface ErrorResponseData {
28
29
  message: string;
@@ -236,24 +237,25 @@ const CreateUser = ({ data, params }: any) => {
236
237
  {
237
238
  value: "userDetails",
238
239
  label: "User Details",
239
- content: <UserDetailsContent
240
- formik={formik}
241
- fieldError={fieldError}
242
- rolesData={rolesData}
243
- selectedRoles={selectedRoles}
244
- handleCheckboxChange={handleCheckboxChange}
245
- isEditMode={isEditMode}
246
- />,
240
+ content: (
241
+ <UserDetailsContent
242
+ formik={formik}
243
+ fieldError={fieldError}
244
+ rolesData={rolesData}
245
+ selectedRoles={selectedRoles}
246
+ handleCheckboxChange={handleCheckboxChange}
247
+ isEditMode={isEditMode}
248
+ />
249
+ ),
247
250
  },
248
251
  {
249
252
  value: "apiKeys",
250
253
  label: "API Keys",
251
- content: <div className="pt-4">
252
- <ApiKeysTab
253
- userId={data?.id}
254
- canCreate={data?.isAllowedToGenerateApiKeys ?? false}
255
- />
256
- </div>,
254
+ content: (
255
+ <div className="solid-user-edit-api-keys-pane">
256
+ <ApiKeysTab userId={data?.id} canCreate={data?.isAllowedToGenerateApiKeys ?? false} />
257
+ </div>
258
+ ),
257
259
  },
258
260
  ]}
259
261
  />
@@ -318,9 +320,9 @@ function UserDetailsContent({
318
320
  isEditMode: boolean;
319
321
  }) {
320
322
  return (
321
- <div className="grid">
322
- <div className="col-12 lg:col-10 xl:col-8 mx-auto">
323
- <SolidPanel header="Basic Info" className="solid-column-panel solid-user-form-panel">
323
+ <div className="solid-user-details-layout">
324
+ <div className="solid-user-details-stack">
325
+ <SolidPanel header="Basic Info" className="solid-column-panel">
324
326
  <div className="grid formgrid">
325
327
  <div className="field col-12 md:col-6 flex flex-column gap-2">
326
328
  <label htmlFor="fullName" className="form-field-label">
@@ -446,7 +448,7 @@ function UserDetailsContent({
446
448
  {fieldError("failedLoginAttempts") ? (
447
449
  <SolidMessage severity="error" text={fieldError("failedLoginAttempts")} />
448
450
  ) : null}
449
- <p className="solid-user-form-helper">
451
+ <p className="solid-user-section-helper">
450
452
  Your account has been locked due to repeated unsuccessful login attempts. Please contact your
451
453
  system admin.
452
454
  </p>
@@ -455,12 +457,12 @@ function UserDetailsContent({
455
457
  </div>
456
458
  </SolidPanel>
457
459
 
458
- <SolidPanel toggleable header="Access" className="solid-column-panel solid-user-form-panel mt-5">
460
+ <SolidPanel toggleable header="Access" className="solid-column-panel">
459
461
  <div className="formgrid grid">
460
- <div className="field col-12 flex align-items-center justify-content-between gap-3">
461
- <div>
462
+ <div className="field col-12 solid-user-access-row">
463
+ <div className="solid-user-access-copy">
462
464
  <p className="form-field-label m-0">Allow API Key Generation</p>
463
- <p className="solid-user-form-helper m-0 mt-1">
465
+ <p className="solid-user-section-helper m-0 mt-1">
464
466
  When enabled, this user can generate API keys for programmatic access.
465
467
  </p>
466
468
  </div>
@@ -472,16 +474,20 @@ function UserDetailsContent({
472
474
  </div>
473
475
  </SolidPanel>
474
476
 
475
- <SolidPanel toggleable header="Roles" className="solid-column-panel solid-user-form-panel mt-5">
476
- <p className="solid-user-form-panel-copy">Select the roles that should be assigned to this user.</p>
477
- <div className="formgrid grid solid-user-role-grid">
477
+ <SolidPanel toggleable header="Roles" className="solid-column-panel">
478
+ <p className="solid-user-section-copy">Select the roles that should be assigned to this user.</p>
479
+ <div className="solid-user-role-grid">
478
480
  {rolesData?.data?.records?.map((role: any) => (
479
- <div key={role.name} className="field col-12 md:col-6 solid-user-role-item">
481
+ <div
482
+ key={role.name}
483
+ className={cx("solid-user-role-card", selectedRoles.includes(role.name) && "is-selected")}
484
+ >
480
485
  <SolidCheckbox
481
486
  id={role.name}
482
487
  checked={selectedRoles.includes(role.name)}
483
488
  onChange={() => handleCheckboxChange(role.name)}
484
489
  label={role.name}
490
+ className="solid-user-role-control"
485
491
  />
486
492
  </div>
487
493
  ))}
@@ -1 +1 @@
1
- {"version":3,"file":"AdminTopHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"AA0BA,eAAO,MAAM,cAAc,+CA0I1B,CAAC"}
1
+ {"version":3,"file":"AdminTopHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"AA0BA,eAAO,MAAM,cAAc,+CA+K1B,CAAC"}
@@ -75,6 +75,30 @@ export var AdminTopHeader = function () {
75
75
  var triggerSidebar = function () {
76
76
  window.dispatchEvent(new CustomEvent(SIDEBAR_TOGGLE_EVENT));
77
77
  };
78
- return (_jsx("header", { className: "solid-admin-header", children: _jsxs("div", { className: "solid-admin-header-inner", children: [_jsx("button", { type: "button", className: "solid-admin-sidebar-trigger", onClick: triggerSidebar, "aria-label": "Toggle sidebar", children: _jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [_jsx("rect", { x: "1.5", y: "2", width: "13", height: "12", rx: "2", stroke: "currentColor" }), _jsx("path", { d: "M5.5 2V14", stroke: "currentColor" }), _jsx("rect", { x: "8", y: "5.25", width: "4.5", height: "5.5", rx: "0.9", stroke: "currentColor" })] }) }), _jsx("div", { className: "solid-admin-header-sep" }), _jsx("nav", { className: "solid-admin-breadcrumbs", "aria-label": "Breadcrumb", children: crumbs.map(function (crumb, index) { return (_jsxs("span", { className: "solid-admin-crumb", children: [index > 0 && _jsx("span", { className: "solid-admin-crumb-sep", children: "\u203A" }), _jsx("span", { children: crumb })] }, "".concat(crumb, "-").concat(index))); }) }), _jsxs("div", { className: "solid-admin-header-actions", children: [isAdmin && isDev && !isStudioMode && (_jsxs("button", { type: "button", className: "solid-studio-trigger-btn", onClick: function () { dispatch(enterStudioMode()); router.push("/studio"); }, title: "Enter SolidX Studio", children: [_jsx(StudioSparkleIcon, {}), "Studio"] })), _jsxs("button", { type: "button", className: "solid-admin-theme-toggle", onClick: toggleThemeMode, "aria-label": "Toggle theme", title: "Toggle theme", children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 3l0 18", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 9l4.65 -4.65", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 14.3l7.37 -7.37", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 19.6l8.85 -8.85", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })] }), _jsx("span", { className: "solid-sr-only", children: "Toggle theme" })] }), showBack && (_jsx("button", { type: "button", className: "solid-admin-back-btn", onClick: function () { return router.back(); }, "aria-label": "Go back", children: "Back" }))] })] }) }));
78
+ var handleBreadcrumbClick = function (crumbIndex) {
79
+ // When on a form view, clicking the model name (second crumb) should navigate back to list
80
+ // Index 1 is the model name in a breadcrumb like: Module > Model > Action
81
+ if (crumbIndex === 1 && showBack) {
82
+ if (typeof window !== "undefined") {
83
+ // First, try to use the full stored URL (preserves all query params)
84
+ var storedFullUrl = sessionStorage.getItem("fromViewUrl");
85
+ if (storedFullUrl) {
86
+ router.push(storedFullUrl);
87
+ return;
88
+ }
89
+ }
90
+ // Fallback: construct URL from current path and stored view
91
+ var segments = pathname.split("/").filter(Boolean);
92
+ if (segments[0] === "admin" && segments[1] === "core") {
93
+ var moduleName = segments[2];
94
+ var modelName = segments[3];
95
+ var fromView = typeof window !== "undefined"
96
+ ? sessionStorage.getItem("fromView") || "list"
97
+ : "list";
98
+ router.push("/admin/core/".concat(moduleName, "/").concat(modelName, "/").concat(fromView));
99
+ }
100
+ }
101
+ };
102
+ return (_jsx("header", { className: "solid-admin-header", children: _jsxs("div", { className: "solid-admin-header-inner", children: [_jsx("button", { type: "button", className: "solid-admin-sidebar-trigger", onClick: triggerSidebar, "aria-label": "Toggle sidebar", children: _jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [_jsx("rect", { x: "1.5", y: "2", width: "13", height: "12", rx: "2", stroke: "currentColor" }), _jsx("path", { d: "M5.5 2V14", stroke: "currentColor" }), _jsx("rect", { x: "8", y: "5.25", width: "4.5", height: "5.5", rx: "0.9", stroke: "currentColor" })] }) }), _jsx("div", { className: "solid-admin-header-sep" }), _jsx("nav", { className: "solid-admin-breadcrumbs", "aria-label": "Breadcrumb", children: crumbs.map(function (crumb, index) { return (_jsxs("span", { className: "solid-admin-crumb", children: [index > 0 && _jsx("span", { className: "solid-admin-crumb-sep", children: "\u203A" }), index === 1 && showBack ? (_jsx("button", { type: "button", className: "solid-admin-crumb-link", onClick: function () { return handleBreadcrumbClick(index); }, style: { background: "none", border: "none", cursor: "pointer", color: "inherit", textDecoration: "underline" }, children: crumb })) : (_jsx("span", { children: crumb }))] }, "".concat(crumb, "-").concat(index))); }) }), _jsxs("div", { className: "solid-admin-header-actions", children: [isAdmin && isDev && !isStudioMode && (_jsxs("button", { type: "button", className: "solid-studio-trigger-btn", onClick: function () { dispatch(enterStudioMode()); router.push("/studio"); }, title: "Enter SolidX Studio", children: [_jsx(StudioSparkleIcon, {}), "Studio"] })), _jsxs("button", { type: "button", className: "solid-admin-theme-toggle", onClick: toggleThemeMode, "aria-label": "Toggle theme", title: "Toggle theme", children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 3l0 18", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 9l4.65 -4.65", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 14.3l7.37 -7.37", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 19.6l8.85 -8.85", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })] }), _jsx("span", { className: "solid-sr-only", children: "Toggle theme" })] }), showBack && (_jsx("button", { type: "button", className: "solid-admin-back-btn", onClick: function () { return router.back(); }, "aria-label": "Go back", children: "Back" }))] })] }) }));
79
103
  };
80
104
  //# sourceMappingURL=AdminTopHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdminTopHeader.js","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useMemo } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useSearchParams } from \"../../hooks/useSearchParams\";\nimport { useRouter } from \"../../hooks/useRouter\";\nimport { useSession } from \"../../hooks/useSession\";\nimport { useGetSolidActionByIdQuery } from \"../../redux/api/solidActionApi\";\nimport { LayoutContext } from \"./context/layoutcontext\";\nimport { enterStudioMode } from \"../../redux/features/solidStudioSlice\";\nimport { hasAnyRole } from \"../../helpers/rolesHelper\";\nimport { env } from \"../../adapters/env\";\n\nconst SIDEBAR_TOGGLE_EVENT = \"solidx:sidebar-toggle\";\n\nconst toLabel = (value: string) =>\n decodeURIComponent(value)\n .replace(/[-_]/g, \" \")\n .replace(/\\b\\w/g, (m) => m.toUpperCase());\n\nconst StudioSparkleIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M7 1v2M7 11v2M1 7h2M11 7h2M2.93 2.93l1.41 1.41M9.66 9.66l1.41 1.41M2.93 11.07l1.41-1.41M9.66 4.34l1.41-1.41\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n <circle cx=\"7\" cy=\"7\" r=\"2\" stroke=\"currentColor\" strokeWidth=\"1.4\" />\n </svg>\n);\n\nexport const AdminTopHeader = () => {\n const pathname = usePathname();\n const searchParams = useSearchParams();\n const router = useRouter();\n const dispatch = useDispatch();\n const { toggleThemeMode } = useContext(LayoutContext);\n const { data: session } = useSession();\n const user = session?.user;\n const isAdmin = hasAnyRole(user?.roles, [\"Admin\"]);\n const isStudioMode = useSelector((state: any) => state.solidStudio?.isStudioMode ?? false);\n const isDev = env(\"VITE_SOLIDX_ENV\") === \"dev\";\n\n // We treat actionId as the source of truth for breadcrumb labels.\n // If present, we resolve module/model/action via action-metadata API\n // so breadcrumbs are consistent across list/form/tree/kanban pages.\n const actionId = searchParams.get(\"actionId\");\n const { data: actionResponse } = useGetSolidActionByIdQuery(actionId as string, {\n skip: !actionId,\n });\n\n const crumbs = useMemo(() => {\n // API response shapes vary by adapter layer, so normalize defensively.\n const actionData = actionResponse?.data?.data ?? actionResponse?.data ?? actionResponse;\n const moduleFromApi = actionData?.module?.displayName || actionData?.module?.name;\n const modelFromApi = actionData?.model?.displayName || actionData?.model?.name;\n const actionFromApi = actionData?.displayName || actionData?.name;\n const actionDataId = actionData?.id != null ? String(actionData.id) : null;\n const hasMatchingActionData = Boolean(actionId) && actionDataId === actionId;\n\n // Priority 1: exact business breadcrumb contract requested:\n // <module> > <model> > <action>.\n // We only trust API crumbs when they belong to the current URL's actionId.\n // This avoids stale list breadcrumbs bleeding into form routes that do not\n // carry actionId in their query string.\n if (hasMatchingActionData && (moduleFromApi || modelFromApi || actionFromApi)) {\n return [moduleFromApi, modelFromApi, actionFromApi].filter(Boolean);\n }\n\n const segments = pathname.split(\"/\").filter(Boolean);\n // Priority 2: derive from route segments when API data is unavailable.\n // This is intentionally ahead of query fallback so form pages don't\n // inherit stale list query labels after list -> form navigation.\n if (segments[0] === \"admin\" && segments[1] === \"core\") {\n const moduleName = segments[2];\n const modelName = segments[3];\n const viewName = segments[4];\n const next = [moduleName, modelName, viewName].filter(Boolean).map((item) => toLabel(item!));\n return next.length ? next : [\"Admin\"];\n }\n\n const menuItemName = searchParams.get(\"menuItemName\");\n const actionName = searchParams.get(\"actionName\");\n\n // Priority 3: legacy URL-query fallback for older links/pages.\n if (menuItemName || actionName) {\n return [menuItemName, actionName].filter(Boolean).map((item) => toLabel(item!));\n }\n\n return [\"Admin\"];\n }, [actionId, actionResponse, pathname, searchParams]);\n\n const showBack = /\\/admin\\/core\\/[^/]+\\/[^/]+\\/form\\/[^/]+/.test(pathname);\n\n const triggerSidebar = () => {\n window.dispatchEvent(new CustomEvent(SIDEBAR_TOGGLE_EVENT));\n };\n\n return (\n <header className=\"solid-admin-header\">\n <div className=\"solid-admin-header-inner\">\n <button\n type=\"button\"\n className=\"solid-admin-sidebar-trigger\"\n onClick={triggerSidebar}\n aria-label=\"Toggle sidebar\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"1.5\" y=\"2\" width=\"13\" height=\"12\" rx=\"2\" stroke=\"currentColor\" />\n <path d=\"M5.5 2V14\" stroke=\"currentColor\" />\n <rect x=\"8\" y=\"5.25\" width=\"4.5\" height=\"5.5\" rx=\"0.9\" stroke=\"currentColor\" />\n </svg>\n </button>\n\n <div className=\"solid-admin-header-sep\" />\n\n <nav className=\"solid-admin-breadcrumbs\" aria-label=\"Breadcrumb\">\n {crumbs.map((crumb, index) => (\n <span key={`${crumb}-${index}`} className=\"solid-admin-crumb\">\n {index > 0 && <span className=\"solid-admin-crumb-sep\">›</span>}\n <span>{crumb}</span>\n </span>\n ))}\n </nav>\n\n <div className=\"solid-admin-header-actions\">\n {isAdmin && isDev && !isStudioMode && (\n <button\n type=\"button\"\n className=\"solid-studio-trigger-btn\"\n onClick={() => { dispatch(enterStudioMode()); router.push(\"/studio\"); }}\n title=\"Enter SolidX Studio\"\n >\n <StudioSparkleIcon />\n Studio\n </button>\n )}\n\n <button\n type=\"button\"\n className=\"solid-admin-theme-toggle\"\n onClick={toggleThemeMode}\n aria-label=\"Toggle theme\"\n title=\"Toggle theme\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 3l0 18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 9l4.65 -4.65\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 14.3l7.37 -7.37\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 19.6l8.85 -8.85\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n <span className=\"solid-sr-only\">Toggle theme</span>\n </button>\n\n {showBack && (\n <button\n type=\"button\"\n className=\"solid-admin-back-btn\"\n onClick={() => router.back()}\n aria-label=\"Go back\"\n >\n Back\n </button>\n )}\n </div>\n </div>\n </header>\n );\n};\n"]}
1
+ {"version":3,"file":"AdminTopHeader.js","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useMemo } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useSearchParams } from \"../../hooks/useSearchParams\";\nimport { useRouter } from \"../../hooks/useRouter\";\nimport { useSession } from \"../../hooks/useSession\";\nimport { useGetSolidActionByIdQuery } from \"../../redux/api/solidActionApi\";\nimport { LayoutContext } from \"./context/layoutcontext\";\nimport { enterStudioMode } from \"../../redux/features/solidStudioSlice\";\nimport { hasAnyRole } from \"../../helpers/rolesHelper\";\nimport { env } from \"../../adapters/env\";\n\nconst SIDEBAR_TOGGLE_EVENT = \"solidx:sidebar-toggle\";\n\nconst toLabel = (value: string) =>\n decodeURIComponent(value)\n .replace(/[-_]/g, \" \")\n .replace(/\\b\\w/g, (m) => m.toUpperCase());\n\nconst StudioSparkleIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M7 1v2M7 11v2M1 7h2M11 7h2M2.93 2.93l1.41 1.41M9.66 9.66l1.41 1.41M2.93 11.07l1.41-1.41M9.66 4.34l1.41-1.41\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n <circle cx=\"7\" cy=\"7\" r=\"2\" stroke=\"currentColor\" strokeWidth=\"1.4\" />\n </svg>\n);\n\nexport const AdminTopHeader = () => {\n const pathname = usePathname();\n const searchParams = useSearchParams();\n const router = useRouter();\n const dispatch = useDispatch();\n const { toggleThemeMode } = useContext(LayoutContext);\n const { data: session } = useSession();\n const user = session?.user;\n const isAdmin = hasAnyRole(user?.roles, [\"Admin\"]);\n const isStudioMode = useSelector((state: any) => state.solidStudio?.isStudioMode ?? false);\n const isDev = env(\"VITE_SOLIDX_ENV\") === \"dev\";\n\n // We treat actionId as the source of truth for breadcrumb labels.\n // If present, we resolve module/model/action via action-metadata API\n // so breadcrumbs are consistent across list/form/tree/kanban pages.\n const actionId = searchParams.get(\"actionId\");\n const { data: actionResponse } = useGetSolidActionByIdQuery(actionId as string, {\n skip: !actionId,\n });\n\n const crumbs = useMemo(() => {\n // API response shapes vary by adapter layer, so normalize defensively.\n const actionData = actionResponse?.data?.data ?? actionResponse?.data ?? actionResponse;\n const moduleFromApi = actionData?.module?.displayName || actionData?.module?.name;\n const modelFromApi = actionData?.model?.displayName || actionData?.model?.name;\n const actionFromApi = actionData?.displayName || actionData?.name;\n const actionDataId = actionData?.id != null ? String(actionData.id) : null;\n const hasMatchingActionData = Boolean(actionId) && actionDataId === actionId;\n\n // Priority 1: exact business breadcrumb contract requested:\n // <module> > <model> > <action>.\n // We only trust API crumbs when they belong to the current URL's actionId.\n // This avoids stale list breadcrumbs bleeding into form routes that do not\n // carry actionId in their query string.\n if (hasMatchingActionData && (moduleFromApi || modelFromApi || actionFromApi)) {\n return [moduleFromApi, modelFromApi, actionFromApi].filter(Boolean);\n }\n\n const segments = pathname.split(\"/\").filter(Boolean);\n // Priority 2: derive from route segments when API data is unavailable.\n // This is intentionally ahead of query fallback so form pages don't\n // inherit stale list query labels after list -> form navigation.\n if (segments[0] === \"admin\" && segments[1] === \"core\") {\n const moduleName = segments[2];\n const modelName = segments[3];\n const viewName = segments[4];\n const next = [moduleName, modelName, viewName].filter(Boolean).map((item) => toLabel(item!));\n return next.length ? next : [\"Admin\"];\n }\n\n const menuItemName = searchParams.get(\"menuItemName\");\n const actionName = searchParams.get(\"actionName\");\n\n // Priority 3: legacy URL-query fallback for older links/pages.\n if (menuItemName || actionName) {\n return [menuItemName, actionName].filter(Boolean).map((item) => toLabel(item!));\n }\n\n return [\"Admin\"];\n }, [actionId, actionResponse, pathname, searchParams]);\n\n const showBack = /\\/admin\\/core\\/[^/]+\\/[^/]+\\/form\\/[^/]+/.test(pathname);\n\n const triggerSidebar = () => {\n window.dispatchEvent(new CustomEvent(SIDEBAR_TOGGLE_EVENT));\n };\n\n const handleBreadcrumbClick = (crumbIndex: number) => {\n // When on a form view, clicking the model name (second crumb) should navigate back to list\n // Index 1 is the model name in a breadcrumb like: Module > Model > Action\n if (crumbIndex === 1 && showBack) {\n if (typeof window !== \"undefined\") {\n // First, try to use the full stored URL (preserves all query params)\n const storedFullUrl = sessionStorage.getItem(\"fromViewUrl\");\n if (storedFullUrl) {\n router.push(storedFullUrl);\n return;\n }\n }\n \n // Fallback: construct URL from current path and stored view\n const segments = pathname.split(\"/\").filter(Boolean);\n if (segments[0] === \"admin\" && segments[1] === \"core\") {\n const moduleName = segments[2];\n const modelName = segments[3];\n const fromView = typeof window !== \"undefined\" \n ? sessionStorage.getItem(\"fromView\") || \"list\" \n : \"list\";\n router.push(`/admin/core/${moduleName}/${modelName}/${fromView}`);\n }\n }\n };\n\n return (\n <header className=\"solid-admin-header\">\n <div className=\"solid-admin-header-inner\">\n <button\n type=\"button\"\n className=\"solid-admin-sidebar-trigger\"\n onClick={triggerSidebar}\n aria-label=\"Toggle sidebar\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"1.5\" y=\"2\" width=\"13\" height=\"12\" rx=\"2\" stroke=\"currentColor\" />\n <path d=\"M5.5 2V14\" stroke=\"currentColor\" />\n <rect x=\"8\" y=\"5.25\" width=\"4.5\" height=\"5.5\" rx=\"0.9\" stroke=\"currentColor\" />\n </svg>\n </button>\n\n <div className=\"solid-admin-header-sep\" />\n\n <nav className=\"solid-admin-breadcrumbs\" aria-label=\"Breadcrumb\">\n {crumbs.map((crumb, index) => (\n <span key={`${crumb}-${index}`} className=\"solid-admin-crumb\">\n {index > 0 && <span className=\"solid-admin-crumb-sep\">›</span>}\n {index === 1 && showBack ? (\n <button\n type=\"button\"\n className=\"solid-admin-crumb-link\"\n onClick={() => handleBreadcrumbClick(index)}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", color: \"inherit\", textDecoration: \"underline\" }}\n >\n {crumb}\n </button>\n ) : (\n <span>{crumb}</span>\n )}\n </span>\n ))}\n </nav>\n\n <div className=\"solid-admin-header-actions\">\n {isAdmin && isDev && !isStudioMode && (\n <button\n type=\"button\"\n className=\"solid-studio-trigger-btn\"\n onClick={() => { dispatch(enterStudioMode()); router.push(\"/studio\"); }}\n title=\"Enter SolidX Studio\"\n >\n <StudioSparkleIcon />\n Studio\n </button>\n )}\n\n <button\n type=\"button\"\n className=\"solid-admin-theme-toggle\"\n onClick={toggleThemeMode}\n aria-label=\"Toggle theme\"\n title=\"Toggle theme\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 3l0 18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 9l4.65 -4.65\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 14.3l7.37 -7.37\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 19.6l8.85 -8.85\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n <span className=\"solid-sr-only\">Toggle theme</span>\n </button>\n\n {showBack && (\n <button\n type=\"button\"\n className=\"solid-admin-back-btn\"\n onClick={() => router.back()}\n aria-label=\"Go back\"\n >\n Back\n </button>\n )}\n </div>\n </div>\n </header>\n );\n};\n"]}