@solidxai/core-ui 0.1.9-beta.20 → 0.1.9-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 (470) hide show
  1. package/README.md +1 -1
  2. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  3. package/dist/components/auth/AuthLayout.js +23 -19
  4. package/dist/components/auth/AuthLayout.js.map +1 -1
  5. package/dist/components/auth/AuthLayout.tsx +62 -52
  6. package/dist/components/auth/ForgotPasswordThankYou.js +1 -1
  7. package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
  8. package/dist/components/auth/ForgotPasswordThankYou.tsx +2 -2
  9. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.d.ts +2 -0
  10. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.d.ts.map +1 -0
  11. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.js +112 -0
  12. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.js.map +1 -0
  13. package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.tsx +78 -0
  14. package/dist/components/auth/SolidChangeForcePassword.js +2 -2
  15. package/dist/components/auth/SolidChangeForcePassword.js.map +1 -1
  16. package/dist/components/auth/SolidChangeForcePassword.tsx +13 -13
  17. package/dist/components/auth/SolidForgotPassword.js +1 -1
  18. package/dist/components/auth/SolidForgotPassword.js.map +1 -1
  19. package/dist/components/auth/SolidForgotPassword.tsx +3 -3
  20. package/dist/components/auth/SolidInitialLoginOtp.js +1 -1
  21. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  22. package/dist/components/auth/SolidInitialLoginOtp.tsx +2 -2
  23. package/dist/components/auth/SolidInitiateRegisterOtp.js +1 -1
  24. package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
  25. package/dist/components/auth/SolidInitiateRegisterOtp.tsx +2 -2
  26. package/dist/components/auth/SolidLogin.js +4 -4
  27. package/dist/components/auth/SolidLogin.js.map +1 -1
  28. package/dist/components/auth/SolidLogin.tsx +11 -11
  29. package/dist/components/auth/SolidRegister.js +6 -6
  30. package/dist/components/auth/SolidRegister.js.map +1 -1
  31. package/dist/components/auth/SolidRegister.tsx +14 -14
  32. package/dist/components/auth/SolidResetPassword.js +2 -2
  33. package/dist/components/auth/SolidResetPassword.js.map +1 -1
  34. package/dist/components/auth/SolidResetPassword.tsx +8 -8
  35. package/dist/components/common/BackButton.js +1 -1
  36. package/dist/components/common/BackButton.js.map +1 -1
  37. package/dist/components/common/BackButton.tsx +1 -1
  38. package/dist/components/common/CancelButton.js +2 -2
  39. package/dist/components/common/CancelButton.js.map +1 -1
  40. package/dist/components/common/CancelButton.tsx +3 -3
  41. package/dist/components/common/GeneralSettings.js +18 -18
  42. package/dist/components/common/GeneralSettings.js.map +1 -1
  43. package/dist/components/common/GeneralSettings.tsx +136 -136
  44. package/dist/components/common/SolidExport.d.ts +1 -1
  45. package/dist/components/common/SolidExport.d.ts.map +1 -1
  46. package/dist/components/common/SolidExport.js +10 -3
  47. package/dist/components/common/SolidExport.js.map +1 -1
  48. package/dist/components/common/SolidExport.tsx +10 -2
  49. package/dist/components/common/SolidFormHeader.js +1 -1
  50. package/dist/components/common/SolidFormHeader.js.map +1 -1
  51. package/dist/components/common/SolidFormHeader.tsx +1 -1
  52. package/dist/components/common/SolidModuleHome.js +2 -2
  53. package/dist/components/common/SolidModuleHome.js.map +1 -1
  54. package/dist/components/common/SolidModuleHome.tsx +7 -7
  55. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +3 -3
  56. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
  57. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +6 -6
  58. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.js +1 -1
  59. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.js.map +1 -1
  60. package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.tsx +4 -4
  61. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.js +1 -1
  62. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.js.map +1 -1
  63. package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.tsx +4 -4
  64. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.js +1 -1
  65. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.js.map +1 -1
  66. package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.tsx +1 -1
  67. package/dist/components/core/card/SolidCardView.js +1 -1
  68. package/dist/components/core/card/SolidCardView.js.map +1 -1
  69. package/dist/components/core/card/SolidCardView.tsx +5 -5
  70. package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
  71. package/dist/components/core/card/SolidCardViewConfigure.js +1 -1
  72. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  73. package/dist/components/core/card/SolidCardViewConfigure.tsx +5 -1
  74. package/dist/components/core/chatter/SolidChatter.js +5 -5
  75. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  76. package/dist/components/core/chatter/SolidChatter.tsx +8 -8
  77. package/dist/components/core/chatter/SolidChatterAuditMessage.js +1 -1
  78. package/dist/components/core/chatter/SolidChatterAuditMessage.js.map +1 -1
  79. package/dist/components/core/chatter/SolidChatterAuditMessage.tsx +2 -2
  80. package/dist/components/core/chatter/SolidChatterHeader.js +2 -2
  81. package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
  82. package/dist/components/core/chatter/SolidChatterHeader.tsx +6 -6
  83. package/dist/components/core/chatter/SolidChatterMessageBox.js +4 -4
  84. package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
  85. package/dist/components/core/chatter/SolidChatterMessageBox.tsx +12 -12
  86. package/dist/components/core/chatter/SolidMessageComposer.js +1 -1
  87. package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
  88. package/dist/components/core/chatter/SolidMessageComposer.tsx +7 -7
  89. package/dist/components/core/common/SolidCreateButton.d.ts.map +1 -1
  90. package/dist/components/core/common/SolidCreateButton.js +16 -1
  91. package/dist/components/core/common/SolidCreateButton.js.map +1 -1
  92. package/dist/components/core/common/SolidCreateButton.tsx +18 -1
  93. package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +60 -0
  94. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js +1 -1
  95. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
  96. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +2 -2
  97. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.d.ts.map +1 -1
  98. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.js +19 -1
  99. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.js.map +1 -1
  100. package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.tsx +16 -3
  101. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.d.ts.map +1 -1
  102. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +168 -26
  103. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
  104. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +174 -10
  105. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  106. package/dist/components/core/common/SolidGlobalSearchElement.js +46 -36
  107. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  108. package/dist/components/core/common/SolidGlobalSearchElement.tsx +77 -40
  109. package/dist/components/core/common/SolidLayoutViews.js +2 -2
  110. package/dist/components/core/common/SolidLayoutViews.js.map +1 -1
  111. package/dist/components/core/common/SolidLayoutViews.tsx +4 -4
  112. package/dist/components/core/common/SolidListViewOptions.js +1 -1
  113. package/dist/components/core/common/SolidListViewOptions.js.map +1 -1
  114. package/dist/components/core/common/SolidListViewOptions.tsx +1 -1
  115. package/dist/components/core/common/SolidPasswordHelperText.js +2 -2
  116. package/dist/components/core/common/SolidPasswordHelperText.js.map +1 -1
  117. package/dist/components/core/common/SolidPasswordHelperText.tsx +4 -4
  118. package/dist/components/core/common/SolidSearchBox.js +1 -1
  119. package/dist/components/core/common/SolidSearchBox.js.map +1 -1
  120. package/dist/components/core/common/SolidSearchBox.tsx +1 -1
  121. package/dist/components/core/common/SolidXAiIframe.js +1 -1
  122. package/dist/components/core/common/SolidXAiIframe.js.map +1 -1
  123. package/dist/components/core/common/SolidXAiIframe.tsx +1 -1
  124. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.js +1 -1
  125. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.js.map +1 -1
  126. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.tsx +2 -2
  127. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +2 -2
  128. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  129. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +4 -4
  130. package/dist/components/core/field/FieldListViewData.js +2 -2
  131. package/dist/components/core/field/FieldListViewData.js.map +1 -1
  132. package/dist/components/core/field/FieldListViewData.tsx +5 -5
  133. package/dist/components/core/filter/fields/SolidBooleanField.d.ts.map +1 -1
  134. package/dist/components/core/filter/fields/SolidBooleanField.js +2 -2
  135. package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
  136. package/dist/components/core/filter/fields/SolidBooleanField.tsx +3 -12
  137. package/dist/components/core/filter/fields/SolidDateField.js +2 -2
  138. package/dist/components/core/filter/fields/SolidDateField.js.map +1 -1
  139. package/dist/components/core/filter/fields/SolidDateField.tsx +3 -3
  140. package/dist/components/core/filter/fields/SolidDatetimeField.js +2 -2
  141. package/dist/components/core/filter/fields/SolidDatetimeField.js.map +1 -1
  142. package/dist/components/core/filter/fields/SolidDatetimeField.tsx +3 -3
  143. package/dist/components/core/filter/fields/SolidExternalIdField.js +2 -2
  144. package/dist/components/core/filter/fields/SolidExternalIdField.js.map +1 -1
  145. package/dist/components/core/filter/fields/SolidExternalIdField.tsx +3 -3
  146. package/dist/components/core/filter/fields/SolidIdField.js +2 -2
  147. package/dist/components/core/filter/fields/SolidIdField.js.map +1 -1
  148. package/dist/components/core/filter/fields/SolidIdField.tsx +2 -2
  149. package/dist/components/core/filter/fields/SolidIntField.js +2 -2
  150. package/dist/components/core/filter/fields/SolidIntField.js.map +1 -1
  151. package/dist/components/core/filter/fields/SolidIntField.tsx +3 -3
  152. package/dist/components/core/filter/fields/SolidMediaMultipleField.js +2 -2
  153. package/dist/components/core/filter/fields/SolidMediaMultipleField.js.map +1 -1
  154. package/dist/components/core/filter/fields/SolidMediaMultipleField.tsx +3 -3
  155. package/dist/components/core/filter/fields/SolidMediaSingleField.js +2 -2
  156. package/dist/components/core/filter/fields/SolidMediaSingleField.js.map +1 -1
  157. package/dist/components/core/filter/fields/SolidMediaSingleField.tsx +3 -3
  158. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js +2 -2
  159. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js.map +1 -1
  160. package/dist/components/core/filter/fields/SolidSelectionDynamicField.tsx +3 -3
  161. package/dist/components/core/filter/fields/SolidSelectionStaticField.js +2 -2
  162. package/dist/components/core/filter/fields/SolidSelectionStaticField.js.map +1 -1
  163. package/dist/components/core/filter/fields/SolidSelectionStaticField.tsx +3 -3
  164. package/dist/components/core/filter/fields/SolidShortTextField.js +2 -2
  165. package/dist/components/core/filter/fields/SolidShortTextField.js.map +1 -1
  166. package/dist/components/core/filter/fields/SolidShortTextField.tsx +3 -3
  167. package/dist/components/core/filter/fields/SolidTimeField.js +2 -2
  168. package/dist/components/core/filter/fields/SolidTimeField.js.map +1 -1
  169. package/dist/components/core/filter/fields/SolidTimeField.tsx +3 -3
  170. package/dist/components/core/filter/fields/SolidUuidField.js +2 -2
  171. package/dist/components/core/filter/fields/SolidUuidField.js.map +1 -1
  172. package/dist/components/core/filter/fields/SolidUuidField.tsx +4 -4
  173. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js +2 -2
  174. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  175. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +3 -3
  176. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js +2 -2
  177. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  178. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +3 -3
  179. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +2 -2
  180. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  181. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +3 -3
  182. package/dist/components/core/form/SolidFormActionHeader.js +8 -8
  183. package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
  184. package/dist/components/core/form/SolidFormActionHeader.tsx +13 -13
  185. package/dist/components/core/form/SolidFormFieldRender.js +1 -1
  186. package/dist/components/core/form/SolidFormFieldRender.js.map +1 -1
  187. package/dist/components/core/form/SolidFormFieldRender.tsx +1 -1
  188. package/dist/components/core/form/SolidFormFooter.d.ts.map +1 -1
  189. package/dist/components/core/form/SolidFormFooter.js +12 -5
  190. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  191. package/dist/components/core/form/SolidFormFooter.tsx +14 -5
  192. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  193. package/dist/components/core/form/SolidFormView.js +200 -65
  194. package/dist/components/core/form/SolidFormView.js.map +1 -1
  195. package/dist/components/core/form/SolidFormView.tsx +188 -41
  196. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.d.ts.map +1 -1
  197. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js +5 -1
  198. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js.map +1 -1
  199. package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.tsx +5 -1
  200. package/dist/components/core/form/SolidFormViewNormalHeaderButton.d.ts.map +1 -1
  201. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js +5 -1
  202. package/dist/components/core/form/SolidFormViewNormalHeaderButton.js.map +1 -1
  203. package/dist/components/core/form/SolidFormViewNormalHeaderButton.tsx +5 -1
  204. package/dist/components/core/form/SolidFormViewShimmerLoading.js +1 -1
  205. package/dist/components/core/form/SolidFormViewShimmerLoading.js.map +1 -1
  206. package/dist/components/core/form/SolidFormViewShimmerLoading.tsx +46 -46
  207. package/dist/components/core/form/fields/SolidBooleanField.js +3 -3
  208. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  209. package/dist/components/core/form/fields/SolidBooleanField.tsx +3 -3
  210. package/dist/components/core/form/fields/SolidComputedField.js +1 -1
  211. package/dist/components/core/form/fields/SolidComputedField.js.map +1 -1
  212. package/dist/components/core/form/fields/SolidComputedField.tsx +1 -1
  213. package/dist/components/core/form/fields/SolidDateField.js +2 -2
  214. package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
  215. package/dist/components/core/form/fields/SolidDateField.tsx +2 -2
  216. package/dist/components/core/form/fields/SolidDateTimeField.js +2 -2
  217. package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
  218. package/dist/components/core/form/fields/SolidDateTimeField.tsx +2 -2
  219. package/dist/components/core/form/fields/SolidDecimalField.js +1 -1
  220. package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
  221. package/dist/components/core/form/fields/SolidDecimalField.tsx +1 -1
  222. package/dist/components/core/form/fields/SolidEmailField.js +1 -1
  223. package/dist/components/core/form/fields/SolidEmailField.js.map +1 -1
  224. package/dist/components/core/form/fields/SolidEmailField.tsx +1 -1
  225. package/dist/components/core/form/fields/SolidIntegerField.js +3 -3
  226. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  227. package/dist/components/core/form/fields/SolidIntegerField.tsx +3 -3
  228. package/dist/components/core/form/fields/SolidJsonField.js +3 -3
  229. package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
  230. package/dist/components/core/form/fields/SolidJsonField.tsx +3 -3
  231. package/dist/components/core/form/fields/SolidLongTextField.js +6 -6
  232. package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
  233. package/dist/components/core/form/fields/SolidLongTextField.tsx +12 -12
  234. package/dist/components/core/form/fields/SolidMediaMultipleField.js +11 -11
  235. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  236. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +28 -28
  237. package/dist/components/core/form/fields/SolidMediaSingleField.js +5 -5
  238. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  239. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +9 -9
  240. package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
  241. package/dist/components/core/form/fields/SolidPasswordField.js +12 -6
  242. package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
  243. package/dist/components/core/form/fields/SolidPasswordField.tsx +13 -6
  244. package/dist/components/core/form/fields/SolidRichTextField.js +2 -2
  245. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  246. package/dist/components/core/form/fields/SolidRichTextField.tsx +2 -2
  247. package/dist/components/core/form/fields/SolidSelectionDynamicField.js +2 -2
  248. package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
  249. package/dist/components/core/form/fields/SolidSelectionDynamicField.tsx +2 -2
  250. package/dist/components/core/form/fields/SolidSelectionStaticField.js +1 -1
  251. package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
  252. package/dist/components/core/form/fields/SolidSelectionStaticField.tsx +1 -1
  253. package/dist/components/core/form/fields/SolidShortTextField.js +1 -1
  254. package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
  255. package/dist/components/core/form/fields/SolidShortTextField.tsx +1 -1
  256. package/dist/components/core/form/fields/SolidTimeField.js +2 -2
  257. package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
  258. package/dist/components/core/form/fields/SolidTimeField.tsx +2 -2
  259. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts +7 -11
  260. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -1
  261. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +18 -63
  262. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -1
  263. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +63 -164
  264. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  265. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +6 -6
  266. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  267. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +38 -36
  268. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +6 -6
  269. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  270. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +6 -6
  271. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  272. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +10 -10
  273. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  274. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +20 -25
  275. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.js +1 -1
  276. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.js.map +1 -1
  277. package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.tsx +1 -1
  278. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.js +1 -1
  279. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.js.map +1 -1
  280. package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.tsx +1 -1
  281. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +5 -5
  282. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
  283. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +17 -17
  284. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.js +1 -1
  285. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.js.map +1 -1
  286. package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.tsx +1 -1
  287. package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.js +1 -1
  288. package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.js.map +1 -1
  289. package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.tsx +1 -1
  290. package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
  291. package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
  292. package/dist/components/core/kanban/KanbanBoard.js +2 -2
  293. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  294. package/dist/components/core/kanban/KanbanBoard.tsx +2 -1
  295. package/dist/components/core/kanban/KanbanCard.d.ts +1 -0
  296. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  297. package/dist/components/core/kanban/KanbanCard.js +15 -4
  298. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  299. package/dist/components/core/kanban/KanbanCard.tsx +27 -4
  300. package/dist/components/core/kanban/KanbanColumn.d.ts +2 -1
  301. package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
  302. package/dist/components/core/kanban/KanbanColumn.js +4 -4
  303. package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
  304. package/dist/components/core/kanban/KanbanColumn.tsx +5 -4
  305. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  306. package/dist/components/core/kanban/SolidKanbanView.js +44 -39
  307. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  308. package/dist/components/core/kanban/SolidKanbanView.tsx +22 -10
  309. package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts.map +1 -1
  310. package/dist/components/core/kanban/SolidKanbanViewConfigure.js +1 -1
  311. package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
  312. package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +5 -1
  313. package/dist/components/core/list/ListViewRowActionPopup.js +1 -1
  314. package/dist/components/core/list/ListViewRowActionPopup.js.map +1 -1
  315. package/dist/components/core/list/ListViewRowActionPopup.tsx +1 -2
  316. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js +1 -1
  317. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js.map +1 -1
  318. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +3 -3
  319. package/dist/components/core/list/SolidDataTable.js +1 -1
  320. package/dist/components/core/list/SolidDataTable.js.map +1 -1
  321. package/dist/components/core/list/SolidDataTable.tsx +1 -1
  322. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  323. package/dist/components/core/list/SolidListView.js +14 -6
  324. package/dist/components/core/list/SolidListView.js.map +1 -1
  325. package/dist/components/core/list/SolidListView.tsx +21 -13
  326. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  327. package/dist/components/core/list/SolidListViewConfigure.js +1 -1
  328. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  329. package/dist/components/core/list/SolidListViewConfigure.tsx +5 -1
  330. package/dist/components/core/list/SolidListViewHeaderButton.d.ts.map +1 -1
  331. package/dist/components/core/list/SolidListViewHeaderButton.js +5 -1
  332. package/dist/components/core/list/SolidListViewHeaderButton.js.map +1 -1
  333. package/dist/components/core/list/SolidListViewHeaderButton.tsx +5 -1
  334. package/dist/components/core/list/SolidListingHeader.js +1 -1
  335. package/dist/components/core/list/SolidListingHeader.js.map +1 -1
  336. package/dist/components/core/list/SolidListingHeader.tsx +4 -4
  337. package/dist/components/core/list/SolidTableRowCell.js +1 -1
  338. package/dist/components/core/list/SolidTableRowCell.js.map +1 -1
  339. package/dist/components/core/list/SolidTableRowCell.tsx +1 -1
  340. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +5 -5
  341. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  342. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +8 -8
  343. package/dist/components/core/list/columns/SolidMediaSingleColumn.js +3 -3
  344. package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
  345. package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +3 -3
  346. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.js +1 -1
  347. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.js.map +1 -1
  348. package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.tsx +1 -1
  349. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.js +1 -1
  350. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.js.map +1 -1
  351. package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.tsx +1 -2
  352. package/dist/components/core/locales/SolidLocale.js +3 -3
  353. package/dist/components/core/locales/SolidLocale.js.map +1 -1
  354. package/dist/components/core/locales/SolidLocale.tsx +7 -7
  355. package/dist/components/core/locales/solid-locale.css +5 -4
  356. package/dist/components/core/model/FieldMetaData.js +2 -2
  357. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  358. package/dist/components/core/model/FieldMetaData.tsx +2 -2
  359. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  360. package/dist/components/core/model/FieldMetaDataForm.js +50 -50
  361. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  362. package/dist/components/core/model/FieldMetaDataForm.tsx +74 -229
  363. package/dist/components/core/model/ModelListViewData.js +4 -4
  364. package/dist/components/core/model/ModelListViewData.js.map +1 -1
  365. package/dist/components/core/model/ModelListViewData.tsx +7 -7
  366. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
  367. package/dist/components/core/model/ModelMetaData.js +2 -2
  368. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  369. package/dist/components/core/model/ModelMetaData.tsx +3 -58
  370. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  371. package/dist/components/core/module/CreateModule.js +3 -17
  372. package/dist/components/core/module/CreateModule.js.map +1 -1
  373. package/dist/components/core/module/CreateModule.tsx +18 -32
  374. package/dist/components/core/module/ModuleListViewData.js +5 -5
  375. package/dist/components/core/module/ModuleListViewData.js.map +1 -1
  376. package/dist/components/core/module/ModuleListViewData.tsx +8 -8
  377. package/dist/components/core/module/ModuleMetadataExplorer.js +1 -1
  378. package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -1
  379. package/dist/components/core/module/ModuleMetadataExplorer.tsx +1 -1
  380. package/dist/components/core/solid-ai/SolidAiChat.module.css +2 -2
  381. package/dist/components/core/tree/SolidTreeTable.js +1 -1
  382. package/dist/components/core/tree/SolidTreeTable.js.map +1 -1
  383. package/dist/components/core/tree/SolidTreeTable.tsx +1 -1
  384. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  385. package/dist/components/core/tree/SolidTreeView.js +3 -3
  386. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  387. package/dist/components/core/tree/SolidTreeView.tsx +14 -10
  388. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  389. package/dist/components/core/users/CreateUser.js +8 -10
  390. package/dist/components/core/users/CreateUser.js.map +1 -1
  391. package/dist/components/core/users/CreateUser.tsx +18 -36
  392. package/dist/components/core/users/CreateUserRole.js +2 -2
  393. package/dist/components/core/users/CreateUserRole.js.map +1 -1
  394. package/dist/components/core/users/CreateUserRole.tsx +9 -9
  395. package/dist/components/core/users/UserListView.js +4 -4
  396. package/dist/components/core/users/UserListView.js.map +1 -1
  397. package/dist/components/core/users/UserListView.tsx +6 -6
  398. package/dist/components/layout/AdminHeaderActions.d.ts +1 -0
  399. package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
  400. package/dist/components/layout/AdminHeaderActions.js +1 -1
  401. package/dist/components/layout/AdminHeaderActions.js.map +1 -1
  402. package/dist/components/layout/AdminHeaderActions.tsx +1 -1
  403. package/dist/components/layout/AdminSidebar.js +1 -1
  404. package/dist/components/layout/AdminSidebar.js.map +1 -1
  405. package/dist/components/layout/AdminSidebar.tsx +1 -1
  406. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
  407. package/dist/components/layout/AdminTopHeader.js +21 -3
  408. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  409. package/dist/components/layout/AdminTopHeader.tsx +64 -2
  410. package/dist/components/layout/CustomPagination.js +0 -1
  411. package/dist/components/layout/CustomPagination.js.map +1 -1
  412. package/dist/components/layout/CustomPagination.tsx +0 -1
  413. package/dist/components/layout/FilterMenu.js +1 -1
  414. package/dist/components/layout/FilterMenu.js.map +1 -1
  415. package/dist/components/layout/FilterMenu.tsx +4 -4
  416. package/dist/components/layout/Footer.js +1 -1
  417. package/dist/components/layout/Footer.js.map +1 -1
  418. package/dist/components/layout/Footer.tsx +1 -1
  419. package/dist/components/layout/GlobalSearch.js +1 -1
  420. package/dist/components/layout/GlobalSearch.js.map +1 -1
  421. package/dist/components/layout/GlobalSearch.tsx +1 -1
  422. package/dist/components/layout/ListingHeader.js +3 -3
  423. package/dist/components/layout/ListingHeader.js.map +1 -1
  424. package/dist/components/layout/ListingHeader.tsx +4 -4
  425. package/dist/components/layout/Loader.js +1 -1
  426. package/dist/components/layout/Loader.js.map +1 -1
  427. package/dist/components/layout/Loader.tsx +1 -1
  428. package/dist/components/layout/UserSidebar.js +1 -1
  429. package/dist/components/layout/UserSidebar.js.map +1 -1
  430. package/dist/components/layout/UserSidebar.tsx +1 -1
  431. package/dist/components/layout/navbar-one.js +2 -2
  432. package/dist/components/layout/navbar-one.js.map +1 -1
  433. package/dist/components/layout/navbar-one.tsx +8 -8
  434. package/dist/components/layout/navbar-two-menu.js +2 -2
  435. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  436. package/dist/components/layout/navbar-two-menu.tsx +7 -7
  437. package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
  438. package/dist/components/shad-cn-ui/SolidCodeEditor.js +3 -1
  439. package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
  440. package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +3 -0
  441. package/dist/components/shad-cn-ui/SolidPopover.d.ts +1 -0
  442. package/dist/components/shad-cn-ui/SolidPopover.d.ts.map +1 -1
  443. package/dist/components/shad-cn-ui/SolidPopover.js +124 -5
  444. package/dist/components/shad-cn-ui/SolidPopover.js.map +1 -1
  445. package/dist/components/shad-cn-ui/SolidPopover.tsx +173 -10
  446. package/dist/constants/error-messages.d.ts +13 -0
  447. package/dist/constants/error-messages.d.ts.map +1 -1
  448. package/dist/constants/error-messages.js +17 -0
  449. package/dist/constants/error-messages.js.map +1 -1
  450. package/dist/constants/error-messages.ts +15 -0
  451. package/dist/resources/globals.css +32 -1
  452. package/dist/resources/solid-custom.css +6565 -0
  453. package/dist/resources/solid-primereact.css +14 -12
  454. package/dist/resources/solid-responsive.css +25 -2
  455. package/dist/resources/solid-tailwind-generated.css +1 -0
  456. package/dist/resources/solid-tailwind.css +3 -0
  457. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.d.ts +2 -0
  458. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.d.ts.map +1 -0
  459. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.js +6 -0
  460. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.js.map +1 -0
  461. package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.tsx +5 -0
  462. package/dist/routes/pages/auth/SsoPage.js +1 -1
  463. package/dist/routes/pages/auth/SsoPage.js.map +1 -1
  464. package/dist/routes/pages/auth/SsoPage.tsx +1 -1
  465. package/dist/styles.d.ts +2 -1
  466. package/dist/styles.d.ts.map +1 -1
  467. package/dist/styles.js +2 -1
  468. package/dist/styles.js.map +1 -1
  469. package/dist/styles.ts +2 -1
  470. package/package.json +6 -3
@@ -112,24 +112,24 @@ const CreateUserRole = ({ data }: any) => {
112
112
  }, [isSuccess])
113
113
 
114
114
  return (
115
- <div className="grid">
116
- <div className="col-12 xl:col-10 mx-auto">
115
+ <div className="flex flex-wrap -mx-2 -mt-2">
116
+ <div className="mx-auto w-full px-2 pt-2 xl:w-[83.333333%]">
117
117
  <div>
118
118
  {/* <Toast ref={toast} /> */}
119
119
 
120
120
  <form onSubmit={formik.handleSubmit}>
121
- {pathname.includes('create') ? <div className="flex gap-3 justify-content-between mb-5">
121
+ {pathname.includes('create') ? <div className="mb-6 flex justify-between gap-4">
122
122
  <div className="form-wrapper-title"> Create User Role</div>
123
- <div className="gap-3 flex">
123
+ <div className="flex gap-4">
124
124
  <div>
125
125
  <SolidButton label="Save" size="sm" onClick={() => showError()} type="submit" className='small-button' />
126
126
  </div>
127
127
  <CancelButton />
128
128
  </div>
129
129
  </div> :
130
- <div className="flex gap-3 justify-content-between mb-5">
130
+ <div className="mb-6 flex justify-between gap-4">
131
131
  <h1 className="m-0"> Edit User</h1>
132
- <div className="gap-3 flex">
132
+ <div className="flex gap-4">
133
133
  <div>
134
134
  <SolidButton label="Save" onClick={() => showError()} type="submit" size="sm" className='small-button' />
135
135
  </div>
@@ -141,8 +141,8 @@ const CreateUserRole = ({ data }: any) => {
141
141
  </div>
142
142
  }
143
143
  <div className="form-wrapper">
144
- <div className="grid formgrid">
145
- <div className="md:col-6 sm:col-12">
144
+ <div className="flex flex-wrap -mx-2 -mt-2">
145
+ <div className="w-full px-2 pt-2 md:w-1/2">
146
146
  <div className="field">
147
147
  <label htmlFor="username" className="form-label form-field-label">
148
148
  User Name
@@ -161,7 +161,7 @@ const CreateUserRole = ({ data }: any) => {
161
161
  )}
162
162
  </div>
163
163
  </div>
164
- <div className="md:col-6 sm:col-12">
164
+ <div className="w-full px-2 pt-2 md:w-1/2">
165
165
  <div className="field">
166
166
  <label htmlFor="type" className="form-label form-field-label">
167
167
  Role Name
@@ -201,19 +201,19 @@ export var UserListView = function () {
201
201
  deleteManyUser(deleteList);
202
202
  setDialogVisible(false);
203
203
  };
204
- return (_jsxs("div", { className: "solid-user-list w-full", children: [_jsxs("div", { className: "flex gap-3 mb-4 align-items-center flex-wrap", children: [_jsx(CreateButton, {}), selectedUsers.length > 0 && (_jsx(SolidButton, { type: "button", label: "Delete", size: "small", severity: "danger", className: "small-button", onClick: function () { return setDialogVisible(true); } }))] }), _jsxs("div", { className: "grid formgrid mb-3", children: [[
204
+ return (_jsxs("div", { className: "solid-user-list w-full", children: [_jsxs("div", { className: "flex gap-4 mb-6 items-center flex-wrap", children: [_jsx(CreateButton, {}), selectedUsers.length > 0 && (_jsx(SolidButton, { type: "button", label: "Delete", size: "small", severity: "danger", className: "small-button", onClick: function () { return setDialogVisible(true); } }))] }), _jsxs("div", { className: "flex flex-wrap -mx-2 -mt-2 mb-4", children: [[
205
205
  { key: "fullName", placeholder: "Search by full name" },
206
206
  { key: "username", placeholder: "Search by username" },
207
207
  { key: "email", placeholder: "Search by email" },
208
208
  { key: "mobile", placeholder: "Search by mobile" },
209
209
  ].map(function (filter) {
210
210
  var _a;
211
- return (_jsx("div", { className: "field col-12 md:col-3", children: _jsx(SolidInput, { value: (_a = pendingFilters[filter.key].value) !== null && _a !== void 0 ? _a : "", onChange: function (event) {
211
+ return (_jsx("div", { className: "field w-full md:w-1/4 px-2 pt-2", children: _jsx(SolidInput, { value: (_a = pendingFilters[filter.key].value) !== null && _a !== void 0 ? _a : "", onChange: function (event) {
212
212
  return handleFilterInputChange(filter.key, event.currentTarget.value);
213
213
  }, placeholder: filter.placeholder }) }, filter.key));
214
- }), _jsxs("div", { className: "field col-12 flex align-items-center gap-2", children: [_jsx(SolidButton, { size: "small", onClick: applyFilters, label: "Apply" }), _jsx(SolidButton, { size: "small", variant: "ghost", onClick: clearFilters, label: "Clear" })] })] }), (loading || isLoading) && (_jsx("div", { className: "flex justify-content-center my-3", children: _jsx(SolidSpinner, {}) })), _jsxs(SolidDataTable, { value: users, size: "small", paginator: true, rows: rows, rowsPerPageOptions: [10, 25, 50], dataKey: "id", emptyMessage: "No users found", totalRecords: totalRecords, first: first, onPage: onPageChange, onSort: onSort, sortField: sortField, sortOrder: sortOrder, selection: selectedUsers, onSelectionChange: function (_a) {
214
+ }), _jsxs("div", { className: "field w-full px-2 pt-2 flex items-center gap-2", children: [_jsx(SolidButton, { size: "small", onClick: applyFilters, label: "Apply" }), _jsx(SolidButton, { size: "small", variant: "ghost", onClick: clearFilters, label: "Clear" })] })] }), (loading || isLoading) && (_jsx("div", { className: "flex justify-center my-4", children: _jsx(SolidSpinner, {}) })), _jsxs(SolidDataTable, { value: users, size: "small", paginator: true, rows: rows, rowsPerPageOptions: [10, 25, 50], dataKey: "id", emptyMessage: "No users found", totalRecords: totalRecords, first: first, onPage: onPageChange, onSort: onSort, sortField: sortField, sortOrder: sortOrder, selection: selectedUsers, onSelectionChange: function (_a) {
215
215
  var value = _a.value;
216
216
  return setSelectedUsers(value);
217
- }, children: [_jsx(Column, { selectionMode: "multiple", headerStyle: { width: "3em" } }), _jsx(Column, { field: "id", header: "ID", className: "text-sm", sortable: true, headerClassName: "table-header-fs" }), _jsx(Column, { field: "fullName", header: "Full Name", className: "text-sm", sortable: true, style: { minWidth: "12rem" }, headerClassName: "table-header-fs" }), _jsx(Column, { field: "username", header: "Username", className: "text-sm", sortable: true, style: { minWidth: "12rem" }, headerClassName: "table-header-fs" }), _jsx(Column, { field: "email", header: "Email", className: "text-sm", sortable: true, style: { minWidth: "12rem" }, headerClassName: "table-header-fs" }), _jsx(Column, { body: function (record) { return (_jsx(Link, { href: "".concat(record.id), rel: "noopener noreferrer", className: "text-sm font-bold p-0", style: { color: "#12415D" }, children: _jsx(SolidIcon, { name: "si-pencil", style: { fontSize: "1rem" }, "aria-hidden": true }) })); } })] }), _jsxs(SolidDialog, { visible: isDialogVisible, header: "Confirm Delete", modal: true, className: "solid-confirm-dialog", onHide: function () { return setDialogVisible(false); }, children: [_jsx("p", { children: "Are you sure you want to delete the selected Users?" }), _jsxs("div", { className: "flex justify-content-center gap-3 mt-3", children: [_jsx(SolidButton, { label: "Yes", className: "small-button", severity: "danger", autoFocus: true, onClick: deleteBulk }), _jsx(SolidButton, { label: "No", className: "small-button", variant: "ghost", onClick: function () { return setDialogVisible(false); } })] })] })] }));
217
+ }, children: [_jsx(Column, { selectionMode: "multiple", headerStyle: { width: "3em" } }), _jsx(Column, { field: "id", header: "ID", className: "text-sm", sortable: true, headerClassName: "table-header-fs" }), _jsx(Column, { field: "fullName", header: "Full Name", className: "text-sm", sortable: true, style: { minWidth: "12rem" }, headerClassName: "table-header-fs" }), _jsx(Column, { field: "username", header: "Username", className: "text-sm", sortable: true, style: { minWidth: "12rem" }, headerClassName: "table-header-fs" }), _jsx(Column, { field: "email", header: "Email", className: "text-sm", sortable: true, style: { minWidth: "12rem" }, headerClassName: "table-header-fs" }), _jsx(Column, { body: function (record) { return (_jsx(Link, { href: "".concat(record.id), rel: "noopener noreferrer", className: "text-sm font-bold p-0", style: { color: "#12415D" }, children: _jsx(SolidIcon, { name: "si-pencil", style: { fontSize: "1rem" }, "aria-hidden": true }) })); } })] }), _jsxs(SolidDialog, { visible: isDialogVisible, header: "Confirm Delete", modal: true, className: "solid-confirm-dialog", onHide: function () { return setDialogVisible(false); }, children: [_jsx("p", { children: "Are you sure you want to delete the selected Users?" }), _jsxs("div", { className: "flex justify-center gap-4 mt-4", children: [_jsx(SolidButton, { label: "Yes", className: "small-button", severity: "danger", autoFocus: true, onClick: deleteBulk }), _jsx(SolidButton, { label: "No", className: "small-button", variant: "ghost", onClick: function () { return setDialogVisible(false); } })] })] })] }));
218
218
  };
219
219
  //# sourceMappingURL=UserListView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserListView.js","sourceRoot":"","sources":["../../../../src/components/core/users/UserListView.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,MAAM,EAAuB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAkB5D,IAAM,oBAAoB,GAAG,cAAkB,OAAA,CAAC;IAC9C,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,WAAW,EAAE;IACjE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,WAAW,EAAE;IACjE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,WAAW,EAAE;IAC9D,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,WAAW,EAAE;CAChE,CAAC,EAL6C,CAK7C,CAAC;AAEH,MAAM,CAAC,IAAM,YAAY,GAAG;IAC1B,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IACzB,IAAA,KAAoB,QAAQ,CAAU,EAAE,CAAC,EAAxC,KAAK,QAAA,EAAE,QAAQ,QAAyB,CAAC;IAC1C,IAAA,KAAwB,QAAQ,CAAa,cAAM,OAAA,oBAAoB,EAAE,EAAtB,CAAsB,CAAC,EAAzE,OAAO,QAAA,EAAE,UAAU,QAAsD,CAAC;IAC3E,IAAA,KAAsC,QAAQ,CAAa,cAAM,OAAA,oBAAoB,EAAE,EAAtB,CAAsB,CAAC,EAAvF,cAAc,QAAA,EAAE,iBAAiB,QAAsD,CAAC;IACzF,IAAA,KAAoB,QAAQ,CAAC,CAAC,CAAC,EAA9B,KAAK,QAAA,EAAE,QAAQ,QAAe,CAAC;IAChC,IAAA,KAAkB,QAAQ,CAAC,EAAE,CAAC,EAA7B,IAAI,QAAA,EAAE,OAAO,QAAgB,CAAC;IAC/B,IAAA,KAAkC,QAAQ,CAAC,CAAC,CAAC,EAA5C,YAAY,QAAA,EAAE,eAAe,QAAe,CAAC;IAC9C,IAAA,KAA4B,QAAQ,CAAC,EAAE,CAAC,EAAvC,SAAS,QAAA,EAAE,YAAY,QAAgB,CAAC;IACzC,IAAA,KAA4B,QAAQ,CAAa,CAAC,CAAC,EAAlD,SAAS,QAAA,EAAE,YAAY,QAA2B,CAAC;IACpD,IAAA,KAAoC,QAAQ,CAAU,EAAE,CAAC,EAAxD,aAAa,QAAA,EAAE,gBAAgB,QAAyB,CAAC;IAC1D,IAAA,KAAwB,QAAQ,CAAU,IAAI,CAAC,EAA9C,OAAO,QAAA,EAAE,UAAU,QAA2B,CAAC;IAChD,IAAA,KAAsC,QAAQ,CAAC,KAAK,CAAC,EAApD,eAAe,QAAA,EAAE,gBAAgB,QAAmB,CAAC;IAEtD,IAAA,KAA8D,oBAAoB,EAAE,EAAnF,cAAc,QAAA,EAAE,UAAyC,EAAjC,IAAI,UAAA,EAAE,SAAS,eAAA,EAAE,KAAK,WAAA,EAAE,OAAO,aAA4B,CAAC;IACrF,IAAA,KACJ,8BAA8B,EAAE,EAD3B,cAAc,QAAA,EAAE,UAAsF,EAAzE,mBAAmB,eAAA,EAAW,iBAAiB,aAAA,EAAS,eAAe,WACzE,CAAC;IAEnC,SAAS,CAAC;;QACR,IAAI,IAAI,EAAE;YACR,QAAQ,CAAC,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,OAAO,mCAAI,EAAE,CAAC,CAAC;YACpC,eAAe,CAAC,MAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,IAAI,0CAAE,YAAY,mCAAI,CAAC,CAAC,CAAC;YACrD,UAAU,CAAC,KAAK,CAAC,CAAC;SACnB;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,SAAS,CAAC;QACR,IAAM,SAAS,GAAG;YAChB,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB,CAAC;QACF,IAAM,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kDAAkD;IAE1D,SAAS,CAAC;QACR,IAAI,OAAO,IAAI,iBAAiB,EAAE;YAChC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,IAAI,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC;YAEhD,IAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC;YAErD,IAAI,sCAAsC,CAAC,UAAU,CAAC,EAAE;gBACtD,YAAY,GAAG,UAAI,UAAgE,CAAC,IAAI,CAAC,OAAO,CAAE,CAAC;aACpG;iBAAM;gBACL,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC;aAC/C;YAED,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SAC7G;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;IAEnE,IAAM,sCAAsC,GAAG,UAC7C,KAAU;QAEV,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,SAAS,IAAK,KAAa,CAAC,IAAI,CAAC;IACnG,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG,UAAC,KAAsC;QAC1D,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC,CAAC;IAEF,IAAM,MAAM,GAAG,UAAC,KAA0B;;QACxC,IAAM,aAAa,GAAG,MAAA,KAAK,CAAC,SAAS,mCAAI,EAAE,CAAC;QAC5C,IAAM,cAAc,GAAG,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7F,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5B,YAAY,CAAC,cAAc,CAAC,CAAC;QAC7B,QAAQ,CAAC,CAAC,CAAC,CAAC;QACZ,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG,UACrB,MAAe,EACf,QAAiB,EACjB,KAAc,EACd,KAAkB,EAClB,WAAwB;;;YAElB,gBAAgB,GAAwB,EAAE,CAAC;YAEjD,MAAM,CAAC,IAAI,CAAC,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,SAAS;;;gBAC/C,IAAM,WAAW,GAAG,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,SAAS,CAAC,0CAAE,KAAK,CAAC;gBACpD,IAAM,SAAS,GAAG,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,SAAS,CAAC,0CAAE,SAAS,CAAC;gBAEtD,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,IAAI,SAAS,EAAE;oBAClE,IAAI,QAAQ,GAAG,SAAS,CAAC;oBACzB,QAAQ,SAAS,EAAE;wBACjB,KAAK,eAAe,CAAC,QAAQ;4BAC3B,QAAQ,GAAG,YAAY,CAAC;4BACxB,MAAM;wBACR,KAAK,eAAe,CAAC,WAAW;4BAC9B,QAAQ,GAAG,cAAc,CAAC;4BAC1B,MAAM;wBACR,KAAK,eAAe,CAAC,MAAM;4BACzB,QAAQ,GAAG,MAAM,CAAC;4BAClB,MAAM;wBACR,KAAK,eAAe,CAAC,YAAY;4BAC/B,QAAQ,GAAG,eAAe,CAAC;4BAC3B,MAAM;wBACR,KAAK,eAAe,CAAC,UAAU;4BAC7B,QAAQ,GAAG,MAAM,CAAC;4BAClB,MAAM;wBACR,KAAK,eAAe,CAAC,SAAS;4BAC5B,QAAQ,GAAG,YAAY,CAAC;4BACxB,MAAM;wBACR;4BACE,QAAQ,GAAG,SAAS,CAAC;qBACxB;oBAED,gBAAgB,CAAC,SAAS,CAAC,aAAK,GAAC,QAAQ,IAAG,WAAW,KAAE,CAAC;iBAC3D;YACH,CAAC,CAAC,CAAC;YAEG,SAAS,GAAwB;gBACrC,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,KAAK;gBACvB,KAAK,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,IAAI;gBACvB,QAAQ,EAAE,CAAC,OAAO,CAAC;gBACnB,OAAO,EAAE,gBAAgB;aAC1B,CAAC;YAEF,IAAI,KAAK,EAAE;gBACT,SAAS,CAAC,IAAI,GAAG,CAAC,UAAG,KAAK,cAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAE,CAAC,CAAC;aACpF;YAEK,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;gBAC1C,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAC;YAEH,sBAAO,cAAc,CAAC,WAAW,CAAC,EAAC;;SACpC,CAAC;IAEF,IAAM,uBAAuB,GAAG,UAAC,SAA2B,EAAE,KAAa;QACzE,iBAAiB,CAAC,UAAC,IAAI;;YAAK,OAAA,uBACvB,IAAI,gBACN,SAAS,0BAAQ,IAAI,CAAC,SAAS,CAAC,KAAE,KAAK,OAAA,UACxC;QAH0B,CAG1B,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG;QACnB,QAAQ,CAAC,CAAC,CAAC,CAAC;QACZ,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG;QACnB,IAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;QACxC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC5B,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrB,QAAQ,CAAC,CAAC,CAAC,CAAC;QACZ,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG;QACjB,IAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,EAAE,EAAP,CAAO,CAAC,CAAC;QACxD,cAAc,CAAC,UAAU,CAAC,CAAC;QAC3B,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,wBAAwB,aACrC,eAAK,SAAS,EAAC,8CAA8C,aAC3D,KAAC,YAAY,KAAG,EACf,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAC3B,KAAC,WAAW,IACV,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,QAAQ,EACd,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAC,QAAQ,EACjB,SAAS,EAAC,cAAc,EACxB,OAAO,EAAE,cAAM,OAAA,gBAAgB,CAAC,IAAI,CAAC,EAAtB,CAAsB,GACrC,CACH,IACG,EAEN,eAAK,SAAS,EAAC,oBAAoB,aAChC;wBACC,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAAE;wBACvD,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE;wBACtD,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE;wBAChD,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;qBACnD,CAAC,GAAG,CAAC,UAAC,MAAM;;wBAAK,OAAA,CAChB,cAAK,SAAS,EAAC,uBAAuB,YACpC,KAAC,UAAU,IACT,KAAK,EAAE,MAAA,cAAc,CAAC,MAAM,CAAC,GAAuB,CAAC,CAAC,KAAK,mCAAI,EAAE,EACjE,QAAQ,EAAE,UAAC,KAAK;oCACd,OAAA,uBAAuB,CAAC,MAAM,CAAC,GAAuB,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;gCAAlF,CAAkF,EAEpF,WAAW,EAAE,MAAM,CAAC,WAAW,GAC/B,IAPwC,MAAM,CAAC,GAAG,CAQhD,CACP,CAAA;qBAAA,CAAC,EACF,eAAK,SAAS,EAAC,4CAA4C,aACzD,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAC,OAAO,GAAG,EACjE,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAC,OAAO,GAAG,IAC7E,IACF,EAEL,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,CACzB,cAAK,SAAS,EAAC,kCAAkC,YAC/C,KAAC,YAAY,KAAG,GACZ,CACP,EAED,MAAC,cAAc,IACb,KAAK,EAAE,KAAK,EACZ,IAAI,EAAC,OAAO,EACZ,SAAS,QACT,IAAI,EAAE,IAAI,EACV,kBAAkB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAChC,OAAO,EAAC,IAAI,EACZ,YAAY,EAAC,gBAAgB,EAC7B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,aAAa,EACxB,iBAAiB,EAAE,UAAC,EAAS;wBAAP,KAAK,WAAA;oBAAO,OAAA,gBAAgB,CAAC,KAAK,CAAC;gBAAvB,CAAuB,aAEzD,KAAC,MAAM,IAAC,aAAa,EAAC,UAAU,EAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAI,EAClE,KAAC,MAAM,IAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,SAAS,EAAC,SAAS,EAAC,QAAQ,QAAC,eAAe,EAAC,iBAAiB,GAAG,EAChG,KAAC,MAAM,IACL,KAAK,EAAC,UAAU,EAChB,MAAM,EAAC,WAAW,EAClB,SAAS,EAAC,SAAS,EACnB,QAAQ,QACR,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAC5B,eAAe,EAAC,iBAAiB,GACjC,EACF,KAAC,MAAM,IACL,KAAK,EAAC,UAAU,EAChB,MAAM,EAAC,UAAU,EACjB,SAAS,EAAC,SAAS,EACnB,QAAQ,QACR,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAC5B,eAAe,EAAC,iBAAiB,GACjC,EACF,KAAC,MAAM,IACL,KAAK,EAAC,OAAO,EACb,MAAM,EAAC,OAAO,EACd,SAAS,EAAC,SAAS,EACnB,QAAQ,QACR,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAC5B,eAAe,EAAC,iBAAiB,GACjC,EACF,KAAC,MAAM,IACL,IAAI,EAAE,UAAC,MAAa,IAAK,OAAA,CACvB,KAAC,IAAI,IACH,IAAI,EAAE,UAAG,MAAM,CAAC,EAAE,CAAE,EACpB,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,uBAAuB,EACjC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,YAE3B,KAAC,SAAS,IAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,wBAAgB,GAClE,CACR,EATwB,CASxB,GACD,IACa,EAEjB,MAAC,WAAW,IACV,OAAO,EAAE,eAAe,EACxB,MAAM,EAAC,gBAAgB,EACvB,KAAK,QACL,SAAS,EAAC,sBAAsB,EAChC,MAAM,EAAE,cAAM,OAAA,gBAAgB,CAAC,KAAK,CAAC,EAAvB,CAAuB,aAErC,8EAA0D,EAC1D,eAAK,SAAS,EAAC,wCAAwC,aACrD,KAAC,WAAW,IAAC,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,cAAc,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,QAAC,OAAO,EAAE,UAAU,GAAI,EACrG,KAAC,WAAW,IAAC,KAAK,EAAC,IAAI,EAAC,SAAS,EAAC,cAAc,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,cAAM,OAAA,gBAAgB,CAAC,KAAK,CAAC,EAAvB,CAAuB,GAAI,IACvG,IACM,IACV,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useDeleteMultipleUsersMutation, useLazyGetusersQuery } from \"../../../redux/api/userApi\";\nimport Link from \"../../common/Link\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { CreateButton } from \"../../../components/common/CreateButton\";\nimport qs from \"qs\";\nimport { FetchBaseQueryError } from \"@reduxjs/toolkit/query\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport { SolidButton, SolidDialog, SolidIcon, SolidInput, SolidSpinner } from \"../../shad-cn-ui\";\nimport { Column, DataTableStateEvent, SolidDataTable } from \"../list/SolidDataTable\";\nimport { FilterMatchMode } from \"../filter/filterMatchMode\";\n\ninterface Users {\n id: string;\n fullName: string;\n username: string;\n email: string;\n mobile: string;\n}\n\ninterface ErrorResponseData {\n message: string;\n statusCode: number;\n error: string;\n}\n\ntype FilterMeta = Record<string, { value: string | null; matchMode: string }>;\n\nconst createDefaultFilters = (): FilterMeta => ({\n fullName: { value: null, matchMode: FilterMatchMode.STARTS_WITH },\n username: { value: null, matchMode: FilterMatchMode.STARTS_WITH },\n email: { value: null, matchMode: FilterMatchMode.STARTS_WITH },\n mobile: { value: null, matchMode: FilterMatchMode.STARTS_WITH },\n});\n\nexport const UserListView = () => {\n const dispatch = useDispatch();\n const [users, setUsers] = useState<Users[]>([]);\n const [filters, setFilters] = useState<FilterMeta>(() => createDefaultFilters());\n const [pendingFilters, setPendingFilters] = useState<FilterMeta>(() => createDefaultFilters());\n const [first, setFirst] = useState(0);\n const [rows, setRows] = useState(25);\n const [totalRecords, setTotalRecords] = useState(0);\n const [sortField, setSortField] = useState(\"\");\n const [sortOrder, setSortOrder] = useState<1 | -1 | 0>(0);\n const [selectedUsers, setSelectedUsers] = useState<Users[]>([]);\n const [loading, setLoading] = useState<boolean>(true);\n const [isDialogVisible, setDialogVisible] = useState(false);\n\n const [triggerGetUser, { data: user, isLoading, error, isError }] = useLazyGetusersQuery();\n const [deleteManyUser, { isSuccess: isDeleteUserSuceess, isError: isUserDeleteError, error: UserDeleteError }] =\n useDeleteMultipleUsersMutation();\n\n useEffect(() => {\n if (user) {\n setUsers(user?.data?.records ?? []);\n setTotalRecords(user?.data?.meta?.totalRecords ?? 0);\n setLoading(false);\n }\n }, [user]);\n\n useEffect(() => {\n const queryData = {\n offset: 0,\n limit: rows,\n populate: [\"roles\"],\n };\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n triggerGetUser(queryString);\n setSelectedUsers([]);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (isError || isUserDeleteError) {\n setLoading(false);\n let errorMessage = ERROR_MESSAGES.ERROR_OCCURED;\n\n const errorToast = isError ? error : UserDeleteError;\n\n if (isFetchBaseQueryErrorWithErrorResponse(errorToast)) {\n errorMessage = `${(errorToast as FetchBaseQueryError & { data: ErrorResponseData }).data.message}`;\n } else {\n errorMessage = ERROR_MESSAGES.SOMETHING_WRONG;\n }\n\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.ERROR, detail: errorMessage, life: 3000 }));\n }\n }, [dispatch, isError, isUserDeleteError, error, UserDeleteError]);\n\n const isFetchBaseQueryErrorWithErrorResponse = (\n error: any\n ): error is FetchBaseQueryError & { data: ErrorResponseData } => {\n return error && typeof error === \"object\" && \"data\" in error && \"message\" in (error as any).data;\n };\n\n const onPageChange = (event: { first: number; rows: number }) => {\n setFirst(event.first);\n setRows(event.rows);\n setQueryString(event.first, event.rows, sortField, sortOrder, filters);\n };\n\n const onSort = (event: DataTableStateEvent) => {\n const nextSortField = event.sortField ?? \"\";\n const validSortOrder = event.sortOrder === 1 || event.sortOrder === -1 ? event.sortOrder : 0;\n setSortField(nextSortField);\n setSortOrder(validSortOrder);\n setFirst(0);\n setQueryString(0, rows, nextSortField, validSortOrder, filters);\n };\n\n const setQueryString = async (\n offset?: number,\n rowCount?: number,\n field?: string,\n order?: 1 | -1 | 0,\n filterQuery?: FilterMeta\n ) => {\n const formattedFilters: Record<string, any> = {};\n\n Object.keys(filterQuery ?? {}).forEach((fieldName) => {\n const filterValue = filterQuery?.[fieldName]?.value;\n const matchMode = filterQuery?.[fieldName]?.matchMode;\n\n if (filterValue !== null && filterValue !== undefined && matchMode) {\n let operator = matchMode;\n switch (matchMode) {\n case FilterMatchMode.CONTAINS:\n operator = \"$containsi\";\n break;\n case FilterMatchMode.STARTS_WITH:\n operator = \"$startsWithi\";\n break;\n case FilterMatchMode.EQUALS:\n operator = \"$eqi\";\n break;\n case FilterMatchMode.NOT_CONTAINS:\n operator = \"$notContainsi\";\n break;\n case FilterMatchMode.NOT_EQUALS:\n operator = \"$nei\";\n break;\n case FilterMatchMode.ENDS_WITH:\n operator = \"$endsWithi\";\n break;\n default:\n operator = matchMode;\n }\n\n formattedFilters[fieldName] = { [operator]: filterValue };\n }\n });\n\n const queryData: Record<string, any> = {\n offset: offset ?? first,\n limit: rowCount ?? rows,\n populate: [\"roles\"],\n filters: formattedFilters,\n };\n\n if (field) {\n queryData.sort = [`${field}:${order === 0 ? null : order === 1 ? \"asc\" : \"desc\"}`];\n }\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n\n return triggerGetUser(queryString);\n };\n\n const handleFilterInputChange = (fieldName: keyof FilterMeta, value: string) => {\n setPendingFilters((prev) => ({\n ...prev,\n [fieldName]: { ...prev[fieldName], value },\n }));\n };\n\n const applyFilters = () => {\n setFirst(0);\n setFilters(pendingFilters);\n setQueryString(0, rows, sortField, sortOrder, pendingFilters);\n };\n\n const clearFilters = () => {\n const defaults = createDefaultFilters();\n setPendingFilters(defaults);\n setFilters(defaults);\n setFirst(0);\n setQueryString(0, rows, sortField, sortOrder, defaults);\n };\n\n const deleteBulk = () => {\n const deleteList = selectedUsers.map((user) => user.id);\n deleteManyUser(deleteList);\n setDialogVisible(false);\n };\n\n return (\n <div className=\"solid-user-list w-full\">\n <div className=\"flex gap-3 mb-4 align-items-center flex-wrap\">\n <CreateButton />\n {selectedUsers.length > 0 && (\n <SolidButton\n type=\"button\"\n label=\"Delete\"\n size=\"small\"\n severity=\"danger\"\n className=\"small-button\"\n onClick={() => setDialogVisible(true)}\n />\n )}\n </div>\n\n <div className=\"grid formgrid mb-3\">\n {[\n { key: \"fullName\", placeholder: \"Search by full name\" },\n { key: \"username\", placeholder: \"Search by username\" },\n { key: \"email\", placeholder: \"Search by email\" },\n { key: \"mobile\", placeholder: \"Search by mobile\" },\n ].map((filter) => (\n <div className=\"field col-12 md:col-3\" key={filter.key}>\n <SolidInput\n value={pendingFilters[filter.key as keyof FilterMeta].value ?? \"\"}\n onChange={(event) =>\n handleFilterInputChange(filter.key as keyof FilterMeta, event.currentTarget.value)\n }\n placeholder={filter.placeholder}\n />\n </div>\n ))}\n <div className=\"field col-12 flex align-items-center gap-2\">\n <SolidButton size=\"small\" onClick={applyFilters} label=\"Apply\" />\n <SolidButton size=\"small\" variant=\"ghost\" onClick={clearFilters} label=\"Clear\" />\n </div>\n </div>\n\n {(loading || isLoading) && (\n <div className=\"flex justify-content-center my-3\">\n <SolidSpinner />\n </div>\n )}\n\n <SolidDataTable\n value={users}\n size=\"small\"\n paginator\n rows={rows}\n rowsPerPageOptions={[10, 25, 50]}\n dataKey=\"id\"\n emptyMessage=\"No users found\"\n totalRecords={totalRecords}\n first={first}\n onPage={onPageChange}\n onSort={onSort}\n sortField={sortField}\n sortOrder={sortOrder}\n selection={selectedUsers}\n onSelectionChange={({ value }) => setSelectedUsers(value)}\n >\n <Column selectionMode=\"multiple\" headerStyle={{ width: \"3em\" }} />\n <Column field=\"id\" header=\"ID\" className=\"text-sm\" sortable headerClassName=\"table-header-fs\" />\n <Column\n field=\"fullName\"\n header=\"Full Name\"\n className=\"text-sm\"\n sortable\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n />\n <Column\n field=\"username\"\n header=\"Username\"\n className=\"text-sm\"\n sortable\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n />\n <Column\n field=\"email\"\n header=\"Email\"\n className=\"text-sm\"\n sortable\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n />\n <Column\n body={(record: Users) => (\n <Link\n href={`${record.id}`}\n rel=\"noopener noreferrer\"\n className=\"text-sm font-bold p-0\"\n style={{ color: \"#12415D\" }}\n >\n <SolidIcon name=\"si-pencil\" style={{ fontSize: \"1rem\" }} aria-hidden />\n </Link>\n )}\n />\n </SolidDataTable>\n\n <SolidDialog\n visible={isDialogVisible}\n header=\"Confirm Delete\"\n modal\n className=\"solid-confirm-dialog\"\n onHide={() => setDialogVisible(false)}\n >\n <p>Are you sure you want to delete the selected Users?</p>\n <div className=\"flex justify-content-center gap-3 mt-3\">\n <SolidButton label=\"Yes\" className=\"small-button\" severity=\"danger\" autoFocus onClick={deleteBulk} />\n <SolidButton label=\"No\" className=\"small-button\" variant=\"ghost\" onClick={() => setDialogVisible(false)} />\n </div>\n </SolidDialog>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"UserListView.js","sourceRoot":"","sources":["../../../../src/components/core/users/UserListView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useDeleteMultipleUsersMutation, useLazyGetusersQuery } from \"../../../redux/api/userApi\";\nimport Link from \"../../common/Link\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { CreateButton } from \"../../../components/common/CreateButton\";\nimport qs from \"qs\";\nimport { FetchBaseQueryError } from \"@reduxjs/toolkit/query\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport { SolidButton, SolidDialog, SolidIcon, SolidInput, SolidSpinner } from \"../../shad-cn-ui\";\nimport { Column, DataTableStateEvent, SolidDataTable } from \"../list/SolidDataTable\";\nimport { FilterMatchMode } from \"../filter/filterMatchMode\";\n\ninterface Users {\n id: string;\n fullName: string;\n username: string;\n email: string;\n mobile: string;\n}\n\ninterface ErrorResponseData {\n message: string;\n statusCode: number;\n error: string;\n}\n\ntype FilterMeta = Record<string, { value: string | null; matchMode: string }>;\n\nconst createDefaultFilters = (): FilterMeta => ({\n fullName: { value: null, matchMode: FilterMatchMode.STARTS_WITH },\n username: { value: null, matchMode: FilterMatchMode.STARTS_WITH },\n email: { value: null, matchMode: FilterMatchMode.STARTS_WITH },\n mobile: { value: null, matchMode: FilterMatchMode.STARTS_WITH },\n});\n\nexport const UserListView = () => {\n const dispatch = useDispatch();\n const [users, setUsers] = useState<Users[]>([]);\n const [filters, setFilters] = useState<FilterMeta>(() => createDefaultFilters());\n const [pendingFilters, setPendingFilters] = useState<FilterMeta>(() => createDefaultFilters());\n const [first, setFirst] = useState(0);\n const [rows, setRows] = useState(25);\n const [totalRecords, setTotalRecords] = useState(0);\n const [sortField, setSortField] = useState(\"\");\n const [sortOrder, setSortOrder] = useState<1 | -1 | 0>(0);\n const [selectedUsers, setSelectedUsers] = useState<Users[]>([]);\n const [loading, setLoading] = useState<boolean>(true);\n const [isDialogVisible, setDialogVisible] = useState(false);\n\n const [triggerGetUser, { data: user, isLoading, error, isError }] = useLazyGetusersQuery();\n const [deleteManyUser, { isSuccess: isDeleteUserSuceess, isError: isUserDeleteError, error: UserDeleteError }] =\n useDeleteMultipleUsersMutation();\n\n useEffect(() => {\n if (user) {\n setUsers(user?.data?.records ?? []);\n setTotalRecords(user?.data?.meta?.totalRecords ?? 0);\n setLoading(false);\n }\n }, [user]);\n\n useEffect(() => {\n const queryData = {\n offset: 0,\n limit: rows,\n populate: [\"roles\"],\n };\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n triggerGetUser(queryString);\n setSelectedUsers([]);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (isError || isUserDeleteError) {\n setLoading(false);\n let errorMessage = ERROR_MESSAGES.ERROR_OCCURED;\n\n const errorToast = isError ? error : UserDeleteError;\n\n if (isFetchBaseQueryErrorWithErrorResponse(errorToast)) {\n errorMessage = `${(errorToast as FetchBaseQueryError & { data: ErrorResponseData }).data.message}`;\n } else {\n errorMessage = ERROR_MESSAGES.SOMETHING_WRONG;\n }\n\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.ERROR, detail: errorMessage, life: 3000 }));\n }\n }, [dispatch, isError, isUserDeleteError, error, UserDeleteError]);\n\n const isFetchBaseQueryErrorWithErrorResponse = (\n error: any\n ): error is FetchBaseQueryError & { data: ErrorResponseData } => {\n return error && typeof error === \"object\" && \"data\" in error && \"message\" in (error as any).data;\n };\n\n const onPageChange = (event: { first: number; rows: number }) => {\n setFirst(event.first);\n setRows(event.rows);\n setQueryString(event.first, event.rows, sortField, sortOrder, filters);\n };\n\n const onSort = (event: DataTableStateEvent) => {\n const nextSortField = event.sortField ?? \"\";\n const validSortOrder = event.sortOrder === 1 || event.sortOrder === -1 ? event.sortOrder : 0;\n setSortField(nextSortField);\n setSortOrder(validSortOrder);\n setFirst(0);\n setQueryString(0, rows, nextSortField, validSortOrder, filters);\n };\n\n const setQueryString = async (\n offset?: number,\n rowCount?: number,\n field?: string,\n order?: 1 | -1 | 0,\n filterQuery?: FilterMeta\n ) => {\n const formattedFilters: Record<string, any> = {};\n\n Object.keys(filterQuery ?? {}).forEach((fieldName) => {\n const filterValue = filterQuery?.[fieldName]?.value;\n const matchMode = filterQuery?.[fieldName]?.matchMode;\n\n if (filterValue !== null && filterValue !== undefined && matchMode) {\n let operator = matchMode;\n switch (matchMode) {\n case FilterMatchMode.CONTAINS:\n operator = \"$containsi\";\n break;\n case FilterMatchMode.STARTS_WITH:\n operator = \"$startsWithi\";\n break;\n case FilterMatchMode.EQUALS:\n operator = \"$eqi\";\n break;\n case FilterMatchMode.NOT_CONTAINS:\n operator = \"$notContainsi\";\n break;\n case FilterMatchMode.NOT_EQUALS:\n operator = \"$nei\";\n break;\n case FilterMatchMode.ENDS_WITH:\n operator = \"$endsWithi\";\n break;\n default:\n operator = matchMode;\n }\n\n formattedFilters[fieldName] = { [operator]: filterValue };\n }\n });\n\n const queryData: Record<string, any> = {\n offset: offset ?? first,\n limit: rowCount ?? rows,\n populate: [\"roles\"],\n filters: formattedFilters,\n };\n\n if (field) {\n queryData.sort = [`${field}:${order === 0 ? null : order === 1 ? \"asc\" : \"desc\"}`];\n }\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n\n return triggerGetUser(queryString);\n };\n\n const handleFilterInputChange = (fieldName: keyof FilterMeta, value: string) => {\n setPendingFilters((prev) => ({\n ...prev,\n [fieldName]: { ...prev[fieldName], value },\n }));\n };\n\n const applyFilters = () => {\n setFirst(0);\n setFilters(pendingFilters);\n setQueryString(0, rows, sortField, sortOrder, pendingFilters);\n };\n\n const clearFilters = () => {\n const defaults = createDefaultFilters();\n setPendingFilters(defaults);\n setFilters(defaults);\n setFirst(0);\n setQueryString(0, rows, sortField, sortOrder, defaults);\n };\n\n const deleteBulk = () => {\n const deleteList = selectedUsers.map((user) => user.id);\n deleteManyUser(deleteList);\n setDialogVisible(false);\n };\n\n return (\n <div className=\"solid-user-list w-full\">\n <div className=\"flex gap-4 mb-6 items-center flex-wrap\">\n <CreateButton />\n {selectedUsers.length > 0 && (\n <SolidButton\n type=\"button\"\n label=\"Delete\"\n size=\"small\"\n severity=\"danger\"\n className=\"small-button\"\n onClick={() => setDialogVisible(true)}\n />\n )}\n </div>\n\n <div className=\"flex flex-wrap -mx-2 -mt-2 mb-4\">\n {[\n { key: \"fullName\", placeholder: \"Search by full name\" },\n { key: \"username\", placeholder: \"Search by username\" },\n { key: \"email\", placeholder: \"Search by email\" },\n { key: \"mobile\", placeholder: \"Search by mobile\" },\n ].map((filter) => (\n <div className=\"field w-full md:w-1/4 px-2 pt-2\" key={filter.key}>\n <SolidInput\n value={pendingFilters[filter.key as keyof FilterMeta].value ?? \"\"}\n onChange={(event) =>\n handleFilterInputChange(filter.key as keyof FilterMeta, event.currentTarget.value)\n }\n placeholder={filter.placeholder}\n />\n </div>\n ))}\n <div className=\"field w-full px-2 pt-2 flex items-center gap-2\">\n <SolidButton size=\"small\" onClick={applyFilters} label=\"Apply\" />\n <SolidButton size=\"small\" variant=\"ghost\" onClick={clearFilters} label=\"Clear\" />\n </div>\n </div>\n\n {(loading || isLoading) && (\n <div className=\"flex justify-center my-4\">\n <SolidSpinner />\n </div>\n )}\n\n <SolidDataTable\n value={users}\n size=\"small\"\n paginator\n rows={rows}\n rowsPerPageOptions={[10, 25, 50]}\n dataKey=\"id\"\n emptyMessage=\"No users found\"\n totalRecords={totalRecords}\n first={first}\n onPage={onPageChange}\n onSort={onSort}\n sortField={sortField}\n sortOrder={sortOrder}\n selection={selectedUsers}\n onSelectionChange={({ value }) => setSelectedUsers(value)}\n >\n <Column selectionMode=\"multiple\" headerStyle={{ width: \"3em\" }} />\n <Column field=\"id\" header=\"ID\" className=\"text-sm\" sortable headerClassName=\"table-header-fs\" />\n <Column\n field=\"fullName\"\n header=\"Full Name\"\n className=\"text-sm\"\n sortable\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n />\n <Column\n field=\"username\"\n header=\"Username\"\n className=\"text-sm\"\n sortable\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n />\n <Column\n field=\"email\"\n header=\"Email\"\n className=\"text-sm\"\n sortable\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n />\n <Column\n body={(record: Users) => (\n <Link\n href={`${record.id}`}\n rel=\"noopener noreferrer\"\n className=\"text-sm font-bold p-0\"\n style={{ color: \"#12415D\" }}\n >\n <SolidIcon name=\"si-pencil\" style={{ fontSize: \"1rem\" }} aria-hidden />\n </Link>\n )}\n />\n </SolidDataTable>\n\n <SolidDialog\n visible={isDialogVisible}\n header=\"Confirm Delete\"\n modal\n className=\"solid-confirm-dialog\"\n onHide={() => setDialogVisible(false)}\n >\n <p>Are you sure you want to delete the selected Users?</p>\n <div className=\"flex justify-center gap-4 mt-4\">\n <SolidButton label=\"Yes\" className=\"small-button\" severity=\"danger\" autoFocus onClick={deleteBulk} />\n <SolidButton label=\"No\" className=\"small-button\" variant=\"ghost\" onClick={() => setDialogVisible(false)} />\n </div>\n </SolidDialog>\n </div>\n );\n};\n"]}
@@ -198,7 +198,7 @@ export const UserListView = () => {
198
198
 
199
199
  return (
200
200
  <div className="solid-user-list w-full">
201
- <div className="flex gap-3 mb-4 align-items-center flex-wrap">
201
+ <div className="flex gap-4 mb-6 items-center flex-wrap">
202
202
  <CreateButton />
203
203
  {selectedUsers.length > 0 && (
204
204
  <SolidButton
@@ -212,14 +212,14 @@ export const UserListView = () => {
212
212
  )}
213
213
  </div>
214
214
 
215
- <div className="grid formgrid mb-3">
215
+ <div className="flex flex-wrap -mx-2 -mt-2 mb-4">
216
216
  {[
217
217
  { key: "fullName", placeholder: "Search by full name" },
218
218
  { key: "username", placeholder: "Search by username" },
219
219
  { key: "email", placeholder: "Search by email" },
220
220
  { key: "mobile", placeholder: "Search by mobile" },
221
221
  ].map((filter) => (
222
- <div className="field col-12 md:col-3" key={filter.key}>
222
+ <div className="field w-full md:w-1/4 px-2 pt-2" key={filter.key}>
223
223
  <SolidInput
224
224
  value={pendingFilters[filter.key as keyof FilterMeta].value ?? ""}
225
225
  onChange={(event) =>
@@ -229,14 +229,14 @@ export const UserListView = () => {
229
229
  />
230
230
  </div>
231
231
  ))}
232
- <div className="field col-12 flex align-items-center gap-2">
232
+ <div className="field w-full px-2 pt-2 flex items-center gap-2">
233
233
  <SolidButton size="small" onClick={applyFilters} label="Apply" />
234
234
  <SolidButton size="small" variant="ghost" onClick={clearFilters} label="Clear" />
235
235
  </div>
236
236
  </div>
237
237
 
238
238
  {(loading || isLoading) && (
239
- <div className="flex justify-content-center my-3">
239
+ <div className="flex justify-center my-4">
240
240
  <SolidSpinner />
241
241
  </div>
242
242
  )}
@@ -306,7 +306,7 @@ export const UserListView = () => {
306
306
  onHide={() => setDialogVisible(false)}
307
307
  >
308
308
  <p>Are you sure you want to delete the selected Users?</p>
309
- <div className="flex justify-content-center gap-3 mt-3">
309
+ <div className="flex justify-center gap-4 mt-4">
310
310
  <SolidButton label="Yes" className="small-button" severity="danger" autoFocus onClick={deleteBulk} />
311
311
  <SolidButton label="No" className="small-button" variant="ghost" onClick={() => setDialogVisible(false)} />
312
312
  </div>
@@ -2,6 +2,7 @@ type AdminHeaderActionsProps = {
2
2
  variant: "header" | "sidebar";
3
3
  className?: string;
4
4
  };
5
+ export declare const StudioSparkleIcon: () => import("react/jsx-runtime").JSX.Element;
5
6
  export declare const AdminHeaderActions: ({ variant, className }: AdminHeaderActionsProps) => import("react/jsx-runtime").JSX.Element | null;
6
7
  export {};
7
8
  //# sourceMappingURL=AdminHeaderActions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdminHeaderActions.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AdminHeaderActions.tsx"],"names":[],"mappings":"AAUA,KAAK,uBAAuB,GAAG;IAC7B,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA2BF,eAAO,MAAM,kBAAkB,2BAAiC,uBAAuB,mDAkHtF,CAAC"}
1
+ {"version":3,"file":"AdminHeaderActions.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AdminHeaderActions.tsx"],"names":[],"mappings":"AAUA,KAAK,uBAAuB,GAAG;IAC7B,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAUF,eAAO,MAAM,iBAAiB,+CAK7B,CAAC;AAYF,eAAO,MAAM,kBAAkB,2BAAiC,uBAAuB,mDAkHtF,CAAC"}
@@ -17,7 +17,7 @@ import { env } from "../../adapters/env";
17
17
  import { hasAnyRole } from "../../helpers/rolesHelper";
18
18
  import { enterStudioMode } from "../../redux/features/solidStudioSlice";
19
19
  import { LayoutContext } from "./context/layoutcontext";
20
- var StudioSparkleIcon = function () { return (_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: [_jsx("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" }), _jsx("circle", { cx: "7", cy: "7", r: "2", stroke: "currentColor", strokeWidth: "1.4" })] })); };
20
+ export var StudioSparkleIcon = function () { return (_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: [_jsx("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" }), _jsx("circle", { cx: "7", cy: "7", r: "2", stroke: "currentColor", strokeWidth: "1.4" })] })); };
21
21
  var ThemeToggleIcon = function () { return (_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" })] })); };
22
22
  export var AdminHeaderActions = function (_a) {
23
23
  var variant = _a.variant, _b = _a.className, className = _b === void 0 ? "" : _b;
@@ -1 +1 @@
1
- {"version":3,"file":"AdminHeaderActions.js","sourceRoot":"","sources":["../../../src/components/layout/AdminHeaderActions.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAexD,IAAM,iBAAiB,GAAG,cAAM,OAAA,CAC9B,eAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,aAC5E,eAAM,CAAC,EAAC,6GAA6G,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,GAAG,EACtL,iBAAQ,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,GAAG,IAClE,CACP,EAL+B,CAK/B,CAAC;AAEF,IAAM,eAAe,GAAG,cAAM,OAAA,CAC5B,eAAK,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,aAC/G,eAAM,CAAC,EAAC,4CAA4C,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,EAC1I,eAAM,CAAC,EAAC,YAAY,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,EAC1G,eAAM,CAAC,EAAC,kBAAkB,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,EAChH,eAAM,CAAC,EAAC,qBAAqB,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,EACnH,eAAM,CAAC,EAAC,qBAAqB,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,IAC/G,CACP,EAR6B,CAQ7B,CAAC;AAEF,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAC,EAAoD;QAAlD,OAAO,aAAA,EAAE,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA;IAC1D,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IACvB,IAAM,OAAO,GAAK,UAAU,EAAE,KAAjB,CAAkB;IACjC,IAAA,KAAiC,UAAU,CAAC,aAAa,CAAC,EAAxD,eAAe,qBAAA,EAAE,SAAS,eAA8B,CAAC;IACjE,IAAM,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;IAC3B,IAAM,OAAO,GAAG,UAAU,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,IAAM,YAAY,GAAG,WAAW,CAAC,UAAC,KAAU,gBAAK,OAAA,MAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,YAAY,mCAAI,KAAK,CAAA,EAAA,CAAC,CAAC;IAC3F,IAAM,KAAK,GAAG,GAAG,CAAC,iBAAiB,CAAC,KAAK,KAAK,CAAC;IAC/C,IAAM,QAAQ,GAAG,0CAA0C,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE3E,IAAM,OAAO,iDACR,CAAC,OAAO,IAAI,KAAK,IAAI,CAAC,YAAY;QACnC,CAAC,CAAC,CAAC;gBACD,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE;oBACP,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACzB,CAAC;gBACD,KAAK,EAAE,qBAAqB;gBAC5B,IAAI,EAAE,KAAC,iBAAiB,KAAG;aAC5B,CAAC;QACF,CAAC,CAAC,EAAE,CAAC;QACP;YACE,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW;YACxD,OAAO,EAAE,eAAe;YACxB,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,KAAC,eAAe,KAAG;SAC1B;eACE,CAAC,QAAQ;QACV,CAAC,CAAC,CAAC;gBACD,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,cAAM,OAAA,MAAM,CAAC,IAAI,EAAE,EAAb,CAAa;gBAC5B,KAAK,EAAE,SAAS;aACjB,CAAC;QACF,CAAC,CAAC,EAAE,CAAC,OACR,CAAC;IAEF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,CACL,cAAK,SAAS,EAAE,iDAA0C,SAAS,CAAE,CAAC,IAAI,EAAE,YACzE,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,CACvB,iBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,6BAA6B,EACvC,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,KAAK,EAAE,MAAM,CAAC,KAAK,gBACP,MAAM,CAAC,KAAK,YAEvB,MAAM,CAAC,KAAK,IAPR,MAAM,CAAC,GAAG,CAQR,CACV,EAXwB,CAWxB,CAAC,GACE,CACP,CAAC;KACH;IAED,OAAO,CACL,cAAK,SAAS,EAAE,oDAA6C,SAAS,CAAE,CAAC,IAAI,EAAE,YAC5E,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM;YAClB,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC3B,OAAO,CACL,kBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0BAA0B,EACpC,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,KAAK,EAAE,MAAM,CAAC,KAAK,gBACP,MAAM,CAAC,KAAK,aAEvB,MAAM,CAAC,IAAI,EACZ,eAAM,SAAS,EAAC,4BAA4B,YAAE,MAAM,CAAC,KAAK,GAAQ,KAR7D,MAAM,CAAC,GAAG,CASR,CACV,CAAC;aACH;YAED,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,EAAE;gBAC1B,OAAO,CACL,kBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0BAA0B,EACpC,OAAO,EAAE,MAAM,CAAC,OAAO,gBACX,MAAM,CAAC,KAAK,EACxB,KAAK,EAAE,MAAM,CAAC,KAAK,aAElB,MAAM,CAAC,IAAI,EACZ,eAAM,SAAS,EAAC,eAAe,YAAE,MAAM,CAAC,KAAK,GAAQ,KARhD,MAAM,CAAC,GAAG,CASR,CACV,CAAC;aACH;YAED,OAAO,CACL,iBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,sBAAsB,EAChC,OAAO,EAAE,MAAM,CAAC,OAAO,gBACX,MAAM,CAAC,KAAK,YAEvB,MAAM,CAAC,KAAK,IANR,MAAM,CAAC,GAAG,CAOR,CACV,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { ReactNode, useContext } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useRouter } from \"../../hooks/useRouter\";\nimport { useSession } from \"../../hooks/useSession\";\nimport { env } from \"../../adapters/env\";\nimport { hasAnyRole } from \"../../helpers/rolesHelper\";\nimport { enterStudioMode } from \"../../redux/features/solidStudioSlice\";\nimport { LayoutContext } from \"./context/layoutcontext\";\n\ntype AdminHeaderActionsProps = {\n variant: \"header\" | \"sidebar\";\n className?: string;\n};\n\ntype AdminAction = {\n key: string;\n label: string;\n onClick: () => void;\n title: string;\n icon?: ReactNode;\n};\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\nconst ThemeToggleIcon = () => (\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);\n\nexport const AdminHeaderActions = ({ variant, className = \"\" }: AdminHeaderActionsProps) => {\n const pathname = usePathname();\n const router = useRouter();\n const dispatch = useDispatch();\n const { data: session } = useSession();\n const { toggleThemeMode, themeMode } = useContext(LayoutContext);\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 const showBack = /\\/admin\\/core\\/[^/]+\\/[^/]+\\/form\\/[^/]+/.test(pathname);\n\n const actions: AdminAction[] = [\n ...(isAdmin && isDev && !isStudioMode\n ? [{\n key: \"studio\",\n label: \"Studio\",\n onClick: () => {\n dispatch(enterStudioMode());\n router.push(\"/studio\");\n },\n title: \"Enter SolidX Studio\",\n icon: <StudioSparkleIcon />,\n }]\n : []),\n {\n key: \"theme\",\n label: themeMode === \"dark\" ? \"Light Mode\" : \"Dark Mode\",\n onClick: toggleThemeMode,\n title: \"Toggle theme\",\n icon: <ThemeToggleIcon />,\n },\n ...(showBack\n ? [{\n key: \"back\",\n label: \"Back\",\n onClick: () => router.back(),\n title: \"Go back\",\n }]\n : []),\n ];\n\n if (!actions.length) {\n return null;\n }\n\n if (variant === \"sidebar\") {\n return (\n <div className={`solid-sidebar-mobile-actions md:hidden ${className}`.trim()}>\n {actions.map((action) => (\n <button\n key={action.key}\n type=\"button\"\n className=\"solid-sidebar-mobile-action\"\n onClick={action.onClick}\n title={action.title}\n aria-label={action.title}\n >\n {action.label}\n </button>\n ))}\n </div>\n );\n }\n\n return (\n <div className={`solid-admin-header-actions hidden md:flex ${className}`.trim()}>\n {actions.map((action) => {\n if (action.key === \"studio\") {\n return (\n <button\n key={action.key}\n type=\"button\"\n className=\"solid-studio-trigger-btn\"\n onClick={action.onClick}\n title={action.title}\n aria-label={action.title}\n >\n {action.icon}\n <span className=\"solid-studio-trigger-label\">{action.label}</span>\n </button>\n );\n }\n\n if (action.key === \"theme\") {\n return (\n <button\n key={action.key}\n type=\"button\"\n className=\"solid-admin-theme-toggle\"\n onClick={action.onClick}\n aria-label={action.title}\n title={action.title}\n >\n {action.icon}\n <span className=\"solid-sr-only\">{action.label}</span>\n </button>\n );\n }\n\n return (\n <button\n key={action.key}\n type=\"button\"\n className=\"solid-admin-back-btn\"\n onClick={action.onClick}\n aria-label={action.title}\n >\n {action.label}\n </button>\n );\n })}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"AdminHeaderActions.js","sourceRoot":"","sources":["../../../src/components/layout/AdminHeaderActions.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ReactNode, useContext } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useRouter } from \"../../hooks/useRouter\";\nimport { useSession } from \"../../hooks/useSession\";\nimport { env } from \"../../adapters/env\";\nimport { hasAnyRole } from \"../../helpers/rolesHelper\";\nimport { enterStudioMode } from \"../../redux/features/solidStudioSlice\";\nimport { LayoutContext } from \"./context/layoutcontext\";\n\ntype AdminHeaderActionsProps = {\n variant: \"header\" | \"sidebar\";\n className?: string;\n};\n\ntype AdminAction = {\n key: string;\n label: string;\n onClick: () => void;\n title: string;\n icon?: ReactNode;\n};\n\nexport const 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\nconst ThemeToggleIcon = () => (\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);\n\nexport const AdminHeaderActions = ({ variant, className = \"\" }: AdminHeaderActionsProps) => {\n const pathname = usePathname();\n const router = useRouter();\n const dispatch = useDispatch();\n const { data: session } = useSession();\n const { toggleThemeMode, themeMode } = useContext(LayoutContext);\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 const showBack = /\\/admin\\/core\\/[^/]+\\/[^/]+\\/form\\/[^/]+/.test(pathname);\n\n const actions: AdminAction[] = [\n ...(isAdmin && isDev && !isStudioMode\n ? [{\n key: \"studio\",\n label: \"Studio\",\n onClick: () => {\n dispatch(enterStudioMode());\n router.push(\"/studio\");\n },\n title: \"Enter SolidX Studio\",\n icon: <StudioSparkleIcon />,\n }]\n : []),\n {\n key: \"theme\",\n label: themeMode === \"dark\" ? \"Light Mode\" : \"Dark Mode\",\n onClick: toggleThemeMode,\n title: \"Toggle theme\",\n icon: <ThemeToggleIcon />,\n },\n ...(showBack\n ? [{\n key: \"back\",\n label: \"Back\",\n onClick: () => router.back(),\n title: \"Go back\",\n }]\n : []),\n ];\n\n if (!actions.length) {\n return null;\n }\n\n if (variant === \"sidebar\") {\n return (\n <div className={`solid-sidebar-mobile-actions md:hidden ${className}`.trim()}>\n {actions.map((action) => (\n <button\n key={action.key}\n type=\"button\"\n className=\"solid-sidebar-mobile-action\"\n onClick={action.onClick}\n title={action.title}\n aria-label={action.title}\n >\n {action.label}\n </button>\n ))}\n </div>\n );\n }\n\n return (\n <div className={`solid-admin-header-actions hidden md:flex ${className}`.trim()}>\n {actions.map((action) => {\n if (action.key === \"studio\") {\n return (\n <button\n key={action.key}\n type=\"button\"\n className=\"solid-studio-trigger-btn\"\n onClick={action.onClick}\n title={action.title}\n aria-label={action.title}\n >\n {action.icon}\n <span className=\"solid-studio-trigger-label\">{action.label}</span>\n </button>\n );\n }\n\n if (action.key === \"theme\") {\n return (\n <button\n key={action.key}\n type=\"button\"\n className=\"solid-admin-theme-toggle\"\n onClick={action.onClick}\n aria-label={action.title}\n title={action.title}\n >\n {action.icon}\n <span className=\"solid-sr-only\">{action.label}</span>\n </button>\n );\n }\n\n return (\n <button\n key={action.key}\n type=\"button\"\n className=\"solid-admin-back-btn\"\n onClick={action.onClick}\n aria-label={action.title}\n >\n {action.label}\n </button>\n );\n })}\n </div>\n );\n};\n"]}
@@ -21,7 +21,7 @@ type AdminAction = {
21
21
  icon?: ReactNode;
22
22
  };
23
23
 
24
- const StudioSparkleIcon = () => (
24
+ export const StudioSparkleIcon = () => (
25
25
  <svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true">
26
26
  <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" />
27
27
  <circle cx="7" cy="7" r="2" stroke="currentColor" strokeWidth="1.4" />
@@ -35,7 +35,7 @@ var AdminSidebar = function () {
35
35
  var handleMenuItemClick = function (menuItem) {
36
36
  setActiveMenuItem(menuItem);
37
37
  };
38
- return (_jsx("div", { className: "list-group mt-5 pl-4", children: menuItem.map(function (menuItem, index) { return (_jsxs(Link, { href: menuItem.url, className: "fw-bold list-group-item list-group-item-action ".concat(activeMenuItem.includes(menuItem.url) ? "active" : ""), onClick: function () { return handleMenuItemClick(menuItem.url); }, "aria-current": activeMenuItem.includes(menuItem.url) ? "true" : "false", children: [_jsx("i", { className: "".concat(menuItem.icon, " fa-fw pe-2") }), " ", menuItem.name] }, index)); }) }));
38
+ return (_jsx("div", { className: "list-group mt-8 pl-6", children: menuItem.map(function (menuItem, index) { return (_jsxs(Link, { href: menuItem.url, className: "fw-bold list-group-item list-group-item-action ".concat(activeMenuItem.includes(menuItem.url) ? "active" : ""), onClick: function () { return handleMenuItemClick(menuItem.url); }, "aria-current": activeMenuItem.includes(menuItem.url) ? "true" : "false", children: [_jsx("i", { className: "".concat(menuItem.icon, " fa-fw pe-2") }), " ", menuItem.name] }, index)); }) }));
39
39
  };
40
40
  export default AdminSidebar;
41
41
  //# sourceMappingURL=AdminSidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdminSidebar.js","sourceRoot":"","sources":["../../../src/components/layout/AdminSidebar.tsx"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,IAAM,YAAY,GAAG;IACnB,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,IAAM,QAAQ,GAAG;QACf;YACE,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,kBAAkB;YACvB,IAAI,EAAE,uBAAuB;SAC9B;QACD;YACE,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,cAAc;YACnB,IAAI,EAAE,cAAc;SACrB;QACD;YACE,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,iBAAiB;YACtB,IAAI,EAAE,gBAAgB;SACvB;QACD;YACE,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,cAAc;YACnB,IAAI,EAAE,aAAa;SACpB;QACD;YACE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,gBAAgB;YACrB,IAAI,EAAE,aAAa;SACpB;KACF,CAAC;IAEI,IAAA,KAAsC,QAAQ,CAAC,QAAQ,CAAC,EAAvD,cAAc,QAAA,EAAE,iBAAiB,QAAsB,CAAC;IAE/D,IAAM,mBAAmB,GAAG,UAAC,QAAgB;QAC3C,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,sBAAsB,YAClC,QAAQ,CAAC,GAAG,CAAC,UAAC,QAAQ,EAAE,KAAK,IAAK,OAAA,CACjC,MAAC,IAAI,IAEH,IAAI,EAAE,QAAQ,CAAC,GAAG,EAClB,SAAS,EAAE,yDAAkD,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAC9G,EACJ,OAAO,EAAE,cAAM,OAAA,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAjC,CAAiC,kBAE9C,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,aAG1D,YAAG,SAAS,EAAE,UAAG,QAAQ,CAAC,IAAI,gBAAa,GAAM,OAAE,QAAQ,CAAC,IAAI,KAT3D,KAAK,CAUL,CACR,EAbkC,CAalC,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["\n\nimport Link from \"../common/Link\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useState } from \"react\";\n\nconst AdminSidebar = () => {\n const pathname = usePathname();\n\n const menuItem = [\n {\n name: \"Dashboard\",\n url: \"/admin/dashboard\",\n icon: \"fas fa-tachometer-alt\",\n },\n {\n name: \"Rooms\",\n url: \"/admin/rooms\",\n icon: \"fas fa-hotel\",\n },\n {\n name: \"Bookings\",\n url: \"/admin/bookings\",\n icon: \"fas fa-receipt\",\n },\n {\n name: \"Users\",\n url: \"/admin/users\",\n icon: \"fas fa-user\",\n },\n {\n name: \"Reviews\",\n url: \"/admin/reviews\",\n icon: \"fas fa-star\",\n },\n ];\n\n const [activeMenuItem, setActiveMenuItem] = useState(pathname);\n\n const handleMenuItemClick = (menuItem: string) => {\n setActiveMenuItem(menuItem);\n };\n\n return (\n <div className=\"list-group mt-5 pl-4\">\n {menuItem.map((menuItem, index) => (\n <Link\n key={index}\n href={menuItem.url}\n className={`fw-bold list-group-item list-group-item-action ${activeMenuItem.includes(menuItem.url) ? \"active\" : \"\"\n }`}\n onClick={() => handleMenuItemClick(menuItem.url)}\n aria-current={\n activeMenuItem.includes(menuItem.url) ? \"true\" : \"false\"\n }\n >\n <i className={`${menuItem.icon} fa-fw pe-2`}></i> {menuItem.name}\n </Link>\n ))}\n </div>\n );\n};\n\nexport default AdminSidebar;\n"]}
1
+ {"version":3,"file":"AdminSidebar.js","sourceRoot":"","sources":["../../../src/components/layout/AdminSidebar.tsx"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,IAAM,YAAY,GAAG;IACnB,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,IAAM,QAAQ,GAAG;QACf;YACE,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,kBAAkB;YACvB,IAAI,EAAE,uBAAuB;SAC9B;QACD;YACE,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,cAAc;YACnB,IAAI,EAAE,cAAc;SACrB;QACD;YACE,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,iBAAiB;YACtB,IAAI,EAAE,gBAAgB;SACvB;QACD;YACE,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,cAAc;YACnB,IAAI,EAAE,aAAa;SACpB;QACD;YACE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,gBAAgB;YACrB,IAAI,EAAE,aAAa;SACpB;KACF,CAAC;IAEI,IAAA,KAAsC,QAAQ,CAAC,QAAQ,CAAC,EAAvD,cAAc,QAAA,EAAE,iBAAiB,QAAsB,CAAC;IAE/D,IAAM,mBAAmB,GAAG,UAAC,QAAgB;QAC3C,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,sBAAsB,YAClC,QAAQ,CAAC,GAAG,CAAC,UAAC,QAAQ,EAAE,KAAK,IAAK,OAAA,CACjC,MAAC,IAAI,IAEH,IAAI,EAAE,QAAQ,CAAC,GAAG,EAClB,SAAS,EAAE,yDAAkD,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAC9G,EACJ,OAAO,EAAE,cAAM,OAAA,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAjC,CAAiC,kBAE9C,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,aAG1D,YAAG,SAAS,EAAE,UAAG,QAAQ,CAAC,IAAI,gBAAa,GAAM,OAAE,QAAQ,CAAC,IAAI,KAT3D,KAAK,CAUL,CACR,EAbkC,CAalC,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["\n\nimport Link from \"../common/Link\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useState } from \"react\";\n\nconst AdminSidebar = () => {\n const pathname = usePathname();\n\n const menuItem = [\n {\n name: \"Dashboard\",\n url: \"/admin/dashboard\",\n icon: \"fas fa-tachometer-alt\",\n },\n {\n name: \"Rooms\",\n url: \"/admin/rooms\",\n icon: \"fas fa-hotel\",\n },\n {\n name: \"Bookings\",\n url: \"/admin/bookings\",\n icon: \"fas fa-receipt\",\n },\n {\n name: \"Users\",\n url: \"/admin/users\",\n icon: \"fas fa-user\",\n },\n {\n name: \"Reviews\",\n url: \"/admin/reviews\",\n icon: \"fas fa-star\",\n },\n ];\n\n const [activeMenuItem, setActiveMenuItem] = useState(pathname);\n\n const handleMenuItemClick = (menuItem: string) => {\n setActiveMenuItem(menuItem);\n };\n\n return (\n <div className=\"list-group mt-8 pl-6\">\n {menuItem.map((menuItem, index) => (\n <Link\n key={index}\n href={menuItem.url}\n className={`fw-bold list-group-item list-group-item-action ${activeMenuItem.includes(menuItem.url) ? \"active\" : \"\"\n }`}\n onClick={() => handleMenuItemClick(menuItem.url)}\n aria-current={\n activeMenuItem.includes(menuItem.url) ? \"true\" : \"false\"\n }\n >\n <i className={`${menuItem.icon} fa-fw pe-2`}></i> {menuItem.name}\n </Link>\n ))}\n </div>\n );\n};\n\nexport default AdminSidebar;\n"]}
@@ -42,7 +42,7 @@ const AdminSidebar = () => {
42
42
  };
43
43
 
44
44
  return (
45
- <div className="list-group mt-5 pl-4">
45
+ <div className="list-group mt-8 pl-6">
46
46
  {menuItem.map((menuItem, index) => (
47
47
  <Link
48
48
  key={index}
@@ -1 +1 @@
1
- {"version":3,"file":"AdminTopHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"AAcA,eAAO,MAAM,cAAc,+CAoI1B,CAAC"}
1
+ {"version":3,"file":"AdminTopHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"AAsBA,eAAO,MAAM,cAAc,+CA0L1B,CAAC"}
@@ -1,10 +1,18 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo } from "react";
2
+ import { useContext, useMemo } from "react";
3
3
  import { usePathname } from "../../hooks/usePathname";
4
4
  import { useSearchParams } from "../../hooks/useSearchParams";
5
5
  import { useRouter } from "../../hooks/useRouter";
6
6
  import { useGetSolidActionByIdQuery } from "../../redux/api/solidActionApi";
7
- import { AdminHeaderActions } from "./AdminHeaderActions";
7
+ import { useGetSolidSettingsQuery } from "../../redux/api/solidSettingsApi";
8
+ import { LayoutContext } from "./context/layoutcontext";
9
+ import { enterStudioMode } from "../../redux/features/solidStudioSlice";
10
+ import { hasAnyRole } from "../../helpers/rolesHelper";
11
+ import { getSettingsMap } from "../../helpers/settingsPayload";
12
+ import { env } from "../../adapters/env";
13
+ import { AdminHeaderActions, StudioSparkleIcon } from "./AdminHeaderActions";
14
+ import { useDispatch, useSelector } from "react-redux";
15
+ import { useSession } from "../../hooks/useSession";
8
16
  var SIDEBAR_TOGGLE_EVENT = "solidx:sidebar-toggle";
9
17
  var toLabel = function (value) {
10
18
  return decodeURIComponent(value)
@@ -15,6 +23,16 @@ export var AdminTopHeader = function () {
15
23
  var pathname = usePathname();
16
24
  var searchParams = useSearchParams();
17
25
  var router = useRouter();
26
+ var dispatch = useDispatch();
27
+ var toggleThemeMode = useContext(LayoutContext).toggleThemeMode;
28
+ var session = useSession().data;
29
+ var solidSettingsData = useGetSolidSettingsQuery(undefined).data;
30
+ var user = session === null || session === void 0 ? void 0 : session.user;
31
+ var isAdmin = hasAnyRole(user === null || user === void 0 ? void 0 : user.roles, ["Admin"]);
32
+ var isStudioMode = useSelector(function (state) { var _a, _b; return (_b = (_a = state.solidStudio) === null || _a === void 0 ? void 0 : _a.isStudioMode) !== null && _b !== void 0 ? _b : false; });
33
+ var isDev = env("VITE_SOLIDX_ENV") === "dev";
34
+ var settingsMap = useMemo(function () { return getSettingsMap(solidSettingsData); }, [solidSettingsData]);
35
+ var isDarkModeEnabled = (settingsMap === null || settingsMap === void 0 ? void 0 : settingsMap.enableDarkMode) === true || (settingsMap === null || settingsMap === void 0 ? void 0 : settingsMap.enableDarkMode) === "true";
18
36
  // We treat actionId as the source of truth for breadcrumb labels.
19
37
  // If present, we resolve module/model/action via action-metadata API
20
38
  // so breadcrumbs are consistent across list/form/tree/kanban pages.
@@ -90,6 +108,6 @@ export var AdminTopHeader = function () {
90
108
  }
91
109
  }
92
110
  };
93
- 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", { className: "solid-bread-crum-text-wrapper", children: crumb }))] }, "".concat(crumb, "-").concat(index))); }) }), _jsx(AdminHeaderActions, { variant: "header" })] }) }));
111
+ 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", { className: "solid-bread-crum-text-wrapper", 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", "aria-label": "Enter SolidX Studio", children: [_jsx(StudioSparkleIcon, {}), _jsx("span", { className: "solid-studio-trigger-label", children: "Studio" })] })), isDarkModeEnabled && (_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" }))] }), _jsx(AdminHeaderActions, { variant: "header" })] }) }));
94
112
  };
95
113
  //# 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 { useMemo } from \"react\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useSearchParams } from \"../../hooks/useSearchParams\";\nimport { useRouter } from \"../../hooks/useRouter\";\nimport { useGetSolidActionByIdQuery } from \"../../redux/api/solidActionApi\";\nimport { AdminHeaderActions } from \"./AdminHeaderActions\";\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\nexport const AdminTopHeader = () => {\n const pathname = usePathname();\n const searchParams = useSearchParams();\n const router = useRouter();\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 = [\n moduleName ? toLabel(moduleName) : null,\n modelFromApi ? decodeURIComponent(modelFromApi) : modelName ? toLabel(modelName) : null,\n viewName ? toLabel(viewName) : null,\n ].filter(Boolean) as string[];\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 className=\"solid-bread-crum-text-wrapper\">{crumb}</span>\n )}\n </span>\n ))}\n </nav>\n\n <AdminHeaderActions variant=\"header\" />\n </div>\n </header>\n );\n};\n"]}
1
+ {"version":3,"file":"AdminTopHeader.js","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,IAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAErD,IAAM,OAAO,GAAG,UAAC,KAAa;IAC5B,OAAA,kBAAkB,CAAC,KAAK,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,EAAE,EAAf,CAAe,CAAC;AAF3C,CAE2C,CAAC;AAE9C,MAAM,CAAC,IAAM,cAAc,GAAG;IAC5B,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,IAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IACvB,IAAA,eAAe,GAAK,UAAU,CAAC,aAAa,CAAC,gBAA9B,CAA+B;IAC9C,IAAM,OAAO,GAAK,UAAU,EAAE,KAAjB,CAAkB;IAC/B,IAAM,iBAAiB,GAAK,wBAAwB,CAAC,SAAS,CAAC,KAAxC,CAAyC;IACxE,IAAM,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;IAC3B,IAAM,OAAO,GAAG,UAAU,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,IAAM,YAAY,GAAG,WAAW,CAAC,UAAC,KAAU,gBAAK,OAAA,MAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,YAAY,mCAAI,KAAK,CAAA,EAAA,CAAC,CAAC;IAC3F,IAAM,KAAK,GAAG,GAAG,CAAC,iBAAiB,CAAC,KAAK,KAAK,CAAC;IAC/C,IAAM,WAAW,GAAG,OAAO,CAAC,cAAM,OAAA,cAAc,CAAC,iBAAiB,CAAC,EAAjC,CAAiC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC1F,IAAM,iBAAiB,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,cAAc,MAAK,IAAI,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,cAAc,MAAK,MAAM,CAAC;IAEzG,kEAAkE;IAClE,qEAAqE;IACrE,oEAAoE;IACpE,IAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,IAAM,cAAc,GAAK,0BAA0B,CAAC,QAAkB,EAAE;QAC9E,IAAI,EAAE,CAAC,QAAQ;KAChB,CAAC,KAF0B,CAEzB;IAEH,IAAM,MAAM,GAAG,OAAO,CAAC;;QACrB,uEAAuE;QACvE,IAAM,UAAU,GAAG,MAAA,MAAA,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,0CAAE,IAAI,mCAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,mCAAI,cAAc,CAAC;QACxF,IAAM,aAAa,GAAG,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,0CAAE,WAAW,MAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,0CAAE,IAAI,CAAA,CAAC;QAClF,IAAM,YAAY,GAAG,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,0CAAE,WAAW,MAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,0CAAE,IAAI,CAAA,CAAC;QAC/E,IAAM,aAAa,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,MAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAA,CAAC;QAClE,IAAM,YAAY,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,EAAE,KAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,IAAM,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,YAAY,KAAK,QAAQ,CAAC;QAE7E,4DAA4D;QAC5D,iCAAiC;QACjC,2EAA2E;QAC3E,2EAA2E;QAC3E,wCAAwC;QACxC,IAAI,qBAAqB,IAAI,CAAC,aAAa,IAAI,YAAY,IAAI,aAAa,CAAC,EAAE;YAC7E,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACrE;QAED,IAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrD,uEAAuE;QACvE,oEAAoE;QACpE,iEAAiE;QACjE,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;YACrD,IAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAM,IAAI,GAAG;gBACX,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;gBACvC,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;gBACvF,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;aACpC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;YAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACvC;QAED,IAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACtD,IAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAElD,+DAA+D;QAC/D,IAAI,YAAY,IAAI,UAAU,EAAE;YAC9B,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,OAAO,CAAC,IAAK,CAAC,EAAd,CAAc,CAAC,CAAC;SACjF;QAED,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAEvD,IAAM,QAAQ,GAAG,0CAA0C,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE3E,IAAM,cAAc,GAAG;QACrB,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,IAAM,qBAAqB,GAAG,UAAC,UAAkB;QAC/C,2FAA2F;QAC3F,0EAA0E;QAC1E,IAAI,UAAU,KAAK,CAAC,IAAI,QAAQ,EAAE;YAChC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjC,qEAAqE;gBACrE,IAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC5D,IAAI,aAAa,EAAE;oBACjB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC3B,OAAO;iBACR;aACF;YAED,4DAA4D;YAC5D,IAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;gBACrD,IAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW;oBAC5C,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,MAAM;oBAC9C,CAAC,CAAC,MAAM,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,sBAAe,UAAU,cAAI,SAAS,cAAI,QAAQ,CAAE,CAAC,CAAC;aACnE;SACF;IACH,CAAC,CAAC;IAEF,OAAO,CACL,iBAAQ,SAAS,EAAC,oBAAoB,YACpC,eAAK,SAAS,EAAC,0BAA0B,aACvC,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,6BAA6B,EACvC,OAAO,EAAE,cAAc,gBACZ,gBAAgB,YAE3B,eAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,aAC5E,eAAM,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,MAAM,EAAC,cAAc,GAAG,EAC1E,eAAM,CAAC,EAAC,WAAW,EAAC,MAAM,EAAC,cAAc,GAAG,EAC5C,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,MAAM,EAAC,cAAc,GAAG,IAC3E,GACC,EAET,cAAK,SAAS,EAAC,wBAAwB,GAAG,EAE1C,cAAK,SAAS,EAAC,yBAAyB,gBAAY,YAAY,YAC7D,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,KAAK,IAAK,OAAA,CAC5B,gBAAgC,SAAS,EAAC,mBAAmB,aAC1D,KAAK,GAAG,CAAC,IAAI,eAAM,SAAS,EAAC,uBAAuB,uBAAS,EAC7D,KAAK,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CACzB,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,wBAAwB,EAClC,OAAO,EAAE,cAAM,OAAA,qBAAqB,CAAC,KAAK,CAAC,EAA5B,CAA4B,EAC3C,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,YAE9G,KAAK,GACC,CACV,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,+BAA+B,YAAE,KAAK,GAAQ,CAC/D,KAbQ,UAAG,KAAK,cAAI,KAAK,CAAE,CAcvB,CACR,EAhB6B,CAgB7B,CAAC,GACE,EAEN,eAAK,SAAS,EAAC,4BAA4B,aACxC,OAAO,IAAI,KAAK,IAAI,CAAC,YAAY,IAAI,CACpC,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0BAA0B,EACpC,OAAO,EAAE,cAAQ,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EACvE,KAAK,EAAC,qBAAqB,gBAChB,qBAAqB,aAEhC,KAAC,iBAAiB,KAAG,EACrB,eAAM,SAAS,EAAC,4BAA4B,uBAAc,IACnD,CACV,EAEA,iBAAiB,IAAI,CACpB,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0BAA0B,EACpC,OAAO,EAAE,eAAe,gBACb,cAAc,EACzB,KAAK,EAAC,cAAc,aAEpB,eAAK,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,aAC/G,eAAM,CAAC,EAAC,4CAA4C,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,EAC1I,eAAM,CAAC,EAAC,YAAY,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,EAC1G,eAAM,CAAC,EAAC,kBAAkB,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,EAChH,eAAM,CAAC,EAAC,qBAAqB,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,EACnH,eAAM,CAAC,EAAC,qBAAqB,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,IAC/G,EACN,eAAM,SAAS,EAAC,eAAe,6BAAoB,IAC5C,CACV,EAEA,QAAQ,IAAI,CACX,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,sBAAsB,EAChC,OAAO,EAAE,cAAM,OAAA,MAAM,CAAC,IAAI,EAAE,EAAb,CAAa,gBACjB,SAAS,qBAGb,CACV,IACG,EACN,KAAC,kBAAkB,IAAC,OAAO,EAAC,QAAQ,GAAG,IACnC,GACC,CACV,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useContext, useMemo } from \"react\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useSearchParams } from \"../../hooks/useSearchParams\";\nimport { useRouter } from \"../../hooks/useRouter\";\nimport { useGetSolidActionByIdQuery } from \"../../redux/api/solidActionApi\";\nimport { useGetSolidSettingsQuery } from \"../../redux/api/solidSettingsApi\";\nimport { LayoutContext } from \"./context/layoutcontext\";\nimport { enterStudioMode } from \"../../redux/features/solidStudioSlice\";\nimport { hasAnyRole } from \"../../helpers/rolesHelper\";\nimport { getSettingsMap } from \"../../helpers/settingsPayload\";\nimport { env } from \"../../adapters/env\";\nimport { AdminHeaderActions, StudioSparkleIcon } from \"./AdminHeaderActions\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useSession } from \"@/hooks/useSession\";\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\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 { data: solidSettingsData } = useGetSolidSettingsQuery(undefined);\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 const settingsMap = useMemo(() => getSettingsMap(solidSettingsData), [solidSettingsData]);\n const isDarkModeEnabled = settingsMap?.enableDarkMode === true || settingsMap?.enableDarkMode === \"true\";\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 = [\n moduleName ? toLabel(moduleName) : null,\n modelFromApi ? decodeURIComponent(modelFromApi) : modelName ? toLabel(modelName) : null,\n viewName ? toLabel(viewName) : null,\n ].filter(Boolean) as string[];\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 className=\"solid-bread-crum-text-wrapper\">{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 aria-label=\"Enter SolidX Studio\"\n >\n <StudioSparkleIcon />\n <span className=\"solid-studio-trigger-label\">Studio</span>\n </button>\n )}\n\n {isDarkModeEnabled && (\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\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 <AdminHeaderActions variant=\"header\" />\n </div>\n </header>\n );\n};\n"]}