@atlashub/smartstack 3.21.0 → 3.25.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"),a=require("react"),xe=require("react-router-dom"),de=require("react-i18next"),r=require("lucide-react"),E=require("./index-2wUhd9Lu.js"),we=require("./tenantIconMap-DtdUgvJO.js"),Ve=require("./ConfirmModal-CYWRiVoD.js"),tt=require("./useTabNavigation-BVtbCTd5.js"),De=require("./ticketingApi-r4Avm9iS.js"),St=require("./groupsApi-BIbG665N.js"),Qe=require("./useAccessRequests-JyPUX3Om.js"),be=require("recharts"),kt=require("./accessRequestsApi-DZeDvzwv.js"),Je=require("./ResolutionModal-DqRk_T0n.js");function At(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const l=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(n,s,l.get?l:{enumerable:!0,get:()=>t[s]})}}return n.default=t,Object.freeze(n)}const gt=At(r),Tt=["Pending","Active","Suspended","Archived"],Lt=["Personal","Business","System"],Et={search:"",status:"",type:"Business"},It=t=>t&&Tt.includes(t)?t:"",Rt=t=>t&&Lt.includes(t)?t:"",Mt=t=>{const n=parseInt(t||"1",10);return isNaN(n)||n<1?1:n},Bt=(t,n)=>({...Et,type:t||(n?"":"Business")});function Ft(t,n,s){return a.useMemo(()=>{let l=0;return t.status&&l++,!n&&!s&&t.type&&l++,l},[t,n,s])}function Pt(t,n){const[s,l]=a.useState(t);return a.useEffect(()=>{const d=setTimeout(()=>l(t),n);return()=>clearTimeout(d)},[t,n]),s}const Dt={Pending:{color:"text-[var(--info-text)]",bgColor:"bg-[var(--info-bg)]",borderColor:"border-[var(--info-border)]",statusBadge:"pending"},Active:{color:"text-[var(--success-text)]",bgColor:"bg-[var(--success-bg)]",borderColor:"border-[var(--success-border)]",statusBadge:"active"},Suspended:{color:"text-[var(--warning-text)]",bgColor:"bg-[var(--warning-bg)]",borderColor:"border-[var(--warning-border)]",statusBadge:"warning"},Archived:{color:"text-[var(--text-tertiary)]",bgColor:"bg-[var(--bg-tertiary)]",borderColor:"border-[var(--border-color)]",statusBadge:"inactive"}},$t={Personal:{icon:r.User,label:"tenants.type.personal"},Business:{icon:r.Building,label:"tenants.type.business"},System:{icon:r.Server,label:"tenants.type.system"}};function _e({lockedType:t,excludeTypes:n}){const{t:s}=de.useTranslation("admin"),l=xe.useNavigate(),[d,i]=xe.useSearchParams(),{currentTenant:c,isGlobalView:b,refreshTenants:h}=E.useTenant(),u=E.useTenantUrl(),{getIconForType:m}=we.useTenantTypeSettings(),o=a.useMemo(()=>({search:d.get("search")||"",status:It(d.get("status")),type:t||Rt(d.get("type"))||(n?"":"Business")}),[]),[x,p]=a.useState([]),[S,B]=a.useState(!0),[P,T]=a.useState(o),[g,f]=a.useState(!1),[D,y]=a.useState(null),[H,R]=a.useState(null),[L,k]=a.useState(null),[Z,q]=a.useState("table"),[U,z]=a.useState(Mt(d.get("page"))),[ee,ae]=a.useState(1),[$,X]=a.useState(0),[J,F]=a.useState(null),[A,j]=a.useState("name"),[M,O]=a.useState(!1),w=Pt(P.search,300),v=Ft(P,t,n),N=a.useCallback(async()=>{try{B(!0),F(null);const C=await E.adminApi.tenants.getAll({page:U,pageSize:20,search:w||void 0,status:P.status||void 0,type:P.type||void 0,sortBy:A,sortDesc:M,excludeTypes:n});p(C.items),X(C.totalCount),ae(C.totalPages)}catch(C){console.error("Failed to load tenants:",C),F(s("tenants.loadError")),p([])}finally{B(!1)}},[U,w,P.status,P.type,A,M,s,c?.id,b,n]);a.useEffect(()=>{const C=new URLSearchParams;P.search&&C.set("search",P.search),P.status&&C.set("status",P.status),P.type&&C.set("type",P.type),U>1&&C.set("page",U.toString()),i(C,{replace:!0})},[P,U,i]),a.useEffect(()=>{N()},[N]);const ie=()=>{T(Bt(t,n)),z(1)},le=(C,oe)=>{t&&C==="type"||(T(je=>({...je,[C]:oe})),z(1))},te=C=>{y(null),k({tenant:C,action:"activate"})},Q=C=>{y(null),k({tenant:C,action:"suspend"})},pe=C=>{y(null),k({tenant:C,action:"archive"})},me=async()=>{if(!L)return;const{tenant:C,action:oe}=L;R(C.id);try{oe==="activate"?await E.adminApi.tenants.activate(C.id):oe==="suspend"?await E.adminApi.tenants.suspend(C.id):oe==="archive"&&await E.adminApi.tenants.archive(C.id),await h(),N()}catch(je){console.error(`Failed to ${oe} tenant:`,je)}finally{R(null),k(null)}},K=(C,oe)=>{switch(C){case"activate":return s("tenants.confirmActivate",{name:oe});case"suspend":return s("tenants.confirmSuspend",{name:oe});case"archive":return s("tenants.confirmArchive",{name:oe})}},ce=C=>{switch(C){case"activate":return s("tenants.actions.activate");case"suspend":return s("tenants.actions.suspend");case"archive":return s("tenants.actions.archive")}},ge=C=>{switch(C){case"activate":return"info";case"suspend":return"warning";case"archive":return"danger"}},W=()=>{if(!L)return null;const{tenant:C,action:oe}=L;return{message:K(oe,C.name),label:ce(oe),variant:ge(oe)}},G=a.useMemo(()=>({active:x.filter(C=>C.status==="Active").length,suspended:x.filter(C=>C.status==="Suspended").length,members:x.reduce((C,oe)=>C+(oe.memberCount??0),0),pendingRequests:x.reduce((C,oe)=>C+(oe.pendingAccessRequestCount??0),0)}),[x]),_=x,se=C=>{A===C?O(!M):(j(C),O(!1)),z(1)},V=({column:C})=>A!==C?e.jsx(r.ArrowUpDown,{className:"w-3.5 h-3.5 text-[var(--text-muted)] opacity-0 group-hover/th:opacity-100 transition-opacity"}):M?e.jsx(r.ArrowDown,{className:"w-3.5 h-3.5 text-[var(--color-accent-500)]"}):e.jsx(r.ArrowUp,{className:"w-3.5 h-3.5 text-[var(--color-accent-500)]"}),Y=C=>C==="Active"?"success":C==="Suspended"?"warning":C==="Pending"?"info":"default",re=()=>{if(n)return s("tenants.other.title");switch(t){case"Business":return s("tenants.enterprise.title");case"Personal":return s("tenants.personal.title");default:return s("tenants.title")}},ve=()=>{if(n)return s("tenants.other.subtitle");switch(t){case"Business":return s("tenants.enterprise.subtitle");case"Personal":return s("tenants.personal.subtitle");default:return s("tenants.subtitle")}},he=()=>{if(n)return r.Server;switch(t){case"Business":return r.Building;case"Personal":return r.User;default:return r.Building2}},fe=re(),ye=ve(),$e=he(),Te=!!t||!!n,Re=5+(Te?0:1)+1,Se=(C,oe,je="")=>e.jsx("th",{className:`text-left px-4 py-3 text-xs font-semibold text-[var(--text-tertiary)] uppercase tracking-wider cursor-pointer select-none group/th hover:text-[var(--text-primary)] transition-colors ${je}`,onClick:()=>se(oe),children:e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[C,e.jsx(V,{column:oe})]})}),Ue=C=>e.jsx("div",{className:"flex items-center justify-end gap-1",onClick:oe=>oe.stopPropagation(),onKeyDown:oe=>oe.stopPropagation(),role:"presentation",children:e.jsxs("div",{className:"relative",children:[e.jsx("button",{onClick:()=>y(D===C.id?null:C.id),className:"p-2 rounded-lg text-[var(--text-tertiary)] hover:bg-[var(--bg-tertiary)] transition-all",children:H===C.id?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.MoreHorizontal,{className:"w-4 h-4"})}),D===C.id&&e.jsxs("div",{className:"absolute right-0 mt-1 w-48 bg-[var(--bg-card)] border border-[var(--border-color)] shadow-lg z-50",style:{borderRadius:"var(--radius-card)"},children:[e.jsxs("button",{onClick:()=>{y(null),l(u(`/administration/tenants/${C.id}`))},className:"w-full flex items-center gap-2 px-4 py-2 text-sm hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(r.Eye,{className:"w-4 h-4"}),s("tenants.view")]}),e.jsxs("button",{onClick:()=>{y(null),l(u(`/administration/tenants/${C.id}`))},className:"w-full flex items-center gap-2 px-4 py-2 text-sm hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(r.Edit2,{className:"w-4 h-4"}),s("common.edit")]}),e.jsxs("button",{onClick:()=>{y(null),l(u(`/administration/tenants/${C.id}/members`))},className:"w-full flex items-center gap-2 px-4 py-2 text-sm hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(r.Users,{className:"w-4 h-4"}),s("tenants.actions.viewMembers")]}),e.jsx("div",{className:"border-t border-[var(--border-color)] my-1"}),C.status!=="Active"&&C.status!=="Archived"&&e.jsxs("button",{onClick:()=>te(C),className:"w-full flex items-center gap-2 px-4 py-2 text-sm text-[var(--success-text)] hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(r.PlayCircle,{className:"w-4 h-4"}),s("tenants.actions.activate")]}),C.status==="Active"&&e.jsxs("button",{onClick:()=>Q(C),className:"w-full flex items-center gap-2 px-4 py-2 text-sm text-[var(--warning-text)] hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(r.PauseCircle,{className:"w-4 h-4"}),s("tenants.actions.suspend")]}),C.status!=="Archived"&&e.jsxs("button",{onClick:()=>pe(C),className:"w-full flex items-center gap-2 px-4 py-2 text-sm text-[var(--error-text)] hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(r.Archive,{className:"w-4 h-4"}),s("tenants.actions.archive")]})]})]})}),Me=C=>{const oe=m(C.type),je=we.getLucideIcon(oe.icon),Pe=we.getColorClasses(oe.color),Ke=Dt[C.status];return e.jsxs("tr",{className:`group hover:bg-[var(--bg-hover)] transition-all cursor-pointer ${D===C.id?"relative z-10":""}`,onClick:()=>l(u(`/administration/tenants/${C.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-10 h-10 flex items-center justify-center ${Pe.bg}`,style:{borderRadius:"var(--radius-card)"},children:e.jsx(je,{className:`w-5 h-5 ${Pe.text}`})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)] group-hover:text-[var(--color-accent-600)] transition-colors truncate",children:C.name}),e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] truncate",children:C.slug})]})]})}),!Te&&e.jsxs("td",{className:"px-4 py-3 hidden md:table-cell",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(je,{className:`w-4 h-4 ${Pe.text}`}),e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:s($t[C.type].label)})]}),C.organisation?.name&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5 truncate",children:C.organisation.name})]}),e.jsx("td",{className:"px-4 py-3",children:e.jsx(E.StatusBadge,{status:Ke.statusBadge,label:s(`tenants.status.${C.status.toLowerCase()}`)})}),e.jsx("td",{className:"px-4 py-3 hidden md:table-cell",children:C.templateName?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(r.Layers,{className:"w-4 h-4 text-[var(--color-accent-500)]"}),e.jsx("span",{className:"text-sm text-[var(--text-primary)]",children:C.templateName})]}):e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:"-"})}),e.jsx("td",{className:"px-4 py-3 text-center hidden lg:table-cell",children:e.jsx("span",{className:"text-sm text-[var(--text-primary)]",children:C.memberCount??0})}),e.jsx("td",{className:"px-4 py-3 text-center hidden lg:table-cell",children:(C.pendingAccessRequestCount??0)>0?e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(r.Clock,{className:"w-3 h-3"}),C.pendingAccessRequestCount]}):e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:"-"})}),e.jsx("td",{className:"px-4 py-3",children:Ue(C)})]},C.id)},Oe=()=>e.jsx("tr",{children:e.jsx("td",{colSpan:Re,className:"text-center py-8",children:e.jsx("div",{className:"w-6 h-6 border-2 border-[var(--color-accent-500)] border-t-transparent rounded-full animate-spin mx-auto"})})}),Ge=()=>e.jsx("tr",{children:e.jsx("td",{colSpan:Re,className:"text-center py-8 text-[var(--text-secondary)]",children:s("tenants.empty")})}),He=()=>e.jsx("div",{className:"card",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{className:"bg-[var(--bg-secondary)]",style:{borderRadius:"var(--radius-card) var(--radius-card) 0 0"},children:e.jsxs("tr",{children:[Se(s("tenants.columns.name"),"name"),!Te&&Se(s("tenants.columns.type"),"type","hidden md:table-cell"),Se(s("tenants.columns.status"),"status"),Se(s("tenants.columns.template"),"template","hidden md:table-cell"),e.jsx("th",{className:"text-center px-4 py-3 text-xs font-semibold text-[var(--text-tertiary)] uppercase tracking-wider hidden lg:table-cell",children:s("tenants.columns.members")}),e.jsx("th",{className:"text-center px-4 py-3 text-xs font-semibold text-[var(--text-tertiary)] uppercase tracking-wider hidden lg:table-cell",children:s("tenants.columns.requests")}),e.jsx("th",{className:"w-24 px-4 py-3"})]})}),e.jsxs("tbody",{className:"divide-y divide-[var(--border-color)]",children:[S&&Oe(),!S&&_.length===0&&Ge(),!S&&_.length>0&&_.map(Me)]})]})}),Be=C=>[{label:s(`tenants.type.${C.type.toLowerCase()}`),variant:C.type==="Business"?"info":"primary"},{label:s(`tenants.status.${C.status.toLowerCase()}`),variant:Y(C.status)}],qe=C=>[{label:s("common.edit"),onClick:()=>l(u(`/administration/tenants/${C.id}`)),variant:"primary",icon:r.Edit2},{label:s("tenants.actions.viewMembers"),onClick:()=>l(u(`/administration/tenants/${C.id}/members`)),variant:"ghost",icon:r.Users}],Fe=C=>e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(r.Users,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsxs("span",{children:[C.memberCount??0," ",s("tenants.members")]})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(r.Boxes,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsxs("span",{children:[C.applicationCount??0," ",s("tenants.applications")]})]})]}),ze=C=>{const je=C.type==="Business"?"#3b82f6":"#8b5cf6";return{avatar:{letter:C.name.at(0)?.toUpperCase()??"",color:je},title:C.name,subtitle:C.slug,description:C.organisation?.name||void 0,stats:Fe(C),tags:Be(C),actions:qe(C),onClick:()=>l(u(`/administration/tenants/${C.id}`))}},Ce=()=>e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6",children:[S&&e.jsxs("div",{className:"col-span-full flex flex-col items-center justify-center py-16",children:[e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"}),e.jsx("span",{className:"mt-3 text-sm text-[var(--text-secondary)]",children:s("common.loading")})]}),!S&&_.length===0&&e.jsxs("div",{className:"col-span-full flex flex-col items-center justify-center py-16",children:[e.jsx("div",{className:"w-16 h-16 rounded-lg bg-[var(--bg-secondary)] flex items-center justify-center mb-3",children:e.jsx(r.Building2,{className:"w-8 h-8 text-[var(--text-tertiary)]"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("tenants.noTenants")})]}),!S&&_.length>0&&_.map(C=>e.jsx(E.EntityCard,{...ze(C)},C.id))]});return e.jsxs("div",{className:"space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:s("header.title"),href:u("/administration")},...t||n?[{label:s("tenants.title"),href:u("/administration/tenants/list")},{label:s(n?"tenants.other.title":t==="Business"?"tenants.enterprise.title":"tenants.personal.title")}]:[{label:s("tenants.title")}]]}),e.jsx(E.PageHeader,{title:fe,subtitle:ye,icon:e.jsx($e,{className:"w-6 h-6 text-[var(--color-accent-500)]"}),actions:e.jsxs(e.Fragment,{children:[!n&&(!t||t==="Personal")&&e.jsxs("button",{onClick:()=>l(u("/administration/tenants/create")+"?type=b2c"),className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx(r.User,{className:"w-4 h-4"}),s("tenants.createB2C")]}),!n&&(!t||t==="Business")&&e.jsxs("button",{onClick:()=>l(u("/administration/tenants/create")+"?type=b2b"),className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] transition-colors",children:[e.jsx(r.Building,{className:"w-4 h-4"}),s("tenants.createB2B")]})]})}),J&&e.jsxs("div",{className:"mb-6 p-4 bg-[var(--error-bg)] border border-[var(--error-border)] rounded-[var(--radius-card)] flex items-center gap-3",children:[e.jsx(r.AlertCircle,{className:"w-5 h-5 text-[var(--error-dot)] flex-shrink-0"}),e.jsx("span",{className:"text-[var(--error-text)]",children:J}),e.jsx("button",{onClick:N,className:"ml-auto text-sm text-[var(--error-text)] hover:underline",children:s("common.retry")})]}),e.jsx("div",{className:"card p-4 mb-6",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{className:"relative flex-1 min-w-[200px] max-w-md",children:[e.jsx(r.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:P.search,onChange:C=>le("search",C.target.value),placeholder:s("common.search"),className:"input !pl-10 w-full"})]}),t||n?e.jsxs("div",{className:"relative",children:[e.jsxs("select",{value:P.status,onChange:C=>le("status",C.target.value),className:"input appearance-none pr-8 min-w-[160px]",children:[e.jsxs("option",{value:"",children:[s("tenants.columns.status"),": ",s("common.all")]}),e.jsx("option",{value:"Pending",children:s("tenants.status.pending")}),e.jsx("option",{value:"Active",children:s("tenants.status.active")}),e.jsx("option",{value:"Suspended",children:s("tenants.status.suspended")}),e.jsx("option",{value:"Archived",children:s("tenants.status.archived")})]}),e.jsx(r.ChevronDown,{className:"absolute right-2.5 top-1/2 -translate-y-1/2 w-4 h-4 pointer-events-none text-[var(--text-tertiary)]"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("button",{onClick:()=>f(!g),className:`flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] transition-colors ${v>0?"ring-2 ring-[var(--color-accent-500)]":""}`,children:[e.jsx(r.Filter,{className:"w-4 h-4"}),s("common.filters"),v>0&&e.jsx("span",{className:"ml-1 px-1.5 py-0.5 text-xs rounded-full bg-[var(--color-accent-500)] text-white",children:v}),e.jsx(r.ChevronDown,{className:`w-4 h-4 transition-transform ${g?"rotate-180":""}`})]}),v>0&&e.jsxs("button",{onClick:ie,className:"flex items-center gap-1.5 px-4 py-2 rounded-[var(--radius-button)] text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx(r.RotateCcw,{className:"w-4 h-4"}),s("common.reset")]})]}),e.jsx("div",{className:"flex-1"}),e.jsx(E.ViewToggle,{viewMode:Z,onChange:q,showTable:!0,showCards:!0,showKanban:!1,tableLabel:s("common.table"),cardsLabel:s("common.cards")})]}),!t&&!n&&g&&e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 pt-4 border-t border-[var(--border-color)]",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-medium text-[var(--text-tertiary)] mb-1.5",children:s("tenants.columns.status")}),e.jsxs("div",{className:"relative",children:[e.jsxs("select",{value:P.status,onChange:C=>le("status",C.target.value),className:"input w-full appearance-none pr-8",children:[e.jsx("option",{value:"",children:s("common.all")}),e.jsx("option",{value:"Pending",children:s("tenants.status.pending")}),e.jsx("option",{value:"Active",children:s("tenants.status.active")}),e.jsx("option",{value:"Suspended",children:s("tenants.status.suspended")}),e.jsx("option",{value:"Archived",children:s("tenants.status.archived")})]}),e.jsx(r.ChevronDown,{className:"absolute right-2.5 top-1/2 -translate-y-1/2 w-4 h-4 pointer-events-none text-[var(--text-tertiary)]"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-medium text-[var(--text-tertiary)] mb-1.5",children:s("tenants.columns.type")}),e.jsxs("div",{className:"relative",children:[e.jsxs("select",{value:P.type,onChange:C=>le("type",C.target.value),className:"input w-full appearance-none pr-8",children:[e.jsx("option",{value:"",children:s("common.all")}),e.jsx("option",{value:"Personal",children:s("tenants.type.personal")}),e.jsx("option",{value:"Business",children:s("tenants.type.business")}),e.jsx("option",{value:"System",children:s("tenants.type.system")})]}),e.jsx(r.ChevronDown,{className:"absolute right-2.5 top-1/2 -translate-y-1/2 w-4 h-4 pointer-events-none text-[var(--text-tertiary)]"})]})]})]})]})}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-6",children:[e.jsx("div",{className:"card p-4 border bg-[var(--success-bg)] border-[var(--success-border)]",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(r.Building2,{className:"w-8 h-8 text-[var(--success-text)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-[var(--success-text)]",children:G.active}),e.jsx("p",{className:"text-sm text-[var(--success-text)]",children:s("tenants.status.active")})]})]})}),e.jsx("div",{className:"card p-4 border bg-[var(--warning-bg)] border-[var(--warning-border)]",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(r.PauseCircle,{className:"w-8 h-8 text-[var(--warning-text)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-[var(--warning-text)]",children:G.suspended}),e.jsx("p",{className:"text-sm text-[var(--warning-text)]",children:s("tenants.status.suspended")})]})]})}),e.jsx("div",{className:"card p-4 border bg-[var(--bg-secondary)] border-[var(--border-color)]",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(r.Users,{className:"w-8 h-8 text-[var(--text-secondary)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-[var(--text-primary)]",children:G.members}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:s("tenants.columns.members")})]})]})}),e.jsx("div",{className:`card p-4 border ${G.pendingRequests>0?"bg-[var(--warning-bg)] border-[var(--warning-border)]":"bg-[var(--bg-secondary)] border-[var(--border-color)]"}`,children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(r.Clock,{className:`w-8 h-8 ${G.pendingRequests>0?"text-[var(--warning-text)]":"text-[var(--text-secondary)]"}`}),e.jsxs("div",{children:[e.jsx("p",{className:`text-2xl font-bold ${G.pendingRequests>0?"text-[var(--warning-text)]":"text-[var(--text-primary)]"}`,children:G.pendingRequests}),e.jsx("p",{className:`text-sm ${G.pendingRequests>0?"text-[var(--warning-text)]":"text-[var(--text-secondary)]"}`,children:s("tenants.columns.requests")})]})]})})]}),Z==="table"?He():Ce(),ee>1&&e.jsx("div",{className:"mt-6",children:e.jsx(E.Pagination,{page:U,totalPages:ee,totalCount:$,pageSize:20,onPageChange:z,itemLabel:s("tenants.title").toLowerCase()})}),(()=>{const C=W();return C?e.jsx(Ve.ConfirmModal,{isOpen:!!L,title:C.label,message:C.message,confirmLabel:C.label,variant:C.variant,loading:!!H,onConfirm:me,onCancel:()=>k(null)}):null})()]})}function bt(t){const{t:n}=de.useTranslation(["admin","common"]),[s,l]=a.useState(null),[d,i]=a.useState(!0),[c,b]=a.useState(null),[h,u]=a.useState(!1),[m,o]=a.useState(""),[x,p]=a.useState(""),[S,B]=a.useState(!1),P=a.useCallback(async()=>{if(t)try{b(null);const D=await E.adminApi.tenants.getById(t);l(D)}catch(D){console.error("Failed to load tenant:",D),b(n("admin:tenants.errors.loadFailed"))}finally{i(!1)}},[t,n]),T=a.useCallback(()=>{s&&(o(s.name),p(s.description||""),u(!0))},[s]),g=a.useCallback(()=>{u(!1),o(""),p("")},[]),f=a.useCallback(async()=>{if(s){B(!0);try{await E.adminApi.tenants.update(s.id,{name:m,description:x||void 0}),await P(),g()}catch(D){console.error("Failed to update tenant:",D)}finally{B(!1)}}},[s,m,x,P,g]);return{tenant:s,setTenant:l,loading:d,setLoading:i,error:c,setError:b,loadTenant:P,editingGeneralInfo:h,setEditingGeneralInfo:u,editName:m,setEditName:o,editDescription:x,setEditDescription:p,savingGeneralInfo:S,setSavingGeneralInfo:B,handleSaveGeneralInfo:f,openEditGeneralInfo:T,closeEditGeneralInfo:g}}function Ut(t){const[n,s]=a.useState(null),[l,d]=a.useState(!1),[i,c]=a.useState(!1),[b,h]=a.useState([]),[u,m]=a.useState(!1),[o,x]=a.useState(""),[p,S]=a.useState(null),[B,P]=a.useState(!1),[T,g]=a.useState(null),[f,D]=a.useState([]),[y,H]=a.useState([]),[R,L]=a.useState(!1),[k,Z]=a.useState(!1),q=a.useCallback(async()=>{if(t){d(!0);try{const A=await E.adminApi.tenants.getMembers(t);s(A)}catch(A){console.error("Failed to load members:",A)}finally{d(!1)}}},[t]),U=a.useCallback(async()=>{m(!0);try{const A=await E.adminApi.users.getAll({pageSize:50}),j=new Set((n??[]).map(M=>M.userId));h(A.items.filter(M=>!j.has(M.id)))}catch(A){console.error("Failed to load users:",A)}finally{m(!1)}},[n]),z=a.useCallback(async()=>{if(!(!t||!p)){P(!0);try{await E.adminApi.tenants.addMember(t,{userId:p}),await q(),c(!1),S(null),x("")}catch(A){console.error("Failed to add member:",A)}finally{P(!1)}}},[t,p,q]),ee=a.useCallback(async A=>{if(t)try{await E.adminApi.tenants.removeMember(t,A),await q()}catch(j){console.error("Failed to remove member:",j)}},[t,q]),ae=a.useCallback(async()=>{L(!0);try{const A=await E.adminApi.roles.getAssignable();D(A)}catch(A){console.error("Failed to load roles:",A)}finally{L(!1)}},[]),$=a.useCallback(async A=>{g(A),H(A.roles.map(j=>j.roleId)),f.length===0&&await ae()},[f.length,ae]),X=a.useCallback(()=>{g(null),H([])},[]),J=a.useCallback(A=>{H(j=>j.includes(A)?j.filter(M=>M!==A):[...j,A])},[]),F=a.useCallback(async()=>{if(!(!t||!T)){Z(!0);try{await E.adminApi.tenants.assignMemberRoles(t,T.userId,y),await q(),X()}catch(A){console.error("Failed to save roles:",A)}finally{Z(!1)}}},[t,T,y,q,X]);return{members:n,setMembers:s,loadingMembers:l,setLoadingMembers:d,addingMember:i,setAddingMember:c,availableUsers:b,setAvailableUsers:h,loadingUsers:u,setLoadingUsers:m,userSearchTerm:o,setUserSearchTerm:x,selectedUserId:p,setSelectedUserId:S,addingMemberLoading:B,setAddingMemberLoading:P,selectedMemberForRoles:T,setSelectedMemberForRoles:g,availableRoles:f,setAvailableRoles:D,selectedRoleIds:y,setSelectedRoleIds:H,loadingRoles:R,setLoadingRoles:L,savingRoles:k,setSavingRoles:Z,loadMembers:q,loadAvailableUsers:U,handleAddMember:z,handleRemoveMember:ee,openRoleModal:$,closeRoleModal:X,handleSaveRoles:F,handleRoleToggle:J}}function Ot(t){const{t:n}=de.useTranslation("admin"),[s,l]=a.useState(null),[d,i]=a.useState(!1),[c,b]=a.useState(!1),[h,u]=a.useState([]),[m,o]=a.useState(!1),[x,p]=a.useState([]),[S,B]=a.useState(!1),[P,T]=a.useState(""),[g,f]=a.useState(null),D=a.useCallback(async()=>{if(t){i(!0);try{const L=await E.adminApi.tenants.getGroups(t);l(Array.isArray(L)?L:[])}catch(L){console.error("Failed to load groups:",L),l([])}finally{i(!1)}}},[t]),y=a.useCallback(async()=>{if(t){o(!0);try{const L=await E.adminApi.tenants.getAvailableGroups(t);u(L)}catch(L){console.error("Failed to load available groups:",L),u([])}finally{o(!1)}}},[t]),H=a.useCallback(async()=>{if(!t||x.length===0)return;B(!0);const L=[],k=[];for(const Z of x)try{await E.adminApi.tenants.addGroupToTenant(t,Z),L.push(Z)}catch(q){console.error(`Failed to add group ${Z}:`,q),k.push(Z)}await D(),k.length===0?(b(!1),p([])):L.length===0||p(k),B(!1)},[t,x,D,n]),R=a.useCallback(async L=>{if(t){f(L);try{await E.adminApi.tenants.removeGroupFromTenant(t,L),await D()}catch(k){console.error("Failed to remove group:",k)}finally{f(null)}}},[t,D]);return{groups:s,setGroups:l,loadingGroups:d,setLoadingGroups:i,addingGroup:c,setAddingGroup:b,availableGroupsForTenant:h,setAvailableGroupsForTenant:u,loadingAvailableGroups:m,setLoadingAvailableGroups:o,selectedGroupIds:x,setSelectedGroupIds:p,assigningGroups:S,setAssigningGroups:B,groupSearchTerm:P,setGroupSearchTerm:T,removingGroupId:g,setRemovingGroupId:f,loadGroups:D,loadAvailableGroups:y,handleAssignGroups:H,handleRemoveGroup:R}}const Gt=(t,n)=>{if(t.id!==n)return t;const s=!t.isAssigned;return{...t,isAssigned:s,sections:t.sections.map(l=>({...l,isAssigned:s}))}},Ht=(t,n,s)=>{if(t.id!==n)return t;const l=t.sections.map(i=>i.id===s?{...i,isAssigned:!i.isAssigned}:i),d=l.some(i=>i.isAssigned);return{...t,isAssigned:d,sections:l}},qt=t=>({...t,isAssigned:!0,sections:t.sections.map(n=>({...n,isAssigned:!0}))}),zt=t=>({...t,isAssigned:!1,sections:t.sections.map(n=>({...n,isAssigned:!1}))});function Vt(t,n){const[s,l]=a.useState(null),[d,i]=a.useState(!1),[c,b]=a.useState(!1),[h,u]=a.useState([]),[m,o]=a.useState(!1),[x,p]=a.useState([]),[S,B]=a.useState(!1),[P,T]=a.useState(""),[g,f]=a.useState(null),[D,y]=a.useState("FullAccess"),[H,R]=a.useState("full"),[L,k]=a.useState([]),[Z,q]=a.useState(new Set),[U,z]=a.useState(!1),[ee,ae]=a.useState(!1),[$,X]=a.useState(null),J=a.useCallback(async()=>{if(t){i(!0);try{const V=await E.adminApi.tenants.getApplications(t);l(Array.isArray(V)?V:[])}catch(V){console.error("Failed to load applications:",V),l([])}finally{i(!1)}}},[t]),F=a.useCallback(async()=>{if(t){b(!0),p([]),o(!0),f(null);try{const V=await E.adminApi.tenants.getAvailableApplications(t);u(V.filter(Y=>!Y.isAssigned))}catch(V){console.error("Failed to load available applications:",V);const Y=V instanceof Error&&V.name==="ForbiddenError";f(Y?"forbidden":"generic")}finally{o(!1)}}},[t]),A=a.useCallback(()=>{b(!1),p([]),T(""),y("FullAccess"),R("full"),k([]),q(new Set)},[]),j=a.useCallback(async()=>{if(!(!t||x.length===0)){B(!0);try{const V={applicationIds:x,accessLevel:D,accessMode:H,moduleIds:H==="custom"?L.filter(Y=>Y.isAssigned).map(Y=>Y.id):void 0,sectionIds:H==="custom"?L.flatMap(Y=>Y.sections.filter(re=>re.isAssigned).map(re=>re.id)):void 0};await E.adminApi.tenants.bulkAssignApplications(t,V),await J(),A(),n?.onApplicationsChanged?.()}catch(V){console.error("Failed to assign applications:",V)}finally{B(!1)}}},[t,x,D,H,L,J,A,n]),M=a.useCallback(async V=>{if(t)try{await E.adminApi.tenants.removeApplication(t,V),await J(),n?.onApplicationsChanged?.()}catch(Y){console.error("Failed to remove application:",Y)}},[t,J,n]),O=a.useCallback(async(V,Y)=>{if(t)try{await E.adminApi.tenants.updateApplicationAccessLevel(t,V,Y),await J(),n?.onApplicationsChanged?.()}catch(re){console.error("Failed to update access level:",re)}},[t,J,n]),w=a.useCallback(V=>{X(V),ae(!0)},[]),v=a.useCallback(()=>{ae(!1),X(null)},[]),N=a.useCallback(async(V,Y)=>{if(t)try{await E.adminApi.tenants.saveOverrides(t,V,Y),await J(),n?.onApplicationsChanged?.()}catch(re){throw console.error("Failed to save overrides:",re),re}},[t,J,n]),ie=a.useCallback(async V=>{if(t)try{await E.adminApi.tenants.saveOverrides(t,V,{modules:[],sections:[]}),await J(),n?.onApplicationsChanged?.()}catch(Y){throw console.error("Failed to reset overrides:",Y),Y}},[t,J,n]),le=a.useMemo(()=>{if(!P)return h;const V=P.toLowerCase();return h.filter(Y=>Y.label.toLowerCase().includes(V)||Y.code.toLowerCase().includes(V))},[h,P]),te=a.useCallback(V=>{p(Y=>Y.includes(V)?Y.filter(re=>re!==V):[...Y,V])},[]),Q=a.useCallback(()=>{const V=le.map(Y=>Y.id);p(V)},[le]),pe=a.useCallback(()=>{p([])},[]),me=a.useCallback(async V=>{z(!0);try{const Y=await E.adminApi.applications.getModules(V),re=[];for(const ve of Y){const fe=(await E.adminApi.applications.getModuleSections(V,ve.id)).map(ye=>({id:ye.id,label:ye.label,code:ye.code,icon:ye.icon,isAssigned:!0}));re.push({id:ve.id,label:ve.label,code:ve.code,icon:ve.icon,isAssigned:!0,sections:fe})}k(re)}catch(Y){console.error("Failed to load modules:",Y)}finally{z(!1)}},[]),K=a.useCallback(V=>{q(Y=>{const re=new Set(Y);return re.has(V)?re.delete(V):re.add(V),re})},[]),ce=a.useCallback(V=>{k(Y=>Y.map(re=>Gt(re,V)))},[]),ge=a.useCallback((V,Y)=>{k(re=>re.map(ve=>Ht(ve,V,Y)))},[]),W=a.useCallback(V=>{if(V.sections.length===0)return V.isAssigned?"checked":"unchecked";const Y=V.sections.filter(re=>re.isAssigned).length;return Y===0?"unchecked":Y===V.sections.length?"checked":"indeterminate"},[]),G=a.useCallback(()=>{const V=L.length,Y=L.filter(he=>he.isAssigned||he.sections.some(fe=>fe.isAssigned)).length,re=L.reduce((he,fe)=>he+fe.sections.length,0),ve=L.reduce((he,fe)=>he+fe.sections.filter(ye=>ye.isAssigned).length,0);return{totalModules:V,assignedModules:Y,totalSections:re,assignedSections:ve}},[L]),_=a.useCallback(()=>{k(V=>V.map(Y=>qt(Y)))},[]),se=a.useCallback(()=>{k(V=>V.map(Y=>zt(Y)))},[]);return{applications:s,setApplications:l,loadingApps:d,setLoadingApps:i,addingApplication:c,setAddingApplication:b,availableApps:h,setAvailableApps:u,loadingAvailableApps:m,setLoadingAvailableApps:o,selectedAppIds:x,setSelectedAppIds:p,assigningApps:S,setAssigningApps:B,appSearchTerm:P,setAppSearchTerm:T,selectedAccessLevel:D,setSelectedAccessLevel:y,bulkAccessMode:H,setBulkAccessMode:R,bulkModules:L,setBulkModules:k,bulkExpandedModules:Z,setBulkExpandedModules:q,loadingBulkModules:U,setLoadingBulkModules:z,showCustomizeDrawer:ee,setShowCustomizeDrawer:ae,customizingApp:$,setCustomizingApp:X,loadApplications:J,availableAppsError:g,loadAvailableApps:F,handleAssignApplications:j,handleRemoveApplication:M,handleUpdateAccessLevel:O,openCustomizeDrawer:w,closeCustomizeDrawer:v,filteredAvailableApps:le,handleAppToggle:te,selectAllFilteredApps:Q,clearAppSelection:pe,loadBulkModulesForApp:me,toggleBulkModuleExpand:K,toggleBulkModule:ce,toggleBulkSection:ge,getBulkModuleCheckState:W,getBulkStats:G,selectAllBulkModules:_,clearBulkModules:se,handleSaveOverrides:N,handleResetOverrides:ie}}const _t={FR:{types:["SIREN","SIRET"],defaultType:"SIREN",country:"France"},CH:{types:["UID_CHE"],defaultType:"UID_CHE",country:"Switzerland"},DE:{types:["HRB","HRA"],defaultType:"HRB",country:"Germany"},BE:{types:["BCE_KBO"],defaultType:"BCE_KBO",country:"Belgium"},NL:{types:["KVK"],defaultType:"KVK",country:"Netherlands"},ES:{types:["CIF"],defaultType:"CIF",country:"Spain"},IT:{types:["PartitaIVA"],defaultType:"PartitaIVA",country:"Italy"},GB:{types:["CRN"],defaultType:"CRN",country:"United Kingdom"}},st={name:"",countryCode:"CH",businessIdentifierType:"UID_CHE",businessIdentifier:"CHE-",address:{street:"",postalCode:"",city:"",state:void 0,country:"Switzerland",countryCode:"CH"}};function Kt(t){const{t:n}=de.useTranslation("admin"),[s,l]=a.useState(!1),[d,i]=a.useState([]),[c,b]=a.useState(!1),[h,u]=a.useState(null),[m,o]=a.useState(!1),[x,p]=a.useState(""),[S,B]=a.useState(!1),[P,T]=a.useState(!1),[g,f]=a.useState(st),[D,y]=a.useState(!1),[H,R]=a.useState(null),[L,k]=a.useState(!1),Z=a.useCallback(async A=>{b(!0);try{const j=await E.adminApi.organisations.getAvailable(A),M=Array.isArray(j)?j:j.items??[];i(M)}catch(j){console.error("Failed to load available organisations:",j),i([])}finally{b(!1)}},[]),q=a.useCallback(()=>{l(!0),u(null),p(""),Z()},[Z]),U=a.useCallback(()=>{l(!1),u(null),p(""),B(!1),f(st),y(!1),R(null),k(!1)},[]),z=a.useCallback(async()=>{if(!(!t||!h)){o(!0);try{await E.adminApi.tenants.linkOrganisation(t,h),U()}catch(A){console.error("Failed to link organisation:",A)}finally{o(!1)}}},[t,h,U]),ee=a.useCallback(async()=>{if(t){o(!0);try{await E.adminApi.tenants.unlinkOrganisation(t)}catch(A){console.error("Failed to unlink organisation:",A)}finally{o(!1)}}},[t]),ae=a.useCallback(async()=>{if(t&&!(!g.name||!g.businessIdentifier||!g.address.street||!g.address.city||!g.address.postalCode)){T(!0);try{const A=await E.adminApi.organisations.create(g);await E.adminApi.tenants.linkOrganisation(t,A.id),U()}catch(A){console.error("Failed to create and link organisation:",A)}finally{T(!1)}}},[t,g,U]),$=a.useCallback(A=>{const j=A.toUpperCase().replace(/[^A-Z0-9]/g,"");let M=j.startsWith("CHE")?j.slice(3):j.replace(/[^0-9]/g,"");return M=M.slice(0,9),M.length===0?"CHE-":M.length<=3?`CHE-${M}`:M.length<=6?`CHE-${M.slice(0,3)}.${M.slice(3)}`:`CHE-${M.slice(0,3)}.${M.slice(3,6)}.${M.slice(6)}`},[]),X=a.useCallback(A=>{g.countryCode==="CH"?f(j=>({...j,businessIdentifier:$(A)})):f(j=>({...j,businessIdentifier:A})),R(null),k(!1)},[g.countryCode,$]),J=a.useCallback(async()=>{const A=g.businessIdentifier.replace(/[^0-9]/g,"");if(!g.businessIdentifier||A.length<9||g.countryCode!=="CH"){R(n("tenants.organisation.lookupIncomplete"));return}y(!0),R(null),k(!1);try{const j=await E.adminApi.organisations.lookup(g.countryCode,g.businessIdentifier);f(M=>({...M,name:j.name||M.name,legalName:j.legalName||M.legalName,vatNumber:j.vatNumber||M.vatNumber,address:{...M.address,street:j.street||M.address.street,street2:j.street2||M.address.street2||void 0,postalCode:j.postalCode||M.address.postalCode,city:j.city||M.address.city,state:j.state||M.address.state,country:j.country||M.address.country,countryCode:j.countryCode||M.address.countryCode}})),k(!0),setTimeout(()=>k(!1),3e3)}catch(j){console.error("[Zefix Lookup] Failed:",j);const M=j instanceof Error?j.message:"";M.includes("503")||M.includes("not configured")||M.includes("Service Unavailable")?R(n("tenants.organisation.lookupServiceUnavailable")):M.includes("credentials")||M.includes("401")?R(n("tenants.organisation.lookupAuthError")):(M.includes("404")||M.includes("not found"),R(n("tenants.organisation.lookupFailed")))}finally{y(!1)}},[g.businessIdentifier,g.countryCode,n]),F=a.useCallback(A=>{const j=_t[A];j&&f(M=>({...M,countryCode:A,businessIdentifierType:j.defaultType,businessIdentifier:A==="CH"?"CHE-":"",address:{...M.address,countryCode:A,country:j.country}}))},[]);return{showLinkOrgModal:s,setShowLinkOrgModal:l,availableOrgs:d,setAvailableOrgs:i,loadingOrgs:c,setLoadingOrgs:b,selectedOrgId:h,setSelectedOrgId:u,linkingOrg:m,setLinkingOrg:o,orgSearchTerm:x,setOrgSearchTerm:p,showCreateOrgForm:S,setShowCreateOrgForm:B,creatingOrg:P,setCreatingOrg:T,newOrgForm:g,setNewOrgForm:f,lookupLoading:D,setLookupLoading:y,lookupError:H,setLookupError:R,lookupSuccess:L,setLookupSuccess:k,loadAvailableOrgs:Z,handleLinkOrganisation:z,handleUnlinkOrganisation:ee,handleCreateAndLinkOrganisation:ae,formatCheNumber:$,handleBusinessIdChange:X,handleZefixLookup:J,openLinkOrgModal:q,closeLinkOrgModal:U,handleCountryChange:F}}function Wt(t){const[n,s]=a.useState(null),[l,d]=a.useState(!1),[i,c]=a.useState(null),b=a.useCallback(async()=>{if(t){d(!0),c(null);try{const h=await E.adminApi.tenants.getTenantRoles(t);s(h)}catch(h){console.error("Failed to load tenant roles:",h),c("Failed to load roles")}finally{d(!1)}}},[t]);return{roles:n,loadingRoles:l,error:i,loadRoles:b}}function Xt({show:t,templates:n,selectedTemplateId:s,loadingTemplates:l,assigningTemplate:d,onTemplateSelect:i,onClose:c,onAssign:b,tenantTemplateId:h,t:u}){return t?e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"card w-full max-w-md p-6 m-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:u("tenants.template.selectTitle")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1",children:u("tenants.template.selectSubtitle")})]}),e.jsx("button",{onClick:c,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),l&&e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--text-secondary)]"})}),!l&&n.length===0&&e.jsx("div",{className:"p-4 rounded-lg bg-[var(--bg-secondary)] text-center",children:e.jsx("p",{className:"text-sm text-[var(--text-tertiary)]",children:u("tenants.template.noTemplatesAvailable")})}),!l&&n.length>0&&e.jsx("div",{className:"space-y-2 max-h-[300px] overflow-y-auto mb-6",children:n.map(m=>e.jsxs("button",{onClick:()=>i(m.id),className:`w-full p-3 rounded-lg border text-left transition-colors ${s===m.id?"border-[var(--primary-color)] bg-[var(--primary-color)]/5":"border-[var(--border-color)] bg-[var(--bg-secondary)] hover:border-[var(--primary-color)]"}`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)]",children:m.name}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] font-mono",children:m.code})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:`px-2 py-0.5 text-xs rounded-[var(--radius-badge)] ${m.targetTenantType==="Business"?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--accent-bg)] text-[var(--accent-text)]"}`,children:u(`tenants.type.${m.targetTenantType.toLowerCase()}`)}),m.isDefault&&e.jsx("span",{className:"px-2 py-0.5 text-xs rounded-[var(--radius-badge)] bg-[var(--success-bg)] text-[var(--success-text)]",children:u("tenants.template.default")})]})]}),m.description&&e.jsx("p",{className:"text-xs text-[var(--text-secondary)] mt-1",children:m.description})]},m.id))}),e.jsxs("div",{className:"flex justify-end gap-3",children:[e.jsx("button",{onClick:c,className:"btn btn-secondary",children:u("common:cancel")}),e.jsx("button",{onClick:b,disabled:d||!s||s===h,className:"btn btn-primary",children:d?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):u("tenants.template.confirm")})]})]})}):null}function Yt({tenant:t,statusConfig:n,onEditClick:s,t:l}){return e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Info,{className:"w-5 h-5"}),l("tenants.detail.generalInfo")]}),e.jsxs("button",{onClick:s,className:"btn btn-secondary",children:[e.jsx(r.Edit3,{className:"w-4 h-4"}),l("common:edit")]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.name")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-medium",children:t.name})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.slug")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-mono",children:t.slug})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.type")}),e.jsx("span",{className:`inline-flex px-2 py-0.5 text-xs rounded-[var(--radius-badge)] ${t.type==="Business"?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--accent-bg)] text-[var(--accent-text)]"}`,children:l(`tenants.type.${t.type.toLowerCase()}`)})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.status")}),e.jsx("span",{className:`inline-flex px-2 py-0.5 text-xs rounded-[var(--radius-badge)] ${n[t.status].bgColor} ${n[t.status].color}`,children:l(`tenants.status.${t.status.toLowerCase()}`)})]}),t.description&&e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)] sm:col-span-2 lg:col-span-4",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.description")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] whitespace-pre-wrap",children:t.description})]})]})]})}function Zt({tenant:t,ticketingConfig:n,loadingTicketing:s,t:l,navigate:d}){return e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Headphones,{className:"w-5 h-5"}),l("tenants.detail.supportManagement.title")]}),e.jsxs("button",{onClick:()=>d(`/administration/tenants/${t.id}/settings?tab=support`),className:"btn btn-secondary",children:[e.jsx(r.Settings,{className:"w-4 h-4"}),l("tenants.detail.supportManagement.configure")]})]}),s&&e.jsx("div",{className:"flex justify-center py-4",children:e.jsx(r.Loader2,{className:"w-5 h-5 animate-spin text-[var(--text-secondary)]"})}),!s&&n&&e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.supportManagement.provider")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-medium",children:n.provider==="Glpi"?l("tenants.detail.supportManagement.providerGlpi"):l("tenants.detail.supportManagement.providerSmartStack")})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.supportManagement.status")}),e.jsx("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-xs rounded-[var(--radius-badge)] ${n.isConfigured?"bg-[var(--success-bg)] text-[var(--success-text)]":"bg-[var(--warning-bg)] text-[var(--warning-text)]"}`,children:n.isConfigured?e.jsxs(e.Fragment,{children:[e.jsx(r.CheckCircle2,{className:"w-3 h-3"}),l("tenants.detail.supportManagement.configured")]}):e.jsxs(e.Fragment,{children:[e.jsx(r.AlertCircle,{className:"w-3 h-3"}),l("tenants.detail.supportManagement.notConfigured")]})})]}),n.provider==="Glpi"&&n.glpiBaseUrl&&e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.supportManagement.glpiUrl")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-mono truncate",title:n.glpiBaseUrl,children:n.glpiBaseUrl})]})]}),!s&&!n&&e.jsxs("div",{className:"p-4 rounded-lg bg-[var(--info-bg)] border border-[var(--info-border)] text-center",children:[e.jsx(r.Headphones,{className:"w-5 h-5 text-[var(--info-text)] mx-auto mb-2"}),e.jsx("p",{className:"text-sm text-[var(--info-text)]",children:l("tenants.detail.supportManagement.noConfiguration")}),e.jsx("p",{className:"text-xs text-[var(--info-text)] mt-1 opacity-75",children:l("tenants.detail.supportManagement.noConfigurationHint")})]})]})}function Qt({tenant:t,templates:n,onOpenTemplateModal:s,onRemoveTemplate:l,removingTemplate:d,navigate:i,t:c}){return e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Layers,{className:"w-5 h-5"}),c("tenants.templateTenant.title")]}),e.jsxs("button",{onClick:()=>i("/administration/tenants/template"),className:"flex items-center gap-1 text-xs text-[var(--text-tertiary)] hover:text-[var(--primary-color)] transition-colors",title:c("tenants.templateTenant.viewAll"),children:[e.jsx(r.ExternalLink,{className:"w-3 h-3"}),c("tenants.templateTenant.viewAll")]})]}),t.templateId?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:s,className:"btn btn-secondary",children:[e.jsx(r.Edit3,{className:"w-4 h-4"}),c("tenants.template.change")]}),e.jsxs("button",{onClick:l,disabled:d,className:"btn btn-secondary text-[var(--error-text)] hover:bg-[var(--error-bg)]",children:[d?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.X,{className:"w-4 h-4"}),c("tenants.template.remove")]})]}):e.jsxs("button",{onClick:s,className:"btn btn-secondary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),c("tenants.template.assign")]})]}),t.templateId?e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:c("tenants.template.name")}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-medium",children:t.templateName||"-"}),n.find(b=>b.id===t.templateId)?.isDefault&&e.jsxs("span",{className:"flex items-center gap-1 px-1.5 py-0.5 text-xs rounded-[var(--radius-badge)] bg-[var(--accent-bg)] text-[var(--accent-text)]",children:[e.jsx(r.Star,{className:"w-3 h-3"}),c("tenants.template.default")]})]})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:c("tenants.template.code")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-mono",children:t.templateCode||"-"})]}),e.jsx("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)] flex items-center",children:e.jsxs("button",{onClick:()=>i(`/administration/tenants/template/${t.templateId}`),className:"flex items-center gap-2 text-sm text-[var(--primary-color)] hover:underline",children:[c("tenants.template.viewDetails"),e.jsx(r.ArrowRight,{className:"w-3.5 h-3.5"})]})})]}):e.jsxs("div",{className:"p-4 rounded-lg bg-[var(--warning-bg)] border border-[var(--warning-border)] text-center",children:[e.jsx(r.Layers,{className:"w-5 h-5 text-[var(--warning-text)] mx-auto mb-2"}),e.jsx("p",{className:"text-sm text-[var(--warning-text)]",children:c("tenants.templateTenant.noLink")}),e.jsx("p",{className:"text-xs text-[var(--warning-text)] mt-1 opacity-75",children:c("tenants.templateTenant.noLinkHint")})]})]})}function Jt({tenant:t,tenantOwner:n,statusConfig:s,actionLoading:l,onRefresh:d,onEditClick:i,onStatusChange:c,onMembersTabClick:b,onLinkOrgClick:h,onUnlinkOrg:u}){const{t:m}=de.useTranslation("admin"),o=xe.useNavigate(),[x,p]=a.useState(!1),[S,B]=a.useState({name:"",description:"",type:"Business"}),[P,T]=a.useState(!1),[g,f]=a.useState(!1),[D,y]=a.useState(!1),[H,R]=a.useState([]),[L,k]=a.useState(!1),[Z,q]=a.useState(""),[U,z]=a.useState(!1),[ee,ae]=a.useState(!1),[$,X]=a.useState(null),[J,F]=a.useState(!1),A=a.useCallback(async()=>{F(!0);try{const te=await De.ticketingApi.getConfiguration(t.id);X(te)}catch{X(null)}finally{F(!1)}},[t.id]);a.useEffect(()=>{A()},[A]);const j=a.useCallback(async()=>{k(!0);try{const te=await E.adminApi.templates.getAll();R(te.filter(Q=>Q.isActive))}catch(te){console.error("Failed to load templates:",te)}finally{k(!1)}},[]);a.useEffect(()=>{t.templateId&&H.length===0&&j()},[t.templateId,H.length,j]);const M=async()=>{q(t.templateId||""),y(!0),await j()},O=async()=>{if(Z){z(!0);try{await E.adminApi.tenants.assignTemplate(t.id,Z),await d(),y(!1)}catch(te){console.error("Failed to assign template:",te)}finally{z(!1)}}},w=async()=>{ae(!0);try{await E.adminApi.tenants.removeTemplate(t.id),await d()}catch(te){console.error("Failed to remove template:",te)}finally{ae(!1)}},v=()=>{B({name:t.name,description:t.description||"",type:t.type}),p(!0),i()},N=()=>{p(!1),B({name:"",description:"",type:"Business"})},ie=async()=>{if(S.name.trim()){T(!0);try{await E.adminApi.tenants.update(t.id,{name:S.name,description:S.description,type:S.type}),await d(),N()}catch(te){console.error("Failed to save tenant info:",te)}finally{T(!1)}}},le=async()=>{f(!0);try{await u()}finally{f(!1)}};return e.jsxs("div",{className:"space-y-6",children:[e.jsx(Yt,{tenant:t,statusConfig:s,onEditClick:v,t:m}),e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Info,{className:"w-5 h-5"}),m("tenants.detail.owner")]}),e.jsxs("button",{onClick:b,className:"btn btn-secondary",title:m("tenants.members.transferOwnership.title"),children:[e.jsx(r.Edit3,{className:"w-4 h-4"}),m("common:edit")]})]}),n?e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:m("common:name")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-medium",children:n.userDisplayName||"-"})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:m("common:email")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-medium",children:n.userEmail||"-"})]})]}):e.jsx("div",{className:"p-4 rounded-lg bg-[var(--bg-secondary)] text-center",children:e.jsx("p",{className:"text-sm text-[var(--text-tertiary)]",children:m("tenants.detail.noOwner")})})]}),t.type==="Business"&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Building2,{className:"w-5 h-5"}),m("tenants.detail.organisation")]}),t.organisationId?e.jsxs("button",{onClick:le,disabled:g,className:"btn btn-secondary text-[var(--error-text)] hover:bg-[var(--error-bg)]",children:[g?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.X,{className:"w-4 h-4"}),m("tenants.organisation.unlink")]}):e.jsxs("button",{onClick:h,className:"btn btn-secondary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),m("tenants.organisation.link")]})]}),t.organisationId?e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:m("tenants.detail.organisationName")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-medium",children:t.organisation?.name||"-"})]})}):e.jsxs("div",{className:"p-4 rounded-lg bg-[var(--info-bg)] border border-[var(--info-border)] text-center",children:[e.jsx(r.Info,{className:"w-5 h-5 text-[var(--info-text)] mx-auto mb-2"}),e.jsx("p",{className:"text-sm text-[var(--info-text)]",children:m("tenants.organisation.noOrganisation")})]})]}),e.jsx(Zt,{tenant:t,ticketingConfig:$,loadingTicketing:J,t:m,navigate:o}),e.jsx(Qt,{tenant:t,templates:H,onOpenTemplateModal:M,onRemoveTemplate:w,removingTemplate:ee,navigate:o,t:m}),e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsx("div",{className:"flex items-center justify-between mb-4",children:e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Settings,{className:"w-5 h-5"}),m("tenants.detail.actions")]})}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[t.status!=="Active"&&t.status!=="Archived"&&e.jsxs("button",{onClick:()=>c("activate"),disabled:l!==null,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--success-dot)] text-white hover:opacity-90 transition-colors disabled:opacity-50",children:[l==="activate"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.PlayCircle,{className:"w-4 h-4"}),m("tenants.actions.activate")]}),t.status==="Active"&&e.jsxs("button",{onClick:()=>c("suspend"),disabled:l!==null,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--warning-dot)] text-white hover:opacity-90 transition-colors disabled:opacity-50",children:[l==="suspend"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.PauseCircle,{className:"w-4 h-4"}),m("tenants.actions.suspend")]}),t.status!=="Archived"&&e.jsxs("button",{onClick:()=>c("archive"),disabled:l!==null,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--error-dot)] text-white hover:opacity-90 transition-colors disabled:opacity-50",children:[l==="archive"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Archive,{className:"w-4 h-4"}),m("tenants.actions.archive")]}),e.jsxs("button",{onClick:d,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx(r.RefreshCw,{className:"w-4 h-4"}),m("common:refresh")]})]})]}),e.jsx(Xt,{show:D,templates:H,selectedTemplateId:Z,loadingTemplates:L,assigningTemplate:U,onTemplateSelect:q,onClose:()=>y(!1),onAssign:O,tenantTemplateId:t.templateId??void 0,t:m}),x&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"card w-full max-w-md p-6 m-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:m("tenants.edit.generalInfo")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1",children:m("tenants.edit.generalInfoSubtitle")})]}),e.jsx("button",{onClick:N,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:m("tenants.form.name")}),e.jsx("input",{type:"text",value:S.name,onChange:te=>B(Q=>({...Q,name:te.target.value})),className:"input w-full",placeholder:m("tenants.create.namePlaceholder")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:m("tenants.form.description")}),e.jsx("textarea",{value:S.description,onChange:te=>B(Q=>({...Q,description:te.target.value})),className:"input w-full min-h-[100px] resize-y",placeholder:m("tenants.create.descriptionPlaceholder")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:m("tenants.form.type")}),e.jsx("div",{className:"flex gap-3",children:["Business","Personal"].map(te=>e.jsx("button",{type:"button",onClick:()=>B(Q=>({...Q,type:te})),className:`flex-1 p-3 rounded-lg border text-center transition-colors ${S.type===te?"border-[var(--primary-color)] bg-[var(--primary-color)]/5 text-[var(--primary-color)]":"border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-secondary)] hover:border-[var(--primary-color)]"}`,children:e.jsx("span",{className:"text-sm font-medium",children:m(`tenants.type.${te.toLowerCase()}`)})},te))}),S.type==="Personal"&&t.organisationId&&e.jsx("p",{className:"mt-2 text-xs text-[var(--error-text)]",children:m("tenants.form.typeWarningOrg")}),S.type!==t.type&&e.jsx("p",{className:"mt-2 text-xs text-[var(--warning-text)]",children:m("tenants.form.typeChangeWarning")})]})]}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:N,className:"btn btn-secondary",children:m("common:cancel")}),e.jsx("button",{onClick:ie,disabled:P||!S.name.trim(),className:"btn btn-primary",children:P?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):m("common:save")})]})]})})]})}function es(t){return new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}function ts({tenantId:t,members:n,loadingMembers:s,actionLoading:l,onRefresh:d,onRemoveMember:i}){const{t:c}=de.useTranslation("admin"),[b,h]=a.useState({member:null,availableRoles:[],selectedRoleIds:[]}),[u,m]=a.useState(!1),[o,x]=a.useState(!1),[p,S]=a.useState(!1),[B,P]=a.useState([]),[T,g]=a.useState(!1),[f,D]=a.useState(""),[y,H]=a.useState(null),[R,L]=a.useState(!1),k=a.useCallback(async()=>{m(!0);try{return await E.adminApi.tenants.getTenantRoles(t)}catch(F){return console.error("Failed to load roles:",F),[]}finally{m(!1)}},[t]),Z=async F=>{h(j=>({...j,member:F,selectedRoleIds:F.roles.map(M=>M.roleId)}));const A=await k();h(j=>({...j,availableRoles:A}))},q=()=>{h({member:null,availableRoles:[],selectedRoleIds:[]})},U=F=>{h(A=>({...A,selectedRoleIds:A.selectedRoleIds.includes(F)?A.selectedRoleIds.filter(j=>j!==F):[...A.selectedRoleIds,F]}))},z=async()=>{if(b.member){x(!0);try{await E.adminApi.tenants.assignMemberRoles(t,b.member.userId,b.selectedRoleIds),await d(),q()}catch(F){console.error("Failed to save roles:",F)}finally{x(!1)}}},ee=async()=>{g(!0);try{const F=await E.adminApi.users.getAll({globalScope:!0});P(F.items)}catch(F){console.error("Failed to load available users:",F),P([])}finally{g(!1)}},ae=()=>{S(!0),H(null),D(""),ee()},$=()=>{S(!1),H(null),D(""),P([])},X=async()=>{if(y){L(!0);try{await E.adminApi.tenants.addMember(t,{userId:y}),await d(),$()}catch(F){console.error("Failed to add member:",F)}finally{L(!1)}}},J=[{key:"userDisplayName",label:c("common:name"),sortable:!0,render:F=>e.jsxs(xe.Link,{to:`/administration/users/${F.userId}`,className:"flex items-center gap-3 hover:text-[var(--color-accent-500)]",children:[e.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium ${F.isOwner?"bg-[var(--warning-bg)] text-[var(--warning-text)]":"bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]"}`,children:F.isOwner?e.jsx(r.Crown,{className:"w-4 h-4"}):(F.userDisplayName||F.userEmail||"?").charAt(0).toUpperCase()}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"font-medium text-[var(--text-primary)] block truncate",children:F.userDisplayName||F.userEmail}),F.userEmail&&F.userDisplayName&&e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block truncate",children:F.userEmail})]})]})},{key:"roles",label:c("tenants.members.role"),render:F=>e.jsxs("div",{className:"flex flex-wrap gap-1",children:[F.isOwner&&e.jsxs("span",{className:"inline-flex items-center gap-1.5 px-2 py-1 text-xs rounded-[var(--radius-badge)] bg-[var(--warning-bg)] text-[var(--warning-text)]",children:[e.jsx(r.Crown,{className:"w-3 h-3"}),c("tenants.members.owner")]}),F.roles.length>0&&F.roles.map(A=>e.jsxs("span",{className:"inline-flex items-center gap-1.5 px-2 py-1 text-xs rounded-[var(--radius-badge)] bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]",children:[e.jsx(r.Shield,{className:"w-3 h-3"}),A.roleName]},A.roleId)),F.roles.length===0&&!F.isOwner&&e.jsxs("span",{className:"inline-flex items-center gap-1.5 px-2 py-1 text-xs rounded-[var(--radius-badge)] bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:[e.jsx(r.User,{className:"w-3 h-3"}),c("tenants.members.member")]})]})},{key:"membershipSource",label:"Source",hideOnMobile:!0,render:F=>{const A=F.membershipSource;return A==="Group"?e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs rounded-full bg-purple-500/10 text-purple-600 dark:text-purple-400",children:[e.jsx(r.UsersRound,{className:"w-3 h-3"}),c("tenants.members.source.group")]}),F.primaryGroupName&&e.jsxs(xe.Link,{to:`/administration/users/groups/${F.primaryGroupId}`,className:"inline-flex items-center gap-1 text-xs text-[var(--text-tertiary)] hover:text-[var(--color-accent-500)] transition-colors",onClick:j=>j.stopPropagation(),children:[e.jsx(r.Link2,{className:"w-3 h-3"}),F.primaryGroupName]})]}):A==="Both"?e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs rounded-full bg-blue-500/10 text-blue-600 dark:text-blue-400",children:c("tenants.members.source.both")}),F.primaryGroupName&&e.jsxs(xe.Link,{to:`/administration/users/groups/${F.primaryGroupId}`,className:"inline-flex items-center gap-1 text-xs text-[var(--text-tertiary)] hover:text-[var(--color-accent-500)] transition-colors",onClick:j=>j.stopPropagation(),children:[e.jsx(r.Link2,{className:"w-3 h-3"}),F.primaryGroupName]})]}):e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs rounded-full bg-green-500/10 text-green-600 dark:text-green-400",children:c("tenants.members.source.direct")})}},{key:"joinedAt",label:c("tenants.members.joinedAt"),sortable:!0,hideOnMobile:!0,render:F=>e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:F.joinedAt?es(F.joinedAt):"-"})},{key:"actions",label:c("common:actionsColumn"),align:"right",render:F=>e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx("button",{onClick:A=>{A.stopPropagation(),Z(F)},className:"p-2 rounded-[var(--radius-button)] text-[var(--text-tertiary)] hover:text-[var(--color-accent-500)] hover:bg-[var(--color-accent-500)]/10 transition-colors",title:c("tenants.members.manageRoles.title"),children:e.jsx(r.Shield,{className:"w-4 h-4"})}),!F.isOwner&&F.membershipSource!=="Group"&&e.jsx("button",{onClick:A=>{A.stopPropagation(),i(F.userId)},disabled:l===F.userId,className:"p-2 rounded-[var(--radius-button)] text-[var(--text-tertiary)] hover:text-[var(--error-text)] hover:bg-[var(--error-bg)] transition-colors disabled:opacity-50",title:F.membershipSource==="Both"?c("tenants.members.source.cannotRemoveBoth"):c("tenants.members.remove"),children:l===F.userId?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.UserMinus,{className:"w-4 h-4"})}),!F.isOwner&&F.membershipSource==="Group"&&e.jsx("span",{className:"p-2 text-[var(--text-tertiary)] opacity-40 cursor-not-allowed",title:c("tenants.members.source.cannotRemoveGroup"),children:e.jsx(r.UserMinus,{className:"w-4 h-4"})})]})}];return e.jsxs(e.Fragment,{children:[e.jsx(E.DataTable,{data:n??[],loading:s,columns:J,searchable:!0,searchPlaceholder:c("tenants.members.search"),searchFilter:(F,A)=>(F.userDisplayName||"").toLowerCase().includes(A.toLowerCase())||(F.userEmail||"").toLowerCase().includes(A.toLowerCase()),getRowKey:F=>F.userId,emptyMessage:c("tenants.members.empty"),emptyIcon:e.jsx(r.Users,{className:"w-12 h-12 mx-auto text-[var(--text-tertiary)]"}),headerActions:e.jsxs("button",{onClick:ae,className:"btn btn-primary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),c("tenants.members.add")]}),pagination:{pageSize:10,showSizeSelector:!0}}),b.member&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"card w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:c("tenants.members.manageRoles.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1",children:c("tenants.members.manageRoles.subtitle",{name:b.member.userDisplayName||b.member.userEmail})})]}),e.jsx("button",{onClick:q,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),u?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto p-3 border border-[var(--border-color)] rounded-[var(--radius-card)] bg-[var(--bg-secondary)]",children:b.availableRoles.length===0?e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] text-center py-4",children:c("tenants.members.manageRoles.noRolesAvailable")}):b.availableRoles.map(F=>e.jsxs("label",{className:"flex items-center gap-3 cursor-pointer p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx("input",{type:"checkbox",checked:b.selectedRoleIds.includes(F.id),onChange:()=>U(F.id),className:"w-4 h-4 rounded border-[var(--border-color)] text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:F.name}),F.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:F.description})]})]},F.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:q,className:"px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:c("common:cancel")}),e.jsx("button",{onClick:z,disabled:o||u,className:"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)] transition-colors disabled:opacity-50",children:o?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):c("common:save")})]})]})}),p&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"card w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:c("tenants.members.addTitle")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1",children:c("tenants.members.addSubtitle")})]}),e.jsx("button",{onClick:$,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsx("input",{type:"text",value:f,onChange:F=>D(F.target.value),className:"input w-full",placeholder:c("tenants.members.searchUsers")})}),T?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto p-3 border border-[var(--border-color)] rounded-[var(--radius-card)] bg-[var(--bg-secondary)]",children:B.filter(F=>f===""||F.fullName.toLowerCase().includes(f.toLowerCase())||F.email.toLowerCase().includes(f.toLowerCase())).map(F=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${y===F.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("input",{type:"radio",name:"selectedUser",checked:y===F.id,onChange:()=>H(F.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:F.fullName}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:F.email})]})]},F.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:$,className:"btn btn-secondary",children:c("common:cancel")}),e.jsx("button",{onClick:X,disabled:!y||R,className:"btn btn-primary",children:R?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):c("common:add")})]})]})})]})}function ss(t){return new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}function as({tenantId:t,groups:n,loadingGroups:s,removingGroupId:l,onRefresh:d,onRemoveGroup:i}){const{t:c}=de.useTranslation("admin"),b=xe.useNavigate(),[h,u]=a.useState(!1),[m,o]=a.useState([]),[x,p]=a.useState(!1),[S,B]=a.useState([]),[P,T]=a.useState(!1),[g,f]=a.useState(""),[D,y]=a.useState({show:!1,group:null,loading:!1}),[H,R]=a.useState(!1),[L,k]=a.useState(""),[Z,q]=a.useState(""),[U,z]=a.useState(!0),[ee,ae]=a.useState(!1),[$,X]=a.useState(null),J=async()=>{p(!0);try{const v=await E.adminApi.tenants.getAvailableGroups(t);o(v)}catch(v){console.error("Failed to load available groups:",v),o([])}finally{p(!1)}},F=()=>{u(!0),B([]),f(""),J()},A=()=>{u(!1),B([]),f("")},j=v=>{B(N=>N.includes(v)?N.filter(ie=>ie!==v):[...N,v])},M=async()=>{if(S.length===0)return;T(!0);const v=[],N=[];for(const ie of S)try{await E.adminApi.tenants.addGroupToTenant(t,ie),v.push(ie)}catch(le){console.error(`Failed to add group ${ie}:`,le),N.push(ie)}await d(),N.length===0?A():v.length>0&&B(N),T(!1)},O=async()=>{if(L.trim()){ae(!0),X(null);try{const v=await St.groupsApi.create({name:L.trim(),description:Z.trim()||void 0,isSecurityGroup:U});await E.adminApi.tenants.addGroupToTenant(t,v.id),await d(),R(!1),k(""),q(""),z(!0)}catch(v){console.error("Failed to create group:",v);const N=v;N.response?.status===409?X(N.response.data?.message||c("tenants.groups.createError")):X(c("tenants.groups.createError"))}finally{ae(!1)}}},w=[{key:"name",label:c("common:name"),sortable:!0,render:v=>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 text-sm font-medium ${v.isSyncedFromEntra?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]"}`,children:e.jsx(r.UsersRound,{className:"w-4 h-4"})}),e.jsxs("div",{children:[e.jsx("span",{className:"font-medium text-[var(--color-accent-500)] hover:underline",children:v.name}),v.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:v.description})]})]})},{key:"memberCount",label:c("tenants.groups.memberCount"),sortable:!0,hideOnMobile:!0,render:v=>e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:v.memberCount})},{key:"linkType",label:c("tenants.groups.linkType"),render:v=>e.jsx("span",{className:`inline-flex items-center gap-1.5 px-2 py-1 text-xs rounded-[var(--radius-badge)] ${v.isDirect?"bg-[var(--success-bg)] text-[var(--success-text)]":"bg-[var(--info-bg)] text-[var(--info-text)]"}`,children:v.isDirect?c("tenants.groups.directMember"):c("tenants.groups.indirectMember",{groupName:v.linkedViaGroupName})})},{key:"source",label:c("tenants.groups.source"),hideOnMobile:!0,render:v=>e.jsx("span",{className:`inline-flex items-center gap-1.5 px-2 py-1 text-xs rounded-[var(--radius-badge)] ${v.isSyncedFromEntra?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]"}`,children:v.isSyncedFromEntra?e.jsxs(e.Fragment,{children:[e.jsx(r.Cloud,{className:"w-3 h-3"}),"Entra ID"]}):e.jsxs(e.Fragment,{children:[e.jsx(r.UsersRound,{className:"w-3 h-3"}),c("tenants.groups.local")]})})},{key:"addedAt",label:c("tenants.members.joinedAt"),sortable:!0,hideOnMobile:!0,render:v=>e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:v.addedAt?ss(v.addedAt):"-"})},{key:"actions",label:"",width:"80px",render:v=>v.isDirect?e.jsx("button",{onClick:N=>{N.stopPropagation(),y({show:!0,group:v,loading:!1})},disabled:l===v.groupId,className:"btn btn-ghost text-[var(--error-text)] hover:bg-[var(--error-bg)]",title:c("tenants.groups.remove"),children:l===v.groupId?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.X,{className:"w-4 h-4"})}):null}];return e.jsxs("div",{className:"space-y-4",children:[e.jsx(E.DataTable,{data:n??[],loading:s,columns:w,searchable:!0,searchPlaceholder:c("tenants.groups.searchPlaceholder"),searchFilter:(v,N)=>v.name.toLowerCase().includes(N.toLowerCase())||(v.description||"").toLowerCase().includes(N.toLowerCase()),getRowKey:v=>v.groupId,onRowClick:v=>b(`/administration/users/groups/${v.groupId}`),emptyMessage:c("tenants.groups.noGroups"),emptyIcon:e.jsx(r.UsersRound,{className:"w-12 h-12 mx-auto text-[var(--text-tertiary)]"}),headerActions:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>{X(null),R(!0)},className:"btn btn-secondary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),c("groups.createGroup")]}),e.jsxs("button",{onClick:F,className:"btn btn-primary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),c("tenants.groups.add")]})]}),pagination:{pageSize:10,showSizeSelector:!0}}),h&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"card w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:c("tenants.groups.addTitle")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1",children:c("tenants.groups.addSubtitle")})]}),e.jsx("button",{onClick:A,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsx("input",{type:"text",value:g,onChange:v=>f(v.target.value),className:"input w-full",placeholder:c("tenants.groups.searchGroups")})}),x?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):(()=>{const v=m.filter(N=>g===""||N.name.toLowerCase().includes(g.toLowerCase())||(N.description||"").toLowerCase().includes(g.toLowerCase()));return v.length===0?e.jsxs("div",{className:"p-8 text-center border border-[var(--border-color)] rounded-[var(--radius-card)] bg-[var(--bg-secondary)]",children:[e.jsx(r.UsersRound,{className:"w-12 h-12 mx-auto mb-3 text-[var(--text-tertiary)]"}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:m.length===0?c("tenants.groups.noAvailableGroups"):c("tenants.groups.noMatchingGroups")})]}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto p-3 border border-[var(--border-color)] rounded-[var(--radius-card)] bg-[var(--bg-secondary)]",children:v.map(N=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${S.includes(N.groupId)?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("input",{type:"checkbox",checked:S.includes(N.groupId),onChange:()=>j(N.groupId),className:"w-4 h-4 rounded border-[var(--border-color)] text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:N.name}),N.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:N.description})]})]},N.groupId))})})(),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:A,className:"btn btn-secondary",children:c("common:cancel")}),e.jsx("button",{onClick:M,disabled:S.length===0||P,className:"btn btn-primary",children:P?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):c("common:add")})]})]})}),D.group&&e.jsx(Ve.ConfirmModal,{isOpen:D.show,title:c("tenants.groups.remove"),message:c("tenants.groups.confirmRemove",{name:D.group.name}),variant:"danger",confirmLabel:c("tenants.groups.remove"),loading:D.loading,onConfirm:async()=>{if(D.group){y(v=>({...v,loading:!0}));try{await i(D.group.groupId)}finally{y({show:!1,group:null,loading:!1})}}},onCancel:()=>y({show:!1,group:null,loading:!1})}),H&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",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 m-4",children:[e.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-[var(--border-color)]",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold text-[var(--text-primary)]",children:c("tenants.groups.createTitle")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1",children:c("tenants.groups.createSubtitle")})]}),e.jsx("button",{onClick:()=>R(!1),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 space-y-4",children:[$&&e.jsx("div",{className:"p-3 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-[var(--error-text)]",children:[e.jsx("span",{children:$}),e.jsx("button",{onClick:()=>X(null),className:"ml-auto",children:e.jsx(r.X,{className:"w-4 h-4"})})]})}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:[c("groups.groupName")," *"]}),e.jsx("input",{type:"text",value:L,onChange:v=>k(v.target.value),placeholder:c("groups.groupNamePlaceholder"),className:"w-full 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)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:c("common:description")}),e.jsx("textarea",{value:Z,onChange:v=>q(v.target.value),placeholder:c("groups.descriptionPlaceholder"),rows:3,className:"w-full 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)] resize-none"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{type:"button",onClick:()=>z(!U),className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${U?"bg-[var(--color-accent-500)]":"bg-[var(--bg-tertiary)]"}`,children:e.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${U?"translate-x-6":"translate-x-1"}`})}),e.jsx("span",{className:"text-sm text-[var(--text-primary)]",children:c("groups.isSecurityGroup")})]})]}),e.jsxs("div",{className:"flex items-center justify-end gap-3 p-4 border-t border-[var(--border-color)]",children:[e.jsx("button",{onClick:()=>R(!1),className:"btn btn-secondary",children:c("common:cancel")}),e.jsxs("button",{onClick:O,disabled:!L.trim()||ee,className:"btn btn-primary disabled:opacity-50 disabled:cursor-not-allowed",children:[ee?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Check,{className:"w-4 h-4"}),c("tenants.groups.createAndAdd")]})]})]})})]})}const rs={Global:{bg:"bg-[var(--error-bg)]",text:"text-[var(--error-text)]"},Admin:{bg:"bg-[var(--warning-bg)]",text:"text-[var(--warning-text)]"},Manager:{bg:"bg-[var(--info-bg)]",text:"text-[var(--info-text)]"},Contributor:{bg:"bg-[var(--success-bg)]",text:"text-[var(--success-text)]"},Viewer:{bg:"bg-[var(--accent-bg)]",text:"text-[var(--accent-text)]"}};function ns({roles:t,loadingRoles:n}){const{t:s}=de.useTranslation("admin"),l=[{key:"name",label:s("tenants.roles.columns.name"),sortable:!0,render:d=>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 ${d.isSystem?"bg-[var(--warning-bg)] text-[var(--warning-text)]":"bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]"}`,children:d.isSystem?e.jsx(r.Lock,{className:"w-4 h-4"}):e.jsx(r.Shield,{className:"w-4 h-4"})}),e.jsxs("div",{children:[e.jsx("span",{className:"font-medium text-[var(--text-primary)]",children:d.name}),d.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5 line-clamp-1",children:d.description})]})]})},{key:"category",label:s("tenants.roles.columns.category"),sortable:!0,render:d=>{const i=rs[d.category]??{bg:"bg-[var(--bg-tertiary)]",text:"text-[var(--text-secondary)]"};return e.jsx("span",{className:`inline-flex items-center px-2 py-1 text-xs rounded-[var(--radius-badge)] ${i.bg} ${i.text}`,children:s(`tenants.roles.categories.${d.category}`,{defaultValue:d.category})})}},{key:"applicationName",label:s("tenants.roles.columns.application"),sortable:!0,hideOnMobile:!0,render:d=>e.jsx("span",{className:"inline-flex items-center gap-1.5 text-sm text-[var(--text-secondary)]",children:d.applicationId?e.jsxs(e.Fragment,{children:[e.jsx(r.AppWindow,{className:"w-3.5 h-3.5"}),d.applicationName]}):e.jsxs(e.Fragment,{children:[e.jsx(r.Globe,{className:"w-3.5 h-3.5"}),s("tenants.roles.scope.global")]})})},{key:"permissionsCount",label:s("tenants.roles.columns.permissions"),sortable:!0,hideOnMobile:!0,render:d=>e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:d.permissionsCount})},{key:"assignedMembersCount",label:s("tenants.roles.columns.members"),sortable:!0,hideOnMobile:!0,render:d=>e.jsxs("span",{className:"inline-flex items-center gap-1.5 text-sm text-[var(--text-secondary)]",children:[e.jsx(r.Users,{className:"w-3.5 h-3.5"}),d.assignedMembersCount]})}];return e.jsx(E.DataTable,{data:t??[],loading:n,columns:l,searchable:!0,searchPlaceholder:s("tenants.roles.search"),searchFilter:(d,i)=>d.name.toLowerCase().includes(i.toLowerCase())||(d.description||"").toLowerCase().includes(i.toLowerCase())||(d.applicationName||"").toLowerCase().includes(i.toLowerCase()),getRowKey:d=>d.id,emptyMessage:s("tenants.roles.empty"),emptyIcon:e.jsx(r.Shield,{className:"w-12 h-12 mx-auto text-[var(--text-tertiary)]"}),pagination:{pageSize:10,showSizeSelector:!0}})}const Le={Inherited:{dot:"bg-green-500",text:"text-green-600 dark:text-green-400",bg:"bg-green-50 dark:bg-green-900/20",label:"inheritedLabel"},Direct:{dot:"bg-blue-500",text:"text-blue-600 dark:text-blue-400",bg:"bg-blue-50 dark:bg-blue-900/20",label:"directLabel"},Overridden:{dot:"bg-orange-500",text:"text-orange-600 dark:text-orange-400",bg:"bg-orange-50 dark:bg-orange-900/20",label:"directLabel"},Revoked:{dot:"bg-red-500",text:"text-red-600 dark:text-red-400",bg:"bg-red-50 dark:bg-red-900/20",label:"revokedLabel"},Unavailable:{dot:"bg-gray-400",text:"text-gray-500",bg:"",label:""}},is=t=>{const n=[];for(const s of t){const l=s.originalSource!=="Revoked"&&s.originalSource!=="Unavailable",d=s.isChecked;l&&!d?n.push({moduleId:s.id,action:"revoke"}):!l&&d&&(s.originalSource==="Revoked"?n.push({moduleId:s.id,action:"remove-override"}):n.push({moduleId:s.id,action:"add"}))}return n},ls=t=>{const n=[];for(const s of t)for(const l of s.sections){const d=l.originalSource!=="Revoked"&&l.originalSource!=="Unavailable",i=l.isChecked;d&&!i?n.push({sectionId:l.id,action:"revoke"}):!d&&i&&(l.originalSource==="Revoked"?n.push({sectionId:l.id,action:"remove-override"}):n.push({sectionId:l.id,action:"add"}))}return n},os=(t,n,s)=>t.map(l=>l.id!==n?l:{...l,isChecked:s,sections:l.sections.map(d=>({...d,isChecked:s}))}),cs=(t,n,s)=>t.map(l=>{if(l.id!==n)return l;const d=l.sections.map(i=>i.id===s?{...i,isChecked:!i.isChecked}:i);return{...l,isChecked:d.some(i=>i.isChecked),sections:d}}),ds=({section:t,moduleId:n,renderIcon:s,isInheritedRevoked:l,toggleSection:d,t:i})=>{const c=l(t.originalSource,t.isChecked);return e.jsxs("div",{className:`flex items-center gap-2 p-2 rounded ${c?"bg-red-50/60 dark:bg-red-900/10 hover:bg-red-50 dark:hover:bg-red-900/20":"hover:bg-[var(--bg-hover)]"}`,children:[e.jsxs("button",{onClick:()=>d(n,t.id),className:`w-4 h-4 rounded border-2 flex items-center justify-center flex-shrink-0 transition-colors ${c?"border-red-500 bg-red-500":t.isChecked?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]":"border-[var(--border-color)] hover:border-[var(--color-accent-600)]"}`,children:[c&&e.jsx(r.Ban,{className:"w-2.5 h-2.5 text-white"}),!c&&t.isChecked&&e.jsx(r.Check,{className:"w-2.5 h-2.5 text-white"})]}),e.jsx("div",{className:`p-1 rounded ${c?"bg-red-100 dark:bg-red-900/30":"bg-[var(--bg-tertiary)]"}`,children:s(t.icon)||e.jsx(r.Layers,{className:`w-3 h-3 ${c?"text-red-400":"text-[var(--text-muted)]"}`})}),e.jsx("span",{className:`text-sm flex-1 ${c?"line-through text-red-500 dark:text-red-400":"text-[var(--text-primary)]"}`,children:t.label}),c&&e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400 font-medium",children:i("tenants.applications.customize.revokedLabel")})]},t.id)},ms=({module:t,isExpanded:n,renderIcon:s,isInheritedRevoked:l,getModuleCheckState:d,toggleModuleExpand:i,toggleModule:c,toggleSection:b,mode:h,t:u})=>{const m=d(t),o=l(t.originalSource,t.isChecked);return e.jsxs("div",{children:[e.jsxs("div",{className:`flex items-center gap-2 p-3 ${o?"bg-red-50/60 dark:bg-red-900/10 hover:bg-red-50 dark:hover:bg-red-900/20":"hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("button",{onClick:()=>i(t.id),className:"p-1 rounded hover:bg-[var(--bg-tertiary)]",children:n?e.jsx(r.ChevronDown,{className:"w-4 h-4 text-[var(--text-muted)]"}):e.jsx(r.ChevronRight,{className:"w-4 h-4 text-[var(--text-muted)]"})}),e.jsxs("button",{onClick:()=>c(t.id),className:`w-5 h-5 rounded border-2 flex items-center justify-center flex-shrink-0 transition-colors ${o?"border-red-500 bg-red-500":m==="checked"||m==="indeterminate"?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]":"border-[var(--border-color)] hover:border-[var(--color-accent-600)]"}`,children:[o&&e.jsx(r.Ban,{className:"w-3 h-3 text-white"}),!o&&m==="checked"&&e.jsx(r.Check,{className:"w-3 h-3 text-white"}),!o&&m==="indeterminate"&&e.jsx(r.Minus,{className:"w-3 h-3 text-white"})]}),e.jsx("div",{className:`p-1.5 rounded ${o?"bg-red-100 dark:bg-red-900/30":"bg-[var(--bg-tertiary)]"}`,children:s(t.icon)||e.jsx(r.Layers,{className:`w-4 h-4 ${o?"text-red-400":"text-[var(--text-muted)]"}`})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("p",{className:`font-medium truncate ${o?"line-through text-red-500 dark:text-red-400":"text-[var(--text-primary)]"}`,children:t.label}),h!=="template"&&t.source!=="Unavailable"&&(o?e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400 font-medium",children:u("tenants.applications.customize.revokedLabel")}):e.jsx("span",{className:`text-[10px] px-1.5 py-0.5 rounded-full ${(Le[t.source]||Le.Inherited).bg} ${(Le[t.source]||Le.Inherited).text}`,children:u(`tenants.applications.customize.${(Le[t.source]||Le.Inherited).label}`)}))]}),e.jsxs("p",{className:`text-xs ml-4 ${o?"text-red-400 dark:text-red-500":"text-[var(--text-muted)]"}`,children:[t.sections.filter(x=>x.isChecked).length,"/",t.sections.length," ",u("tenants.applications.customize.sections","sections")]})]})]}),n&&t.sections.length>0&&e.jsx("div",{className:"pl-12 pb-2 space-y-1 bg-[var(--bg-secondary)]",children:t.sections.map(x=>e.jsx(ds,{section:x,moduleId:t.id,renderIcon:s,isInheritedRevoked:l,toggleSection:b,t:u},x.id))})]},t.id)};function xs({isOpen:t,onClose:n,tenantId:s,tenantName:l,application:d,onSaved:i,mode:c="tenant"}){const{t:b}=de.useTranslation("admin"),[h,u]=a.useState(!0),[m,o]=a.useState(!1),[x,p]=a.useState(null),[S,B]=a.useState(null),[P,T]=a.useState("full"),[g,f]=a.useState([]),[D,y]=a.useState(new Set),H=j=>{if(!j)return null;const O=gt[j];return O?e.jsx(O,{className:"w-4 h-4"}):null},R=a.useCallback(async()=>{if(t){u(!0),p(null);try{if(c==="template"){const M=(await E.adminApi.templates.getApplicationModules(s,d.applicationId)).map(w=>({id:w.moduleId,label:w.label,code:w.code,icon:w.icon,source:w.isAssigned?"Direct":"Unavailable",accessLevel:"FullAccess",isEffectivelyActive:w.isAssigned,isChecked:w.isAssigned,originalSource:w.isAssigned?"Direct":"Unavailable",sections:w.sections.map(v=>({id:v.sectionId,label:v.label,code:v.code,icon:v.icon,source:v.isAssigned?"Direct":"Unavailable",accessLevel:"FullAccess",isEffectivelyActive:v.isAssigned,isChecked:v.isAssigned,originalSource:v.isAssigned?"Direct":"Unavailable"}))}));f(M),T(M.some(w=>w.isChecked)?"custom":"full");const O=new Set(M.filter(w=>w.sections.some(v=>v.isChecked)).map(w=>w.id));y(O)}else{const M=(await E.adminApi.tenants.getEffectiveTree(s,d.applicationId)).map(v=>({id:v.moduleId,label:v.label,code:v.code,icon:v.icon,source:v.source,accessLevel:v.accessLevel,isEffectivelyActive:v.isEffectivelyActive,isChecked:v.source!=="Revoked"&&v.source!=="Unavailable",originalSource:v.source,sections:v.sections.map(N=>({id:N.sectionId,label:N.label,code:N.code,icon:N.icon,source:N.source,accessLevel:N.accessLevel,isEffectivelyActive:N.isEffectivelyActive,isChecked:N.source!=="Revoked"&&N.source!=="Unavailable",originalSource:N.source}))}));f(M);const O=M.some(v=>v.source==="Direct"||v.source==="Overridden"||v.source==="Revoked"||v.sections.some(N=>N.source==="Direct"||N.source==="Overridden"||N.source==="Revoked"));T(O?"custom":"full");const w=new Set(M.filter(v=>v.sections.some(N=>N.source!=="Inherited"||!N.isEffectivelyActive)).map(v=>v.id));y(w)}}catch(j){p(j instanceof Error?j.message:"Failed to load data")}finally{u(!1)}}},[t,d.applicationId,s,c]);a.useEffect(()=>{R()},[R]);const L=j=>j.map(M=>({...M,isChecked:!0,sections:M.sections.map(O=>({...O,isChecked:!0}))})),k=j=>{j==="custom"&&P==="full"&&(g.some(O=>O.isChecked||O.sections.some(w=>w.isChecked))||f(L)),T(j)},Z=j=>{y(M=>{const O=new Set(M);return O.has(j)?O.delete(j):O.add(j),O})},q=j=>{f(M=>{const w=!M.find(v=>v.id===j)?.isChecked;return os(M,j,w)})},U=(j,M)=>{f(O=>cs(O,j,M))},z=(j,M)=>(j==="Inherited"||j==="Revoked")&&!M,ee=j=>{if(j.sections.length===0)return j.isChecked?"checked":"unchecked";const M=j.sections.filter(O=>O.isChecked).length;return M===0?"unchecked":M===j.sections.length?"checked":"indeterminate"},ae=async()=>{if(P==="full")await E.adminApi.templates.updateApplicationModules(s,d.applicationId,{accessMode:"full"});else{const j=g.filter(O=>O.isChecked||O.sections.some(w=>w.isChecked)).map(O=>O.id),M=g.flatMap(O=>O.sections.filter(w=>w.isChecked).map(w=>w.id));await E.adminApi.templates.updateApplicationModules(s,d.applicationId,{accessMode:"custom",moduleIds:j,sectionIds:M})}},$=async()=>{const j=is(g),M=ls(g);(j.length>0||M.length>0)&&await E.adminApi.tenants.saveOverrides(s,d.applicationId,{modules:j.length>0?j:void 0,sections:M.length>0?M:void 0})},X=async()=>{o(!0),p(null),B(null);try{c==="template"?await ae():await $(),B(b("tenants.applications.customize.saved","Access customization saved")),i?.(),setTimeout(()=>n(),1e3)}catch(j){p(j instanceof Error?j.message:"Failed to save")}finally{o(!1)}},J=async()=>{o(!0),p(null);try{const j="remove-override",M=g.filter(w=>w.originalSource==="Direct"||w.originalSource==="Overridden"||w.originalSource==="Revoked").map(w=>({moduleId:w.id,action:j})),O=g.flatMap(w=>w.sections.filter(v=>v.originalSource==="Direct"||v.originalSource==="Overridden"||v.originalSource==="Revoked").map(v=>({sectionId:v.id,action:j})));(M.length>0||O.length>0)&&await E.adminApi.tenants.saveOverrides(s,d.applicationId,{modules:M.length>0?M:void 0,sections:O.length>0?O:void 0}),B(b("tenants.applications.customize.resetSuccess","Customizations reset")),i?.(),setTimeout(()=>n(),1e3)}catch(j){p(j instanceof Error?j.message:"Failed to reset")}finally{o(!1)}},A=(()=>{const j=g.length,M=g.filter(Q=>Q.isChecked).length,O=g.reduce((Q,pe)=>Q+pe.sections.length,0),w=g.reduce((Q,pe)=>Q+pe.sections.filter(me=>me.isChecked).length,0),v=g.filter(Q=>Q.source==="Inherited").length,N=g.filter(Q=>Q.source==="Direct"||Q.source==="Overridden").length,ie=g.filter(Q=>Q.source==="Revoked").length,le=g.filter(Q=>z(Q.originalSource,Q.isChecked)).length,te=g.reduce((Q,pe)=>Q+pe.sections.filter(me=>z(me.originalSource,me.isChecked)).length,0);return{totalModules:j,checkedModules:M,totalSections:O,checkedSections:w,inheritedCount:v,directCount:N,revokedCount:ie,revokedInheritedModules:le,revokedInheritedSections:te}})();return a.useEffect(()=>{const j=M=>{M.key==="Escape"&&t&&n()};return document.addEventListener("keydown",j),()=>document.removeEventListener("keydown",j)},[t,n]),a.useEffect(()=>(t?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[t]),t?e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[e.jsx("button",{type:"button",className:"absolute inset-0 bg-black/50",onClick:n,"aria-label":"Close modal"}),e.jsxs("div",{className:"relative w-full max-w-2xl max-h-[90vh] bg-[var(--bg-card)] rounded-[var(--radius-card)] shadow-xl border border-[var(--border-color)] flex flex-col",children:[e.jsxs("div",{className:"flex items-start justify-between p-4 border-b border-[var(--border-color)]",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold text-[var(--text-primary)]",children:b("tenants.applications.customize.title","Customize Access")}),e.jsxs("p",{className:"mt-1 text-sm text-[var(--text-muted)]",children:[d.label," - ",l]})]}),e.jsx("button",{onClick:n,className:"p-1 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-muted)]",children:e.jsx(r.X,{className:"w-5 h-5"})})]}),e.jsx("div",{className:"flex-1 overflow-y-auto p-4",children:h?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-600)]"})}):e.jsxs("div",{className:"space-y-6",children:[x&&e.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:[e.jsx(r.AlertCircle,{className:"w-4 h-4 text-[var(--error-text)]"}),e.jsx("p",{className:"text-sm text-[var(--error-text)]",children:x})]}),S&&e.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:[e.jsx(r.CheckCircle,{className:"w-4 h-4 text-[var(--success-text)]"}),e.jsx("p",{className:"text-sm text-[var(--success-text)]",children:S})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("label",{className:"text-sm font-medium text-[var(--text-secondary)]",children:b("tenants.applications.customize.accessMode","Access Mode")}),e.jsxs("button",{type:"button",onClick:()=>k("full"),className:`w-full flex items-start gap-3 p-4 rounded-[var(--radius-card)] border text-left transition-colors ${P==="full"?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]/5":"border-[var(--border-color)] hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("div",{className:`w-5 h-5 mt-0.5 rounded-full border-2 flex items-center justify-center flex-shrink-0 ${P==="full"?"border-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:P==="full"&&e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-[var(--color-accent-600)]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:b("tenants.applications.customize.fullAccess","Full Application Access")}),e.jsx("p",{className:"text-sm text-[var(--text-muted)] mt-1",children:b("tenants.applications.customize.fullAccessHint","Access to all modules and sections of this application")})]})]}),e.jsxs("button",{type:"button",onClick:()=>k("custom"),className:`w-full flex items-start gap-3 p-4 rounded-[var(--radius-card)] border text-left transition-colors ${P==="custom"?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]/5":"border-[var(--border-color)] hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("div",{className:`w-5 h-5 mt-0.5 rounded-full border-2 flex items-center justify-center flex-shrink-0 ${P==="custom"?"border-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:P==="custom"&&e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-[var(--color-accent-600)]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:b("tenants.applications.customize.customAccess","Custom Access")}),e.jsx("p",{className:"text-sm text-[var(--text-muted)] mt-1",children:b("tenants.applications.customize.customAccessHint","Select specific modules and sections to grant access")})]})]})]}),P==="custom"&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("label",{className:"text-sm font-medium text-[var(--text-secondary)]",children:b("tenants.applications.customize.selectModules","Select Modules & Sections")}),e.jsxs("div",{className:"border border-[var(--border-color)] rounded-[var(--radius-card)] divide-y divide-[var(--border-color)]",children:[g.map(j=>e.jsx(ms,{module:j,isExpanded:D.has(j.id),renderIcon:H,isInheritedRevoked:z,getModuleCheckState:ee,toggleModuleExpand:Z,toggleModule:q,toggleSection:U,mode:c,t:b},j.id)),g.length===0&&e.jsx("div",{className:"p-6 text-center text-sm text-[var(--text-muted)]",children:b("tenants.applications.customize.noModules","No modules available")})]})]})]})}),e.jsx("div",{className:"flex-shrink-0 border-t border-[var(--border-color)] p-4 bg-[var(--bg-secondary)]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-sm text-[var(--text-muted)]",children:P==="custom"?e.jsxs("div",{className:"space-y-0.5",children:[e.jsxs("div",{children:[A.checkedModules,"/",A.totalModules," ",b("tenants.applications.customize.modules","modules"),","," ",A.checkedSections,"/",A.totalSections," ",b("tenants.applications.customize.sections","sections")]}),(A.revokedInheritedModules>0||A.revokedInheritedSections>0)&&e.jsxs("div",{className:"text-red-500 dark:text-red-400 text-xs flex items-center gap-1",children:[e.jsx(r.Ban,{className:"w-3 h-3"}),A.revokedInheritedModules>0&&e.jsxs("span",{children:[A.revokedInheritedModules," ",b("tenants.applications.customize.modules")," ",b("tenants.applications.customize.revokedLabel").toLowerCase()]}),A.revokedInheritedModules>0&&A.revokedInheritedSections>0&&", ",A.revokedInheritedSections>0&&e.jsxs("span",{children:[A.revokedInheritedSections," ",b("tenants.applications.customize.sections")," ",b("tenants.applications.customize.revokedLabel").toLowerCase()]})]})]}):b("tenants.applications.customize.fullAccessDesc","Full application access")}),e.jsxs("div",{className:"flex gap-2",children:[c!=="template"&&g.some(j=>j.originalSource!=="Inherited"&&j.originalSource!=="Unavailable")&&e.jsxs("button",{onClick:J,disabled:m,className:"flex items-center gap-2 px-3 py-2 rounded-[var(--radius-button)] font-medium text-orange-600 hover:bg-orange-50 dark:text-orange-400 dark:hover:bg-orange-900/20",children:[e.jsx(r.RotateCcw,{className:"w-4 h-4"}),b("tenants.applications.customize.resetOverrides","Reset to template")]}),e.jsx("button",{onClick:n,className:"px-4 py-2 rounded-[var(--radius-button)] font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]",children:b("common.cancel","Cancel")}),e.jsxs("button",{onClick:X,disabled:m,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] font-medium bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50",children:[m?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),b("common.save","Save")]})]})]})})]})]}):null}function us(t){return new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}const ps=t=>t==="checked"||t==="indeterminate"?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]":"border-[var(--border-color)] hover:border-[var(--color-accent-600)]",vs=()=>e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}),gs=t=>e.jsxs("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:[e.jsx(r.Boxes,{className:"w-12 h-12 mx-auto mb-4 text-[var(--text-tertiary)]"}),e.jsx("p",{children:t("tenants.applications.empty")})]}),et=[{level:"FullAccess",labelKey:"tenants.applications.accessLevels.fullAccess",descKey:"tenants.applications.accessLevels.fullAccessDesc",selectedBorder:"border-green-500",selectedBg:"bg-green-500/10",dotBg:"bg-green-500"},{level:"RequestAccess",labelKey:"tenants.applications.accessLevels.requestAccess",descKey:"tenants.applications.accessLevels.requestAccessDesc",selectedBorder:"border-amber-500",selectedBg:"bg-amber-500/10",dotBg:"bg-amber-500"},{level:"Disabled",labelKey:"tenants.applications.accessLevels.disabled",descKey:"tenants.applications.accessLevels.disabledDesc",selectedBorder:"border-gray-500",selectedBg:"bg-gray-500/10",dotBg:"bg-gray-500"}];function bs({selectedAccessLevel:t,setSelectedAccessLevel:n}){const{t:s}=de.useTranslation("admin");return e.jsx("div",{className:"space-y-3",children:et.map(l=>{const d=t===l.level;return e.jsxs("button",{type:"button",onClick:()=>n(l.level),className:`w-full flex items-start gap-3 p-4 rounded-[var(--radius-input)] border text-left transition-colors ${d?`${l.selectedBorder} ${l.selectedBg}`:"border-[var(--border-color)] hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("div",{className:`w-5 h-5 mt-0.5 rounded-full border-2 flex items-center justify-center flex-shrink-0 ${d?l.selectedBorder:"border-[var(--border-color)]"}`,children:d&&e.jsx("div",{className:`w-2.5 h-2.5 rounded-full ${l.dotBg}`})}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:s(l.labelKey)}),e.jsx("p",{className:"text-sm text-[var(--text-muted)] mt-1",children:s(l.descKey)})]})]},l.level)})})}function ht({tenantId:t,tenantName:n,mode:s="tenant",applications:l,loadingApps:d,actionLoading:i,onRefresh:c,onUpdateAccessLevel:b,onRemoveApplication:h,addingApplication:u,availableAppsError:m,filteredAvailableApps:o,loadingAvailableApps:x,selectedAppIds:p,assigningApps:S,appSearchTerm:B,selectedAccessLevel:P,bulkAccessMode:T,bulkModules:g,bulkExpandedModules:f,loadingBulkModules:D,showCustomizeDrawer:y,customizingApp:H,onOpenAddApplication:R,onCloseAddApplication:L,onAssignApplications:k,onAppToggle:Z,onSelectAllApps:q,onClearAppSelection:U,onOpenCustomizeDrawer:z,onCloseCustomizeDrawer:ee,onLoadBulkModules:ae,onToggleBulkModuleExpand:$,onToggleBulkModule:X,onToggleBulkSection:J,onGetBulkModuleCheckState:F,onGetBulkStats:A,onSelectAllBulkModules:j,onClearBulkModules:M,setAppSearchTerm:O,setSelectedAccessLevel:w,setBulkAccessMode:v}){const{t:N}=de.useTranslation("admin"),ie=a.useMemo(()=>A(),[g,A]),[le,te]=a.useState({show:!1,app:null,loading:!1}),Q=a.useMemo(()=>(l??[]).filter(K=>K.source==="Inherited"||K.source==="Overridden"),[l]),pe=a.useMemo(()=>(l??[]).filter(K=>K.source==="Direct"||K.source==="Revoked"),[l]),me=K=>{const ce=et.find(W=>W.level===K.accessLevel),ge=K.accessLevel!=="Disabled";return e.jsx(E.EntityCard,{avatar:{letter:(K.label?.at(0)||"A").toUpperCase(),color:ge?"var(--color-accent-500)":"#6b7280"},title:K.label,subtitle:K.code,description:K.assignedAt?N("tenants.applications.assignedAt",{date:us(K.assignedAt)}):void 0,stats:e.jsxs("span",{children:[K.inheritedModuleCount>0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-green-600 dark:text-green-400 font-medium",children:K.inheritedModuleCount})," ",N("tenants.applications.counts.inherited")]}),K.directModuleCount>0&&e.jsxs(e.Fragment,{children:[K.inheritedModuleCount>0?", ":"",e.jsx("span",{className:"text-blue-600 dark:text-blue-400 font-medium",children:K.directModuleCount})," ",N("tenants.applications.counts.direct")]}),K.revokedModuleCount>0&&e.jsxs(e.Fragment,{children:[K.inheritedModuleCount>0||K.directModuleCount>0?", ":"",e.jsx("span",{className:"text-red-600 dark:text-red-400 font-medium",children:K.revokedModuleCount})," ",N("tenants.applications.counts.revoked")]}),K.inheritedModuleCount===0&&K.directModuleCount===0&&K.revokedModuleCount===0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"font-medium text-[var(--text-primary)]",children:"0"}),"/",K.totalModuleCount]})," ",N("tenants.applications.customize.modules")," / ",e.jsx("span",{className:"font-medium text-[var(--text-primary)]",children:K.totalSectionCount})," ",N("tenants.applications.customize.sections")]}),customFooter:e.jsxs("div",{className:"space-y-2 pt-2 mt-2 border-t border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:`w-2.5 h-2.5 rounded-full flex-shrink-0 ${ce?.dotBg??"bg-green-500"}`}),e.jsx("select",{value:K.accessLevel,onChange:W=>{b(K.applicationId,W.target.value)},disabled:i===K.applicationId,className:"flex-1 px-2 py-1 rounded-[var(--radius-input)] bg-[var(--bg-secondary)] border border-[var(--border-color)] text-sm text-[var(--text-primary)] focus:ring-2 focus:ring-[var(--color-accent-600)]",children:et.map(W=>e.jsx("option",{value:W.level,children:N(W.labelKey)},W.level))})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("button",{onClick:()=>z(K),className:"btn btn-sm flex items-center justify-center gap-1 flex-1 bg-[var(--color-accent-700)] hover:bg-[var(--color-accent-800)] text-white",children:[e.jsx(r.SlidersHorizontal,{className:"w-4 h-4"}),N("tenants.applications.customize.button")]}),h&&e.jsx("button",{onClick:()=>te({show:!0,app:K,loading:!1}),className:"btn btn-sm flex items-center justify-center px-2 border border-red-300 text-red-500 hover:bg-red-50 hover:border-red-400 dark:border-red-700 dark:hover:bg-red-900/20",title:N("tenants.applications.remove"),children:e.jsx(r.Trash2,{className:"w-4 h-4"})})]})]})},K.applicationId)};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:N("tenants.applications.assigned")}),e.jsxs("button",{onClick:R,className:"btn btn-primary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),N("tenants.applications.add")]})]}),d?vs():null,!d&&(!l||l.length===0)?gs(N):null,!d&&Q.length>0&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("h4",{className:"text-base font-medium text-[var(--text-secondary)]",children:[N("tenants.applications.sectionInherited"),e.jsxs("span",{className:"ml-2 text-sm font-normal text-[var(--text-muted)]",children:["(",Q.length,")"]})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6",children:Q.map(me)})]}),!d&&pe.length>0&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("h4",{className:"text-base font-medium text-[var(--text-secondary)]",children:[N("tenants.applications.sectionDirect"),e.jsxs("span",{className:"ml-2 text-sm font-normal text-[var(--text-muted)]",children:["(",pe.length,")"]})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6",children:pe.map(me)})]})]}),u&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",children:e.jsxs("div",{className:"w-full max-w-6xl bg-[var(--bg-card)] rounded-[var(--radius-card)] shadow-xl border border-[var(--border-color)] max-h-[90vh] flex flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-[var(--border-color)] flex-shrink-0",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:N("tenants.applications.modal.title")}),e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:N("tenants.applications.modal.subtitle")})]}),e.jsx("button",{onClick:L,className:"p-1 hover:bg-[var(--bg-hover)] rounded-[var(--radius-button)]","aria-label":N("common:close","Close"),children:e.jsx(r.X,{className:"w-5 h-5"})})]}),e.jsxs("div",{className:"flex-1 overflow-hidden grid grid-cols-1 md:grid-cols-3 divide-x divide-[var(--border-color)]",children:[e.jsxs("div",{className:"flex flex-col p-4 overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("label",{className:"text-sm font-medium text-[var(--text-secondary)]",children:[N("tenants.applications.modal.selectApps"),p.length>0&&e.jsx("span",{className:"ml-2 px-2 py-0.5 text-xs rounded-full bg-[var(--color-accent-600)] text-white",children:p.length})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{type:"button",onClick:q,className:"text-xs text-[var(--color-accent-600)] hover:underline",children:N("tenants.applications.modal.selectAll")}),p.length>0&&e.jsx("button",{type:"button",onClick:U,className:"text-xs text-[var(--text-muted)] hover:underline",children:N("tenants.applications.modal.clearSelection")})]})]}),e.jsxs("div",{className:"relative mb-3",children:[e.jsx(r.Search,{className:"absolute left-3 top-2.5 w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:B,onChange:K=>O(K.target.value),placeholder:N("tenants.applications.modal.searchPlaceholder"),className:"w-full px-3 py-2 pl-10 rounded-[var(--radius-input)] bg-[var(--bg-secondary)] border border-[var(--border-color)] text-[var(--text-primary)]"})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto border border-[var(--border-color)] rounded-[var(--radius-input)]",children:[x&&e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-600)]"})}),!x&&m&&e.jsx("div",{className:"flex flex-col items-center justify-center py-8 px-4 text-center",children:m==="forbidden"?e.jsxs(e.Fragment,{children:[e.jsx(r.ShieldX,{className:"w-8 h-8 text-red-500 mb-2"}),e.jsx("p",{className:"text-sm font-medium text-red-500 mb-1",children:N("tenants.applications.modal.errorForbidden")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:N("tenants.applications.modal.errorForbiddenHint")})]}):e.jsxs(e.Fragment,{children:[e.jsx(r.AlertTriangle,{className:"w-8 h-8 text-amber-500 mb-2"}),e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] mb-1",children:N("tenants.applications.modal.errorGeneric")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:N("tenants.applications.modal.errorGenericHint")})]})}),!x&&!m&&o.length===0&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 px-4 text-center",children:[e.jsx(r.Boxes,{className:"w-8 h-8 text-[var(--text-tertiary)] mb-2"}),e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:N("tenants.applications.modal.noAvailable")})]}),!x&&!m&&o.length>0&&o.map(K=>{const ce=p.includes(K.id);return e.jsxs("button",{onClick:()=>Z(K.id),className:`w-full flex items-center gap-3 px-3 py-2.5 text-left hover:bg-[var(--bg-hover)] border-b border-[var(--border-color)] last:border-b-0 ${ce?"bg-[var(--color-accent-500)]/10":""}`,children:[e.jsx("div",{className:`w-5 h-5 rounded border-2 flex items-center justify-center flex-shrink-0 ${ce?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:ce&&e.jsx(r.CheckCircle,{className:"w-3 h-3 text-white"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)] truncate",children:K.label}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] truncate",children:K.code})]})]},K.id)})]})]}),e.jsxs("div",{className:"flex flex-col p-4 overflow-hidden",children:[e.jsx("label",{className:"text-sm font-medium text-[var(--text-secondary)] mb-3",children:N("tenants.applications.modal.moduleAccess")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mb-4",children:N("tenants.applications.modal.moduleAccessHint")}),e.jsxs("div",{className:"space-y-2 mb-4",children:[e.jsxs("button",{type:"button",onClick:()=>v("full"),className:`w-full flex items-start gap-3 p-3 rounded-[var(--radius-input)] border text-left transition-colors ${T==="full"?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]/5":"border-[var(--border-color)] hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("div",{className:`w-4 h-4 mt-0.5 rounded-full border-2 flex items-center justify-center flex-shrink-0 ${T==="full"?"border-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:T==="full"&&e.jsx("div",{className:"w-2 h-2 rounded-full bg-[var(--color-accent-600)]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)]",children:N("tenants.applications.customize.fullAccess")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:N("tenants.applications.modal.fullAccessModulesHint")})]})]}),e.jsxs("button",{type:"button",onClick:()=>{v("custom"),p.length>0&&g.length===0&&ae(p[0])},className:`w-full flex items-start gap-3 p-3 rounded-[var(--radius-input)] border text-left transition-colors ${T==="custom"?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]/5":"border-[var(--border-color)] hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("div",{className:`w-4 h-4 mt-0.5 rounded-full border-2 flex items-center justify-center flex-shrink-0 ${T==="custom"?"border-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:T==="custom"&&e.jsx("div",{className:"w-2 h-2 rounded-full bg-[var(--color-accent-600)]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)]",children:N("tenants.applications.customize.customAccess")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:N("tenants.applications.modal.customAccessModulesHint")})]})]})]}),T==="custom"&&e.jsxs("div",{className:"flex-1 overflow-hidden flex flex-col",children:[p.length===0&&e.jsx("p",{className:"text-sm text-[var(--text-muted)] text-center py-8",children:N("tenants.applications.modal.selectAppFirst")}),p.length>0&&D&&e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-600)]"})}),p.length>0&&!D&&e.jsxs(e.Fragment,{children:[p.length>1&&e.jsx("p",{className:"text-xs text-amber-600 mb-2",children:N("tenants.applications.modal.multipleAppsHint")}),e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{className:"text-xs text-[var(--text-muted)]",children:[ie.assignedModules,"/",ie.totalModules," ",N("tenants.applications.customize.modules"),","," ",ie.assignedSections,"/",ie.totalSections," ",N("tenants.applications.customize.sections")]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{type:"button",onClick:j,className:"text-xs text-[var(--color-accent-600)] hover:underline",children:N("tenants.applications.modal.selectAllModules")}),ie.assignedSections>0&&e.jsx("button",{type:"button",onClick:M,className:"text-xs text-[var(--text-muted)] hover:underline",children:N("tenants.applications.modal.clearModules")})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto border border-[var(--border-color)] rounded-[var(--radius-input)]",children:[g.map(K=>{const ce=F(K),ge=f.has(K.id),W=gt,G=K.icon?W[K.icon]:null;return e.jsxs("div",{className:"border-b border-[var(--border-color)] last:border-b-0",children:[e.jsxs("div",{className:"flex items-center gap-2 p-2 hover:bg-[var(--bg-hover)]",children:[e.jsx("button",{type:"button",onClick:()=>$(K.id),className:"p-0.5 rounded hover:bg-[var(--bg-tertiary)]",children:ge?e.jsx(r.ChevronDown,{className:"w-4 h-4 text-[var(--text-muted)]"}):e.jsx(r.ChevronRight,{className:"w-4 h-4 text-[var(--text-muted)]"})}),e.jsxs("button",{type:"button",onClick:()=>X(K.id),className:`w-4 h-4 rounded border-2 flex items-center justify-center flex-shrink-0 transition-colors ${ps(ce)}`,children:[ce==="checked"&&e.jsx(r.Check,{className:"w-2.5 h-2.5 text-white"}),ce==="indeterminate"&&e.jsx(r.Minus,{className:"w-2.5 h-2.5 text-white"})]}),e.jsx("div",{className:"p-1 rounded bg-[var(--bg-tertiary)]",children:G?e.jsx(G,{className:"w-3 h-3 text-[var(--text-muted)]"}):e.jsx(r.Layers,{className:"w-3 h-3 text-[var(--text-muted)]"})}),e.jsx("div",{className:"flex-1 min-w-0",children:e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] truncate",children:K.label})})]}),ge&&K.sections.length>0&&e.jsx("div",{className:"pl-10 pb-1 space-y-0.5 bg-[var(--bg-secondary)]",children:K.sections.map(_=>{const se=_.icon?W[_.icon]:null;return e.jsxs("div",{className:"flex items-center gap-2 p-1.5 rounded hover:bg-[var(--bg-hover)]",children:[e.jsx("button",{type:"button",onClick:()=>J(K.id,_.id),className:`w-3.5 h-3.5 rounded border-2 flex items-center justify-center flex-shrink-0 transition-colors ${_.isAssigned?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]":"border-[var(--border-color)] hover:border-[var(--color-accent-600)]"}`,children:_.isAssigned&&e.jsx(r.Check,{className:"w-2 h-2 text-white"})}),e.jsx("div",{className:"p-0.5 rounded bg-[var(--bg-tertiary)]",children:se?e.jsx(se,{className:"w-3 h-3 text-[var(--text-muted)]"}):e.jsx(r.Layers,{className:"w-3 h-3 text-[var(--text-muted)]"})}),e.jsx("span",{className:"text-xs text-[var(--text-primary)] truncate",children:_.label})]},_.id)})})]},K.id)}),g.length===0&&e.jsx("p",{className:"p-4 text-center text-sm text-[var(--text-muted)]",children:N("tenants.applications.customize.noModules")})]})]})]})]}),e.jsxs("div",{className:"flex flex-col p-4",children:[e.jsx("label",{className:"text-sm font-medium text-[var(--text-secondary)] mb-3",children:N("tenants.applications.modal.accessLevel")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mb-4",children:N("tenants.applications.modal.accessLevelHint")}),e.jsx(bs,{selectedAccessLevel:P,setSelectedAccessLevel:w})]})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 border-t border-[var(--border-color)] flex-shrink-0 bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:p.length>0?N("tenants.applications.modal.selectedCount",{count:p.length}):N("tenants.applications.modal.noSelection")}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:L,className:"px-4 py-2 rounded-[var(--radius-button)] font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]",children:N("common:cancel")}),e.jsxs("button",{onClick:k,disabled:p.length===0||S,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] font-medium bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50",children:[S?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Plus,{className:"w-4 h-4"}),N("tenants.applications.modal.assign"),p.length>0&&` (${p.length})`]})]})]})]})}),H&&e.jsx(xs,{application:H,tenantId:t,tenantName:n,isOpen:y,onClose:ee,mode:s,onSaved:async()=>{await c(),ee()}}),le.app&&e.jsx(Ve.ConfirmModal,{isOpen:le.show,title:N("tenants.applications.removeConfirm.title"),message:e.jsxs("div",{className:"space-y-3 text-left",children:[e.jsx("p",{children:N("tenants.applications.removeConfirm.message",{name:le.app.label})}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] mb-2",children:N("tenants.applications.removeConfirm.impactTitle")}),e.jsxs("ul",{className:"text-sm text-[var(--text-secondary)] space-y-1",children:[e.jsx("li",{children:N("tenants.applications.removeConfirm.impactModules",{count:le.app.totalModuleCount})}),e.jsx("li",{children:N("tenants.applications.removeConfirm.impactSections",{count:le.app.totalSectionCount})})]})]})]}),variant:"danger",confirmLabel:N("tenants.applications.remove"),loading:le.loading,onConfirm:async()=>{if(!(!h||!le.app)){te(K=>({...K,loading:!0}));try{await h(le.app.applicationId)}finally{te({show:!1,app:null,loading:!1})}}},onCancel:()=>te({show:!1,app:null,loading:!1})})]})}const at=["overview","members","groups","roles","applications","requests"],rt={Pending:{color:"text-[var(--info-text)]",bgColor:"bg-[var(--info-bg)]",borderColor:"border-[var(--info-border)]"},Active:{color:"text-[var(--success-text)]",bgColor:"bg-[var(--success-bg)]",borderColor:"border-[var(--success-border)]"},Suspended:{color:"text-[var(--warning-text)]",bgColor:"bg-[var(--warning-bg)]",borderColor:"border-[var(--warning-border)]"},Archived:{color:"text-[var(--text-tertiary)]",bgColor:"bg-[var(--bg-tertiary)]",borderColor:"border-[var(--border-color)]"}};function hs(){const{t}=de.useTranslation(["admin","common"]),{id:n}=xe.useParams(),s=xe.useNavigate(),{activeTab:l,setActiveTab:d}=tt.useTabNavigation("overview",at),{refreshTenants:i,currentTenant:c}=E.useTenant(),{refreshMenu:b}=E.useNavigation(),h=bt(n),u=Ut(n),m=Ot(n),o=a.useCallback(()=>{c&&n===c.id&&b()},[c,n,b]),x=a.useMemo(()=>({onApplicationsChanged:o}),[o]),p=Vt(n,x),S=Wt(n),B=Kt(n),P=Qe.useAccessRequests("tenant",n),[T,g]=a.useState(null),[f,D]=a.useState({show:!1,title:"",message:"",variant:"warning",onConfirm:()=>{}}),[y,H]=a.useState(new Set);a.useEffect(()=>{if(!n){s("/administration/tenants");return}h.loadTenant()},[n]),a.useEffect(()=>{if(!n||y.has(l))return;(async()=>{switch(l){case"overview":y.has("members")||(await u.loadMembers(),H(z=>new Set(z).add("members")));break;case"members":await u.loadMembers();break;case"groups":await m.loadGroups();break;case"roles":await S.loadRoles();break;case"applications":await p.loadApplications();break;case"requests":await P.loadRequests();break}H(z=>new Set(z).add(l))})()},[l,n]);const R=async U=>{if(!h.tenant||h.tenant.status===U)return;const ee={Active:t("admin:tenants.confirmActivate"),Suspended:t("admin:tenants.confirmSuspend"),Archived:t("admin:tenants.confirmArchive"),Pending:t("admin:tenants.confirmPending")};D({show:!0,title:t("common:confirm"),message:ee[U],variant:U==="Archived"?"danger":"warning",onConfirm:async()=>{g(U);try{U==="Active"?await E.adminApi.tenants.activate(h.tenant.id):U==="Suspended"?await E.adminApi.tenants.suspend(h.tenant.id):U==="Archived"&&await E.adminApi.tenants.archive(h.tenant.id),await i(),await h.loadTenant()}catch(ae){console.error("Failed to update tenant status:",ae)}finally{g(null),D({...f,show:!1})}}})},L=async()=>{g("refresh");try{const U=[h.loadTenant()];switch(l){case"overview":U.push(u.loadMembers());break;case"members":U.push(u.loadMembers());break;case"groups":U.push(m.loadGroups());break;case"roles":U.push(S.loadRoles());break;case"applications":U.push(p.loadApplications());break;case"requests":U.push(P.loadRequests());break}await Promise.all(U)}finally{g(null)}};if(h.loading)return e.jsx("div",{className:"p-6 flex items-center justify-center min-h-screen",children:e.jsxs("div",{className:"text-center",children:[e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin mx-auto mb-2 text-[var(--text-secondary)]"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:t("common:loading")})]})});if(!h.tenant)return e.jsxs("div",{className:"p-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants/list"}]}),e.jsx("div",{className:"mt-4 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:h.error||t("admin:tenants.notFound")})]})})]});const k=h.tenant,Z=rt[k.status],q=U=>{switch(U){case"Active":return e.jsx(r.PlayCircle,{className:"w-4 h-4"});case"Suspended":return e.jsx(r.PauseCircle,{className:"w-4 h-4"});case"Archived":return e.jsx(r.Archive,{className:"w-4 h-4"});default:return e.jsx(r.Building2,{className:"w-4 h-4"})}};return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants/list"},{label:k.name}]}),e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>s("/administration/tenants"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold text-[var(--text-primary)]",children:k.name}),e.jsx("p",{className:"text-sm sm:text-base text-[var(--text-secondary)]",children:k.slug})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:`px-3 py-1 rounded-[var(--radius-badge)] text-sm flex items-center gap-2 ${Z.bgColor} ${Z.color} border ${Z.borderColor}`,children:[q(k.status),t(`admin:tenants.status.${k.status.toLowerCase()}`)]}),e.jsx("span",{className:`px-3 py-1 rounded-[var(--radius-badge)] text-sm ${k.type==="Business"?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--accent-bg)] text-[var(--accent-text)]"}`,children:t(`admin:tenants.type.${k.type.toLowerCase()}`)}),k.status!=="Active"&&k.status!=="Archived"&&e.jsxs("button",{onClick:()=>R("Active"),disabled:T!==null,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--success-dot)] text-white hover:opacity-90 transition-colors disabled:opacity-50",children:[T==="Active"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.PlayCircle,{className:"w-4 h-4"}),t("admin:tenants.actions.activate")]}),k.status==="Active"&&e.jsxs("button",{onClick:()=>R("Suspended"),disabled:T!==null,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--warning-dot)] text-white hover:opacity-90 transition-colors disabled:opacity-50",children:[T==="Suspended"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.PauseCircle,{className:"w-4 h-4"}),t("admin:tenants.actions.suspend")]}),e.jsx("button",{onClick:()=>s(`/administration/tenants/${n}/settings`),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",title:t("admin:tenants.settings.title"),children:e.jsx(r.Settings,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsx("button",{onClick:L,disabled:T==="refresh",className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors disabled:opacity-50",title:t("common:refresh"),children:e.jsx(r.RefreshCw,{className:`w-5 h-5 ${T==="refresh"?"animate-spin":""}`})})]})]}),h.error&&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:h.error})]})}),e.jsx("div",{className:"border-b border-[var(--border-color)]",children:e.jsx("div",{className:"flex gap-1 -mb-px",children:at.map(U=>e.jsx("button",{onClick:()=>d(U),className:`px-4 py-2 border-b-2 transition-colors ${l===U?"border-[var(--primary-color)] text-[var(--primary-color)]":"border-transparent text-[var(--text-secondary)] hover:text-[var(--text-primary)]"}`,children:t(`admin:tenants.tabs.${U}`)},U))})}),e.jsxs("div",{children:[l==="overview"&&e.jsx(Jt,{tenant:k,tenantOwner:(()=>{const U=u.members?.find(z=>z.isOwner);return U?{userDisplayName:U.userDisplayName??void 0,userEmail:U.userEmail??void 0}:null})(),statusConfig:rt,actionLoading:T,onRefresh:L,onEditClick:h.openEditGeneralInfo,onStatusChange:U=>{R({activate:"Active",suspend:"Suspended",archive:"Archived"}[U])},onMembersTabClick:()=>d("members"),onLinkOrgClick:B.openLinkOrgModal,onUnlinkOrg:B.handleUnlinkOrganisation}),l==="members"&&e.jsx(ts,{tenantId:n,members:u.members,loadingMembers:u.loadingMembers,actionLoading:T,onRefresh:u.loadMembers,onRemoveMember:u.handleRemoveMember}),l==="groups"&&e.jsx(as,{tenantId:n,groups:m.groups,loadingGroups:m.loadingGroups,removingGroupId:m.removingGroupId,onRefresh:m.loadGroups,onRemoveGroup:m.handleRemoveGroup}),l==="roles"&&e.jsx(ns,{roles:S.roles,loadingRoles:S.loadingRoles}),l==="applications"&&e.jsx(ht,{tenantId:n,tenantName:k.name,applications:p.applications,loadingApps:p.loadingApps,actionLoading:T,onRefresh:p.loadApplications,onUpdateAccessLevel:p.handleUpdateAccessLevel,addingApplication:p.addingApplication,availableAppsError:p.availableAppsError,filteredAvailableApps:p.filteredAvailableApps,loadingAvailableApps:p.loadingAvailableApps,selectedAppIds:p.selectedAppIds,assigningApps:p.assigningApps,appSearchTerm:p.appSearchTerm,selectedAccessLevel:p.selectedAccessLevel,bulkAccessMode:p.bulkAccessMode,bulkModules:p.bulkModules,bulkExpandedModules:p.bulkExpandedModules,loadingBulkModules:p.loadingBulkModules,showCustomizeDrawer:p.showCustomizeDrawer,customizingApp:p.customizingApp,onOpenAddApplication:p.loadAvailableApps,onCloseAddApplication:()=>{p.setAddingApplication(!1),p.setSelectedAppIds([]),p.setAppSearchTerm(""),p.setSelectedAccessLevel("FullAccess"),p.setBulkAccessMode("full"),p.setBulkModules([]),p.setBulkExpandedModules(new Set)},onAssignApplications:p.handleAssignApplications,onAppToggle:p.handleAppToggle,onSelectAllApps:p.selectAllFilteredApps,onClearAppSelection:p.clearAppSelection,onOpenCustomizeDrawer:p.openCustomizeDrawer,onCloseCustomizeDrawer:p.closeCustomizeDrawer,onLoadBulkModules:p.loadBulkModulesForApp,onToggleBulkModuleExpand:p.toggleBulkModuleExpand,onToggleBulkModule:p.toggleBulkModule,onToggleBulkSection:p.toggleBulkSection,onGetBulkModuleCheckState:p.getBulkModuleCheckState,onGetBulkStats:p.getBulkStats,onSelectAllBulkModules:p.selectAllBulkModules,onClearBulkModules:p.clearBulkModules,setAppSearchTerm:p.setAppSearchTerm,setSelectedAccessLevel:p.setSelectedAccessLevel,setBulkAccessMode:p.setBulkAccessMode}),l==="requests"&&e.jsx(Qe.AccessRequestsListTab,{requests:P.requests,loading:P.loading,onReload:()=>P.loadRequests()})]}),B.showLinkOrgModal&&e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center",children:e.jsxs("div",{className:"bg-[var(--bg-primary)] rounded-[var(--radius-card)] p-6 max-w-md w-full mx-4",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)] mb-4",children:t("admin:tenants.organisation.linkTitle")}),e.jsx("p",{className:"text-[var(--text-secondary)] mb-4",children:t("admin:tenants.organisation.linkDescription")}),e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsx("button",{onClick:B.closeLinkOrgModal,className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)]",children:t("common:cancel")}),e.jsx("button",{onClick:()=>{B.openLinkOrgModal(),h.loadTenant()},disabled:B.linkingOrg,className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--primary-color)] text-white hover:opacity-90 disabled:opacity-50",children:B.linkingOrg?t("common:loading"):t("admin:tenants.organisation.link")})]})]})}),f.show&&e.jsx(Ve.ConfirmModal,{title:f.title,message:f.message,variant:f.variant,isOpen:f.show,onConfirm:()=>{f.onConfirm()},onCancel:()=>{D({...f,show:!1})}})]})}const nt=[{value:"UID_CHE",label:"CHE/IDE (Suisse)",country:"CH"},{value:"VAT",label:"VAT (EU)",country:"EU"},{value:"SIRET",label:"SIRET (France)",country:"FR"},{value:"SIREN",label:"SIREN (France)",country:"FR"},{value:"KVK",label:"KVK (Netherlands)",country:"NL"},{value:"CRN",label:"CRN (UK)",country:"GB"},{value:"ABN",label:"ABN (Australia)",country:"AU"},{value:"Other",label:"Other",country:""}];function fs(t){return t==="b2b"?"Business":"Personal"}function ys(t){return t.enableB2C?(t.enableB2B,"Personal"):"Business"}function js(t,n,s,l,d,i,c,b,h,u,m,o,x,p,S,B,P=!1){return{name:t,legalName:n||void 0,countryCode:s,businessIdentifierType:l,businessIdentifier:d,vatNumber:i||void 0,address:{street:c,street2:b||void 0,postalCode:h,city:u,state:m||void 0,country:o,countryCode:x},phone:p||void 0,email:S||void 0,website:B||void 0,isFromRegistry:P||void 0}}function Ns(){const{t}=de.useTranslation(["admin","common"]),n=xe.useNavigate(),[s]=xe.useSearchParams(),{refreshTenants:l}=E.useTenant(),d=s.get("type"),i=s.get("organisationId"),[c,b]=a.useState(null),[h,u]=a.useState(null),[m,o]=a.useState(fs(d)),[x,p]=a.useState(i?"existing":"none"),[S,B]=a.useState(!1),[P,T]=a.useState(!0),[g,f]=a.useState(null),[D,y]=a.useState(!1),[H,R]=a.useState(null),[L,k]=a.useState(!1),[Z,q]=a.useState(!1),[U,z]=a.useState(null),[ee,ae]=a.useState([]),[$,X]=a.useState(""),[J,F]=a.useState(!1);a.useEffect(()=>{(async()=>{try{const ne=await E.adminApi.tenants.getConfig();b(ne.enableB2B),u(ne.enableB2C),i||o(ys(ne))}catch(ne){console.error("Failed to load tenant config:",ne),b(!0),u(!0)}finally{T(!1)}})()},[]),a.useEffect(()=>{if(!i)return;(async()=>{try{const ne=await E.adminApi.organisations.getById(i);z({id:ne.id,name:ne.name,legalName:ne.legalName,countryCode:ne.countryCode,businessIdentifier:ne.businessIdentifier,businessIdentifierType:ne.businessIdentifierType,verificationStatus:ne.verificationStatus,verifiedAt:ne.verifiedAt,createdAt:ne.createdAt}),A||C(ne.name)}catch(ne){console.error("Failed to load organisation:",ne)}})()},[i]),a.useEffect(()=>{if(x!=="existing")return;const ne=setTimeout(async()=>{F(!0);try{const ue=await E.adminApi.organisations.getAvailable($||void 0);ae(ue)}catch(ue){console.error("Failed to search organisations:",ue)}finally{F(!1)}},300);return()=>clearTimeout(ne)},[x,$]);const[A,j]=a.useState(""),[M,O]=a.useState(""),[w,v]=a.useState(""),[N,ie]=a.useState(""),[le,te]=a.useState(""),[Q,pe]=a.useState("CH"),[me,K]=a.useState("UID_CHE"),[ce,ge]=a.useState("CHE-"),W=I=>{const ne=I.toUpperCase().replace(/[^A-Z0-9]/g,"");let ue=ne.startsWith("CHE")?ne.slice(3):ne.replace(/[^0-9]/g,"");return ue=ue.slice(0,9),ue.length===0?"CHE-":ue.length<=3?`CHE-${ue}`:ue.length<=6?`CHE-${ue.slice(0,3)}.${ue.slice(3)}`:`CHE-${ue.slice(0,3)}.${ue.slice(3,6)}.${ue.slice(6)}`},G=I=>{ge(me==="UID_CHE"&&Q==="CH"?W(I):I),q(!1),R(null),k(!1)};a.useEffect(()=>{Q==="CH"&&me==="UID_CHE"&&ge(!ce||ce==="CHE-"?"CHE-":W(ce))},[Q,me]);const[_,se]=a.useState(""),[V,Y]=a.useState(""),[re,ve]=a.useState(""),[he,fe]=a.useState(""),[ye,$e]=a.useState(""),[Te,Re]=a.useState(""),[Se,Ue]=a.useState(""),[Me,Oe]=a.useState(""),[Ge,He]=a.useState(""),[Be,qe]=a.useState("Switzerland"),[Fe,ze]=a.useState("CH"),Ce=I=>I.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/(^-)|(-$)/g,"").substring(0,50),C=I=>{j(I),(!M||M===Ce(A))&&O(Ce(I))},oe=()=>{const I=ce.replace(/[^0-9]/g,"");return!ce||I.length<9||!Q?(R(t("admin:tenants.create.organisation.lookupIncomplete")),!1):!0},je=I=>{I.name&&(ie(I.name),A||C(I.name)),I.legalName&&te(I.legalName),I.vatNumber&&se(I.vatNumber),I.phone&&Y(I.phone),I.email&&ve(I.email),I.website&&fe(I.website)},Pe=I=>{I.street&&$e(I.street),I.street2&&Re(I.street2),I.postalCode&&Ue(I.postalCode),I.city&&Oe(I.city),I.state&&He(I.state),I.country&&qe(I.country),I.countryCode&&ze(I.countryCode)},Ke=I=>I.includes("404")||I.includes("not found")?t("admin:tenants.create.organisation.lookupFailed"):I.includes("credentials")||I.includes("401")?t("admin:tenants.create.organisation.lookupAuthError"):t("admin:tenants.create.organisation.lookupFailed"),ft=async()=>{if(oe()){y(!0),R(null),k(!1);try{const I=await E.adminApi.organisations.lookup(Q,ce);je(I),Pe(I),q(!0),k(!0),setTimeout(()=>k(!1),3e3)}catch(I){console.error("[Zefix Lookup] Failed:",I);const ne=I instanceof Error?I.message:"";R(Ke(ne))}finally{y(!1)}}},yt=async()=>{const I={name:A,slug:M||Ce(A),description:w||void 0},ne=await E.adminApi.tenants.createB2C(I);await l(),n(`/administration/tenants/${ne.id}`)},jt=async()=>{let I;if(x==="existing"&&U)I={name:A,slug:M||Ce(A),description:w||void 0,organisationId:U.id};else if(x==="create"){const ue=js(N,le,Q,me,ce,_,ye,Te,Se,Me,Ge,Be,Fe,V,re,he,Z);I={name:A,slug:M||Ce(A),description:w||void 0,organisation:ue}}else I={name:A,slug:M||Ce(A),description:w||void 0};const ne=await E.adminApi.tenants.createB2B(I);await l(),n(`/administration/tenants/${ne.id}`)},Nt=async I=>{I.preventDefault(),f(null),B(!0);try{m==="Personal"?await yt():await jt()}catch(ne){console.error("Failed to create tenant:",ne);const ue=ne instanceof Error?ne.message:t("admin:tenants.errors.createFailed");f(ue)}finally{B(!1)}},wt=!!(A&&(m!=="Business"?!0:!!(A&&(x==="existing"?!!U:x!=="create"?!0:!!(N&&Q&&me&&ce&&ye&&Se&&Me&&Be&&Fe)))));return e.jsxs("div",{className:"container mx-auto px-4 py-6 max-w-3xl",children:[e.jsx(E.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("tenants.title"),href:"/administration/tenants/list"},{label:t("tenants.create.title")}]}),e.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[e.jsx("button",{onClick:()=>n("/administration/tenants"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)]",children:e.jsx(r.ArrowLeft,{className:"w-5 h-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("admin:tenants.create.title")}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:t("admin:tenants.create.subtitle")})]})]}),g&&e.jsxs("div",{className:"mb-6 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.AlertCircle,{className:"w-5 h-5 flex-shrink-0"}),e.jsx("span",{children:g})]}),e.jsx("button",{type:"button",onClick:()=>f(null),className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:t("common:dismiss")})]}),e.jsxs("div",{className:"card p-6 mb-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-[var(--text-primary)] mb-4",children:t("admin:tenants.create.selectType")}),!P&&h===!1&&e.jsx("div",{className:"mb-4 p-3 rounded-[var(--radius-card)] bg-[var(--info-bg)] border border-[var(--info-border)]",children:e.jsxs("div",{className:"flex items-center gap-2 text-[var(--info-text)]",children:[e.jsx(r.Info,{className:"w-4 h-4 flex-shrink-0"}),e.jsx("span",{className:"text-sm",children:t("admin:tenants.create.b2cDisabledNotice")})]})}),!P&&c===!1&&e.jsx("div",{className:"mb-4 p-3 rounded-[var(--radius-card)] bg-[var(--info-bg)] border border-[var(--info-border)]",children:e.jsxs("div",{className:"flex items-center gap-2 text-[var(--info-text)]",children:[e.jsx(r.Info,{className:"w-4 h-4 flex-shrink-0"}),e.jsx("span",{className:"text-sm",children:t("admin:tenants.create.b2bDisabledNotice")})]})}),P?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--text-tertiary)]"})}):e.jsxs("div",{className:`grid gap-4 ${h&&c?"grid-cols-2":"grid-cols-1"}`,children:[h&&e.jsxs("button",{type:"button",onClick:()=>o("Personal"),className:`p-4 rounded-[var(--radius-card)] border-2 transition-all text-left ${m==="Personal"?"border-[var(--color-accent-500)] bg-[var(--color-accent-500)]/5":"border-[var(--border-color)] hover:border-[var(--border-color-hover)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("div",{className:`p-2 rounded-[var(--radius-button)] ${m==="Personal"?"bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]"}`,children:e.jsx(r.User,{className:"w-5 h-5"})}),e.jsx("div",{className:"flex-1",children:e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:t("admin:tenants.type.b2c")})}),m==="Personal"&&e.jsx(r.Check,{className:"w-5 h-5 text-[var(--color-accent-500)]"})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:tenants.create.b2cDescription")})]}),c&&e.jsxs("button",{type:"button",onClick:()=>o("Business"),className:`p-4 rounded-[var(--radius-card)] border-2 transition-all text-left ${m==="Business"?"border-[var(--info-border)] bg-[var(--info-bg)]":"border-[var(--border-color)] hover:border-[var(--border-color-hover)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("div",{className:`p-2 rounded-[var(--radius-button)] ${m==="Business"?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]"}`,children:e.jsx(r.Building,{className:"w-5 h-5"})}),e.jsx("div",{className:"flex-1",children:e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:t("admin:tenants.type.b2b")})}),m==="Business"&&e.jsx(r.Check,{className:"w-5 h-5 text-[var(--info-text)]"})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:tenants.create.b2bDescription")})]})]})]}),e.jsxs("form",{onSubmit:Nt,className:"space-y-6",children:[e.jsxs("div",{className:"card p-6 space-y-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-[var(--text-primary)]",children:t("admin:tenants.create.details")}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[e.jsx(r.Building2,{className:"w-4 h-4 inline mr-2"}),t("admin:tenants.create.name")," *"]}),e.jsx("input",{type:"text",value:A,onChange:I=>C(I.target.value),placeholder:t("admin:tenants.create.namePlaceholder"),className:"w-full px-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)]",required:!0})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[e.jsx(r.Hash,{className:"w-4 h-4 inline mr-2"}),t("admin:tenants.create.slug")]}),e.jsx("input",{type:"text",value:M,onChange:I=>O(Ce(I.target.value)),placeholder:t("admin:tenants.create.slugPlaceholder"),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] font-mono placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-1",children:t("admin:tenants.create.slugHelp")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[e.jsx(r.FileText,{className:"w-4 h-4 inline mr-2"}),t("admin:tenants.create.description")]}),e.jsx("textarea",{value:w,onChange:I=>v(I.target.value),placeholder:t("admin:tenants.create.descriptionPlaceholder"),rows:3,className:"w-full px-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)] resize-none"})]})]}),m==="Business"&&e.jsxs("div",{className:"card p-6 space-y-4",children:[e.jsxs("h2",{className:"text-lg font-semibold text-[var(--info-text)] flex items-center gap-2",children:[e.jsx(r.Building,{className:"w-5 h-5"}),t("admin:tenants.create.organisation.title")]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("button",{type:"button",onClick:()=>p("none"),className:`p-4 rounded-[var(--radius-card)] border-2 transition-all text-left ${x==="none"?"border-[var(--success-border)] bg-[var(--success-bg)]":"border-[var(--border-color)] hover:border-[var(--border-color-hover)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("div",{className:`p-2 rounded-[var(--radius-button)] ${x==="none"?"bg-[var(--success-bg)] text-[var(--success-text)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]"}`,children:e.jsx(r.Zap,{className:"w-5 h-5"})}),e.jsx("div",{className:"flex-1",children:e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:t("admin:tenants.create.organisation.quickMode")})}),x==="none"&&e.jsx(r.Check,{className:"w-5 h-5 text-[var(--success-text)]"})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:tenants.create.organisation.quickModeDescription")})]}),e.jsxs("button",{type:"button",onClick:()=>p("existing"),className:`p-4 rounded-[var(--radius-card)] border-2 transition-all text-left ${x==="existing"?"border-[var(--color-accent-500)] bg-[var(--color-accent-500)]/5":"border-[var(--border-color)] hover:border-[var(--border-color-hover)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("div",{className:`p-2 rounded-[var(--radius-button)] ${x==="existing"?"bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]"}`,children:e.jsx(r.Link,{className:"w-5 h-5"})}),e.jsx("div",{className:"flex-1",children:e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:t("admin:tenants.create.organisation.existingMode")})}),x==="existing"&&e.jsx(r.Check,{className:"w-5 h-5 text-[var(--color-accent-500)]"})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:tenants.create.organisation.existingModeDescription")})]}),e.jsxs("button",{type:"button",onClick:()=>p("create"),className:`p-4 rounded-[var(--radius-card)] border-2 transition-all text-left ${x==="create"?"border-[var(--info-border)] bg-[var(--info-bg)]":"border-[var(--border-color)] hover:border-[var(--border-color-hover)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("div",{className:`p-2 rounded-[var(--radius-button)] ${x==="create"?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]"}`,children:e.jsx(r.Building,{className:"w-5 h-5"})}),e.jsx("div",{className:"flex-1",children:e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:t("admin:tenants.create.organisation.createMode")})}),x==="create"&&e.jsx(r.Check,{className:"w-5 h-5 text-[var(--info-text)]"})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:tenants.create.organisation.createModeDescription")})]})]})]}),m==="Business"&&x==="existing"&&e.jsxs("div",{className:"card p-6 space-y-4",children:[e.jsxs("h2",{className:"text-lg font-semibold text-[var(--color-accent-600)] flex items-center gap-2",children:[e.jsx(r.Link,{className:"w-5 h-5"}),t("admin:tenants.create.organisation.selectExisting")]}),U&&e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:U.name}),e.jsxs("p",{className:"text-sm text-[var(--text-secondary)]",children:[U.businessIdentifier," — ",U.countryCode]}),U.legalName&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:U.legalName})]}),e.jsx("button",{type:"button",onClick:()=>z(null),className:"text-sm text-[var(--error-text)] hover:opacity-80",children:t("common:remove")})]})}),!U&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative",children:[e.jsx(r.Search,{className:"absolute left-3 top-3 w-5 h-5 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:$,onChange:I=>X(I.target.value),placeholder:t("admin:tenants.create.organisation.searchPlaceholder"),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)]"})]}),J&&e.jsx("div",{className:"flex items-center justify-center py-4",children:e.jsx(r.Loader2,{className:"w-5 h-5 animate-spin text-[var(--text-tertiary)]"})}),!J&&ee.length===0&&e.jsx("p",{className:"text-sm text-[var(--text-secondary)] text-center py-4",children:t("admin:tenants.create.organisation.noResults")}),!J&&ee.length>0&&e.jsx("div",{className:"border border-[var(--border-color)] rounded-[var(--radius-card)] overflow-hidden max-h-64 overflow-y-auto",children:ee.map(I=>e.jsx("button",{type:"button",onClick:()=>{z(I),A||C(I.name)},className:"w-full text-left px-4 py-3 border-b border-[var(--border-color)] last:border-b-0 hover:bg-[var(--bg-hover)] transition-colors",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-sm text-[var(--text-primary)]",children:I.name}),e.jsxs("p",{className:"text-xs text-[var(--text-secondary)]",children:[I.businessIdentifier," — ",I.countryCode]})]}),e.jsx("span",{className:`text-xs px-2 py-1 rounded-[var(--radius-badge)] ${I.verificationStatus==="Verified"?"bg-[var(--success-bg)] text-[var(--success-text)]":I.verificationStatus==="Pending"?"bg-[var(--warning-bg)] text-[var(--warning-text)]":"bg-[var(--error-bg)] text-[var(--error-text)]"}`,children:t(`admin:organisations.status.${I.verificationStatus.toLowerCase()}`,I.verificationStatus)})]})},I.id))})]})]}),m==="Business"&&x==="create"&&e.jsxs("div",{className:"card p-6 space-y-6",children:[e.jsxs("h2",{className:"text-lg font-semibold text-[var(--info-text)] flex items-center gap-2",children:[e.jsx(r.FileCheck,{className:"w-5 h-5"}),t("admin:tenants.create.organisation.details")]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.name")," *"]}),e.jsx("input",{type:"text",value:N,onChange:I=>ie(I.target.value),placeholder:t("admin:tenants.create.organisation.namePlaceholder"),className:"w-full px-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)]",required:x==="create"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:t("admin:tenants.create.organisation.legalName")}),e.jsx("input",{type:"text",value:le,onChange:I=>te(I.target.value),placeholder:t("admin:tenants.create.organisation.legalNamePlaceholder"),className:"w-full px-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:"p-4 bg-[var(--info-bg)] rounded-[var(--radius-card)] border border-[var(--info-border)] space-y-4",children:[e.jsxs("h3",{className:"text-sm font-semibold text-[var(--info-text)] flex items-center gap-2",children:[e.jsx(r.FileCheck,{className:"w-4 h-4"}),t("admin:tenants.create.organisation.businessId.title")]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.businessId.type")," *"]}),e.jsx("select",{value:me,onChange:I=>{const ne=I.target.value;K(ne);const ue=nt.find(Ct=>Ct.value===ne);ue?.country&&pe(ue.country)},className:"w-full px-4 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)]",required:x==="create",children:nt.map(I=>e.jsx("option",{value:I.value,children:I.label},I.value))})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.businessId.number")," *"]}),e.jsxs("div",{className:"relative flex",children:[e.jsx("input",{type:"text",value:ce,onChange:I=>G(I.target.value),placeholder:me==="UID_CHE"?"CHE-123.456.789":t("admin:tenants.create.organisation.businessId.placeholder"),className:"flex-1 px-4 py-2 pr-12 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] font-mono placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",required:x==="create"}),e.jsx("button",{type:"button",onClick:ft,disabled:D||!ce||ce.replace(/[^0-9]/g,"").length<9||Q!=="CH",className:"absolute right-1 top-1 bottom-1 px-2.5 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 flex items-center justify-center",title:t("admin:tenants.create.organisation.lookupTitle"),children:D?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Search,{className:"w-4 h-4"})})]}),H&&e.jsxs("p",{className:"text-xs text-[var(--error-text)] mt-1 flex items-center gap-1",children:[e.jsx(r.AlertTriangle,{className:"w-3 h-3"}),H]}),L&&e.jsxs("p",{className:"text-xs text-[var(--success-text)] mt-1 flex items-center gap-1",children:[e.jsx(r.Check,{className:"w-3 h-3"}),t("admin:tenants.create.organisation.lookupSuccess")]}),Q==="CH"&&me==="UID_CHE"&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-1",children:ce.replace(/[^0-9]/g,"").length<9?t("admin:tenants.create.organisation.lookupHintIncomplete"):t("admin:tenants.create.organisation.lookupHint")})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:t("admin:tenants.create.organisation.vatNumber")}),e.jsx("input",{type:"text",value:_,onChange:I=>se(I.target.value),placeholder:"CHE-123.456.789 TVA",className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] font-mono placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"})]})]}),e.jsxs("div",{className:"p-4 bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] space-y-4",children:[e.jsxs("h3",{className:"text-sm font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.MapPin,{className:"w-4 h-4"}),t("admin:tenants.create.organisation.address.title")," *"]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.address.street")," *"]}),e.jsx("input",{type:"text",value:ye,onChange:I=>$e(I.target.value),placeholder:t("admin:tenants.create.organisation.address.streetPlaceholder"),className:"w-full px-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)]",required:x==="create"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:t("admin:tenants.create.organisation.address.street2")}),e.jsx("input",{type:"text",value:Te,onChange:I=>Re(I.target.value),placeholder:t("admin:tenants.create.organisation.address.street2Placeholder"),className:"w-full px-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:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.address.postalCode")," *"]}),e.jsx("input",{type:"text",value:Se,onChange:I=>Ue(I.target.value),placeholder:"1000",className:"w-full px-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)]",required:x==="create"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.address.city")," *"]}),e.jsx("input",{type:"text",value:Me,onChange:I=>Oe(I.target.value),placeholder:t("admin:tenants.create.organisation.address.cityPlaceholder"),className:"w-full px-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)]",required:x==="create"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:t("admin:tenants.create.organisation.address.state")}),e.jsx("input",{type:"text",value:Ge,onChange:I=>He(I.target.value),placeholder:"VD",className:"w-full px-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:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.address.country")," *"]}),e.jsx("input",{type:"text",value:Be,onChange:I=>qe(I.target.value),placeholder:"Switzerland",className:"w-full px-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)]",required:x==="create"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.address.countryCode")," *"]}),e.jsx("input",{type:"text",value:Fe,onChange:I=>ze(I.target.value.toUpperCase().slice(0,2)),placeholder:"CH",maxLength:2,className:"w-full px-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)] uppercase",required:x==="create"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[e.jsx(r.Phone,{className:"w-4 h-4 inline mr-2"}),t("admin:tenants.create.organisation.phone")]}),e.jsx("input",{type:"tel",value:V,onChange:I=>Y(I.target.value),placeholder:"+41 21 123 45 67",className:"w-full px-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",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[e.jsx(r.Mail,{className:"w-4 h-4 inline mr-2"}),t("admin:tenants.create.organisation.email")]}),e.jsx("input",{type:"email",value:re,onChange:I=>ve(I.target.value),placeholder:"contact@company.ch",className:"w-full px-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",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[e.jsx(r.Globe,{className:"w-4 h-4 inline mr-2"}),t("admin:tenants.create.organisation.website")]}),e.jsx("input",{type:"url",value:he,onChange:I=>fe(I.target.value),placeholder:"https://www.company.ch",className:"w-full px-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 justify-end gap-4 pt-4",children:[e.jsx("button",{type:"button",onClick:()=>n("/administration/tenants"),className:"px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:t("common:cancel")}),e.jsxs("button",{type:"submit",disabled:S||!wt,className:`inline-flex items-center gap-2 px-6 py-2 text-sm font-medium rounded-[var(--radius-button)] text-white transition-colors disabled:opacity-50 disabled:cursor-not-allowed ${m==="Business"?x==="none"?"bg-[var(--success-dot)] hover:opacity-90":"bg-[var(--info-dot)] hover:opacity-90":"bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)]"}`,children:[S?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.UserPlus,{className:"w-4 h-4"}),t("admin:tenants.create.submit")]})]})]})]})}const it=["#3b82f6","#22c55e","#f59e0b","#ef4444","#8b5cf6","#06b6d4","#ec4899","#f97316","#14b8a6","#6366f1"],ws=t=>{const{cx:n=0,cy:s=0,midAngle:l=0,innerRadius:d=0,outerRadius:i=0,startAngle:c=0,endAngle:b=0,fill:h="#8884d8",payload:u,percent:m=0,value:o=0}=t;if(!u)return e.jsx("g",{});const x=Math.PI/180,p=Math.sin(-x*l),S=Math.cos(-x*l),B=n+(i+10)*S,P=s+(i+10)*p,T=n+(i+30)*S,g=s+(i+30)*p,f=T+(S>=0?1:-1)*22,D=g,y=S>=0?"start":"end";return e.jsxs("g",{children:[e.jsx("text",{x:n,y:s,dy:-10,textAnchor:"middle",fill:"var(--text-primary)",style:{fontSize:"14px",fontWeight:"bold"},children:u.tenantName}),e.jsxs("text",{x:n,y:s,dy:10,textAnchor:"middle",fill:"var(--text-secondary)",style:{fontSize:"12px"},children:[o.toLocaleString()," ",u.tenantType==="_duration"?"min":"accès"]}),e.jsx(be.Sector,{cx:n,cy:s,innerRadius:d,outerRadius:i,startAngle:c,endAngle:b,fill:h}),e.jsx(be.Sector,{cx:n,cy:s,startAngle:c,endAngle:b,innerRadius:i+6,outerRadius:i+10,fill:h}),e.jsx("path",{d:`M${B},${P}L${T},${g}L${f},${D}`,stroke:h,fill:"none"}),e.jsx("circle",{cx:f,cy:D,r:2,fill:h,stroke:"none"}),e.jsx("text",{x:f+(S>=0?1:-1)*12,y:D,textAnchor:y,fill:"var(--text-primary)",style:{fontSize:"12px"},children:`${(m*100).toFixed(0)}%`})]})},Cs=({data:t,mode:n="access"})=>{const[s,l]=a.useState(0);if(!t||t.length===0)return e.jsx("div",{className:"flex items-center justify-center h-full text-[var(--text-secondary)]",children:"Aucune donnée d'activité disponible"});const d=u=>n==="access"?u.accessCount:u.totalDurationMinutes,i=n==="access"?"accès":"min",c=t.reduce((u,m)=>u+d(m),0),b=t.map((u,m)=>({...u,tenantType:n==="duration"?"_duration":u.tenantType,name:u.tenantName,value:d(u),fill:it[m%it.length]})),h=(u,m)=>{l(m)};return e.jsxs("div",{className:"flex flex-col",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm h-[34px]",children:e.jsx("span",{className:"text-[var(--text-tertiary)]",children:"Vue globale des tenants actifs"})}),e.jsxs("div",{className:"flex items-center justify-center gap-2",children:[e.jsx("span",{className:"text-lg font-semibold text-blue-600",children:"Tenants"}),e.jsxs("span",{className:"text-[var(--text-secondary)]",children:["(",t.length," actifs • ",c.toLocaleString()," ",i," total)"]})]}),e.jsx("div",{style:{width:"100%",height:350},children:e.jsx(be.ResponsiveContainer,{width:"100%",height:350,children:e.jsx(be.PieChart,{children:e.jsx(be.Pie,{activeIndex:s,activeShape:ws,data:b,cx:"50%",cy:"50%",innerRadius:70,outerRadius:110,fill:"#8884d8",dataKey:"value",onMouseEnter:h,children:b.map(u=>e.jsx(be.Cell,{fill:u.fill},u.tenantId))})})})}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-2 max-h-[200px] overflow-y-auto",children:b.map((u,m)=>e.jsxs("button",{onClick:()=>l(m),onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),l(m))},className:`flex items-center gap-2 p-2 rounded-lg hover:bg-[var(--bg-secondary)] transition-colors cursor-pointer focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] ${s===m?"bg-[var(--bg-secondary)]":""}`,children:[e.jsx("div",{className:"w-3 h-3 rounded-full flex-shrink-0",style:{backgroundColor:u.fill}}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate text-[var(--text-primary)]",children:u.tenantName}),e.jsxs("p",{className:"text-xs text-[var(--text-secondary)]",children:[d(t[m]).toLocaleString()," ",i]})]})]},u.tenantId))})]})},lt=["#3b82f6","#22c55e","#f59e0b","#ef4444","#8b5cf6","#06b6d4","#ec4899"];function Ss({tenant:t,index:n,mode:s,getColor:l}){return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-3 h-3 rounded-full",style:{backgroundColor:l(t,n)}}),e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:t.name}),e.jsx("span",{className:"text-sm font-semibold",style:{color:l(t,n)},children:s==="access"?t.totalAccess:`${t.totalDurationMinutes} min`})]},t.name)}const ks=({period:t=30,mode:n="access"})=>{const[s,l]=a.useState(null),[d,i]=a.useState(!0),[c,b]=a.useState(null);if(a.useEffect(()=>{(async()=>{try{i(!0);const o=await E.tenantAnalyticsApi.getTrends(t);l(o),b(null)}catch(o){b(o instanceof Error?o.message:"Failed to load trends")}finally{i(!1)}})()},[t]),d)return e.jsx("div",{className:"flex items-center justify-center h-[300px]",children:e.jsx(r.Loader2,{className:"h-6 w-6 animate-spin text-[var(--color-primary-600)]"})});if(c||!s)return e.jsx("div",{className:"flex items-center justify-center h-[300px] text-[var(--text-secondary)]",children:c||"Aucune donnée disponible"});if(!s?.dailyData?.length||!s?.tenants?.length)return e.jsx("div",{className:"flex items-center justify-center h-[300px] text-[var(--text-secondary)]",children:"Aucune donnée de tendance disponible"});const h=s.dailyData.map(m=>{const o={date:new Date(m.date).toLocaleDateString("fr-FR",{day:"2-digit",month:"short"})};return s.tenants.forEach(x=>{n==="access"?o[x.name]=m.tenantCounts[x.name]||0:o[x.name]=m.tenantDurations?.[x.name]||0}),o}),u=(m,o)=>m.color||lt[o%lt.length];return e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{style:{width:"100%",height:300},children:e.jsx(be.ResponsiveContainer,{width:"100%",height:300,children:e.jsxs(be.LineChart,{data:h,margin:{top:5,right:30,left:20,bottom:5},children:[e.jsx(be.CartesianGrid,{strokeDasharray:"3 3",stroke:"var(--border-color)"}),e.jsx(be.XAxis,{dataKey:"date",stroke:"var(--text-secondary)",style:{fontSize:"11px"},tick:{fill:"var(--text-secondary)"}}),e.jsx(be.YAxis,{stroke:"var(--text-secondary)",style:{fontSize:"11px"},tick:{fill:"var(--text-secondary)"},label:{value:n==="access"?"Accès":"Minutes",angle:-90,position:"insideLeft",style:{fill:"var(--text-secondary)",fontSize:"11px"}}}),e.jsx(be.Tooltip,{contentStyle:{backgroundColor:"var(--bg-card)",border:"1px solid var(--border-color)",borderRadius:"8px",color:"var(--text-primary)"},labelStyle:{color:"var(--text-primary)",fontWeight:"bold",marginBottom:"8px"},itemStyle:{color:"var(--text-secondary)"}}),e.jsx(be.Legend,{wrapperStyle:{paddingTop:"20px"},formatter:m=>e.jsx("span",{style:{color:"var(--text-secondary)",fontSize:"12px"},children:m})}),s.tenants.map((m,o)=>e.jsx(be.Line,{type:"monotone",dataKey:m.name,stroke:u(m,o),strokeWidth:2,dot:{r:2,fill:u(m,o)},activeDot:{r:5,fill:u(m,o)}},m.name))]})})}),e.jsx("div",{className:"flex flex-wrap gap-4 justify-center border-t border-[var(--border-color)] pt-4",children:s.tenants.map((m,o)=>e.jsx(Ss,{tenant:m,index:o,mode:n,getColor:u},m.name))})]})},Ee=["#3b82f6","#8b5cf6","#22c55e","#f59e0b","#ef4444","#06b6d4","#ec4899","#10b981","#f97316","#6366f1"],As=({data:t,mode:n="access"})=>{if(!t||t.length===0)return e.jsx("div",{className:"text-center py-8 text-[var(--text-secondary)]",children:"Aucune donnée de tenant disponible"});const s=i=>n==="access"?i.accessCount:i.totalDurationMinutes,l=n==="access"?"accès":"min",d=Math.max(...t.map(i=>s(i)),1);return e.jsx("div",{className:"space-y-3",children:t.map((i,c)=>{const b=s(i),h=b/d*100;return e.jsxs("div",{className:"rounded-lg bg-[var(--bg-secondary)] p-4 hover:shadow-sm transition-shadow border-l-4",style:{borderLeftColor:Ee[c%Ee.length]},children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"text-xs text-[var(--text-tertiary)] mb-1 font-mono",children:[e.jsx("span",{className:"text-blue-500",children:i.tenantType}),e.jsx("span",{className:"mx-1",children:"›"}),e.jsx("span",{className:"text-green-500",children:i.tenantSlug})]}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("h5",{className:"font-semibold text-[var(--text-primary)]",children:i.tenantName})})]}),e.jsxs("div",{className:"text-right",children:[e.jsx("div",{className:"text-xl font-bold",style:{color:Ee[c%Ee.length]},children:b.toLocaleString()}),e.jsx("div",{className:"text-xs text-[var(--text-secondary)]",children:l})]})]}),e.jsx("div",{className:"h-2 bg-[var(--bg-primary)] rounded-full overflow-hidden mb-2",children:e.jsx("div",{className:"h-full rounded-full transition-all duration-500",style:{width:`${h}%`,backgroundColor:Ee[c%Ee.length]}})}),e.jsxs("div",{className:"flex items-center gap-4 text-xs text-[var(--text-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(r.Users,{className:"w-3 h-3"}),e.jsxs("span",{children:[i.uniqueUsers," utilisateurs uniques"]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(r.Building2,{className:"w-3 h-3"}),e.jsx("span",{children:i.tenantType})]})]})]},i.tenantId)})})},Ie=({label:t,value:n,icon:s,color:l,subtitle:d})=>{const i={blue:"text-blue-500",green:"text-green-500",purple:"text-purple-500",orange:"text-orange-500",yellow:"text-yellow-500",red:"text-red-500"};return e.jsxs("div",{className:"rounded-[var(--radius-card)] p-4 bg-[var(--bg-card)] border border-[var(--item-color-border)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--text-secondary)]",children:t}),e.jsx("div",{className:i[l],children:s})]}),e.jsx("div",{className:"text-2xl font-bold text-[var(--text-primary)]",children:typeof n=="number"?n.toLocaleString():n}),d&&e.jsx("div",{className:"text-xs text-[var(--text-tertiary)] mt-1",children:d})]})};function Ts(){const t=xe.useNavigate(),{t:n}=de.useTranslation("admin"),[s,l]=a.useState(null),[d,i]=a.useState([]),[c,b]=a.useState(!0),[h,u]=a.useState(!1),[m,o]=a.useState(null),[x,p]=a.useState(30),[S,B]=a.useState("access"),P=a.useCallback(async()=>{try{o(null);const[f,D]=await Promise.all([E.tenantAnalyticsApi.getDashboardStats(x),E.tenantAnalyticsApi.getTopTenants(5,x,S==="access"?"access":"duration")]);l(f),i(D)}catch(f){o(f instanceof Error?f.message:"Failed to load dashboard")}finally{b(!1),u(!1)}},[x,S]);a.useEffect(()=>{b(!0),P()},[P]);const T=()=>{u(!0),P()},g=f=>{if(f<60)return`${f}s`;const D=Math.floor(f/60);return D<60?`${D}m`:`${Math.floor(D/60)}h ${D%60}m`};return c?e.jsx("div",{className:"flex h-96 items-center justify-center",children:e.jsx(r.Loader2,{className:"h-8 w-8 animate-spin text-[var(--color-primary-600)]"})}):m?e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{className:"bg-[var(--error-bg)] border border-[var(--error-border)] rounded-[var(--radius-card)] p-4 flex items-center gap-3",children:[e.jsx(r.AlertTriangle,{className:"h-5 w-5 text-[var(--error-text)] flex-shrink-0"}),e.jsx("div",{className:"flex-1",children:e.jsx("p",{className:"text-[var(--error-text)] font-medium",children:m})}),e.jsx("button",{onClick:T,className:"text-[var(--error-text)] hover:opacity-80",children:e.jsx(r.RefreshCw,{className:"h-5 w-5"})})]})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:n("header.title"),href:"/administration"},{label:n("tenants.title"),href:"/administration/tenants/list"},{label:n("tenants.dashboard.title","Dashboard")}]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Building2,{className:"h-6 w-6"}),n("tenants.dashboard.title","Tableau de bord Tenants")]}),e.jsx("p",{className:"text-[var(--text-secondary)] mt-1",children:n("tenants.dashboard.subtitle","Analyse d'utilisation et statistiques des tenants")})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-1 rounded-lg border border-[var(--item-color-border)] bg-[var(--bg-secondary)] p-1",children:[e.jsx("button",{onClick:()=>B("access"),className:`px-3 py-1.5 text-sm font-medium rounded-md transition-all ${S==="access"?"bg-[var(--color-primary-600)] text-white shadow-sm":"text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"}`,children:e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(r.Activity,{className:"w-3.5 h-3.5"}),n("tenants.dashboard.access","Accès")]})}),e.jsx("button",{onClick:()=>B("duration"),className:`px-3 py-1.5 text-sm font-medium rounded-md transition-all ${S==="duration"?"bg-[var(--color-primary-600)] text-white shadow-sm":"text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"}`,children:e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(r.Clock,{className:"w-3.5 h-3.5"}),n("tenants.dashboard.duration","Durée")]})})]}),e.jsxs("select",{value:x,onChange:f=>p(Number(f.target.value)),className:"rounded-[var(--radius-input)] border border-[var(--item-color-border)] bg-[var(--bg-secondary)] px-4 py-2 text-[var(--text-primary)] focus:border-[var(--color-primary-600)] focus:outline-none",children:[e.jsxs("option",{value:7,children:["7 ",n("common.days","jours")]}),e.jsxs("option",{value:30,children:["30 ",n("common.days","jours")]}),e.jsxs("option",{value:90,children:["90 ",n("common.days","jours")]})]}),e.jsxs("button",{onClick:T,disabled:h,className:"rounded-[var(--radius-button)] border border-[var(--item-color-border)] bg-[var(--bg-secondary)] px-4 py-2 text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] flex items-center gap-2 transition-colors",children:[e.jsx(r.RefreshCw,{className:`w-4 h-4 ${h?"animate-spin":""}`}),n("common.refresh","Actualiser")]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4",children:[e.jsx(Ie,{label:n("tenants.dashboard.totalTenants","Total Tenants"),value:s?.totalTenants||0,icon:e.jsx(r.Building2,{className:"h-5 w-5"}),color:"blue"}),e.jsx(Ie,{label:n("tenants.dashboard.activeTenants","Tenants Actifs"),value:s?.activeTenants||0,icon:e.jsx(r.CheckCircle,{className:"h-5 w-5"}),color:"green"}),e.jsx(Ie,{label:n("tenants.dashboard.suspendedTenants","Suspendus"),value:s?.suspendedTenants||0,icon:e.jsx(r.PauseCircle,{className:"h-5 w-5"}),color:"orange"}),e.jsx(Ie,{label:n("tenants.dashboard.totalMembers","Total Membres"),value:s?.totalMembers||0,icon:e.jsx(r.Users,{className:"h-5 w-5"}),color:"purple"}),e.jsx(Ie,{label:n("tenants.dashboard.avgSession","Session Moy."),value:g(s?.avgSessionDuration||0),icon:e.jsx(r.Timer,{className:"h-5 w-5"}),color:"blue",subtitle:`${x} ${n("common.days","jours")}`}),e.jsx(Ie,{label:n("tenants.dashboard.growthRate","Croissance"),value:`${s?.growthRate.toFixed(1)||0}%`,icon:e.jsx(r.TrendingUp,{className:"h-5 w-5"}),color:(s?.growthRate??0)>=0?"green":"red",subtitle:n("tenants.dashboard.vsPreviousPeriod","vs période précédente")})]}),e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--item-color-border)] bg-[var(--bg-card)] p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"font-semibold flex items-center gap-2 text-[var(--text-primary)]",children:[e.jsx(r.ClipboardList,{className:"h-5 w-5 text-[var(--color-primary-600)]"}),n("tenants.dashboard.accessRequests.title","Demandes d'accès")]}),e.jsxs("button",{onClick:()=>t("/administration/access-requests"),className:"text-sm font-medium text-[var(--color-primary-600)] hover:underline flex items-center gap-1",children:[n("tenants.dashboard.accessRequests.manage","Gérer"),e.jsx("span",{"aria-hidden":"true",children:"→"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg p-4 bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--warning-text)]",children:n("tenants.dashboard.accessRequests.pending","En attente")}),e.jsx(r.Clock,{className:"h-4 w-4 text-[var(--warning-text)]"})]}),e.jsx("div",{className:"text-2xl font-bold text-[var(--warning-text)]",children:s?.pendingAccessRequests||0})]}),e.jsxs("div",{className:"rounded-lg p-4 bg-[var(--success-bg)] border border-[var(--success-border)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--success-text)]",children:n("tenants.dashboard.accessRequests.approved","Approuvées")}),e.jsx(r.ShieldCheck,{className:"h-4 w-4 text-[var(--success-text)]"})]}),e.jsx("div",{className:"text-2xl font-bold text-[var(--success-text)]",children:s?.approvedAccessRequests||0})]}),e.jsxs("div",{className:"rounded-lg p-4 bg-[var(--error-bg)] border border-[var(--error-border)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--error-text)]",children:n("tenants.dashboard.accessRequests.denied","Refusées")}),e.jsx(r.ShieldX,{className:"h-4 w-4 text-[var(--error-text)]"})]}),e.jsx("div",{className:"text-2xl font-bold text-[var(--error-text)]",children:s?.deniedAccessRequests||0})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--item-color-border)] bg-[var(--bg-card)] p-4",children:[e.jsxs("h3",{className:"font-semibold mb-4 flex items-center gap-2 text-[var(--text-primary)]",children:[e.jsx(r.Building2,{className:"h-5 w-5 text-[var(--color-primary-600)]"}),S==="access"?n("tenants.dashboard.activity","Activité"):n("tenants.dashboard.timeSpent","Temps passé")," ",n("tenants.dashboard.byTenant","par Tenant")]}),d.length>0?e.jsx(Cs,{data:d,mode:S}):e.jsx("div",{className:"text-center py-8 text-[var(--text-secondary)]",children:n("tenants.dashboard.noData","Aucune donnée disponible")})]}),e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--item-color-border)] bg-[var(--bg-card)] p-4",children:[e.jsxs("h3",{className:"font-semibold mb-4 flex items-center gap-2 text-[var(--text-primary)]",children:[e.jsx(r.Activity,{className:"h-5 w-5 text-green-600"}),n("tenants.dashboard.topTenantsList","Classement des Tenants")]}),s?.topTenants&&s.topTenants.length>0?e.jsx("div",{className:"space-y-3",children:s.topTenants.slice(0,5).map((f,D)=>e.jsxs("button",{type:"button",className:"w-full flex items-center gap-3 p-3 rounded-lg bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] cursor-pointer transition-colors text-left",onClick:()=>t(`/administration/tenants/${f.tenantId}`),children:[e.jsx("div",{className:"w-8 h-8 rounded-full flex items-center justify-center text-white font-bold text-sm",style:{backgroundColor:["#3b82f6","#22c55e","#f59e0b","#ef4444","#8b5cf6"][D%5]},children:D+1}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)] truncate",children:f.tenantName}),e.jsxs("p",{className:"text-xs text-[var(--text-tertiary)]",children:[f.tenantType," • ",f.uniqueUsers," ",n("tenants.dashboard.users","utilisateurs")]})]}),e.jsxs("div",{className:"text-right",children:[e.jsx("p",{className:"font-semibold text-[var(--text-primary)]",children:S==="access"?f.accessCount:`${f.totalDurationMinutes}m`}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:S==="access"?n("tenants.dashboard.accesses","accès"):n("tenants.dashboard.totalTime","temps total")})]})]},f.tenantId))}):e.jsx("div",{className:"text-center py-8 text-[var(--text-secondary)]",children:n("tenants.dashboard.noData","Aucune donnée disponible")})]})]}),e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--item-color-border)] bg-[var(--bg-card)] p-4",children:[e.jsxs("h3",{className:"font-semibold mb-4 flex items-center gap-2 text-[var(--text-primary)]",children:[e.jsx(r.TrendingUp,{className:"h-5 w-5"}),n("tenants.dashboard.trendTitle",{defaultValue:`Tendance ${S==="access"?"d'utilisation":"du temps passé"} par Tenant`})," (",x," ",n("common.days","jours"),")"]}),e.jsx(ks,{period:x,mode:S})]}),e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--item-color-border)] bg-[var(--bg-card)] p-4",children:[e.jsxs("h3",{className:"font-semibold mb-4 flex items-center gap-2 text-[var(--text-primary)]",children:[e.jsx(r.Building2,{className:"h-5 w-5 text-purple-600"}),n("tenants.dashboard.popularTenants",{defaultValue:`Tenants les plus ${S==="access"?"actifs":"utilisés"}`}),e.jsxs("span",{className:"text-xs font-normal text-[var(--text-secondary)] ml-2",children:["(",n("tenants.dashboard.byRanking","Type > Slug"),")"]})]}),d.length>0?e.jsx(As,{data:d,mode:S}):e.jsx("div",{className:"text-center py-8 text-[var(--text-secondary)]",children:n("tenants.dashboard.noData","Aucune donnée disponible")})]}),e.jsx("div",{className:"rounded-[var(--radius-card)] border border-[var(--item-color-border)] bg-gradient-to-r from-[var(--color-primary-600)]/10 to-[var(--color-accent-500)]/10 p-6",children:e.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold text-[var(--text-primary)]",children:n("tenants.dashboard.exploreAll","Explorer tous les Tenants")}),e.jsx("p",{className:"mt-1 text-sm text-[var(--text-secondary)]",children:n("tenants.dashboard.exploreDescription","Voir la liste complète des tenants et gérer leurs paramètres")})]}),e.jsx("button",{onClick:()=>t("/administration/tenants/list"),className:"whitespace-nowrap rounded-[var(--radius-button)] bg-[var(--color-primary-600)] px-4 py-2 font-medium text-white transition-all hover:shadow-md",children:n("tenants.dashboard.viewTenants","Voir les Tenants")})]})})]})}const Ls=(t,n)=>{if(t.id!==n)return t;const s=!t.isAssigned;return{...t,isAssigned:s,sections:t.sections.map(l=>({...l,isAssigned:s}))}},Es=(t,n,s)=>{if(t.id!==n)return t;const l=t.sections.map(i=>i.id===s?{...i,isAssigned:!i.isAssigned}:i),d=l.some(i=>i.isAssigned);return{...t,isAssigned:d,sections:l}},Is=t=>({...t,isAssigned:!0,sections:t.sections.map(n=>({...n,isAssigned:!0}))}),Rs=t=>({...t,isAssigned:!1,sections:t.sections.map(n=>({...n,isAssigned:!1}))});function Ms(t){return{applicationId:t.applicationId,label:t.label,code:t.code,description:t.description,icon:t.icon,accessLevel:t.accessLevel,assignedAt:t.assignedAt,assignedBy:t.assignedBy,source:"Direct",inheritedModuleCount:0,directModuleCount:t.assignedModuleCount,revokedModuleCount:0,inheritedSectionCount:0,directSectionCount:t.assignedSectionCount,revokedSectionCount:0,totalModuleCount:t.totalModuleCount,totalSectionCount:t.totalSectionCount}}function Bs(t){const[n,s]=a.useState(null),[l,d]=a.useState(!1),[i,c]=a.useState(!1),[b,h]=a.useState([]),[u,m]=a.useState(!1),[o,x]=a.useState([]),[p,S]=a.useState(!1),[B,P]=a.useState(""),[T,g]=a.useState(null),[f,D]=a.useState("FullAccess"),[y,H]=a.useState("full"),[R,L]=a.useState([]),[k,Z]=a.useState(new Set),[q,U]=a.useState(!1),[z,ee]=a.useState(!1),[ae,$]=a.useState(null),X=a.useCallback(async()=>{if(t){d(!0);try{const G=await E.adminApi.templates.getApplications(t),_=Array.isArray(G)?G.map(Ms):[];s(_)}catch(G){console.error("Failed to load template applications:",G),s([])}finally{d(!1)}}},[t]),J=a.useCallback(async()=>{if(t){c(!0),x([]),m(!0),g(null);try{const G=await E.adminApi.templates.getAvailableApplications(t);h(G.filter(_=>!_.isAssigned))}catch(G){console.error("Failed to load available applications:",G);const _=G instanceof Error&&G.name==="ForbiddenError";g(_?"forbidden":"generic")}finally{m(!1)}}},[t]),F=a.useCallback(()=>{c(!1),x([]),P(""),D("FullAccess"),H("full"),L([]),Z(new Set)},[]),A=a.useCallback(async()=>{if(!(!t||o.length===0)){S(!0);try{const G={applicationIds:o,accessLevel:f,accessMode:y,moduleIds:y==="custom"?R.filter(_=>_.isAssigned).map(_=>_.id):void 0,sectionIds:y==="custom"?R.flatMap(_=>_.sections.filter(se=>se.isAssigned).map(se=>se.id)):void 0};await E.adminApi.templates.bulkAssignApplications(t,G),await X(),F()}catch(G){console.error("Failed to assign applications:",G)}finally{S(!1)}}},[t,o,f,y,R,X,F]),j=a.useCallback(async G=>{if(t)try{await E.adminApi.templates.removeApplication(t,G),await X()}catch(_){console.error("Failed to remove application:",_)}},[t,X]),M=a.useCallback(async(G,_)=>{if(t)try{await E.adminApi.templates.updateApplicationAccessLevel(t,G,_),await X()}catch(se){console.error("Failed to update access level:",se)}},[t,X]),O=a.useCallback(G=>{$(G),ee(!0)},[]),w=a.useCallback(()=>{ee(!1),$(null)},[]),v=a.useMemo(()=>{if(!B)return b;const G=B.toLowerCase();return b.filter(_=>_.label.toLowerCase().includes(G)||_.code.toLowerCase().includes(G))},[b,B]),N=a.useCallback(G=>{x(_=>_.includes(G)?_.filter(se=>se!==G):[..._,G])},[]),ie=a.useCallback(()=>{const G=v.map(_=>_.id);x(G)},[v]),le=a.useCallback(()=>{x([])},[]),te=a.useCallback(async G=>{U(!0);try{const _=await E.adminApi.applications.getModules(G),se=[];for(const V of _){const re=(await E.adminApi.applications.getModuleSections(G,V.id)).map(ve=>({id:ve.id,label:ve.label,code:ve.code,icon:ve.icon,isAssigned:!0}));se.push({id:V.id,label:V.label,code:V.code,icon:V.icon,isAssigned:!0,sections:re})}L(se)}catch(_){console.error("Failed to load modules:",_)}finally{U(!1)}},[]),Q=a.useCallback(G=>{Z(_=>{const se=new Set(_);return se.has(G)?se.delete(G):se.add(G),se})},[]),pe=a.useCallback(G=>{L(_=>_.map(se=>Ls(se,G)))},[]),me=a.useCallback((G,_)=>{L(se=>se.map(V=>Es(V,G,_)))},[]),K=a.useCallback(G=>{if(G.sections.length===0)return G.isAssigned?"checked":"unchecked";const _=G.sections.filter(se=>se.isAssigned).length;return _===0?"unchecked":_===G.sections.length?"checked":"indeterminate"},[]),ce=a.useCallback(()=>{const G=R.length,_=R.filter(Y=>Y.isAssigned||Y.sections.some(re=>re.isAssigned)).length,se=R.reduce((Y,re)=>Y+re.sections.length,0),V=R.reduce((Y,re)=>Y+re.sections.filter(ve=>ve.isAssigned).length,0);return{totalModules:G,assignedModules:_,totalSections:se,assignedSections:V}},[R]),ge=a.useCallback(()=>{L(G=>G.map(_=>Is(_)))},[]),W=a.useCallback(()=>{L(G=>G.map(_=>Rs(_)))},[]);return{applications:n,setApplications:s,loadingApps:l,setLoadingApps:d,addingApplication:i,setAddingApplication:c,availableApps:b,setAvailableApps:h,loadingAvailableApps:u,setLoadingAvailableApps:m,selectedAppIds:o,setSelectedAppIds:x,assigningApps:p,setAssigningApps:S,appSearchTerm:B,setAppSearchTerm:P,selectedAccessLevel:f,setSelectedAccessLevel:D,bulkAccessMode:y,setBulkAccessMode:H,bulkModules:R,setBulkModules:L,bulkExpandedModules:k,setBulkExpandedModules:Z,loadingBulkModules:q,setLoadingBulkModules:U,showCustomizeDrawer:z,setShowCustomizeDrawer:ee,customizingApp:ae,setCustomizingApp:$,loadApplications:X,availableAppsError:T,loadAvailableApps:J,handleAssignApplications:A,handleRemoveApplication:j,handleUpdateAccessLevel:M,openCustomizeDrawer:O,closeCustomizeDrawer:w,filteredAvailableApps:v,handleAppToggle:N,selectAllFilteredApps:ie,clearAppSelection:le,loadBulkModulesForApp:te,toggleBulkModuleExpand:Q,toggleBulkModule:pe,toggleBulkSection:me,getBulkModuleCheckState:K,getBulkStats:ce,selectAllBulkModules:ge,clearBulkModules:W,handleSaveOverrides:async(G,_)=>{},handleResetOverrides:async G=>{}}}const ot=["info","applications","tenants","ai"];function Fs(){const{t}=de.useTranslation("admin"),{id:n}=xe.useParams(),s=xe.useNavigate(),{activeTab:l,setActiveTab:d}=tt.useTabNavigation("info",ot),[i,c]=a.useState(null),[b,h]=a.useState(!0),[u,m]=a.useState(null),o=Bs(n),x=a.useCallback(async()=>{if(n)try{h(!0);const B=await E.adminApi.templates.getById(n);c(B),m(null)}catch{m(t("templates.errors.loadFailed"))}finally{h(!1)}},[n,t]);if(a.useEffect(()=>{if(!n){s("/administration/tenants/template");return}x()},[n,x,s]),a.useEffect(()=>{i&&n&&o.loadApplications()},[i,n]),b)return e.jsx("div",{className:"p-6 flex items-center justify-center min-h-[50vh]",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--text-secondary)]"})});if(u||!i)return e.jsxs("div",{className:"p-6 space-y-4",children:[e.jsxs("button",{onClick:()=>s("/administration/tenants/template"),className:"flex items-center gap-2 text-sm text-[var(--text-secondary)] hover:text-[var(--text-primary)]",children:[e.jsx(r.ArrowLeft,{className:"w-4 h-4"}),t("templates.title")]}),e.jsxs("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",children:[e.jsx(r.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("span",{className:"text-[var(--error-text)]",children:u||t("templates.notFound")})]}),e.jsx("button",{onClick:()=>x(),className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:t("common:errors.retry")})]})]});const p=i.targetTenantType==="Personal"?r.User:r.Building2,S=i.targetTenantType==="Personal"?t("templates.targetPersonal"):t("templates.targetBusiness");return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("tenants.title"),href:"/administration/tenants/list"},{label:t("templates.title"),href:"/administration/tenants/template"},{label:i.name}]}),e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>s("/administration/tenants/template"),"aria-label":t("templates.title"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)]",children:e.jsx(r.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:i.name}),i.isDefault&&e.jsxs("span",{className:"flex items-center gap-1 px-2 py-0.5 rounded-[var(--radius-badge)] text-xs bg-[var(--accent-bg)] text-[var(--accent-text)]",children:[e.jsx(r.Star,{className:"w-3 h-3"}),t("templates.default")]})]}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx("span",{className:"text-sm text-[var(--text-tertiary)] font-mono",children:i.code}),e.jsx("span",{className:"text-[var(--text-tertiary)]",children:"-"}),e.jsxs("span",{className:"flex items-center gap-1 text-sm text-[var(--text-secondary)]",children:[e.jsx(p,{className:"w-3.5 h-3.5"}),S]})]})]})]}),e.jsx("button",{onClick:x,"aria-label":t("common:refresh"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)]",children:e.jsx(r.RefreshCw,{className:"w-4 h-4"})})]}),e.jsx("div",{className:"border-b border-[var(--border-color)]",children:e.jsx("div",{className:"flex gap-1 -mb-px",children:ot.map(B=>e.jsx("button",{onClick:()=>d(B),className:`px-4 py-2 text-sm border-b-2 transition-colors ${l===B?"border-[var(--primary-color)] text-[var(--primary-color)] font-medium":"border-transparent text-[var(--text-secondary)] hover:text-[var(--text-primary)]"}`,children:t(`templates.tabs.${B}`)},B))})}),l==="info"&&e.jsx(Ps,{template:i,t}),l==="applications"&&e.jsx(ht,{tenantId:n,tenantName:i.name,mode:"template",applications:o.applications,loadingApps:o.loadingApps,actionLoading:null,onRefresh:o.loadApplications,onUpdateAccessLevel:o.handleUpdateAccessLevel,onRemoveApplication:o.handleRemoveApplication,addingApplication:o.addingApplication,availableAppsError:o.availableAppsError,filteredAvailableApps:o.filteredAvailableApps,loadingAvailableApps:o.loadingAvailableApps,selectedAppIds:o.selectedAppIds,assigningApps:o.assigningApps,appSearchTerm:o.appSearchTerm,selectedAccessLevel:o.selectedAccessLevel,bulkAccessMode:o.bulkAccessMode,bulkModules:o.bulkModules,bulkExpandedModules:o.bulkExpandedModules,loadingBulkModules:o.loadingBulkModules,showCustomizeDrawer:o.showCustomizeDrawer,customizingApp:o.customizingApp,onOpenAddApplication:o.loadAvailableApps,onCloseAddApplication:()=>{o.setAddingApplication(!1),o.setSelectedAppIds([]),o.setAppSearchTerm(""),o.setSelectedAccessLevel("FullAccess"),o.setBulkAccessMode("full"),o.setBulkModules([]),o.setBulkExpandedModules(new Set)},onAssignApplications:o.handleAssignApplications,onAppToggle:o.handleAppToggle,onSelectAllApps:o.selectAllFilteredApps,onClearAppSelection:o.clearAppSelection,onOpenCustomizeDrawer:o.openCustomizeDrawer,onCloseCustomizeDrawer:o.closeCustomizeDrawer,onLoadBulkModules:o.loadBulkModulesForApp,onToggleBulkModuleExpand:o.toggleBulkModuleExpand,onToggleBulkModule:o.toggleBulkModule,onToggleBulkSection:o.toggleBulkSection,onGetBulkModuleCheckState:o.getBulkModuleCheckState,onGetBulkStats:o.getBulkStats,onSelectAllBulkModules:o.selectAllBulkModules,onClearBulkModules:o.clearBulkModules,setAppSearchTerm:o.setAppSearchTerm,setSelectedAccessLevel:o.setSelectedAccessLevel,setBulkAccessMode:o.setBulkAccessMode}),l==="tenants"&&e.jsx(Ds,{templateId:n,t}),l==="ai"&&e.jsx($s,{templateId:n,t})]})}function Ps({template:t,t:n}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"bg-[var(--bg-card)] border border-[var(--border-color)] rounded-[var(--radius-card)] p-5",children:[e.jsx("h3",{className:"font-semibold text-[var(--text-primary)] mb-4",children:n("templates.info.general")}),e.jsxs("dl",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("dt",{className:"text-sm text-[var(--text-secondary)]",children:n("templates.info.code")}),e.jsx("dd",{className:"font-mono text-[var(--text-primary)]",children:t.code})]}),e.jsxs("div",{children:[e.jsx("dt",{className:"text-sm text-[var(--text-secondary)]",children:n("templates.info.name")}),e.jsx("dd",{className:"text-[var(--text-primary)]",children:t.name})]}),e.jsxs("div",{className:"md:col-span-2",children:[e.jsx("dt",{className:"text-sm text-[var(--text-secondary)]",children:n("templates.info.description")}),e.jsx("dd",{className:"text-[var(--text-primary)]",children:t.description||"-"})]})]})]}),e.jsxs("div",{className:"bg-[var(--bg-card)] border border-[var(--border-color)] rounded-[var(--radius-card)] p-5",children:[e.jsx("h3",{className:"font-semibold text-[var(--text-primary)] mb-4",children:n("templates.info.stats")}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(We,{icon:e.jsx(r.AppWindow,{className:"w-5 h-5"}),label:n("templates.tabs.applications"),value:t.applications.length}),e.jsx(We,{icon:e.jsx(r.LayoutGrid,{className:"w-5 h-5"}),label:n("templates.tabs.tenants"),value:t.modules.length}),e.jsx(We,{icon:e.jsx(r.Users,{className:"w-5 h-5"}),label:n("templates.tabs.tenants"),value:0})]})]})]})}const We=a.memo(function({icon:n,label:s,value:l}){return e.jsxs("div",{className:"flex items-center gap-3 p-3 bg-[var(--bg-secondary)] rounded-[var(--radius-card)]",children:[e.jsx("span",{className:"text-[var(--text-secondary)]",children:n}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-[var(--text-primary)]",children:l}),e.jsx("p",{className:"text-xs text-[var(--text-secondary)]",children:s})]})]})});function Ds({templateId:t,t:n}){const[s,l]=a.useState([]),[d,i]=a.useState(!0),[c,b]=a.useState(null),h=a.useCallback(async()=>{try{i(!0),b(null);const u=await E.adminApi.templates.getTenants(t);l(u)}catch{b(n("templates.errors.loadFailed"))}finally{i(!1)}},[t,n]);return a.useEffect(()=>{h()},[h]),d?e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--text-secondary)]"})}):c?e.jsxs("div",{className:"p-4 bg-[var(--error-bg)] border border-[var(--error-border)] rounded-[var(--radius-card)]",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx(r.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("span",{className:"ml-2 text-[var(--error-text)]",children:c})]}),e.jsx("button",{onClick:()=>h(),className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:n("common:errors.retry")})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("h3",{className:"font-semibold text-[var(--text-primary)]",children:[n("templates.tenants.title")," (",s.length,")"]}),s.length===0?e.jsxs("div",{className:"p-8 text-center text-[var(--text-secondary)] bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx(r.Users,{className:"w-8 h-8 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:n("templates.tenants.noTenants")})]}):e.jsx("div",{className:"bg-[var(--bg-card)] border border-[var(--border-color)] rounded-[var(--radius-card)] divide-y divide-[var(--border-color)]",children:s.map(u=>e.jsxs(xe.Link,{to:`/administration/tenants/${u.id}`,className:"flex items-center justify-between p-3 hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:u.name}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] font-mono",children:u.slug})]}),e.jsx("span",{className:"text-xs text-[var(--text-secondary)] px-2 py-0.5 bg-[var(--bg-secondary)] rounded-[var(--radius-badge)]",children:n("templates.tenants.explicit")})]},u.id))})]})}function $s({templateId:t,t:n}){const[s,l]=a.useState([]),[d,i]=a.useState(!0),[c,b]=a.useState(null),h=a.useCallback(async()=>{try{i(!0),b(null);const m=await E.adminApi.templates.getAiInstances(t);l(m)}catch{b(n("templates.errors.loadFailed"))}finally{i(!1)}},[t,n]),u=a.useCallback(async m=>{if(window.confirm(n("templates.ai.removeConfirm")))try{await E.adminApi.templates.removeAiInstance(t,m),await h()}catch{b(n("templates.errors.loadFailed"))}},[t,n,h]);return a.useEffect(()=>{h()},[h]),d?e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--text-secondary)]"})}):c?e.jsxs("div",{className:"p-4 bg-[var(--error-bg)] border border-[var(--error-border)] rounded-[var(--radius-card)]",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx(r.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("span",{className:"ml-2 text-[var(--error-text)]",children:c})]}),e.jsx("button",{onClick:()=>h(),className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:n("common:errors.retry")})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("h3",{className:"font-semibold text-[var(--text-primary)]",children:[n("templates.ai.title")," (",s.length,")"]}),s.length===0?e.jsxs("div",{className:"p-8 text-center text-[var(--text-secondary)] bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx(r.Brain,{className:"w-8 h-8 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:n("templates.ai.noInstances")})]}):e.jsx("div",{className:"bg-[var(--bg-card)] border border-[var(--border-color)] rounded-[var(--radius-card)] divide-y divide-[var(--border-color)]",children:s.map(m=>e.jsxs("div",{className:"flex items-center justify-between p-3 hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:m.instanceName}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] font-mono",children:m.instanceCode})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:`text-xs px-2 py-0.5 rounded-[var(--radius-badge)] ${m.isActive?"bg-[var(--success-bg)] text-[var(--success-text)]":"bg-[var(--bg-secondary)] text-[var(--text-secondary)]"}`,children:m.isActive?n("templates.ai.active"):n("templates.ai.inactive")}),e.jsx("button",{onClick:()=>u(m.instanceId),className:"text-xs text-[var(--error-text)] hover:opacity-80 underline",children:n("templates.ai.remove")})]})]},m.id))})]})}function Us(){const{t}=de.useTranslation("admin"),n=xe.useNavigate(),[s,l]=a.useState([]),[d,i]=a.useState(!0),[c,b]=a.useState(null),h=a.useCallback(async()=>{try{i(!0);const x=await E.adminApi.templates.getAll();l(x),b(null)}catch{b(t("tenants.template.errors.loadFailed"))}finally{i(!1)}},[t]);a.useEffect(()=>{h()},[h]);const u=x=>{n(`/administration/tenants/template/${x}`)},m=s.filter(x=>x.isDefault),o=s.filter(x=>!x.isDefault);return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("tenants.title"),href:"/administration/tenants/list"},{label:t("tenants.template.title")}]}),e.jsx(E.PageHeader,{title:t("tenants.template.title"),subtitle:t("tenants.template.subtitle"),icon:e.jsx(r.Settings2,{className:"w-6 h-6"}),actions:e.jsxs("button",{onClick:()=>n("/administration/tenants/template/create"),className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] transition-colors",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),t("tenants.template.createTemplate")]})}),c&&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:c})]})}),d&&e.jsx("div",{className:"flex justify-center py-12",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--text-secondary)]"})}),!d&&s.length===0&&e.jsx("div",{className:"p-6 text-center text-[var(--text-secondary)] bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)]",children:t("tenants.template.noTemplates")}),!d&&s.length>0&&e.jsxs("div",{className:"space-y-8",children:[m.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)] mb-4",children:t("tenants.template.systemTemplates")}),e.jsx("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:m.map(x=>e.jsx(Os,{template:x,onClick:()=>u(x.id),t},x.id))})]}),o.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)] mb-4",children:t("tenants.template.customTemplates")}),e.jsx("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:o.map(x=>e.jsx(Gs,{template:x,onClick:()=>u(x.id),t},x.id))})]})]})]})}function Os({template:t,onClick:n,t:s}){const l=t.targetTenantType==="Personal"?r.User:r.Building;return e.jsx("button",{type:"button",onClick:n,className:"p-6 border border-[var(--border-color)] rounded-[var(--radius-card)] bg-[var(--bg-card)] hover:bg-[var(--bg-hover)] hover:border-[var(--primary-color)] cursor-pointer transition-all duration-200 shadow-sm hover:shadow-md text-left w-full",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2.5 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:e.jsx(l,{className:"w-5 h-5 text-[var(--primary-color)]"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:t.targetTenantType==="Personal"?s("tenants.template.personalTitle"):s("tenants.template.businessTitle")}),e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] font-mono",children:t.code})]})]}),e.jsxs("span",{className:"flex items-center gap-1 px-2.5 py-1 rounded-[var(--radius-badge)] text-xs bg-[var(--accent-bg)] text-[var(--accent-text)] flex-shrink-0",children:[e.jsx(r.Star,{className:"w-3 h-3"}),s("tenants.template.default")]})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t.targetTenantType==="Personal"?s("tenants.template.personalDescription"):s("tenants.template.businessDescription")}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:`px-2 py-0.5 rounded-[var(--radius-badge)] text-xs ${t.isActive?"bg-[var(--success-bg)] text-[var(--success-text)]":"bg-[var(--bg-secondary)] text-[var(--text-secondary)]"}`,children:t.isActive?s("templates.active"):s("templates.inactive")})}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 pt-2",children:[e.jsxs("div",{className:"p-3 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(r.Boxes,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("span",{className:"text-xs text-[var(--text-tertiary)]",children:s("tenants.template.applications")})]}),e.jsx("div",{className:"text-lg font-bold text-[var(--text-primary)]",children:t.applicationCount})]}),e.jsxs("div",{className:"p-3 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(r.Users,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("span",{className:"text-xs text-[var(--text-tertiary)]",children:s("tenants.template.tenants")})]}),e.jsx("div",{className:"text-lg font-bold text-[var(--text-primary)]",children:t.tenantCount})]})]}),e.jsxs("span",{className:"w-full mt-2 py-2 px-3 rounded-[var(--radius-button)] bg-[var(--primary-color)] text-white text-sm font-medium flex items-center justify-center gap-2 hover:opacity-90 transition-opacity",children:[s("tenants.template.configure"),e.jsx(r.ArrowRight,{className:"w-3.5 h-3.5"})]})]})})}function Gs({template:t,onClick:n,t:s}){const l=t.targetTenantType==="Personal"?r.User:r.Building;return e.jsx("button",{type:"button",onClick:n,className:"p-6 border border-[var(--border-color)] rounded-[var(--radius-card)] bg-[var(--bg-card)] hover:bg-[var(--bg-hover)] hover:border-[var(--primary-color)] cursor-pointer transition-all duration-200 shadow-sm hover:shadow-md text-left w-full",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2.5 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:e.jsx(l,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:t.name}),e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] font-mono",children:t.code})]})]}),e.jsx("span",{className:`px-2.5 py-1 rounded-[var(--radius-badge)] text-xs flex-shrink-0 ${t.isActive?"bg-[var(--success-bg)] text-[var(--success-text)]":"bg-[var(--bg-secondary)] text-[var(--text-secondary)]"}`,children:t.isActive?s("templates.active"):s("templates.inactive")})]}),t.description&&e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t.description}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"px-2 py-0.5 rounded-[var(--radius-badge)] text-xs bg-[var(--info-bg)] text-[var(--info-text)]",children:t.targetTenantType==="Personal"?s("tenants.type.personal"):s("tenants.type.business")})}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 pt-2",children:[e.jsxs("div",{className:"p-3 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(r.Boxes,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("span",{className:"text-xs text-[var(--text-tertiary)]",children:s("tenants.template.applications")})]}),e.jsx("div",{className:"text-lg font-bold text-[var(--text-primary)]",children:t.applicationCount})]}),e.jsxs("div",{className:"p-3 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(r.Users,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("span",{className:"text-xs text-[var(--text-tertiary)]",children:s("tenants.template.tenants")})]}),e.jsx("div",{className:"text-lg font-bold text-[var(--text-primary)]",children:t.tenantCount})]})]}),e.jsxs("span",{className:"w-full mt-2 py-2 px-3 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] text-sm font-medium flex items-center justify-center gap-2 hover:bg-[var(--bg-hover)] transition-colors border border-[var(--border-color)]",children:[s("tenants.template.configure"),e.jsx(r.ArrowRight,{className:"w-3.5 h-3.5"})]})]})})}function Hs(){const{t}=de.useTranslation("admin"),n=xe.useNavigate(),[s,l]=a.useState(""),[d,i]=a.useState(""),[c,b]=a.useState(""),[h,u]=a.useState("Business"),[m,o]=a.useState(!1),[x,p]=a.useState(null),S=async B=>{if(B.preventDefault(),!(!s.trim()||!d.trim())){o(!0),p(null);try{const P=await E.adminApi.templates.create({code:s.trim(),name:d.trim(),description:c.trim()||void 0,targetTenantType:h});n(`/administration/tenants/template/${P.id}`)}catch(P){console.error("Failed to create template:",P);const T=P;T.response?.status===409?p(T.response.data?.message||t("tenants.template.errors.createConflict")):p(t("tenants.template.errors.createFailed"))}finally{o(!1)}}};return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("tenants.title"),href:"/administration/tenants/list"},{label:t("tenants.template.title"),href:"/administration/tenants/template"},{label:t("tenants.template.createTitle")}]}),e.jsx(E.PageHeader,{title:t("tenants.template.createTitle"),subtitle:t("tenants.template.createSubtitle"),icon:e.jsx(r.Settings2,{className:"w-6 h-6"})}),x&&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:x})]})}),e.jsxs("form",{onSubmit:S,className:"max-w-2xl space-y-6",children:[e.jsxs("div",{className:"p-6 rounded-[var(--radius-card)] bg-[var(--bg-card)] border border-[var(--border-color)] space-y-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:[t("tenants.template.code")," *"]}),e.jsx("input",{type:"text",value:s,onChange:B=>l(B.target.value),placeholder:"e.g. custom-b2b-premium",className:"w-full 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)]",required:!0})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:[t("tenants.template.name")," *"]}),e.jsx("input",{type:"text",value:d,onChange:B=>i(B.target.value),placeholder:t("tenants.template.namePlaceholder"),className:"w-full 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)]",required:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:t("common:description")}),e.jsx("textarea",{value:c,onChange:B=>b(B.target.value),rows:3,className:"w-full 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)] resize-none"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:[t("tenants.template.targetType")," *"]}),e.jsxs("select",{value:h,onChange:B=>u(B.target.value),className:"w-full 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:"Business",children:t("tenants.type.business")}),e.jsx("option",{value:"Personal",children:t("tenants.type.personal")})]})]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{type:"button",onClick:()=>n("/administration/tenants/template"),className:"px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:t("common:cancel")}),e.jsxs("button",{type:"submit",disabled:!s.trim()||!d.trim()||m,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:[m?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Check,{className:"w-4 h-4"}),t("common:create")]})]})]})]})}function qs(){return e.jsx(_e,{lockedType:"Business"})}function zs(){return e.jsx(_e,{lockedType:"Personal"})}function Vs(){return e.jsx(_e,{excludeTypes:["Business","Personal"]})}const _s=["all","Pending","Approved","Denied"];function Ks(){const{t}=de.useTranslation("admin"),[n,s]=a.useState([]),[l,d]=a.useState(!0),[i,c]=a.useState("all"),b=a.useCallback(async()=>{d(!0);try{const u=i==="all"?void 0:i,m=await kt.accessRequestsApi.getAllRequests(u);s(Array.isArray(m)?m:[])}catch{s([])}finally{d(!1)}},[i]);a.useEffect(()=>{b()},[b]);const h={pending:n.filter(u=>u.status==="Pending").length,approved:n.filter(u=>u.status==="Approved").length,denied:n.filter(u=>u.status==="Denied").length};return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("tenants.title"),href:"/administration/tenants/list"},{label:t("accessRequests.pageTitle")}]}),e.jsx(E.PageHeader,{title:t("accessRequests.pageTitle"),icon:e.jsx(r.ShieldCheck,{className:"w-6 h-6"})}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-[var(--radius-card)] p-4 bg-[var(--bg-card)] border border-[var(--warning-border)]",children:[e.jsx("div",{className:"text-2xl font-bold text-[var(--warning-text)]",children:h.pending}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)]",children:t("accessRequests.stats.pending")})]}),e.jsxs("div",{className:"rounded-[var(--radius-card)] p-4 bg-[var(--bg-card)] border border-[var(--success-border)]",children:[e.jsx("div",{className:"text-2xl font-bold text-[var(--success-text)]",children:h.approved}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)]",children:t("accessRequests.stats.approved")})]}),e.jsxs("div",{className:"rounded-[var(--radius-card)] p-4 bg-[var(--bg-card)] border border-[var(--error-border)]",children:[e.jsx("div",{className:"text-2xl font-bold text-[var(--error-text)]",children:h.denied}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)]",children:t("accessRequests.stats.denied")})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(r.Filter,{className:"w-4 h-4 text-[var(--text-secondary)]"}),e.jsx("div",{className:"flex gap-1",children:_s.map(u=>e.jsx("button",{onClick:()=>c(u),className:`px-3 py-1.5 rounded-[var(--radius-button)] text-sm font-medium transition-colors ${i===u?"bg-[var(--color-accent-500)] text-white":"bg-[var(--bg-secondary)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"}`,children:t(u==="all"?"accessRequests.filter.all":`accessRequests.status.${u.toLowerCase()}`)},u))})]}),l?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx(Qe.AccessRequestsListTab,{requests:n,loading:!1,onReload:b,showTenantColumn:!0})]})}const ke={READ:"administration.entra.read",UPDATE:"administration.entra.update",SYNC:"administration.entra.execute"},Xe={STARTED:"EntraSyncStarted",COMPLETED:"EntraSyncCompleted",FAILED:"EntraSyncFailed"},Ws=[{code:"User.Read.All",descriptionKey:"userReadAll"},{code:"Group.Read.All",descriptionKey:"groupReadAll"},{code:"GroupMember.Read.All",descriptionKey:"groupMemberReadAll"}],Xs=[{id:"member",labelKey:"userTypes.member",descriptionKey:"userTypes.memberDescription",supported:!0},{id:"guest",labelKey:"userTypes.guest",descriptionKey:"userTypes.guestDescription",supported:!0}],ct=t=>{const n=Date.now(),s=t.getTime(),l=Math.floor((n-s)/1e3),d=Math.floor(l/60),i=l%60;return`${d.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`},Ys=(t,n,s)=>{t.type===Xe.STARTED?n({sessionId:t.relatedEntityId||"",startedAt:new Date(t.createdAt)}):(t.type===Xe.COMPLETED||t.type===Xe.FAILED)&&(n(null),s())};function Ne({icon:t,title:n,description:s,action:l,children:d,className:i=""}){return e.jsxs("div",{className:`rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-card)] shadow-sm overflow-hidden ${i}`,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:n}),s&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:s})]})]}),l]})}),e.jsx("div",{className:"p-6",children:d})]})}function Ye({checked:t,onChange:n,label:s,description:l,disabled:d}){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:s}),l&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:l})]}),e.jsx("button",{type:"button",role:"switch","aria-checked":t,onClick:n,disabled:d,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)] disabled:opacity-50 disabled:cursor-not-allowed ${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-white shadow-md transition-transform ${t?"translate-x-6":"translate-x-1"}`})})]})}const Zs=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,Qs=({config:t,loading:n,canEdit:s,onRefresh:l,onEdit:d,t:i})=>e.jsx(Ne,{icon:r.Key,title:i("admin:tenants.entra.configuration.title"),description:i("admin:tenants.entra.configuration.description"),action:e.jsxs("div",{className:"flex flex-col sm:flex-row items-stretch sm:items-center gap-2",children:[s&&e.jsxs("button",{onClick:d,className:"inline-flex items-center justify-center gap-2 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",children:[e.jsx(r.Settings,{className:"w-4 h-4"}),e.jsx("span",{className:"sm:inline",children:i("admin:tenants.entra.configuration.edit")})]}),e.jsxs("button",{onClick:l,disabled:n,className:"inline-flex items-center justify-center gap-2 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] transition-colors disabled:opacity-50",children:[e.jsx(r.RefreshCw,{className:`w-4 h-4 ${n?"animate-spin":""}`}),e.jsx("span",{className:"sm:inline",children:i("common:refresh")})]})]}),children:t?e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:t.isConfigured?e.jsxs(e.Fragment,{children:[e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:i("admin:tenants.entra.configuration.configured")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:i("admin:tenants.entra.configuration.connectedTo",{tenantId:t.tenantId})})]})]}):e.jsxs(e.Fragment,{children:[e.jsx(r.Info,{className:"w-5 h-5 text-[var(--warning-text)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:i("admin:tenants.entra.configuration.notConfigured")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:i("admin:tenants.entra.configuration.notConfiguredHint")})]})]})}),t.isConfigured&&e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4",children:[e.jsxs("div",{className:"p-3 sm:p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(r.Clock,{className:"w-4 h-4 text-[var(--text-tertiary)] flex-shrink-0"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:i("admin:tenants.entra.configuration.syncStatus")})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t.syncEnabled?i("admin:tenants.entra.configuration.syncEnabled"):i("admin:tenants.entra.configuration.syncDisabled")})]}),e.jsxs("div",{className:"p-3 sm:p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(r.Settings,{className:"w-4 h-4 text-[var(--text-tertiary)] flex-shrink-0"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:i("admin:tenants.entra.configuration.syncInterval")})]}),e.jsxs("p",{className:"text-sm text-[var(--text-secondary)]",children:[t.syncIntervalMinutes," ",i("common:minutes")]})]}),e.jsxs("div",{className:"p-3 sm:p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)] sm:col-span-2 lg:col-span-1",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(r.GitMerge,{className:"w-4 h-4 text-[var(--text-tertiary)] flex-shrink-0"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:i("admin:tenants.entra.configuration.conflictResolution")})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:i(`entra:settings.conflictResolutions.${t.defaultConflictResolution?.toLowerCase()??"manualreview"}`)})]})]})]}):e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:i("admin:tenants.entra.configuration.noData")})});function Js({config:t,loading:n,canEdit:s,onRefresh:l,onConfigUpdated:d,t:i,entraApi:c}){const[b,h]=a.useState(!1),[u,m]=a.useState(!1),[o,x]=a.useState(!1),[p,S]=a.useState(null),[B,P]=a.useState(!1),[T,g]=a.useState(null),[f,D]=a.useState(null),[y,H]=a.useState(null),[R,L]=a.useState(t?.hasClientSecret??!1),[k,Z]=a.useState({}),[q,U]=a.useState({tenantId:t?.tenantId||"",clientId:t?.clientId||"",clientSecret:""}),[z,ee]=a.useState({syncEnabled:t?.syncEnabled??!1,syncIntervalMinutes:t?.syncIntervalMinutes??60,useDeltaSync:t?.useDeltaSync??!0,defaultConflictResolution:t?.defaultConflictResolution??"ManualReview",autoCreateReferences:t?.autoCreateReferences??!0,syncOnlyActiveUsers:t?.syncOnlyActiveUsers??!0,syncUserTypes:t?.syncUserTypes??"member"});a.useEffect(()=>{t&&(U({tenantId:t.tenantId||"",clientId:t.clientId||"",clientSecret:""}),L(t.hasClientSecret),ee({syncEnabled:t.syncEnabled,syncIntervalMinutes:t.syncIntervalMinutes,useDeltaSync:t.useDeltaSync,defaultConflictResolution:t.defaultConflictResolution,autoCreateReferences:t.autoCreateReferences,syncOnlyActiveUsers:t.syncOnlyActiveUsers??!0,syncUserTypes:t.syncUserTypes??"member"}))},[t]);const ae=(w,v)=>{const N=Zs(v)?void 0:i("entra:settings.invalidGuidFormat");Z(ie=>({...ie,[w]:N}))},$=(w,v)=>{U(N=>({...N,[w]:v})),(w==="tenantId"||w==="clientId")&&ae(w,v)},X=!!(k.tenantId||k.clientId),J=!o&&!X&&q.tenantId&&q.clientId&&(q.clientSecret||R),F=!u&&!X&&q.tenantId&&q.clientId&&q.clientSecret,A=async w=>{try{await navigator.clipboard.writeText(w),H(w),setTimeout(()=>H(null),2e3)}catch(v){console.error("Failed to copy:",v instanceof Error?v.message:"Unknown error")}},j=async()=>{if(J){x(!0),S(null),g(null),D(null);try{const w=q.clientSecret?await c.settings.testConnection({tenantId:q.tenantId,clientId:q.clientId,clientSecret:q.clientSecret}):await c.settings.testStoredConnection();S(w),w.success?D(i("entra:settings.testSuccess")):g(w.errorMessage||i("entra:settings.testFailed"))}catch(w){console.error("Connection test failed:",w instanceof Error?w.message:"Unknown error"),g(i("entra:settings.testFailed"))}finally{x(!1)}}},M=async()=>{if(F){m(!0),g(null),D(null);try{await c.settings.saveCredentials({tenantId:q.tenantId,clientId:q.clientId,clientSecret:q.clientSecret}),D(i("entra:settings.credentialsSaved")),L(!0),U(w=>({...w,clientSecret:""})),d()}catch(w){console.error("Failed to save credentials:",w instanceof Error?w.message:"Unknown error"),g(i("entra:settings.saveError"))}finally{m(!1)}}},O=async()=>{m(!0),g(null),D(null);try{await c.settings.saveSyncSettings({syncEnabled:z.syncEnabled,syncIntervalMinutes:z.syncIntervalMinutes,useDeltaSync:z.useDeltaSync,defaultConflictResolution:z.defaultConflictResolution,autoCreateReferences:z.autoCreateReferences,syncOnlyActiveUsers:z.syncOnlyActiveUsers,syncUserTypes:z.syncUserTypes}),D(i("entra:settings.settingsSaved")),d()}catch(w){console.error("Failed to save settings:",w instanceof Error?w.message:"Unknown error"),g(i("entra:settings.saveError"))}finally{m(!1)}};return!s||!b?e.jsx(Qs,{config:t,loading:n,canEdit:s,onRefresh:l,onEdit:()=>h(!0),t:i}):e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-[var(--radius-card)] border-2 border-[var(--warning-border)] bg-[var(--warning-bg)] p-4",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx(r.Shield,{className:"w-5 h-5 text-[var(--warning-text)] mt-0.5"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4 mb-2",children:[e.jsx("h3",{className:"font-semibold text-[var(--warning-text)]",children:i("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:[i("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-3",children:i("entra:settings.permissionsWarningDescription")}),e.jsx("div",{className:"flex flex-wrap gap-2",children:Ws.map(w=>e.jsxs("button",{onClick:()=>A(w.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:shadow-sm transition-all",children:[e.jsx("code",{className:"text-sm font-mono font-medium text-[var(--text-primary)]",children:w.code}),y===w.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)]"})]},w.code))})]})]})}),T&&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)]"}),e.jsx("span",{className:"text-sm text-[var(--error-text)]",children:T})]}),f&&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)]"}),e.jsx("span",{className:"text-sm text-[var(--success-text)]",children:f})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsx(Ne,{icon:r.Key,title:i("entra:settings.credentials"),description:"Azure AD Application",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:i("entra:settings.tenantId")}),e.jsx("input",{type:"text",autoComplete:"off",value:q.tenantId,onChange:w=>$("tenantId",w.target.value),placeholder:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] font-mono text-sm focus:outline-none focus:ring-2 focus:border-transparent transition-shadow ${k.tenantId?"border-[var(--error-border)] focus:ring-[var(--error-border)]":"border-[var(--border-color)] focus:ring-[var(--color-accent-500)]"}`}),k.tenantId&&e.jsx("p",{className:"mt-1.5 text-xs text-[var(--error-text)]",children:k.tenantId})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:i("entra:settings.clientId")}),e.jsx("input",{type:"text",autoComplete:"off",value:q.clientId,onChange:w=>$("clientId",w.target.value),placeholder:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] font-mono text-sm focus:outline-none focus:ring-2 focus:border-transparent transition-shadow ${k.clientId?"border-[var(--error-border)] focus:ring-[var(--error-border)]":"border-[var(--border-color)] focus:ring-[var(--color-accent-500)]"}`}),k.clientId&&e.jsx("p",{className:"mt-1.5 text-xs text-[var(--error-text)]",children:k.clientId})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[i("entra:settings.clientSecret"),R&&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"}),i("common:configured")]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:B?"text":"password",autoComplete:"new-password",value:q.clientSecret,onChange:w=>$("clientSecret",w.target.value),placeholder:R?"••••••••••••••••":"OvA8Q~xxxxxxxxxxxx",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)] placeholder-[var(--text-muted)] font-mono text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow"}),e.jsx("button",{type:"button",onClick:()=>P(!B),className:"absolute right-3 top-1/2 -translate-y-1/2 p-1 text-[var(--text-tertiary)] hover:text-[var(--text-primary)]",children:B?e.jsx(r.EyeOff,{className:"w-4 h-4"}):e.jsx(r.Eye,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-stretch sm:items-center gap-2 sm:gap-3 pt-2",children:[e.jsxs("button",{onClick:j,disabled:o||X||!q.tenantId||!q.clientId||!q.clientSecret&&!R,className:"inline-flex items-center justify-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:[o?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.TestTube,{className:"w-4 h-4"}),i("entra:settings.testConnection")]}),e.jsxs("button",{onClick:M,disabled:u||X||!q.tenantId||!q.clientId||!q.clientSecret,className:"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:[u?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),i("common:save")]})]}),p?.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-2",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:i("entra:settings.connectionSuccessful")})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-3 text-sm",children:[p.tenantName&&e.jsxs("div",{children:[e.jsx("span",{className:"text-[var(--text-tertiary)]",children:"Tenant:"})," ",p.tenantName]}),p.userCount!==null&&e.jsxs("div",{children:[e.jsx("span",{className:"text-[var(--text-tertiary)]",children:"Users:"})," ",p.userCount]}),p.groupCount!==null&&e.jsxs("div",{children:[e.jsx("span",{className:"text-[var(--text-tertiary)]",children:"Groups:"})," ",p.groupCount]})]})]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(Ne,{icon:r.Clock,title:i("entra:settings.syncSettings"),description:"Scheduling & Performance",children:e.jsxs("div",{className:"divide-y divide-[var(--border-subtle)]",children:[e.jsx(Ye,{checked:z.syncEnabled,onChange:()=>ee(w=>({...w,syncEnabled:!w.syncEnabled})),label:i("entra:settings.syncEnabled"),description:i("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:i("entra:settings.syncInterval")}),e.jsxs("select",{value:z.syncIntervalMinutes,onChange:w=>ee(v=>({...v,syncIntervalMinutes:Number(w.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)]",children:[e.jsxs("option",{value:15,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["15 ",i("common:minutes")]}),e.jsxs("option",{value:30,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["30 ",i("common:minutes")]}),e.jsxs("option",{value:60,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["1 ",i("common:hour")]}),e.jsxs("option",{value:120,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["2 ",i("common:hours")]}),e.jsxs("option",{value:360,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["6 ",i("common:hours")]}),e.jsxs("option",{value:720,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["12 ",i("common:hours")]}),e.jsxs("option",{value:1440,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["24 ",i("common:hours")]})]})]}),e.jsx(Ye,{checked:z.useDeltaSync,onChange:()=>ee(w=>({...w,useDeltaSync:!w.useDeltaSync})),label:i("entra:settings.useDeltaSync"),description:i("entra:settings.useDeltaSyncHelp")})]})}),e.jsx(Ne,{icon:r.GitMerge,title:i("entra:settings.conflictResolution"),description:"Data Priority",children:e.jsxs("select",{value:z.defaultConflictResolution,onChange:w=>ee(v=>({...v,defaultConflictResolution:w.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)]",children:[e.jsx("option",{value:"ManualReview",className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:i("entra:settings.conflictResolutions.manualReview")}),e.jsx("option",{value:"EntraWins",className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:i("entra:settings.conflictResolutions.entraWins")}),e.jsx("option",{value:"LocalWins",className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:i("entra:settings.conflictResolutions.localWins")})]})}),e.jsx(Ne,{icon:r.Filter,title:i("entra:settings.userSyncFilters"),description:"User Types",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx(Ye,{checked:z.syncOnlyActiveUsers,onChange:()=>ee(w=>({...w,syncOnlyActiveUsers:!w.syncOnlyActiveUsers})),label:i("entra:settings.syncOnlyActiveUsers"),description:i("entra:settings.syncOnlyActiveUsersHelp")}),e.jsx("div",{className:"space-y-2 pt-2 border-t border-[var(--border-subtle)]",children:Xs.map(w=>{const v=z.syncUserTypes.split(",").map(ie=>ie.trim()).filter(Boolean),N=v.includes(w.id);return e.jsxs("label",{className:`flex items-center gap-3 p-3 rounded-[var(--radius-button)] border cursor-pointer transition-all ${N?"border-[var(--color-accent-500)] bg-[var(--color-accent-50)] dark:bg-[var(--color-accent-900)]/20":"border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-tertiary)]"}`,children:[e.jsx("input",{type:"checkbox",checked:N,onChange:()=>{let ie=N?v.filter(le=>le!==w.id):[...v,w.id];ie.length===0&&(ie=["member"]),ee(le=>({...le,syncUserTypes:ie.join(",")}))},className:"w-4 h-4 rounded border-[var(--border-color)] text-[var(--color-accent-600)]"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:i(`entra:settings.${w.labelKey}`)})]},w.id)})})]})}),e.jsxs("div",{className:"flex flex-col-reverse sm:flex-row items-stretch sm:items-center gap-2 sm:gap-3",children:[e.jsx("button",{onClick:()=>h(!1),className:"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)] transition-colors text-center",children:i("common:cancel")}),e.jsxs("button",{onClick:O,disabled:u,className:"inline-flex items-center justify-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 transition-colors shadow-sm",children:[u?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),i("common:save")]})]})]})]})]})}const ea={Completed:{bg:"bg-[var(--success-bg)]",text:"text-[var(--success-text)]",icon:r.CheckCircle},PartiallyCompleted:{bg:"bg-[var(--warning-bg)]",text:"text-[var(--warning-text)]",icon:r.AlertTriangle},Failed:{bg:"bg-[var(--error-bg)]",text:"text-[var(--error-text)]",icon:r.AlertTriangle},InProgress:{bg:"bg-[var(--color-accent-100)]",text:"text-[var(--color-accent-700)]",icon:r.Loader2},Cancelled:{bg:"bg-[var(--bg-tertiary)]",text:"text-[var(--text-tertiary)]",icon:r.Square}},ta={Success:e.jsx(r.CheckCircle,{className:"w-4 h-4 text-[var(--success-text)]"}),Failed:e.jsx(r.AlertTriangle,{className:"w-4 h-4 text-[var(--error-text)]"}),Running:e.jsx(r.Loader2,{className:"w-4 h-4 text-[var(--color-accent-500)] animate-spin"})},dt=(t,n)=>{const s=ea[t];if(!s)return e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full bg-[var(--bg-tertiary)] text-[var(--text-tertiary)]",children:t});const l=s.icon,d=n(`admin:tenants.entra.history.${t.toLowerCase()}`);return e.jsxs("span",{className:`inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full ${s.bg} ${s.text}`,children:[e.jsx(l,{className:s.icon===r.Loader2?"w-3 h-3 animate-spin":"w-3 h-3"})," ",d]})},sa=t=>ta[t]||e.jsx(r.Clock,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),mt=(t,n)=>{if(!n)return"-";const s=new Date(t).getTime(),d=new Date(n).getTime()-s;return d<1e3?`${d}ms`:d<6e4?`${Math.round(d/1e3)}s`:`${Math.round(d/6e4)}m`},aa=()=>{const[t,n]=a.useState(!1),[s,l]=a.useState(null),[d,i]=a.useState(null),[c,b]=a.useState([]),[h,u]=a.useState(!1),[m,o]=a.useState(1),[x,p]=a.useState(0),[S,B]=a.useState(null);return{syncing:t,setSyncing:n,lastSyncResult:s,setLastSyncResult:l,syncError:d,setSyncError:i,history:c,setHistory:b,historyLoading:h,setHistoryLoading:u,historyPage:m,setHistoryPage:o,historyTotalCount:x,setHistoryTotalCount:p,cancellingSessionId:S,setCancellingSessionId:B}};function ra({config:t,conflicts:n,syncStatus:s,loading:l,canSync:d,onRefresh:i,onResolveConflict:c,onSyncAll:b,onLoadHistory:h,onCancelSession:u,activeSyncSession:m,t:o}){const{syncing:x,setSyncing:p,lastSyncResult:S,setLastSyncResult:B,syncError:P,setSyncError:T,history:g,setHistory:f,historyLoading:D,setHistoryLoading:y,historyPage:H,setHistoryPage:R,historyTotalCount:L,setHistoryTotalCount:k,cancellingSessionId:Z,setCancellingSessionId:q}=aa(),U=5,z=a.useCallback(async $=>{y(!0);try{const X=await h($,U);if(!X)return;f(X.sessions),k(X.totalCount),R($)}catch(X){console.error("Failed to load history:",X)}finally{y(!1)}},[h]);a.useEffect(()=>{t?.isConfigured&&z(1)},[t?.isConfigured,z]);const ee=async()=>{p(!0),T(null),B(null);try{const $=await b();if(!$)return;B($),i(),z(1)}catch($){console.error("Sync failed:",$ instanceof Error?$.message:"Unknown error"),T(o("admin:tenants.entra.sync.syncFailed"))}finally{p(!1)}},ae=async $=>{q($);try{await u($)&&z(H)}catch(X){console.error("Failed to cancel session:",X instanceof Error?X.message:"Unknown error")}finally{q(null)}};return t?.isConfigured?e.jsxs("div",{className:"space-y-6",children:[e.jsx(Ne,{icon:r.Play,title:o("admin:tenants.entra.sync.actionsTitle"),description:o("admin:tenants.entra.sync.actionsDescription"),children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-3 sm:gap-4",children:[e.jsxs("button",{onClick:ee,disabled:x||m!==null||!d,className:"w-full sm:w-auto 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:[x||m?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Play,{className:"w-4 h-4"}),o(x||m?"admin:tenants.entra.sync.syncing":"admin:tenants.entra.sync.syncNow")]}),!d&&e.jsx("span",{className:"text-xs text-[var(--text-tertiary)]",children:o("admin:tenants.entra.sync.noSyncPermission")})]}),P&&e.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:[e.jsx(r.AlertTriangle,{className:"w-4 h-4 text-[var(--error-text)]"}),e.jsx("span",{className:"text-sm text-[var(--error-text)]",children:P})]}),S&&e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${S.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 gap-2 mb-3",children:[S.success?e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)]"}):e.jsx(r.AlertTriangle,{className:"w-5 h-5 text-[var(--error-text)]"}),e.jsx("span",{className:`font-medium ${S.success?"text-[var(--success-text)]":"text-[var(--error-text)]"}`,children:S.success?o("admin:tenants.entra.sync.syncSuccess"):o("admin:tenants.entra.sync.syncFailed")})]}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-5 gap-2 sm:gap-3 text-sm",children:[e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)] text-center sm:text-left",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.created")}),e.jsxs("p",{className:"font-semibold text-[var(--success-text)]",children:["+",S.created]})]}),e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)] text-center sm:text-left",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.updated")}),e.jsxs("p",{className:"font-semibold text-[var(--color-accent-600)]",children:["~",S.updated]})]}),e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)] text-center sm:text-left",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.deleted")}),e.jsxs("p",{className:"font-semibold text-[var(--error-text)]",children:["-",S.deleted]})]}),e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)] text-center sm:text-left",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.skipped")}),e.jsx("p",{className:"font-semibold text-[var(--text-secondary)]",children:S.skipped})]}),e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)] text-center sm:text-left col-span-3 sm:col-span-1",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.conflicts")}),e.jsx("p",{className:`font-semibold ${S.conflicts>0?"text-[var(--warning-text)]":"text-[var(--text-primary)]"}`,children:S.conflicts})]})]}),S.errorMessage&&e.jsx("p",{className:"mt-3 text-sm text-[var(--error-text)]",children:S.errorMessage})]})]})}),e.jsx(Ne,{icon:r.Zap,title:o("admin:tenants.entra.sync.statusTitle"),description:o("admin:tenants.entra.sync.statusDescription"),action:e.jsxs("button",{onClick:i,disabled:l,className:"inline-flex items-center gap-2 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] transition-colors disabled:opacity-50",children:[e.jsx(r.RefreshCw,{className:`w-4 h-4 ${l?"animate-spin":""}`}),o("common:refresh")]}),children:s.length>0?e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:s.map($=>e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:o(`entra:resourceTypes.${$.resourceType.toLowerCase()}`)}),sa($.status)]}),e.jsxs("div",{className:"space-y-1 text-xs text-[var(--text-tertiary)]",children:[e.jsx("p",{children:o("admin:tenants.entra.sync.itemsSynced",{count:$.totalItemsSynced})}),$.lastFullSyncAt&&e.jsx("p",{children:o("admin:tenants.entra.sync.lastSync",{date:new Date($.lastFullSyncAt).toLocaleDateString()})})]})]},$.resourceType))}):e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:o("admin:tenants.entra.sync.noStatus")})}),e.jsx(Ne,{icon:r.AlertTriangle,title:o("admin:tenants.entra.conflicts.title"),description:o("admin:tenants.entra.conflicts.description",{count:n.length}),children:n.length===0?e.jsxs("div",{className:"text-center py-8",children:[e.jsx("div",{className:"mx-auto w-12 h-12 rounded-full bg-[var(--success-bg)] flex items-center justify-center mb-3",children:e.jsx(r.CheckCircle,{className:"w-6 h-6 text-[var(--success-text)]"})}),e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)] mb-1",children:o("entra:conflicts.noConflicts")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:o("entra:conflicts.noConflictsDescription")})]}):e.jsx("div",{className:"space-y-4",children:n.map($=>e.jsx(Je.ConflictCard,{conflict:$,onResolve:c},$.id))})}),e.jsxs(Ne,{icon:r.History,title:o("admin:tenants.entra.history.title"),description:o("admin:tenants.entra.history.description"),action:e.jsxs("button",{onClick:()=>z(H),disabled:D,className:"inline-flex items-center gap-2 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] transition-colors disabled:opacity-50",children:[e.jsx(r.RefreshCw,{className:`w-4 h-4 ${D?"animate-spin":""}`}),o("common:refresh")]}),children:[D&&g.length===0&&e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}),!(D&&g.length===0)&&g.length===0&&e.jsxs("div",{className:"text-center py-8",children:[e.jsx("div",{className:"mx-auto w-12 h-12 rounded-full bg-[var(--bg-tertiary)] flex items-center justify-center mb-3",children:e.jsx(r.History,{className:"w-6 h-6 text-[var(--text-tertiary)]"})}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.noHistory")})]}),g.length>0&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"block sm:hidden space-y-3",children:g.map($=>e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[$.isFullSync?e.jsx("span",{className:"px-2 py-0.5 text-xs rounded bg-[var(--color-accent-100)] text-[var(--color-accent-700)]",children:o("admin:tenants.entra.history.fullSync")}):e.jsx("span",{className:"px-2 py-0.5 text-xs rounded bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.deltaSync")}),dt($.status,o)]}),$.status==="InProgress"&&d&&e.jsxs("button",{onClick:()=>ae($.id),disabled:Z===$.id,className:"inline-flex items-center gap-1 px-2 py-1 text-xs font-medium rounded-[var(--radius-button)] bg-[var(--error-bg)] text-[var(--error-text)]",children:[Z===$.id?e.jsx(r.Loader2,{className:"w-3 h-3 animate-spin"}):e.jsx(r.Square,{className:"w-3 h-3"}),o("common:cancel")]})]}),e.jsxs("div",{className:"text-xs text-[var(--text-tertiary)] mb-2",children:[new Date($.startedAt).toLocaleString()," • ",mt($.startedAt,$.completedAt)]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2 text-center",children:[e.jsxs("div",{className:"p-1.5 rounded bg-[var(--bg-primary)]",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.created")}),e.jsxs("span",{className:"font-medium text-[var(--success-text)]",children:["+",$.created]})]}),e.jsxs("div",{className:"p-1.5 rounded bg-[var(--bg-primary)]",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.updated")}),e.jsxs("span",{className:"font-medium text-[var(--color-accent-600)]",children:["~",$.updated]})]}),e.jsxs("div",{className:"p-1.5 rounded bg-[var(--bg-primary)]",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.deleted")}),e.jsxs("span",{className:"font-medium text-[var(--error-text)]",children:["-",$.deleted]})]})]}),e.jsx("div",{className:"mt-2 pt-2 border-t border-[var(--border-subtle)] text-xs text-[var(--text-secondary)]",children:$.triggerType==="Manual"?e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(r.Users,{className:"w-3 h-3"}),$.triggeredByUserName||o("admin:tenants.entra.history.unknownUser")]}):e.jsxs("span",{className:"flex items-center gap-1 text-[var(--text-tertiary)]",children:[e.jsx(r.Clock,{className:"w-3 h-3"}),o("admin:tenants.entra.history.scheduled")]})})]},$.id))}),e.jsx("div",{className:"hidden sm:block overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-[var(--border-color)]",children:[e.jsx("th",{className:"text-left py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.date")}),e.jsx("th",{className:"text-left py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.type")}),e.jsx("th",{className:"text-left py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.status")}),e.jsx("th",{className:"text-right py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.duration")}),e.jsx("th",{className:"text-right py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.sync.created")}),e.jsx("th",{className:"text-right py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.sync.updated")}),e.jsx("th",{className:"text-right py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.sync.deleted")}),e.jsx("th",{className:"text-left py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.triggeredBy")}),e.jsx("th",{className:"text-center py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("common:actionsColumn")})]})}),e.jsx("tbody",{children:g.map($=>e.jsxs("tr",{className:"border-b border-[var(--border-subtle)] hover:bg-[var(--bg-secondary)]",children:[e.jsx("td",{className:"py-2 px-3 text-[var(--text-primary)]",children:new Date($.startedAt).toLocaleString()}),e.jsx("td",{className:"py-2 px-3",children:e.jsx("span",{className:"inline-flex items-center gap-1 text-xs",children:$.isFullSync?e.jsx("span",{className:"px-2 py-0.5 rounded bg-[var(--color-accent-100)] text-[var(--color-accent-700)]",children:o("admin:tenants.entra.history.fullSync")}):e.jsx("span",{className:"px-2 py-0.5 rounded bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.deltaSync")})})}),e.jsx("td",{className:"py-2 px-3",children:dt($.status,o)}),e.jsx("td",{className:"py-2 px-3 text-right text-[var(--text-secondary)]",children:mt($.startedAt,$.completedAt)}),e.jsxs("td",{className:"py-2 px-3 text-right text-[var(--success-text)] font-medium",children:["+",$.created]}),e.jsxs("td",{className:"py-2 px-3 text-right text-[var(--color-accent-600)] font-medium",children:["~",$.updated]}),e.jsxs("td",{className:"py-2 px-3 text-right text-[var(--error-text)] font-medium",children:["-",$.deleted]}),e.jsx("td",{className:"py-2 px-3 text-[var(--text-secondary)]",children:$.triggerType==="Manual"?e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(r.Users,{className:"w-3 h-3"}),$.triggeredByUserName||o("admin:tenants.entra.history.unknownUser")]}):e.jsxs("span",{className:"flex items-center gap-1 text-[var(--text-tertiary)]",children:[e.jsx(r.Clock,{className:"w-3 h-3"}),o("admin:tenants.entra.history.scheduled")]})}),e.jsx("td",{className:"py-2 px-3 text-center",children:$.status==="InProgress"&&d&&e.jsxs("button",{onClick:()=>ae($.id),disabled:Z===$.id,className:"inline-flex items-center gap-1 px-2 py-1 text-xs font-medium rounded-[var(--radius-button)] bg-[var(--error-bg)] text-[var(--error-text)] hover:bg-[var(--error-border)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",title:o("admin:tenants.entra.history.cancelSync"),children:[Z===$.id?e.jsx(r.Loader2,{className:"w-3 h-3 animate-spin"}):e.jsx(r.Square,{className:"w-3 h-3"}),o("common:cancel")]})})]},$.id))})]})}),L>U&&e.jsxs("div",{className:"flex items-center justify-between pt-4 border-t border-[var(--border-subtle)]",children:[e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:o("admin:tenants.entra.history.showing",{from:(H-1)*U+1,to:Math.min(H*U,L),total:L})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:()=>z(H-1),disabled:H===1||D,className:"px-3 py-1.5 text-sm rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] disabled:opacity-50 disabled:cursor-not-allowed",children:o("common:previous")}),e.jsx("button",{onClick:()=>z(H+1),disabled:H*U>=L||D,className:"px-3 py-1.5 text-sm rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] disabled:opacity-50 disabled:cursor-not-allowed",children:o("common:next")})]})]})]})]})]}):e.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx(r.Info,{className:"w-5 h-5 text-[var(--warning-text)]"}),e.jsx("span",{className:"text-sm text-[var(--warning-text)]",children:o("admin:tenants.entra.sync.configureFirst")})]})}function na({config:t,t:n}){return t?.isConfigured?e.jsx(Ne,{icon:r.Users,title:n("admin:tenants.entra.users.title"),description:n("admin:tenants.entra.users.description"),children:e.jsxs("div",{className:"text-center py-8",children:[e.jsx("div",{className:"mx-auto w-12 h-12 rounded-full bg-[var(--bg-secondary)] flex items-center justify-center mb-3",children:e.jsx(r.Users,{className:"w-6 h-6 text-[var(--text-tertiary)]"})}),e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)] mb-1",children:n("admin:tenants.entra.users.comingSoon")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:n("admin:tenants.entra.users.comingSoonDescription")})]})}):e.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx(r.Info,{className:"w-5 h-5 text-[var(--warning-text)]"}),e.jsx("span",{className:"text-sm text-[var(--warning-text)]",children:n("admin:tenants.entra.users.configureFirst")})]})}function ia({config:t,t:n}){return t?.isConfigured?e.jsx(Ne,{icon:r.Building2,title:n("admin:tenants.entra.groups.title"),description:n("admin:tenants.entra.groups.description"),children:e.jsxs("div",{className:"text-center py-8",children:[e.jsx("div",{className:"mx-auto w-12 h-12 rounded-full bg-[var(--bg-secondary)] flex items-center justify-center mb-3",children:e.jsx(r.Building2,{className:"w-6 h-6 text-[var(--text-tertiary)]"})}),e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)] mb-1",children:n("admin:tenants.entra.groups.comingSoon")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:n("admin:tenants.entra.groups.comingSoonDescription")})]})}):e.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx(r.Info,{className:"w-5 h-5 text-[var(--warning-text)]"}),e.jsx("span",{className:"text-sm text-[var(--warning-text)]",children:n("admin:tenants.entra.groups.configureFirst")})]})}function la({tenantId:t,tenantSlug:n}){const{t:s}=de.useTranslation(["admin","entra","common"]),{hasPermission:l}=E.useAuth(),{isConnected:d,onNotification:i}=E.useSignalRContext(),[c,b]=a.useState("config"),[h,u]=a.useState(!0),[m,o]=a.useState(null),x=a.useMemo(()=>Je.createEntraApi(n),[n]),[p,S]=a.useState(null),[B,P]=a.useState([]),[T,g]=a.useState([]),[f,D]=a.useState(null),[y,H]=a.useState(!1),[R,L]=a.useState(null),[k,Z]=a.useState("00:00"),q=a.useRef(null),U=a.useRef(!1),z=l(ke.READ),ee=l(ke.UPDATE),ae=l(ke.SYNC),X=[{id:"config",label:s("admin:tenants.entra.tabs.config"),icon:r.Key,permission:ke.READ},{id:"sync",label:s("admin:tenants.entra.tabs.sync"),icon:r.Zap,permission:ke.SYNC},{id:"users",label:s("admin:tenants.entra.tabs.users"),icon:r.Users,permission:ke.READ},{id:"groups",label:s("admin:tenants.entra.tabs.groups"),icon:r.Building2,permission:ke.READ}].filter(O=>l(O.permission));a.useEffect(()=>{X.length>0&&!X.find(O=>O.id===c)&&b(X[0].id)},[X,c]);const J=a.useCallback(async()=>{if(!U.current){if(!z){u(!1);return}q.current&&q.current.abort(),q.current=new AbortController,U.current=!0,u(!0),o(null);try{const[O,w,v]=await Promise.all([x.settings.getConfiguration(),x.conflicts.getAll(),x.dashboard.getSyncStatus()]);S(O??null),P(Array.isArray(w)?w:[]),g(Array.isArray(v)?v:[])}catch(O){if(O instanceof Error&&O.name==="AbortError")return;console.error("Failed to load Entra data:",O instanceof Error?O.message:"Unknown error"),o(s("admin:tenants.entra.loadError"))}finally{U.current=!1,u(!1)}}},[x,s,z]);a.useEffect(()=>(J(),()=>{q.current&&q.current.abort()}),[J,t]),a.useEffect(()=>i(w=>{Ys(w,L,J)}),[i,J]),a.useEffect(()=>{if(!R){Z("00:00");return}Z(ct(R.startedAt));const O=setInterval(()=>{Z(ct(R.startedAt))},1e3);return()=>clearInterval(O)},[R]);const F=a.useCallback(async(O,w)=>{if(!(!f||y)){H(!0);try{await x.conflicts.resolve(f.id,{resolution:O,notes:w||void 0}),D(null),await J()}catch(v){console.error("Failed to resolve conflict:",v instanceof Error?v.message:"Unknown error"),o(s("entra:conflicts.resolveError"))}finally{H(!1)}}},[x,f,y,J,s]),A=a.useCallback(async()=>{try{return await x.sync.syncAll()}catch(O){throw console.error("Sync all failed:",O instanceof Error?O.message:"Unknown error"),O}},[x]),j=a.useCallback(async(O,w)=>{try{return await x.sync.getHistory(O,w)}catch(v){return console.error("Failed to load history:",v instanceof Error?v.message:"Unknown error"),null}},[x]),M=a.useCallback(async O=>{try{return await x.sync.cancelSession(O),!0}catch(w){return console.error("Failed to cancel session:",w instanceof Error?w.message:"Unknown error"),!1}},[x]);return h?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-600)]"})}):X.length===0?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.Lock,{className:"w-5 h-5 text-[var(--error-text)]"}),e.jsx("span",{className:"text-sm text-[var(--error-text)]",children:s("admin:tenants.entra.noPermission")})]}):e.jsxs("div",{className:"space-y-6",children:[m&&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)]"}),e.jsx("span",{className:"text-sm text-[var(--error-text)]",children:m}),e.jsx("button",{onClick:()=>o(null),className:"ml-auto text-[var(--error-text)] hover:opacity-70",children:"×"})]}),R&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--color-accent-50)] dark:bg-[var(--color-accent-900)]/20 border border-[var(--color-accent-200)] dark:border-[var(--color-accent-800)]",children:[e.jsxs("div",{className:"flex items-center gap-3 flex-1",children:[e.jsx(r.RefreshCw,{className:"w-5 h-5 text-[var(--color-accent-600)] animate-spin flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-medium text-[var(--color-accent-700)] dark:text-[var(--color-accent-400)]",children:s("admin:tenants.entra.sync.syncInProgress")}),e.jsx("p",{className:"text-sm text-[var(--color-accent-600)] dark:text-[var(--color-accent-500)] truncate",children:s("admin:tenants.entra.sync.syncInProgressDescription")})]})]}),e.jsx("div",{className:"flex items-center gap-2 self-end sm:self-auto",children:e.jsxs("span",{className:"text-lg font-mono font-bold text-[var(--color-accent-700)] dark:text-[var(--color-accent-400)] bg-[var(--color-accent-100)] dark:bg-[var(--color-accent-900)]/50 px-3 py-1 rounded",children:["⏱ ",k]})})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-stretch sm:items-center gap-1 p-1 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsx("div",{className:"flex flex-wrap items-center gap-1 flex-1",children:X.map(O=>{const w=O.icon,v=c===O.id,N=O.id==="sync"&&B.length>0;return e.jsxs("button",{onClick:()=>b(O.id),className:`flex items-center gap-2 px-3 sm:px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] transition-all flex-1 sm:flex-none justify-center sm:justify-start ${v?"bg-[var(--bg-card)] text-[var(--text-primary)] shadow-sm":"text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-tertiary)]"}`,children:[e.jsx(w,{className:"w-4 h-4"}),e.jsx("span",{className:"hidden sm:inline",children:O.label}),N&&e.jsx("span",{className:"ml-1 px-1.5 py-0.5 text-xs font-bold rounded-full bg-[var(--warning-bg)] text-[var(--warning-text)]",children:B.length})]},O.id)})}),e.jsx("div",{className:"flex items-center justify-center sm:justify-end gap-2 px-2 py-1 border-t sm:border-t-0 sm:border-l border-[var(--border-subtle)] mt-1 sm:mt-0 pt-2 sm:pt-0",children:d?e.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-[var(--success-text)]",title:s("admin:tenants.entra.realTimeConnected"),children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-[var(--success-text)] animate-pulse"}),e.jsx("span",{className:"hidden sm:inline",children:s("common:live")})]}):e.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-[var(--text-tertiary)]",title:s("admin:tenants.entra.realTimeDisconnected"),children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-[var(--text-tertiary)]"}),e.jsx("span",{className:"hidden sm:inline",children:s("common:offline")})]})})]}),c==="config"&&e.jsx(Js,{config:p,loading:h,canEdit:ee,onRefresh:J,onConfigUpdated:J,t:s,entraApi:x}),c==="sync"&&e.jsx(ra,{config:p,conflicts:B,syncStatus:T,loading:h,canSync:ae,onRefresh:J,onResolveConflict:D,onSyncAll:A,onLoadHistory:j,onCancelSession:M,activeSyncSession:R,t:s}),c==="users"&&e.jsx(na,{config:p,t:s}),c==="groups"&&e.jsx(ia,{config:p,t:s}),f&&e.jsx(Je.ResolutionModal,{conflict:f,onClose:()=>D(null),onResolve:F,resolving:y})]})}function oa(t,n,s){const l={};if(!t.glpiBaseUrl.trim())l.glpiBaseUrl=s("admin:tenants.ticketing.validation.baseUrlRequired");else try{new URL(t.glpiBaseUrl)}catch{l.glpiBaseUrl=s("admin:tenants.ticketing.validation.baseUrlInvalid")}return t.glpiClientId.trim()||(l.glpiClientId=s("admin:tenants.ticketing.validation.clientIdRequired")),!t.glpiClientSecret&&!n?.hasGlpiClientSecret&&(l.glpiClientSecret=s("admin:tenants.ticketing.validation.clientSecretRequired")),t.glpiUsername.trim()||(l.glpiUsername=s("admin:tenants.ticketing.validation.usernameRequired")),!t.glpiPassword&&!n?.hasGlpiPassword&&(l.glpiPassword=s("admin:tenants.ticketing.validation.passwordRequired")),l}function ca(t,n,s,l){const d={provider:n,syncEnabled:s,syncIntervalMinutes:l};return n==="GLPI"&&(d.glpiBaseUrl=t.glpiBaseUrl,d.glpiClientId=t.glpiClientId,t.glpiClientSecret&&(d.glpiClientSecret=t.glpiClientSecret),d.glpiUsername=t.glpiUsername,t.glpiPassword&&(d.glpiPassword=t.glpiPassword),t.glpiEntityId&&(d.glpiEntityId=Number(t.glpiEntityId)),t.glpiRequestTypeId&&(d.glpiRequestTypeId=Number(t.glpiRequestTypeId))),d}function Ze({icon:t,title:n,description:s,action:l,children:d}){return e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-card)] shadow-sm overflow-hidden",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:n}),s&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:s})]})]}),l]})}),e.jsx("div",{className:"p-6",children:d})]})}function da({checked:t,onChange:n,label:s,description:l,disabled:d}){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:s}),l&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:l})]}),e.jsx("button",{type:"button",role:"switch","aria-checked":t,onClick:n,disabled:d,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)] disabled:opacity-50 disabled:cursor-not-allowed ${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-white shadow-md transition-transform ${t?"translate-x-6":"translate-x-1"}`})})]})}function Ae({text:t}){return e.jsx(E.Tooltip,{content:e.jsx("span",{className:"whitespace-pre-line text-xs leading-relaxed",children:t}),position:"right",variant:"info",delay:100,className:"!max-w-sm",children:e.jsx(r.Info,{className:"w-4 h-4 text-[var(--text-tertiary)] hover:text-[var(--info-text)] cursor-help transition-colors"})})}function ma({tenantId:t,tenantName:n}){const{t:s}=de.useTranslation(["admin","common"]),[l,d]=a.useState(!0),[i,c]=a.useState(!1),[b,h]=a.useState(!1),[u,m]=a.useState(!1),[o,x]=a.useState(null),[p,S]=a.useState(null),[B,P]=a.useState(!1),[T,g]=a.useState(null),[f,D]=a.useState(null),[y,H]=a.useState(null),[R,L]=a.useState({}),[k,Z]=a.useState("SmartStack"),[q,U]=a.useState(""),[z,ee]=a.useState(""),[ae,$]=a.useState(""),[X,J]=a.useState(""),[F,A]=a.useState(""),[j,M]=a.useState(""),[O,w]=a.useState(""),[v,N]=a.useState(!1),[ie,le]=a.useState(60),te=k==="GLPI",Q=W=>R[W]?"border-[var(--error-border)] ring-1 ring-[var(--error-border)]":"border-[var(--border-color)]",pe=a.useCallback(async()=>{d(!0),x(null);try{const W=await De.ticketingApi.getConfiguration(t);g(W),Z(W.provider||"SmartStack"),U(W.glpiBaseUrl||""),ee(W.glpiClientId||""),$(""),J(W.glpiUsername||""),A(""),M(W.glpiEntityId!=null?String(W.glpiEntityId):""),w(W.glpiRequestTypeId!=null?String(W.glpiRequestTypeId):""),N(W.syncEnabled),le(W.syncIntervalMinutes)}catch{g(null)}finally{d(!1)}},[t]);a.useEffect(()=>{pe()},[pe]);const me=()=>{if(!te)return L({}),!0;const W=oa({glpiBaseUrl:q,glpiClientId:z,glpiClientSecret:ae,glpiUsername:X,glpiPassword:F},T,s);return L(W),Object.keys(W).length===0},K=async()=>{if(!me())return;c(!0),x(null),S(null);const W=ca({glpiBaseUrl:q,glpiClientId:z,glpiClientSecret:ae,glpiUsername:X,glpiPassword:F,glpiEntityId:j,glpiRequestTypeId:O},k,v,ie);try{const G=await De.ticketingApi.saveConfiguration(t,W);g(G),$(""),A(""),S(s("admin:tenants.ticketing.saveSuccess"))}catch{x(s("admin:tenants.ticketing.saveFailed"))}finally{c(!1)}},ce=async()=>{h(!0),H(null),x(null),S(null);try{const W=await De.ticketingApi.testConnection(t,{glpiBaseUrl:q,glpiClientId:z,glpiClientSecret:ae||void 0,glpiUsername:X,glpiPassword:F||void 0});H(W),W.success?S(s("admin:tenants.ticketing.testSuccess")):x(W.errorMessage||s("admin:tenants.ticketing.testFailed"))}catch{x(s("admin:tenants.ticketing.testFailed"))}finally{h(!1)}},ge=async()=>{m(!0),D(null),x(null),S(null);try{const W=await De.ticketingApi.triggerSync(t);D(W),W.success?S(s("admin:tenants.ticketing.syncSuccess",{count:W.ticketsUpdated})):x(W.errorMessage||s("admin:tenants.ticketing.syncFailed")),await pe()}catch{x(s("admin:tenants.ticketing.syncFailed"))}finally{m(!1)}};return l?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-600)]"})}):e.jsxs("div",{className:"space-y-6",children:[o&&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)]"}),e.jsx("span",{className:"text-sm text-[var(--error-text)]",children:o}),e.jsx("button",{onClick:()=>x(null),className:"ml-auto text-[var(--error-text)] hover:opacity-70",children:"×"})]}),p&&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)]"}),e.jsx("span",{className:"text-sm text-[var(--success-text)]",children:p}),e.jsx("button",{onClick:()=>S(null),className:"ml-auto text-[var(--success-text)] hover:opacity-70",children:"×"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsx(Ze,{icon:r.Settings,title:s("admin:tenants.ticketing.provider.title"),description:s("admin:tenants.ticketing.provider.description",{tenantName:n}),children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:s("admin:tenants.ticketing.provider.label")}),e.jsxs("select",{value:k,onChange:W=>{const G=W.target.value;Z(G),G!=="GLPI"&&N(!1)},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)]",children:[e.jsx("option",{value:"SmartStack",className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:"SmartStack"}),e.jsx("option",{value:"GLPI",className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:"GLPI"})]}),e.jsx("p",{className:"mt-1.5 text-xs text-[var(--text-tertiary)] whitespace-pre-line",children:s(te?"admin:tenants.ticketing.provider.glpiHint":"admin:tenants.ticketing.provider.smartstackHint")})]}),te&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-start gap-3 p-3 rounded-[var(--radius-card)] bg-[var(--info-bg)] border border-[var(--info-border)]",children:[e.jsx(r.ExternalLink,{className:"w-4 h-4 text-[var(--info-text)] mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"text-sm text-[var(--info-text)]",children:[e.jsxs("span",{children:[s("admin:tenants.ticketing.glpi.docHint")," "]}),e.jsx("a",{href:"https://glpi-project.org/documentation/",target:"_blank",rel:"noopener noreferrer",className:"font-medium underline hover:opacity-80",children:s("admin:tenants.ticketing.glpi.docLink")})]})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.baseUrl"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.baseUrlHelp")})]}),e.jsx("input",{type:"url",value:q,onChange:W=>{U(W.target.value),L(G=>{const{glpiBaseUrl:_,...se}=G;return se})},placeholder:"https://glpi.example.com",className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border ${Q("glpiBaseUrl")} bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow`}),R.glpiBaseUrl&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:R.glpiBaseUrl})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.clientId"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.clientIdHelp")})]}),e.jsx("input",{type:"text",value:z,onChange:W=>{ee(W.target.value),L(G=>{const{glpiClientId:_,...se}=G;return se})},placeholder:s("admin:tenants.ticketing.glpi.clientIdPlaceholder"),className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border ${Q("glpiClientId")} bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] font-mono text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow`}),R.glpiClientId&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:R.glpiClientId})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.clientSecret"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.clientSecretHelp")}),T?.hasGlpiClientSecret&&e.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-[var(--success-text)]",children:[e.jsx(r.CheckCircle,{className:"w-3 h-3"}),s("common:configured")]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:B?"text":"password",autoComplete:"new-password",value:ae,onChange:W=>{$(W.target.value),L(G=>{const{glpiClientSecret:_,...se}=G;return se})},placeholder:T?.hasGlpiClientSecret?"••••••••••••••••":s("admin:tenants.ticketing.glpi.clientSecretPlaceholder"),className:`w-full px-3 py-2.5 pr-10 rounded-[var(--radius-input)] border ${Q("glpiClientSecret")} bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] font-mono text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow`}),e.jsx("button",{type:"button",onClick:()=>P(!B),className:"absolute right-3 top-1/2 -translate-y-1/2 p-1 text-[var(--text-tertiary)] hover:text-[var(--text-primary)]",children:B?e.jsx(r.EyeOff,{className:"w-4 h-4"}):e.jsx(r.Eye,{className:"w-4 h-4"})})]}),R.glpiClientSecret&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:R.glpiClientSecret})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.username"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.usernameHelp")})]}),e.jsx("input",{type:"text",value:X,onChange:W=>{J(W.target.value),L(G=>{const{glpiUsername:_,...se}=G;return se})},placeholder:s("admin:tenants.ticketing.glpi.usernamePlaceholder"),className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border ${Q("glpiUsername")} bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow`}),R.glpiUsername&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:R.glpiUsername})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.password"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.passwordHelp")}),T?.hasGlpiPassword&&e.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-[var(--success-text)]",children:[e.jsx(r.CheckCircle,{className:"w-3 h-3"}),s("common:configured")]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:B?"text":"password",autoComplete:"new-password",value:F,onChange:W=>{A(W.target.value),L(G=>{const{glpiPassword:_,...se}=G;return se})},placeholder:T?.hasGlpiPassword?"••••••••••••••••":s("admin:tenants.ticketing.glpi.passwordPlaceholder"),className:`w-full px-3 py-2.5 pr-10 rounded-[var(--radius-input)] border ${Q("glpiPassword")} bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] font-mono text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow`}),e.jsx("button",{type:"button",onClick:()=>P(!B),className:"absolute right-3 top-1/2 -translate-y-1/2 p-1 text-[var(--text-tertiary)] hover:text-[var(--text-primary)]",children:B?e.jsx(r.EyeOff,{className:"w-4 h-4"}):e.jsx(r.Eye,{className:"w-4 h-4"})})]}),R.glpiPassword&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:R.glpiPassword})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.entityId"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.entityIdHelp")})]}),e.jsx("input",{type:"number",min:"0",value:j,onChange:W=>M(W.target.value),placeholder:s("admin:tenants.ticketing.glpi.entityIdPlaceholder"),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)] placeholder-[var(--text-muted)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.requestTypeId"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.requestTypeIdHelp")})]}),e.jsx("input",{type:"number",min:"0",value:O,onChange:W=>w(W.target.value),placeholder:s("admin:tenants.ticketing.glpi.requestTypeIdPlaceholder"),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)] placeholder-[var(--text-muted)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow"})]}),e.jsx("div",{className:"flex flex-col sm:flex-row items-stretch sm:items-center gap-2 sm:gap-3 pt-2",children:e.jsxs("button",{onClick:ce,disabled:b||!q||!z||!ae&&!T?.hasGlpiClientSecret||!X||!F&&!T?.hasGlpiPassword,className:"inline-flex items-center justify-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:[b?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.TestTube,{className:"w-4 h-4"}),s("admin:tenants.ticketing.testConnection")]})}),y&&e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${y.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 gap-2",children:[y.success?e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)]"}):e.jsx(r.AlertTriangle,{className:"w-5 h-5 text-[var(--error-text)]"}),e.jsx("span",{className:`font-medium ${y.success?"text-[var(--success-text)]":"text-[var(--error-text)]"}`,children:y.success?s("admin:tenants.ticketing.connectionSuccessful"):s("admin:tenants.ticketing.connectionFailed")})]}),!y.success&&y.errorMessage&&e.jsx("p",{className:"mt-2 text-sm text-[var(--error-text)]",children:y.errorMessage})]})]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(Ze,{icon:r.Clock,title:s("admin:tenants.ticketing.sync.title"),description:s("admin:tenants.ticketing.sync.description"),children:e.jsxs("div",{className:"divide-y divide-[var(--border-subtle)]",children:[e.jsx(da,{checked:v,onChange:()=>N(!v),label:s("admin:tenants.ticketing.sync.enabledLabel"),description:s("admin:tenants.ticketing.sync.enabledDescription"),disabled:!te}),e.jsxs("div",{className:"py-4",children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-2",children:s("admin:tenants.ticketing.sync.intervalLabel")}),e.jsxs("select",{value:ie,onChange:W=>le(Number(W.target.value)),disabled:!te||!v,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)] disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsxs("option",{value:15,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["15 ",s("common:minutes")]}),e.jsxs("option",{value:30,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["30 ",s("common:minutes")]}),e.jsxs("option",{value:60,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["1 ",s("common:hour")]}),e.jsxs("option",{value:120,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["2 ",s("common:hours")]}),e.jsxs("option",{value:360,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["6 ",s("common:hours")]}),e.jsxs("option",{value:720,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["12 ",s("common:hours")]}),e.jsxs("option",{value:1440,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["24 ",s("common:hours")]})]})]})]})}),T?.isConfigured&&te&&e.jsx(Ze,{icon:r.Zap,title:s("admin:tenants.ticketing.syncStatus.title"),description:s("admin:tenants.ticketing.syncStatus.description"),action:e.jsxs("button",{onClick:ge,disabled:u,className:"inline-flex items-center gap-2 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)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[u?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.RefreshCw,{className:"w-4 h-4"}),s("admin:tenants.ticketing.syncStatus.syncNow")]}),children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(r.Clock,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:s("admin:tenants.ticketing.syncStatus.lastSync")})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:T.lastSyncAt?new Date(T.lastSyncAt).toLocaleString():s("admin:tenants.ticketing.syncStatus.never")})]}),e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${T.lastSyncError?"bg-[var(--error-bg)] border-[var(--error-border)]":"bg-[var(--success-bg)] border-[var(--success-border)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[T.lastSyncError?e.jsx(r.AlertTriangle,{className:"w-4 h-4 text-[var(--error-text)]"}):e.jsx(r.CheckCircle,{className:"w-4 h-4 text-[var(--success-text)]"}),e.jsx("span",{className:`text-sm font-medium ${T.lastSyncError?"text-[var(--error-text)]":"text-[var(--success-text)]"}`,children:s("admin:tenants.ticketing.syncStatus.status")})]}),e.jsx("p",{className:`text-sm ${T.lastSyncError?"text-[var(--error-text)]":"text-[var(--success-text)]"}`,children:T.lastSyncError||s("admin:tenants.ticketing.syncStatus.healthy")})]})]}),f&&e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${f.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 gap-2 mb-3",children:[f.success?e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)]"}):e.jsx(r.AlertTriangle,{className:"w-5 h-5 text-[var(--error-text)]"}),e.jsx("span",{className:`font-medium ${f.success?"text-[var(--success-text)]":"text-[var(--error-text)]"}`,children:f.success?s("admin:tenants.ticketing.syncStatus.syncSuccess"):s("admin:tenants.ticketing.syncStatus.syncFailed")})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)]",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:s("admin:tenants.ticketing.syncStatus.ticketsUpdated")}),e.jsx("p",{className:"font-semibold text-[var(--success-text)]",children:f.ticketsUpdated})]}),e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)]",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:s("admin:tenants.ticketing.syncStatus.ticketsFailed")}),e.jsx("p",{className:`font-semibold ${f.ticketsFailed>0?"text-[var(--error-text)]":"text-[var(--text-primary)]"}`,children:f.ticketsFailed})]})]}),f.errorMessage&&e.jsx("p",{className:"mt-3 text-sm text-[var(--error-text)]",children:f.errorMessage})]})]})}),e.jsx("div",{className:"flex flex-col-reverse sm:flex-row items-stretch sm:items-center gap-2 sm:gap-3",children:e.jsxs("button",{onClick:K,disabled:i,className:"inline-flex items-center justify-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:[i?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),s("common:save")]})})]})]})]})}const xt=["entra","support"];function xa(){const{t}=de.useTranslation(["admin","common"]),{id:n}=xe.useParams(),s=xe.useNavigate(),{activeTab:l,setActiveTab:d}=tt.useTabNavigation("entra",xt),i=bt(n);if(a.useEffect(()=>{if(!n){s("/administration/tenants");return}i.loadTenant()},[n]),i.loading)return e.jsx("div",{className:"p-6 flex items-center justify-center min-h-screen",children:e.jsxs("div",{className:"text-center",children:[e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin mx-auto mb-2 text-[var(--text-secondary)]"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:t("common:loading")})]})});if(!i.tenant)return e.jsxs("div",{className:"p-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants"}]}),e.jsx("div",{className:"mt-4 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:i.error||t("admin:tenants.notFound")})]})})]});const c=i.tenant;return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants"},{label:c.name,href:`/administration/tenants/${n}`},{label:t("admin:tenants.settings.title")}]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>s(`/administration/tenants/${n}`),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:e.jsx(r.Settings,{className:"w-5 h-5 text-[var(--color-accent-500)]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold text-[var(--text-primary)]",children:t("admin:tenants.settings.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:c.name})]})]})]}),i.error&&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:i.error})]})}),e.jsx("div",{className:"border-b border-[var(--border-color)]",children:e.jsx("div",{className:"flex gap-1 -mb-px",children:xt.map(b=>e.jsx("button",{onClick:()=>d(b),className:`px-4 py-2 border-b-2 transition-colors ${l===b?"border-[var(--primary-color)] text-[var(--primary-color)]":"border-transparent text-[var(--text-secondary)] hover:text-[var(--text-primary)]"}`,children:t(`admin:tenants.settings.tabs.${b}`)},b))})}),e.jsxs("div",{children:[l==="entra"&&n&&e.jsx(la,{tenantId:n,tenantName:c.name,tenantSlug:c.slug}),l==="support"&&n&&e.jsx(ma,{tenantId:n,tenantName:c.name})]})]})}function ua(){const{t}=de.useTranslation(["admin","common"]),[n,s]=a.useState([]),[l,d]=a.useState(!0),[i,c]=a.useState(null),[b,h]=a.useState(null),[u,m]=a.useState({}),[o,x]=a.useState(null),p=a.useCallback(async()=>{try{d(!0),c(null);const T=await we.tenantTypeSettingsApi.getAll();s(T);const g={};for(const f of T)g[f.type]={icon:f.icon,iconType:f.iconType,color:f.color,displayName:f.displayName,description:f.description??""};m(g)}catch{c(t("admin:tenantTypeSettings.loadError"))}finally{d(!1)}},[t]);a.useEffect(()=>{p()},[p]);const S=async T=>{const g=u[T];if(g)try{x(T),c(null);const f={icon:g.icon,iconType:g.iconType,color:g.color,displayName:g.displayName,description:g.description||null};await we.tenantTypeSettingsApi.update(T,f),h(t("admin:tenantTypeSettings.saveSuccess")),setTimeout(()=>h(null),3e3),await p()}catch{c(t("admin:tenantTypeSettings.saveError"))}finally{x(null)}},B=(T,g,f)=>{m(D=>({...D,[T]:{...D[T],[g]:f}}))},P=T=>{const g=n.find(D=>D.type===T),f=u[T];return!g||!f?!1:g.icon!==f.icon||g.color!==f.color||g.displayName!==f.displayName||(g.description??"")!==f.description};return l?e.jsx("div",{className:"p-6 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:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants"},{label:t("admin:tenantTypeSettings.title")}]}),e.jsx(E.PageHeader,{title:t("admin:tenantTypeSettings.title"),subtitle:t("admin:tenantTypeSettings.subtitle"),icon:e.jsx(r.Palette,{className:"w-6 h-6"})}),i&&e.jsxs("div",{className:"p-4 rounded-lg bg-red-500/10 border border-red-500/20 flex items-center gap-3",children:[e.jsx(r.AlertTriangle,{className:"w-5 h-5 text-red-500 flex-shrink-0"}),e.jsx("p",{className:"text-red-500",children:i})]}),b&&e.jsxs("div",{className:"p-4 rounded-lg bg-green-500/10 border border-green-500/20 flex items-center gap-3",children:[e.jsx(r.CheckCircle,{className:"w-5 h-5 text-green-500 flex-shrink-0"}),e.jsx("p",{className:"text-green-500",children:b})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:n.map(T=>{const g=u[T.type];if(!g)return null;const f=we.getLucideIcon(g.icon),D=we.getColorClasses(g.color);return e.jsxs("div",{className:"p-6 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)] space-y-5",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:`w-14 h-14 rounded-xl flex items-center justify-center ${D.bg}`,children:e.jsx(f,{className:`w-7 h-7 ${D.text}`})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:g.displayName}),e.jsx("p",{className:"text-sm text-[var(--text-tertiary)]",children:T.type})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:t("admin:tenantTypeSettings.displayName")}),e.jsx("input",{type:"text",value:g.displayName,onChange:y=>B(T.type,"displayName",y.target.value),className:"w-full px-3 py-2 rounded-lg 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)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:t("admin:tenantTypeSettings.icon")}),e.jsxs("div",{className:"relative",children:[e.jsx("select",{value:g.icon,onChange:y=>B(T.type,"icon",y.target.value),className:"w-full px-3 py-2 pr-8 rounded-lg border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] appearance-none focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",children:we.getAvailableIconNames().map(y=>e.jsx("option",{value:y,children:y},y))}),e.jsx(r.ChevronDown,{className:"absolute right-2 top-1/2 transform -translate-y-1/2 w-4 h-4 text-[var(--text-tertiary)] pointer-events-none"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:t("admin:tenantTypeSettings.color")}),e.jsx("div",{className:"flex flex-wrap gap-2",children:we.getAvailableColors().map(y=>{const H=we.getColorClasses(y);return e.jsx("button",{onClick:()=>B(T.type,"color",y),className:`w-8 h-8 rounded-full flex items-center justify-center transition-all ${H.bg} ${g.color===y?"ring-2 ring-offset-2 ring-[var(--color-accent-500)]":""}`,title:y,children:e.jsx("div",{className:`w-4 h-4 rounded-full ${H.text.replace("text-","bg-")}`})},y)})})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:t("admin:tenantTypeSettings.description")}),e.jsx("textarea",{value:g.description,onChange:y=>B(T.type,"description",y.target.value),rows:2,className:"w-full px-3 py-2 rounded-lg 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)] resize-none"})]}),e.jsxs("button",{onClick:()=>S(T.type),disabled:!P(T.type)||o===T.type,className:"w-full flex items-center justify-center gap-2 px-4 py-2 rounded-lg bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[o===T.type?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),t("common:save")]})]},T.type)})})]})}const ut={Pending:{bgColor:"bg-[var(--warning-bg)]",textColor:"text-[var(--warning-text)]"},Verified:{bgColor:"bg-[var(--success-bg)]",textColor:"text-[var(--success-text)]"},Rejected:{bgColor:"bg-[var(--error-bg)]",textColor:"text-[var(--error-text)]"}};function pa(){const{t}=de.useTranslation(["admin","common"]),n=xe.useNavigate(),[s,l]=a.useState([]),[d,i]=a.useState(!0),[c,b]=a.useState(null),[h,u]=a.useState(1),[m]=a.useState(10),[o,x]=a.useState(1),[p,S]=a.useState(""),[B,P]=a.useState("All"),T=a.useCallback(async y=>{i(!0),b(null);try{const H=await E.adminApi.organisations.getAll({page:h,pageSize:m,search:p||void 0,verificationStatus:B!=="All"?B:void 0});y?.aborted||(l(H.items),x(Math.ceil(H.totalCount/m)))}catch(H){y?.aborted||(console.error("Failed to load organisations:",H),b(t("common:error","An error occurred")))}finally{y?.aborted||i(!1)}},[h,m,p,B,t]);a.useEffect(()=>{const y=new AbortController;return T(y.signal),()=>y.abort()},[T]);const g=y=>{S(y.target.value),u(1)},f=["All","Pending","Verified","Rejected"],D=[{key:"name",label:t("admin:organisations.columns.name","Name"),sortable:!0,render:y=>e.jsxs("div",{children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)]",children:y.name}),y.legalName&&e.jsx("div",{className:"text-xs text-[var(--text-secondary)]",children:y.legalName})]})},{key:"countryCode",label:t("admin:organisations.columns.country","Country"),sortable:!0},{key:"businessIdentifier",label:t("admin:organisations.columns.identifier","Business ID"),sortable:!0,render:y=>e.jsx("span",{className:"font-mono text-[var(--text-primary)]",children:y.businessIdentifier})},{key:"verificationStatus",label:t("admin:organisations.columns.status","Status"),sortable:!0,render:y=>e.jsx("span",{className:`inline-block px-3 py-1 rounded-[var(--radius-badge)] text-xs font-medium ${ut[y.verificationStatus].bgColor} ${ut[y.verificationStatus].textColor}`,children:t(`admin:organisations.status.${y.verificationStatus.toLowerCase()}`,y.verificationStatus)})},{key:"createdAt",label:t("admin:organisations.columns.created","Created"),sortable:!0,render:y=>e.jsx("span",{className:"text-[var(--text-secondary)]",children:new Date(y.createdAt).toLocaleDateString()})},{key:"actions",label:t("admin:organisations.columns.actions","Actions"),align:"right",render:y=>e.jsxs("button",{onClick:H=>{H.stopPropagation(),n(`/administration/tenants/create?type=b2b&organisationId=${y.id}`)},className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-[var(--radius-button)] bg-[var(--info-bg)] text-[var(--info-text)] border border-[var(--info-border)] hover:opacity-80 transition-colors",title:t("admin:organisations.createTenant","Create B2B tenant for this organisation"),children:[e.jsx(r.Building,{className:"w-3.5 h-3.5"}),t("admin:organisations.createTenantButton","Create tenant")]})}];return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants/list"},{label:t("admin:organisations.title","Organisations")}]}),e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("admin:organisations.title","Organisations")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:organisations.description","Manage organisations and verify their details")})]}),e.jsxs("button",{onClick:()=>n("/administration/tenants/organisations/create"),className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-500)] text-white hover:bg-[var(--color-accent-600)] transition-colors",children:[e.jsx(r.Plus,{className:"w-5 h-5"}),t("common:create","Create")]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsx("div",{className:"relative flex-1",children:e.jsx("input",{type:"text",placeholder:t("common:search","Search"),value:p,onChange:g,className:"input w-full pl-10"})}),e.jsx("div",{className:"flex flex-wrap gap-2",children:f.map(y=>e.jsx("button",{onClick:()=>{P(y),u(1)},className:`px-3 py-1 rounded-[var(--radius-badge)] text-sm transition-colors ${B===y?"bg-[var(--color-accent-500)] text-white":"bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)]"}`,children:y==="All"?t("common:all","All"):t(`admin:organisations.status.${y.toLowerCase()}`,y)},y))})]}),c&&e.jsxs("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:c})]}),e.jsx("button",{onClick:()=>T(),className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:t("common:retry","Retry")})]}),e.jsx(E.DataTable,{data:s,columns:D,loading:d,getRowKey:y=>y.id,onRowClick:y=>n(`/administration/tenants/organisations/${y.id}`),emptyMessage:t("admin:organisations.empty","No organisations found")}),!d&&s.length>0&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"text-sm text-[var(--text-secondary)]",children:[t("common:page","Page")," ",h," ",t("common:of","of")," ",o]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>u(Math.max(1,h-1)),disabled:h===1,className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:t("common:previous","Previous")}),e.jsx("button",{onClick:()=>u(Math.min(o,h+1)),disabled:h>=o,className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:t("common:next","Next")})]})]})]})]})}const va={Pending:{bgColor:"bg-[var(--warning-bg)]",textColor:"text-[var(--warning-text)]"},Verified:{bgColor:"bg-[var(--success-bg)]",textColor:"text-[var(--success-text)]"},Rejected:{bgColor:"bg-[var(--error-bg)]",textColor:"text-[var(--error-text)]"}},pt=["info","contact","address"];function ga(){const{t}=de.useTranslation(["admin","common"]),{id:n}=xe.useParams(),s=xe.useNavigate(),[l,d]=xe.useSearchParams(),[i,c]=a.useState(null),[b,h]=a.useState(!0),[u,m]=a.useState(null),[o,x]=a.useState(!1),p=()=>{const k=l.get("tab");return k&&pt.includes(k)?k:"info"},[S,B]=a.useState(p),[P,T]=a.useState({show:!1,notes:""}),[g,f]=a.useState({show:!1,reason:""});a.useEffect(()=>{S==="info"?l.get("tab")&&(l.delete("tab"),d(l,{replace:!0})):l.get("tab")!==S&&d({tab:S},{replace:!0})},[S,l,d]);const D=a.useCallback(async()=>{if(!n){s("/administration/tenants/organisations");return}h(!0),m(null);try{const k=await E.adminApi.organisations.getById(n);c(k)}catch(k){console.error("Failed to load organisation:",k),m(t("admin:organisations.loadError","Failed to load organisation"))}finally{h(!1)}},[n,s,t]);a.useEffect(()=>{D()},[D]);const y=async()=>{if(i){x(!0);try{const k=await E.adminApi.organisations.verify(i.id,P.notes||void 0);c(k),T({show:!1,notes:""})}catch(k){console.error("Failed to verify organisation:",k),m(t("admin:organisations.verifyError","Failed to verify organisation"))}finally{x(!1)}}},H=async()=>{if(i){x(!0);try{const k=await E.adminApi.organisations.reject(i.id,g.reason);c(k),f({show:!1,reason:""})}catch(k){console.error("Failed to reject organisation:",k),m(t("admin:organisations.rejectError","Failed to reject organisation"))}finally{x(!1)}}},R=i&&(i.phone||i.email||i.website);if(b)return e.jsx("div",{className:"p-6 flex items-center justify-center min-h-[400px]",children:e.jsxs("div",{className:"text-center",children:[e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin mx-auto mb-2 text-[var(--text-secondary)]"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:t("common:loading","Loading")})]})});if(!i)return e.jsxs("div",{className:"p-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants/list"},{label:t("admin:organisations.title","Organisations"),href:"/administration/tenants/organisations"}]}),e.jsxs("div",{className:"mt-4 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:u||t("admin:organisations.notFound","Organisation not found")})]}),e.jsx("button",{onClick:D,className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:t("common:retry","Retry")})]})]});const L=va[i.verificationStatus];return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants/list"},{label:t("admin:organisations.title","Organisations"),href:"/administration/tenants/organisations"},{label:i.name}]}),e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>s("/administration/tenants/organisations"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:i.name}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:i.businessIdentifier})]})]}),e.jsx("span",{className:`px-4 py-2 rounded-[var(--radius-badge)] text-sm font-medium ${L.bgColor} ${L.textColor}`,children:t(`admin:organisations.status.${i.verificationStatus.toLowerCase()}`,i.verificationStatus)})]}),u&&e.jsxs("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:u})]}),e.jsx("button",{onClick:D,className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:t("common:retry","Retry")})]}),e.jsx("div",{className:"border-b border-[var(--border-color)]",children:e.jsx("div",{className:"flex gap-1 -mb-px",children:pt.map(k=>e.jsx("button",{onClick:()=>B(k),className:`px-4 py-2 border-b-2 transition-colors ${S===k?"border-[var(--primary-color)] text-[var(--primary-color)]":"border-transparent text-[var(--text-secondary)] hover:text-[var(--text-primary)]"}`,children:t(`admin:organisations.tabs.${k}`,k)},k))})}),S==="info"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.name","Organisation Name")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)]",children:i.name})]}),i.legalName&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.legalName","Legal Name")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)]",children:i.legalName})]}),e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.country","Country")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)]",children:i.countryCode})]}),e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:i.businessIdentifierType}),e.jsx("p",{className:"mt-1 font-mono text-[var(--text-primary)]",children:i.businessIdentifier})]}),i.vatNumber&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.vatNumber","VAT Number")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)]",children:i.vatNumber})]})]}),i.verificationStatus!=="Verified"&&e.jsxs("div",{className:"flex gap-2 pt-4",children:[(i.verificationStatus==="Pending"||i.verificationStatus==="Rejected")&&e.jsxs("button",{onClick:()=>T({show:!0,notes:""}),disabled:o,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--success-bg)] text-[var(--success-text)] hover:opacity-90 disabled:opacity-50 transition-opacity",children:[e.jsx(r.Check,{className:"w-4 h-4"}),t("admin:organisations.verify","Verify")]}),i.verificationStatus==="Pending"&&e.jsxs("button",{onClick:()=>f({show:!0,reason:""}),disabled:o,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--error-bg)] text-[var(--error-text)] hover:opacity-90 disabled:opacity-50 transition-opacity",children:[e.jsx(r.X,{className:"w-4 h-4"}),t("admin:organisations.reject","Reject")]})]})]}),S==="contact"&&(R?e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[i.phone&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.phone","Phone")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)]",children:i.phone})]}),i.email&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.email","Email")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)]",children:i.email})]}),i.website&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.website","Website")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)] break-all",children:i.website})]})]}):e.jsx("div",{className:"py-12 text-center text-[var(--text-secondary)]",children:t("admin:organisations.noContact","No contact information available")})),S==="address"&&(i.address?e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.address","Address")}),e.jsx("p",{className:"text-[var(--text-primary)]",children:i.address.street}),i.address.street2&&e.jsx("p",{className:"text-[var(--text-primary)]",children:i.address.street2})]}),e.jsxs("div",{children:[e.jsxs("p",{className:"text-[var(--text-primary)]",children:[i.address.postalCode," ",i.address.city]}),i.address.state&&e.jsx("p",{className:"text-[var(--text-primary)]",children:i.address.state})]}),e.jsx("div",{children:e.jsxs("p",{className:"text-[var(--text-primary)]",children:[i.address.country," (",i.address.countryCode,")"]})})]})}):e.jsx("div",{className:"py-12 text-center text-[var(--text-secondary)]",children:t("admin:organisations.noAddress","No address information available")})),P.show&&e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center",children:e.jsxs("div",{className:"bg-[var(--bg-primary)] rounded-[var(--radius-card)] p-6 max-w-md w-full mx-4",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)] mb-4",children:t("admin:organisations.verifyTitle","Verify Organisation")}),e.jsx("div",{className:"mb-4 space-y-3",children:e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm text-[var(--text-secondary)] mb-1",children:t("admin:organisations.verifyNotes","Notes (optional)")}),e.jsx("textarea",{value:P.notes,onChange:k=>T({...P,notes:k.target.value}),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",rows:3,placeholder:t("admin:organisations.verifyNotesPlaceholder","Add notes about verification")})]})}),e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsx("button",{onClick:()=>T({show:!1,notes:""}),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)]",children:t("common:cancel","Cancel")}),e.jsx("button",{onClick:y,disabled:o,className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--success-bg)] text-[var(--success-text)] hover:opacity-90 disabled:opacity-50",children:o?t("common:saving","Saving"):t("admin:organisations.verify","Verify")})]})]})}),g.show&&e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center",children:e.jsxs("div",{className:"bg-[var(--bg-primary)] rounded-[var(--radius-card)] p-6 max-w-md w-full mx-4",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)] mb-4",children:t("admin:organisations.rejectTitle","Reject Organisation")}),e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{className:"block text-sm text-[var(--text-secondary)] mb-1",children:t("admin:organisations.rejectReason","Reason")}),e.jsx("textarea",{value:g.reason,onChange:k=>f({...g,reason:k.target.value}),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",rows:3,placeholder:t("admin:organisations.rejectReasonPlaceholder","Explain why this organisation is rejected")})]}),e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsx("button",{onClick:()=>f({show:!1,reason:""}),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)]",children:t("common:cancel","Cancel")}),e.jsx("button",{onClick:H,disabled:o,className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--error-bg)] text-[var(--error-text)] hover:opacity-90 disabled:opacity-50",children:o?t("common:saving","Saving"):t("admin:organisations.reject","Reject")})]})]})})]})}const vt={CH:{types:["UID_CHE"],defaultType:"UID_CHE",country:"Switzerland",vatSuffix:"MWST"},FR:{types:["SIREN","SIRET"],defaultType:"SIREN",country:"France",vatSuffix:"TVA"},DE:{types:["HRB","HRA"],defaultType:"HRB",country:"Germany",vatSuffix:"USt"},BE:{types:["BCE_KBO"],defaultType:"BCE_KBO",country:"Belgium",vatSuffix:"TVA"},NL:{types:["KVK"],defaultType:"KVK",country:"Netherlands",vatSuffix:"BTW"},ES:{types:["CIF"],defaultType:"CIF",country:"Spain",vatSuffix:"IVA"},IT:{types:["PartitaIVA"],defaultType:"PartitaIVA",country:"Italy",vatSuffix:"IVA"},GB:{types:["CRN"],defaultType:"CRN",country:"United Kingdom",vatSuffix:"VAT"}};function ba({data:t,onChange:n,onTenantNameSuggested:s,compact:l=!1,submitted:d=!1,className:i=""}){const{t:c,i18n:b}=de.useTranslation(["admin","common"]),[h,u]=a.useState(!1),[m,o]=a.useState(null),[x,p]=a.useState(!1),S=R=>{const L=R.toUpperCase().replace(/[^A-Z0-9]/g,"");let k=L.startsWith("CHE")?L.slice(3):L.replace(/[^0-9]/g,"");return k=k.slice(0,9),k.length===0?"CHE-":k.length<=3?`CHE-${k}`:k.length<=6?`CHE-${k.slice(0,3)}.${k.slice(3)}`:`CHE-${k.slice(0,3)}.${k.slice(3,6)}.${k.slice(6)}`},B=()=>{switch(b.language?.substring(0,2).toLowerCase()){case"de":return"MWST";case"fr":return"TVA";case"it":return"IVA";default:return"MWST"}},P=R=>{let L=R;t.countryCode==="CH"&&(L=S(R)),n({...t,businessIdentifier:L,isFromRegistry:!1}),o(null),p(!1)},T=R=>{const L=vt[R];L&&n({...t,countryCode:R,businessIdentifierType:L.defaultType,businessIdentifier:R==="CH"?"CHE-":"",isFromRegistry:!1,address:{...t.address,countryCode:R,country:L.country}}),o(null),p(!1)};a.useEffect(()=>{t.countryCode==="CH"&&(!t.businessIdentifier||t.businessIdentifier==="")&&n({...t,businessIdentifier:"CHE-"})},[t.countryCode]);const g=async()=>{const R=t.businessIdentifier.replace(/[^0-9]/g,"");if(!t.businessIdentifier||R.length<9||t.countryCode!=="CH"){o(c("admin:tenants.organisation.lookupIncomplete","Please enter a complete CHE number (9 digits)"));return}u(!0),o(null),p(!1);try{const L=await E.adminApi.organisations.lookup(t.countryCode,t.businessIdentifier),k={...t,name:L.name||t.name,legalName:L.legalName||t.legalName,vatNumber:L.vatNumber?`${L.vatNumber} ${B()}`:t.vatNumber,phone:L.phone||t.phone,email:L.email||t.email,website:L.website||t.website,isFromRegistry:!0,address:{street:L.street||t.address.street,street2:L.street2||t.address.street2,postalCode:L.postalCode||t.address.postalCode,city:L.city||t.address.city,state:L.state||t.address.state,country:L.country||t.address.country,countryCode:L.countryCode||t.address.countryCode}};n(k),s&&L.name&&s(L.name),p(!0),setTimeout(()=>p(!1),3e3)}catch(L){console.error("[Zefix Lookup] Failed:",L);const k=L instanceof Error?L.message:"";k.includes("404")||k.includes("not found")?o(c("admin:tenants.organisation.lookupFailed","Company not found in registry")):k.includes("credentials")||k.includes("401")?o(c("admin:tenants.organisation.lookupAuthError","Registry service not configured")):o(c("admin:tenants.organisation.lookupFailed","Company not found in registry"))}finally{u(!1)}},f=l?"w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] bg-[var(--bg-secondary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]":"w-full px-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)]",D="border-[var(--error-text)] ring-1 ring-[var(--error-text)]",y=R=>R?`${f} ${D}`:f,H="block text-sm font-medium text-[var(--text-secondary)] mb-1";return e.jsxs("div",{className:`space-y-4 ${i}`,children:[e.jsxs("div",{children:[e.jsxs("label",{className:H,children:[c("admin:tenants.organisation.form.name","Organisation Name")," *"]}),e.jsx("input",{type:"text",value:t.name,onChange:R=>n({...t,name:R.target.value}),className:y(d&&!t.name.trim()),placeholder:c("admin:tenants.organisation.form.namePlaceholder","Enter organisation name")}),d&&!t.name.trim()&&e.jsx("p",{className:"text-xs text-[var(--error-text)] mt-1",children:c("common:validation.required","This field is required")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:H,children:[c("admin:tenants.organisation.form.country","Country")," *"]}),e.jsx("select",{value:t.countryCode,onChange:R=>T(R.target.value),className:f,children:Object.entries(vt).map(([R,L])=>e.jsxs("option",{value:R,children:[L.country," (",R,")"]},R))})]}),e.jsxs("div",{children:[e.jsxs("label",{className:H,children:[t.businessIdentifierType," *"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{type:"text",value:t.businessIdentifier,onChange:R=>P(R.target.value),className:`flex-1 ${f} font-mono`,placeholder:t.countryCode==="CH"?"CHE-123.456.789":c("admin:tenants.organisation.form.identifierPlaceholder","Enter identifier")}),t.countryCode==="CH"&&e.jsx("button",{type:"button",onClick:g,disabled:h||!t.businessIdentifier||t.businessIdentifier.replace(/[^0-9]/g,"").length<9,className:"px-3 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-500)] text-white hover:bg-[var(--color-accent-600)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors flex items-center",title:c("admin:tenants.organisation.lookupTitle","Search in registry"),children:h?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Search,{className:"w-4 h-4"})})]}),m&&e.jsxs("p",{className:"text-xs text-[var(--error-text)] mt-1 flex items-center gap-1",children:[e.jsx(r.AlertTriangle,{className:"w-3 h-3"}),m]}),x&&e.jsxs("p",{className:"text-xs text-[var(--success-text)] mt-1 flex items-center gap-1",children:[e.jsx(r.Check,{className:"w-3 h-3"}),c("admin:tenants.organisation.lookupSuccess","Information retrieved successfully")]}),t.countryCode==="CH"&&!m&&!x&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-1",children:t.businessIdentifier.replace(/[^0-9]/g,"").length<9?c("admin:tenants.organisation.lookupHintIncomplete","Enter 9 digits to enable Zefix lookup"):c("admin:tenants.organisation.lookupHint","Click search button to auto-fill from Zefix")})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("label",{className:H,children:[c("admin:tenants.organisation.form.address","Address")," *"]}),e.jsxs("div",{children:[e.jsx("input",{type:"text",value:t.address.street,onChange:R=>n({...t,address:{...t.address,street:R.target.value}}),className:y(d&&!t.address.street.trim()),placeholder:c("admin:tenants.organisation.form.streetPlaceholder","Street address")}),d&&!t.address.street.trim()&&e.jsx("p",{className:"text-xs text-[var(--error-text)] mt-1",children:c("common:validation.required","This field is required")})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{children:[e.jsx("input",{type:"text",value:t.address.postalCode,onChange:R=>n({...t,address:{...t.address,postalCode:R.target.value}}),className:y(d&&!t.address.postalCode.trim()),placeholder:c("admin:tenants.organisation.form.postalCodePlaceholder","Postal code")}),d&&!t.address.postalCode.trim()&&e.jsx("p",{className:"text-xs text-[var(--error-text)] mt-1",children:c("common:validation.required","This field is required")})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("input",{type:"text",value:t.address.city,onChange:R=>n({...t,address:{...t.address,city:R.target.value}}),className:y(d&&!t.address.city.trim()),placeholder:c("admin:tenants.organisation.form.cityPlaceholder","City")}),d&&!t.address.city.trim()&&e.jsx("p",{className:"text-xs text-[var(--error-text)] mt-1",children:c("common:validation.required","This field is required")})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{className:H,children:[c("admin:tenants.organisation.form.vatNumber","VAT Number")," (",c("common:optional","optional"),")"]}),e.jsx("input",{type:"text",value:t.vatNumber||"",onChange:R=>n({...t,vatNumber:R.target.value||void 0}),className:f,placeholder:t.countryCode==="CH"?`CHE-123.456.789 ${B()}`:"FRXX123456789"}),t.countryCode==="CH"&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-1",children:c("admin:tenants.organisation.vatHint","VAT suffix will be added automatically based on language (MWST/TVA/IVA)")})]})]})}function ha(){return{name:"",countryCode:"CH",businessIdentifierType:"UID_CHE",businessIdentifier:"CHE-",isFromRegistry:!1,address:{street:"",postalCode:"",city:"",state:null,country:"Switzerland",countryCode:"CH"}}}function fa(t){return{name:t.name,legalName:t.legalName,countryCode:t.countryCode,businessIdentifierType:t.businessIdentifierType,businessIdentifier:t.businessIdentifier,vatNumber:t.vatNumber,phone:t.phone,email:t.email,website:t.website,isFromRegistry:t.isFromRegistry||void 0,address:{street:t.address.street,street2:t.address.street2??void 0,postalCode:t.address.postalCode,city:t.address.city,state:t.address.state??void 0,country:t.address.country,countryCode:t.address.countryCode}}}function ya(){const{t}=de.useTranslation(["admin","common"]),n=xe.useNavigate(),[s,l]=a.useState(ha()),[d,i]=a.useState(!1),[c,b]=a.useState(null),[h,u]=a.useState(!1),m=s.name.trim()&&s.address.street.trim()&&s.address.city.trim()&&s.address.postalCode.trim(),o=async x=>{if(x.preventDefault(),u(!0),!!m){i(!0),b(null);try{const p=fa(s),S=await E.adminApi.organisations.create(p);n(`/administration/tenants/organisations/${S.id}`)}catch(p){console.error("Failed to create organisation:",p),b(p instanceof Error?p.message:t("admin:organisations.createError","Failed to create organisation"))}finally{i(!1)}}};return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants/list"},{label:t("admin:organisations.title","Organisations"),href:"/administration/tenants/organisations"},{label:t("common:create","Create")}]}),e.jsx("div",{className:"flex items-center justify-between gap-4",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>n("/administration/tenants/organisations"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("admin:organisations.create","Create Organisation")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:organisations.createDescription","Add a new organisation to the system")})]})]})}),c&&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:c})]})}),e.jsxs("form",{onSubmit:o,className:"space-y-6",children:[e.jsx("div",{className:"p-6 rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-card)]",children:e.jsx(ba,{data:s,onChange:l,submitted:h})}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{type:"button",onClick:()=>n("/administration/tenants/organisations"),className:"px-6 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:t("common:cancel","Cancel")}),e.jsxs("button",{type:"submit",disabled:d,className:"flex items-center gap-2 px-6 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-500)] text-white hover:bg-[var(--color-accent-600)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[d&&e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}),d?t("common:saving","Saving"):t("common:create","Create")]})]})]})]})}exports.OrganisationCreatePage=ya;exports.OrganisationDetailPage=ga;exports.OrganisationsListPage=pa;exports.TenantAccessRequestsPage=Ks;exports.TenantCreatePage=Ns;exports.TenantDetailPage=hs;exports.TenantSettingsPage=xa;exports.TenantTemplateCreatePage=Hs;exports.TenantTemplateDetailPage=Fs;exports.TenantTypeSettingsPage=ua;exports.TenantsBusinessPage=qs;exports.TenantsDashboardPage=Ts;exports.TenantsOtherPage=Vs;exports.TenantsPage=_e;exports.TenantsPersonalPage=zs;exports.TenantsTemplatePage=Us;
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("react"),xe=require("react-router-dom"),de=require("react-i18next"),r=require("lucide-react"),E=require("./index-IgLVXPg8.js"),we=require("./tenantIconMap-CTMuSt18.js"),Ve=require("./ConfirmModal-CYWRiVoD.js"),tt=require("./useTabNavigation-BVtbCTd5.js"),De=require("./ticketingApi-J0vC_t7r.js"),St=require("./groupsApi-hB9kSWEd.js"),Qe=require("./useAccessRequests-DT7X4FAK.js"),be=require("recharts"),kt=require("./accessRequestsApi-B-4TJ5_U.js"),Je=require("./ResolutionModal-Duat18qV.js");function At(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const l=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(n,s,l.get?l:{enumerable:!0,get:()=>t[s]})}}return n.default=t,Object.freeze(n)}const gt=At(r),Tt=["Pending","Active","Suspended","Archived"],Lt=["Personal","Business","System"],Et={search:"",status:"",type:"Business"},It=t=>t&&Tt.includes(t)?t:"",Rt=t=>t&&Lt.includes(t)?t:"",Mt=t=>{const n=parseInt(t||"1",10);return isNaN(n)||n<1?1:n},Bt=(t,n)=>({...Et,type:t||(n?"":"Business")});function Ft(t,n,s){return a.useMemo(()=>{let l=0;return t.status&&l++,!n&&!s&&t.type&&l++,l},[t,n,s])}function Pt(t,n){const[s,l]=a.useState(t);return a.useEffect(()=>{const d=setTimeout(()=>l(t),n);return()=>clearTimeout(d)},[t,n]),s}const Dt={Pending:{color:"text-[var(--info-text)]",bgColor:"bg-[var(--info-bg)]",borderColor:"border-[var(--info-border)]",statusBadge:"pending"},Active:{color:"text-[var(--success-text)]",bgColor:"bg-[var(--success-bg)]",borderColor:"border-[var(--success-border)]",statusBadge:"active"},Suspended:{color:"text-[var(--warning-text)]",bgColor:"bg-[var(--warning-bg)]",borderColor:"border-[var(--warning-border)]",statusBadge:"warning"},Archived:{color:"text-[var(--text-tertiary)]",bgColor:"bg-[var(--bg-tertiary)]",borderColor:"border-[var(--border-color)]",statusBadge:"inactive"}},$t={Personal:{icon:r.User,label:"tenants.type.personal"},Business:{icon:r.Building,label:"tenants.type.business"},System:{icon:r.Server,label:"tenants.type.system"}};function _e({lockedType:t,excludeTypes:n}){const{t:s}=de.useTranslation("admin"),l=xe.useNavigate(),[d,i]=xe.useSearchParams(),{currentTenant:c,isGlobalView:b,refreshTenants:h}=E.useTenant(),u=E.useTenantUrl(),{getIconForType:m}=we.useTenantTypeSettings(),o=a.useMemo(()=>({search:d.get("search")||"",status:It(d.get("status")),type:t||Rt(d.get("type"))||(n?"":"Business")}),[]),[x,p]=a.useState([]),[S,B]=a.useState(!0),[P,T]=a.useState(o),[g,f]=a.useState(!1),[D,y]=a.useState(null),[H,R]=a.useState(null),[L,k]=a.useState(null),[Z,q]=a.useState("table"),[U,z]=a.useState(Mt(d.get("page"))),[ee,ae]=a.useState(1),[$,X]=a.useState(0),[J,F]=a.useState(null),[A,j]=a.useState("name"),[M,O]=a.useState(!1),w=Pt(P.search,300),v=Ft(P,t,n),N=a.useCallback(async()=>{try{B(!0),F(null);const C=await E.adminApi.tenants.getAll({page:U,pageSize:20,search:w||void 0,status:P.status||void 0,type:P.type||void 0,sortBy:A,sortDesc:M,excludeTypes:n});p(C.items),X(C.totalCount),ae(C.totalPages)}catch(C){console.error("Failed to load tenants:",C),F(s("tenants.loadError")),p([])}finally{B(!1)}},[U,w,P.status,P.type,A,M,s,c?.id,b,n]);a.useEffect(()=>{const C=new URLSearchParams;P.search&&C.set("search",P.search),P.status&&C.set("status",P.status),P.type&&C.set("type",P.type),U>1&&C.set("page",U.toString()),i(C,{replace:!0})},[P,U,i]),a.useEffect(()=>{N()},[N]);const ie=()=>{T(Bt(t,n)),z(1)},le=(C,oe)=>{t&&C==="type"||(T(je=>({...je,[C]:oe})),z(1))},te=C=>{y(null),k({tenant:C,action:"activate"})},Q=C=>{y(null),k({tenant:C,action:"suspend"})},pe=C=>{y(null),k({tenant:C,action:"archive"})},me=async()=>{if(!L)return;const{tenant:C,action:oe}=L;R(C.id);try{oe==="activate"?await E.adminApi.tenants.activate(C.id):oe==="suspend"?await E.adminApi.tenants.suspend(C.id):oe==="archive"&&await E.adminApi.tenants.archive(C.id),await h(),N()}catch(je){console.error(`Failed to ${oe} tenant:`,je)}finally{R(null),k(null)}},K=(C,oe)=>{switch(C){case"activate":return s("tenants.confirmActivate",{name:oe});case"suspend":return s("tenants.confirmSuspend",{name:oe});case"archive":return s("tenants.confirmArchive",{name:oe})}},ce=C=>{switch(C){case"activate":return s("tenants.actions.activate");case"suspend":return s("tenants.actions.suspend");case"archive":return s("tenants.actions.archive")}},ge=C=>{switch(C){case"activate":return"info";case"suspend":return"warning";case"archive":return"danger"}},W=()=>{if(!L)return null;const{tenant:C,action:oe}=L;return{message:K(oe,C.name),label:ce(oe),variant:ge(oe)}},G=a.useMemo(()=>({active:x.filter(C=>C.status==="Active").length,suspended:x.filter(C=>C.status==="Suspended").length,members:x.reduce((C,oe)=>C+(oe.memberCount??0),0),pendingRequests:x.reduce((C,oe)=>C+(oe.pendingAccessRequestCount??0),0)}),[x]),_=x,se=C=>{A===C?O(!M):(j(C),O(!1)),z(1)},V=({column:C})=>A!==C?e.jsx(r.ArrowUpDown,{className:"w-3.5 h-3.5 text-[var(--text-muted)] opacity-0 group-hover/th:opacity-100 transition-opacity"}):M?e.jsx(r.ArrowDown,{className:"w-3.5 h-3.5 text-[var(--color-accent-500)]"}):e.jsx(r.ArrowUp,{className:"w-3.5 h-3.5 text-[var(--color-accent-500)]"}),Y=C=>C==="Active"?"success":C==="Suspended"?"warning":C==="Pending"?"info":"default",re=()=>{if(n)return s("tenants.other.title");switch(t){case"Business":return s("tenants.enterprise.title");case"Personal":return s("tenants.personal.title");default:return s("tenants.title")}},ve=()=>{if(n)return s("tenants.other.subtitle");switch(t){case"Business":return s("tenants.enterprise.subtitle");case"Personal":return s("tenants.personal.subtitle");default:return s("tenants.subtitle")}},he=()=>{if(n)return r.Server;switch(t){case"Business":return r.Building;case"Personal":return r.User;default:return r.Building2}},fe=re(),ye=ve(),$e=he(),Te=!!t||!!n,Re=5+(Te?0:1)+1,Se=(C,oe,je="")=>e.jsx("th",{className:`text-left px-4 py-3 text-xs font-semibold text-[var(--text-tertiary)] uppercase tracking-wider cursor-pointer select-none group/th hover:text-[var(--text-primary)] transition-colors ${je}`,onClick:()=>se(oe),children:e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[C,e.jsx(V,{column:oe})]})}),Ue=C=>e.jsx("div",{className:"flex items-center justify-end gap-1",onClick:oe=>oe.stopPropagation(),onKeyDown:oe=>oe.stopPropagation(),role:"presentation",children:e.jsxs("div",{className:"relative",children:[e.jsx("button",{onClick:()=>y(D===C.id?null:C.id),className:"p-2 rounded-lg text-[var(--text-tertiary)] hover:bg-[var(--bg-tertiary)] transition-all",children:H===C.id?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.MoreHorizontal,{className:"w-4 h-4"})}),D===C.id&&e.jsxs("div",{className:"absolute right-0 mt-1 w-48 bg-[var(--bg-card)] border border-[var(--border-color)] shadow-lg z-50",style:{borderRadius:"var(--radius-card)"},children:[e.jsxs("button",{onClick:()=>{y(null),l(u(`/administration/tenants/${C.id}`))},className:"w-full flex items-center gap-2 px-4 py-2 text-sm hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(r.Eye,{className:"w-4 h-4"}),s("tenants.view")]}),e.jsxs("button",{onClick:()=>{y(null),l(u(`/administration/tenants/${C.id}`))},className:"w-full flex items-center gap-2 px-4 py-2 text-sm hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(r.Edit2,{className:"w-4 h-4"}),s("common.edit")]}),e.jsxs("button",{onClick:()=>{y(null),l(u(`/administration/tenants/${C.id}/members`))},className:"w-full flex items-center gap-2 px-4 py-2 text-sm hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(r.Users,{className:"w-4 h-4"}),s("tenants.actions.viewMembers")]}),e.jsx("div",{className:"border-t border-[var(--border-color)] my-1"}),C.status!=="Active"&&C.status!=="Archived"&&e.jsxs("button",{onClick:()=>te(C),className:"w-full flex items-center gap-2 px-4 py-2 text-sm text-[var(--success-text)] hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(r.PlayCircle,{className:"w-4 h-4"}),s("tenants.actions.activate")]}),C.status==="Active"&&e.jsxs("button",{onClick:()=>Q(C),className:"w-full flex items-center gap-2 px-4 py-2 text-sm text-[var(--warning-text)] hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(r.PauseCircle,{className:"w-4 h-4"}),s("tenants.actions.suspend")]}),C.status!=="Archived"&&e.jsxs("button",{onClick:()=>pe(C),className:"w-full flex items-center gap-2 px-4 py-2 text-sm text-[var(--error-text)] hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(r.Archive,{className:"w-4 h-4"}),s("tenants.actions.archive")]})]})]})}),Me=C=>{const oe=m(C.type),je=we.getLucideIcon(oe.icon),Pe=we.getColorClasses(oe.color),Ke=Dt[C.status];return e.jsxs("tr",{className:`group hover:bg-[var(--bg-hover)] transition-all cursor-pointer ${D===C.id?"relative z-10":""}`,onClick:()=>l(u(`/administration/tenants/${C.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-10 h-10 flex items-center justify-center ${Pe.bg}`,style:{borderRadius:"var(--radius-card)"},children:e.jsx(je,{className:`w-5 h-5 ${Pe.text}`})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)] group-hover:text-[var(--color-accent-600)] transition-colors truncate",children:C.name}),e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] truncate",children:C.slug})]})]})}),!Te&&e.jsxs("td",{className:"px-4 py-3 hidden md:table-cell",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(je,{className:`w-4 h-4 ${Pe.text}`}),e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:s($t[C.type].label)})]}),C.organisation?.name&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5 truncate",children:C.organisation.name})]}),e.jsx("td",{className:"px-4 py-3",children:e.jsx(E.StatusBadge,{status:Ke.statusBadge,label:s(`tenants.status.${C.status.toLowerCase()}`)})}),e.jsx("td",{className:"px-4 py-3 hidden md:table-cell",children:C.templateName?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(r.Layers,{className:"w-4 h-4 text-[var(--color-accent-500)]"}),e.jsx("span",{className:"text-sm text-[var(--text-primary)]",children:C.templateName})]}):e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:"-"})}),e.jsx("td",{className:"px-4 py-3 text-center hidden lg:table-cell",children:e.jsx("span",{className:"text-sm text-[var(--text-primary)]",children:C.memberCount??0})}),e.jsx("td",{className:"px-4 py-3 text-center hidden lg:table-cell",children:(C.pendingAccessRequestCount??0)>0?e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(r.Clock,{className:"w-3 h-3"}),C.pendingAccessRequestCount]}):e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:"-"})}),e.jsx("td",{className:"px-4 py-3",children:Ue(C)})]},C.id)},Oe=()=>e.jsx("tr",{children:e.jsx("td",{colSpan:Re,className:"text-center py-8",children:e.jsx("div",{className:"w-6 h-6 border-2 border-[var(--color-accent-500)] border-t-transparent rounded-full animate-spin mx-auto"})})}),Ge=()=>e.jsx("tr",{children:e.jsx("td",{colSpan:Re,className:"text-center py-8 text-[var(--text-secondary)]",children:s("tenants.empty")})}),He=()=>e.jsx("div",{className:"card",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{className:"bg-[var(--bg-secondary)]",style:{borderRadius:"var(--radius-card) var(--radius-card) 0 0"},children:e.jsxs("tr",{children:[Se(s("tenants.columns.name"),"name"),!Te&&Se(s("tenants.columns.type"),"type","hidden md:table-cell"),Se(s("tenants.columns.status"),"status"),Se(s("tenants.columns.template"),"template","hidden md:table-cell"),e.jsx("th",{className:"text-center px-4 py-3 text-xs font-semibold text-[var(--text-tertiary)] uppercase tracking-wider hidden lg:table-cell",children:s("tenants.columns.members")}),e.jsx("th",{className:"text-center px-4 py-3 text-xs font-semibold text-[var(--text-tertiary)] uppercase tracking-wider hidden lg:table-cell",children:s("tenants.columns.requests")}),e.jsx("th",{className:"w-24 px-4 py-3"})]})}),e.jsxs("tbody",{className:"divide-y divide-[var(--border-color)]",children:[S&&Oe(),!S&&_.length===0&&Ge(),!S&&_.length>0&&_.map(Me)]})]})}),Be=C=>[{label:s(`tenants.type.${C.type.toLowerCase()}`),variant:C.type==="Business"?"info":"primary"},{label:s(`tenants.status.${C.status.toLowerCase()}`),variant:Y(C.status)}],qe=C=>[{label:s("common.edit"),onClick:()=>l(u(`/administration/tenants/${C.id}`)),variant:"primary",icon:r.Edit2},{label:s("tenants.actions.viewMembers"),onClick:()=>l(u(`/administration/tenants/${C.id}/members`)),variant:"ghost",icon:r.Users}],Fe=C=>e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(r.Users,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsxs("span",{children:[C.memberCount??0," ",s("tenants.members")]})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(r.Boxes,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsxs("span",{children:[C.applicationCount??0," ",s("tenants.applications")]})]})]}),ze=C=>{const je=C.type==="Business"?"#3b82f6":"#8b5cf6";return{avatar:{letter:C.name.at(0)?.toUpperCase()??"",color:je},title:C.name,subtitle:C.slug,description:C.organisation?.name||void 0,stats:Fe(C),tags:Be(C),actions:qe(C),onClick:()=>l(u(`/administration/tenants/${C.id}`))}},Ce=()=>e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6",children:[S&&e.jsxs("div",{className:"col-span-full flex flex-col items-center justify-center py-16",children:[e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"}),e.jsx("span",{className:"mt-3 text-sm text-[var(--text-secondary)]",children:s("common.loading")})]}),!S&&_.length===0&&e.jsxs("div",{className:"col-span-full flex flex-col items-center justify-center py-16",children:[e.jsx("div",{className:"w-16 h-16 rounded-lg bg-[var(--bg-secondary)] flex items-center justify-center mb-3",children:e.jsx(r.Building2,{className:"w-8 h-8 text-[var(--text-tertiary)]"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("tenants.noTenants")})]}),!S&&_.length>0&&_.map(C=>e.jsx(E.EntityCard,{...ze(C)},C.id))]});return e.jsxs("div",{className:"space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:s("header.title"),href:u("/administration")},...t||n?[{label:s("tenants.title"),href:u("/administration/tenants/list")},{label:s(n?"tenants.other.title":t==="Business"?"tenants.enterprise.title":"tenants.personal.title")}]:[{label:s("tenants.title")}]]}),e.jsx(E.PageHeader,{title:fe,subtitle:ye,icon:e.jsx($e,{className:"w-6 h-6 text-[var(--color-accent-500)]"}),actions:e.jsxs(e.Fragment,{children:[!n&&(!t||t==="Personal")&&e.jsxs("button",{onClick:()=>l(u("/administration/tenants/create")+"?type=b2c"),className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx(r.User,{className:"w-4 h-4"}),s("tenants.createB2C")]}),!n&&(!t||t==="Business")&&e.jsxs("button",{onClick:()=>l(u("/administration/tenants/create")+"?type=b2b"),className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] transition-colors",children:[e.jsx(r.Building,{className:"w-4 h-4"}),s("tenants.createB2B")]})]})}),J&&e.jsxs("div",{className:"mb-6 p-4 bg-[var(--error-bg)] border border-[var(--error-border)] rounded-[var(--radius-card)] flex items-center gap-3",children:[e.jsx(r.AlertCircle,{className:"w-5 h-5 text-[var(--error-dot)] flex-shrink-0"}),e.jsx("span",{className:"text-[var(--error-text)]",children:J}),e.jsx("button",{onClick:N,className:"ml-auto text-sm text-[var(--error-text)] hover:underline",children:s("common.retry")})]}),e.jsx("div",{className:"card p-4 mb-6",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{className:"relative flex-1 min-w-[200px] max-w-md",children:[e.jsx(r.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:P.search,onChange:C=>le("search",C.target.value),placeholder:s("common.search"),className:"input !pl-10 w-full"})]}),t||n?e.jsxs("div",{className:"relative",children:[e.jsxs("select",{value:P.status,onChange:C=>le("status",C.target.value),className:"input appearance-none pr-8 min-w-[160px]",children:[e.jsxs("option",{value:"",children:[s("tenants.columns.status"),": ",s("common.all")]}),e.jsx("option",{value:"Pending",children:s("tenants.status.pending")}),e.jsx("option",{value:"Active",children:s("tenants.status.active")}),e.jsx("option",{value:"Suspended",children:s("tenants.status.suspended")}),e.jsx("option",{value:"Archived",children:s("tenants.status.archived")})]}),e.jsx(r.ChevronDown,{className:"absolute right-2.5 top-1/2 -translate-y-1/2 w-4 h-4 pointer-events-none text-[var(--text-tertiary)]"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("button",{onClick:()=>f(!g),className:`flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] transition-colors ${v>0?"ring-2 ring-[var(--color-accent-500)]":""}`,children:[e.jsx(r.Filter,{className:"w-4 h-4"}),s("common.filters"),v>0&&e.jsx("span",{className:"ml-1 px-1.5 py-0.5 text-xs rounded-full bg-[var(--color-accent-500)] text-white",children:v}),e.jsx(r.ChevronDown,{className:`w-4 h-4 transition-transform ${g?"rotate-180":""}`})]}),v>0&&e.jsxs("button",{onClick:ie,className:"flex items-center gap-1.5 px-4 py-2 rounded-[var(--radius-button)] text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx(r.RotateCcw,{className:"w-4 h-4"}),s("common.reset")]})]}),e.jsx("div",{className:"flex-1"}),e.jsx(E.ViewToggle,{viewMode:Z,onChange:q,showTable:!0,showCards:!0,showKanban:!1,tableLabel:s("common.table"),cardsLabel:s("common.cards")})]}),!t&&!n&&g&&e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 pt-4 border-t border-[var(--border-color)]",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-medium text-[var(--text-tertiary)] mb-1.5",children:s("tenants.columns.status")}),e.jsxs("div",{className:"relative",children:[e.jsxs("select",{value:P.status,onChange:C=>le("status",C.target.value),className:"input w-full appearance-none pr-8",children:[e.jsx("option",{value:"",children:s("common.all")}),e.jsx("option",{value:"Pending",children:s("tenants.status.pending")}),e.jsx("option",{value:"Active",children:s("tenants.status.active")}),e.jsx("option",{value:"Suspended",children:s("tenants.status.suspended")}),e.jsx("option",{value:"Archived",children:s("tenants.status.archived")})]}),e.jsx(r.ChevronDown,{className:"absolute right-2.5 top-1/2 -translate-y-1/2 w-4 h-4 pointer-events-none text-[var(--text-tertiary)]"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-medium text-[var(--text-tertiary)] mb-1.5",children:s("tenants.columns.type")}),e.jsxs("div",{className:"relative",children:[e.jsxs("select",{value:P.type,onChange:C=>le("type",C.target.value),className:"input w-full appearance-none pr-8",children:[e.jsx("option",{value:"",children:s("common.all")}),e.jsx("option",{value:"Personal",children:s("tenants.type.personal")}),e.jsx("option",{value:"Business",children:s("tenants.type.business")}),e.jsx("option",{value:"System",children:s("tenants.type.system")})]}),e.jsx(r.ChevronDown,{className:"absolute right-2.5 top-1/2 -translate-y-1/2 w-4 h-4 pointer-events-none text-[var(--text-tertiary)]"})]})]})]})]})}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-6",children:[e.jsx("div",{className:"card p-4 border bg-[var(--success-bg)] border-[var(--success-border)]",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(r.Building2,{className:"w-8 h-8 text-[var(--success-text)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-[var(--success-text)]",children:G.active}),e.jsx("p",{className:"text-sm text-[var(--success-text)]",children:s("tenants.status.active")})]})]})}),e.jsx("div",{className:"card p-4 border bg-[var(--warning-bg)] border-[var(--warning-border)]",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(r.PauseCircle,{className:"w-8 h-8 text-[var(--warning-text)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-[var(--warning-text)]",children:G.suspended}),e.jsx("p",{className:"text-sm text-[var(--warning-text)]",children:s("tenants.status.suspended")})]})]})}),e.jsx("div",{className:"card p-4 border bg-[var(--bg-secondary)] border-[var(--border-color)]",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(r.Users,{className:"w-8 h-8 text-[var(--text-secondary)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-[var(--text-primary)]",children:G.members}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:s("tenants.columns.members")})]})]})}),e.jsx("div",{className:`card p-4 border ${G.pendingRequests>0?"bg-[var(--warning-bg)] border-[var(--warning-border)]":"bg-[var(--bg-secondary)] border-[var(--border-color)]"}`,children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(r.Clock,{className:`w-8 h-8 ${G.pendingRequests>0?"text-[var(--warning-text)]":"text-[var(--text-secondary)]"}`}),e.jsxs("div",{children:[e.jsx("p",{className:`text-2xl font-bold ${G.pendingRequests>0?"text-[var(--warning-text)]":"text-[var(--text-primary)]"}`,children:G.pendingRequests}),e.jsx("p",{className:`text-sm ${G.pendingRequests>0?"text-[var(--warning-text)]":"text-[var(--text-secondary)]"}`,children:s("tenants.columns.requests")})]})]})})]}),Z==="table"?He():Ce(),ee>1&&e.jsx("div",{className:"mt-6",children:e.jsx(E.Pagination,{page:U,totalPages:ee,totalCount:$,pageSize:20,onPageChange:z,itemLabel:s("tenants.title").toLowerCase()})}),(()=>{const C=W();return C?e.jsx(Ve.ConfirmModal,{isOpen:!!L,title:C.label,message:C.message,confirmLabel:C.label,variant:C.variant,loading:!!H,onConfirm:me,onCancel:()=>k(null)}):null})()]})}function bt(t){const{t:n}=de.useTranslation(["admin","common"]),[s,l]=a.useState(null),[d,i]=a.useState(!0),[c,b]=a.useState(null),[h,u]=a.useState(!1),[m,o]=a.useState(""),[x,p]=a.useState(""),[S,B]=a.useState(!1),P=a.useCallback(async()=>{if(t)try{b(null);const D=await E.adminApi.tenants.getById(t);l(D)}catch(D){console.error("Failed to load tenant:",D),b(n("admin:tenants.errors.loadFailed"))}finally{i(!1)}},[t,n]),T=a.useCallback(()=>{s&&(o(s.name),p(s.description||""),u(!0))},[s]),g=a.useCallback(()=>{u(!1),o(""),p("")},[]),f=a.useCallback(async()=>{if(s){B(!0);try{await E.adminApi.tenants.update(s.id,{name:m,description:x||void 0}),await P(),g()}catch(D){console.error("Failed to update tenant:",D)}finally{B(!1)}}},[s,m,x,P,g]);return{tenant:s,setTenant:l,loading:d,setLoading:i,error:c,setError:b,loadTenant:P,editingGeneralInfo:h,setEditingGeneralInfo:u,editName:m,setEditName:o,editDescription:x,setEditDescription:p,savingGeneralInfo:S,setSavingGeneralInfo:B,handleSaveGeneralInfo:f,openEditGeneralInfo:T,closeEditGeneralInfo:g}}function Ut(t){const[n,s]=a.useState(null),[l,d]=a.useState(!1),[i,c]=a.useState(!1),[b,h]=a.useState([]),[u,m]=a.useState(!1),[o,x]=a.useState(""),[p,S]=a.useState(null),[B,P]=a.useState(!1),[T,g]=a.useState(null),[f,D]=a.useState([]),[y,H]=a.useState([]),[R,L]=a.useState(!1),[k,Z]=a.useState(!1),q=a.useCallback(async()=>{if(t){d(!0);try{const A=await E.adminApi.tenants.getMembers(t);s(A)}catch(A){console.error("Failed to load members:",A)}finally{d(!1)}}},[t]),U=a.useCallback(async()=>{m(!0);try{const A=await E.adminApi.users.getAll({pageSize:50}),j=new Set((n??[]).map(M=>M.userId));h(A.items.filter(M=>!j.has(M.id)))}catch(A){console.error("Failed to load users:",A)}finally{m(!1)}},[n]),z=a.useCallback(async()=>{if(!(!t||!p)){P(!0);try{await E.adminApi.tenants.addMember(t,{userId:p}),await q(),c(!1),S(null),x("")}catch(A){console.error("Failed to add member:",A)}finally{P(!1)}}},[t,p,q]),ee=a.useCallback(async A=>{if(t)try{await E.adminApi.tenants.removeMember(t,A),await q()}catch(j){console.error("Failed to remove member:",j)}},[t,q]),ae=a.useCallback(async()=>{L(!0);try{const A=await E.adminApi.roles.getAssignable();D(A)}catch(A){console.error("Failed to load roles:",A)}finally{L(!1)}},[]),$=a.useCallback(async A=>{g(A),H(A.roles.map(j=>j.roleId)),f.length===0&&await ae()},[f.length,ae]),X=a.useCallback(()=>{g(null),H([])},[]),J=a.useCallback(A=>{H(j=>j.includes(A)?j.filter(M=>M!==A):[...j,A])},[]),F=a.useCallback(async()=>{if(!(!t||!T)){Z(!0);try{await E.adminApi.tenants.assignMemberRoles(t,T.userId,y),await q(),X()}catch(A){console.error("Failed to save roles:",A)}finally{Z(!1)}}},[t,T,y,q,X]);return{members:n,setMembers:s,loadingMembers:l,setLoadingMembers:d,addingMember:i,setAddingMember:c,availableUsers:b,setAvailableUsers:h,loadingUsers:u,setLoadingUsers:m,userSearchTerm:o,setUserSearchTerm:x,selectedUserId:p,setSelectedUserId:S,addingMemberLoading:B,setAddingMemberLoading:P,selectedMemberForRoles:T,setSelectedMemberForRoles:g,availableRoles:f,setAvailableRoles:D,selectedRoleIds:y,setSelectedRoleIds:H,loadingRoles:R,setLoadingRoles:L,savingRoles:k,setSavingRoles:Z,loadMembers:q,loadAvailableUsers:U,handleAddMember:z,handleRemoveMember:ee,openRoleModal:$,closeRoleModal:X,handleSaveRoles:F,handleRoleToggle:J}}function Ot(t){const{t:n}=de.useTranslation("admin"),[s,l]=a.useState(null),[d,i]=a.useState(!1),[c,b]=a.useState(!1),[h,u]=a.useState([]),[m,o]=a.useState(!1),[x,p]=a.useState([]),[S,B]=a.useState(!1),[P,T]=a.useState(""),[g,f]=a.useState(null),D=a.useCallback(async()=>{if(t){i(!0);try{const L=await E.adminApi.tenants.getGroups(t);l(Array.isArray(L)?L:[])}catch(L){console.error("Failed to load groups:",L),l([])}finally{i(!1)}}},[t]),y=a.useCallback(async()=>{if(t){o(!0);try{const L=await E.adminApi.tenants.getAvailableGroups(t);u(L)}catch(L){console.error("Failed to load available groups:",L),u([])}finally{o(!1)}}},[t]),H=a.useCallback(async()=>{if(!t||x.length===0)return;B(!0);const L=[],k=[];for(const Z of x)try{await E.adminApi.tenants.addGroupToTenant(t,Z),L.push(Z)}catch(q){console.error(`Failed to add group ${Z}:`,q),k.push(Z)}await D(),k.length===0?(b(!1),p([])):L.length===0||p(k),B(!1)},[t,x,D,n]),R=a.useCallback(async L=>{if(t){f(L);try{await E.adminApi.tenants.removeGroupFromTenant(t,L),await D()}catch(k){console.error("Failed to remove group:",k)}finally{f(null)}}},[t,D]);return{groups:s,setGroups:l,loadingGroups:d,setLoadingGroups:i,addingGroup:c,setAddingGroup:b,availableGroupsForTenant:h,setAvailableGroupsForTenant:u,loadingAvailableGroups:m,setLoadingAvailableGroups:o,selectedGroupIds:x,setSelectedGroupIds:p,assigningGroups:S,setAssigningGroups:B,groupSearchTerm:P,setGroupSearchTerm:T,removingGroupId:g,setRemovingGroupId:f,loadGroups:D,loadAvailableGroups:y,handleAssignGroups:H,handleRemoveGroup:R}}const Gt=(t,n)=>{if(t.id!==n)return t;const s=!t.isAssigned;return{...t,isAssigned:s,sections:t.sections.map(l=>({...l,isAssigned:s}))}},Ht=(t,n,s)=>{if(t.id!==n)return t;const l=t.sections.map(i=>i.id===s?{...i,isAssigned:!i.isAssigned}:i),d=l.some(i=>i.isAssigned);return{...t,isAssigned:d,sections:l}},qt=t=>({...t,isAssigned:!0,sections:t.sections.map(n=>({...n,isAssigned:!0}))}),zt=t=>({...t,isAssigned:!1,sections:t.sections.map(n=>({...n,isAssigned:!1}))});function Vt(t,n){const[s,l]=a.useState(null),[d,i]=a.useState(!1),[c,b]=a.useState(!1),[h,u]=a.useState([]),[m,o]=a.useState(!1),[x,p]=a.useState([]),[S,B]=a.useState(!1),[P,T]=a.useState(""),[g,f]=a.useState(null),[D,y]=a.useState("FullAccess"),[H,R]=a.useState("full"),[L,k]=a.useState([]),[Z,q]=a.useState(new Set),[U,z]=a.useState(!1),[ee,ae]=a.useState(!1),[$,X]=a.useState(null),J=a.useCallback(async()=>{if(t){i(!0);try{const V=await E.adminApi.tenants.getApplications(t);l(Array.isArray(V)?V:[])}catch(V){console.error("Failed to load applications:",V),l([])}finally{i(!1)}}},[t]),F=a.useCallback(async()=>{if(t){b(!0),p([]),o(!0),f(null);try{const V=await E.adminApi.tenants.getAvailableApplications(t);u(V.filter(Y=>!Y.isAssigned))}catch(V){console.error("Failed to load available applications:",V);const Y=V instanceof Error&&V.name==="ForbiddenError";f(Y?"forbidden":"generic")}finally{o(!1)}}},[t]),A=a.useCallback(()=>{b(!1),p([]),T(""),y("FullAccess"),R("full"),k([]),q(new Set)},[]),j=a.useCallback(async()=>{if(!(!t||x.length===0)){B(!0);try{const V={applicationIds:x,accessLevel:D,accessMode:H,moduleIds:H==="custom"?L.filter(Y=>Y.isAssigned).map(Y=>Y.id):void 0,sectionIds:H==="custom"?L.flatMap(Y=>Y.sections.filter(re=>re.isAssigned).map(re=>re.id)):void 0};await E.adminApi.tenants.bulkAssignApplications(t,V),await J(),A(),n?.onApplicationsChanged?.()}catch(V){console.error("Failed to assign applications:",V)}finally{B(!1)}}},[t,x,D,H,L,J,A,n]),M=a.useCallback(async V=>{if(t)try{await E.adminApi.tenants.removeApplication(t,V),await J(),n?.onApplicationsChanged?.()}catch(Y){console.error("Failed to remove application:",Y)}},[t,J,n]),O=a.useCallback(async(V,Y)=>{if(t)try{await E.adminApi.tenants.updateApplicationAccessLevel(t,V,Y),await J(),n?.onApplicationsChanged?.()}catch(re){console.error("Failed to update access level:",re)}},[t,J,n]),w=a.useCallback(V=>{X(V),ae(!0)},[]),v=a.useCallback(()=>{ae(!1),X(null)},[]),N=a.useCallback(async(V,Y)=>{if(t)try{await E.adminApi.tenants.saveOverrides(t,V,Y),await J(),n?.onApplicationsChanged?.()}catch(re){throw console.error("Failed to save overrides:",re),re}},[t,J,n]),ie=a.useCallback(async V=>{if(t)try{await E.adminApi.tenants.saveOverrides(t,V,{modules:[],sections:[]}),await J(),n?.onApplicationsChanged?.()}catch(Y){throw console.error("Failed to reset overrides:",Y),Y}},[t,J,n]),le=a.useMemo(()=>{if(!P)return h;const V=P.toLowerCase();return h.filter(Y=>Y.label.toLowerCase().includes(V)||Y.code.toLowerCase().includes(V))},[h,P]),te=a.useCallback(V=>{p(Y=>Y.includes(V)?Y.filter(re=>re!==V):[...Y,V])},[]),Q=a.useCallback(()=>{const V=le.map(Y=>Y.id);p(V)},[le]),pe=a.useCallback(()=>{p([])},[]),me=a.useCallback(async V=>{z(!0);try{const Y=await E.adminApi.applications.getModules(V),re=[];for(const ve of Y){const fe=(await E.adminApi.applications.getModuleSections(V,ve.id)).map(ye=>({id:ye.id,label:ye.label,code:ye.code,icon:ye.icon,isAssigned:!0}));re.push({id:ve.id,label:ve.label,code:ve.code,icon:ve.icon,isAssigned:!0,sections:fe})}k(re)}catch(Y){console.error("Failed to load modules:",Y)}finally{z(!1)}},[]),K=a.useCallback(V=>{q(Y=>{const re=new Set(Y);return re.has(V)?re.delete(V):re.add(V),re})},[]),ce=a.useCallback(V=>{k(Y=>Y.map(re=>Gt(re,V)))},[]),ge=a.useCallback((V,Y)=>{k(re=>re.map(ve=>Ht(ve,V,Y)))},[]),W=a.useCallback(V=>{if(V.sections.length===0)return V.isAssigned?"checked":"unchecked";const Y=V.sections.filter(re=>re.isAssigned).length;return Y===0?"unchecked":Y===V.sections.length?"checked":"indeterminate"},[]),G=a.useCallback(()=>{const V=L.length,Y=L.filter(he=>he.isAssigned||he.sections.some(fe=>fe.isAssigned)).length,re=L.reduce((he,fe)=>he+fe.sections.length,0),ve=L.reduce((he,fe)=>he+fe.sections.filter(ye=>ye.isAssigned).length,0);return{totalModules:V,assignedModules:Y,totalSections:re,assignedSections:ve}},[L]),_=a.useCallback(()=>{k(V=>V.map(Y=>qt(Y)))},[]),se=a.useCallback(()=>{k(V=>V.map(Y=>zt(Y)))},[]);return{applications:s,setApplications:l,loadingApps:d,setLoadingApps:i,addingApplication:c,setAddingApplication:b,availableApps:h,setAvailableApps:u,loadingAvailableApps:m,setLoadingAvailableApps:o,selectedAppIds:x,setSelectedAppIds:p,assigningApps:S,setAssigningApps:B,appSearchTerm:P,setAppSearchTerm:T,selectedAccessLevel:D,setSelectedAccessLevel:y,bulkAccessMode:H,setBulkAccessMode:R,bulkModules:L,setBulkModules:k,bulkExpandedModules:Z,setBulkExpandedModules:q,loadingBulkModules:U,setLoadingBulkModules:z,showCustomizeDrawer:ee,setShowCustomizeDrawer:ae,customizingApp:$,setCustomizingApp:X,loadApplications:J,availableAppsError:g,loadAvailableApps:F,handleAssignApplications:j,handleRemoveApplication:M,handleUpdateAccessLevel:O,openCustomizeDrawer:w,closeCustomizeDrawer:v,filteredAvailableApps:le,handleAppToggle:te,selectAllFilteredApps:Q,clearAppSelection:pe,loadBulkModulesForApp:me,toggleBulkModuleExpand:K,toggleBulkModule:ce,toggleBulkSection:ge,getBulkModuleCheckState:W,getBulkStats:G,selectAllBulkModules:_,clearBulkModules:se,handleSaveOverrides:N,handleResetOverrides:ie}}const _t={FR:{types:["SIREN","SIRET"],defaultType:"SIREN",country:"France"},CH:{types:["UID_CHE"],defaultType:"UID_CHE",country:"Switzerland"},DE:{types:["HRB","HRA"],defaultType:"HRB",country:"Germany"},BE:{types:["BCE_KBO"],defaultType:"BCE_KBO",country:"Belgium"},NL:{types:["KVK"],defaultType:"KVK",country:"Netherlands"},ES:{types:["CIF"],defaultType:"CIF",country:"Spain"},IT:{types:["PartitaIVA"],defaultType:"PartitaIVA",country:"Italy"},GB:{types:["CRN"],defaultType:"CRN",country:"United Kingdom"}},st={name:"",countryCode:"CH",businessIdentifierType:"UID_CHE",businessIdentifier:"CHE-",address:{street:"",postalCode:"",city:"",state:void 0,country:"Switzerland",countryCode:"CH"}};function Kt(t){const{t:n}=de.useTranslation("admin"),[s,l]=a.useState(!1),[d,i]=a.useState([]),[c,b]=a.useState(!1),[h,u]=a.useState(null),[m,o]=a.useState(!1),[x,p]=a.useState(""),[S,B]=a.useState(!1),[P,T]=a.useState(!1),[g,f]=a.useState(st),[D,y]=a.useState(!1),[H,R]=a.useState(null),[L,k]=a.useState(!1),Z=a.useCallback(async A=>{b(!0);try{const j=await E.adminApi.organisations.getAvailable(A),M=Array.isArray(j)?j:j.items??[];i(M)}catch(j){console.error("Failed to load available organisations:",j),i([])}finally{b(!1)}},[]),q=a.useCallback(()=>{l(!0),u(null),p(""),Z()},[Z]),U=a.useCallback(()=>{l(!1),u(null),p(""),B(!1),f(st),y(!1),R(null),k(!1)},[]),z=a.useCallback(async()=>{if(!(!t||!h)){o(!0);try{await E.adminApi.tenants.linkOrganisation(t,h),U()}catch(A){console.error("Failed to link organisation:",A)}finally{o(!1)}}},[t,h,U]),ee=a.useCallback(async()=>{if(t){o(!0);try{await E.adminApi.tenants.unlinkOrganisation(t)}catch(A){console.error("Failed to unlink organisation:",A)}finally{o(!1)}}},[t]),ae=a.useCallback(async()=>{if(t&&!(!g.name||!g.businessIdentifier||!g.address.street||!g.address.city||!g.address.postalCode)){T(!0);try{const A=await E.adminApi.organisations.create(g);await E.adminApi.tenants.linkOrganisation(t,A.id),U()}catch(A){console.error("Failed to create and link organisation:",A)}finally{T(!1)}}},[t,g,U]),$=a.useCallback(A=>{const j=A.toUpperCase().replace(/[^A-Z0-9]/g,"");let M=j.startsWith("CHE")?j.slice(3):j.replace(/[^0-9]/g,"");return M=M.slice(0,9),M.length===0?"CHE-":M.length<=3?`CHE-${M}`:M.length<=6?`CHE-${M.slice(0,3)}.${M.slice(3)}`:`CHE-${M.slice(0,3)}.${M.slice(3,6)}.${M.slice(6)}`},[]),X=a.useCallback(A=>{g.countryCode==="CH"?f(j=>({...j,businessIdentifier:$(A)})):f(j=>({...j,businessIdentifier:A})),R(null),k(!1)},[g.countryCode,$]),J=a.useCallback(async()=>{const A=g.businessIdentifier.replace(/[^0-9]/g,"");if(!g.businessIdentifier||A.length<9||g.countryCode!=="CH"){R(n("tenants.organisation.lookupIncomplete"));return}y(!0),R(null),k(!1);try{const j=await E.adminApi.organisations.lookup(g.countryCode,g.businessIdentifier);f(M=>({...M,name:j.name||M.name,legalName:j.legalName||M.legalName,vatNumber:j.vatNumber||M.vatNumber,address:{...M.address,street:j.street||M.address.street,street2:j.street2||M.address.street2||void 0,postalCode:j.postalCode||M.address.postalCode,city:j.city||M.address.city,state:j.state||M.address.state,country:j.country||M.address.country,countryCode:j.countryCode||M.address.countryCode}})),k(!0),setTimeout(()=>k(!1),3e3)}catch(j){console.error("[Zefix Lookup] Failed:",j);const M=j instanceof Error?j.message:"";M.includes("503")||M.includes("not configured")||M.includes("Service Unavailable")?R(n("tenants.organisation.lookupServiceUnavailable")):M.includes("credentials")||M.includes("401")?R(n("tenants.organisation.lookupAuthError")):(M.includes("404")||M.includes("not found"),R(n("tenants.organisation.lookupFailed")))}finally{y(!1)}},[g.businessIdentifier,g.countryCode,n]),F=a.useCallback(A=>{const j=_t[A];j&&f(M=>({...M,countryCode:A,businessIdentifierType:j.defaultType,businessIdentifier:A==="CH"?"CHE-":"",address:{...M.address,countryCode:A,country:j.country}}))},[]);return{showLinkOrgModal:s,setShowLinkOrgModal:l,availableOrgs:d,setAvailableOrgs:i,loadingOrgs:c,setLoadingOrgs:b,selectedOrgId:h,setSelectedOrgId:u,linkingOrg:m,setLinkingOrg:o,orgSearchTerm:x,setOrgSearchTerm:p,showCreateOrgForm:S,setShowCreateOrgForm:B,creatingOrg:P,setCreatingOrg:T,newOrgForm:g,setNewOrgForm:f,lookupLoading:D,setLookupLoading:y,lookupError:H,setLookupError:R,lookupSuccess:L,setLookupSuccess:k,loadAvailableOrgs:Z,handleLinkOrganisation:z,handleUnlinkOrganisation:ee,handleCreateAndLinkOrganisation:ae,formatCheNumber:$,handleBusinessIdChange:X,handleZefixLookup:J,openLinkOrgModal:q,closeLinkOrgModal:U,handleCountryChange:F}}function Wt(t){const[n,s]=a.useState(null),[l,d]=a.useState(!1),[i,c]=a.useState(null),b=a.useCallback(async()=>{if(t){d(!0),c(null);try{const h=await E.adminApi.tenants.getTenantRoles(t);s(h)}catch(h){console.error("Failed to load tenant roles:",h),c("Failed to load roles")}finally{d(!1)}}},[t]);return{roles:n,loadingRoles:l,error:i,loadRoles:b}}function Xt({show:t,templates:n,selectedTemplateId:s,loadingTemplates:l,assigningTemplate:d,onTemplateSelect:i,onClose:c,onAssign:b,tenantTemplateId:h,t:u}){return t?e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"card w-full max-w-md p-6 m-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:u("tenants.template.selectTitle")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1",children:u("tenants.template.selectSubtitle")})]}),e.jsx("button",{onClick:c,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),l&&e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--text-secondary)]"})}),!l&&n.length===0&&e.jsx("div",{className:"p-4 rounded-lg bg-[var(--bg-secondary)] text-center",children:e.jsx("p",{className:"text-sm text-[var(--text-tertiary)]",children:u("tenants.template.noTemplatesAvailable")})}),!l&&n.length>0&&e.jsx("div",{className:"space-y-2 max-h-[300px] overflow-y-auto mb-6",children:n.map(m=>e.jsxs("button",{onClick:()=>i(m.id),className:`w-full p-3 rounded-lg border text-left transition-colors ${s===m.id?"border-[var(--primary-color)] bg-[var(--primary-color)]/5":"border-[var(--border-color)] bg-[var(--bg-secondary)] hover:border-[var(--primary-color)]"}`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)]",children:m.name}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] font-mono",children:m.code})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:`px-2 py-0.5 text-xs rounded-[var(--radius-badge)] ${m.targetTenantType==="Business"?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--accent-bg)] text-[var(--accent-text)]"}`,children:u(`tenants.type.${m.targetTenantType.toLowerCase()}`)}),m.isDefault&&e.jsx("span",{className:"px-2 py-0.5 text-xs rounded-[var(--radius-badge)] bg-[var(--success-bg)] text-[var(--success-text)]",children:u("tenants.template.default")})]})]}),m.description&&e.jsx("p",{className:"text-xs text-[var(--text-secondary)] mt-1",children:m.description})]},m.id))}),e.jsxs("div",{className:"flex justify-end gap-3",children:[e.jsx("button",{onClick:c,className:"btn btn-secondary",children:u("common:cancel")}),e.jsx("button",{onClick:b,disabled:d||!s||s===h,className:"btn btn-primary",children:d?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):u("tenants.template.confirm")})]})]})}):null}function Yt({tenant:t,statusConfig:n,onEditClick:s,t:l}){return e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Info,{className:"w-5 h-5"}),l("tenants.detail.generalInfo")]}),e.jsxs("button",{onClick:s,className:"btn btn-secondary",children:[e.jsx(r.Edit3,{className:"w-4 h-4"}),l("common:edit")]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.name")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-medium",children:t.name})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.slug")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-mono",children:t.slug})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.type")}),e.jsx("span",{className:`inline-flex px-2 py-0.5 text-xs rounded-[var(--radius-badge)] ${t.type==="Business"?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--accent-bg)] text-[var(--accent-text)]"}`,children:l(`tenants.type.${t.type.toLowerCase()}`)})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.status")}),e.jsx("span",{className:`inline-flex px-2 py-0.5 text-xs rounded-[var(--radius-badge)] ${n[t.status].bgColor} ${n[t.status].color}`,children:l(`tenants.status.${t.status.toLowerCase()}`)})]}),t.description&&e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)] sm:col-span-2 lg:col-span-4",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.description")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] whitespace-pre-wrap",children:t.description})]})]})]})}function Zt({tenant:t,ticketingConfig:n,loadingTicketing:s,t:l,navigate:d}){return e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Headphones,{className:"w-5 h-5"}),l("tenants.detail.supportManagement.title")]}),e.jsxs("button",{onClick:()=>d(`/administration/tenants/${t.id}/settings?tab=support`),className:"btn btn-secondary",children:[e.jsx(r.Settings,{className:"w-4 h-4"}),l("tenants.detail.supportManagement.configure")]})]}),s&&e.jsx("div",{className:"flex justify-center py-4",children:e.jsx(r.Loader2,{className:"w-5 h-5 animate-spin text-[var(--text-secondary)]"})}),!s&&n&&e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.supportManagement.provider")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-medium",children:n.provider==="Glpi"?l("tenants.detail.supportManagement.providerGlpi"):l("tenants.detail.supportManagement.providerSmartStack")})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.supportManagement.status")}),e.jsx("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-xs rounded-[var(--radius-badge)] ${n.isConfigured?"bg-[var(--success-bg)] text-[var(--success-text)]":"bg-[var(--warning-bg)] text-[var(--warning-text)]"}`,children:n.isConfigured?e.jsxs(e.Fragment,{children:[e.jsx(r.CheckCircle2,{className:"w-3 h-3"}),l("tenants.detail.supportManagement.configured")]}):e.jsxs(e.Fragment,{children:[e.jsx(r.AlertCircle,{className:"w-3 h-3"}),l("tenants.detail.supportManagement.notConfigured")]})})]}),n.provider==="Glpi"&&n.glpiBaseUrl&&e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:l("tenants.detail.supportManagement.glpiUrl")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-mono truncate",title:n.glpiBaseUrl,children:n.glpiBaseUrl})]})]}),!s&&!n&&e.jsxs("div",{className:"p-4 rounded-lg bg-[var(--info-bg)] border border-[var(--info-border)] text-center",children:[e.jsx(r.Headphones,{className:"w-5 h-5 text-[var(--info-text)] mx-auto mb-2"}),e.jsx("p",{className:"text-sm text-[var(--info-text)]",children:l("tenants.detail.supportManagement.noConfiguration")}),e.jsx("p",{className:"text-xs text-[var(--info-text)] mt-1 opacity-75",children:l("tenants.detail.supportManagement.noConfigurationHint")})]})]})}function Qt({tenant:t,templates:n,onOpenTemplateModal:s,onRemoveTemplate:l,removingTemplate:d,navigate:i,t:c}){return e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Layers,{className:"w-5 h-5"}),c("tenants.templateTenant.title")]}),e.jsxs("button",{onClick:()=>i("/administration/tenants/template"),className:"flex items-center gap-1 text-xs text-[var(--text-tertiary)] hover:text-[var(--primary-color)] transition-colors",title:c("tenants.templateTenant.viewAll"),children:[e.jsx(r.ExternalLink,{className:"w-3 h-3"}),c("tenants.templateTenant.viewAll")]})]}),t.templateId?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:s,className:"btn btn-secondary",children:[e.jsx(r.Edit3,{className:"w-4 h-4"}),c("tenants.template.change")]}),e.jsxs("button",{onClick:l,disabled:d,className:"btn btn-secondary text-[var(--error-text)] hover:bg-[var(--error-bg)]",children:[d?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.X,{className:"w-4 h-4"}),c("tenants.template.remove")]})]}):e.jsxs("button",{onClick:s,className:"btn btn-secondary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),c("tenants.template.assign")]})]}),t.templateId?e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:c("tenants.template.name")}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-medium",children:t.templateName||"-"}),n.find(b=>b.id===t.templateId)?.isDefault&&e.jsxs("span",{className:"flex items-center gap-1 px-1.5 py-0.5 text-xs rounded-[var(--radius-badge)] bg-[var(--accent-bg)] text-[var(--accent-text)]",children:[e.jsx(r.Star,{className:"w-3 h-3"}),c("tenants.template.default")]})]})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:c("tenants.template.code")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-mono",children:t.templateCode||"-"})]}),e.jsx("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)] flex items-center",children:e.jsxs("button",{onClick:()=>i(`/administration/tenants/template/${t.templateId}`),className:"flex items-center gap-2 text-sm text-[var(--primary-color)] hover:underline",children:[c("tenants.template.viewDetails"),e.jsx(r.ArrowRight,{className:"w-3.5 h-3.5"})]})})]}):e.jsxs("div",{className:"p-4 rounded-lg bg-[var(--warning-bg)] border border-[var(--warning-border)] text-center",children:[e.jsx(r.Layers,{className:"w-5 h-5 text-[var(--warning-text)] mx-auto mb-2"}),e.jsx("p",{className:"text-sm text-[var(--warning-text)]",children:c("tenants.templateTenant.noLink")}),e.jsx("p",{className:"text-xs text-[var(--warning-text)] mt-1 opacity-75",children:c("tenants.templateTenant.noLinkHint")})]})]})}function Jt({tenant:t,tenantOwner:n,statusConfig:s,actionLoading:l,onRefresh:d,onEditClick:i,onStatusChange:c,onMembersTabClick:b,onLinkOrgClick:h,onUnlinkOrg:u}){const{t:m}=de.useTranslation("admin"),o=xe.useNavigate(),[x,p]=a.useState(!1),[S,B]=a.useState({name:"",description:"",type:"Business"}),[P,T]=a.useState(!1),[g,f]=a.useState(!1),[D,y]=a.useState(!1),[H,R]=a.useState([]),[L,k]=a.useState(!1),[Z,q]=a.useState(""),[U,z]=a.useState(!1),[ee,ae]=a.useState(!1),[$,X]=a.useState(null),[J,F]=a.useState(!1),A=a.useCallback(async()=>{F(!0);try{const te=await De.ticketingApi.getConfiguration(t.id);X(te)}catch{X(null)}finally{F(!1)}},[t.id]);a.useEffect(()=>{A()},[A]);const j=a.useCallback(async()=>{k(!0);try{const te=await E.adminApi.templates.getAll();R(te.filter(Q=>Q.isActive))}catch(te){console.error("Failed to load templates:",te)}finally{k(!1)}},[]);a.useEffect(()=>{t.templateId&&H.length===0&&j()},[t.templateId,H.length,j]);const M=async()=>{q(t.templateId||""),y(!0),await j()},O=async()=>{if(Z){z(!0);try{await E.adminApi.tenants.assignTemplate(t.id,Z),await d(),y(!1)}catch(te){console.error("Failed to assign template:",te)}finally{z(!1)}}},w=async()=>{ae(!0);try{await E.adminApi.tenants.removeTemplate(t.id),await d()}catch(te){console.error("Failed to remove template:",te)}finally{ae(!1)}},v=()=>{B({name:t.name,description:t.description||"",type:t.type}),p(!0),i()},N=()=>{p(!1),B({name:"",description:"",type:"Business"})},ie=async()=>{if(S.name.trim()){T(!0);try{await E.adminApi.tenants.update(t.id,{name:S.name,description:S.description,type:S.type}),await d(),N()}catch(te){console.error("Failed to save tenant info:",te)}finally{T(!1)}}},le=async()=>{f(!0);try{await u()}finally{f(!1)}};return e.jsxs("div",{className:"space-y-6",children:[e.jsx(Yt,{tenant:t,statusConfig:s,onEditClick:v,t:m}),e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Info,{className:"w-5 h-5"}),m("tenants.detail.owner")]}),e.jsxs("button",{onClick:b,className:"btn btn-secondary",title:m("tenants.members.transferOwnership.title"),children:[e.jsx(r.Edit3,{className:"w-4 h-4"}),m("common:edit")]})]}),n?e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:m("common:name")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-medium",children:n.userDisplayName||"-"})]}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:m("common:email")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-medium",children:n.userEmail||"-"})]})]}):e.jsx("div",{className:"p-4 rounded-lg bg-[var(--bg-secondary)] text-center",children:e.jsx("p",{className:"text-sm text-[var(--text-tertiary)]",children:m("tenants.detail.noOwner")})})]}),t.type==="Business"&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Building2,{className:"w-5 h-5"}),m("tenants.detail.organisation")]}),t.organisationId?e.jsxs("button",{onClick:le,disabled:g,className:"btn btn-secondary text-[var(--error-text)] hover:bg-[var(--error-bg)]",children:[g?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.X,{className:"w-4 h-4"}),m("tenants.organisation.unlink")]}):e.jsxs("button",{onClick:h,className:"btn btn-secondary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),m("tenants.organisation.link")]})]}),t.organisationId?e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] uppercase tracking-wider mb-1",children:m("tenants.detail.organisationName")}),e.jsx("p",{className:"text-sm text-[var(--text-primary)] font-medium",children:t.organisation?.name||"-"})]})}):e.jsxs("div",{className:"p-4 rounded-lg bg-[var(--info-bg)] border border-[var(--info-border)] text-center",children:[e.jsx(r.Info,{className:"w-5 h-5 text-[var(--info-text)] mx-auto mb-2"}),e.jsx("p",{className:"text-sm text-[var(--info-text)]",children:m("tenants.organisation.noOrganisation")})]})]}),e.jsx(Zt,{tenant:t,ticketingConfig:$,loadingTicketing:J,t:m,navigate:o}),e.jsx(Qt,{tenant:t,templates:H,onOpenTemplateModal:M,onRemoveTemplate:w,removingTemplate:ee,navigate:o,t:m}),e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsx("div",{className:"flex items-center justify-between mb-4",children:e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Settings,{className:"w-5 h-5"}),m("tenants.detail.actions")]})}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[t.status!=="Active"&&t.status!=="Archived"&&e.jsxs("button",{onClick:()=>c("activate"),disabled:l!==null,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--success-dot)] text-white hover:opacity-90 transition-colors disabled:opacity-50",children:[l==="activate"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.PlayCircle,{className:"w-4 h-4"}),m("tenants.actions.activate")]}),t.status==="Active"&&e.jsxs("button",{onClick:()=>c("suspend"),disabled:l!==null,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--warning-dot)] text-white hover:opacity-90 transition-colors disabled:opacity-50",children:[l==="suspend"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.PauseCircle,{className:"w-4 h-4"}),m("tenants.actions.suspend")]}),t.status!=="Archived"&&e.jsxs("button",{onClick:()=>c("archive"),disabled:l!==null,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--error-dot)] text-white hover:opacity-90 transition-colors disabled:opacity-50",children:[l==="archive"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Archive,{className:"w-4 h-4"}),m("tenants.actions.archive")]}),e.jsxs("button",{onClick:d,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx(r.RefreshCw,{className:"w-4 h-4"}),m("common:refresh")]})]})]}),e.jsx(Xt,{show:D,templates:H,selectedTemplateId:Z,loadingTemplates:L,assigningTemplate:U,onTemplateSelect:q,onClose:()=>y(!1),onAssign:O,tenantTemplateId:t.templateId??void 0,t:m}),x&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"card w-full max-w-md p-6 m-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:m("tenants.edit.generalInfo")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1",children:m("tenants.edit.generalInfoSubtitle")})]}),e.jsx("button",{onClick:N,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:m("tenants.form.name")}),e.jsx("input",{type:"text",value:S.name,onChange:te=>B(Q=>({...Q,name:te.target.value})),className:"input w-full",placeholder:m("tenants.create.namePlaceholder")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:m("tenants.form.description")}),e.jsx("textarea",{value:S.description,onChange:te=>B(Q=>({...Q,description:te.target.value})),className:"input w-full min-h-[100px] resize-y",placeholder:m("tenants.create.descriptionPlaceholder")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:m("tenants.form.type")}),e.jsx("div",{className:"flex gap-3",children:["Business","Personal"].map(te=>e.jsx("button",{type:"button",onClick:()=>B(Q=>({...Q,type:te})),className:`flex-1 p-3 rounded-lg border text-center transition-colors ${S.type===te?"border-[var(--primary-color)] bg-[var(--primary-color)]/5 text-[var(--primary-color)]":"border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-secondary)] hover:border-[var(--primary-color)]"}`,children:e.jsx("span",{className:"text-sm font-medium",children:m(`tenants.type.${te.toLowerCase()}`)})},te))}),S.type==="Personal"&&t.organisationId&&e.jsx("p",{className:"mt-2 text-xs text-[var(--error-text)]",children:m("tenants.form.typeWarningOrg")}),S.type!==t.type&&e.jsx("p",{className:"mt-2 text-xs text-[var(--warning-text)]",children:m("tenants.form.typeChangeWarning")})]})]}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:N,className:"btn btn-secondary",children:m("common:cancel")}),e.jsx("button",{onClick:ie,disabled:P||!S.name.trim(),className:"btn btn-primary",children:P?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):m("common:save")})]})]})})]})}function es(t){return new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}function ts({tenantId:t,members:n,loadingMembers:s,actionLoading:l,onRefresh:d,onRemoveMember:i}){const{t:c}=de.useTranslation("admin"),[b,h]=a.useState({member:null,availableRoles:[],selectedRoleIds:[]}),[u,m]=a.useState(!1),[o,x]=a.useState(!1),[p,S]=a.useState(!1),[B,P]=a.useState([]),[T,g]=a.useState(!1),[f,D]=a.useState(""),[y,H]=a.useState(null),[R,L]=a.useState(!1),k=a.useCallback(async()=>{m(!0);try{return await E.adminApi.tenants.getTenantRoles(t)}catch(F){return console.error("Failed to load roles:",F),[]}finally{m(!1)}},[t]),Z=async F=>{h(j=>({...j,member:F,selectedRoleIds:F.roles.map(M=>M.roleId)}));const A=await k();h(j=>({...j,availableRoles:A}))},q=()=>{h({member:null,availableRoles:[],selectedRoleIds:[]})},U=F=>{h(A=>({...A,selectedRoleIds:A.selectedRoleIds.includes(F)?A.selectedRoleIds.filter(j=>j!==F):[...A.selectedRoleIds,F]}))},z=async()=>{if(b.member){x(!0);try{await E.adminApi.tenants.assignMemberRoles(t,b.member.userId,b.selectedRoleIds),await d(),q()}catch(F){console.error("Failed to save roles:",F)}finally{x(!1)}}},ee=async()=>{g(!0);try{const F=await E.adminApi.users.getAll({globalScope:!0});P(F.items)}catch(F){console.error("Failed to load available users:",F),P([])}finally{g(!1)}},ae=()=>{S(!0),H(null),D(""),ee()},$=()=>{S(!1),H(null),D(""),P([])},X=async()=>{if(y){L(!0);try{await E.adminApi.tenants.addMember(t,{userId:y}),await d(),$()}catch(F){console.error("Failed to add member:",F)}finally{L(!1)}}},J=[{key:"userDisplayName",label:c("common:name"),sortable:!0,render:F=>e.jsxs(xe.Link,{to:`/administration/users/${F.userId}`,className:"flex items-center gap-3 hover:text-[var(--color-accent-500)]",children:[e.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium ${F.isOwner?"bg-[var(--warning-bg)] text-[var(--warning-text)]":"bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]"}`,children:F.isOwner?e.jsx(r.Crown,{className:"w-4 h-4"}):(F.userDisplayName||F.userEmail||"?").charAt(0).toUpperCase()}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"font-medium text-[var(--text-primary)] block truncate",children:F.userDisplayName||F.userEmail}),F.userEmail&&F.userDisplayName&&e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block truncate",children:F.userEmail})]})]})},{key:"roles",label:c("tenants.members.role"),render:F=>e.jsxs("div",{className:"flex flex-wrap gap-1",children:[F.isOwner&&e.jsxs("span",{className:"inline-flex items-center gap-1.5 px-2 py-1 text-xs rounded-[var(--radius-badge)] bg-[var(--warning-bg)] text-[var(--warning-text)]",children:[e.jsx(r.Crown,{className:"w-3 h-3"}),c("tenants.members.owner")]}),F.roles.length>0&&F.roles.map(A=>e.jsxs("span",{className:"inline-flex items-center gap-1.5 px-2 py-1 text-xs rounded-[var(--radius-badge)] bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]",children:[e.jsx(r.Shield,{className:"w-3 h-3"}),A.roleName]},A.roleId)),F.roles.length===0&&!F.isOwner&&e.jsxs("span",{className:"inline-flex items-center gap-1.5 px-2 py-1 text-xs rounded-[var(--radius-badge)] bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:[e.jsx(r.User,{className:"w-3 h-3"}),c("tenants.members.member")]})]})},{key:"membershipSource",label:"Source",hideOnMobile:!0,render:F=>{const A=F.membershipSource;return A==="Group"?e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs rounded-full bg-purple-500/10 text-purple-600 dark:text-purple-400",children:[e.jsx(r.UsersRound,{className:"w-3 h-3"}),c("tenants.members.source.group")]}),F.primaryGroupName&&e.jsxs(xe.Link,{to:`/administration/users/groups/${F.primaryGroupId}`,className:"inline-flex items-center gap-1 text-xs text-[var(--text-tertiary)] hover:text-[var(--color-accent-500)] transition-colors",onClick:j=>j.stopPropagation(),children:[e.jsx(r.Link2,{className:"w-3 h-3"}),F.primaryGroupName]})]}):A==="Both"?e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs rounded-full bg-blue-500/10 text-blue-600 dark:text-blue-400",children:c("tenants.members.source.both")}),F.primaryGroupName&&e.jsxs(xe.Link,{to:`/administration/users/groups/${F.primaryGroupId}`,className:"inline-flex items-center gap-1 text-xs text-[var(--text-tertiary)] hover:text-[var(--color-accent-500)] transition-colors",onClick:j=>j.stopPropagation(),children:[e.jsx(r.Link2,{className:"w-3 h-3"}),F.primaryGroupName]})]}):e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs rounded-full bg-green-500/10 text-green-600 dark:text-green-400",children:c("tenants.members.source.direct")})}},{key:"joinedAt",label:c("tenants.members.joinedAt"),sortable:!0,hideOnMobile:!0,render:F=>e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:F.joinedAt?es(F.joinedAt):"-"})},{key:"actions",label:c("common:actionsColumn"),align:"right",render:F=>e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx("button",{onClick:A=>{A.stopPropagation(),Z(F)},className:"p-2 rounded-[var(--radius-button)] text-[var(--text-tertiary)] hover:text-[var(--color-accent-500)] hover:bg-[var(--color-accent-500)]/10 transition-colors",title:c("tenants.members.manageRoles.title"),children:e.jsx(r.Shield,{className:"w-4 h-4"})}),!F.isOwner&&F.membershipSource!=="Group"&&e.jsx("button",{onClick:A=>{A.stopPropagation(),i(F.userId)},disabled:l===F.userId,className:"p-2 rounded-[var(--radius-button)] text-[var(--text-tertiary)] hover:text-[var(--error-text)] hover:bg-[var(--error-bg)] transition-colors disabled:opacity-50",title:F.membershipSource==="Both"?c("tenants.members.source.cannotRemoveBoth"):c("tenants.members.remove"),children:l===F.userId?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.UserMinus,{className:"w-4 h-4"})}),!F.isOwner&&F.membershipSource==="Group"&&e.jsx("span",{className:"p-2 text-[var(--text-tertiary)] opacity-40 cursor-not-allowed",title:c("tenants.members.source.cannotRemoveGroup"),children:e.jsx(r.UserMinus,{className:"w-4 h-4"})})]})}];return e.jsxs(e.Fragment,{children:[e.jsx(E.DataTable,{data:n??[],loading:s,columns:J,searchable:!0,searchPlaceholder:c("tenants.members.search"),searchFilter:(F,A)=>(F.userDisplayName||"").toLowerCase().includes(A.toLowerCase())||(F.userEmail||"").toLowerCase().includes(A.toLowerCase()),getRowKey:F=>F.userId,emptyMessage:c("tenants.members.empty"),emptyIcon:e.jsx(r.Users,{className:"w-12 h-12 mx-auto text-[var(--text-tertiary)]"}),headerActions:e.jsxs("button",{onClick:ae,className:"btn btn-primary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),c("tenants.members.add")]}),pagination:{pageSize:10,showSizeSelector:!0}}),b.member&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"card w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:c("tenants.members.manageRoles.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1",children:c("tenants.members.manageRoles.subtitle",{name:b.member.userDisplayName||b.member.userEmail})})]}),e.jsx("button",{onClick:q,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),u?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto p-3 border border-[var(--border-color)] rounded-[var(--radius-card)] bg-[var(--bg-secondary)]",children:b.availableRoles.length===0?e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] text-center py-4",children:c("tenants.members.manageRoles.noRolesAvailable")}):b.availableRoles.map(F=>e.jsxs("label",{className:"flex items-center gap-3 cursor-pointer p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx("input",{type:"checkbox",checked:b.selectedRoleIds.includes(F.id),onChange:()=>U(F.id),className:"w-4 h-4 rounded border-[var(--border-color)] text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:F.name}),F.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:F.description})]})]},F.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:q,className:"px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:c("common:cancel")}),e.jsx("button",{onClick:z,disabled:o||u,className:"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)] transition-colors disabled:opacity-50",children:o?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):c("common:save")})]})]})}),p&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"card w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:c("tenants.members.addTitle")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1",children:c("tenants.members.addSubtitle")})]}),e.jsx("button",{onClick:$,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsx("input",{type:"text",value:f,onChange:F=>D(F.target.value),className:"input w-full",placeholder:c("tenants.members.searchUsers")})}),T?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto p-3 border border-[var(--border-color)] rounded-[var(--radius-card)] bg-[var(--bg-secondary)]",children:B.filter(F=>f===""||F.fullName.toLowerCase().includes(f.toLowerCase())||F.email.toLowerCase().includes(f.toLowerCase())).map(F=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${y===F.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("input",{type:"radio",name:"selectedUser",checked:y===F.id,onChange:()=>H(F.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:F.fullName}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:F.email})]})]},F.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:$,className:"btn btn-secondary",children:c("common:cancel")}),e.jsx("button",{onClick:X,disabled:!y||R,className:"btn btn-primary",children:R?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):c("common:add")})]})]})})]})}function ss(t){return new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}function as({tenantId:t,groups:n,loadingGroups:s,removingGroupId:l,onRefresh:d,onRemoveGroup:i}){const{t:c}=de.useTranslation("admin"),b=xe.useNavigate(),[h,u]=a.useState(!1),[m,o]=a.useState([]),[x,p]=a.useState(!1),[S,B]=a.useState([]),[P,T]=a.useState(!1),[g,f]=a.useState(""),[D,y]=a.useState({show:!1,group:null,loading:!1}),[H,R]=a.useState(!1),[L,k]=a.useState(""),[Z,q]=a.useState(""),[U,z]=a.useState(!0),[ee,ae]=a.useState(!1),[$,X]=a.useState(null),J=async()=>{p(!0);try{const v=await E.adminApi.tenants.getAvailableGroups(t);o(v)}catch(v){console.error("Failed to load available groups:",v),o([])}finally{p(!1)}},F=()=>{u(!0),B([]),f(""),J()},A=()=>{u(!1),B([]),f("")},j=v=>{B(N=>N.includes(v)?N.filter(ie=>ie!==v):[...N,v])},M=async()=>{if(S.length===0)return;T(!0);const v=[],N=[];for(const ie of S)try{await E.adminApi.tenants.addGroupToTenant(t,ie),v.push(ie)}catch(le){console.error(`Failed to add group ${ie}:`,le),N.push(ie)}await d(),N.length===0?A():v.length>0&&B(N),T(!1)},O=async()=>{if(L.trim()){ae(!0),X(null);try{const v=await St.groupsApi.create({name:L.trim(),description:Z.trim()||void 0,isSecurityGroup:U});await E.adminApi.tenants.addGroupToTenant(t,v.id),await d(),R(!1),k(""),q(""),z(!0)}catch(v){console.error("Failed to create group:",v);const N=v;N.response?.status===409?X(N.response.data?.message||c("tenants.groups.createError")):X(c("tenants.groups.createError"))}finally{ae(!1)}}},w=[{key:"name",label:c("common:name"),sortable:!0,render:v=>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 text-sm font-medium ${v.isSyncedFromEntra?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]"}`,children:e.jsx(r.UsersRound,{className:"w-4 h-4"})}),e.jsxs("div",{children:[e.jsx("span",{className:"font-medium text-[var(--color-accent-500)] hover:underline",children:v.name}),v.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:v.description})]})]})},{key:"memberCount",label:c("tenants.groups.memberCount"),sortable:!0,hideOnMobile:!0,render:v=>e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:v.memberCount})},{key:"linkType",label:c("tenants.groups.linkType"),render:v=>e.jsx("span",{className:`inline-flex items-center gap-1.5 px-2 py-1 text-xs rounded-[var(--radius-badge)] ${v.isDirect?"bg-[var(--success-bg)] text-[var(--success-text)]":"bg-[var(--info-bg)] text-[var(--info-text)]"}`,children:v.isDirect?c("tenants.groups.directMember"):c("tenants.groups.indirectMember",{groupName:v.linkedViaGroupName})})},{key:"source",label:c("tenants.groups.source"),hideOnMobile:!0,render:v=>e.jsx("span",{className:`inline-flex items-center gap-1.5 px-2 py-1 text-xs rounded-[var(--radius-badge)] ${v.isSyncedFromEntra?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]"}`,children:v.isSyncedFromEntra?e.jsxs(e.Fragment,{children:[e.jsx(r.Cloud,{className:"w-3 h-3"}),"Entra ID"]}):e.jsxs(e.Fragment,{children:[e.jsx(r.UsersRound,{className:"w-3 h-3"}),c("tenants.groups.local")]})})},{key:"addedAt",label:c("tenants.members.joinedAt"),sortable:!0,hideOnMobile:!0,render:v=>e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:v.addedAt?ss(v.addedAt):"-"})},{key:"actions",label:"",width:"80px",render:v=>v.isDirect?e.jsx("button",{onClick:N=>{N.stopPropagation(),y({show:!0,group:v,loading:!1})},disabled:l===v.groupId,className:"btn btn-ghost text-[var(--error-text)] hover:bg-[var(--error-bg)]",title:c("tenants.groups.remove"),children:l===v.groupId?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.X,{className:"w-4 h-4"})}):null}];return e.jsxs("div",{className:"space-y-4",children:[e.jsx(E.DataTable,{data:n??[],loading:s,columns:w,searchable:!0,searchPlaceholder:c("tenants.groups.searchPlaceholder"),searchFilter:(v,N)=>v.name.toLowerCase().includes(N.toLowerCase())||(v.description||"").toLowerCase().includes(N.toLowerCase()),getRowKey:v=>v.groupId,onRowClick:v=>b(`/administration/users/groups/${v.groupId}`),emptyMessage:c("tenants.groups.noGroups"),emptyIcon:e.jsx(r.UsersRound,{className:"w-12 h-12 mx-auto text-[var(--text-tertiary)]"}),headerActions:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>{X(null),R(!0)},className:"btn btn-secondary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),c("groups.createGroup")]}),e.jsxs("button",{onClick:F,className:"btn btn-primary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),c("tenants.groups.add")]})]}),pagination:{pageSize:10,showSizeSelector:!0}}),h&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"card w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:c("tenants.groups.addTitle")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1",children:c("tenants.groups.addSubtitle")})]}),e.jsx("button",{onClick:A,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsx("input",{type:"text",value:g,onChange:v=>f(v.target.value),className:"input w-full",placeholder:c("tenants.groups.searchGroups")})}),x?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):(()=>{const v=m.filter(N=>g===""||N.name.toLowerCase().includes(g.toLowerCase())||(N.description||"").toLowerCase().includes(g.toLowerCase()));return v.length===0?e.jsxs("div",{className:"p-8 text-center border border-[var(--border-color)] rounded-[var(--radius-card)] bg-[var(--bg-secondary)]",children:[e.jsx(r.UsersRound,{className:"w-12 h-12 mx-auto mb-3 text-[var(--text-tertiary)]"}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:m.length===0?c("tenants.groups.noAvailableGroups"):c("tenants.groups.noMatchingGroups")})]}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto p-3 border border-[var(--border-color)] rounded-[var(--radius-card)] bg-[var(--bg-secondary)]",children:v.map(N=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${S.includes(N.groupId)?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("input",{type:"checkbox",checked:S.includes(N.groupId),onChange:()=>j(N.groupId),className:"w-4 h-4 rounded border-[var(--border-color)] text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:N.name}),N.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:N.description})]})]},N.groupId))})})(),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:A,className:"btn btn-secondary",children:c("common:cancel")}),e.jsx("button",{onClick:M,disabled:S.length===0||P,className:"btn btn-primary",children:P?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):c("common:add")})]})]})}),D.group&&e.jsx(Ve.ConfirmModal,{isOpen:D.show,title:c("tenants.groups.remove"),message:c("tenants.groups.confirmRemove",{name:D.group.name}),variant:"danger",confirmLabel:c("tenants.groups.remove"),loading:D.loading,onConfirm:async()=>{if(D.group){y(v=>({...v,loading:!0}));try{await i(D.group.groupId)}finally{y({show:!1,group:null,loading:!1})}}},onCancel:()=>y({show:!1,group:null,loading:!1})}),H&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",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 m-4",children:[e.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-[var(--border-color)]",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold text-[var(--text-primary)]",children:c("tenants.groups.createTitle")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)] mt-1",children:c("tenants.groups.createSubtitle")})]}),e.jsx("button",{onClick:()=>R(!1),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 space-y-4",children:[$&&e.jsx("div",{className:"p-3 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-[var(--error-text)]",children:[e.jsx("span",{children:$}),e.jsx("button",{onClick:()=>X(null),className:"ml-auto",children:e.jsx(r.X,{className:"w-4 h-4"})})]})}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:[c("groups.groupName")," *"]}),e.jsx("input",{type:"text",value:L,onChange:v=>k(v.target.value),placeholder:c("groups.groupNamePlaceholder"),className:"w-full 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)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:c("common:description")}),e.jsx("textarea",{value:Z,onChange:v=>q(v.target.value),placeholder:c("groups.descriptionPlaceholder"),rows:3,className:"w-full 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)] resize-none"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{type:"button",onClick:()=>z(!U),className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${U?"bg-[var(--color-accent-500)]":"bg-[var(--bg-tertiary)]"}`,children:e.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${U?"translate-x-6":"translate-x-1"}`})}),e.jsx("span",{className:"text-sm text-[var(--text-primary)]",children:c("groups.isSecurityGroup")})]})]}),e.jsxs("div",{className:"flex items-center justify-end gap-3 p-4 border-t border-[var(--border-color)]",children:[e.jsx("button",{onClick:()=>R(!1),className:"btn btn-secondary",children:c("common:cancel")}),e.jsxs("button",{onClick:O,disabled:!L.trim()||ee,className:"btn btn-primary disabled:opacity-50 disabled:cursor-not-allowed",children:[ee?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Check,{className:"w-4 h-4"}),c("tenants.groups.createAndAdd")]})]})]})})]})}const rs={Global:{bg:"bg-[var(--error-bg)]",text:"text-[var(--error-text)]"},Admin:{bg:"bg-[var(--warning-bg)]",text:"text-[var(--warning-text)]"},Manager:{bg:"bg-[var(--info-bg)]",text:"text-[var(--info-text)]"},Contributor:{bg:"bg-[var(--success-bg)]",text:"text-[var(--success-text)]"},Viewer:{bg:"bg-[var(--accent-bg)]",text:"text-[var(--accent-text)]"}};function ns({roles:t,loadingRoles:n}){const{t:s}=de.useTranslation("admin"),l=[{key:"name",label:s("tenants.roles.columns.name"),sortable:!0,render:d=>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 ${d.isSystem?"bg-[var(--warning-bg)] text-[var(--warning-text)]":"bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]"}`,children:d.isSystem?e.jsx(r.Lock,{className:"w-4 h-4"}):e.jsx(r.Shield,{className:"w-4 h-4"})}),e.jsxs("div",{children:[e.jsx("span",{className:"font-medium text-[var(--text-primary)]",children:d.name}),d.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5 line-clamp-1",children:d.description})]})]})},{key:"category",label:s("tenants.roles.columns.category"),sortable:!0,render:d=>{const i=rs[d.category]??{bg:"bg-[var(--bg-tertiary)]",text:"text-[var(--text-secondary)]"};return e.jsx("span",{className:`inline-flex items-center px-2 py-1 text-xs rounded-[var(--radius-badge)] ${i.bg} ${i.text}`,children:s(`tenants.roles.categories.${d.category}`,{defaultValue:d.category})})}},{key:"applicationName",label:s("tenants.roles.columns.application"),sortable:!0,hideOnMobile:!0,render:d=>e.jsx("span",{className:"inline-flex items-center gap-1.5 text-sm text-[var(--text-secondary)]",children:d.applicationId?e.jsxs(e.Fragment,{children:[e.jsx(r.AppWindow,{className:"w-3.5 h-3.5"}),d.applicationName]}):e.jsxs(e.Fragment,{children:[e.jsx(r.Globe,{className:"w-3.5 h-3.5"}),s("tenants.roles.scope.global")]})})},{key:"permissionsCount",label:s("tenants.roles.columns.permissions"),sortable:!0,hideOnMobile:!0,render:d=>e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:d.permissionsCount})},{key:"assignedMembersCount",label:s("tenants.roles.columns.members"),sortable:!0,hideOnMobile:!0,render:d=>e.jsxs("span",{className:"inline-flex items-center gap-1.5 text-sm text-[var(--text-secondary)]",children:[e.jsx(r.Users,{className:"w-3.5 h-3.5"}),d.assignedMembersCount]})}];return e.jsx(E.DataTable,{data:t??[],loading:n,columns:l,searchable:!0,searchPlaceholder:s("tenants.roles.search"),searchFilter:(d,i)=>d.name.toLowerCase().includes(i.toLowerCase())||(d.description||"").toLowerCase().includes(i.toLowerCase())||(d.applicationName||"").toLowerCase().includes(i.toLowerCase()),getRowKey:d=>d.id,emptyMessage:s("tenants.roles.empty"),emptyIcon:e.jsx(r.Shield,{className:"w-12 h-12 mx-auto text-[var(--text-tertiary)]"}),pagination:{pageSize:10,showSizeSelector:!0}})}const Le={Inherited:{dot:"bg-green-500",text:"text-green-600 dark:text-green-400",bg:"bg-green-50 dark:bg-green-900/20",label:"inheritedLabel"},Direct:{dot:"bg-blue-500",text:"text-blue-600 dark:text-blue-400",bg:"bg-blue-50 dark:bg-blue-900/20",label:"directLabel"},Overridden:{dot:"bg-orange-500",text:"text-orange-600 dark:text-orange-400",bg:"bg-orange-50 dark:bg-orange-900/20",label:"directLabel"},Revoked:{dot:"bg-red-500",text:"text-red-600 dark:text-red-400",bg:"bg-red-50 dark:bg-red-900/20",label:"revokedLabel"},Unavailable:{dot:"bg-gray-400",text:"text-gray-500",bg:"",label:""}},is=t=>{const n=[];for(const s of t){const l=s.originalSource!=="Revoked"&&s.originalSource!=="Unavailable",d=s.isChecked;l&&!d?n.push({moduleId:s.id,action:"revoke"}):!l&&d&&(s.originalSource==="Revoked"?n.push({moduleId:s.id,action:"remove-override"}):n.push({moduleId:s.id,action:"add"}))}return n},ls=t=>{const n=[];for(const s of t)for(const l of s.sections){const d=l.originalSource!=="Revoked"&&l.originalSource!=="Unavailable",i=l.isChecked;d&&!i?n.push({sectionId:l.id,action:"revoke"}):!d&&i&&(l.originalSource==="Revoked"?n.push({sectionId:l.id,action:"remove-override"}):n.push({sectionId:l.id,action:"add"}))}return n},os=(t,n,s)=>t.map(l=>l.id!==n?l:{...l,isChecked:s,sections:l.sections.map(d=>({...d,isChecked:s}))}),cs=(t,n,s)=>t.map(l=>{if(l.id!==n)return l;const d=l.sections.map(i=>i.id===s?{...i,isChecked:!i.isChecked}:i);return{...l,isChecked:d.some(i=>i.isChecked),sections:d}}),ds=({section:t,moduleId:n,renderIcon:s,isInheritedRevoked:l,toggleSection:d,t:i})=>{const c=l(t.originalSource,t.isChecked);return e.jsxs("div",{className:`flex items-center gap-2 p-2 rounded ${c?"bg-red-50/60 dark:bg-red-900/10 hover:bg-red-50 dark:hover:bg-red-900/20":"hover:bg-[var(--bg-hover)]"}`,children:[e.jsxs("button",{onClick:()=>d(n,t.id),className:`w-4 h-4 rounded border-2 flex items-center justify-center flex-shrink-0 transition-colors ${c?"border-red-500 bg-red-500":t.isChecked?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]":"border-[var(--border-color)] hover:border-[var(--color-accent-600)]"}`,children:[c&&e.jsx(r.Ban,{className:"w-2.5 h-2.5 text-white"}),!c&&t.isChecked&&e.jsx(r.Check,{className:"w-2.5 h-2.5 text-white"})]}),e.jsx("div",{className:`p-1 rounded ${c?"bg-red-100 dark:bg-red-900/30":"bg-[var(--bg-tertiary)]"}`,children:s(t.icon)||e.jsx(r.Layers,{className:`w-3 h-3 ${c?"text-red-400":"text-[var(--text-muted)]"}`})}),e.jsx("span",{className:`text-sm flex-1 ${c?"line-through text-red-500 dark:text-red-400":"text-[var(--text-primary)]"}`,children:t.label}),c&&e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400 font-medium",children:i("tenants.applications.customize.revokedLabel")})]},t.id)},ms=({module:t,isExpanded:n,renderIcon:s,isInheritedRevoked:l,getModuleCheckState:d,toggleModuleExpand:i,toggleModule:c,toggleSection:b,mode:h,t:u})=>{const m=d(t),o=l(t.originalSource,t.isChecked);return e.jsxs("div",{children:[e.jsxs("div",{className:`flex items-center gap-2 p-3 ${o?"bg-red-50/60 dark:bg-red-900/10 hover:bg-red-50 dark:hover:bg-red-900/20":"hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("button",{onClick:()=>i(t.id),className:"p-1 rounded hover:bg-[var(--bg-tertiary)]",children:n?e.jsx(r.ChevronDown,{className:"w-4 h-4 text-[var(--text-muted)]"}):e.jsx(r.ChevronRight,{className:"w-4 h-4 text-[var(--text-muted)]"})}),e.jsxs("button",{onClick:()=>c(t.id),className:`w-5 h-5 rounded border-2 flex items-center justify-center flex-shrink-0 transition-colors ${o?"border-red-500 bg-red-500":m==="checked"||m==="indeterminate"?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]":"border-[var(--border-color)] hover:border-[var(--color-accent-600)]"}`,children:[o&&e.jsx(r.Ban,{className:"w-3 h-3 text-white"}),!o&&m==="checked"&&e.jsx(r.Check,{className:"w-3 h-3 text-white"}),!o&&m==="indeterminate"&&e.jsx(r.Minus,{className:"w-3 h-3 text-white"})]}),e.jsx("div",{className:`p-1.5 rounded ${o?"bg-red-100 dark:bg-red-900/30":"bg-[var(--bg-tertiary)]"}`,children:s(t.icon)||e.jsx(r.Layers,{className:`w-4 h-4 ${o?"text-red-400":"text-[var(--text-muted)]"}`})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("p",{className:`font-medium truncate ${o?"line-through text-red-500 dark:text-red-400":"text-[var(--text-primary)]"}`,children:t.label}),h!=="template"&&t.source!=="Unavailable"&&(o?e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400 font-medium",children:u("tenants.applications.customize.revokedLabel")}):e.jsx("span",{className:`text-[10px] px-1.5 py-0.5 rounded-full ${(Le[t.source]||Le.Inherited).bg} ${(Le[t.source]||Le.Inherited).text}`,children:u(`tenants.applications.customize.${(Le[t.source]||Le.Inherited).label}`)}))]}),e.jsxs("p",{className:`text-xs ml-4 ${o?"text-red-400 dark:text-red-500":"text-[var(--text-muted)]"}`,children:[t.sections.filter(x=>x.isChecked).length,"/",t.sections.length," ",u("tenants.applications.customize.sections","sections")]})]})]}),n&&t.sections.length>0&&e.jsx("div",{className:"pl-12 pb-2 space-y-1 bg-[var(--bg-secondary)]",children:t.sections.map(x=>e.jsx(ds,{section:x,moduleId:t.id,renderIcon:s,isInheritedRevoked:l,toggleSection:b,t:u},x.id))})]},t.id)};function xs({isOpen:t,onClose:n,tenantId:s,tenantName:l,application:d,onSaved:i,mode:c="tenant"}){const{t:b}=de.useTranslation("admin"),[h,u]=a.useState(!0),[m,o]=a.useState(!1),[x,p]=a.useState(null),[S,B]=a.useState(null),[P,T]=a.useState("full"),[g,f]=a.useState([]),[D,y]=a.useState(new Set),H=j=>{if(!j)return null;const O=gt[j];return O?e.jsx(O,{className:"w-4 h-4"}):null},R=a.useCallback(async()=>{if(t){u(!0),p(null);try{if(c==="template"){const M=(await E.adminApi.templates.getApplicationModules(s,d.applicationId)).map(w=>({id:w.moduleId,label:w.label,code:w.code,icon:w.icon,source:w.isAssigned?"Direct":"Unavailable",accessLevel:"FullAccess",isEffectivelyActive:w.isAssigned,isChecked:w.isAssigned,originalSource:w.isAssigned?"Direct":"Unavailable",sections:w.sections.map(v=>({id:v.sectionId,label:v.label,code:v.code,icon:v.icon,source:v.isAssigned?"Direct":"Unavailable",accessLevel:"FullAccess",isEffectivelyActive:v.isAssigned,isChecked:v.isAssigned,originalSource:v.isAssigned?"Direct":"Unavailable"}))}));f(M),T(M.some(w=>w.isChecked)?"custom":"full");const O=new Set(M.filter(w=>w.sections.some(v=>v.isChecked)).map(w=>w.id));y(O)}else{const M=(await E.adminApi.tenants.getEffectiveTree(s,d.applicationId)).map(v=>({id:v.moduleId,label:v.label,code:v.code,icon:v.icon,source:v.source,accessLevel:v.accessLevel,isEffectivelyActive:v.isEffectivelyActive,isChecked:v.source!=="Revoked"&&v.source!=="Unavailable",originalSource:v.source,sections:v.sections.map(N=>({id:N.sectionId,label:N.label,code:N.code,icon:N.icon,source:N.source,accessLevel:N.accessLevel,isEffectivelyActive:N.isEffectivelyActive,isChecked:N.source!=="Revoked"&&N.source!=="Unavailable",originalSource:N.source}))}));f(M);const O=M.some(v=>v.source==="Direct"||v.source==="Overridden"||v.source==="Revoked"||v.sections.some(N=>N.source==="Direct"||N.source==="Overridden"||N.source==="Revoked"));T(O?"custom":"full");const w=new Set(M.filter(v=>v.sections.some(N=>N.source!=="Inherited"||!N.isEffectivelyActive)).map(v=>v.id));y(w)}}catch(j){p(j instanceof Error?j.message:"Failed to load data")}finally{u(!1)}}},[t,d.applicationId,s,c]);a.useEffect(()=>{R()},[R]);const L=j=>j.map(M=>({...M,isChecked:!0,sections:M.sections.map(O=>({...O,isChecked:!0}))})),k=j=>{j==="custom"&&P==="full"&&(g.some(O=>O.isChecked||O.sections.some(w=>w.isChecked))||f(L)),T(j)},Z=j=>{y(M=>{const O=new Set(M);return O.has(j)?O.delete(j):O.add(j),O})},q=j=>{f(M=>{const w=!M.find(v=>v.id===j)?.isChecked;return os(M,j,w)})},U=(j,M)=>{f(O=>cs(O,j,M))},z=(j,M)=>(j==="Inherited"||j==="Revoked")&&!M,ee=j=>{if(j.sections.length===0)return j.isChecked?"checked":"unchecked";const M=j.sections.filter(O=>O.isChecked).length;return M===0?"unchecked":M===j.sections.length?"checked":"indeterminate"},ae=async()=>{if(P==="full")await E.adminApi.templates.updateApplicationModules(s,d.applicationId,{accessMode:"full"});else{const j=g.filter(O=>O.isChecked||O.sections.some(w=>w.isChecked)).map(O=>O.id),M=g.flatMap(O=>O.sections.filter(w=>w.isChecked).map(w=>w.id));await E.adminApi.templates.updateApplicationModules(s,d.applicationId,{accessMode:"custom",moduleIds:j,sectionIds:M})}},$=async()=>{const j=is(g),M=ls(g);(j.length>0||M.length>0)&&await E.adminApi.tenants.saveOverrides(s,d.applicationId,{modules:j.length>0?j:void 0,sections:M.length>0?M:void 0})},X=async()=>{o(!0),p(null),B(null);try{c==="template"?await ae():await $(),B(b("tenants.applications.customize.saved","Access customization saved")),i?.(),setTimeout(()=>n(),1e3)}catch(j){p(j instanceof Error?j.message:"Failed to save")}finally{o(!1)}},J=async()=>{o(!0),p(null);try{const j="remove-override",M=g.filter(w=>w.originalSource==="Direct"||w.originalSource==="Overridden"||w.originalSource==="Revoked").map(w=>({moduleId:w.id,action:j})),O=g.flatMap(w=>w.sections.filter(v=>v.originalSource==="Direct"||v.originalSource==="Overridden"||v.originalSource==="Revoked").map(v=>({sectionId:v.id,action:j})));(M.length>0||O.length>0)&&await E.adminApi.tenants.saveOverrides(s,d.applicationId,{modules:M.length>0?M:void 0,sections:O.length>0?O:void 0}),B(b("tenants.applications.customize.resetSuccess","Customizations reset")),i?.(),setTimeout(()=>n(),1e3)}catch(j){p(j instanceof Error?j.message:"Failed to reset")}finally{o(!1)}},A=(()=>{const j=g.length,M=g.filter(Q=>Q.isChecked).length,O=g.reduce((Q,pe)=>Q+pe.sections.length,0),w=g.reduce((Q,pe)=>Q+pe.sections.filter(me=>me.isChecked).length,0),v=g.filter(Q=>Q.source==="Inherited").length,N=g.filter(Q=>Q.source==="Direct"||Q.source==="Overridden").length,ie=g.filter(Q=>Q.source==="Revoked").length,le=g.filter(Q=>z(Q.originalSource,Q.isChecked)).length,te=g.reduce((Q,pe)=>Q+pe.sections.filter(me=>z(me.originalSource,me.isChecked)).length,0);return{totalModules:j,checkedModules:M,totalSections:O,checkedSections:w,inheritedCount:v,directCount:N,revokedCount:ie,revokedInheritedModules:le,revokedInheritedSections:te}})();return a.useEffect(()=>{const j=M=>{M.key==="Escape"&&t&&n()};return document.addEventListener("keydown",j),()=>document.removeEventListener("keydown",j)},[t,n]),a.useEffect(()=>(t?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[t]),t?e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[e.jsx("button",{type:"button",className:"absolute inset-0 bg-black/50",onClick:n,"aria-label":"Close modal"}),e.jsxs("div",{className:"relative w-full max-w-2xl max-h-[90vh] bg-[var(--bg-card)] rounded-[var(--radius-card)] shadow-xl border border-[var(--border-color)] flex flex-col",children:[e.jsxs("div",{className:"flex items-start justify-between p-4 border-b border-[var(--border-color)]",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold text-[var(--text-primary)]",children:b("tenants.applications.customize.title","Customize Access")}),e.jsxs("p",{className:"mt-1 text-sm text-[var(--text-muted)]",children:[d.label," - ",l]})]}),e.jsx("button",{onClick:n,className:"p-1 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-muted)]",children:e.jsx(r.X,{className:"w-5 h-5"})})]}),e.jsx("div",{className:"flex-1 overflow-y-auto p-4",children:h?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-600)]"})}):e.jsxs("div",{className:"space-y-6",children:[x&&e.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:[e.jsx(r.AlertCircle,{className:"w-4 h-4 text-[var(--error-text)]"}),e.jsx("p",{className:"text-sm text-[var(--error-text)]",children:x})]}),S&&e.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:[e.jsx(r.CheckCircle,{className:"w-4 h-4 text-[var(--success-text)]"}),e.jsx("p",{className:"text-sm text-[var(--success-text)]",children:S})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("label",{className:"text-sm font-medium text-[var(--text-secondary)]",children:b("tenants.applications.customize.accessMode","Access Mode")}),e.jsxs("button",{type:"button",onClick:()=>k("full"),className:`w-full flex items-start gap-3 p-4 rounded-[var(--radius-card)] border text-left transition-colors ${P==="full"?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]/5":"border-[var(--border-color)] hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("div",{className:`w-5 h-5 mt-0.5 rounded-full border-2 flex items-center justify-center flex-shrink-0 ${P==="full"?"border-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:P==="full"&&e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-[var(--color-accent-600)]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:b("tenants.applications.customize.fullAccess","Full Application Access")}),e.jsx("p",{className:"text-sm text-[var(--text-muted)] mt-1",children:b("tenants.applications.customize.fullAccessHint","Access to all modules and sections of this application")})]})]}),e.jsxs("button",{type:"button",onClick:()=>k("custom"),className:`w-full flex items-start gap-3 p-4 rounded-[var(--radius-card)] border text-left transition-colors ${P==="custom"?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]/5":"border-[var(--border-color)] hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("div",{className:`w-5 h-5 mt-0.5 rounded-full border-2 flex items-center justify-center flex-shrink-0 ${P==="custom"?"border-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:P==="custom"&&e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-[var(--color-accent-600)]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:b("tenants.applications.customize.customAccess","Custom Access")}),e.jsx("p",{className:"text-sm text-[var(--text-muted)] mt-1",children:b("tenants.applications.customize.customAccessHint","Select specific modules and sections to grant access")})]})]})]}),P==="custom"&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("label",{className:"text-sm font-medium text-[var(--text-secondary)]",children:b("tenants.applications.customize.selectModules","Select Modules & Sections")}),e.jsxs("div",{className:"border border-[var(--border-color)] rounded-[var(--radius-card)] divide-y divide-[var(--border-color)]",children:[g.map(j=>e.jsx(ms,{module:j,isExpanded:D.has(j.id),renderIcon:H,isInheritedRevoked:z,getModuleCheckState:ee,toggleModuleExpand:Z,toggleModule:q,toggleSection:U,mode:c,t:b},j.id)),g.length===0&&e.jsx("div",{className:"p-6 text-center text-sm text-[var(--text-muted)]",children:b("tenants.applications.customize.noModules","No modules available")})]})]})]})}),e.jsx("div",{className:"flex-shrink-0 border-t border-[var(--border-color)] p-4 bg-[var(--bg-secondary)]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-sm text-[var(--text-muted)]",children:P==="custom"?e.jsxs("div",{className:"space-y-0.5",children:[e.jsxs("div",{children:[A.checkedModules,"/",A.totalModules," ",b("tenants.applications.customize.modules","modules"),","," ",A.checkedSections,"/",A.totalSections," ",b("tenants.applications.customize.sections","sections")]}),(A.revokedInheritedModules>0||A.revokedInheritedSections>0)&&e.jsxs("div",{className:"text-red-500 dark:text-red-400 text-xs flex items-center gap-1",children:[e.jsx(r.Ban,{className:"w-3 h-3"}),A.revokedInheritedModules>0&&e.jsxs("span",{children:[A.revokedInheritedModules," ",b("tenants.applications.customize.modules")," ",b("tenants.applications.customize.revokedLabel").toLowerCase()]}),A.revokedInheritedModules>0&&A.revokedInheritedSections>0&&", ",A.revokedInheritedSections>0&&e.jsxs("span",{children:[A.revokedInheritedSections," ",b("tenants.applications.customize.sections")," ",b("tenants.applications.customize.revokedLabel").toLowerCase()]})]})]}):b("tenants.applications.customize.fullAccessDesc","Full application access")}),e.jsxs("div",{className:"flex gap-2",children:[c!=="template"&&g.some(j=>j.originalSource!=="Inherited"&&j.originalSource!=="Unavailable")&&e.jsxs("button",{onClick:J,disabled:m,className:"flex items-center gap-2 px-3 py-2 rounded-[var(--radius-button)] font-medium text-orange-600 hover:bg-orange-50 dark:text-orange-400 dark:hover:bg-orange-900/20",children:[e.jsx(r.RotateCcw,{className:"w-4 h-4"}),b("tenants.applications.customize.resetOverrides","Reset to template")]}),e.jsx("button",{onClick:n,className:"px-4 py-2 rounded-[var(--radius-button)] font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]",children:b("common.cancel","Cancel")}),e.jsxs("button",{onClick:X,disabled:m,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] font-medium bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50",children:[m?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),b("common.save","Save")]})]})]})})]})]}):null}function us(t){return new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}const ps=t=>t==="checked"||t==="indeterminate"?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]":"border-[var(--border-color)] hover:border-[var(--color-accent-600)]",vs=()=>e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}),gs=t=>e.jsxs("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:[e.jsx(r.Boxes,{className:"w-12 h-12 mx-auto mb-4 text-[var(--text-tertiary)]"}),e.jsx("p",{children:t("tenants.applications.empty")})]}),et=[{level:"FullAccess",labelKey:"tenants.applications.accessLevels.fullAccess",descKey:"tenants.applications.accessLevels.fullAccessDesc",selectedBorder:"border-green-500",selectedBg:"bg-green-500/10",dotBg:"bg-green-500"},{level:"RequestAccess",labelKey:"tenants.applications.accessLevels.requestAccess",descKey:"tenants.applications.accessLevels.requestAccessDesc",selectedBorder:"border-amber-500",selectedBg:"bg-amber-500/10",dotBg:"bg-amber-500"},{level:"Disabled",labelKey:"tenants.applications.accessLevels.disabled",descKey:"tenants.applications.accessLevels.disabledDesc",selectedBorder:"border-gray-500",selectedBg:"bg-gray-500/10",dotBg:"bg-gray-500"}];function bs({selectedAccessLevel:t,setSelectedAccessLevel:n}){const{t:s}=de.useTranslation("admin");return e.jsx("div",{className:"space-y-3",children:et.map(l=>{const d=t===l.level;return e.jsxs("button",{type:"button",onClick:()=>n(l.level),className:`w-full flex items-start gap-3 p-4 rounded-[var(--radius-input)] border text-left transition-colors ${d?`${l.selectedBorder} ${l.selectedBg}`:"border-[var(--border-color)] hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("div",{className:`w-5 h-5 mt-0.5 rounded-full border-2 flex items-center justify-center flex-shrink-0 ${d?l.selectedBorder:"border-[var(--border-color)]"}`,children:d&&e.jsx("div",{className:`w-2.5 h-2.5 rounded-full ${l.dotBg}`})}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:s(l.labelKey)}),e.jsx("p",{className:"text-sm text-[var(--text-muted)] mt-1",children:s(l.descKey)})]})]},l.level)})})}function ht({tenantId:t,tenantName:n,mode:s="tenant",applications:l,loadingApps:d,actionLoading:i,onRefresh:c,onUpdateAccessLevel:b,onRemoveApplication:h,addingApplication:u,availableAppsError:m,filteredAvailableApps:o,loadingAvailableApps:x,selectedAppIds:p,assigningApps:S,appSearchTerm:B,selectedAccessLevel:P,bulkAccessMode:T,bulkModules:g,bulkExpandedModules:f,loadingBulkModules:D,showCustomizeDrawer:y,customizingApp:H,onOpenAddApplication:R,onCloseAddApplication:L,onAssignApplications:k,onAppToggle:Z,onSelectAllApps:q,onClearAppSelection:U,onOpenCustomizeDrawer:z,onCloseCustomizeDrawer:ee,onLoadBulkModules:ae,onToggleBulkModuleExpand:$,onToggleBulkModule:X,onToggleBulkSection:J,onGetBulkModuleCheckState:F,onGetBulkStats:A,onSelectAllBulkModules:j,onClearBulkModules:M,setAppSearchTerm:O,setSelectedAccessLevel:w,setBulkAccessMode:v}){const{t:N}=de.useTranslation("admin"),ie=a.useMemo(()=>A(),[g,A]),[le,te]=a.useState({show:!1,app:null,loading:!1}),Q=a.useMemo(()=>(l??[]).filter(K=>K.source==="Inherited"||K.source==="Overridden"),[l]),pe=a.useMemo(()=>(l??[]).filter(K=>K.source==="Direct"||K.source==="Revoked"),[l]),me=K=>{const ce=et.find(W=>W.level===K.accessLevel),ge=K.accessLevel!=="Disabled";return e.jsx(E.EntityCard,{avatar:{letter:(K.label?.at(0)||"A").toUpperCase(),color:ge?"var(--color-accent-500)":"#6b7280"},title:K.label,subtitle:K.code,description:K.assignedAt?N("tenants.applications.assignedAt",{date:us(K.assignedAt)}):void 0,stats:e.jsxs("span",{children:[K.inheritedModuleCount>0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-green-600 dark:text-green-400 font-medium",children:K.inheritedModuleCount})," ",N("tenants.applications.counts.inherited")]}),K.directModuleCount>0&&e.jsxs(e.Fragment,{children:[K.inheritedModuleCount>0?", ":"",e.jsx("span",{className:"text-blue-600 dark:text-blue-400 font-medium",children:K.directModuleCount})," ",N("tenants.applications.counts.direct")]}),K.revokedModuleCount>0&&e.jsxs(e.Fragment,{children:[K.inheritedModuleCount>0||K.directModuleCount>0?", ":"",e.jsx("span",{className:"text-red-600 dark:text-red-400 font-medium",children:K.revokedModuleCount})," ",N("tenants.applications.counts.revoked")]}),K.inheritedModuleCount===0&&K.directModuleCount===0&&K.revokedModuleCount===0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"font-medium text-[var(--text-primary)]",children:"0"}),"/",K.totalModuleCount]})," ",N("tenants.applications.customize.modules")," / ",e.jsx("span",{className:"font-medium text-[var(--text-primary)]",children:K.totalSectionCount})," ",N("tenants.applications.customize.sections")]}),customFooter:e.jsxs("div",{className:"space-y-2 pt-2 mt-2 border-t border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:`w-2.5 h-2.5 rounded-full flex-shrink-0 ${ce?.dotBg??"bg-green-500"}`}),e.jsx("select",{value:K.accessLevel,onChange:W=>{b(K.applicationId,W.target.value)},disabled:i===K.applicationId,className:"flex-1 px-2 py-1 rounded-[var(--radius-input)] bg-[var(--bg-secondary)] border border-[var(--border-color)] text-sm text-[var(--text-primary)] focus:ring-2 focus:ring-[var(--color-accent-600)]",children:et.map(W=>e.jsx("option",{value:W.level,children:N(W.labelKey)},W.level))})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("button",{onClick:()=>z(K),className:"btn btn-sm flex items-center justify-center gap-1 flex-1 bg-[var(--color-accent-700)] hover:bg-[var(--color-accent-800)] text-white",children:[e.jsx(r.SlidersHorizontal,{className:"w-4 h-4"}),N("tenants.applications.customize.button")]}),h&&e.jsx("button",{onClick:()=>te({show:!0,app:K,loading:!1}),className:"btn btn-sm flex items-center justify-center px-2 border border-red-300 text-red-500 hover:bg-red-50 hover:border-red-400 dark:border-red-700 dark:hover:bg-red-900/20",title:N("tenants.applications.remove"),children:e.jsx(r.Trash2,{className:"w-4 h-4"})})]})]})},K.applicationId)};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:N("tenants.applications.assigned")}),e.jsxs("button",{onClick:R,className:"btn btn-primary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),N("tenants.applications.add")]})]}),d?vs():null,!d&&(!l||l.length===0)?gs(N):null,!d&&Q.length>0&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("h4",{className:"text-base font-medium text-[var(--text-secondary)]",children:[N("tenants.applications.sectionInherited"),e.jsxs("span",{className:"ml-2 text-sm font-normal text-[var(--text-muted)]",children:["(",Q.length,")"]})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6",children:Q.map(me)})]}),!d&&pe.length>0&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("h4",{className:"text-base font-medium text-[var(--text-secondary)]",children:[N("tenants.applications.sectionDirect"),e.jsxs("span",{className:"ml-2 text-sm font-normal text-[var(--text-muted)]",children:["(",pe.length,")"]})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6",children:pe.map(me)})]})]}),u&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",children:e.jsxs("div",{className:"w-full max-w-6xl bg-[var(--bg-card)] rounded-[var(--radius-card)] shadow-xl border border-[var(--border-color)] max-h-[90vh] flex flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-[var(--border-color)] flex-shrink-0",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:N("tenants.applications.modal.title")}),e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:N("tenants.applications.modal.subtitle")})]}),e.jsx("button",{onClick:L,className:"p-1 hover:bg-[var(--bg-hover)] rounded-[var(--radius-button)]","aria-label":N("common:close","Close"),children:e.jsx(r.X,{className:"w-5 h-5"})})]}),e.jsxs("div",{className:"flex-1 overflow-hidden grid grid-cols-1 md:grid-cols-3 divide-x divide-[var(--border-color)]",children:[e.jsxs("div",{className:"flex flex-col p-4 overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("label",{className:"text-sm font-medium text-[var(--text-secondary)]",children:[N("tenants.applications.modal.selectApps"),p.length>0&&e.jsx("span",{className:"ml-2 px-2 py-0.5 text-xs rounded-full bg-[var(--color-accent-600)] text-white",children:p.length})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{type:"button",onClick:q,className:"text-xs text-[var(--color-accent-600)] hover:underline",children:N("tenants.applications.modal.selectAll")}),p.length>0&&e.jsx("button",{type:"button",onClick:U,className:"text-xs text-[var(--text-muted)] hover:underline",children:N("tenants.applications.modal.clearSelection")})]})]}),e.jsxs("div",{className:"relative mb-3",children:[e.jsx(r.Search,{className:"absolute left-3 top-2.5 w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:B,onChange:K=>O(K.target.value),placeholder:N("tenants.applications.modal.searchPlaceholder"),className:"w-full px-3 py-2 pl-10 rounded-[var(--radius-input)] bg-[var(--bg-secondary)] border border-[var(--border-color)] text-[var(--text-primary)]"})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto border border-[var(--border-color)] rounded-[var(--radius-input)]",children:[x&&e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-600)]"})}),!x&&m&&e.jsx("div",{className:"flex flex-col items-center justify-center py-8 px-4 text-center",children:m==="forbidden"?e.jsxs(e.Fragment,{children:[e.jsx(r.ShieldX,{className:"w-8 h-8 text-red-500 mb-2"}),e.jsx("p",{className:"text-sm font-medium text-red-500 mb-1",children:N("tenants.applications.modal.errorForbidden")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:N("tenants.applications.modal.errorForbiddenHint")})]}):e.jsxs(e.Fragment,{children:[e.jsx(r.AlertTriangle,{className:"w-8 h-8 text-amber-500 mb-2"}),e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] mb-1",children:N("tenants.applications.modal.errorGeneric")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:N("tenants.applications.modal.errorGenericHint")})]})}),!x&&!m&&o.length===0&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 px-4 text-center",children:[e.jsx(r.Boxes,{className:"w-8 h-8 text-[var(--text-tertiary)] mb-2"}),e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:N("tenants.applications.modal.noAvailable")})]}),!x&&!m&&o.length>0&&o.map(K=>{const ce=p.includes(K.id);return e.jsxs("button",{onClick:()=>Z(K.id),className:`w-full flex items-center gap-3 px-3 py-2.5 text-left hover:bg-[var(--bg-hover)] border-b border-[var(--border-color)] last:border-b-0 ${ce?"bg-[var(--color-accent-500)]/10":""}`,children:[e.jsx("div",{className:`w-5 h-5 rounded border-2 flex items-center justify-center flex-shrink-0 ${ce?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:ce&&e.jsx(r.CheckCircle,{className:"w-3 h-3 text-white"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)] truncate",children:K.label}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] truncate",children:K.code})]})]},K.id)})]})]}),e.jsxs("div",{className:"flex flex-col p-4 overflow-hidden",children:[e.jsx("label",{className:"text-sm font-medium text-[var(--text-secondary)] mb-3",children:N("tenants.applications.modal.moduleAccess")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mb-4",children:N("tenants.applications.modal.moduleAccessHint")}),e.jsxs("div",{className:"space-y-2 mb-4",children:[e.jsxs("button",{type:"button",onClick:()=>v("full"),className:`w-full flex items-start gap-3 p-3 rounded-[var(--radius-input)] border text-left transition-colors ${T==="full"?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]/5":"border-[var(--border-color)] hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("div",{className:`w-4 h-4 mt-0.5 rounded-full border-2 flex items-center justify-center flex-shrink-0 ${T==="full"?"border-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:T==="full"&&e.jsx("div",{className:"w-2 h-2 rounded-full bg-[var(--color-accent-600)]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)]",children:N("tenants.applications.customize.fullAccess")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:N("tenants.applications.modal.fullAccessModulesHint")})]})]}),e.jsxs("button",{type:"button",onClick:()=>{v("custom"),p.length>0&&g.length===0&&ae(p[0])},className:`w-full flex items-start gap-3 p-3 rounded-[var(--radius-input)] border text-left transition-colors ${T==="custom"?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]/5":"border-[var(--border-color)] hover:bg-[var(--bg-hover)]"}`,children:[e.jsx("div",{className:`w-4 h-4 mt-0.5 rounded-full border-2 flex items-center justify-center flex-shrink-0 ${T==="custom"?"border-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:T==="custom"&&e.jsx("div",{className:"w-2 h-2 rounded-full bg-[var(--color-accent-600)]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)]",children:N("tenants.applications.customize.customAccess")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:N("tenants.applications.modal.customAccessModulesHint")})]})]})]}),T==="custom"&&e.jsxs("div",{className:"flex-1 overflow-hidden flex flex-col",children:[p.length===0&&e.jsx("p",{className:"text-sm text-[var(--text-muted)] text-center py-8",children:N("tenants.applications.modal.selectAppFirst")}),p.length>0&&D&&e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-600)]"})}),p.length>0&&!D&&e.jsxs(e.Fragment,{children:[p.length>1&&e.jsx("p",{className:"text-xs text-amber-600 mb-2",children:N("tenants.applications.modal.multipleAppsHint")}),e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{className:"text-xs text-[var(--text-muted)]",children:[ie.assignedModules,"/",ie.totalModules," ",N("tenants.applications.customize.modules"),","," ",ie.assignedSections,"/",ie.totalSections," ",N("tenants.applications.customize.sections")]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{type:"button",onClick:j,className:"text-xs text-[var(--color-accent-600)] hover:underline",children:N("tenants.applications.modal.selectAllModules")}),ie.assignedSections>0&&e.jsx("button",{type:"button",onClick:M,className:"text-xs text-[var(--text-muted)] hover:underline",children:N("tenants.applications.modal.clearModules")})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto border border-[var(--border-color)] rounded-[var(--radius-input)]",children:[g.map(K=>{const ce=F(K),ge=f.has(K.id),W=gt,G=K.icon?W[K.icon]:null;return e.jsxs("div",{className:"border-b border-[var(--border-color)] last:border-b-0",children:[e.jsxs("div",{className:"flex items-center gap-2 p-2 hover:bg-[var(--bg-hover)]",children:[e.jsx("button",{type:"button",onClick:()=>$(K.id),className:"p-0.5 rounded hover:bg-[var(--bg-tertiary)]",children:ge?e.jsx(r.ChevronDown,{className:"w-4 h-4 text-[var(--text-muted)]"}):e.jsx(r.ChevronRight,{className:"w-4 h-4 text-[var(--text-muted)]"})}),e.jsxs("button",{type:"button",onClick:()=>X(K.id),className:`w-4 h-4 rounded border-2 flex items-center justify-center flex-shrink-0 transition-colors ${ps(ce)}`,children:[ce==="checked"&&e.jsx(r.Check,{className:"w-2.5 h-2.5 text-white"}),ce==="indeterminate"&&e.jsx(r.Minus,{className:"w-2.5 h-2.5 text-white"})]}),e.jsx("div",{className:"p-1 rounded bg-[var(--bg-tertiary)]",children:G?e.jsx(G,{className:"w-3 h-3 text-[var(--text-muted)]"}):e.jsx(r.Layers,{className:"w-3 h-3 text-[var(--text-muted)]"})}),e.jsx("div",{className:"flex-1 min-w-0",children:e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] truncate",children:K.label})})]}),ge&&K.sections.length>0&&e.jsx("div",{className:"pl-10 pb-1 space-y-0.5 bg-[var(--bg-secondary)]",children:K.sections.map(_=>{const se=_.icon?W[_.icon]:null;return e.jsxs("div",{className:"flex items-center gap-2 p-1.5 rounded hover:bg-[var(--bg-hover)]",children:[e.jsx("button",{type:"button",onClick:()=>J(K.id,_.id),className:`w-3.5 h-3.5 rounded border-2 flex items-center justify-center flex-shrink-0 transition-colors ${_.isAssigned?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]":"border-[var(--border-color)] hover:border-[var(--color-accent-600)]"}`,children:_.isAssigned&&e.jsx(r.Check,{className:"w-2 h-2 text-white"})}),e.jsx("div",{className:"p-0.5 rounded bg-[var(--bg-tertiary)]",children:se?e.jsx(se,{className:"w-3 h-3 text-[var(--text-muted)]"}):e.jsx(r.Layers,{className:"w-3 h-3 text-[var(--text-muted)]"})}),e.jsx("span",{className:"text-xs text-[var(--text-primary)] truncate",children:_.label})]},_.id)})})]},K.id)}),g.length===0&&e.jsx("p",{className:"p-4 text-center text-sm text-[var(--text-muted)]",children:N("tenants.applications.customize.noModules")})]})]})]})]}),e.jsxs("div",{className:"flex flex-col p-4",children:[e.jsx("label",{className:"text-sm font-medium text-[var(--text-secondary)] mb-3",children:N("tenants.applications.modal.accessLevel")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mb-4",children:N("tenants.applications.modal.accessLevelHint")}),e.jsx(bs,{selectedAccessLevel:P,setSelectedAccessLevel:w})]})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 border-t border-[var(--border-color)] flex-shrink-0 bg-[var(--bg-secondary)]",children:[e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:p.length>0?N("tenants.applications.modal.selectedCount",{count:p.length}):N("tenants.applications.modal.noSelection")}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:L,className:"px-4 py-2 rounded-[var(--radius-button)] font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]",children:N("common:cancel")}),e.jsxs("button",{onClick:k,disabled:p.length===0||S,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] font-medium bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50",children:[S?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Plus,{className:"w-4 h-4"}),N("tenants.applications.modal.assign"),p.length>0&&` (${p.length})`]})]})]})]})}),H&&e.jsx(xs,{application:H,tenantId:t,tenantName:n,isOpen:y,onClose:ee,mode:s,onSaved:async()=>{await c(),ee()}}),le.app&&e.jsx(Ve.ConfirmModal,{isOpen:le.show,title:N("tenants.applications.removeConfirm.title"),message:e.jsxs("div",{className:"space-y-3 text-left",children:[e.jsx("p",{children:N("tenants.applications.removeConfirm.message",{name:le.app.label})}),e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsx("p",{className:"text-sm font-medium text-[var(--text-primary)] mb-2",children:N("tenants.applications.removeConfirm.impactTitle")}),e.jsxs("ul",{className:"text-sm text-[var(--text-secondary)] space-y-1",children:[e.jsx("li",{children:N("tenants.applications.removeConfirm.impactModules",{count:le.app.totalModuleCount})}),e.jsx("li",{children:N("tenants.applications.removeConfirm.impactSections",{count:le.app.totalSectionCount})})]})]})]}),variant:"danger",confirmLabel:N("tenants.applications.remove"),loading:le.loading,onConfirm:async()=>{if(!(!h||!le.app)){te(K=>({...K,loading:!0}));try{await h(le.app.applicationId)}finally{te({show:!1,app:null,loading:!1})}}},onCancel:()=>te({show:!1,app:null,loading:!1})})]})}const at=["overview","members","groups","roles","applications","requests"],rt={Pending:{color:"text-[var(--info-text)]",bgColor:"bg-[var(--info-bg)]",borderColor:"border-[var(--info-border)]"},Active:{color:"text-[var(--success-text)]",bgColor:"bg-[var(--success-bg)]",borderColor:"border-[var(--success-border)]"},Suspended:{color:"text-[var(--warning-text)]",bgColor:"bg-[var(--warning-bg)]",borderColor:"border-[var(--warning-border)]"},Archived:{color:"text-[var(--text-tertiary)]",bgColor:"bg-[var(--bg-tertiary)]",borderColor:"border-[var(--border-color)]"}};function hs(){const{t}=de.useTranslation(["admin","common"]),{id:n}=xe.useParams(),s=xe.useNavigate(),{activeTab:l,setActiveTab:d}=tt.useTabNavigation("overview",at),{refreshTenants:i,currentTenant:c}=E.useTenant(),{refreshMenu:b}=E.useNavigation(),h=bt(n),u=Ut(n),m=Ot(n),o=a.useCallback(()=>{c&&n===c.id&&b()},[c,n,b]),x=a.useMemo(()=>({onApplicationsChanged:o}),[o]),p=Vt(n,x),S=Wt(n),B=Kt(n),P=Qe.useAccessRequests("tenant",n),[T,g]=a.useState(null),[f,D]=a.useState({show:!1,title:"",message:"",variant:"warning",onConfirm:()=>{}}),[y,H]=a.useState(new Set);a.useEffect(()=>{if(!n){s("/administration/tenants");return}h.loadTenant()},[n]),a.useEffect(()=>{if(!n||y.has(l))return;(async()=>{switch(l){case"overview":y.has("members")||(await u.loadMembers(),H(z=>new Set(z).add("members")));break;case"members":await u.loadMembers();break;case"groups":await m.loadGroups();break;case"roles":await S.loadRoles();break;case"applications":await p.loadApplications();break;case"requests":await P.loadRequests();break}H(z=>new Set(z).add(l))})()},[l,n]);const R=async U=>{if(!h.tenant||h.tenant.status===U)return;const ee={Active:t("admin:tenants.confirmActivate"),Suspended:t("admin:tenants.confirmSuspend"),Archived:t("admin:tenants.confirmArchive"),Pending:t("admin:tenants.confirmPending")};D({show:!0,title:t("common:confirm"),message:ee[U],variant:U==="Archived"?"danger":"warning",onConfirm:async()=>{g(U);try{U==="Active"?await E.adminApi.tenants.activate(h.tenant.id):U==="Suspended"?await E.adminApi.tenants.suspend(h.tenant.id):U==="Archived"&&await E.adminApi.tenants.archive(h.tenant.id),await i(),await h.loadTenant()}catch(ae){console.error("Failed to update tenant status:",ae)}finally{g(null),D({...f,show:!1})}}})},L=async()=>{g("refresh");try{const U=[h.loadTenant()];switch(l){case"overview":U.push(u.loadMembers());break;case"members":U.push(u.loadMembers());break;case"groups":U.push(m.loadGroups());break;case"roles":U.push(S.loadRoles());break;case"applications":U.push(p.loadApplications());break;case"requests":U.push(P.loadRequests());break}await Promise.all(U)}finally{g(null)}};if(h.loading)return e.jsx("div",{className:"p-6 flex items-center justify-center min-h-screen",children:e.jsxs("div",{className:"text-center",children:[e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin mx-auto mb-2 text-[var(--text-secondary)]"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:t("common:loading")})]})});if(!h.tenant)return e.jsxs("div",{className:"p-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants/list"}]}),e.jsx("div",{className:"mt-4 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:h.error||t("admin:tenants.notFound")})]})})]});const k=h.tenant,Z=rt[k.status],q=U=>{switch(U){case"Active":return e.jsx(r.PlayCircle,{className:"w-4 h-4"});case"Suspended":return e.jsx(r.PauseCircle,{className:"w-4 h-4"});case"Archived":return e.jsx(r.Archive,{className:"w-4 h-4"});default:return e.jsx(r.Building2,{className:"w-4 h-4"})}};return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants/list"},{label:k.name}]}),e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>s("/administration/tenants"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold text-[var(--text-primary)]",children:k.name}),e.jsx("p",{className:"text-sm sm:text-base text-[var(--text-secondary)]",children:k.slug})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:`px-3 py-1 rounded-[var(--radius-badge)] text-sm flex items-center gap-2 ${Z.bgColor} ${Z.color} border ${Z.borderColor}`,children:[q(k.status),t(`admin:tenants.status.${k.status.toLowerCase()}`)]}),e.jsx("span",{className:`px-3 py-1 rounded-[var(--radius-badge)] text-sm ${k.type==="Business"?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--accent-bg)] text-[var(--accent-text)]"}`,children:t(`admin:tenants.type.${k.type.toLowerCase()}`)}),k.status!=="Active"&&k.status!=="Archived"&&e.jsxs("button",{onClick:()=>R("Active"),disabled:T!==null,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--success-dot)] text-white hover:opacity-90 transition-colors disabled:opacity-50",children:[T==="Active"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.PlayCircle,{className:"w-4 h-4"}),t("admin:tenants.actions.activate")]}),k.status==="Active"&&e.jsxs("button",{onClick:()=>R("Suspended"),disabled:T!==null,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] bg-[var(--warning-dot)] text-white hover:opacity-90 transition-colors disabled:opacity-50",children:[T==="Suspended"?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.PauseCircle,{className:"w-4 h-4"}),t("admin:tenants.actions.suspend")]}),e.jsx("button",{onClick:()=>s(`/administration/tenants/${n}/settings`),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",title:t("admin:tenants.settings.title"),children:e.jsx(r.Settings,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsx("button",{onClick:L,disabled:T==="refresh",className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors disabled:opacity-50",title:t("common:refresh"),children:e.jsx(r.RefreshCw,{className:`w-5 h-5 ${T==="refresh"?"animate-spin":""}`})})]})]}),h.error&&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:h.error})]})}),e.jsx("div",{className:"border-b border-[var(--border-color)]",children:e.jsx("div",{className:"flex gap-1 -mb-px",children:at.map(U=>e.jsx("button",{onClick:()=>d(U),className:`px-4 py-2 border-b-2 transition-colors ${l===U?"border-[var(--primary-color)] text-[var(--primary-color)]":"border-transparent text-[var(--text-secondary)] hover:text-[var(--text-primary)]"}`,children:t(`admin:tenants.tabs.${U}`)},U))})}),e.jsxs("div",{children:[l==="overview"&&e.jsx(Jt,{tenant:k,tenantOwner:(()=>{const U=u.members?.find(z=>z.isOwner);return U?{userDisplayName:U.userDisplayName??void 0,userEmail:U.userEmail??void 0}:null})(),statusConfig:rt,actionLoading:T,onRefresh:L,onEditClick:h.openEditGeneralInfo,onStatusChange:U=>{R({activate:"Active",suspend:"Suspended",archive:"Archived"}[U])},onMembersTabClick:()=>d("members"),onLinkOrgClick:B.openLinkOrgModal,onUnlinkOrg:B.handleUnlinkOrganisation}),l==="members"&&e.jsx(ts,{tenantId:n,members:u.members,loadingMembers:u.loadingMembers,actionLoading:T,onRefresh:u.loadMembers,onRemoveMember:u.handleRemoveMember}),l==="groups"&&e.jsx(as,{tenantId:n,groups:m.groups,loadingGroups:m.loadingGroups,removingGroupId:m.removingGroupId,onRefresh:m.loadGroups,onRemoveGroup:m.handleRemoveGroup}),l==="roles"&&e.jsx(ns,{roles:S.roles,loadingRoles:S.loadingRoles}),l==="applications"&&e.jsx(ht,{tenantId:n,tenantName:k.name,applications:p.applications,loadingApps:p.loadingApps,actionLoading:T,onRefresh:p.loadApplications,onUpdateAccessLevel:p.handleUpdateAccessLevel,addingApplication:p.addingApplication,availableAppsError:p.availableAppsError,filteredAvailableApps:p.filteredAvailableApps,loadingAvailableApps:p.loadingAvailableApps,selectedAppIds:p.selectedAppIds,assigningApps:p.assigningApps,appSearchTerm:p.appSearchTerm,selectedAccessLevel:p.selectedAccessLevel,bulkAccessMode:p.bulkAccessMode,bulkModules:p.bulkModules,bulkExpandedModules:p.bulkExpandedModules,loadingBulkModules:p.loadingBulkModules,showCustomizeDrawer:p.showCustomizeDrawer,customizingApp:p.customizingApp,onOpenAddApplication:p.loadAvailableApps,onCloseAddApplication:()=>{p.setAddingApplication(!1),p.setSelectedAppIds([]),p.setAppSearchTerm(""),p.setSelectedAccessLevel("FullAccess"),p.setBulkAccessMode("full"),p.setBulkModules([]),p.setBulkExpandedModules(new Set)},onAssignApplications:p.handleAssignApplications,onAppToggle:p.handleAppToggle,onSelectAllApps:p.selectAllFilteredApps,onClearAppSelection:p.clearAppSelection,onOpenCustomizeDrawer:p.openCustomizeDrawer,onCloseCustomizeDrawer:p.closeCustomizeDrawer,onLoadBulkModules:p.loadBulkModulesForApp,onToggleBulkModuleExpand:p.toggleBulkModuleExpand,onToggleBulkModule:p.toggleBulkModule,onToggleBulkSection:p.toggleBulkSection,onGetBulkModuleCheckState:p.getBulkModuleCheckState,onGetBulkStats:p.getBulkStats,onSelectAllBulkModules:p.selectAllBulkModules,onClearBulkModules:p.clearBulkModules,setAppSearchTerm:p.setAppSearchTerm,setSelectedAccessLevel:p.setSelectedAccessLevel,setBulkAccessMode:p.setBulkAccessMode}),l==="requests"&&e.jsx(Qe.AccessRequestsListTab,{requests:P.requests,loading:P.loading,onReload:()=>P.loadRequests()})]}),B.showLinkOrgModal&&e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center",children:e.jsxs("div",{className:"bg-[var(--bg-primary)] rounded-[var(--radius-card)] p-6 max-w-md w-full mx-4",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)] mb-4",children:t("admin:tenants.organisation.linkTitle")}),e.jsx("p",{className:"text-[var(--text-secondary)] mb-4",children:t("admin:tenants.organisation.linkDescription")}),e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsx("button",{onClick:B.closeLinkOrgModal,className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)]",children:t("common:cancel")}),e.jsx("button",{onClick:()=>{B.openLinkOrgModal(),h.loadTenant()},disabled:B.linkingOrg,className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--primary-color)] text-white hover:opacity-90 disabled:opacity-50",children:B.linkingOrg?t("common:loading"):t("admin:tenants.organisation.link")})]})]})}),f.show&&e.jsx(Ve.ConfirmModal,{title:f.title,message:f.message,variant:f.variant,isOpen:f.show,onConfirm:()=>{f.onConfirm()},onCancel:()=>{D({...f,show:!1})}})]})}const nt=[{value:"UID_CHE",label:"CHE/IDE (Suisse)",country:"CH"},{value:"VAT",label:"VAT (EU)",country:"EU"},{value:"SIRET",label:"SIRET (France)",country:"FR"},{value:"SIREN",label:"SIREN (France)",country:"FR"},{value:"KVK",label:"KVK (Netherlands)",country:"NL"},{value:"CRN",label:"CRN (UK)",country:"GB"},{value:"ABN",label:"ABN (Australia)",country:"AU"},{value:"Other",label:"Other",country:""}];function fs(t){return t==="b2b"?"Business":"Personal"}function ys(t){return t.enableB2C?(t.enableB2B,"Personal"):"Business"}function js(t,n,s,l,d,i,c,b,h,u,m,o,x,p,S,B,P=!1){return{name:t,legalName:n||void 0,countryCode:s,businessIdentifierType:l,businessIdentifier:d,vatNumber:i||void 0,address:{street:c,street2:b||void 0,postalCode:h,city:u,state:m||void 0,country:o,countryCode:x},phone:p||void 0,email:S||void 0,website:B||void 0,isFromRegistry:P||void 0}}function Ns(){const{t}=de.useTranslation(["admin","common"]),n=xe.useNavigate(),[s]=xe.useSearchParams(),{refreshTenants:l}=E.useTenant(),d=s.get("type"),i=s.get("organisationId"),[c,b]=a.useState(null),[h,u]=a.useState(null),[m,o]=a.useState(fs(d)),[x,p]=a.useState(i?"existing":"none"),[S,B]=a.useState(!1),[P,T]=a.useState(!0),[g,f]=a.useState(null),[D,y]=a.useState(!1),[H,R]=a.useState(null),[L,k]=a.useState(!1),[Z,q]=a.useState(!1),[U,z]=a.useState(null),[ee,ae]=a.useState([]),[$,X]=a.useState(""),[J,F]=a.useState(!1);a.useEffect(()=>{(async()=>{try{const ne=await E.adminApi.tenants.getConfig();b(ne.enableB2B),u(ne.enableB2C),i||o(ys(ne))}catch(ne){console.error("Failed to load tenant config:",ne),b(!0),u(!0)}finally{T(!1)}})()},[]),a.useEffect(()=>{if(!i)return;(async()=>{try{const ne=await E.adminApi.organisations.getById(i);z({id:ne.id,name:ne.name,legalName:ne.legalName,countryCode:ne.countryCode,businessIdentifier:ne.businessIdentifier,businessIdentifierType:ne.businessIdentifierType,verificationStatus:ne.verificationStatus,verifiedAt:ne.verifiedAt,createdAt:ne.createdAt}),A||C(ne.name)}catch(ne){console.error("Failed to load organisation:",ne)}})()},[i]),a.useEffect(()=>{if(x!=="existing")return;const ne=setTimeout(async()=>{F(!0);try{const ue=await E.adminApi.organisations.getAvailable($||void 0);ae(ue)}catch(ue){console.error("Failed to search organisations:",ue)}finally{F(!1)}},300);return()=>clearTimeout(ne)},[x,$]);const[A,j]=a.useState(""),[M,O]=a.useState(""),[w,v]=a.useState(""),[N,ie]=a.useState(""),[le,te]=a.useState(""),[Q,pe]=a.useState("CH"),[me,K]=a.useState("UID_CHE"),[ce,ge]=a.useState("CHE-"),W=I=>{const ne=I.toUpperCase().replace(/[^A-Z0-9]/g,"");let ue=ne.startsWith("CHE")?ne.slice(3):ne.replace(/[^0-9]/g,"");return ue=ue.slice(0,9),ue.length===0?"CHE-":ue.length<=3?`CHE-${ue}`:ue.length<=6?`CHE-${ue.slice(0,3)}.${ue.slice(3)}`:`CHE-${ue.slice(0,3)}.${ue.slice(3,6)}.${ue.slice(6)}`},G=I=>{ge(me==="UID_CHE"&&Q==="CH"?W(I):I),q(!1),R(null),k(!1)};a.useEffect(()=>{Q==="CH"&&me==="UID_CHE"&&ge(!ce||ce==="CHE-"?"CHE-":W(ce))},[Q,me]);const[_,se]=a.useState(""),[V,Y]=a.useState(""),[re,ve]=a.useState(""),[he,fe]=a.useState(""),[ye,$e]=a.useState(""),[Te,Re]=a.useState(""),[Se,Ue]=a.useState(""),[Me,Oe]=a.useState(""),[Ge,He]=a.useState(""),[Be,qe]=a.useState("Switzerland"),[Fe,ze]=a.useState("CH"),Ce=I=>I.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/(^-)|(-$)/g,"").substring(0,50),C=I=>{j(I),(!M||M===Ce(A))&&O(Ce(I))},oe=()=>{const I=ce.replace(/[^0-9]/g,"");return!ce||I.length<9||!Q?(R(t("admin:tenants.create.organisation.lookupIncomplete")),!1):!0},je=I=>{I.name&&(ie(I.name),A||C(I.name)),I.legalName&&te(I.legalName),I.vatNumber&&se(I.vatNumber),I.phone&&Y(I.phone),I.email&&ve(I.email),I.website&&fe(I.website)},Pe=I=>{I.street&&$e(I.street),I.street2&&Re(I.street2),I.postalCode&&Ue(I.postalCode),I.city&&Oe(I.city),I.state&&He(I.state),I.country&&qe(I.country),I.countryCode&&ze(I.countryCode)},Ke=I=>I.includes("404")||I.includes("not found")?t("admin:tenants.create.organisation.lookupFailed"):I.includes("credentials")||I.includes("401")?t("admin:tenants.create.organisation.lookupAuthError"):t("admin:tenants.create.organisation.lookupFailed"),ft=async()=>{if(oe()){y(!0),R(null),k(!1);try{const I=await E.adminApi.organisations.lookup(Q,ce);je(I),Pe(I),q(!0),k(!0),setTimeout(()=>k(!1),3e3)}catch(I){console.error("[Zefix Lookup] Failed:",I);const ne=I instanceof Error?I.message:"";R(Ke(ne))}finally{y(!1)}}},yt=async()=>{const I={name:A,slug:M||Ce(A),description:w||void 0},ne=await E.adminApi.tenants.createB2C(I);await l(),n(`/administration/tenants/${ne.id}`)},jt=async()=>{let I;if(x==="existing"&&U)I={name:A,slug:M||Ce(A),description:w||void 0,organisationId:U.id};else if(x==="create"){const ue=js(N,le,Q,me,ce,_,ye,Te,Se,Me,Ge,Be,Fe,V,re,he,Z);I={name:A,slug:M||Ce(A),description:w||void 0,organisation:ue}}else I={name:A,slug:M||Ce(A),description:w||void 0};const ne=await E.adminApi.tenants.createB2B(I);await l(),n(`/administration/tenants/${ne.id}`)},Nt=async I=>{I.preventDefault(),f(null),B(!0);try{m==="Personal"?await yt():await jt()}catch(ne){console.error("Failed to create tenant:",ne);const ue=ne instanceof Error?ne.message:t("admin:tenants.errors.createFailed");f(ue)}finally{B(!1)}},wt=!!(A&&(m!=="Business"?!0:!!(A&&(x==="existing"?!!U:x!=="create"?!0:!!(N&&Q&&me&&ce&&ye&&Se&&Me&&Be&&Fe)))));return e.jsxs("div",{className:"container mx-auto px-4 py-6 max-w-3xl",children:[e.jsx(E.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("tenants.title"),href:"/administration/tenants/list"},{label:t("tenants.create.title")}]}),e.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[e.jsx("button",{onClick:()=>n("/administration/tenants"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)]",children:e.jsx(r.ArrowLeft,{className:"w-5 h-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("admin:tenants.create.title")}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:t("admin:tenants.create.subtitle")})]})]}),g&&e.jsxs("div",{className:"mb-6 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.AlertCircle,{className:"w-5 h-5 flex-shrink-0"}),e.jsx("span",{children:g})]}),e.jsx("button",{type:"button",onClick:()=>f(null),className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:t("common:dismiss")})]}),e.jsxs("div",{className:"card p-6 mb-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-[var(--text-primary)] mb-4",children:t("admin:tenants.create.selectType")}),!P&&h===!1&&e.jsx("div",{className:"mb-4 p-3 rounded-[var(--radius-card)] bg-[var(--info-bg)] border border-[var(--info-border)]",children:e.jsxs("div",{className:"flex items-center gap-2 text-[var(--info-text)]",children:[e.jsx(r.Info,{className:"w-4 h-4 flex-shrink-0"}),e.jsx("span",{className:"text-sm",children:t("admin:tenants.create.b2cDisabledNotice")})]})}),!P&&c===!1&&e.jsx("div",{className:"mb-4 p-3 rounded-[var(--radius-card)] bg-[var(--info-bg)] border border-[var(--info-border)]",children:e.jsxs("div",{className:"flex items-center gap-2 text-[var(--info-text)]",children:[e.jsx(r.Info,{className:"w-4 h-4 flex-shrink-0"}),e.jsx("span",{className:"text-sm",children:t("admin:tenants.create.b2bDisabledNotice")})]})}),P?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--text-tertiary)]"})}):e.jsxs("div",{className:`grid gap-4 ${h&&c?"grid-cols-2":"grid-cols-1"}`,children:[h&&e.jsxs("button",{type:"button",onClick:()=>o("Personal"),className:`p-4 rounded-[var(--radius-card)] border-2 transition-all text-left ${m==="Personal"?"border-[var(--color-accent-500)] bg-[var(--color-accent-500)]/5":"border-[var(--border-color)] hover:border-[var(--border-color-hover)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("div",{className:`p-2 rounded-[var(--radius-button)] ${m==="Personal"?"bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]"}`,children:e.jsx(r.User,{className:"w-5 h-5"})}),e.jsx("div",{className:"flex-1",children:e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:t("admin:tenants.type.b2c")})}),m==="Personal"&&e.jsx(r.Check,{className:"w-5 h-5 text-[var(--color-accent-500)]"})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:tenants.create.b2cDescription")})]}),c&&e.jsxs("button",{type:"button",onClick:()=>o("Business"),className:`p-4 rounded-[var(--radius-card)] border-2 transition-all text-left ${m==="Business"?"border-[var(--info-border)] bg-[var(--info-bg)]":"border-[var(--border-color)] hover:border-[var(--border-color-hover)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("div",{className:`p-2 rounded-[var(--radius-button)] ${m==="Business"?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]"}`,children:e.jsx(r.Building,{className:"w-5 h-5"})}),e.jsx("div",{className:"flex-1",children:e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:t("admin:tenants.type.b2b")})}),m==="Business"&&e.jsx(r.Check,{className:"w-5 h-5 text-[var(--info-text)]"})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:tenants.create.b2bDescription")})]})]})]}),e.jsxs("form",{onSubmit:Nt,className:"space-y-6",children:[e.jsxs("div",{className:"card p-6 space-y-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-[var(--text-primary)]",children:t("admin:tenants.create.details")}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[e.jsx(r.Building2,{className:"w-4 h-4 inline mr-2"}),t("admin:tenants.create.name")," *"]}),e.jsx("input",{type:"text",value:A,onChange:I=>C(I.target.value),placeholder:t("admin:tenants.create.namePlaceholder"),className:"w-full px-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)]",required:!0})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[e.jsx(r.Hash,{className:"w-4 h-4 inline mr-2"}),t("admin:tenants.create.slug")]}),e.jsx("input",{type:"text",value:M,onChange:I=>O(Ce(I.target.value)),placeholder:t("admin:tenants.create.slugPlaceholder"),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] font-mono placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-1",children:t("admin:tenants.create.slugHelp")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[e.jsx(r.FileText,{className:"w-4 h-4 inline mr-2"}),t("admin:tenants.create.description")]}),e.jsx("textarea",{value:w,onChange:I=>v(I.target.value),placeholder:t("admin:tenants.create.descriptionPlaceholder"),rows:3,className:"w-full px-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)] resize-none"})]})]}),m==="Business"&&e.jsxs("div",{className:"card p-6 space-y-4",children:[e.jsxs("h2",{className:"text-lg font-semibold text-[var(--info-text)] flex items-center gap-2",children:[e.jsx(r.Building,{className:"w-5 h-5"}),t("admin:tenants.create.organisation.title")]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("button",{type:"button",onClick:()=>p("none"),className:`p-4 rounded-[var(--radius-card)] border-2 transition-all text-left ${x==="none"?"border-[var(--success-border)] bg-[var(--success-bg)]":"border-[var(--border-color)] hover:border-[var(--border-color-hover)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("div",{className:`p-2 rounded-[var(--radius-button)] ${x==="none"?"bg-[var(--success-bg)] text-[var(--success-text)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]"}`,children:e.jsx(r.Zap,{className:"w-5 h-5"})}),e.jsx("div",{className:"flex-1",children:e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:t("admin:tenants.create.organisation.quickMode")})}),x==="none"&&e.jsx(r.Check,{className:"w-5 h-5 text-[var(--success-text)]"})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:tenants.create.organisation.quickModeDescription")})]}),e.jsxs("button",{type:"button",onClick:()=>p("existing"),className:`p-4 rounded-[var(--radius-card)] border-2 transition-all text-left ${x==="existing"?"border-[var(--color-accent-500)] bg-[var(--color-accent-500)]/5":"border-[var(--border-color)] hover:border-[var(--border-color-hover)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("div",{className:`p-2 rounded-[var(--radius-button)] ${x==="existing"?"bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]"}`,children:e.jsx(r.Link,{className:"w-5 h-5"})}),e.jsx("div",{className:"flex-1",children:e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:t("admin:tenants.create.organisation.existingMode")})}),x==="existing"&&e.jsx(r.Check,{className:"w-5 h-5 text-[var(--color-accent-500)]"})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:tenants.create.organisation.existingModeDescription")})]}),e.jsxs("button",{type:"button",onClick:()=>p("create"),className:`p-4 rounded-[var(--radius-card)] border-2 transition-all text-left ${x==="create"?"border-[var(--info-border)] bg-[var(--info-bg)]":"border-[var(--border-color)] hover:border-[var(--border-color-hover)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx("div",{className:`p-2 rounded-[var(--radius-button)] ${x==="create"?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)]"}`,children:e.jsx(r.Building,{className:"w-5 h-5"})}),e.jsx("div",{className:"flex-1",children:e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:t("admin:tenants.create.organisation.createMode")})}),x==="create"&&e.jsx(r.Check,{className:"w-5 h-5 text-[var(--info-text)]"})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:tenants.create.organisation.createModeDescription")})]})]})]}),m==="Business"&&x==="existing"&&e.jsxs("div",{className:"card p-6 space-y-4",children:[e.jsxs("h2",{className:"text-lg font-semibold text-[var(--color-accent-600)] flex items-center gap-2",children:[e.jsx(r.Link,{className:"w-5 h-5"}),t("admin:tenants.create.organisation.selectExisting")]}),U&&e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:U.name}),e.jsxs("p",{className:"text-sm text-[var(--text-secondary)]",children:[U.businessIdentifier," — ",U.countryCode]}),U.legalName&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:U.legalName})]}),e.jsx("button",{type:"button",onClick:()=>z(null),className:"text-sm text-[var(--error-text)] hover:opacity-80",children:t("common:remove")})]})}),!U&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative",children:[e.jsx(r.Search,{className:"absolute left-3 top-3 w-5 h-5 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:$,onChange:I=>X(I.target.value),placeholder:t("admin:tenants.create.organisation.searchPlaceholder"),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)]"})]}),J&&e.jsx("div",{className:"flex items-center justify-center py-4",children:e.jsx(r.Loader2,{className:"w-5 h-5 animate-spin text-[var(--text-tertiary)]"})}),!J&&ee.length===0&&e.jsx("p",{className:"text-sm text-[var(--text-secondary)] text-center py-4",children:t("admin:tenants.create.organisation.noResults")}),!J&&ee.length>0&&e.jsx("div",{className:"border border-[var(--border-color)] rounded-[var(--radius-card)] overflow-hidden max-h-64 overflow-y-auto",children:ee.map(I=>e.jsx("button",{type:"button",onClick:()=>{z(I),A||C(I.name)},className:"w-full text-left px-4 py-3 border-b border-[var(--border-color)] last:border-b-0 hover:bg-[var(--bg-hover)] transition-colors",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-sm text-[var(--text-primary)]",children:I.name}),e.jsxs("p",{className:"text-xs text-[var(--text-secondary)]",children:[I.businessIdentifier," — ",I.countryCode]})]}),e.jsx("span",{className:`text-xs px-2 py-1 rounded-[var(--radius-badge)] ${I.verificationStatus==="Verified"?"bg-[var(--success-bg)] text-[var(--success-text)]":I.verificationStatus==="Pending"?"bg-[var(--warning-bg)] text-[var(--warning-text)]":"bg-[var(--error-bg)] text-[var(--error-text)]"}`,children:t(`admin:organisations.status.${I.verificationStatus.toLowerCase()}`,I.verificationStatus)})]})},I.id))})]})]}),m==="Business"&&x==="create"&&e.jsxs("div",{className:"card p-6 space-y-6",children:[e.jsxs("h2",{className:"text-lg font-semibold text-[var(--info-text)] flex items-center gap-2",children:[e.jsx(r.FileCheck,{className:"w-5 h-5"}),t("admin:tenants.create.organisation.details")]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.name")," *"]}),e.jsx("input",{type:"text",value:N,onChange:I=>ie(I.target.value),placeholder:t("admin:tenants.create.organisation.namePlaceholder"),className:"w-full px-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)]",required:x==="create"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:t("admin:tenants.create.organisation.legalName")}),e.jsx("input",{type:"text",value:le,onChange:I=>te(I.target.value),placeholder:t("admin:tenants.create.organisation.legalNamePlaceholder"),className:"w-full px-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:"p-4 bg-[var(--info-bg)] rounded-[var(--radius-card)] border border-[var(--info-border)] space-y-4",children:[e.jsxs("h3",{className:"text-sm font-semibold text-[var(--info-text)] flex items-center gap-2",children:[e.jsx(r.FileCheck,{className:"w-4 h-4"}),t("admin:tenants.create.organisation.businessId.title")]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.businessId.type")," *"]}),e.jsx("select",{value:me,onChange:I=>{const ne=I.target.value;K(ne);const ue=nt.find(Ct=>Ct.value===ne);ue?.country&&pe(ue.country)},className:"w-full px-4 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)]",required:x==="create",children:nt.map(I=>e.jsx("option",{value:I.value,children:I.label},I.value))})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.businessId.number")," *"]}),e.jsxs("div",{className:"relative flex",children:[e.jsx("input",{type:"text",value:ce,onChange:I=>G(I.target.value),placeholder:me==="UID_CHE"?"CHE-123.456.789":t("admin:tenants.create.organisation.businessId.placeholder"),className:"flex-1 px-4 py-2 pr-12 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] font-mono placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",required:x==="create"}),e.jsx("button",{type:"button",onClick:ft,disabled:D||!ce||ce.replace(/[^0-9]/g,"").length<9||Q!=="CH",className:"absolute right-1 top-1 bottom-1 px-2.5 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 flex items-center justify-center",title:t("admin:tenants.create.organisation.lookupTitle"),children:D?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Search,{className:"w-4 h-4"})})]}),H&&e.jsxs("p",{className:"text-xs text-[var(--error-text)] mt-1 flex items-center gap-1",children:[e.jsx(r.AlertTriangle,{className:"w-3 h-3"}),H]}),L&&e.jsxs("p",{className:"text-xs text-[var(--success-text)] mt-1 flex items-center gap-1",children:[e.jsx(r.Check,{className:"w-3 h-3"}),t("admin:tenants.create.organisation.lookupSuccess")]}),Q==="CH"&&me==="UID_CHE"&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-1",children:ce.replace(/[^0-9]/g,"").length<9?t("admin:tenants.create.organisation.lookupHintIncomplete"):t("admin:tenants.create.organisation.lookupHint")})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:t("admin:tenants.create.organisation.vatNumber")}),e.jsx("input",{type:"text",value:_,onChange:I=>se(I.target.value),placeholder:"CHE-123.456.789 TVA",className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] font-mono placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"})]})]}),e.jsxs("div",{className:"p-4 bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] space-y-4",children:[e.jsxs("h3",{className:"text-sm font-semibold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.MapPin,{className:"w-4 h-4"}),t("admin:tenants.create.organisation.address.title")," *"]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.address.street")," *"]}),e.jsx("input",{type:"text",value:ye,onChange:I=>$e(I.target.value),placeholder:t("admin:tenants.create.organisation.address.streetPlaceholder"),className:"w-full px-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)]",required:x==="create"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:t("admin:tenants.create.organisation.address.street2")}),e.jsx("input",{type:"text",value:Te,onChange:I=>Re(I.target.value),placeholder:t("admin:tenants.create.organisation.address.street2Placeholder"),className:"w-full px-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:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.address.postalCode")," *"]}),e.jsx("input",{type:"text",value:Se,onChange:I=>Ue(I.target.value),placeholder:"1000",className:"w-full px-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)]",required:x==="create"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.address.city")," *"]}),e.jsx("input",{type:"text",value:Me,onChange:I=>Oe(I.target.value),placeholder:t("admin:tenants.create.organisation.address.cityPlaceholder"),className:"w-full px-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)]",required:x==="create"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:t("admin:tenants.create.organisation.address.state")}),e.jsx("input",{type:"text",value:Ge,onChange:I=>He(I.target.value),placeholder:"VD",className:"w-full px-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:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.address.country")," *"]}),e.jsx("input",{type:"text",value:Be,onChange:I=>qe(I.target.value),placeholder:"Switzerland",className:"w-full px-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)]",required:x==="create"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[t("admin:tenants.create.organisation.address.countryCode")," *"]}),e.jsx("input",{type:"text",value:Fe,onChange:I=>ze(I.target.value.toUpperCase().slice(0,2)),placeholder:"CH",maxLength:2,className:"w-full px-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)] uppercase",required:x==="create"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[e.jsx(r.Phone,{className:"w-4 h-4 inline mr-2"}),t("admin:tenants.create.organisation.phone")]}),e.jsx("input",{type:"tel",value:V,onChange:I=>Y(I.target.value),placeholder:"+41 21 123 45 67",className:"w-full px-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",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[e.jsx(r.Mail,{className:"w-4 h-4 inline mr-2"}),t("admin:tenants.create.organisation.email")]}),e.jsx("input",{type:"email",value:re,onChange:I=>ve(I.target.value),placeholder:"contact@company.ch",className:"w-full px-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",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:[e.jsx(r.Globe,{className:"w-4 h-4 inline mr-2"}),t("admin:tenants.create.organisation.website")]}),e.jsx("input",{type:"url",value:he,onChange:I=>fe(I.target.value),placeholder:"https://www.company.ch",className:"w-full px-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 justify-end gap-4 pt-4",children:[e.jsx("button",{type:"button",onClick:()=>n("/administration/tenants"),className:"px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:t("common:cancel")}),e.jsxs("button",{type:"submit",disabled:S||!wt,className:`inline-flex items-center gap-2 px-6 py-2 text-sm font-medium rounded-[var(--radius-button)] text-white transition-colors disabled:opacity-50 disabled:cursor-not-allowed ${m==="Business"?x==="none"?"bg-[var(--success-dot)] hover:opacity-90":"bg-[var(--info-dot)] hover:opacity-90":"bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)]"}`,children:[S?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.UserPlus,{className:"w-4 h-4"}),t("admin:tenants.create.submit")]})]})]})]})}const it=["#3b82f6","#22c55e","#f59e0b","#ef4444","#8b5cf6","#06b6d4","#ec4899","#f97316","#14b8a6","#6366f1"],ws=t=>{const{cx:n=0,cy:s=0,midAngle:l=0,innerRadius:d=0,outerRadius:i=0,startAngle:c=0,endAngle:b=0,fill:h="#8884d8",payload:u,percent:m=0,value:o=0}=t;if(!u)return e.jsx("g",{});const x=Math.PI/180,p=Math.sin(-x*l),S=Math.cos(-x*l),B=n+(i+10)*S,P=s+(i+10)*p,T=n+(i+30)*S,g=s+(i+30)*p,f=T+(S>=0?1:-1)*22,D=g,y=S>=0?"start":"end";return e.jsxs("g",{children:[e.jsx("text",{x:n,y:s,dy:-10,textAnchor:"middle",fill:"var(--text-primary)",style:{fontSize:"14px",fontWeight:"bold"},children:u.tenantName}),e.jsxs("text",{x:n,y:s,dy:10,textAnchor:"middle",fill:"var(--text-secondary)",style:{fontSize:"12px"},children:[o.toLocaleString()," ",u.tenantType==="_duration"?"min":"accès"]}),e.jsx(be.Sector,{cx:n,cy:s,innerRadius:d,outerRadius:i,startAngle:c,endAngle:b,fill:h}),e.jsx(be.Sector,{cx:n,cy:s,startAngle:c,endAngle:b,innerRadius:i+6,outerRadius:i+10,fill:h}),e.jsx("path",{d:`M${B},${P}L${T},${g}L${f},${D}`,stroke:h,fill:"none"}),e.jsx("circle",{cx:f,cy:D,r:2,fill:h,stroke:"none"}),e.jsx("text",{x:f+(S>=0?1:-1)*12,y:D,textAnchor:y,fill:"var(--text-primary)",style:{fontSize:"12px"},children:`${(m*100).toFixed(0)}%`})]})},Cs=({data:t,mode:n="access"})=>{const[s,l]=a.useState(0);if(!t||t.length===0)return e.jsx("div",{className:"flex items-center justify-center h-full text-[var(--text-secondary)]",children:"Aucune donnée d'activité disponible"});const d=u=>n==="access"?u.accessCount:u.totalDurationMinutes,i=n==="access"?"accès":"min",c=t.reduce((u,m)=>u+d(m),0),b=t.map((u,m)=>({...u,tenantType:n==="duration"?"_duration":u.tenantType,name:u.tenantName,value:d(u),fill:it[m%it.length]})),h=(u,m)=>{l(m)};return e.jsxs("div",{className:"flex flex-col",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm h-[34px]",children:e.jsx("span",{className:"text-[var(--text-tertiary)]",children:"Vue globale des tenants actifs"})}),e.jsxs("div",{className:"flex items-center justify-center gap-2",children:[e.jsx("span",{className:"text-lg font-semibold text-blue-600",children:"Tenants"}),e.jsxs("span",{className:"text-[var(--text-secondary)]",children:["(",t.length," actifs • ",c.toLocaleString()," ",i," total)"]})]}),e.jsx("div",{style:{width:"100%",height:350},children:e.jsx(be.ResponsiveContainer,{width:"100%",height:350,children:e.jsx(be.PieChart,{children:e.jsx(be.Pie,{activeIndex:s,activeShape:ws,data:b,cx:"50%",cy:"50%",innerRadius:70,outerRadius:110,fill:"#8884d8",dataKey:"value",onMouseEnter:h,children:b.map(u=>e.jsx(be.Cell,{fill:u.fill},u.tenantId))})})})}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-2 max-h-[200px] overflow-y-auto",children:b.map((u,m)=>e.jsxs("button",{onClick:()=>l(m),onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),l(m))},className:`flex items-center gap-2 p-2 rounded-lg hover:bg-[var(--bg-secondary)] transition-colors cursor-pointer focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] ${s===m?"bg-[var(--bg-secondary)]":""}`,children:[e.jsx("div",{className:"w-3 h-3 rounded-full flex-shrink-0",style:{backgroundColor:u.fill}}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate text-[var(--text-primary)]",children:u.tenantName}),e.jsxs("p",{className:"text-xs text-[var(--text-secondary)]",children:[d(t[m]).toLocaleString()," ",i]})]})]},u.tenantId))})]})},lt=["#3b82f6","#22c55e","#f59e0b","#ef4444","#8b5cf6","#06b6d4","#ec4899"];function Ss({tenant:t,index:n,mode:s,getColor:l}){return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-3 h-3 rounded-full",style:{backgroundColor:l(t,n)}}),e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:t.name}),e.jsx("span",{className:"text-sm font-semibold",style:{color:l(t,n)},children:s==="access"?t.totalAccess:`${t.totalDurationMinutes} min`})]},t.name)}const ks=({period:t=30,mode:n="access"})=>{const[s,l]=a.useState(null),[d,i]=a.useState(!0),[c,b]=a.useState(null);if(a.useEffect(()=>{(async()=>{try{i(!0);const o=await E.tenantAnalyticsApi.getTrends(t);l(o),b(null)}catch(o){b(o instanceof Error?o.message:"Failed to load trends")}finally{i(!1)}})()},[t]),d)return e.jsx("div",{className:"flex items-center justify-center h-[300px]",children:e.jsx(r.Loader2,{className:"h-6 w-6 animate-spin text-[var(--color-primary-600)]"})});if(c||!s)return e.jsx("div",{className:"flex items-center justify-center h-[300px] text-[var(--text-secondary)]",children:c||"Aucune donnée disponible"});if(!s?.dailyData?.length||!s?.tenants?.length)return e.jsx("div",{className:"flex items-center justify-center h-[300px] text-[var(--text-secondary)]",children:"Aucune donnée de tendance disponible"});const h=s.dailyData.map(m=>{const o={date:new Date(m.date).toLocaleDateString("fr-FR",{day:"2-digit",month:"short"})};return s.tenants.forEach(x=>{n==="access"?o[x.name]=m.tenantCounts[x.name]||0:o[x.name]=m.tenantDurations?.[x.name]||0}),o}),u=(m,o)=>m.color||lt[o%lt.length];return e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{style:{width:"100%",height:300},children:e.jsx(be.ResponsiveContainer,{width:"100%",height:300,children:e.jsxs(be.LineChart,{data:h,margin:{top:5,right:30,left:20,bottom:5},children:[e.jsx(be.CartesianGrid,{strokeDasharray:"3 3",stroke:"var(--border-color)"}),e.jsx(be.XAxis,{dataKey:"date",stroke:"var(--text-secondary)",style:{fontSize:"11px"},tick:{fill:"var(--text-secondary)"}}),e.jsx(be.YAxis,{stroke:"var(--text-secondary)",style:{fontSize:"11px"},tick:{fill:"var(--text-secondary)"},label:{value:n==="access"?"Accès":"Minutes",angle:-90,position:"insideLeft",style:{fill:"var(--text-secondary)",fontSize:"11px"}}}),e.jsx(be.Tooltip,{contentStyle:{backgroundColor:"var(--bg-card)",border:"1px solid var(--border-color)",borderRadius:"8px",color:"var(--text-primary)"},labelStyle:{color:"var(--text-primary)",fontWeight:"bold",marginBottom:"8px"},itemStyle:{color:"var(--text-secondary)"}}),e.jsx(be.Legend,{wrapperStyle:{paddingTop:"20px"},formatter:m=>e.jsx("span",{style:{color:"var(--text-secondary)",fontSize:"12px"},children:m})}),s.tenants.map((m,o)=>e.jsx(be.Line,{type:"monotone",dataKey:m.name,stroke:u(m,o),strokeWidth:2,dot:{r:2,fill:u(m,o)},activeDot:{r:5,fill:u(m,o)}},m.name))]})})}),e.jsx("div",{className:"flex flex-wrap gap-4 justify-center border-t border-[var(--border-color)] pt-4",children:s.tenants.map((m,o)=>e.jsx(Ss,{tenant:m,index:o,mode:n,getColor:u},m.name))})]})},Ee=["#3b82f6","#8b5cf6","#22c55e","#f59e0b","#ef4444","#06b6d4","#ec4899","#10b981","#f97316","#6366f1"],As=({data:t,mode:n="access"})=>{if(!t||t.length===0)return e.jsx("div",{className:"text-center py-8 text-[var(--text-secondary)]",children:"Aucune donnée de tenant disponible"});const s=i=>n==="access"?i.accessCount:i.totalDurationMinutes,l=n==="access"?"accès":"min",d=Math.max(...t.map(i=>s(i)),1);return e.jsx("div",{className:"space-y-3",children:t.map((i,c)=>{const b=s(i),h=b/d*100;return e.jsxs("div",{className:"rounded-lg bg-[var(--bg-secondary)] p-4 hover:shadow-sm transition-shadow border-l-4",style:{borderLeftColor:Ee[c%Ee.length]},children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"text-xs text-[var(--text-tertiary)] mb-1 font-mono",children:[e.jsx("span",{className:"text-blue-500",children:i.tenantType}),e.jsx("span",{className:"mx-1",children:"›"}),e.jsx("span",{className:"text-green-500",children:i.tenantSlug})]}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("h5",{className:"font-semibold text-[var(--text-primary)]",children:i.tenantName})})]}),e.jsxs("div",{className:"text-right",children:[e.jsx("div",{className:"text-xl font-bold",style:{color:Ee[c%Ee.length]},children:b.toLocaleString()}),e.jsx("div",{className:"text-xs text-[var(--text-secondary)]",children:l})]})]}),e.jsx("div",{className:"h-2 bg-[var(--bg-primary)] rounded-full overflow-hidden mb-2",children:e.jsx("div",{className:"h-full rounded-full transition-all duration-500",style:{width:`${h}%`,backgroundColor:Ee[c%Ee.length]}})}),e.jsxs("div",{className:"flex items-center gap-4 text-xs text-[var(--text-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(r.Users,{className:"w-3 h-3"}),e.jsxs("span",{children:[i.uniqueUsers," utilisateurs uniques"]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(r.Building2,{className:"w-3 h-3"}),e.jsx("span",{children:i.tenantType})]})]})]},i.tenantId)})})},Ie=({label:t,value:n,icon:s,color:l,subtitle:d})=>{const i={blue:"text-blue-500",green:"text-green-500",purple:"text-purple-500",orange:"text-orange-500",yellow:"text-yellow-500",red:"text-red-500"};return e.jsxs("div",{className:"rounded-[var(--radius-card)] p-4 bg-[var(--bg-card)] border border-[var(--item-color-border)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--text-secondary)]",children:t}),e.jsx("div",{className:i[l],children:s})]}),e.jsx("div",{className:"text-2xl font-bold text-[var(--text-primary)]",children:typeof n=="number"?n.toLocaleString():n}),d&&e.jsx("div",{className:"text-xs text-[var(--text-tertiary)] mt-1",children:d})]})};function Ts(){const t=xe.useNavigate(),{t:n}=de.useTranslation("admin"),[s,l]=a.useState(null),[d,i]=a.useState([]),[c,b]=a.useState(!0),[h,u]=a.useState(!1),[m,o]=a.useState(null),[x,p]=a.useState(30),[S,B]=a.useState("access"),P=a.useCallback(async()=>{try{o(null);const[f,D]=await Promise.all([E.tenantAnalyticsApi.getDashboardStats(x),E.tenantAnalyticsApi.getTopTenants(5,x,S==="access"?"access":"duration")]);l(f),i(D)}catch(f){o(f instanceof Error?f.message:"Failed to load dashboard")}finally{b(!1),u(!1)}},[x,S]);a.useEffect(()=>{b(!0),P()},[P]);const T=()=>{u(!0),P()},g=f=>{if(f<60)return`${f}s`;const D=Math.floor(f/60);return D<60?`${D}m`:`${Math.floor(D/60)}h ${D%60}m`};return c?e.jsx("div",{className:"flex h-96 items-center justify-center",children:e.jsx(r.Loader2,{className:"h-8 w-8 animate-spin text-[var(--color-primary-600)]"})}):m?e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{className:"bg-[var(--error-bg)] border border-[var(--error-border)] rounded-[var(--radius-card)] p-4 flex items-center gap-3",children:[e.jsx(r.AlertTriangle,{className:"h-5 w-5 text-[var(--error-text)] flex-shrink-0"}),e.jsx("div",{className:"flex-1",children:e.jsx("p",{className:"text-[var(--error-text)] font-medium",children:m})}),e.jsx("button",{onClick:T,className:"text-[var(--error-text)] hover:opacity-80",children:e.jsx(r.RefreshCw,{className:"h-5 w-5"})})]})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:n("header.title"),href:"/administration"},{label:n("tenants.title"),href:"/administration/tenants/list"},{label:n("tenants.dashboard.title","Dashboard")}]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold text-[var(--text-primary)] flex items-center gap-2",children:[e.jsx(r.Building2,{className:"h-6 w-6"}),n("tenants.dashboard.title","Tableau de bord Tenants")]}),e.jsx("p",{className:"text-[var(--text-secondary)] mt-1",children:n("tenants.dashboard.subtitle","Analyse d'utilisation et statistiques des tenants")})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-1 rounded-lg border border-[var(--item-color-border)] bg-[var(--bg-secondary)] p-1",children:[e.jsx("button",{onClick:()=>B("access"),className:`px-3 py-1.5 text-sm font-medium rounded-md transition-all ${S==="access"?"bg-[var(--color-primary-600)] text-white shadow-sm":"text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"}`,children:e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(r.Activity,{className:"w-3.5 h-3.5"}),n("tenants.dashboard.access","Accès")]})}),e.jsx("button",{onClick:()=>B("duration"),className:`px-3 py-1.5 text-sm font-medium rounded-md transition-all ${S==="duration"?"bg-[var(--color-primary-600)] text-white shadow-sm":"text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"}`,children:e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(r.Clock,{className:"w-3.5 h-3.5"}),n("tenants.dashboard.duration","Durée")]})})]}),e.jsxs("select",{value:x,onChange:f=>p(Number(f.target.value)),className:"rounded-[var(--radius-input)] border border-[var(--item-color-border)] bg-[var(--bg-secondary)] px-4 py-2 text-[var(--text-primary)] focus:border-[var(--color-primary-600)] focus:outline-none",children:[e.jsxs("option",{value:7,children:["7 ",n("common.days","jours")]}),e.jsxs("option",{value:30,children:["30 ",n("common.days","jours")]}),e.jsxs("option",{value:90,children:["90 ",n("common.days","jours")]})]}),e.jsxs("button",{onClick:T,disabled:h,className:"rounded-[var(--radius-button)] border border-[var(--item-color-border)] bg-[var(--bg-secondary)] px-4 py-2 text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] flex items-center gap-2 transition-colors",children:[e.jsx(r.RefreshCw,{className:`w-4 h-4 ${h?"animate-spin":""}`}),n("common.refresh","Actualiser")]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4",children:[e.jsx(Ie,{label:n("tenants.dashboard.totalTenants","Total Tenants"),value:s?.totalTenants||0,icon:e.jsx(r.Building2,{className:"h-5 w-5"}),color:"blue"}),e.jsx(Ie,{label:n("tenants.dashboard.activeTenants","Tenants Actifs"),value:s?.activeTenants||0,icon:e.jsx(r.CheckCircle,{className:"h-5 w-5"}),color:"green"}),e.jsx(Ie,{label:n("tenants.dashboard.suspendedTenants","Suspendus"),value:s?.suspendedTenants||0,icon:e.jsx(r.PauseCircle,{className:"h-5 w-5"}),color:"orange"}),e.jsx(Ie,{label:n("tenants.dashboard.totalMembers","Total Membres"),value:s?.totalMembers||0,icon:e.jsx(r.Users,{className:"h-5 w-5"}),color:"purple"}),e.jsx(Ie,{label:n("tenants.dashboard.avgSession","Session Moy."),value:g(s?.avgSessionDuration||0),icon:e.jsx(r.Timer,{className:"h-5 w-5"}),color:"blue",subtitle:`${x} ${n("common.days","jours")}`}),e.jsx(Ie,{label:n("tenants.dashboard.growthRate","Croissance"),value:`${s?.growthRate.toFixed(1)||0}%`,icon:e.jsx(r.TrendingUp,{className:"h-5 w-5"}),color:(s?.growthRate??0)>=0?"green":"red",subtitle:n("tenants.dashboard.vsPreviousPeriod","vs période précédente")})]}),e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--item-color-border)] bg-[var(--bg-card)] p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("h3",{className:"font-semibold flex items-center gap-2 text-[var(--text-primary)]",children:[e.jsx(r.ClipboardList,{className:"h-5 w-5 text-[var(--color-primary-600)]"}),n("tenants.dashboard.accessRequests.title","Demandes d'accès")]}),e.jsxs("button",{onClick:()=>t("/administration/access-requests"),className:"text-sm font-medium text-[var(--color-primary-600)] hover:underline flex items-center gap-1",children:[n("tenants.dashboard.accessRequests.manage","Gérer"),e.jsx("span",{"aria-hidden":"true",children:"→"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg p-4 bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--warning-text)]",children:n("tenants.dashboard.accessRequests.pending","En attente")}),e.jsx(r.Clock,{className:"h-4 w-4 text-[var(--warning-text)]"})]}),e.jsx("div",{className:"text-2xl font-bold text-[var(--warning-text)]",children:s?.pendingAccessRequests||0})]}),e.jsxs("div",{className:"rounded-lg p-4 bg-[var(--success-bg)] border border-[var(--success-border)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--success-text)]",children:n("tenants.dashboard.accessRequests.approved","Approuvées")}),e.jsx(r.ShieldCheck,{className:"h-4 w-4 text-[var(--success-text)]"})]}),e.jsx("div",{className:"text-2xl font-bold text-[var(--success-text)]",children:s?.approvedAccessRequests||0})]}),e.jsxs("div",{className:"rounded-lg p-4 bg-[var(--error-bg)] border border-[var(--error-border)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--error-text)]",children:n("tenants.dashboard.accessRequests.denied","Refusées")}),e.jsx(r.ShieldX,{className:"h-4 w-4 text-[var(--error-text)]"})]}),e.jsx("div",{className:"text-2xl font-bold text-[var(--error-text)]",children:s?.deniedAccessRequests||0})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--item-color-border)] bg-[var(--bg-card)] p-4",children:[e.jsxs("h3",{className:"font-semibold mb-4 flex items-center gap-2 text-[var(--text-primary)]",children:[e.jsx(r.Building2,{className:"h-5 w-5 text-[var(--color-primary-600)]"}),S==="access"?n("tenants.dashboard.activity","Activité"):n("tenants.dashboard.timeSpent","Temps passé")," ",n("tenants.dashboard.byTenant","par Tenant")]}),d.length>0?e.jsx(Cs,{data:d,mode:S}):e.jsx("div",{className:"text-center py-8 text-[var(--text-secondary)]",children:n("tenants.dashboard.noData","Aucune donnée disponible")})]}),e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--item-color-border)] bg-[var(--bg-card)] p-4",children:[e.jsxs("h3",{className:"font-semibold mb-4 flex items-center gap-2 text-[var(--text-primary)]",children:[e.jsx(r.Activity,{className:"h-5 w-5 text-green-600"}),n("tenants.dashboard.topTenantsList","Classement des Tenants")]}),s?.topTenants&&s.topTenants.length>0?e.jsx("div",{className:"space-y-3",children:s.topTenants.slice(0,5).map((f,D)=>e.jsxs("button",{type:"button",className:"w-full flex items-center gap-3 p-3 rounded-lg bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] cursor-pointer transition-colors text-left",onClick:()=>t(`/administration/tenants/${f.tenantId}`),children:[e.jsx("div",{className:"w-8 h-8 rounded-full flex items-center justify-center text-white font-bold text-sm",style:{backgroundColor:["#3b82f6","#22c55e","#f59e0b","#ef4444","#8b5cf6"][D%5]},children:D+1}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)] truncate",children:f.tenantName}),e.jsxs("p",{className:"text-xs text-[var(--text-tertiary)]",children:[f.tenantType," • ",f.uniqueUsers," ",n("tenants.dashboard.users","utilisateurs")]})]}),e.jsxs("div",{className:"text-right",children:[e.jsx("p",{className:"font-semibold text-[var(--text-primary)]",children:S==="access"?f.accessCount:`${f.totalDurationMinutes}m`}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:S==="access"?n("tenants.dashboard.accesses","accès"):n("tenants.dashboard.totalTime","temps total")})]})]},f.tenantId))}):e.jsx("div",{className:"text-center py-8 text-[var(--text-secondary)]",children:n("tenants.dashboard.noData","Aucune donnée disponible")})]})]}),e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--item-color-border)] bg-[var(--bg-card)] p-4",children:[e.jsxs("h3",{className:"font-semibold mb-4 flex items-center gap-2 text-[var(--text-primary)]",children:[e.jsx(r.TrendingUp,{className:"h-5 w-5"}),n("tenants.dashboard.trendTitle",{defaultValue:`Tendance ${S==="access"?"d'utilisation":"du temps passé"} par Tenant`})," (",x," ",n("common.days","jours"),")"]}),e.jsx(ks,{period:x,mode:S})]}),e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--item-color-border)] bg-[var(--bg-card)] p-4",children:[e.jsxs("h3",{className:"font-semibold mb-4 flex items-center gap-2 text-[var(--text-primary)]",children:[e.jsx(r.Building2,{className:"h-5 w-5 text-purple-600"}),n("tenants.dashboard.popularTenants",{defaultValue:`Tenants les plus ${S==="access"?"actifs":"utilisés"}`}),e.jsxs("span",{className:"text-xs font-normal text-[var(--text-secondary)] ml-2",children:["(",n("tenants.dashboard.byRanking","Type > Slug"),")"]})]}),d.length>0?e.jsx(As,{data:d,mode:S}):e.jsx("div",{className:"text-center py-8 text-[var(--text-secondary)]",children:n("tenants.dashboard.noData","Aucune donnée disponible")})]}),e.jsx("div",{className:"rounded-[var(--radius-card)] border border-[var(--item-color-border)] bg-gradient-to-r from-[var(--color-primary-600)]/10 to-[var(--color-accent-500)]/10 p-6",children:e.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold text-[var(--text-primary)]",children:n("tenants.dashboard.exploreAll","Explorer tous les Tenants")}),e.jsx("p",{className:"mt-1 text-sm text-[var(--text-secondary)]",children:n("tenants.dashboard.exploreDescription","Voir la liste complète des tenants et gérer leurs paramètres")})]}),e.jsx("button",{onClick:()=>t("/administration/tenants/list"),className:"whitespace-nowrap rounded-[var(--radius-button)] bg-[var(--color-primary-600)] px-4 py-2 font-medium text-white transition-all hover:shadow-md",children:n("tenants.dashboard.viewTenants","Voir les Tenants")})]})})]})}const Ls=(t,n)=>{if(t.id!==n)return t;const s=!t.isAssigned;return{...t,isAssigned:s,sections:t.sections.map(l=>({...l,isAssigned:s}))}},Es=(t,n,s)=>{if(t.id!==n)return t;const l=t.sections.map(i=>i.id===s?{...i,isAssigned:!i.isAssigned}:i),d=l.some(i=>i.isAssigned);return{...t,isAssigned:d,sections:l}},Is=t=>({...t,isAssigned:!0,sections:t.sections.map(n=>({...n,isAssigned:!0}))}),Rs=t=>({...t,isAssigned:!1,sections:t.sections.map(n=>({...n,isAssigned:!1}))});function Ms(t){return{applicationId:t.applicationId,label:t.label,code:t.code,description:t.description,icon:t.icon,accessLevel:t.accessLevel,assignedAt:t.assignedAt,assignedBy:t.assignedBy,source:"Direct",inheritedModuleCount:0,directModuleCount:t.assignedModuleCount,revokedModuleCount:0,inheritedSectionCount:0,directSectionCount:t.assignedSectionCount,revokedSectionCount:0,totalModuleCount:t.totalModuleCount,totalSectionCount:t.totalSectionCount}}function Bs(t){const[n,s]=a.useState(null),[l,d]=a.useState(!1),[i,c]=a.useState(!1),[b,h]=a.useState([]),[u,m]=a.useState(!1),[o,x]=a.useState([]),[p,S]=a.useState(!1),[B,P]=a.useState(""),[T,g]=a.useState(null),[f,D]=a.useState("FullAccess"),[y,H]=a.useState("full"),[R,L]=a.useState([]),[k,Z]=a.useState(new Set),[q,U]=a.useState(!1),[z,ee]=a.useState(!1),[ae,$]=a.useState(null),X=a.useCallback(async()=>{if(t){d(!0);try{const G=await E.adminApi.templates.getApplications(t),_=Array.isArray(G)?G.map(Ms):[];s(_)}catch(G){console.error("Failed to load template applications:",G),s([])}finally{d(!1)}}},[t]),J=a.useCallback(async()=>{if(t){c(!0),x([]),m(!0),g(null);try{const G=await E.adminApi.templates.getAvailableApplications(t);h(G.filter(_=>!_.isAssigned))}catch(G){console.error("Failed to load available applications:",G);const _=G instanceof Error&&G.name==="ForbiddenError";g(_?"forbidden":"generic")}finally{m(!1)}}},[t]),F=a.useCallback(()=>{c(!1),x([]),P(""),D("FullAccess"),H("full"),L([]),Z(new Set)},[]),A=a.useCallback(async()=>{if(!(!t||o.length===0)){S(!0);try{const G={applicationIds:o,accessLevel:f,accessMode:y,moduleIds:y==="custom"?R.filter(_=>_.isAssigned).map(_=>_.id):void 0,sectionIds:y==="custom"?R.flatMap(_=>_.sections.filter(se=>se.isAssigned).map(se=>se.id)):void 0};await E.adminApi.templates.bulkAssignApplications(t,G),await X(),F()}catch(G){console.error("Failed to assign applications:",G)}finally{S(!1)}}},[t,o,f,y,R,X,F]),j=a.useCallback(async G=>{if(t)try{await E.adminApi.templates.removeApplication(t,G),await X()}catch(_){console.error("Failed to remove application:",_)}},[t,X]),M=a.useCallback(async(G,_)=>{if(t)try{await E.adminApi.templates.updateApplicationAccessLevel(t,G,_),await X()}catch(se){console.error("Failed to update access level:",se)}},[t,X]),O=a.useCallback(G=>{$(G),ee(!0)},[]),w=a.useCallback(()=>{ee(!1),$(null)},[]),v=a.useMemo(()=>{if(!B)return b;const G=B.toLowerCase();return b.filter(_=>_.label.toLowerCase().includes(G)||_.code.toLowerCase().includes(G))},[b,B]),N=a.useCallback(G=>{x(_=>_.includes(G)?_.filter(se=>se!==G):[..._,G])},[]),ie=a.useCallback(()=>{const G=v.map(_=>_.id);x(G)},[v]),le=a.useCallback(()=>{x([])},[]),te=a.useCallback(async G=>{U(!0);try{const _=await E.adminApi.applications.getModules(G),se=[];for(const V of _){const re=(await E.adminApi.applications.getModuleSections(G,V.id)).map(ve=>({id:ve.id,label:ve.label,code:ve.code,icon:ve.icon,isAssigned:!0}));se.push({id:V.id,label:V.label,code:V.code,icon:V.icon,isAssigned:!0,sections:re})}L(se)}catch(_){console.error("Failed to load modules:",_)}finally{U(!1)}},[]),Q=a.useCallback(G=>{Z(_=>{const se=new Set(_);return se.has(G)?se.delete(G):se.add(G),se})},[]),pe=a.useCallback(G=>{L(_=>_.map(se=>Ls(se,G)))},[]),me=a.useCallback((G,_)=>{L(se=>se.map(V=>Es(V,G,_)))},[]),K=a.useCallback(G=>{if(G.sections.length===0)return G.isAssigned?"checked":"unchecked";const _=G.sections.filter(se=>se.isAssigned).length;return _===0?"unchecked":_===G.sections.length?"checked":"indeterminate"},[]),ce=a.useCallback(()=>{const G=R.length,_=R.filter(Y=>Y.isAssigned||Y.sections.some(re=>re.isAssigned)).length,se=R.reduce((Y,re)=>Y+re.sections.length,0),V=R.reduce((Y,re)=>Y+re.sections.filter(ve=>ve.isAssigned).length,0);return{totalModules:G,assignedModules:_,totalSections:se,assignedSections:V}},[R]),ge=a.useCallback(()=>{L(G=>G.map(_=>Is(_)))},[]),W=a.useCallback(()=>{L(G=>G.map(_=>Rs(_)))},[]);return{applications:n,setApplications:s,loadingApps:l,setLoadingApps:d,addingApplication:i,setAddingApplication:c,availableApps:b,setAvailableApps:h,loadingAvailableApps:u,setLoadingAvailableApps:m,selectedAppIds:o,setSelectedAppIds:x,assigningApps:p,setAssigningApps:S,appSearchTerm:B,setAppSearchTerm:P,selectedAccessLevel:f,setSelectedAccessLevel:D,bulkAccessMode:y,setBulkAccessMode:H,bulkModules:R,setBulkModules:L,bulkExpandedModules:k,setBulkExpandedModules:Z,loadingBulkModules:q,setLoadingBulkModules:U,showCustomizeDrawer:z,setShowCustomizeDrawer:ee,customizingApp:ae,setCustomizingApp:$,loadApplications:X,availableAppsError:T,loadAvailableApps:J,handleAssignApplications:A,handleRemoveApplication:j,handleUpdateAccessLevel:M,openCustomizeDrawer:O,closeCustomizeDrawer:w,filteredAvailableApps:v,handleAppToggle:N,selectAllFilteredApps:ie,clearAppSelection:le,loadBulkModulesForApp:te,toggleBulkModuleExpand:Q,toggleBulkModule:pe,toggleBulkSection:me,getBulkModuleCheckState:K,getBulkStats:ce,selectAllBulkModules:ge,clearBulkModules:W,handleSaveOverrides:async(G,_)=>{},handleResetOverrides:async G=>{}}}const ot=["info","applications","tenants","ai"];function Fs(){const{t}=de.useTranslation("admin"),{id:n}=xe.useParams(),s=xe.useNavigate(),{activeTab:l,setActiveTab:d}=tt.useTabNavigation("info",ot),[i,c]=a.useState(null),[b,h]=a.useState(!0),[u,m]=a.useState(null),o=Bs(n),x=a.useCallback(async()=>{if(n)try{h(!0);const B=await E.adminApi.templates.getById(n);c(B),m(null)}catch{m(t("templates.errors.loadFailed"))}finally{h(!1)}},[n,t]);if(a.useEffect(()=>{if(!n){s("/administration/tenants/template");return}x()},[n,x,s]),a.useEffect(()=>{i&&n&&o.loadApplications()},[i,n]),b)return e.jsx("div",{className:"p-6 flex items-center justify-center min-h-[50vh]",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--text-secondary)]"})});if(u||!i)return e.jsxs("div",{className:"p-6 space-y-4",children:[e.jsxs("button",{onClick:()=>s("/administration/tenants/template"),className:"flex items-center gap-2 text-sm text-[var(--text-secondary)] hover:text-[var(--text-primary)]",children:[e.jsx(r.ArrowLeft,{className:"w-4 h-4"}),t("templates.title")]}),e.jsxs("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",children:[e.jsx(r.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("span",{className:"text-[var(--error-text)]",children:u||t("templates.notFound")})]}),e.jsx("button",{onClick:()=>x(),className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:t("common:errors.retry")})]})]});const p=i.targetTenantType==="Personal"?r.User:r.Building2,S=i.targetTenantType==="Personal"?t("templates.targetPersonal"):t("templates.targetBusiness");return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("tenants.title"),href:"/administration/tenants/list"},{label:t("templates.title"),href:"/administration/tenants/template"},{label:i.name}]}),e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>s("/administration/tenants/template"),"aria-label":t("templates.title"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)]",children:e.jsx(r.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:i.name}),i.isDefault&&e.jsxs("span",{className:"flex items-center gap-1 px-2 py-0.5 rounded-[var(--radius-badge)] text-xs bg-[var(--accent-bg)] text-[var(--accent-text)]",children:[e.jsx(r.Star,{className:"w-3 h-3"}),t("templates.default")]})]}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx("span",{className:"text-sm text-[var(--text-tertiary)] font-mono",children:i.code}),e.jsx("span",{className:"text-[var(--text-tertiary)]",children:"-"}),e.jsxs("span",{className:"flex items-center gap-1 text-sm text-[var(--text-secondary)]",children:[e.jsx(p,{className:"w-3.5 h-3.5"}),S]})]})]})]}),e.jsx("button",{onClick:x,"aria-label":t("common:refresh"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)]",children:e.jsx(r.RefreshCw,{className:"w-4 h-4"})})]}),e.jsx("div",{className:"border-b border-[var(--border-color)]",children:e.jsx("div",{className:"flex gap-1 -mb-px",children:ot.map(B=>e.jsx("button",{onClick:()=>d(B),className:`px-4 py-2 text-sm border-b-2 transition-colors ${l===B?"border-[var(--primary-color)] text-[var(--primary-color)] font-medium":"border-transparent text-[var(--text-secondary)] hover:text-[var(--text-primary)]"}`,children:t(`templates.tabs.${B}`)},B))})}),l==="info"&&e.jsx(Ps,{template:i,t}),l==="applications"&&e.jsx(ht,{tenantId:n,tenantName:i.name,mode:"template",applications:o.applications,loadingApps:o.loadingApps,actionLoading:null,onRefresh:o.loadApplications,onUpdateAccessLevel:o.handleUpdateAccessLevel,onRemoveApplication:o.handleRemoveApplication,addingApplication:o.addingApplication,availableAppsError:o.availableAppsError,filteredAvailableApps:o.filteredAvailableApps,loadingAvailableApps:o.loadingAvailableApps,selectedAppIds:o.selectedAppIds,assigningApps:o.assigningApps,appSearchTerm:o.appSearchTerm,selectedAccessLevel:o.selectedAccessLevel,bulkAccessMode:o.bulkAccessMode,bulkModules:o.bulkModules,bulkExpandedModules:o.bulkExpandedModules,loadingBulkModules:o.loadingBulkModules,showCustomizeDrawer:o.showCustomizeDrawer,customizingApp:o.customizingApp,onOpenAddApplication:o.loadAvailableApps,onCloseAddApplication:()=>{o.setAddingApplication(!1),o.setSelectedAppIds([]),o.setAppSearchTerm(""),o.setSelectedAccessLevel("FullAccess"),o.setBulkAccessMode("full"),o.setBulkModules([]),o.setBulkExpandedModules(new Set)},onAssignApplications:o.handleAssignApplications,onAppToggle:o.handleAppToggle,onSelectAllApps:o.selectAllFilteredApps,onClearAppSelection:o.clearAppSelection,onOpenCustomizeDrawer:o.openCustomizeDrawer,onCloseCustomizeDrawer:o.closeCustomizeDrawer,onLoadBulkModules:o.loadBulkModulesForApp,onToggleBulkModuleExpand:o.toggleBulkModuleExpand,onToggleBulkModule:o.toggleBulkModule,onToggleBulkSection:o.toggleBulkSection,onGetBulkModuleCheckState:o.getBulkModuleCheckState,onGetBulkStats:o.getBulkStats,onSelectAllBulkModules:o.selectAllBulkModules,onClearBulkModules:o.clearBulkModules,setAppSearchTerm:o.setAppSearchTerm,setSelectedAccessLevel:o.setSelectedAccessLevel,setBulkAccessMode:o.setBulkAccessMode}),l==="tenants"&&e.jsx(Ds,{templateId:n,t}),l==="ai"&&e.jsx($s,{templateId:n,t})]})}function Ps({template:t,t:n}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"bg-[var(--bg-card)] border border-[var(--border-color)] rounded-[var(--radius-card)] p-5",children:[e.jsx("h3",{className:"font-semibold text-[var(--text-primary)] mb-4",children:n("templates.info.general")}),e.jsxs("dl",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("dt",{className:"text-sm text-[var(--text-secondary)]",children:n("templates.info.code")}),e.jsx("dd",{className:"font-mono text-[var(--text-primary)]",children:t.code})]}),e.jsxs("div",{children:[e.jsx("dt",{className:"text-sm text-[var(--text-secondary)]",children:n("templates.info.name")}),e.jsx("dd",{className:"text-[var(--text-primary)]",children:t.name})]}),e.jsxs("div",{className:"md:col-span-2",children:[e.jsx("dt",{className:"text-sm text-[var(--text-secondary)]",children:n("templates.info.description")}),e.jsx("dd",{className:"text-[var(--text-primary)]",children:t.description||"-"})]})]})]}),e.jsxs("div",{className:"bg-[var(--bg-card)] border border-[var(--border-color)] rounded-[var(--radius-card)] p-5",children:[e.jsx("h3",{className:"font-semibold text-[var(--text-primary)] mb-4",children:n("templates.info.stats")}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(We,{icon:e.jsx(r.AppWindow,{className:"w-5 h-5"}),label:n("templates.tabs.applications"),value:t.applications.length}),e.jsx(We,{icon:e.jsx(r.LayoutGrid,{className:"w-5 h-5"}),label:n("templates.tabs.tenants"),value:t.modules.length}),e.jsx(We,{icon:e.jsx(r.Users,{className:"w-5 h-5"}),label:n("templates.tabs.tenants"),value:0})]})]})]})}const We=a.memo(function({icon:n,label:s,value:l}){return e.jsxs("div",{className:"flex items-center gap-3 p-3 bg-[var(--bg-secondary)] rounded-[var(--radius-card)]",children:[e.jsx("span",{className:"text-[var(--text-secondary)]",children:n}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-[var(--text-primary)]",children:l}),e.jsx("p",{className:"text-xs text-[var(--text-secondary)]",children:s})]})]})});function Ds({templateId:t,t:n}){const[s,l]=a.useState([]),[d,i]=a.useState(!0),[c,b]=a.useState(null),h=a.useCallback(async()=>{try{i(!0),b(null);const u=await E.adminApi.templates.getTenants(t);l(u)}catch{b(n("templates.errors.loadFailed"))}finally{i(!1)}},[t,n]);return a.useEffect(()=>{h()},[h]),d?e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--text-secondary)]"})}):c?e.jsxs("div",{className:"p-4 bg-[var(--error-bg)] border border-[var(--error-border)] rounded-[var(--radius-card)]",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx(r.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("span",{className:"ml-2 text-[var(--error-text)]",children:c})]}),e.jsx("button",{onClick:()=>h(),className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:n("common:errors.retry")})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("h3",{className:"font-semibold text-[var(--text-primary)]",children:[n("templates.tenants.title")," (",s.length,")"]}),s.length===0?e.jsxs("div",{className:"p-8 text-center text-[var(--text-secondary)] bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx(r.Users,{className:"w-8 h-8 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:n("templates.tenants.noTenants")})]}):e.jsx("div",{className:"bg-[var(--bg-card)] border border-[var(--border-color)] rounded-[var(--radius-card)] divide-y divide-[var(--border-color)]",children:s.map(u=>e.jsxs(xe.Link,{to:`/administration/tenants/${u.id}`,className:"flex items-center justify-between p-3 hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:u.name}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] font-mono",children:u.slug})]}),e.jsx("span",{className:"text-xs text-[var(--text-secondary)] px-2 py-0.5 bg-[var(--bg-secondary)] rounded-[var(--radius-badge)]",children:n("templates.tenants.explicit")})]},u.id))})]})}function $s({templateId:t,t:n}){const[s,l]=a.useState([]),[d,i]=a.useState(!0),[c,b]=a.useState(null),h=a.useCallback(async()=>{try{i(!0),b(null);const m=await E.adminApi.templates.getAiInstances(t);l(m)}catch{b(n("templates.errors.loadFailed"))}finally{i(!1)}},[t,n]),u=a.useCallback(async m=>{if(window.confirm(n("templates.ai.removeConfirm")))try{await E.adminApi.templates.removeAiInstance(t,m),await h()}catch{b(n("templates.errors.loadFailed"))}},[t,n,h]);return a.useEffect(()=>{h()},[h]),d?e.jsx("div",{className:"flex justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--text-secondary)]"})}):c?e.jsxs("div",{className:"p-4 bg-[var(--error-bg)] border border-[var(--error-border)] rounded-[var(--radius-card)]",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx(r.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("span",{className:"ml-2 text-[var(--error-text)]",children:c})]}),e.jsx("button",{onClick:()=>h(),className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:n("common:errors.retry")})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("h3",{className:"font-semibold text-[var(--text-primary)]",children:[n("templates.ai.title")," (",s.length,")"]}),s.length===0?e.jsxs("div",{className:"p-8 text-center text-[var(--text-secondary)] bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx(r.Brain,{className:"w-8 h-8 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:n("templates.ai.noInstances")})]}):e.jsx("div",{className:"bg-[var(--bg-card)] border border-[var(--border-color)] rounded-[var(--radius-card)] divide-y divide-[var(--border-color)]",children:s.map(m=>e.jsxs("div",{className:"flex items-center justify-between p-3 hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:m.instanceName}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] font-mono",children:m.instanceCode})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:`text-xs px-2 py-0.5 rounded-[var(--radius-badge)] ${m.isActive?"bg-[var(--success-bg)] text-[var(--success-text)]":"bg-[var(--bg-secondary)] text-[var(--text-secondary)]"}`,children:m.isActive?n("templates.ai.active"):n("templates.ai.inactive")}),e.jsx("button",{onClick:()=>u(m.instanceId),className:"text-xs text-[var(--error-text)] hover:opacity-80 underline",children:n("templates.ai.remove")})]})]},m.id))})]})}function Us(){const{t}=de.useTranslation("admin"),n=xe.useNavigate(),[s,l]=a.useState([]),[d,i]=a.useState(!0),[c,b]=a.useState(null),h=a.useCallback(async()=>{try{i(!0);const x=await E.adminApi.templates.getAll();l(x),b(null)}catch{b(t("tenants.template.errors.loadFailed"))}finally{i(!1)}},[t]);a.useEffect(()=>{h()},[h]);const u=x=>{n(`/administration/tenants/template/${x}`)},m=s.filter(x=>x.isDefault),o=s.filter(x=>!x.isDefault);return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("tenants.title"),href:"/administration/tenants/list"},{label:t("tenants.template.title")}]}),e.jsx(E.PageHeader,{title:t("tenants.template.title"),subtitle:t("tenants.template.subtitle"),icon:e.jsx(r.Settings2,{className:"w-6 h-6"}),actions:e.jsxs("button",{onClick:()=>n("/administration/tenants/template/create"),className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] transition-colors",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),t("tenants.template.createTemplate")]})}),c&&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:c})]})}),d&&e.jsx("div",{className:"flex justify-center py-12",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--text-secondary)]"})}),!d&&s.length===0&&e.jsx("div",{className:"p-6 text-center text-[var(--text-secondary)] bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)]",children:t("tenants.template.noTemplates")}),!d&&s.length>0&&e.jsxs("div",{className:"space-y-8",children:[m.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)] mb-4",children:t("tenants.template.systemTemplates")}),e.jsx("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:m.map(x=>e.jsx(Os,{template:x,onClick:()=>u(x.id),t},x.id))})]}),o.length>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)] mb-4",children:t("tenants.template.customTemplates")}),e.jsx("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:o.map(x=>e.jsx(Gs,{template:x,onClick:()=>u(x.id),t},x.id))})]})]})]})}function Os({template:t,onClick:n,t:s}){const l=t.targetTenantType==="Personal"?r.User:r.Building;return e.jsx("button",{type:"button",onClick:n,className:"p-6 border border-[var(--border-color)] rounded-[var(--radius-card)] bg-[var(--bg-card)] hover:bg-[var(--bg-hover)] hover:border-[var(--primary-color)] cursor-pointer transition-all duration-200 shadow-sm hover:shadow-md text-left w-full",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2.5 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:e.jsx(l,{className:"w-5 h-5 text-[var(--primary-color)]"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:t.targetTenantType==="Personal"?s("tenants.template.personalTitle"):s("tenants.template.businessTitle")}),e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] font-mono",children:t.code})]})]}),e.jsxs("span",{className:"flex items-center gap-1 px-2.5 py-1 rounded-[var(--radius-badge)] text-xs bg-[var(--accent-bg)] text-[var(--accent-text)] flex-shrink-0",children:[e.jsx(r.Star,{className:"w-3 h-3"}),s("tenants.template.default")]})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t.targetTenantType==="Personal"?s("tenants.template.personalDescription"):s("tenants.template.businessDescription")}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:`px-2 py-0.5 rounded-[var(--radius-badge)] text-xs ${t.isActive?"bg-[var(--success-bg)] text-[var(--success-text)]":"bg-[var(--bg-secondary)] text-[var(--text-secondary)]"}`,children:t.isActive?s("templates.active"):s("templates.inactive")})}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 pt-2",children:[e.jsxs("div",{className:"p-3 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(r.Boxes,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("span",{className:"text-xs text-[var(--text-tertiary)]",children:s("tenants.template.applications")})]}),e.jsx("div",{className:"text-lg font-bold text-[var(--text-primary)]",children:t.applicationCount})]}),e.jsxs("div",{className:"p-3 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(r.Users,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("span",{className:"text-xs text-[var(--text-tertiary)]",children:s("tenants.template.tenants")})]}),e.jsx("div",{className:"text-lg font-bold text-[var(--text-primary)]",children:t.tenantCount})]})]}),e.jsxs("span",{className:"w-full mt-2 py-2 px-3 rounded-[var(--radius-button)] bg-[var(--primary-color)] text-white text-sm font-medium flex items-center justify-center gap-2 hover:opacity-90 transition-opacity",children:[s("tenants.template.configure"),e.jsx(r.ArrowRight,{className:"w-3.5 h-3.5"})]})]})})}function Gs({template:t,onClick:n,t:s}){const l=t.targetTenantType==="Personal"?r.User:r.Building;return e.jsx("button",{type:"button",onClick:n,className:"p-6 border border-[var(--border-color)] rounded-[var(--radius-card)] bg-[var(--bg-card)] hover:bg-[var(--bg-hover)] hover:border-[var(--primary-color)] cursor-pointer transition-all duration-200 shadow-sm hover:shadow-md text-left w-full",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2.5 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:e.jsx(l,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:t.name}),e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] font-mono",children:t.code})]})]}),e.jsx("span",{className:`px-2.5 py-1 rounded-[var(--radius-badge)] text-xs flex-shrink-0 ${t.isActive?"bg-[var(--success-bg)] text-[var(--success-text)]":"bg-[var(--bg-secondary)] text-[var(--text-secondary)]"}`,children:t.isActive?s("templates.active"):s("templates.inactive")})]}),t.description&&e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t.description}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"px-2 py-0.5 rounded-[var(--radius-badge)] text-xs bg-[var(--info-bg)] text-[var(--info-text)]",children:t.targetTenantType==="Personal"?s("tenants.type.personal"):s("tenants.type.business")})}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 pt-2",children:[e.jsxs("div",{className:"p-3 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(r.Boxes,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("span",{className:"text-xs text-[var(--text-tertiary)]",children:s("tenants.template.applications")})]}),e.jsx("div",{className:"text-lg font-bold text-[var(--text-primary)]",children:t.applicationCount})]}),e.jsxs("div",{className:"p-3 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(r.Users,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("span",{className:"text-xs text-[var(--text-tertiary)]",children:s("tenants.template.tenants")})]}),e.jsx("div",{className:"text-lg font-bold text-[var(--text-primary)]",children:t.tenantCount})]})]}),e.jsxs("span",{className:"w-full mt-2 py-2 px-3 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] text-sm font-medium flex items-center justify-center gap-2 hover:bg-[var(--bg-hover)] transition-colors border border-[var(--border-color)]",children:[s("tenants.template.configure"),e.jsx(r.ArrowRight,{className:"w-3.5 h-3.5"})]})]})})}function Hs(){const{t}=de.useTranslation("admin"),n=xe.useNavigate(),[s,l]=a.useState(""),[d,i]=a.useState(""),[c,b]=a.useState(""),[h,u]=a.useState("Business"),[m,o]=a.useState(!1),[x,p]=a.useState(null),S=async B=>{if(B.preventDefault(),!(!s.trim()||!d.trim())){o(!0),p(null);try{const P=await E.adminApi.templates.create({code:s.trim(),name:d.trim(),description:c.trim()||void 0,targetTenantType:h});n(`/administration/tenants/template/${P.id}`)}catch(P){console.error("Failed to create template:",P);const T=P;T.response?.status===409?p(T.response.data?.message||t("tenants.template.errors.createConflict")):p(t("tenants.template.errors.createFailed"))}finally{o(!1)}}};return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("tenants.title"),href:"/administration/tenants/list"},{label:t("tenants.template.title"),href:"/administration/tenants/template"},{label:t("tenants.template.createTitle")}]}),e.jsx(E.PageHeader,{title:t("tenants.template.createTitle"),subtitle:t("tenants.template.createSubtitle"),icon:e.jsx(r.Settings2,{className:"w-6 h-6"})}),x&&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:x})]})}),e.jsxs("form",{onSubmit:S,className:"max-w-2xl space-y-6",children:[e.jsxs("div",{className:"p-6 rounded-[var(--radius-card)] bg-[var(--bg-card)] border border-[var(--border-color)] space-y-4",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:[t("tenants.template.code")," *"]}),e.jsx("input",{type:"text",value:s,onChange:B=>l(B.target.value),placeholder:"e.g. custom-b2b-premium",className:"w-full 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)]",required:!0})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:[t("tenants.template.name")," *"]}),e.jsx("input",{type:"text",value:d,onChange:B=>i(B.target.value),placeholder:t("tenants.template.namePlaceholder"),className:"w-full 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)]",required:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:t("common:description")}),e.jsx("textarea",{value:c,onChange:B=>b(B.target.value),rows:3,className:"w-full 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)] resize-none"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1",children:[t("tenants.template.targetType")," *"]}),e.jsxs("select",{value:h,onChange:B=>u(B.target.value),className:"w-full 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:"Business",children:t("tenants.type.business")}),e.jsx("option",{value:"Personal",children:t("tenants.type.personal")})]})]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("button",{type:"button",onClick:()=>n("/administration/tenants/template"),className:"px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:t("common:cancel")}),e.jsxs("button",{type:"submit",disabled:!s.trim()||!d.trim()||m,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:[m?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Check,{className:"w-4 h-4"}),t("common:create")]})]})]})]})}function qs(){return e.jsx(_e,{lockedType:"Business"})}function zs(){return e.jsx(_e,{lockedType:"Personal"})}function Vs(){return e.jsx(_e,{excludeTypes:["Business","Personal"]})}const _s=["all","Pending","Approved","Denied"];function Ks(){const{t}=de.useTranslation("admin"),[n,s]=a.useState([]),[l,d]=a.useState(!0),[i,c]=a.useState("all"),b=a.useCallback(async()=>{d(!0);try{const u=i==="all"?void 0:i,m=await kt.accessRequestsApi.getAllRequests(u);s(Array.isArray(m)?m:[])}catch{s([])}finally{d(!1)}},[i]);a.useEffect(()=>{b()},[b]);const h={pending:n.filter(u=>u.status==="Pending").length,approved:n.filter(u=>u.status==="Approved").length,denied:n.filter(u=>u.status==="Denied").length};return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("header.title"),href:"/administration"},{label:t("tenants.title"),href:"/administration/tenants/list"},{label:t("accessRequests.pageTitle")}]}),e.jsx(E.PageHeader,{title:t("accessRequests.pageTitle"),icon:e.jsx(r.ShieldCheck,{className:"w-6 h-6"})}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-[var(--radius-card)] p-4 bg-[var(--bg-card)] border border-[var(--warning-border)]",children:[e.jsx("div",{className:"text-2xl font-bold text-[var(--warning-text)]",children:h.pending}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)]",children:t("accessRequests.stats.pending")})]}),e.jsxs("div",{className:"rounded-[var(--radius-card)] p-4 bg-[var(--bg-card)] border border-[var(--success-border)]",children:[e.jsx("div",{className:"text-2xl font-bold text-[var(--success-text)]",children:h.approved}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)]",children:t("accessRequests.stats.approved")})]}),e.jsxs("div",{className:"rounded-[var(--radius-card)] p-4 bg-[var(--bg-card)] border border-[var(--error-border)]",children:[e.jsx("div",{className:"text-2xl font-bold text-[var(--error-text)]",children:h.denied}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)]",children:t("accessRequests.stats.denied")})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(r.Filter,{className:"w-4 h-4 text-[var(--text-secondary)]"}),e.jsx("div",{className:"flex gap-1",children:_s.map(u=>e.jsx("button",{onClick:()=>c(u),className:`px-3 py-1.5 rounded-[var(--radius-button)] text-sm font-medium transition-colors ${i===u?"bg-[var(--color-accent-500)] text-white":"bg-[var(--bg-secondary)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"}`,children:t(u==="all"?"accessRequests.filter.all":`accessRequests.status.${u.toLowerCase()}`)},u))})]}),l?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx(Qe.AccessRequestsListTab,{requests:n,loading:!1,onReload:b,showTenantColumn:!0})]})}const ke={READ:"administration.entra.read",UPDATE:"administration.entra.update",SYNC:"administration.entra.execute"},Xe={STARTED:"EntraSyncStarted",COMPLETED:"EntraSyncCompleted",FAILED:"EntraSyncFailed"},Ws=[{code:"User.Read.All",descriptionKey:"userReadAll"},{code:"Group.Read.All",descriptionKey:"groupReadAll"},{code:"GroupMember.Read.All",descriptionKey:"groupMemberReadAll"}],Xs=[{id:"member",labelKey:"userTypes.member",descriptionKey:"userTypes.memberDescription",supported:!0},{id:"guest",labelKey:"userTypes.guest",descriptionKey:"userTypes.guestDescription",supported:!0}],ct=t=>{const n=Date.now(),s=t.getTime(),l=Math.floor((n-s)/1e3),d=Math.floor(l/60),i=l%60;return`${d.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`},Ys=(t,n,s)=>{t.type===Xe.STARTED?n({sessionId:t.relatedEntityId||"",startedAt:new Date(t.createdAt)}):(t.type===Xe.COMPLETED||t.type===Xe.FAILED)&&(n(null),s())};function Ne({icon:t,title:n,description:s,action:l,children:d,className:i=""}){return e.jsxs("div",{className:`rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-card)] shadow-sm overflow-hidden ${i}`,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:n}),s&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:s})]})]}),l]})}),e.jsx("div",{className:"p-6",children:d})]})}function Ye({checked:t,onChange:n,label:s,description:l,disabled:d}){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:s}),l&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:l})]}),e.jsx("button",{type:"button",role:"switch","aria-checked":t,onClick:n,disabled:d,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)] disabled:opacity-50 disabled:cursor-not-allowed ${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-white shadow-md transition-transform ${t?"translate-x-6":"translate-x-1"}`})})]})}const Zs=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,Qs=({config:t,loading:n,canEdit:s,onRefresh:l,onEdit:d,t:i})=>e.jsx(Ne,{icon:r.Key,title:i("admin:tenants.entra.configuration.title"),description:i("admin:tenants.entra.configuration.description"),action:e.jsxs("div",{className:"flex flex-col sm:flex-row items-stretch sm:items-center gap-2",children:[s&&e.jsxs("button",{onClick:d,className:"inline-flex items-center justify-center gap-2 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",children:[e.jsx(r.Settings,{className:"w-4 h-4"}),e.jsx("span",{className:"sm:inline",children:i("admin:tenants.entra.configuration.edit")})]}),e.jsxs("button",{onClick:l,disabled:n,className:"inline-flex items-center justify-center gap-2 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] transition-colors disabled:opacity-50",children:[e.jsx(r.RefreshCw,{className:`w-4 h-4 ${n?"animate-spin":""}`}),e.jsx("span",{className:"sm:inline",children:i("common:refresh")})]})]}),children:t?e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:t.isConfigured?e.jsxs(e.Fragment,{children:[e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:i("admin:tenants.entra.configuration.configured")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:i("admin:tenants.entra.configuration.connectedTo",{tenantId:t.tenantId})})]})]}):e.jsxs(e.Fragment,{children:[e.jsx(r.Info,{className:"w-5 h-5 text-[var(--warning-text)]"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-[var(--text-primary)]",children:i("admin:tenants.entra.configuration.notConfigured")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:i("admin:tenants.entra.configuration.notConfiguredHint")})]})]})}),t.isConfigured&&e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4",children:[e.jsxs("div",{className:"p-3 sm:p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(r.Clock,{className:"w-4 h-4 text-[var(--text-tertiary)] flex-shrink-0"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:i("admin:tenants.entra.configuration.syncStatus")})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t.syncEnabled?i("admin:tenants.entra.configuration.syncEnabled"):i("admin:tenants.entra.configuration.syncDisabled")})]}),e.jsxs("div",{className:"p-3 sm:p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(r.Settings,{className:"w-4 h-4 text-[var(--text-tertiary)] flex-shrink-0"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:i("admin:tenants.entra.configuration.syncInterval")})]}),e.jsxs("p",{className:"text-sm text-[var(--text-secondary)]",children:[t.syncIntervalMinutes," ",i("common:minutes")]})]}),e.jsxs("div",{className:"p-3 sm:p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)] sm:col-span-2 lg:col-span-1",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(r.GitMerge,{className:"w-4 h-4 text-[var(--text-tertiary)] flex-shrink-0"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:i("admin:tenants.entra.configuration.conflictResolution")})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:i(`entra:settings.conflictResolutions.${t.defaultConflictResolution?.toLowerCase()??"manualreview"}`)})]})]})]}):e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:i("admin:tenants.entra.configuration.noData")})});function Js({config:t,loading:n,canEdit:s,onRefresh:l,onConfigUpdated:d,t:i,entraApi:c}){const[b,h]=a.useState(!1),[u,m]=a.useState(!1),[o,x]=a.useState(!1),[p,S]=a.useState(null),[B,P]=a.useState(!1),[T,g]=a.useState(null),[f,D]=a.useState(null),[y,H]=a.useState(null),[R,L]=a.useState(t?.hasClientSecret??!1),[k,Z]=a.useState({}),[q,U]=a.useState({tenantId:t?.tenantId||"",clientId:t?.clientId||"",clientSecret:""}),[z,ee]=a.useState({syncEnabled:t?.syncEnabled??!1,syncIntervalMinutes:t?.syncIntervalMinutes??60,useDeltaSync:t?.useDeltaSync??!0,defaultConflictResolution:t?.defaultConflictResolution??"ManualReview",autoCreateReferences:t?.autoCreateReferences??!0,syncOnlyActiveUsers:t?.syncOnlyActiveUsers??!0,syncUserTypes:t?.syncUserTypes??"member"});a.useEffect(()=>{t&&(U({tenantId:t.tenantId||"",clientId:t.clientId||"",clientSecret:""}),L(t.hasClientSecret),ee({syncEnabled:t.syncEnabled,syncIntervalMinutes:t.syncIntervalMinutes,useDeltaSync:t.useDeltaSync,defaultConflictResolution:t.defaultConflictResolution,autoCreateReferences:t.autoCreateReferences,syncOnlyActiveUsers:t.syncOnlyActiveUsers??!0,syncUserTypes:t.syncUserTypes??"member"}))},[t]);const ae=(w,v)=>{const N=Zs(v)?void 0:i("entra:settings.invalidGuidFormat");Z(ie=>({...ie,[w]:N}))},$=(w,v)=>{U(N=>({...N,[w]:v})),(w==="tenantId"||w==="clientId")&&ae(w,v)},X=!!(k.tenantId||k.clientId),J=!o&&!X&&q.tenantId&&q.clientId&&(q.clientSecret||R),F=!u&&!X&&q.tenantId&&q.clientId&&q.clientSecret,A=async w=>{try{await navigator.clipboard.writeText(w),H(w),setTimeout(()=>H(null),2e3)}catch(v){console.error("Failed to copy:",v instanceof Error?v.message:"Unknown error")}},j=async()=>{if(J){x(!0),S(null),g(null),D(null);try{const w=q.clientSecret?await c.settings.testConnection({tenantId:q.tenantId,clientId:q.clientId,clientSecret:q.clientSecret}):await c.settings.testStoredConnection();S(w),w.success?D(i("entra:settings.testSuccess")):g(w.errorMessage||i("entra:settings.testFailed"))}catch(w){console.error("Connection test failed:",w instanceof Error?w.message:"Unknown error"),g(i("entra:settings.testFailed"))}finally{x(!1)}}},M=async()=>{if(F){m(!0),g(null),D(null);try{await c.settings.saveCredentials({tenantId:q.tenantId,clientId:q.clientId,clientSecret:q.clientSecret}),D(i("entra:settings.credentialsSaved")),L(!0),U(w=>({...w,clientSecret:""})),d()}catch(w){console.error("Failed to save credentials:",w instanceof Error?w.message:"Unknown error"),g(i("entra:settings.saveError"))}finally{m(!1)}}},O=async()=>{m(!0),g(null),D(null);try{await c.settings.saveSyncSettings({syncEnabled:z.syncEnabled,syncIntervalMinutes:z.syncIntervalMinutes,useDeltaSync:z.useDeltaSync,defaultConflictResolution:z.defaultConflictResolution,autoCreateReferences:z.autoCreateReferences,syncOnlyActiveUsers:z.syncOnlyActiveUsers,syncUserTypes:z.syncUserTypes}),D(i("entra:settings.settingsSaved")),d()}catch(w){console.error("Failed to save settings:",w instanceof Error?w.message:"Unknown error"),g(i("entra:settings.saveError"))}finally{m(!1)}};return!s||!b?e.jsx(Qs,{config:t,loading:n,canEdit:s,onRefresh:l,onEdit:()=>h(!0),t:i}):e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-[var(--radius-card)] border-2 border-[var(--warning-border)] bg-[var(--warning-bg)] p-4",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx(r.Shield,{className:"w-5 h-5 text-[var(--warning-text)] mt-0.5"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4 mb-2",children:[e.jsx("h3",{className:"font-semibold text-[var(--warning-text)]",children:i("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:[i("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-3",children:i("entra:settings.permissionsWarningDescription")}),e.jsx("div",{className:"flex flex-wrap gap-2",children:Ws.map(w=>e.jsxs("button",{onClick:()=>A(w.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:shadow-sm transition-all",children:[e.jsx("code",{className:"text-sm font-mono font-medium text-[var(--text-primary)]",children:w.code}),y===w.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)]"})]},w.code))})]})]})}),T&&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)]"}),e.jsx("span",{className:"text-sm text-[var(--error-text)]",children:T})]}),f&&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)]"}),e.jsx("span",{className:"text-sm text-[var(--success-text)]",children:f})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsx(Ne,{icon:r.Key,title:i("entra:settings.credentials"),description:"Azure AD Application",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:i("entra:settings.tenantId")}),e.jsx("input",{type:"text",autoComplete:"off",value:q.tenantId,onChange:w=>$("tenantId",w.target.value),placeholder:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] font-mono text-sm focus:outline-none focus:ring-2 focus:border-transparent transition-shadow ${k.tenantId?"border-[var(--error-border)] focus:ring-[var(--error-border)]":"border-[var(--border-color)] focus:ring-[var(--color-accent-500)]"}`}),k.tenantId&&e.jsx("p",{className:"mt-1.5 text-xs text-[var(--error-text)]",children:k.tenantId})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:i("entra:settings.clientId")}),e.jsx("input",{type:"text",autoComplete:"off",value:q.clientId,onChange:w=>$("clientId",w.target.value),placeholder:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] font-mono text-sm focus:outline-none focus:ring-2 focus:border-transparent transition-shadow ${k.clientId?"border-[var(--error-border)] focus:ring-[var(--error-border)]":"border-[var(--border-color)] focus:ring-[var(--color-accent-500)]"}`}),k.clientId&&e.jsx("p",{className:"mt-1.5 text-xs text-[var(--error-text)]",children:k.clientId})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[i("entra:settings.clientSecret"),R&&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"}),i("common:configured")]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:B?"text":"password",autoComplete:"new-password",value:q.clientSecret,onChange:w=>$("clientSecret",w.target.value),placeholder:R?"••••••••••••••••":"OvA8Q~xxxxxxxxxxxx",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)] placeholder-[var(--text-muted)] font-mono text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow"}),e.jsx("button",{type:"button",onClick:()=>P(!B),className:"absolute right-3 top-1/2 -translate-y-1/2 p-1 text-[var(--text-tertiary)] hover:text-[var(--text-primary)]",children:B?e.jsx(r.EyeOff,{className:"w-4 h-4"}):e.jsx(r.Eye,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-stretch sm:items-center gap-2 sm:gap-3 pt-2",children:[e.jsxs("button",{onClick:j,disabled:o||X||!q.tenantId||!q.clientId||!q.clientSecret&&!R,className:"inline-flex items-center justify-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:[o?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.TestTube,{className:"w-4 h-4"}),i("entra:settings.testConnection")]}),e.jsxs("button",{onClick:M,disabled:u||X||!q.tenantId||!q.clientId||!q.clientSecret,className:"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:[u?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),i("common:save")]})]}),p?.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-2",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:i("entra:settings.connectionSuccessful")})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-3 text-sm",children:[p.tenantName&&e.jsxs("div",{children:[e.jsx("span",{className:"text-[var(--text-tertiary)]",children:"Tenant:"})," ",p.tenantName]}),p.userCount!==null&&e.jsxs("div",{children:[e.jsx("span",{className:"text-[var(--text-tertiary)]",children:"Users:"})," ",p.userCount]}),p.groupCount!==null&&e.jsxs("div",{children:[e.jsx("span",{className:"text-[var(--text-tertiary)]",children:"Groups:"})," ",p.groupCount]})]})]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(Ne,{icon:r.Clock,title:i("entra:settings.syncSettings"),description:"Scheduling & Performance",children:e.jsxs("div",{className:"divide-y divide-[var(--border-subtle)]",children:[e.jsx(Ye,{checked:z.syncEnabled,onChange:()=>ee(w=>({...w,syncEnabled:!w.syncEnabled})),label:i("entra:settings.syncEnabled"),description:i("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:i("entra:settings.syncInterval")}),e.jsxs("select",{value:z.syncIntervalMinutes,onChange:w=>ee(v=>({...v,syncIntervalMinutes:Number(w.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)]",children:[e.jsxs("option",{value:15,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["15 ",i("common:minutes")]}),e.jsxs("option",{value:30,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["30 ",i("common:minutes")]}),e.jsxs("option",{value:60,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["1 ",i("common:hour")]}),e.jsxs("option",{value:120,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["2 ",i("common:hours")]}),e.jsxs("option",{value:360,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["6 ",i("common:hours")]}),e.jsxs("option",{value:720,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["12 ",i("common:hours")]}),e.jsxs("option",{value:1440,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["24 ",i("common:hours")]})]})]}),e.jsx(Ye,{checked:z.useDeltaSync,onChange:()=>ee(w=>({...w,useDeltaSync:!w.useDeltaSync})),label:i("entra:settings.useDeltaSync"),description:i("entra:settings.useDeltaSyncHelp")})]})}),e.jsx(Ne,{icon:r.GitMerge,title:i("entra:settings.conflictResolution"),description:"Data Priority",children:e.jsxs("select",{value:z.defaultConflictResolution,onChange:w=>ee(v=>({...v,defaultConflictResolution:w.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)]",children:[e.jsx("option",{value:"ManualReview",className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:i("entra:settings.conflictResolutions.manualReview")}),e.jsx("option",{value:"EntraWins",className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:i("entra:settings.conflictResolutions.entraWins")}),e.jsx("option",{value:"LocalWins",className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:i("entra:settings.conflictResolutions.localWins")})]})}),e.jsx(Ne,{icon:r.Filter,title:i("entra:settings.userSyncFilters"),description:"User Types",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx(Ye,{checked:z.syncOnlyActiveUsers,onChange:()=>ee(w=>({...w,syncOnlyActiveUsers:!w.syncOnlyActiveUsers})),label:i("entra:settings.syncOnlyActiveUsers"),description:i("entra:settings.syncOnlyActiveUsersHelp")}),e.jsx("div",{className:"space-y-2 pt-2 border-t border-[var(--border-subtle)]",children:Xs.map(w=>{const v=z.syncUserTypes.split(",").map(ie=>ie.trim()).filter(Boolean),N=v.includes(w.id);return e.jsxs("label",{className:`flex items-center gap-3 p-3 rounded-[var(--radius-button)] border cursor-pointer transition-all ${N?"border-[var(--color-accent-500)] bg-[var(--color-accent-50)] dark:bg-[var(--color-accent-900)]/20":"border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-tertiary)]"}`,children:[e.jsx("input",{type:"checkbox",checked:N,onChange:()=>{let ie=N?v.filter(le=>le!==w.id):[...v,w.id];ie.length===0&&(ie=["member"]),ee(le=>({...le,syncUserTypes:ie.join(",")}))},className:"w-4 h-4 rounded border-[var(--border-color)] text-[var(--color-accent-600)]"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:i(`entra:settings.${w.labelKey}`)})]},w.id)})})]})}),e.jsxs("div",{className:"flex flex-col-reverse sm:flex-row items-stretch sm:items-center gap-2 sm:gap-3",children:[e.jsx("button",{onClick:()=>h(!1),className:"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)] transition-colors text-center",children:i("common:cancel")}),e.jsxs("button",{onClick:O,disabled:u,className:"inline-flex items-center justify-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 transition-colors shadow-sm",children:[u?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),i("common:save")]})]})]})]})]})}const ea={Completed:{bg:"bg-[var(--success-bg)]",text:"text-[var(--success-text)]",icon:r.CheckCircle},PartiallyCompleted:{bg:"bg-[var(--warning-bg)]",text:"text-[var(--warning-text)]",icon:r.AlertTriangle},Failed:{bg:"bg-[var(--error-bg)]",text:"text-[var(--error-text)]",icon:r.AlertTriangle},InProgress:{bg:"bg-[var(--color-accent-100)]",text:"text-[var(--color-accent-700)]",icon:r.Loader2},Cancelled:{bg:"bg-[var(--bg-tertiary)]",text:"text-[var(--text-tertiary)]",icon:r.Square}},ta={Success:e.jsx(r.CheckCircle,{className:"w-4 h-4 text-[var(--success-text)]"}),Failed:e.jsx(r.AlertTriangle,{className:"w-4 h-4 text-[var(--error-text)]"}),Running:e.jsx(r.Loader2,{className:"w-4 h-4 text-[var(--color-accent-500)] animate-spin"})},dt=(t,n)=>{const s=ea[t];if(!s)return e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full bg-[var(--bg-tertiary)] text-[var(--text-tertiary)]",children:t});const l=s.icon,d=n(`admin:tenants.entra.history.${t.toLowerCase()}`);return e.jsxs("span",{className:`inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full ${s.bg} ${s.text}`,children:[e.jsx(l,{className:s.icon===r.Loader2?"w-3 h-3 animate-spin":"w-3 h-3"})," ",d]})},sa=t=>ta[t]||e.jsx(r.Clock,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),mt=(t,n)=>{if(!n)return"-";const s=new Date(t).getTime(),d=new Date(n).getTime()-s;return d<1e3?`${d}ms`:d<6e4?`${Math.round(d/1e3)}s`:`${Math.round(d/6e4)}m`},aa=()=>{const[t,n]=a.useState(!1),[s,l]=a.useState(null),[d,i]=a.useState(null),[c,b]=a.useState([]),[h,u]=a.useState(!1),[m,o]=a.useState(1),[x,p]=a.useState(0),[S,B]=a.useState(null);return{syncing:t,setSyncing:n,lastSyncResult:s,setLastSyncResult:l,syncError:d,setSyncError:i,history:c,setHistory:b,historyLoading:h,setHistoryLoading:u,historyPage:m,setHistoryPage:o,historyTotalCount:x,setHistoryTotalCount:p,cancellingSessionId:S,setCancellingSessionId:B}};function ra({config:t,conflicts:n,syncStatus:s,loading:l,canSync:d,onRefresh:i,onResolveConflict:c,onSyncAll:b,onLoadHistory:h,onCancelSession:u,activeSyncSession:m,t:o}){const{syncing:x,setSyncing:p,lastSyncResult:S,setLastSyncResult:B,syncError:P,setSyncError:T,history:g,setHistory:f,historyLoading:D,setHistoryLoading:y,historyPage:H,setHistoryPage:R,historyTotalCount:L,setHistoryTotalCount:k,cancellingSessionId:Z,setCancellingSessionId:q}=aa(),U=5,z=a.useCallback(async $=>{y(!0);try{const X=await h($,U);if(!X)return;f(X.sessions),k(X.totalCount),R($)}catch(X){console.error("Failed to load history:",X)}finally{y(!1)}},[h]);a.useEffect(()=>{t?.isConfigured&&z(1)},[t?.isConfigured,z]);const ee=async()=>{p(!0),T(null),B(null);try{const $=await b();if(!$)return;B($),i(),z(1)}catch($){console.error("Sync failed:",$ instanceof Error?$.message:"Unknown error"),T(o("admin:tenants.entra.sync.syncFailed"))}finally{p(!1)}},ae=async $=>{q($);try{await u($)&&z(H)}catch(X){console.error("Failed to cancel session:",X instanceof Error?X.message:"Unknown error")}finally{q(null)}};return t?.isConfigured?e.jsxs("div",{className:"space-y-6",children:[e.jsx(Ne,{icon:r.Play,title:o("admin:tenants.entra.sync.actionsTitle"),description:o("admin:tenants.entra.sync.actionsDescription"),children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-3 sm:gap-4",children:[e.jsxs("button",{onClick:ee,disabled:x||m!==null||!d,className:"w-full sm:w-auto 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:[x||m?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Play,{className:"w-4 h-4"}),o(x||m?"admin:tenants.entra.sync.syncing":"admin:tenants.entra.sync.syncNow")]}),!d&&e.jsx("span",{className:"text-xs text-[var(--text-tertiary)]",children:o("admin:tenants.entra.sync.noSyncPermission")})]}),P&&e.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:[e.jsx(r.AlertTriangle,{className:"w-4 h-4 text-[var(--error-text)]"}),e.jsx("span",{className:"text-sm text-[var(--error-text)]",children:P})]}),S&&e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${S.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 gap-2 mb-3",children:[S.success?e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)]"}):e.jsx(r.AlertTriangle,{className:"w-5 h-5 text-[var(--error-text)]"}),e.jsx("span",{className:`font-medium ${S.success?"text-[var(--success-text)]":"text-[var(--error-text)]"}`,children:S.success?o("admin:tenants.entra.sync.syncSuccess"):o("admin:tenants.entra.sync.syncFailed")})]}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-5 gap-2 sm:gap-3 text-sm",children:[e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)] text-center sm:text-left",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.created")}),e.jsxs("p",{className:"font-semibold text-[var(--success-text)]",children:["+",S.created]})]}),e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)] text-center sm:text-left",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.updated")}),e.jsxs("p",{className:"font-semibold text-[var(--color-accent-600)]",children:["~",S.updated]})]}),e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)] text-center sm:text-left",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.deleted")}),e.jsxs("p",{className:"font-semibold text-[var(--error-text)]",children:["-",S.deleted]})]}),e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)] text-center sm:text-left",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.skipped")}),e.jsx("p",{className:"font-semibold text-[var(--text-secondary)]",children:S.skipped})]}),e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)] text-center sm:text-left col-span-3 sm:col-span-1",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.conflicts")}),e.jsx("p",{className:`font-semibold ${S.conflicts>0?"text-[var(--warning-text)]":"text-[var(--text-primary)]"}`,children:S.conflicts})]})]}),S.errorMessage&&e.jsx("p",{className:"mt-3 text-sm text-[var(--error-text)]",children:S.errorMessage})]})]})}),e.jsx(Ne,{icon:r.Zap,title:o("admin:tenants.entra.sync.statusTitle"),description:o("admin:tenants.entra.sync.statusDescription"),action:e.jsxs("button",{onClick:i,disabled:l,className:"inline-flex items-center gap-2 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] transition-colors disabled:opacity-50",children:[e.jsx(r.RefreshCw,{className:`w-4 h-4 ${l?"animate-spin":""}`}),o("common:refresh")]}),children:s.length>0?e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:s.map($=>e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:o(`entra:resourceTypes.${$.resourceType.toLowerCase()}`)}),sa($.status)]}),e.jsxs("div",{className:"space-y-1 text-xs text-[var(--text-tertiary)]",children:[e.jsx("p",{children:o("admin:tenants.entra.sync.itemsSynced",{count:$.totalItemsSynced})}),$.lastFullSyncAt&&e.jsx("p",{children:o("admin:tenants.entra.sync.lastSync",{date:new Date($.lastFullSyncAt).toLocaleDateString()})})]})]},$.resourceType))}):e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:o("admin:tenants.entra.sync.noStatus")})}),e.jsx(Ne,{icon:r.AlertTriangle,title:o("admin:tenants.entra.conflicts.title"),description:o("admin:tenants.entra.conflicts.description",{count:n.length}),children:n.length===0?e.jsxs("div",{className:"text-center py-8",children:[e.jsx("div",{className:"mx-auto w-12 h-12 rounded-full bg-[var(--success-bg)] flex items-center justify-center mb-3",children:e.jsx(r.CheckCircle,{className:"w-6 h-6 text-[var(--success-text)]"})}),e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)] mb-1",children:o("entra:conflicts.noConflicts")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:o("entra:conflicts.noConflictsDescription")})]}):e.jsx("div",{className:"space-y-4",children:n.map($=>e.jsx(Je.ConflictCard,{conflict:$,onResolve:c},$.id))})}),e.jsxs(Ne,{icon:r.History,title:o("admin:tenants.entra.history.title"),description:o("admin:tenants.entra.history.description"),action:e.jsxs("button",{onClick:()=>z(H),disabled:D,className:"inline-flex items-center gap-2 px-3 py-1.5 text-sm font-medium rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] transition-colors disabled:opacity-50",children:[e.jsx(r.RefreshCw,{className:`w-4 h-4 ${D?"animate-spin":""}`}),o("common:refresh")]}),children:[D&&g.length===0&&e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(r.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}),!(D&&g.length===0)&&g.length===0&&e.jsxs("div",{className:"text-center py-8",children:[e.jsx("div",{className:"mx-auto w-12 h-12 rounded-full bg-[var(--bg-tertiary)] flex items-center justify-center mb-3",children:e.jsx(r.History,{className:"w-6 h-6 text-[var(--text-tertiary)]"})}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.noHistory")})]}),g.length>0&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"block sm:hidden space-y-3",children:g.map($=>e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[$.isFullSync?e.jsx("span",{className:"px-2 py-0.5 text-xs rounded bg-[var(--color-accent-100)] text-[var(--color-accent-700)]",children:o("admin:tenants.entra.history.fullSync")}):e.jsx("span",{className:"px-2 py-0.5 text-xs rounded bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.deltaSync")}),dt($.status,o)]}),$.status==="InProgress"&&d&&e.jsxs("button",{onClick:()=>ae($.id),disabled:Z===$.id,className:"inline-flex items-center gap-1 px-2 py-1 text-xs font-medium rounded-[var(--radius-button)] bg-[var(--error-bg)] text-[var(--error-text)]",children:[Z===$.id?e.jsx(r.Loader2,{className:"w-3 h-3 animate-spin"}):e.jsx(r.Square,{className:"w-3 h-3"}),o("common:cancel")]})]}),e.jsxs("div",{className:"text-xs text-[var(--text-tertiary)] mb-2",children:[new Date($.startedAt).toLocaleString()," • ",mt($.startedAt,$.completedAt)]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2 text-center",children:[e.jsxs("div",{className:"p-1.5 rounded bg-[var(--bg-primary)]",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.created")}),e.jsxs("span",{className:"font-medium text-[var(--success-text)]",children:["+",$.created]})]}),e.jsxs("div",{className:"p-1.5 rounded bg-[var(--bg-primary)]",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.updated")}),e.jsxs("span",{className:"font-medium text-[var(--color-accent-600)]",children:["~",$.updated]})]}),e.jsxs("div",{className:"p-1.5 rounded bg-[var(--bg-primary)]",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:o("admin:tenants.entra.sync.deleted")}),e.jsxs("span",{className:"font-medium text-[var(--error-text)]",children:["-",$.deleted]})]})]}),e.jsx("div",{className:"mt-2 pt-2 border-t border-[var(--border-subtle)] text-xs text-[var(--text-secondary)]",children:$.triggerType==="Manual"?e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(r.Users,{className:"w-3 h-3"}),$.triggeredByUserName||o("admin:tenants.entra.history.unknownUser")]}):e.jsxs("span",{className:"flex items-center gap-1 text-[var(--text-tertiary)]",children:[e.jsx(r.Clock,{className:"w-3 h-3"}),o("admin:tenants.entra.history.scheduled")]})})]},$.id))}),e.jsx("div",{className:"hidden sm:block overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-[var(--border-color)]",children:[e.jsx("th",{className:"text-left py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.date")}),e.jsx("th",{className:"text-left py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.type")}),e.jsx("th",{className:"text-left py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.status")}),e.jsx("th",{className:"text-right py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.duration")}),e.jsx("th",{className:"text-right py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.sync.created")}),e.jsx("th",{className:"text-right py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.sync.updated")}),e.jsx("th",{className:"text-right py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.sync.deleted")}),e.jsx("th",{className:"text-left py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.triggeredBy")}),e.jsx("th",{className:"text-center py-2 px-3 font-medium text-[var(--text-secondary)]",children:o("common:actionsColumn")})]})}),e.jsx("tbody",{children:g.map($=>e.jsxs("tr",{className:"border-b border-[var(--border-subtle)] hover:bg-[var(--bg-secondary)]",children:[e.jsx("td",{className:"py-2 px-3 text-[var(--text-primary)]",children:new Date($.startedAt).toLocaleString()}),e.jsx("td",{className:"py-2 px-3",children:e.jsx("span",{className:"inline-flex items-center gap-1 text-xs",children:$.isFullSync?e.jsx("span",{className:"px-2 py-0.5 rounded bg-[var(--color-accent-100)] text-[var(--color-accent-700)]",children:o("admin:tenants.entra.history.fullSync")}):e.jsx("span",{className:"px-2 py-0.5 rounded bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:o("admin:tenants.entra.history.deltaSync")})})}),e.jsx("td",{className:"py-2 px-3",children:dt($.status,o)}),e.jsx("td",{className:"py-2 px-3 text-right text-[var(--text-secondary)]",children:mt($.startedAt,$.completedAt)}),e.jsxs("td",{className:"py-2 px-3 text-right text-[var(--success-text)] font-medium",children:["+",$.created]}),e.jsxs("td",{className:"py-2 px-3 text-right text-[var(--color-accent-600)] font-medium",children:["~",$.updated]}),e.jsxs("td",{className:"py-2 px-3 text-right text-[var(--error-text)] font-medium",children:["-",$.deleted]}),e.jsx("td",{className:"py-2 px-3 text-[var(--text-secondary)]",children:$.triggerType==="Manual"?e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(r.Users,{className:"w-3 h-3"}),$.triggeredByUserName||o("admin:tenants.entra.history.unknownUser")]}):e.jsxs("span",{className:"flex items-center gap-1 text-[var(--text-tertiary)]",children:[e.jsx(r.Clock,{className:"w-3 h-3"}),o("admin:tenants.entra.history.scheduled")]})}),e.jsx("td",{className:"py-2 px-3 text-center",children:$.status==="InProgress"&&d&&e.jsxs("button",{onClick:()=>ae($.id),disabled:Z===$.id,className:"inline-flex items-center gap-1 px-2 py-1 text-xs font-medium rounded-[var(--radius-button)] bg-[var(--error-bg)] text-[var(--error-text)] hover:bg-[var(--error-border)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",title:o("admin:tenants.entra.history.cancelSync"),children:[Z===$.id?e.jsx(r.Loader2,{className:"w-3 h-3 animate-spin"}):e.jsx(r.Square,{className:"w-3 h-3"}),o("common:cancel")]})})]},$.id))})]})}),L>U&&e.jsxs("div",{className:"flex items-center justify-between pt-4 border-t border-[var(--border-subtle)]",children:[e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:o("admin:tenants.entra.history.showing",{from:(H-1)*U+1,to:Math.min(H*U,L),total:L})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:()=>z(H-1),disabled:H===1||D,className:"px-3 py-1.5 text-sm rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] disabled:opacity-50 disabled:cursor-not-allowed",children:o("common:previous")}),e.jsx("button",{onClick:()=>z(H+1),disabled:H*U>=L||D,className:"px-3 py-1.5 text-sm rounded-[var(--radius-button)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] disabled:opacity-50 disabled:cursor-not-allowed",children:o("common:next")})]})]})]})]})]}):e.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx(r.Info,{className:"w-5 h-5 text-[var(--warning-text)]"}),e.jsx("span",{className:"text-sm text-[var(--warning-text)]",children:o("admin:tenants.entra.sync.configureFirst")})]})}function na({config:t,t:n}){return t?.isConfigured?e.jsx(Ne,{icon:r.Users,title:n("admin:tenants.entra.users.title"),description:n("admin:tenants.entra.users.description"),children:e.jsxs("div",{className:"text-center py-8",children:[e.jsx("div",{className:"mx-auto w-12 h-12 rounded-full bg-[var(--bg-secondary)] flex items-center justify-center mb-3",children:e.jsx(r.Users,{className:"w-6 h-6 text-[var(--text-tertiary)]"})}),e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)] mb-1",children:n("admin:tenants.entra.users.comingSoon")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:n("admin:tenants.entra.users.comingSoonDescription")})]})}):e.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx(r.Info,{className:"w-5 h-5 text-[var(--warning-text)]"}),e.jsx("span",{className:"text-sm text-[var(--warning-text)]",children:n("admin:tenants.entra.users.configureFirst")})]})}function ia({config:t,t:n}){return t?.isConfigured?e.jsx(Ne,{icon:r.Building2,title:n("admin:tenants.entra.groups.title"),description:n("admin:tenants.entra.groups.description"),children:e.jsxs("div",{className:"text-center py-8",children:[e.jsx("div",{className:"mx-auto w-12 h-12 rounded-full bg-[var(--bg-secondary)] flex items-center justify-center mb-3",children:e.jsx(r.Building2,{className:"w-6 h-6 text-[var(--text-tertiary)]"})}),e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)] mb-1",children:n("admin:tenants.entra.groups.comingSoon")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:n("admin:tenants.entra.groups.comingSoonDescription")})]})}):e.jsxs("div",{className:"flex items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx(r.Info,{className:"w-5 h-5 text-[var(--warning-text)]"}),e.jsx("span",{className:"text-sm text-[var(--warning-text)]",children:n("admin:tenants.entra.groups.configureFirst")})]})}function la({tenantId:t,tenantSlug:n}){const{t:s}=de.useTranslation(["admin","entra","common"]),{hasPermission:l}=E.useAuth(),{isConnected:d,onNotification:i}=E.useSignalRContext(),[c,b]=a.useState("config"),[h,u]=a.useState(!0),[m,o]=a.useState(null),x=a.useMemo(()=>Je.createEntraApi(n),[n]),[p,S]=a.useState(null),[B,P]=a.useState([]),[T,g]=a.useState([]),[f,D]=a.useState(null),[y,H]=a.useState(!1),[R,L]=a.useState(null),[k,Z]=a.useState("00:00"),q=a.useRef(null),U=a.useRef(!1),z=l(ke.READ),ee=l(ke.UPDATE),ae=l(ke.SYNC),X=[{id:"config",label:s("admin:tenants.entra.tabs.config"),icon:r.Key,permission:ke.READ},{id:"sync",label:s("admin:tenants.entra.tabs.sync"),icon:r.Zap,permission:ke.SYNC},{id:"users",label:s("admin:tenants.entra.tabs.users"),icon:r.Users,permission:ke.READ},{id:"groups",label:s("admin:tenants.entra.tabs.groups"),icon:r.Building2,permission:ke.READ}].filter(O=>l(O.permission));a.useEffect(()=>{X.length>0&&!X.find(O=>O.id===c)&&b(X[0].id)},[X,c]);const J=a.useCallback(async()=>{if(!U.current){if(!z){u(!1);return}q.current&&q.current.abort(),q.current=new AbortController,U.current=!0,u(!0),o(null);try{const[O,w,v]=await Promise.all([x.settings.getConfiguration(),x.conflicts.getAll(),x.dashboard.getSyncStatus()]);S(O??null),P(Array.isArray(w)?w:[]),g(Array.isArray(v)?v:[])}catch(O){if(O instanceof Error&&O.name==="AbortError")return;console.error("Failed to load Entra data:",O instanceof Error?O.message:"Unknown error"),o(s("admin:tenants.entra.loadError"))}finally{U.current=!1,u(!1)}}},[x,s,z]);a.useEffect(()=>(J(),()=>{q.current&&q.current.abort()}),[J,t]),a.useEffect(()=>i(w=>{Ys(w,L,J)}),[i,J]),a.useEffect(()=>{if(!R){Z("00:00");return}Z(ct(R.startedAt));const O=setInterval(()=>{Z(ct(R.startedAt))},1e3);return()=>clearInterval(O)},[R]);const F=a.useCallback(async(O,w)=>{if(!(!f||y)){H(!0);try{await x.conflicts.resolve(f.id,{resolution:O,notes:w||void 0}),D(null),await J()}catch(v){console.error("Failed to resolve conflict:",v instanceof Error?v.message:"Unknown error"),o(s("entra:conflicts.resolveError"))}finally{H(!1)}}},[x,f,y,J,s]),A=a.useCallback(async()=>{try{return await x.sync.syncAll()}catch(O){throw console.error("Sync all failed:",O instanceof Error?O.message:"Unknown error"),O}},[x]),j=a.useCallback(async(O,w)=>{try{return await x.sync.getHistory(O,w)}catch(v){return console.error("Failed to load history:",v instanceof Error?v.message:"Unknown error"),null}},[x]),M=a.useCallback(async O=>{try{return await x.sync.cancelSession(O),!0}catch(w){return console.error("Failed to cancel session:",w instanceof Error?w.message:"Unknown error"),!1}},[x]);return h?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-600)]"})}):X.length===0?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.Lock,{className:"w-5 h-5 text-[var(--error-text)]"}),e.jsx("span",{className:"text-sm text-[var(--error-text)]",children:s("admin:tenants.entra.noPermission")})]}):e.jsxs("div",{className:"space-y-6",children:[m&&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)]"}),e.jsx("span",{className:"text-sm text-[var(--error-text)]",children:m}),e.jsx("button",{onClick:()=>o(null),className:"ml-auto text-[var(--error-text)] hover:opacity-70",children:"×"})]}),R&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-3 p-4 rounded-[var(--radius-card)] bg-[var(--color-accent-50)] dark:bg-[var(--color-accent-900)]/20 border border-[var(--color-accent-200)] dark:border-[var(--color-accent-800)]",children:[e.jsxs("div",{className:"flex items-center gap-3 flex-1",children:[e.jsx(r.RefreshCw,{className:"w-5 h-5 text-[var(--color-accent-600)] animate-spin flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-medium text-[var(--color-accent-700)] dark:text-[var(--color-accent-400)]",children:s("admin:tenants.entra.sync.syncInProgress")}),e.jsx("p",{className:"text-sm text-[var(--color-accent-600)] dark:text-[var(--color-accent-500)] truncate",children:s("admin:tenants.entra.sync.syncInProgressDescription")})]})]}),e.jsx("div",{className:"flex items-center gap-2 self-end sm:self-auto",children:e.jsxs("span",{className:"text-lg font-mono font-bold text-[var(--color-accent-700)] dark:text-[var(--color-accent-400)] bg-[var(--color-accent-100)] dark:bg-[var(--color-accent-900)]/50 px-3 py-1 rounded",children:["⏱ ",k]})})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-stretch sm:items-center gap-1 p-1 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsx("div",{className:"flex flex-wrap items-center gap-1 flex-1",children:X.map(O=>{const w=O.icon,v=c===O.id,N=O.id==="sync"&&B.length>0;return e.jsxs("button",{onClick:()=>b(O.id),className:`flex items-center gap-2 px-3 sm:px-4 py-2 text-sm font-medium rounded-[var(--radius-button)] transition-all flex-1 sm:flex-none justify-center sm:justify-start ${v?"bg-[var(--bg-card)] text-[var(--text-primary)] shadow-sm":"text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-tertiary)]"}`,children:[e.jsx(w,{className:"w-4 h-4"}),e.jsx("span",{className:"hidden sm:inline",children:O.label}),N&&e.jsx("span",{className:"ml-1 px-1.5 py-0.5 text-xs font-bold rounded-full bg-[var(--warning-bg)] text-[var(--warning-text)]",children:B.length})]},O.id)})}),e.jsx("div",{className:"flex items-center justify-center sm:justify-end gap-2 px-2 py-1 border-t sm:border-t-0 sm:border-l border-[var(--border-subtle)] mt-1 sm:mt-0 pt-2 sm:pt-0",children:d?e.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-[var(--success-text)]",title:s("admin:tenants.entra.realTimeConnected"),children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-[var(--success-text)] animate-pulse"}),e.jsx("span",{className:"hidden sm:inline",children:s("common:live")})]}):e.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-[var(--text-tertiary)]",title:s("admin:tenants.entra.realTimeDisconnected"),children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-[var(--text-tertiary)]"}),e.jsx("span",{className:"hidden sm:inline",children:s("common:offline")})]})})]}),c==="config"&&e.jsx(Js,{config:p,loading:h,canEdit:ee,onRefresh:J,onConfigUpdated:J,t:s,entraApi:x}),c==="sync"&&e.jsx(ra,{config:p,conflicts:B,syncStatus:T,loading:h,canSync:ae,onRefresh:J,onResolveConflict:D,onSyncAll:A,onLoadHistory:j,onCancelSession:M,activeSyncSession:R,t:s}),c==="users"&&e.jsx(na,{config:p,t:s}),c==="groups"&&e.jsx(ia,{config:p,t:s}),f&&e.jsx(Je.ResolutionModal,{conflict:f,onClose:()=>D(null),onResolve:F,resolving:y})]})}function oa(t,n,s){const l={};if(!t.glpiBaseUrl.trim())l.glpiBaseUrl=s("admin:tenants.ticketing.validation.baseUrlRequired");else try{new URL(t.glpiBaseUrl)}catch{l.glpiBaseUrl=s("admin:tenants.ticketing.validation.baseUrlInvalid")}return t.glpiClientId.trim()||(l.glpiClientId=s("admin:tenants.ticketing.validation.clientIdRequired")),!t.glpiClientSecret&&!n?.hasGlpiClientSecret&&(l.glpiClientSecret=s("admin:tenants.ticketing.validation.clientSecretRequired")),t.glpiUsername.trim()||(l.glpiUsername=s("admin:tenants.ticketing.validation.usernameRequired")),!t.glpiPassword&&!n?.hasGlpiPassword&&(l.glpiPassword=s("admin:tenants.ticketing.validation.passwordRequired")),l}function ca(t,n,s,l){const d={provider:n,syncEnabled:s,syncIntervalMinutes:l};return n==="GLPI"&&(d.glpiBaseUrl=t.glpiBaseUrl,d.glpiClientId=t.glpiClientId,t.glpiClientSecret&&(d.glpiClientSecret=t.glpiClientSecret),d.glpiUsername=t.glpiUsername,t.glpiPassword&&(d.glpiPassword=t.glpiPassword),t.glpiEntityId&&(d.glpiEntityId=Number(t.glpiEntityId)),t.glpiRequestTypeId&&(d.glpiRequestTypeId=Number(t.glpiRequestTypeId))),d}function Ze({icon:t,title:n,description:s,action:l,children:d}){return e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-card)] shadow-sm overflow-hidden",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:n}),s&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:s})]})]}),l]})}),e.jsx("div",{className:"p-6",children:d})]})}function da({checked:t,onChange:n,label:s,description:l,disabled:d}){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:s}),l&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5",children:l})]}),e.jsx("button",{type:"button",role:"switch","aria-checked":t,onClick:n,disabled:d,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)] disabled:opacity-50 disabled:cursor-not-allowed ${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-white shadow-md transition-transform ${t?"translate-x-6":"translate-x-1"}`})})]})}function Ae({text:t}){return e.jsx(E.Tooltip,{content:e.jsx("span",{className:"whitespace-pre-line text-xs leading-relaxed",children:t}),position:"right",variant:"info",delay:100,className:"!max-w-sm",children:e.jsx(r.Info,{className:"w-4 h-4 text-[var(--text-tertiary)] hover:text-[var(--info-text)] cursor-help transition-colors"})})}function ma({tenantId:t,tenantName:n}){const{t:s}=de.useTranslation(["admin","common"]),[l,d]=a.useState(!0),[i,c]=a.useState(!1),[b,h]=a.useState(!1),[u,m]=a.useState(!1),[o,x]=a.useState(null),[p,S]=a.useState(null),[B,P]=a.useState(!1),[T,g]=a.useState(null),[f,D]=a.useState(null),[y,H]=a.useState(null),[R,L]=a.useState({}),[k,Z]=a.useState("SmartStack"),[q,U]=a.useState(""),[z,ee]=a.useState(""),[ae,$]=a.useState(""),[X,J]=a.useState(""),[F,A]=a.useState(""),[j,M]=a.useState(""),[O,w]=a.useState(""),[v,N]=a.useState(!1),[ie,le]=a.useState(60),te=k==="GLPI",Q=W=>R[W]?"border-[var(--error-border)] ring-1 ring-[var(--error-border)]":"border-[var(--border-color)]",pe=a.useCallback(async()=>{d(!0),x(null);try{const W=await De.ticketingApi.getConfiguration(t);g(W),Z(W.provider||"SmartStack"),U(W.glpiBaseUrl||""),ee(W.glpiClientId||""),$(""),J(W.glpiUsername||""),A(""),M(W.glpiEntityId!=null?String(W.glpiEntityId):""),w(W.glpiRequestTypeId!=null?String(W.glpiRequestTypeId):""),N(W.syncEnabled),le(W.syncIntervalMinutes)}catch{g(null)}finally{d(!1)}},[t]);a.useEffect(()=>{pe()},[pe]);const me=()=>{if(!te)return L({}),!0;const W=oa({glpiBaseUrl:q,glpiClientId:z,glpiClientSecret:ae,glpiUsername:X,glpiPassword:F},T,s);return L(W),Object.keys(W).length===0},K=async()=>{if(!me())return;c(!0),x(null),S(null);const W=ca({glpiBaseUrl:q,glpiClientId:z,glpiClientSecret:ae,glpiUsername:X,glpiPassword:F,glpiEntityId:j,glpiRequestTypeId:O},k,v,ie);try{const G=await De.ticketingApi.saveConfiguration(t,W);g(G),$(""),A(""),S(s("admin:tenants.ticketing.saveSuccess"))}catch{x(s("admin:tenants.ticketing.saveFailed"))}finally{c(!1)}},ce=async()=>{h(!0),H(null),x(null),S(null);try{const W=await De.ticketingApi.testConnection(t,{glpiBaseUrl:q,glpiClientId:z,glpiClientSecret:ae||void 0,glpiUsername:X,glpiPassword:F||void 0});H(W),W.success?S(s("admin:tenants.ticketing.testSuccess")):x(W.errorMessage||s("admin:tenants.ticketing.testFailed"))}catch{x(s("admin:tenants.ticketing.testFailed"))}finally{h(!1)}},ge=async()=>{m(!0),D(null),x(null),S(null);try{const W=await De.ticketingApi.triggerSync(t);D(W),W.success?S(s("admin:tenants.ticketing.syncSuccess",{count:W.ticketsUpdated})):x(W.errorMessage||s("admin:tenants.ticketing.syncFailed")),await pe()}catch{x(s("admin:tenants.ticketing.syncFailed"))}finally{m(!1)}};return l?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-600)]"})}):e.jsxs("div",{className:"space-y-6",children:[o&&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)]"}),e.jsx("span",{className:"text-sm text-[var(--error-text)]",children:o}),e.jsx("button",{onClick:()=>x(null),className:"ml-auto text-[var(--error-text)] hover:opacity-70",children:"×"})]}),p&&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)]"}),e.jsx("span",{className:"text-sm text-[var(--success-text)]",children:p}),e.jsx("button",{onClick:()=>S(null),className:"ml-auto text-[var(--success-text)] hover:opacity-70",children:"×"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsx(Ze,{icon:r.Settings,title:s("admin:tenants.ticketing.provider.title"),description:s("admin:tenants.ticketing.provider.description",{tenantName:n}),children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-1.5",children:s("admin:tenants.ticketing.provider.label")}),e.jsxs("select",{value:k,onChange:W=>{const G=W.target.value;Z(G),G!=="GLPI"&&N(!1)},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)]",children:[e.jsx("option",{value:"SmartStack",className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:"SmartStack"}),e.jsx("option",{value:"GLPI",className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:"GLPI"})]}),e.jsx("p",{className:"mt-1.5 text-xs text-[var(--text-tertiary)] whitespace-pre-line",children:s(te?"admin:tenants.ticketing.provider.glpiHint":"admin:tenants.ticketing.provider.smartstackHint")})]}),te&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-start gap-3 p-3 rounded-[var(--radius-card)] bg-[var(--info-bg)] border border-[var(--info-border)]",children:[e.jsx(r.ExternalLink,{className:"w-4 h-4 text-[var(--info-text)] mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"text-sm text-[var(--info-text)]",children:[e.jsxs("span",{children:[s("admin:tenants.ticketing.glpi.docHint")," "]}),e.jsx("a",{href:"https://glpi-project.org/documentation/",target:"_blank",rel:"noopener noreferrer",className:"font-medium underline hover:opacity-80",children:s("admin:tenants.ticketing.glpi.docLink")})]})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.baseUrl"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.baseUrlHelp")})]}),e.jsx("input",{type:"url",value:q,onChange:W=>{U(W.target.value),L(G=>{const{glpiBaseUrl:_,...se}=G;return se})},placeholder:"https://glpi.example.com",className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border ${Q("glpiBaseUrl")} bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow`}),R.glpiBaseUrl&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:R.glpiBaseUrl})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.clientId"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.clientIdHelp")})]}),e.jsx("input",{type:"text",value:z,onChange:W=>{ee(W.target.value),L(G=>{const{glpiClientId:_,...se}=G;return se})},placeholder:s("admin:tenants.ticketing.glpi.clientIdPlaceholder"),className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border ${Q("glpiClientId")} bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] font-mono text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow`}),R.glpiClientId&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:R.glpiClientId})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.clientSecret"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.clientSecretHelp")}),T?.hasGlpiClientSecret&&e.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-[var(--success-text)]",children:[e.jsx(r.CheckCircle,{className:"w-3 h-3"}),s("common:configured")]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:B?"text":"password",autoComplete:"new-password",value:ae,onChange:W=>{$(W.target.value),L(G=>{const{glpiClientSecret:_,...se}=G;return se})},placeholder:T?.hasGlpiClientSecret?"••••••••••••••••":s("admin:tenants.ticketing.glpi.clientSecretPlaceholder"),className:`w-full px-3 py-2.5 pr-10 rounded-[var(--radius-input)] border ${Q("glpiClientSecret")} bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] font-mono text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow`}),e.jsx("button",{type:"button",onClick:()=>P(!B),className:"absolute right-3 top-1/2 -translate-y-1/2 p-1 text-[var(--text-tertiary)] hover:text-[var(--text-primary)]",children:B?e.jsx(r.EyeOff,{className:"w-4 h-4"}):e.jsx(r.Eye,{className:"w-4 h-4"})})]}),R.glpiClientSecret&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:R.glpiClientSecret})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.username"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.usernameHelp")})]}),e.jsx("input",{type:"text",value:X,onChange:W=>{J(W.target.value),L(G=>{const{glpiUsername:_,...se}=G;return se})},placeholder:s("admin:tenants.ticketing.glpi.usernamePlaceholder"),className:`w-full px-3 py-2.5 rounded-[var(--radius-input)] border ${Q("glpiUsername")} bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow`}),R.glpiUsername&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:R.glpiUsername})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.password"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.passwordHelp")}),T?.hasGlpiPassword&&e.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-[var(--success-text)]",children:[e.jsx(r.CheckCircle,{className:"w-3 h-3"}),s("common:configured")]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:B?"text":"password",autoComplete:"new-password",value:F,onChange:W=>{A(W.target.value),L(G=>{const{glpiPassword:_,...se}=G;return se})},placeholder:T?.hasGlpiPassword?"••••••••••••••••":s("admin:tenants.ticketing.glpi.passwordPlaceholder"),className:`w-full px-3 py-2.5 pr-10 rounded-[var(--radius-input)] border ${Q("glpiPassword")} bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] font-mono text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow`}),e.jsx("button",{type:"button",onClick:()=>P(!B),className:"absolute right-3 top-1/2 -translate-y-1/2 p-1 text-[var(--text-tertiary)] hover:text-[var(--text-primary)]",children:B?e.jsx(r.EyeOff,{className:"w-4 h-4"}):e.jsx(r.Eye,{className:"w-4 h-4"})})]}),R.glpiPassword&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:R.glpiPassword})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.entityId"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.entityIdHelp")})]}),e.jsx("input",{type:"number",min:"0",value:j,onChange:W=>M(W.target.value),placeholder:s("admin:tenants.ticketing.glpi.entityIdPlaceholder"),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)] placeholder-[var(--text-muted)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)] mb-1.5",children:[s("admin:tenants.ticketing.glpi.requestTypeId"),e.jsx(Ae,{text:s("admin:tenants.ticketing.glpi.requestTypeIdHelp")})]}),e.jsx("input",{type:"number",min:"0",value:O,onChange:W=>w(W.target.value),placeholder:s("admin:tenants.ticketing.glpi.requestTypeIdPlaceholder"),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)] placeholder-[var(--text-muted)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] transition-shadow"})]}),e.jsx("div",{className:"flex flex-col sm:flex-row items-stretch sm:items-center gap-2 sm:gap-3 pt-2",children:e.jsxs("button",{onClick:ce,disabled:b||!q||!z||!ae&&!T?.hasGlpiClientSecret||!X||!F&&!T?.hasGlpiPassword,className:"inline-flex items-center justify-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:[b?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.TestTube,{className:"w-4 h-4"}),s("admin:tenants.ticketing.testConnection")]})}),y&&e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${y.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 gap-2",children:[y.success?e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)]"}):e.jsx(r.AlertTriangle,{className:"w-5 h-5 text-[var(--error-text)]"}),e.jsx("span",{className:`font-medium ${y.success?"text-[var(--success-text)]":"text-[var(--error-text)]"}`,children:y.success?s("admin:tenants.ticketing.connectionSuccessful"):s("admin:tenants.ticketing.connectionFailed")})]}),!y.success&&y.errorMessage&&e.jsx("p",{className:"mt-2 text-sm text-[var(--error-text)]",children:y.errorMessage})]})]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(Ze,{icon:r.Clock,title:s("admin:tenants.ticketing.sync.title"),description:s("admin:tenants.ticketing.sync.description"),children:e.jsxs("div",{className:"divide-y divide-[var(--border-subtle)]",children:[e.jsx(da,{checked:v,onChange:()=>N(!v),label:s("admin:tenants.ticketing.sync.enabledLabel"),description:s("admin:tenants.ticketing.sync.enabledDescription"),disabled:!te}),e.jsxs("div",{className:"py-4",children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-primary)] mb-2",children:s("admin:tenants.ticketing.sync.intervalLabel")}),e.jsxs("select",{value:ie,onChange:W=>le(Number(W.target.value)),disabled:!te||!v,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)] disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsxs("option",{value:15,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["15 ",s("common:minutes")]}),e.jsxs("option",{value:30,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["30 ",s("common:minutes")]}),e.jsxs("option",{value:60,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["1 ",s("common:hour")]}),e.jsxs("option",{value:120,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["2 ",s("common:hours")]}),e.jsxs("option",{value:360,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["6 ",s("common:hours")]}),e.jsxs("option",{value:720,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["12 ",s("common:hours")]}),e.jsxs("option",{value:1440,className:"bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:["24 ",s("common:hours")]})]})]})]})}),T?.isConfigured&&te&&e.jsx(Ze,{icon:r.Zap,title:s("admin:tenants.ticketing.syncStatus.title"),description:s("admin:tenants.ticketing.syncStatus.description"),action:e.jsxs("button",{onClick:ge,disabled:u,className:"inline-flex items-center gap-2 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)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[u?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.RefreshCw,{className:"w-4 h-4"}),s("admin:tenants.ticketing.syncStatus.syncNow")]}),children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-secondary)] border border-[var(--border-color)]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(r.Clock,{className:"w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:s("admin:tenants.ticketing.syncStatus.lastSync")})]}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:T.lastSyncAt?new Date(T.lastSyncAt).toLocaleString():s("admin:tenants.ticketing.syncStatus.never")})]}),e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${T.lastSyncError?"bg-[var(--error-bg)] border-[var(--error-border)]":"bg-[var(--success-bg)] border-[var(--success-border)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[T.lastSyncError?e.jsx(r.AlertTriangle,{className:"w-4 h-4 text-[var(--error-text)]"}):e.jsx(r.CheckCircle,{className:"w-4 h-4 text-[var(--success-text)]"}),e.jsx("span",{className:`text-sm font-medium ${T.lastSyncError?"text-[var(--error-text)]":"text-[var(--success-text)]"}`,children:s("admin:tenants.ticketing.syncStatus.status")})]}),e.jsx("p",{className:`text-sm ${T.lastSyncError?"text-[var(--error-text)]":"text-[var(--success-text)]"}`,children:T.lastSyncError||s("admin:tenants.ticketing.syncStatus.healthy")})]})]}),f&&e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${f.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 gap-2 mb-3",children:[f.success?e.jsx(r.CheckCircle,{className:"w-5 h-5 text-[var(--success-text)]"}):e.jsx(r.AlertTriangle,{className:"w-5 h-5 text-[var(--error-text)]"}),e.jsx("span",{className:`font-medium ${f.success?"text-[var(--success-text)]":"text-[var(--error-text)]"}`,children:f.success?s("admin:tenants.ticketing.syncStatus.syncSuccess"):s("admin:tenants.ticketing.syncStatus.syncFailed")})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)]",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:s("admin:tenants.ticketing.syncStatus.ticketsUpdated")}),e.jsx("p",{className:"font-semibold text-[var(--success-text)]",children:f.ticketsUpdated})]}),e.jsxs("div",{className:"p-2 rounded bg-[var(--bg-primary)] border border-[var(--border-subtle)]",children:[e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block",children:s("admin:tenants.ticketing.syncStatus.ticketsFailed")}),e.jsx("p",{className:`font-semibold ${f.ticketsFailed>0?"text-[var(--error-text)]":"text-[var(--text-primary)]"}`,children:f.ticketsFailed})]})]}),f.errorMessage&&e.jsx("p",{className:"mt-3 text-sm text-[var(--error-text)]",children:f.errorMessage})]})]})}),e.jsx("div",{className:"flex flex-col-reverse sm:flex-row items-stretch sm:items-center gap-2 sm:gap-3",children:e.jsxs("button",{onClick:K,disabled:i,className:"inline-flex items-center justify-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:[i?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),s("common:save")]})})]})]})]})}const xt=["entra","support"];function xa(){const{t}=de.useTranslation(["admin","common"]),{id:n}=xe.useParams(),s=xe.useNavigate(),{activeTab:l,setActiveTab:d}=tt.useTabNavigation("entra",xt),i=bt(n);if(a.useEffect(()=>{if(!n){s("/administration/tenants");return}i.loadTenant()},[n]),i.loading)return e.jsx("div",{className:"p-6 flex items-center justify-center min-h-screen",children:e.jsxs("div",{className:"text-center",children:[e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin mx-auto mb-2 text-[var(--text-secondary)]"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:t("common:loading")})]})});if(!i.tenant)return e.jsxs("div",{className:"p-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants"}]}),e.jsx("div",{className:"mt-4 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:i.error||t("admin:tenants.notFound")})]})})]});const c=i.tenant;return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants"},{label:c.name,href:`/administration/tenants/${n}`},{label:t("admin:tenants.settings.title")}]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>s(`/administration/tenants/${n}`),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)]",children:e.jsx(r.Settings,{className:"w-5 h-5 text-[var(--color-accent-500)]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold text-[var(--text-primary)]",children:t("admin:tenants.settings.title")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:c.name})]})]})]}),i.error&&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:i.error})]})}),e.jsx("div",{className:"border-b border-[var(--border-color)]",children:e.jsx("div",{className:"flex gap-1 -mb-px",children:xt.map(b=>e.jsx("button",{onClick:()=>d(b),className:`px-4 py-2 border-b-2 transition-colors ${l===b?"border-[var(--primary-color)] text-[var(--primary-color)]":"border-transparent text-[var(--text-secondary)] hover:text-[var(--text-primary)]"}`,children:t(`admin:tenants.settings.tabs.${b}`)},b))})}),e.jsxs("div",{children:[l==="entra"&&n&&e.jsx(la,{tenantId:n,tenantName:c.name,tenantSlug:c.slug}),l==="support"&&n&&e.jsx(ma,{tenantId:n,tenantName:c.name})]})]})}function ua(){const{t}=de.useTranslation(["admin","common"]),[n,s]=a.useState([]),[l,d]=a.useState(!0),[i,c]=a.useState(null),[b,h]=a.useState(null),[u,m]=a.useState({}),[o,x]=a.useState(null),p=a.useCallback(async()=>{try{d(!0),c(null);const T=await we.tenantTypeSettingsApi.getAll();s(T);const g={};for(const f of T)g[f.type]={icon:f.icon,iconType:f.iconType,color:f.color,displayName:f.displayName,description:f.description??""};m(g)}catch{c(t("admin:tenantTypeSettings.loadError"))}finally{d(!1)}},[t]);a.useEffect(()=>{p()},[p]);const S=async T=>{const g=u[T];if(g)try{x(T),c(null);const f={icon:g.icon,iconType:g.iconType,color:g.color,displayName:g.displayName,description:g.description||null};await we.tenantTypeSettingsApi.update(T,f),h(t("admin:tenantTypeSettings.saveSuccess")),setTimeout(()=>h(null),3e3),await p()}catch{c(t("admin:tenantTypeSettings.saveError"))}finally{x(null)}},B=(T,g,f)=>{m(D=>({...D,[T]:{...D[T],[g]:f}}))},P=T=>{const g=n.find(D=>D.type===T),f=u[T];return!g||!f?!1:g.icon!==f.icon||g.color!==f.color||g.displayName!==f.displayName||(g.description??"")!==f.description};return l?e.jsx("div",{className:"p-6 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:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants"},{label:t("admin:tenantTypeSettings.title")}]}),e.jsx(E.PageHeader,{title:t("admin:tenantTypeSettings.title"),subtitle:t("admin:tenantTypeSettings.subtitle"),icon:e.jsx(r.Palette,{className:"w-6 h-6"})}),i&&e.jsxs("div",{className:"p-4 rounded-lg bg-red-500/10 border border-red-500/20 flex items-center gap-3",children:[e.jsx(r.AlertTriangle,{className:"w-5 h-5 text-red-500 flex-shrink-0"}),e.jsx("p",{className:"text-red-500",children:i})]}),b&&e.jsxs("div",{className:"p-4 rounded-lg bg-green-500/10 border border-green-500/20 flex items-center gap-3",children:[e.jsx(r.CheckCircle,{className:"w-5 h-5 text-green-500 flex-shrink-0"}),e.jsx("p",{className:"text-green-500",children:b})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:n.map(T=>{const g=u[T.type];if(!g)return null;const f=we.getLucideIcon(g.icon),D=we.getColorClasses(g.color);return e.jsxs("div",{className:"p-6 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)] space-y-5",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:`w-14 h-14 rounded-xl flex items-center justify-center ${D.bg}`,children:e.jsx(f,{className:`w-7 h-7 ${D.text}`})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:g.displayName}),e.jsx("p",{className:"text-sm text-[var(--text-tertiary)]",children:T.type})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:t("admin:tenantTypeSettings.displayName")}),e.jsx("input",{type:"text",value:g.displayName,onChange:y=>B(T.type,"displayName",y.target.value),className:"w-full px-3 py-2 rounded-lg 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)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:t("admin:tenantTypeSettings.icon")}),e.jsxs("div",{className:"relative",children:[e.jsx("select",{value:g.icon,onChange:y=>B(T.type,"icon",y.target.value),className:"w-full px-3 py-2 pr-8 rounded-lg border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] appearance-none focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",children:we.getAvailableIconNames().map(y=>e.jsx("option",{value:y,children:y},y))}),e.jsx(r.ChevronDown,{className:"absolute right-2 top-1/2 transform -translate-y-1/2 w-4 h-4 text-[var(--text-tertiary)] pointer-events-none"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:t("admin:tenantTypeSettings.color")}),e.jsx("div",{className:"flex flex-wrap gap-2",children:we.getAvailableColors().map(y=>{const H=we.getColorClasses(y);return e.jsx("button",{onClick:()=>B(T.type,"color",y),className:`w-8 h-8 rounded-full flex items-center justify-center transition-all ${H.bg} ${g.color===y?"ring-2 ring-offset-2 ring-[var(--color-accent-500)]":""}`,title:y,children:e.jsx("div",{className:`w-4 h-4 rounded-full ${H.text.replace("text-","bg-")}`})},y)})})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:t("admin:tenantTypeSettings.description")}),e.jsx("textarea",{value:g.description,onChange:y=>B(T.type,"description",y.target.value),rows:2,className:"w-full px-3 py-2 rounded-lg 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)] resize-none"})]}),e.jsxs("button",{onClick:()=>S(T.type),disabled:!P(T.type)||o===T.type,className:"w-full flex items-center justify-center gap-2 px-4 py-2 rounded-lg bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[o===T.type?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),t("common:save")]})]},T.type)})})]})}const ut={Pending:{bgColor:"bg-[var(--warning-bg)]",textColor:"text-[var(--warning-text)]"},Verified:{bgColor:"bg-[var(--success-bg)]",textColor:"text-[var(--success-text)]"},Rejected:{bgColor:"bg-[var(--error-bg)]",textColor:"text-[var(--error-text)]"}};function pa(){const{t}=de.useTranslation(["admin","common"]),n=xe.useNavigate(),[s,l]=a.useState([]),[d,i]=a.useState(!0),[c,b]=a.useState(null),[h,u]=a.useState(1),[m]=a.useState(10),[o,x]=a.useState(1),[p,S]=a.useState(""),[B,P]=a.useState("All"),T=a.useCallback(async y=>{i(!0),b(null);try{const H=await E.adminApi.organisations.getAll({page:h,pageSize:m,search:p||void 0,verificationStatus:B!=="All"?B:void 0});y?.aborted||(l(H.items),x(Math.ceil(H.totalCount/m)))}catch(H){y?.aborted||(console.error("Failed to load organisations:",H),b(t("common:error","An error occurred")))}finally{y?.aborted||i(!1)}},[h,m,p,B,t]);a.useEffect(()=>{const y=new AbortController;return T(y.signal),()=>y.abort()},[T]);const g=y=>{S(y.target.value),u(1)},f=["All","Pending","Verified","Rejected"],D=[{key:"name",label:t("admin:organisations.columns.name","Name"),sortable:!0,render:y=>e.jsxs("div",{children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)]",children:y.name}),y.legalName&&e.jsx("div",{className:"text-xs text-[var(--text-secondary)]",children:y.legalName})]})},{key:"countryCode",label:t("admin:organisations.columns.country","Country"),sortable:!0},{key:"businessIdentifier",label:t("admin:organisations.columns.identifier","Business ID"),sortable:!0,render:y=>e.jsx("span",{className:"font-mono text-[var(--text-primary)]",children:y.businessIdentifier})},{key:"verificationStatus",label:t("admin:organisations.columns.status","Status"),sortable:!0,render:y=>e.jsx("span",{className:`inline-block px-3 py-1 rounded-[var(--radius-badge)] text-xs font-medium ${ut[y.verificationStatus].bgColor} ${ut[y.verificationStatus].textColor}`,children:t(`admin:organisations.status.${y.verificationStatus.toLowerCase()}`,y.verificationStatus)})},{key:"createdAt",label:t("admin:organisations.columns.created","Created"),sortable:!0,render:y=>e.jsx("span",{className:"text-[var(--text-secondary)]",children:new Date(y.createdAt).toLocaleDateString()})},{key:"actions",label:t("admin:organisations.columns.actions","Actions"),align:"right",render:y=>e.jsxs("button",{onClick:H=>{H.stopPropagation(),n(`/administration/tenants/create?type=b2b&organisationId=${y.id}`)},className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-[var(--radius-button)] bg-[var(--info-bg)] text-[var(--info-text)] border border-[var(--info-border)] hover:opacity-80 transition-colors",title:t("admin:organisations.createTenant","Create B2B tenant for this organisation"),children:[e.jsx(r.Building,{className:"w-3.5 h-3.5"}),t("admin:organisations.createTenantButton","Create tenant")]})}];return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants/list"},{label:t("admin:organisations.title","Organisations")}]}),e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("admin:organisations.title","Organisations")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:organisations.description","Manage organisations and verify their details")})]}),e.jsxs("button",{onClick:()=>n("/administration/tenants/organisations/create"),className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-500)] text-white hover:bg-[var(--color-accent-600)] transition-colors",children:[e.jsx(r.Plus,{className:"w-5 h-5"}),t("common:create","Create")]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsx("div",{className:"relative flex-1",children:e.jsx("input",{type:"text",placeholder:t("common:search","Search"),value:p,onChange:g,className:"input w-full pl-10"})}),e.jsx("div",{className:"flex flex-wrap gap-2",children:f.map(y=>e.jsx("button",{onClick:()=>{P(y),u(1)},className:`px-3 py-1 rounded-[var(--radius-badge)] text-sm transition-colors ${B===y?"bg-[var(--color-accent-500)] text-white":"bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)]"}`,children:y==="All"?t("common:all","All"):t(`admin:organisations.status.${y.toLowerCase()}`,y)},y))})]}),c&&e.jsxs("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:c})]}),e.jsx("button",{onClick:()=>T(),className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:t("common:retry","Retry")})]}),e.jsx(E.DataTable,{data:s,columns:D,loading:d,getRowKey:y=>y.id,onRowClick:y=>n(`/administration/tenants/organisations/${y.id}`),emptyMessage:t("admin:organisations.empty","No organisations found")}),!d&&s.length>0&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"text-sm text-[var(--text-secondary)]",children:[t("common:page","Page")," ",h," ",t("common:of","of")," ",o]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>u(Math.max(1,h-1)),disabled:h===1,className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:t("common:previous","Previous")}),e.jsx("button",{onClick:()=>u(Math.min(o,h+1)),disabled:h>=o,className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:t("common:next","Next")})]})]})]})]})}const va={Pending:{bgColor:"bg-[var(--warning-bg)]",textColor:"text-[var(--warning-text)]"},Verified:{bgColor:"bg-[var(--success-bg)]",textColor:"text-[var(--success-text)]"},Rejected:{bgColor:"bg-[var(--error-bg)]",textColor:"text-[var(--error-text)]"}},pt=["info","contact","address"];function ga(){const{t}=de.useTranslation(["admin","common"]),{id:n}=xe.useParams(),s=xe.useNavigate(),[l,d]=xe.useSearchParams(),[i,c]=a.useState(null),[b,h]=a.useState(!0),[u,m]=a.useState(null),[o,x]=a.useState(!1),p=()=>{const k=l.get("tab");return k&&pt.includes(k)?k:"info"},[S,B]=a.useState(p),[P,T]=a.useState({show:!1,notes:""}),[g,f]=a.useState({show:!1,reason:""});a.useEffect(()=>{S==="info"?l.get("tab")&&(l.delete("tab"),d(l,{replace:!0})):l.get("tab")!==S&&d({tab:S},{replace:!0})},[S,l,d]);const D=a.useCallback(async()=>{if(!n){s("/administration/tenants/organisations");return}h(!0),m(null);try{const k=await E.adminApi.organisations.getById(n);c(k)}catch(k){console.error("Failed to load organisation:",k),m(t("admin:organisations.loadError","Failed to load organisation"))}finally{h(!1)}},[n,s,t]);a.useEffect(()=>{D()},[D]);const y=async()=>{if(i){x(!0);try{const k=await E.adminApi.organisations.verify(i.id,P.notes||void 0);c(k),T({show:!1,notes:""})}catch(k){console.error("Failed to verify organisation:",k),m(t("admin:organisations.verifyError","Failed to verify organisation"))}finally{x(!1)}}},H=async()=>{if(i){x(!0);try{const k=await E.adminApi.organisations.reject(i.id,g.reason);c(k),f({show:!1,reason:""})}catch(k){console.error("Failed to reject organisation:",k),m(t("admin:organisations.rejectError","Failed to reject organisation"))}finally{x(!1)}}},R=i&&(i.phone||i.email||i.website);if(b)return e.jsx("div",{className:"p-6 flex items-center justify-center min-h-[400px]",children:e.jsxs("div",{className:"text-center",children:[e.jsx(r.Loader2,{className:"w-8 h-8 animate-spin mx-auto mb-2 text-[var(--text-secondary)]"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:t("common:loading","Loading")})]})});if(!i)return e.jsxs("div",{className:"p-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants/list"},{label:t("admin:organisations.title","Organisations"),href:"/administration/tenants/organisations"}]}),e.jsxs("div",{className:"mt-4 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:u||t("admin:organisations.notFound","Organisation not found")})]}),e.jsx("button",{onClick:D,className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:t("common:retry","Retry")})]})]});const L=va[i.verificationStatus];return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants/list"},{label:t("admin:organisations.title","Organisations"),href:"/administration/tenants/organisations"},{label:i.name}]}),e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>s("/administration/tenants/organisations"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:i.name}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:i.businessIdentifier})]})]}),e.jsx("span",{className:`px-4 py-2 rounded-[var(--radius-badge)] text-sm font-medium ${L.bgColor} ${L.textColor}`,children:t(`admin:organisations.status.${i.verificationStatus.toLowerCase()}`,i.verificationStatus)})]}),u&&e.jsxs("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:u})]}),e.jsx("button",{onClick:D,className:"mt-2 text-sm text-[var(--error-text)] hover:opacity-80 underline",children:t("common:retry","Retry")})]}),e.jsx("div",{className:"border-b border-[var(--border-color)]",children:e.jsx("div",{className:"flex gap-1 -mb-px",children:pt.map(k=>e.jsx("button",{onClick:()=>B(k),className:`px-4 py-2 border-b-2 transition-colors ${S===k?"border-[var(--primary-color)] text-[var(--primary-color)]":"border-transparent text-[var(--text-secondary)] hover:text-[var(--text-primary)]"}`,children:t(`admin:organisations.tabs.${k}`,k)},k))})}),S==="info"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.name","Organisation Name")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)]",children:i.name})]}),i.legalName&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.legalName","Legal Name")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)]",children:i.legalName})]}),e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.country","Country")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)]",children:i.countryCode})]}),e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:i.businessIdentifierType}),e.jsx("p",{className:"mt-1 font-mono text-[var(--text-primary)]",children:i.businessIdentifier})]}),i.vatNumber&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.vatNumber","VAT Number")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)]",children:i.vatNumber})]})]}),i.verificationStatus!=="Verified"&&e.jsxs("div",{className:"flex gap-2 pt-4",children:[(i.verificationStatus==="Pending"||i.verificationStatus==="Rejected")&&e.jsxs("button",{onClick:()=>T({show:!0,notes:""}),disabled:o,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--success-bg)] text-[var(--success-text)] hover:opacity-90 disabled:opacity-50 transition-opacity",children:[e.jsx(r.Check,{className:"w-4 h-4"}),t("admin:organisations.verify","Verify")]}),i.verificationStatus==="Pending"&&e.jsxs("button",{onClick:()=>f({show:!0,reason:""}),disabled:o,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--error-bg)] text-[var(--error-text)] hover:opacity-90 disabled:opacity-50 transition-opacity",children:[e.jsx(r.X,{className:"w-4 h-4"}),t("admin:organisations.reject","Reject")]})]})]}),S==="contact"&&(R?e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[i.phone&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.phone","Phone")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)]",children:i.phone})]}),i.email&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.email","Email")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)]",children:i.email})]}),i.website&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.website","Website")}),e.jsx("p",{className:"mt-1 text-[var(--text-primary)] break-all",children:i.website})]})]}):e.jsx("div",{className:"py-12 text-center text-[var(--text-secondary)]",children:t("admin:organisations.noContact","No contact information available")})),S==="address"&&(i.address?e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] border border-[var(--border-color)]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-semibold text-[var(--text-secondary)] uppercase tracking-wide",children:t("admin:organisations.form.address","Address")}),e.jsx("p",{className:"text-[var(--text-primary)]",children:i.address.street}),i.address.street2&&e.jsx("p",{className:"text-[var(--text-primary)]",children:i.address.street2})]}),e.jsxs("div",{children:[e.jsxs("p",{className:"text-[var(--text-primary)]",children:[i.address.postalCode," ",i.address.city]}),i.address.state&&e.jsx("p",{className:"text-[var(--text-primary)]",children:i.address.state})]}),e.jsx("div",{children:e.jsxs("p",{className:"text-[var(--text-primary)]",children:[i.address.country," (",i.address.countryCode,")"]})})]})}):e.jsx("div",{className:"py-12 text-center text-[var(--text-secondary)]",children:t("admin:organisations.noAddress","No address information available")})),P.show&&e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center",children:e.jsxs("div",{className:"bg-[var(--bg-primary)] rounded-[var(--radius-card)] p-6 max-w-md w-full mx-4",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)] mb-4",children:t("admin:organisations.verifyTitle","Verify Organisation")}),e.jsx("div",{className:"mb-4 space-y-3",children:e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm text-[var(--text-secondary)] mb-1",children:t("admin:organisations.verifyNotes","Notes (optional)")}),e.jsx("textarea",{value:P.notes,onChange:k=>T({...P,notes:k.target.value}),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",rows:3,placeholder:t("admin:organisations.verifyNotesPlaceholder","Add notes about verification")})]})}),e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsx("button",{onClick:()=>T({show:!1,notes:""}),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)]",children:t("common:cancel","Cancel")}),e.jsx("button",{onClick:y,disabled:o,className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--success-bg)] text-[var(--success-text)] hover:opacity-90 disabled:opacity-50",children:o?t("common:saving","Saving"):t("admin:organisations.verify","Verify")})]})]})}),g.show&&e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center",children:e.jsxs("div",{className:"bg-[var(--bg-primary)] rounded-[var(--radius-card)] p-6 max-w-md w-full mx-4",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)] mb-4",children:t("admin:organisations.rejectTitle","Reject Organisation")}),e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{className:"block text-sm text-[var(--text-secondary)] mb-1",children:t("admin:organisations.rejectReason","Reason")}),e.jsx("textarea",{value:g.reason,onChange:k=>f({...g,reason:k.target.value}),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",rows:3,placeholder:t("admin:organisations.rejectReasonPlaceholder","Explain why this organisation is rejected")})]}),e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsx("button",{onClick:()=>f({show:!1,reason:""}),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)]",children:t("common:cancel","Cancel")}),e.jsx("button",{onClick:H,disabled:o,className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--error-bg)] text-[var(--error-text)] hover:opacity-90 disabled:opacity-50",children:o?t("common:saving","Saving"):t("admin:organisations.reject","Reject")})]})]})})]})}const vt={CH:{types:["UID_CHE"],defaultType:"UID_CHE",country:"Switzerland",vatSuffix:"MWST"},FR:{types:["SIREN","SIRET"],defaultType:"SIREN",country:"France",vatSuffix:"TVA"},DE:{types:["HRB","HRA"],defaultType:"HRB",country:"Germany",vatSuffix:"USt"},BE:{types:["BCE_KBO"],defaultType:"BCE_KBO",country:"Belgium",vatSuffix:"TVA"},NL:{types:["KVK"],defaultType:"KVK",country:"Netherlands",vatSuffix:"BTW"},ES:{types:["CIF"],defaultType:"CIF",country:"Spain",vatSuffix:"IVA"},IT:{types:["PartitaIVA"],defaultType:"PartitaIVA",country:"Italy",vatSuffix:"IVA"},GB:{types:["CRN"],defaultType:"CRN",country:"United Kingdom",vatSuffix:"VAT"}};function ba({data:t,onChange:n,onTenantNameSuggested:s,compact:l=!1,submitted:d=!1,className:i=""}){const{t:c,i18n:b}=de.useTranslation(["admin","common"]),[h,u]=a.useState(!1),[m,o]=a.useState(null),[x,p]=a.useState(!1),S=R=>{const L=R.toUpperCase().replace(/[^A-Z0-9]/g,"");let k=L.startsWith("CHE")?L.slice(3):L.replace(/[^0-9]/g,"");return k=k.slice(0,9),k.length===0?"CHE-":k.length<=3?`CHE-${k}`:k.length<=6?`CHE-${k.slice(0,3)}.${k.slice(3)}`:`CHE-${k.slice(0,3)}.${k.slice(3,6)}.${k.slice(6)}`},B=()=>{switch(b.language?.substring(0,2).toLowerCase()){case"de":return"MWST";case"fr":return"TVA";case"it":return"IVA";default:return"MWST"}},P=R=>{let L=R;t.countryCode==="CH"&&(L=S(R)),n({...t,businessIdentifier:L,isFromRegistry:!1}),o(null),p(!1)},T=R=>{const L=vt[R];L&&n({...t,countryCode:R,businessIdentifierType:L.defaultType,businessIdentifier:R==="CH"?"CHE-":"",isFromRegistry:!1,address:{...t.address,countryCode:R,country:L.country}}),o(null),p(!1)};a.useEffect(()=>{t.countryCode==="CH"&&(!t.businessIdentifier||t.businessIdentifier==="")&&n({...t,businessIdentifier:"CHE-"})},[t.countryCode]);const g=async()=>{const R=t.businessIdentifier.replace(/[^0-9]/g,"");if(!t.businessIdentifier||R.length<9||t.countryCode!=="CH"){o(c("admin:tenants.organisation.lookupIncomplete","Please enter a complete CHE number (9 digits)"));return}u(!0),o(null),p(!1);try{const L=await E.adminApi.organisations.lookup(t.countryCode,t.businessIdentifier),k={...t,name:L.name||t.name,legalName:L.legalName||t.legalName,vatNumber:L.vatNumber?`${L.vatNumber} ${B()}`:t.vatNumber,phone:L.phone||t.phone,email:L.email||t.email,website:L.website||t.website,isFromRegistry:!0,address:{street:L.street||t.address.street,street2:L.street2||t.address.street2,postalCode:L.postalCode||t.address.postalCode,city:L.city||t.address.city,state:L.state||t.address.state,country:L.country||t.address.country,countryCode:L.countryCode||t.address.countryCode}};n(k),s&&L.name&&s(L.name),p(!0),setTimeout(()=>p(!1),3e3)}catch(L){console.error("[Zefix Lookup] Failed:",L);const k=L instanceof Error?L.message:"";k.includes("404")||k.includes("not found")?o(c("admin:tenants.organisation.lookupFailed","Company not found in registry")):k.includes("credentials")||k.includes("401")?o(c("admin:tenants.organisation.lookupAuthError","Registry service not configured")):o(c("admin:tenants.organisation.lookupFailed","Company not found in registry"))}finally{u(!1)}},f=l?"w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] bg-[var(--bg-secondary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]":"w-full px-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)]",D="border-[var(--error-text)] ring-1 ring-[var(--error-text)]",y=R=>R?`${f} ${D}`:f,H="block text-sm font-medium text-[var(--text-secondary)] mb-1";return e.jsxs("div",{className:`space-y-4 ${i}`,children:[e.jsxs("div",{children:[e.jsxs("label",{className:H,children:[c("admin:tenants.organisation.form.name","Organisation Name")," *"]}),e.jsx("input",{type:"text",value:t.name,onChange:R=>n({...t,name:R.target.value}),className:y(d&&!t.name.trim()),placeholder:c("admin:tenants.organisation.form.namePlaceholder","Enter organisation name")}),d&&!t.name.trim()&&e.jsx("p",{className:"text-xs text-[var(--error-text)] mt-1",children:c("common:validation.required","This field is required")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:H,children:[c("admin:tenants.organisation.form.country","Country")," *"]}),e.jsx("select",{value:t.countryCode,onChange:R=>T(R.target.value),className:f,children:Object.entries(vt).map(([R,L])=>e.jsxs("option",{value:R,children:[L.country," (",R,")"]},R))})]}),e.jsxs("div",{children:[e.jsxs("label",{className:H,children:[t.businessIdentifierType," *"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{type:"text",value:t.businessIdentifier,onChange:R=>P(R.target.value),className:`flex-1 ${f} font-mono`,placeholder:t.countryCode==="CH"?"CHE-123.456.789":c("admin:tenants.organisation.form.identifierPlaceholder","Enter identifier")}),t.countryCode==="CH"&&e.jsx("button",{type:"button",onClick:g,disabled:h||!t.businessIdentifier||t.businessIdentifier.replace(/[^0-9]/g,"").length<9,className:"px-3 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-500)] text-white hover:bg-[var(--color-accent-600)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors flex items-center",title:c("admin:tenants.organisation.lookupTitle","Search in registry"),children:h?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Search,{className:"w-4 h-4"})})]}),m&&e.jsxs("p",{className:"text-xs text-[var(--error-text)] mt-1 flex items-center gap-1",children:[e.jsx(r.AlertTriangle,{className:"w-3 h-3"}),m]}),x&&e.jsxs("p",{className:"text-xs text-[var(--success-text)] mt-1 flex items-center gap-1",children:[e.jsx(r.Check,{className:"w-3 h-3"}),c("admin:tenants.organisation.lookupSuccess","Information retrieved successfully")]}),t.countryCode==="CH"&&!m&&!x&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-1",children:t.businessIdentifier.replace(/[^0-9]/g,"").length<9?c("admin:tenants.organisation.lookupHintIncomplete","Enter 9 digits to enable Zefix lookup"):c("admin:tenants.organisation.lookupHint","Click search button to auto-fill from Zefix")})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("label",{className:H,children:[c("admin:tenants.organisation.form.address","Address")," *"]}),e.jsxs("div",{children:[e.jsx("input",{type:"text",value:t.address.street,onChange:R=>n({...t,address:{...t.address,street:R.target.value}}),className:y(d&&!t.address.street.trim()),placeholder:c("admin:tenants.organisation.form.streetPlaceholder","Street address")}),d&&!t.address.street.trim()&&e.jsx("p",{className:"text-xs text-[var(--error-text)] mt-1",children:c("common:validation.required","This field is required")})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{children:[e.jsx("input",{type:"text",value:t.address.postalCode,onChange:R=>n({...t,address:{...t.address,postalCode:R.target.value}}),className:y(d&&!t.address.postalCode.trim()),placeholder:c("admin:tenants.organisation.form.postalCodePlaceholder","Postal code")}),d&&!t.address.postalCode.trim()&&e.jsx("p",{className:"text-xs text-[var(--error-text)] mt-1",children:c("common:validation.required","This field is required")})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("input",{type:"text",value:t.address.city,onChange:R=>n({...t,address:{...t.address,city:R.target.value}}),className:y(d&&!t.address.city.trim()),placeholder:c("admin:tenants.organisation.form.cityPlaceholder","City")}),d&&!t.address.city.trim()&&e.jsx("p",{className:"text-xs text-[var(--error-text)] mt-1",children:c("common:validation.required","This field is required")})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{className:H,children:[c("admin:tenants.organisation.form.vatNumber","VAT Number")," (",c("common:optional","optional"),")"]}),e.jsx("input",{type:"text",value:t.vatNumber||"",onChange:R=>n({...t,vatNumber:R.target.value||void 0}),className:f,placeholder:t.countryCode==="CH"?`CHE-123.456.789 ${B()}`:"FRXX123456789"}),t.countryCode==="CH"&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-1",children:c("admin:tenants.organisation.vatHint","VAT suffix will be added automatically based on language (MWST/TVA/IVA)")})]})]})}function ha(){return{name:"",countryCode:"CH",businessIdentifierType:"UID_CHE",businessIdentifier:"CHE-",isFromRegistry:!1,address:{street:"",postalCode:"",city:"",state:null,country:"Switzerland",countryCode:"CH"}}}function fa(t){return{name:t.name,legalName:t.legalName,countryCode:t.countryCode,businessIdentifierType:t.businessIdentifierType,businessIdentifier:t.businessIdentifier,vatNumber:t.vatNumber,phone:t.phone,email:t.email,website:t.website,isFromRegistry:t.isFromRegistry||void 0,address:{street:t.address.street,street2:t.address.street2??void 0,postalCode:t.address.postalCode,city:t.address.city,state:t.address.state??void 0,country:t.address.country,countryCode:t.address.countryCode}}}function ya(){const{t}=de.useTranslation(["admin","common"]),n=xe.useNavigate(),[s,l]=a.useState(ha()),[d,i]=a.useState(!1),[c,b]=a.useState(null),[h,u]=a.useState(!1),m=s.name.trim()&&s.address.street.trim()&&s.address.city.trim()&&s.address.postalCode.trim(),o=async x=>{if(x.preventDefault(),u(!0),!!m){i(!0),b(null);try{const p=fa(s),S=await E.adminApi.organisations.create(p);n(`/administration/tenants/organisations/${S.id}`)}catch(p){console.error("Failed to create organisation:",p),b(p instanceof Error?p.message:t("admin:organisations.createError","Failed to create organisation"))}finally{i(!1)}}};return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(E.Breadcrumb,{items:[{label:t("admin:header.title"),href:"/administration"},{label:t("admin:tenants.title"),href:"/administration/tenants/list"},{label:t("admin:organisations.title","Organisations"),href:"/administration/tenants/organisations"},{label:t("common:create","Create")}]}),e.jsx("div",{className:"flex items-center justify-between gap-4",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>n("/administration/tenants/organisations"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(r.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:t("admin:organisations.create","Create Organisation")}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:t("admin:organisations.createDescription","Add a new organisation to the system")})]})]})}),c&&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:c})]})}),e.jsxs("form",{onSubmit:o,className:"space-y-6",children:[e.jsx("div",{className:"p-6 rounded-[var(--radius-card)] border border-[var(--border-color)] bg-[var(--bg-card)]",children:e.jsx(ba,{data:s,onChange:l,submitted:h})}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{type:"button",onClick:()=>n("/administration/tenants/organisations"),className:"px-6 py-2 rounded-[var(--radius-button)] bg-[var(--bg-secondary)] text-[var(--text-primary)] hover:bg-[var(--bg-hover)] transition-colors",children:t("common:cancel","Cancel")}),e.jsxs("button",{type:"submit",disabled:d,className:"flex items-center gap-2 px-6 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-500)] text-white hover:bg-[var(--color-accent-600)] disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[d&&e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}),d?t("common:saving","Saving"):t("common:create","Create")]})]})]})]})}exports.OrganisationCreatePage=ya;exports.OrganisationDetailPage=ga;exports.OrganisationsListPage=pa;exports.TenantAccessRequestsPage=Ks;exports.TenantCreatePage=Ns;exports.TenantDetailPage=hs;exports.TenantSettingsPage=xa;exports.TenantTemplateCreatePage=Hs;exports.TenantTemplateDetailPage=Fs;exports.TenantTypeSettingsPage=ua;exports.TenantsBusinessPage=qs;exports.TenantsDashboardPage=Ts;exports.TenantsOtherPage=Vs;exports.TenantsPage=_e;exports.TenantsPersonalPage=zs;exports.TenantsTemplatePage=Us;
|
|
2
|
+
//# sourceMappingURL=index-0VrOtwP0.js.map
|