@solidxai/core-ui 0.1.5-beta.10 → 0.1.5-beta.12

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 (306) hide show
  1. package/dist/components/auth/GoogleAuthChecking.d.ts.map +1 -1
  2. package/dist/components/auth/GoogleAuthChecking.js +10 -10
  3. package/dist/components/auth/GoogleAuthChecking.js.map +1 -1
  4. package/dist/components/auth/GoogleAuthChecking.tsx +8 -9
  5. package/dist/components/auth/SolidChangeForcePassword.d.ts.map +1 -1
  6. package/dist/components/auth/SolidChangeForcePassword.js +9 -10
  7. package/dist/components/auth/SolidChangeForcePassword.js.map +1 -1
  8. package/dist/components/auth/SolidChangeForcePassword.tsx +6 -9
  9. package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
  10. package/dist/components/auth/SolidForgotPassword.js +8 -8
  11. package/dist/components/auth/SolidForgotPassword.js.map +1 -1
  12. package/dist/components/auth/SolidForgotPassword.tsx +6 -8
  13. package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
  14. package/dist/components/auth/SolidInitialLoginOtp.js +57 -57
  15. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  16. package/dist/components/auth/SolidInitialLoginOtp.tsx +10 -11
  17. package/dist/components/auth/SolidInitiateRegisterOtp.d.ts.map +1 -1
  18. package/dist/components/auth/SolidInitiateRegisterOtp.js +57 -57
  19. package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
  20. package/dist/components/auth/SolidInitiateRegisterOtp.tsx +10 -11
  21. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  22. package/dist/components/auth/SolidLogin.js +12 -12
  23. package/dist/components/auth/SolidLogin.js.map +1 -1
  24. package/dist/components/auth/SolidLogin.tsx +11 -16
  25. package/dist/components/auth/SolidOTPVerify.d.ts +3 -0
  26. package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -0
  27. package/dist/components/auth/SolidOTPVerify.js +67 -0
  28. package/dist/components/auth/SolidOTPVerify.js.map +1 -0
  29. package/dist/components/auth/SolidOTPVerify.tsx +133 -0
  30. package/dist/components/auth/SolidRegister.d.ts.map +1 -1
  31. package/dist/components/auth/SolidRegister.js +19 -19
  32. package/dist/components/auth/SolidRegister.js.map +1 -1
  33. package/dist/components/auth/SolidRegister.tsx +18 -23
  34. package/dist/components/auth/SolidResetPassword.d.ts.map +1 -1
  35. package/dist/components/auth/SolidResetPassword.js +15 -15
  36. package/dist/components/auth/SolidResetPassword.js.map +1 -1
  37. package/dist/components/auth/SolidResetPassword.tsx +7 -8
  38. package/dist/components/common/AuthBanner.js.map +1 -1
  39. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  40. package/dist/components/common/GeneralSettings.js +87 -120
  41. package/dist/components/common/GeneralSettings.js.map +1 -1
  42. package/dist/components/common/GeneralSettings.tsx +12 -42
  43. package/dist/components/common/GlobalToast.d.ts +2 -0
  44. package/dist/components/common/GlobalToast.d.ts.map +1 -0
  45. package/dist/components/common/GlobalToast.js +25 -0
  46. package/dist/components/common/GlobalToast.js.map +1 -0
  47. package/dist/components/common/GlobalToast.tsx +25 -0
  48. package/dist/components/common/SolidExport.d.ts.map +1 -1
  49. package/dist/components/common/SolidExport.js +19 -31
  50. package/dist/components/common/SolidExport.js.map +1 -1
  51. package/dist/components/common/SolidExport.tsx +7 -19
  52. package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
  53. package/dist/components/common/SolidFormStepper.js +41 -41
  54. package/dist/components/common/SolidFormStepper.js.map +1 -1
  55. package/dist/components/common/SolidFormStepper.tsx +5 -6
  56. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +2 -0
  57. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +1 -0
  58. package/dist/components/core/common/LoadDynamicJsxComponent.js +50 -0
  59. package/dist/components/core/common/LoadDynamicJsxComponent.js.map +1 -0
  60. package/dist/components/core/common/LoadDynamicJsxComponent.tsx +70 -0
  61. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.d.ts.map +1 -1
  62. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js +9 -9
  63. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js.map +1 -1
  64. package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.tsx +8 -9
  65. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.d.ts.map +1 -1
  66. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js +8 -8
  67. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
  68. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +7 -9
  69. package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.d.ts.map +1 -1
  70. package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.js +11 -11
  71. package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.js.map +1 -1
  72. package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.tsx +10 -11
  73. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.d.ts.map +1 -1
  74. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js +9 -9
  75. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
  76. package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +8 -9
  77. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.d.ts.map +1 -1
  78. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +7 -7
  79. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
  80. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +6 -7
  81. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  82. package/dist/components/core/common/SolidGlobalSearchElement.js +78 -21
  83. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  84. package/dist/components/core/common/SolidGlobalSearchElement.tsx +65 -10
  85. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
  86. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +6 -8
  87. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
  88. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +5 -9
  89. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.d.ts.map +1 -1
  90. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js +9 -11
  91. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js.map +1 -1
  92. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +5 -10
  93. package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.d.ts.map +1 -1
  94. package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.js +5 -6
  95. package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.js.map +1 -1
  96. package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.tsx +5 -8
  97. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.d.ts.map +1 -1
  98. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js +10 -12
  99. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js.map +1 -1
  100. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +6 -11
  101. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.d.ts.map +1 -1
  102. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +11 -6
  103. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  104. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +13 -1
  105. package/dist/components/core/form/SolidFormUserViewLayout.d.ts.map +1 -1
  106. package/dist/components/core/form/SolidFormUserViewLayout.js +7 -8
  107. package/dist/components/core/form/SolidFormUserViewLayout.js.map +1 -1
  108. package/dist/components/core/form/SolidFormUserViewLayout.tsx +5 -7
  109. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  110. package/dist/components/core/form/SolidFormView.js +12 -21
  111. package/dist/components/core/form/SolidFormView.js.map +1 -1
  112. package/dist/components/core/form/SolidFormView.tsx +11 -33
  113. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  114. package/dist/components/core/form/fields/SolidMediaSingleField.js +22 -15
  115. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  116. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +14 -2
  117. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  118. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +37 -26
  119. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  120. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +38 -5
  121. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  122. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +11 -11
  123. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  124. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +9 -11
  125. package/dist/components/core/kanban/KanbanUserViewLayout.d.ts.map +1 -1
  126. package/dist/components/core/kanban/KanbanUserViewLayout.js +7 -8
  127. package/dist/components/core/kanban/KanbanUserViewLayout.js.map +1 -1
  128. package/dist/components/core/kanban/KanbanUserViewLayout.tsx +4 -6
  129. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  130. package/dist/components/core/kanban/SolidKanbanView.js +5 -7
  131. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  132. package/dist/components/core/kanban/SolidKanbanView.tsx +4 -9
  133. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.d.ts.map +1 -1
  134. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js +13 -13
  135. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js.map +1 -1
  136. package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +5 -6
  137. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  138. package/dist/components/core/list/SolidListView.js +20 -67
  139. package/dist/components/core/list/SolidListView.js.map +1 -1
  140. package/dist/components/core/list/SolidListView.tsx +9 -76
  141. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  142. package/dist/components/core/model/CreateModel.js +15 -25
  143. package/dist/components/core/model/CreateModel.js.map +1 -1
  144. package/dist/components/core/model/CreateModel.tsx +12 -32
  145. package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
  146. package/dist/components/core/model/FieldMetaData.js +6 -17
  147. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  148. package/dist/components/core/model/FieldMetaData.tsx +5 -26
  149. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
  150. package/dist/components/core/model/ModelMetaData.js +48 -55
  151. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  152. package/dist/components/core/model/ModelMetaData.tsx +4 -22
  153. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  154. package/dist/components/core/module/CreateModule.js +42 -44
  155. package/dist/components/core/module/CreateModule.js.map +1 -1
  156. package/dist/components/core/module/CreateModule.tsx +13 -27
  157. package/dist/components/core/module/ModuleListViewData.d.ts.map +1 -1
  158. package/dist/components/core/module/ModuleListViewData.js +11 -7
  159. package/dist/components/core/module/ModuleListViewData.js.map +1 -1
  160. package/dist/components/core/module/ModuleListViewData.tsx +10 -8
  161. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  162. package/dist/components/core/tree/SolidTreeView.js +32 -69
  163. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  164. package/dist/components/core/tree/SolidTreeView.tsx +8 -47
  165. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  166. package/dist/components/core/users/CreateUser.js +24 -37
  167. package/dist/components/core/users/CreateUser.js.map +1 -1
  168. package/dist/components/core/users/CreateUser.tsx +8 -46
  169. package/dist/components/core/users/UserListView.d.ts.map +1 -1
  170. package/dist/components/core/users/UserListView.js +9 -16
  171. package/dist/components/core/users/UserListView.js.map +1 -1
  172. package/dist/components/core/users/UserListView.tsx +5 -21
  173. package/dist/components/layout/AdminLayout.d.ts.map +1 -1
  174. package/dist/components/layout/AdminLayout.js +4 -2
  175. package/dist/components/layout/AdminLayout.js.map +1 -1
  176. package/dist/components/layout/AdminLayout.tsx +4 -2
  177. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  178. package/dist/components/layout/AppSidebar.js +1 -2
  179. package/dist/components/layout/AppSidebar.js.map +1 -1
  180. package/dist/components/layout/AppSidebar.tsx +0 -2
  181. package/dist/components/layout/Layout.d.ts.map +1 -1
  182. package/dist/components/layout/Layout.js +2 -1
  183. package/dist/components/layout/Layout.js.map +1 -1
  184. package/dist/components/layout/Layout.tsx +2 -0
  185. package/dist/components/layout/navbar-one.d.ts.map +1 -1
  186. package/dist/components/layout/navbar-one.js +1 -2
  187. package/dist/components/layout/navbar-one.js.map +1 -1
  188. package/dist/components/layout/navbar-one.tsx +0 -2
  189. package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
  190. package/dist/components/layout/navbar-two-menu.js +50 -24
  191. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  192. package/dist/components/layout/navbar-two-menu.tsx +48 -30
  193. package/dist/index.d.ts +4 -0
  194. package/dist/index.d.ts.map +1 -1
  195. package/dist/index.js +3 -0
  196. package/dist/index.js.map +1 -1
  197. package/dist/index.ts +4 -0
  198. package/dist/nextAuth/authProviders.d.ts +4 -0
  199. package/dist/nextAuth/authProviders.d.ts.map +1 -0
  200. package/dist/nextAuth/authProviders.js +198 -0
  201. package/dist/nextAuth/authProviders.js.map +1 -0
  202. package/dist/nextAuth/authProviders.tsx +232 -0
  203. package/dist/nextAuth/handleLogout.d.ts +2 -0
  204. package/dist/nextAuth/handleLogout.d.ts.map +1 -0
  205. package/dist/nextAuth/handleLogout.js +36 -0
  206. package/dist/nextAuth/handleLogout.js.map +1 -0
  207. package/dist/nextAuth/handleLogout.tsx +39 -0
  208. package/dist/nextAuth/refreshAccessToken.d.ts +2 -0
  209. package/dist/nextAuth/refreshAccessToken.d.ts.map +1 -0
  210. package/dist/nextAuth/refreshAccessToken.js +24 -0
  211. package/dist/nextAuth/refreshAccessToken.js.map +1 -0
  212. package/dist/nextAuth/refreshAccessToken.tsx +28 -0
  213. package/dist/redux/features/settingsSlice.d.ts +20 -0
  214. package/dist/redux/features/settingsSlice.d.ts.map +1 -0
  215. package/dist/redux/features/settingsSlice.js +39 -0
  216. package/dist/redux/features/settingsSlice.js.map +1 -0
  217. package/dist/redux/features/settingsSlice.ts +60 -0
  218. package/dist/redux/features/toastSlice.d.ts +15 -0
  219. package/dist/redux/features/toastSlice.d.ts.map +1 -0
  220. package/dist/redux/features/toastSlice.js +20 -0
  221. package/dist/redux/features/toastSlice.js.map +1 -0
  222. package/dist/redux/features/toastSlice.ts +35 -0
  223. package/dist/redux/store/defaultStoreConfig.d.ts +1 -0
  224. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  225. package/dist/redux/store/defaultStoreConfig.js +2 -1
  226. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  227. package/dist/redux/store/defaultStoreConfig.ts +2 -0
  228. package/package.json +1 -1
  229. package/dist/components/auth/AuthTabs.d.ts +0 -14
  230. package/dist/components/auth/AuthTabs.d.ts.map +0 -1
  231. package/dist/components/auth/AuthTabs.js +0 -19
  232. package/dist/components/auth/AuthTabs.js.map +0 -1
  233. package/dist/components/auth/AuthTabs.tsx +0 -38
  234. package/dist/components/common/SolidErrorStatePage.d.ts +0 -12
  235. package/dist/components/common/SolidErrorStatePage.d.ts.map +0 -1
  236. package/dist/components/common/SolidErrorStatePage.js +0 -16
  237. package/dist/components/common/SolidErrorStatePage.js.map +0 -1
  238. package/dist/components/common/SolidErrorStatePage.tsx +0 -55
  239. package/dist/components/core/list/PLAN.md +0 -92
  240. package/dist/components/core/list/SolidDataTable.d.ts +0 -58
  241. package/dist/components/core/list/SolidDataTable.d.ts.map +0 -1
  242. package/dist/components/core/list/SolidDataTable.js +0 -141
  243. package/dist/components/core/list/SolidDataTable.js.map +0 -1
  244. package/dist/components/core/list/SolidDataTable.tsx +0 -314
  245. package/dist/components/core/list/SolidDataTablePagination.d.ts +0 -15
  246. package/dist/components/core/list/SolidDataTablePagination.d.ts.map +0 -1
  247. package/dist/components/core/list/SolidDataTablePagination.js +0 -22
  248. package/dist/components/core/list/SolidDataTablePagination.js.map +0 -1
  249. package/dist/components/core/list/SolidDataTablePagination.tsx +0 -71
  250. package/dist/components/layout/AdminTopHeader.d.ts +0 -2
  251. package/dist/components/layout/AdminTopHeader.d.ts.map +0 -1
  252. package/dist/components/layout/AdminTopHeader.js +0 -68
  253. package/dist/components/layout/AdminTopHeader.js.map +0 -1
  254. package/dist/components/layout/AdminTopHeader.tsx +0 -135
  255. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts +0 -24
  256. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +0 -1
  257. package/dist/components/shad-cn-ui/SolidAutocomplete.js +0 -224
  258. package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +0 -1
  259. package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +0 -339
  260. package/dist/components/shad-cn-ui/SolidButton.d.ts +0 -14
  261. package/dist/components/shad-cn-ui/SolidButton.d.ts.map +0 -1
  262. package/dist/components/shad-cn-ui/SolidButton.js +0 -36
  263. package/dist/components/shad-cn-ui/SolidButton.js.map +0 -1
  264. package/dist/components/shad-cn-ui/SolidButton.tsx +0 -54
  265. package/dist/components/shad-cn-ui/SolidInput.d.ts +0 -5
  266. package/dist/components/shad-cn-ui/SolidInput.d.ts.map +0 -1
  267. package/dist/components/shad-cn-ui/SolidInput.js +0 -35
  268. package/dist/components/shad-cn-ui/SolidInput.js.map +0 -1
  269. package/dist/components/shad-cn-ui/SolidInput.tsx +0 -12
  270. package/dist/components/shad-cn-ui/SolidNumberInput.d.ts +0 -10
  271. package/dist/components/shad-cn-ui/SolidNumberInput.d.ts.map +0 -1
  272. package/dist/components/shad-cn-ui/SolidNumberInput.js +0 -33
  273. package/dist/components/shad-cn-ui/SolidNumberInput.js.map +0 -1
  274. package/dist/components/shad-cn-ui/SolidNumberInput.tsx +0 -24
  275. package/dist/components/shad-cn-ui/SolidSelect.d.ts +0 -16
  276. package/dist/components/shad-cn-ui/SolidSelect.d.ts.map +0 -1
  277. package/dist/components/shad-cn-ui/SolidSelect.js +0 -26
  278. package/dist/components/shad-cn-ui/SolidSelect.js.map +0 -1
  279. package/dist/components/shad-cn-ui/SolidSelect.tsx +0 -65
  280. package/dist/components/shad-cn-ui/SolidTabs.d.ts +0 -18
  281. package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +0 -1
  282. package/dist/components/shad-cn-ui/SolidTabs.js +0 -22
  283. package/dist/components/shad-cn-ui/SolidTabs.js.map +0 -1
  284. package/dist/components/shad-cn-ui/SolidTabs.tsx +0 -73
  285. package/dist/components/shad-cn-ui/index.d.ts +0 -7
  286. package/dist/components/shad-cn-ui/index.d.ts.map +0 -1
  287. package/dist/components/shad-cn-ui/index.js +0 -7
  288. package/dist/components/shad-cn-ui/index.js.map +0 -1
  289. package/dist/components/shad-cn-ui/index.ts +0 -6
  290. package/dist/components/solid-ui/SolidButton.d.ts +0 -14
  291. package/dist/components/solid-ui/SolidButton.d.ts.map +0 -1
  292. package/dist/components/solid-ui/SolidButton.js +0 -36
  293. package/dist/components/solid-ui/SolidButton.js.map +0 -1
  294. package/dist/components/solid-ui/SolidButton.tsx +0 -54
  295. package/dist/components/solid-ui/SolidTabs.d.ts +0 -18
  296. package/dist/components/solid-ui/SolidTabs.d.ts.map +0 -1
  297. package/dist/components/solid-ui/SolidTabs.js +0 -22
  298. package/dist/components/solid-ui/SolidTabs.js.map +0 -1
  299. package/dist/components/solid-ui/SolidTabs.tsx +0 -73
  300. package/dist/components/solid-ui/index.d.ts +0 -3
  301. package/dist/components/solid-ui/index.d.ts.map +0 -1
  302. package/dist/components/solid-ui/index.js +0 -3
  303. package/dist/components/solid-ui/index.js.map +0 -1
  304. package/dist/components/solid-ui/index.ts +0 -2
  305. package/dist/resources/images/errors/error-astronaut-404.png +0 -0
  306. package/dist/resources/shadcn-base.css +0 -3200
@@ -1,314 +0,0 @@
1
- import React from "react";
2
-
3
- export type DataTableStateEvent = {
4
- sortField?: string;
5
- sortOrder?: 1 | -1 | 0;
6
- };
7
-
8
- type HeaderRenderer = React.ReactNode | (() => React.ReactNode);
9
- type BodyRenderer = (rowData: any) => React.ReactNode;
10
-
11
- export type SolidColumnProps = {
12
- field?: string;
13
- header?: HeaderRenderer;
14
- body?: BodyRenderer;
15
- sortable?: boolean;
16
- selectionMode?: "multiple" | "single" | null;
17
- headerStyle?: React.CSSProperties;
18
- style?: React.CSSProperties;
19
- className?: string;
20
- headerClassName?: string;
21
- frozen?: boolean;
22
- alignFrozen?: "left" | "right";
23
- [key: string]: any;
24
- };
25
-
26
- export function Column(_props: SolidColumnProps) {
27
- return null;
28
- }
29
-
30
- type SolidDataTableProps = {
31
- value: any[];
32
- children: React.ReactNode;
33
- size?: "small" | "normal" | "large";
34
- viewportHeight?: string;
35
- dataKey?: string;
36
- emptyMessage?: React.ReactNode;
37
- rows?: number;
38
- first?: number;
39
- totalRecords?: number;
40
- rowsPerPageOptions?: number[];
41
- onPage?: (event: { first: number; rows: number }) => void;
42
- onSort?: (event: DataTableStateEvent) => void;
43
- sortField?: string;
44
- sortOrder?: 1 | -1 | 0;
45
- removableSort?: boolean;
46
- selection?: any[];
47
- selectionMode?: "checkbox" | null;
48
- onSelectionChange?: (event: { value: any[] }) => void;
49
- onRowClick?: (event: { data: any }) => void;
50
- rowClassName?: (rowData: any) => string;
51
- tableClassName?: string;
52
- paginatorClassName?: string;
53
- currentPageReportTemplate?: string;
54
- [key: string]: any;
55
- };
56
-
57
- const cx = (...parts: Array<string | undefined | false>) => parts.filter(Boolean).join(" ");
58
-
59
- function renderHeaderNode(header?: HeaderRenderer) {
60
- if (typeof header === "function") return header();
61
- return header ?? null;
62
- }
63
-
64
- function normalizeColumns(children: React.ReactNode): React.ReactElement<SolidColumnProps>[] {
65
- return React.Children.toArray(children).filter((child): child is React.ReactElement<SolidColumnProps> => {
66
- return React.isValidElement(child);
67
- });
68
- }
69
-
70
- function resolveSortIcon(active: boolean, order: 1 | -1 | 0): string {
71
- if (!active || order === 0) return "pi pi-sort-alt";
72
- return order === 1 ? "pi pi-sort-amount-up-alt" : "pi pi-sort-amount-down";
73
- }
74
-
75
- function nextSortOrder(active: boolean, order: 1 | -1 | 0, removableSort = true): 1 | -1 | 0 {
76
- if (!active || order === 0) return 1;
77
- if (order === 1) return -1;
78
- return removableSort ? 0 : 1;
79
- }
80
-
81
- export function SolidDataTable({
82
- value,
83
- children,
84
- size = "normal",
85
- viewportHeight,
86
- dataKey = "id",
87
- emptyMessage,
88
- rows = 25,
89
- first = 0,
90
- totalRecords = 0,
91
- rowsPerPageOptions = [10, 25, 50, 100],
92
- onPage,
93
- onSort,
94
- sortField,
95
- sortOrder = 0,
96
- removableSort = true,
97
- selection = [],
98
- selectionMode,
99
- onSelectionChange,
100
- onRowClick,
101
- rowClassName,
102
- tableClassName,
103
- paginatorClassName,
104
- currentPageReportTemplate = "{first} - {last} of {totalRecords}",
105
- }: SolidDataTableProps) {
106
- const columns = normalizeColumns(children);
107
- const pageRows = value ?? [];
108
-
109
- const selectedKeys = new Set((selection || []).map((row: any) => String(row?.[dataKey])));
110
- const allSelected = pageRows.length > 0 && pageRows.every((row: any) => selectedKeys.has(String(row?.[dataKey])));
111
-
112
- const start = totalRecords === 0 ? 0 : first + 1;
113
- const end = Math.min(first + rows, totalRecords);
114
- const currentPage = rows > 0 ? Math.floor(first / rows) + 1 : 1;
115
- const totalPages = rows > 0 ? Math.max(1, Math.ceil(totalRecords / rows)) : 1;
116
-
117
- const report = currentPageReportTemplate
118
- .replace("{first}", String(start))
119
- .replace("{last}", String(end))
120
- .replace("{totalRecords}", String(totalRecords));
121
-
122
- const emitSelection = (nextSelection: any[]) => {
123
- onSelectionChange?.({ value: nextSelection });
124
- };
125
-
126
- const toggleSelectAll = (checked: boolean) => {
127
- if (!checked) {
128
- const pageKeys = new Set(pageRows.map((row: any) => String(row?.[dataKey])));
129
- emitSelection((selection || []).filter((row: any) => !pageKeys.has(String(row?.[dataKey]))));
130
- return;
131
- }
132
- const merged = [...(selection || [])];
133
- const mergedKeys = new Set(merged.map((row: any) => String(row?.[dataKey])));
134
- pageRows.forEach((row: any) => {
135
- const key = String(row?.[dataKey]);
136
- if (!mergedKeys.has(key)) merged.push(row);
137
- });
138
- emitSelection(merged);
139
- };
140
-
141
- const toggleRowSelection = (rowData: any, checked: boolean) => {
142
- const key = String(rowData?.[dataKey]);
143
- if (!checked) {
144
- emitSelection((selection || []).filter((row: any) => String(row?.[dataKey]) !== key));
145
- return;
146
- }
147
- emitSelection([...(selection || []), rowData]);
148
- };
149
-
150
- const densityClass =
151
- size === "small"
152
- ? "solid-table-density-compact"
153
- : size === "large"
154
- ? "solid-table-density-comfortable"
155
- : "solid-table-density-cozy";
156
-
157
- return (
158
- <div
159
- className={cx("solid-data-table-root w-full min-h-0", densityClass)}
160
- style={{
161
- height: viewportHeight || "100%",
162
- maxHeight: viewportHeight || "100%",
163
- }}
164
- >
165
- <div className="solid-data-table-viewport min-h-0 rounded-md border border-border/60 bg-background">
166
- <table className={cx("w-full text-sm border-collapse", tableClassName)}>
167
- <thead className="solid-data-table-head sticky top-0 z-2">
168
- <tr>
169
- {columns.map((column, index) => {
170
- const props = column.props;
171
- const isSelectionColumn = props.selectionMode === "multiple";
172
- const isSortable = Boolean(props.sortable && props.field && !isSelectionColumn);
173
- const isActiveSort = isSortable && sortField === props.field;
174
- const iconClass = resolveSortIcon(Boolean(isActiveSort), sortOrder);
175
- return (
176
- <th
177
- key={`header-${index}`}
178
- className={cx(
179
- "solid-data-table-th text-left text-foreground whitespace-nowrap",
180
- isSelectionColumn ? "solid-data-table-selection-col" : undefined,
181
- props.headerClassName
182
- )}
183
- style={{ ...props.style, ...props.headerStyle }}
184
- >
185
- {isSelectionColumn ? (
186
- <input
187
- type="checkbox"
188
- checked={allSelected}
189
- onChange={(e) => toggleSelectAll(e.currentTarget.checked)}
190
- aria-label="Select all rows"
191
- />
192
- ) : (
193
- <button
194
- type="button"
195
- className={cx("solid-table-header-button", isSortable ? "is-sortable" : undefined)}
196
- onClick={() => {
197
- if (!isSortable) return;
198
- const nextOrder = nextSortOrder(Boolean(isActiveSort), sortOrder, removableSort);
199
- onSort?.({
200
- sortField: nextOrder === 0 ? undefined : props.field,
201
- sortOrder: nextOrder,
202
- });
203
- }}
204
- >
205
- {renderHeaderNode(props.header)}
206
- {isSortable ? <i className={iconClass} aria-hidden="true" /> : null}
207
- </button>
208
- )}
209
- </th>
210
- );
211
- })}
212
- </tr>
213
- </thead>
214
- <tbody>
215
- {pageRows.length === 0 ? (
216
- <tr>
217
- <td className="px-3 py-6 text-center text-muted-foreground" colSpan={Math.max(columns.length, 1)}>
218
- {emptyMessage || "No records found"}
219
- </td>
220
- </tr>
221
- ) : (
222
- pageRows.map((rowData: any) => {
223
- const key = String(rowData?.[dataKey]);
224
- const rowSelected = selectedKeys.has(key);
225
- return (
226
- <tr
227
- key={key}
228
- className={cx("solid-data-table-row", rowClassName?.(rowData))}
229
- onClick={(event) => {
230
- const target = event.target as HTMLElement;
231
- if (target.closest("button,a,input,label,[data-no-row-click='true']")) return;
232
- onRowClick?.({ data: rowData });
233
- }}
234
- >
235
- {columns.map((column, index) => {
236
- const props = column.props;
237
- const isSelectionColumn = props.selectionMode === "multiple";
238
- const content = isSelectionColumn
239
- ? (
240
- <input
241
- type="checkbox"
242
- checked={rowSelected}
243
- onChange={(e) => toggleRowSelection(rowData, e.currentTarget.checked)}
244
- onClick={(e) => e.stopPropagation()}
245
- aria-label="Select row"
246
- />
247
- )
248
- : props.body
249
- ? props.body(rowData)
250
- : props.field
251
- ? rowData?.[props.field]
252
- : null;
253
- return (
254
- <td
255
- key={`cell-${key}-${index}`}
256
- className={cx(
257
- "solid-data-table-td align-top text-foreground",
258
- isSelectionColumn ? "solid-data-table-selection-col" : undefined,
259
- props.className
260
- )}
261
- style={props.style}
262
- >
263
- {content}
264
- </td>
265
- );
266
- })}
267
- </tr>
268
- );
269
- })
270
- )}
271
- </tbody>
272
- </table>
273
- </div>
274
-
275
- {typeof onPage === "function" ? (
276
- <div
277
- className={cx("w-full solid-table-paginator solid-table-paginator-align-end flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background", paginatorClassName)}
278
- >
279
- <div className="solid-paginator-meta flex items-center gap-2 ml-auto">
280
- <span className="solid-paginator-label">Rows</span>
281
- <select
282
- value={rows}
283
- onChange={(e) => onPage({ first: 0, rows: Number(e.target.value) })}
284
- className="solid-paginator-select"
285
- >
286
- {rowsPerPageOptions.map((option) => (
287
- <option key={option} value={option}>{option}</option>
288
- ))}
289
- </select>
290
- <span className="solid-paginator-report">{report}</span>
291
- </div>
292
- <div className="solid-paginator-actions flex items-center gap-2">
293
- <button
294
- type="button"
295
- className="solid-paginator-btn"
296
- onClick={() => onPage({ first: Math.max(0, first - rows), rows })}
297
- disabled={currentPage <= 1}
298
- >
299
- Previous
300
- </button>
301
- <button
302
- type="button"
303
- className="solid-paginator-btn"
304
- onClick={() => onPage({ first: Math.min((totalPages - 1) * rows, first + rows), rows })}
305
- disabled={currentPage >= totalPages}
306
- >
307
- Next
308
- </button>
309
- </div>
310
- </div>
311
- ) : null}
312
- </div>
313
- );
314
- }
@@ -1,15 +0,0 @@
1
- type SolidDataTablePaginationProps = {
2
- rows: number;
3
- first: number;
4
- totalRecords: number;
5
- rowsPerPageOptions?: number[];
6
- onPage: (event: {
7
- first: number;
8
- rows: number;
9
- }) => void;
10
- currentPageReportTemplate?: string;
11
- className?: string;
12
- };
13
- export declare function SolidDataTablePagination({ rows, first, totalRecords, rowsPerPageOptions, onPage, currentPageReportTemplate, className, }: SolidDataTablePaginationProps): import("react/jsx-runtime").JSX.Element;
14
- export {};
15
- //# sourceMappingURL=SolidDataTablePagination.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SolidDataTablePagination.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidDataTablePagination.tsx"],"names":[],"mappings":"AAEA,KAAK,6BAA6B,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACzD,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,kBAAsC,EACtC,MAAM,EACN,yBAAgE,EAChE,SAAS,GACV,EAAE,6BAA6B,2CA+C/B"}
@@ -1,22 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- var cx = function () {
3
- var parts = [];
4
- for (var _i = 0; _i < arguments.length; _i++) {
5
- parts[_i] = arguments[_i];
6
- }
7
- return parts.filter(Boolean).join(" ");
8
- };
9
- export function SolidDataTablePagination(_a) {
10
- var rows = _a.rows, first = _a.first, totalRecords = _a.totalRecords, _b = _a.rowsPerPageOptions, rowsPerPageOptions = _b === void 0 ? [10, 25, 50, 100] : _b, onPage = _a.onPage, _c = _a.currentPageReportTemplate, currentPageReportTemplate = _c === void 0 ? "{first} - {last} of {totalRecords}" : _c, className = _a.className;
11
- var safeRows = rows > 0 ? rows : 25;
12
- var start = totalRecords === 0 ? 0 : first + 1;
13
- var end = Math.min(first + safeRows, totalRecords);
14
- var currentPage = Math.floor(first / safeRows) + 1;
15
- var totalPages = Math.max(1, Math.ceil(totalRecords / safeRows));
16
- var report = currentPageReportTemplate
17
- .replace("{first}", String(start))
18
- .replace("{last}", String(end))
19
- .replace("{totalRecords}", String(totalRecords));
20
- return (_jsxs("div", { className: cx("w-full solid-table-paginator flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background", className), children: [_jsxs("div", { className: "solid-paginator-meta flex items-center gap-2 ml-auto", children: [_jsx("span", { className: "solid-paginator-label", children: "Rows" }), _jsx("select", { value: safeRows, onChange: function (e) { return onPage({ first: 0, rows: Number(e.target.value) }); }, className: "solid-paginator-select", children: rowsPerPageOptions.map(function (option) { return (_jsx("option", { value: option, children: option }, option)); }) }), _jsx("span", { className: "solid-paginator-report", children: report })] }), _jsxs("div", { className: "solid-paginator-actions flex items-center gap-2", children: [_jsx("button", { type: "button", className: "solid-paginator-btn", onClick: function () { return onPage({ first: Math.max(0, first - safeRows), rows: safeRows }); }, disabled: currentPage <= 1, children: "Previous" }), _jsx("button", { type: "button", className: "solid-paginator-btn", onClick: function () { return onPage({ first: Math.min((totalPages - 1) * safeRows, first + safeRows), rows: safeRows }); }, disabled: currentPage >= totalPages, children: "Next" })] })] }));
21
- }
22
- //# sourceMappingURL=SolidDataTablePagination.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SolidDataTablePagination.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidDataTablePagination.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\ntype SolidDataTablePaginationProps = {\n rows: number;\n first: number;\n totalRecords: number;\n rowsPerPageOptions?: number[];\n onPage: (event: { first: number; rows: number }) => void;\n currentPageReportTemplate?: string;\n className?: string;\n};\n\nconst cx = (...parts: Array<string | undefined | false>) => parts.filter(Boolean).join(\" \");\n\nexport function SolidDataTablePagination({\n rows,\n first,\n totalRecords,\n rowsPerPageOptions = [10, 25, 50, 100],\n onPage,\n currentPageReportTemplate = \"{first} - {last} of {totalRecords}\",\n className,\n}: SolidDataTablePaginationProps) {\n const safeRows = rows > 0 ? rows : 25;\n const start = totalRecords === 0 ? 0 : first + 1;\n const end = Math.min(first + safeRows, totalRecords);\n const currentPage = Math.floor(first / safeRows) + 1;\n const totalPages = Math.max(1, Math.ceil(totalRecords / safeRows));\n\n const report = currentPageReportTemplate\n .replace(\"{first}\", String(start))\n .replace(\"{last}\", String(end))\n .replace(\"{totalRecords}\", String(totalRecords));\n\n return (\n <div className={cx(\"w-full solid-table-paginator flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background\", className)}>\n <div className=\"solid-paginator-meta flex items-center gap-2 ml-auto\">\n <span className=\"solid-paginator-label\">Rows</span>\n <select\n value={safeRows}\n onChange={(e) => onPage({ first: 0, rows: Number(e.target.value) })}\n className=\"solid-paginator-select\"\n >\n {rowsPerPageOptions.map((option) => (\n <option key={option} value={option}>{option}</option>\n ))}\n </select>\n <span className=\"solid-paginator-report\">{report}</span>\n </div>\n <div className=\"solid-paginator-actions flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => onPage({ first: Math.max(0, first - safeRows), rows: safeRows })}\n disabled={currentPage <= 1}\n >\n Previous\n </button>\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => onPage({ first: Math.min((totalPages - 1) * safeRows, first + safeRows), rows: safeRows })}\n disabled={currentPage >= totalPages}\n >\n Next\n </button>\n </div>\n </div>\n );\n}\n\n"]}
@@ -1,71 +0,0 @@
1
- import React from "react";
2
-
3
- type SolidDataTablePaginationProps = {
4
- rows: number;
5
- first: number;
6
- totalRecords: number;
7
- rowsPerPageOptions?: number[];
8
- onPage: (event: { first: number; rows: number }) => void;
9
- currentPageReportTemplate?: string;
10
- className?: string;
11
- };
12
-
13
- const cx = (...parts: Array<string | undefined | false>) => parts.filter(Boolean).join(" ");
14
-
15
- export function SolidDataTablePagination({
16
- rows,
17
- first,
18
- totalRecords,
19
- rowsPerPageOptions = [10, 25, 50, 100],
20
- onPage,
21
- currentPageReportTemplate = "{first} - {last} of {totalRecords}",
22
- className,
23
- }: SolidDataTablePaginationProps) {
24
- const safeRows = rows > 0 ? rows : 25;
25
- const start = totalRecords === 0 ? 0 : first + 1;
26
- const end = Math.min(first + safeRows, totalRecords);
27
- const currentPage = Math.floor(first / safeRows) + 1;
28
- const totalPages = Math.max(1, Math.ceil(totalRecords / safeRows));
29
-
30
- const report = currentPageReportTemplate
31
- .replace("{first}", String(start))
32
- .replace("{last}", String(end))
33
- .replace("{totalRecords}", String(totalRecords));
34
-
35
- return (
36
- <div className={cx("w-full solid-table-paginator flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background", className)}>
37
- <div className="solid-paginator-meta flex items-center gap-2 ml-auto">
38
- <span className="solid-paginator-label">Rows</span>
39
- <select
40
- value={safeRows}
41
- onChange={(e) => onPage({ first: 0, rows: Number(e.target.value) })}
42
- className="solid-paginator-select"
43
- >
44
- {rowsPerPageOptions.map((option) => (
45
- <option key={option} value={option}>{option}</option>
46
- ))}
47
- </select>
48
- <span className="solid-paginator-report">{report}</span>
49
- </div>
50
- <div className="solid-paginator-actions flex items-center gap-2">
51
- <button
52
- type="button"
53
- className="solid-paginator-btn"
54
- onClick={() => onPage({ first: Math.max(0, first - safeRows), rows: safeRows })}
55
- disabled={currentPage <= 1}
56
- >
57
- Previous
58
- </button>
59
- <button
60
- type="button"
61
- className="solid-paginator-btn"
62
- onClick={() => onPage({ first: Math.min((totalPages - 1) * safeRows, first + safeRows), rows: safeRows })}
63
- disabled={currentPage >= totalPages}
64
- >
65
- Next
66
- </button>
67
- </div>
68
- </div>
69
- );
70
- }
71
-
@@ -1,2 +0,0 @@
1
- export declare const AdminTopHeader: () => import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=AdminTopHeader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdminTopHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"AAcA,eAAO,MAAM,cAAc,+CAwH1B,CAAC"}
@@ -1,68 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useContext, useMemo } from "react";
3
- import { usePathname } from "../../hooks/usePathname";
4
- import { useSearchParams } from "../../hooks/useSearchParams";
5
- import { useRouter } from "../../hooks/useRouter";
6
- import { useGetSolidActionByIdQuery } from "../../redux/api/solidActionApi";
7
- import { LayoutContext } from "./context/layoutcontext";
8
- var SIDEBAR_TOGGLE_EVENT = "solidx:sidebar-toggle";
9
- var toLabel = function (value) {
10
- return decodeURIComponent(value)
11
- .replace(/[-_]/g, " ")
12
- .replace(/\b\w/g, function (m) { return m.toUpperCase(); });
13
- };
14
- export var AdminTopHeader = function () {
15
- var pathname = usePathname();
16
- var searchParams = useSearchParams();
17
- var router = useRouter();
18
- var toggleThemeMode = useContext(LayoutContext).toggleThemeMode;
19
- // We treat actionId as the source of truth for breadcrumb labels.
20
- // If present, we resolve module/model/action via action-metadata API
21
- // so breadcrumbs are consistent across list/form/tree/kanban pages.
22
- var actionId = searchParams.get("actionId");
23
- var actionResponse = useGetSolidActionByIdQuery(actionId, {
24
- skip: !actionId,
25
- }).data;
26
- var crumbs = useMemo(function () {
27
- var _a, _b, _c, _d, _e, _f, _g;
28
- // API response shapes vary by adapter layer, so normalize defensively.
29
- var actionData = (_c = (_b = (_a = actionResponse === null || actionResponse === void 0 ? void 0 : actionResponse.data) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : actionResponse === null || actionResponse === void 0 ? void 0 : actionResponse.data) !== null && _c !== void 0 ? _c : actionResponse;
30
- var moduleFromApi = ((_d = actionData === null || actionData === void 0 ? void 0 : actionData.module) === null || _d === void 0 ? void 0 : _d.displayName) || ((_e = actionData === null || actionData === void 0 ? void 0 : actionData.module) === null || _e === void 0 ? void 0 : _e.name);
31
- var modelFromApi = ((_f = actionData === null || actionData === void 0 ? void 0 : actionData.model) === null || _f === void 0 ? void 0 : _f.displayName) || ((_g = actionData === null || actionData === void 0 ? void 0 : actionData.model) === null || _g === void 0 ? void 0 : _g.name);
32
- var actionFromApi = (actionData === null || actionData === void 0 ? void 0 : actionData.displayName) || (actionData === null || actionData === void 0 ? void 0 : actionData.name);
33
- var actionDataId = (actionData === null || actionData === void 0 ? void 0 : actionData.id) != null ? String(actionData.id) : null;
34
- var hasMatchingActionData = Boolean(actionId) && actionDataId === actionId;
35
- // Priority 1: exact business breadcrumb contract requested:
36
- // <module> > <model> > <action>.
37
- // We only trust API crumbs when they belong to the current URL's actionId.
38
- // This avoids stale list breadcrumbs bleeding into form routes that do not
39
- // carry actionId in their query string.
40
- if (hasMatchingActionData && (moduleFromApi || modelFromApi || actionFromApi)) {
41
- return [moduleFromApi, modelFromApi, actionFromApi].filter(Boolean);
42
- }
43
- var segments = pathname.split("/").filter(Boolean);
44
- // Priority 2: derive from route segments when API data is unavailable.
45
- // This is intentionally ahead of query fallback so form pages don't
46
- // inherit stale list query labels after list -> form navigation.
47
- if (segments[0] === "admin" && segments[1] === "core") {
48
- var moduleName = segments[2];
49
- var modelName = segments[3];
50
- var viewName = segments[4];
51
- var next = [moduleName, modelName, viewName].filter(Boolean).map(function (item) { return toLabel(item); });
52
- return next.length ? next : ["Admin"];
53
- }
54
- var menuItemName = searchParams.get("menuItemName");
55
- var actionName = searchParams.get("actionName");
56
- // Priority 3: legacy URL-query fallback for older links/pages.
57
- if (menuItemName || actionName) {
58
- return [menuItemName, actionName].filter(Boolean).map(function (item) { return toLabel(item); });
59
- }
60
- return ["Admin"];
61
- }, [actionId, actionResponse, pathname, searchParams]);
62
- var showBack = /\/admin\/core\/[^/]+\/[^/]+\/form\/[^/]+/.test(pathname);
63
- var triggerSidebar = function () {
64
- window.dispatchEvent(new CustomEvent(SIDEBAR_TOGGLE_EVENT));
65
- };
66
- return (_jsx("header", { className: "solid-admin-header", children: _jsxs("div", { className: "solid-admin-header-inner", children: [_jsx("button", { type: "button", className: "solid-admin-sidebar-trigger", onClick: triggerSidebar, "aria-label": "Toggle sidebar", children: _jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [_jsx("rect", { x: "1.5", y: "2", width: "13", height: "12", rx: "2", stroke: "currentColor" }), _jsx("path", { d: "M5.5 2V14", stroke: "currentColor" }), _jsx("rect", { x: "8", y: "5.25", width: "4.5", height: "5.5", rx: "0.9", stroke: "currentColor" })] }) }), _jsx("div", { className: "solid-admin-header-sep" }), _jsx("nav", { className: "solid-admin-breadcrumbs", "aria-label": "Breadcrumb", children: crumbs.map(function (crumb, index) { return (_jsxs("span", { className: "solid-admin-crumb", children: [index > 0 && _jsx("span", { className: "solid-admin-crumb-sep", children: "\u203A" }), _jsx("span", { children: crumb })] }, "".concat(crumb, "-").concat(index))); }) }), _jsxs("div", { className: "solid-admin-header-actions", children: [_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" }))] })] }) }));
67
- };
68
- //# sourceMappingURL=AdminTopHeader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdminTopHeader.js","sourceRoot":"","sources":["../../../src/components/layout/AdminTopHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useMemo } from \"react\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useSearchParams } from \"../../hooks/useSearchParams\";\nimport { useRouter } from \"../../hooks/useRouter\";\nimport { useGetSolidActionByIdQuery } from \"../../redux/api/solidActionApi\";\nimport { LayoutContext } from \"./context/layoutcontext\";\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 { toggleThemeMode } = useContext(LayoutContext);\n\n // We treat actionId as the source of truth for breadcrumb labels.\n // If present, we resolve module/model/action via action-metadata API\n // so breadcrumbs are consistent across list/form/tree/kanban pages.\n const actionId = searchParams.get(\"actionId\");\n const { data: actionResponse } = useGetSolidActionByIdQuery(actionId as string, {\n skip: !actionId,\n });\n\n const crumbs = useMemo(() => {\n // API response shapes vary by adapter layer, so normalize defensively.\n const actionData = actionResponse?.data?.data ?? actionResponse?.data ?? actionResponse;\n const moduleFromApi = actionData?.module?.displayName || actionData?.module?.name;\n const modelFromApi = actionData?.model?.displayName || actionData?.model?.name;\n const actionFromApi = actionData?.displayName || actionData?.name;\n const actionDataId = actionData?.id != null ? String(actionData.id) : null;\n const hasMatchingActionData = Boolean(actionId) && actionDataId === actionId;\n\n // Priority 1: exact business breadcrumb contract requested:\n // <module> > <model> > <action>.\n // We only trust API crumbs when they belong to the current URL's actionId.\n // This avoids stale list breadcrumbs bleeding into form routes that do not\n // carry actionId in their query string.\n if (hasMatchingActionData && (moduleFromApi || modelFromApi || actionFromApi)) {\n return [moduleFromApi, modelFromApi, actionFromApi].filter(Boolean);\n }\n\n const segments = pathname.split(\"/\").filter(Boolean);\n // Priority 2: derive from route segments when API data is unavailable.\n // This is intentionally ahead of query fallback so form pages don't\n // inherit stale list query labels after list -> form navigation.\n if (segments[0] === \"admin\" && segments[1] === \"core\") {\n const moduleName = segments[2];\n const modelName = segments[3];\n const viewName = segments[4];\n const next = [moduleName, modelName, viewName].filter(Boolean).map((item) => toLabel(item!));\n return next.length ? next : [\"Admin\"];\n }\n\n const menuItemName = searchParams.get(\"menuItemName\");\n const actionName = searchParams.get(\"actionName\");\n\n // Priority 3: legacy URL-query fallback for older links/pages.\n if (menuItemName || actionName) {\n return [menuItemName, actionName].filter(Boolean).map((item) => toLabel(item!));\n }\n\n return [\"Admin\"];\n }, [actionId, actionResponse, pathname, searchParams]);\n\n const showBack = /\\/admin\\/core\\/[^/]+\\/[^/]+\\/form\\/[^/]+/.test(pathname);\n\n const triggerSidebar = () => {\n window.dispatchEvent(new CustomEvent(SIDEBAR_TOGGLE_EVENT));\n };\n\n return (\n <header className=\"solid-admin-header\">\n <div className=\"solid-admin-header-inner\">\n <button\n type=\"button\"\n className=\"solid-admin-sidebar-trigger\"\n onClick={triggerSidebar}\n aria-label=\"Toggle sidebar\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"1.5\" y=\"2\" width=\"13\" height=\"12\" rx=\"2\" stroke=\"currentColor\" />\n <path d=\"M5.5 2V14\" stroke=\"currentColor\" />\n <rect x=\"8\" y=\"5.25\" width=\"4.5\" height=\"5.5\" rx=\"0.9\" stroke=\"currentColor\" />\n </svg>\n </button>\n\n <div className=\"solid-admin-header-sep\" />\n\n <nav className=\"solid-admin-breadcrumbs\" aria-label=\"Breadcrumb\">\n {crumbs.map((crumb, index) => (\n <span key={`${crumb}-${index}`} className=\"solid-admin-crumb\">\n {index > 0 && <span className=\"solid-admin-crumb-sep\">›</span>}\n <span>{crumb}</span>\n </span>\n ))}\n </nav>\n\n <div className=\"solid-admin-header-actions\">\n <button\n type=\"button\"\n className=\"solid-admin-theme-toggle\"\n onClick={toggleThemeMode}\n aria-label=\"Toggle theme\"\n title=\"Toggle theme\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 3l0 18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 9l4.65 -4.65\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 14.3l7.37 -7.37\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 19.6l8.85 -8.85\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n <span className=\"solid-sr-only\">Toggle theme</span>\n </button>\n\n {showBack && (\n <button\n type=\"button\"\n className=\"solid-admin-back-btn\"\n onClick={() => router.back()}\n aria-label=\"Go back\"\n >\n Back\n </button>\n )}\n </div>\n </div>\n </header>\n );\n};\n"]}