@atlashub/smartstack 3.29.0 → 3.30.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 (320) hide show
  1. package/dist/chunks/{AgentSkillsPage-ChykpPZx.js → AgentSkillsPage-CVq3qZoe.js} +2 -2
  2. package/dist/chunks/{AgentSkillsPage-ChykpPZx.js.map → AgentSkillsPage-CVq3qZoe.js.map} +1 -1
  3. package/dist/chunks/{AgentSkillsPage-ABpqnnyK.js → AgentSkillsPage-DJb49NMA.js} +2 -2
  4. package/dist/chunks/{AgentSkillsPage-ABpqnnyK.js.map → AgentSkillsPage-DJb49NMA.js.map} +1 -1
  5. package/dist/chunks/{AgentWorkloadPage-BltzNlXI.js → AgentWorkloadPage-D_nk3gKj.js} +2 -2
  6. package/dist/chunks/{AgentWorkloadPage-BltzNlXI.js.map → AgentWorkloadPage-D_nk3gKj.js.map} +1 -1
  7. package/dist/chunks/{AgentWorkloadPage-BI5QWJyQ.js → AgentWorkloadPage-oHEi-sFh.js} +2 -2
  8. package/dist/chunks/{AgentWorkloadPage-BI5QWJyQ.js.map → AgentWorkloadPage-oHEi-sFh.js.map} +1 -1
  9. package/dist/chunks/{ApiCatalogDetailPage-BaheZKBq.js → ApiCatalogDetailPage-Cr0q2HnB.js} +3 -3
  10. package/dist/chunks/{ApiCatalogDetailPage-BaheZKBq.js.map → ApiCatalogDetailPage-Cr0q2HnB.js.map} +1 -1
  11. package/dist/chunks/{ApiCatalogDetailPage-CsRxlHwO.js → ApiCatalogDetailPage-DX8buBkV.js} +2 -2
  12. package/dist/chunks/{ApiCatalogDetailPage-CsRxlHwO.js.map → ApiCatalogDetailPage-DX8buBkV.js.map} +1 -1
  13. package/dist/chunks/{ApiCatalogPage-CqmmHpQ4.js → ApiCatalogPage-DN7sazvI.js} +2 -2
  14. package/dist/chunks/{ApiCatalogPage-CqmmHpQ4.js.map → ApiCatalogPage-DN7sazvI.js.map} +1 -1
  15. package/dist/chunks/{ApiCatalogPage-B0yIz8-U.js → ApiCatalogPage-DqboIzZE.js} +2 -2
  16. package/dist/chunks/{ApiCatalogPage-B0yIz8-U.js.map → ApiCatalogPage-DqboIzZE.js.map} +1 -1
  17. package/dist/chunks/{ApplicationDetailPage-CngD5JSN.js → ApplicationDetailPage--9YwwS5A.js} +2 -2
  18. package/dist/chunks/{ApplicationDetailPage-CngD5JSN.js.map → ApplicationDetailPage--9YwwS5A.js.map} +1 -1
  19. package/dist/chunks/{ApplicationDetailPage-CdT6KNd7.js → ApplicationDetailPage-CCNjr64K.js} +4 -4
  20. package/dist/chunks/{ApplicationDetailPage-CdT6KNd7.js.map → ApplicationDetailPage-CCNjr64K.js.map} +1 -1
  21. package/dist/chunks/{ApplicationsDashboardPage-DHmnjk2O.js → ApplicationsDashboardPage-BSsHN3Yj.js} +2 -2
  22. package/dist/chunks/{ApplicationsDashboardPage-DHmnjk2O.js.map → ApplicationsDashboardPage-BSsHN3Yj.js.map} +1 -1
  23. package/dist/chunks/{ApplicationsDashboardPage-1V4iQ6eY.js → ApplicationsDashboardPage-Bs-Xgca4.js} +3 -3
  24. package/dist/chunks/{ApplicationsDashboardPage-1V4iQ6eY.js.map → ApplicationsDashboardPage-Bs-Xgca4.js.map} +1 -1
  25. package/dist/chunks/{ApplicationsGridPage-Bo3NDnBF.js → ApplicationsGridPage-DDysNWJ5.js} +2 -2
  26. package/dist/chunks/{ApplicationsGridPage-Bo3NDnBF.js.map → ApplicationsGridPage-DDysNWJ5.js.map} +1 -1
  27. package/dist/chunks/{ApplicationsGridPage-CiMJFlB_.js → ApplicationsGridPage-s1WEzOXS.js} +2 -2
  28. package/dist/chunks/{ApplicationsGridPage-CiMJFlB_.js.map → ApplicationsGridPage-s1WEzOXS.js.map} +1 -1
  29. package/dist/chunks/{ApplicationsListPage-L2_S23aN.js → ApplicationsListPage-B3CSMiV0.js} +2 -2
  30. package/dist/chunks/{ApplicationsListPage-L2_S23aN.js.map → ApplicationsListPage-B3CSMiV0.js.map} +1 -1
  31. package/dist/chunks/{ApplicationsListPage-De8jQ1Cm.js → ApplicationsListPage-B6ZCecIl.js} +2 -2
  32. package/dist/chunks/{ApplicationsListPage-De8jQ1Cm.js.map → ApplicationsListPage-B6ZCecIl.js.map} +1 -1
  33. package/dist/chunks/{ApplicationsPage-DBq7_Sm8.js → ApplicationsPage-BBaiBM--.js} +2 -2
  34. package/dist/chunks/{ApplicationsPage-DBq7_Sm8.js.map → ApplicationsPage-BBaiBM--.js.map} +1 -1
  35. package/dist/chunks/{ApplicationsPage-CiNI-b0R.js → ApplicationsPage-ztPwoAGt.js} +4 -4
  36. package/dist/chunks/{ApplicationsPage-CiNI-b0R.js.map → ApplicationsPage-ztPwoAGt.js.map} +1 -1
  37. package/dist/chunks/{AssignmentRulesPage-DFsO4ZES.js → AssignmentRulesPage-CK4L4rBO.js} +2 -2
  38. package/dist/chunks/{AssignmentRulesPage-DFsO4ZES.js.map → AssignmentRulesPage-CK4L4rBO.js.map} +1 -1
  39. package/dist/chunks/{AssignmentRulesPage-C8rfUsMB.js → AssignmentRulesPage-DFSVFFXr.js} +2 -2
  40. package/dist/chunks/{AssignmentRulesPage-C8rfUsMB.js.map → AssignmentRulesPage-DFSVFFXr.js.map} +1 -1
  41. package/dist/chunks/{AssignmentsPage-78C_EBsw.js → AssignmentsPage-Bp7oQD7Q.js} +2 -2
  42. package/dist/chunks/{AssignmentsPage-78C_EBsw.js.map → AssignmentsPage-Bp7oQD7Q.js.map} +1 -1
  43. package/dist/chunks/{AssignmentsPage-COCikISI.js → AssignmentsPage-JCLpyg94.js} +2 -2
  44. package/dist/chunks/{AssignmentsPage-COCikISI.js.map → AssignmentsPage-JCLpyg94.js.map} +1 -1
  45. package/dist/chunks/{AuthCallbackPage-DqT6ueVi.js → AuthCallbackPage-Bl9xlJ3h.js} +2 -2
  46. package/dist/chunks/{AuthCallbackPage-DqT6ueVi.js.map → AuthCallbackPage-Bl9xlJ3h.js.map} +1 -1
  47. package/dist/chunks/{AuthCallbackPage-BF4bkTnR.js → AuthCallbackPage-CzMHz4jy.js} +2 -2
  48. package/dist/chunks/{AuthCallbackPage-BF4bkTnR.js.map → AuthCallbackPage-CzMHz4jy.js.map} +1 -1
  49. package/dist/chunks/{ConfirmEmailPage-Bh_K5qJn.js → ConfirmEmailPage-D_8T1vqV.js} +2 -2
  50. package/dist/chunks/{ConfirmEmailPage-Bh_K5qJn.js.map → ConfirmEmailPage-D_8T1vqV.js.map} +1 -1
  51. package/dist/chunks/{ConfirmEmailPage-DJy4idrf.js → ConfirmEmailPage-M7mJgXvn.js} +2 -2
  52. package/dist/chunks/{ConfirmEmailPage-DJy4idrf.js.map → ConfirmEmailPage-M7mJgXvn.js.map} +1 -1
  53. package/dist/chunks/{CreateSupportTicketPage-pL7jbG9o.js → CreateSupportTicketPage-BNEGavlu.js} +2 -2
  54. package/dist/chunks/{CreateSupportTicketPage-pL7jbG9o.js.map → CreateSupportTicketPage-BNEGavlu.js.map} +1 -1
  55. package/dist/chunks/{CreateSupportTicketPage-AVTwXbJd.js → CreateSupportTicketPage-C2X2mfds.js} +2 -2
  56. package/dist/chunks/{CreateSupportTicketPage-AVTwXbJd.js.map → CreateSupportTicketPage-C2X2mfds.js.map} +1 -1
  57. package/dist/chunks/{DashboardPage-DdQlTLw0.js → DashboardPage-4oy2YqvT.js} +2 -2
  58. package/dist/chunks/{DashboardPage-DdQlTLw0.js.map → DashboardPage-4oy2YqvT.js.map} +1 -1
  59. package/dist/chunks/{DashboardPage-C55mIiB6.js → DashboardPage-CO-8B8EI.js} +3 -3
  60. package/dist/chunks/{DashboardPage-C55mIiB6.js.map → DashboardPage-CO-8B8EI.js.map} +1 -1
  61. package/dist/chunks/{DashboardPage-CcCnUl7s.js → DashboardPage-CPArUG-S.js} +2 -2
  62. package/dist/chunks/{DashboardPage-CcCnUl7s.js.map → DashboardPage-CPArUG-S.js.map} +1 -1
  63. package/dist/chunks/{DashboardPage-DOitDfGV.js → DashboardPage-D5MRMxEV.js} +3 -3
  64. package/dist/chunks/{DashboardPage-DOitDfGV.js.map → DashboardPage-D5MRMxEV.js.map} +1 -1
  65. package/dist/chunks/{EscalationConfigPage-DNnZftCH.js → EscalationConfigPage-CwdnfJbJ.js} +2 -2
  66. package/dist/chunks/{EscalationConfigPage-DNnZftCH.js.map → EscalationConfigPage-CwdnfJbJ.js.map} +1 -1
  67. package/dist/chunks/{EscalationConfigPage-DRr55328.js → EscalationConfigPage-DnjLFXnL.js} +2 -2
  68. package/dist/chunks/{EscalationConfigPage-DRr55328.js.map → EscalationConfigPage-DnjLFXnL.js.map} +1 -1
  69. package/dist/chunks/{ForceChangePasswordPage-1SCOPIqK.js → ForceChangePasswordPage-ZEIfyqwE.js} +2 -2
  70. package/dist/chunks/{ForceChangePasswordPage-1SCOPIqK.js.map → ForceChangePasswordPage-ZEIfyqwE.js.map} +1 -1
  71. package/dist/chunks/{ForceChangePasswordPage-DBeG_HRO.js → ForceChangePasswordPage-sh-3h_H9.js} +2 -2
  72. package/dist/chunks/{ForceChangePasswordPage-DBeG_HRO.js.map → ForceChangePasswordPage-sh-3h_H9.js.map} +1 -1
  73. package/dist/chunks/{ForgotPasswordPage-Dlb6wKfC.js → ForgotPasswordPage-B4M6-xeM.js} +2 -2
  74. package/dist/chunks/{ForgotPasswordPage-Dlb6wKfC.js.map → ForgotPasswordPage-B4M6-xeM.js.map} +1 -1
  75. package/dist/chunks/{ForgotPasswordPage-DffYfXva.js → ForgotPasswordPage-MIu-U7p0.js} +2 -2
  76. package/dist/chunks/{ForgotPasswordPage-DffYfXva.js.map → ForgotPasswordPage-MIu-U7p0.js.map} +1 -1
  77. package/dist/chunks/{GroupDetailPage-C9nRbeHI.js → GroupDetailPage-4XK3Bs_r.js} +5 -5
  78. package/dist/chunks/{GroupDetailPage-C9nRbeHI.js.map → GroupDetailPage-4XK3Bs_r.js.map} +1 -1
  79. package/dist/chunks/{GroupDetailPage-CPPUWzXf.js → GroupDetailPage-C-kvtd2T.js} +2 -2
  80. package/dist/chunks/{GroupDetailPage-CPPUWzXf.js.map → GroupDetailPage-C-kvtd2T.js.map} +1 -1
  81. package/dist/chunks/{MyAccessRequestsPage-BAX0xwJX.js → MyAccessRequestsPage-CP41FzHi.js} +2 -2
  82. package/dist/chunks/{MyAccessRequestsPage-BAX0xwJX.js.map → MyAccessRequestsPage-CP41FzHi.js.map} +1 -1
  83. package/dist/chunks/{MyAccessRequestsPage-BMY1V631.js → MyAccessRequestsPage-DzrXTrVi.js} +2 -2
  84. package/dist/chunks/{MyAccessRequestsPage-BMY1V631.js.map → MyAccessRequestsPage-DzrXTrVi.js.map} +1 -1
  85. package/dist/chunks/{MyTenantsPage-Bbn4HxN2.js → MyTenantsPage-CZRkMbh8.js} +2 -2
  86. package/dist/chunks/{MyTenantsPage-Bbn4HxN2.js.map → MyTenantsPage-CZRkMbh8.js.map} +1 -1
  87. package/dist/chunks/{MyTenantsPage-BHtp67SD.js → MyTenantsPage-V_SwYio2.js} +3 -3
  88. package/dist/chunks/{MyTenantsPage-BHtp67SD.js.map → MyTenantsPage-V_SwYio2.js.map} +1 -1
  89. package/dist/chunks/{MyTicketsPage-BvZeiTXu.js → MyTicketsPage-DOUhaLal.js} +2 -2
  90. package/dist/chunks/{MyTicketsPage-BvZeiTXu.js.map → MyTicketsPage-DOUhaLal.js.map} +1 -1
  91. package/dist/chunks/{MyTicketsPage-D9IGVofj.js → MyTicketsPage-DnvAIeyr.js} +2 -2
  92. package/dist/chunks/{MyTicketsPage-D9IGVofj.js.map → MyTicketsPage-DnvAIeyr.js.map} +1 -1
  93. package/dist/chunks/{NavigationAppsPage-DiPBCsAF.js → NavigationAppsPage-DXvpLsbt.js} +2 -2
  94. package/dist/chunks/{NavigationAppsPage-DiPBCsAF.js.map → NavigationAppsPage-DXvpLsbt.js.map} +1 -1
  95. package/dist/chunks/{NavigationAppsPage-ChtMK1yt.js → NavigationAppsPage-DfTa4jCG.js} +2 -2
  96. package/dist/chunks/{NavigationAppsPage-ChtMK1yt.js.map → NavigationAppsPage-DfTa4jCG.js.map} +1 -1
  97. package/dist/chunks/{NotificationsPage-BxCiGzHk.js → NotificationsPage-D76MdAs-.js} +2 -2
  98. package/dist/chunks/{NotificationsPage-BxCiGzHk.js.map → NotificationsPage-D76MdAs-.js.map} +1 -1
  99. package/dist/chunks/{NotificationsPage-BCnL9oPb.js → NotificationsPage-I1yCk7tk.js} +2 -2
  100. package/dist/chunks/{NotificationsPage-BCnL9oPb.js.map → NotificationsPage-I1yCk7tk.js.map} +1 -1
  101. package/dist/chunks/{OnboardingWizardPage-CV_cxq7k.js → OnboardingWizardPage-BRUzcl1A.js} +2 -2
  102. package/dist/chunks/{OnboardingWizardPage-CV_cxq7k.js.map → OnboardingWizardPage-BRUzcl1A.js.map} +1 -1
  103. package/dist/chunks/{OnboardingWizardPage-Du-tQ2ag.js → OnboardingWizardPage-DtWUPCh3.js} +2 -2
  104. package/dist/chunks/{OnboardingWizardPage-Du-tQ2ag.js.map → OnboardingWizardPage-DtWUPCh3.js.map} +1 -1
  105. package/dist/chunks/{PermissionDetailPage-C1iuWv0G.js → PermissionDetailPage-CUNKbl7t.js} +2 -2
  106. package/dist/chunks/{PermissionDetailPage-C1iuWv0G.js.map → PermissionDetailPage-CUNKbl7t.js.map} +1 -1
  107. package/dist/chunks/{PermissionDetailPage-Ds4Jt1os.js → PermissionDetailPage-DJJGbXoX.js} +2 -2
  108. package/dist/chunks/{PermissionDetailPage-Ds4Jt1os.js.map → PermissionDetailPage-DJJGbXoX.js.map} +1 -1
  109. package/dist/chunks/{PermissionsPage-BGI2nxCn.js → PermissionsPage-B8wmawPV.js} +2 -2
  110. package/dist/chunks/{PermissionsPage-BGI2nxCn.js.map → PermissionsPage-B8wmawPV.js.map} +1 -1
  111. package/dist/chunks/{PermissionsPage-sauv7ct1.js → PermissionsPage-Dbjcctuh.js} +2 -2
  112. package/dist/chunks/{PermissionsPage-sauv7ct1.js.map → PermissionsPage-Dbjcctuh.js.map} +1 -1
  113. package/dist/chunks/{PortalDashboardPage-CQWEcghD.js → PortalDashboardPage-BeNfBZmb.js} +2 -2
  114. package/dist/chunks/{PortalDashboardPage-CQWEcghD.js.map → PortalDashboardPage-BeNfBZmb.js.map} +1 -1
  115. package/dist/chunks/{PortalDashboardPage-2kCbJw9w.js → PortalDashboardPage-zii0ll57.js} +2 -2
  116. package/dist/chunks/{PortalDashboardPage-2kCbJw9w.js.map → PortalDashboardPage-zii0ll57.js.map} +1 -1
  117. package/dist/chunks/{PreferencesPage-Bu4gaDRb.js → PreferencesPage-BCpuIGzv.js} +2 -2
  118. package/dist/chunks/{PreferencesPage-Bu4gaDRb.js.map → PreferencesPage-BCpuIGzv.js.map} +1 -1
  119. package/dist/chunks/{PreferencesPage-Dbg0bEYD.js → PreferencesPage-BmvrBaAD.js} +2 -2
  120. package/dist/chunks/{PreferencesPage-Dbg0bEYD.js.map → PreferencesPage-BmvrBaAD.js.map} +1 -1
  121. package/dist/chunks/{ProfilePage-C5QS7tsh.js → ProfilePage-eowQd59_.js} +2 -2
  122. package/dist/chunks/{ProfilePage-C5QS7tsh.js.map → ProfilePage-eowQd59_.js.map} +1 -1
  123. package/dist/chunks/{ProfilePage-DfiBhOUt.js → ProfilePage-mf5wI0-n.js} +2 -2
  124. package/dist/chunks/{ProfilePage-DfiBhOUt.js.map → ProfilePage-mf5wI0-n.js.map} +1 -1
  125. package/dist/chunks/{ReferencesManagementPage-Bs0mapj8.js → ReferencesManagementPage-8UPgkVE8.js} +3 -3
  126. package/dist/chunks/{ReferencesManagementPage-Bs0mapj8.js.map → ReferencesManagementPage-8UPgkVE8.js.map} +1 -1
  127. package/dist/chunks/{ReferencesManagementPage-C0RgHbJb.js → ReferencesManagementPage-CLsaUNqA.js} +2 -2
  128. package/dist/chunks/{ReferencesManagementPage-C0RgHbJb.js.map → ReferencesManagementPage-CLsaUNqA.js.map} +1 -1
  129. package/dist/chunks/{RegisterPage-DS1chV_A.js → RegisterPage-57X-ILDb.js} +2 -2
  130. package/dist/chunks/{RegisterPage-DS1chV_A.js.map → RegisterPage-57X-ILDb.js.map} +1 -1
  131. package/dist/chunks/{RegisterPage-DoeIiJt0.js → RegisterPage-CNyHSbqs.js} +2 -2
  132. package/dist/chunks/{RegisterPage-DoeIiJt0.js.map → RegisterPage-CNyHSbqs.js.map} +1 -1
  133. package/dist/chunks/{ResetPasswordPage-3KEk3zj5.js → ResetPasswordPage-CyV8l-Zo.js} +2 -2
  134. package/dist/chunks/{ResetPasswordPage-3KEk3zj5.js.map → ResetPasswordPage-CyV8l-Zo.js.map} +1 -1
  135. package/dist/chunks/{ResetPasswordPage-C_VQSFB5.js → ResetPasswordPage-JW8-mh_k.js} +2 -2
  136. package/dist/chunks/{ResetPasswordPage-C_VQSFB5.js.map → ResetPasswordPage-JW8-mh_k.js.map} +1 -1
  137. package/dist/chunks/{ResolutionModal-S6URD--N.js → ResolutionModal-CjwE73NX.js} +2 -2
  138. package/dist/chunks/{ResolutionModal-S6URD--N.js.map → ResolutionModal-CjwE73NX.js.map} +1 -1
  139. package/dist/chunks/{ResolutionModal-BzI1x79r.js → ResolutionModal-wddG59kg.js} +2 -2
  140. package/dist/chunks/{ResolutionModal-BzI1x79r.js.map → ResolutionModal-wddG59kg.js.map} +1 -1
  141. package/dist/chunks/{RoleDetailPage-SXK9cq_3.js → RoleDetailPage-CrioVHFI.js} +3 -3
  142. package/dist/chunks/{RoleDetailPage-SXK9cq_3.js.map → RoleDetailPage-CrioVHFI.js.map} +1 -1
  143. package/dist/chunks/{RoleDetailPage-DvEEWPKr.js → RoleDetailPage-TUOGR1ow.js} +2 -2
  144. package/dist/chunks/{RoleDetailPage-DvEEWPKr.js.map → RoleDetailPage-TUOGR1ow.js.map} +1 -1
  145. package/dist/chunks/{RolesPage-B75lCugt.js → RolesPage-CAcols3D.js} +2 -2
  146. package/dist/chunks/{RolesPage-B75lCugt.js.map → RolesPage-CAcols3D.js.map} +1 -1
  147. package/dist/chunks/{RolesPage-C5gYJxAl.js → RolesPage-sJBWaNff.js} +2 -2
  148. package/dist/chunks/{RolesPage-C5gYJxAl.js.map → RolesPage-sJBWaNff.js.map} +1 -1
  149. package/dist/chunks/{SlaConfigPage-BqXHATb6.js → SlaConfigPage-BPGRloOS.js} +2 -2
  150. package/dist/chunks/{SlaConfigPage-BqXHATb6.js.map → SlaConfigPage-BPGRloOS.js.map} +1 -1
  151. package/dist/chunks/{SlaConfigPage-DZ4P1FFW.js → SlaConfigPage-D5TRn7Ir.js} +2 -2
  152. package/dist/chunks/{SlaConfigPage-DZ4P1FFW.js.map → SlaConfigPage-D5TRn7Ir.js.map} +1 -1
  153. package/dist/chunks/{SupportPermissionsPage-B4xy_pCQ.js → SupportPermissionsPage-Dc2bWTzG.js} +2 -2
  154. package/dist/chunks/{SupportPermissionsPage-B4xy_pCQ.js.map → SupportPermissionsPage-Dc2bWTzG.js.map} +1 -1
  155. package/dist/chunks/{SupportPermissionsPage-DW7KJjYK.js → SupportPermissionsPage-UXmYLrIq.js} +2 -2
  156. package/dist/chunks/{SupportPermissionsPage-DW7KJjYK.js.map → SupportPermissionsPage-UXmYLrIq.js.map} +1 -1
  157. package/dist/chunks/{TemplatesPage-DZa0PQTE.js → TemplatesPage-dmPlqqiD.js} +2 -2
  158. package/dist/chunks/{TemplatesPage-DZa0PQTE.js.map → TemplatesPage-dmPlqqiD.js.map} +1 -1
  159. package/dist/chunks/{TemplatesPage-m5-sLJ7F.js → TemplatesPage-nTY85sNA.js} +2 -2
  160. package/dist/chunks/{TemplatesPage-m5-sLJ7F.js.map → TemplatesPage-nTY85sNA.js.map} +1 -1
  161. package/dist/chunks/{TenantCard-BJQi7Oew.js → TenantCard-BUXfstRZ.js} +2 -2
  162. package/dist/chunks/{TenantCard-BJQi7Oew.js.map → TenantCard-BUXfstRZ.js.map} +1 -1
  163. package/dist/chunks/{TenantCard-CqfifMrM.js → TenantCard-BhT-31ls.js} +2 -2
  164. package/dist/chunks/{TenantCard-CqfifMrM.js.map → TenantCard-BhT-31ls.js.map} +1 -1
  165. package/dist/chunks/{TenantScopeSelector-CdiYJvuH.js → TenantScopeSelector-3_mzBLNI.js} +2 -2
  166. package/dist/chunks/{TenantScopeSelector-CdiYJvuH.js.map → TenantScopeSelector-3_mzBLNI.js.map} +1 -1
  167. package/dist/chunks/{TenantScopeSelector-Cl5DD318.js → TenantScopeSelector-B-SRDR2R.js} +2 -2
  168. package/dist/chunks/{TenantScopeSelector-Cl5DD318.js.map → TenantScopeSelector-B-SRDR2R.js.map} +1 -1
  169. package/dist/chunks/{TicketDetailPage-BOC9rHu3.js → TicketDetailPage-B4cR3rOC.js} +2 -2
  170. package/dist/chunks/{TicketDetailPage-BOC9rHu3.js.map → TicketDetailPage-B4cR3rOC.js.map} +1 -1
  171. package/dist/chunks/{TicketDetailPage-C1UuMxD8.js → TicketDetailPage-xN3wPnFL.js} +2 -2
  172. package/dist/chunks/{TicketDetailPage-C1UuMxD8.js.map → TicketDetailPage-xN3wPnFL.js.map} +1 -1
  173. package/dist/chunks/{TicketsPage-BCgHZA-m.js → TicketsPage-CkHgXSxU.js} +2 -2
  174. package/dist/chunks/{TicketsPage-BCgHZA-m.js.map → TicketsPage-CkHgXSxU.js.map} +1 -1
  175. package/dist/chunks/{TicketsPage-BjaN4Baq.js → TicketsPage-Dwi2xpMI.js} +2 -2
  176. package/dist/chunks/{TicketsPage-BjaN4Baq.js.map → TicketsPage-Dwi2xpMI.js.map} +1 -1
  177. package/dist/chunks/{UserCreateTicketPage-ChQL1mVY.js → UserCreateTicketPage-D2a3EOey.js} +3 -3
  178. package/dist/chunks/UserCreateTicketPage-D2a3EOey.js.map +1 -0
  179. package/dist/chunks/{UserCreateTicketPage-DkjsHeV7.js → UserCreateTicketPage-bcbSLglE.js} +48 -48
  180. package/dist/chunks/UserCreateTicketPage-bcbSLglE.js.map +1 -0
  181. package/dist/chunks/{UserDashboardPage-BMYrtF3o.js → UserDashboardPage-DwnDRNoW.js} +2 -2
  182. package/dist/chunks/{UserDashboardPage-BMYrtF3o.js.map → UserDashboardPage-DwnDRNoW.js.map} +1 -1
  183. package/dist/chunks/{UserDashboardPage-81-3GJAQ.js → UserDashboardPage-ZMsx8LWw.js} +2 -2
  184. package/dist/chunks/{UserDashboardPage-81-3GJAQ.js.map → UserDashboardPage-ZMsx8LWw.js.map} +1 -1
  185. package/dist/chunks/{UserDetailPage-BMW8jAWG.js → UserDetailPage-BRFowOFL.js} +2 -2
  186. package/dist/chunks/{UserDetailPage-BMW8jAWG.js.map → UserDetailPage-BRFowOFL.js.map} +1 -1
  187. package/dist/chunks/{UserDetailPage-D6oCH2eS.js → UserDetailPage-CZyV-zsg.js} +5 -5
  188. package/dist/chunks/{UserDetailPage-D6oCH2eS.js.map → UserDetailPage-CZyV-zsg.js.map} +1 -1
  189. package/dist/chunks/{UserTicketDetailPage-ZH2BDWBt.js → UserTicketDetailPage-BstGk_BP.js} +2 -2
  190. package/dist/chunks/{UserTicketDetailPage-ZH2BDWBt.js.map → UserTicketDetailPage-BstGk_BP.js.map} +1 -1
  191. package/dist/chunks/{UserTicketDetailPage-Z_myXXJ0.js → UserTicketDetailPage-DzB_pELt.js} +2 -2
  192. package/dist/chunks/{UserTicketDetailPage-Z_myXXJ0.js.map → UserTicketDetailPage-DzB_pELt.js.map} +1 -1
  193. package/dist/chunks/{UsersGroupsPage-B8Ka6uRa.js → UsersGroupsPage-BygTv_kK.js} +3 -3
  194. package/dist/chunks/{UsersGroupsPage-B8Ka6uRa.js.map → UsersGroupsPage-BygTv_kK.js.map} +1 -1
  195. package/dist/chunks/{UsersGroupsPage-xJmGib8b.js → UsersGroupsPage-DTmhzttW.js} +2 -2
  196. package/dist/chunks/{UsersGroupsPage-xJmGib8b.js.map → UsersGroupsPage-DTmhzttW.js.map} +1 -1
  197. package/dist/chunks/{UsersPage-CQ38akZ_.js → UsersPage-DcwLyMAX.js} +2 -2
  198. package/dist/chunks/{UsersPage-CQ38akZ_.js.map → UsersPage-DcwLyMAX.js.map} +1 -1
  199. package/dist/chunks/{UsersPage-Bd2-vl39.js → UsersPage-TIqSHgHj.js} +2 -2
  200. package/dist/chunks/{UsersPage-Bd2-vl39.js.map → UsersPage-TIqSHgHj.js.map} +1 -1
  201. package/dist/chunks/{accessRequestsApi-DguOx0q0.js → accessRequestsApi-3FjMFbpa.js} +2 -2
  202. package/dist/chunks/{accessRequestsApi-DguOx0q0.js.map → accessRequestsApi-3FjMFbpa.js.map} +1 -1
  203. package/dist/chunks/{accessRequestsApi-COtWo9kC.js → accessRequestsApi-B6dsJzvH.js} +2 -2
  204. package/dist/chunks/{accessRequestsApi-COtWo9kC.js.map → accessRequestsApi-B6dsJzvH.js.map} +1 -1
  205. package/dist/chunks/{aiApi-CITiWGYX.js → aiApi-9G4wG_mT.js} +2 -2
  206. package/dist/chunks/{aiApi-CITiWGYX.js.map → aiApi-9G4wG_mT.js.map} +1 -1
  207. package/dist/chunks/{aiApi-BmZsud6O.js → aiApi-DXOdsoxr.js} +2 -2
  208. package/dist/chunks/{aiApi-BmZsud6O.js.map → aiApi-DXOdsoxr.js.map} +1 -1
  209. package/dist/chunks/{applicationAnalyticsApi-BYoEJzSN.js → applicationAnalyticsApi-D0DEp9Y-.js} +2 -2
  210. package/dist/chunks/{applicationAnalyticsApi-BYoEJzSN.js.map → applicationAnalyticsApi-D0DEp9Y-.js.map} +1 -1
  211. package/dist/chunks/{applicationAnalyticsApi-D62lc6z4.js → applicationAnalyticsApi-DhOd6idI.js} +2 -2
  212. package/dist/chunks/{applicationAnalyticsApi-D62lc6z4.js.map → applicationAnalyticsApi-DhOd6idI.js.map} +1 -1
  213. package/dist/chunks/auth-Ca2Rn6on.js +2 -0
  214. package/dist/chunks/auth-Ca2Rn6on.js.map +1 -0
  215. package/dist/chunks/auth-ClNTDOqm.js +18 -0
  216. package/dist/chunks/auth-ClNTDOqm.js.map +1 -0
  217. package/dist/chunks/auth-DECnMZjF.js +18 -0
  218. package/dist/chunks/auth-DECnMZjF.js.map +1 -0
  219. package/dist/chunks/auth-DPvxdqy4.js +18 -0
  220. package/dist/chunks/auth-DPvxdqy4.js.map +1 -0
  221. package/dist/chunks/auth-HzvnTaOm.js +2 -0
  222. package/dist/chunks/auth-HzvnTaOm.js.map +1 -0
  223. package/dist/chunks/auth-M6aNTKCH.js +2 -0
  224. package/dist/chunks/auth-M6aNTKCH.js.map +1 -0
  225. package/dist/chunks/auth-UHnAu6_e.js +2 -0
  226. package/dist/chunks/auth-UHnAu6_e.js.map +1 -0
  227. package/dist/chunks/auth-YrujJY7m.js +18 -0
  228. package/dist/chunks/auth-YrujJY7m.js.map +1 -0
  229. package/dist/chunks/{groupsApi-3CR-_g5b.js → groupsApi-Db8G2lLs.js} +2 -2
  230. package/dist/chunks/{groupsApi-3CR-_g5b.js.map → groupsApi-Db8G2lLs.js.map} +1 -1
  231. package/dist/chunks/{groupsApi-BUyBgf_N.js → groupsApi-lbxNsHFv.js} +2 -2
  232. package/dist/chunks/{groupsApi-BUyBgf_N.js.map → groupsApi-lbxNsHFv.js.map} +1 -1
  233. package/dist/chunks/{index-IJR_91Yt.js → index-BI2dc1FS.js} +2 -2
  234. package/dist/chunks/{index-IJR_91Yt.js.map → index-BI2dc1FS.js.map} +1 -1
  235. package/dist/chunks/{index-DIQ6Jmmq.js → index-Bn8HzILk.js} +4 -4
  236. package/dist/chunks/{index-DIQ6Jmmq.js.map → index-Bn8HzILk.js.map} +1 -1
  237. package/dist/chunks/{index-DA5VyW0k.js → index-CN2WRyg1.js} +2249 -2264
  238. package/dist/chunks/index-CN2WRyg1.js.map +1 -0
  239. package/dist/chunks/{index-Br2wsGE8.js → index-CTGSmYvs.js} +2 -2
  240. package/dist/chunks/{index-Br2wsGE8.js.map → index-CTGSmYvs.js.map} +1 -1
  241. package/dist/chunks/index-CUICSveU.js +2 -0
  242. package/dist/chunks/index-CUICSveU.js.map +1 -0
  243. package/dist/chunks/{index-S-X8qFYW.js → index-CgtbaFf5.js} +2 -2
  244. package/dist/chunks/{index-S-X8qFYW.js.map → index-CgtbaFf5.js.map} +1 -1
  245. package/dist/chunks/{index-_g82N2nb.js → index-D0HS542b.js} +2 -2
  246. package/dist/chunks/{index-_g82N2nb.js.map → index-D0HS542b.js.map} +1 -1
  247. package/dist/chunks/{index-BIqcvvbh.js → index-DEtq-xUL.js} +9 -8
  248. package/dist/chunks/index-DEtq-xUL.js.map +1 -0
  249. package/dist/chunks/{index-BOKR3bw6.js → index-DF93KQFR.js} +2 -2
  250. package/dist/chunks/{index-BOKR3bw6.js.map → index-DF93KQFR.js.map} +1 -1
  251. package/dist/chunks/{index-CxgEV-rT.js → index-DLekpNSE.js} +2 -2
  252. package/dist/chunks/{index-CxgEV-rT.js.map → index-DLekpNSE.js.map} +1 -1
  253. package/dist/chunks/{index-DEOBhXS_.js → index-DUS-tunb.js} +2 -2
  254. package/dist/chunks/{index-DEOBhXS_.js.map → index-DUS-tunb.js.map} +1 -1
  255. package/dist/chunks/{index-BMsjMCv9.js → index-DjC1u2hI.js} +3 -3
  256. package/dist/chunks/{index-BMsjMCv9.js.map → index-DjC1u2hI.js.map} +1 -1
  257. package/dist/chunks/{index-BxHVPJ-j.js → index-DqbVFB1H.js} +2 -2
  258. package/dist/chunks/{index-BxHVPJ-j.js.map → index-DqbVFB1H.js.map} +1 -1
  259. package/dist/chunks/{index-Djy4eIbB.js → index-DwqLhQ8S.js} +2 -2
  260. package/dist/chunks/{index-Djy4eIbB.js.map → index-DwqLhQ8S.js.map} +1 -1
  261. package/dist/chunks/{index-C1w97Ejz.js → index-HsAOBno4.js} +2 -2
  262. package/dist/chunks/{index-C1w97Ejz.js.map → index-HsAOBno4.js.map} +1 -1
  263. package/dist/chunks/{index-Czk12A3G.js → index-TiWOcC0g.js} +2 -2
  264. package/dist/chunks/{index-Czk12A3G.js.map → index-TiWOcC0g.js.map} +1 -1
  265. package/dist/chunks/{index-vXiLh35n.js → index-cAikSVW0.js} +13 -13
  266. package/dist/chunks/index-cAikSVW0.js.map +1 -0
  267. package/dist/chunks/{index-CNxx56kE.js → index-xhRXN1Jq.js} +2 -2
  268. package/dist/chunks/{index-CNxx56kE.js.map → index-xhRXN1Jq.js.map} +1 -1
  269. package/dist/chunks/{tenantIconMap-COKA97Ug.js → tenantIconMap-CHeS7oLt.js} +2 -2
  270. package/dist/chunks/{tenantIconMap-COKA97Ug.js.map → tenantIconMap-CHeS7oLt.js.map} +1 -1
  271. package/dist/chunks/{tenantIconMap-BuSQUUyZ.js → tenantIconMap-__FKj6CN.js} +2 -2
  272. package/dist/chunks/{tenantIconMap-BuSQUUyZ.js.map → tenantIconMap-__FKj6CN.js.map} +1 -1
  273. package/dist/chunks/{ticketingApi-DbREwHez.js → ticketingApi-Cj239hYB.js} +2 -2
  274. package/dist/chunks/{ticketingApi-DbREwHez.js.map → ticketingApi-Cj239hYB.js.map} +1 -1
  275. package/dist/chunks/{ticketingApi-C6EbupqP.js → ticketingApi-DF4RwD_6.js} +2 -2
  276. package/dist/chunks/{ticketingApi-C6EbupqP.js.map → ticketingApi-DF4RwD_6.js.map} +1 -1
  277. package/dist/chunks/{useAccessRequests-vucIb3_w.js → useAccessRequests-CFam8zFR.js} +3 -3
  278. package/dist/chunks/{useAccessRequests-vucIb3_w.js.map → useAccessRequests-CFam8zFR.js.map} +1 -1
  279. package/dist/chunks/{useAccessRequests-C0dY6y-4.js → useAccessRequests-CViOUwyF.js} +2 -2
  280. package/dist/chunks/{useAccessRequests-C0dY6y-4.js.map → useAccessRequests-CViOUwyF.js.map} +1 -1
  281. package/dist/chunks/{useUserAccessRequests-BBcw1Rk9.js → useUserAccessRequests-B-Cs6NX1.js} +2 -2
  282. package/dist/chunks/{useUserAccessRequests-BBcw1Rk9.js.map → useUserAccessRequests-B-Cs6NX1.js.map} +1 -1
  283. package/dist/chunks/{useUserAccessRequests-Cj0nkesW.js → useUserAccessRequests-CslSQeBJ.js} +2 -2
  284. package/dist/chunks/{useUserAccessRequests-Cj0nkesW.js.map → useUserAccessRequests-CslSQeBJ.js.map} +1 -1
  285. package/dist/contexts/AuthContext.d.ts.map +1 -1
  286. package/dist/pages/LoginPage.d.ts.map +1 -1
  287. package/dist/pages/platform/administration/tenants/TenantDetailPage.d.ts.map +1 -1
  288. package/dist/pages/platform/support/UserCreateTicketPage.d.ts.map +1 -1
  289. package/dist/services/api/apiClient.d.ts.map +1 -1
  290. package/dist/services/support/ticketDraftService.d.ts.map +1 -1
  291. package/dist/smartstack.cjs +1 -1
  292. package/dist/smartstack.js +6 -6
  293. package/dist/utils/permissions.generated.d.ts +288 -0
  294. package/dist/utils/permissions.generated.d.ts.map +1 -0
  295. package/dist/utils/uuid.d.ts +6 -0
  296. package/dist/utils/uuid.d.ts.map +1 -0
  297. package/package.json +1 -1
  298. package/dist/chunks/UserCreateTicketPage-ChQL1mVY.js.map +0 -1
  299. package/dist/chunks/UserCreateTicketPage-DkjsHeV7.js.map +0 -1
  300. package/dist/chunks/auth-B-hELPDB.js +0 -2
  301. package/dist/chunks/auth-B-hELPDB.js.map +0 -1
  302. package/dist/chunks/auth-BYaMuq7D.js +0 -16
  303. package/dist/chunks/auth-BYaMuq7D.js.map +0 -1
  304. package/dist/chunks/auth-C5zpZ9k7.js +0 -2
  305. package/dist/chunks/auth-C5zpZ9k7.js.map +0 -1
  306. package/dist/chunks/auth-CDpRMVv1.js +0 -16
  307. package/dist/chunks/auth-CDpRMVv1.js.map +0 -1
  308. package/dist/chunks/auth-CyPkCta2.js +0 -2
  309. package/dist/chunks/auth-CyPkCta2.js.map +0 -1
  310. package/dist/chunks/auth-DL47kvnl.js +0 -2
  311. package/dist/chunks/auth-DL47kvnl.js.map +0 -1
  312. package/dist/chunks/auth-Diiv90i1.js +0 -16
  313. package/dist/chunks/auth-Diiv90i1.js.map +0 -1
  314. package/dist/chunks/auth-rog9MvUr.js +0 -16
  315. package/dist/chunks/auth-rog9MvUr.js.map +0 -1
  316. package/dist/chunks/index-BIqcvvbh.js.map +0 -1
  317. package/dist/chunks/index-DA5VyW0k.js.map +0 -1
  318. package/dist/chunks/index-Dht6EQW1.js +0 -2
  319. package/dist/chunks/index-Dht6EQW1.js.map +0 -1
  320. package/dist/chunks/index-vXiLh35n.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),F=require("react-i18next"),S=require("./index-vXiLh35n.js"),r=require("lucide-react"),j=require("./ResolutionModal-S6URD--N.js"),H=require("react-router-dom");function Z({resourceType:t,icon:h,status:N,lastFullSyncAt:u,lastDeltaSyncAt:v,totalItemsSynced:w,pendingConflicts:y,lastError:g,syncing:f,canSync:a,onSync:d,formatDate:m,t:n}){const x=(()=>{switch(N){case"Success":return{icon:r.CheckCircle,color:"text-[var(--success-text)]",bg:"bg-[var(--success-bg)]",label:n("common:success")};case"Failed":return{icon:r.XCircle,color:"text-[var(--error-text)]",bg:"bg-[var(--error-bg)]",label:n("common:failed")};case"Running":return{icon:r.Loader2,color:"text-[var(--color-accent-500)]",bg:"bg-[var(--color-accent-100)]",label:n("common:running"),animate:!0};default:return{icon:r.Clock,color:"text-[var(--text-tertiary)]",bg:"bg-[var(--bg-tertiary)]",label:n("common:pending")}}})(),c=x.icon;return e.jsxs("div",{className:"h-full flex flex-col rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-card)] overflow-hidden shadow-sm hover:shadow-md transition-shadow",children:[e.jsx("div",{className:"px-4 py-3 bg-gradient-to-r from-[var(--color-accent-500)]/10 to-[var(--color-accent-600)]/5 border-b border-[var(--border-color)]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-[var(--color-accent-500)]/20",children:e.jsx(h,{className:"w-5 h-5 text-[var(--color-accent-600)]"})}),e.jsx("h3",{className:"font-semibold text-[var(--text-primary)]",children:n(`entra:resourceTypes.${t.toLowerCase()}`)})]}),e.jsxs("div",{className:`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium ${x.bg} ${x.color}`,children:[e.jsx(c,{className:`w-3.5 h-3.5 ${x.animate?"animate-spin":""}`}),x.label]})]})}),e.jsxs("div",{className:"flex-1 flex flex-col p-4",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3 mb-4",children:[e.jsxs("div",{className:"text-center p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("div",{className:"flex items-center justify-center gap-1 mb-1",children:e.jsx(r.Database,{className:"w-3.5 h-3.5 text-[var(--text-tertiary)]"})}),e.jsx("p",{className:"text-xl font-bold text-[var(--text-primary)]",children:w.toLocaleString()}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:n("entra:dashboard.itemsSynced")})]}),e.jsxs("div",{className:"text-center p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("div",{className:"flex items-center justify-center gap-1 mb-1",children:e.jsx(r.Calendar,{className:"w-3.5 h-3.5 text-[var(--text-tertiary)]"})}),e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] truncate",title:m(u),children:u?new Date(u).toLocaleDateString("fr-FR",{day:"numeric",month:"short"}):"-"}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:n("entra:dashboard.lastFullSync")})]}),e.jsxs("div",{className:"text-center p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("div",{className:"flex items-center justify-center gap-1 mb-1",children:e.jsx(r.RefreshCw,{className:"w-3.5 h-3.5 text-[var(--text-tertiary)]"})}),e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] truncate",title:m(v),children:v?new Date(v).toLocaleDateString("fr-FR",{day:"numeric",month:"short"}):"-"}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:n("entra:dashboard.lastDeltaSync")})]})]}),y>0&&e.jsxs("div",{className:"flex items-center gap-2 p-3 mb-4 rounded-lg bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx(r.AlertCircle,{className:"w-4 h-4 text-[var(--warning-text)] flex-shrink-0"}),e.jsxs("span",{className:"text-sm text-[var(--warning-text)] font-medium",children:[y," ",n("entra:dashboard.pendingConflicts")]})]}),g&&e.jsx("div",{className:"p-3 mb-4 rounded-lg bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsx("p",{className:"text-xs text-[var(--error-text)] line-clamp-2",children:g})}),e.jsx(S.Tooltip,{content:a?void 0:n("entra:dashboard.noSyncPermission"),position:"top",variant:"error",disabled:a,children:e.jsxs("button",{onClick:d,disabled:f||!a,className:"mt-auto w-full inline-flex items-center justify-center gap-2 px-4 py-2.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors shadow-sm",children:[f?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.RefreshCw,{className:"w-4 h-4"}),n("entra:dashboard.syncNow")]})})]})]})}function ee(){const{t}=F.useTranslation(["entra","common"]),{hasPermission:h}=S.useAuth(),[N,u]=l.useState(!0),[v,w]=l.useState(!1),[y,g]=l.useState([]),[f,a]=l.useState(null),[d,m]=l.useState(null),[n,p]=l.useState(null),x=h("administration.entra.execute"),c=l.useCallback(async()=>{try{a(null);const o=await j.entraApi.dashboard.getSyncStatus();g(Array.isArray(o)?o:[])}catch(o){console.error("Failed to load Entra dashboard data:",o),g([]);const b=o;b.response?.status===401?a(t("common:errors.sessionExpired")):b.response?.status===403?a(t("common:errors.noPermission")):a(t("entra:dashboard.loadError"))}finally{u(!1),w(!1)}},[t]);l.useEffect(()=>{c()},[c]);const C=()=>{w(!0),c()},A=async o=>{m(o),p(null);try{let b;switch(o){case"users":b=await j.entraApi.sync.syncUsers();break;case"groups":b=await j.entraApi.sync.syncGroups();break;case"memberships":b=await j.entraApi.sync.syncMemberships();break;default:b=await j.entraApi.sync.syncAll()}p(b),await c()}catch(b){console.error("Sync failed:",b);const T=b;T.response?.status===403?a(t("entra:dashboard.syncPermissionDenied")):T.response?.status===401?a(t("common:errors.sessionExpired")):a(t("entra:dashboard.syncError"))}finally{m(null)}},I=async()=>{if(confirm(t("entra:dashboard.forceFullSyncConfirm"))){m("force");try{await j.entraApi.sync.forceFullSync(),await c()}catch(o){console.error("Force full sync failed:",o);const b=o;b.response?.status===403?a(t("entra:dashboard.syncPermissionDenied")):b.response?.status===401?a(t("common:errors.sessionExpired")):a(t("entra:dashboard.syncError"))}finally{m(null)}}},k=o=>o?new Intl.DateTimeFormat("fr-FR",{dateStyle:"medium",timeStyle:"short"}).format(new Date(o)):t("common:never"),D=o=>{switch(o){case"Users":return r.Users;case"Groups":return r.Building2;case"Memberships":return r.Link2;default:return r.Cloud}};if(N)return e.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})});const E=y.reduce((o,b)=>o+b.pendingConflicts,0);return e.jsxs("div",{className:"space-y-6",children:[e.jsx(S.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("entra.title","Microsoft Entra ID"),href:"/administration/entra"},{label:t("entra.dashboard","Dashboard")}]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-[var(--radius-button)] bg-[var(--color-accent-500)]/10",children:e.jsx(r.Cloud,{className:"w-6 h-6 text-[var(--color-accent-500)]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("entra:dashboard.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("entra:dashboard.subtitle")})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:C,disabled:v,className:"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] disabled:opacity-50 transition-colors",children:[e.jsx(r.RefreshCw,{className:`w-4 h-4 ${v?"animate-spin":""}`}),t("common:refresh")]}),e.jsx(S.Tooltip,{content:x?void 0:t("entra:dashboard.noSyncPermission"),position:"bottom",variant:"error",disabled:x,children:e.jsxs("button",{onClick:()=>A("all"),disabled:d!==null||!x,className:"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[d==="all"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Play,{className:"w-4 h-4"}),t("entra:dashboard.syncAll")]})})]})]}),f&&e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2 text-[var(--error-text)]",children:[e.jsx(r.AlertTriangle,{className:"w-5 h-5"}),e.jsx("span",{children:f})]})}),E>0&&e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:e.jsxs("div",{className:"flex items-center gap-2 text-[var(--warning-text)]",children:[e.jsx(r.AlertCircle,{className:"w-5 h-5"}),e.jsx("span",{children:t("entra:dashboard.conflictsWarning",{count:E})})]})}),n&&e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${n.success?"bg-[var(--success-bg)] border-[var(--success-border)]":"bg-[var(--error-bg)] border-[var(--error-border)]"}`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[n.success?e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)]"}):e.jsx(r.XCircle,{className:"w-5 h-5 text-[var(--error-text)]"}),e.jsx("span",{className:n.success?"text-[var(--success-text)]":"text-[var(--error-text)]",children:n.success?t("entra:dashboard.syncSuccess"):t("entra:dashboard.syncFailed")})]}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)]",children:t("entra:dashboard.syncStats",{created:n.created,updated:n.updated,deleted:n.deleted})})]}),n.errorMessage&&e.jsx("p",{className:"mt-2 text-sm text-[var(--error-text)]",children:n.errorMessage})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:y.map(o=>e.jsx(Z,{resourceType:o.resourceType,icon:D(o.resourceType),status:o.status,lastFullSyncAt:o.lastFullSyncAt,lastDeltaSyncAt:o.lastDeltaSyncAt,totalItemsSynced:o.totalItemsSynced,pendingConflicts:o.pendingConflicts,lastError:o.lastError,syncing:d===o.resourceType.toLowerCase(),canSync:x,onSync:()=>A(o.resourceType.toLowerCase()),formatDate:k,t},o.resourceType))}),e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-secondary)]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-[var(--text-primary)]",children:t("entra:dashboard.forceFullSync")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("entra:dashboard.forceFullSyncDescription")})]}),e.jsx(S.Tooltip,{content:x?void 0:t("entra:dashboard.noSyncPermission"),position:"left",variant:"error",disabled:x,children:e.jsxs("button",{onClick:I,disabled:d!==null||!x,className:"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--warning-border)] bg-[var(--warning-bg)] text-[var(--warning-text)] hover:opacity-90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[d==="force"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.AlertTriangle,{className:"w-4 h-4"}),t("entra:dashboard.forceFullSync")]})})]})})]})}const te=t=>t.parentGroupName?e.jsxs("span",{className:"flex items-center gap-1 text-xs",children:[e.jsx(r.GitBranch,{className:"w-3 h-3"}),t.parentGroupName]}):t.childGroupCount>0?e.jsxs("span",{className:"flex items-center gap-1 text-xs text-[var(--text-tertiary)]",children:[t.childGroupCount," child groups"]}):e.jsx("span",{className:"text-xs text-[var(--text-tertiary)]",children:"-"});function se(){const{t}=F.useTranslation(["entra","admin","common"]),{hasPermission:h}=S.useAuth(),{currentTenant:N,isGlobalView:u}=S.useTenant(),v=H.useNavigate(),[w,y]=l.useState(!0),[g,f]=l.useState([]),[a,d]=l.useState([]),[m,n]=l.useState(null),[p,x]=l.useState(""),[c,C]=l.useState(null),[A,I]=l.useState(!1),[k,D]=l.useState(null),[E,o]=l.useState({}),[b,T]=l.useState(null),[M,q]=l.useState("cards"),[G,X]=l.useState("all"),[z,_]=l.useState(!1),U=h("administration.entra.assign"),B=l.useCallback(async()=>{try{n(null);const[s,i]=await Promise.all([j.entraApi.groups.getAll(),S.adminApi.roles.getAssignable()]);f(Array.isArray(s)?s:[]),d(Array.isArray(i)?i:[])}catch(s){console.error("Failed to load Entra groups:",s),f([]),d([]);const i=s;i.response?.status===401?n(t("common:errors.sessionExpired")):i.response?.status===403?n(t("common:errors.noPermission")):i.response?.data?.code==="TENANT_REQUIRED"?n(t("entra:groups.tenantRequired")):n(t("entra:groups.loadError"))}finally{y(!1)}},[t,N?.id,u]);l.useEffect(()=>{B()},[B]);const Q=async s=>{if(E[s]){D(k===s?null:s);return}T(s);try{const i=await j.entraApi.groups.getMembers(s);o(R=>({...R,[s]:i})),D(s)}catch(i){console.error("Failed to load members:",i),n(t("entra:groups.loadMembersError"))}finally{T(null)}},V=l.useCallback(async()=>{const[s,i]=await Promise.all([j.entraApi.groups.getAll(),S.adminApi.roles.getAssignable()]),R=Array.isArray(s)?s:[];return f(R),d(Array.isArray(i)?i:[]),R},[N?.id]),Y=async(s,i=!0)=>{if(c){_(!0);try{await j.entraApi.groups.assignRole(c.id,{roleId:s,isInheritable:i});const P=(await V()).find(O=>O.id===c.id);P&&C(P)}catch(R){console.error("Failed to assign role:",R),n(t("entra:groups.assignError"))}finally{_(!1)}}},J=async(s,i)=>{if(confirm(t("entra:groups.removeRoleConfirm")))try{if(await j.entraApi.groups.removeRole(s,i),await V(),c?.id===s){const P=(await j.entraApi.groups.getAll()).find(O=>O.id===s);P&&C(P)}}catch(R){console.error("Failed to remove role:",R),n(t("entra:groups.removeError"))}},L=g.filter(s=>{const i=s.displayName.toLowerCase().includes(p.toLowerCase())||s.description?.toLowerCase().includes(p.toLowerCase()),R=G==="all"||G==="security"&&s.isSecurityGroup||G==="distribution"&&!s.isSecurityGroup;return i&&R}),W=s=>s?new Intl.DateTimeFormat("fr-FR",{dateStyle:"medium",timeStyle:"short"}).format(new Date(s)):"-";return w?e.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx(S.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("entra.title","Microsoft Entra ID"),href:"/administration/entra"},{label:t("entra.groups","Groups")}]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-[var(--radius-button)] bg-blue-500/10",children:e.jsx(r.Cloud,{className:"w-6 h-6 text-blue-500"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("entra:groups.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("entra:groups.subtitle",{count:g.length})})]})]}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs("button",{onClick:B,className:"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx(r.RefreshCw,{className:"w-4 h-4"}),t("common:refresh")]})})]}),e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-blue-500/10 border border-blue-500/20",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(r.Cloud,{className:"w-5 h-5 text-blue-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-[var(--text-primary)]",children:t("entra:groups.syncedInfo")}),e.jsx("p",{className:"text-xs text-[var(--text-secondary)] mt-1",children:t("entra:groups.syncedInfoDescription")})]})]})}),m&&e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2 text-[var(--error-text)]",children:[e.jsx(r.AlertTriangle,{className:"w-5 h-5"}),e.jsx("span",{children:m}),e.jsx("button",{onClick:()=>n(null),className:"ml-auto p-1 hover:bg-[var(--error-text)]/10 rounded",children:e.jsx(r.X,{className:"w-4 h-4"})})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(r.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",placeholder:t("entra:groups.searchPlaceholder"),value:p,onChange:s=>x(s.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(r.Filter,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsxs("select",{value:G,onChange:s=>X(s.target.value),className:"px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:t("admin:groups.allTypes")}),e.jsx("option",{value:"security",children:t("admin:groups.securityGroup")}),e.jsx("option",{value:"distribution",children:t("admin:groups.distributionGroup")})]})]}),e.jsxs("div",{className:"flex items-center gap-1 p-1 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsx("button",{onClick:()=>q("cards"),className:`p-2 rounded-[var(--radius-button)] transition-colors ${M==="cards"?"bg-[var(--color-accent-500)] text-white":"text-[var(--text-tertiary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-hover)]"}`,title:t("admin:groups.cardView"),children:e.jsx(r.LayoutGrid,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>q("table"),className:`p-2 rounded-[var(--radius-button)] transition-colors ${M==="table"?"bg-[var(--color-accent-500)] text-white":"text-[var(--text-tertiary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-hover)]"}`,title:t("admin:groups.tableView"),children:e.jsx(r.List,{className:"w-4 h-4"})})]})]}),L.length===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:t(p||G!=="all"?"admin:groups.noResults":"entra:groups.noGroups")}),L.length>0&&M==="table"&&e.jsx("div",{className:"rounded-[var(--radius-card)] border border-[var(--border-color)] overflow-hidden",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{className:"bg-[var(--bg-secondary)]",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-[var(--text-secondary)]",children:t("admin:groups.groupName")}),e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-[var(--text-secondary)]",children:t("common:type")}),e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-[var(--text-secondary)]",children:t("admin:groups.members")}),e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-[var(--text-secondary)]",children:t("entra:groups.hierarchy")}),e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-[var(--text-secondary)]",children:t("admin:groups.assignedRoles")}),e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-[var(--text-secondary)]",children:t("entra:groups.lastSynced")}),U&&!u&&e.jsx("th",{className:"px-4 py-3 text-right text-sm font-medium text-[var(--text-secondary)]",children:t("common:actionsColumn")})]})}),e.jsx("tbody",{className:"divide-y divide-[var(--border-color)]",children:L.map(s=>e.jsxs("tr",{className:"hover:bg-[var(--bg-hover)] cursor-pointer",onClick:()=>v(`/administration/users/groups/${s.id}`),children:[e.jsx("td",{className:"px-4 py-3",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center ${s.isSecurityGroup?"bg-blue-500/10 text-blue-500":"bg-purple-500/10 text-purple-500"}`,children:s.isSecurityGroup?e.jsx(r.Shield,{className:"w-4 h-4"}):e.jsx(r.Building2,{className:"w-4 h-4"})}),e.jsxs("div",{children:[e.jsx("span",{className:"font-medium text-[var(--text-primary)]",children:s.displayName}),s.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] truncate max-w-xs",children:s.description})]})]})}),e.jsx("td",{className:"px-4 py-3",children:e.jsx("span",{className:`px-2 py-1 text-xs rounded-[var(--radius-badge)] ${s.isSecurityGroup?"bg-blue-500/10 text-blue-500":"bg-purple-500/10 text-purple-500"}`,children:s.isSecurityGroup?t("admin:groups.securityGroup"):t("admin:groups.distributionGroup")})}),e.jsx("td",{className:"px-4 py-3 text-sm text-[var(--text-secondary)]",children:e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(r.Users,{className:"w-4 h-4"}),s.memberCount]})}),e.jsx("td",{className:"px-4 py-3 text-sm text-[var(--text-secondary)]",children:te(s)}),e.jsx("td",{className:"px-4 py-3",children:e.jsxs("div",{className:"flex flex-wrap gap-1",children:[s.assignedRoles.slice(0,2).map(i=>e.jsx("span",{className:"px-2 py-0.5 text-xs rounded-[var(--radius-badge)] bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]",children:i.roleName},i.roleId)),s.assignedRoles.length>2&&e.jsxs("span",{className:"px-2 py-0.5 text-xs rounded-[var(--radius-badge)] bg-[var(--bg-tertiary)] text-[var(--text-tertiary)]",children:["+",s.assignedRoles.length-2]}),s.inheritedRoles.length>0&&e.jsxs("span",{className:"px-2 py-0.5 text-xs rounded-[var(--radius-badge)] bg-green-500/10 text-green-600",title:t("entra:groups.inheritedRoles"),children:["+",s.inheritedRoles.length," ",t("entra:groups.inherited")]})]})}),e.jsx("td",{className:"px-4 py-3 text-xs text-[var(--text-tertiary)]",children:W(s.lastSyncedAt)}),U&&!u&&e.jsx("td",{className:"px-4 py-3 text-right",onClick:i=>i.stopPropagation(),children:e.jsx("button",{onClick:()=>{C(s),I(!0)},className:"p-2 rounded-[var(--radius-button)] text-[var(--text-tertiary)] hover:text-[var(--color-accent-500)] hover:bg-[var(--bg-hover)] transition-colors",title:t("admin:groups.assignRole"),children:e.jsx(r.Plus,{className:"w-4 h-4"})})})]},s.id))})]})}),L.length>0&&M!=="table"&&e.jsx("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:L.map(s=>e.jsxs("button",{type:"button",className:"rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-secondary)] overflow-hidden cursor-pointer hover:border-[var(--color-accent-500)] transition-colors text-left",onClick:()=>v(`/administration/users/groups/${s.id}`),children:[e.jsxs("div",{className:"p-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3 min-w-0",children:[e.jsx("div",{className:`p-2.5 rounded-[var(--radius-button)] flex-shrink-0 ${s.isSecurityGroup?"bg-blue-500/10 text-blue-500":"bg-purple-500/10 text-purple-500"}`,children:s.isSecurityGroup?e.jsx(r.Shield,{className:"w-5 h-5"}):e.jsx(r.Building2,{className:"w-5 h-5"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"font-semibold text-[var(--text-primary)] truncate",children:s.displayName}),e.jsx("span",{className:`px-2 py-0.5 text-xs rounded-[var(--radius-badge)] ${s.isSecurityGroup?"bg-blue-500/10 text-blue-500 border border-blue-500/20":"bg-purple-500/10 text-purple-500 border border-purple-500/20"}`,children:s.isSecurityGroup?t("admin:groups.securityGroup"):t("admin:groups.distributionGroup")}),!s.isActive&&e.jsx("span",{className:"px-2 py-0.5 text-xs rounded-[var(--radius-badge)] bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:t("common:inactive")})]}),s.description&&e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1 line-clamp-2",children:s.description}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-sm text-[var(--text-tertiary)] flex-wrap",children:[e.jsxs("button",{onClick:i=>{i.stopPropagation(),Q(s.id)},className:"flex items-center gap-1 hover:text-[var(--color-accent-500)] transition-colors",children:[e.jsx(r.Users,{className:"w-4 h-4"}),t("admin:groups.memberCount",{count:s.memberCount}),b===s.id&&e.jsx(r.Loader2,{className:"w-3 h-3 animate-spin ml-1"}),b!==s.id&&k===s.id&&e.jsx(r.ChevronUp,{className:"w-3 h-3 ml-1"}),b!==s.id&&k!==s.id&&e.jsx(r.ChevronDown,{className:"w-3 h-3 ml-1"})]}),s.childGroupCount>0&&e.jsxs("span",{className:"flex items-center gap-1 text-xs",children:[e.jsx(r.GitBranch,{className:"w-3 h-3"}),s.childGroupCount," ",t("entra:groups.childGroups")]})]}),s.parentGroupName&&e.jsxs("p",{className:"text-xs text-[var(--text-tertiary)] mt-1 flex items-center gap-1",children:[e.jsx(r.GitBranch,{className:"w-3 h-3"}),t("entra:groups.parentGroup"),": ",s.parentGroupName]}),e.jsxs("p",{className:"text-xs text-[var(--text-tertiary)] mt-1",children:[t("entra:groups.lastSynced"),": ",W(s.lastSyncedAt)]})]})]}),U&&!u&&e.jsxs("button",{onClick:i=>{i.stopPropagation(),C(s),I(!0)},className:"inline-flex items-center gap-1 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] transition-colors flex-shrink-0",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),t("admin:groups.assignRole")]})]}),(s.assignedRoles.length>0||s.inheritedRoles.length>0)&&e.jsxs("div",{className:"mt-4 pt-4 border-t border-[var(--border-color)]",children:[s.assignedRoles.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("h4",{className:"text-sm font-medium text-[var(--text-primary)] mb-2",children:t("admin:groups.assignedRoles")}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-3",children:s.assignedRoles.map(i=>e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-badge)] bg-[var(--bg-primary)] border border-[var(--border-color)] group",children:[e.jsx(r.Shield,{className:"w-4 h-4 text-[var(--color-accent-500)]"}),e.jsx("span",{className:"text-sm text-[var(--text-primary)]",children:i.roleName}),i.isInheritable&&e.jsx("span",{className:"text-xs text-green-600",title:t("entra:groups.inheritableRole"),children:"↓"}),U&&e.jsx("button",{onClick:R=>{R.stopPropagation(),J(s.id,i.roleId)},className:"ml-1 p-0.5 rounded opacity-0 group-hover:opacity-100 hover:bg-[var(--error-bg)] text-[var(--text-tertiary)] hover:text-[var(--error-text)] transition-all",title:t("common:remove"),children:e.jsx(r.X,{className:"w-3 h-3"})})]},i.roleId))})]}),s.inheritedRoles.length>0&&e.jsxs(e.Fragment,{children:[e.jsxs("h4",{className:"text-xs font-medium text-[var(--text-tertiary)] mb-2 flex items-center gap-1",children:[e.jsx(r.GitBranch,{className:"w-3 h-3"}),t("entra:groups.inheritedRoles")]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:s.inheritedRoles.map(i=>e.jsxs("div",{className:"inline-flex items-center gap-2 px-2 py-1 rounded-[var(--radius-badge)] bg-green-500/5 border border-green-500/20",title:`${t("entra:groups.inheritedFrom")} ${i.sourceGroupName}`,children:[e.jsx(r.Shield,{className:"w-3 h-3 text-green-600"}),e.jsx("span",{className:"text-xs text-green-700",children:i.roleName}),e.jsxs("span",{className:"text-xs text-green-600/60",children:["← ",i.sourceGroupName]})]},`${i.roleId}-${i.sourceGroupId}`))})]})]})]}),k===s.id&&E[s.id]&&e.jsx("div",{className:"border-t border-[var(--border-color)] bg-[var(--bg-primary)]",onClick:i=>i.stopPropagation(),onKeyDown:i=>i.stopPropagation(),role:"presentation",children:e.jsxs("div",{className:"p-4",children:[e.jsxs("h4",{className:"text-sm font-medium text-[var(--text-primary)] mb-3 flex items-center gap-2",children:[e.jsx(r.Users,{className:"w-4 h-4"}),t("admin:groups.members")," (",E[s.id].length,")"]}),E[s.id].length===0?e.jsx("p",{className:"text-sm text-[var(--text-tertiary)]",children:t("admin:groups.noMembers")}):e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2 max-h-64 overflow-y-auto",children:E[s.id].slice(0,10).map(i=>e.jsxs(H.Link,{to:`/administration/users/${i.userId}`,className:"flex items-center gap-3 p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx("div",{className:"w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]",children:i.fullName.charAt(0).toUpperCase()}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] truncate",children:i.fullName}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] truncate",children:i.email})]}),!i.isDirect&&i.sourceGroupName&&e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] flex items-center gap-1",title:t("entra:groups.memberFromChildGroup"),children:e.jsx(r.GitBranch,{className:"w-3 h-3"})})]},i.userId))}),E[s.id].length>10&&e.jsx("p",{className:"mt-3 text-center text-sm text-[var(--text-tertiary)]",children:t("admin:groups.showingMembers",{shown:10,total:E[s.id].length})})]})})]},s.id))}),A&&c&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",children:e.jsxs("div",{className:"w-full max-w-md rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)] shadow-xl",children:[e.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-[var(--border-color)]",children:[e.jsx("h2",{className:"text-lg font-semibold text-[var(--text-primary)]",children:t("admin:groups.assignRoleTitle")}),e.jsx("button",{onClick:()=>{I(!1),C(null)},className:"p-1 rounded hover:bg-[var(--bg-hover)] text-[var(--text-tertiary)]",children:e.jsx(r.X,{className:"w-5 h-5"})})]}),e.jsxs("div",{className:"p-4",children:[e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mb-4",children:t("admin:groups.assignRoleDescription",{group:c.displayName})}),e.jsxs("div",{className:"space-y-2 max-h-64 overflow-y-auto",children:[a.filter(s=>!c.assignedRoles.some(i=>i.roleId===s.id)).map(s=>e.jsxs("button",{onClick:()=>Y(s.id),disabled:z,className:"w-full flex items-center gap-3 p-3 rounded-[var(--radius-button)] border border-[var(--border-color)] hover:border-[var(--color-accent-500)] hover:bg-[var(--bg-hover)] transition-colors text-left disabled:opacity-50",children:[e.jsx(r.Shield,{className:"w-5 h-5 text-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:s.name}),s.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:s.description})]}),z&&e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin text-[var(--color-accent-500)]"})]},s.id)),a.filter(s=>!c.assignedRoles.some(i=>i.roleId===s.id)).length===0&&e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] text-center py-4",children:t("admin:groups.allRolesAssigned")})]})]})]})})]})}function re(){const{t}=F.useTranslation(["entra","common"]),h=H.useNavigate(),[N,u]=l.useState(!0),[v,w]=l.useState([]),[y,g]=l.useState(null),f=l.useCallback(async()=>{try{u(!0),g(null);const n=await S.adminApi.users.getAll({pageSize:1e3,entraOnly:!0});w(n?.items??[])}catch(n){console.error("Failed to load users:",n);const p=n;p.response?.status===401?g(t("common:errors.sessionExpired")):p.response?.status===403?g(t("common:errors.noPermission")):g(t("entra:users.loadError"))}finally{u(!1)}},[t]);l.useEffect(()=>{f()},[f]);const a=n=>n?new Intl.DateTimeFormat("fr-FR",{dateStyle:"medium",timeStyle:"short"}).format(new Date(n)):t("common:never"),d=[{key:"fullName",label:t("entra:users.columns.user"),sortable:!0,render:n=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-primary-100)] dark:bg-[var(--color-primary-900)] flex items-center justify-center flex-shrink-0",children:e.jsx("span",{className:"text-sm font-medium text-[var(--color-primary-600)]",children:n.fullName?.charAt(0).toUpperCase()||"?"})}),e.jsx("span",{className:"font-medium text-[var(--text-primary)]",children:n.fullName})]})},{key:"email",label:t("entra:users.columns.email"),sortable:!0,render:n=>e.jsxs("div",{className:"flex items-center gap-1 text-sm text-[var(--text-secondary)]",children:[e.jsx(r.Mail,{className:"w-4 h-4"}),n.email]})},{key:"isActive",label:t("entra:users.columns.status"),sortable:!0,render:n=>n.isActive?e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 text-xs rounded-full bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",children:[e.jsx(r.CheckCircle,{className:"w-3 h-3"}),t("common:active")]}):e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 text-xs rounded-full bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400",children:[e.jsx(r.XCircle,{className:"w-3 h-3"}),t("common:inactive")]})},{key:"lastEntraSyncAt",label:t("entra:users.columns.lastSync"),sortable:!0,render:n=>e.jsxs("div",{className:"flex items-center gap-1 text-sm text-[var(--text-secondary)]",children:[e.jsx(r.Calendar,{className:"w-4 h-4"}),a(n.lastEntraSyncAt)]})},{key:"actions",label:t("entra:users.columns.actions"),align:"right",render:n=>e.jsxs("button",{onClick:p=>{p.stopPropagation(),h(`/administration/users/${n.id}`)},className:"inline-flex items-center gap-1 text-sm text-[var(--color-primary-600)] hover:underline",children:[t("common:viewDetails"),e.jsx(r.ExternalLink,{className:"w-4 h-4"})]})}],m=(n,p)=>{const x=p.toLowerCase();return n.fullName?.toLowerCase().includes(x)||n.email?.toLowerCase().includes(x)||!1};return e.jsxs("div",{className:"space-y-6",children:[e.jsx(S.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("entra.title","Microsoft Entra ID"),href:"/administration/entra"},{label:t("entra.users","Users")}]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-[var(--color-primary-100)] dark:bg-[var(--color-primary-900)]",children:e.jsx(r.Users,{className:"w-6 h-6 text-[var(--color-primary-600)]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("entra:users.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("entra:users.subtitle",{count:v.length})})]})]}),e.jsxs("button",{onClick:f,className:"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-lg border border-[var(--border-primary)] bg-[var(--bg-primary)] text-[var(--text-primary)] hover:bg-[var(--bg-secondary)]",children:[e.jsx(r.RefreshCw,{className:"w-4 h-4"}),t("common:refresh")]})]}),y&&e.jsx("div",{className:"p-4 rounded-lg bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800",children:e.jsxs("div",{className:"flex items-center gap-2 text-red-700 dark:text-red-400",children:[e.jsx(r.AlertTriangle,{className:"w-5 h-5"}),e.jsx("span",{children:y})]})}),e.jsx(S.DataTable,{data:v,columns:d,loading:N,searchable:!0,searchPlaceholder:t("entra:users.searchPlaceholder"),searchFilter:m,pagination:{pageSize:20,showSizeSelector:!0},onRowClick:n=>h(`/administration/users/${n.id}`),getRowKey:n=>n.id,emptyMessage:t("entra:users.noUsers"),emptyIcon:e.jsx(r.Users,{className:"w-12 h-12 mx-auto text-[var(--text-secondary)] opacity-50"}),defaultSortKey:"fullName",striped:!0})]})}function ae(){const{t}=F.useTranslation(["entra","common"]),[h,N]=l.useState(!0),[u,v]=l.useState([]),[w,y]=l.useState(null),[g,f]=l.useState(null),[a,d]=l.useState(!1),m=l.useRef(null),n=l.useRef(!1),p=l.useCallback(async()=>{if(!n.current){m.current&&m.current.abort(),m.current=new AbortController,n.current=!0;try{y(null);const c=await j.entraApi.conflicts.getAll();v(Array.isArray(c)?c:[])}catch(c){if(c instanceof Error&&c.name==="AbortError")return;console.error("Failed to load conflicts:",c instanceof Error?c.message:"Unknown error"),v([]);const C=c;C.response?.status===401?y(t("common:errors.sessionExpired")):C.response?.status===403?y(t("common:errors.noPermission")):y(t("entra:conflicts.loadError"))}finally{n.current=!1,N(!1)}}},[t]);l.useEffect(()=>(p(),()=>{m.current&&m.current.abort()}),[p]);const x=l.useCallback(async(c,C)=>{if(!(!g||a)){d(!0);try{await j.entraApi.conflicts.resolve(g.id,{resolution:c,notes:C||void 0}),f(null),await p()}catch(A){console.error("Failed to resolve conflict:",A instanceof Error?A.message:"Unknown error"),y(t("entra:conflicts.resolveError"))}finally{d(!1)}}},[g,a,p,t]);return h?e.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx(S.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("entra.title","Microsoft Entra ID"),href:"/administration/entra"},{label:t("entra.conflicts","Conflicts")}]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-[var(--radius-button)] bg-[var(--color-accent-500)]/10",children:e.jsx(r.AlertTriangle,{className:"w-6 h-6 text-[var(--color-accent-600)]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("entra:conflicts.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("entra:conflicts.subtitle",{count:u.length})})]})]}),e.jsxs("button",{onClick:p,disabled:h,className:"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-tertiary)] transition-colors disabled:opacity-50",children:[e.jsx(r.RefreshCw,{className:`w-4 h-4 ${h?"animate-spin":""}`}),t("common:refresh")]})]}),w&&e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2 text-[var(--error-text)]",children:[e.jsx(r.AlertTriangle,{className:"w-5 h-5"}),e.jsx("span",{children:w})]}),e.jsx("button",{onClick:()=>y(null),className:"text-[var(--error-text)] hover:opacity-70",children:"×"})]})}),u.length===0?e.jsxs("div",{className:"text-center py-16 px-6 rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-card)]",children:[e.jsx("div",{className:"mx-auto w-16 h-16 rounded-full bg-[var(--success-bg)] flex items-center justify-center mb-4",children:e.jsx(r.CheckCircle,{className:"w-8 h-8 text-[var(--success-text)]"})}),e.jsx("h2",{className:"text-xl font-semibold text-[var(--text-primary)] mb-2",children:t("entra:conflicts.noConflicts")}),e.jsx("p",{className:"text-[var(--text-secondary)] max-w-md mx-auto",children:t("entra:conflicts.noConflictsDescription")})]}):e.jsx("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:u.map(c=>e.jsx(j.ConflictCard,{conflict:c,onResolve:f},c.id))}),g&&e.jsx(j.ResolutionModal,{conflict:g,onClose:()=>f(null),onResolve:x,resolving:a})]})}const ne=[{id:"member",labelKey:"userTypes.member",descriptionKey:"userTypes.memberDescription",supported:!0},{id:"guest",labelKey:"userTypes.guest",descriptionKey:"userTypes.guestDescription",supported:!0},{id:"shared",labelKey:"userTypes.shared",descriptionKey:"userTypes.sharedDescription",supported:!1},{id:"room",labelKey:"userTypes.room",descriptionKey:"userTypes.roomDescription",supported:!1},{id:"equipment",labelKey:"userTypes.equipment",descriptionKey:"userTypes.equipmentDescription",supported:!1}],ie=[{code:"User.Read.All",descriptionKey:"userReadAll"},{code:"Group.Read.All",descriptionKey:"groupReadAll"},{code:"GroupMember.Read.All",descriptionKey:"groupMemberReadAll"}];function $({icon:t,title:h,description:N,action:u,children:v,className:w=""}){return e.jsxs("div",{className:`rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-card)] shadow-sm overflow-hidden ${w}`,children:[e.jsx("div",{className:"px-6 py-4 border-b border-[var(--border-subtle)] bg-[var(--bg-secondary)]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-[var(--radius-button)] bg-[var(--color-accent-100)] dark:bg-[var(--color-accent-900)]/30",children:e.jsx(t,{className:"w-5 h-5 text-[var(--color-accent-500)]"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-semibold text-[var(--text-primary)]",children:h}),N&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:N})]})]}),u]})}),e.jsx("div",{className:"p-6",children:v})]})}function K({checked:t,onChange:h,label:N,description:u}){return e.jsxs("div",{className:"flex items-center justify-between py-3",children:[e.jsxs("div",{className:"flex-1 min-w-0 pr-4",children:[e.jsx("label",{className:"text-sm font-medium text-[var(--text-primary)]",children:N}),u&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:u})]}),e.jsx("button",{type:"button",role:"switch","aria-checked":t,onClick:h,className:`relative inline-flex h-6 w-11 flex-shrink-0 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:ring-offset-2 focus:ring-offset-[var(--bg-primary)] ${t?"bg-[var(--color-accent-600)]":"bg-[var(--bg-tertiary)]"}`,children:e.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-[var(--toggle-knob)] shadow-md transition-transform ${t?"translate-x-6":"translate-x-1"}`})})]})}const le=t=>t?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t):!0,ce=()=>{const{t}=F.useTranslation(["entra","common"]),[h,N]=l.useState(!0),[u,v]=l.useState(!1),[w,y]=l.useState(!1),[g,f]=l.useState(null),[a,d]=l.useState(!1),[m,n]=l.useState(null),[p,x]=l.useState(null),[c,C]=l.useState(!1),[A,I]=l.useState(null),[k,D]=l.useState({}),[E,o]=l.useState({tenantId:"",clientId:"",clientSecret:""}),[b,T]=l.useState({syncEnabled:!1,syncIntervalMinutes:60,useDeltaSync:!0,defaultConflictResolution:"ManualReview",autoCreateReferences:!0,syncOnlyActiveUsers:!0,syncUserTypes:"member"});return{t,loading:h,setLoading:N,saving:u,setSaving:v,testing:w,setTesting:y,testResult:g,setTestResult:f,showSecret:a,setShowSecret:d,error:m,setError:n,success:p,setSuccess:x,hasExistingSecret:c,setHasExistingSecret:C,copiedPermission:A,setCopiedPermission:I,validationErrors:k,setValidationErrors:D,credentials:E,setCredentials:o,syncSettings:b,setSyncSettings:T}};function oe(t,h){return t?"opacity-50 cursor-not-allowed border-[var(--border-color)] bg-[var(--bg-tertiary)]":h?"cursor-pointer border-[var(--color-accent-500)] bg-[var(--color-accent-50)] dark:bg-[var(--color-accent-900)]/20":"cursor-pointer border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-tertiary)]"}function de(){const t=ce(),h=l.useCallback(async()=>{try{t.setLoading(!0);const a=await j.entraApi.settings.getConfiguration();t.setCredentials({tenantId:a.tenantId||"",clientId:a.clientId||"",clientSecret:""}),t.setHasExistingSecret(a.hasClientSecret),t.setSyncSettings({syncEnabled:a.syncEnabled,syncIntervalMinutes:a.syncIntervalMinutes,useDeltaSync:a.useDeltaSync,defaultConflictResolution:a.defaultConflictResolution,autoCreateReferences:a.autoCreateReferences,syncOnlyActiveUsers:a.syncOnlyActiveUsers??!0,syncUserTypes:a.syncUserTypes??"member"})}catch(a){console.error("Failed to load configuration:",a),t.setError(t.t("entra:settings.saveError"))}finally{t.setLoading(!1)}},[]);l.useEffect(()=>{h()},[h]);const N=async a=>{try{await navigator.clipboard.writeText(a),t.setCopiedPermission(a),setTimeout(()=>t.setCopiedPermission(null),2e3)}catch(d){console.error("Failed to copy:",d)}},u=(a,d)=>{const m=le(d)?void 0:t.t("entra:settings.invalidGuidFormat");t.setValidationErrors(n=>({...n,[a]:m}))},v=(a,d)=>{t.setCredentials(m=>({...m,[a]:d})),(a==="tenantId"||a==="clientId")&&u(a,d)},w=!!(t.validationErrors.tenantId||t.validationErrors.clientId),y=async()=>{t.setTesting(!0),t.setTestResult(null),t.setError(null),t.setSuccess(null);try{let a;if(t.credentials.clientSecret)a=await j.entraApi.settings.testConnection({tenantId:t.credentials.tenantId,clientId:t.credentials.clientId,clientSecret:t.credentials.clientSecret});else if(t.hasExistingSecret)a=await j.entraApi.settings.testStoredConnection();else{t.setError(t.t("entra:settings.testFailed")),t.setTesting(!1);return}t.setTestResult(a),a.success?t.setSuccess(t.t("entra:settings.testSuccess")):t.setError(a.errorMessage||t.t("entra:settings.testFailed"))}catch(a){console.error("Connection test failed:",a),t.setTestResult({success:!1,errorMessage:t.t("entra:settings.testFailed"),tenantName:null,userCount:null,groupCount:null}),t.setError(t.t("entra:settings.testFailed"))}finally{t.setTesting(!1)}},g=async()=>{t.setSaving(!0),t.setError(null),t.setSuccess(null);try{await j.entraApi.settings.saveCredentials({tenantId:t.credentials.tenantId,clientId:t.credentials.clientId,clientSecret:t.credentials.clientSecret}),t.setSuccess(t.t("entra:settings.credentialsSaved")),t.setHasExistingSecret(!0),t.setCredentials(a=>({...a,clientSecret:""}))}catch(a){console.error("Failed to save credentials:",a),t.setError(t.t("entra:settings.saveError"))}finally{t.setSaving(!1)}},f=async()=>{t.setSaving(!0),t.setError(null),t.setSuccess(null);try{await j.entraApi.settings.saveSyncSettings({syncEnabled:t.syncSettings.syncEnabled,syncIntervalMinutes:t.syncSettings.syncIntervalMinutes,useDeltaSync:t.syncSettings.useDeltaSync,defaultConflictResolution:t.syncSettings.defaultConflictResolution,autoCreateReferences:t.syncSettings.autoCreateReferences,syncOnlyActiveUsers:t.syncSettings.syncOnlyActiveUsers,syncUserTypes:t.syncSettings.syncUserTypes}),t.setSuccess(t.t("entra:settings.settingsSaved"))}catch(a){console.error("Failed to save settings:",a),t.setError(t.t("entra:settings.saveError"))}finally{t.setSaving(!1)}};return t.loading?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx(S.Breadcrumb,{items:[{label:t.t("header.title"),href:"/administration"},{label:t.t("entra.title","Microsoft Entra ID"),href:"/administration/entra"},{label:t.t("entra.settings","Settings")}]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"p-3 rounded-[var(--radius-card)] bg-gradient-to-br from-[var(--color-accent-500)] to-[var(--color-accent-700)] shadow-lg",children:e.jsx(r.Settings,{className:"w-7 h-7 text-white"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t.t("entra:settings.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t.t("entra:settings.subtitle")})]})]}),e.jsx("div",{className:"rounded-[var(--radius-card)] border-2 border-[var(--warning-border)] bg-[var(--warning-bg)] overflow-hidden",children:e.jsx("div",{className:"px-5 py-4",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("div",{className:"p-2 rounded-[var(--radius-button)] bg-[var(--warning-border)]",children:e.jsx(r.Shield,{className:"w-5 h-5 text-[var(--warning-text)]"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4 mb-2",children:[e.jsx("h2",{className:"font-semibold text-[var(--warning-text)]",children:t.t("entra:settings.permissionsWarningTitle")}),e.jsxs("a",{href:"https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--warning-border)] text-[var(--warning-text)] hover:opacity-80 transition-opacity",children:[t.t("entra:settings.configureInAzure"),e.jsx(r.ExternalLink,{className:"w-3.5 h-3.5"})]})]}),e.jsx("p",{className:"text-sm text-[var(--warning-text)] opacity-90 mb-4",children:t.t("entra:settings.permissionsWarningDescription")}),e.jsx("div",{className:"flex flex-wrap gap-2",children:ie.map(a=>e.jsxs("button",{onClick:()=>N(a.code),className:"group inline-flex items-center gap-2 px-3 py-2 rounded-[var(--radius-button)] bg-[var(--bg-primary)] border border-[var(--warning-border)] hover:border-[var(--warning-dot)] transition-all hover:shadow-sm",title:t.t(`entra:settings.permissions.${a.descriptionKey}`),children:[e.jsx("code",{className:"text-sm font-mono font-medium text-[var(--text-primary)]",children:a.code}),t.copiedPermission===a.code?e.jsx(r.Check,{className:"w-4 h-4 text-[var(--success-text)]"}):e.jsx(r.Copy,{className:"w-4 h-4 text-[var(--warning-text)] group-hover:opacity-80"})]},a.code))})]})]})})}),t.error&&e.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:[e.jsx(r.AlertTriangle,{className:"w-5 h-5 text-[var(--error-text)] flex-shrink-0"}),e.jsx("span",{className:"text-sm text-[var(--error-text)]",children:t.error})]}),t.success&&e.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:[e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)] flex-shrink-0"}),e.jsx("span",{className:"text-sm text-[var(--success-text)]",children:t.success})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsx($,{icon:r.Key,title:t.t("entra:settings.credentials"),description:"Azure AD Application",action:e.jsxs("a",{href:"https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-sm text-[var(--color-accent-500)] hover:text-[var(--color-accent-600)] transition-colors",children:[t.t("entra:settings.azurePortal"),e.jsx(r.ExternalLink,{className:"w-4 h-4"})]}),children:e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:t.t("entra:settings.tenantId")}),e.jsx("input",{type:"text",value:t.credentials.tenantId,onChange:a=>v("tenantId",a.target.value),placeholder:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",autoComplete:"off",className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border bg-[var(--bg-secondary)] text-[var(--text-primary)] font-mono text-sm focus:outline-none focus:ring-2 focus:border-transparent transition-shadow ${t.validationErrors.tenantId?"border-[var(--error-border)] focus:ring-[var(--error-border)]":"border-[var(--border-color)] focus:ring-[var(--color-accent-500)]"}`}),t.validationErrors.tenantId?e.jsx("p",{className:"mt-1.5 text-xs text-[var(--error-text)]",children:t.validationErrors.tenantId}):e.jsx("p",{className:"mt-1.5 text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.tenantIdHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:t.t("entra:settings.clientId")}),e.jsx("input",{type:"text",value:t.credentials.clientId,onChange:a=>v("clientId",a.target.value),placeholder:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",autoComplete:"off",className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border bg-[var(--bg-secondary)] text-[var(--text-primary)] font-mono text-sm focus:outline-none focus:ring-2 focus:border-transparent transition-shadow ${t.validationErrors.clientId?"border-[var(--error-border)] focus:ring-[var(--error-border)]":"border-[var(--border-color)] focus:ring-[var(--color-accent-500)]"}`}),t.validationErrors.clientId?e.jsx("p",{className:"mt-1.5 text-xs text-[var(--error-text)]",children:t.validationErrors.clientId}):e.jsx("p",{className:"mt-1.5 text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.clientIdHelp")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[t.t("entra:settings.clientSecret"),t.hasExistingSecret&&e.jsxs("span",{className:"ml-2 inline-flex items-center gap-1 text-xs text-[var(--success-text)]",children:[e.jsx(r.CheckCircle,{className:"w-3 h-3"}),t.t("common:configured")]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:t.showSecret?"text":"password",value:t.credentials.clientSecret,onChange:a=>v("clientSecret",a.target.value),placeholder:t.hasExistingSecret?"••••••••••••••••••••••••••••••••••••••••":"OvA8Q~xxxxxxxxxxxxxxxxxxxxxxxxxxxx",autoComplete:"new-password",className:"w-full px-3 py-2.5 pr-10 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] font-mono text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-transparent transition-shadow"}),e.jsx("button",{type:"button",onClick:()=>t.setShowSecret(!t.showSecret),className:"absolute right-3 top-1/2 -translate-y-1/2 p-1 text-[var(--text-tertiary)] hover:text-[var(--text-primary)] transition-colors",children:t.showSecret?e.jsx(r.EyeOff,{className:"w-4 h-4"}):e.jsx(r.Eye,{className:"w-4 h-4"})})]}),e.jsx("p",{className:"mt-1.5 text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.clientSecretHelp")})]}),e.jsxs("div",{className:"flex items-center gap-3 pt-2",children:[e.jsxs("button",{onClick:y,disabled:t.testing||w||!t.credentials.tenantId||!t.credentials.clientId||!t.credentials.clientSecret&&!t.hasExistingSecret,className:"inline-flex items-center gap-2 px-4 py-2.5 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-tertiary)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[t.testing&&e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}),!t.testing&&t.testResult?.success&&e.jsx(r.CheckCircle,{className:"w-4 h-4 text-[var(--success-text)]"}),!t.testing&&t.testResult&&!t.testResult.success&&e.jsx(r.AlertTriangle,{className:"w-4 h-4 text-[var(--error-text)]"}),!t.testing&&!t.testResult&&e.jsx(r.TestTube,{className:"w-4 h-4"}),t.t("entra:settings.testConnection")]}),e.jsxs("button",{onClick:g,disabled:t.saving||w||!t.credentials.tenantId||!t.credentials.clientId||!t.credentials.clientSecret,className:"inline-flex items-center gap-2 px-4 py-2.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors shadow-sm",children:[t.saving?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),t.t("common:save")]})]}),t.testResult?.success&&e.jsxs("div",{className:"mt-4 p-4 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)]"}),e.jsx("span",{className:"font-medium text-[var(--success-text)]",children:t.t("entra:settings.connectionSuccessful")})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[t.testResult.tenantName&&e.jsxs("div",{className:"flex items-center gap-2 p-2 rounded-[var(--radius-button)] bg-[var(--bg-primary)]",children:[e.jsx(r.Building2,{className:"w-4 h-4 text-[var(--success-text)]"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.tenantName")}),e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] truncate",children:t.testResult.tenantName})]})]}),t.testResult.userCount!==null&&e.jsxs("div",{className:"flex items-center gap-2 p-2 rounded-[var(--radius-button)] bg-[var(--bg-primary)]",children:[e.jsx(r.Users,{className:"w-4 h-4 text-[var(--success-text)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.userCount")}),e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)]",children:t.testResult.userCount})]})]}),t.testResult.groupCount!==null&&e.jsxs("div",{className:"flex items-center gap-2 p-2 rounded-[var(--radius-button)] bg-[var(--bg-primary)]",children:[e.jsx(r.Layers,{className:"w-4 h-4 text-[var(--success-text)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.groupCount")}),e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)]",children:t.testResult.groupCount})]})]})]})]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx($,{icon:r.Clock,title:t.t("entra:settings.syncSettings"),description:"Scheduling & Performance",children:e.jsxs("div",{className:"divide-y divide-[var(--border-subtle)]",children:[e.jsx(K,{checked:t.syncSettings.syncEnabled,onChange:()=>t.setSyncSettings(a=>({...a,syncEnabled:!a.syncEnabled})),label:t.t("entra:settings.syncEnabled"),description:t.t("entra:settings.syncEnabledHelp")}),e.jsxs("div",{className:"py-4",children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-2",children:t.t("entra:settings.syncInterval")}),e.jsxs("select",{value:t.syncSettings.syncIntervalMinutes,onChange:a=>t.setSyncSettings(d=>({...d,syncIntervalMinutes:Number(a.target.value)})),className:"w-full px-3 py-2.5 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow",children:[e.jsxs("option",{value:15,children:["15 ",t.t("common:minutes")]}),e.jsxs("option",{value:30,children:["30 ",t.t("common:minutes")]}),e.jsxs("option",{value:60,children:["1 ",t.t("common:hour")]}),e.jsxs("option",{value:120,children:["2 ",t.t("common:hours")]}),e.jsxs("option",{value:360,children:["6 ",t.t("common:hours")]}),e.jsxs("option",{value:720,children:["12 ",t.t("common:hours")]}),e.jsxs("option",{value:1440,children:["24 ",t.t("common:hours")]})]})]}),e.jsx(K,{checked:t.syncSettings.useDeltaSync,onChange:()=>t.setSyncSettings(a=>({...a,useDeltaSync:!a.useDeltaSync})),label:t.t("entra:settings.useDeltaSync"),description:t.t("entra:settings.useDeltaSyncHelp")}),e.jsx(K,{checked:t.syncSettings.autoCreateReferences,onChange:()=>t.setSyncSettings(a=>({...a,autoCreateReferences:!a.autoCreateReferences})),label:t.t("entra:settings.autoCreateReferences"),description:t.t("entra:settings.autoCreateReferencesHelp")})]})}),e.jsx($,{icon:r.GitMerge,title:t.t("entra:settings.conflictResolution"),description:"Data Priority",children:e.jsxs("div",{children:[e.jsxs("select",{value:t.syncSettings.defaultConflictResolution,onChange:a=>t.setSyncSettings(d=>({...d,defaultConflictResolution:a.target.value})),className:"w-full px-3 py-2.5 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow",children:[e.jsx("option",{value:"ManualReview",children:t.t("entra:settings.conflictResolutions.manualReview")}),e.jsx("option",{value:"EntraWins",children:t.t("entra:settings.conflictResolutions.entraWins")}),e.jsx("option",{value:"LocalWins",children:t.t("entra:settings.conflictResolutions.localWins")})]}),e.jsx("p",{className:"mt-2 text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.conflictResolutionHelp")})]})}),e.jsx($,{icon:r.Filter,title:t.t("entra:settings.userSyncFilters"),description:"User Types & Filters",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx(K,{checked:t.syncSettings.syncOnlyActiveUsers,onChange:()=>t.setSyncSettings(a=>({...a,syncOnlyActiveUsers:!a.syncOnlyActiveUsers})),label:t.t("entra:settings.syncOnlyActiveUsers"),description:t.t("entra:settings.syncOnlyActiveUsersHelp")}),e.jsxs("div",{className:"pt-2 border-t border-[var(--border-subtle)]",children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-2",children:t.t("entra:settings.syncUserTypesLabel")}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mb-3",children:t.t("entra:settings.syncUserTypesHelp")}),e.jsx("div",{className:"space-y-2",children:ne.map(a=>{const d=t.syncSettings.syncUserTypes.split(",").map(x=>x.trim()).filter(Boolean),m=d.includes(a.id),n=!a.supported,p=()=>{if(n)return;let x;m?x=d.filter(c=>c!==a.id):x=[...d,a.id],x.length===0&&(x=["member"]),t.setSyncSettings(c=>({...c,syncUserTypes:x.join(",")}))};return e.jsxs("label",{className:`flex items-start gap-3 p-3 rounded-[var(--radius-button)] border transition-all ${oe(n,m)}`,children:[e.jsx("input",{type:"checkbox",checked:m,onChange:p,disabled:n,className:"mt-0.5 w-4 h-4 rounded border-[var(--border-color)] text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)] disabled:opacity-50"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:t.t(`entra:settings.${a.labelKey}`)}),n&&e.jsx("span",{className:"text-xs px-1.5 py-0.5 rounded bg-[var(--bg-tertiary)] text-[var(--text-tertiary)]",children:t.t("common:comingSoon")})]}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:t.t(`entra:settings.${a.descriptionKey}`)})]})]},a.id)})})]})]})}),e.jsx("div",{className:"flex justify-end",children:e.jsxs("button",{onClick:f,disabled:t.saving,className:"inline-flex items-center gap-2 px-6 py-2.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors shadow-sm",children:[t.saving?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),t.t("common:save")]})})]})]})]})}exports.EntraConflictsPage=ae;exports.EntraDashboardPage=ee;exports.EntraGroupsPage=se;exports.EntraSettingsPage=de;exports.EntraUsersPage=re;
2
- //# sourceMappingURL=index-DEOBhXS_.js.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),F=require("react-i18next"),S=require("./index-cAikSVW0.js"),r=require("lucide-react"),j=require("./ResolutionModal-CjwE73NX.js"),H=require("react-router-dom");function Z({resourceType:t,icon:h,status:N,lastFullSyncAt:u,lastDeltaSyncAt:v,totalItemsSynced:w,pendingConflicts:y,lastError:g,syncing:f,canSync:a,onSync:d,formatDate:m,t:n}){const x=(()=>{switch(N){case"Success":return{icon:r.CheckCircle,color:"text-[var(--success-text)]",bg:"bg-[var(--success-bg)]",label:n("common:success")};case"Failed":return{icon:r.XCircle,color:"text-[var(--error-text)]",bg:"bg-[var(--error-bg)]",label:n("common:failed")};case"Running":return{icon:r.Loader2,color:"text-[var(--color-accent-500)]",bg:"bg-[var(--color-accent-100)]",label:n("common:running"),animate:!0};default:return{icon:r.Clock,color:"text-[var(--text-tertiary)]",bg:"bg-[var(--bg-tertiary)]",label:n("common:pending")}}})(),c=x.icon;return e.jsxs("div",{className:"h-full flex flex-col rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-card)] overflow-hidden shadow-sm hover:shadow-md transition-shadow",children:[e.jsx("div",{className:"px-4 py-3 bg-gradient-to-r from-[var(--color-accent-500)]/10 to-[var(--color-accent-600)]/5 border-b border-[var(--border-color)]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-[var(--color-accent-500)]/20",children:e.jsx(h,{className:"w-5 h-5 text-[var(--color-accent-600)]"})}),e.jsx("h3",{className:"font-semibold text-[var(--text-primary)]",children:n(`entra:resourceTypes.${t.toLowerCase()}`)})]}),e.jsxs("div",{className:`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium ${x.bg} ${x.color}`,children:[e.jsx(c,{className:`w-3.5 h-3.5 ${x.animate?"animate-spin":""}`}),x.label]})]})}),e.jsxs("div",{className:"flex-1 flex flex-col p-4",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3 mb-4",children:[e.jsxs("div",{className:"text-center p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("div",{className:"flex items-center justify-center gap-1 mb-1",children:e.jsx(r.Database,{className:"w-3.5 h-3.5 text-[var(--text-tertiary)]"})}),e.jsx("p",{className:"text-xl font-bold text-[var(--text-primary)]",children:w.toLocaleString()}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:n("entra:dashboard.itemsSynced")})]}),e.jsxs("div",{className:"text-center p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("div",{className:"flex items-center justify-center gap-1 mb-1",children:e.jsx(r.Calendar,{className:"w-3.5 h-3.5 text-[var(--text-tertiary)]"})}),e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] truncate",title:m(u),children:u?new Date(u).toLocaleDateString("fr-FR",{day:"numeric",month:"short"}):"-"}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:n("entra:dashboard.lastFullSync")})]}),e.jsxs("div",{className:"text-center p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("div",{className:"flex items-center justify-center gap-1 mb-1",children:e.jsx(r.RefreshCw,{className:"w-3.5 h-3.5 text-[var(--text-tertiary)]"})}),e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] truncate",title:m(v),children:v?new Date(v).toLocaleDateString("fr-FR",{day:"numeric",month:"short"}):"-"}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:n("entra:dashboard.lastDeltaSync")})]})]}),y>0&&e.jsxs("div",{className:"flex items-center gap-2 p-3 mb-4 rounded-lg bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx(r.AlertCircle,{className:"w-4 h-4 text-[var(--warning-text)] flex-shrink-0"}),e.jsxs("span",{className:"text-sm text-[var(--warning-text)] font-medium",children:[y," ",n("entra:dashboard.pendingConflicts")]})]}),g&&e.jsx("div",{className:"p-3 mb-4 rounded-lg bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsx("p",{className:"text-xs text-[var(--error-text)] line-clamp-2",children:g})}),e.jsx(S.Tooltip,{content:a?void 0:n("entra:dashboard.noSyncPermission"),position:"top",variant:"error",disabled:a,children:e.jsxs("button",{onClick:d,disabled:f||!a,className:"mt-auto w-full inline-flex items-center justify-center gap-2 px-4 py-2.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors shadow-sm",children:[f?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.RefreshCw,{className:"w-4 h-4"}),n("entra:dashboard.syncNow")]})})]})]})}function ee(){const{t}=F.useTranslation(["entra","common"]),{hasPermission:h}=S.useAuth(),[N,u]=l.useState(!0),[v,w]=l.useState(!1),[y,g]=l.useState([]),[f,a]=l.useState(null),[d,m]=l.useState(null),[n,p]=l.useState(null),x=h("administration.entra.execute"),c=l.useCallback(async()=>{try{a(null);const o=await j.entraApi.dashboard.getSyncStatus();g(Array.isArray(o)?o:[])}catch(o){console.error("Failed to load Entra dashboard data:",o),g([]);const b=o;b.response?.status===401?a(t("common:errors.sessionExpired")):b.response?.status===403?a(t("common:errors.noPermission")):a(t("entra:dashboard.loadError"))}finally{u(!1),w(!1)}},[t]);l.useEffect(()=>{c()},[c]);const C=()=>{w(!0),c()},A=async o=>{m(o),p(null);try{let b;switch(o){case"users":b=await j.entraApi.sync.syncUsers();break;case"groups":b=await j.entraApi.sync.syncGroups();break;case"memberships":b=await j.entraApi.sync.syncMemberships();break;default:b=await j.entraApi.sync.syncAll()}p(b),await c()}catch(b){console.error("Sync failed:",b);const T=b;T.response?.status===403?a(t("entra:dashboard.syncPermissionDenied")):T.response?.status===401?a(t("common:errors.sessionExpired")):a(t("entra:dashboard.syncError"))}finally{m(null)}},I=async()=>{if(confirm(t("entra:dashboard.forceFullSyncConfirm"))){m("force");try{await j.entraApi.sync.forceFullSync(),await c()}catch(o){console.error("Force full sync failed:",o);const b=o;b.response?.status===403?a(t("entra:dashboard.syncPermissionDenied")):b.response?.status===401?a(t("common:errors.sessionExpired")):a(t("entra:dashboard.syncError"))}finally{m(null)}}},k=o=>o?new Intl.DateTimeFormat("fr-FR",{dateStyle:"medium",timeStyle:"short"}).format(new Date(o)):t("common:never"),D=o=>{switch(o){case"Users":return r.Users;case"Groups":return r.Building2;case"Memberships":return r.Link2;default:return r.Cloud}};if(N)return e.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})});const E=y.reduce((o,b)=>o+b.pendingConflicts,0);return e.jsxs("div",{className:"space-y-6",children:[e.jsx(S.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("entra.title","Microsoft Entra ID"),href:"/administration/entra"},{label:t("entra.dashboard","Dashboard")}]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-[var(--radius-button)] bg-[var(--color-accent-500)]/10",children:e.jsx(r.Cloud,{className:"w-6 h-6 text-[var(--color-accent-500)]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("entra:dashboard.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("entra:dashboard.subtitle")})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:C,disabled:v,className:"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] disabled:opacity-50 transition-colors",children:[e.jsx(r.RefreshCw,{className:`w-4 h-4 ${v?"animate-spin":""}`}),t("common:refresh")]}),e.jsx(S.Tooltip,{content:x?void 0:t("entra:dashboard.noSyncPermission"),position:"bottom",variant:"error",disabled:x,children:e.jsxs("button",{onClick:()=>A("all"),disabled:d!==null||!x,className:"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[d==="all"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Play,{className:"w-4 h-4"}),t("entra:dashboard.syncAll")]})})]})]}),f&&e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2 text-[var(--error-text)]",children:[e.jsx(r.AlertTriangle,{className:"w-5 h-5"}),e.jsx("span",{children:f})]})}),E>0&&e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:e.jsxs("div",{className:"flex items-center gap-2 text-[var(--warning-text)]",children:[e.jsx(r.AlertCircle,{className:"w-5 h-5"}),e.jsx("span",{children:t("entra:dashboard.conflictsWarning",{count:E})})]})}),n&&e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${n.success?"bg-[var(--success-bg)] border-[var(--success-border)]":"bg-[var(--error-bg)] border-[var(--error-border)]"}`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[n.success?e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)]"}):e.jsx(r.XCircle,{className:"w-5 h-5 text-[var(--error-text)]"}),e.jsx("span",{className:n.success?"text-[var(--success-text)]":"text-[var(--error-text)]",children:n.success?t("entra:dashboard.syncSuccess"):t("entra:dashboard.syncFailed")})]}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)]",children:t("entra:dashboard.syncStats",{created:n.created,updated:n.updated,deleted:n.deleted})})]}),n.errorMessage&&e.jsx("p",{className:"mt-2 text-sm text-[var(--error-text)]",children:n.errorMessage})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:y.map(o=>e.jsx(Z,{resourceType:o.resourceType,icon:D(o.resourceType),status:o.status,lastFullSyncAt:o.lastFullSyncAt,lastDeltaSyncAt:o.lastDeltaSyncAt,totalItemsSynced:o.totalItemsSynced,pendingConflicts:o.pendingConflicts,lastError:o.lastError,syncing:d===o.resourceType.toLowerCase(),canSync:x,onSync:()=>A(o.resourceType.toLowerCase()),formatDate:k,t},o.resourceType))}),e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-secondary)]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-[var(--text-primary)]",children:t("entra:dashboard.forceFullSync")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("entra:dashboard.forceFullSyncDescription")})]}),e.jsx(S.Tooltip,{content:x?void 0:t("entra:dashboard.noSyncPermission"),position:"left",variant:"error",disabled:x,children:e.jsxs("button",{onClick:I,disabled:d!==null||!x,className:"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--warning-border)] bg-[var(--warning-bg)] text-[var(--warning-text)] hover:opacity-90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[d==="force"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.AlertTriangle,{className:"w-4 h-4"}),t("entra:dashboard.forceFullSync")]})})]})})]})}const te=t=>t.parentGroupName?e.jsxs("span",{className:"flex items-center gap-1 text-xs",children:[e.jsx(r.GitBranch,{className:"w-3 h-3"}),t.parentGroupName]}):t.childGroupCount>0?e.jsxs("span",{className:"flex items-center gap-1 text-xs text-[var(--text-tertiary)]",children:[t.childGroupCount," child groups"]}):e.jsx("span",{className:"text-xs text-[var(--text-tertiary)]",children:"-"});function se(){const{t}=F.useTranslation(["entra","admin","common"]),{hasPermission:h}=S.useAuth(),{currentTenant:N,isGlobalView:u}=S.useTenant(),v=H.useNavigate(),[w,y]=l.useState(!0),[g,f]=l.useState([]),[a,d]=l.useState([]),[m,n]=l.useState(null),[p,x]=l.useState(""),[c,C]=l.useState(null),[A,I]=l.useState(!1),[k,D]=l.useState(null),[E,o]=l.useState({}),[b,T]=l.useState(null),[M,q]=l.useState("cards"),[G,X]=l.useState("all"),[z,_]=l.useState(!1),U=h("administration.entra.assign"),B=l.useCallback(async()=>{try{n(null);const[s,i]=await Promise.all([j.entraApi.groups.getAll(),S.adminApi.roles.getAssignable()]);f(Array.isArray(s)?s:[]),d(Array.isArray(i)?i:[])}catch(s){console.error("Failed to load Entra groups:",s),f([]),d([]);const i=s;i.response?.status===401?n(t("common:errors.sessionExpired")):i.response?.status===403?n(t("common:errors.noPermission")):i.response?.data?.code==="TENANT_REQUIRED"?n(t("entra:groups.tenantRequired")):n(t("entra:groups.loadError"))}finally{y(!1)}},[t,N?.id,u]);l.useEffect(()=>{B()},[B]);const Q=async s=>{if(E[s]){D(k===s?null:s);return}T(s);try{const i=await j.entraApi.groups.getMembers(s);o(R=>({...R,[s]:i})),D(s)}catch(i){console.error("Failed to load members:",i),n(t("entra:groups.loadMembersError"))}finally{T(null)}},V=l.useCallback(async()=>{const[s,i]=await Promise.all([j.entraApi.groups.getAll(),S.adminApi.roles.getAssignable()]),R=Array.isArray(s)?s:[];return f(R),d(Array.isArray(i)?i:[]),R},[N?.id]),Y=async(s,i=!0)=>{if(c){_(!0);try{await j.entraApi.groups.assignRole(c.id,{roleId:s,isInheritable:i});const P=(await V()).find(O=>O.id===c.id);P&&C(P)}catch(R){console.error("Failed to assign role:",R),n(t("entra:groups.assignError"))}finally{_(!1)}}},J=async(s,i)=>{if(confirm(t("entra:groups.removeRoleConfirm")))try{if(await j.entraApi.groups.removeRole(s,i),await V(),c?.id===s){const P=(await j.entraApi.groups.getAll()).find(O=>O.id===s);P&&C(P)}}catch(R){console.error("Failed to remove role:",R),n(t("entra:groups.removeError"))}},L=g.filter(s=>{const i=s.displayName.toLowerCase().includes(p.toLowerCase())||s.description?.toLowerCase().includes(p.toLowerCase()),R=G==="all"||G==="security"&&s.isSecurityGroup||G==="distribution"&&!s.isSecurityGroup;return i&&R}),W=s=>s?new Intl.DateTimeFormat("fr-FR",{dateStyle:"medium",timeStyle:"short"}).format(new Date(s)):"-";return w?e.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx(S.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("entra.title","Microsoft Entra ID"),href:"/administration/entra"},{label:t("entra.groups","Groups")}]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-[var(--radius-button)] bg-blue-500/10",children:e.jsx(r.Cloud,{className:"w-6 h-6 text-blue-500"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("entra:groups.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("entra:groups.subtitle",{count:g.length})})]})]}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs("button",{onClick:B,className:"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx(r.RefreshCw,{className:"w-4 h-4"}),t("common:refresh")]})})]}),e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-blue-500/10 border border-blue-500/20",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(r.Cloud,{className:"w-5 h-5 text-blue-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-[var(--text-primary)]",children:t("entra:groups.syncedInfo")}),e.jsx("p",{className:"text-xs text-[var(--text-secondary)] mt-1",children:t("entra:groups.syncedInfoDescription")})]})]})}),m&&e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2 text-[var(--error-text)]",children:[e.jsx(r.AlertTriangle,{className:"w-5 h-5"}),e.jsx("span",{children:m}),e.jsx("button",{onClick:()=>n(null),className:"ml-auto p-1 hover:bg-[var(--error-text)]/10 rounded",children:e.jsx(r.X,{className:"w-4 h-4"})})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(r.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",placeholder:t("entra:groups.searchPlaceholder"),value:p,onChange:s=>x(s.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(r.Filter,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsxs("select",{value:G,onChange:s=>X(s.target.value),className:"px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:t("admin:groups.allTypes")}),e.jsx("option",{value:"security",children:t("admin:groups.securityGroup")}),e.jsx("option",{value:"distribution",children:t("admin:groups.distributionGroup")})]})]}),e.jsxs("div",{className:"flex items-center gap-1 p-1 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsx("button",{onClick:()=>q("cards"),className:`p-2 rounded-[var(--radius-button)] transition-colors ${M==="cards"?"bg-[var(--color-accent-500)] text-white":"text-[var(--text-tertiary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-hover)]"}`,title:t("admin:groups.cardView"),children:e.jsx(r.LayoutGrid,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>q("table"),className:`p-2 rounded-[var(--radius-button)] transition-colors ${M==="table"?"bg-[var(--color-accent-500)] text-white":"text-[var(--text-tertiary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-hover)]"}`,title:t("admin:groups.tableView"),children:e.jsx(r.List,{className:"w-4 h-4"})})]})]}),L.length===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:t(p||G!=="all"?"admin:groups.noResults":"entra:groups.noGroups")}),L.length>0&&M==="table"&&e.jsx("div",{className:"rounded-[var(--radius-card)] border border-[var(--border-color)] overflow-hidden",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{className:"bg-[var(--bg-secondary)]",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-[var(--text-secondary)]",children:t("admin:groups.groupName")}),e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-[var(--text-secondary)]",children:t("common:type")}),e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-[var(--text-secondary)]",children:t("admin:groups.members")}),e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-[var(--text-secondary)]",children:t("entra:groups.hierarchy")}),e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-[var(--text-secondary)]",children:t("admin:groups.assignedRoles")}),e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-[var(--text-secondary)]",children:t("entra:groups.lastSynced")}),U&&!u&&e.jsx("th",{className:"px-4 py-3 text-right text-sm font-medium text-[var(--text-secondary)]",children:t("common:actionsColumn")})]})}),e.jsx("tbody",{className:"divide-y divide-[var(--border-color)]",children:L.map(s=>e.jsxs("tr",{className:"hover:bg-[var(--bg-hover)] cursor-pointer",onClick:()=>v(`/administration/users/groups/${s.id}`),children:[e.jsx("td",{className:"px-4 py-3",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center ${s.isSecurityGroup?"bg-blue-500/10 text-blue-500":"bg-purple-500/10 text-purple-500"}`,children:s.isSecurityGroup?e.jsx(r.Shield,{className:"w-4 h-4"}):e.jsx(r.Building2,{className:"w-4 h-4"})}),e.jsxs("div",{children:[e.jsx("span",{className:"font-medium text-[var(--text-primary)]",children:s.displayName}),s.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] truncate max-w-xs",children:s.description})]})]})}),e.jsx("td",{className:"px-4 py-3",children:e.jsx("span",{className:`px-2 py-1 text-xs rounded-[var(--radius-badge)] ${s.isSecurityGroup?"bg-blue-500/10 text-blue-500":"bg-purple-500/10 text-purple-500"}`,children:s.isSecurityGroup?t("admin:groups.securityGroup"):t("admin:groups.distributionGroup")})}),e.jsx("td",{className:"px-4 py-3 text-sm text-[var(--text-secondary)]",children:e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(r.Users,{className:"w-4 h-4"}),s.memberCount]})}),e.jsx("td",{className:"px-4 py-3 text-sm text-[var(--text-secondary)]",children:te(s)}),e.jsx("td",{className:"px-4 py-3",children:e.jsxs("div",{className:"flex flex-wrap gap-1",children:[s.assignedRoles.slice(0,2).map(i=>e.jsx("span",{className:"px-2 py-0.5 text-xs rounded-[var(--radius-badge)] bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]",children:i.roleName},i.roleId)),s.assignedRoles.length>2&&e.jsxs("span",{className:"px-2 py-0.5 text-xs rounded-[var(--radius-badge)] bg-[var(--bg-tertiary)] text-[var(--text-tertiary)]",children:["+",s.assignedRoles.length-2]}),s.inheritedRoles.length>0&&e.jsxs("span",{className:"px-2 py-0.5 text-xs rounded-[var(--radius-badge)] bg-green-500/10 text-green-600",title:t("entra:groups.inheritedRoles"),children:["+",s.inheritedRoles.length," ",t("entra:groups.inherited")]})]})}),e.jsx("td",{className:"px-4 py-3 text-xs text-[var(--text-tertiary)]",children:W(s.lastSyncedAt)}),U&&!u&&e.jsx("td",{className:"px-4 py-3 text-right",onClick:i=>i.stopPropagation(),children:e.jsx("button",{onClick:()=>{C(s),I(!0)},className:"p-2 rounded-[var(--radius-button)] text-[var(--text-tertiary)] hover:text-[var(--color-accent-500)] hover:bg-[var(--bg-hover)] transition-colors",title:t("admin:groups.assignRole"),children:e.jsx(r.Plus,{className:"w-4 h-4"})})})]},s.id))})]})}),L.length>0&&M!=="table"&&e.jsx("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:L.map(s=>e.jsxs("button",{type:"button",className:"rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-secondary)] overflow-hidden cursor-pointer hover:border-[var(--color-accent-500)] transition-colors text-left",onClick:()=>v(`/administration/users/groups/${s.id}`),children:[e.jsxs("div",{className:"p-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3 min-w-0",children:[e.jsx("div",{className:`p-2.5 rounded-[var(--radius-button)] flex-shrink-0 ${s.isSecurityGroup?"bg-blue-500/10 text-blue-500":"bg-purple-500/10 text-purple-500"}`,children:s.isSecurityGroup?e.jsx(r.Shield,{className:"w-5 h-5"}):e.jsx(r.Building2,{className:"w-5 h-5"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"font-semibold text-[var(--text-primary)] truncate",children:s.displayName}),e.jsx("span",{className:`px-2 py-0.5 text-xs rounded-[var(--radius-badge)] ${s.isSecurityGroup?"bg-blue-500/10 text-blue-500 border border-blue-500/20":"bg-purple-500/10 text-purple-500 border border-purple-500/20"}`,children:s.isSecurityGroup?t("admin:groups.securityGroup"):t("admin:groups.distributionGroup")}),!s.isActive&&e.jsx("span",{className:"px-2 py-0.5 text-xs rounded-[var(--radius-badge)] bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:t("common:inactive")})]}),s.description&&e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1 line-clamp-2",children:s.description}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-sm text-[var(--text-tertiary)] flex-wrap",children:[e.jsxs("button",{onClick:i=>{i.stopPropagation(),Q(s.id)},className:"flex items-center gap-1 hover:text-[var(--color-accent-500)] transition-colors",children:[e.jsx(r.Users,{className:"w-4 h-4"}),t("admin:groups.memberCount",{count:s.memberCount}),b===s.id&&e.jsx(r.Loader2,{className:"w-3 h-3 animate-spin ml-1"}),b!==s.id&&k===s.id&&e.jsx(r.ChevronUp,{className:"w-3 h-3 ml-1"}),b!==s.id&&k!==s.id&&e.jsx(r.ChevronDown,{className:"w-3 h-3 ml-1"})]}),s.childGroupCount>0&&e.jsxs("span",{className:"flex items-center gap-1 text-xs",children:[e.jsx(r.GitBranch,{className:"w-3 h-3"}),s.childGroupCount," ",t("entra:groups.childGroups")]})]}),s.parentGroupName&&e.jsxs("p",{className:"text-xs text-[var(--text-tertiary)] mt-1 flex items-center gap-1",children:[e.jsx(r.GitBranch,{className:"w-3 h-3"}),t("entra:groups.parentGroup"),": ",s.parentGroupName]}),e.jsxs("p",{className:"text-xs text-[var(--text-tertiary)] mt-1",children:[t("entra:groups.lastSynced"),": ",W(s.lastSyncedAt)]})]})]}),U&&!u&&e.jsxs("button",{onClick:i=>{i.stopPropagation(),C(s),I(!0)},className:"inline-flex items-center gap-1 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] transition-colors flex-shrink-0",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),t("admin:groups.assignRole")]})]}),(s.assignedRoles.length>0||s.inheritedRoles.length>0)&&e.jsxs("div",{className:"mt-4 pt-4 border-t border-[var(--border-color)]",children:[s.assignedRoles.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("h4",{className:"text-sm font-medium text-[var(--text-primary)] mb-2",children:t("admin:groups.assignedRoles")}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-3",children:s.assignedRoles.map(i=>e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-badge)] bg-[var(--bg-primary)] border border-[var(--border-color)] group",children:[e.jsx(r.Shield,{className:"w-4 h-4 text-[var(--color-accent-500)]"}),e.jsx("span",{className:"text-sm text-[var(--text-primary)]",children:i.roleName}),i.isInheritable&&e.jsx("span",{className:"text-xs text-green-600",title:t("entra:groups.inheritableRole"),children:"↓"}),U&&e.jsx("button",{onClick:R=>{R.stopPropagation(),J(s.id,i.roleId)},className:"ml-1 p-0.5 rounded opacity-0 group-hover:opacity-100 hover:bg-[var(--error-bg)] text-[var(--text-tertiary)] hover:text-[var(--error-text)] transition-all",title:t("common:remove"),children:e.jsx(r.X,{className:"w-3 h-3"})})]},i.roleId))})]}),s.inheritedRoles.length>0&&e.jsxs(e.Fragment,{children:[e.jsxs("h4",{className:"text-xs font-medium text-[var(--text-tertiary)] mb-2 flex items-center gap-1",children:[e.jsx(r.GitBranch,{className:"w-3 h-3"}),t("entra:groups.inheritedRoles")]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:s.inheritedRoles.map(i=>e.jsxs("div",{className:"inline-flex items-center gap-2 px-2 py-1 rounded-[var(--radius-badge)] bg-green-500/5 border border-green-500/20",title:`${t("entra:groups.inheritedFrom")} ${i.sourceGroupName}`,children:[e.jsx(r.Shield,{className:"w-3 h-3 text-green-600"}),e.jsx("span",{className:"text-xs text-green-700",children:i.roleName}),e.jsxs("span",{className:"text-xs text-green-600/60",children:["← ",i.sourceGroupName]})]},`${i.roleId}-${i.sourceGroupId}`))})]})]})]}),k===s.id&&E[s.id]&&e.jsx("div",{className:"border-t border-[var(--border-color)] bg-[var(--bg-primary)]",onClick:i=>i.stopPropagation(),onKeyDown:i=>i.stopPropagation(),role:"presentation",children:e.jsxs("div",{className:"p-4",children:[e.jsxs("h4",{className:"text-sm font-medium text-[var(--text-primary)] mb-3 flex items-center gap-2",children:[e.jsx(r.Users,{className:"w-4 h-4"}),t("admin:groups.members")," (",E[s.id].length,")"]}),E[s.id].length===0?e.jsx("p",{className:"text-sm text-[var(--text-tertiary)]",children:t("admin:groups.noMembers")}):e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2 max-h-64 overflow-y-auto",children:E[s.id].slice(0,10).map(i=>e.jsxs(H.Link,{to:`/administration/users/${i.userId}`,className:"flex items-center gap-3 p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx("div",{className:"w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]",children:i.fullName.charAt(0).toUpperCase()}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] truncate",children:i.fullName}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] truncate",children:i.email})]}),!i.isDirect&&i.sourceGroupName&&e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] flex items-center gap-1",title:t("entra:groups.memberFromChildGroup"),children:e.jsx(r.GitBranch,{className:"w-3 h-3"})})]},i.userId))}),E[s.id].length>10&&e.jsx("p",{className:"mt-3 text-center text-sm text-[var(--text-tertiary)]",children:t("admin:groups.showingMembers",{shown:10,total:E[s.id].length})})]})})]},s.id))}),A&&c&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",children:e.jsxs("div",{className:"w-full max-w-md rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)] shadow-xl",children:[e.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-[var(--border-color)]",children:[e.jsx("h2",{className:"text-lg font-semibold text-[var(--text-primary)]",children:t("admin:groups.assignRoleTitle")}),e.jsx("button",{onClick:()=>{I(!1),C(null)},className:"p-1 rounded hover:bg-[var(--bg-hover)] text-[var(--text-tertiary)]",children:e.jsx(r.X,{className:"w-5 h-5"})})]}),e.jsxs("div",{className:"p-4",children:[e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mb-4",children:t("admin:groups.assignRoleDescription",{group:c.displayName})}),e.jsxs("div",{className:"space-y-2 max-h-64 overflow-y-auto",children:[a.filter(s=>!c.assignedRoles.some(i=>i.roleId===s.id)).map(s=>e.jsxs("button",{onClick:()=>Y(s.id),disabled:z,className:"w-full flex items-center gap-3 p-3 rounded-[var(--radius-button)] border border-[var(--border-color)] hover:border-[var(--color-accent-500)] hover:bg-[var(--bg-hover)] transition-colors text-left disabled:opacity-50",children:[e.jsx(r.Shield,{className:"w-5 h-5 text-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:s.name}),s.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:s.description})]}),z&&e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin text-[var(--color-accent-500)]"})]},s.id)),a.filter(s=>!c.assignedRoles.some(i=>i.roleId===s.id)).length===0&&e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] text-center py-4",children:t("admin:groups.allRolesAssigned")})]})]})]})})]})}function re(){const{t}=F.useTranslation(["entra","common"]),h=H.useNavigate(),[N,u]=l.useState(!0),[v,w]=l.useState([]),[y,g]=l.useState(null),f=l.useCallback(async()=>{try{u(!0),g(null);const n=await S.adminApi.users.getAll({pageSize:1e3,entraOnly:!0});w(n?.items??[])}catch(n){console.error("Failed to load users:",n);const p=n;p.response?.status===401?g(t("common:errors.sessionExpired")):p.response?.status===403?g(t("common:errors.noPermission")):g(t("entra:users.loadError"))}finally{u(!1)}},[t]);l.useEffect(()=>{f()},[f]);const a=n=>n?new Intl.DateTimeFormat("fr-FR",{dateStyle:"medium",timeStyle:"short"}).format(new Date(n)):t("common:never"),d=[{key:"fullName",label:t("entra:users.columns.user"),sortable:!0,render:n=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-primary-100)] dark:bg-[var(--color-primary-900)] flex items-center justify-center flex-shrink-0",children:e.jsx("span",{className:"text-sm font-medium text-[var(--color-primary-600)]",children:n.fullName?.charAt(0).toUpperCase()||"?"})}),e.jsx("span",{className:"font-medium text-[var(--text-primary)]",children:n.fullName})]})},{key:"email",label:t("entra:users.columns.email"),sortable:!0,render:n=>e.jsxs("div",{className:"flex items-center gap-1 text-sm text-[var(--text-secondary)]",children:[e.jsx(r.Mail,{className:"w-4 h-4"}),n.email]})},{key:"isActive",label:t("entra:users.columns.status"),sortable:!0,render:n=>n.isActive?e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 text-xs rounded-full bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",children:[e.jsx(r.CheckCircle,{className:"w-3 h-3"}),t("common:active")]}):e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 text-xs rounded-full bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400",children:[e.jsx(r.XCircle,{className:"w-3 h-3"}),t("common:inactive")]})},{key:"lastEntraSyncAt",label:t("entra:users.columns.lastSync"),sortable:!0,render:n=>e.jsxs("div",{className:"flex items-center gap-1 text-sm text-[var(--text-secondary)]",children:[e.jsx(r.Calendar,{className:"w-4 h-4"}),a(n.lastEntraSyncAt)]})},{key:"actions",label:t("entra:users.columns.actions"),align:"right",render:n=>e.jsxs("button",{onClick:p=>{p.stopPropagation(),h(`/administration/users/${n.id}`)},className:"inline-flex items-center gap-1 text-sm text-[var(--color-primary-600)] hover:underline",children:[t("common:viewDetails"),e.jsx(r.ExternalLink,{className:"w-4 h-4"})]})}],m=(n,p)=>{const x=p.toLowerCase();return n.fullName?.toLowerCase().includes(x)||n.email?.toLowerCase().includes(x)||!1};return e.jsxs("div",{className:"space-y-6",children:[e.jsx(S.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("entra.title","Microsoft Entra ID"),href:"/administration/entra"},{label:t("entra.users","Users")}]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-[var(--color-primary-100)] dark:bg-[var(--color-primary-900)]",children:e.jsx(r.Users,{className:"w-6 h-6 text-[var(--color-primary-600)]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("entra:users.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("entra:users.subtitle",{count:v.length})})]})]}),e.jsxs("button",{onClick:f,className:"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-lg border border-[var(--border-primary)] bg-[var(--bg-primary)] text-[var(--text-primary)] hover:bg-[var(--bg-secondary)]",children:[e.jsx(r.RefreshCw,{className:"w-4 h-4"}),t("common:refresh")]})]}),y&&e.jsx("div",{className:"p-4 rounded-lg bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800",children:e.jsxs("div",{className:"flex items-center gap-2 text-red-700 dark:text-red-400",children:[e.jsx(r.AlertTriangle,{className:"w-5 h-5"}),e.jsx("span",{children:y})]})}),e.jsx(S.DataTable,{data:v,columns:d,loading:N,searchable:!0,searchPlaceholder:t("entra:users.searchPlaceholder"),searchFilter:m,pagination:{pageSize:20,showSizeSelector:!0},onRowClick:n=>h(`/administration/users/${n.id}`),getRowKey:n=>n.id,emptyMessage:t("entra:users.noUsers"),emptyIcon:e.jsx(r.Users,{className:"w-12 h-12 mx-auto text-[var(--text-secondary)] opacity-50"}),defaultSortKey:"fullName",striped:!0})]})}function ae(){const{t}=F.useTranslation(["entra","common"]),[h,N]=l.useState(!0),[u,v]=l.useState([]),[w,y]=l.useState(null),[g,f]=l.useState(null),[a,d]=l.useState(!1),m=l.useRef(null),n=l.useRef(!1),p=l.useCallback(async()=>{if(!n.current){m.current&&m.current.abort(),m.current=new AbortController,n.current=!0;try{y(null);const c=await j.entraApi.conflicts.getAll();v(Array.isArray(c)?c:[])}catch(c){if(c instanceof Error&&c.name==="AbortError")return;console.error("Failed to load conflicts:",c instanceof Error?c.message:"Unknown error"),v([]);const C=c;C.response?.status===401?y(t("common:errors.sessionExpired")):C.response?.status===403?y(t("common:errors.noPermission")):y(t("entra:conflicts.loadError"))}finally{n.current=!1,N(!1)}}},[t]);l.useEffect(()=>(p(),()=>{m.current&&m.current.abort()}),[p]);const x=l.useCallback(async(c,C)=>{if(!(!g||a)){d(!0);try{await j.entraApi.conflicts.resolve(g.id,{resolution:c,notes:C||void 0}),f(null),await p()}catch(A){console.error("Failed to resolve conflict:",A instanceof Error?A.message:"Unknown error"),y(t("entra:conflicts.resolveError"))}finally{d(!1)}}},[g,a,p,t]);return h?e.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx(S.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("entra.title","Microsoft Entra ID"),href:"/administration/entra"},{label:t("entra.conflicts","Conflicts")}]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-[var(--radius-button)] bg-[var(--color-accent-500)]/10",children:e.jsx(r.AlertTriangle,{className:"w-6 h-6 text-[var(--color-accent-600)]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("entra:conflicts.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("entra:conflicts.subtitle",{count:u.length})})]})]}),e.jsxs("button",{onClick:p,disabled:h,className:"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-tertiary)] transition-colors disabled:opacity-50",children:[e.jsx(r.RefreshCw,{className:`w-4 h-4 ${h?"animate-spin":""}`}),t("common:refresh")]})]}),w&&e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2 text-[var(--error-text)]",children:[e.jsx(r.AlertTriangle,{className:"w-5 h-5"}),e.jsx("span",{children:w})]}),e.jsx("button",{onClick:()=>y(null),className:"text-[var(--error-text)] hover:opacity-70",children:"×"})]})}),u.length===0?e.jsxs("div",{className:"text-center py-16 px-6 rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-card)]",children:[e.jsx("div",{className:"mx-auto w-16 h-16 rounded-full bg-[var(--success-bg)] flex items-center justify-center mb-4",children:e.jsx(r.CheckCircle,{className:"w-8 h-8 text-[var(--success-text)]"})}),e.jsx("h2",{className:"text-xl font-semibold text-[var(--text-primary)] mb-2",children:t("entra:conflicts.noConflicts")}),e.jsx("p",{className:"text-[var(--text-secondary)] max-w-md mx-auto",children:t("entra:conflicts.noConflictsDescription")})]}):e.jsx("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:u.map(c=>e.jsx(j.ConflictCard,{conflict:c,onResolve:f},c.id))}),g&&e.jsx(j.ResolutionModal,{conflict:g,onClose:()=>f(null),onResolve:x,resolving:a})]})}const ne=[{id:"member",labelKey:"userTypes.member",descriptionKey:"userTypes.memberDescription",supported:!0},{id:"guest",labelKey:"userTypes.guest",descriptionKey:"userTypes.guestDescription",supported:!0},{id:"shared",labelKey:"userTypes.shared",descriptionKey:"userTypes.sharedDescription",supported:!1},{id:"room",labelKey:"userTypes.room",descriptionKey:"userTypes.roomDescription",supported:!1},{id:"equipment",labelKey:"userTypes.equipment",descriptionKey:"userTypes.equipmentDescription",supported:!1}],ie=[{code:"User.Read.All",descriptionKey:"userReadAll"},{code:"Group.Read.All",descriptionKey:"groupReadAll"},{code:"GroupMember.Read.All",descriptionKey:"groupMemberReadAll"}];function $({icon:t,title:h,description:N,action:u,children:v,className:w=""}){return e.jsxs("div",{className:`rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-card)] shadow-sm overflow-hidden ${w}`,children:[e.jsx("div",{className:"px-6 py-4 border-b border-[var(--border-subtle)] bg-[var(--bg-secondary)]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-[var(--radius-button)] bg-[var(--color-accent-100)] dark:bg-[var(--color-accent-900)]/30",children:e.jsx(t,{className:"w-5 h-5 text-[var(--color-accent-500)]"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-semibold text-[var(--text-primary)]",children:h}),N&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:N})]})]}),u]})}),e.jsx("div",{className:"p-6",children:v})]})}function K({checked:t,onChange:h,label:N,description:u}){return e.jsxs("div",{className:"flex items-center justify-between py-3",children:[e.jsxs("div",{className:"flex-1 min-w-0 pr-4",children:[e.jsx("label",{className:"text-sm font-medium text-[var(--text-primary)]",children:N}),u&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:u})]}),e.jsx("button",{type:"button",role:"switch","aria-checked":t,onClick:h,className:`relative inline-flex h-6 w-11 flex-shrink-0 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:ring-offset-2 focus:ring-offset-[var(--bg-primary)] ${t?"bg-[var(--color-accent-600)]":"bg-[var(--bg-tertiary)]"}`,children:e.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-[var(--toggle-knob)] shadow-md transition-transform ${t?"translate-x-6":"translate-x-1"}`})})]})}const le=t=>t?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t):!0,ce=()=>{const{t}=F.useTranslation(["entra","common"]),[h,N]=l.useState(!0),[u,v]=l.useState(!1),[w,y]=l.useState(!1),[g,f]=l.useState(null),[a,d]=l.useState(!1),[m,n]=l.useState(null),[p,x]=l.useState(null),[c,C]=l.useState(!1),[A,I]=l.useState(null),[k,D]=l.useState({}),[E,o]=l.useState({tenantId:"",clientId:"",clientSecret:""}),[b,T]=l.useState({syncEnabled:!1,syncIntervalMinutes:60,useDeltaSync:!0,defaultConflictResolution:"ManualReview",autoCreateReferences:!0,syncOnlyActiveUsers:!0,syncUserTypes:"member"});return{t,loading:h,setLoading:N,saving:u,setSaving:v,testing:w,setTesting:y,testResult:g,setTestResult:f,showSecret:a,setShowSecret:d,error:m,setError:n,success:p,setSuccess:x,hasExistingSecret:c,setHasExistingSecret:C,copiedPermission:A,setCopiedPermission:I,validationErrors:k,setValidationErrors:D,credentials:E,setCredentials:o,syncSettings:b,setSyncSettings:T}};function oe(t,h){return t?"opacity-50 cursor-not-allowed border-[var(--border-color)] bg-[var(--bg-tertiary)]":h?"cursor-pointer border-[var(--color-accent-500)] bg-[var(--color-accent-50)] dark:bg-[var(--color-accent-900)]/20":"cursor-pointer border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-tertiary)]"}function de(){const t=ce(),h=l.useCallback(async()=>{try{t.setLoading(!0);const a=await j.entraApi.settings.getConfiguration();t.setCredentials({tenantId:a.tenantId||"",clientId:a.clientId||"",clientSecret:""}),t.setHasExistingSecret(a.hasClientSecret),t.setSyncSettings({syncEnabled:a.syncEnabled,syncIntervalMinutes:a.syncIntervalMinutes,useDeltaSync:a.useDeltaSync,defaultConflictResolution:a.defaultConflictResolution,autoCreateReferences:a.autoCreateReferences,syncOnlyActiveUsers:a.syncOnlyActiveUsers??!0,syncUserTypes:a.syncUserTypes??"member"})}catch(a){console.error("Failed to load configuration:",a),t.setError(t.t("entra:settings.saveError"))}finally{t.setLoading(!1)}},[]);l.useEffect(()=>{h()},[h]);const N=async a=>{try{await navigator.clipboard.writeText(a),t.setCopiedPermission(a),setTimeout(()=>t.setCopiedPermission(null),2e3)}catch(d){console.error("Failed to copy:",d)}},u=(a,d)=>{const m=le(d)?void 0:t.t("entra:settings.invalidGuidFormat");t.setValidationErrors(n=>({...n,[a]:m}))},v=(a,d)=>{t.setCredentials(m=>({...m,[a]:d})),(a==="tenantId"||a==="clientId")&&u(a,d)},w=!!(t.validationErrors.tenantId||t.validationErrors.clientId),y=async()=>{t.setTesting(!0),t.setTestResult(null),t.setError(null),t.setSuccess(null);try{let a;if(t.credentials.clientSecret)a=await j.entraApi.settings.testConnection({tenantId:t.credentials.tenantId,clientId:t.credentials.clientId,clientSecret:t.credentials.clientSecret});else if(t.hasExistingSecret)a=await j.entraApi.settings.testStoredConnection();else{t.setError(t.t("entra:settings.testFailed")),t.setTesting(!1);return}t.setTestResult(a),a.success?t.setSuccess(t.t("entra:settings.testSuccess")):t.setError(a.errorMessage||t.t("entra:settings.testFailed"))}catch(a){console.error("Connection test failed:",a),t.setTestResult({success:!1,errorMessage:t.t("entra:settings.testFailed"),tenantName:null,userCount:null,groupCount:null}),t.setError(t.t("entra:settings.testFailed"))}finally{t.setTesting(!1)}},g=async()=>{t.setSaving(!0),t.setError(null),t.setSuccess(null);try{await j.entraApi.settings.saveCredentials({tenantId:t.credentials.tenantId,clientId:t.credentials.clientId,clientSecret:t.credentials.clientSecret}),t.setSuccess(t.t("entra:settings.credentialsSaved")),t.setHasExistingSecret(!0),t.setCredentials(a=>({...a,clientSecret:""}))}catch(a){console.error("Failed to save credentials:",a),t.setError(t.t("entra:settings.saveError"))}finally{t.setSaving(!1)}},f=async()=>{t.setSaving(!0),t.setError(null),t.setSuccess(null);try{await j.entraApi.settings.saveSyncSettings({syncEnabled:t.syncSettings.syncEnabled,syncIntervalMinutes:t.syncSettings.syncIntervalMinutes,useDeltaSync:t.syncSettings.useDeltaSync,defaultConflictResolution:t.syncSettings.defaultConflictResolution,autoCreateReferences:t.syncSettings.autoCreateReferences,syncOnlyActiveUsers:t.syncSettings.syncOnlyActiveUsers,syncUserTypes:t.syncSettings.syncUserTypes}),t.setSuccess(t.t("entra:settings.settingsSaved"))}catch(a){console.error("Failed to save settings:",a),t.setError(t.t("entra:settings.saveError"))}finally{t.setSaving(!1)}};return t.loading?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx(S.Breadcrumb,{items:[{label:t.t("header.title"),href:"/administration"},{label:t.t("entra.title","Microsoft Entra ID"),href:"/administration/entra"},{label:t.t("entra.settings","Settings")}]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"p-3 rounded-[var(--radius-card)] bg-gradient-to-br from-[var(--color-accent-500)] to-[var(--color-accent-700)] shadow-lg",children:e.jsx(r.Settings,{className:"w-7 h-7 text-white"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t.t("entra:settings.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t.t("entra:settings.subtitle")})]})]}),e.jsx("div",{className:"rounded-[var(--radius-card)] border-2 border-[var(--warning-border)] bg-[var(--warning-bg)] overflow-hidden",children:e.jsx("div",{className:"px-5 py-4",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("div",{className:"p-2 rounded-[var(--radius-button)] bg-[var(--warning-border)]",children:e.jsx(r.Shield,{className:"w-5 h-5 text-[var(--warning-text)]"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4 mb-2",children:[e.jsx("h2",{className:"font-semibold text-[var(--warning-text)]",children:t.t("entra:settings.permissionsWarningTitle")}),e.jsxs("a",{href:"https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--warning-border)] text-[var(--warning-text)] hover:opacity-80 transition-opacity",children:[t.t("entra:settings.configureInAzure"),e.jsx(r.ExternalLink,{className:"w-3.5 h-3.5"})]})]}),e.jsx("p",{className:"text-sm text-[var(--warning-text)] opacity-90 mb-4",children:t.t("entra:settings.permissionsWarningDescription")}),e.jsx("div",{className:"flex flex-wrap gap-2",children:ie.map(a=>e.jsxs("button",{onClick:()=>N(a.code),className:"group inline-flex items-center gap-2 px-3 py-2 rounded-[var(--radius-button)] bg-[var(--bg-primary)] border border-[var(--warning-border)] hover:border-[var(--warning-dot)] transition-all hover:shadow-sm",title:t.t(`entra:settings.permissions.${a.descriptionKey}`),children:[e.jsx("code",{className:"text-sm font-mono font-medium text-[var(--text-primary)]",children:a.code}),t.copiedPermission===a.code?e.jsx(r.Check,{className:"w-4 h-4 text-[var(--success-text)]"}):e.jsx(r.Copy,{className:"w-4 h-4 text-[var(--warning-text)] group-hover:opacity-80"})]},a.code))})]})]})})}),t.error&&e.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:[e.jsx(r.AlertTriangle,{className:"w-5 h-5 text-[var(--error-text)] flex-shrink-0"}),e.jsx("span",{className:"text-sm text-[var(--error-text)]",children:t.error})]}),t.success&&e.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:[e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)] flex-shrink-0"}),e.jsx("span",{className:"text-sm text-[var(--success-text)]",children:t.success})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsx($,{icon:r.Key,title:t.t("entra:settings.credentials"),description:"Azure AD Application",action:e.jsxs("a",{href:"https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-sm text-[var(--color-accent-500)] hover:text-[var(--color-accent-600)] transition-colors",children:[t.t("entra:settings.azurePortal"),e.jsx(r.ExternalLink,{className:"w-4 h-4"})]}),children:e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:t.t("entra:settings.tenantId")}),e.jsx("input",{type:"text",value:t.credentials.tenantId,onChange:a=>v("tenantId",a.target.value),placeholder:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",autoComplete:"off",className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border bg-[var(--bg-secondary)] text-[var(--text-primary)] font-mono text-sm focus:outline-none focus:ring-2 focus:border-transparent transition-shadow ${t.validationErrors.tenantId?"border-[var(--error-border)] focus:ring-[var(--error-border)]":"border-[var(--border-color)] focus:ring-[var(--color-accent-500)]"}`}),t.validationErrors.tenantId?e.jsx("p",{className:"mt-1.5 text-xs text-[var(--error-text)]",children:t.validationErrors.tenantId}):e.jsx("p",{className:"mt-1.5 text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.tenantIdHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:t.t("entra:settings.clientId")}),e.jsx("input",{type:"text",value:t.credentials.clientId,onChange:a=>v("clientId",a.target.value),placeholder:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",autoComplete:"off",className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border bg-[var(--bg-secondary)] text-[var(--text-primary)] font-mono text-sm focus:outline-none focus:ring-2 focus:border-transparent transition-shadow ${t.validationErrors.clientId?"border-[var(--error-border)] focus:ring-[var(--error-border)]":"border-[var(--border-color)] focus:ring-[var(--color-accent-500)]"}`}),t.validationErrors.clientId?e.jsx("p",{className:"mt-1.5 text-xs text-[var(--error-text)]",children:t.validationErrors.clientId}):e.jsx("p",{className:"mt-1.5 text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.clientIdHelp")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[t.t("entra:settings.clientSecret"),t.hasExistingSecret&&e.jsxs("span",{className:"ml-2 inline-flex items-center gap-1 text-xs text-[var(--success-text)]",children:[e.jsx(r.CheckCircle,{className:"w-3 h-3"}),t.t("common:configured")]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:t.showSecret?"text":"password",value:t.credentials.clientSecret,onChange:a=>v("clientSecret",a.target.value),placeholder:t.hasExistingSecret?"••••••••••••••••••••••••••••••••••••••••":"OvA8Q~xxxxxxxxxxxxxxxxxxxxxxxxxxxx",autoComplete:"new-password",className:"w-full px-3 py-2.5 pr-10 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] font-mono text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-transparent transition-shadow"}),e.jsx("button",{type:"button",onClick:()=>t.setShowSecret(!t.showSecret),className:"absolute right-3 top-1/2 -translate-y-1/2 p-1 text-[var(--text-tertiary)] hover:text-[var(--text-primary)] transition-colors",children:t.showSecret?e.jsx(r.EyeOff,{className:"w-4 h-4"}):e.jsx(r.Eye,{className:"w-4 h-4"})})]}),e.jsx("p",{className:"mt-1.5 text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.clientSecretHelp")})]}),e.jsxs("div",{className:"flex items-center gap-3 pt-2",children:[e.jsxs("button",{onClick:y,disabled:t.testing||w||!t.credentials.tenantId||!t.credentials.clientId||!t.credentials.clientSecret&&!t.hasExistingSecret,className:"inline-flex items-center gap-2 px-4 py-2.5 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-tertiary)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[t.testing&&e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}),!t.testing&&t.testResult?.success&&e.jsx(r.CheckCircle,{className:"w-4 h-4 text-[var(--success-text)]"}),!t.testing&&t.testResult&&!t.testResult.success&&e.jsx(r.AlertTriangle,{className:"w-4 h-4 text-[var(--error-text)]"}),!t.testing&&!t.testResult&&e.jsx(r.TestTube,{className:"w-4 h-4"}),t.t("entra:settings.testConnection")]}),e.jsxs("button",{onClick:g,disabled:t.saving||w||!t.credentials.tenantId||!t.credentials.clientId||!t.credentials.clientSecret,className:"inline-flex items-center gap-2 px-4 py-2.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors shadow-sm",children:[t.saving?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),t.t("common:save")]})]}),t.testResult?.success&&e.jsxs("div",{className:"mt-4 p-4 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)]"}),e.jsx("span",{className:"font-medium text-[var(--success-text)]",children:t.t("entra:settings.connectionSuccessful")})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[t.testResult.tenantName&&e.jsxs("div",{className:"flex items-center gap-2 p-2 rounded-[var(--radius-button)] bg-[var(--bg-primary)]",children:[e.jsx(r.Building2,{className:"w-4 h-4 text-[var(--success-text)]"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.tenantName")}),e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] truncate",children:t.testResult.tenantName})]})]}),t.testResult.userCount!==null&&e.jsxs("div",{className:"flex items-center gap-2 p-2 rounded-[var(--radius-button)] bg-[var(--bg-primary)]",children:[e.jsx(r.Users,{className:"w-4 h-4 text-[var(--success-text)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.userCount")}),e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)]",children:t.testResult.userCount})]})]}),t.testResult.groupCount!==null&&e.jsxs("div",{className:"flex items-center gap-2 p-2 rounded-[var(--radius-button)] bg-[var(--bg-primary)]",children:[e.jsx(r.Layers,{className:"w-4 h-4 text-[var(--success-text)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.groupCount")}),e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)]",children:t.testResult.groupCount})]})]})]})]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx($,{icon:r.Clock,title:t.t("entra:settings.syncSettings"),description:"Scheduling & Performance",children:e.jsxs("div",{className:"divide-y divide-[var(--border-subtle)]",children:[e.jsx(K,{checked:t.syncSettings.syncEnabled,onChange:()=>t.setSyncSettings(a=>({...a,syncEnabled:!a.syncEnabled})),label:t.t("entra:settings.syncEnabled"),description:t.t("entra:settings.syncEnabledHelp")}),e.jsxs("div",{className:"py-4",children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-2",children:t.t("entra:settings.syncInterval")}),e.jsxs("select",{value:t.syncSettings.syncIntervalMinutes,onChange:a=>t.setSyncSettings(d=>({...d,syncIntervalMinutes:Number(a.target.value)})),className:"w-full px-3 py-2.5 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow",children:[e.jsxs("option",{value:15,children:["15 ",t.t("common:minutes")]}),e.jsxs("option",{value:30,children:["30 ",t.t("common:minutes")]}),e.jsxs("option",{value:60,children:["1 ",t.t("common:hour")]}),e.jsxs("option",{value:120,children:["2 ",t.t("common:hours")]}),e.jsxs("option",{value:360,children:["6 ",t.t("common:hours")]}),e.jsxs("option",{value:720,children:["12 ",t.t("common:hours")]}),e.jsxs("option",{value:1440,children:["24 ",t.t("common:hours")]})]})]}),e.jsx(K,{checked:t.syncSettings.useDeltaSync,onChange:()=>t.setSyncSettings(a=>({...a,useDeltaSync:!a.useDeltaSync})),label:t.t("entra:settings.useDeltaSync"),description:t.t("entra:settings.useDeltaSyncHelp")}),e.jsx(K,{checked:t.syncSettings.autoCreateReferences,onChange:()=>t.setSyncSettings(a=>({...a,autoCreateReferences:!a.autoCreateReferences})),label:t.t("entra:settings.autoCreateReferences"),description:t.t("entra:settings.autoCreateReferencesHelp")})]})}),e.jsx($,{icon:r.GitMerge,title:t.t("entra:settings.conflictResolution"),description:"Data Priority",children:e.jsxs("div",{children:[e.jsxs("select",{value:t.syncSettings.defaultConflictResolution,onChange:a=>t.setSyncSettings(d=>({...d,defaultConflictResolution:a.target.value})),className:"w-full px-3 py-2.5 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow",children:[e.jsx("option",{value:"ManualReview",children:t.t("entra:settings.conflictResolutions.manualReview")}),e.jsx("option",{value:"EntraWins",children:t.t("entra:settings.conflictResolutions.entraWins")}),e.jsx("option",{value:"LocalWins",children:t.t("entra:settings.conflictResolutions.localWins")})]}),e.jsx("p",{className:"mt-2 text-xs text-[var(--text-tertiary)]",children:t.t("entra:settings.conflictResolutionHelp")})]})}),e.jsx($,{icon:r.Filter,title:t.t("entra:settings.userSyncFilters"),description:"User Types & Filters",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx(K,{checked:t.syncSettings.syncOnlyActiveUsers,onChange:()=>t.setSyncSettings(a=>({...a,syncOnlyActiveUsers:!a.syncOnlyActiveUsers})),label:t.t("entra:settings.syncOnlyActiveUsers"),description:t.t("entra:settings.syncOnlyActiveUsersHelp")}),e.jsxs("div",{className:"pt-2 border-t border-[var(--border-subtle)]",children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-2",children:t.t("entra:settings.syncUserTypesLabel")}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mb-3",children:t.t("entra:settings.syncUserTypesHelp")}),e.jsx("div",{className:"space-y-2",children:ne.map(a=>{const d=t.syncSettings.syncUserTypes.split(",").map(x=>x.trim()).filter(Boolean),m=d.includes(a.id),n=!a.supported,p=()=>{if(n)return;let x;m?x=d.filter(c=>c!==a.id):x=[...d,a.id],x.length===0&&(x=["member"]),t.setSyncSettings(c=>({...c,syncUserTypes:x.join(",")}))};return e.jsxs("label",{className:`flex items-start gap-3 p-3 rounded-[var(--radius-button)] border transition-all ${oe(n,m)}`,children:[e.jsx("input",{type:"checkbox",checked:m,onChange:p,disabled:n,className:"mt-0.5 w-4 h-4 rounded border-[var(--border-color)] text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)] disabled:opacity-50"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:t.t(`entra:settings.${a.labelKey}`)}),n&&e.jsx("span",{className:"text-xs px-1.5 py-0.5 rounded bg-[var(--bg-tertiary)] text-[var(--text-tertiary)]",children:t.t("common:comingSoon")})]}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:t.t(`entra:settings.${a.descriptionKey}`)})]})]},a.id)})})]})]})}),e.jsx("div",{className:"flex justify-end",children:e.jsxs("button",{onClick:f,disabled:t.saving,className:"inline-flex items-center gap-2 px-6 py-2.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors shadow-sm",children:[t.saving?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),t.t("common:save")]})})]})]})]})}exports.EntraConflictsPage=ae;exports.EntraDashboardPage=ee;exports.EntraGroupsPage=se;exports.EntraSettingsPage=de;exports.EntraUsersPage=re;
2
+ //# sourceMappingURL=index-DUS-tunb.js.map