@atlashub/smartstack 3.11.0 → 3.14.0

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 (1016) hide show
  1. package/dist/AiDocPage-CM7j_50_.cjs.map +1 -1
  2. package/dist/AiDocPage-rnKBvVof.js.map +1 -1
  3. package/dist/ArchitecturePage-Cn_XCDAo.cjs.map +1 -1
  4. package/dist/ArchitecturePage-DNwzHKk0.js.map +1 -1
  5. package/dist/{AuthCallbackPage-Cu74zAX1.js → AuthCallbackPage-CoJi12d0.js} +2 -2
  6. package/dist/AuthCallbackPage-CoJi12d0.js.map +1 -0
  7. package/dist/{AuthCallbackPage-Bv2Cyn80.cjs → AuthCallbackPage-D_g2VCjj.cjs} +2 -2
  8. package/dist/AuthCallbackPage-D_g2VCjj.cjs.map +1 -0
  9. package/dist/{BaIndexPage-Dkp_Eixx.js → BaIndexPage-B5scAEin.js} +2 -2
  10. package/dist/BaIndexPage-B5scAEin.js.map +1 -0
  11. package/dist/BaIndexPage-C3osYS_6.cjs +2 -0
  12. package/dist/BaIndexPage-C3osYS_6.cjs.map +1 -0
  13. package/dist/BaViewerPage-BPucPOSy.cjs +2 -0
  14. package/dist/BaViewerPage-BPucPOSy.cjs.map +1 -0
  15. package/dist/{BaViewerPage-DxD0eZm-.js → BaViewerPage-TL6IHeQx.js} +26 -26
  16. package/dist/BaViewerPage-TL6IHeQx.js.map +1 -0
  17. package/dist/{ConfirmEmailPage-su3Fvl0e.cjs → ConfirmEmailPage-B3mrPUvg.cjs} +2 -2
  18. package/dist/ConfirmEmailPage-B3mrPUvg.cjs.map +1 -0
  19. package/dist/{ConfirmEmailPage-BTp8J0pw.js → ConfirmEmailPage-DDp2IPE_.js} +2 -2
  20. package/dist/ConfirmEmailPage-DDp2IPE_.js.map +1 -0
  21. package/dist/CrossSchemaFkPage-BchJFOmH.js.map +1 -1
  22. package/dist/CrossSchemaFkPage-DqFNORYd.cjs.map +1 -1
  23. package/dist/{DatabasePage-DFIK8cSM.js → DatabasePage-BnaX9sis.js} +44 -48
  24. package/dist/DatabasePage-BnaX9sis.js.map +1 -0
  25. package/dist/DatabasePage-DAzb3FnS.cjs +2 -0
  26. package/dist/DatabasePage-DAzb3FnS.cjs.map +1 -0
  27. package/dist/DeveloperIndexPage-CtBfD2JI.cjs.map +1 -1
  28. package/dist/DeveloperIndexPage-D4zD_pop.js.map +1 -1
  29. package/dist/{DocRenderer-CcEn1iaa.js → DocRenderer-C5pM9SWP.js} +99 -94
  30. package/dist/DocRenderer-C5pM9SWP.js.map +1 -0
  31. package/dist/DocRenderer-D7hi9Oa-.cjs +2 -0
  32. package/dist/DocRenderer-D7hi9Oa-.cjs.map +1 -0
  33. package/dist/DocsIndexPage-BD6OOCak.js.map +1 -1
  34. package/dist/DocsIndexPage-BPfi0FQD.cjs.map +1 -1
  35. package/dist/{DualDbContextPage-BujD_coN.js → DualDbContextPage-CVBjCvGp.js} +2 -2
  36. package/dist/DualDbContextPage-CVBjCvGp.js.map +1 -0
  37. package/dist/{DualDbContextPage--Qk-qEgD.cjs → DualDbContextPage-Dz8NAewk.cjs} +2 -2
  38. package/dist/DualDbContextPage-Dz8NAewk.cjs.map +1 -0
  39. package/dist/{ForceChangePasswordPage-kEFsb5Aq.cjs → ForceChangePasswordPage-BqNyswSy.cjs} +2 -2
  40. package/dist/ForceChangePasswordPage-BqNyswSy.cjs.map +1 -0
  41. package/dist/{ForceChangePasswordPage-ClENqzCH.js → ForceChangePasswordPage-DkpGGEn7.js} +2 -2
  42. package/dist/ForceChangePasswordPage-DkpGGEn7.js.map +1 -0
  43. package/dist/{ForgotPasswordPage--Wl0Vxbv.cjs → ForgotPasswordPage-C7mySa8O.cjs} +2 -2
  44. package/dist/ForgotPasswordPage-C7mySa8O.cjs.map +1 -0
  45. package/dist/{ForgotPasswordPage-BEgvV5f-.js → ForgotPasswordPage-Dmi6wpMM.js} +2 -2
  46. package/dist/ForgotPasswordPage-Dmi6wpMM.js.map +1 -0
  47. package/dist/InfrastructurePage-D4ZjLzI_.cjs.map +1 -1
  48. package/dist/InfrastructurePage-q_y1z8T_.js.map +1 -1
  49. package/dist/InstallationPage-BJ-GBVPp.cjs.map +1 -1
  50. package/dist/InstallationPage-CXKmzZuN.js.map +1 -1
  51. package/dist/ModulesPage-B3p8e07v.js.map +1 -1
  52. package/dist/ModulesPage-lz8DUm3X.cjs.map +1 -1
  53. package/dist/{OnboardingWizardPage-Bx1UlTbr.js → OnboardingWizardPage-BeCNpdPL.js} +2 -2
  54. package/dist/OnboardingWizardPage-BeCNpdPL.js.map +1 -0
  55. package/dist/{OnboardingWizardPage-C7vendrq.cjs → OnboardingWizardPage-CgEpUx9X.cjs} +2 -2
  56. package/dist/OnboardingWizardPage-CgEpUx9X.cjs.map +1 -0
  57. package/dist/{RegisterPage-DKr8quRk.cjs → RegisterPage-BejbbAl9.cjs} +2 -2
  58. package/dist/RegisterPage-BejbbAl9.cjs.map +1 -0
  59. package/dist/{RegisterPage-BzV0sCTe.js → RegisterPage-CcuYYRBS.js} +2 -2
  60. package/dist/RegisterPage-CcuYYRBS.js.map +1 -0
  61. package/dist/{ResetPasswordPage-x4do1o-j.cjs → ResetPasswordPage-7brP8dT7.cjs} +2 -2
  62. package/dist/ResetPasswordPage-7brP8dT7.cjs.map +1 -0
  63. package/dist/{ResetPasswordPage-DphmJrcJ.js → ResetPasswordPage-BX3wnSSM.js} +2 -2
  64. package/dist/ResetPasswordPage-BX3wnSSM.js.map +1 -0
  65. package/dist/SettingsDocPage-DYXvb3M-.js.map +1 -1
  66. package/dist/SettingsDocPage-Dqj8KzOa.cjs.map +1 -1
  67. package/dist/SlaDocPage-D44QWNY8.cjs.map +1 -1
  68. package/dist/SlaDocPage-hLFLqLVa.js.map +1 -1
  69. package/dist/SmartStackPresentationPage-52Nb7F0X.cjs.map +1 -1
  70. package/dist/SmartStackPresentationPage-D3ku9GtQ.js.map +1 -1
  71. package/dist/{SupportDashboardDocPage-CLotzEwA.js → SupportDashboardDocPage-CG_Ahacx.js} +2 -2
  72. package/dist/SupportDashboardDocPage-CG_Ahacx.js.map +1 -0
  73. package/dist/{SupportDashboardDocPage-DpgGq5Mm.cjs → SupportDashboardDocPage-DfV-9_8r.cjs} +2 -2
  74. package/dist/SupportDashboardDocPage-DfV-9_8r.cjs.map +1 -0
  75. package/dist/{SupportEscalationDocPage-B-_ChfdN.js → SupportEscalationDocPage-C481D7pF.js} +2 -2
  76. package/dist/SupportEscalationDocPage-C481D7pF.js.map +1 -0
  77. package/dist/{SupportEscalationDocPage-WXkAQr8k.cjs → SupportEscalationDocPage-C65oCDZL.cjs} +2 -2
  78. package/dist/SupportEscalationDocPage-C65oCDZL.cjs.map +1 -0
  79. package/dist/SupportIndexPage-Bb0giRKn.js.map +1 -1
  80. package/dist/SupportIndexPage-CsDQ35Cu.cjs.map +1 -1
  81. package/dist/{SupportMyTicketsDocPage-DeRUdAIi.js → SupportMyTicketsDocPage-D2f6DaKb.js} +2 -2
  82. package/dist/SupportMyTicketsDocPage-D2f6DaKb.js.map +1 -0
  83. package/dist/{SupportMyTicketsDocPage-jE1UMaIY.cjs → SupportMyTicketsDocPage-Dbp6XBnH.cjs} +2 -2
  84. package/dist/SupportMyTicketsDocPage-Dbp6XBnH.cjs.map +1 -0
  85. package/dist/{SupportTemplatesDocPage-ajO-cHmK.cjs → SupportTemplatesDocPage-BkeDpR-8.cjs} +2 -2
  86. package/dist/SupportTemplatesDocPage-BkeDpR-8.cjs.map +1 -0
  87. package/dist/{SupportTemplatesDocPage-C8ZLzFJc.js → SupportTemplatesDocPage-sCKQlZFJ.js} +2 -2
  88. package/dist/SupportTemplatesDocPage-sCKQlZFJ.js.map +1 -0
  89. package/dist/{SupportTicketsDocPage-C_ybDTjC.cjs → SupportTicketsDocPage-B_603CpY.cjs} +2 -2
  90. package/dist/SupportTicketsDocPage-B_603CpY.cjs.map +1 -0
  91. package/dist/{SupportTicketsDocPage-DQhHfa6J.js → SupportTicketsDocPage-ClBa3qeY.js} +2 -2
  92. package/dist/SupportTicketsDocPage-ClBa3qeY.js.map +1 -0
  93. package/dist/TeamsIntegrationPage-BwhBcPAK.js.map +1 -1
  94. package/dist/TeamsIntegrationPage-DXj5MDRS.cjs.map +1 -1
  95. package/dist/ThemeDocPage-B6x55uSE.cjs.map +1 -1
  96. package/dist/ThemeDocPage-xkMbvMJG.js.map +1 -1
  97. package/dist/UserIndexPage-DSDfRWFx.js.map +1 -1
  98. package/dist/UserIndexPage-DahU6wzK.cjs.map +1 -1
  99. package/dist/components/ThemeSync.d.ts +2 -1
  100. package/dist/components/ThemeSync.d.ts.map +1 -1
  101. package/dist/components/auth/PermissionSyncHandler.d.ts +2 -1
  102. package/dist/components/auth/PermissionSyncHandler.d.ts.map +1 -1
  103. package/dist/components/dashboard/ApplicationActivityPieChart.d.ts +1 -1
  104. package/dist/components/dashboard/ApplicationActivityPieChart.d.ts.map +1 -1
  105. package/dist/components/dashboard/ApplicationUsageChart.d.ts +3 -2
  106. package/dist/components/dashboard/ApplicationUsageChart.d.ts.map +1 -1
  107. package/dist/components/dashboard/CurrentSessionCard.d.ts +3 -2
  108. package/dist/components/dashboard/CurrentSessionCard.d.ts.map +1 -1
  109. package/dist/components/dashboard/DeviceBreakdownChart.d.ts +1 -1
  110. package/dist/components/dashboard/DeviceBreakdownChart.d.ts.map +1 -1
  111. package/dist/components/dashboard/DeviceStatsCard.d.ts +3 -2
  112. package/dist/components/dashboard/DeviceStatsCard.d.ts.map +1 -1
  113. package/dist/components/dashboard/EngagementMetricsCard.d.ts +1 -1
  114. package/dist/components/dashboard/EngagementMetricsCard.d.ts.map +1 -1
  115. package/dist/components/dashboard/HierarchyDrillDownChart.d.ts +2 -2
  116. package/dist/components/dashboard/HierarchyDrillDownChart.d.ts.map +1 -1
  117. package/dist/components/dashboard/HourlyUsageChart.d.ts +3 -2
  118. package/dist/components/dashboard/HourlyUsageChart.d.ts.map +1 -1
  119. package/dist/components/dashboard/LoginErrorsTable.d.ts +3 -2
  120. package/dist/components/dashboard/LoginErrorsTable.d.ts.map +1 -1
  121. package/dist/components/dashboard/ModulePopularityChart.d.ts +2 -2
  122. package/dist/components/dashboard/ModulePopularityChart.d.ts.map +1 -1
  123. package/dist/components/dashboard/SessionAnalyticsChart.d.ts +3 -2
  124. package/dist/components/dashboard/SessionAnalyticsChart.d.ts.map +1 -1
  125. package/dist/components/dashboard/TenantActivityPieChart.d.ts +2 -2
  126. package/dist/components/dashboard/TenantActivityPieChart.d.ts.map +1 -1
  127. package/dist/components/dashboard/TenantPopularityChart.d.ts +2 -2
  128. package/dist/components/dashboard/TenantPopularityChart.d.ts.map +1 -1
  129. package/dist/components/dashboard/TenantUsageTrendChart.d.ts +2 -2
  130. package/dist/components/dashboard/TenantUsageTrendChart.d.ts.map +1 -1
  131. package/dist/components/dashboard/UsageTrendChart.d.ts +2 -2
  132. package/dist/components/dashboard/UsageTrendChart.d.ts.map +1 -1
  133. package/dist/components/dashboard/WeeklyUsageChart.d.ts +3 -2
  134. package/dist/components/dashboard/WeeklyUsageChart.d.ts.map +1 -1
  135. package/dist/components/docs/DocRenderer.d.ts +6 -5
  136. package/dist/components/docs/DocRenderer.d.ts.map +1 -1
  137. package/dist/components/docs/DocsSearch.d.ts +5 -4
  138. package/dist/components/docs/DocsSearch.d.ts.map +1 -1
  139. package/dist/components/email/EmailEditor.d.ts +7 -6
  140. package/dist/components/email/EmailEditor.d.ts.map +1 -1
  141. package/dist/components/errors/AccessDenied.d.ts +8 -7
  142. package/dist/components/errors/AccessDenied.d.ts.map +1 -1
  143. package/dist/components/errors/ErrorFallback.d.ts +4 -3
  144. package/dist/components/errors/ErrorFallback.d.ts.map +1 -1
  145. package/dist/components/errors/GlobalErrorBoundary.d.ts +3 -2
  146. package/dist/components/errors/GlobalErrorBoundary.d.ts.map +1 -1
  147. package/dist/components/errors/NoActiveWorkspace.d.ts +2 -1
  148. package/dist/components/errors/NoActiveWorkspace.d.ts.map +1 -1
  149. package/dist/components/errors/RouteErrorBoundary.d.ts +3 -2
  150. package/dist/components/errors/RouteErrorBoundary.d.ts.map +1 -1
  151. package/dist/components/favorites/FavoritesBar.d.ts +3 -2
  152. package/dist/components/favorites/FavoritesBar.d.ts.map +1 -1
  153. package/dist/components/favorites/FavoritesModal.d.ts +4 -3
  154. package/dist/components/favorites/FavoritesModal.d.ts.map +1 -1
  155. package/dist/components/layout/AdminHeader.d.ts +3 -2
  156. package/dist/components/layout/AdminHeader.d.ts.map +1 -1
  157. package/dist/components/layout/AdminSidebar.d.ts +4 -3
  158. package/dist/components/layout/AdminSidebar.d.ts.map +1 -1
  159. package/dist/components/layout/AppHeader.d.ts +3 -2
  160. package/dist/components/layout/AppHeader.d.ts.map +1 -1
  161. package/dist/components/layout/BusinessHeader.d.ts +3 -2
  162. package/dist/components/layout/BusinessHeader.d.ts.map +1 -1
  163. package/dist/components/layout/Footer.d.ts +2 -1
  164. package/dist/components/layout/Footer.d.ts.map +1 -1
  165. package/dist/components/layout/Header.d.ts +2 -1
  166. package/dist/components/layout/Header.d.ts.map +1 -1
  167. package/dist/components/layout/ModuleSidebar.d.ts +4 -3
  168. package/dist/components/layout/ModuleSidebar.d.ts.map +1 -1
  169. package/dist/components/layout/ResizableMainContent.d.ts +3 -2
  170. package/dist/components/layout/ResizableMainContent.d.ts.map +1 -1
  171. package/dist/components/layout/UserHeader.d.ts +3 -2
  172. package/dist/components/layout/UserHeader.d.ts.map +1 -1
  173. package/dist/components/layout/UserSidebar.d.ts +4 -3
  174. package/dist/components/layout/UserSidebar.d.ts.map +1 -1
  175. package/dist/components/license/FeatureGate.d.ts +6 -6
  176. package/dist/components/license/FeatureGate.d.ts.map +1 -1
  177. package/dist/components/license/FeatureRouteGuard.d.ts +3 -2
  178. package/dist/components/license/FeatureRouteGuard.d.ts.map +1 -1
  179. package/dist/components/license/LicenseActivationDialog.d.ts +4 -3
  180. package/dist/components/license/LicenseActivationDialog.d.ts.map +1 -1
  181. package/dist/components/license/LicenseAlertBanner.d.ts +2 -1
  182. package/dist/components/license/LicenseAlertBanner.d.ts.map +1 -1
  183. package/dist/components/license/LicenseBlockOverlay.d.ts +2 -1
  184. package/dist/components/license/LicenseBlockOverlay.d.ts.map +1 -1
  185. package/dist/components/license/LicenseContentBanner.d.ts +2 -1
  186. package/dist/components/license/LicenseContentBanner.d.ts.map +1 -1
  187. package/dist/components/license/LicenseGuard.d.ts +2 -1
  188. package/dist/components/license/LicenseGuard.d.ts.map +1 -1
  189. package/dist/components/license/LicenseStatusBadge.d.ts +3 -2
  190. package/dist/components/license/LicenseStatusBadge.d.ts.map +1 -1
  191. package/dist/components/notifications/NotificationBell.d.ts +2 -1
  192. package/dist/components/notifications/NotificationBell.d.ts.map +1 -1
  193. package/dist/components/platform/administration/ApplicationAccessCustomizeDrawer.d.ts +9 -8
  194. package/dist/components/platform/administration/ApplicationAccessCustomizeDrawer.d.ts.map +1 -1
  195. package/dist/components/platform/administration/ApplicationCard.d.ts +8 -8
  196. package/dist/components/platform/administration/ApplicationCard.d.ts.map +1 -1
  197. package/dist/components/platform/administration/ConflictDiffView.d.ts +4 -3
  198. package/dist/components/platform/administration/ConflictDiffView.d.ts.map +1 -1
  199. package/dist/components/platform/administration/EntraGroupRoleAssignment.d.ts +8 -7
  200. package/dist/components/platform/administration/EntraGroupRoleAssignment.d.ts.map +1 -1
  201. package/dist/components/platform/administration/GroupApplicationsTab.d.ts +4 -3
  202. package/dist/components/platform/administration/GroupApplicationsTab.d.ts.map +1 -1
  203. package/dist/components/platform/administration/GroupMembersTab.d.ts +5 -4
  204. package/dist/components/platform/administration/GroupMembersTab.d.ts.map +1 -1
  205. package/dist/components/platform/administration/GroupPermissionsView.d.ts +3 -2
  206. package/dist/components/platform/administration/GroupPermissionsView.d.ts.map +1 -1
  207. package/dist/components/platform/administration/GroupRoleAssignment.d.ts +10 -9
  208. package/dist/components/platform/administration/GroupRoleAssignment.d.ts.map +1 -1
  209. package/dist/components/platform/administration/GroupTenantsTab.d.ts +4 -3
  210. package/dist/components/platform/administration/GroupTenantsTab.d.ts.map +1 -1
  211. package/dist/components/platform/administration/PermissionDrillDownBar.d.ts +8 -7
  212. package/dist/components/platform/administration/PermissionDrillDownBar.d.ts.map +1 -1
  213. package/dist/components/platform/administration/PermissionMatrixFilters.d.ts +10 -9
  214. package/dist/components/platform/administration/PermissionMatrixFilters.d.ts.map +1 -1
  215. package/dist/components/platform/administration/PermissionMatrixTable.d.ts +15 -14
  216. package/dist/components/platform/administration/PermissionMatrixTable.d.ts.map +1 -1
  217. package/dist/components/platform/administration/PermissionPopover.d.ts +12 -11
  218. package/dist/components/platform/administration/PermissionPopover.d.ts.map +1 -1
  219. package/dist/components/platform/administration/TenantAccessCustomizeDrawer.d.ts +8 -7
  220. package/dist/components/platform/administration/TenantAccessCustomizeDrawer.d.ts.map +1 -1
  221. package/dist/components/platform/administration/TenantEntraTab.d.ts +5 -4
  222. package/dist/components/platform/administration/TenantEntraTab.d.ts.map +1 -1
  223. package/dist/components/platform/administration/UserGroupsTab.d.ts +4 -3
  224. package/dist/components/platform/administration/UserGroupsTab.d.ts.map +1 -1
  225. package/dist/components/platform/administration/UserRoleAssignment.d.ts +13 -12
  226. package/dist/components/platform/administration/UserRoleAssignment.d.ts.map +1 -1
  227. package/dist/components/platform/administration/access-requests/AccessRequestApprovalModal.d.ts +8 -7
  228. package/dist/components/platform/administration/access-requests/AccessRequestApprovalModal.d.ts.map +1 -1
  229. package/dist/components/platform/administration/access-requests/AccessRequestStatusBadge.d.ts +3 -2
  230. package/dist/components/platform/administration/access-requests/AccessRequestStatusBadge.d.ts.map +1 -1
  231. package/dist/components/platform/administration/access-requests/AccessRequestsListTab.d.ts +6 -5
  232. package/dist/components/platform/administration/access-requests/AccessRequestsListTab.d.ts.map +1 -1
  233. package/dist/components/platform/administration/access-requests/RequestAccessButton.d.ts +6 -5
  234. package/dist/components/platform/administration/access-requests/RequestAccessButton.d.ts.map +1 -1
  235. package/dist/components/platform/administration/ai/AiModelsTab.d.ts +6 -5
  236. package/dist/components/platform/administration/ai/AiModelsTab.d.ts.map +1 -1
  237. package/dist/components/platform/administration/ai/AiProfilesTab.d.ts +18 -17
  238. package/dist/components/platform/administration/ai/AiProfilesTab.d.ts.map +1 -1
  239. package/dist/components/platform/administration/ai/AiProvidersTab.d.ts +3 -2
  240. package/dist/components/platform/administration/ai/AiProvidersTab.d.ts.map +1 -1
  241. package/dist/components/platform/administration/ai/PromptTestPanel.d.ts +4 -3
  242. package/dist/components/platform/administration/ai/PromptTestPanel.d.ts.map +1 -1
  243. package/dist/components/platform/administration/applications/ApplicationAccessTab.d.ts +4 -3
  244. package/dist/components/platform/administration/applications/ApplicationAccessTab.d.ts.map +1 -1
  245. package/dist/components/platform/administration/applications/ApplicationInfoTab.d.ts +16 -16
  246. package/dist/components/platform/administration/applications/ApplicationInfoTab.d.ts.map +1 -1
  247. package/dist/components/platform/administration/applications/ApplicationModulesTab.d.ts +30 -29
  248. package/dist/components/platform/administration/applications/ApplicationModulesTab.d.ts.map +1 -1
  249. package/dist/components/platform/administration/applications/ApplicationPermissionsTab.d.ts +5 -4
  250. package/dist/components/platform/administration/applications/ApplicationPermissionsTab.d.ts.map +1 -1
  251. package/dist/components/platform/administration/applications/ApplicationPublicationTab.d.ts +49 -49
  252. package/dist/components/platform/administration/applications/ApplicationPublicationTab.d.ts.map +1 -1
  253. package/dist/components/platform/administration/entra/ConflictCard.d.ts +5 -4
  254. package/dist/components/platform/administration/entra/ConflictCard.d.ts.map +1 -1
  255. package/dist/components/platform/administration/entra/ResolutionModal.d.ts +6 -5
  256. package/dist/components/platform/administration/entra/ResolutionModal.d.ts.map +1 -1
  257. package/dist/components/platform/administration/organisations/CreateOrganisationForm.d.ts +8 -7
  258. package/dist/components/platform/administration/organisations/CreateOrganisationForm.d.ts.map +1 -1
  259. package/dist/components/platform/administration/permissions/GroupPermissionMatrix.d.ts +6 -5
  260. package/dist/components/platform/administration/permissions/GroupPermissionMatrix.d.ts.map +1 -1
  261. package/dist/components/platform/administration/permissions/PermissionStatusIndicator.d.ts +6 -5
  262. package/dist/components/platform/administration/permissions/PermissionStatusIndicator.d.ts.map +1 -1
  263. package/dist/components/platform/administration/permissions/RolePermissionMatrix.d.ts +3 -2
  264. package/dist/components/platform/administration/permissions/RolePermissionMatrix.d.ts.map +1 -1
  265. package/dist/components/platform/administration/permissions/UserPermissionMatrix.d.ts +5 -4
  266. package/dist/components/platform/administration/permissions/UserPermissionMatrix.d.ts.map +1 -1
  267. package/dist/components/platform/administration/settings/SettingsHistoryModal.d.ts +2 -1
  268. package/dist/components/platform/administration/settings/SettingsHistoryModal.d.ts.map +1 -1
  269. package/dist/components/platform/administration/tenants/TenantApplicationsTab.d.ts +55 -54
  270. package/dist/components/platform/administration/tenants/TenantApplicationsTab.d.ts.map +1 -1
  271. package/dist/components/platform/administration/tenants/TenantGroupsTab.d.ts +8 -7
  272. package/dist/components/platform/administration/tenants/TenantGroupsTab.d.ts.map +1 -1
  273. package/dist/components/platform/administration/tenants/TenantMembersTab.d.ts +8 -7
  274. package/dist/components/platform/administration/tenants/TenantMembersTab.d.ts.map +1 -1
  275. package/dist/components/platform/administration/tenants/TenantOverviewTab.d.ts +12 -11
  276. package/dist/components/platform/administration/tenants/TenantOverviewTab.d.ts.map +1 -1
  277. package/dist/components/platform/administration/tenants/TenantRolesTab.d.ts +2 -1
  278. package/dist/components/platform/administration/tenants/TenantRolesTab.d.ts.map +1 -1
  279. package/dist/components/platform/administration/tenants/TenantSupportSettingsTab.d.ts +4 -3
  280. package/dist/components/platform/administration/tenants/TenantSupportSettingsTab.d.ts.map +1 -1
  281. package/dist/components/platform/administration/users/UserActivitySessionsTab.d.ts +8 -7
  282. package/dist/components/platform/administration/users/UserActivitySessionsTab.d.ts.map +1 -1
  283. package/dist/components/platform/administration/users/UserApplicationsTab.d.ts +4 -3
  284. package/dist/components/platform/administration/users/UserApplicationsTab.d.ts.map +1 -1
  285. package/dist/components/platform/administration/users/UserHistoryTab.d.ts +7 -6
  286. package/dist/components/platform/administration/users/UserHistoryTab.d.ts.map +1 -1
  287. package/dist/components/platform/administration/users/UserInfoTab.d.ts +15 -14
  288. package/dist/components/platform/administration/users/UserInfoTab.d.ts.map +1 -1
  289. package/dist/components/platform/administration/users/UserSecurityTab.d.ts +23 -22
  290. package/dist/components/platform/administration/users/UserSecurityTab.d.ts.map +1 -1
  291. package/dist/components/platform/administration/users/UserTenantsTab.d.ts +22 -21
  292. package/dist/components/platform/administration/users/UserTenantsTab.d.ts.map +1 -1
  293. package/dist/components/platform/administration/workflows/WorkflowStepsEditor.d.ts +6 -5
  294. package/dist/components/platform/administration/workflows/WorkflowStepsEditor.d.ts.map +1 -1
  295. package/dist/components/platform/api/external-apps/ExternalAppAuditTab.d.ts +1 -1
  296. package/dist/components/platform/api/external-apps/ExternalAppAuditTab.d.ts.map +1 -1
  297. package/dist/components/platform/api/external-apps/ExternalAppExportsTab.d.ts +6 -5
  298. package/dist/components/platform/api/external-apps/ExternalAppExportsTab.d.ts.map +1 -1
  299. package/dist/components/platform/api/external-apps/ExternalAppInfoTab.d.ts +6 -5
  300. package/dist/components/platform/api/external-apps/ExternalAppInfoTab.d.ts.map +1 -1
  301. package/dist/components/platform/api/external-apps/ExternalAppKeysTab.d.ts +6 -5
  302. package/dist/components/platform/api/external-apps/ExternalAppKeysTab.d.ts.map +1 -1
  303. package/dist/components/platform/api/external-apps/ExternalAppPromptTab.d.ts +3 -2
  304. package/dist/components/platform/api/external-apps/ExternalAppPromptTab.d.ts.map +1 -1
  305. package/dist/components/platform/api/external-apps/ExternalAppRolesTab.d.ts +6 -5
  306. package/dist/components/platform/api/external-apps/ExternalAppRolesTab.d.ts.map +1 -1
  307. package/dist/components/platform/support/ActivityTimeline.d.ts +5 -4
  308. package/dist/components/platform/support/ActivityTimeline.d.ts.map +1 -1
  309. package/dist/components/platform/support/AiClassificationBadge.d.ts +7 -6
  310. package/dist/components/platform/support/AiClassificationBadge.d.ts.map +1 -1
  311. package/dist/components/platform/support/AiRoutingSuggestionPanel.d.ts +9 -8
  312. package/dist/components/platform/support/AiRoutingSuggestionPanel.d.ts.map +1 -1
  313. package/dist/components/platform/support/AiTicketSummary.d.ts +8 -7
  314. package/dist/components/platform/support/AiTicketSummary.d.ts.map +1 -1
  315. package/dist/components/platform/support/FilePreviewModal.d.ts +6 -5
  316. package/dist/components/platform/support/FilePreviewModal.d.ts.map +1 -1
  317. package/dist/components/platform/support/ScreenshotAnnotator.d.ts +6 -5
  318. package/dist/components/platform/support/ScreenshotAnnotator.d.ts.map +1 -1
  319. package/dist/components/platform/support/SlaBadge.d.ts +12 -11
  320. package/dist/components/platform/support/SlaBadge.d.ts.map +1 -1
  321. package/dist/components/platform/support/TemplatePicker.d.ts +6 -5
  322. package/dist/components/platform/support/TemplatePicker.d.ts.map +1 -1
  323. package/dist/components/platform/support/TicketConversation.d.ts +31 -30
  324. package/dist/components/platform/support/TicketConversation.d.ts.map +1 -1
  325. package/dist/components/platform/support/TicketDetailView.d.ts +3 -2
  326. package/dist/components/platform/support/TicketDetailView.d.ts.map +1 -1
  327. package/dist/components/platform/support/TicketSidebar.d.ts +19 -18
  328. package/dist/components/platform/support/TicketSidebar.d.ts.map +1 -1
  329. package/dist/components/platform/support/TicketSolutionPanel.d.ts +10 -9
  330. package/dist/components/platform/support/TicketSolutionPanel.d.ts.map +1 -1
  331. package/dist/components/platform/support/TicketWorkflow.d.ts +10 -9
  332. package/dist/components/platform/support/TicketWorkflow.d.ts.map +1 -1
  333. package/dist/components/platform/support/TicketWorkflowHorizontal.d.ts +19 -18
  334. package/dist/components/platform/support/TicketWorkflowHorizontal.d.ts.map +1 -1
  335. package/dist/components/platform/support/TicketsListView.d.ts +8 -7
  336. package/dist/components/platform/support/TicketsListView.d.ts.map +1 -1
  337. package/dist/components/routing/DocRoutes.d.ts +1 -1
  338. package/dist/components/routing/DocRoutes.d.ts.map +1 -1
  339. package/dist/components/routing/DynamicRouter.d.ts +2 -1
  340. package/dist/components/routing/DynamicRouter.d.ts.map +1 -1
  341. package/dist/components/routing/ProtectedRoute.d.ts +2 -1
  342. package/dist/components/routing/ProtectedRoute.d.ts.map +1 -1
  343. package/dist/components/routing/TenantNavigate.d.ts +4 -3
  344. package/dist/components/routing/TenantNavigate.d.ts.map +1 -1
  345. package/dist/components/routing/TenantRouteWrapper.d.ts +2 -1
  346. package/dist/components/routing/TenantRouteWrapper.d.ts.map +1 -1
  347. package/dist/components/session/SessionProvider.d.ts +2 -1
  348. package/dist/components/session/SessionProvider.d.ts.map +1 -1
  349. package/dist/components/session/SessionWarningModal.d.ts +6 -5
  350. package/dist/components/session/SessionWarningModal.d.ts.map +1 -1
  351. package/dist/components/tenants/TenantCard.d.ts +13 -12
  352. package/dist/components/tenants/TenantCard.d.ts.map +1 -1
  353. package/dist/components/tickets/CreateTicketButton.d.ts +4 -3
  354. package/dist/components/tickets/CreateTicketButton.d.ts.map +1 -1
  355. package/dist/components/tracking/PageTracker.d.ts +2 -1
  356. package/dist/components/tracking/PageTracker.d.ts.map +1 -1
  357. package/dist/components/tracking/TenantTracker.d.ts +2 -1
  358. package/dist/components/tracking/TenantTracker.d.ts.map +1 -1
  359. package/dist/components/ui/AppSwitcher.d.ts +2 -1
  360. package/dist/components/ui/AppSwitcher.d.ts.map +1 -1
  361. package/dist/components/ui/AvatarMenu.d.ts +2 -1
  362. package/dist/components/ui/AvatarMenu.d.ts.map +1 -1
  363. package/dist/components/ui/Breadcrumb.d.ts +7 -6
  364. package/dist/components/ui/Breadcrumb.d.ts.map +1 -1
  365. package/dist/components/ui/ConfirmModal.d.ts +11 -11
  366. package/dist/components/ui/ConfirmModal.d.ts.map +1 -1
  367. package/dist/components/ui/DataTable.d.ts +2 -1
  368. package/dist/components/ui/DataTable.d.ts.map +1 -1
  369. package/dist/components/ui/DataView.d.ts +54 -53
  370. package/dist/components/ui/DataView.d.ts.map +1 -1
  371. package/dist/components/ui/DocEdgeButton.d.ts +2 -1
  372. package/dist/components/ui/DocEdgeButton.d.ts.map +1 -1
  373. package/dist/components/ui/DocPanel.d.ts +2 -1
  374. package/dist/components/ui/DocPanel.d.ts.map +1 -1
  375. package/dist/components/ui/DocToggleButton.d.ts +4 -3
  376. package/dist/components/ui/DocToggleButton.d.ts.map +1 -1
  377. package/dist/components/ui/Drawer.d.ts +9 -8
  378. package/dist/components/ui/Drawer.d.ts.map +1 -1
  379. package/dist/components/ui/EntityCard.d.ts +75 -74
  380. package/dist/components/ui/EntityCard.d.ts.map +1 -1
  381. package/dist/components/ui/KanbanBoard.d.ts +23 -22
  382. package/dist/components/ui/KanbanBoard.d.ts.map +1 -1
  383. package/dist/components/ui/LanguageSwitcher.d.ts +2 -1
  384. package/dist/components/ui/LanguageSwitcher.d.ts.map +1 -1
  385. package/dist/components/ui/PageHeader.d.ts +6 -6
  386. package/dist/components/ui/PageHeader.d.ts.map +1 -1
  387. package/dist/components/ui/PageLoader.d.ts +2 -1
  388. package/dist/components/ui/PageLoader.d.ts.map +1 -1
  389. package/dist/components/ui/PermissionMatrix.d.ts +2 -1
  390. package/dist/components/ui/PermissionMatrix.d.ts.map +1 -1
  391. package/dist/components/ui/ProtectedButton.d.ts +9 -8
  392. package/dist/components/ui/ProtectedButton.d.ts.map +1 -1
  393. package/dist/components/ui/RestrictedModuleBanner.d.ts +2 -1
  394. package/dist/components/ui/RestrictedModuleBanner.d.ts.map +1 -1
  395. package/dist/components/ui/ScopeBanner.d.ts +5 -4
  396. package/dist/components/ui/ScopeBanner.d.ts.map +1 -1
  397. package/dist/components/ui/SelectWithOther.d.ts +10 -9
  398. package/dist/components/ui/SelectWithOther.d.ts.map +1 -1
  399. package/dist/components/ui/SortableList.d.ts +6 -5
  400. package/dist/components/ui/SortableList.d.ts.map +1 -1
  401. package/dist/components/ui/TenantScopeFilter.d.ts +8 -7
  402. package/dist/components/ui/TenantScopeFilter.d.ts.map +1 -1
  403. package/dist/components/ui/TenantScopeSelector.d.ts +8 -7
  404. package/dist/components/ui/TenantScopeSelector.d.ts.map +1 -1
  405. package/dist/components/ui/TenantSelector.d.ts +2 -1
  406. package/dist/components/ui/TenantSelector.d.ts.map +1 -1
  407. package/dist/components/ui/ThemeCustomizer.d.ts +5 -4
  408. package/dist/components/ui/ThemeCustomizer.d.ts.map +1 -1
  409. package/dist/components/ui/ThemeScopeSelector.d.ts +3 -2
  410. package/dist/components/ui/ThemeScopeSelector.d.ts.map +1 -1
  411. package/dist/components/ui/ThemeSwitcher.d.ts +2 -1
  412. package/dist/components/ui/ThemeSwitcher.d.ts.map +1 -1
  413. package/dist/components/ui/Tooltip.d.ts +14 -13
  414. package/dist/components/ui/Tooltip.d.ts.map +1 -1
  415. package/dist/components/ui/UnderDevelopment.d.ts +8 -7
  416. package/dist/components/ui/UnderDevelopment.d.ts.map +1 -1
  417. package/dist/components/ui/UnlockAccountModal.d.ts +6 -5
  418. package/dist/components/ui/UnlockAccountModal.d.ts.map +1 -1
  419. package/dist/components/ui/ViewModeToggle.d.ts +4 -3
  420. package/dist/components/ui/ViewModeToggle.d.ts.map +1 -1
  421. package/dist/contexts/AuthContext.d.ts +2 -1
  422. package/dist/contexts/AuthContext.d.ts.map +1 -1
  423. package/dist/contexts/DocPanelContext.d.ts +2 -1
  424. package/dist/contexts/DocPanelContext.d.ts.map +1 -1
  425. package/dist/contexts/FavoritesContext.d.ts +2 -1
  426. package/dist/contexts/FavoritesContext.d.ts.map +1 -1
  427. package/dist/contexts/FeatureConfigContext.d.ts +3 -2
  428. package/dist/contexts/FeatureConfigContext.d.ts.map +1 -1
  429. package/dist/contexts/LicenseContext.d.ts +2 -1
  430. package/dist/contexts/LicenseContext.d.ts.map +1 -1
  431. package/dist/contexts/NavigationContext.d.ts +2 -1
  432. package/dist/contexts/NavigationContext.d.ts.map +1 -1
  433. package/dist/contexts/SidebarContext.d.ts +2 -1
  434. package/dist/contexts/SidebarContext.d.ts.map +1 -1
  435. package/dist/contexts/SignalRContext.d.ts +2 -1
  436. package/dist/contexts/SignalRContext.d.ts.map +1 -1
  437. package/dist/contexts/TenantContext.d.ts +2 -1
  438. package/dist/contexts/TenantContext.d.ts.map +1 -1
  439. package/dist/contexts/ThemeContext.d.ts +2 -1
  440. package/dist/contexts/ThemeContext.d.ts.map +1 -1
  441. package/dist/extensions/ExtensionContext.d.ts +4 -3
  442. package/dist/extensions/ExtensionContext.d.ts.map +1 -1
  443. package/dist/extensions/PageRegistry.d.ts +6 -5
  444. package/dist/extensions/PageRegistry.d.ts.map +1 -1
  445. package/dist/extensions/SlotFill.d.ts +13 -13
  446. package/dist/extensions/SlotFill.d.ts.map +1 -1
  447. package/dist/extensions/types.d.ts +10 -10
  448. package/dist/extensions/types.d.ts.map +1 -1
  449. package/dist/hooks/useAccessRequestActions.d.ts.map +1 -1
  450. package/dist/hooks/useAccessRequests.d.ts.map +1 -1
  451. package/dist/hooks/useAdminTenants.d.ts.map +1 -1
  452. package/dist/hooks/useClientContext.d.ts.map +1 -1
  453. package/dist/hooks/useCollapsibleState.d.ts.map +1 -1
  454. package/dist/hooks/useCreateSupportTicket.d.ts +23 -21
  455. package/dist/hooks/useCreateSupportTicket.d.ts.map +1 -1
  456. package/dist/hooks/useLocale.d.ts.map +1 -1
  457. package/dist/hooks/useLoginForm.d.ts +5 -4
  458. package/dist/hooks/useLoginForm.d.ts.map +1 -1
  459. package/dist/hooks/useNotifications.d.ts.map +1 -1
  460. package/dist/hooks/usePageTracking.d.ts.map +1 -1
  461. package/dist/hooks/usePagination.d.ts +1 -1
  462. package/dist/hooks/usePagination.d.ts.map +1 -1
  463. package/dist/hooks/usePermissionSync.d.ts +2 -1
  464. package/dist/hooks/usePermissionSync.d.ts.map +1 -1
  465. package/dist/hooks/useRestrictedModuleCheck.d.ts.map +1 -1
  466. package/dist/hooks/useSessionMonitor.d.ts +7 -5
  467. package/dist/hooks/useSessionMonitor.d.ts.map +1 -1
  468. package/dist/hooks/useSettingsSection.d.ts.map +1 -1
  469. package/dist/hooks/useSignalR.d.ts.map +1 -1
  470. package/dist/hooks/useTenantCreateForm.d.ts +24 -22
  471. package/dist/hooks/useTenantCreateForm.d.ts.map +1 -1
  472. package/dist/hooks/useTenantFavorites.d.ts.map +1 -1
  473. package/dist/hooks/useTenantFilters.d.ts.map +1 -1
  474. package/dist/hooks/useTenantTracking.d.ts.map +1 -1
  475. package/dist/hooks/useTicketSignalR.d.ts.map +1 -1
  476. package/dist/hooks/useUserAccessRequests.d.ts.map +1 -1
  477. package/dist/i18n/config.d.ts +1 -1
  478. package/dist/i18n/config.d.ts.map +1 -1
  479. package/dist/{index-DGeNdATi.js → index-3lcyR754.js} +2 -2
  480. package/dist/{index-DGeNdATi.js.map → index-3lcyR754.js.map} +1 -1
  481. package/dist/{index-DJXny6rD.cjs → index-AM9K908G.cjs} +2 -2
  482. package/dist/{index-DJXny6rD.cjs.map → index-AM9K908G.cjs.map} +1 -1
  483. package/dist/{index-ASxPhrgZ.cjs → index-BASU1QDx.cjs} +2 -2
  484. package/dist/index-BASU1QDx.cjs.map +1 -0
  485. package/dist/{index-ChVCBF4t.js → index-BBFFDXgT.js} +2 -2
  486. package/dist/{index-ChVCBF4t.js.map → index-BBFFDXgT.js.map} +1 -1
  487. package/dist/{index-C54HbULX.cjs → index-BBQMnq4P.cjs} +2 -2
  488. package/dist/index-BBQMnq4P.cjs.map +1 -0
  489. package/dist/{index-CUISVUMx.js → index-BEOtfRxa.js} +16 -16
  490. package/dist/index-BEOtfRxa.js.map +1 -0
  491. package/dist/{index-D4u23zHI.js → index-BEeLN5ui.js} +24 -24
  492. package/dist/index-BEeLN5ui.js.map +1 -0
  493. package/dist/{index-Du4fQfix.cjs → index-BEpBEF5G.cjs} +2 -2
  494. package/dist/index-BEpBEF5G.cjs.map +1 -0
  495. package/dist/{index-BlHDI4zj.js → index-BIB3FxMF.js} +14 -14
  496. package/dist/index-BIB3FxMF.js.map +1 -0
  497. package/dist/{index-Txfokhn3.cjs → index-BVUCDL0k.cjs} +2 -2
  498. package/dist/index-BVUCDL0k.cjs.map +1 -0
  499. package/dist/{index-jpSTOjXU.js → index-BYYgvEcO.js} +17 -17
  500. package/dist/index-BYYgvEcO.js.map +1 -0
  501. package/dist/{index-CU66n-zU.js → index-B_lFRwmY.js} +13 -13
  502. package/dist/index-B_lFRwmY.js.map +1 -0
  503. package/dist/{index-Blfc9wKG.js → index-Bbd3D6A4.js} +8 -8
  504. package/dist/index-Bbd3D6A4.js.map +1 -0
  505. package/dist/index-BfMaHuWh.cjs +48 -0
  506. package/dist/index-BfMaHuWh.cjs.map +1 -0
  507. package/dist/index-C0AgM8YN.cjs.map +1 -1
  508. package/dist/index-C0rFTzxZ.cjs +2 -0
  509. package/dist/index-C0rFTzxZ.cjs.map +1 -0
  510. package/dist/{index-By0u9UFY.js → index-CCS0saZk.js} +10 -10
  511. package/dist/index-CCS0saZk.js.map +1 -0
  512. package/dist/{index-C40Dlolq.js → index-CID51vRa.js} +28 -28
  513. package/dist/index-CID51vRa.js.map +1 -0
  514. package/dist/index-CO5QP9C1.cjs +2 -0
  515. package/dist/index-CO5QP9C1.cjs.map +1 -0
  516. package/dist/{index-CI1DJrFE.js → index-CaI6ZbEo.js} +12 -12
  517. package/dist/index-CaI6ZbEo.js.map +1 -0
  518. package/dist/{index-DKRiN1hJ.cjs → index-CaLDUVLs.cjs} +2 -2
  519. package/dist/{index-DKRiN1hJ.cjs.map → index-CaLDUVLs.cjs.map} +1 -1
  520. package/dist/index-CdORB0b4.cjs.map +1 -1
  521. package/dist/{index-Dxau-XnQ.cjs → index-Cdu0fSs8.cjs} +2 -2
  522. package/dist/index-Cdu0fSs8.cjs.map +1 -0
  523. package/dist/{index-Bup-dL1l.cjs → index-CiAIT31Y.cjs} +2 -2
  524. package/dist/{index-Bup-dL1l.cjs.map → index-CiAIT31Y.cjs.map} +1 -1
  525. package/dist/{index-ClIOix1g.js → index-ClrwWu9J.js} +2 -2
  526. package/dist/{index-ClIOix1g.js.map → index-ClrwWu9J.js.map} +1 -1
  527. package/dist/{index-DdsLBKHV.cjs → index-CtcTcQqt.cjs} +2 -2
  528. package/dist/{index-DdsLBKHV.cjs.map → index-CtcTcQqt.cjs.map} +1 -1
  529. package/dist/{index-DM5ogbum.js → index-CzCt3Aan.js} +2 -2
  530. package/dist/{index-DM5ogbum.js.map → index-CzCt3Aan.js.map} +1 -1
  531. package/dist/index-D1WPBG1_.cjs +2 -0
  532. package/dist/index-D1WPBG1_.cjs.map +1 -0
  533. package/dist/{index-Dsbkiw3B.js → index-DA3kbmS5.js} +2 -2
  534. package/dist/{index-Dsbkiw3B.js.map → index-DA3kbmS5.js.map} +1 -1
  535. package/dist/{index-D6zlXbv_.js → index-DE40yc39.js} +2 -2
  536. package/dist/{index-D6zlXbv_.js.map → index-DE40yc39.js.map} +1 -1
  537. package/dist/{index-DmuVa7Ye.cjs → index-DIuoVYFu.cjs} +2 -2
  538. package/dist/index-DIuoVYFu.cjs.map +1 -0
  539. package/dist/{index-DDJTWztK.cjs → index-DLSMVKFE.cjs} +2 -2
  540. package/dist/{index-DDJTWztK.cjs.map → index-DLSMVKFE.cjs.map} +1 -1
  541. package/dist/index-DQBVnnd6.cjs +2 -0
  542. package/dist/index-DQBVnnd6.cjs.map +1 -0
  543. package/dist/{index-BYhFG50Z.cjs → index-DRT2wvEs.cjs} +2 -2
  544. package/dist/index-DRT2wvEs.cjs.map +1 -0
  545. package/dist/{index-Cv7iWoG8.js → index-DRc5qb2I.js} +15 -15
  546. package/dist/index-DRc5qb2I.js.map +1 -0
  547. package/dist/index-DTAZtzQ6.js.map +1 -1
  548. package/dist/{index-BnWMDCRU.cjs → index-DYJbiXHU.cjs} +2 -2
  549. package/dist/index-DYJbiXHU.cjs.map +1 -0
  550. package/dist/{index-D8xuGyjU.js → index-DhVauF9E.js} +16 -16
  551. package/dist/index-DhVauF9E.js.map +1 -0
  552. package/dist/index-DiQ2SDvl.js.map +1 -1
  553. package/dist/{index-BcO3pBlL.js → index-Dm5ZLB9x.js} +14 -14
  554. package/dist/index-Dm5ZLB9x.js.map +1 -0
  555. package/dist/{index-CBOLnJkG.cjs → index-HWG-CG1i.cjs} +2 -2
  556. package/dist/index-HWG-CG1i.cjs.map +1 -0
  557. package/dist/{index-0Jhdcj59.js → index-Kn_ynW2m.js} +3298 -3200
  558. package/dist/index-Kn_ynW2m.js.map +1 -0
  559. package/dist/{index-B2rKKVDN.js → index-L994YeGJ.js} +7 -7
  560. package/dist/index-L994YeGJ.js.map +1 -0
  561. package/dist/{index-1tvWzIw0.cjs → index-OhzFdH9N.cjs} +2 -2
  562. package/dist/{index-1tvWzIw0.cjs.map → index-OhzFdH9N.cjs.map} +1 -1
  563. package/dist/{index-CnmIX2MY.js → index-Z6aHkjiA.js} +23 -20
  564. package/dist/index-Z6aHkjiA.js.map +1 -0
  565. package/dist/index-p2jNjCTo.cjs +2 -0
  566. package/dist/index-p2jNjCTo.cjs.map +1 -0
  567. package/dist/{index-DwATtWun.js → index-vUb_gIjC.js} +11 -11
  568. package/dist/index-vUb_gIjC.js.map +1 -0
  569. package/dist/{index-eAHjmtzn.cjs → index-xCGnOlox.cjs} +2 -2
  570. package/dist/index-xCGnOlox.cjs.map +1 -0
  571. package/dist/layouts/AdminLayout.d.ts +2 -1
  572. package/dist/layouts/AdminLayout.d.ts.map +1 -1
  573. package/dist/layouts/AppLayout.d.ts +2 -1
  574. package/dist/layouts/AppLayout.d.ts.map +1 -1
  575. package/dist/layouts/AuthLayout.d.ts +2 -1
  576. package/dist/layouts/AuthLayout.d.ts.map +1 -1
  577. package/dist/layouts/BusinessLayout.d.ts +2 -1
  578. package/dist/layouts/BusinessLayout.d.ts.map +1 -1
  579. package/dist/layouts/DocsLayout.d.ts +2 -1
  580. package/dist/layouts/DocsLayout.d.ts.map +1 -1
  581. package/dist/layouts/PublicLayout.d.ts +2 -1
  582. package/dist/layouts/PublicLayout.d.ts.map +1 -1
  583. package/dist/layouts/UserLayout.d.ts +2 -1
  584. package/dist/layouts/UserLayout.d.ts.map +1 -1
  585. package/dist/pages/ApplicationsPage.d.ts +2 -1
  586. package/dist/pages/ApplicationsPage.d.ts.map +1 -1
  587. package/dist/pages/HomePage.d.ts +2 -1
  588. package/dist/pages/HomePage.d.ts.map +1 -1
  589. package/dist/pages/LoginPage.d.ts +2 -1
  590. package/dist/pages/LoginPage.d.ts.map +1 -1
  591. package/dist/pages/NotFoundPage.d.ts +2 -1
  592. package/dist/pages/NotFoundPage.d.ts.map +1 -1
  593. package/dist/pages/auth/AuthCallbackPage.d.ts +2 -1
  594. package/dist/pages/auth/AuthCallbackPage.d.ts.map +1 -1
  595. package/dist/pages/auth/ConfirmEmailPage.d.ts +2 -1
  596. package/dist/pages/auth/ConfirmEmailPage.d.ts.map +1 -1
  597. package/dist/pages/auth/ForceChangePasswordPage.d.ts +2 -1
  598. package/dist/pages/auth/ForceChangePasswordPage.d.ts.map +1 -1
  599. package/dist/pages/auth/ForgotPasswordPage.d.ts +2 -1
  600. package/dist/pages/auth/ForgotPasswordPage.d.ts.map +1 -1
  601. package/dist/pages/auth/OnboardingWizardPage.d.ts +2 -1
  602. package/dist/pages/auth/OnboardingWizardPage.d.ts.map +1 -1
  603. package/dist/pages/auth/RegisterPage.d.ts +2 -1
  604. package/dist/pages/auth/RegisterPage.d.ts.map +1 -1
  605. package/dist/pages/auth/ResetPasswordPage.d.ts +2 -1
  606. package/dist/pages/auth/ResetPasswordPage.d.ts.map +1 -1
  607. package/dist/pages/business/BusinessApplicationsGridPage.d.ts +2 -1
  608. package/dist/pages/business/BusinessApplicationsGridPage.d.ts.map +1 -1
  609. package/dist/pages/docs/business/platform/administration/ai/index.d.ts +2 -1
  610. package/dist/pages/docs/business/platform/administration/ai/index.d.ts.map +1 -1
  611. package/dist/pages/docs/business/platform/administration/applications/index.d.ts +2 -1
  612. package/dist/pages/docs/business/platform/administration/applications/index.d.ts.map +1 -1
  613. package/dist/pages/docs/business/platform/administration/configuration/index.d.ts +2 -1
  614. package/dist/pages/docs/business/platform/administration/configuration/index.d.ts.map +1 -1
  615. package/dist/pages/docs/business/platform/administration/configuration/license/index.d.ts +2 -1
  616. package/dist/pages/docs/business/platform/administration/configuration/license/index.d.ts.map +1 -1
  617. package/dist/pages/docs/business/platform/administration/entra/index.d.ts +2 -1
  618. package/dist/pages/docs/business/platform/administration/entra/index.d.ts.map +1 -1
  619. package/dist/pages/docs/business/platform/administration/permissions/assignments/index.d.ts +2 -1
  620. package/dist/pages/docs/business/platform/administration/permissions/assignments/index.d.ts.map +1 -1
  621. package/dist/pages/docs/business/platform/administration/permissions/index.d.ts +2 -1
  622. package/dist/pages/docs/business/platform/administration/permissions/index.d.ts.map +1 -1
  623. package/dist/pages/docs/business/platform/administration/tenants/access-requests/index.d.ts +2 -1
  624. package/dist/pages/docs/business/platform/administration/tenants/access-requests/index.d.ts.map +1 -1
  625. package/dist/pages/docs/business/platform/administration/tenants/applications/index.d.ts +2 -1
  626. package/dist/pages/docs/business/platform/administration/tenants/applications/index.d.ts.map +1 -1
  627. package/dist/pages/docs/business/platform/administration/tenants/business/index.d.ts +2 -1
  628. package/dist/pages/docs/business/platform/administration/tenants/business/index.d.ts.map +1 -1
  629. package/dist/pages/docs/business/platform/administration/tenants/index.d.ts +2 -1
  630. package/dist/pages/docs/business/platform/administration/tenants/index.d.ts.map +1 -1
  631. package/dist/pages/docs/business/platform/administration/tenants/organisations/index.d.ts +2 -1
  632. package/dist/pages/docs/business/platform/administration/tenants/organisations/index.d.ts.map +1 -1
  633. package/dist/pages/docs/business/platform/administration/tenants/other/index.d.ts +2 -1
  634. package/dist/pages/docs/business/platform/administration/tenants/other/index.d.ts.map +1 -1
  635. package/dist/pages/docs/business/platform/administration/tenants/personal/index.d.ts +2 -1
  636. package/dist/pages/docs/business/platform/administration/tenants/personal/index.d.ts.map +1 -1
  637. package/dist/pages/docs/business/platform/administration/tenants/template/index.d.ts +2 -1
  638. package/dist/pages/docs/business/platform/administration/tenants/template/index.d.ts.map +1 -1
  639. package/dist/pages/docs/business/platform/administration/users/dashboard/index.d.ts +2 -1
  640. package/dist/pages/docs/business/platform/administration/users/dashboard/index.d.ts.map +1 -1
  641. package/dist/pages/docs/business/platform/administration/users/groups/index.d.ts +2 -1
  642. package/dist/pages/docs/business/platform/administration/users/groups/index.d.ts.map +1 -1
  643. package/dist/pages/docs/business/platform/administration/users/index.d.ts +2 -1
  644. package/dist/pages/docs/business/platform/administration/users/index.d.ts.map +1 -1
  645. package/dist/pages/docs/business/platform/administration/users/references/index.d.ts +2 -1
  646. package/dist/pages/docs/business/platform/administration/users/references/index.d.ts.map +1 -1
  647. package/dist/pages/docs/business/platform/administration/workflows/index.d.ts +2 -1
  648. package/dist/pages/docs/business/platform/administration/workflows/index.d.ts.map +1 -1
  649. package/dist/pages/docs/business/platform/support/tickets/index.d.ts +2 -1
  650. package/dist/pages/docs/business/platform/support/tickets/index.d.ts.map +1 -1
  651. package/dist/pages/notifications/NotificationsPage.d.ts +2 -1
  652. package/dist/pages/notifications/NotificationsPage.d.ts.map +1 -1
  653. package/dist/pages/personal/myspace/MyAccessRequestsPage.d.ts +2 -1
  654. package/dist/pages/personal/myspace/MyAccessRequestsPage.d.ts.map +1 -1
  655. package/dist/pages/personal/myspace/MyTenantsPage.d.ts +2 -1
  656. package/dist/pages/personal/myspace/MyTenantsPage.d.ts.map +1 -1
  657. package/dist/pages/personal/myspace/PortalDashboardPage.d.ts +2 -1
  658. package/dist/pages/personal/myspace/PortalDashboardPage.d.ts.map +1 -1
  659. package/dist/pages/personal/myspace/PreferencesPage.d.ts +2 -1
  660. package/dist/pages/personal/myspace/PreferencesPage.d.ts.map +1 -1
  661. package/dist/pages/personal/myspace/ProfilePage.d.ts +2 -1
  662. package/dist/pages/personal/myspace/ProfilePage.d.ts.map +1 -1
  663. package/dist/pages/personal/myspace/UserDashboardPage.d.ts +2 -1
  664. package/dist/pages/personal/myspace/UserDashboardPage.d.ts.map +1 -1
  665. package/dist/pages/platform/administration/DashboardPage.d.ts +2 -1
  666. package/dist/pages/platform/administration/DashboardPage.d.ts.map +1 -1
  667. package/dist/pages/platform/administration/ai/AiAgentDetailPage.d.ts +2 -1
  668. package/dist/pages/platform/administration/ai/AiAgentDetailPage.d.ts.map +1 -1
  669. package/dist/pages/platform/administration/ai/AiAgentEditPage.d.ts +2 -1
  670. package/dist/pages/platform/administration/ai/AiAgentEditPage.d.ts.map +1 -1
  671. package/dist/pages/platform/administration/ai/AiAgentsPage.d.ts +2 -1
  672. package/dist/pages/platform/administration/ai/AiAgentsPage.d.ts.map +1 -1
  673. package/dist/pages/platform/administration/ai/AiBlockDefinitionDetailPage.d.ts +2 -1
  674. package/dist/pages/platform/administration/ai/AiBlockDefinitionDetailPage.d.ts.map +1 -1
  675. package/dist/pages/platform/administration/ai/AiBlockDefinitionEditPage.d.ts +2 -1
  676. package/dist/pages/platform/administration/ai/AiBlockDefinitionEditPage.d.ts.map +1 -1
  677. package/dist/pages/platform/administration/ai/AiBlockDefinitionsListPage.d.ts +2 -1
  678. package/dist/pages/platform/administration/ai/AiBlockDefinitionsListPage.d.ts.map +1 -1
  679. package/dist/pages/platform/administration/ai/AiDashboardPage.d.ts +2 -1
  680. package/dist/pages/platform/administration/ai/AiDashboardPage.d.ts.map +1 -1
  681. package/dist/pages/platform/administration/ai/AiMonitoringPage.d.ts +2 -1
  682. package/dist/pages/platform/administration/ai/AiMonitoringPage.d.ts.map +1 -1
  683. package/dist/pages/platform/administration/ai/AiPromptsListPage.d.ts +2 -1
  684. package/dist/pages/platform/administration/ai/AiPromptsListPage.d.ts.map +1 -1
  685. package/dist/pages/platform/administration/ai/AiPromptsPage.d.ts +2 -1
  686. package/dist/pages/platform/administration/ai/AiPromptsPage.d.ts.map +1 -1
  687. package/dist/pages/platform/administration/ai/AiSettingsPage.d.ts +2 -1
  688. package/dist/pages/platform/administration/ai/AiSettingsPage.d.ts.map +1 -1
  689. package/dist/pages/platform/administration/ai/AiSkillsDetailPage.d.ts +2 -1
  690. package/dist/pages/platform/administration/ai/AiSkillsDetailPage.d.ts.map +1 -1
  691. package/dist/pages/platform/administration/ai/AiSkillsEditPage.d.ts +2 -1
  692. package/dist/pages/platform/administration/ai/AiSkillsEditPage.d.ts.map +1 -1
  693. package/dist/pages/platform/administration/applications/ApplicationDetailPage.d.ts +2 -1
  694. package/dist/pages/platform/administration/applications/ApplicationDetailPage.d.ts.map +1 -1
  695. package/dist/pages/platform/administration/applications/ApplicationsGridPage.d.ts +2 -1
  696. package/dist/pages/platform/administration/applications/ApplicationsGridPage.d.ts.map +1 -1
  697. package/dist/pages/platform/administration/applications/ApplicationsListPage.d.ts.map +1 -1
  698. package/dist/pages/platform/administration/applications/NavigationAppsPage.d.ts +2 -1
  699. package/dist/pages/platform/administration/applications/NavigationAppsPage.d.ts.map +1 -1
  700. package/dist/pages/platform/administration/configuration/appsettings/AppSettingsPage.d.ts +2 -1
  701. package/dist/pages/platform/administration/configuration/appsettings/AppSettingsPage.d.ts.map +1 -1
  702. package/dist/pages/platform/administration/configuration/appsettings/AuthenticationSection.d.ts +2 -1
  703. package/dist/pages/platform/administration/configuration/appsettings/AuthenticationSection.d.ts.map +1 -1
  704. package/dist/pages/platform/administration/configuration/appsettings/EmailSection.d.ts +2 -1
  705. package/dist/pages/platform/administration/configuration/appsettings/EmailSection.d.ts.map +1 -1
  706. package/dist/pages/platform/administration/configuration/appsettings/EntraSection.d.ts +2 -1
  707. package/dist/pages/platform/administration/configuration/appsettings/EntraSection.d.ts.map +1 -1
  708. package/dist/pages/platform/administration/configuration/appsettings/InfrastructureSection.d.ts +2 -1
  709. package/dist/pages/platform/administration/configuration/appsettings/InfrastructureSection.d.ts.map +1 -1
  710. package/dist/pages/platform/administration/configuration/appsettings/LoggingSection.d.ts +2 -1
  711. package/dist/pages/platform/administration/configuration/appsettings/LoggingSection.d.ts.map +1 -1
  712. package/dist/pages/platform/administration/configuration/license/LicenseManagementPage.d.ts +2 -1
  713. package/dist/pages/platform/administration/configuration/license/LicenseManagementPage.d.ts.map +1 -1
  714. package/dist/pages/platform/administration/configuration/settings/FileUploadSettingsSection.d.ts +2 -1
  715. package/dist/pages/platform/administration/configuration/settings/FileUploadSettingsSection.d.ts.map +1 -1
  716. package/dist/pages/platform/administration/configuration/settings/GeneralSettingsSection.d.ts +2 -1
  717. package/dist/pages/platform/administration/configuration/settings/GeneralSettingsSection.d.ts.map +1 -1
  718. package/dist/pages/platform/administration/configuration/settings/LegalFileSettingsSection.d.ts +2 -1
  719. package/dist/pages/platform/administration/configuration/settings/LegalFileSettingsSection.d.ts.map +1 -1
  720. package/dist/pages/platform/administration/configuration/settings/SettingsPage.d.ts +2 -1
  721. package/dist/pages/platform/administration/configuration/settings/SettingsPage.d.ts.map +1 -1
  722. package/dist/pages/platform/administration/configuration/settings/StorageInfoSection.d.ts +2 -1
  723. package/dist/pages/platform/administration/configuration/settings/StorageInfoSection.d.ts.map +1 -1
  724. package/dist/pages/platform/administration/entra/EntraConflictsPage.d.ts +2 -1
  725. package/dist/pages/platform/administration/entra/EntraConflictsPage.d.ts.map +1 -1
  726. package/dist/pages/platform/administration/entra/EntraDashboardPage.d.ts +2 -1
  727. package/dist/pages/platform/administration/entra/EntraDashboardPage.d.ts.map +1 -1
  728. package/dist/pages/platform/administration/entra/EntraGroupsPage.d.ts +2 -1
  729. package/dist/pages/platform/administration/entra/EntraGroupsPage.d.ts.map +1 -1
  730. package/dist/pages/platform/administration/entra/EntraSettingsPage.d.ts +2 -1
  731. package/dist/pages/platform/administration/entra/EntraSettingsPage.d.ts.map +1 -1
  732. package/dist/pages/platform/administration/entra/EntraUsersPage.d.ts +2 -1
  733. package/dist/pages/platform/administration/entra/EntraUsersPage.d.ts.map +1 -1
  734. package/dist/pages/platform/administration/permissions/AssignmentsPage.d.ts +2 -1
  735. package/dist/pages/platform/administration/permissions/AssignmentsPage.d.ts.map +1 -1
  736. package/dist/pages/platform/administration/permissions/PermissionDetailPage.d.ts +2 -1
  737. package/dist/pages/platform/administration/permissions/PermissionDetailPage.d.ts.map +1 -1
  738. package/dist/pages/platform/administration/permissions/PermissionsPage.d.ts +2 -1
  739. package/dist/pages/platform/administration/permissions/PermissionsPage.d.ts.map +1 -1
  740. package/dist/pages/platform/administration/permissions/RoleDetailPage.d.ts +2 -1
  741. package/dist/pages/platform/administration/permissions/RoleDetailPage.d.ts.map +1 -1
  742. package/dist/pages/platform/administration/permissions/RolesPage.d.ts +2 -1
  743. package/dist/pages/platform/administration/permissions/RolesPage.d.ts.map +1 -1
  744. package/dist/pages/platform/administration/tenants/OrganisationCreatePage.d.ts +2 -1
  745. package/dist/pages/platform/administration/tenants/OrganisationCreatePage.d.ts.map +1 -1
  746. package/dist/pages/platform/administration/tenants/OrganisationDetailPage.d.ts +2 -1
  747. package/dist/pages/platform/administration/tenants/OrganisationDetailPage.d.ts.map +1 -1
  748. package/dist/pages/platform/administration/tenants/OrganisationsListPage.d.ts +2 -1
  749. package/dist/pages/platform/administration/tenants/OrganisationsListPage.d.ts.map +1 -1
  750. package/dist/pages/platform/administration/tenants/TenantAccessRequestsPage.d.ts +2 -1
  751. package/dist/pages/platform/administration/tenants/TenantAccessRequestsPage.d.ts.map +1 -1
  752. package/dist/pages/platform/administration/tenants/TenantCreatePage.d.ts +2 -1
  753. package/dist/pages/platform/administration/tenants/TenantCreatePage.d.ts.map +1 -1
  754. package/dist/pages/platform/administration/tenants/TenantDetailPage.d.ts +2 -1
  755. package/dist/pages/platform/administration/tenants/TenantDetailPage.d.ts.map +1 -1
  756. package/dist/pages/platform/administration/tenants/TenantSettingsPage.d.ts +2 -1
  757. package/dist/pages/platform/administration/tenants/TenantSettingsPage.d.ts.map +1 -1
  758. package/dist/pages/platform/administration/tenants/TenantTemplateCreatePage.d.ts +2 -1
  759. package/dist/pages/platform/administration/tenants/TenantTemplateCreatePage.d.ts.map +1 -1
  760. package/dist/pages/platform/administration/tenants/TenantTemplateDetailPage.d.ts +2 -1
  761. package/dist/pages/platform/administration/tenants/TenantTemplateDetailPage.d.ts.map +1 -1
  762. package/dist/pages/platform/administration/tenants/TenantsBusinessPage.d.ts +2 -1
  763. package/dist/pages/platform/administration/tenants/TenantsBusinessPage.d.ts.map +1 -1
  764. package/dist/pages/platform/administration/tenants/TenantsDashboardPage.d.ts +2 -1
  765. package/dist/pages/platform/administration/tenants/TenantsDashboardPage.d.ts.map +1 -1
  766. package/dist/pages/platform/administration/tenants/TenantsOtherPage.d.ts +2 -1
  767. package/dist/pages/platform/administration/tenants/TenantsOtherPage.d.ts.map +1 -1
  768. package/dist/pages/platform/administration/tenants/TenantsPage.d.ts +4 -3
  769. package/dist/pages/platform/administration/tenants/TenantsPage.d.ts.map +1 -1
  770. package/dist/pages/platform/administration/tenants/TenantsPersonalPage.d.ts +2 -1
  771. package/dist/pages/platform/administration/tenants/TenantsPersonalPage.d.ts.map +1 -1
  772. package/dist/pages/platform/administration/tenants/TenantsSystemPage.d.ts +2 -1
  773. package/dist/pages/platform/administration/tenants/TenantsSystemPage.d.ts.map +1 -1
  774. package/dist/pages/platform/administration/tenants/TenantsTemplatePage.d.ts +2 -1
  775. package/dist/pages/platform/administration/tenants/TenantsTemplatePage.d.ts.map +1 -1
  776. package/dist/pages/platform/administration/users/GroupDetailPage.d.ts +2 -1
  777. package/dist/pages/platform/administration/users/GroupDetailPage.d.ts.map +1 -1
  778. package/dist/pages/platform/administration/users/ReferencesManagementPage.d.ts +2 -1
  779. package/dist/pages/platform/administration/users/ReferencesManagementPage.d.ts.map +1 -1
  780. package/dist/pages/platform/administration/users/ReferencesPage.d.ts +2 -1
  781. package/dist/pages/platform/administration/users/ReferencesPage.d.ts.map +1 -1
  782. package/dist/pages/platform/administration/users/UserDetailPage.d.ts +2 -1
  783. package/dist/pages/platform/administration/users/UserDetailPage.d.ts.map +1 -1
  784. package/dist/pages/platform/administration/users/UsersGroupsPage.d.ts +2 -1
  785. package/dist/pages/platform/administration/users/UsersGroupsPage.d.ts.map +1 -1
  786. package/dist/pages/platform/administration/users/UsersPage.d.ts +2 -1
  787. package/dist/pages/platform/administration/users/UsersPage.d.ts.map +1 -1
  788. package/dist/pages/platform/administration/workflows/EmailTemplateCreatePage.d.ts +2 -1
  789. package/dist/pages/platform/administration/workflows/EmailTemplateCreatePage.d.ts.map +1 -1
  790. package/dist/pages/platform/administration/workflows/EmailTemplateDetailPage.d.ts +2 -1
  791. package/dist/pages/platform/administration/workflows/EmailTemplateDetailPage.d.ts.map +1 -1
  792. package/dist/pages/platform/administration/workflows/EmailTemplateEditPage.d.ts +2 -1
  793. package/dist/pages/platform/administration/workflows/EmailTemplateEditPage.d.ts.map +1 -1
  794. package/dist/pages/platform/administration/workflows/EmailTemplatesListPage.d.ts +2 -1
  795. package/dist/pages/platform/administration/workflows/EmailTemplatesListPage.d.ts.map +1 -1
  796. package/dist/pages/platform/administration/workflows/SmsTemplatesListPage.d.ts +2 -1
  797. package/dist/pages/platform/administration/workflows/SmsTemplatesListPage.d.ts.map +1 -1
  798. package/dist/pages/platform/administration/workflows/WorkflowCreatePage.d.ts +2 -1
  799. package/dist/pages/platform/administration/workflows/WorkflowCreatePage.d.ts.map +1 -1
  800. package/dist/pages/platform/administration/workflows/WorkflowDetailPage.d.ts +2 -1
  801. package/dist/pages/platform/administration/workflows/WorkflowDetailPage.d.ts.map +1 -1
  802. package/dist/pages/platform/administration/workflows/WorkflowEditPage.d.ts +2 -1
  803. package/dist/pages/platform/administration/workflows/WorkflowEditPage.d.ts.map +1 -1
  804. package/dist/pages/platform/administration/workflows/WorkflowHistoryPage.d.ts +2 -1
  805. package/dist/pages/platform/administration/workflows/WorkflowHistoryPage.d.ts.map +1 -1
  806. package/dist/pages/platform/administration/workflows/WorkflowsListPage.d.ts +2 -1
  807. package/dist/pages/platform/administration/workflows/WorkflowsListPage.d.ts.map +1 -1
  808. package/dist/pages/platform/administration/workflows/WorkflowsTriggersPage.d.ts +2 -1
  809. package/dist/pages/platform/administration/workflows/WorkflowsTriggersPage.d.ts.map +1 -1
  810. package/dist/pages/platform/api/apis/ApiCatalogDetailPage.d.ts +2 -1
  811. package/dist/pages/platform/api/apis/ApiCatalogDetailPage.d.ts.map +1 -1
  812. package/dist/pages/platform/api/apis/ApiCatalogPage.d.ts +2 -1
  813. package/dist/pages/platform/api/apis/ApiCatalogPage.d.ts.map +1 -1
  814. package/dist/pages/platform/api/external-apps/ExternalAppDetailPage.d.ts +2 -1
  815. package/dist/pages/platform/api/external-apps/ExternalAppDetailPage.d.ts.map +1 -1
  816. package/dist/pages/platform/api/external-apps/ExternalAppsListPage.d.ts.map +1 -1
  817. package/dist/pages/platform/support/AgentSkillsPage.d.ts +2 -1
  818. package/dist/pages/platform/support/AgentSkillsPage.d.ts.map +1 -1
  819. package/dist/pages/platform/support/AgentWorkloadPage.d.ts +2 -1
  820. package/dist/pages/platform/support/AgentWorkloadPage.d.ts.map +1 -1
  821. package/dist/pages/platform/support/AssignmentRulesPage.d.ts +2 -1
  822. package/dist/pages/platform/support/AssignmentRulesPage.d.ts.map +1 -1
  823. package/dist/pages/platform/support/CreateSupportTicketPage.d.ts +2 -1
  824. package/dist/pages/platform/support/CreateSupportTicketPage.d.ts.map +1 -1
  825. package/dist/pages/platform/support/DashboardPage.d.ts +2 -1
  826. package/dist/pages/platform/support/DashboardPage.d.ts.map +1 -1
  827. package/dist/pages/platform/support/EscalationConfigPage.d.ts +2 -1
  828. package/dist/pages/platform/support/EscalationConfigPage.d.ts.map +1 -1
  829. package/dist/pages/platform/support/MyAgentTicketsPage.d.ts +2 -1
  830. package/dist/pages/platform/support/MyAgentTicketsPage.d.ts.map +1 -1
  831. package/dist/pages/platform/support/MyTicketsPage.d.ts +2 -1
  832. package/dist/pages/platform/support/MyTicketsPage.d.ts.map +1 -1
  833. package/dist/pages/platform/support/SlaConfigPage.d.ts +2 -1
  834. package/dist/pages/platform/support/SlaConfigPage.d.ts.map +1 -1
  835. package/dist/pages/platform/support/SupportPermissionsPage.d.ts +2 -1
  836. package/dist/pages/platform/support/SupportPermissionsPage.d.ts.map +1 -1
  837. package/dist/pages/platform/support/TemplatesPage.d.ts +2 -1
  838. package/dist/pages/platform/support/TemplatesPage.d.ts.map +1 -1
  839. package/dist/pages/platform/support/TestBugPage.d.ts +2 -1
  840. package/dist/pages/platform/support/TestBugPage.d.ts.map +1 -1
  841. package/dist/pages/platform/support/TicketDetailPage.d.ts +2 -1
  842. package/dist/pages/platform/support/TicketDetailPage.d.ts.map +1 -1
  843. package/dist/pages/platform/support/TicketsPage.d.ts +2 -1
  844. package/dist/pages/platform/support/TicketsPage.d.ts.map +1 -1
  845. package/dist/pages/platform/support/UserCreateTicketPage.d.ts +2 -1
  846. package/dist/pages/platform/support/UserCreateTicketPage.d.ts.map +1 -1
  847. package/dist/pages/platform/support/UserTicketDetailPage.d.ts +2 -1
  848. package/dist/pages/platform/support/UserTicketDetailPage.d.ts.map +1 -1
  849. package/dist/pages/system/docs/DocsIndexPage.d.ts +2 -1
  850. package/dist/pages/system/docs/DocsIndexPage.d.ts.map +1 -1
  851. package/dist/pages/system/docs/SmartStackPresentationPage.d.ts +2 -1
  852. package/dist/pages/system/docs/SmartStackPresentationPage.d.ts.map +1 -1
  853. package/dist/pages/system/docs/ba/BaIndexPage.d.ts +2 -1
  854. package/dist/pages/system/docs/ba/BaIndexPage.d.ts.map +1 -1
  855. package/dist/pages/system/docs/ba/BaViewerPage.d.ts +2 -1
  856. package/dist/pages/system/docs/ba/BaViewerPage.d.ts.map +1 -1
  857. package/dist/pages/system/docs/ba/components/CadrageTab.d.ts +3 -2
  858. package/dist/pages/system/docs/ba/components/CadrageTab.d.ts.map +1 -1
  859. package/dist/pages/system/docs/ba/components/SpecificationTab.d.ts +4 -3
  860. package/dist/pages/system/docs/ba/components/SpecificationTab.d.ts.map +1 -1
  861. package/dist/pages/system/docs/ba/components/SyntheseTab.d.ts +3 -2
  862. package/dist/pages/system/docs/ba/components/SyntheseTab.d.ts.map +1 -1
  863. package/dist/pages/system/docs/developer/CrossSchemaFkPage.d.ts +2 -1
  864. package/dist/pages/system/docs/developer/CrossSchemaFkPage.d.ts.map +1 -1
  865. package/dist/pages/system/docs/developer/DatabasePage.d.ts +2 -1
  866. package/dist/pages/system/docs/developer/DatabasePage.d.ts.map +1 -1
  867. package/dist/pages/system/docs/developer/DeveloperIndexPage.d.ts +2 -1
  868. package/dist/pages/system/docs/developer/DeveloperIndexPage.d.ts.map +1 -1
  869. package/dist/pages/system/docs/developer/DualDbContextPage.d.ts +2 -1
  870. package/dist/pages/system/docs/developer/DualDbContextPage.d.ts.map +1 -1
  871. package/dist/pages/system/docs/developer/InfrastructurePage.d.ts +2 -1
  872. package/dist/pages/system/docs/developer/InfrastructurePage.d.ts.map +1 -1
  873. package/dist/pages/system/docs/developer/InstallationPage.d.ts +2 -1
  874. package/dist/pages/system/docs/developer/InstallationPage.d.ts.map +1 -1
  875. package/dist/pages/system/docs/developer/TeamsIntegrationPage.d.ts +2 -1
  876. package/dist/pages/system/docs/developer/TeamsIntegrationPage.d.ts.map +1 -1
  877. package/dist/pages/system/docs/developer/tenants/MultiTenantModePage.d.ts +2 -1
  878. package/dist/pages/system/docs/developer/tenants/MultiTenantModePage.d.ts.map +1 -1
  879. package/dist/pages/system/docs/developer/tenants/TenantB2CPage.d.ts +2 -1
  880. package/dist/pages/system/docs/developer/tenants/TenantB2CPage.d.ts.map +1 -1
  881. package/dist/pages/system/docs/developer/tenants/TenantIndexPage.d.ts +2 -1
  882. package/dist/pages/system/docs/developer/tenants/TenantIndexPage.d.ts.map +1 -1
  883. package/dist/pages/system/docs/developer/testing/SecurityTestingPage.d.ts +2 -1
  884. package/dist/pages/system/docs/developer/testing/SecurityTestingPage.d.ts.map +1 -1
  885. package/dist/pages/system/docs/user/AiDocPage.d.ts +2 -1
  886. package/dist/pages/system/docs/user/AiDocPage.d.ts.map +1 -1
  887. package/dist/pages/system/docs/user/ArchitecturePage.d.ts +2 -1
  888. package/dist/pages/system/docs/user/ArchitecturePage.d.ts.map +1 -1
  889. package/dist/pages/system/docs/user/ModulesPage.d.ts +2 -1
  890. package/dist/pages/system/docs/user/ModulesPage.d.ts.map +1 -1
  891. package/dist/pages/system/docs/user/SettingsDocPage.d.ts +2 -1
  892. package/dist/pages/system/docs/user/SettingsDocPage.d.ts.map +1 -1
  893. package/dist/pages/system/docs/user/SlaDocPage.d.ts +2 -1
  894. package/dist/pages/system/docs/user/SlaDocPage.d.ts.map +1 -1
  895. package/dist/pages/system/docs/user/SupportDashboardDocPage.d.ts +2 -1
  896. package/dist/pages/system/docs/user/SupportDashboardDocPage.d.ts.map +1 -1
  897. package/dist/pages/system/docs/user/SupportEscalationDocPage.d.ts +2 -1
  898. package/dist/pages/system/docs/user/SupportEscalationDocPage.d.ts.map +1 -1
  899. package/dist/pages/system/docs/user/SupportIndexPage.d.ts +2 -1
  900. package/dist/pages/system/docs/user/SupportIndexPage.d.ts.map +1 -1
  901. package/dist/pages/system/docs/user/SupportMyTicketsDocPage.d.ts +2 -1
  902. package/dist/pages/system/docs/user/SupportMyTicketsDocPage.d.ts.map +1 -1
  903. package/dist/pages/system/docs/user/SupportTemplatesDocPage.d.ts +2 -1
  904. package/dist/pages/system/docs/user/SupportTemplatesDocPage.d.ts.map +1 -1
  905. package/dist/pages/system/docs/user/SupportTicketsDocPage.d.ts +2 -1
  906. package/dist/pages/system/docs/user/SupportTicketsDocPage.d.ts.map +1 -1
  907. package/dist/pages/system/docs/user/ThemeDocPage.d.ts +2 -1
  908. package/dist/pages/system/docs/user/ThemeDocPage.d.ts.map +1 -1
  909. package/dist/pages/system/docs/user/UserIndexPage.d.ts +2 -1
  910. package/dist/pages/system/docs/user/UserIndexPage.d.ts.map +1 -1
  911. package/dist/provider/SmartStackProvider.d.ts +4 -3
  912. package/dist/provider/SmartStackProvider.d.ts.map +1 -1
  913. package/dist/services/api/adminApi/applications.d.ts +4 -1
  914. package/dist/services/api/adminApi/applications.d.ts.map +1 -1
  915. package/dist/services/api/adminApi/dashboard.d.ts +4 -1
  916. package/dist/services/api/adminApi/dashboard.d.ts.map +1 -1
  917. package/dist/services/api/adminApi/externalApps.d.ts +7 -2
  918. package/dist/services/api/adminApi/externalApps.d.ts.map +1 -1
  919. package/dist/services/api/adminApi/index.d.ts.map +1 -1
  920. package/dist/services/api/adminApi/roles.d.ts +7 -2
  921. package/dist/services/api/adminApi/roles.d.ts.map +1 -1
  922. package/dist/services/api/adminApi/settings.d.ts +7 -2
  923. package/dist/services/api/adminApi/settings.d.ts.map +1 -1
  924. package/dist/services/api/adminApi/tenants.d.ts +13 -4
  925. package/dist/services/api/adminApi/tenants.d.ts.map +1 -1
  926. package/dist/services/api/adminApi/users.d.ts +3 -1
  927. package/dist/services/api/adminApi/users.d.ts.map +1 -1
  928. package/dist/services/api/groupsApi.d.ts +4 -1
  929. package/dist/services/api/groupsApi.d.ts.map +1 -1
  930. package/dist/services/api/referencesApi.d.ts +4 -1
  931. package/dist/services/api/referencesApi.d.ts.map +1 -1
  932. package/dist/services/logging/logService.d.ts.map +1 -1
  933. package/dist/smartstack.cjs +1 -1
  934. package/dist/smartstack.js +1 -1
  935. package/dist/styles.css +1 -1
  936. package/dist/utils/deviceDetection.d.ts.map +1 -1
  937. package/dist/utils/renderLucideIcon.d.ts +2 -1
  938. package/dist/utils/renderLucideIcon.d.ts.map +1 -1
  939. package/dist/utils/tenantUrl.d.ts.map +1 -1
  940. package/package.json +1 -1
  941. package/dist/AuthCallbackPage-Bv2Cyn80.cjs.map +0 -1
  942. package/dist/AuthCallbackPage-Cu74zAX1.js.map +0 -1
  943. package/dist/BaIndexPage-BhdOX87v.cjs +0 -2
  944. package/dist/BaIndexPage-BhdOX87v.cjs.map +0 -1
  945. package/dist/BaIndexPage-Dkp_Eixx.js.map +0 -1
  946. package/dist/BaViewerPage-DxD0eZm-.js.map +0 -1
  947. package/dist/BaViewerPage-SYgjCF7x.cjs +0 -2
  948. package/dist/BaViewerPage-SYgjCF7x.cjs.map +0 -1
  949. package/dist/ConfirmEmailPage-BTp8J0pw.js.map +0 -1
  950. package/dist/ConfirmEmailPage-su3Fvl0e.cjs.map +0 -1
  951. package/dist/DatabasePage-CRq_-Yo2.cjs +0 -2
  952. package/dist/DatabasePage-CRq_-Yo2.cjs.map +0 -1
  953. package/dist/DatabasePage-DFIK8cSM.js.map +0 -1
  954. package/dist/DocRenderer-B-1NdDfC.cjs +0 -2
  955. package/dist/DocRenderer-B-1NdDfC.cjs.map +0 -1
  956. package/dist/DocRenderer-CcEn1iaa.js.map +0 -1
  957. package/dist/DualDbContextPage--Qk-qEgD.cjs.map +0 -1
  958. package/dist/DualDbContextPage-BujD_coN.js.map +0 -1
  959. package/dist/ForceChangePasswordPage-ClENqzCH.js.map +0 -1
  960. package/dist/ForceChangePasswordPage-kEFsb5Aq.cjs.map +0 -1
  961. package/dist/ForgotPasswordPage--Wl0Vxbv.cjs.map +0 -1
  962. package/dist/ForgotPasswordPage-BEgvV5f-.js.map +0 -1
  963. package/dist/OnboardingWizardPage-Bx1UlTbr.js.map +0 -1
  964. package/dist/OnboardingWizardPage-C7vendrq.cjs.map +0 -1
  965. package/dist/RegisterPage-BzV0sCTe.js.map +0 -1
  966. package/dist/RegisterPage-DKr8quRk.cjs.map +0 -1
  967. package/dist/ResetPasswordPage-DphmJrcJ.js.map +0 -1
  968. package/dist/ResetPasswordPage-x4do1o-j.cjs.map +0 -1
  969. package/dist/SupportDashboardDocPage-CLotzEwA.js.map +0 -1
  970. package/dist/SupportDashboardDocPage-DpgGq5Mm.cjs.map +0 -1
  971. package/dist/SupportEscalationDocPage-B-_ChfdN.js.map +0 -1
  972. package/dist/SupportEscalationDocPage-WXkAQr8k.cjs.map +0 -1
  973. package/dist/SupportMyTicketsDocPage-DeRUdAIi.js.map +0 -1
  974. package/dist/SupportMyTicketsDocPage-jE1UMaIY.cjs.map +0 -1
  975. package/dist/SupportTemplatesDocPage-C8ZLzFJc.js.map +0 -1
  976. package/dist/SupportTemplatesDocPage-ajO-cHmK.cjs.map +0 -1
  977. package/dist/SupportTicketsDocPage-C_ybDTjC.cjs.map +0 -1
  978. package/dist/SupportTicketsDocPage-DQhHfa6J.js.map +0 -1
  979. package/dist/index-0Jhdcj59.js.map +0 -1
  980. package/dist/index-ASxPhrgZ.cjs.map +0 -1
  981. package/dist/index-B2rKKVDN.js.map +0 -1
  982. package/dist/index-BP5i2CQo.cjs +0 -2
  983. package/dist/index-BP5i2CQo.cjs.map +0 -1
  984. package/dist/index-BYhFG50Z.cjs.map +0 -1
  985. package/dist/index-BcO3pBlL.js.map +0 -1
  986. package/dist/index-BlHDI4zj.js.map +0 -1
  987. package/dist/index-Blfc9wKG.js.map +0 -1
  988. package/dist/index-BnWMDCRU.cjs.map +0 -1
  989. package/dist/index-By0u9UFY.js.map +0 -1
  990. package/dist/index-C40Dlolq.js.map +0 -1
  991. package/dist/index-C54HbULX.cjs.map +0 -1
  992. package/dist/index-C6C5XmVj.cjs +0 -48
  993. package/dist/index-C6C5XmVj.cjs.map +0 -1
  994. package/dist/index-C9BaizLE.cjs +0 -2
  995. package/dist/index-C9BaizLE.cjs.map +0 -1
  996. package/dist/index-CBOLnJkG.cjs.map +0 -1
  997. package/dist/index-CI1DJrFE.js.map +0 -1
  998. package/dist/index-CU66n-zU.js.map +0 -1
  999. package/dist/index-CUISVUMx.js.map +0 -1
  1000. package/dist/index-CnmIX2MY.js.map +0 -1
  1001. package/dist/index-CtcdHE_9.cjs +0 -2
  1002. package/dist/index-CtcdHE_9.cjs.map +0 -1
  1003. package/dist/index-Cv7iWoG8.js.map +0 -1
  1004. package/dist/index-D4u23zHI.js.map +0 -1
  1005. package/dist/index-D8xuGyjU.js.map +0 -1
  1006. package/dist/index-DKK07NF1.cjs +0 -2
  1007. package/dist/index-DKK07NF1.cjs.map +0 -1
  1008. package/dist/index-DmuVa7Ye.cjs.map +0 -1
  1009. package/dist/index-Du4fQfix.cjs.map +0 -1
  1010. package/dist/index-DwATtWun.js.map +0 -1
  1011. package/dist/index-Dxau-XnQ.cjs.map +0 -1
  1012. package/dist/index-Txfokhn3.cjs.map +0 -1
  1013. package/dist/index-ZVUUUZmv.cjs +0 -2
  1014. package/dist/index-ZVUUUZmv.cjs.map +0 -1
  1015. package/dist/index-eAHjmtzn.cjs.map +0 -1
  1016. package/dist/index-jpSTOjXU.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocRenderer-CcEn1iaa.js","sources":["../src/components/docs/DocRenderer.tsx"],"sourcesContent":["import { useMemo } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {\r\n ArrowLeft,\r\n CheckCircle,\r\n XCircle,\r\n Lightbulb,\r\n Target,\r\n Clock,\r\n DollarSign,\r\n Users,\r\n TrendingUp,\r\n Zap,\r\n Shield,\r\n Gauge,\r\n} from 'lucide-react';\r\nimport type { DocData } from './types';\r\n\r\ninterface DocRendererProps {\r\n data: DocData;\r\n backPath?: string;\r\n backLabel?: string;\r\n i18nNamespace?: string;\r\n}\r\n\r\nexport function DocRenderer({ data, backPath = '/docs', backLabel = 'nav.backToDocs', i18nNamespace = 'docs' }: DocRendererProps) {\r\n const { t } = useTranslation([i18nNamespace, 'docs']);\r\n\r\n const sectionNumbers = useMemo(() => {\r\n let n = 0;\r\n return {\r\n valeur: ++n,\r\n useCases: data.useCases?.length ? ++n : 0,\r\n benefits: data.benefits?.length ? ++n : 0,\r\n beforeAfter: data.beforeAfter ? ++n : 0,\r\n features: data.features?.length ? ++n : 0,\r\n steps: data.steps?.length ? ++n : 0,\r\n faq: data.faq?.length ? ++n : 0,\r\n reference: (data.businessRules || data.permissions || data.apiEndpoints) ? ++n : 0,\r\n };\r\n }, [data]);\r\n\r\n const getBenefitIcon = (icon: string) => {\r\n switch (icon) {\r\n case 'time':\r\n return <Clock className=\"w-8 h-8 text-blue-600\" />;\r\n case 'quality':\r\n return <TrendingUp className=\"w-8 h-8 text-green-600\" />;\r\n case 'roi':\r\n return <DollarSign className=\"w-8 h-8 text-amber-600\" />;\r\n case 'users':\r\n return <Users className=\"w-8 h-8 text-purple-600\" />;\r\n case 'automation':\r\n return <Zap className=\"w-8 h-8 text-orange-600\" />;\r\n case 'security':\r\n return <Shield className=\"w-8 h-8 text-red-600\" />;\r\n default:\r\n return <Gauge className=\"w-8 h-8 text-gray-600\" />;\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"space-y-8\">\r\n {/* Back Navigation */}\r\n {backPath && (\r\n <Link\r\n to={backPath}\r\n className=\"inline-flex items-center gap-2 text-[var(--text-secondary)] hover:text-[var(--color-primary-600)] transition-colors\"\r\n >\r\n <ArrowLeft className=\"w-4 h-4\" />\r\n {t(backLabel)}\r\n </Link>\r\n )}\r\n\r\n {/* Header */}\r\n <div>\r\n <h1 className=\"text-3xl font-bold mb-4\">\r\n {data.overview.title ? t(data.overview.title) : t(data.overview.objective)}\r\n </h1>\r\n {data.overview.title && (\r\n <p className=\"text-lg text-[var(--text-secondary)] mb-2\">{t(data.overview.objective)}</p>\r\n )}\r\n <p className=\"text-xl text-[var(--color-primary-600)] font-medium mb-2\">\r\n {t(data.overview.solution)}\r\n </p>\r\n {data.overview.stats && (\r\n <div className=\"flex gap-4 text-sm text-[var(--text-secondary)]\">\r\n {data.overview.stats.useCases && (\r\n <span>{data.overview.stats.useCases} cas d'usage</span>\r\n )}\r\n {data.overview.stats.businessRules && (\r\n <span>{data.overview.stats.businessRules} règles métier</span>\r\n )}\r\n {data.overview.stats.permissions && (\r\n <span>{data.overview.stats.permissions} permissions</span>\r\n )}\r\n {data.overview.stats.endpoints && (\r\n <span>{data.overview.stats.endpoints} endpoints API</span>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Section: Valeur Métier */}\r\n <section id=\"valeur\" className=\"scroll-mt-4\">\r\n <h2 className=\"text-2xl font-bold mb-4 flex items-center gap-2\">\r\n <span className=\"w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm\">\r\n {sectionNumbers.valeur}\r\n </span>\r\n Pourquoi ce module ?\r\n </h2>\r\n\r\n <div className=\"card p-6\">\r\n <div className=\"mb-6\">\r\n <h3 className=\"font-semibold mb-3 flex items-center gap-2\">\r\n <Target className=\"w-5 h-5 text-red-500\" />\r\n Le problème que nous résolvons\r\n </h3>\r\n <p className=\"text-[var(--text-secondary)]\">{t(data.overview.problem)}</p>\r\n </div>\r\n\r\n <div className=\"p-4 rounded-lg bg-green-500/10 border border-green-500/20\">\r\n <h3 className=\"font-semibold mb-2 flex items-center gap-2 text-green-700\">\r\n <Lightbulb className=\"w-5 h-5\" />\r\n Notre solution\r\n </h3>\r\n <p className=\"text-[var(--text-secondary)]\">{t(data.overview.solution)}</p>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n {/* Section: Cas d'usage */}\r\n {data.useCases && data.useCases.length > 0 && (\r\n <section id=\"cas-usage\" className=\"scroll-mt-4\">\r\n <h2 className=\"text-2xl font-bold mb-4 flex items-center gap-2\">\r\n <span className=\"w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm\">\r\n {sectionNumbers.useCases}\r\n </span>\r\n Cas d'usage\r\n </h2>\r\n\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n {data.useCases.map((useCase) => (\r\n <div key={useCase.id} className=\"card p-6\">\r\n <div className=\"flex items-center gap-3 mb-4\">\r\n <div className=\"w-12 h-12 rounded-full bg-blue-500/10 flex items-center justify-center\">\r\n <Users className=\"w-6 h-6 text-blue-600\" />\r\n </div>\r\n <div>\r\n <div className=\"font-semibold\">{t(useCase.name)}</div>\r\n <div className=\"text-sm text-[var(--text-secondary)]\">{useCase.actor}</div>\r\n </div>\r\n </div>\r\n <p className=\"text-sm text-[var(--text-secondary)]\">{t(useCase.description)}</p>\r\n {useCase.priority && (\r\n <span className=\"inline-block mt-3 px-2 py-1 text-xs rounded bg-[var(--bg-secondary)] text-[var(--text-secondary)]\">\r\n Priorité: {useCase.priority}\r\n </span>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </section>\r\n )}\r\n\r\n {/* Section: Bénéfices */}\r\n {data.benefits && data.benefits.length > 0 && (\r\n <section id=\"benefices\" className=\"scroll-mt-4\">\r\n <h2 className=\"text-2xl font-bold mb-4 flex items-center gap-2\">\r\n <span className=\"w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm\">\r\n {sectionNumbers.benefits}\r\n </span>\r\n Bénéfices concrets\r\n </h2>\r\n\r\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\r\n {data.benefits.map((benefit, index) => (\r\n <div key={index} className=\"card p-6 text-center\">\r\n <div className=\"w-16 h-16 mx-auto mb-4 rounded-full bg-blue-500/10 flex items-center justify-center\">\r\n {getBenefitIcon(benefit.icon)}\r\n </div>\r\n <div className=\"text-3xl font-bold text-[var(--color-primary-600)] mb-2\">\r\n {benefit.value}\r\n </div>\r\n <div className=\"font-semibold mb-1\">{t(benefit.titleKey)}</div>\r\n <p className=\"text-sm text-[var(--text-secondary)]\">{t(benefit.descriptionKey)}</p>\r\n </div>\r\n ))}\r\n </div>\r\n </section>\r\n )}\r\n\r\n {/* Section: Avant/Après */}\r\n {data.beforeAfter && (\r\n <section id=\"avant-apres\" className=\"scroll-mt-4\">\r\n <h2 className=\"text-2xl font-bold mb-4 flex items-center gap-2\">\r\n <span className=\"w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm\">\r\n {sectionNumbers.beforeAfter}\r\n </span>\r\n Avant / Après\r\n </h2>\r\n\r\n <div className=\"card p-6\">\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\r\n <div className=\"p-4 rounded-lg bg-red-500/5 border border-red-500/20\">\r\n <h3 className=\"font-semibold mb-4 flex items-center gap-2 text-red-600\">\r\n <XCircle className=\"w-5 h-5\" />\r\n Avant\r\n </h3>\r\n <ul className=\"space-y-2\">\r\n {data.beforeAfter.beforeItems.map((item, index) => (\r\n <li key={index} className=\"flex items-start gap-2 text-sm\">\r\n <XCircle className=\"w-4 h-4 text-red-500 mt-0.5 flex-shrink-0\" />\r\n <span>{item}</span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n\r\n <div className=\"p-4 rounded-lg bg-green-500/5 border border-green-500/20\">\r\n <h3 className=\"font-semibold mb-4 flex items-center gap-2 text-green-600\">\r\n <CheckCircle className=\"w-5 h-5\" />\r\n Après\r\n </h3>\r\n <ul className=\"space-y-2\">\r\n {data.beforeAfter.afterItems.map((item, index) => (\r\n <li key={index} className=\"flex items-start gap-2 text-sm\">\r\n <CheckCircle className=\"w-4 h-4 text-green-500 mt-0.5 flex-shrink-0\" />\r\n <span>{item}</span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n )}\r\n\r\n {/* Section: Fonctionnalités */}\r\n {data.features && data.features.length > 0 && (\r\n <section id=\"fonctionnalites\" className=\"scroll-mt-4\">\r\n <h2 className=\"text-2xl font-bold mb-4 flex items-center gap-2\">\r\n <span className=\"w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm\">\r\n {sectionNumbers.features}\r\n </span>\r\n Ce que vous pouvez faire\r\n </h2>\r\n\r\n <div className=\"space-y-4\">\r\n {data.features.map((feature) => (\r\n <div key={feature.id} className=\"card p-6\">\r\n <div className=\"flex items-start gap-4\">\r\n <div className=\"w-12 h-12 rounded-lg bg-[var(--color-primary-600)]/10 flex items-center justify-center flex-shrink-0\">\r\n <Zap className=\"w-6 h-6 text-[var(--color-primary-600)]\" />\r\n </div>\r\n <div className=\"flex-1\">\r\n <h3 className=\"font-semibold mb-2\">{t(feature.title)}</h3>\r\n <p className=\"text-[var(--text-secondary)] mb-3\">{t(feature.description)}</p>\r\n {feature.example && (\r\n <div className=\"p-3 rounded-lg bg-[var(--bg-secondary)] text-sm\">\r\n <span className=\"font-medium text-[var(--color-primary-600)]\">Exemple: </span>\r\n {t(feature.example)}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </section>\r\n )}\r\n\r\n {/* Section: Guide pas à pas */}\r\n {data.steps && data.steps.length > 0 && (\r\n <section id=\"guide\" className=\"scroll-mt-4\">\r\n <h2 className=\"text-2xl font-bold mb-4 flex items-center gap-2\">\r\n <span className=\"w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm\">\r\n {sectionNumbers.steps}\r\n </span>\r\n Comment démarrer\r\n </h2>\r\n\r\n <div className=\"card p-6\">\r\n <div className=\"space-y-6\">\r\n {data.steps.map((step, index) => (\r\n <div key={step.number} className=\"flex gap-4\">\r\n <div className=\"flex flex-col items-center\">\r\n <div className=\"w-10 h-10 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center font-bold\">\r\n {step.number}\r\n </div>\r\n {index < data.steps!.length - 1 && (\r\n <div className=\"w-0.5 h-full bg-[var(--border-color)] mt-2\"></div>\r\n )}\r\n </div>\r\n <div className=\"flex-1 pb-6\">\r\n <h4 className=\"font-semibold mb-2\">{step.title}</h4>\r\n <p className=\"text-sm text-[var(--text-secondary)] mb-3\">{step.description}</p>\r\n {step.screenshotKey && data.screenshots?.[step.screenshotKey] && (\r\n <img\r\n src={data.screenshots[step.screenshotKey]}\r\n alt={step.title}\r\n className=\"rounded-lg border border-[var(--border-color)]\"\r\n onError={(e) => {\r\n (e.target as HTMLImageElement).style.display = 'none';\r\n }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n )}\r\n\r\n {/* Section: FAQ */}\r\n {data.faq && data.faq.length > 0 && (\r\n <section id=\"faq\" className=\"scroll-mt-4\">\r\n <h2 className=\"text-2xl font-bold mb-4 flex items-center gap-2\">\r\n <span className=\"w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm\">\r\n {sectionNumbers.faq}\r\n </span>\r\n Questions fréquentes\r\n </h2>\r\n\r\n <div className=\"space-y-4\">\r\n {data.faq.map((faqItem, index) => (\r\n <div key={index} className=\"card p-4\">\r\n <h3 className=\"font-medium mb-2\">{t(faqItem.questionKey)}</h3>\r\n <p className=\"text-sm text-[var(--text-secondary)]\">{t(faqItem.answerKey)}</p>\r\n </div>\r\n ))}\r\n </div>\r\n </section>\r\n )}\r\n\r\n {/* Section: Référence technique */}\r\n {(data.businessRules || data.permissions || data.apiEndpoints) && (\r\n <section id=\"reference\" className=\"scroll-mt-4\">\r\n <details className=\"card\">\r\n <summary className=\"p-4 cursor-pointer hover:bg-[var(--bg-secondary)] rounded-lg font-semibold flex items-center gap-2\">\r\n <span className=\"w-8 h-8 rounded-full bg-gray-500/10 text-gray-600 flex items-center justify-center text-sm\">\r\n {sectionNumbers.reference}\r\n </span>\r\n Référence technique (administrateurs)\r\n </summary>\r\n <div className=\"p-4 pt-0 space-y-6\">\r\n {/* Business Rules */}\r\n {data.businessRules && data.businessRules.length > 0 && (\r\n <div>\r\n <h3 className=\"font-semibold mb-3\">Règles métier</h3>\r\n <div className=\"space-y-2\">\r\n {data.businessRules.map((rule) => (\r\n <div key={rule.id} className=\"p-3 rounded-lg bg-[var(--bg-secondary)]\">\r\n <div className=\"flex items-center gap-2 mb-1\">\r\n <span className=\"text-xs font-mono text-[var(--color-primary-600)]\">\r\n {rule.id}\r\n </span>\r\n <span className=\"text-xs px-2 py-0.5 rounded bg-[var(--color-primary-600)]/10\">\r\n {rule.category}\r\n </span>\r\n </div>\r\n <div className=\"font-medium text-sm\">{rule.name}</div>\r\n <p className=\"text-xs text-[var(--text-secondary)] mt-1\">{t(rule.statement)}</p>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Permissions */}\r\n {data.permissions && data.permissions.length > 0 && (\r\n <div>\r\n <h3 className=\"font-semibold mb-3\">Permissions</h3>\r\n <div className=\"overflow-x-auto\">\r\n <table className=\"w-full text-sm\">\r\n <thead>\r\n <tr className=\"border-b border-[var(--border-color)]\">\r\n <th className=\"text-left py-2 px-3\">Permission</th>\r\n <th className=\"text-left py-2 px-3\">Description</th>\r\n <th className=\"text-left py-2 px-3\">Rôles</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {data.permissions.map((perm, index) => (\r\n <tr key={index} className=\"border-b border-[var(--border-color)]\">\r\n <td className=\"py-2 px-3 font-mono text-xs\">{perm.path}</td>\r\n <td className=\"py-2 px-3\">{perm.description}</td>\r\n <td className=\"py-2 px-3\">\r\n <div className=\"flex flex-wrap gap-1\">\r\n {perm.roles.map((role) => (\r\n <span\r\n key={role}\r\n className=\"px-2 py-0.5 rounded bg-[var(--color-primary-600)]/10 text-xs\"\r\n >\r\n {role}\r\n </span>\r\n ))}\r\n </div>\r\n </td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* API Endpoints */}\r\n {data.apiEndpoints && data.apiEndpoints.length > 0 && (\r\n <div>\r\n <h3 className=\"font-semibold mb-3\">Points de terminaison API</h3>\r\n <div className=\"space-y-2\">\r\n {data.apiEndpoints.map((endpoint, index) => (\r\n <div key={index} className=\"p-3 rounded-lg bg-[var(--bg-secondary)]\">\r\n <div className=\"flex items-center gap-2 mb-1\">\r\n <span\r\n className={`text-xs font-bold px-2 py-0.5 rounded ${\r\n endpoint.method === 'GET'\r\n ? 'bg-blue-500/10 text-blue-600'\r\n : endpoint.method === 'POST'\r\n ? 'bg-green-500/10 text-green-600'\r\n : endpoint.method === 'PUT' || endpoint.method === 'PATCH'\r\n ? 'bg-orange-500/10 text-orange-600'\r\n : 'bg-red-500/10 text-red-600'\r\n }`}\r\n >\r\n {endpoint.method}\r\n </span>\r\n <code className=\"text-xs\">{endpoint.path}</code>\r\n </div>\r\n <div className=\"text-xs text-[var(--text-secondary)] mt-1\">\r\n Handler: {endpoint.handler} | Permission: {endpoint.permission}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </details>\r\n </section>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"names":["DocRenderer","data","backPath","backLabel","i18nNamespace","useTranslation","sectionNumbers","useMemo","n","getBenefitIcon","icon","jsx","Clock","TrendingUp","DollarSign","Users","Zap","Shield","Gauge","jsxs","Link","ArrowLeft","Target","Lightbulb","useCase","benefit","index","XCircle","item","CheckCircle","feature","step","e","faqItem","rule","perm","role","endpoint"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DualDbContextPage--Qk-qEgD.cjs","sources":["../src/pages/system/docs/developer/DualDbContextPage.tsx"],"sourcesContent":["import { Link } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Database, Layers, Package, ArrowRight, Code2, AlertTriangle, CheckCircle2 } from 'lucide-react';\r\n\r\ninterface DbContextInfo {\r\n name: string;\r\n schema: string;\r\n historyTable: string;\r\n description: string;\r\n entities: string[];\r\n color: string;\r\n}\r\n\r\nconst dbContexts: DbContextInfo[] = [\r\n {\r\n name: 'CoreDbContext',\r\n schema: 'core',\r\n historyTable: 'core.__EFMigrationsHistory',\r\n description: 'Manages all SmartStack platform entities. Distributed via NuGet package.',\r\n entities: [\r\n 'User, Role, Permission, UserRole',\r\n 'NavigationApplication, NavigationModule',\r\n 'AiProvider, AiModel, Prompt, OutputSchema',\r\n 'EntraConfiguration, EntraGroup, EntraSyncState',\r\n 'Ticket, TicketComment, Notification',\r\n 'Setting, License, Workflow',\r\n ],\r\n color: 'from-blue-500 to-cyan-500',\r\n },\r\n {\r\n name: 'ExtensionsDbContext',\r\n schema: 'extensions',\r\n historyTable: 'extensions.__EFMigrationsHistory',\r\n description: 'Manages client-specific entities. Created by CLI in client projects.',\r\n entities: [\r\n 'Your custom entities (Order, Product, Invoice, etc.)',\r\n 'Client-specific business logic entities',\r\n 'Extension tables that reference Core entities via GUID',\r\n ],\r\n color: 'from-purple-500 to-pink-500',\r\n },\r\n];\r\n\r\nfunction DbContextCard({ context, contextKey }: { context: DbContextInfo; contextKey: string }) {\r\n const { t } = useTranslation('docs');\r\n\r\n return (\r\n <div className=\"card p-6\">\r\n <div className={`w-12 h-12 rounded-lg bg-gradient-to-r ${context.color} flex items-center justify-center mb-4`}>\r\n <Database className=\"w-6 h-6 text-white\" />\r\n </div>\r\n <h3 className=\"text-xl font-bold mb-2\">{t(`dualDbContextPage.contextCards.${contextKey}.name`)}</h3>\r\n <p className=\"text-[var(--text-secondary)] mb-4\">{t(`dualDbContextPage.contextCards.${contextKey}.description`)}</p>\r\n\r\n <div className=\"space-y-3\">\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-sm text-[var(--text-tertiary)]\">{t(`dualDbContextPage.contextCards.${contextKey}.schema`)}</span>\r\n <code className=\"px-2 py-0.5 bg-[var(--bg-secondary)] rounded text-sm font-mono\">{t(`dualDbContextPage.contextCards.${contextKey}.schemaValue`)}</code>\r\n </div>\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-sm text-[var(--text-tertiary)]\">{t(`dualDbContextPage.contextCards.${contextKey}.history`)}</span>\r\n <code className=\"px-2 py-0.5 bg-[var(--bg-secondary)] rounded text-sm font-mono\">{t(`dualDbContextPage.contextCards.${contextKey}.historyTable`)}</code>\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-4 pt-4 border-t border-[var(--border-color)]\">\r\n <span className=\"text-sm font-medium\">{t(`dualDbContextPage.contextCards.${contextKey}.entities`)}</span>\r\n <ul className=\"mt-2 space-y-1\">\r\n {[1, 2, 3].map((idx) => {\r\n const entityKey = `entity${idx}`;\r\n const entityText = t(`dualDbContextPage.contextCards.${contextKey}.${entityKey}`, { defaultValue: '' });\r\n return entityText ? (\r\n <li key={idx} className=\"text-sm text-[var(--text-secondary)] flex items-start gap-2\">\r\n <span className=\"text-[var(--color-primary-600)]\">-</span>\r\n {entityText}\r\n </li>\r\n ) : null;\r\n })}\r\n </ul>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction CodeBlock({ code, language = 'csharp' }: { code: string; language?: string }) {\r\n return (\r\n <pre className=\"bg-[var(--bg-tertiary)] rounded-lg p-4 overflow-x-auto\">\r\n <code className={`language-${language} text-sm`}>{code}</code>\r\n </pre>\r\n );\r\n}\r\n\r\nexport function DualDbContextPage() {\r\n const { t } = useTranslation('docs');\r\n\r\n return (\r\n <div className=\"space-y-8\">\r\n {/* Breadcrumb */}\r\n <div className=\"flex items-center gap-2 text-sm text-[var(--text-secondary)]\">\r\n <Link to=\"/system/docs\" className=\"hover:text-[var(--color-primary-600)]\">{t('dualDbContextPage.breadcrumb.documentation')}</Link>\r\n <span>/</span>\r\n <Link to=\"/system/docs/developer\" className=\"hover:text-[var(--color-primary-600)]\">{t('dualDbContextPage.breadcrumb.developer')}</Link>\r\n <span>/</span>\r\n <span>{t('dualDbContextPage.breadcrumb.title')}</span>\r\n </div>\r\n\r\n {/* Header */}\r\n <div>\r\n <h1 className=\"text-3xl font-bold mb-4 flex items-center gap-3\">\r\n <Layers className=\"w-8 h-8 text-[var(--color-primary-600)]\" />\r\n {t('dualDbContextPage.header.title')}\r\n </h1>\r\n <p className=\"text-lg text-[var(--text-secondary)]\">\r\n {t('dualDbContextPage.header.subtitle')}\r\n </p>\r\n </div>\r\n\r\n {/* Why Section */}\r\n <section className=\"card p-6\">\r\n <h2 className=\"text-xl font-bold mb-4 flex items-center gap-2\">\r\n <AlertTriangle className=\"w-5 h-5 text-[var(--warning-text)]\" />\r\n {t('dualDbContextPage.whySection.title')}\r\n </h2>\r\n <div className=\"space-y-4 text-[var(--text-secondary)]\">\r\n <p>\r\n {t('dualDbContextPage.whySection.description')}\r\n </p>\r\n <ul className=\"list-disc list-inside space-y-2 ml-4\">\r\n <li>\r\n <strong>{t('dualDbContextPage.whySection.problem1')}</strong> - {t('dualDbContextPage.whySection.problem1Desc')}\r\n </li>\r\n <li>\r\n <strong>{t('dualDbContextPage.whySection.problem2')}</strong> - {t('dualDbContextPage.whySection.problem2Desc')}\r\n </li>\r\n <li>\r\n <strong>{t('dualDbContextPage.whySection.problem3')}</strong> - {t('dualDbContextPage.whySection.problem3Desc')}\r\n </li>\r\n </ul>\r\n </div>\r\n </section>\r\n\r\n {/* Solution Section */}\r\n <section className=\"card p-6\">\r\n <h2 className=\"text-xl font-bold mb-4 flex items-center gap-2\">\r\n <CheckCircle2 className=\"w-5 h-5 text-[var(--success-text)]\" />\r\n {t('dualDbContextPage.solutionSection.title')}\r\n </h2>\r\n <div className=\"grid md:grid-cols-2 gap-6\">\r\n <DbContextCard context={dbContexts[0]} contextKey=\"coreDbContext\" />\r\n <DbContextCard context={dbContexts[1]} contextKey=\"extensionsDbContext\" />\r\n </div>\r\n </section>\r\n\r\n {/* Database Schema Diagram */}\r\n <section className=\"card p-6\">\r\n <h2 className=\"text-xl font-bold mb-4 flex items-center gap-2\">\r\n <Database className=\"w-5 h-5\" />\r\n {t('dualDbContextPage.databaseStructure.title')}\r\n </h2>\r\n <div className=\"bg-[var(--bg-secondary)] rounded-lg p-6\">\r\n <pre className=\"text-sm font-mono whitespace-pre\">\r\n{`SmartStack Database (single SQL Server database)\r\n├── core schema\r\n│ ├── __EFMigrationsHistory (Core migrations only)\r\n│ ├── auth_Users\r\n│ ├── auth_Roles\r\n│ ├── auth_Permissions\r\n│ ├── nav_Applications\r\n│ ├── nav_Modules\r\n│ ├── ai_Providers\r\n│ ├── ai_Models\r\n│ └── ... (all SmartStack tables)\r\n│\r\n└── extensions schema\r\n ├── __EFMigrationsHistory (Extensions migrations only)\r\n ├── biz_Orders (example client table)\r\n ├── biz_Products (example client table)\r\n └── ... (all client tables)`}\r\n </pre>\r\n </div>\r\n </section>\r\n\r\n {/* Configuration Section */}\r\n <section className=\"card p-6\">\r\n <h2 className=\"text-xl font-bold mb-4 flex items-center gap-2\">\r\n <Code2 className=\"w-5 h-5\" />\r\n {t('dualDbContextPage.efCoreConfiguration.title')}\r\n </h2>\r\n\r\n <h3 className=\"font-semibold mt-4 mb-2\">{t('dualDbContextPage.efCoreConfiguration.coreDbContextTitle')}</h3>\r\n <CodeBlock code={`// Dans DependencyInjection.cs (SmartStack.Infrastructure)\r\nservices.AddDbContext<CoreDbContext>(options =>\r\n{\r\n options.UseSqlServer(connectionString, b =>\r\n {\r\n b.MigrationsAssembly(typeof(CoreDbContext).Assembly.FullName);\r\n b.MigrationsHistoryTable(\"__EFMigrationsHistory\", \"core\"); // <-- Schema core\r\n });\r\n});`} />\r\n\r\n <h3 className=\"font-semibold mt-6 mb-2\">{t('dualDbContextPage.efCoreConfiguration.extensionsDbContextTitle')}</h3>\r\n <CodeBlock code={`// Dans DependencyInjection.cs (Client.Infrastructure)\r\nservices.AddDbContext<ExtensionsDbContext>(options =>\r\n{\r\n options.UseSqlServer(connectionString, b =>\r\n {\r\n b.MigrationsAssembly(typeof(ExtensionsDbContext).Assembly.FullName);\r\n b.MigrationsHistoryTable(\"__EFMigrationsHistory\", \"extensions\"); // <-- Schema extensions\r\n });\r\n});`} />\r\n </section>\r\n\r\n {/* Migration Order Section */}\r\n <section className=\"card p-6\">\r\n <h2 className=\"text-xl font-bold mb-4 flex items-center gap-2\">\r\n <ArrowRight className=\"w-5 h-5\" />\r\n {t('dualDbContextPage.migrationOrder.title')}\r\n </h2>\r\n <div className=\"bg-[var(--info-bg)] border border-[var(--info-border)] rounded-lg p-4 mb-4\">\r\n <p className=\"text-[var(--info-text)]\">\r\n <strong>Important:</strong> {t('dualDbContextPage.migrationOrder.important')}\r\n </p>\r\n </div>\r\n <CodeBlock code={`// Dans Program.cs\r\nif (app.Environment.IsDevelopment())\r\n{\r\n using var scope = app.Services.CreateScope();\r\n\r\n // 1. D'abord Core (SmartStack platform)\r\n var coreDb = scope.ServiceProvider.GetRequiredService<CoreDbContext>();\r\n await coreDb.Database.MigrateAsync();\r\n\r\n // 2. Ensuite Extensions (Client)\r\n var extDb = scope.ServiceProvider.GetRequiredService<ExtensionsDbContext>();\r\n await extDb.Database.MigrateAsync();\r\n}`} />\r\n </section>\r\n\r\n {/* CLI Commands Section */}\r\n <section className=\"card p-6\">\r\n <h2 className=\"text-xl font-bold mb-4 flex items-center gap-2\">\r\n <Package className=\"w-5 h-5\" />\r\n {t('dualDbContextPage.efCoreCommands.title')}\r\n </h2>\r\n <div className=\"space-y-4\">\r\n <div>\r\n <h3 className=\"font-semibold mb-2\">{t('dualDbContextPage.efCoreCommands.coreMigrationsTitle')}</h3>\r\n <CodeBlock language=\"bash\" code={`# Creer une migration Core\r\ndotnet ef migrations add core_v1.9.0_001_AddNewFeature --context CoreDbContext\r\n\r\n# Appliquer\r\ndotnet ef database update --context CoreDbContext\r\n\r\n# Lister\r\ndotnet ef migrations list --context CoreDbContext`} />\r\n </div>\r\n\r\n <div>\r\n <h3 className=\"font-semibold mb-2\">{t('dualDbContextPage.efCoreCommands.extensionsMigrationsTitle')}</h3>\r\n <CodeBlock language=\"bash\" code={`# Creer une migration Extensions\r\ndotnet ef migrations add ext_v1.0.0_001_CreateOrders --context ExtensionsDbContext\r\n\r\n# Appliquer\r\ndotnet ef database update --context ExtensionsDbContext\r\n\r\n# Lister\r\ndotnet ef migrations list --context ExtensionsDbContext`} />\r\n </div>\r\n </div>\r\n </section>\r\n\r\n {/* Navigation */}\r\n <div className=\"flex justify-between pt-4 border-t border-[var(--border-color)]\">\r\n <Link\r\n to=\"/system/docs/developer/database\"\r\n className=\"flex items-center gap-2 text-[var(--color-primary-600)] hover:underline\"\r\n >\r\n <ArrowRight className=\"w-4 h-4 rotate-180\" />\r\n {t('dualDbContextPage.navigation.previous')}\r\n </Link>\r\n <Link\r\n to=\"/system/docs/developer/cross-schema-fk\"\r\n className=\"flex items-center gap-2 text-[var(--color-primary-600)] hover:underline\"\r\n >\r\n {t('dualDbContextPage.navigation.next')}\r\n <ArrowRight className=\"w-4 h-4\" />\r\n </Link>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["dbContexts","DbContextCard","context","contextKey","t","useTranslation","jsxs","jsx","Database","idx","entityKey","entityText","CodeBlock","code","language","DualDbContextPage","Link","Layers","AlertTriangle","CheckCircle2","Code2","ArrowRight","Package"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DualDbContextPage-BujD_coN.js","sources":["../src/pages/system/docs/developer/DualDbContextPage.tsx"],"sourcesContent":["import { Link } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Database, Layers, Package, ArrowRight, Code2, AlertTriangle, CheckCircle2 } from 'lucide-react';\r\n\r\ninterface DbContextInfo {\r\n name: string;\r\n schema: string;\r\n historyTable: string;\r\n description: string;\r\n entities: string[];\r\n color: string;\r\n}\r\n\r\nconst dbContexts: DbContextInfo[] = [\r\n {\r\n name: 'CoreDbContext',\r\n schema: 'core',\r\n historyTable: 'core.__EFMigrationsHistory',\r\n description: 'Manages all SmartStack platform entities. Distributed via NuGet package.',\r\n entities: [\r\n 'User, Role, Permission, UserRole',\r\n 'NavigationApplication, NavigationModule',\r\n 'AiProvider, AiModel, Prompt, OutputSchema',\r\n 'EntraConfiguration, EntraGroup, EntraSyncState',\r\n 'Ticket, TicketComment, Notification',\r\n 'Setting, License, Workflow',\r\n ],\r\n color: 'from-blue-500 to-cyan-500',\r\n },\r\n {\r\n name: 'ExtensionsDbContext',\r\n schema: 'extensions',\r\n historyTable: 'extensions.__EFMigrationsHistory',\r\n description: 'Manages client-specific entities. Created by CLI in client projects.',\r\n entities: [\r\n 'Your custom entities (Order, Product, Invoice, etc.)',\r\n 'Client-specific business logic entities',\r\n 'Extension tables that reference Core entities via GUID',\r\n ],\r\n color: 'from-purple-500 to-pink-500',\r\n },\r\n];\r\n\r\nfunction DbContextCard({ context, contextKey }: { context: DbContextInfo; contextKey: string }) {\r\n const { t } = useTranslation('docs');\r\n\r\n return (\r\n <div className=\"card p-6\">\r\n <div className={`w-12 h-12 rounded-lg bg-gradient-to-r ${context.color} flex items-center justify-center mb-4`}>\r\n <Database className=\"w-6 h-6 text-white\" />\r\n </div>\r\n <h3 className=\"text-xl font-bold mb-2\">{t(`dualDbContextPage.contextCards.${contextKey}.name`)}</h3>\r\n <p className=\"text-[var(--text-secondary)] mb-4\">{t(`dualDbContextPage.contextCards.${contextKey}.description`)}</p>\r\n\r\n <div className=\"space-y-3\">\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-sm text-[var(--text-tertiary)]\">{t(`dualDbContextPage.contextCards.${contextKey}.schema`)}</span>\r\n <code className=\"px-2 py-0.5 bg-[var(--bg-secondary)] rounded text-sm font-mono\">{t(`dualDbContextPage.contextCards.${contextKey}.schemaValue`)}</code>\r\n </div>\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-sm text-[var(--text-tertiary)]\">{t(`dualDbContextPage.contextCards.${contextKey}.history`)}</span>\r\n <code className=\"px-2 py-0.5 bg-[var(--bg-secondary)] rounded text-sm font-mono\">{t(`dualDbContextPage.contextCards.${contextKey}.historyTable`)}</code>\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-4 pt-4 border-t border-[var(--border-color)]\">\r\n <span className=\"text-sm font-medium\">{t(`dualDbContextPage.contextCards.${contextKey}.entities`)}</span>\r\n <ul className=\"mt-2 space-y-1\">\r\n {[1, 2, 3].map((idx) => {\r\n const entityKey = `entity${idx}`;\r\n const entityText = t(`dualDbContextPage.contextCards.${contextKey}.${entityKey}`, { defaultValue: '' });\r\n return entityText ? (\r\n <li key={idx} className=\"text-sm text-[var(--text-secondary)] flex items-start gap-2\">\r\n <span className=\"text-[var(--color-primary-600)]\">-</span>\r\n {entityText}\r\n </li>\r\n ) : null;\r\n })}\r\n </ul>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction CodeBlock({ code, language = 'csharp' }: { code: string; language?: string }) {\r\n return (\r\n <pre className=\"bg-[var(--bg-tertiary)] rounded-lg p-4 overflow-x-auto\">\r\n <code className={`language-${language} text-sm`}>{code}</code>\r\n </pre>\r\n );\r\n}\r\n\r\nexport function DualDbContextPage() {\r\n const { t } = useTranslation('docs');\r\n\r\n return (\r\n <div className=\"space-y-8\">\r\n {/* Breadcrumb */}\r\n <div className=\"flex items-center gap-2 text-sm text-[var(--text-secondary)]\">\r\n <Link to=\"/system/docs\" className=\"hover:text-[var(--color-primary-600)]\">{t('dualDbContextPage.breadcrumb.documentation')}</Link>\r\n <span>/</span>\r\n <Link to=\"/system/docs/developer\" className=\"hover:text-[var(--color-primary-600)]\">{t('dualDbContextPage.breadcrumb.developer')}</Link>\r\n <span>/</span>\r\n <span>{t('dualDbContextPage.breadcrumb.title')}</span>\r\n </div>\r\n\r\n {/* Header */}\r\n <div>\r\n <h1 className=\"text-3xl font-bold mb-4 flex items-center gap-3\">\r\n <Layers className=\"w-8 h-8 text-[var(--color-primary-600)]\" />\r\n {t('dualDbContextPage.header.title')}\r\n </h1>\r\n <p className=\"text-lg text-[var(--text-secondary)]\">\r\n {t('dualDbContextPage.header.subtitle')}\r\n </p>\r\n </div>\r\n\r\n {/* Why Section */}\r\n <section className=\"card p-6\">\r\n <h2 className=\"text-xl font-bold mb-4 flex items-center gap-2\">\r\n <AlertTriangle className=\"w-5 h-5 text-[var(--warning-text)]\" />\r\n {t('dualDbContextPage.whySection.title')}\r\n </h2>\r\n <div className=\"space-y-4 text-[var(--text-secondary)]\">\r\n <p>\r\n {t('dualDbContextPage.whySection.description')}\r\n </p>\r\n <ul className=\"list-disc list-inside space-y-2 ml-4\">\r\n <li>\r\n <strong>{t('dualDbContextPage.whySection.problem1')}</strong> - {t('dualDbContextPage.whySection.problem1Desc')}\r\n </li>\r\n <li>\r\n <strong>{t('dualDbContextPage.whySection.problem2')}</strong> - {t('dualDbContextPage.whySection.problem2Desc')}\r\n </li>\r\n <li>\r\n <strong>{t('dualDbContextPage.whySection.problem3')}</strong> - {t('dualDbContextPage.whySection.problem3Desc')}\r\n </li>\r\n </ul>\r\n </div>\r\n </section>\r\n\r\n {/* Solution Section */}\r\n <section className=\"card p-6\">\r\n <h2 className=\"text-xl font-bold mb-4 flex items-center gap-2\">\r\n <CheckCircle2 className=\"w-5 h-5 text-[var(--success-text)]\" />\r\n {t('dualDbContextPage.solutionSection.title')}\r\n </h2>\r\n <div className=\"grid md:grid-cols-2 gap-6\">\r\n <DbContextCard context={dbContexts[0]} contextKey=\"coreDbContext\" />\r\n <DbContextCard context={dbContexts[1]} contextKey=\"extensionsDbContext\" />\r\n </div>\r\n </section>\r\n\r\n {/* Database Schema Diagram */}\r\n <section className=\"card p-6\">\r\n <h2 className=\"text-xl font-bold mb-4 flex items-center gap-2\">\r\n <Database className=\"w-5 h-5\" />\r\n {t('dualDbContextPage.databaseStructure.title')}\r\n </h2>\r\n <div className=\"bg-[var(--bg-secondary)] rounded-lg p-6\">\r\n <pre className=\"text-sm font-mono whitespace-pre\">\r\n{`SmartStack Database (single SQL Server database)\r\n├── core schema\r\n│ ├── __EFMigrationsHistory (Core migrations only)\r\n│ ├── auth_Users\r\n│ ├── auth_Roles\r\n│ ├── auth_Permissions\r\n│ ├── nav_Applications\r\n│ ├── nav_Modules\r\n│ ├── ai_Providers\r\n│ ├── ai_Models\r\n│ └── ... (all SmartStack tables)\r\n│\r\n└── extensions schema\r\n ├── __EFMigrationsHistory (Extensions migrations only)\r\n ├── biz_Orders (example client table)\r\n ├── biz_Products (example client table)\r\n └── ... (all client tables)`}\r\n </pre>\r\n </div>\r\n </section>\r\n\r\n {/* Configuration Section */}\r\n <section className=\"card p-6\">\r\n <h2 className=\"text-xl font-bold mb-4 flex items-center gap-2\">\r\n <Code2 className=\"w-5 h-5\" />\r\n {t('dualDbContextPage.efCoreConfiguration.title')}\r\n </h2>\r\n\r\n <h3 className=\"font-semibold mt-4 mb-2\">{t('dualDbContextPage.efCoreConfiguration.coreDbContextTitle')}</h3>\r\n <CodeBlock code={`// Dans DependencyInjection.cs (SmartStack.Infrastructure)\r\nservices.AddDbContext<CoreDbContext>(options =>\r\n{\r\n options.UseSqlServer(connectionString, b =>\r\n {\r\n b.MigrationsAssembly(typeof(CoreDbContext).Assembly.FullName);\r\n b.MigrationsHistoryTable(\"__EFMigrationsHistory\", \"core\"); // <-- Schema core\r\n });\r\n});`} />\r\n\r\n <h3 className=\"font-semibold mt-6 mb-2\">{t('dualDbContextPage.efCoreConfiguration.extensionsDbContextTitle')}</h3>\r\n <CodeBlock code={`// Dans DependencyInjection.cs (Client.Infrastructure)\r\nservices.AddDbContext<ExtensionsDbContext>(options =>\r\n{\r\n options.UseSqlServer(connectionString, b =>\r\n {\r\n b.MigrationsAssembly(typeof(ExtensionsDbContext).Assembly.FullName);\r\n b.MigrationsHistoryTable(\"__EFMigrationsHistory\", \"extensions\"); // <-- Schema extensions\r\n });\r\n});`} />\r\n </section>\r\n\r\n {/* Migration Order Section */}\r\n <section className=\"card p-6\">\r\n <h2 className=\"text-xl font-bold mb-4 flex items-center gap-2\">\r\n <ArrowRight className=\"w-5 h-5\" />\r\n {t('dualDbContextPage.migrationOrder.title')}\r\n </h2>\r\n <div className=\"bg-[var(--info-bg)] border border-[var(--info-border)] rounded-lg p-4 mb-4\">\r\n <p className=\"text-[var(--info-text)]\">\r\n <strong>Important:</strong> {t('dualDbContextPage.migrationOrder.important')}\r\n </p>\r\n </div>\r\n <CodeBlock code={`// Dans Program.cs\r\nif (app.Environment.IsDevelopment())\r\n{\r\n using var scope = app.Services.CreateScope();\r\n\r\n // 1. D'abord Core (SmartStack platform)\r\n var coreDb = scope.ServiceProvider.GetRequiredService<CoreDbContext>();\r\n await coreDb.Database.MigrateAsync();\r\n\r\n // 2. Ensuite Extensions (Client)\r\n var extDb = scope.ServiceProvider.GetRequiredService<ExtensionsDbContext>();\r\n await extDb.Database.MigrateAsync();\r\n}`} />\r\n </section>\r\n\r\n {/* CLI Commands Section */}\r\n <section className=\"card p-6\">\r\n <h2 className=\"text-xl font-bold mb-4 flex items-center gap-2\">\r\n <Package className=\"w-5 h-5\" />\r\n {t('dualDbContextPage.efCoreCommands.title')}\r\n </h2>\r\n <div className=\"space-y-4\">\r\n <div>\r\n <h3 className=\"font-semibold mb-2\">{t('dualDbContextPage.efCoreCommands.coreMigrationsTitle')}</h3>\r\n <CodeBlock language=\"bash\" code={`# Creer une migration Core\r\ndotnet ef migrations add core_v1.9.0_001_AddNewFeature --context CoreDbContext\r\n\r\n# Appliquer\r\ndotnet ef database update --context CoreDbContext\r\n\r\n# Lister\r\ndotnet ef migrations list --context CoreDbContext`} />\r\n </div>\r\n\r\n <div>\r\n <h3 className=\"font-semibold mb-2\">{t('dualDbContextPage.efCoreCommands.extensionsMigrationsTitle')}</h3>\r\n <CodeBlock language=\"bash\" code={`# Creer une migration Extensions\r\ndotnet ef migrations add ext_v1.0.0_001_CreateOrders --context ExtensionsDbContext\r\n\r\n# Appliquer\r\ndotnet ef database update --context ExtensionsDbContext\r\n\r\n# Lister\r\ndotnet ef migrations list --context ExtensionsDbContext`} />\r\n </div>\r\n </div>\r\n </section>\r\n\r\n {/* Navigation */}\r\n <div className=\"flex justify-between pt-4 border-t border-[var(--border-color)]\">\r\n <Link\r\n to=\"/system/docs/developer/database\"\r\n className=\"flex items-center gap-2 text-[var(--color-primary-600)] hover:underline\"\r\n >\r\n <ArrowRight className=\"w-4 h-4 rotate-180\" />\r\n {t('dualDbContextPage.navigation.previous')}\r\n </Link>\r\n <Link\r\n to=\"/system/docs/developer/cross-schema-fk\"\r\n className=\"flex items-center gap-2 text-[var(--color-primary-600)] hover:underline\"\r\n >\r\n {t('dualDbContextPage.navigation.next')}\r\n <ArrowRight className=\"w-4 h-4\" />\r\n </Link>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["dbContexts","DbContextCard","context","contextKey","t","useTranslation","jsxs","jsx","Database","idx","entityKey","entityText","CodeBlock","code","language","DualDbContextPage","Link","Layers","AlertTriangle","CheckCircle2","Code2","ArrowRight","Package"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ForceChangePasswordPage-ClENqzCH.js","sources":["../src/pages/auth/ForceChangePasswordPage.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Lock, Eye, EyeOff, Loader2, AlertTriangle, CheckCircle } from 'lucide-react';\r\nimport { authApi } from '@/services/api/authApi';\r\n\r\nexport function ForceChangePasswordPage() {\r\n const { t } = useTranslation();\r\n const navigate = useNavigate();\r\n\r\n const [currentPassword, setCurrentPassword] = useState('');\r\n const [newPassword, setNewPassword] = useState('');\r\n const [confirmPassword, setConfirmPassword] = useState('');\r\n const [showCurrentPassword, setShowCurrentPassword] = useState(false);\r\n const [showNewPassword, setShowNewPassword] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [success, setSuccess] = useState(false);\r\n\r\n const validatePassword = (password: string): string[] => {\r\n const errors: string[] = [];\r\n if (password.length < 8) errors.push('Au moins 8 caractères');\r\n if (!/[A-Z]/.test(password)) errors.push('Au moins une majuscule');\r\n if (!/[a-z]/.test(password)) errors.push('Au moins une minuscule');\r\n if (!/[0-9]/.test(password)) errors.push('Au moins un chiffre');\r\n return errors;\r\n };\r\n\r\n const passwordErrors = validatePassword(newPassword);\r\n const isValid = newPassword === confirmPassword && passwordErrors.length === 0 && currentPassword.length > 0;\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (!isValid) return;\r\n\r\n setLoading(true);\r\n setError(null);\r\n\r\n try {\r\n await authApi.changePassword(currentPassword, newPassword);\r\n setSuccess(true);\r\n setTimeout(() => {\r\n navigate('/');\r\n }, 2000);\r\n } catch (err: unknown) {\r\n if (err instanceof Error) {\r\n setError(err.message);\r\n } else {\r\n setError('Une erreur est survenue');\r\n }\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n if (success) {\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-gradient-to-br from-blue-50 to-indigo-100 dark:from-gray-900 dark:to-gray-800 p-4\">\r\n <div className=\"w-full max-w-md bg-white dark:bg-gray-800 rounded-2xl shadow-xl p-8 text-center\">\r\n <div className=\"w-16 h-16 bg-green-100 dark:bg-green-900/30 rounded-full flex items-center justify-center mx-auto mb-4\">\r\n <CheckCircle className=\"w-8 h-8 text-green-600 dark:text-green-400\" />\r\n </div>\r\n <h2 className=\"text-2xl font-bold text-gray-900 dark:text-white mb-2\">\r\n Mot de passe modifié\r\n </h2>\r\n <p className=\"text-gray-600 dark:text-gray-400\">\r\n Vous allez être redirigé vers l'accueil...\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-gradient-to-br from-blue-50 to-indigo-100 dark:from-gray-900 dark:to-gray-800 p-4\">\r\n <div className=\"w-full max-w-md\">\r\n <div className=\"bg-white dark:bg-gray-800 rounded-2xl shadow-xl p-8\">\r\n {/* Header */}\r\n <div className=\"text-center mb-8\">\r\n <div className=\"w-16 h-16 bg-amber-100 dark:bg-amber-900/30 rounded-full flex items-center justify-center mx-auto mb-4\">\r\n <Lock className=\"w-8 h-8 text-amber-600 dark:text-amber-400\" />\r\n </div>\r\n <h1 className=\"text-2xl font-bold text-gray-900 dark:text-white\">\r\n {t('auth.forceChangePassword.title', 'Changement de mot de passe requis')}\r\n </h1>\r\n <p className=\"text-gray-600 dark:text-gray-400 mt-2\">\r\n {t('auth.forceChangePassword.description', 'Pour des raisons de sécurité, vous devez définir un nouveau mot de passe.')}\r\n </p>\r\n </div>\r\n\r\n {/* Error */}\r\n {error && (\r\n <div className=\"mb-6 p-4 rounded-xl bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-300 flex items-center gap-2\">\r\n <AlertTriangle className=\"w-5 h-5 flex-shrink-0\" />\r\n <span>{error}</span>\r\n </div>\r\n )}\r\n\r\n {/* Form */}\r\n <form onSubmit={handleSubmit} className=\"space-y-6\">\r\n {/* Current Password */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\r\n {t('auth.forceChangePassword.currentPassword', 'Mot de passe actuel (temporaire)')}\r\n </label>\r\n <div className=\"relative\">\r\n <input\r\n type={showCurrentPassword ? 'text' : 'password'}\r\n required\r\n value={currentPassword}\r\n onChange={e => setCurrentPassword(e.target.value)}\r\n className=\"w-full px-4 py-3 rounded-xl border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n placeholder=\"Entrez le mot de passe fourni par l'administrateur\"\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={() => setShowCurrentPassword(!showCurrentPassword)}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 hover:text-gray-700 dark:hover:text-gray-300\"\r\n >\r\n {showCurrentPassword ? <EyeOff className=\"w-5 h-5\" /> : <Eye className=\"w-5 h-5\" />}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* New Password */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\r\n {t('auth.forceChangePassword.newPassword', 'Nouveau mot de passe')}\r\n </label>\r\n <div className=\"relative\">\r\n <input\r\n type={showNewPassword ? 'text' : 'password'}\r\n required\r\n value={newPassword}\r\n onChange={e => setNewPassword(e.target.value)}\r\n className=\"w-full px-4 py-3 rounded-xl border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n placeholder=\"Choisissez un nouveau mot de passe\"\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={() => setShowNewPassword(!showNewPassword)}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 hover:text-gray-700 dark:hover:text-gray-300\"\r\n >\r\n {showNewPassword ? <EyeOff className=\"w-5 h-5\" /> : <Eye className=\"w-5 h-5\" />}\r\n </button>\r\n </div>\r\n\r\n {/* Password requirements */}\r\n {newPassword && (\r\n <div className=\"mt-2 space-y-1\">\r\n {['Au moins 8 caractères', 'Au moins une majuscule', 'Au moins une minuscule', 'Au moins un chiffre'].map((req, i) => {\r\n const checks = [\r\n newPassword.length >= 8,\r\n /[A-Z]/.test(newPassword),\r\n /[a-z]/.test(newPassword),\r\n /[0-9]/.test(newPassword)\r\n ];\r\n return (\r\n <div key={`pwd-req-${i}`} className={`flex items-center gap-2 text-sm ${checks[i] ? 'text-green-600' : 'text-gray-500'}`}>\r\n {checks[i] ? <CheckCircle className=\"w-4 h-4\" /> : <div className=\"w-4 h-4 rounded-full border border-current\" />}\r\n {req}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Confirm Password */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\r\n {t('auth.forceChangePassword.confirmPassword', 'Confirmer le nouveau mot de passe')}\r\n </label>\r\n <input\r\n type=\"password\"\r\n required\r\n value={confirmPassword}\r\n onChange={e => setConfirmPassword(e.target.value)}\r\n className={`w-full px-4 py-3 rounded-xl border ${\r\n confirmPassword && confirmPassword !== newPassword\r\n ? 'border-red-500 focus:ring-red-500'\r\n : 'border-gray-300 dark:border-gray-600 focus:ring-blue-500'\r\n } bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:outline-none focus:ring-2`}\r\n placeholder=\"Confirmez votre nouveau mot de passe\"\r\n />\r\n {confirmPassword && confirmPassword !== newPassword && (\r\n <p className=\"mt-1 text-sm text-red-600\">Les mots de passe ne correspondent pas</p>\r\n )}\r\n </div>\r\n\r\n {/* Submit */}\r\n <button\r\n type=\"submit\"\r\n disabled={!isValid || loading}\r\n className=\"w-full py-3 px-4 rounded-xl bg-blue-600 hover:bg-blue-700 text-white font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2\"\r\n >\r\n {loading ? (\r\n <>\r\n <Loader2 className=\"w-5 h-5 animate-spin\" />\r\n <span>Modification en cours...</span>\r\n </>\r\n ) : (\r\n <span>{t('auth.forceChangePassword.submit', 'Définir mon nouveau mot de passe')}</span>\r\n )}\r\n </button>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["ForceChangePasswordPage","t","useTranslation","navigate","useNavigate","currentPassword","setCurrentPassword","useState","newPassword","setNewPassword","confirmPassword","setConfirmPassword","showCurrentPassword","setShowCurrentPassword","showNewPassword","setShowNewPassword","loading","setLoading","error","setError","success","setSuccess","passwordErrors","password","errors","isValid","handleSubmit","e","authApi","err","jsxs","jsx","CheckCircle","Lock","AlertTriangle","EyeOff","Eye","req","i","checks","Fragment","Loader2"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ForceChangePasswordPage-kEFsb5Aq.cjs","sources":["../src/pages/auth/ForceChangePasswordPage.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Lock, Eye, EyeOff, Loader2, AlertTriangle, CheckCircle } from 'lucide-react';\r\nimport { authApi } from '@/services/api/authApi';\r\n\r\nexport function ForceChangePasswordPage() {\r\n const { t } = useTranslation();\r\n const navigate = useNavigate();\r\n\r\n const [currentPassword, setCurrentPassword] = useState('');\r\n const [newPassword, setNewPassword] = useState('');\r\n const [confirmPassword, setConfirmPassword] = useState('');\r\n const [showCurrentPassword, setShowCurrentPassword] = useState(false);\r\n const [showNewPassword, setShowNewPassword] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [success, setSuccess] = useState(false);\r\n\r\n const validatePassword = (password: string): string[] => {\r\n const errors: string[] = [];\r\n if (password.length < 8) errors.push('Au moins 8 caractères');\r\n if (!/[A-Z]/.test(password)) errors.push('Au moins une majuscule');\r\n if (!/[a-z]/.test(password)) errors.push('Au moins une minuscule');\r\n if (!/[0-9]/.test(password)) errors.push('Au moins un chiffre');\r\n return errors;\r\n };\r\n\r\n const passwordErrors = validatePassword(newPassword);\r\n const isValid = newPassword === confirmPassword && passwordErrors.length === 0 && currentPassword.length > 0;\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (!isValid) return;\r\n\r\n setLoading(true);\r\n setError(null);\r\n\r\n try {\r\n await authApi.changePassword(currentPassword, newPassword);\r\n setSuccess(true);\r\n setTimeout(() => {\r\n navigate('/');\r\n }, 2000);\r\n } catch (err: unknown) {\r\n if (err instanceof Error) {\r\n setError(err.message);\r\n } else {\r\n setError('Une erreur est survenue');\r\n }\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n if (success) {\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-gradient-to-br from-blue-50 to-indigo-100 dark:from-gray-900 dark:to-gray-800 p-4\">\r\n <div className=\"w-full max-w-md bg-white dark:bg-gray-800 rounded-2xl shadow-xl p-8 text-center\">\r\n <div className=\"w-16 h-16 bg-green-100 dark:bg-green-900/30 rounded-full flex items-center justify-center mx-auto mb-4\">\r\n <CheckCircle className=\"w-8 h-8 text-green-600 dark:text-green-400\" />\r\n </div>\r\n <h2 className=\"text-2xl font-bold text-gray-900 dark:text-white mb-2\">\r\n Mot de passe modifié\r\n </h2>\r\n <p className=\"text-gray-600 dark:text-gray-400\">\r\n Vous allez être redirigé vers l'accueil...\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-gradient-to-br from-blue-50 to-indigo-100 dark:from-gray-900 dark:to-gray-800 p-4\">\r\n <div className=\"w-full max-w-md\">\r\n <div className=\"bg-white dark:bg-gray-800 rounded-2xl shadow-xl p-8\">\r\n {/* Header */}\r\n <div className=\"text-center mb-8\">\r\n <div className=\"w-16 h-16 bg-amber-100 dark:bg-amber-900/30 rounded-full flex items-center justify-center mx-auto mb-4\">\r\n <Lock className=\"w-8 h-8 text-amber-600 dark:text-amber-400\" />\r\n </div>\r\n <h1 className=\"text-2xl font-bold text-gray-900 dark:text-white\">\r\n {t('auth.forceChangePassword.title', 'Changement de mot de passe requis')}\r\n </h1>\r\n <p className=\"text-gray-600 dark:text-gray-400 mt-2\">\r\n {t('auth.forceChangePassword.description', 'Pour des raisons de sécurité, vous devez définir un nouveau mot de passe.')}\r\n </p>\r\n </div>\r\n\r\n {/* Error */}\r\n {error && (\r\n <div className=\"mb-6 p-4 rounded-xl bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-300 flex items-center gap-2\">\r\n <AlertTriangle className=\"w-5 h-5 flex-shrink-0\" />\r\n <span>{error}</span>\r\n </div>\r\n )}\r\n\r\n {/* Form */}\r\n <form onSubmit={handleSubmit} className=\"space-y-6\">\r\n {/* Current Password */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\r\n {t('auth.forceChangePassword.currentPassword', 'Mot de passe actuel (temporaire)')}\r\n </label>\r\n <div className=\"relative\">\r\n <input\r\n type={showCurrentPassword ? 'text' : 'password'}\r\n required\r\n value={currentPassword}\r\n onChange={e => setCurrentPassword(e.target.value)}\r\n className=\"w-full px-4 py-3 rounded-xl border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n placeholder=\"Entrez le mot de passe fourni par l'administrateur\"\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={() => setShowCurrentPassword(!showCurrentPassword)}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 hover:text-gray-700 dark:hover:text-gray-300\"\r\n >\r\n {showCurrentPassword ? <EyeOff className=\"w-5 h-5\" /> : <Eye className=\"w-5 h-5\" />}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* New Password */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\r\n {t('auth.forceChangePassword.newPassword', 'Nouveau mot de passe')}\r\n </label>\r\n <div className=\"relative\">\r\n <input\r\n type={showNewPassword ? 'text' : 'password'}\r\n required\r\n value={newPassword}\r\n onChange={e => setNewPassword(e.target.value)}\r\n className=\"w-full px-4 py-3 rounded-xl border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n placeholder=\"Choisissez un nouveau mot de passe\"\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={() => setShowNewPassword(!showNewPassword)}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 hover:text-gray-700 dark:hover:text-gray-300\"\r\n >\r\n {showNewPassword ? <EyeOff className=\"w-5 h-5\" /> : <Eye className=\"w-5 h-5\" />}\r\n </button>\r\n </div>\r\n\r\n {/* Password requirements */}\r\n {newPassword && (\r\n <div className=\"mt-2 space-y-1\">\r\n {['Au moins 8 caractères', 'Au moins une majuscule', 'Au moins une minuscule', 'Au moins un chiffre'].map((req, i) => {\r\n const checks = [\r\n newPassword.length >= 8,\r\n /[A-Z]/.test(newPassword),\r\n /[a-z]/.test(newPassword),\r\n /[0-9]/.test(newPassword)\r\n ];\r\n return (\r\n <div key={`pwd-req-${i}`} className={`flex items-center gap-2 text-sm ${checks[i] ? 'text-green-600' : 'text-gray-500'}`}>\r\n {checks[i] ? <CheckCircle className=\"w-4 h-4\" /> : <div className=\"w-4 h-4 rounded-full border border-current\" />}\r\n {req}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Confirm Password */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">\r\n {t('auth.forceChangePassword.confirmPassword', 'Confirmer le nouveau mot de passe')}\r\n </label>\r\n <input\r\n type=\"password\"\r\n required\r\n value={confirmPassword}\r\n onChange={e => setConfirmPassword(e.target.value)}\r\n className={`w-full px-4 py-3 rounded-xl border ${\r\n confirmPassword && confirmPassword !== newPassword\r\n ? 'border-red-500 focus:ring-red-500'\r\n : 'border-gray-300 dark:border-gray-600 focus:ring-blue-500'\r\n } bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:outline-none focus:ring-2`}\r\n placeholder=\"Confirmez votre nouveau mot de passe\"\r\n />\r\n {confirmPassword && confirmPassword !== newPassword && (\r\n <p className=\"mt-1 text-sm text-red-600\">Les mots de passe ne correspondent pas</p>\r\n )}\r\n </div>\r\n\r\n {/* Submit */}\r\n <button\r\n type=\"submit\"\r\n disabled={!isValid || loading}\r\n className=\"w-full py-3 px-4 rounded-xl bg-blue-600 hover:bg-blue-700 text-white font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2\"\r\n >\r\n {loading ? (\r\n <>\r\n <Loader2 className=\"w-5 h-5 animate-spin\" />\r\n <span>Modification en cours...</span>\r\n </>\r\n ) : (\r\n <span>{t('auth.forceChangePassword.submit', 'Définir mon nouveau mot de passe')}</span>\r\n )}\r\n </button>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["ForceChangePasswordPage","t","useTranslation","navigate","useNavigate","currentPassword","setCurrentPassword","useState","newPassword","setNewPassword","confirmPassword","setConfirmPassword","showCurrentPassword","setShowCurrentPassword","showNewPassword","setShowNewPassword","loading","setLoading","error","setError","success","setSuccess","passwordErrors","password","errors","isValid","handleSubmit","e","authApi","err","jsxs","jsx","CheckCircle","Lock","AlertTriangle","EyeOff","Eye","req","i","checks","Fragment","Loader2"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ForgotPasswordPage--Wl0Vxbv.cjs","sources":["../src/pages/auth/ForgotPasswordPage.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Mail, Loader2, ArrowLeft, CheckCircle2, AlertCircle } from 'lucide-react';\r\nimport { ThemeSwitcher } from '@/components/ui/ThemeSwitcher';\r\nimport { authApi } from '@/services/api/authApi';\r\n\r\nexport function ForgotPasswordPage() {\r\n const [email, setEmail] = useState('');\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [success, setSuccess] = useState(false);\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n setError(null);\r\n setIsLoading(true);\r\n\r\n try {\r\n await authApi.forgotPassword(email);\r\n setSuccess(true);\r\n } catch (err) {\r\n const error = err as { message?: string };\r\n setError(error?.message || 'Une erreur est survenue');\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900 p-8\">\r\n <div className=\"w-full max-w-md\">\r\n <div className=\"flex justify-end mb-8\">\r\n <ThemeSwitcher />\r\n </div>\r\n\r\n <div className=\"bg-white dark:bg-gray-800 rounded-2xl shadow-xl p-8\">\r\n {!success ? (\r\n <>\r\n <div className=\"text-center mb-8\">\r\n <div className=\"w-16 h-16 bg-blue-100 dark:bg-blue-900/30 rounded-full flex items-center justify-center mx-auto mb-4\">\r\n <Mail className=\"w-8 h-8 text-blue-600 dark:text-blue-400\" />\r\n </div>\r\n <h2 className=\"text-2xl font-bold text-gray-900 dark:text-white mb-2\">\r\n Mot de passe oublié ?\r\n </h2>\r\n <p className=\"text-gray-600 dark:text-gray-400\">\r\n Entrez votre email et nous vous enverrons un lien pour réinitialiser votre mot de passe.\r\n </p>\r\n </div>\r\n\r\n {error && (\r\n <div className=\"mb-6 p-4 bg-red-500/10 border border-red-500/20 rounded-lg flex items-start gap-3\">\r\n <AlertCircle className=\"w-5 h-5 text-red-500 flex-shrink-0 mt-0.5\" />\r\n <p className=\"text-sm text-red-500\">{error}</p>\r\n </div>\r\n )}\r\n\r\n <form onSubmit={handleSubmit} className=\"space-y-4\">\r\n <div>\r\n <label htmlFor=\"email\" className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\r\n Adresse email\r\n </label>\r\n <div className=\"relative\">\r\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <Mail className=\"h-5 w-5 text-gray-400\" />\r\n </div>\r\n <input\r\n id=\"email\"\r\n type=\"email\"\r\n value={email}\r\n onChange={(e) => setEmail(e.target.value)}\r\n className=\"block w-full pl-10 pr-3 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\r\n placeholder=\"vous@exemple.com\"\r\n required\r\n autoComplete=\"email\"\r\n disabled={isLoading}\r\n />\r\n </div>\r\n </div>\r\n\r\n <button\r\n type=\"submit\"\r\n disabled={isLoading}\r\n className=\"w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-blue-600 to-purple-600 text-white rounded-lg font-medium hover:from-blue-700 hover:to-purple-700 disabled:opacity-50 transition-all\"\r\n >\r\n {isLoading ? (\r\n <>\r\n <Loader2 className=\"h-5 w-5 animate-spin\" />\r\n Envoi en cours...\r\n </>\r\n ) : (\r\n 'Envoyer le lien'\r\n )}\r\n </button>\r\n </form>\r\n </>\r\n ) : (\r\n <div className=\"text-center\">\r\n <div className=\"w-16 h-16 bg-green-100 dark:bg-green-900/30 rounded-full flex items-center justify-center mx-auto mb-4\">\r\n <CheckCircle2 className=\"w-10 h-10 text-green-600 dark:text-green-400\" />\r\n </div>\r\n <h2 className=\"text-xl font-semibold text-gray-900 dark:text-white mb-2\">\r\n Email envoyé !\r\n </h2>\r\n <p className=\"text-gray-600 dark:text-gray-400 mb-6\">\r\n Si un compte existe avec l'adresse <strong>{email}</strong>, vous recevrez un lien de réinitialisation.\r\n </p>\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n N'oubliez pas de vérifier vos spams.\r\n </p>\r\n </div>\r\n )}\r\n\r\n <div className=\"mt-6 pt-6 border-t border-gray-200 dark:border-gray-700\">\r\n <Link\r\n to=\"/login\"\r\n className=\"flex items-center justify-center gap-2 text-sm text-gray-600 dark:text-gray-400 hover:text-blue-600 dark:hover:text-blue-400 transition-colors\"\r\n >\r\n <ArrowLeft className=\"w-4 h-4\" />\r\n Retour à la connexion\r\n </Link>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["ForgotPasswordPage","email","setEmail","useState","isLoading","setIsLoading","error","setError","success","setSuccess","handleSubmit","e","authApi","err","jsxs","jsx","ThemeSwitcher","CheckCircle2","Fragment","Mail","AlertCircle","Loader2","Link","ArrowLeft"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ForgotPasswordPage-BEgvV5f-.js","sources":["../src/pages/auth/ForgotPasswordPage.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Mail, Loader2, ArrowLeft, CheckCircle2, AlertCircle } from 'lucide-react';\r\nimport { ThemeSwitcher } from '@/components/ui/ThemeSwitcher';\r\nimport { authApi } from '@/services/api/authApi';\r\n\r\nexport function ForgotPasswordPage() {\r\n const [email, setEmail] = useState('');\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [success, setSuccess] = useState(false);\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n setError(null);\r\n setIsLoading(true);\r\n\r\n try {\r\n await authApi.forgotPassword(email);\r\n setSuccess(true);\r\n } catch (err) {\r\n const error = err as { message?: string };\r\n setError(error?.message || 'Une erreur est survenue');\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900 p-8\">\r\n <div className=\"w-full max-w-md\">\r\n <div className=\"flex justify-end mb-8\">\r\n <ThemeSwitcher />\r\n </div>\r\n\r\n <div className=\"bg-white dark:bg-gray-800 rounded-2xl shadow-xl p-8\">\r\n {!success ? (\r\n <>\r\n <div className=\"text-center mb-8\">\r\n <div className=\"w-16 h-16 bg-blue-100 dark:bg-blue-900/30 rounded-full flex items-center justify-center mx-auto mb-4\">\r\n <Mail className=\"w-8 h-8 text-blue-600 dark:text-blue-400\" />\r\n </div>\r\n <h2 className=\"text-2xl font-bold text-gray-900 dark:text-white mb-2\">\r\n Mot de passe oublié ?\r\n </h2>\r\n <p className=\"text-gray-600 dark:text-gray-400\">\r\n Entrez votre email et nous vous enverrons un lien pour réinitialiser votre mot de passe.\r\n </p>\r\n </div>\r\n\r\n {error && (\r\n <div className=\"mb-6 p-4 bg-red-500/10 border border-red-500/20 rounded-lg flex items-start gap-3\">\r\n <AlertCircle className=\"w-5 h-5 text-red-500 flex-shrink-0 mt-0.5\" />\r\n <p className=\"text-sm text-red-500\">{error}</p>\r\n </div>\r\n )}\r\n\r\n <form onSubmit={handleSubmit} className=\"space-y-4\">\r\n <div>\r\n <label htmlFor=\"email\" className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\r\n Adresse email\r\n </label>\r\n <div className=\"relative\">\r\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <Mail className=\"h-5 w-5 text-gray-400\" />\r\n </div>\r\n <input\r\n id=\"email\"\r\n type=\"email\"\r\n value={email}\r\n onChange={(e) => setEmail(e.target.value)}\r\n className=\"block w-full pl-10 pr-3 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent\"\r\n placeholder=\"vous@exemple.com\"\r\n required\r\n autoComplete=\"email\"\r\n disabled={isLoading}\r\n />\r\n </div>\r\n </div>\r\n\r\n <button\r\n type=\"submit\"\r\n disabled={isLoading}\r\n className=\"w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-blue-600 to-purple-600 text-white rounded-lg font-medium hover:from-blue-700 hover:to-purple-700 disabled:opacity-50 transition-all\"\r\n >\r\n {isLoading ? (\r\n <>\r\n <Loader2 className=\"h-5 w-5 animate-spin\" />\r\n Envoi en cours...\r\n </>\r\n ) : (\r\n 'Envoyer le lien'\r\n )}\r\n </button>\r\n </form>\r\n </>\r\n ) : (\r\n <div className=\"text-center\">\r\n <div className=\"w-16 h-16 bg-green-100 dark:bg-green-900/30 rounded-full flex items-center justify-center mx-auto mb-4\">\r\n <CheckCircle2 className=\"w-10 h-10 text-green-600 dark:text-green-400\" />\r\n </div>\r\n <h2 className=\"text-xl font-semibold text-gray-900 dark:text-white mb-2\">\r\n Email envoyé !\r\n </h2>\r\n <p className=\"text-gray-600 dark:text-gray-400 mb-6\">\r\n Si un compte existe avec l'adresse <strong>{email}</strong>, vous recevrez un lien de réinitialisation.\r\n </p>\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n N'oubliez pas de vérifier vos spams.\r\n </p>\r\n </div>\r\n )}\r\n\r\n <div className=\"mt-6 pt-6 border-t border-gray-200 dark:border-gray-700\">\r\n <Link\r\n to=\"/login\"\r\n className=\"flex items-center justify-center gap-2 text-sm text-gray-600 dark:text-gray-400 hover:text-blue-600 dark:hover:text-blue-400 transition-colors\"\r\n >\r\n <ArrowLeft className=\"w-4 h-4\" />\r\n Retour à la connexion\r\n </Link>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["ForgotPasswordPage","email","setEmail","useState","isLoading","setIsLoading","error","setError","success","setSuccess","jsxs","jsx","ThemeSwitcher","CheckCircle2","Fragment","Mail","AlertCircle","e","authApi","err","Loader2","Link","ArrowLeft"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"OnboardingWizardPage-Bx1UlTbr.js","sources":["../src/pages/auth/OnboardingWizardPage.tsx"],"sourcesContent":["import { useState, useEffect } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Loader2, CheckCircle, Globe, Palette, Sparkles, ArrowRight, ArrowLeft } from 'lucide-react';\r\nimport { api } from '@/services/api/apiClient';\r\nimport { changeLanguage } from '@/i18n/config';\r\n\r\ntype Step = 'language' | 'theme' | 'complete';\r\n\r\ninterface LanguageOption {\r\n code: string;\r\n name: string;\r\n flag: string;\r\n}\r\n\r\ninterface ThemeOption {\r\n value: string;\r\n labelKey: string;\r\n icon: string;\r\n}\r\n\r\nconst languages: LanguageOption[] = [\r\n { code: 'fr', name: 'Francais', flag: '🇫🇷' },\r\n { code: 'en', name: 'English', flag: '🇬🇧' },\r\n { code: 'de', name: 'Deutsch', flag: '🇩🇪' },\r\n { code: 'it', name: 'Italiano', flag: '🇮🇹' },\r\n];\r\n\r\nconst themes: ThemeOption[] = [\r\n { value: 'light', labelKey: 'themeLight', icon: '☀️' },\r\n { value: 'dark', labelKey: 'themeDark', icon: '🌙' },\r\n { value: 'system', labelKey: 'themeSystem', icon: '💻' },\r\n];\r\n\r\nconst accentColors = [\r\n { key: 'indigo', color: '#6366f1', name: 'Indigo' },\r\n { key: 'blue', color: '#3b82f6', name: 'Blue' },\r\n { key: 'emerald', color: '#10b981', name: 'Emerald' },\r\n { key: 'amber', color: '#f59e0b', name: 'Amber' },\r\n { key: 'rose', color: '#f43f5e', name: 'Rose' },\r\n { key: 'purple', color: '#a855f7', name: 'Purple' },\r\n];\r\n\r\nexport function OnboardingWizardPage() {\r\n const { t, i18n } = useTranslation('auth');\r\n const navigate = useNavigate();\r\n\r\n const [currentStep, setCurrentStep] = useState<Step>('language');\r\n const [selectedLanguage, setSelectedLanguage] = useState(i18n.language?.substring(0, 2) || 'fr');\r\n const [selectedTheme, setSelectedTheme] = useState('dark');\r\n const [selectedAccentColor, setSelectedAccentColor] = useState('indigo');\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [success, setSuccess] = useState(false);\r\n\r\n // Check onboarding status on load\r\n useEffect(() => {\r\n const checkOnboardingStatus = async () => {\r\n try {\r\n const response = await api.get<{ hasCompletedOnboarding: boolean }>('/api/onboarding/status');\r\n if (response.hasCompletedOnboarding) {\r\n // Already completed, redirect to home\r\n navigate('/myspace', { replace: true });\r\n }\r\n } catch {\r\n // If we can't check status, allow proceeding\r\n }\r\n };\r\n\r\n checkOnboardingStatus();\r\n }, [navigate]);\r\n\r\n // Update language immediately when selected (lazy loads translations if needed)\r\n useEffect(() => {\r\n if (selectedLanguage && selectedLanguage !== i18n.language?.substring(0, 2)) {\r\n changeLanguage(selectedLanguage);\r\n }\r\n }, [selectedLanguage, i18n]);\r\n\r\n const steps: { key: Step; labelKey: string; icon: React.ReactNode }[] = [\r\n { key: 'language', labelKey: 'stepLanguage', icon: <Globe className=\"w-5 h-5\" /> },\r\n { key: 'theme', labelKey: 'stepTheme', icon: <Palette className=\"w-5 h-5\" /> },\r\n { key: 'complete', labelKey: 'stepComplete', icon: <Sparkles className=\"w-5 h-5\" /> },\r\n ];\r\n\r\n const currentStepIndex = steps.findIndex((s) => s.key === currentStep);\r\n\r\n const handleNext = () => {\r\n const nextIndex = currentStepIndex + 1;\r\n if (nextIndex < steps.length) {\r\n setCurrentStep(steps[nextIndex].key);\r\n }\r\n };\r\n\r\n const handleBack = () => {\r\n const prevIndex = currentStepIndex - 1;\r\n if (prevIndex >= 0) {\r\n setCurrentStep(steps[prevIndex].key);\r\n }\r\n };\r\n\r\n const handleComplete = async () => {\r\n setIsSubmitting(true);\r\n setError(null);\r\n\r\n try {\r\n await api.post('/api/onboarding/complete', {\r\n language: selectedLanguage,\r\n theme: selectedTheme,\r\n accentColorKey: selectedAccentColor,\r\n });\r\n\r\n // Save preferences locally\r\n localStorage.setItem('i18nextLng', selectedLanguage);\r\n localStorage.setItem(\r\n 'smartstack-theme-config',\r\n JSON.stringify({\r\n mode: selectedTheme,\r\n accentColorKey: selectedAccentColor,\r\n borderRadius: {},\r\n itemPaletteKey: 'neutral',\r\n })\r\n );\r\n\r\n setSuccess(true);\r\n\r\n // Redirect after success animation\r\n setTimeout(() => {\r\n window.location.href = '/myspace';\r\n }, 2000);\r\n } catch (err) {\r\n console.error('Onboarding error:', err);\r\n setError(t('onboarding.errorMessage'));\r\n } finally {\r\n setIsSubmitting(false);\r\n }\r\n };\r\n\r\n if (success) {\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-[var(--bg-primary)]\">\r\n <div className=\"max-w-md w-full mx-4\">\r\n <div className=\"bg-[var(--bg-secondary)] rounded-2xl p-8 shadow-lg border border-[var(--border-color)]\">\r\n <div className=\"text-center\">\r\n <div className=\"w-20 h-20 mx-auto bg-green-100 dark:bg-green-900/30 rounded-full flex items-center justify-center mb-6\">\r\n <CheckCircle className=\"w-12 h-12 text-green-600 dark:text-green-400\" />\r\n </div>\r\n <h2 className=\"text-2xl font-bold mb-3\">{t('onboarding.successTitle')}</h2>\r\n <p className=\"text-[var(--text-secondary)]\">{t('onboarding.successMessage')}</p>\r\n <div className=\"mt-6\">\r\n <Loader2 className=\"w-6 h-6 mx-auto text-[var(--color-accent-500)] animate-spin\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-[var(--bg-primary)] p-4\">\r\n <div className=\"max-w-lg w-full\">\r\n {/* Header */}\r\n <div className=\"text-center mb-8\">\r\n <div className=\"flex items-center justify-center gap-2 mb-4\">\r\n <div className=\"w-12 h-12 bg-gradient-to-br from-blue-500 to-purple-600 rounded-xl flex items-center justify-center\">\r\n <span className=\"text-white text-xl font-bold\">S</span>\r\n </div>\r\n </div>\r\n <h1 className=\"text-3xl font-bold mb-2\">{t('onboarding.title')}</h1>\r\n <p className=\"text-[var(--text-secondary)]\">{t('onboarding.subtitle')}</p>\r\n </div>\r\n\r\n {/* Steps indicator */}\r\n <div className=\"flex justify-center mb-8\">\r\n <div className=\"flex items-center gap-2\">\r\n {steps.map((step, index) => (\r\n <div key={step.key} className=\"flex items-center\">\r\n <div\r\n className={`w-10 h-10 rounded-full flex items-center justify-center transition-all ${\r\n index <= currentStepIndex\r\n ? 'bg-[var(--color-accent-500)] text-white'\r\n : 'bg-[var(--bg-tertiary)] text-[var(--text-secondary)]'\r\n }`}\r\n >\r\n {step.icon}\r\n </div>\r\n {index < steps.length - 1 && (\r\n <div\r\n className={`w-12 h-1 mx-1 rounded transition-all ${\r\n index < currentStepIndex\r\n ? 'bg-[var(--color-accent-500)]'\r\n : 'bg-[var(--bg-tertiary)]'\r\n }`}\r\n />\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Card */}\r\n <div className=\"bg-[var(--bg-secondary)] rounded-2xl p-8 shadow-lg border border-[var(--border-color)]\">\r\n {/* Language Step */}\r\n {currentStep === 'language' && (\r\n <div>\r\n <h2 className=\"text-xl font-semibold mb-6 text-center\">{t('onboarding.languageLabel')}</h2>\r\n <div className=\"grid grid-cols-2 gap-4\">\r\n {languages.map((lang) => (\r\n <button\r\n key={lang.code}\r\n onClick={() => setSelectedLanguage(lang.code)}\r\n className={`p-4 rounded-xl border-2 transition-all ${\r\n selectedLanguage === lang.code\r\n ? 'border-[var(--color-accent-500)] bg-[var(--color-accent-50)] dark:bg-[var(--color-accent-900)]/20'\r\n : 'border-[var(--border-color)] hover:border-[var(--color-accent-300)]'\r\n }`}\r\n >\r\n <span className=\"text-3xl mb-2 block\">{lang.flag}</span>\r\n <span className=\"font-medium\">{lang.name}</span>\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Theme Step */}\r\n {currentStep === 'theme' && (\r\n <div>\r\n <h2 className=\"text-xl font-semibold mb-6 text-center\">{t('onboarding.themeLabel')}</h2>\r\n\r\n {/* Theme selection */}\r\n <div className=\"grid grid-cols-3 gap-3 mb-8\">\r\n {themes.map((theme) => (\r\n <button\r\n key={theme.value}\r\n onClick={() => setSelectedTheme(theme.value)}\r\n className={`p-4 rounded-xl border-2 transition-all ${\r\n selectedTheme === theme.value\r\n ? 'border-[var(--color-accent-500)] bg-[var(--color-accent-50)] dark:bg-[var(--color-accent-900)]/20'\r\n : 'border-[var(--border-color)] hover:border-[var(--color-accent-300)]'\r\n }`}\r\n >\r\n <span className=\"text-2xl mb-2 block\">{theme.icon}</span>\r\n <span className=\"text-sm font-medium\">{t(`onboarding.${theme.labelKey}`)}</span>\r\n </button>\r\n ))}\r\n </div>\r\n\r\n {/* Accent color selection */}\r\n <div>\r\n <h3 className=\"text-sm font-medium mb-3 text-[var(--text-secondary)]\">\r\n {t('onboarding.accentColorLabel')}\r\n </h3>\r\n <div className=\"flex justify-center gap-3\">\r\n {accentColors.map((color) => (\r\n <button\r\n key={color.key}\r\n onClick={() => setSelectedAccentColor(color.key)}\r\n className={`w-10 h-10 rounded-full transition-all ${\r\n selectedAccentColor === color.key\r\n ? 'ring-2 ring-offset-2 ring-[var(--color-accent-500)] ring-offset-[var(--bg-secondary)]'\r\n : 'hover:scale-110'\r\n }`}\r\n style={{ backgroundColor: color.color }}\r\n title={color.name}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Complete Step */}\r\n {currentStep === 'complete' && (\r\n <div className=\"text-center\">\r\n <div className=\"w-20 h-20 mx-auto bg-[var(--color-accent-100)] dark:bg-[var(--color-accent-900)]/30 rounded-full flex items-center justify-center mb-6\">\r\n <Sparkles className=\"w-10 h-10 text-[var(--color-accent-500)]\" />\r\n </div>\r\n <h2 className=\"text-xl font-semibold mb-4\">{t('onboarding.stepComplete')}</h2>\r\n <div className=\"text-[var(--text-secondary)] mb-6 space-y-2\">\r\n <p>\r\n <span className=\"inline-flex items-center gap-2\">\r\n <Globe className=\"w-4 h-4\" />\r\n {languages.find((l) => l.code === selectedLanguage)?.name}\r\n </span>\r\n </p>\r\n <p>\r\n <span className=\"inline-flex items-center gap-2\">\r\n <Palette className=\"w-4 h-4\" />\r\n {themes.find((t) => t.value === selectedTheme)?.icon}{' '}\r\n {t(`onboarding.${themes.find((th) => th.value === selectedTheme)?.labelKey}`)}\r\n </span>\r\n </p>\r\n <p>\r\n <span className=\"inline-flex items-center gap-2\">\r\n <span\r\n className=\"w-4 h-4 rounded-full\"\r\n style={{ backgroundColor: accentColors.find((c) => c.key === selectedAccentColor)?.color }}\r\n />\r\n {accentColors.find((c) => c.key === selectedAccentColor)?.name}\r\n </span>\r\n </p>\r\n </div>\r\n\r\n {error && (\r\n <div className=\"bg-red-50 dark:bg-red-900/20 text-red-700 dark:text-red-300 rounded-lg p-3 mb-4 text-sm\">\r\n {error}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Navigation buttons */}\r\n <div className=\"flex justify-between mt-8\">\r\n {currentStepIndex > 0 ? (\r\n <button\r\n onClick={handleBack}\r\n className=\"flex items-center gap-2 px-4 py-2 text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors\"\r\n >\r\n <ArrowLeft className=\"w-4 h-4\" />\r\n {t('onboarding.back')}\r\n </button>\r\n ) : (\r\n <div />\r\n )}\r\n\r\n {currentStep === 'complete' ? (\r\n <button\r\n onClick={handleComplete}\r\n disabled={isSubmitting}\r\n className=\"flex items-center gap-2 px-6 py-2 bg-[var(--color-accent-500)] hover:bg-[var(--color-accent-600)] text-white rounded-lg font-medium transition-colors disabled:opacity-50\"\r\n >\r\n {isSubmitting ? (\r\n <>\r\n <Loader2 className=\"w-4 h-4 animate-spin\" />\r\n {t('onboarding.completing')}\r\n </>\r\n ) : (\r\n <>\r\n {t('onboarding.complete')}\r\n <CheckCircle className=\"w-4 h-4\" />\r\n </>\r\n )}\r\n </button>\r\n ) : (\r\n <button\r\n onClick={handleNext}\r\n className=\"flex items-center gap-2 px-6 py-2 bg-[var(--color-accent-500)] hover:bg-[var(--color-accent-600)] text-white rounded-lg font-medium transition-colors\"\r\n >\r\n {t('onboarding.continue')}\r\n <ArrowRight className=\"w-4 h-4\" />\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["languages","themes","accentColors","OnboardingWizardPage","i18n","useTranslation","navigate","useNavigate","currentStep","setCurrentStep","useState","selectedLanguage","setSelectedLanguage","selectedTheme","setSelectedTheme","selectedAccentColor","setSelectedAccentColor","isSubmitting","setIsSubmitting","error","setError","success","setSuccess","useEffect","api","changeLanguage","steps","jsx","Globe","Palette","Sparkles","currentStepIndex","s","handleNext","nextIndex","handleBack","prevIndex","handleComplete","err","jsxs","CheckCircle","Loader2","step","index","lang","theme","color","l","t","th","c","ArrowLeft","Fragment","ArrowRight"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"OnboardingWizardPage-C7vendrq.cjs","sources":["../src/pages/auth/OnboardingWizardPage.tsx"],"sourcesContent":["import { useState, useEffect } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Loader2, CheckCircle, Globe, Palette, Sparkles, ArrowRight, ArrowLeft } from 'lucide-react';\r\nimport { api } from '@/services/api/apiClient';\r\nimport { changeLanguage } from '@/i18n/config';\r\n\r\ntype Step = 'language' | 'theme' | 'complete';\r\n\r\ninterface LanguageOption {\r\n code: string;\r\n name: string;\r\n flag: string;\r\n}\r\n\r\ninterface ThemeOption {\r\n value: string;\r\n labelKey: string;\r\n icon: string;\r\n}\r\n\r\nconst languages: LanguageOption[] = [\r\n { code: 'fr', name: 'Francais', flag: '🇫🇷' },\r\n { code: 'en', name: 'English', flag: '🇬🇧' },\r\n { code: 'de', name: 'Deutsch', flag: '🇩🇪' },\r\n { code: 'it', name: 'Italiano', flag: '🇮🇹' },\r\n];\r\n\r\nconst themes: ThemeOption[] = [\r\n { value: 'light', labelKey: 'themeLight', icon: '☀️' },\r\n { value: 'dark', labelKey: 'themeDark', icon: '🌙' },\r\n { value: 'system', labelKey: 'themeSystem', icon: '💻' },\r\n];\r\n\r\nconst accentColors = [\r\n { key: 'indigo', color: '#6366f1', name: 'Indigo' },\r\n { key: 'blue', color: '#3b82f6', name: 'Blue' },\r\n { key: 'emerald', color: '#10b981', name: 'Emerald' },\r\n { key: 'amber', color: '#f59e0b', name: 'Amber' },\r\n { key: 'rose', color: '#f43f5e', name: 'Rose' },\r\n { key: 'purple', color: '#a855f7', name: 'Purple' },\r\n];\r\n\r\nexport function OnboardingWizardPage() {\r\n const { t, i18n } = useTranslation('auth');\r\n const navigate = useNavigate();\r\n\r\n const [currentStep, setCurrentStep] = useState<Step>('language');\r\n const [selectedLanguage, setSelectedLanguage] = useState(i18n.language?.substring(0, 2) || 'fr');\r\n const [selectedTheme, setSelectedTheme] = useState('dark');\r\n const [selectedAccentColor, setSelectedAccentColor] = useState('indigo');\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [success, setSuccess] = useState(false);\r\n\r\n // Check onboarding status on load\r\n useEffect(() => {\r\n const checkOnboardingStatus = async () => {\r\n try {\r\n const response = await api.get<{ hasCompletedOnboarding: boolean }>('/api/onboarding/status');\r\n if (response.hasCompletedOnboarding) {\r\n // Already completed, redirect to home\r\n navigate('/myspace', { replace: true });\r\n }\r\n } catch {\r\n // If we can't check status, allow proceeding\r\n }\r\n };\r\n\r\n checkOnboardingStatus();\r\n }, [navigate]);\r\n\r\n // Update language immediately when selected (lazy loads translations if needed)\r\n useEffect(() => {\r\n if (selectedLanguage && selectedLanguage !== i18n.language?.substring(0, 2)) {\r\n changeLanguage(selectedLanguage);\r\n }\r\n }, [selectedLanguage, i18n]);\r\n\r\n const steps: { key: Step; labelKey: string; icon: React.ReactNode }[] = [\r\n { key: 'language', labelKey: 'stepLanguage', icon: <Globe className=\"w-5 h-5\" /> },\r\n { key: 'theme', labelKey: 'stepTheme', icon: <Palette className=\"w-5 h-5\" /> },\r\n { key: 'complete', labelKey: 'stepComplete', icon: <Sparkles className=\"w-5 h-5\" /> },\r\n ];\r\n\r\n const currentStepIndex = steps.findIndex((s) => s.key === currentStep);\r\n\r\n const handleNext = () => {\r\n const nextIndex = currentStepIndex + 1;\r\n if (nextIndex < steps.length) {\r\n setCurrentStep(steps[nextIndex].key);\r\n }\r\n };\r\n\r\n const handleBack = () => {\r\n const prevIndex = currentStepIndex - 1;\r\n if (prevIndex >= 0) {\r\n setCurrentStep(steps[prevIndex].key);\r\n }\r\n };\r\n\r\n const handleComplete = async () => {\r\n setIsSubmitting(true);\r\n setError(null);\r\n\r\n try {\r\n await api.post('/api/onboarding/complete', {\r\n language: selectedLanguage,\r\n theme: selectedTheme,\r\n accentColorKey: selectedAccentColor,\r\n });\r\n\r\n // Save preferences locally\r\n localStorage.setItem('i18nextLng', selectedLanguage);\r\n localStorage.setItem(\r\n 'smartstack-theme-config',\r\n JSON.stringify({\r\n mode: selectedTheme,\r\n accentColorKey: selectedAccentColor,\r\n borderRadius: {},\r\n itemPaletteKey: 'neutral',\r\n })\r\n );\r\n\r\n setSuccess(true);\r\n\r\n // Redirect after success animation\r\n setTimeout(() => {\r\n window.location.href = '/myspace';\r\n }, 2000);\r\n } catch (err) {\r\n console.error('Onboarding error:', err);\r\n setError(t('onboarding.errorMessage'));\r\n } finally {\r\n setIsSubmitting(false);\r\n }\r\n };\r\n\r\n if (success) {\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-[var(--bg-primary)]\">\r\n <div className=\"max-w-md w-full mx-4\">\r\n <div className=\"bg-[var(--bg-secondary)] rounded-2xl p-8 shadow-lg border border-[var(--border-color)]\">\r\n <div className=\"text-center\">\r\n <div className=\"w-20 h-20 mx-auto bg-green-100 dark:bg-green-900/30 rounded-full flex items-center justify-center mb-6\">\r\n <CheckCircle className=\"w-12 h-12 text-green-600 dark:text-green-400\" />\r\n </div>\r\n <h2 className=\"text-2xl font-bold mb-3\">{t('onboarding.successTitle')}</h2>\r\n <p className=\"text-[var(--text-secondary)]\">{t('onboarding.successMessage')}</p>\r\n <div className=\"mt-6\">\r\n <Loader2 className=\"w-6 h-6 mx-auto text-[var(--color-accent-500)] animate-spin\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"min-h-screen flex items-center justify-center bg-[var(--bg-primary)] p-4\">\r\n <div className=\"max-w-lg w-full\">\r\n {/* Header */}\r\n <div className=\"text-center mb-8\">\r\n <div className=\"flex items-center justify-center gap-2 mb-4\">\r\n <div className=\"w-12 h-12 bg-gradient-to-br from-blue-500 to-purple-600 rounded-xl flex items-center justify-center\">\r\n <span className=\"text-white text-xl font-bold\">S</span>\r\n </div>\r\n </div>\r\n <h1 className=\"text-3xl font-bold mb-2\">{t('onboarding.title')}</h1>\r\n <p className=\"text-[var(--text-secondary)]\">{t('onboarding.subtitle')}</p>\r\n </div>\r\n\r\n {/* Steps indicator */}\r\n <div className=\"flex justify-center mb-8\">\r\n <div className=\"flex items-center gap-2\">\r\n {steps.map((step, index) => (\r\n <div key={step.key} className=\"flex items-center\">\r\n <div\r\n className={`w-10 h-10 rounded-full flex items-center justify-center transition-all ${\r\n index <= currentStepIndex\r\n ? 'bg-[var(--color-accent-500)] text-white'\r\n : 'bg-[var(--bg-tertiary)] text-[var(--text-secondary)]'\r\n }`}\r\n >\r\n {step.icon}\r\n </div>\r\n {index < steps.length - 1 && (\r\n <div\r\n className={`w-12 h-1 mx-1 rounded transition-all ${\r\n index < currentStepIndex\r\n ? 'bg-[var(--color-accent-500)]'\r\n : 'bg-[var(--bg-tertiary)]'\r\n }`}\r\n />\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Card */}\r\n <div className=\"bg-[var(--bg-secondary)] rounded-2xl p-8 shadow-lg border border-[var(--border-color)]\">\r\n {/* Language Step */}\r\n {currentStep === 'language' && (\r\n <div>\r\n <h2 className=\"text-xl font-semibold mb-6 text-center\">{t('onboarding.languageLabel')}</h2>\r\n <div className=\"grid grid-cols-2 gap-4\">\r\n {languages.map((lang) => (\r\n <button\r\n key={lang.code}\r\n onClick={() => setSelectedLanguage(lang.code)}\r\n className={`p-4 rounded-xl border-2 transition-all ${\r\n selectedLanguage === lang.code\r\n ? 'border-[var(--color-accent-500)] bg-[var(--color-accent-50)] dark:bg-[var(--color-accent-900)]/20'\r\n : 'border-[var(--border-color)] hover:border-[var(--color-accent-300)]'\r\n }`}\r\n >\r\n <span className=\"text-3xl mb-2 block\">{lang.flag}</span>\r\n <span className=\"font-medium\">{lang.name}</span>\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Theme Step */}\r\n {currentStep === 'theme' && (\r\n <div>\r\n <h2 className=\"text-xl font-semibold mb-6 text-center\">{t('onboarding.themeLabel')}</h2>\r\n\r\n {/* Theme selection */}\r\n <div className=\"grid grid-cols-3 gap-3 mb-8\">\r\n {themes.map((theme) => (\r\n <button\r\n key={theme.value}\r\n onClick={() => setSelectedTheme(theme.value)}\r\n className={`p-4 rounded-xl border-2 transition-all ${\r\n selectedTheme === theme.value\r\n ? 'border-[var(--color-accent-500)] bg-[var(--color-accent-50)] dark:bg-[var(--color-accent-900)]/20'\r\n : 'border-[var(--border-color)] hover:border-[var(--color-accent-300)]'\r\n }`}\r\n >\r\n <span className=\"text-2xl mb-2 block\">{theme.icon}</span>\r\n <span className=\"text-sm font-medium\">{t(`onboarding.${theme.labelKey}`)}</span>\r\n </button>\r\n ))}\r\n </div>\r\n\r\n {/* Accent color selection */}\r\n <div>\r\n <h3 className=\"text-sm font-medium mb-3 text-[var(--text-secondary)]\">\r\n {t('onboarding.accentColorLabel')}\r\n </h3>\r\n <div className=\"flex justify-center gap-3\">\r\n {accentColors.map((color) => (\r\n <button\r\n key={color.key}\r\n onClick={() => setSelectedAccentColor(color.key)}\r\n className={`w-10 h-10 rounded-full transition-all ${\r\n selectedAccentColor === color.key\r\n ? 'ring-2 ring-offset-2 ring-[var(--color-accent-500)] ring-offset-[var(--bg-secondary)]'\r\n : 'hover:scale-110'\r\n }`}\r\n style={{ backgroundColor: color.color }}\r\n title={color.name}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Complete Step */}\r\n {currentStep === 'complete' && (\r\n <div className=\"text-center\">\r\n <div className=\"w-20 h-20 mx-auto bg-[var(--color-accent-100)] dark:bg-[var(--color-accent-900)]/30 rounded-full flex items-center justify-center mb-6\">\r\n <Sparkles className=\"w-10 h-10 text-[var(--color-accent-500)]\" />\r\n </div>\r\n <h2 className=\"text-xl font-semibold mb-4\">{t('onboarding.stepComplete')}</h2>\r\n <div className=\"text-[var(--text-secondary)] mb-6 space-y-2\">\r\n <p>\r\n <span className=\"inline-flex items-center gap-2\">\r\n <Globe className=\"w-4 h-4\" />\r\n {languages.find((l) => l.code === selectedLanguage)?.name}\r\n </span>\r\n </p>\r\n <p>\r\n <span className=\"inline-flex items-center gap-2\">\r\n <Palette className=\"w-4 h-4\" />\r\n {themes.find((t) => t.value === selectedTheme)?.icon}{' '}\r\n {t(`onboarding.${themes.find((th) => th.value === selectedTheme)?.labelKey}`)}\r\n </span>\r\n </p>\r\n <p>\r\n <span className=\"inline-flex items-center gap-2\">\r\n <span\r\n className=\"w-4 h-4 rounded-full\"\r\n style={{ backgroundColor: accentColors.find((c) => c.key === selectedAccentColor)?.color }}\r\n />\r\n {accentColors.find((c) => c.key === selectedAccentColor)?.name}\r\n </span>\r\n </p>\r\n </div>\r\n\r\n {error && (\r\n <div className=\"bg-red-50 dark:bg-red-900/20 text-red-700 dark:text-red-300 rounded-lg p-3 mb-4 text-sm\">\r\n {error}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Navigation buttons */}\r\n <div className=\"flex justify-between mt-8\">\r\n {currentStepIndex > 0 ? (\r\n <button\r\n onClick={handleBack}\r\n className=\"flex items-center gap-2 px-4 py-2 text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors\"\r\n >\r\n <ArrowLeft className=\"w-4 h-4\" />\r\n {t('onboarding.back')}\r\n </button>\r\n ) : (\r\n <div />\r\n )}\r\n\r\n {currentStep === 'complete' ? (\r\n <button\r\n onClick={handleComplete}\r\n disabled={isSubmitting}\r\n className=\"flex items-center gap-2 px-6 py-2 bg-[var(--color-accent-500)] hover:bg-[var(--color-accent-600)] text-white rounded-lg font-medium transition-colors disabled:opacity-50\"\r\n >\r\n {isSubmitting ? (\r\n <>\r\n <Loader2 className=\"w-4 h-4 animate-spin\" />\r\n {t('onboarding.completing')}\r\n </>\r\n ) : (\r\n <>\r\n {t('onboarding.complete')}\r\n <CheckCircle className=\"w-4 h-4\" />\r\n </>\r\n )}\r\n </button>\r\n ) : (\r\n <button\r\n onClick={handleNext}\r\n className=\"flex items-center gap-2 px-6 py-2 bg-[var(--color-accent-500)] hover:bg-[var(--color-accent-600)] text-white rounded-lg font-medium transition-colors\"\r\n >\r\n {t('onboarding.continue')}\r\n <ArrowRight className=\"w-4 h-4\" />\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["languages","themes","accentColors","OnboardingWizardPage","t","i18n","useTranslation","navigate","useNavigate","currentStep","setCurrentStep","useState","selectedLanguage","setSelectedLanguage","selectedTheme","setSelectedTheme","selectedAccentColor","setSelectedAccentColor","isSubmitting","setIsSubmitting","error","setError","success","setSuccess","useEffect","api","changeLanguage","steps","jsx","Globe","Palette","Sparkles","currentStepIndex","s","handleNext","nextIndex","handleBack","prevIndex","handleComplete","err","jsxs","CheckCircle","Loader2","step","index","lang","theme","color","l","th","c","ArrowLeft","Fragment","ArrowRight"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RegisterPage-BzV0sCTe.js","sources":["../src/pages/auth/RegisterPage.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { Eye, EyeOff, Lock, Mail, Loader2, User, CheckCircle2, AlertCircle } from 'lucide-react';\r\nimport { Link } from 'react-router-dom';\r\nimport { ThemeSwitcher } from '@/components/ui/ThemeSwitcher';\r\nimport { authApi } from '@/services/api/authApi';\r\nimport { logService } from '@/services/logging/logService';\r\nimport { NetworkError } from '@/types/errors';\r\n\r\nexport function RegisterPage() {\r\n const [email, setEmail] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [confirmPassword, setConfirmPassword] = useState('');\r\n const [firstName, setFirstName] = useState('');\r\n const [lastName, setLastName] = useState('');\r\n const [showPassword, setShowPassword] = useState(false);\r\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [success, setSuccess] = useState<string | null>(null);\r\n\r\n const validateForm = () => {\r\n if (!email || !password || !confirmPassword || !firstName || !lastName) {\r\n setError('Tous les champs sont requis');\r\n return false;\r\n }\r\n\r\n if (password !== confirmPassword) {\r\n setError('Les mots de passe ne correspondent pas');\r\n return false;\r\n }\r\n\r\n if (password.length < 8) {\r\n setError('Le mot de passe doit contenir au moins 8 caractères');\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n setError(null);\r\n setSuccess(null);\r\n\r\n if (!validateForm()) {\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n\r\n try {\r\n logService.logEvent('register_attempt', 'auth', { email });\r\n\r\n const response = await authApi.register({\r\n email,\r\n password,\r\n firstName,\r\n lastName,\r\n });\r\n\r\n logService.logEvent('register_success', 'auth', { email });\r\n setSuccess(response.message);\r\n\r\n // Clear form\r\n setEmail('');\r\n setPassword('');\r\n setConfirmPassword('');\r\n setFirstName('');\r\n setLastName('');\r\n } catch (err) {\r\n if (err instanceof NetworkError) {\r\n setError(err.message);\r\n } else {\r\n const message = err instanceof Error ? err.message : 'Une erreur inattendue est survenue';\r\n setError(message);\r\n }\r\n logService.logError(\r\n err instanceof Error ? err : new Error(String(err)),\r\n 'RegisterPage.handleSubmit',\r\n { email }\r\n );\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"min-h-screen flex\">\r\n {/* Left side - Branding & Features */}\r\n <div className=\"hidden lg:flex lg:w-1/2 bg-gradient-to-br from-blue-600 via-purple-600 to-indigo-600 p-12 text-white flex-col justify-between relative overflow-hidden\">\r\n {/* Background pattern */}\r\n <div className=\"absolute inset-0 opacity-10\">\r\n <div className=\"absolute inset-0\" style={{\r\n backgroundImage: 'radial-gradient(circle at 2px 2px, white 1px, transparent 0)',\r\n backgroundSize: '40px 40px'\r\n }} />\r\n </div>\r\n\r\n <div className=\"relative z-10\">\r\n <div className=\"flex items-center gap-3 mb-12\">\r\n <div className=\"p-2 bg-white/20 backdrop-blur-sm rounded-lg\">\r\n <div className=\"w-8 h-8 flex items-center justify-center\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"w-6 h-6\">\r\n <path d=\"M12 2L2 7V17L12 22L22 17V7L12 2ZM12 4.5L19 8.27V15.73L12 19.5L5 15.73V8.27L12 4.5Z\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div className=\"text-2xl font-bold tracking-tight\">SmartStack</div>\r\n </div>\r\n\r\n <div className=\"space-y-6\">\r\n <h1 className=\"text-4xl font-bold leading-tight\">\r\n Créez votre compte<br />\r\n <span className=\"text-white/80\">et rejoignez-nous</span>\r\n </h1>\r\n <p className=\"text-white/80 text-lg max-w-md\">\r\n Accédez à une plateforme complète de gestion avec authentification sécurisée et tableau de bord personnalisé.\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"relative z-10 text-sm text-white/60\">\r\n © {new Date().getFullYear()} SmartStack. Tous droits réservés.\r\n </div>\r\n </div>\r\n\r\n {/* Right side - Registration Form */}\r\n <div className=\"w-full lg:w-1/2 flex items-center justify-center p-8 bg-white dark:bg-gray-900\">\r\n <div className=\"w-full max-w-md\">\r\n {/* Theme Switcher */}\r\n <div className=\"flex justify-end mb-8\">\r\n <ThemeSwitcher />\r\n </div>\r\n\r\n {/* Form Header */}\r\n <div className=\"text-center mb-8\">\r\n <h2 className=\"text-3xl font-bold text-gray-900 dark:text-white mb-2\">\r\n Créer un compte\r\n </h2>\r\n <p className=\"text-gray-600 dark:text-gray-400\">\r\n Remplissez vos informations pour commencer\r\n </p>\r\n </div>\r\n\r\n {/* Success Message */}\r\n {success && (\r\n <div className=\"mb-6 p-4 bg-green-500/10 border border-green-500/20 rounded-lg flex items-start gap-3\">\r\n <CheckCircle2 className=\"w-5 h-5 text-green-600 dark:text-green-400 flex-shrink-0 mt-0.5\" />\r\n <div className=\"flex-1\">\r\n <p className=\"text-sm text-green-600 dark:text-green-400\">{success}</p>\r\n <p className=\"text-xs text-green-600/80 dark:text-green-400/80 mt-1\">\r\n Consultez vos emails pour confirmer votre adresse.\r\n </p>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Error Message */}\r\n {error && (\r\n <div className=\"mb-6 p-4 bg-red-500/10 border border-red-500/20 rounded-lg flex items-start gap-3\">\r\n <AlertCircle className=\"w-5 h-5 text-red-500 flex-shrink-0 mt-0.5\" />\r\n <p className=\"text-sm text-red-500 flex-1\">{error}</p>\r\n </div>\r\n )}\r\n\r\n {/* Registration Form */}\r\n <form onSubmit={handleSubmit} className=\"space-y-4\">\r\n {/* Name Fields */}\r\n <div className=\"grid grid-cols-2 gap-4\">\r\n <div>\r\n <label htmlFor=\"firstName\" className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\r\n Prénom\r\n </label>\r\n <div className=\"relative\">\r\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <User className=\"h-5 w-5 text-gray-400\" />\r\n </div>\r\n <input\r\n id=\"firstName\"\r\n type=\"text\"\r\n value={firstName}\r\n onChange={(e) => setFirstName(e.target.value)}\r\n className=\"block w-full pl-10 pr-3 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"Jean\"\r\n required\r\n autoComplete=\"given-name\"\r\n disabled={isLoading}\r\n />\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <label htmlFor=\"lastName\" className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\r\n Nom\r\n </label>\r\n <div className=\"relative\">\r\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <User className=\"h-5 w-5 text-gray-400\" />\r\n </div>\r\n <input\r\n id=\"lastName\"\r\n type=\"text\"\r\n value={lastName}\r\n onChange={(e) => setLastName(e.target.value)}\r\n className=\"block w-full pl-10 pr-3 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"Dupont\"\r\n required\r\n autoComplete=\"family-name\"\r\n disabled={isLoading}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Email Field */}\r\n <div>\r\n <label htmlFor=\"email\" className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\r\n Adresse email\r\n </label>\r\n <div className=\"relative\">\r\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <Mail className=\"h-5 w-5 text-gray-400\" />\r\n </div>\r\n <input\r\n id=\"email\"\r\n type=\"email\"\r\n value={email}\r\n onChange={(e) => setEmail(e.target.value)}\r\n className=\"block w-full pl-10 pr-3 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"vous@exemple.com\"\r\n required\r\n autoComplete=\"email\"\r\n disabled={isLoading}\r\n />\r\n </div>\r\n </div>\r\n\r\n {/* Password Field */}\r\n <div>\r\n <label htmlFor=\"password\" className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\r\n Mot de passe\r\n </label>\r\n <div className=\"relative\">\r\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <Lock className=\"h-5 w-5 text-gray-400\" />\r\n </div>\r\n <input\r\n id=\"password\"\r\n type={showPassword ? 'text' : 'password'}\r\n value={password}\r\n onChange={(e) => setPassword(e.target.value)}\r\n className=\"block w-full pl-10 pr-10 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"••••••••\"\r\n required\r\n autoComplete=\"new-password\"\r\n disabled={isLoading}\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={() => setShowPassword(!showPassword)}\r\n className=\"absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300\"\r\n tabIndex={-1}\r\n >\r\n {showPassword ? <EyeOff className=\"h-5 w-5\" /> : <Eye className=\"h-5 w-5\" />}\r\n </button>\r\n </div>\r\n <p className=\"mt-1 text-xs text-gray-500 dark:text-gray-400\">\r\n Minimum 8 caractères\r\n </p>\r\n </div>\r\n\r\n {/* Confirm Password Field */}\r\n <div>\r\n <label htmlFor=\"confirmPassword\" className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\r\n Confirmer le mot de passe\r\n </label>\r\n <div className=\"relative\">\r\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <Lock className=\"h-5 w-5 text-gray-400\" />\r\n </div>\r\n <input\r\n id=\"confirmPassword\"\r\n type={showConfirmPassword ? 'text' : 'password'}\r\n value={confirmPassword}\r\n onChange={(e) => setConfirmPassword(e.target.value)}\r\n className=\"block w-full pl-10 pr-10 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"••••••••\"\r\n required\r\n autoComplete=\"new-password\"\r\n disabled={isLoading}\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={() => setShowConfirmPassword(!showConfirmPassword)}\r\n className=\"absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300\"\r\n tabIndex={-1}\r\n >\r\n {showConfirmPassword ? <EyeOff className=\"h-5 w-5\" /> : <Eye className=\"h-5 w-5\" />}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* Submit Button */}\r\n <button\r\n type=\"submit\"\r\n disabled={isLoading}\r\n className=\"w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-blue-600 to-purple-600 text-white rounded-lg font-medium hover:from-blue-700 hover:to-purple-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-all disabled:opacity-50 disabled:cursor-not-allowed\"\r\n >\r\n {isLoading ? (\r\n <>\r\n <Loader2 className=\"h-5 w-5 animate-spin\" />\r\n Création en cours...\r\n </>\r\n ) : (\r\n <>Créer mon compte</>\r\n )}\r\n </button>\r\n </form>\r\n\r\n {/* Links */}\r\n <div className=\"mt-6 text-center space-y-2\">\r\n <p className=\"text-sm text-gray-600 dark:text-gray-400\">\r\n Vous avez déjà un compte ?{' '}\r\n <Link to=\"/login\" className=\"text-blue-600 dark:text-blue-400 hover:underline font-medium\">\r\n Se connecter\r\n </Link>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["RegisterPage","email","setEmail","useState","password","setPassword","confirmPassword","setConfirmPassword","firstName","setFirstName","lastName","setLastName","showPassword","setShowPassword","showConfirmPassword","setShowConfirmPassword","isLoading","setIsLoading","error","setError","success","setSuccess","validateForm","handleSubmit","e","logService","response","authApi","err","NetworkError","message","jsxs","jsx","ThemeSwitcher","CheckCircle2","AlertCircle","User","Mail","Lock","EyeOff","Eye","Fragment","Loader2","Link"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RegisterPage-DKr8quRk.cjs","sources":["../src/pages/auth/RegisterPage.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { Eye, EyeOff, Lock, Mail, Loader2, User, CheckCircle2, AlertCircle } from 'lucide-react';\r\nimport { Link } from 'react-router-dom';\r\nimport { ThemeSwitcher } from '@/components/ui/ThemeSwitcher';\r\nimport { authApi } from '@/services/api/authApi';\r\nimport { logService } from '@/services/logging/logService';\r\nimport { NetworkError } from '@/types/errors';\r\n\r\nexport function RegisterPage() {\r\n const [email, setEmail] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [confirmPassword, setConfirmPassword] = useState('');\r\n const [firstName, setFirstName] = useState('');\r\n const [lastName, setLastName] = useState('');\r\n const [showPassword, setShowPassword] = useState(false);\r\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [success, setSuccess] = useState<string | null>(null);\r\n\r\n const validateForm = () => {\r\n if (!email || !password || !confirmPassword || !firstName || !lastName) {\r\n setError('Tous les champs sont requis');\r\n return false;\r\n }\r\n\r\n if (password !== confirmPassword) {\r\n setError('Les mots de passe ne correspondent pas');\r\n return false;\r\n }\r\n\r\n if (password.length < 8) {\r\n setError('Le mot de passe doit contenir au moins 8 caractères');\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n setError(null);\r\n setSuccess(null);\r\n\r\n if (!validateForm()) {\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n\r\n try {\r\n logService.logEvent('register_attempt', 'auth', { email });\r\n\r\n const response = await authApi.register({\r\n email,\r\n password,\r\n firstName,\r\n lastName,\r\n });\r\n\r\n logService.logEvent('register_success', 'auth', { email });\r\n setSuccess(response.message);\r\n\r\n // Clear form\r\n setEmail('');\r\n setPassword('');\r\n setConfirmPassword('');\r\n setFirstName('');\r\n setLastName('');\r\n } catch (err) {\r\n if (err instanceof NetworkError) {\r\n setError(err.message);\r\n } else {\r\n const message = err instanceof Error ? err.message : 'Une erreur inattendue est survenue';\r\n setError(message);\r\n }\r\n logService.logError(\r\n err instanceof Error ? err : new Error(String(err)),\r\n 'RegisterPage.handleSubmit',\r\n { email }\r\n );\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"min-h-screen flex\">\r\n {/* Left side - Branding & Features */}\r\n <div className=\"hidden lg:flex lg:w-1/2 bg-gradient-to-br from-blue-600 via-purple-600 to-indigo-600 p-12 text-white flex-col justify-between relative overflow-hidden\">\r\n {/* Background pattern */}\r\n <div className=\"absolute inset-0 opacity-10\">\r\n <div className=\"absolute inset-0\" style={{\r\n backgroundImage: 'radial-gradient(circle at 2px 2px, white 1px, transparent 0)',\r\n backgroundSize: '40px 40px'\r\n }} />\r\n </div>\r\n\r\n <div className=\"relative z-10\">\r\n <div className=\"flex items-center gap-3 mb-12\">\r\n <div className=\"p-2 bg-white/20 backdrop-blur-sm rounded-lg\">\r\n <div className=\"w-8 h-8 flex items-center justify-center\">\r\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"w-6 h-6\">\r\n <path d=\"M12 2L2 7V17L12 22L22 17V7L12 2ZM12 4.5L19 8.27V15.73L12 19.5L5 15.73V8.27L12 4.5Z\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div className=\"text-2xl font-bold tracking-tight\">SmartStack</div>\r\n </div>\r\n\r\n <div className=\"space-y-6\">\r\n <h1 className=\"text-4xl font-bold leading-tight\">\r\n Créez votre compte<br />\r\n <span className=\"text-white/80\">et rejoignez-nous</span>\r\n </h1>\r\n <p className=\"text-white/80 text-lg max-w-md\">\r\n Accédez à une plateforme complète de gestion avec authentification sécurisée et tableau de bord personnalisé.\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"relative z-10 text-sm text-white/60\">\r\n © {new Date().getFullYear()} SmartStack. Tous droits réservés.\r\n </div>\r\n </div>\r\n\r\n {/* Right side - Registration Form */}\r\n <div className=\"w-full lg:w-1/2 flex items-center justify-center p-8 bg-white dark:bg-gray-900\">\r\n <div className=\"w-full max-w-md\">\r\n {/* Theme Switcher */}\r\n <div className=\"flex justify-end mb-8\">\r\n <ThemeSwitcher />\r\n </div>\r\n\r\n {/* Form Header */}\r\n <div className=\"text-center mb-8\">\r\n <h2 className=\"text-3xl font-bold text-gray-900 dark:text-white mb-2\">\r\n Créer un compte\r\n </h2>\r\n <p className=\"text-gray-600 dark:text-gray-400\">\r\n Remplissez vos informations pour commencer\r\n </p>\r\n </div>\r\n\r\n {/* Success Message */}\r\n {success && (\r\n <div className=\"mb-6 p-4 bg-green-500/10 border border-green-500/20 rounded-lg flex items-start gap-3\">\r\n <CheckCircle2 className=\"w-5 h-5 text-green-600 dark:text-green-400 flex-shrink-0 mt-0.5\" />\r\n <div className=\"flex-1\">\r\n <p className=\"text-sm text-green-600 dark:text-green-400\">{success}</p>\r\n <p className=\"text-xs text-green-600/80 dark:text-green-400/80 mt-1\">\r\n Consultez vos emails pour confirmer votre adresse.\r\n </p>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Error Message */}\r\n {error && (\r\n <div className=\"mb-6 p-4 bg-red-500/10 border border-red-500/20 rounded-lg flex items-start gap-3\">\r\n <AlertCircle className=\"w-5 h-5 text-red-500 flex-shrink-0 mt-0.5\" />\r\n <p className=\"text-sm text-red-500 flex-1\">{error}</p>\r\n </div>\r\n )}\r\n\r\n {/* Registration Form */}\r\n <form onSubmit={handleSubmit} className=\"space-y-4\">\r\n {/* Name Fields */}\r\n <div className=\"grid grid-cols-2 gap-4\">\r\n <div>\r\n <label htmlFor=\"firstName\" className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\r\n Prénom\r\n </label>\r\n <div className=\"relative\">\r\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <User className=\"h-5 w-5 text-gray-400\" />\r\n </div>\r\n <input\r\n id=\"firstName\"\r\n type=\"text\"\r\n value={firstName}\r\n onChange={(e) => setFirstName(e.target.value)}\r\n className=\"block w-full pl-10 pr-3 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"Jean\"\r\n required\r\n autoComplete=\"given-name\"\r\n disabled={isLoading}\r\n />\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <label htmlFor=\"lastName\" className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\r\n Nom\r\n </label>\r\n <div className=\"relative\">\r\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <User className=\"h-5 w-5 text-gray-400\" />\r\n </div>\r\n <input\r\n id=\"lastName\"\r\n type=\"text\"\r\n value={lastName}\r\n onChange={(e) => setLastName(e.target.value)}\r\n className=\"block w-full pl-10 pr-3 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"Dupont\"\r\n required\r\n autoComplete=\"family-name\"\r\n disabled={isLoading}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Email Field */}\r\n <div>\r\n <label htmlFor=\"email\" className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\r\n Adresse email\r\n </label>\r\n <div className=\"relative\">\r\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <Mail className=\"h-5 w-5 text-gray-400\" />\r\n </div>\r\n <input\r\n id=\"email\"\r\n type=\"email\"\r\n value={email}\r\n onChange={(e) => setEmail(e.target.value)}\r\n className=\"block w-full pl-10 pr-3 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"vous@exemple.com\"\r\n required\r\n autoComplete=\"email\"\r\n disabled={isLoading}\r\n />\r\n </div>\r\n </div>\r\n\r\n {/* Password Field */}\r\n <div>\r\n <label htmlFor=\"password\" className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\r\n Mot de passe\r\n </label>\r\n <div className=\"relative\">\r\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <Lock className=\"h-5 w-5 text-gray-400\" />\r\n </div>\r\n <input\r\n id=\"password\"\r\n type={showPassword ? 'text' : 'password'}\r\n value={password}\r\n onChange={(e) => setPassword(e.target.value)}\r\n className=\"block w-full pl-10 pr-10 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"••••••••\"\r\n required\r\n autoComplete=\"new-password\"\r\n disabled={isLoading}\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={() => setShowPassword(!showPassword)}\r\n className=\"absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300\"\r\n tabIndex={-1}\r\n >\r\n {showPassword ? <EyeOff className=\"h-5 w-5\" /> : <Eye className=\"h-5 w-5\" />}\r\n </button>\r\n </div>\r\n <p className=\"mt-1 text-xs text-gray-500 dark:text-gray-400\">\r\n Minimum 8 caractères\r\n </p>\r\n </div>\r\n\r\n {/* Confirm Password Field */}\r\n <div>\r\n <label htmlFor=\"confirmPassword\" className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2\">\r\n Confirmer le mot de passe\r\n </label>\r\n <div className=\"relative\">\r\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <Lock className=\"h-5 w-5 text-gray-400\" />\r\n </div>\r\n <input\r\n id=\"confirmPassword\"\r\n type={showConfirmPassword ? 'text' : 'password'}\r\n value={confirmPassword}\r\n onChange={(e) => setConfirmPassword(e.target.value)}\r\n className=\"block w-full pl-10 pr-10 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors\"\r\n placeholder=\"••••••••\"\r\n required\r\n autoComplete=\"new-password\"\r\n disabled={isLoading}\r\n />\r\n <button\r\n type=\"button\"\r\n onClick={() => setShowConfirmPassword(!showConfirmPassword)}\r\n className=\"absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300\"\r\n tabIndex={-1}\r\n >\r\n {showConfirmPassword ? <EyeOff className=\"h-5 w-5\" /> : <Eye className=\"h-5 w-5\" />}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* Submit Button */}\r\n <button\r\n type=\"submit\"\r\n disabled={isLoading}\r\n className=\"w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-blue-600 to-purple-600 text-white rounded-lg font-medium hover:from-blue-700 hover:to-purple-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-all disabled:opacity-50 disabled:cursor-not-allowed\"\r\n >\r\n {isLoading ? (\r\n <>\r\n <Loader2 className=\"h-5 w-5 animate-spin\" />\r\n Création en cours...\r\n </>\r\n ) : (\r\n <>Créer mon compte</>\r\n )}\r\n </button>\r\n </form>\r\n\r\n {/* Links */}\r\n <div className=\"mt-6 text-center space-y-2\">\r\n <p className=\"text-sm text-gray-600 dark:text-gray-400\">\r\n Vous avez déjà un compte ?{' '}\r\n <Link to=\"/login\" className=\"text-blue-600 dark:text-blue-400 hover:underline font-medium\">\r\n Se connecter\r\n </Link>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["RegisterPage","email","setEmail","useState","password","setPassword","confirmPassword","setConfirmPassword","firstName","setFirstName","lastName","setLastName","showPassword","setShowPassword","showConfirmPassword","setShowConfirmPassword","isLoading","setIsLoading","error","setError","success","setSuccess","validateForm","handleSubmit","e","logService","response","authApi","err","NetworkError","message","jsxs","jsx","ThemeSwitcher","CheckCircle2","AlertCircle","User","Mail","Lock","EyeOff","Eye","Fragment","Loader2","Link"],"mappings":"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"}