@atlashub/smartstack 3.10.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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaViewerPage-BPucPOSy.cjs","sources":["../src/pages/system/docs/ba/components/CadrageTab.tsx","../src/pages/system/docs/ba/components/SpecificationTab.tsx","../src/pages/system/docs/ba/components/SyntheseTab.tsx","../src/pages/system/docs/ba/BaViewerPage.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { AlertTriangle, Users, Target, ArrowRight, CheckCircle } from 'lucide-react';\r\nimport type { Discovery, Stakeholder } from '@/types/featureJson';\r\n\r\ninterface CadrageTabProps {\r\n readonly discovery?: Discovery;\r\n}\r\n\r\nfunction ScopeColumn({ title, items, color }: { title: string; items?: string[]; color: string }) {\r\n if (!items?.length) return null;\r\n return (\r\n <div className={`rounded-lg border-l-4 ${color} p-4 bg-[var(--bg-secondary)]`}>\r\n <h4 className=\"text-sm font-semibold mb-2\">{title}</h4>\r\n <ul className=\"space-y-1\">\r\n {items.map((item) => (\r\n <li key={item} className=\"text-sm text-[var(--text-secondary)] flex items-start gap-2\">\r\n <span className=\"mt-1.5 w-1.5 h-1.5 rounded-full bg-current flex-shrink-0\" />\r\n {item}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n );\r\n}\r\n\r\nfunction StakeholderCard({ stakeholder }: { stakeholder: Stakeholder }) {\r\n const { t } = useTranslation('ba');\r\n return (\r\n <div className=\"card p-4\">\r\n <div className=\"flex items-center gap-2 mb-2\">\r\n <Users className=\"w-4 h-4 text-[var(--color-primary-600)]\" />\r\n <h4 className=\"font-medium text-[var(--text-primary)]\">{stakeholder.role}</h4>\r\n </div>\r\n {stakeholder.function && (\r\n <p className=\"text-sm text-[var(--text-secondary)] mb-2\">{stakeholder.function}</p>\r\n )}\r\n {(stakeholder.tasks?.length ?? 0) > 0 && (\r\n <div className=\"mb-2\">\r\n <p className=\"text-xs font-medium text-[var(--text-tertiary)] mb-1\">{t('stakeholder.tasks')}</p>\r\n <ul className=\"space-y-0.5\">\r\n {stakeholder.tasks?.map((task) => (\r\n <li key={task} className=\"text-sm text-[var(--text-secondary)] flex items-center gap-1.5\">\r\n <ArrowRight className=\"w-3 h-3 text-[var(--text-tertiary)]\" />\r\n {task}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n {(stakeholder.painPoints?.length ?? 0) > 0 && (\r\n <div>\r\n <p className=\"text-xs font-medium text-[var(--text-tertiary)] mb-1\">{t('stakeholder.painPoints')}</p>\r\n <ul className=\"space-y-0.5\">\r\n {stakeholder.painPoints?.map((pain) => (\r\n <li key={pain} className=\"text-sm text-red-600 dark:text-red-400 flex items-center gap-1.5\">\r\n <AlertTriangle className=\"w-3 h-3\" />\r\n {pain}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport function CadrageTab({ discovery }: CadrageTabProps): ReactElement {\r\n const { t } = useTranslation('ba');\r\n\r\n if (!discovery) {\r\n return (\r\n <div className=\"text-center py-12\">\r\n <Target className=\"w-10 h-10 text-[var(--text-tertiary)] mx-auto mb-3\" />\r\n <p className=\"text-[var(--text-secondary)]\">{t('discovery.noData')}</p>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"space-y-8\">\r\n {/* Problem + AsIs + ToBe */}\r\n {(discovery.problem || discovery.asIs || discovery.toBe) && (\r\n <div className=\"space-y-4\">\r\n {discovery.problem && (\r\n <div>\r\n <h3 className=\"text-lg font-semibold mb-2 flex items-center gap-2\">\r\n <Target className=\"w-5 h-5 text-red-500\" />\r\n {t('discovery.problem')}\r\n </h3>\r\n <p className=\"text-[var(--text-secondary)] bg-[var(--bg-secondary)] rounded-lg p-4 whitespace-pre-wrap\">\r\n {discovery.problem}\r\n </p>\r\n </div>\r\n )}\r\n\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n {discovery.asIs && (\r\n <div>\r\n <h3 className=\"text-sm font-semibold mb-2 text-orange-600 dark:text-orange-400\">\r\n {t('discovery.asIs')}\r\n </h3>\r\n <p className=\"text-sm text-[var(--text-secondary)] bg-orange-50 dark:bg-orange-950/30 rounded-lg p-4 whitespace-pre-wrap\">\r\n {discovery.asIs}\r\n </p>\r\n </div>\r\n )}\r\n {discovery.toBe && (\r\n <div>\r\n <h3 className=\"text-sm font-semibold mb-2 text-green-600 dark:text-green-400\">\r\n {t('discovery.toBe')}\r\n </h3>\r\n <p className=\"text-sm text-[var(--text-secondary)] bg-green-50 dark:bg-green-950/30 rounded-lg p-4 whitespace-pre-wrap\">\r\n {discovery.toBe}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Stakeholders */}\r\n {(discovery.stakeholders?.length ?? 0) > 0 && (\r\n <div>\r\n <h3 className=\"text-lg font-semibold mb-3 flex items-center gap-2\">\r\n <Users className=\"w-5 h-5 text-[var(--color-primary-600)]\" />\r\n {t('discovery.stakeholders')}\r\n </h3>\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n {discovery.stakeholders?.map((s) => (\r\n <StakeholderCard key={s.role} stakeholder={s} />\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* MoSCoW Scope */}\r\n {discovery.scope && (\r\n <div>\r\n <h3 className=\"text-lg font-semibold mb-3 flex items-center gap-2\">\r\n <CheckCircle className=\"w-5 h-5 text-[var(--color-primary-600)]\" />\r\n {t('discovery.scope')}\r\n </h3>\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\r\n <ScopeColumn title={t('scope.mustHave')} items={discovery.scope.mustHave} color=\"border-red-500\" />\r\n <ScopeColumn title={t('scope.shouldHave')} items={discovery.scope.shouldHave} color=\"border-yellow-500\" />\r\n <ScopeColumn title={t('scope.couldHave')} items={discovery.scope.couldHave} color=\"border-blue-500\" />\r\n <ScopeColumn title={t('scope.outOfScope')} items={discovery.scope.outOfScope} color=\"border-gray-400\" />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { useState } from 'react';\r\nimport type { ReactElement } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { FileText, ChevronDown, ChevronRight, Shield, Database, BookOpen } from 'lucide-react';\r\nimport type { Analysis, Specification, BrCategory, Priority } from '@/types/featureJson';\r\n\r\ninterface SpecificationTabProps {\r\n readonly specification?: Specification;\r\n readonly analysis?: Analysis;\r\n}\r\n\r\nconst BR_COLORS: Record<BrCategory, string> = {\r\n VAL: 'bg-indigo-100 text-indigo-700 dark:bg-indigo-900 dark:text-indigo-300',\r\n CALC: 'bg-amber-100 text-amber-700 dark:bg-amber-900 dark:text-amber-300',\r\n WF: 'bg-orange-100 text-orange-700 dark:bg-orange-900 dark:text-orange-300',\r\n SEC: 'bg-red-100 text-red-700 dark:bg-red-900 dark:text-red-300',\r\n DATA: 'bg-cyan-100 text-cyan-700 dark:bg-cyan-900 dark:text-cyan-300',\r\n};\r\n\r\nconst PRIORITY_COLORS: Record<Priority, string> = {\r\n must: 'bg-red-100 text-red-700 dark:bg-red-900 dark:text-red-300',\r\n should: 'bg-yellow-100 text-yellow-700 dark:bg-yellow-900 dark:text-yellow-300',\r\n could: 'bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300',\r\n};\r\n\r\nfunction UseCaseCard({ uc }: { uc: NonNullable<Specification['useCases']>[number] }) {\r\n const { t } = useTranslation('ba');\r\n const [expanded, setExpanded] = useState(false);\r\n\r\n return (\r\n <div className=\"card p-4\">\r\n <button\r\n onClick={() => setExpanded(!expanded)}\r\n className=\"w-full flex items-start gap-2 text-left\"\r\n >\r\n {expanded\r\n ? <ChevronDown className=\"w-4 h-4 mt-0.5 flex-shrink-0\" />\r\n : <ChevronRight className=\"w-4 h-4 mt-0.5 flex-shrink-0\" />\r\n }\r\n <div className=\"flex-1 min-w-0\">\r\n <div className=\"flex items-center gap-2 flex-wrap\">\r\n <span className=\"text-xs font-mono text-[var(--color-primary-600)]\">{uc.id}</span>\r\n <span className=\"font-medium text-[var(--text-primary)]\">{uc.name}</span>\r\n </div>\r\n {uc.description && !expanded && (\r\n <p className=\"text-sm text-[var(--text-tertiary)] truncate mt-0.5\">{uc.description}</p>\r\n )}\r\n </div>\r\n </button>\r\n\r\n {expanded && (\r\n <div className=\"mt-3 ml-6 space-y-3 text-sm\">\r\n {uc.description && (\r\n <p className=\"text-[var(--text-secondary)]\">{uc.description}</p>\r\n )}\r\n <div className=\"flex gap-4 text-xs\">\r\n <span className=\"text-[var(--text-tertiary)]\">{t('useCase.actor')}: <strong>{uc.primaryActor}</strong></span>\r\n <span className=\"text-[var(--text-tertiary)]\">{t('useCase.permission')}: <code className=\"bg-[var(--bg-tertiary)] px-1 rounded\">{uc.permission}</code></span>\r\n </div>\r\n\r\n {(uc.preconditions?.length ?? 0) > 0 && (\r\n <div>\r\n <p className=\"text-xs font-medium text-[var(--text-tertiary)] mb-1\">{t('useCase.preconditions')}</p>\r\n <ul className=\"list-disc list-inside text-[var(--text-secondary)]\">\r\n {uc.preconditions?.map((p) => <li key={p}>{p}</li>)}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n <div>\r\n <p className=\"text-xs font-medium text-[var(--text-tertiary)] mb-1\">{t('useCase.mainScenario')}</p>\r\n <ol className=\"list-decimal list-inside text-[var(--text-secondary)] space-y-0.5\">\r\n {uc.mainScenario.map((step) => <li key={step}>{step}</li>)}\r\n </ol>\r\n </div>\r\n\r\n {(uc.alternativeScenarios?.length ?? 0) > 0 && (\r\n <div>\r\n <p className=\"text-xs font-medium text-[var(--text-tertiary)] mb-1\">{t('useCase.alternatives')}</p>\r\n {uc.alternativeScenarios?.map((alt) => (\r\n <div key={alt.name} className=\"mb-2\">\r\n <p className=\"text-xs font-medium text-[var(--text-secondary)]\">{alt.name}</p>\r\n <ol className=\"list-decimal list-inside text-[var(--text-secondary)] text-xs\">\r\n {alt.steps.map((step) => <li key={step}>{step}</li>)}\r\n </ol>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {(uc.linkedRules?.length ?? 0) > 0 && (\r\n <div className=\"flex items-center gap-2 flex-wrap\">\r\n <span className=\"text-xs text-[var(--text-tertiary)]\">{t('useCase.linkedRules')}:</span>\r\n {uc.linkedRules?.map(rule => (\r\n <span key={rule} className=\"text-xs font-mono bg-[var(--bg-tertiary)] px-1.5 py-0.5 rounded\">{rule}</span>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport function SpecificationTab({ specification, analysis }: SpecificationTabProps): ReactElement {\r\n const { t } = useTranslation('ba');\r\n const [section, setSection] = useState<'uc' | 'br' | 'entities' | 'permissions'>('uc');\r\n\r\n const hasUC = specification?.useCases && specification.useCases.length > 0;\r\n const hasBR = analysis?.businessRules && analysis.businessRules.length > 0;\r\n const hasEntities = analysis?.entities && analysis.entities.length > 0;\r\n const hasPerms = specification?.permissionMatrix?.permissions && specification.permissionMatrix.permissions.length > 0;\r\n\r\n if (!hasUC && !hasBR && !hasEntities && !hasPerms) {\r\n return <div className=\"text-center py-12\">\r\n <FileText className=\"w-10 h-10 text-[var(--text-tertiary)] mx-auto mb-3\" />\r\n <p className=\"text-[var(--text-secondary)]\">{t('specification.noData')}</p>\r\n </div>;\r\n }\r\n\r\n const tabs = [\r\n { id: 'uc' as const, label: t('specification.useCases'), count: specification?.useCases?.length || 0, icon: BookOpen, show: hasUC },\r\n { id: 'br' as const, label: t('specification.businessRules'), count: analysis?.businessRules?.length || 0, icon: Shield, show: hasBR },\r\n { id: 'entities' as const, label: t('specification.entities'), count: analysis?.entities?.length || 0, icon: Database, show: hasEntities },\r\n { id: 'permissions' as const, label: t('specification.permissions'), count: specification?.permissionMatrix?.permissions?.length || 0, icon: Shield, show: hasPerms },\r\n ].filter(tab => tab.show);\r\n\r\n return (\r\n <div className=\"space-y-6\">\r\n {/* Sub-tabs */}\r\n <div className=\"flex gap-1 border-b border-[var(--border-color)]\">\r\n {tabs.map(tab => (\r\n <button\r\n key={tab.id}\r\n onClick={() => setSection(tab.id)}\r\n className={`px-4 py-2 text-sm font-medium border-b-2 transition-colors flex items-center gap-2 ${\r\n section === tab.id\r\n ? 'border-[var(--color-primary-600)] text-[var(--color-primary-600)]'\r\n : 'border-transparent text-[var(--text-tertiary)] hover:text-[var(--text-primary)]'\r\n }`}\r\n >\r\n <tab.icon className=\"w-4 h-4\" />\r\n {tab.label}\r\n <span className=\"text-xs bg-[var(--bg-tertiary)] px-1.5 py-0.5 rounded-full\">{tab.count}</span>\r\n </button>\r\n ))}\r\n </div>\r\n\r\n {/* Use Cases */}\r\n {section === 'uc' && specification?.useCases && (\r\n <div className=\"space-y-3\">\r\n {specification.useCases.map(uc => (\r\n <UseCaseCard key={uc.id} uc={uc} />\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Business Rules */}\r\n {section === 'br' && analysis?.businessRules && (\r\n <div className=\"space-y-2\">\r\n {analysis.businessRules.map(rule => (\r\n <div key={rule.id} className=\"card p-4 flex items-start gap-3\">\r\n <div className=\"flex-shrink-0 flex flex-col items-center gap-1\">\r\n <span className={`text-xs font-medium px-2 py-0.5 rounded ${BR_COLORS[rule.category]}`}>\r\n {t(`brCategory.${rule.category}`)}\r\n </span>\r\n <span className={`text-xs px-2 py-0.5 rounded ${PRIORITY_COLORS[rule.priority]}`}>\r\n {t(`priority.${rule.priority}`)}\r\n </span>\r\n </div>\r\n <div className=\"flex-1 min-w-0\">\r\n <div className=\"flex items-center gap-2 mb-1\">\r\n <span className=\"text-xs font-mono text-[var(--color-primary-600)]\">{rule.id}</span>\r\n <span className=\"font-medium text-sm text-[var(--text-primary)]\">{rule.name}</span>\r\n </div>\r\n <p className=\"text-sm text-[var(--text-secondary)]\">{rule.statement}</p>\r\n {rule.entity && (\r\n <span className=\"text-xs text-[var(--text-tertiary)] mt-1 inline-block\">\r\n {t('businessRule.entity')}: {rule.entity}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Entities */}\r\n {section === 'entities' && analysis?.entities && (\r\n <div className=\"space-y-4\">\r\n {analysis.entities.map(entity => (\r\n <div key={entity.name} className=\"card p-4\">\r\n <div className=\"flex items-center gap-2 mb-2\">\r\n <Database className=\"w-4 h-4 text-[var(--color-primary-600)]\" />\r\n <h4 className=\"font-medium text-[var(--text-primary)]\">{entity.name}</h4>\r\n {entity.type && (\r\n <span className=\"text-xs bg-[var(--bg-tertiary)] px-2 py-0.5 rounded\">{entity.type}</span>\r\n )}\r\n </div>\r\n {entity.description && (\r\n <p className=\"text-sm text-[var(--text-secondary)] mb-3\">{entity.description}</p>\r\n )}\r\n\r\n {(entity.attributes?.length ?? 0) > 0 && (\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-1 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">{t('entity.name')}</th>\r\n <th className=\"text-left py-1 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">{t('entity.type')}</th>\r\n <th className=\"text-center py-1 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">{t('entity.required')}</th>\r\n <th className=\"text-center py-1 text-xs font-medium text-[var(--text-tertiary)]\">{t('entity.unique')}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {entity.attributes?.map(attr => (\r\n <tr key={attr.name} className=\"border-b border-[var(--border-color)] last:border-0\">\r\n <td className=\"py-1.5 pr-4 font-mono text-xs\">{attr.name}</td>\r\n <td className=\"py-1.5 pr-4 text-[var(--text-secondary)]\">{attr.type}</td>\r\n <td className=\"py-1.5 pr-4 text-center\">{attr.required ? '✓' : ''}</td>\r\n <td className=\"py-1.5 text-center\">{attr.unique ? '✓' : ''}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n )}\r\n\r\n {(entity.relationships?.length ?? 0) > 0 && (\r\n <div className=\"mt-3 pt-3 border-t border-[var(--border-color)]\">\r\n <p className=\"text-xs font-medium text-[var(--text-tertiary)] mb-1\">{t('entity.relationships')}</p>\r\n <div className=\"flex flex-wrap gap-2\">\r\n {entity.relationships?.map((rel) => (\r\n <span key={`${rel.target}-${rel.type}`} className=\"text-xs bg-[var(--bg-tertiary)] px-2 py-1 rounded\">\r\n → {rel.target} <span className=\"text-[var(--text-tertiary)]\">({rel.type})</span>\r\n </span>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Permissions */}\r\n {section === 'permissions' && specification?.permissionMatrix && (\r\n <div className=\"space-y-4\">\r\n {specification.permissionMatrix.permissions && (\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 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Permission</th>\r\n <th className=\"text-left py-2 text-xs font-medium text-[var(--text-tertiary)]\">Description</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {specification.permissionMatrix.permissions.map(perm => (\r\n <tr key={perm.path} className=\"border-b border-[var(--border-color)] last:border-0\">\r\n <td className=\"py-2 pr-4 font-mono text-xs text-[var(--color-primary-600)]\">{perm.path}</td>\r\n <td className=\"py-2 text-[var(--text-secondary)]\">{perm.description}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n )}\r\n\r\n {specification.permissionMatrix.roleAssignments && specification.permissionMatrix.roleAssignments.length > 0 && (\r\n <div>\r\n <h4 className=\"text-sm font-medium mb-2\">Role Assignments</h4>\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 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Role</th>\r\n <th className=\"text-left py-2 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Level</th>\r\n <th className=\"text-left py-2 text-xs font-medium text-[var(--text-tertiary)]\">Permissions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {specification.permissionMatrix.roleAssignments.map(ra => (\r\n <tr key={ra.role} className=\"border-b border-[var(--border-color)] last:border-0\">\r\n <td className=\"py-2 pr-4 font-medium\">{ra.role}</td>\r\n <td className=\"py-2 pr-4\">\r\n <span className=\"text-xs bg-[var(--bg-tertiary)] px-2 py-0.5 rounded\">{ra.level}</span>\r\n </td>\r\n <td className=\"py-2\">\r\n <div className=\"flex flex-wrap gap-1\">\r\n {ra.permissions.map(p => (\r\n <span key={p} className=\"text-xs font-mono bg-[var(--bg-tertiary)] px-1.5 py-0.5 rounded\">{p}</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 </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import type { ReactElement } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Rocket, FolderTree, Globe, GitBranch } from 'lucide-react';\r\nimport type { Handoff, FilesToCreate } from '@/types/featureJson';\r\n\r\ninterface SyntheseTabProps {\r\n readonly handoff?: Handoff;\r\n}\r\n\r\nconst CATEGORY_ICONS: Record<string, string> = {\r\n domain: '🏗️',\r\n application: '⚙️',\r\n infrastructure: '🔧',\r\n api: '🌐',\r\n frontend: '🖥️',\r\n seedData: '🌱',\r\n tests: '🧪',\r\n};\r\n\r\nfunction FileCategory({ category, files, t }: { category: keyof FilesToCreate; files: NonNullable<FilesToCreate[keyof FilesToCreate]>; t: (key: string) => string }) {\r\n if (!files.length) return null;\r\n return (\r\n <div className=\"card p-4\">\r\n <h4 className=\"text-sm font-semibold mb-2 flex items-center gap-2\">\r\n <span>{CATEGORY_ICONS[category] || '📁'}</span>\r\n {t(`fileCategory.${category}`)}\r\n <span className=\"text-xs bg-[var(--bg-tertiary)] px-1.5 py-0.5 rounded-full\">{files.length}</span>\r\n </h4>\r\n <div className=\"space-y-1\">\r\n {files.map((file) => (\r\n <div key={file.path} className=\"flex items-start gap-2 text-sm\">\r\n <code className=\"text-xs font-mono text-[var(--color-primary-600)] bg-[var(--bg-secondary)] px-1.5 py-0.5 rounded break-all\">\r\n {file.path}\r\n </code>\r\n {file.description && (\r\n <span className=\"text-[var(--text-tertiary)] text-xs flex-shrink-0\">{file.description}</span>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function SyntheseTab({ handoff }: SyntheseTabProps): ReactElement {\r\n const { t } = useTranslation('ba');\r\n\r\n if (!handoff) {\r\n return <div className=\"text-center py-12\">\r\n <Rocket className=\"w-10 h-10 text-[var(--text-tertiary)] mx-auto mb-3\" />\r\n <p className=\"text-[var(--text-secondary)]\">{t('handoff.noData')}</p>\r\n </div>;\r\n }\r\n\r\n return (\r\n <div className=\"space-y-8\">\r\n {/* Summary cards */}\r\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\r\n {handoff.complexity && (\r\n <div className=\"card p-4 text-center\">\r\n <p className=\"text-xs text-[var(--text-tertiary)] mb-1\">{t('handoff.complexity')}</p>\r\n <p className=\"text-lg font-bold text-[var(--text-primary)]\">{handoff.complexity}</p>\r\n </div>\r\n )}\r\n {handoff.implementationStrategy && (\r\n <div className=\"card p-4 text-center\">\r\n <p className=\"text-xs text-[var(--text-tertiary)] mb-1\">{t('handoff.strategy')}</p>\r\n <p className=\"text-lg font-bold text-[var(--text-primary)]\">{handoff.implementationStrategy}</p>\r\n </div>\r\n )}\r\n {handoff.totalFiles != null && (\r\n <div className=\"card p-4 text-center\">\r\n <p className=\"text-xs text-[var(--text-tertiary)] mb-1\">{t('handoff.totalFiles')}</p>\r\n <p className=\"text-lg font-bold text-[var(--color-primary-600)]\">{handoff.totalFiles}</p>\r\n </div>\r\n )}\r\n {handoff.totalTasks != null && (\r\n <div className=\"card p-4 text-center\">\r\n <p className=\"text-xs text-[var(--text-tertiary)] mb-1\">{t('handoff.totalTasks')}</p>\r\n <p className=\"text-lg font-bold text-[var(--color-primary-600)]\">{handoff.totalTasks}</p>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Files to create */}\r\n {handoff.filesToCreate && (\r\n <div>\r\n <h3 className=\"text-lg font-semibold mb-3 flex items-center gap-2\">\r\n <FolderTree className=\"w-5 h-5 text-[var(--color-primary-600)]\" />\r\n {t('handoff.filesToCreate')}\r\n </h3>\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n {(Object.entries(handoff.filesToCreate) as [keyof FilesToCreate, FilesToCreate[keyof FilesToCreate]][]).map(\r\n ([category, files]) => (files?.length ?? 0) > 0 && (\r\n <FileCategory key={category} category={category} files={files ?? []} t={t} />\r\n )\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* API Endpoints */}\r\n {(handoff.apiEndpointSummary?.length ?? 0) > 0 && (\r\n <div>\r\n <h3 className=\"text-lg font-semibold mb-3 flex items-center gap-2\">\r\n <Globe className=\"w-5 h-5 text-[var(--color-primary-600)]\" />\r\n {t('handoff.apiEndpoints')}\r\n </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 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Method</th>\r\n <th className=\"text-left py-2 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Route</th>\r\n <th className=\"text-left py-2 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Operation</th>\r\n <th className=\"text-left py-2 text-xs font-medium text-[var(--text-tertiary)]\">Permission</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {handoff.apiEndpointSummary?.map((ep) => {\r\n const methodColors: Record<string, string> = {\r\n GET: 'text-green-600',\r\n POST: 'text-blue-600',\r\n PUT: 'text-orange-600',\r\n PATCH: 'text-yellow-600',\r\n DELETE: 'text-red-600',\r\n };\r\n return (\r\n <tr key={`${ep.method}-${ep.route}`} className=\"border-b border-[var(--border-color)] last:border-0\">\r\n <td className={`py-2 pr-4 font-mono text-xs font-bold ${methodColors[ep.method] || ''}`}>{ep.method}</td>\r\n <td className=\"py-2 pr-4 font-mono text-xs\">{ep.route}</td>\r\n <td className=\"py-2 pr-4 text-[var(--text-secondary)]\">{ep.operation}</td>\r\n <td className=\"py-2 font-mono text-xs text-[var(--text-tertiary)]\">{ep.permission}</td>\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* BR to Code mapping */}\r\n {(handoff.brToCodeMapping?.length ?? 0) > 0 && (\r\n <div>\r\n <h3 className=\"text-lg font-semibold mb-3 flex items-center gap-2\">\r\n <GitBranch className=\"w-5 h-5 text-[var(--color-primary-600)]\" />\r\n {t('handoff.brMapping')}\r\n </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 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Rule</th>\r\n <th className=\"text-left py-2 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">File</th>\r\n <th className=\"text-left py-2 text-xs font-medium text-[var(--text-tertiary)]\">Method</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {handoff.brToCodeMapping?.map((mapping) => (\r\n <tr key={`${mapping.ruleId}-${mapping.targetFile}`} className=\"border-b border-[var(--border-color)] last:border-0\">\r\n <td className=\"py-2 pr-4\">\r\n <span className=\"font-mono text-xs text-[var(--color-primary-600)]\">{mapping.ruleId}</span>\r\n {mapping.ruleName && <span className=\"text-xs text-[var(--text-tertiary)] ml-2\">{mapping.ruleName}</span>}\r\n </td>\r\n <td className=\"py-2 pr-4 font-mono text-xs break-all\">{mapping.targetFile}</td>\r\n <td className=\"py-2 font-mono text-xs text-[var(--text-secondary)]\">{mapping.targetMethod}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { useState, useEffect } from 'react';\r\nimport type { ReactElement } from 'react';\r\nimport { useParams, Link } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { ArrowLeft, Target, FileText, Rocket, Loader2 } from 'lucide-react';\r\nimport { businessAnalysisApi } from '@/services/api/businessAnalysisApi';\r\nimport type { ModuleFeatureJson } from '@/types/featureJson';\r\nimport { CadrageTab } from './components/CadrageTab';\r\nimport { SpecificationTab } from './components/SpecificationTab';\r\nimport { SyntheseTab } from './components/SyntheseTab';\r\n\r\ntype TabId = 'cadrage' | 'specification' | 'synthese';\r\n\r\nconst TABS: { id: TabId; icon: typeof Target; labelKey: string }[] = [\r\n { id: 'cadrage', icon: Target, labelKey: 'tabs.cadrage' },\r\n { id: 'specification', icon: FileText, labelKey: 'tabs.specification' },\r\n { id: 'synthese', icon: Rocket, labelKey: 'tabs.synthese' },\r\n];\r\n\r\nconst STATUS_COLORS: Record<string, string> = {\r\n 'draft': 'bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-300',\r\n 'analysed': 'bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300',\r\n 'specified': 'bg-indigo-100 text-indigo-700 dark:bg-indigo-900 dark:text-indigo-300',\r\n 'consolidated': 'bg-purple-100 text-purple-700 dark:bg-purple-900 dark:text-purple-300',\r\n 'handed-off': 'bg-green-100 text-green-700 dark:bg-green-900 dark:text-green-300',\r\n};\r\n\r\nexport function BaViewerPage(): ReactElement {\r\n const { appCode, moduleCode } = useParams<{ appCode: string; moduleCode?: string }>();\r\n const { t } = useTranslation('ba');\r\n const [feature, setFeature] = useState<ModuleFeatureJson | null>(null);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState<string | null>(null);\r\n const [activeTab, setActiveTab] = useState<TabId>('cadrage');\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n setError(null);\r\n\r\n businessAnalysisApi.getManifest()\r\n .then(m => {\r\n // Find path from manifest\r\n const entry = m.analyses.find(\r\n e => e.appCode === appCode && (moduleCode ? e.moduleCode === moduleCode : !e.moduleCode)\r\n );\r\n if (entry) {\r\n return businessAnalysisApi.getFeature(entry.path);\r\n }\r\n throw new Error('Entry not found in manifest');\r\n })\r\n .then(setFeature)\r\n .catch(err => setError(err.message))\r\n .finally(() => setLoading(false))\r\n .catch(() => {});\r\n }, [appCode, moduleCode]);\r\n\r\n if (loading) {\r\n return (\r\n <div className=\"flex items-center justify-center py-20\">\r\n <Loader2 className=\"w-8 h-8 animate-spin text-[var(--color-primary-600)]\" />\r\n </div>\r\n );\r\n }\r\n\r\n if (error || !feature) {\r\n return (\r\n <div className=\"space-y-4\">\r\n <Link to=\"/system/docs/ba\" className=\"text-sm text-[var(--color-primary-600)] hover:underline flex items-center gap-1\">\r\n <ArrowLeft className=\"w-4 h-4\" />\r\n {t('viewer.backToList')}\r\n </Link>\r\n <div className=\"text-center py-12\">\r\n <p className=\"text-[var(--text-secondary)]\">Feature not found: {appCode}{moduleCode ? `/${moduleCode}` : ''}</p>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"space-y-6\">\r\n {/* Back link */}\r\n <Link to=\"/system/docs/ba\" className=\"text-sm text-[var(--color-primary-600)] hover:underline flex items-center gap-1\">\r\n <ArrowLeft className=\"w-4 h-4\" />\r\n {t('viewer.backToList')}\r\n </Link>\r\n\r\n {/* Header */}\r\n <div className=\"flex items-start justify-between\">\r\n <div>\r\n <h1 className=\"text-2xl font-bold text-[var(--text-primary)]\">\r\n {feature.metadata.application}\r\n {feature.metadata.module && feature.metadata.module !== feature.metadata.application && (\r\n <span className=\"text-[var(--text-tertiary)]\"> / {feature.metadata.module}</span>\r\n )}\r\n </h1>\r\n <p className=\"text-[var(--text-secondary)] mt-1\">{feature.metadata.featureDescription}</p>\r\n </div>\r\n <div className=\"flex items-center gap-3 flex-shrink-0\">\r\n <span className=\"text-sm text-[var(--text-tertiary)]\">v{feature.version}</span>\r\n <span className={`px-2.5 py-1 rounded-full text-xs font-medium ${STATUS_COLORS[feature.status] || STATUS_COLORS.draft}`}>\r\n {t(`status.${feature.status}`, feature.status)}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n {/* Tab bar */}\r\n <div className=\"flex gap-1 border-b border-[var(--border-color)]\">\r\n {TABS.map(tab => (\r\n <button\r\n key={tab.id}\r\n onClick={() => setActiveTab(tab.id)}\r\n className={`px-5 py-3 text-sm font-medium border-b-2 transition-colors flex items-center gap-2 ${\r\n activeTab === tab.id\r\n ? 'border-[var(--color-primary-600)] text-[var(--color-primary-600)]'\r\n : 'border-transparent text-[var(--text-tertiary)] hover:text-[var(--text-primary)]'\r\n }`}\r\n >\r\n <tab.icon className=\"w-4 h-4\" />\r\n {t(tab.labelKey)}\r\n </button>\r\n ))}\r\n </div>\r\n\r\n {/* Tab content */}\r\n <div>\r\n {activeTab === 'cadrage' && <CadrageTab discovery={feature.discovery} />}\r\n {activeTab === 'specification' && <SpecificationTab specification={feature.specification} analysis={feature.analysis} />}\r\n {activeTab === 'synthese' && <SyntheseTab handoff={feature.handoff} />}\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["ScopeColumn","title","items","color","jsxs","jsx","item","StakeholderCard","stakeholder","t","useTranslation","Users","task","ArrowRight","pain","AlertTriangle","CadrageTab","discovery","Target","CheckCircle","BR_COLORS","PRIORITY_COLORS","UseCaseCard","uc","expanded","setExpanded","useState","ChevronDown","ChevronRight","p","step","alt","rule","SpecificationTab","specification","analysis","section","setSection","hasUC","hasBR","hasEntities","hasPerms","FileText","tabs","BookOpen","Shield","Database","tab","entity","attr","rel","perm","ra","CATEGORY_ICONS","FileCategory","category","files","file","SyntheseTab","handoff","FolderTree","Globe","ep","methodColors","GitBranch","mapping","Rocket","TABS","STATUS_COLORS","BaViewerPage","appCode","moduleCode","useParams","feature","setFeature","loading","setLoading","error","setError","activeTab","setActiveTab","useEffect","businessAnalysisApi","m","entry","e","err","Loader2","Link","ArrowLeft"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
2
  import { useState as m, useEffect as $ } from "react";
3
3
  import { useParams as M, Link as u } from "react-router-dom";
4
4
  import { useTranslation as x } from "react-i18next";
5
- import { Target as N, Users as S, CheckCircle as E, ArrowRight as O, AlertTriangle as P, FileText as R, BookOpen as F, Shield as f, Database as w, ChevronDown as L, ChevronRight as B, Rocket as A, FolderTree as D, Globe as I, GitBranch as H, Loader2 as j, ArrowLeft as k } from "lucide-react";
5
+ import { Target as N, Users as S, CheckCircle as E, ArrowRight as O, AlertTriangle as F, FileText as R, BookOpen as L, Shield as f, Database as w, ChevronDown as P, ChevronRight as B, Rocket as A, FolderTree as D, Globe as I, GitBranch as H, Loader2 as j, ArrowLeft as k } from "lucide-react";
6
6
  import { b as C } from "./businessAnalysisApi-hLIodI9W.js";
7
7
  function y({ title: r, items: s, color: a }) {
8
8
  return s?.length ? /* @__PURE__ */ t("div", { className: `rounded-lg border-l-4 ${a} p-4 bg-[var(--bg-secondary)]`, children: [
@@ -21,17 +21,17 @@ function U({ stakeholder: r }) {
21
21
  /* @__PURE__ */ e("h4", { className: "font-medium text-[var(--text-primary)]", children: r.role })
22
22
  ] }),
23
23
  r.function && /* @__PURE__ */ e("p", { className: "text-sm text-[var(--text-secondary)] mb-2", children: r.function }),
24
- r.tasks && r.tasks.length > 0 && /* @__PURE__ */ t("div", { className: "mb-2", children: [
24
+ (r.tasks?.length ?? 0) > 0 && /* @__PURE__ */ t("div", { className: "mb-2", children: [
25
25
  /* @__PURE__ */ e("p", { className: "text-xs font-medium text-[var(--text-tertiary)] mb-1", children: s("stakeholder.tasks") }),
26
- /* @__PURE__ */ e("ul", { className: "space-y-0.5", children: r.tasks.map((a) => /* @__PURE__ */ t("li", { className: "text-sm text-[var(--text-secondary)] flex items-center gap-1.5", children: [
26
+ /* @__PURE__ */ e("ul", { className: "space-y-0.5", children: r.tasks?.map((a) => /* @__PURE__ */ t("li", { className: "text-sm text-[var(--text-secondary)] flex items-center gap-1.5", children: [
27
27
  /* @__PURE__ */ e(O, { className: "w-3 h-3 text-[var(--text-tertiary)]" }),
28
28
  a
29
29
  ] }, a)) })
30
30
  ] }),
31
- r.painPoints && r.painPoints.length > 0 && /* @__PURE__ */ t("div", { children: [
31
+ (r.painPoints?.length ?? 0) > 0 && /* @__PURE__ */ t("div", { children: [
32
32
  /* @__PURE__ */ e("p", { className: "text-xs font-medium text-[var(--text-tertiary)] mb-1", children: s("stakeholder.painPoints") }),
33
- /* @__PURE__ */ e("ul", { className: "space-y-0.5", children: r.painPoints.map((a) => /* @__PURE__ */ t("li", { className: "text-sm text-red-600 dark:text-red-400 flex items-center gap-1.5", children: [
34
- /* @__PURE__ */ e(P, { className: "w-3 h-3" }),
33
+ /* @__PURE__ */ e("ul", { className: "space-y-0.5", children: r.painPoints?.map((a) => /* @__PURE__ */ t("li", { className: "text-sm text-red-600 dark:text-red-400 flex items-center gap-1.5", children: [
34
+ /* @__PURE__ */ e(F, { className: "w-3 h-3" }),
35
35
  a
36
36
  ] }, a)) })
37
37
  ] })
@@ -59,12 +59,12 @@ function q({ discovery: r }) {
59
59
  ] })
60
60
  ] })
61
61
  ] }),
62
- r.stakeholders && r.stakeholders.length > 0 && /* @__PURE__ */ t("div", { children: [
62
+ (r.stakeholders?.length ?? 0) > 0 && /* @__PURE__ */ t("div", { children: [
63
63
  /* @__PURE__ */ t("h3", { className: "text-lg font-semibold mb-3 flex items-center gap-2", children: [
64
64
  /* @__PURE__ */ e(S, { className: "w-5 h-5 text-[var(--color-primary-600)]" }),
65
65
  s("discovery.stakeholders")
66
66
  ] }),
67
- /* @__PURE__ */ e("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: r.stakeholders.map((a) => /* @__PURE__ */ e(U, { stakeholder: a }, a.role)) })
67
+ /* @__PURE__ */ e("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: r.stakeholders?.map((a) => /* @__PURE__ */ e(U, { stakeholder: a }, a.role)) })
68
68
  ] }),
69
69
  r.scope && /* @__PURE__ */ t("div", { children: [
70
70
  /* @__PURE__ */ t("h3", { className: "text-lg font-semibold mb-3 flex items-center gap-2", children: [
@@ -103,7 +103,7 @@ function _({ uc: r }) {
103
103
  onClick: () => i(!a),
104
104
  className: "w-full flex items-start gap-2 text-left",
105
105
  children: [
106
- a ? /* @__PURE__ */ e(L, { className: "w-4 h-4 mt-0.5 flex-shrink-0" }) : /* @__PURE__ */ e(B, { className: "w-4 h-4 mt-0.5 flex-shrink-0" }),
106
+ a ? /* @__PURE__ */ e(P, { className: "w-4 h-4 mt-0.5 flex-shrink-0" }) : /* @__PURE__ */ e(B, { className: "w-4 h-4 mt-0.5 flex-shrink-0" }),
107
107
  /* @__PURE__ */ t("div", { className: "flex-1 min-w-0", children: [
108
108
  /* @__PURE__ */ t("div", { className: "flex items-center gap-2 flex-wrap", children: [
109
109
  /* @__PURE__ */ e("span", { className: "text-xs font-mono text-[var(--color-primary-600)]", children: r.id }),
@@ -128,27 +128,27 @@ function _({ uc: r }) {
128
128
  /* @__PURE__ */ e("code", { className: "bg-[var(--bg-tertiary)] px-1 rounded", children: r.permission })
129
129
  ] })
130
130
  ] }),
131
- r.preconditions && r.preconditions.length > 0 && /* @__PURE__ */ t("div", { children: [
131
+ (r.preconditions?.length ?? 0) > 0 && /* @__PURE__ */ t("div", { children: [
132
132
  /* @__PURE__ */ e("p", { className: "text-xs font-medium text-[var(--text-tertiary)] mb-1", children: s("useCase.preconditions") }),
133
- /* @__PURE__ */ e("ul", { className: "list-disc list-inside text-[var(--text-secondary)]", children: r.preconditions.map((c) => /* @__PURE__ */ e("li", { children: c }, c)) })
133
+ /* @__PURE__ */ e("ul", { className: "list-disc list-inside text-[var(--text-secondary)]", children: r.preconditions?.map((c) => /* @__PURE__ */ e("li", { children: c }, c)) })
134
134
  ] }),
135
135
  /* @__PURE__ */ t("div", { children: [
136
136
  /* @__PURE__ */ e("p", { className: "text-xs font-medium text-[var(--text-tertiary)] mb-1", children: s("useCase.mainScenario") }),
137
137
  /* @__PURE__ */ e("ol", { className: "list-decimal list-inside text-[var(--text-secondary)] space-y-0.5", children: r.mainScenario.map((c) => /* @__PURE__ */ e("li", { children: c }, c)) })
138
138
  ] }),
139
- r.alternativeScenarios && r.alternativeScenarios.length > 0 && /* @__PURE__ */ t("div", { children: [
139
+ (r.alternativeScenarios?.length ?? 0) > 0 && /* @__PURE__ */ t("div", { children: [
140
140
  /* @__PURE__ */ e("p", { className: "text-xs font-medium text-[var(--text-tertiary)] mb-1", children: s("useCase.alternatives") }),
141
- r.alternativeScenarios.map((c) => /* @__PURE__ */ t("div", { className: "mb-2", children: [
141
+ r.alternativeScenarios?.map((c) => /* @__PURE__ */ t("div", { className: "mb-2", children: [
142
142
  /* @__PURE__ */ e("p", { className: "text-xs font-medium text-[var(--text-secondary)]", children: c.name }),
143
143
  /* @__PURE__ */ e("ol", { className: "list-decimal list-inside text-[var(--text-secondary)] text-xs", children: c.steps.map((d) => /* @__PURE__ */ e("li", { children: d }, d)) })
144
144
  ] }, c.name))
145
145
  ] }),
146
- r.linkedRules && r.linkedRules.length > 0 && /* @__PURE__ */ t("div", { className: "flex items-center gap-2 flex-wrap", children: [
146
+ (r.linkedRules?.length ?? 0) > 0 && /* @__PURE__ */ t("div", { className: "flex items-center gap-2 flex-wrap", children: [
147
147
  /* @__PURE__ */ t("span", { className: "text-xs text-[var(--text-tertiary)]", children: [
148
148
  s("useCase.linkedRules"),
149
149
  ":"
150
150
  ] }),
151
- r.linkedRules.map((c) => /* @__PURE__ */ e("span", { className: "text-xs font-mono bg-[var(--bg-tertiary)] px-1.5 py-0.5 rounded", children: c }, c))
151
+ r.linkedRules?.map((c) => /* @__PURE__ */ e("span", { className: "text-xs font-mono bg-[var(--bg-tertiary)] px-1.5 py-0.5 rounded", children: c }, c))
152
152
  ] })
153
153
  ] })
154
154
  ] });
@@ -161,7 +161,7 @@ function V({ specification: r, analysis: s }) {
161
161
  /* @__PURE__ */ e("p", { className: "text-[var(--text-secondary)]", children: a("specification.noData") })
162
162
  ] });
163
163
  const o = [
164
- { id: "uc", label: a("specification.useCases"), count: r?.useCases?.length || 0, icon: F, show: d },
164
+ { id: "uc", label: a("specification.useCases"), count: r?.useCases?.length || 0, icon: L, show: d },
165
165
  { id: "br", label: a("specification.businessRules"), count: s?.businessRules?.length || 0, icon: f, show: p },
166
166
  { id: "entities", label: a("specification.entities"), count: s?.entities?.length || 0, icon: w, show: b },
167
167
  { id: "permissions", label: a("specification.permissions"), count: r?.permissionMatrix?.permissions?.length || 0, icon: f, show: h }
@@ -206,23 +206,23 @@ function V({ specification: r, analysis: s }) {
206
206
  l.type && /* @__PURE__ */ e("span", { className: "text-xs bg-[var(--bg-tertiary)] px-2 py-0.5 rounded", children: l.type })
207
207
  ] }),
208
208
  l.description && /* @__PURE__ */ e("p", { className: "text-sm text-[var(--text-secondary)] mb-3", children: l.description }),
209
- l.attributes && l.attributes.length > 0 && /* @__PURE__ */ e("div", { className: "overflow-x-auto", children: /* @__PURE__ */ t("table", { className: "w-full text-sm", children: [
209
+ (l.attributes?.length ?? 0) > 0 && /* @__PURE__ */ e("div", { className: "overflow-x-auto", children: /* @__PURE__ */ t("table", { className: "w-full text-sm", children: [
210
210
  /* @__PURE__ */ e("thead", { children: /* @__PURE__ */ t("tr", { className: "border-b border-[var(--border-color)]", children: [
211
211
  /* @__PURE__ */ e("th", { className: "text-left py-1 pr-4 text-xs font-medium text-[var(--text-tertiary)]", children: a("entity.name") }),
212
212
  /* @__PURE__ */ e("th", { className: "text-left py-1 pr-4 text-xs font-medium text-[var(--text-tertiary)]", children: a("entity.type") }),
213
213
  /* @__PURE__ */ e("th", { className: "text-center py-1 pr-4 text-xs font-medium text-[var(--text-tertiary)]", children: a("entity.required") }),
214
214
  /* @__PURE__ */ e("th", { className: "text-center py-1 text-xs font-medium text-[var(--text-tertiary)]", children: a("entity.unique") })
215
215
  ] }) }),
216
- /* @__PURE__ */ e("tbody", { children: l.attributes.map((n) => /* @__PURE__ */ t("tr", { className: "border-b border-[var(--border-color)] last:border-0", children: [
216
+ /* @__PURE__ */ e("tbody", { children: l.attributes?.map((n) => /* @__PURE__ */ t("tr", { className: "border-b border-[var(--border-color)] last:border-0", children: [
217
217
  /* @__PURE__ */ e("td", { className: "py-1.5 pr-4 font-mono text-xs", children: n.name }),
218
218
  /* @__PURE__ */ e("td", { className: "py-1.5 pr-4 text-[var(--text-secondary)]", children: n.type }),
219
219
  /* @__PURE__ */ e("td", { className: "py-1.5 pr-4 text-center", children: n.required ? "✓" : "" }),
220
220
  /* @__PURE__ */ e("td", { className: "py-1.5 text-center", children: n.unique ? "✓" : "" })
221
221
  ] }, n.name)) })
222
222
  ] }) }),
223
- l.relationships && l.relationships.length > 0 && /* @__PURE__ */ t("div", { className: "mt-3 pt-3 border-t border-[var(--border-color)]", children: [
223
+ (l.relationships?.length ?? 0) > 0 && /* @__PURE__ */ t("div", { className: "mt-3 pt-3 border-t border-[var(--border-color)]", children: [
224
224
  /* @__PURE__ */ e("p", { className: "text-xs font-medium text-[var(--text-tertiary)] mb-1", children: a("entity.relationships") }),
225
- /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-2", children: l.relationships.map((n) => /* @__PURE__ */ t("span", { className: "text-xs bg-[var(--bg-tertiary)] px-2 py-1 rounded", children: [
225
+ /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-2", children: l.relationships?.map((n) => /* @__PURE__ */ t("span", { className: "text-xs bg-[var(--bg-tertiary)] px-2 py-1 rounded", children: [
226
226
  "→ ",
227
227
  n.target,
228
228
  " ",
@@ -312,10 +312,10 @@ function z({ handoff: r }) {
312
312
  s("handoff.filesToCreate")
313
313
  ] }),
314
314
  /* @__PURE__ */ e("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: Object.entries(r.filesToCreate).map(
315
- ([a, i]) => i && i.length > 0 && /* @__PURE__ */ e(W, { category: a, files: i, t: s }, a)
315
+ ([a, i]) => (i?.length ?? 0) > 0 && /* @__PURE__ */ e(W, { category: a, files: i ?? [], t: s }, a)
316
316
  ) })
317
317
  ] }),
318
- r.apiEndpointSummary && r.apiEndpointSummary.length > 0 && /* @__PURE__ */ t("div", { children: [
318
+ (r.apiEndpointSummary?.length ?? 0) > 0 && /* @__PURE__ */ t("div", { children: [
319
319
  /* @__PURE__ */ t("h3", { className: "text-lg font-semibold mb-3 flex items-center gap-2", children: [
320
320
  /* @__PURE__ */ e(I, { className: "w-5 h-5 text-[var(--color-primary-600)]" }),
321
321
  s("handoff.apiEndpoints")
@@ -327,7 +327,7 @@ function z({ handoff: r }) {
327
327
  /* @__PURE__ */ e("th", { className: "text-left py-2 pr-4 text-xs font-medium text-[var(--text-tertiary)]", children: "Operation" }),
328
328
  /* @__PURE__ */ e("th", { className: "text-left py-2 text-xs font-medium text-[var(--text-tertiary)]", children: "Permission" })
329
329
  ] }) }),
330
- /* @__PURE__ */ e("tbody", { children: r.apiEndpointSummary.map((a) => /* @__PURE__ */ t("tr", { className: "border-b border-[var(--border-color)] last:border-0", children: [
330
+ /* @__PURE__ */ e("tbody", { children: r.apiEndpointSummary?.map((a) => /* @__PURE__ */ t("tr", { className: "border-b border-[var(--border-color)] last:border-0", children: [
331
331
  /* @__PURE__ */ e("td", { className: `py-2 pr-4 font-mono text-xs font-bold ${{
332
332
  GET: "text-green-600",
333
333
  POST: "text-blue-600",
@@ -341,7 +341,7 @@ function z({ handoff: r }) {
341
341
  ] }, `${a.method}-${a.route}`)) })
342
342
  ] }) })
343
343
  ] }),
344
- r.brToCodeMapping && r.brToCodeMapping.length > 0 && /* @__PURE__ */ t("div", { children: [
344
+ (r.brToCodeMapping?.length ?? 0) > 0 && /* @__PURE__ */ t("div", { children: [
345
345
  /* @__PURE__ */ t("h3", { className: "text-lg font-semibold mb-3 flex items-center gap-2", children: [
346
346
  /* @__PURE__ */ e(H, { className: "w-5 h-5 text-[var(--color-primary-600)]" }),
347
347
  s("handoff.brMapping")
@@ -352,7 +352,7 @@ function z({ handoff: r }) {
352
352
  /* @__PURE__ */ e("th", { className: "text-left py-2 pr-4 text-xs font-medium text-[var(--text-tertiary)]", children: "File" }),
353
353
  /* @__PURE__ */ e("th", { className: "text-left py-2 text-xs font-medium text-[var(--text-tertiary)]", children: "Method" })
354
354
  ] }) }),
355
- /* @__PURE__ */ e("tbody", { children: r.brToCodeMapping.map((a) => /* @__PURE__ */ t("tr", { className: "border-b border-[var(--border-color)] last:border-0", children: [
355
+ /* @__PURE__ */ e("tbody", { children: r.brToCodeMapping?.map((a) => /* @__PURE__ */ t("tr", { className: "border-b border-[var(--border-color)] last:border-0", children: [
356
356
  /* @__PURE__ */ t("td", { className: "py-2 pr-4", children: [
357
357
  /* @__PURE__ */ e("span", { className: "font-mono text-xs text-[var(--color-primary-600)]", children: a.ruleId }),
358
358
  a.ruleName && /* @__PURE__ */ e("span", { className: "text-xs text-[var(--text-tertiary)] ml-2", children: a.ruleName })
@@ -446,4 +446,4 @@ function ae() {
446
446
  export {
447
447
  ae as BaViewerPage
448
448
  };
449
- //# sourceMappingURL=BaViewerPage-DxD0eZm-.js.map
449
+ //# sourceMappingURL=BaViewerPage-TL6IHeQx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaViewerPage-TL6IHeQx.js","sources":["../src/pages/system/docs/ba/components/CadrageTab.tsx","../src/pages/system/docs/ba/components/SpecificationTab.tsx","../src/pages/system/docs/ba/components/SyntheseTab.tsx","../src/pages/system/docs/ba/BaViewerPage.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { AlertTriangle, Users, Target, ArrowRight, CheckCircle } from 'lucide-react';\r\nimport type { Discovery, Stakeholder } from '@/types/featureJson';\r\n\r\ninterface CadrageTabProps {\r\n readonly discovery?: Discovery;\r\n}\r\n\r\nfunction ScopeColumn({ title, items, color }: { title: string; items?: string[]; color: string }) {\r\n if (!items?.length) return null;\r\n return (\r\n <div className={`rounded-lg border-l-4 ${color} p-4 bg-[var(--bg-secondary)]`}>\r\n <h4 className=\"text-sm font-semibold mb-2\">{title}</h4>\r\n <ul className=\"space-y-1\">\r\n {items.map((item) => (\r\n <li key={item} className=\"text-sm text-[var(--text-secondary)] flex items-start gap-2\">\r\n <span className=\"mt-1.5 w-1.5 h-1.5 rounded-full bg-current flex-shrink-0\" />\r\n {item}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n );\r\n}\r\n\r\nfunction StakeholderCard({ stakeholder }: { stakeholder: Stakeholder }) {\r\n const { t } = useTranslation('ba');\r\n return (\r\n <div className=\"card p-4\">\r\n <div className=\"flex items-center gap-2 mb-2\">\r\n <Users className=\"w-4 h-4 text-[var(--color-primary-600)]\" />\r\n <h4 className=\"font-medium text-[var(--text-primary)]\">{stakeholder.role}</h4>\r\n </div>\r\n {stakeholder.function && (\r\n <p className=\"text-sm text-[var(--text-secondary)] mb-2\">{stakeholder.function}</p>\r\n )}\r\n {(stakeholder.tasks?.length ?? 0) > 0 && (\r\n <div className=\"mb-2\">\r\n <p className=\"text-xs font-medium text-[var(--text-tertiary)] mb-1\">{t('stakeholder.tasks')}</p>\r\n <ul className=\"space-y-0.5\">\r\n {stakeholder.tasks?.map((task) => (\r\n <li key={task} className=\"text-sm text-[var(--text-secondary)] flex items-center gap-1.5\">\r\n <ArrowRight className=\"w-3 h-3 text-[var(--text-tertiary)]\" />\r\n {task}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n {(stakeholder.painPoints?.length ?? 0) > 0 && (\r\n <div>\r\n <p className=\"text-xs font-medium text-[var(--text-tertiary)] mb-1\">{t('stakeholder.painPoints')}</p>\r\n <ul className=\"space-y-0.5\">\r\n {stakeholder.painPoints?.map((pain) => (\r\n <li key={pain} className=\"text-sm text-red-600 dark:text-red-400 flex items-center gap-1.5\">\r\n <AlertTriangle className=\"w-3 h-3\" />\r\n {pain}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport function CadrageTab({ discovery }: CadrageTabProps): ReactElement {\r\n const { t } = useTranslation('ba');\r\n\r\n if (!discovery) {\r\n return (\r\n <div className=\"text-center py-12\">\r\n <Target className=\"w-10 h-10 text-[var(--text-tertiary)] mx-auto mb-3\" />\r\n <p className=\"text-[var(--text-secondary)]\">{t('discovery.noData')}</p>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"space-y-8\">\r\n {/* Problem + AsIs + ToBe */}\r\n {(discovery.problem || discovery.asIs || discovery.toBe) && (\r\n <div className=\"space-y-4\">\r\n {discovery.problem && (\r\n <div>\r\n <h3 className=\"text-lg font-semibold mb-2 flex items-center gap-2\">\r\n <Target className=\"w-5 h-5 text-red-500\" />\r\n {t('discovery.problem')}\r\n </h3>\r\n <p className=\"text-[var(--text-secondary)] bg-[var(--bg-secondary)] rounded-lg p-4 whitespace-pre-wrap\">\r\n {discovery.problem}\r\n </p>\r\n </div>\r\n )}\r\n\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n {discovery.asIs && (\r\n <div>\r\n <h3 className=\"text-sm font-semibold mb-2 text-orange-600 dark:text-orange-400\">\r\n {t('discovery.asIs')}\r\n </h3>\r\n <p className=\"text-sm text-[var(--text-secondary)] bg-orange-50 dark:bg-orange-950/30 rounded-lg p-4 whitespace-pre-wrap\">\r\n {discovery.asIs}\r\n </p>\r\n </div>\r\n )}\r\n {discovery.toBe && (\r\n <div>\r\n <h3 className=\"text-sm font-semibold mb-2 text-green-600 dark:text-green-400\">\r\n {t('discovery.toBe')}\r\n </h3>\r\n <p className=\"text-sm text-[var(--text-secondary)] bg-green-50 dark:bg-green-950/30 rounded-lg p-4 whitespace-pre-wrap\">\r\n {discovery.toBe}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Stakeholders */}\r\n {(discovery.stakeholders?.length ?? 0) > 0 && (\r\n <div>\r\n <h3 className=\"text-lg font-semibold mb-3 flex items-center gap-2\">\r\n <Users className=\"w-5 h-5 text-[var(--color-primary-600)]\" />\r\n {t('discovery.stakeholders')}\r\n </h3>\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n {discovery.stakeholders?.map((s) => (\r\n <StakeholderCard key={s.role} stakeholder={s} />\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* MoSCoW Scope */}\r\n {discovery.scope && (\r\n <div>\r\n <h3 className=\"text-lg font-semibold mb-3 flex items-center gap-2\">\r\n <CheckCircle className=\"w-5 h-5 text-[var(--color-primary-600)]\" />\r\n {t('discovery.scope')}\r\n </h3>\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\r\n <ScopeColumn title={t('scope.mustHave')} items={discovery.scope.mustHave} color=\"border-red-500\" />\r\n <ScopeColumn title={t('scope.shouldHave')} items={discovery.scope.shouldHave} color=\"border-yellow-500\" />\r\n <ScopeColumn title={t('scope.couldHave')} items={discovery.scope.couldHave} color=\"border-blue-500\" />\r\n <ScopeColumn title={t('scope.outOfScope')} items={discovery.scope.outOfScope} color=\"border-gray-400\" />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { useState } from 'react';\r\nimport type { ReactElement } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { FileText, ChevronDown, ChevronRight, Shield, Database, BookOpen } from 'lucide-react';\r\nimport type { Analysis, Specification, BrCategory, Priority } from '@/types/featureJson';\r\n\r\ninterface SpecificationTabProps {\r\n readonly specification?: Specification;\r\n readonly analysis?: Analysis;\r\n}\r\n\r\nconst BR_COLORS: Record<BrCategory, string> = {\r\n VAL: 'bg-indigo-100 text-indigo-700 dark:bg-indigo-900 dark:text-indigo-300',\r\n CALC: 'bg-amber-100 text-amber-700 dark:bg-amber-900 dark:text-amber-300',\r\n WF: 'bg-orange-100 text-orange-700 dark:bg-orange-900 dark:text-orange-300',\r\n SEC: 'bg-red-100 text-red-700 dark:bg-red-900 dark:text-red-300',\r\n DATA: 'bg-cyan-100 text-cyan-700 dark:bg-cyan-900 dark:text-cyan-300',\r\n};\r\n\r\nconst PRIORITY_COLORS: Record<Priority, string> = {\r\n must: 'bg-red-100 text-red-700 dark:bg-red-900 dark:text-red-300',\r\n should: 'bg-yellow-100 text-yellow-700 dark:bg-yellow-900 dark:text-yellow-300',\r\n could: 'bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300',\r\n};\r\n\r\nfunction UseCaseCard({ uc }: { uc: NonNullable<Specification['useCases']>[number] }) {\r\n const { t } = useTranslation('ba');\r\n const [expanded, setExpanded] = useState(false);\r\n\r\n return (\r\n <div className=\"card p-4\">\r\n <button\r\n onClick={() => setExpanded(!expanded)}\r\n className=\"w-full flex items-start gap-2 text-left\"\r\n >\r\n {expanded\r\n ? <ChevronDown className=\"w-4 h-4 mt-0.5 flex-shrink-0\" />\r\n : <ChevronRight className=\"w-4 h-4 mt-0.5 flex-shrink-0\" />\r\n }\r\n <div className=\"flex-1 min-w-0\">\r\n <div className=\"flex items-center gap-2 flex-wrap\">\r\n <span className=\"text-xs font-mono text-[var(--color-primary-600)]\">{uc.id}</span>\r\n <span className=\"font-medium text-[var(--text-primary)]\">{uc.name}</span>\r\n </div>\r\n {uc.description && !expanded && (\r\n <p className=\"text-sm text-[var(--text-tertiary)] truncate mt-0.5\">{uc.description}</p>\r\n )}\r\n </div>\r\n </button>\r\n\r\n {expanded && (\r\n <div className=\"mt-3 ml-6 space-y-3 text-sm\">\r\n {uc.description && (\r\n <p className=\"text-[var(--text-secondary)]\">{uc.description}</p>\r\n )}\r\n <div className=\"flex gap-4 text-xs\">\r\n <span className=\"text-[var(--text-tertiary)]\">{t('useCase.actor')}: <strong>{uc.primaryActor}</strong></span>\r\n <span className=\"text-[var(--text-tertiary)]\">{t('useCase.permission')}: <code className=\"bg-[var(--bg-tertiary)] px-1 rounded\">{uc.permission}</code></span>\r\n </div>\r\n\r\n {(uc.preconditions?.length ?? 0) > 0 && (\r\n <div>\r\n <p className=\"text-xs font-medium text-[var(--text-tertiary)] mb-1\">{t('useCase.preconditions')}</p>\r\n <ul className=\"list-disc list-inside text-[var(--text-secondary)]\">\r\n {uc.preconditions?.map((p) => <li key={p}>{p}</li>)}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n <div>\r\n <p className=\"text-xs font-medium text-[var(--text-tertiary)] mb-1\">{t('useCase.mainScenario')}</p>\r\n <ol className=\"list-decimal list-inside text-[var(--text-secondary)] space-y-0.5\">\r\n {uc.mainScenario.map((step) => <li key={step}>{step}</li>)}\r\n </ol>\r\n </div>\r\n\r\n {(uc.alternativeScenarios?.length ?? 0) > 0 && (\r\n <div>\r\n <p className=\"text-xs font-medium text-[var(--text-tertiary)] mb-1\">{t('useCase.alternatives')}</p>\r\n {uc.alternativeScenarios?.map((alt) => (\r\n <div key={alt.name} className=\"mb-2\">\r\n <p className=\"text-xs font-medium text-[var(--text-secondary)]\">{alt.name}</p>\r\n <ol className=\"list-decimal list-inside text-[var(--text-secondary)] text-xs\">\r\n {alt.steps.map((step) => <li key={step}>{step}</li>)}\r\n </ol>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {(uc.linkedRules?.length ?? 0) > 0 && (\r\n <div className=\"flex items-center gap-2 flex-wrap\">\r\n <span className=\"text-xs text-[var(--text-tertiary)]\">{t('useCase.linkedRules')}:</span>\r\n {uc.linkedRules?.map(rule => (\r\n <span key={rule} className=\"text-xs font-mono bg-[var(--bg-tertiary)] px-1.5 py-0.5 rounded\">{rule}</span>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport function SpecificationTab({ specification, analysis }: SpecificationTabProps): ReactElement {\r\n const { t } = useTranslation('ba');\r\n const [section, setSection] = useState<'uc' | 'br' | 'entities' | 'permissions'>('uc');\r\n\r\n const hasUC = specification?.useCases && specification.useCases.length > 0;\r\n const hasBR = analysis?.businessRules && analysis.businessRules.length > 0;\r\n const hasEntities = analysis?.entities && analysis.entities.length > 0;\r\n const hasPerms = specification?.permissionMatrix?.permissions && specification.permissionMatrix.permissions.length > 0;\r\n\r\n if (!hasUC && !hasBR && !hasEntities && !hasPerms) {\r\n return <div className=\"text-center py-12\">\r\n <FileText className=\"w-10 h-10 text-[var(--text-tertiary)] mx-auto mb-3\" />\r\n <p className=\"text-[var(--text-secondary)]\">{t('specification.noData')}</p>\r\n </div>;\r\n }\r\n\r\n const tabs = [\r\n { id: 'uc' as const, label: t('specification.useCases'), count: specification?.useCases?.length || 0, icon: BookOpen, show: hasUC },\r\n { id: 'br' as const, label: t('specification.businessRules'), count: analysis?.businessRules?.length || 0, icon: Shield, show: hasBR },\r\n { id: 'entities' as const, label: t('specification.entities'), count: analysis?.entities?.length || 0, icon: Database, show: hasEntities },\r\n { id: 'permissions' as const, label: t('specification.permissions'), count: specification?.permissionMatrix?.permissions?.length || 0, icon: Shield, show: hasPerms },\r\n ].filter(tab => tab.show);\r\n\r\n return (\r\n <div className=\"space-y-6\">\r\n {/* Sub-tabs */}\r\n <div className=\"flex gap-1 border-b border-[var(--border-color)]\">\r\n {tabs.map(tab => (\r\n <button\r\n key={tab.id}\r\n onClick={() => setSection(tab.id)}\r\n className={`px-4 py-2 text-sm font-medium border-b-2 transition-colors flex items-center gap-2 ${\r\n section === tab.id\r\n ? 'border-[var(--color-primary-600)] text-[var(--color-primary-600)]'\r\n : 'border-transparent text-[var(--text-tertiary)] hover:text-[var(--text-primary)]'\r\n }`}\r\n >\r\n <tab.icon className=\"w-4 h-4\" />\r\n {tab.label}\r\n <span className=\"text-xs bg-[var(--bg-tertiary)] px-1.5 py-0.5 rounded-full\">{tab.count}</span>\r\n </button>\r\n ))}\r\n </div>\r\n\r\n {/* Use Cases */}\r\n {section === 'uc' && specification?.useCases && (\r\n <div className=\"space-y-3\">\r\n {specification.useCases.map(uc => (\r\n <UseCaseCard key={uc.id} uc={uc} />\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Business Rules */}\r\n {section === 'br' && analysis?.businessRules && (\r\n <div className=\"space-y-2\">\r\n {analysis.businessRules.map(rule => (\r\n <div key={rule.id} className=\"card p-4 flex items-start gap-3\">\r\n <div className=\"flex-shrink-0 flex flex-col items-center gap-1\">\r\n <span className={`text-xs font-medium px-2 py-0.5 rounded ${BR_COLORS[rule.category]}`}>\r\n {t(`brCategory.${rule.category}`)}\r\n </span>\r\n <span className={`text-xs px-2 py-0.5 rounded ${PRIORITY_COLORS[rule.priority]}`}>\r\n {t(`priority.${rule.priority}`)}\r\n </span>\r\n </div>\r\n <div className=\"flex-1 min-w-0\">\r\n <div className=\"flex items-center gap-2 mb-1\">\r\n <span className=\"text-xs font-mono text-[var(--color-primary-600)]\">{rule.id}</span>\r\n <span className=\"font-medium text-sm text-[var(--text-primary)]\">{rule.name}</span>\r\n </div>\r\n <p className=\"text-sm text-[var(--text-secondary)]\">{rule.statement}</p>\r\n {rule.entity && (\r\n <span className=\"text-xs text-[var(--text-tertiary)] mt-1 inline-block\">\r\n {t('businessRule.entity')}: {rule.entity}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Entities */}\r\n {section === 'entities' && analysis?.entities && (\r\n <div className=\"space-y-4\">\r\n {analysis.entities.map(entity => (\r\n <div key={entity.name} className=\"card p-4\">\r\n <div className=\"flex items-center gap-2 mb-2\">\r\n <Database className=\"w-4 h-4 text-[var(--color-primary-600)]\" />\r\n <h4 className=\"font-medium text-[var(--text-primary)]\">{entity.name}</h4>\r\n {entity.type && (\r\n <span className=\"text-xs bg-[var(--bg-tertiary)] px-2 py-0.5 rounded\">{entity.type}</span>\r\n )}\r\n </div>\r\n {entity.description && (\r\n <p className=\"text-sm text-[var(--text-secondary)] mb-3\">{entity.description}</p>\r\n )}\r\n\r\n {(entity.attributes?.length ?? 0) > 0 && (\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-1 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">{t('entity.name')}</th>\r\n <th className=\"text-left py-1 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">{t('entity.type')}</th>\r\n <th className=\"text-center py-1 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">{t('entity.required')}</th>\r\n <th className=\"text-center py-1 text-xs font-medium text-[var(--text-tertiary)]\">{t('entity.unique')}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {entity.attributes?.map(attr => (\r\n <tr key={attr.name} className=\"border-b border-[var(--border-color)] last:border-0\">\r\n <td className=\"py-1.5 pr-4 font-mono text-xs\">{attr.name}</td>\r\n <td className=\"py-1.5 pr-4 text-[var(--text-secondary)]\">{attr.type}</td>\r\n <td className=\"py-1.5 pr-4 text-center\">{attr.required ? '✓' : ''}</td>\r\n <td className=\"py-1.5 text-center\">{attr.unique ? '✓' : ''}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n )}\r\n\r\n {(entity.relationships?.length ?? 0) > 0 && (\r\n <div className=\"mt-3 pt-3 border-t border-[var(--border-color)]\">\r\n <p className=\"text-xs font-medium text-[var(--text-tertiary)] mb-1\">{t('entity.relationships')}</p>\r\n <div className=\"flex flex-wrap gap-2\">\r\n {entity.relationships?.map((rel) => (\r\n <span key={`${rel.target}-${rel.type}`} className=\"text-xs bg-[var(--bg-tertiary)] px-2 py-1 rounded\">\r\n → {rel.target} <span className=\"text-[var(--text-tertiary)]\">({rel.type})</span>\r\n </span>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Permissions */}\r\n {section === 'permissions' && specification?.permissionMatrix && (\r\n <div className=\"space-y-4\">\r\n {specification.permissionMatrix.permissions && (\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 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Permission</th>\r\n <th className=\"text-left py-2 text-xs font-medium text-[var(--text-tertiary)]\">Description</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {specification.permissionMatrix.permissions.map(perm => (\r\n <tr key={perm.path} className=\"border-b border-[var(--border-color)] last:border-0\">\r\n <td className=\"py-2 pr-4 font-mono text-xs text-[var(--color-primary-600)]\">{perm.path}</td>\r\n <td className=\"py-2 text-[var(--text-secondary)]\">{perm.description}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n )}\r\n\r\n {specification.permissionMatrix.roleAssignments && specification.permissionMatrix.roleAssignments.length > 0 && (\r\n <div>\r\n <h4 className=\"text-sm font-medium mb-2\">Role Assignments</h4>\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 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Role</th>\r\n <th className=\"text-left py-2 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Level</th>\r\n <th className=\"text-left py-2 text-xs font-medium text-[var(--text-tertiary)]\">Permissions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {specification.permissionMatrix.roleAssignments.map(ra => (\r\n <tr key={ra.role} className=\"border-b border-[var(--border-color)] last:border-0\">\r\n <td className=\"py-2 pr-4 font-medium\">{ra.role}</td>\r\n <td className=\"py-2 pr-4\">\r\n <span className=\"text-xs bg-[var(--bg-tertiary)] px-2 py-0.5 rounded\">{ra.level}</span>\r\n </td>\r\n <td className=\"py-2\">\r\n <div className=\"flex flex-wrap gap-1\">\r\n {ra.permissions.map(p => (\r\n <span key={p} className=\"text-xs font-mono bg-[var(--bg-tertiary)] px-1.5 py-0.5 rounded\">{p}</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 </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import type { ReactElement } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Rocket, FolderTree, Globe, GitBranch } from 'lucide-react';\r\nimport type { Handoff, FilesToCreate } from '@/types/featureJson';\r\n\r\ninterface SyntheseTabProps {\r\n readonly handoff?: Handoff;\r\n}\r\n\r\nconst CATEGORY_ICONS: Record<string, string> = {\r\n domain: '🏗️',\r\n application: '⚙️',\r\n infrastructure: '🔧',\r\n api: '🌐',\r\n frontend: '🖥️',\r\n seedData: '🌱',\r\n tests: '🧪',\r\n};\r\n\r\nfunction FileCategory({ category, files, t }: { category: keyof FilesToCreate; files: NonNullable<FilesToCreate[keyof FilesToCreate]>; t: (key: string) => string }) {\r\n if (!files.length) return null;\r\n return (\r\n <div className=\"card p-4\">\r\n <h4 className=\"text-sm font-semibold mb-2 flex items-center gap-2\">\r\n <span>{CATEGORY_ICONS[category] || '📁'}</span>\r\n {t(`fileCategory.${category}`)}\r\n <span className=\"text-xs bg-[var(--bg-tertiary)] px-1.5 py-0.5 rounded-full\">{files.length}</span>\r\n </h4>\r\n <div className=\"space-y-1\">\r\n {files.map((file) => (\r\n <div key={file.path} className=\"flex items-start gap-2 text-sm\">\r\n <code className=\"text-xs font-mono text-[var(--color-primary-600)] bg-[var(--bg-secondary)] px-1.5 py-0.5 rounded break-all\">\r\n {file.path}\r\n </code>\r\n {file.description && (\r\n <span className=\"text-[var(--text-tertiary)] text-xs flex-shrink-0\">{file.description}</span>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function SyntheseTab({ handoff }: SyntheseTabProps): ReactElement {\r\n const { t } = useTranslation('ba');\r\n\r\n if (!handoff) {\r\n return <div className=\"text-center py-12\">\r\n <Rocket className=\"w-10 h-10 text-[var(--text-tertiary)] mx-auto mb-3\" />\r\n <p className=\"text-[var(--text-secondary)]\">{t('handoff.noData')}</p>\r\n </div>;\r\n }\r\n\r\n return (\r\n <div className=\"space-y-8\">\r\n {/* Summary cards */}\r\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\r\n {handoff.complexity && (\r\n <div className=\"card p-4 text-center\">\r\n <p className=\"text-xs text-[var(--text-tertiary)] mb-1\">{t('handoff.complexity')}</p>\r\n <p className=\"text-lg font-bold text-[var(--text-primary)]\">{handoff.complexity}</p>\r\n </div>\r\n )}\r\n {handoff.implementationStrategy && (\r\n <div className=\"card p-4 text-center\">\r\n <p className=\"text-xs text-[var(--text-tertiary)] mb-1\">{t('handoff.strategy')}</p>\r\n <p className=\"text-lg font-bold text-[var(--text-primary)]\">{handoff.implementationStrategy}</p>\r\n </div>\r\n )}\r\n {handoff.totalFiles != null && (\r\n <div className=\"card p-4 text-center\">\r\n <p className=\"text-xs text-[var(--text-tertiary)] mb-1\">{t('handoff.totalFiles')}</p>\r\n <p className=\"text-lg font-bold text-[var(--color-primary-600)]\">{handoff.totalFiles}</p>\r\n </div>\r\n )}\r\n {handoff.totalTasks != null && (\r\n <div className=\"card p-4 text-center\">\r\n <p className=\"text-xs text-[var(--text-tertiary)] mb-1\">{t('handoff.totalTasks')}</p>\r\n <p className=\"text-lg font-bold text-[var(--color-primary-600)]\">{handoff.totalTasks}</p>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Files to create */}\r\n {handoff.filesToCreate && (\r\n <div>\r\n <h3 className=\"text-lg font-semibold mb-3 flex items-center gap-2\">\r\n <FolderTree className=\"w-5 h-5 text-[var(--color-primary-600)]\" />\r\n {t('handoff.filesToCreate')}\r\n </h3>\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n {(Object.entries(handoff.filesToCreate) as [keyof FilesToCreate, FilesToCreate[keyof FilesToCreate]][]).map(\r\n ([category, files]) => (files?.length ?? 0) > 0 && (\r\n <FileCategory key={category} category={category} files={files ?? []} t={t} />\r\n )\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* API Endpoints */}\r\n {(handoff.apiEndpointSummary?.length ?? 0) > 0 && (\r\n <div>\r\n <h3 className=\"text-lg font-semibold mb-3 flex items-center gap-2\">\r\n <Globe className=\"w-5 h-5 text-[var(--color-primary-600)]\" />\r\n {t('handoff.apiEndpoints')}\r\n </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 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Method</th>\r\n <th className=\"text-left py-2 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Route</th>\r\n <th className=\"text-left py-2 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Operation</th>\r\n <th className=\"text-left py-2 text-xs font-medium text-[var(--text-tertiary)]\">Permission</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {handoff.apiEndpointSummary?.map((ep) => {\r\n const methodColors: Record<string, string> = {\r\n GET: 'text-green-600',\r\n POST: 'text-blue-600',\r\n PUT: 'text-orange-600',\r\n PATCH: 'text-yellow-600',\r\n DELETE: 'text-red-600',\r\n };\r\n return (\r\n <tr key={`${ep.method}-${ep.route}`} className=\"border-b border-[var(--border-color)] last:border-0\">\r\n <td className={`py-2 pr-4 font-mono text-xs font-bold ${methodColors[ep.method] || ''}`}>{ep.method}</td>\r\n <td className=\"py-2 pr-4 font-mono text-xs\">{ep.route}</td>\r\n <td className=\"py-2 pr-4 text-[var(--text-secondary)]\">{ep.operation}</td>\r\n <td className=\"py-2 font-mono text-xs text-[var(--text-tertiary)]\">{ep.permission}</td>\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* BR to Code mapping */}\r\n {(handoff.brToCodeMapping?.length ?? 0) > 0 && (\r\n <div>\r\n <h3 className=\"text-lg font-semibold mb-3 flex items-center gap-2\">\r\n <GitBranch className=\"w-5 h-5 text-[var(--color-primary-600)]\" />\r\n {t('handoff.brMapping')}\r\n </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 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">Rule</th>\r\n <th className=\"text-left py-2 pr-4 text-xs font-medium text-[var(--text-tertiary)]\">File</th>\r\n <th className=\"text-left py-2 text-xs font-medium text-[var(--text-tertiary)]\">Method</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {handoff.brToCodeMapping?.map((mapping) => (\r\n <tr key={`${mapping.ruleId}-${mapping.targetFile}`} className=\"border-b border-[var(--border-color)] last:border-0\">\r\n <td className=\"py-2 pr-4\">\r\n <span className=\"font-mono text-xs text-[var(--color-primary-600)]\">{mapping.ruleId}</span>\r\n {mapping.ruleName && <span className=\"text-xs text-[var(--text-tertiary)] ml-2\">{mapping.ruleName}</span>}\r\n </td>\r\n <td className=\"py-2 pr-4 font-mono text-xs break-all\">{mapping.targetFile}</td>\r\n <td className=\"py-2 font-mono text-xs text-[var(--text-secondary)]\">{mapping.targetMethod}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { useState, useEffect } from 'react';\r\nimport type { ReactElement } from 'react';\r\nimport { useParams, Link } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { ArrowLeft, Target, FileText, Rocket, Loader2 } from 'lucide-react';\r\nimport { businessAnalysisApi } from '@/services/api/businessAnalysisApi';\r\nimport type { ModuleFeatureJson } from '@/types/featureJson';\r\nimport { CadrageTab } from './components/CadrageTab';\r\nimport { SpecificationTab } from './components/SpecificationTab';\r\nimport { SyntheseTab } from './components/SyntheseTab';\r\n\r\ntype TabId = 'cadrage' | 'specification' | 'synthese';\r\n\r\nconst TABS: { id: TabId; icon: typeof Target; labelKey: string }[] = [\r\n { id: 'cadrage', icon: Target, labelKey: 'tabs.cadrage' },\r\n { id: 'specification', icon: FileText, labelKey: 'tabs.specification' },\r\n { id: 'synthese', icon: Rocket, labelKey: 'tabs.synthese' },\r\n];\r\n\r\nconst STATUS_COLORS: Record<string, string> = {\r\n 'draft': 'bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-300',\r\n 'analysed': 'bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300',\r\n 'specified': 'bg-indigo-100 text-indigo-700 dark:bg-indigo-900 dark:text-indigo-300',\r\n 'consolidated': 'bg-purple-100 text-purple-700 dark:bg-purple-900 dark:text-purple-300',\r\n 'handed-off': 'bg-green-100 text-green-700 dark:bg-green-900 dark:text-green-300',\r\n};\r\n\r\nexport function BaViewerPage(): ReactElement {\r\n const { appCode, moduleCode } = useParams<{ appCode: string; moduleCode?: string }>();\r\n const { t } = useTranslation('ba');\r\n const [feature, setFeature] = useState<ModuleFeatureJson | null>(null);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState<string | null>(null);\r\n const [activeTab, setActiveTab] = useState<TabId>('cadrage');\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n setError(null);\r\n\r\n businessAnalysisApi.getManifest()\r\n .then(m => {\r\n // Find path from manifest\r\n const entry = m.analyses.find(\r\n e => e.appCode === appCode && (moduleCode ? e.moduleCode === moduleCode : !e.moduleCode)\r\n );\r\n if (entry) {\r\n return businessAnalysisApi.getFeature(entry.path);\r\n }\r\n throw new Error('Entry not found in manifest');\r\n })\r\n .then(setFeature)\r\n .catch(err => setError(err.message))\r\n .finally(() => setLoading(false))\r\n .catch(() => {});\r\n }, [appCode, moduleCode]);\r\n\r\n if (loading) {\r\n return (\r\n <div className=\"flex items-center justify-center py-20\">\r\n <Loader2 className=\"w-8 h-8 animate-spin text-[var(--color-primary-600)]\" />\r\n </div>\r\n );\r\n }\r\n\r\n if (error || !feature) {\r\n return (\r\n <div className=\"space-y-4\">\r\n <Link to=\"/system/docs/ba\" className=\"text-sm text-[var(--color-primary-600)] hover:underline flex items-center gap-1\">\r\n <ArrowLeft className=\"w-4 h-4\" />\r\n {t('viewer.backToList')}\r\n </Link>\r\n <div className=\"text-center py-12\">\r\n <p className=\"text-[var(--text-secondary)]\">Feature not found: {appCode}{moduleCode ? `/${moduleCode}` : ''}</p>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"space-y-6\">\r\n {/* Back link */}\r\n <Link to=\"/system/docs/ba\" className=\"text-sm text-[var(--color-primary-600)] hover:underline flex items-center gap-1\">\r\n <ArrowLeft className=\"w-4 h-4\" />\r\n {t('viewer.backToList')}\r\n </Link>\r\n\r\n {/* Header */}\r\n <div className=\"flex items-start justify-between\">\r\n <div>\r\n <h1 className=\"text-2xl font-bold text-[var(--text-primary)]\">\r\n {feature.metadata.application}\r\n {feature.metadata.module && feature.metadata.module !== feature.metadata.application && (\r\n <span className=\"text-[var(--text-tertiary)]\"> / {feature.metadata.module}</span>\r\n )}\r\n </h1>\r\n <p className=\"text-[var(--text-secondary)] mt-1\">{feature.metadata.featureDescription}</p>\r\n </div>\r\n <div className=\"flex items-center gap-3 flex-shrink-0\">\r\n <span className=\"text-sm text-[var(--text-tertiary)]\">v{feature.version}</span>\r\n <span className={`px-2.5 py-1 rounded-full text-xs font-medium ${STATUS_COLORS[feature.status] || STATUS_COLORS.draft}`}>\r\n {t(`status.${feature.status}`, feature.status)}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n {/* Tab bar */}\r\n <div className=\"flex gap-1 border-b border-[var(--border-color)]\">\r\n {TABS.map(tab => (\r\n <button\r\n key={tab.id}\r\n onClick={() => setActiveTab(tab.id)}\r\n className={`px-5 py-3 text-sm font-medium border-b-2 transition-colors flex items-center gap-2 ${\r\n activeTab === tab.id\r\n ? 'border-[var(--color-primary-600)] text-[var(--color-primary-600)]'\r\n : 'border-transparent text-[var(--text-tertiary)] hover:text-[var(--text-primary)]'\r\n }`}\r\n >\r\n <tab.icon className=\"w-4 h-4\" />\r\n {t(tab.labelKey)}\r\n </button>\r\n ))}\r\n </div>\r\n\r\n {/* Tab content */}\r\n <div>\r\n {activeTab === 'cadrage' && <CadrageTab discovery={feature.discovery} />}\r\n {activeTab === 'specification' && <SpecificationTab specification={feature.specification} analysis={feature.analysis} />}\r\n {activeTab === 'synthese' && <SyntheseTab handoff={feature.handoff} />}\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["ScopeColumn","title","items","color","jsxs","jsx","item","StakeholderCard","stakeholder","t","useTranslation","Users","task","ArrowRight","pain","AlertTriangle","CadrageTab","discovery","Target","s","CheckCircle","BR_COLORS","PRIORITY_COLORS","UseCaseCard","uc","expanded","setExpanded","useState","ChevronDown","ChevronRight","p","step","alt","rule","SpecificationTab","specification","analysis","section","setSection","hasUC","hasBR","hasEntities","hasPerms","FileText","tabs","BookOpen","Shield","Database","tab","entity","attr","rel","perm","ra","CATEGORY_ICONS","FileCategory","category","files","file","SyntheseTab","handoff","FolderTree","Globe","ep","GitBranch","mapping","Rocket","TABS","STATUS_COLORS","BaViewerPage","appCode","moduleCode","useParams","feature","setFeature","loading","setLoading","error","setError","activeTab","setActiveTab","useEffect","businessAnalysisApi","m","entry","e","err","Loader2","Link","ArrowLeft"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("react"),l=require("react-router-dom"),a=require("lucide-react"),x=require("./index-C6C5XmVj.cjs");function w(){const[j]=l.useSearchParams(),c=j.get("token"),[r,n]=s.useState("loading"),[u,o]=s.useState(""),[g,N]=s.useState(""),[d,k]=s.useState(""),[h,f]=s.useState(!1),[b,m]=s.useState("");s.useEffect(()=>{if(!c){n("error"),o("Lien de confirmation invalide. Aucun token fourni.");return}(async()=>{try{const t=await x.authApi.confirmEmail(c);n("success"),o(t.message),N(t.email)}catch(t){const p=t,y=t?.code;n(y==="TOKEN_EXPIRED"?"expired":y==="TOKEN_ALREADY_USED"?"already_used":"error"),o(p?.message||"Une erreur est survenue lors de la confirmation.")}})()},[c]);const v=async i=>{if(i.preventDefault(),!!d){f(!0),m("");try{const t=await x.authApi.resendConfirmation(d);m(t.message)}catch(t){m(t?.message||"Erreur lors de l'envoi.")}finally{f(!1)}}};return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900 p-8",children:e.jsxs("div",{className:"w-full max-w-md",children:[e.jsx("div",{className:"flex justify-end mb-8",children:e.jsx(x.ThemeSwitcher,{})}),e.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-2xl shadow-xl p-8",children:[r==="loading"&&e.jsxs("div",{className:"text-center",children:[e.jsx(a.Loader2,{className:"w-16 h-16 text-blue-500 animate-spin mx-auto mb-4"}),e.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-2",children:"Confirmation en cours..."}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:"Veuillez patienter pendant que nous vérifions votre email."})]}),r==="success"&&e.jsxs("div",{className:"text-center",children:[e.jsx("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",children:e.jsx(a.CheckCircle2,{className:"w-10 h-10 text-green-600 dark:text-green-400"})}),e.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-2",children:"Email confirmé !"}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400 mb-6",children:u}),g&&e.jsxs("p",{className:"text-sm text-gray-500 dark:text-gray-400 mb-6",children:["Compte : ",e.jsx("strong",{children:g})]}),e.jsx(l.Link,{to:"/login",className:"inline-flex items-center justify-center gap-2 px-6 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 transition-all",children:"Se connecter"})]}),(r==="error"||r==="expired"||r==="already_used")&&e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:`w-16 h-16 rounded-full flex items-center justify-center mx-auto mb-4 ${r==="already_used"?"bg-amber-100 dark:bg-amber-900/30":"bg-red-100 dark:bg-red-900/30"}`,children:r==="already_used"?e.jsx(a.CheckCircle2,{className:"w-10 h-10 text-amber-600 dark:text-amber-400"}):e.jsx(a.XCircle,{className:"w-10 h-10 text-red-600 dark:text-red-400"})}),e.jsxs("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-2",children:[r==="expired"&&"Lien expiré",r==="already_used"&&"Lien déjà utilisé",r==="error"&&"Erreur de confirmation"]}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400 mb-6",children:u}),(r==="expired"||r==="error")&&e.jsxs("div",{className:"border-t border-gray-200 dark:border-gray-700 pt-6 mt-6",children:[e.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-4",children:"Demander un nouveau lien de confirmation :"}),e.jsxs("form",{onSubmit:v,className:"space-y-3",children:[e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none",children:e.jsx(a.Mail,{className:"h-5 w-5 text-gray-400"})}),e.jsx("input",{type:"email",value:d,onChange:i=>k(i.target.value),placeholder:"Votre email",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",required:!0})]}),e.jsxs("button",{type:"submit",disabled:h,className:"w-full flex items-center justify-center gap-2 px-4 py-2.5 bg-blue-600 text-white rounded-lg font-medium hover:bg-blue-700 disabled:opacity-50 transition-colors",children:[h?e.jsx(a.Loader2,{className:"w-5 h-5 animate-spin"}):e.jsx(a.RefreshCw,{className:"w-5 h-5"}),"Renvoyer le lien"]})]}),b&&e.jsx("p",{className:"mt-3 text-sm text-green-600 dark:text-green-400",children:b})]}),r==="already_used"&&e.jsx(l.Link,{to:"/login",className:"inline-flex items-center justify-center gap-2 px-6 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 transition-all",children:"Se connecter"})]})]}),e.jsx("p",{className:"text-center text-sm text-gray-500 dark:text-gray-400 mt-6",children:e.jsx(l.Link,{to:"/login",className:"hover:underline",children:"Retour à la connexion"})})]})})}exports.ConfirmEmailPage=w;
2
- //# sourceMappingURL=ConfirmEmailPage-su3Fvl0e.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("react"),l=require("react-router-dom"),a=require("lucide-react"),x=require("./index-BfMaHuWh.cjs");function w(){const[j]=l.useSearchParams(),c=j.get("token"),[r,n]=s.useState("loading"),[u,o]=s.useState(""),[g,N]=s.useState(""),[d,k]=s.useState(""),[h,f]=s.useState(!1),[b,m]=s.useState("");s.useEffect(()=>{if(!c){n("error"),o("Lien de confirmation invalide. Aucun token fourni.");return}(async()=>{try{const t=await x.authApi.confirmEmail(c);n("success"),o(t.message),N(t.email)}catch(t){const p=t,y=t?.code;n(y==="TOKEN_EXPIRED"?"expired":y==="TOKEN_ALREADY_USED"?"already_used":"error"),o(p?.message||"Une erreur est survenue lors de la confirmation.")}})()},[c]);const v=async i=>{if(i.preventDefault(),!!d){f(!0),m("");try{const t=await x.authApi.resendConfirmation(d);m(t.message)}catch(t){m(t?.message||"Erreur lors de l'envoi.")}finally{f(!1)}}};return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900 p-8",children:e.jsxs("div",{className:"w-full max-w-md",children:[e.jsx("div",{className:"flex justify-end mb-8",children:e.jsx(x.ThemeSwitcher,{})}),e.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-2xl shadow-xl p-8",children:[r==="loading"&&e.jsxs("div",{className:"text-center",children:[e.jsx(a.Loader2,{className:"w-16 h-16 text-blue-500 animate-spin mx-auto mb-4"}),e.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-2",children:"Confirmation en cours..."}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:"Veuillez patienter pendant que nous vérifions votre email."})]}),r==="success"&&e.jsxs("div",{className:"text-center",children:[e.jsx("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",children:e.jsx(a.CheckCircle2,{className:"w-10 h-10 text-green-600 dark:text-green-400"})}),e.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-2",children:"Email confirmé !"}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400 mb-6",children:u}),g&&e.jsxs("p",{className:"text-sm text-gray-500 dark:text-gray-400 mb-6",children:["Compte : ",e.jsx("strong",{children:g})]}),e.jsx(l.Link,{to:"/login",className:"inline-flex items-center justify-center gap-2 px-6 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 transition-all",children:"Se connecter"})]}),(r==="error"||r==="expired"||r==="already_used")&&e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:`w-16 h-16 rounded-full flex items-center justify-center mx-auto mb-4 ${r==="already_used"?"bg-amber-100 dark:bg-amber-900/30":"bg-red-100 dark:bg-red-900/30"}`,children:r==="already_used"?e.jsx(a.CheckCircle2,{className:"w-10 h-10 text-amber-600 dark:text-amber-400"}):e.jsx(a.XCircle,{className:"w-10 h-10 text-red-600 dark:text-red-400"})}),e.jsxs("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-2",children:[r==="expired"&&"Lien expiré",r==="already_used"&&"Lien déjà utilisé",r==="error"&&"Erreur de confirmation"]}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400 mb-6",children:u}),(r==="expired"||r==="error")&&e.jsxs("div",{className:"border-t border-gray-200 dark:border-gray-700 pt-6 mt-6",children:[e.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-4",children:"Demander un nouveau lien de confirmation :"}),e.jsxs("form",{onSubmit:v,className:"space-y-3",children:[e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none",children:e.jsx(a.Mail,{className:"h-5 w-5 text-gray-400"})}),e.jsx("input",{type:"email",value:d,onChange:i=>k(i.target.value),placeholder:"Votre email",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",required:!0})]}),e.jsxs("button",{type:"submit",disabled:h,className:"w-full flex items-center justify-center gap-2 px-4 py-2.5 bg-blue-600 text-white rounded-lg font-medium hover:bg-blue-700 disabled:opacity-50 transition-colors",children:[h?e.jsx(a.Loader2,{className:"w-5 h-5 animate-spin"}):e.jsx(a.RefreshCw,{className:"w-5 h-5"}),"Renvoyer le lien"]})]}),b&&e.jsx("p",{className:"mt-3 text-sm text-green-600 dark:text-green-400",children:b})]}),r==="already_used"&&e.jsx(l.Link,{to:"/login",className:"inline-flex items-center justify-center gap-2 px-6 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 transition-all",children:"Se connecter"})]})]}),e.jsx("p",{className:"text-center text-sm text-gray-500 dark:text-gray-400 mt-6",children:e.jsx(l.Link,{to:"/login",className:"hover:underline",children:"Retour à la connexion"})})]})})}exports.ConfirmEmailPage=w;
2
+ //# sourceMappingURL=ConfirmEmailPage-B3mrPUvg.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmEmailPage-B3mrPUvg.cjs","sources":["../src/pages/auth/ConfirmEmailPage.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport type { ReactElement } from 'react';\r\nimport { useSearchParams, Link } from 'react-router-dom';\r\nimport { CheckCircle2, XCircle, Loader2, Mail, RefreshCw } from 'lucide-react';\r\nimport { ThemeSwitcher } from '@/components/ui/ThemeSwitcher';\r\nimport { authApi } from '@/services/api/authApi';\r\n\r\ntype Status = 'loading' | 'success' | 'error' | 'expired' | 'already_used';\r\n\r\nexport function ConfirmEmailPage(): ReactElement {\r\n const [searchParams] = useSearchParams();\r\n const token = searchParams.get('token');\r\n\r\n const [status, setStatus] = useState<Status>('loading');\r\n const [message, setMessage] = useState('');\r\n const [email, setEmail] = useState('');\r\n const [resendEmail, setResendEmail] = useState('');\r\n const [isResending, setIsResending] = useState(false);\r\n const [resendMessage, setResendMessage] = useState('');\r\n\r\n useEffect(() => {\r\n if (!token) {\r\n setStatus('error');\r\n setMessage('Lien de confirmation invalide. Aucun token fourni.');\r\n return;\r\n }\r\n\r\n const confirmEmail = async () => {\r\n try {\r\n const response = await authApi.confirmEmail(token);\r\n setStatus('success');\r\n setMessage(response.message);\r\n setEmail(response.email);\r\n } catch (err) {\r\n const error = err as { message?: string; code?: string };\r\n const code = (err as { code?: string })?.code;\r\n\r\n if (code === 'TOKEN_EXPIRED') {\r\n setStatus('expired');\r\n } else if (code === 'TOKEN_ALREADY_USED') {\r\n setStatus('already_used');\r\n } else {\r\n setStatus('error');\r\n }\r\n setMessage(error?.message || 'Une erreur est survenue lors de la confirmation.');\r\n }\r\n };\r\n\r\n confirmEmail();\r\n }, [token]);\r\n\r\n const handleResendConfirmation = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (!resendEmail) return;\r\n\r\n setIsResending(true);\r\n setResendMessage('');\r\n\r\n try {\r\n const response = await authApi.resendConfirmation(resendEmail);\r\n setResendMessage(response.message);\r\n } catch (err) {\r\n const error = err as { message?: string };\r\n setResendMessage(error?.message || 'Erreur lors de l\\'envoi.');\r\n } finally {\r\n setIsResending(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 {/* Loading State */}\r\n {status === 'loading' && (\r\n <div className=\"text-center\">\r\n <Loader2 className=\"w-16 h-16 text-blue-500 animate-spin mx-auto mb-4\" />\r\n <h2 className=\"text-xl font-semibold text-gray-900 dark:text-white mb-2\">\r\n Confirmation en cours...\r\n </h2>\r\n <p className=\"text-gray-600 dark:text-gray-400\">\r\n Veuillez patienter pendant que nous vérifions votre email.\r\n </p>\r\n </div>\r\n )}\r\n\r\n {/* Success State */}\r\n {status === 'success' && (\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 confirmé !\r\n </h2>\r\n <p className=\"text-gray-600 dark:text-gray-400 mb-6\">\r\n {message}\r\n </p>\r\n {email && (\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400 mb-6\">\r\n Compte : <strong>{email}</strong>\r\n </p>\r\n )}\r\n <Link\r\n to=\"/login\"\r\n className=\"inline-flex items-center justify-center gap-2 px-6 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 transition-all\"\r\n >\r\n Se connecter\r\n </Link>\r\n </div>\r\n )}\r\n\r\n {/* Error / Expired / Already Used States */}\r\n {(status === 'error' || status === 'expired' || status === 'already_used') && (\r\n <div className=\"text-center\">\r\n <div className={`w-16 h-16 rounded-full flex items-center justify-center mx-auto mb-4 ${\r\n status === 'already_used'\r\n ? 'bg-amber-100 dark:bg-amber-900/30'\r\n : 'bg-red-100 dark:bg-red-900/30'\r\n }`}>\r\n {status === 'already_used' ? (\r\n <CheckCircle2 className=\"w-10 h-10 text-amber-600 dark:text-amber-400\" />\r\n ) : (\r\n <XCircle className=\"w-10 h-10 text-red-600 dark:text-red-400\" />\r\n )}\r\n </div>\r\n <h2 className=\"text-xl font-semibold text-gray-900 dark:text-white mb-2\">\r\n {status === 'expired' && 'Lien expiré'}\r\n {status === 'already_used' && 'Lien déjà utilisé'}\r\n {status === 'error' && 'Erreur de confirmation'}\r\n </h2>\r\n <p className=\"text-gray-600 dark:text-gray-400 mb-6\">\r\n {message}\r\n </p>\r\n\r\n {/* Resend Form */}\r\n {(status === 'expired' || status === 'error') && (\r\n <div className=\"border-t border-gray-200 dark:border-gray-700 pt-6 mt-6\">\r\n <p className=\"text-sm text-gray-600 dark:text-gray-400 mb-4\">\r\n Demander un nouveau lien de confirmation :\r\n </p>\r\n <form onSubmit={handleResendConfirmation} className=\"space-y-3\">\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 type=\"email\"\r\n value={resendEmail}\r\n onChange={(e) => setResendEmail(e.target.value)}\r\n placeholder=\"Votre email\"\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 required\r\n />\r\n </div>\r\n <button\r\n type=\"submit\"\r\n disabled={isResending}\r\n className=\"w-full flex items-center justify-center gap-2 px-4 py-2.5 bg-blue-600 text-white rounded-lg font-medium hover:bg-blue-700 disabled:opacity-50 transition-colors\"\r\n >\r\n {isResending ? (\r\n <Loader2 className=\"w-5 h-5 animate-spin\" />\r\n ) : (\r\n <RefreshCw className=\"w-5 h-5\" />\r\n )}\r\n Renvoyer le lien\r\n </button>\r\n </form>\r\n {resendMessage && (\r\n <p className=\"mt-3 text-sm text-green-600 dark:text-green-400\">\r\n {resendMessage}\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n\r\n {status === 'already_used' && (\r\n <Link\r\n to=\"/login\"\r\n className=\"inline-flex items-center justify-center gap-2 px-6 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 transition-all\"\r\n >\r\n Se connecter\r\n </Link>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n\r\n <p className=\"text-center text-sm text-gray-500 dark:text-gray-400 mt-6\">\r\n <Link to=\"/login\" className=\"hover:underline\">\r\n Retour à la connexion\r\n </Link>\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["ConfirmEmailPage","searchParams","useSearchParams","token","status","setStatus","useState","message","setMessage","email","setEmail","resendEmail","setResendEmail","isResending","setIsResending","resendMessage","setResendMessage","useEffect","response","authApi","err","error","code","handleResendConfirmation","e","jsxs","jsx","ThemeSwitcher","Loader2","CheckCircle2","Link","XCircle","Mail","RefreshCw"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
2
  import { useState as s, useEffect as C } from "react";
3
3
  import { useSearchParams as R, Link as m } from "react-router-dom";
4
4
  import { Loader2 as y, CheckCircle2 as N, XCircle as j, Mail as _, RefreshCw as S } from "lucide-react";
5
- import { T as L, a as v } from "./index-0Jhdcj59.js";
5
+ import { T as L, a as v } from "./index-Kn_ynW2m.js";
6
6
  function I() {
7
7
  const [k] = R(), l = k.get("token"), [r, n] = s("loading"), [u, o] = s(""), [g, w] = s(""), [d, E] = s(""), [x, h] = s(!1), [f, c] = s("");
8
8
  return C(() => {
@@ -112,4 +112,4 @@ function I() {
112
112
  export {
113
113
  I as ConfirmEmailPage
114
114
  };
115
- //# sourceMappingURL=ConfirmEmailPage-BTp8J0pw.js.map
115
+ //# sourceMappingURL=ConfirmEmailPage-DDp2IPE_.js.map