@atlashub/smartstack 3.21.0 → 3.24.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.
- package/dist/chunks/{AgentSkillsPage-7si3Ng8e.js → AgentSkillsPage-BWQSCYl-.js} +2 -2
- package/dist/chunks/{AgentSkillsPage-7si3Ng8e.js.map → AgentSkillsPage-BWQSCYl-.js.map} +1 -1
- package/dist/chunks/{AgentSkillsPage-D0cD1QdM.js → AgentSkillsPage-IQcMnBaD.js} +2 -2
- package/dist/chunks/{AgentSkillsPage-D0cD1QdM.js.map → AgentSkillsPage-IQcMnBaD.js.map} +1 -1
- package/dist/chunks/{AgentWorkloadPage-H_7ze33H.js → AgentWorkloadPage-DqrjkvWL.js} +2 -2
- package/dist/chunks/{AgentWorkloadPage-H_7ze33H.js.map → AgentWorkloadPage-DqrjkvWL.js.map} +1 -1
- package/dist/chunks/{AgentWorkloadPage-D4d86cdV.js → AgentWorkloadPage-w-HiyFYP.js} +2 -2
- package/dist/chunks/{AgentWorkloadPage-D4d86cdV.js.map → AgentWorkloadPage-w-HiyFYP.js.map} +1 -1
- package/dist/chunks/{ApiCatalogDetailPage-2ktkRrCb.js → ApiCatalogDetailPage-D3L8Yf4G.js} +3 -3
- package/dist/chunks/{ApiCatalogDetailPage-2ktkRrCb.js.map → ApiCatalogDetailPage-D3L8Yf4G.js.map} +1 -1
- package/dist/chunks/{ApiCatalogDetailPage-BQ53xuwD.js → ApiCatalogDetailPage-MPT3Kz6H.js} +2 -2
- package/dist/chunks/{ApiCatalogDetailPage-BQ53xuwD.js.map → ApiCatalogDetailPage-MPT3Kz6H.js.map} +1 -1
- package/dist/chunks/{ApiCatalogPage-BEqTDJz8.js → ApiCatalogPage-D4Hg3uiS.js} +2 -2
- package/dist/chunks/{ApiCatalogPage-BEqTDJz8.js.map → ApiCatalogPage-D4Hg3uiS.js.map} +1 -1
- package/dist/chunks/{ApiCatalogPage-BBkWSLI8.js → ApiCatalogPage-DRg5Cz0r.js} +2 -2
- package/dist/chunks/{ApiCatalogPage-BBkWSLI8.js.map → ApiCatalogPage-DRg5Cz0r.js.map} +1 -1
- package/dist/chunks/{ApplicationDetailPage-BYJ2YMPq.js → ApplicationDetailPage-Caizuyn2.js} +2 -2
- package/dist/chunks/{ApplicationDetailPage-BYJ2YMPq.js.map → ApplicationDetailPage-Caizuyn2.js.map} +1 -1
- package/dist/chunks/{ApplicationDetailPage-D8-bf1as.js → ApplicationDetailPage-CuCW6aMB.js} +4 -4
- package/dist/chunks/{ApplicationDetailPage-D8-bf1as.js.map → ApplicationDetailPage-CuCW6aMB.js.map} +1 -1
- package/dist/chunks/{ApplicationsDashboardPage-BBlLms2r.js → ApplicationsDashboardPage-B2MW8-Kc.js} +2 -2
- package/dist/chunks/{ApplicationsDashboardPage-BBlLms2r.js.map → ApplicationsDashboardPage-B2MW8-Kc.js.map} +1 -1
- package/dist/chunks/{ApplicationsDashboardPage-DTWZxJJM.js → ApplicationsDashboardPage-BDIjFIYZ.js} +3 -3
- package/dist/chunks/{ApplicationsDashboardPage-DTWZxJJM.js.map → ApplicationsDashboardPage-BDIjFIYZ.js.map} +1 -1
- package/dist/chunks/{ApplicationsGridPage-BQaMsK1K.js → ApplicationsGridPage-DV-FihKj.js} +2 -2
- package/dist/chunks/{ApplicationsGridPage-BQaMsK1K.js.map → ApplicationsGridPage-DV-FihKj.js.map} +1 -1
- package/dist/chunks/{ApplicationsGridPage-DbVcvezt.js → ApplicationsGridPage-DXsTfXPI.js} +2 -2
- package/dist/chunks/{ApplicationsGridPage-DbVcvezt.js.map → ApplicationsGridPage-DXsTfXPI.js.map} +1 -1
- package/dist/chunks/{ApplicationsListPage-DYKM2Yeo.js → ApplicationsListPage--CGkyBuJ.js} +2 -2
- package/dist/chunks/{ApplicationsListPage-DYKM2Yeo.js.map → ApplicationsListPage--CGkyBuJ.js.map} +1 -1
- package/dist/chunks/{ApplicationsListPage-C91v2rZt.js → ApplicationsListPage-JUX823bh.js} +2 -2
- package/dist/chunks/{ApplicationsListPage-C91v2rZt.js.map → ApplicationsListPage-JUX823bh.js.map} +1 -1
- package/dist/chunks/{ApplicationsPage-BCbgotIx.js → ApplicationsPage-6zgFye6w.js} +2 -2
- package/dist/chunks/{ApplicationsPage-BCbgotIx.js.map → ApplicationsPage-6zgFye6w.js.map} +1 -1
- package/dist/chunks/{ApplicationsPage-CW3-Hjlu.js → ApplicationsPage-CQPuuiO6.js} +4 -4
- package/dist/chunks/{ApplicationsPage-CW3-Hjlu.js.map → ApplicationsPage-CQPuuiO6.js.map} +1 -1
- package/dist/chunks/{AssignmentRulesPage-D8vfGDBN.js → AssignmentRulesPage-CFffeEbo.js} +2 -2
- package/dist/chunks/{AssignmentRulesPage-D8vfGDBN.js.map → AssignmentRulesPage-CFffeEbo.js.map} +1 -1
- package/dist/chunks/{AssignmentRulesPage-CxktlEMB.js → AssignmentRulesPage-D78UeUId.js} +2 -2
- package/dist/chunks/{AssignmentRulesPage-CxktlEMB.js.map → AssignmentRulesPage-D78UeUId.js.map} +1 -1
- package/dist/chunks/{AssignmentsPage-DmfBYQAD.js → AssignmentsPage-Cww2ifZF.js} +2 -2
- package/dist/chunks/{AssignmentsPage-DmfBYQAD.js.map → AssignmentsPage-Cww2ifZF.js.map} +1 -1
- package/dist/chunks/{AssignmentsPage-sRCCBmRc.js → AssignmentsPage-DE_QS2LO.js} +2 -2
- package/dist/chunks/{AssignmentsPage-sRCCBmRc.js.map → AssignmentsPage-DE_QS2LO.js.map} +1 -1
- package/dist/chunks/{AuthCallbackPage-C7XiZxKb.js → AuthCallbackPage-CA2nO6DG.js} +2 -2
- package/dist/chunks/{AuthCallbackPage-C7XiZxKb.js.map → AuthCallbackPage-CA2nO6DG.js.map} +1 -1
- package/dist/chunks/{AuthCallbackPage-BCe_bwJM.js → AuthCallbackPage-CDUAoX-N.js} +2 -2
- package/dist/chunks/{AuthCallbackPage-BCe_bwJM.js.map → AuthCallbackPage-CDUAoX-N.js.map} +1 -1
- package/dist/chunks/{ConfirmEmailPage-BUfGSqxF.js → ConfirmEmailPage-BqsILAYH.js} +2 -2
- package/dist/chunks/{ConfirmEmailPage-BUfGSqxF.js.map → ConfirmEmailPage-BqsILAYH.js.map} +1 -1
- package/dist/chunks/{ConfirmEmailPage-Buj4x-rx.js → ConfirmEmailPage-INeHCuMB.js} +2 -2
- package/dist/chunks/{ConfirmEmailPage-Buj4x-rx.js.map → ConfirmEmailPage-INeHCuMB.js.map} +1 -1
- package/dist/chunks/{CreateSupportTicketPage-CKDX_HQm.js → CreateSupportTicketPage-BWeuV2aU.js} +2 -2
- package/dist/chunks/{CreateSupportTicketPage-CKDX_HQm.js.map → CreateSupportTicketPage-BWeuV2aU.js.map} +1 -1
- package/dist/chunks/{CreateSupportTicketPage-0LgY-_pu.js → CreateSupportTicketPage-OBwF4v7b.js} +2 -2
- package/dist/chunks/{CreateSupportTicketPage-0LgY-_pu.js.map → CreateSupportTicketPage-OBwF4v7b.js.map} +1 -1
- package/dist/chunks/{DashboardPage-CUZ80NGV.js → DashboardPage-CKHqWrdS.js} +3 -3
- package/dist/chunks/{DashboardPage-CUZ80NGV.js.map → DashboardPage-CKHqWrdS.js.map} +1 -1
- package/dist/chunks/{DashboardPage-CaNOAstg.js → DashboardPage-COmc9b__.js} +3 -3
- package/dist/chunks/{DashboardPage-CaNOAstg.js.map → DashboardPage-COmc9b__.js.map} +1 -1
- package/dist/chunks/{DashboardPage-B48_rQFi.js → DashboardPage-CfKZHiSj.js} +2 -2
- package/dist/chunks/{DashboardPage-B48_rQFi.js.map → DashboardPage-CfKZHiSj.js.map} +1 -1
- package/dist/chunks/{DashboardPage-CUZV1J9t.js → DashboardPage-CwEZZ3jx.js} +2 -2
- package/dist/chunks/{DashboardPage-CUZV1J9t.js.map → DashboardPage-CwEZZ3jx.js.map} +1 -1
- package/dist/chunks/{EscalationConfigPage-CdzAbnGy.js → EscalationConfigPage--7lgZ0kJ.js} +2 -2
- package/dist/chunks/{EscalationConfigPage-CdzAbnGy.js.map → EscalationConfigPage--7lgZ0kJ.js.map} +1 -1
- package/dist/chunks/{EscalationConfigPage-CYGIl_e6.js → EscalationConfigPage-DPyiBcqV.js} +2 -2
- package/dist/chunks/{EscalationConfigPage-CYGIl_e6.js.map → EscalationConfigPage-DPyiBcqV.js.map} +1 -1
- package/dist/chunks/{ForceChangePasswordPage-lRpkwcX7.js → ForceChangePasswordPage-BE-6umub.js} +2 -2
- package/dist/chunks/{ForceChangePasswordPage-lRpkwcX7.js.map → ForceChangePasswordPage-BE-6umub.js.map} +1 -1
- package/dist/chunks/{ForceChangePasswordPage-CvmYAV3r.js → ForceChangePasswordPage-CnsYoWmV.js} +2 -2
- package/dist/chunks/{ForceChangePasswordPage-CvmYAV3r.js.map → ForceChangePasswordPage-CnsYoWmV.js.map} +1 -1
- package/dist/chunks/{ForgotPasswordPage-0u49E4Pw.js → ForgotPasswordPage-CSq4DnFF.js} +2 -2
- package/dist/chunks/{ForgotPasswordPage-0u49E4Pw.js.map → ForgotPasswordPage-CSq4DnFF.js.map} +1 -1
- package/dist/chunks/{ForgotPasswordPage-CxQUqKOm.js → ForgotPasswordPage-DZLVolAC.js} +2 -2
- package/dist/chunks/{ForgotPasswordPage-CxQUqKOm.js.map → ForgotPasswordPage-DZLVolAC.js.map} +1 -1
- package/dist/chunks/{GroupDetailPage-DFBvVO1S.js → GroupDetailPage-Bf9Wb_2j.js} +5 -5
- package/dist/chunks/{GroupDetailPage-DFBvVO1S.js.map → GroupDetailPage-Bf9Wb_2j.js.map} +1 -1
- package/dist/chunks/{GroupDetailPage-B2FkKrGG.js → GroupDetailPage-R-hf3rJ7.js} +2 -2
- package/dist/chunks/{GroupDetailPage-B2FkKrGG.js.map → GroupDetailPage-R-hf3rJ7.js.map} +1 -1
- package/dist/chunks/{MyAccessRequestsPage-C9IX4c0K.js → MyAccessRequestsPage-BIisvWM6.js} +2 -2
- package/dist/chunks/{MyAccessRequestsPage-C9IX4c0K.js.map → MyAccessRequestsPage-BIisvWM6.js.map} +1 -1
- package/dist/chunks/{MyAccessRequestsPage-D6pVULNM.js → MyAccessRequestsPage-BLSV7Tbx.js} +2 -2
- package/dist/chunks/{MyAccessRequestsPage-D6pVULNM.js.map → MyAccessRequestsPage-BLSV7Tbx.js.map} +1 -1
- package/dist/chunks/{MyTenantsPage-BEcYYdGR.js → MyTenantsPage-D-7k9CP1.js} +3 -3
- package/dist/chunks/{MyTenantsPage-BEcYYdGR.js.map → MyTenantsPage-D-7k9CP1.js.map} +1 -1
- package/dist/chunks/{MyTenantsPage-D9f85zjF.js → MyTenantsPage-DqGW6aDt.js} +2 -2
- package/dist/chunks/{MyTenantsPage-D9f85zjF.js.map → MyTenantsPage-DqGW6aDt.js.map} +1 -1
- package/dist/chunks/{MyTicketsPage-DJR8h6y1.js → MyTicketsPage--DgDsnZA.js} +2 -2
- package/dist/chunks/{MyTicketsPage-DJR8h6y1.js.map → MyTicketsPage--DgDsnZA.js.map} +1 -1
- package/dist/chunks/{MyTicketsPage-DiOUExKJ.js → MyTicketsPage-CqJ3Aqob.js} +2 -2
- package/dist/chunks/{MyTicketsPage-DiOUExKJ.js.map → MyTicketsPage-CqJ3Aqob.js.map} +1 -1
- package/dist/chunks/{NavigationAppsPage-CeHbxfZw.js → NavigationAppsPage-Bebis_RT.js} +2 -2
- package/dist/chunks/{NavigationAppsPage-CeHbxfZw.js.map → NavigationAppsPage-Bebis_RT.js.map} +1 -1
- package/dist/chunks/{NavigationAppsPage-If7tmCFY.js → NavigationAppsPage-THNPOAjv.js} +2 -2
- package/dist/chunks/{NavigationAppsPage-If7tmCFY.js.map → NavigationAppsPage-THNPOAjv.js.map} +1 -1
- package/dist/chunks/{NotificationsPage-C29Lln5o.js → NotificationsPage-CAbNW_Cn.js} +2 -2
- package/dist/chunks/{NotificationsPage-C29Lln5o.js.map → NotificationsPage-CAbNW_Cn.js.map} +1 -1
- package/dist/chunks/{NotificationsPage-BiaLRb0s.js → NotificationsPage-DxwizUhL.js} +2 -2
- package/dist/chunks/{NotificationsPage-BiaLRb0s.js.map → NotificationsPage-DxwizUhL.js.map} +1 -1
- package/dist/chunks/{OnboardingWizardPage-DQrBKNBq.js → OnboardingWizardPage-C6HlbJ3K.js} +2 -2
- package/dist/chunks/{OnboardingWizardPage-DQrBKNBq.js.map → OnboardingWizardPage-C6HlbJ3K.js.map} +1 -1
- package/dist/chunks/{OnboardingWizardPage-BQah4cI8.js → OnboardingWizardPage-CyC2zONO.js} +2 -2
- package/dist/chunks/{OnboardingWizardPage-BQah4cI8.js.map → OnboardingWizardPage-CyC2zONO.js.map} +1 -1
- package/dist/chunks/{PermissionDetailPage-Ckjdjvf9.js → PermissionDetailPage-BDHiNgky.js} +2 -2
- package/dist/chunks/{PermissionDetailPage-Ckjdjvf9.js.map → PermissionDetailPage-BDHiNgky.js.map} +1 -1
- package/dist/chunks/{PermissionDetailPage-Dh8v7mGj.js → PermissionDetailPage-C5K17ydY.js} +2 -2
- package/dist/chunks/{PermissionDetailPage-Dh8v7mGj.js.map → PermissionDetailPage-C5K17ydY.js.map} +1 -1
- package/dist/chunks/{PermissionsPage-l0PnY-EE.js → PermissionsPage-COI5LJPo.js} +2 -2
- package/dist/chunks/{PermissionsPage-l0PnY-EE.js.map → PermissionsPage-COI5LJPo.js.map} +1 -1
- package/dist/chunks/{PermissionsPage-DLy9U3P3.js → PermissionsPage-CkOwH2_d.js} +2 -2
- package/dist/chunks/{PermissionsPage-DLy9U3P3.js.map → PermissionsPage-CkOwH2_d.js.map} +1 -1
- package/dist/chunks/{PortalDashboardPage-DFBx38-x.js → PortalDashboardPage-CoEC4CmC.js} +2 -2
- package/dist/chunks/{PortalDashboardPage-DFBx38-x.js.map → PortalDashboardPage-CoEC4CmC.js.map} +1 -1
- package/dist/chunks/{PortalDashboardPage-rQYhrX0q.js → PortalDashboardPage-DrYymEf-.js} +2 -2
- package/dist/chunks/{PortalDashboardPage-rQYhrX0q.js.map → PortalDashboardPage-DrYymEf-.js.map} +1 -1
- package/dist/chunks/{PreferencesPage-BBu8yZQB.js → PreferencesPage-CJRaU3ba.js} +2 -2
- package/dist/chunks/{PreferencesPage-BBu8yZQB.js.map → PreferencesPage-CJRaU3ba.js.map} +1 -1
- package/dist/chunks/{PreferencesPage-B81MsNV1.js → PreferencesPage-Cqr9mAab.js} +2 -2
- package/dist/chunks/{PreferencesPage-B81MsNV1.js.map → PreferencesPage-Cqr9mAab.js.map} +1 -1
- package/dist/chunks/{ProfilePage-DDrl10zj.js → ProfilePage-BZVpg6-l.js} +2 -2
- package/dist/chunks/{ProfilePage-DDrl10zj.js.map → ProfilePage-BZVpg6-l.js.map} +1 -1
- package/dist/chunks/{ProfilePage-DPoXwdnc.js → ProfilePage-Cu_FITeL.js} +2 -2
- package/dist/chunks/{ProfilePage-DPoXwdnc.js.map → ProfilePage-Cu_FITeL.js.map} +1 -1
- package/dist/chunks/{ReferencesManagementPage-eFsKjIEK.js → ReferencesManagementPage-DUlVk9Ps.js} +3 -3
- package/dist/chunks/{ReferencesManagementPage-eFsKjIEK.js.map → ReferencesManagementPage-DUlVk9Ps.js.map} +1 -1
- package/dist/chunks/{ReferencesManagementPage-DhVsuElE.js → ReferencesManagementPage-ZCuYtqd7.js} +2 -2
- package/dist/chunks/{ReferencesManagementPage-DhVsuElE.js.map → ReferencesManagementPage-ZCuYtqd7.js.map} +1 -1
- package/dist/chunks/{RegisterPage-CiQib3-6.js → RegisterPage-C4xmVwh9.js} +2 -2
- package/dist/chunks/{RegisterPage-CiQib3-6.js.map → RegisterPage-C4xmVwh9.js.map} +1 -1
- package/dist/chunks/{RegisterPage-bXCcJD88.js → RegisterPage-DGyzoIHT.js} +2 -2
- package/dist/chunks/{RegisterPage-bXCcJD88.js.map → RegisterPage-DGyzoIHT.js.map} +1 -1
- package/dist/chunks/{ResetPasswordPage-Dqiahhnj.js → ResetPasswordPage-DqDD6VPR.js} +2 -2
- package/dist/chunks/{ResetPasswordPage-Dqiahhnj.js.map → ResetPasswordPage-DqDD6VPR.js.map} +1 -1
- package/dist/chunks/{ResetPasswordPage-CubPG3yv.js → ResetPasswordPage-Glu-aeqv.js} +2 -2
- package/dist/chunks/{ResetPasswordPage-CubPG3yv.js.map → ResetPasswordPage-Glu-aeqv.js.map} +1 -1
- package/dist/chunks/{ResolutionModal-Bg7XZmR1.js → ResolutionModal-CxjANAOP.js} +2 -2
- package/dist/chunks/{ResolutionModal-Bg7XZmR1.js.map → ResolutionModal-CxjANAOP.js.map} +1 -1
- package/dist/chunks/{ResolutionModal-DqRk_T0n.js → ResolutionModal-Duat18qV.js} +2 -2
- package/dist/chunks/{ResolutionModal-DqRk_T0n.js.map → ResolutionModal-Duat18qV.js.map} +1 -1
- package/dist/chunks/{RoleDetailPage-Blau6_4c.js → RoleDetailPage-BQffUSnt.js} +3 -3
- package/dist/chunks/{RoleDetailPage-Blau6_4c.js.map → RoleDetailPage-BQffUSnt.js.map} +1 -1
- package/dist/chunks/{RoleDetailPage-CiRVxxIP.js → RoleDetailPage-JTm5lD1_.js} +2 -2
- package/dist/chunks/{RoleDetailPage-CiRVxxIP.js.map → RoleDetailPage-JTm5lD1_.js.map} +1 -1
- package/dist/chunks/{RolesPage-Pm-RN3lP.js → RolesPage-B9rRzciI.js} +2 -2
- package/dist/chunks/{RolesPage-Pm-RN3lP.js.map → RolesPage-B9rRzciI.js.map} +1 -1
- package/dist/chunks/{RolesPage-Cb8joqdJ.js → RolesPage-BN8_zMOC.js} +2 -2
- package/dist/chunks/{RolesPage-Cb8joqdJ.js.map → RolesPage-BN8_zMOC.js.map} +1 -1
- package/dist/chunks/{SlaConfigPage-B86McKM6.js → SlaConfigPage-B7kZNig4.js} +2 -2
- package/dist/chunks/{SlaConfigPage-B86McKM6.js.map → SlaConfigPage-B7kZNig4.js.map} +1 -1
- package/dist/chunks/{SlaConfigPage-BY7gvYU6.js → SlaConfigPage-okvZfA_K.js} +2 -2
- package/dist/chunks/{SlaConfigPage-BY7gvYU6.js.map → SlaConfigPage-okvZfA_K.js.map} +1 -1
- package/dist/chunks/{SupportPermissionsPage-BYxcLMSd.js → SupportPermissionsPage-DGAPqJbl.js} +2 -2
- package/dist/chunks/{SupportPermissionsPage-BYxcLMSd.js.map → SupportPermissionsPage-DGAPqJbl.js.map} +1 -1
- package/dist/chunks/{SupportPermissionsPage-MXqXNJIZ.js → SupportPermissionsPage-Dg_wLOme.js} +2 -2
- package/dist/chunks/{SupportPermissionsPage-MXqXNJIZ.js.map → SupportPermissionsPage-Dg_wLOme.js.map} +1 -1
- package/dist/chunks/{TemplatesPage-BDguJ401.js → TemplatesPage-DT9fhlAU.js} +2 -2
- package/dist/chunks/{TemplatesPage-BDguJ401.js.map → TemplatesPage-DT9fhlAU.js.map} +1 -1
- package/dist/chunks/{TemplatesPage-DdnGgioU.js → TemplatesPage-DiEk538p.js} +2 -2
- package/dist/chunks/{TemplatesPage-DdnGgioU.js.map → TemplatesPage-DiEk538p.js.map} +1 -1
- package/dist/chunks/{TenantCard-ffwWsgFQ.js → TenantCard-BbSYk9_Z.js} +2 -2
- package/dist/chunks/{TenantCard-ffwWsgFQ.js.map → TenantCard-BbSYk9_Z.js.map} +1 -1
- package/dist/chunks/{TenantCard-CUjb6og9.js → TenantCard-CEkiKxcZ.js} +2 -2
- package/dist/chunks/{TenantCard-CUjb6og9.js.map → TenantCard-CEkiKxcZ.js.map} +1 -1
- package/dist/chunks/{TenantScopeSelector-Dz7i1I43.js → TenantScopeSelector-BWfYxvEa.js} +2 -2
- package/dist/chunks/{TenantScopeSelector-Dz7i1I43.js.map → TenantScopeSelector-BWfYxvEa.js.map} +1 -1
- package/dist/chunks/{TenantScopeSelector-Cym_Zyps.js → TenantScopeSelector-D-BKgQPV.js} +2 -2
- package/dist/chunks/{TenantScopeSelector-Cym_Zyps.js.map → TenantScopeSelector-D-BKgQPV.js.map} +1 -1
- package/dist/chunks/{TicketDetailPage-GOh9GX7E.js → TicketDetailPage-C1mNS9Up.js} +2 -2
- package/dist/chunks/{TicketDetailPage-GOh9GX7E.js.map → TicketDetailPage-C1mNS9Up.js.map} +1 -1
- package/dist/chunks/{TicketDetailPage-Du8WMyqf.js → TicketDetailPage-ieVDRh42.js} +2 -2
- package/dist/chunks/{TicketDetailPage-Du8WMyqf.js.map → TicketDetailPage-ieVDRh42.js.map} +1 -1
- package/dist/chunks/{TicketsPage-Bqd6moQy.js → TicketsPage-CnuWsnIW.js} +2 -2
- package/dist/chunks/{TicketsPage-Bqd6moQy.js.map → TicketsPage-CnuWsnIW.js.map} +1 -1
- package/dist/chunks/{TicketsPage-WdU4Bb7M.js → TicketsPage-jjyY15_D.js} +2 -2
- package/dist/chunks/{TicketsPage-WdU4Bb7M.js.map → TicketsPage-jjyY15_D.js.map} +1 -1
- package/dist/chunks/{UserCreateTicketPage-Cm1emgwR.js → UserCreateTicketPage-B8Tvf-ag.js} +2 -2
- package/dist/chunks/{UserCreateTicketPage-Cm1emgwR.js.map → UserCreateTicketPage-B8Tvf-ag.js.map} +1 -1
- package/dist/chunks/{UserCreateTicketPage-BPw-5Y_D.js → UserCreateTicketPage-DnOsDlfO.js} +2 -2
- package/dist/chunks/{UserCreateTicketPage-BPw-5Y_D.js.map → UserCreateTicketPage-DnOsDlfO.js.map} +1 -1
- package/dist/chunks/{UserDashboardPage-BP5WeXPS.js → UserDashboardPage-BrtkJ-NB.js} +2 -2
- package/dist/chunks/{UserDashboardPage-BP5WeXPS.js.map → UserDashboardPage-BrtkJ-NB.js.map} +1 -1
- package/dist/chunks/{UserDashboardPage-B53C8fUq.js → UserDashboardPage-KLB5CQP5.js} +2 -2
- package/dist/chunks/{UserDashboardPage-B53C8fUq.js.map → UserDashboardPage-KLB5CQP5.js.map} +1 -1
- package/dist/chunks/{UserDetailPage-B110bmGX.js → UserDetailPage-U7smBQoF.js} +5 -5
- package/dist/chunks/{UserDetailPage-B110bmGX.js.map → UserDetailPage-U7smBQoF.js.map} +1 -1
- package/dist/chunks/{UserDetailPage-CV2VCE46.js → UserDetailPage-_J6lcKAU.js} +2 -2
- package/dist/chunks/{UserDetailPage-CV2VCE46.js.map → UserDetailPage-_J6lcKAU.js.map} +1 -1
- package/dist/chunks/{UserTicketDetailPage-CCNJON1V.js → UserTicketDetailPage-CWoYQgH-.js} +2 -2
- package/dist/chunks/{UserTicketDetailPage-CCNJON1V.js.map → UserTicketDetailPage-CWoYQgH-.js.map} +1 -1
- package/dist/chunks/{UserTicketDetailPage-V0mLXrox.js → UserTicketDetailPage-DkufSlvZ.js} +2 -2
- package/dist/chunks/{UserTicketDetailPage-V0mLXrox.js.map → UserTicketDetailPage-DkufSlvZ.js.map} +1 -1
- package/dist/chunks/{UsersGroupsPage-CmdaU-z-.js → UsersGroupsPage-C38s2-Rq.js} +3 -3
- package/dist/chunks/{UsersGroupsPage-CmdaU-z-.js.map → UsersGroupsPage-C38s2-Rq.js.map} +1 -1
- package/dist/chunks/{UsersGroupsPage-BgfAMgEP.js → UsersGroupsPage-Dq3rAteo.js} +2 -2
- package/dist/chunks/{UsersGroupsPage-BgfAMgEP.js.map → UsersGroupsPage-Dq3rAteo.js.map} +1 -1
- package/dist/chunks/{UsersPage-Bg7033pp.js → UsersPage-B5C5KEUR.js} +2 -2
- package/dist/chunks/{UsersPage-Bg7033pp.js.map → UsersPage-B5C5KEUR.js.map} +1 -1
- package/dist/chunks/{UsersPage-TYAfwPY1.js → UsersPage-CXC9Hvq6.js} +2 -2
- package/dist/chunks/{UsersPage-TYAfwPY1.js.map → UsersPage-CXC9Hvq6.js.map} +1 -1
- package/dist/chunks/{accessRequestsApi-DZeDvzwv.js → accessRequestsApi-B-4TJ5_U.js} +2 -2
- package/dist/chunks/{accessRequestsApi-DZeDvzwv.js.map → accessRequestsApi-B-4TJ5_U.js.map} +1 -1
- package/dist/chunks/{accessRequestsApi-ZXFPCid2.js → accessRequestsApi-DZSfThpd.js} +2 -2
- package/dist/chunks/{accessRequestsApi-ZXFPCid2.js.map → accessRequestsApi-DZSfThpd.js.map} +1 -1
- package/dist/chunks/{aiApi-CsH8DXgs.js → aiApi-B20Teu2v.js} +2 -2
- package/dist/chunks/{aiApi-CsH8DXgs.js.map → aiApi-B20Teu2v.js.map} +1 -1
- package/dist/chunks/{aiApi-CVPzFTXa.js → aiApi-DMGz-RPM.js} +2 -2
- package/dist/chunks/{aiApi-CVPzFTXa.js.map → aiApi-DMGz-RPM.js.map} +1 -1
- package/dist/chunks/{applicationAnalyticsApi-B8AhFYLr.js → applicationAnalyticsApi-Bwa75Fzd.js} +2 -2
- package/dist/chunks/{applicationAnalyticsApi-B8AhFYLr.js.map → applicationAnalyticsApi-Bwa75Fzd.js.map} +1 -1
- package/dist/chunks/{applicationAnalyticsApi-Ce_1qOk-.js → applicationAnalyticsApi-CLBqRPfN.js} +2 -2
- package/dist/chunks/{applicationAnalyticsApi-Ce_1qOk-.js.map → applicationAnalyticsApi-CLBqRPfN.js.map} +1 -1
- package/dist/chunks/{groupsApi-BgCk2fsp.js → groupsApi-QzXI-5xu.js} +2 -2
- package/dist/chunks/{groupsApi-BgCk2fsp.js.map → groupsApi-QzXI-5xu.js.map} +1 -1
- package/dist/chunks/{groupsApi-BIbG665N.js → groupsApi-hB9kSWEd.js} +2 -2
- package/dist/chunks/{groupsApi-BIbG665N.js.map → groupsApi-hB9kSWEd.js.map} +1 -1
- package/dist/chunks/{index-Cb3LotuT.js → index--NGcBYUu.js} +3 -3
- package/dist/chunks/{index-Cb3LotuT.js.map → index--NGcBYUu.js.map} +1 -1
- package/dist/chunks/{index-C33zcyF4.js → index--aPwOFjF.js} +2 -2
- package/dist/chunks/{index-C33zcyF4.js.map → index--aPwOFjF.js.map} +1 -1
- package/dist/chunks/{index-sMr9qND_.js → index-0VrOtwP0.js} +2 -2
- package/dist/chunks/{index-sMr9qND_.js.map → index-0VrOtwP0.js.map} +1 -1
- package/dist/chunks/{index-DDKetfKq.js → index-37U271aw.js} +2 -2
- package/dist/chunks/{index-DDKetfKq.js.map → index-37U271aw.js.map} +1 -1
- package/dist/chunks/{index-B9fS7ir6.js → index-B7qZTuQ-.js} +2 -2
- package/dist/chunks/{index-B9fS7ir6.js.map → index-B7qZTuQ-.js.map} +1 -1
- package/dist/chunks/{index-CdjBY7L8.js → index-Bedzmqr-.js} +2 -2
- package/dist/chunks/{index-CdjBY7L8.js.map → index-Bedzmqr-.js.map} +1 -1
- package/dist/chunks/{index-CHG_O1fS.js → index-Betxo5g5.js} +2 -2
- package/dist/chunks/{index-CHG_O1fS.js.map → index-Betxo5g5.js.map} +1 -1
- package/dist/chunks/{index-jiGu-H8x.js → index-BmaJz475.js} +2 -2
- package/dist/chunks/{index-jiGu-H8x.js.map → index-BmaJz475.js.map} +1 -1
- package/dist/chunks/{index-C53JoVNk.js → index-Buhqag3v.js} +2 -2
- package/dist/chunks/{index-C53JoVNk.js.map → index-Buhqag3v.js.map} +1 -1
- package/dist/chunks/{index-DO0Rw7hX.js → index-C3VxlfKq.js} +2 -2
- package/dist/chunks/{index-DO0Rw7hX.js.map → index-C3VxlfKq.js.map} +1 -1
- package/dist/chunks/{index-CSQ60fpG.js → index-CgpRo8Oe.js} +2 -2
- package/dist/chunks/{index-CSQ60fpG.js.map → index-CgpRo8Oe.js.map} +1 -1
- package/dist/chunks/{index-B-e-ELsf.js → index-DOY0w8Iu.js} +8 -8
- package/dist/chunks/{index-B-e-ELsf.js.map → index-DOY0w8Iu.js.map} +1 -1
- package/dist/chunks/{index-D2REDIRX.js → index-DwuvIOrQ.js} +2 -2
- package/dist/chunks/{index-D2REDIRX.js.map → index-DwuvIOrQ.js.map} +1 -1
- package/dist/chunks/{index-DCcl7Qof.js → index-DzedSLdI.js} +2 -2
- package/dist/chunks/{index-DCcl7Qof.js.map → index-DzedSLdI.js.map} +1 -1
- package/dist/chunks/{index-2wUhd9Lu.js → index-IgLVXPg8.js} +10 -10
- package/dist/chunks/index-IgLVXPg8.js.map +1 -0
- package/dist/chunks/{index-CwSaRXXg.js → index-lpIzhufD.js} +1916 -1900
- package/dist/chunks/index-lpIzhufD.js.map +1 -0
- package/dist/chunks/{index-Cuwn2q-f.js → index-mLUKwbGl.js} +4 -4
- package/dist/chunks/{index-Cuwn2q-f.js.map → index-mLUKwbGl.js.map} +1 -1
- package/dist/chunks/{index-B0mk2tNY.js → index-tO6MMIFB.js} +2 -2
- package/dist/chunks/{index-B0mk2tNY.js.map → index-tO6MMIFB.js.map} +1 -1
- package/dist/chunks/{tenantIconMap-BpNANQ5s.js → tenantIconMap-BQD9byc8.js} +2 -2
- package/dist/chunks/{tenantIconMap-BpNANQ5s.js.map → tenantIconMap-BQD9byc8.js.map} +1 -1
- package/dist/chunks/{tenantIconMap-DtdUgvJO.js → tenantIconMap-CTMuSt18.js} +2 -2
- package/dist/chunks/{tenantIconMap-DtdUgvJO.js.map → tenantIconMap-CTMuSt18.js.map} +1 -1
- package/dist/chunks/{ticketingApi-Bu4rKwLl.js → ticketingApi-BNIdox5t.js} +2 -2
- package/dist/chunks/{ticketingApi-Bu4rKwLl.js.map → ticketingApi-BNIdox5t.js.map} +1 -1
- package/dist/chunks/{ticketingApi-r4Avm9iS.js → ticketingApi-J0vC_t7r.js} +2 -2
- package/dist/chunks/{ticketingApi-r4Avm9iS.js.map → ticketingApi-J0vC_t7r.js.map} +1 -1
- package/dist/chunks/{useAccessRequests-B9bF4swg.js → useAccessRequests-DCNNLnxk.js} +3 -3
- package/dist/chunks/{useAccessRequests-B9bF4swg.js.map → useAccessRequests-DCNNLnxk.js.map} +1 -1
- package/dist/chunks/{useAccessRequests-JyPUX3Om.js → useAccessRequests-DT7X4FAK.js} +2 -2
- package/dist/chunks/{useAccessRequests-JyPUX3Om.js.map → useAccessRequests-DT7X4FAK.js.map} +1 -1
- package/dist/chunks/{useUserAccessRequests-DjPQenC2.js → useUserAccessRequests-BYbmG4c7.js} +2 -2
- package/dist/chunks/{useUserAccessRequests-DjPQenC2.js.map → useUserAccessRequests-BYbmG4c7.js.map} +1 -1
- package/dist/chunks/{useUserAccessRequests-BB6FHW14.js → useUserAccessRequests-CylKxRN6.js} +2 -2
- package/dist/chunks/{useUserAccessRequests-BB6FHW14.js.map → useUserAccessRequests-CylKxRN6.js.map} +1 -1
- package/dist/hooks/useCollapsibleState.d.ts +5 -2
- package/dist/hooks/useCollapsibleState.d.ts.map +1 -1
- package/dist/i18n/config.d.ts +1 -0
- package/dist/i18n/config.d.ts.map +1 -1
- package/dist/main.d.ts +0 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/smartstack.cjs +1 -1
- package/dist/smartstack.js +1 -1
- package/dist/utils/permissions.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/index-2wUhd9Lu.js.map +0 -1
- package/dist/chunks/index-CwSaRXXg.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-2wUhd9Lu.js"),r=require("lucide-react"),j=require("./ResolutionModal-DqRk_T0n.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-
|
|
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-IgLVXPg8.js"),r=require("lucide-react"),j=require("./ResolutionModal-Duat18qV.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-DzedSLdI.js.map
|