@atlashub/smartstack 3.39.0-preview.1049 → 3.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/dist/chunks/{AgentSkillsPage-DgqyaZwI.js → AgentSkillsPage-BS_W2KTh.js} +2 -2
  2. package/dist/chunks/{AgentSkillsPage-DgqyaZwI.js.map → AgentSkillsPage-BS_W2KTh.js.map} +1 -1
  3. package/dist/chunks/{AgentSkillsPage-ojivq0Cu.js → AgentSkillsPage-CmDFLnp7.js} +2 -2
  4. package/dist/chunks/{AgentSkillsPage-ojivq0Cu.js.map → AgentSkillsPage-CmDFLnp7.js.map} +1 -1
  5. package/dist/chunks/{AgentWorkloadPage-BGGTfOLs.js → AgentWorkloadPage-C8IvYfhT.js} +2 -2
  6. package/dist/chunks/{AgentWorkloadPage-BGGTfOLs.js.map → AgentWorkloadPage-C8IvYfhT.js.map} +1 -1
  7. package/dist/chunks/{AgentWorkloadPage-DWsC5VoS.js → AgentWorkloadPage-JXsQbwuM.js} +2 -2
  8. package/dist/chunks/{AgentWorkloadPage-DWsC5VoS.js.map → AgentWorkloadPage-JXsQbwuM.js.map} +1 -1
  9. package/dist/chunks/{ApiCatalogDetailPage-7EifQOAh.js → ApiCatalogDetailPage-CYOt34Vy.js} +2 -2
  10. package/dist/chunks/{ApiCatalogDetailPage-7EifQOAh.js.map → ApiCatalogDetailPage-CYOt34Vy.js.map} +1 -1
  11. package/dist/chunks/{ApiCatalogDetailPage-BD7XE4xK.js → ApiCatalogDetailPage-wFZDsTGy.js} +3 -3
  12. package/dist/chunks/{ApiCatalogDetailPage-BD7XE4xK.js.map → ApiCatalogDetailPage-wFZDsTGy.js.map} +1 -1
  13. package/dist/chunks/{ApiCatalogPage-BfPoZGD3.js → ApiCatalogPage-Bdm3HNGP.js} +2 -2
  14. package/dist/chunks/{ApiCatalogPage-BfPoZGD3.js.map → ApiCatalogPage-Bdm3HNGP.js.map} +1 -1
  15. package/dist/chunks/{ApiCatalogPage-BOPTnk-b.js → ApiCatalogPage-m_TWQyGv.js} +2 -2
  16. package/dist/chunks/{ApiCatalogPage-BOPTnk-b.js.map → ApiCatalogPage-m_TWQyGv.js.map} +1 -1
  17. package/dist/chunks/ApplicationDetailPage-C2BSpEoW.js +2 -0
  18. package/dist/chunks/{ApplicationDetailPage-CWdz0TS4.js.map → ApplicationDetailPage-C2BSpEoW.js.map} +1 -1
  19. package/dist/chunks/{ApplicationDetailPage-CDQqViuH.js → ApplicationDetailPage-CcgDAP-J.js} +503 -501
  20. package/dist/chunks/{ApplicationDetailPage-CDQqViuH.js.map → ApplicationDetailPage-CcgDAP-J.js.map} +1 -1
  21. package/dist/chunks/{ApplicationsDashboardPage-ZyXm2Cd1.js → ApplicationsDashboardPage-CDIjziL3.js} +3 -3
  22. package/dist/chunks/{ApplicationsDashboardPage-ZyXm2Cd1.js.map → ApplicationsDashboardPage-CDIjziL3.js.map} +1 -1
  23. package/dist/chunks/{ApplicationsDashboardPage-BH4S3qA2.js → ApplicationsDashboardPage-DslDyNzJ.js} +2 -2
  24. package/dist/chunks/{ApplicationsDashboardPage-BH4S3qA2.js.map → ApplicationsDashboardPage-DslDyNzJ.js.map} +1 -1
  25. package/dist/chunks/{ApplicationsGridPage-D0fU1_Le.js → ApplicationsGridPage-BCjsQGU0.js} +2 -2
  26. package/dist/chunks/{ApplicationsGridPage-D0fU1_Le.js.map → ApplicationsGridPage-BCjsQGU0.js.map} +1 -1
  27. package/dist/chunks/{ApplicationsGridPage-C1WF2Htv.js → ApplicationsGridPage-CIfKiCND.js} +2 -2
  28. package/dist/chunks/{ApplicationsGridPage-C1WF2Htv.js.map → ApplicationsGridPage-CIfKiCND.js.map} +1 -1
  29. package/dist/chunks/{ApplicationsListPage-Cxvt2_WQ.js → ApplicationsListPage-CT75kNcH.js} +2 -2
  30. package/dist/chunks/{ApplicationsListPage-Cxvt2_WQ.js.map → ApplicationsListPage-CT75kNcH.js.map} +1 -1
  31. package/dist/chunks/{ApplicationsListPage-B3ItaY4r.js → ApplicationsListPage-D2B4PZ5n.js} +2 -2
  32. package/dist/chunks/{ApplicationsListPage-B3ItaY4r.js.map → ApplicationsListPage-D2B4PZ5n.js.map} +1 -1
  33. package/dist/chunks/{ApplicationsPage-BqfNR-kc.js → ApplicationsPage-CaTBtduL.js} +2 -2
  34. package/dist/chunks/{ApplicationsPage-BqfNR-kc.js.map → ApplicationsPage-CaTBtduL.js.map} +1 -1
  35. package/dist/chunks/{ApplicationsPage-DuxuWfrN.js → ApplicationsPage-DW1LhL0U.js} +4 -4
  36. package/dist/chunks/{ApplicationsPage-DuxuWfrN.js.map → ApplicationsPage-DW1LhL0U.js.map} +1 -1
  37. package/dist/chunks/{AssignmentRulesPage-CR1C7V0a.js → AssignmentRulesPage-Bt9M0ki7.js} +2 -2
  38. package/dist/chunks/{AssignmentRulesPage-CR1C7V0a.js.map → AssignmentRulesPage-Bt9M0ki7.js.map} +1 -1
  39. package/dist/chunks/{AssignmentRulesPage-C4Jouh2g.js → AssignmentRulesPage-Y7xv60NY.js} +2 -2
  40. package/dist/chunks/{AssignmentRulesPage-C4Jouh2g.js.map → AssignmentRulesPage-Y7xv60NY.js.map} +1 -1
  41. package/dist/chunks/{AssignmentsPage-v8QUJkE7.js → AssignmentsPage-1eQGTjTi.js} +2 -2
  42. package/dist/chunks/{AssignmentsPage-v8QUJkE7.js.map → AssignmentsPage-1eQGTjTi.js.map} +1 -1
  43. package/dist/chunks/{AssignmentsPage-CjuGAd8n.js → AssignmentsPage-RURdPvfZ.js} +2 -2
  44. package/dist/chunks/{AssignmentsPage-CjuGAd8n.js.map → AssignmentsPage-RURdPvfZ.js.map} +1 -1
  45. package/dist/chunks/{AuthCallbackPage-BxIXPUJk.js → AuthCallbackPage-8hF0jYlK.js} +2 -2
  46. package/dist/chunks/{AuthCallbackPage-BxIXPUJk.js.map → AuthCallbackPage-8hF0jYlK.js.map} +1 -1
  47. package/dist/chunks/{AuthCallbackPage-CuS-efzY.js → AuthCallbackPage-DPL68Asu.js} +2 -2
  48. package/dist/chunks/{AuthCallbackPage-CuS-efzY.js.map → AuthCallbackPage-DPL68Asu.js.map} +1 -1
  49. package/dist/chunks/{ConfirmEmailPage-CWIqy2bT.js → ConfirmEmailPage-BKlpZkVk.js} +2 -2
  50. package/dist/chunks/{ConfirmEmailPage-CWIqy2bT.js.map → ConfirmEmailPage-BKlpZkVk.js.map} +1 -1
  51. package/dist/chunks/{ConfirmEmailPage-CkN8IfP-.js → ConfirmEmailPage-CawSZypI.js} +2 -2
  52. package/dist/chunks/{ConfirmEmailPage-CkN8IfP-.js.map → ConfirmEmailPage-CawSZypI.js.map} +1 -1
  53. package/dist/chunks/{CreateSupportTicketPage-Df0ow5ge.js → CreateSupportTicketPage-AwbMbBIH.js} +2 -2
  54. package/dist/chunks/{CreateSupportTicketPage-Df0ow5ge.js.map → CreateSupportTicketPage-AwbMbBIH.js.map} +1 -1
  55. package/dist/chunks/{CreateSupportTicketPage-CmrDfFxP.js → CreateSupportTicketPage-Dg1YW1eA.js} +2 -2
  56. package/dist/chunks/{CreateSupportTicketPage-CmrDfFxP.js.map → CreateSupportTicketPage-Dg1YW1eA.js.map} +1 -1
  57. package/dist/chunks/{DashboardPage-B4Pi5P3O.js → DashboardPage-B4YxOF-9.js} +3 -3
  58. package/dist/chunks/{DashboardPage-B4Pi5P3O.js.map → DashboardPage-B4YxOF-9.js.map} +1 -1
  59. package/dist/chunks/{DashboardPage-wEKZ_DWf.js → DashboardPage-BZxjinar.js} +2 -2
  60. package/dist/chunks/{DashboardPage-wEKZ_DWf.js.map → DashboardPage-BZxjinar.js.map} +1 -1
  61. package/dist/chunks/{DashboardPage-BAqpoxCW.js → DashboardPage-Bo09y8r7.js} +3 -3
  62. package/dist/chunks/{DashboardPage-BAqpoxCW.js.map → DashboardPage-Bo09y8r7.js.map} +1 -1
  63. package/dist/chunks/{DashboardPage-BT5kFaQA.js → DashboardPage-Cq5adDjP.js} +2 -2
  64. package/dist/chunks/{DashboardPage-BT5kFaQA.js.map → DashboardPage-Cq5adDjP.js.map} +1 -1
  65. package/dist/chunks/{EscalationConfigPage-4pF38E4N.js → EscalationConfigPage-C8Hv5naz.js} +2 -2
  66. package/dist/chunks/{EscalationConfigPage-4pF38E4N.js.map → EscalationConfigPage-C8Hv5naz.js.map} +1 -1
  67. package/dist/chunks/{EscalationConfigPage-Bcifnt_h.js → EscalationConfigPage-DNAqMRxA.js} +2 -2
  68. package/dist/chunks/{EscalationConfigPage-Bcifnt_h.js.map → EscalationConfigPage-DNAqMRxA.js.map} +1 -1
  69. package/dist/chunks/{ForceChangePasswordPage-CBaMV_PS.js → ForceChangePasswordPage-BURE_vNg.js} +2 -2
  70. package/dist/chunks/{ForceChangePasswordPage-CBaMV_PS.js.map → ForceChangePasswordPage-BURE_vNg.js.map} +1 -1
  71. package/dist/chunks/{ForceChangePasswordPage-ClDXluX1.js → ForceChangePasswordPage-C6jDZshk.js} +2 -2
  72. package/dist/chunks/{ForceChangePasswordPage-ClDXluX1.js.map → ForceChangePasswordPage-C6jDZshk.js.map} +1 -1
  73. package/dist/chunks/{ForgotPasswordPage--ueWRNSO.js → ForgotPasswordPage-C5HLYbz4.js} +2 -2
  74. package/dist/chunks/{ForgotPasswordPage--ueWRNSO.js.map → ForgotPasswordPage-C5HLYbz4.js.map} +1 -1
  75. package/dist/chunks/{ForgotPasswordPage-CzpAkP5R.js → ForgotPasswordPage-D3ZQBtjd.js} +2 -2
  76. package/dist/chunks/{ForgotPasswordPage-CzpAkP5R.js.map → ForgotPasswordPage-D3ZQBtjd.js.map} +1 -1
  77. package/dist/chunks/{GroupDetailPage-dXNOoSXE.js → GroupDetailPage-CTuzp9Vp.js} +5 -5
  78. package/dist/chunks/{GroupDetailPage-dXNOoSXE.js.map → GroupDetailPage-CTuzp9Vp.js.map} +1 -1
  79. package/dist/chunks/{GroupDetailPage-BIgBzQk0.js → GroupDetailPage-NJc2zCxC.js} +2 -2
  80. package/dist/chunks/{GroupDetailPage-BIgBzQk0.js.map → GroupDetailPage-NJc2zCxC.js.map} +1 -1
  81. package/dist/chunks/{MyAccessRequestsPage-K2NXkdy4.js → MyAccessRequestsPage-Cvr29Pnq.js} +2 -2
  82. package/dist/chunks/{MyAccessRequestsPage-K2NXkdy4.js.map → MyAccessRequestsPage-Cvr29Pnq.js.map} +1 -1
  83. package/dist/chunks/{MyAccessRequestsPage-Be8VvLhh.js → MyAccessRequestsPage-t6I24rHN.js} +2 -2
  84. package/dist/chunks/{MyAccessRequestsPage-Be8VvLhh.js.map → MyAccessRequestsPage-t6I24rHN.js.map} +1 -1
  85. package/dist/chunks/{MyTenantsPage-BXx1nPC8.js → MyTenantsPage-Dy2RZ_Ei.js} +2 -2
  86. package/dist/chunks/{MyTenantsPage-BXx1nPC8.js.map → MyTenantsPage-Dy2RZ_Ei.js.map} +1 -1
  87. package/dist/chunks/{MyTenantsPage-B9ZAUeCa.js → MyTenantsPage-SvDCQ4Wt.js} +3 -3
  88. package/dist/chunks/{MyTenantsPage-B9ZAUeCa.js.map → MyTenantsPage-SvDCQ4Wt.js.map} +1 -1
  89. package/dist/chunks/{MyTicketsPage-C9MSmmR5.js → MyTicketsPage-C3lEBFD9.js} +2 -2
  90. package/dist/chunks/{MyTicketsPage-C9MSmmR5.js.map → MyTicketsPage-C3lEBFD9.js.map} +1 -1
  91. package/dist/chunks/{MyTicketsPage-d0PoJpnX.js → MyTicketsPage-DydDgFyz.js} +2 -2
  92. package/dist/chunks/{MyTicketsPage-d0PoJpnX.js.map → MyTicketsPage-DydDgFyz.js.map} +1 -1
  93. package/dist/chunks/{NavigationAppsPage-CJ3BjLlz.js → NavigationAppsPage-Dyv767w8.js} +2 -2
  94. package/dist/chunks/{NavigationAppsPage-CJ3BjLlz.js.map → NavigationAppsPage-Dyv767w8.js.map} +1 -1
  95. package/dist/chunks/{NavigationAppsPage-8t2xbddT.js → NavigationAppsPage-WqSspaVo.js} +2 -2
  96. package/dist/chunks/{NavigationAppsPage-8t2xbddT.js.map → NavigationAppsPage-WqSspaVo.js.map} +1 -1
  97. package/dist/chunks/{NotificationsPage-_62-bmuk.js → NotificationsPage-Di4I95PM.js} +2 -2
  98. package/dist/chunks/{NotificationsPage-_62-bmuk.js.map → NotificationsPage-Di4I95PM.js.map} +1 -1
  99. package/dist/chunks/{NotificationsPage-CLHfVUxm.js → NotificationsPage-elSovpBw.js} +2 -2
  100. package/dist/chunks/{NotificationsPage-CLHfVUxm.js.map → NotificationsPage-elSovpBw.js.map} +1 -1
  101. package/dist/chunks/{OnboardingWizardPage-Dkc22Jc4.js → OnboardingWizardPage-fdWdkwiT.js} +2 -2
  102. package/dist/chunks/{OnboardingWizardPage-Dkc22Jc4.js.map → OnboardingWizardPage-fdWdkwiT.js.map} +1 -1
  103. package/dist/chunks/{OnboardingWizardPage-D1rzD6gR.js → OnboardingWizardPage-nPLe2buQ.js} +2 -2
  104. package/dist/chunks/{OnboardingWizardPage-D1rzD6gR.js.map → OnboardingWizardPage-nPLe2buQ.js.map} +1 -1
  105. package/dist/chunks/{PermissionDetailPage-BSvSe4SI.js → PermissionDetailPage-B8C7tWFP.js} +2 -2
  106. package/dist/chunks/{PermissionDetailPage-BSvSe4SI.js.map → PermissionDetailPage-B8C7tWFP.js.map} +1 -1
  107. package/dist/chunks/{PermissionDetailPage-_HhbxzlG.js → PermissionDetailPage-IUgUaTkE.js} +2 -2
  108. package/dist/chunks/{PermissionDetailPage-_HhbxzlG.js.map → PermissionDetailPage-IUgUaTkE.js.map} +1 -1
  109. package/dist/chunks/{PermissionsPage-Xb92YAHn.js → PermissionsPage-CmX5sQf2.js} +2 -2
  110. package/dist/chunks/{PermissionsPage-Xb92YAHn.js.map → PermissionsPage-CmX5sQf2.js.map} +1 -1
  111. package/dist/chunks/{PermissionsPage-B0M4gA5m.js → PermissionsPage-Kg0rduOM.js} +2 -2
  112. package/dist/chunks/{PermissionsPage-B0M4gA5m.js.map → PermissionsPage-Kg0rduOM.js.map} +1 -1
  113. package/dist/chunks/{PortalDashboardPage-DTeMESj9.js → PortalDashboardPage-CCAYuhtI.js} +2 -2
  114. package/dist/chunks/{PortalDashboardPage-DTeMESj9.js.map → PortalDashboardPage-CCAYuhtI.js.map} +1 -1
  115. package/dist/chunks/{PortalDashboardPage-pt9hipR4.js → PortalDashboardPage-Dme1XmzN.js} +2 -2
  116. package/dist/chunks/{PortalDashboardPage-pt9hipR4.js.map → PortalDashboardPage-Dme1XmzN.js.map} +1 -1
  117. package/dist/chunks/{PreferencesPage-Cy30AWIN.js → PreferencesPage-Ct6xWAFp.js} +2 -2
  118. package/dist/chunks/{PreferencesPage-Cy30AWIN.js.map → PreferencesPage-Ct6xWAFp.js.map} +1 -1
  119. package/dist/chunks/{PreferencesPage-CsHVGMgp.js → PreferencesPage-Db2RjMpm.js} +2 -2
  120. package/dist/chunks/{PreferencesPage-CsHVGMgp.js.map → PreferencesPage-Db2RjMpm.js.map} +1 -1
  121. package/dist/chunks/{ProfilePage-6Gf7igUI.js → ProfilePage-D6Xb1ALH.js} +2 -2
  122. package/dist/chunks/{ProfilePage-6Gf7igUI.js.map → ProfilePage-D6Xb1ALH.js.map} +1 -1
  123. package/dist/chunks/{ProfilePage-BzBWkztf.js → ProfilePage-DN2s-lfp.js} +2 -2
  124. package/dist/chunks/{ProfilePage-BzBWkztf.js.map → ProfilePage-DN2s-lfp.js.map} +1 -1
  125. package/dist/chunks/{ReferencesManagementPage-DEDoHrnU.js → ReferencesManagementPage-B5mcshG1.js} +2 -2
  126. package/dist/chunks/{ReferencesManagementPage-DEDoHrnU.js.map → ReferencesManagementPage-B5mcshG1.js.map} +1 -1
  127. package/dist/chunks/{ReferencesManagementPage-DD1QiFYr.js → ReferencesManagementPage-DB975ktX.js} +3 -3
  128. package/dist/chunks/{ReferencesManagementPage-DD1QiFYr.js.map → ReferencesManagementPage-DB975ktX.js.map} +1 -1
  129. package/dist/chunks/{RegisterPage-asdx33fV.js → RegisterPage-ZskZrLZH.js} +2 -2
  130. package/dist/chunks/{RegisterPage-asdx33fV.js.map → RegisterPage-ZskZrLZH.js.map} +1 -1
  131. package/dist/chunks/{RegisterPage-CIPHRYkl.js → RegisterPage-b8yIPVgh.js} +2 -2
  132. package/dist/chunks/{RegisterPage-CIPHRYkl.js.map → RegisterPage-b8yIPVgh.js.map} +1 -1
  133. package/dist/chunks/{ResetPasswordPage-B4Dj24vU.js → ResetPasswordPage-CeAvfsE-.js} +2 -2
  134. package/dist/chunks/{ResetPasswordPage-B4Dj24vU.js.map → ResetPasswordPage-CeAvfsE-.js.map} +1 -1
  135. package/dist/chunks/{ResetPasswordPage-B8MWH_Vi.js → ResetPasswordPage-Dzp5dCp8.js} +2 -2
  136. package/dist/chunks/{ResetPasswordPage-B8MWH_Vi.js.map → ResetPasswordPage-Dzp5dCp8.js.map} +1 -1
  137. package/dist/chunks/{ResolutionModal-Cs6T441o.js → ResolutionModal-CRVN7gHv.js} +2 -2
  138. package/dist/chunks/{ResolutionModal-Cs6T441o.js.map → ResolutionModal-CRVN7gHv.js.map} +1 -1
  139. package/dist/chunks/{ResolutionModal-rLoFOxm9.js → ResolutionModal-DJOw1sLT.js} +2 -2
  140. package/dist/chunks/{ResolutionModal-rLoFOxm9.js.map → ResolutionModal-DJOw1sLT.js.map} +1 -1
  141. package/dist/chunks/{RoleDetailPage-Pkw0wU5g.js → RoleDetailPage-CLVoFVF8.js} +2 -2
  142. package/dist/chunks/{RoleDetailPage-Pkw0wU5g.js.map → RoleDetailPage-CLVoFVF8.js.map} +1 -1
  143. package/dist/chunks/{RoleDetailPage-CNFG6j6P.js → RoleDetailPage-XGnPD_8C.js} +3 -3
  144. package/dist/chunks/{RoleDetailPage-CNFG6j6P.js.map → RoleDetailPage-XGnPD_8C.js.map} +1 -1
  145. package/dist/chunks/{RolesPage-BHEkMR2O.js → RolesPage-BnAMpR2b.js} +2 -2
  146. package/dist/chunks/{RolesPage-BHEkMR2O.js.map → RolesPage-BnAMpR2b.js.map} +1 -1
  147. package/dist/chunks/{RolesPage-D35jwDJU.js → RolesPage-Czj9LMkL.js} +2 -2
  148. package/dist/chunks/{RolesPage-D35jwDJU.js.map → RolesPage-Czj9LMkL.js.map} +1 -1
  149. package/dist/chunks/{SlaConfigPage-DtonDehw.js → SlaConfigPage-HM0MpIlg.js} +2 -2
  150. package/dist/chunks/{SlaConfigPage-DtonDehw.js.map → SlaConfigPage-HM0MpIlg.js.map} +1 -1
  151. package/dist/chunks/{SlaConfigPage-C5Jstix-.js → SlaConfigPage-ZRyAs8aY.js} +2 -2
  152. package/dist/chunks/{SlaConfigPage-C5Jstix-.js.map → SlaConfigPage-ZRyAs8aY.js.map} +1 -1
  153. package/dist/chunks/{SupportPermissionsPage-6pC73oCY.js → SupportPermissionsPage-CxJuGgcQ.js} +2 -2
  154. package/dist/chunks/{SupportPermissionsPage-6pC73oCY.js.map → SupportPermissionsPage-CxJuGgcQ.js.map} +1 -1
  155. package/dist/chunks/{SupportPermissionsPage-CsJKGt__.js → SupportPermissionsPage-DNd323OK.js} +2 -2
  156. package/dist/chunks/{SupportPermissionsPage-CsJKGt__.js.map → SupportPermissionsPage-DNd323OK.js.map} +1 -1
  157. package/dist/chunks/{TemplatesPage-DjmYOGEC.js → TemplatesPage-CdwPLsHj.js} +2 -2
  158. package/dist/chunks/{TemplatesPage-DjmYOGEC.js.map → TemplatesPage-CdwPLsHj.js.map} +1 -1
  159. package/dist/chunks/{TemplatesPage-DlY91VO_.js → TemplatesPage-Co3ygZvF.js} +2 -2
  160. package/dist/chunks/{TemplatesPage-DlY91VO_.js.map → TemplatesPage-Co3ygZvF.js.map} +1 -1
  161. package/dist/chunks/{TenantCard-BHLcv2gD.js → TenantCard-CmCfIK2F.js} +2 -2
  162. package/dist/chunks/{TenantCard-BHLcv2gD.js.map → TenantCard-CmCfIK2F.js.map} +1 -1
  163. package/dist/chunks/{TenantCard-DGCKVvKI.js → TenantCard-DI66acce.js} +2 -2
  164. package/dist/chunks/{TenantCard-DGCKVvKI.js.map → TenantCard-DI66acce.js.map} +1 -1
  165. package/dist/chunks/{TenantScopeSelector-dsSwnOWg.js → TenantScopeSelector-5NOwmFX2.js} +2 -2
  166. package/dist/chunks/{TenantScopeSelector-dsSwnOWg.js.map → TenantScopeSelector-5NOwmFX2.js.map} +1 -1
  167. package/dist/chunks/{TenantScopeSelector-CU5z5PJH.js → TenantScopeSelector-CEFgxiWt.js} +2 -2
  168. package/dist/chunks/{TenantScopeSelector-CU5z5PJH.js.map → TenantScopeSelector-CEFgxiWt.js.map} +1 -1
  169. package/dist/chunks/{TicketDetailPage-BQHMaRmq.js → TicketDetailPage-BhZ-mpv7.js} +2 -2
  170. package/dist/chunks/{TicketDetailPage-BQHMaRmq.js.map → TicketDetailPage-BhZ-mpv7.js.map} +1 -1
  171. package/dist/chunks/{TicketDetailPage-Bk_0uQ3B.js → TicketDetailPage-BxOiOG22.js} +2 -2
  172. package/dist/chunks/{TicketDetailPage-Bk_0uQ3B.js.map → TicketDetailPage-BxOiOG22.js.map} +1 -1
  173. package/dist/chunks/{TicketsPage-CufUJctx.js → TicketsPage-BiTvIcM8.js} +2 -2
  174. package/dist/chunks/{TicketsPage-CufUJctx.js.map → TicketsPage-BiTvIcM8.js.map} +1 -1
  175. package/dist/chunks/{TicketsPage-C8QQ4SKy.js → TicketsPage-CSiinHME.js} +2 -2
  176. package/dist/chunks/{TicketsPage-C8QQ4SKy.js.map → TicketsPage-CSiinHME.js.map} +1 -1
  177. package/dist/chunks/{UserCreateTicketPage-DoEMtJoe.js → UserCreateTicketPage-B3TW1oV7.js} +2 -2
  178. package/dist/chunks/{UserCreateTicketPage-DoEMtJoe.js.map → UserCreateTicketPage-B3TW1oV7.js.map} +1 -1
  179. package/dist/chunks/{UserCreateTicketPage-XxjNlR9K.js → UserCreateTicketPage-BszUd_WZ.js} +2 -2
  180. package/dist/chunks/{UserCreateTicketPage-XxjNlR9K.js.map → UserCreateTicketPage-BszUd_WZ.js.map} +1 -1
  181. package/dist/chunks/{UserDashboardPage-fdhZwMLg.js → UserDashboardPage-C6MvatAb.js} +2 -2
  182. package/dist/chunks/{UserDashboardPage-fdhZwMLg.js.map → UserDashboardPage-C6MvatAb.js.map} +1 -1
  183. package/dist/chunks/{UserDashboardPage-BV1d2hMG.js → UserDashboardPage-Dtt9VzG_.js} +2 -2
  184. package/dist/chunks/{UserDashboardPage-BV1d2hMG.js.map → UserDashboardPage-Dtt9VzG_.js.map} +1 -1
  185. package/dist/chunks/{UserDetailPage-C97e-Dax.js → UserDetailPage-BEEV2vlJ.js} +5 -5
  186. package/dist/chunks/{UserDetailPage-C97e-Dax.js.map → UserDetailPage-BEEV2vlJ.js.map} +1 -1
  187. package/dist/chunks/{UserDetailPage-BcA7Vhb2.js → UserDetailPage-Dw5OHheZ.js} +2 -2
  188. package/dist/chunks/{UserDetailPage-BcA7Vhb2.js.map → UserDetailPage-Dw5OHheZ.js.map} +1 -1
  189. package/dist/chunks/{UserTicketDetailPage-BA2syxXG.js → UserTicketDetailPage-B4YkzzbR.js} +2 -2
  190. package/dist/chunks/{UserTicketDetailPage-BA2syxXG.js.map → UserTicketDetailPage-B4YkzzbR.js.map} +1 -1
  191. package/dist/chunks/{UserTicketDetailPage-CXuZVAa2.js → UserTicketDetailPage-DCFV-0ny.js} +2 -2
  192. package/dist/chunks/{UserTicketDetailPage-CXuZVAa2.js.map → UserTicketDetailPage-DCFV-0ny.js.map} +1 -1
  193. package/dist/chunks/{UsersGroupsPage-CPVk31Dh.js → UsersGroupsPage-CY-l9fTp.js} +3 -3
  194. package/dist/chunks/{UsersGroupsPage-CPVk31Dh.js.map → UsersGroupsPage-CY-l9fTp.js.map} +1 -1
  195. package/dist/chunks/{UsersGroupsPage-DS2YiUE4.js → UsersGroupsPage-c28vYHN9.js} +2 -2
  196. package/dist/chunks/{UsersGroupsPage-DS2YiUE4.js.map → UsersGroupsPage-c28vYHN9.js.map} +1 -1
  197. package/dist/chunks/{UsersPage-BIXWHFmG.js → UsersPage-1sLlq9QD.js} +2 -2
  198. package/dist/chunks/{UsersPage-BIXWHFmG.js.map → UsersPage-1sLlq9QD.js.map} +1 -1
  199. package/dist/chunks/{UsersPage-DS8aWUKj.js → UsersPage-Bm-uNxh0.js} +2 -2
  200. package/dist/chunks/{UsersPage-DS8aWUKj.js.map → UsersPage-Bm-uNxh0.js.map} +1 -1
  201. package/dist/chunks/{accessRequestsApi-C-r0mrCH.js → accessRequestsApi-CJPjyEkH.js} +2 -2
  202. package/dist/chunks/{accessRequestsApi-C-r0mrCH.js.map → accessRequestsApi-CJPjyEkH.js.map} +1 -1
  203. package/dist/chunks/{accessRequestsApi-k3ZwhcFb.js → accessRequestsApi-D_pj1wl6.js} +2 -2
  204. package/dist/chunks/{accessRequestsApi-k3ZwhcFb.js.map → accessRequestsApi-D_pj1wl6.js.map} +1 -1
  205. package/dist/chunks/{aiApi-B-H-76wM.js → aiApi-ByF-oo1J.js} +2 -2
  206. package/dist/chunks/{aiApi-B-H-76wM.js.map → aiApi-ByF-oo1J.js.map} +1 -1
  207. package/dist/chunks/{aiApi-CcdrBILv.js → aiApi-Dt3fj0dU.js} +2 -2
  208. package/dist/chunks/{aiApi-CcdrBILv.js.map → aiApi-Dt3fj0dU.js.map} +1 -1
  209. package/dist/chunks/{applicationAnalyticsApi-CO3tk6Ju.js → applicationAnalyticsApi-BgG3SGJm.js} +2 -2
  210. package/dist/chunks/{applicationAnalyticsApi-CO3tk6Ju.js.map → applicationAnalyticsApi-BgG3SGJm.js.map} +1 -1
  211. package/dist/chunks/{applicationAnalyticsApi-CLVdVLDu.js → applicationAnalyticsApi-ktD65iLO.js} +2 -2
  212. package/dist/chunks/{applicationAnalyticsApi-CLVdVLDu.js.map → applicationAnalyticsApi-ktD65iLO.js.map} +1 -1
  213. package/dist/chunks/{groupsApi-DExOJZPF.js → groupsApi-C-FLWPCO.js} +2 -2
  214. package/dist/chunks/{groupsApi-DExOJZPF.js.map → groupsApi-C-FLWPCO.js.map} +1 -1
  215. package/dist/chunks/{groupsApi-CyqyYsmi.js → groupsApi-CBI5vMLa.js} +2 -2
  216. package/dist/chunks/{groupsApi-CyqyYsmi.js.map → groupsApi-CBI5vMLa.js.map} +1 -1
  217. package/dist/chunks/{index-DtAReZI6.js → index-B727-QSU.js} +2 -2
  218. package/dist/chunks/{index-DtAReZI6.js.map → index-B727-QSU.js.map} +1 -1
  219. package/dist/chunks/{index-BlOgmQzc.js → index-B9q3vx13.js} +2 -2
  220. package/dist/chunks/{index-BlOgmQzc.js.map → index-B9q3vx13.js.map} +1 -1
  221. package/dist/chunks/{index-VSQ2prtJ.js → index-BD-REzV9.js} +2 -2
  222. package/dist/chunks/{index-VSQ2prtJ.js.map → index-BD-REzV9.js.map} +1 -1
  223. package/dist/chunks/{index-XOOiD_zY.js → index-BDRogQH_.js} +3 -3
  224. package/dist/chunks/{index-XOOiD_zY.js.map → index-BDRogQH_.js.map} +1 -1
  225. package/dist/chunks/{index-DOQyf5yZ.js → index-C-DYxdvd.js} +8 -8
  226. package/dist/chunks/{index-DOQyf5yZ.js.map → index-C-DYxdvd.js.map} +1 -1
  227. package/dist/chunks/{index-Cq80YBne.js → index-CBtjGPod.js} +105 -105
  228. package/dist/chunks/{index-Cq80YBne.js.map → index-CBtjGPod.js.map} +1 -1
  229. package/dist/chunks/{index-dlXYTPWH.js → index-CF1cvNUL.js} +4 -4
  230. package/dist/chunks/{index-dlXYTPWH.js.map → index-CF1cvNUL.js.map} +1 -1
  231. package/dist/chunks/{index-COA_xJVJ.js → index-CH0pTHy1.js} +2 -2
  232. package/dist/chunks/{index-COA_xJVJ.js.map → index-CH0pTHy1.js.map} +1 -1
  233. package/dist/chunks/{index-DjZQ6ZG_.js → index-Ca88RIuT.js} +2 -2
  234. package/dist/chunks/{index-DjZQ6ZG_.js.map → index-Ca88RIuT.js.map} +1 -1
  235. package/dist/chunks/{index-Cj-9tGpd.js → index-CkWvsvKW.js} +2 -2
  236. package/dist/chunks/{index-Cj-9tGpd.js.map → index-CkWvsvKW.js.map} +1 -1
  237. package/dist/chunks/{index-EL_ZNnMH.js → index-CzYKE5fL.js} +2 -2
  238. package/dist/chunks/{index-EL_ZNnMH.js.map → index-CzYKE5fL.js.map} +1 -1
  239. package/dist/chunks/{index-qXfYaEmV.js → index-D32ol7lq.js} +2 -2
  240. package/dist/chunks/{index-qXfYaEmV.js.map → index-D32ol7lq.js.map} +1 -1
  241. package/dist/chunks/{index-DMQQ0KyA.js → index-D7hmx9IX.js} +2 -2
  242. package/dist/chunks/{index-DMQQ0KyA.js.map → index-D7hmx9IX.js.map} +1 -1
  243. package/dist/chunks/{index-BetDcNZm.js → index-DThcQmwZ.js} +2 -2
  244. package/dist/chunks/{index-BetDcNZm.js.map → index-DThcQmwZ.js.map} +1 -1
  245. package/dist/chunks/{index-C7h5yvcP.js → index-D_3J6ziZ.js} +2 -2
  246. package/dist/chunks/{index-C7h5yvcP.js.map → index-D_3J6ziZ.js.map} +1 -1
  247. package/dist/chunks/{index-C_nDTEP5.js → index-JSjfMShT.js} +2 -2
  248. package/dist/chunks/{index-C_nDTEP5.js.map → index-JSjfMShT.js.map} +1 -1
  249. package/dist/chunks/{index-COXxU0FH.js → index-gzXJw_ow.js} +3 -3
  250. package/dist/chunks/{index-COXxU0FH.js.map → index-gzXJw_ow.js.map} +1 -1
  251. package/dist/chunks/{index-jJxtz2bs.js → index-rRAbl04H.js} +2 -2
  252. package/dist/chunks/{index-jJxtz2bs.js.map → index-rRAbl04H.js.map} +1 -1
  253. package/dist/chunks/{tenantIconMap-Ddvguo0l.js → tenantIconMap-Cw-hQ9n4.js} +2 -2
  254. package/dist/chunks/{tenantIconMap-Ddvguo0l.js.map → tenantIconMap-Cw-hQ9n4.js.map} +1 -1
  255. package/dist/chunks/{tenantIconMap-DBa5MjIz.js → tenantIconMap-DinwojNW.js} +2 -2
  256. package/dist/chunks/{tenantIconMap-DBa5MjIz.js.map → tenantIconMap-DinwojNW.js.map} +1 -1
  257. package/dist/chunks/{ticketingApi-Cr6QSv0g.js → ticketingApi-CcWdebXv.js} +2 -2
  258. package/dist/chunks/{ticketingApi-Cr6QSv0g.js.map → ticketingApi-CcWdebXv.js.map} +1 -1
  259. package/dist/chunks/{ticketingApi-D6s75rOB.js → ticketingApi-x0BwZ1NH.js} +2 -2
  260. package/dist/chunks/{ticketingApi-D6s75rOB.js.map → ticketingApi-x0BwZ1NH.js.map} +1 -1
  261. package/dist/chunks/{useAccessRequests-VuQT-n-P.js → useAccessRequests-BBTIYht3.js} +2 -2
  262. package/dist/chunks/{useAccessRequests-VuQT-n-P.js.map → useAccessRequests-BBTIYht3.js.map} +1 -1
  263. package/dist/chunks/{useAccessRequests-CanI2ypo.js → useAccessRequests-BBUj9XY9.js} +71 -71
  264. package/dist/chunks/{useAccessRequests-CanI2ypo.js.map → useAccessRequests-BBUj9XY9.js.map} +1 -1
  265. package/dist/chunks/{useUserAccessRequests-BEVZLX_M.js → useUserAccessRequests-BKQxcOXH.js} +2 -2
  266. package/dist/chunks/{useUserAccessRequests-BEVZLX_M.js.map → useUserAccessRequests-BKQxcOXH.js.map} +1 -1
  267. package/dist/chunks/{useUserAccessRequests-Ba40FDLm.js → useUserAccessRequests-BPUPiP55.js} +2 -2
  268. package/dist/chunks/{useUserAccessRequests-Ba40FDLm.js.map → useUserAccessRequests-BPUPiP55.js.map} +1 -1
  269. package/dist/pages/platform/administration/applications/ApplicationDetailPage.d.ts.map +1 -1
  270. package/dist/smartstack.cjs +1 -1
  271. package/dist/smartstack.js +1 -1
  272. package/package.json +1 -1
  273. package/dist/chunks/ApplicationDetailPage-CWdz0TS4.js +0 -2
@@ -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-XOOiD_zY.js"),we=require("./tenantIconMap-Ddvguo0l.js"),Ve=require("./ConfirmModal-CYWRiVoD.js"),tt=require("./useTabNavigation-BVtbCTd5.js"),De=require("./ticketingApi-D6s75rOB.js"),St=require("./groupsApi-DExOJZPF.js"),Qe=require("./useAccessRequests-VuQT-n-P.js"),be=require("recharts"),kt=require("./accessRequestsApi-C-r0mrCH.js"),Je=require("./ResolutionModal-Cs6T441o.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:"",Mt=t=>t&&Lt.includes(t)?t:"",Rt=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:h,refreshTenants:b}=E.useTenant(),u=E.useTenantUrl(),{getIconForType:m}=we.useTenantTypeSettings(),o=a.useMemo(()=>({search:d.get("search")||"",status:It(d.get("status")),type:t||Mt(d.get("type"))||(n?"":"Business")}),[]),[x,p]=a.useState([]),[N,B]=a.useState(!0),[P,L]=a.useState(o),[g,f]=a.useState(!1),[D,y]=a.useState(null),[H,C]=a.useState(null),[F,A]=a.useState(null),[Z,q]=a.useState("table"),[U,z]=a.useState(Rt(d.get("page"))),[ee,ae]=a.useState(1),[$,X]=a.useState(0),[J,R]=a.useState(null),[T,j]=a.useState("name"),[M,O]=a.useState(!1),S=Pt(P.search,300),v=Ft(P,t,n),w=a.useCallback(async()=>{try{B(!0),R(null);const k=await E.adminApi.tenants.getAll({page:U,pageSize:20,search:S||void 0,status:P.status||void 0,type:P.type||void 0,sortBy:T,sortDesc:M,excludeTypes:n});p(k.items),X(k.totalCount),ae(k.totalPages)}catch(k){console.error("Failed to load tenants:",k),R(s("tenants.loadError")),p([])}finally{B(!1)}},[U,S,P.status,P.type,T,M,s,n]);a.useEffect(()=>{const k=new URLSearchParams;P.search&&k.set("search",P.search),P.status&&k.set("status",P.status),P.type&&k.set("type",P.type),U>1&&k.set("page",U.toString()),i(k,{replace:!0})},[P,U,i]),a.useEffect(()=>{w()},[w,c?.id,h]);const ie=()=>{L(Bt(t,n)),z(1)},le=(k,ce)=>{t&&k==="type"||(L(je=>({...je,[k]:ce})),z(1))},te=k=>{y(null),A({tenant:k,action:"activate"})},Q=k=>{y(null),A({tenant:k,action:"suspend"})},pe=k=>{y(null),A({tenant:k,action:"archive"})},me=async()=>{if(!F)return;const{tenant:k,action:ce}=F;C(k.id);try{ce==="activate"?await E.adminApi.tenants.activate(k.id):ce==="suspend"?await E.adminApi.tenants.suspend(k.id):ce==="archive"&&await E.adminApi.tenants.archive(k.id),await b(),w()}catch(je){console.error(`Failed to ${ce} tenant:`,je)}finally{C(null),A(null)}},K=(k,ce)=>{switch(k){case"activate":return s("tenants.confirmActivate",{name:ce});case"suspend":return s("tenants.confirmSuspend",{name:ce});case"archive":return s("tenants.confirmArchive",{name:ce})}},oe=k=>{switch(k){case"activate":return s("tenants.actions.activate");case"suspend":return s("tenants.actions.suspend");case"archive":return s("tenants.actions.archive")}},ge=k=>{switch(k){case"activate":return"info";case"suspend":return"warning";case"archive":return"danger"}},W=()=>{if(!F)return null;const{tenant:k,action:ce}=F;return{message:K(ce,k.name),label:oe(ce),variant:ge(ce)}},G=a.useMemo(()=>({active:x.filter(k=>k.status==="Active").length,suspended:x.filter(k=>k.status==="Suspended").length,members:x.reduce((k,ce)=>k+(ce.memberCount??0),0),pendingRequests:x.reduce((k,ce)=>k+(ce.pendingAccessRequestCount??0),0)}),[x]),_=x,se=k=>{T===k?O(!M):(j(k),O(!1)),z(1)},V=({column:k})=>T!==k?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=k=>k==="Active"?"success":k==="Suspended"?"warning":k==="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,Me=5+(Te?0:1)+1,Se=(k,ce,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(ce),children:e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[k,e.jsx(V,{column:ce})]})}),Ue=k=>e.jsx("div",{className:"flex items-center justify-end gap-1",onClick:ce=>ce.stopPropagation(),onKeyDown:ce=>ce.stopPropagation(),role:"presentation",children:e.jsxs("div",{className:"relative",children:[e.jsx("button",{onClick:()=>y(D===k.id?null:k.id),className:"p-2 rounded-lg text-[var(--text-tertiary)] hover:bg-[var(--bg-tertiary)] transition-all",children:H===k.id?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.MoreHorizontal,{className:"w-4 h-4"})}),D===k.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 rounded-[var(--radius-card)]",children:[e.jsxs("button",{onClick:()=>{y(null),l(u(`/administration/tenants/${k.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/${k.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/${k.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"}),k.status!=="Active"&&k.status!=="Archived"&&e.jsxs("button",{onClick:()=>te(k),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")]}),k.status==="Active"&&e.jsxs("button",{onClick:()=>Q(k),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")]}),k.status!=="Archived"&&e.jsxs("button",{onClick:()=>pe(k),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")]})]})]})}),Re=k=>{const ce=m(k.type),je=we.getLucideIcon(ce.icon),Pe=we.getColorClasses(ce.color),Ke=Dt[k.status];return e.jsxs("tr",{className:`group hover:bg-[var(--bg-hover)] transition-all cursor-pointer ${D===k.id?"relative z-10":""}`,onClick:()=>l(u(`/administration/tenants/${k.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} rounded-[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:k.name}),e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] truncate",children:k.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[k.type].label)})]}),k.organisation?.name&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5 truncate",children:k.organisation.name})]}),e.jsx("td",{className:"px-4 py-3",children:e.jsx(E.StatusBadge,{status:Ke.statusBadge,label:s(`tenants.status.${k.status.toLowerCase()}`)})}),e.jsx("td",{className:"px-4 py-3 hidden md:table-cell",children:k.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:k.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:k.memberCount??0})}),e.jsx("td",{className:"px-4 py-3 text-center hidden lg:table-cell",children:(k.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"}),k.pendingAccessRequestCount]}):e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:"-"})}),e.jsx("td",{className:"px-4 py-3",children:Ue(k)})]},k.id)},Oe=()=>e.jsx("tr",{children:e.jsx("td",{colSpan:Me,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:Me,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)] rounded-[var(--radius-card) var(--radius-card) 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:[N&&Oe(),!N&&_.length===0&&Ge(),!N&&_.length>0&&_.map(Re)]})]})}),Be=k=>[{label:s(`tenants.type.${k.type.toLowerCase()}`),variant:k.type==="Business"?"info":"primary"},{label:s(`tenants.status.${k.status.toLowerCase()}`),variant:Y(k.status)}],qe=k=>[{label:s("common.edit"),onClick:()=>l(u(`/administration/tenants/${k.id}`)),variant:"primary",icon:r.Edit2},{label:s("tenants.actions.viewMembers"),onClick:()=>l(u(`/administration/tenants/${k.id}/members`)),variant:"ghost",icon:r.Users}],Fe=k=>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:[k.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:[k.applicationCount??0," ",s("tenants.applications")]})]})]}),ze=k=>{const je=k.type==="Business"?"#3b82f6":"#8b5cf6";return{avatar:{letter:k.name.at(0)?.toUpperCase()??"",color:je},title:k.name,subtitle:k.slug,description:k.organisation?.name||void 0,stats:Fe(k),tags:Be(k),actions:qe(k),onClick:()=>l(u(`/administration/tenants/${k.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:[N&&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")})]}),!N&&_.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")})]}),!N&&_.length>0&&_.map(k=>e.jsx(E.EntityCard,{...ze(k)},k.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:w,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:k=>le("search",k.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:k=>le("status",k.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:k=>le("status",k.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:k=>le("type",k.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 k=W();return k?e.jsx(Ve.ConfirmModal,{isOpen:!!F,title:k.label,message:k.message,confirmLabel:k.label,variant:k.variant,loading:!!H,onConfirm:me,onCancel:()=>A(null)}):null})()]})}function bt(t){const{t:n}=de.useTranslation(["admin","common"]),[s,l]=a.useState(null),[d,i]=a.useState(!0),[c,h]=a.useState(null),[b,u]=a.useState(!1),[m,o]=a.useState(""),[x,p]=a.useState(""),[N,B]=a.useState(!1),P=a.useCallback(async()=>{if(t)try{h(null);const D=await E.adminApi.tenants.getById(t);l(D)}catch(D){console.error("Failed to load tenant:",D),h(n("admin:tenants.errors.loadFailed"))}finally{i(!1)}},[t,n]),L=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:h,loadTenant:P,editingGeneralInfo:b,setEditingGeneralInfo:u,editName:m,setEditName:o,editDescription:x,setEditDescription:p,savingGeneralInfo:N,setSavingGeneralInfo:B,handleSaveGeneralInfo:f,openEditGeneralInfo:L,closeEditGeneralInfo:g}}function Ut(t){const[n,s]=a.useState(null),[l,d]=a.useState(!1),[i,c]=a.useState(!1),[h,b]=a.useState([]),[u,m]=a.useState(!1),[o,x]=a.useState(""),[p,N]=a.useState(null),[B,P]=a.useState(!1),[L,g]=a.useState(null),[f,D]=a.useState([]),[y,H]=a.useState([]),[C,F]=a.useState(!1),[A,Z]=a.useState(!1),q=a.useCallback(async()=>{if(t){d(!0);try{const T=await E.adminApi.tenants.getMembers(t);s(T)}catch(T){console.error("Failed to load members:",T)}finally{d(!1)}}},[t]),U=a.useCallback(async()=>{m(!0);try{const T=await E.adminApi.users.getAll({pageSize:50}),j=new Set((n??[]).map(M=>M.userId));b(T.items.filter(M=>!j.has(M.id)))}catch(T){console.error("Failed to load users:",T)}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),N(null),x("")}catch(T){console.error("Failed to add member:",T)}finally{P(!1)}}},[t,p,q]),ee=a.useCallback(async T=>{if(t)try{await E.adminApi.tenants.removeMember(t,T),await q()}catch(j){console.error("Failed to remove member:",j)}},[t,q]),ae=a.useCallback(async()=>{F(!0);try{const T=await E.adminApi.roles.getAssignable();D(T)}catch(T){console.error("Failed to load roles:",T)}finally{F(!1)}},[]),$=a.useCallback(async T=>{g(T),H(T.roles.map(j=>j.roleId)),f.length===0&&await ae()},[f.length,ae]),X=a.useCallback(()=>{g(null),H([])},[]),J=a.useCallback(T=>{H(j=>j.includes(T)?j.filter(M=>M!==T):[...j,T])},[]),R=a.useCallback(async()=>{if(!(!t||!L)){Z(!0);try{await E.adminApi.tenants.assignMemberRoles(t,L.userId,y),await q(),X()}catch(T){console.error("Failed to save roles:",T)}finally{Z(!1)}}},[t,L,y,q,X]);return{members:n,setMembers:s,loadingMembers:l,setLoadingMembers:d,addingMember:i,setAddingMember:c,availableUsers:h,setAvailableUsers:b,loadingUsers:u,setLoadingUsers:m,userSearchTerm:o,setUserSearchTerm:x,selectedUserId:p,setSelectedUserId:N,addingMemberLoading:B,setAddingMemberLoading:P,selectedMemberForRoles:L,setSelectedMemberForRoles:g,availableRoles:f,setAvailableRoles:D,selectedRoleIds:y,setSelectedRoleIds:H,loadingRoles:C,setLoadingRoles:F,savingRoles:A,setSavingRoles:Z,loadMembers:q,loadAvailableUsers:U,handleAddMember:z,handleRemoveMember:ee,openRoleModal:$,closeRoleModal:X,handleSaveRoles:R,handleRoleToggle:J}}function Ot(t){const[n,s]=a.useState(null),[l,d]=a.useState(!1),[i,c]=a.useState(!1),[h,b]=a.useState([]),[u,m]=a.useState(!1),[o,x]=a.useState([]),[p,N]=a.useState(!1),[B,P]=a.useState(""),[L,g]=a.useState(null),f=a.useCallback(async()=>{if(t){d(!0);try{const C=await E.adminApi.tenants.getGroups(t);s(Array.isArray(C)?C:[])}catch(C){console.error("Failed to load groups:",C),s([])}finally{d(!1)}}},[t]),D=a.useCallback(async()=>{if(t){m(!0);try{const C=await E.adminApi.tenants.getAvailableGroups(t);b(C)}catch(C){console.error("Failed to load available groups:",C),b([])}finally{m(!1)}}},[t]),y=a.useCallback(async()=>{if(!t||o.length===0)return;N(!0);const C=[],F=[];for(const A of o)try{await E.adminApi.tenants.addGroupToTenant(t,A),C.push(A)}catch(Z){console.error(`Failed to add group ${A}:`,Z),F.push(A)}await f(),F.length===0?(c(!1),x([])):C.length===0||x(F),N(!1)},[t,o,f]),H=a.useCallback(async C=>{if(t){g(C);try{await E.adminApi.tenants.removeGroupFromTenant(t,C),await f()}catch(F){console.error("Failed to remove group:",F)}finally{g(null)}}},[t,f]);return{groups:n,setGroups:s,loadingGroups:l,setLoadingGroups:d,addingGroup:i,setAddingGroup:c,availableGroupsForTenant:h,setAvailableGroupsForTenant:b,loadingAvailableGroups:u,setLoadingAvailableGroups:m,selectedGroupIds:o,setSelectedGroupIds:x,assigningGroups:p,setAssigningGroups:N,groupSearchTerm:B,setGroupSearchTerm:P,removingGroupId:L,setRemovingGroupId:g,loadGroups:f,loadAvailableGroups:D,handleAssignGroups:y,handleRemoveGroup:H}}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,h]=a.useState(!1),[b,u]=a.useState([]),[m,o]=a.useState(!1),[x,p]=a.useState([]),[N,B]=a.useState(!1),[P,L]=a.useState(""),[g,f]=a.useState(null),[D,y]=a.useState("FullAccess"),[H,C]=a.useState("full"),[F,A]=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]),R=a.useCallback(async()=>{if(t){h(!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]),T=a.useCallback(()=>{h(!1),p([]),L(""),y("FullAccess"),C("full"),A([]),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"?F.filter(Y=>Y.isAssigned).map(Y=>Y.id):void 0,sectionIds:H==="custom"?F.flatMap(Y=>Y.sections.filter(re=>re.isAssigned).map(re=>re.id)):void 0};await E.adminApi.tenants.bulkAssignApplications(t,V),await J(),T(),n?.onApplicationsChanged?.()}catch(V){console.error("Failed to assign applications:",V)}finally{B(!1)}}},[t,x,D,H,F,J,T,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]),S=a.useCallback(V=>{X(V),ae(!0)},[]),v=a.useCallback(()=>{ae(!1),X(null)},[]),w=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 b;const V=P.toLowerCase();return b.filter(Y=>Y.label.toLowerCase().includes(V)||Y.code.toLowerCase().includes(V))},[b,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})}A(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})},[]),oe=a.useCallback(V=>{A(Y=>Y.map(re=>Gt(re,V)))},[]),ge=a.useCallback((V,Y)=>{A(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=F.length,Y=F.filter(he=>he.isAssigned||he.sections.some(fe=>fe.isAssigned)).length,re=F.reduce((he,fe)=>he+fe.sections.length,0),ve=F.reduce((he,fe)=>he+fe.sections.filter(ye=>ye.isAssigned).length,0);return{totalModules:V,assignedModules:Y,totalSections:re,assignedSections:ve}},[F]),_=a.useCallback(()=>{A(V=>V.map(Y=>qt(Y)))},[]),se=a.useCallback(()=>{A(V=>V.map(Y=>zt(Y)))},[]);return{applications:s,setApplications:l,loadingApps:d,setLoadingApps:i,addingApplication:c,setAddingApplication:h,availableApps:b,setAvailableApps:u,loadingAvailableApps:m,setLoadingAvailableApps:o,selectedAppIds:x,setSelectedAppIds:p,assigningApps:N,setAssigningApps:B,appSearchTerm:P,setAppSearchTerm:L,selectedAccessLevel:D,setSelectedAccessLevel:y,bulkAccessMode:H,setBulkAccessMode:C,bulkModules:F,setBulkModules:A,bulkExpandedModules:Z,setBulkExpandedModules:q,loadingBulkModules:U,setLoadingBulkModules:z,showCustomizeDrawer:ee,setShowCustomizeDrawer:ae,customizingApp:$,setCustomizingApp:X,loadApplications:J,availableAppsError:g,loadAvailableApps:R,handleAssignApplications:j,handleRemoveApplication:M,handleUpdateAccessLevel:O,openCustomizeDrawer:S,closeCustomizeDrawer:v,filteredAvailableApps:le,handleAppToggle:te,selectAllFilteredApps:Q,clearAppSelection:pe,loadBulkModulesForApp:me,toggleBulkModuleExpand:K,toggleBulkModule:oe,toggleBulkSection:ge,getBulkModuleCheckState:W,getBulkStats:G,selectAllBulkModules:_,clearBulkModules:se,handleSaveOverrides:w,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,h]=a.useState(!1),[b,u]=a.useState(null),[m,o]=a.useState(!1),[x,p]=a.useState(""),[N,B]=a.useState(!1),[P,L]=a.useState(!1),[g,f]=a.useState(st),[D,y]=a.useState(!1),[H,C]=a.useState(null),[F,A]=a.useState(!1),Z=a.useCallback(async T=>{h(!0);try{const j=await E.adminApi.organisations.getAvailable(T),M=Array.isArray(j)?j:j.items??[];i(M)}catch(j){console.error("Failed to load available organisations:",j),i([])}finally{h(!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),C(null),A(!1)},[]),z=a.useCallback(async()=>{if(!(!t||!b)){o(!0);try{await E.adminApi.tenants.linkOrganisation(t,b),U()}catch(T){console.error("Failed to link organisation:",T)}finally{o(!1)}}},[t,b,U]),ee=a.useCallback(async()=>{if(t){o(!0);try{await E.adminApi.tenants.unlinkOrganisation(t)}catch(T){console.error("Failed to unlink organisation:",T)}finally{o(!1)}}},[t]),ae=a.useCallback(async()=>{if(t&&!(!g.name||!g.businessIdentifier||!g.address.street||!g.address.city||!g.address.postalCode)){L(!0);try{const T=await E.adminApi.organisations.create(g);await E.adminApi.tenants.linkOrganisation(t,T.id),U()}catch(T){console.error("Failed to create and link organisation:",T)}finally{L(!1)}}},[t,g,U]),$=a.useCallback(T=>{const j=T.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(T=>{g.countryCode==="CH"?f(j=>({...j,businessIdentifier:$(T)})):f(j=>({...j,businessIdentifier:T})),C(null),A(!1)},[g.countryCode,$]),J=a.useCallback(async()=>{const T=g.businessIdentifier.replace(/[^0-9]/g,"");if(!g.businessIdentifier||T.length<9||g.countryCode!=="CH"){C(n("tenants.organisation.lookupIncomplete"));return}y(!0),C(null),A(!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}})),A(!0),setTimeout(()=>A(!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")?C(n("tenants.organisation.lookupServiceUnavailable")):M.includes("credentials")||M.includes("401")?C(n("tenants.organisation.lookupAuthError")):(M.includes("404")||M.includes("not found"),C(n("tenants.organisation.lookupFailed")))}finally{y(!1)}},[g.businessIdentifier,g.countryCode,n]),R=a.useCallback(T=>{const j=_t[T];j&&f(M=>({...M,countryCode:T,businessIdentifierType:j.defaultType,businessIdentifier:T==="CH"?"CHE-":"",address:{...M.address,countryCode:T,country:j.country}}))},[]);return{showLinkOrgModal:s,setShowLinkOrgModal:l,availableOrgs:d,setAvailableOrgs:i,loadingOrgs:c,setLoadingOrgs:h,selectedOrgId:b,setSelectedOrgId:u,linkingOrg:m,setLinkingOrg:o,orgSearchTerm:x,setOrgSearchTerm:p,showCreateOrgForm:N,setShowCreateOrgForm:B,creatingOrg:P,setCreatingOrg:L,newOrgForm:g,setNewOrgForm:f,lookupLoading:D,setLookupLoading:y,lookupError:H,setLookupError:C,lookupSuccess:F,setLookupSuccess:A,loadAvailableOrgs:Z,handleLinkOrganisation:z,handleUnlinkOrganisation:ee,handleCreateAndLinkOrganisation:ae,formatCheNumber:$,handleBusinessIdChange:X,handleZefixLookup:J,openLinkOrgModal:q,closeLinkOrgModal:U,handleCountryChange:R}}function Wt(t){const[n,s]=a.useState(null),[l,d]=a.useState(!1),[i,c]=a.useState(null),h=a.useCallback(async()=>{if(t){d(!0),c(null);try{const b=await E.adminApi.tenants.getTenantRoles(t);s(b)}catch(b){console.error("Failed to load tenant roles:",b),c("Failed to load roles")}finally{d(!1)}}},[t]);return{roles:n,loadingRoles:l,error:i,loadRoles:h}}function Xt({show:t,templates:n,selectedTemplateId:s,loadingTemplates:l,assigningTemplate:d,onTemplateSelect:i,onClose:c,onAssign:h,tenantTemplateId:b,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:h,disabled:d||!s||s===b,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(h=>h.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:h,onLinkOrgClick:b,onUnlinkOrg:u}){const{t:m}=de.useTranslation("admin"),o=xe.useNavigate(),[x,p]=a.useState(!1),[N,B]=a.useState({name:"",description:"",type:"Business"}),[P,L]=a.useState(!1),[g,f]=a.useState(!1),[D,y]=a.useState(!1),[H,C]=a.useState([]),[F,A]=a.useState(!1),[Z,q]=a.useState(""),[U,z]=a.useState(!1),[ee,ae]=a.useState(!1),[$,X]=a.useState(null),[J,R]=a.useState(!1),T=a.useCallback(async()=>{R(!0);try{const te=await De.ticketingApi.getConfiguration(t.id);X(te)}catch{X(null)}finally{R(!1)}},[t.id]);a.useEffect(()=>{T()},[T]);const j=a.useCallback(async()=>{A(!0);try{const te=await E.adminApi.templates.getAll();C(te.filter(Q=>Q.isActive))}catch(te){console.error("Failed to load templates:",te)}finally{A(!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)}}},S=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()},w=()=>{p(!1),B({name:"",description:"",type:"Business"})},ie=async()=>{if(N.name.trim()){L(!0);try{await E.adminApi.tenants.update(t.id,{name:N.name,description:N.description,type:N.type}),await d(),w()}catch(te){console.error("Failed to save tenant info:",te)}finally{L(!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:h,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:b,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:S,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:F,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:w,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:N.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:N.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 ${N.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))}),N.type==="Personal"&&t.organisationId&&e.jsx("p",{className:"mt-2 text-xs text-[var(--error-text)]",children:m("tenants.form.typeWarningOrg")}),N.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:w,className:"btn btn-secondary",children:m("common:cancel")}),e.jsx("button",{onClick:ie,disabled:P||!N.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"),[h,b]=a.useState({member:null,availableRoles:[],selectedRoleIds:[]}),[u,m]=a.useState(!1),[o,x]=a.useState(!1),[p,N]=a.useState(!1),[B,P]=a.useState([]),[L,g]=a.useState(!1),[f,D]=a.useState(""),[y,H]=a.useState(null),[C,F]=a.useState(!1),A=a.useCallback(async()=>{m(!0);try{return await E.adminApi.tenants.getTenantRoles(t)}catch(R){return console.error("Failed to load roles:",R),[]}finally{m(!1)}},[t]),Z=async R=>{b(j=>({...j,member:R,selectedRoleIds:R.roles.map(M=>M.roleId)}));const T=await A();b(j=>({...j,availableRoles:T}))},q=()=>{b({member:null,availableRoles:[],selectedRoleIds:[]})},U=R=>{b(T=>({...T,selectedRoleIds:T.selectedRoleIds.includes(R)?T.selectedRoleIds.filter(j=>j!==R):[...T.selectedRoleIds,R]}))},z=async()=>{if(h.member){x(!0);try{await E.adminApi.tenants.assignMemberRoles(t,h.member.userId,h.selectedRoleIds),await d(),q()}catch(R){console.error("Failed to save roles:",R)}finally{x(!1)}}},ee=async()=>{g(!0);try{const R=await E.adminApi.users.getAll({globalScope:!0});P(R.items)}catch(R){console.error("Failed to load available users:",R),P([])}finally{g(!1)}},ae=()=>{N(!0),H(null),D(""),ee()},$=()=>{N(!1),H(null),D(""),P([])},X=async()=>{if(y){F(!0);try{await E.adminApi.tenants.addMember(t,{userId:y}),await d(),$()}catch(R){console.error("Failed to add member:",R)}finally{F(!1)}}},J=[{key:"userDisplayName",label:c("common:name"),sortable:!0,render:R=>e.jsxs(xe.Link,{to:`/administration/users/${R.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 ${R.isOwner?"bg-[var(--warning-bg)] text-[var(--warning-text)]":"bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]"}`,children:R.isOwner?e.jsx(r.Crown,{className:"w-4 h-4"}):(R.userDisplayName||R.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:R.userDisplayName||R.userEmail}),R.userEmail&&R.userDisplayName&&e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block truncate",children:R.userEmail})]})]})},{key:"roles",label:c("tenants.members.role"),render:R=>e.jsxs("div",{className:"flex flex-wrap gap-1",children:[R.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")]}),R.roles.length>0&&R.roles.map(T=>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"}),T.roleName]},T.roleId)),R.roles.length===0&&!R.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:R=>{const T=R.membershipSource;return T==="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")]}),R.primaryGroupName&&e.jsxs(xe.Link,{to:`/administration/users/groups/${R.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"}),R.primaryGroupName]})]}):T==="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")}),R.primaryGroupName&&e.jsxs(xe.Link,{to:`/administration/users/groups/${R.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"}),R.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:R=>e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:R.joinedAt?es(R.joinedAt):"-"})},{key:"actions",label:c("common:actionsColumn"),align:"right",render:R=>e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx("button",{onClick:T=>{T.stopPropagation(),Z(R)},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"})}),!R.isOwner&&R.membershipSource!=="Group"&&e.jsx("button",{onClick:T=>{T.stopPropagation(),i(R.userId)},disabled:l===R.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:R.membershipSource==="Both"?c("tenants.members.source.cannotRemoveBoth"):c("tenants.members.remove"),children:l===R.userId?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.UserMinus,{className:"w-4 h-4"})}),!R.isOwner&&R.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:(R,T)=>(R.userDisplayName||"").toLowerCase().includes(T.toLowerCase())||(R.userEmail||"").toLowerCase().includes(T.toLowerCase()),getRowKey:R=>R.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}}),h.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:h.member.userDisplayName||h.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:h.availableRoles.length===0?e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] text-center py-4",children:c("tenants.members.manageRoles.noRolesAvailable")}):h.availableRoles.map(R=>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:h.selectedRoleIds.includes(R.id),onChange:()=>U(R.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:R.name}),R.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:R.description})]})]},R.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:R=>D(R.target.value),className:"input w-full",placeholder:c("tenants.members.searchUsers")})}),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("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(R=>f===""||R.fullName.toLowerCase().includes(f.toLowerCase())||R.email.toLowerCase().includes(f.toLowerCase())).map(R=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${y===R.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===R.id,onChange:()=>H(R.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:R.fullName}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:R.email})]})]},R.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||C,className:"btn btn-primary",children:C?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"),h=xe.useNavigate(),[b,u]=a.useState(!1),[m,o]=a.useState([]),[x,p]=a.useState(!1),[N,B]=a.useState([]),[P,L]=a.useState(!1),[g,f]=a.useState(""),[D,y]=a.useState({show:!1,group:null,loading:!1}),[H,C]=a.useState(!1),[F,A]=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)}},R=()=>{u(!0),B([]),f(""),J()},T=()=>{u(!1),B([]),f("")},j=v=>{B(w=>w.includes(v)?w.filter(ie=>ie!==v):[...w,v])},M=async()=>{if(N.length===0)return;L(!0);const v=[],w=[];for(const ie of N)try{await E.adminApi.tenants.addGroupToTenant(t,ie),v.push(ie)}catch(le){console.error(`Failed to add group ${ie}:`,le),w.push(ie)}await d(),w.length===0?T():v.length>0&&B(w),L(!1)},O=async()=>{if(F.trim()){ae(!0),X(null);try{const v=await St.groupsApi.create({name:F.trim(),description:Z.trim()||void 0,isSecurityGroup:U});await E.adminApi.tenants.addGroupToTenant(t,v.id),await d(),C(!1),A(""),q(""),z(!0)}catch(v){console.error("Failed to create group:",v);const w=v;w.response?.status===409?X(w.response.data?.message||c("tenants.groups.createError")):X(c("tenants.groups.createError"))}finally{ae(!1)}}},S=[{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:w=>{w.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:S,searchable:!0,searchPlaceholder:c("tenants.groups.searchPlaceholder"),searchFilter:(v,w)=>v.name.toLowerCase().includes(w.toLowerCase())||(v.description||"").toLowerCase().includes(w.toLowerCase()),getRowKey:v=>v.groupId,onRowClick:v=>h(`/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),C(!0)},className:"btn btn-secondary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),c("groups.createGroup")]}),e.jsxs("button",{onClick:R,className:"btn btn-primary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),c("tenants.groups.add")]})]}),pagination:{pageSize:10,showSizeSelector:!0}}),b&&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:T,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(w=>g===""||w.name.toLowerCase().includes(g.toLowerCase())||(w.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(w=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${N.includes(w.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:N.includes(w.groupId),onChange:()=>j(w.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:w.name}),w.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:w.description})]})]},w.groupId))})})(),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:T,className:"btn btn-secondary",children:c("common:cancel")}),e.jsx("button",{onClick:M,disabled:N.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:()=>C(!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:F,onChange:v=>A(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:()=>C(!1),className:"btn btn-secondary",children:c("common:cancel")}),e.jsxs("button",{onClick:O,disabled:!F.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:h,mode:b,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}),b!=="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:h,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:h}=de.useTranslation("admin"),[b,u]=a.useState(!0),[m,o]=a.useState(!1),[x,p]=a.useState(null),[N,B]=a.useState(null),[P,L]=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},C=a.useCallback(async()=>{if(t){u(!0),p(null);try{if(c==="template"){const M=(await E.adminApi.templates.getApplicationModules(s,d.applicationId)).map(S=>({id:S.moduleId,label:S.label,code:S.code,icon:S.icon,source:S.isAssigned?"Direct":"Unavailable",accessLevel:"FullAccess",isEffectivelyActive:S.isAssigned,isChecked:S.isAssigned,originalSource:S.isAssigned?"Direct":"Unavailable",sections:S.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),L(M.some(S=>S.isChecked)?"custom":"full");const O=new Set(M.filter(S=>S.sections.some(v=>v.isChecked)).map(S=>S.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(w=>({id:w.sectionId,label:w.label,code:w.code,icon:w.icon,source:w.source,accessLevel:w.accessLevel,isEffectivelyActive:w.isEffectivelyActive,isChecked:w.source!=="Revoked"&&w.source!=="Unavailable",originalSource:w.source}))}));f(M);const O=M.some(v=>v.source==="Direct"||v.source==="Overridden"||v.source==="Revoked"||v.sections.some(w=>w.source==="Direct"||w.source==="Overridden"||w.source==="Revoked"));L(O?"custom":"full");const S=new Set(M.filter(v=>v.sections.some(w=>w.source!=="Inherited"||!w.isEffectivelyActive)).map(v=>v.id));y(S)}}catch(j){p(j instanceof Error?j.message:"Failed to load data")}finally{u(!1)}}},[t,d.applicationId,s,c]);a.useEffect(()=>{C()},[C]);const F=j=>j.map(M=>({...M,isChecked:!0,sections:M.sections.map(O=>({...O,isChecked:!0}))})),A=j=>{j==="custom"&&P==="full"&&(g.some(O=>O.isChecked||O.sections.some(S=>S.isChecked))||f(F)),L(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 S=!M.find(v=>v.id===j)?.isChecked;return os(M,j,S)})},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(S=>S.isChecked)).map(O=>O.id),M=g.flatMap(O=>O.sections.filter(S=>S.isChecked).map(S=>S.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(h("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(S=>S.originalSource==="Direct"||S.originalSource==="Overridden"||S.originalSource==="Revoked").map(S=>({moduleId:S.id,action:j})),O=g.flatMap(S=>S.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(h("tenants.applications.customize.resetSuccess","Customizations reset")),i?.(),setTimeout(()=>n(),1e3)}catch(j){p(j instanceof Error?j.message:"Failed to reset")}finally{o(!1)}},T=(()=>{const j=g.length,M=g.filter(Q=>Q.isChecked).length,O=g.reduce((Q,pe)=>Q+pe.sections.length,0),S=g.reduce((Q,pe)=>Q+pe.sections.filter(me=>me.isChecked).length,0),v=g.filter(Q=>Q.source==="Inherited").length,w=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:S,inheritedCount:v,directCount:w,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:h("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:b?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})]}),N&&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:N})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("label",{className:"text-sm font-medium text-[var(--text-secondary)]",children:h("tenants.applications.customize.accessMode","Access Mode")}),e.jsxs("button",{type:"button",onClick:()=>A("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:h("tenants.applications.customize.fullAccess","Full Application Access")}),e.jsx("p",{className:"text-sm text-[var(--text-muted)] mt-1",children:h("tenants.applications.customize.fullAccessHint","Access to all modules and sections of this application")})]})]}),e.jsxs("button",{type:"button",onClick:()=>A("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:h("tenants.applications.customize.customAccess","Custom Access")}),e.jsx("p",{className:"text-sm text-[var(--text-muted)] mt-1",children:h("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:h("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:h},j.id)),g.length===0&&e.jsx("div",{className:"p-6 text-center text-sm text-[var(--text-muted)]",children:h("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:[T.checkedModules,"/",T.totalModules," ",h("tenants.applications.customize.modules","modules"),","," ",T.checkedSections,"/",T.totalSections," ",h("tenants.applications.customize.sections","sections")]}),(T.revokedInheritedModules>0||T.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"}),T.revokedInheritedModules>0&&e.jsxs("span",{children:[T.revokedInheritedModules," ",h("tenants.applications.customize.modules")," ",h("tenants.applications.customize.revokedLabel").toLowerCase()]}),T.revokedInheritedModules>0&&T.revokedInheritedSections>0&&", ",T.revokedInheritedSections>0&&e.jsxs("span",{children:[T.revokedInheritedSections," ",h("tenants.applications.customize.sections")," ",h("tenants.applications.customize.revokedLabel").toLowerCase()]})]})]}):h("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"}),h("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:h("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"}),h("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:h,onRemoveApplication:b,addingApplication:u,availableAppsError:m,filteredAvailableApps:o,loadingAvailableApps:x,selectedAppIds:p,assigningApps:N,appSearchTerm:B,selectedAccessLevel:P,bulkAccessMode:L,bulkModules:g,bulkExpandedModules:f,loadingBulkModules:D,showCustomizeDrawer:y,customizingApp:H,onOpenAddApplication:C,onCloseAddApplication:F,onAssignApplications:A,onAppToggle:Z,onSelectAllApps:q,onClearAppSelection:U,onOpenCustomizeDrawer:z,onCloseCustomizeDrawer:ee,onLoadBulkModules:ae,onToggleBulkModuleExpand:$,onToggleBulkModule:X,onToggleBulkSection:J,onGetBulkModuleCheckState:R,onGetBulkStats:T,onSelectAllBulkModules:j,onClearBulkModules:M,setAppSearchTerm:O,setSelectedAccessLevel:S,setBulkAccessMode:v}){const{t:w}=de.useTranslation("admin"),ie=a.useMemo(()=>T(),[T]),[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 oe=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?w("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})," ",w("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})," ",w("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})," ",w("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]})," ",w("tenants.applications.customize.modules")," / ",e.jsx("span",{className:"font-medium text-[var(--text-primary)]",children:K.totalSectionCount})," ",w("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 ${oe?.dotBg??"bg-green-500"}`}),e.jsx("select",{value:K.accessLevel,onChange:W=>{h(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:w(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"}),w("tenants.applications.customize.button")]}),b&&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:w("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:w("tenants.applications.assigned")}),e.jsxs("button",{onClick:C,className:"btn btn-primary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),w("tenants.applications.add")]})]}),d?vs():null,!d&&(!l||l.length===0)?gs(w):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:[w("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:[w("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:w("tenants.applications.modal.title")}),e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:w("tenants.applications.modal.subtitle")})]}),e.jsx("button",{onClick:F,className:"p-1 hover:bg-[var(--bg-hover)] rounded-[var(--radius-button)]","aria-label":w("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:[w("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:w("tenants.applications.modal.selectAll")}),p.length>0&&e.jsx("button",{type:"button",onClick:U,className:"text-xs text-[var(--text-muted)] hover:underline",children:w("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:w("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:w("tenants.applications.modal.errorForbidden")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:w("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:w("tenants.applications.modal.errorGeneric")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:w("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:w("tenants.applications.modal.noAvailable")})]}),!x&&!m&&o.length>0&&o.map(K=>{const oe=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 ${oe?"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 ${oe?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:oe&&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:w("tenants.applications.modal.moduleAccess")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mb-4",children:w("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 ${L==="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 ${L==="full"?"border-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:L==="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:w("tenants.applications.customize.fullAccess")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:w("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 ${L==="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 ${L==="custom"?"border-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:L==="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:w("tenants.applications.customize.customAccess")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:w("tenants.applications.modal.customAccessModulesHint")})]})]})]}),L==="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:w("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:w("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," ",w("tenants.applications.customize.modules"),","," ",ie.assignedSections,"/",ie.totalSections," ",w("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:w("tenants.applications.modal.selectAllModules")}),ie.assignedSections>0&&e.jsx("button",{type:"button",onClick:M,className:"text-xs text-[var(--text-muted)] hover:underline",children:w("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 oe=R(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(oe)}`,children:[oe==="checked"&&e.jsx(r.Check,{className:"w-2.5 h-2.5 text-white"}),oe==="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:w("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:w("tenants.applications.modal.accessLevel")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mb-4",children:w("tenants.applications.modal.accessLevelHint")}),e.jsx(bs,{selectedAccessLevel:P,setSelectedAccessLevel:S})]})]}),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?w("tenants.applications.modal.selectedCount",{count:p.length}):w("tenants.applications.modal.noSelection")}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:F,className:"px-4 py-2 rounded-[var(--radius-button)] font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]",children:w("common:cancel")}),e.jsxs("button",{onClick:A,disabled:p.length===0||N,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:[N?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Plus,{className:"w-4 h-4"}),w("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:w("tenants.applications.removeConfirm.title"),message:e.jsxs("div",{className:"space-y-3 text-left",children:[e.jsx("p",{children:w("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:w("tenants.applications.removeConfirm.impactTitle")}),e.jsxs("ul",{className:"text-sm text-[var(--text-secondary)] space-y-1",children:[e.jsx("li",{children:w("tenants.applications.removeConfirm.impactModules",{count:le.app.totalModuleCount})}),e.jsx("li",{children:w("tenants.applications.removeConfirm.impactSections",{count:le.app.totalSectionCount})})]})]})]}),variant:"danger",confirmLabel:w("tenants.applications.remove"),loading:le.loading,onConfirm:async()=>{if(!(!b||!le.app)){te(K=>({...K,loading:!0}));try{await b(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:h}=E.useNavigation(),b=bt(n),u=Ut(n),m=Ot(n),o=a.useCallback(()=>{c&&n===c.id&&h()},[c,n,h]),x=a.useMemo(()=>({onApplicationsChanged:o}),[o]),p=Vt(n,x),N=Wt(n),B=Kt(n),P=Qe.useAccessRequests("tenant",n),[L,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}b.loadTenant()},[n,s,b]),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 N.loadRoles();break;case"applications":await p.loadApplications();break;case"requests":await P.loadRequests();break}H(z=>new Set(z).add(l))})()},[l,n,y,u,m,N,p,P]);const C=async U=>{if(!b.tenant||b.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(b.tenant.id):U==="Suspended"?await E.adminApi.tenants.suspend(b.tenant.id):U==="Archived"&&await E.adminApi.tenants.archive(b.tenant.id),await i(),await b.loadTenant()}catch(ae){console.error("Failed to update tenant status:",ae)}finally{g(null),D({...f,show:!1})}}})},F=async()=>{g("refresh");try{const U=[b.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(N.loadRoles());break;case"applications":U.push(p.loadApplications());break;case"requests":U.push(P.loadRequests());break}await Promise.all(U)}finally{g(null)}};if(b.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(!b.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:b.error||t("admin:tenants.notFound")})]})})]});const A=b.tenant,Z=rt[A.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:A.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:A.name}),e.jsx("p",{className:"text-sm sm:text-base text-[var(--text-secondary)]",children:A.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(A.status),t(`admin:tenants.status.${A.status.toLowerCase()}`)]}),e.jsx("span",{className:`px-3 py-1 rounded-[var(--radius-badge)] text-sm ${A.type==="Business"?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--accent-bg)] text-[var(--accent-text)]"}`,children:t(`admin:tenants.type.${A.type.toLowerCase()}`)}),A.status!=="Active"&&A.status!=="Archived"&&e.jsxs("button",{onClick:()=>C("Active"),disabled:L!==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:[L==="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")]}),A.status==="Active"&&e.jsxs("button",{onClick:()=>C("Suspended"),disabled:L!==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:[L==="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:F,disabled:L==="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 ${L==="refresh"?"animate-spin":""}`})})]})]}),b.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:b.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:A,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:L,onRefresh:F,onEditClick:b.openEditGeneralInfo,onStatusChange:U=>{C({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:L,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:N.roles,loadingRoles:N.loadingRoles}),l==="applications"&&e.jsx(ht,{tenantId:n,tenantName:A.name,applications:p.applications,loadingApps:p.loadingApps,actionLoading:L,onRefresh:p.loadApplications,onUpdateAccessLevel:p.handleUpdateAccessLevel,onRemoveApplication:p.handleRemoveApplication,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(),b.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,h,b,u,m,o,x,p,N,B,P=!1){return{name:t,legalName:n||void 0,countryCode:s,businessIdentifierType:l,businessIdentifier:d,vatNumber:i||void 0,address:{street:c,street2:h||void 0,postalCode:b,city:u,state:m||void 0,country:o,countryCode:x},phone:p||void 0,email:N||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,h]=a.useState(null),[b,u]=a.useState(null),[m,o]=a.useState(fs(d)),[x,p]=a.useState(i?"existing":"none"),[N,B]=a.useState(!1),[P,L]=a.useState(!0),[g,f]=a.useState(null),[D,y]=a.useState(!1),[H,C]=a.useState(null),[F,A]=a.useState(!1),[Z,q]=a.useState(!1),[U,z]=a.useState(null),[ee,ae]=a.useState([]),[$,X]=a.useState(""),[J,R]=a.useState(!1);a.useEffect(()=>{(async()=>{try{const ne=await E.adminApi.tenants.getConfig();h(ne.enableB2B),u(ne.enableB2C),i||o(ys(ne))}catch(ne){console.error("Failed to load tenant config:",ne),h(!0),u(!0)}finally{L(!1)}})()},[i]),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}),T||k(ne.name)}catch(ne){console.error("Failed to load organisation:",ne)}})()},[i]),a.useEffect(()=>{if(x!=="existing")return;const ne=setTimeout(async()=>{R(!0);try{const ue=await E.adminApi.organisations.getAvailable($||void 0);ae(ue)}catch(ue){console.error("Failed to search organisations:",ue)}finally{R(!1)}},300);return()=>clearTimeout(ne)},[x,$]);const[T,j]=a.useState(""),[M,O]=a.useState(""),[S,v]=a.useState(""),[w,ie]=a.useState(""),[le,te]=a.useState(""),[Q,pe]=a.useState("CH"),[me,K]=a.useState("UID_CHE"),[oe,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),C(null),A(!1)};a.useEffect(()=>{Q==="CH"&&me==="UID_CHE"&&ge(!oe||oe==="CHE-"?"CHE-":W(oe))},[Q,me,oe]);const[_,se]=a.useState(""),[V,Y]=a.useState(""),[re,ve]=a.useState(""),[he,fe]=a.useState(""),[ye,$e]=a.useState(""),[Te,Me]=a.useState(""),[Se,Ue]=a.useState(""),[Re,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),k=I=>{j(I),(!M||M===Ce(T))&&O(Ce(I))},ce=()=>{const I=oe.replace(/[^0-9]/g,"");return!oe||I.length<9||!Q?(C(t("admin:tenants.create.organisation.lookupIncomplete")),!1):!0},je=I=>{I.name&&(ie(I.name),T||k(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&&Me(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(ce()){y(!0),C(null),A(!1);try{const I=await E.adminApi.organisations.lookup(Q,oe);je(I),Pe(I),q(!0),A(!0),setTimeout(()=>A(!1),3e3)}catch(I){console.error("[Zefix Lookup] Failed:",I);const ne=I instanceof Error?I.message:"";C(Ke(ne))}finally{y(!1)}}},yt=async()=>{const I={name:T,slug:M||Ce(T),description:S||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:T,slug:M||Ce(T),description:S||void 0,organisationId:U.id};else if(x==="create"){const ue=js(w,le,Q,me,oe,_,ye,Te,Se,Re,Ge,Be,Fe,V,re,he,Z);I={name:T,slug:M||Ce(T),description:S||void 0,organisation:ue}}else I={name:T,slug:M||Ce(T),description:S||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=!!(T&&(m!=="Business"?!0:!!(T&&(x==="existing"?!!U:x!=="create"?!0:!!(w&&Q&&me&&oe&&ye&&Se&&Re&&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&&b===!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 ${b&&c?"grid-cols-2":"grid-cols-1"}`,children:[b&&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:T,onChange:I=>k(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:S,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),T||k(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:w,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:oe,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||!oe||oe.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]}),F&&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:oe.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=>Me(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:Re,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:N||!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:[N?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:h=0,fill:b="#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),N=Math.cos(-x*l),B=n+(i+10)*N,P=s+(i+10)*p,L=n+(i+30)*N,g=s+(i+30)*p,f=L+(N>=0?1:-1)*22,D=g,y=N>=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:h,fill:b}),e.jsx(be.Sector,{cx:n,cy:s,startAngle:c,endAngle:h,innerRadius:i+6,outerRadius:i+10,fill:b}),e.jsx("path",{d:`M${B},${P}L${L},${g}L${f},${D}`,stroke:b,fill:"none"}),e.jsx("circle",{cx:f,cy:D,r:2,fill:b,stroke:"none"}),e.jsx("text",{x:f+(N>=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),h=t.map((u,m)=>({...u,tenantType:n==="duration"?"_duration":u.tenantType,name:u.tenantName,value:d(u),fill:it[m%it.length]})),b=(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:h,cx:"50%",cy:"50%",innerRadius:70,outerRadius:110,fill:"#8884d8",dataKey:"value",onMouseEnter:b,children:h.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:h.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,h]=a.useState(null);if(a.useEffect(()=>{(async()=>{try{i(!0);const o=await E.tenantAnalyticsApi.getTrends(t);l(o),h(null)}catch(o){h(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 b=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:b,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 h=s(i),b=h/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:h.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:`${b}%`,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,h]=a.useState(!0),[b,u]=a.useState(!1),[m,o]=a.useState(null),[x,p]=a.useState(30),[N,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,N==="access"?"access":"duration")]);l(f),i(D)}catch(f){o(f instanceof Error?f.message:"Failed to load dashboard")}finally{h(!1),u(!1)}},[x,N]);a.useEffect(()=>{h(!0),P()},[P]);const L=()=>{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:L,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 ${N==="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 ${N==="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:L,disabled:b,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 ${b?"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)]"}),N==="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:N}):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:N==="access"?f.accessCount:`${f.totalDurationMinutes}m`}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:N==="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 ${N==="access"?"d'utilisation":"du temps passé"} par Tenant`})," (",x," ",n("common.days","jours"),")"]}),e.jsx(ks,{period:x,mode:N})]}),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 ${N==="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:N}):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}))}),Ms=t=>({...t,isAssigned:!1,sections:t.sections.map(n=>({...n,isAssigned:!1}))});function Rs(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),[h,b]=a.useState([]),[u,m]=a.useState(!1),[o,x]=a.useState([]),[p,N]=a.useState(!1),[B,P]=a.useState(""),[L,g]=a.useState(null),[f,D]=a.useState("FullAccess"),[y,H]=a.useState("full"),[C,F]=a.useState([]),[A,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(Rs):[];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);b(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]),R=a.useCallback(()=>{c(!1),x([]),P(""),D("FullAccess"),H("full"),F([]),Z(new Set)},[]),T=a.useCallback(async()=>{if(!(!t||o.length===0)){N(!0);try{const G={applicationIds:o,accessLevel:f,accessMode:y,moduleIds:y==="custom"?C.filter(_=>_.isAssigned).map(_=>_.id):void 0,sectionIds:y==="custom"?C.flatMap(_=>_.sections.filter(se=>se.isAssigned).map(se=>se.id)):void 0};await E.adminApi.templates.bulkAssignApplications(t,G),await X(),R()}catch(G){console.error("Failed to assign applications:",G)}finally{N(!1)}}},[t,o,f,y,C,X,R]),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)},[]),S=a.useCallback(()=>{ee(!1),$(null)},[]),v=a.useMemo(()=>{if(!B)return h;const G=B.toLowerCase();return h.filter(_=>_.label.toLowerCase().includes(G)||_.code.toLowerCase().includes(G))},[h,B]),w=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})}F(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=>{F(_=>_.map(se=>Ls(se,G)))},[]),me=a.useCallback((G,_)=>{F(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"},[]),oe=a.useCallback(()=>{const G=C.length,_=C.filter(Y=>Y.isAssigned||Y.sections.some(re=>re.isAssigned)).length,se=C.reduce((Y,re)=>Y+re.sections.length,0),V=C.reduce((Y,re)=>Y+re.sections.filter(ve=>ve.isAssigned).length,0);return{totalModules:G,assignedModules:_,totalSections:se,assignedSections:V}},[C]),ge=a.useCallback(()=>{F(G=>G.map(_=>Is(_)))},[]),W=a.useCallback(()=>{F(G=>G.map(_=>Ms(_)))},[]);return{applications:n,setApplications:s,loadingApps:l,setLoadingApps:d,addingApplication:i,setAddingApplication:c,availableApps:h,setAvailableApps:b,loadingAvailableApps:u,setLoadingAvailableApps:m,selectedAppIds:o,setSelectedAppIds:x,assigningApps:p,setAssigningApps:N,appSearchTerm:B,setAppSearchTerm:P,selectedAccessLevel:f,setSelectedAccessLevel:D,bulkAccessMode:y,setBulkAccessMode:H,bulkModules:C,setBulkModules:F,bulkExpandedModules:A,setBulkExpandedModules:Z,loadingBulkModules:q,setLoadingBulkModules:U,showCustomizeDrawer:z,setShowCustomizeDrawer:ee,customizingApp:ae,setCustomizingApp:$,loadApplications:X,availableAppsError:L,loadAvailableApps:J,handleAssignApplications:T,handleRemoveApplication:j,handleUpdateAccessLevel:M,openCustomizeDrawer:O,closeCustomizeDrawer:S,filteredAvailableApps:v,handleAppToggle:w,selectAllFilteredApps:ie,clearAppSelection:le,loadBulkModulesForApp:te,toggleBulkModuleExpand:Q,toggleBulkModule:pe,toggleBulkSection:me,getBulkModuleCheckState:K,getBulkStats:oe,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),[h,b]=a.useState(!0),[u,m]=a.useState(null),o=Bs(n),x=a.useCallback(async()=>{if(n)try{b(!0);const B=await E.adminApi.templates.getById(n);c(B),m(null)}catch{m(t("templates.errors.loadFailed"))}finally{b(!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]),h)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,N=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"}),N]})]})]})]}),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,h]=a.useState(null),b=a.useCallback(async()=>{try{i(!0),h(null);const u=await E.adminApi.templates.getTenants(t);l(u)}catch{h(n("templates.errors.loadFailed"))}finally{i(!1)}},[t,n]);return a.useEffect(()=>{b()},[b]),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:()=>b(),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,h]=a.useState(null),b=a.useCallback(async()=>{try{i(!0),h(null);const m=await E.adminApi.templates.getAiInstances(t);l(m)}catch{h(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 b()}catch{h(n("templates.errors.loadFailed"))}},[t,n,b]);return a.useEffect(()=>{b()},[b]),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:()=>b(),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,h]=a.useState(null),b=a.useCallback(async()=>{try{i(!0);const x=await E.adminApi.templates.getAll();l(x),h(null)}catch{h(t("tenants.template.errors.loadFailed"))}finally{i(!1)}},[t]);a.useEffect(()=>{b()},[b]);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,h]=a.useState(""),[b,u]=a.useState("Business"),[m,o]=a.useState(!1),[x,p]=a.useState(null),N=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:b});n(`/administration/tenants/template/${P.id}`)}catch(P){console.error("Failed to create template:",P);const L=P;L.response?.status===409?p(L.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:N,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=>h(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:b,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"),h=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(()=>{h()},[h]);const b={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:b.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:b.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:b.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:h,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=>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;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=({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.Settings,{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 Qs({config:t,loading:n,canEdit:s,onRefresh:l,onConfigUpdated:d,t:i,entraApi:c}){const[h,b]=a.useState(!1),[u,m]=a.useState(!1),[o,x]=a.useState(!1),[p,N]=a.useState(null),[B,P]=a.useState(!1),[L,g]=a.useState(null),[f,D]=a.useState(null),[y,H]=a.useState(null),[C,F]=a.useState(t?.hasClientSecret??!1),[A,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:""}),F(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=(S,v)=>{const w=Ys(v)?void 0:i("entra:settings.invalidGuidFormat");Z(ie=>({...ie,[S]:w}))},$=(S,v)=>{U(w=>({...w,[S]:v})),(S==="tenantId"||S==="clientId")&&ae(S,v)},X=!!(A.tenantId||A.clientId),J=!o&&!X&&q.tenantId&&q.clientId&&(q.clientSecret||C),R=!u&&!X&&q.tenantId&&q.clientId&&q.clientSecret,T=async S=>{try{await navigator.clipboard.writeText(S),H(S),setTimeout(()=>H(null),2e3)}catch(v){console.error("Failed to copy:",v instanceof Error?v.message:"Unknown error")}},j=async()=>{if(J){x(!0),N(null),g(null),D(null);try{const S=q.clientSecret?await c.settings.testConnection({tenantId:q.tenantId,clientId:q.clientId,clientSecret:q.clientSecret}):await c.settings.testStoredConnection();N(S),S.success?D(i("entra:settings.testSuccess")):g(S.errorMessage||i("entra:settings.testFailed"))}catch(S){console.error("Connection test failed:",S instanceof Error?S.message:"Unknown error"),g(i("entra:settings.testFailed"))}finally{x(!1)}}},M=async()=>{if(R){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")),F(!0),U(S=>({...S,clientSecret:""})),d()}catch(S){console.error("Failed to save credentials:",S instanceof Error?S.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(S){console.error("Failed to save settings:",S instanceof Error?S.message:"Unknown error"),g(i("entra:settings.saveError"))}finally{m(!1)}};return!s||!h?e.jsx(Zs,{config:t,loading:n,canEdit:s,onRefresh:l,onEdit:()=>b(!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(S=>e.jsxs("button",{onClick:()=>T(S.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:S.code}),y===S.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)]"})]},S.code))})]})]})}),L&&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:L})]}),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:S=>$("tenantId",S.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 ${A.tenantId?"border-[var(--error-border)] focus:ring-[var(--error-border)]":"border-[var(--border-color)] focus:ring-[var(--color-accent-500)]"}`}),A.tenantId&&e.jsx("p",{className:"mt-1.5 text-xs text-[var(--error-text)]",children:A.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:S=>$("clientId",S.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 ${A.clientId?"border-[var(--error-border)] focus:ring-[var(--error-border)]":"border-[var(--border-color)] focus:ring-[var(--color-accent-500)]"}`}),A.clientId&&e.jsx("p",{className:"mt-1.5 text-xs text-[var(--error-text)]",children:A.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"),C&&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:S=>$("clientSecret",S.target.value),placeholder:C?"••••••••••••••••":"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&&!C,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(S=>({...S,syncEnabled:!S.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:S=>ee(v=>({...v,syncIntervalMinutes:Number(S.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,children:["15 ",i("common:minutes")]}),e.jsxs("option",{value:30,children:["30 ",i("common:minutes")]}),e.jsxs("option",{value:60,children:["1 ",i("common:hour")]}),e.jsxs("option",{value:120,children:["2 ",i("common:hours")]}),e.jsxs("option",{value:360,children:["6 ",i("common:hours")]}),e.jsxs("option",{value:720,children:["12 ",i("common:hours")]}),e.jsxs("option",{value:1440,children:["24 ",i("common:hours")]})]})]}),e.jsx(Ye,{checked:z.useDeltaSync,onChange:()=>ee(S=>({...S,useDeltaSync:!S.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:S=>ee(v=>({...v,defaultConflictResolution:S.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",children:i("entra:settings.conflictResolutions.manualReview")}),e.jsx("option",{value:"EntraWins",children:i("entra:settings.conflictResolutions.entraWins")}),e.jsx("option",{value:"LocalWins",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(S=>({...S,syncOnlyActiveUsers:!S.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(S=>{const v=z.syncUserTypes.split(",").map(ie=>ie.trim()).filter(Boolean),w=v.includes(S.id);return e.jsxs("label",{className:`flex items-center gap-3 p-3 rounded-[var(--radius-button)] border cursor-pointer transition-all ${w?"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:w,onChange:()=>{let ie=w?v.filter(le=>le!==S.id):[...v,S.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.${S.labelKey}`)})]},S.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:()=>b(!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 Js=(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())},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,h]=a.useState([]),[b,u]=a.useState(!1),[m,o]=a.useState(1),[x,p]=a.useState(0),[N,B]=a.useState(null);return{syncing:t,setSyncing:n,lastSyncResult:s,setLastSyncResult:l,syncError:d,setSyncError:i,history:c,setHistory:h,historyLoading:b,setHistoryLoading:u,historyPage:m,setHistoryPage:o,historyTotalCount:x,setHistoryTotalCount:p,cancellingSessionId:N,setCancellingSessionId:B}};function ra({config:t,conflicts:n,syncStatus:s,loading:l,canSync:d,onRefresh:i,onResolveConflict:c,onSyncAll:h,onLoadHistory:b,onCancelSession:u,activeSyncSession:m,t:o}){const{syncing:x,setSyncing:p,lastSyncResult:N,setLastSyncResult:B,syncError:P,setSyncError:L,history:g,setHistory:f,historyLoading:D,setHistoryLoading:y,historyPage:H,setHistoryPage:C,historyTotalCount:F,setHistoryTotalCount:A,cancellingSessionId:Z,setCancellingSessionId:q}=aa(),U=5,z=a.useCallback(async $=>{y(!0);try{const X=await b($,U);if(!X)return;f(X.sessions),A(X.totalCount),C($)}catch(X){console.error("Failed to load history:",X)}finally{y(!1)}},[b,f,y,C,A]);a.useEffect(()=>{t?.isConfigured&&z(1)},[t?.isConfigured,z]);const ee=async()=>{p(!0),L(null),B(null);try{const $=await h();if(!$)return;B($),i(),z(1)}catch($){console.error("Sync failed:",$ instanceof Error?$.message:"Unknown error"),L(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})]}),N&&e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${N.success?"bg-[var(--success-bg)] border-[var(--success-border)]":"bg-[var(--error-bg)] border-[var(--error-border)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[N.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 ${N.success?"text-[var(--success-text)]":"text-[var(--error-text)]"}`,children:N.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:["+",N.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:["~",N.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:["-",N.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:N.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 ${N.conflicts>0?"text-[var(--warning-text)]":"text-[var(--text-primary)]"}`,children:N.conflicts})]})]}),N.errorMessage&&e.jsx("p",{className:"mt-3 text-sm text-[var(--error-text)]",children:N.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))})]})}),F>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,F),total:F})}),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>=F||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,h]=a.useState("config"),[b,u]=a.useState(!0),[m,o]=a.useState(null),x=a.useMemo(()=>Je.createEntraApi(n),[n]),[p,N]=a.useState(null),[B,P]=a.useState([]),[L,g]=a.useState([]),[f,D]=a.useState(null),[y,H]=a.useState(!1),[C,F]=a.useState(null),[A,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)&&h(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,S,v]=await Promise.all([x.settings.getConfiguration(),x.conflicts.getAll(),x.dashboard.getSyncStatus()]);N(O??null),P(Array.isArray(S)?S:[]),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(S=>{Js(S,F,J)}),[i,J]),a.useEffect(()=>{if(!C){Z("00:00");return}Z(ct(C.startedAt));const O=setInterval(()=>{Z(ct(C.startedAt))},1e3);return()=>clearInterval(O)},[C]);const R=a.useCallback(async(O,S)=>{if(!(!f||y)){H(!0);try{await x.conflicts.resolve(f.id,{resolution:O,notes:S||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]),T=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,S)=>{try{return await x.sync.getHistory(O,S)}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(S){return console.error("Failed to cancel session:",S instanceof Error?S.message:"Unknown error"),!1}},[x]);return b?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:"×"})]}),C&&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:["⏱ ",A]})})]}),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 S=O.icon,v=c===O.id,w=O.id==="sync"&&B.length>0;return e.jsxs("button",{onClick:()=>h(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(S,{className:"w-4 h-4"}),e.jsx("span",{className:"hidden sm:inline",children:O.label}),w&&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(Qs,{config:p,loading:b,canEdit:ee,onRefresh:J,onConfigUpdated:J,t:s,entraApi:x}),c==="sync"&&e.jsx(ra,{config:p,conflicts:B,syncStatus:L,loading:b,canSync:ae,onRefresh:J,onResolveConflict:D,onSyncAll:T,onLoadHistory:j,onCancelSession:M,activeSyncSession:C,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:R,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),[h,b]=a.useState(!1),[u,m]=a.useState(!1),[o,x]=a.useState(null),[p,N]=a.useState(null),[B,P]=a.useState(!1),[L,g]=a.useState(null),[f,D]=a.useState(null),[y,H]=a.useState(null),[C,F]=a.useState({}),[A,Z]=a.useState("SmartStack"),[q,U]=a.useState(""),[z,ee]=a.useState(""),[ae,$]=a.useState(""),[X,J]=a.useState(""),[R,T]=a.useState(""),[j,M]=a.useState(""),[O,S]=a.useState(""),[v,w]=a.useState(!1),[ie,le]=a.useState(60),te=A==="GLPI",Q=W=>C[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||""),T(""),M(W.glpiEntityId!=null?String(W.glpiEntityId):""),S(W.glpiRequestTypeId!=null?String(W.glpiRequestTypeId):""),w(W.syncEnabled),le(W.syncIntervalMinutes)}catch{g(null)}finally{d(!1)}},[t]);a.useEffect(()=>{pe()},[pe]);const me=()=>{if(!te)return F({}),!0;const W=oa({glpiBaseUrl:q,glpiClientId:z,glpiClientSecret:ae,glpiUsername:X,glpiPassword:R},L,s);return F(W),Object.keys(W).length===0},K=async()=>{if(!me())return;c(!0),x(null),N(null);const W=ca({glpiBaseUrl:q,glpiClientId:z,glpiClientSecret:ae,glpiUsername:X,glpiPassword:R,glpiEntityId:j,glpiRequestTypeId:O},A,v,ie);try{const G=await De.ticketingApi.saveConfiguration(t,W);g(G),$(""),T(""),N(s("admin:tenants.ticketing.saveSuccess"))}catch{x(s("admin:tenants.ticketing.saveFailed"))}finally{c(!1)}},oe=async()=>{b(!0),H(null),x(null),N(null);try{const W=await De.ticketingApi.testConnection(t,{glpiBaseUrl:q,glpiClientId:z,glpiClientSecret:ae||void 0,glpiUsername:X,glpiPassword:R||void 0});H(W),W.success?N(s("admin:tenants.ticketing.testSuccess")):x(W.errorMessage||s("admin:tenants.ticketing.testFailed"))}catch{x(s("admin:tenants.ticketing.testFailed"))}finally{b(!1)}},ge=async()=>{m(!0),D(null),x(null),N(null);try{const W=await De.ticketingApi.triggerSync(t);D(W),W.success?N(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:()=>N(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:A,onChange:W=>{const G=W.target.value;Z(G),G!=="GLPI"&&w(!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),F(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`}),C.glpiBaseUrl&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:C.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),F(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`}),C.glpiClientId&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:C.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")}),L?.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),F(G=>{const{glpiClientSecret:_,...se}=G;return se})},placeholder:L?.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"})})]}),C.glpiClientSecret&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:C.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),F(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`}),C.glpiUsername&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:C.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")}),L?.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:R,onChange:W=>{T(W.target.value),F(G=>{const{glpiPassword:_,...se}=G;return se})},placeholder:L?.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"})})]}),C.glpiPassword&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:C.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=>S(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:oe,disabled:h||!q||!z||!ae&&!L?.hasGlpiClientSecret||!X||!R&&!L?.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:[h?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:()=>w(!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")]})]})]})]})}),L?.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:L.lastSyncAt?new Date(L.lastSyncAt).toLocaleString():s("admin:tenants.ticketing.syncStatus.never")})]}),e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${L.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:[L.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 ${L.lastSyncError?"text-[var(--error-text)]":"text-[var(--success-text)]"}`,children:s("admin:tenants.ticketing.syncStatus.status")})]}),e.jsx("p",{className:`text-sm ${L.lastSyncError?"text-[var(--error-text)]":"text-[var(--success-text)]"}`,children:L.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,s,i]),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(h=>e.jsx("button",{onClick:()=>d(h),className:`px-4 py-2 border-b-2 transition-colors ${l===h?"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.${h}`)},h))})}),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),[h,b]=a.useState(null),[u,m]=a.useState({}),[o,x]=a.useState(null),p=a.useCallback(async()=>{try{d(!0),c(null);const L=await we.tenantTypeSettingsApi.getAll();s(L);const g={};for(const f of L)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 N=async L=>{const g=u[L];if(g)try{x(L),c(null);const f={icon:g.icon,iconType:g.iconType,color:g.color,displayName:g.displayName,description:g.description||null};await we.tenantTypeSettingsApi.update(L,f),b(t("admin:tenantTypeSettings.saveSuccess")),setTimeout(()=>b(null),3e3),await p()}catch{c(t("admin:tenantTypeSettings.saveError"))}finally{x(null)}},B=(L,g,f)=>{m(D=>({...D,[L]:{...D[L],[g]:f}}))},P=L=>{const g=n.find(D=>D.type===L),f=u[L];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})]}),h&&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:h})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:n.map(L=>{const g=u[L.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:L.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(L.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(L.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(L.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(L.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:()=>N(L.type),disabled:!P(L.type)||o===L.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===L.type?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),t("common:save")]})]},L.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,h]=a.useState(null),[b,u]=a.useState(1),[m]=a.useState(10),[o,x]=a.useState(1),[p,N]=a.useState(""),[B,P]=a.useState("All"),L=a.useCallback(async y=>{i(!0),h(null);try{const H=await E.adminApi.organisations.getAll({page:b,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),h(t("common:error","An error occurred")))}finally{y?.aborted||i(!1)}},[b,m,p,B,t]);a.useEffect(()=>{const y=new AbortController;return L(y.signal),()=>y.abort()},[L]);const g=y=>{N(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:()=>L(),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")," ",b," ",t("common:of","of")," ",o]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>u(Math.max(1,b-1)),disabled:b===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,b+1)),disabled:b>=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),[h,b]=a.useState(!0),[u,m]=a.useState(null),[o,x]=a.useState(!1),p=()=>{const A=l.get("tab");return A&&pt.includes(A)?A:"info"},[N,B]=a.useState(p),[P,L]=a.useState({show:!1,notes:""}),[g,f]=a.useState({show:!1,reason:""});a.useEffect(()=>{N==="info"?l.get("tab")&&(l.delete("tab"),d(l,{replace:!0})):l.get("tab")!==N&&d({tab:N},{replace:!0})},[N,l,d]);const D=a.useCallback(async()=>{if(!n){s("/administration/tenants/organisations");return}b(!0),m(null);try{const A=await E.adminApi.organisations.getById(n);c(A)}catch(A){console.error("Failed to load organisation:",A),m(t("admin:organisations.loadError","Failed to load organisation"))}finally{b(!1)}},[n,s,t]);a.useEffect(()=>{D()},[D]);const y=async()=>{if(i){x(!0);try{const A=await E.adminApi.organisations.verify(i.id,P.notes||void 0);c(A),L({show:!1,notes:""})}catch(A){console.error("Failed to verify organisation:",A),m(t("admin:organisations.verifyError","Failed to verify organisation"))}finally{x(!1)}}},H=async()=>{if(i){x(!0);try{const A=await E.adminApi.organisations.reject(i.id,g.reason);c(A),f({show:!1,reason:""})}catch(A){console.error("Failed to reject organisation:",A),m(t("admin:organisations.rejectError","Failed to reject organisation"))}finally{x(!1)}}},C=i&&(i.phone||i.email||i.website);if(h)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 F=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 ${F.bgColor} ${F.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(A=>e.jsx("button",{onClick:()=>B(A),className:`px-4 py-2 border-b-2 transition-colors ${N===A?"border-[var(--primary-color)] text-[var(--primary-color)]":"border-transparent text-[var(--text-secondary)] hover:text-[var(--text-primary)]"}`,children:t(`admin:organisations.tabs.${A}`,A)},A))})}),N==="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:()=>L({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")]})]})]}),N==="contact"&&(C?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")})),N==="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:A=>L({...P,notes:A.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:()=>L({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:A=>f({...g,reason:A.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:h}=de.useTranslation(["admin","common"]),[b,u]=a.useState(!1),[m,o]=a.useState(null),[x,p]=a.useState(!1),N=C=>{const F=C.toUpperCase().replace(/[^A-Z0-9]/g,"");let A=F.startsWith("CHE")?F.slice(3):F.replace(/[^0-9]/g,"");return A=A.slice(0,9),A.length===0?"CHE-":A.length<=3?`CHE-${A}`:A.length<=6?`CHE-${A.slice(0,3)}.${A.slice(3)}`:`CHE-${A.slice(0,3)}.${A.slice(3,6)}.${A.slice(6)}`},B=()=>{switch(h.language?.substring(0,2).toLowerCase()){case"de":return"MWST";case"fr":return"TVA";case"it":return"IVA";default:return"MWST"}},P=C=>{let F=C;t.countryCode==="CH"&&(F=N(C)),n({...t,businessIdentifier:F,isFromRegistry:!1}),o(null),p(!1)},L=C=>{const F=vt[C];F&&n({...t,countryCode:C,businessIdentifierType:F.defaultType,businessIdentifier:C==="CH"?"CHE-":"",isFromRegistry:!1,address:{...t.address,countryCode:C,country:F.country}}),o(null),p(!1)};a.useEffect(()=>{t.countryCode==="CH"&&(!t.businessIdentifier||t.businessIdentifier==="")&&n({...t,businessIdentifier:"CHE-"})},[t,n]);const g=async()=>{const C=t.businessIdentifier.replace(/[^0-9]/g,"");if(!t.businessIdentifier||C.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 F=await E.adminApi.organisations.lookup(t.countryCode,t.businessIdentifier),A={...t,name:F.name||t.name,legalName:F.legalName||t.legalName,vatNumber:F.vatNumber?`${F.vatNumber} ${B()}`:t.vatNumber,phone:F.phone||t.phone,email:F.email||t.email,website:F.website||t.website,isFromRegistry:!0,address:{street:F.street||t.address.street,street2:F.street2||t.address.street2,postalCode:F.postalCode||t.address.postalCode,city:F.city||t.address.city,state:F.state||t.address.state,country:F.country||t.address.country,countryCode:F.countryCode||t.address.countryCode}};n(A),s&&F.name&&s(F.name),p(!0),setTimeout(()=>p(!1),3e3)}catch(F){console.error("[Zefix Lookup] Failed:",F);const A=F instanceof Error?F.message:"";A.includes("404")||A.includes("not found")?o(c("admin:tenants.organisation.lookupFailed","Company not found in registry")):A.includes("credentials")||A.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=C=>C?`${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:C=>n({...t,name:C.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:C=>L(C.target.value),className:f,children:Object.entries(vt).map(([C,F])=>e.jsxs("option",{value:C,children:[F.country," (",C,")"]},C))})]}),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:C=>P(C.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:b||!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:b?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:C=>n({...t,address:{...t.address,street:C.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:C=>n({...t,address:{...t.address,postalCode:C.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:C=>n({...t,address:{...t.address,city:C.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:C=>n({...t,vatNumber:C.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,h]=a.useState(null),[b,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),h(null);try{const p=fa(s),N=await E.adminApi.organisations.create(p);n(`/administration/tenants/organisations/${N.id}`)}catch(p){console.error("Failed to create organisation:",p),h(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:b})}),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-C_nDTEP5.js.map
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-BDRogQH_.js"),we=require("./tenantIconMap-Cw-hQ9n4.js"),Ve=require("./ConfirmModal-CYWRiVoD.js"),tt=require("./useTabNavigation-BVtbCTd5.js"),De=require("./ticketingApi-x0BwZ1NH.js"),St=require("./groupsApi-C-FLWPCO.js"),Qe=require("./useAccessRequests-BBTIYht3.js"),be=require("recharts"),kt=require("./accessRequestsApi-CJPjyEkH.js"),Je=require("./ResolutionModal-CRVN7gHv.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:"",Mt=t=>t&&Lt.includes(t)?t:"",Rt=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:h,refreshTenants:b}=E.useTenant(),u=E.useTenantUrl(),{getIconForType:m}=we.useTenantTypeSettings(),o=a.useMemo(()=>({search:d.get("search")||"",status:It(d.get("status")),type:t||Mt(d.get("type"))||(n?"":"Business")}),[]),[x,p]=a.useState([]),[N,B]=a.useState(!0),[P,L]=a.useState(o),[g,f]=a.useState(!1),[D,y]=a.useState(null),[H,C]=a.useState(null),[F,A]=a.useState(null),[Z,q]=a.useState("table"),[U,z]=a.useState(Rt(d.get("page"))),[ee,ae]=a.useState(1),[$,X]=a.useState(0),[J,R]=a.useState(null),[T,j]=a.useState("name"),[M,O]=a.useState(!1),S=Pt(P.search,300),v=Ft(P,t,n),w=a.useCallback(async()=>{try{B(!0),R(null);const k=await E.adminApi.tenants.getAll({page:U,pageSize:20,search:S||void 0,status:P.status||void 0,type:P.type||void 0,sortBy:T,sortDesc:M,excludeTypes:n});p(k.items),X(k.totalCount),ae(k.totalPages)}catch(k){console.error("Failed to load tenants:",k),R(s("tenants.loadError")),p([])}finally{B(!1)}},[U,S,P.status,P.type,T,M,s,n]);a.useEffect(()=>{const k=new URLSearchParams;P.search&&k.set("search",P.search),P.status&&k.set("status",P.status),P.type&&k.set("type",P.type),U>1&&k.set("page",U.toString()),i(k,{replace:!0})},[P,U,i]),a.useEffect(()=>{w()},[w,c?.id,h]);const ie=()=>{L(Bt(t,n)),z(1)},le=(k,ce)=>{t&&k==="type"||(L(je=>({...je,[k]:ce})),z(1))},te=k=>{y(null),A({tenant:k,action:"activate"})},Q=k=>{y(null),A({tenant:k,action:"suspend"})},pe=k=>{y(null),A({tenant:k,action:"archive"})},me=async()=>{if(!F)return;const{tenant:k,action:ce}=F;C(k.id);try{ce==="activate"?await E.adminApi.tenants.activate(k.id):ce==="suspend"?await E.adminApi.tenants.suspend(k.id):ce==="archive"&&await E.adminApi.tenants.archive(k.id),await b(),w()}catch(je){console.error(`Failed to ${ce} tenant:`,je)}finally{C(null),A(null)}},K=(k,ce)=>{switch(k){case"activate":return s("tenants.confirmActivate",{name:ce});case"suspend":return s("tenants.confirmSuspend",{name:ce});case"archive":return s("tenants.confirmArchive",{name:ce})}},oe=k=>{switch(k){case"activate":return s("tenants.actions.activate");case"suspend":return s("tenants.actions.suspend");case"archive":return s("tenants.actions.archive")}},ge=k=>{switch(k){case"activate":return"info";case"suspend":return"warning";case"archive":return"danger"}},W=()=>{if(!F)return null;const{tenant:k,action:ce}=F;return{message:K(ce,k.name),label:oe(ce),variant:ge(ce)}},G=a.useMemo(()=>({active:x.filter(k=>k.status==="Active").length,suspended:x.filter(k=>k.status==="Suspended").length,members:x.reduce((k,ce)=>k+(ce.memberCount??0),0),pendingRequests:x.reduce((k,ce)=>k+(ce.pendingAccessRequestCount??0),0)}),[x]),_=x,se=k=>{T===k?O(!M):(j(k),O(!1)),z(1)},V=({column:k})=>T!==k?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=k=>k==="Active"?"success":k==="Suspended"?"warning":k==="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,Me=5+(Te?0:1)+1,Se=(k,ce,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(ce),children:e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[k,e.jsx(V,{column:ce})]})}),Ue=k=>e.jsx("div",{className:"flex items-center justify-end gap-1",onClick:ce=>ce.stopPropagation(),onKeyDown:ce=>ce.stopPropagation(),role:"presentation",children:e.jsxs("div",{className:"relative",children:[e.jsx("button",{onClick:()=>y(D===k.id?null:k.id),className:"p-2 rounded-lg text-[var(--text-tertiary)] hover:bg-[var(--bg-tertiary)] transition-all",children:H===k.id?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.MoreHorizontal,{className:"w-4 h-4"})}),D===k.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 rounded-[var(--radius-card)]",children:[e.jsxs("button",{onClick:()=>{y(null),l(u(`/administration/tenants/${k.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/${k.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/${k.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"}),k.status!=="Active"&&k.status!=="Archived"&&e.jsxs("button",{onClick:()=>te(k),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")]}),k.status==="Active"&&e.jsxs("button",{onClick:()=>Q(k),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")]}),k.status!=="Archived"&&e.jsxs("button",{onClick:()=>pe(k),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")]})]})]})}),Re=k=>{const ce=m(k.type),je=we.getLucideIcon(ce.icon),Pe=we.getColorClasses(ce.color),Ke=Dt[k.status];return e.jsxs("tr",{className:`group hover:bg-[var(--bg-hover)] transition-all cursor-pointer ${D===k.id?"relative z-10":""}`,onClick:()=>l(u(`/administration/tenants/${k.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} rounded-[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:k.name}),e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] truncate",children:k.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[k.type].label)})]}),k.organisation?.name&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)] mt-0.5 truncate",children:k.organisation.name})]}),e.jsx("td",{className:"px-4 py-3",children:e.jsx(E.StatusBadge,{status:Ke.statusBadge,label:s(`tenants.status.${k.status.toLowerCase()}`)})}),e.jsx("td",{className:"px-4 py-3 hidden md:table-cell",children:k.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:k.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:k.memberCount??0})}),e.jsx("td",{className:"px-4 py-3 text-center hidden lg:table-cell",children:(k.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"}),k.pendingAccessRequestCount]}):e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:"-"})}),e.jsx("td",{className:"px-4 py-3",children:Ue(k)})]},k.id)},Oe=()=>e.jsx("tr",{children:e.jsx("td",{colSpan:Me,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:Me,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)] rounded-[var(--radius-card) var(--radius-card) 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:[N&&Oe(),!N&&_.length===0&&Ge(),!N&&_.length>0&&_.map(Re)]})]})}),Be=k=>[{label:s(`tenants.type.${k.type.toLowerCase()}`),variant:k.type==="Business"?"info":"primary"},{label:s(`tenants.status.${k.status.toLowerCase()}`),variant:Y(k.status)}],qe=k=>[{label:s("common.edit"),onClick:()=>l(u(`/administration/tenants/${k.id}`)),variant:"primary",icon:r.Edit2},{label:s("tenants.actions.viewMembers"),onClick:()=>l(u(`/administration/tenants/${k.id}/members`)),variant:"ghost",icon:r.Users}],Fe=k=>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:[k.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:[k.applicationCount??0," ",s("tenants.applications")]})]})]}),ze=k=>{const je=k.type==="Business"?"#3b82f6":"#8b5cf6";return{avatar:{letter:k.name.at(0)?.toUpperCase()??"",color:je},title:k.name,subtitle:k.slug,description:k.organisation?.name||void 0,stats:Fe(k),tags:Be(k),actions:qe(k),onClick:()=>l(u(`/administration/tenants/${k.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:[N&&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")})]}),!N&&_.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")})]}),!N&&_.length>0&&_.map(k=>e.jsx(E.EntityCard,{...ze(k)},k.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:w,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:k=>le("search",k.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:k=>le("status",k.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:k=>le("status",k.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:k=>le("type",k.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 k=W();return k?e.jsx(Ve.ConfirmModal,{isOpen:!!F,title:k.label,message:k.message,confirmLabel:k.label,variant:k.variant,loading:!!H,onConfirm:me,onCancel:()=>A(null)}):null})()]})}function bt(t){const{t:n}=de.useTranslation(["admin","common"]),[s,l]=a.useState(null),[d,i]=a.useState(!0),[c,h]=a.useState(null),[b,u]=a.useState(!1),[m,o]=a.useState(""),[x,p]=a.useState(""),[N,B]=a.useState(!1),P=a.useCallback(async()=>{if(t)try{h(null);const D=await E.adminApi.tenants.getById(t);l(D)}catch(D){console.error("Failed to load tenant:",D),h(n("admin:tenants.errors.loadFailed"))}finally{i(!1)}},[t,n]),L=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:h,loadTenant:P,editingGeneralInfo:b,setEditingGeneralInfo:u,editName:m,setEditName:o,editDescription:x,setEditDescription:p,savingGeneralInfo:N,setSavingGeneralInfo:B,handleSaveGeneralInfo:f,openEditGeneralInfo:L,closeEditGeneralInfo:g}}function Ut(t){const[n,s]=a.useState(null),[l,d]=a.useState(!1),[i,c]=a.useState(!1),[h,b]=a.useState([]),[u,m]=a.useState(!1),[o,x]=a.useState(""),[p,N]=a.useState(null),[B,P]=a.useState(!1),[L,g]=a.useState(null),[f,D]=a.useState([]),[y,H]=a.useState([]),[C,F]=a.useState(!1),[A,Z]=a.useState(!1),q=a.useCallback(async()=>{if(t){d(!0);try{const T=await E.adminApi.tenants.getMembers(t);s(T)}catch(T){console.error("Failed to load members:",T)}finally{d(!1)}}},[t]),U=a.useCallback(async()=>{m(!0);try{const T=await E.adminApi.users.getAll({pageSize:50}),j=new Set((n??[]).map(M=>M.userId));b(T.items.filter(M=>!j.has(M.id)))}catch(T){console.error("Failed to load users:",T)}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),N(null),x("")}catch(T){console.error("Failed to add member:",T)}finally{P(!1)}}},[t,p,q]),ee=a.useCallback(async T=>{if(t)try{await E.adminApi.tenants.removeMember(t,T),await q()}catch(j){console.error("Failed to remove member:",j)}},[t,q]),ae=a.useCallback(async()=>{F(!0);try{const T=await E.adminApi.roles.getAssignable();D(T)}catch(T){console.error("Failed to load roles:",T)}finally{F(!1)}},[]),$=a.useCallback(async T=>{g(T),H(T.roles.map(j=>j.roleId)),f.length===0&&await ae()},[f.length,ae]),X=a.useCallback(()=>{g(null),H([])},[]),J=a.useCallback(T=>{H(j=>j.includes(T)?j.filter(M=>M!==T):[...j,T])},[]),R=a.useCallback(async()=>{if(!(!t||!L)){Z(!0);try{await E.adminApi.tenants.assignMemberRoles(t,L.userId,y),await q(),X()}catch(T){console.error("Failed to save roles:",T)}finally{Z(!1)}}},[t,L,y,q,X]);return{members:n,setMembers:s,loadingMembers:l,setLoadingMembers:d,addingMember:i,setAddingMember:c,availableUsers:h,setAvailableUsers:b,loadingUsers:u,setLoadingUsers:m,userSearchTerm:o,setUserSearchTerm:x,selectedUserId:p,setSelectedUserId:N,addingMemberLoading:B,setAddingMemberLoading:P,selectedMemberForRoles:L,setSelectedMemberForRoles:g,availableRoles:f,setAvailableRoles:D,selectedRoleIds:y,setSelectedRoleIds:H,loadingRoles:C,setLoadingRoles:F,savingRoles:A,setSavingRoles:Z,loadMembers:q,loadAvailableUsers:U,handleAddMember:z,handleRemoveMember:ee,openRoleModal:$,closeRoleModal:X,handleSaveRoles:R,handleRoleToggle:J}}function Ot(t){const[n,s]=a.useState(null),[l,d]=a.useState(!1),[i,c]=a.useState(!1),[h,b]=a.useState([]),[u,m]=a.useState(!1),[o,x]=a.useState([]),[p,N]=a.useState(!1),[B,P]=a.useState(""),[L,g]=a.useState(null),f=a.useCallback(async()=>{if(t){d(!0);try{const C=await E.adminApi.tenants.getGroups(t);s(Array.isArray(C)?C:[])}catch(C){console.error("Failed to load groups:",C),s([])}finally{d(!1)}}},[t]),D=a.useCallback(async()=>{if(t){m(!0);try{const C=await E.adminApi.tenants.getAvailableGroups(t);b(C)}catch(C){console.error("Failed to load available groups:",C),b([])}finally{m(!1)}}},[t]),y=a.useCallback(async()=>{if(!t||o.length===0)return;N(!0);const C=[],F=[];for(const A of o)try{await E.adminApi.tenants.addGroupToTenant(t,A),C.push(A)}catch(Z){console.error(`Failed to add group ${A}:`,Z),F.push(A)}await f(),F.length===0?(c(!1),x([])):C.length===0||x(F),N(!1)},[t,o,f]),H=a.useCallback(async C=>{if(t){g(C);try{await E.adminApi.tenants.removeGroupFromTenant(t,C),await f()}catch(F){console.error("Failed to remove group:",F)}finally{g(null)}}},[t,f]);return{groups:n,setGroups:s,loadingGroups:l,setLoadingGroups:d,addingGroup:i,setAddingGroup:c,availableGroupsForTenant:h,setAvailableGroupsForTenant:b,loadingAvailableGroups:u,setLoadingAvailableGroups:m,selectedGroupIds:o,setSelectedGroupIds:x,assigningGroups:p,setAssigningGroups:N,groupSearchTerm:B,setGroupSearchTerm:P,removingGroupId:L,setRemovingGroupId:g,loadGroups:f,loadAvailableGroups:D,handleAssignGroups:y,handleRemoveGroup:H}}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,h]=a.useState(!1),[b,u]=a.useState([]),[m,o]=a.useState(!1),[x,p]=a.useState([]),[N,B]=a.useState(!1),[P,L]=a.useState(""),[g,f]=a.useState(null),[D,y]=a.useState("FullAccess"),[H,C]=a.useState("full"),[F,A]=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]),R=a.useCallback(async()=>{if(t){h(!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]),T=a.useCallback(()=>{h(!1),p([]),L(""),y("FullAccess"),C("full"),A([]),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"?F.filter(Y=>Y.isAssigned).map(Y=>Y.id):void 0,sectionIds:H==="custom"?F.flatMap(Y=>Y.sections.filter(re=>re.isAssigned).map(re=>re.id)):void 0};await E.adminApi.tenants.bulkAssignApplications(t,V),await J(),T(),n?.onApplicationsChanged?.()}catch(V){console.error("Failed to assign applications:",V)}finally{B(!1)}}},[t,x,D,H,F,J,T,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]),S=a.useCallback(V=>{X(V),ae(!0)},[]),v=a.useCallback(()=>{ae(!1),X(null)},[]),w=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 b;const V=P.toLowerCase();return b.filter(Y=>Y.label.toLowerCase().includes(V)||Y.code.toLowerCase().includes(V))},[b,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})}A(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})},[]),oe=a.useCallback(V=>{A(Y=>Y.map(re=>Gt(re,V)))},[]),ge=a.useCallback((V,Y)=>{A(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=F.length,Y=F.filter(he=>he.isAssigned||he.sections.some(fe=>fe.isAssigned)).length,re=F.reduce((he,fe)=>he+fe.sections.length,0),ve=F.reduce((he,fe)=>he+fe.sections.filter(ye=>ye.isAssigned).length,0);return{totalModules:V,assignedModules:Y,totalSections:re,assignedSections:ve}},[F]),_=a.useCallback(()=>{A(V=>V.map(Y=>qt(Y)))},[]),se=a.useCallback(()=>{A(V=>V.map(Y=>zt(Y)))},[]);return{applications:s,setApplications:l,loadingApps:d,setLoadingApps:i,addingApplication:c,setAddingApplication:h,availableApps:b,setAvailableApps:u,loadingAvailableApps:m,setLoadingAvailableApps:o,selectedAppIds:x,setSelectedAppIds:p,assigningApps:N,setAssigningApps:B,appSearchTerm:P,setAppSearchTerm:L,selectedAccessLevel:D,setSelectedAccessLevel:y,bulkAccessMode:H,setBulkAccessMode:C,bulkModules:F,setBulkModules:A,bulkExpandedModules:Z,setBulkExpandedModules:q,loadingBulkModules:U,setLoadingBulkModules:z,showCustomizeDrawer:ee,setShowCustomizeDrawer:ae,customizingApp:$,setCustomizingApp:X,loadApplications:J,availableAppsError:g,loadAvailableApps:R,handleAssignApplications:j,handleRemoveApplication:M,handleUpdateAccessLevel:O,openCustomizeDrawer:S,closeCustomizeDrawer:v,filteredAvailableApps:le,handleAppToggle:te,selectAllFilteredApps:Q,clearAppSelection:pe,loadBulkModulesForApp:me,toggleBulkModuleExpand:K,toggleBulkModule:oe,toggleBulkSection:ge,getBulkModuleCheckState:W,getBulkStats:G,selectAllBulkModules:_,clearBulkModules:se,handleSaveOverrides:w,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,h]=a.useState(!1),[b,u]=a.useState(null),[m,o]=a.useState(!1),[x,p]=a.useState(""),[N,B]=a.useState(!1),[P,L]=a.useState(!1),[g,f]=a.useState(st),[D,y]=a.useState(!1),[H,C]=a.useState(null),[F,A]=a.useState(!1),Z=a.useCallback(async T=>{h(!0);try{const j=await E.adminApi.organisations.getAvailable(T),M=Array.isArray(j)?j:j.items??[];i(M)}catch(j){console.error("Failed to load available organisations:",j),i([])}finally{h(!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),C(null),A(!1)},[]),z=a.useCallback(async()=>{if(!(!t||!b)){o(!0);try{await E.adminApi.tenants.linkOrganisation(t,b),U()}catch(T){console.error("Failed to link organisation:",T)}finally{o(!1)}}},[t,b,U]),ee=a.useCallback(async()=>{if(t){o(!0);try{await E.adminApi.tenants.unlinkOrganisation(t)}catch(T){console.error("Failed to unlink organisation:",T)}finally{o(!1)}}},[t]),ae=a.useCallback(async()=>{if(t&&!(!g.name||!g.businessIdentifier||!g.address.street||!g.address.city||!g.address.postalCode)){L(!0);try{const T=await E.adminApi.organisations.create(g);await E.adminApi.tenants.linkOrganisation(t,T.id),U()}catch(T){console.error("Failed to create and link organisation:",T)}finally{L(!1)}}},[t,g,U]),$=a.useCallback(T=>{const j=T.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(T=>{g.countryCode==="CH"?f(j=>({...j,businessIdentifier:$(T)})):f(j=>({...j,businessIdentifier:T})),C(null),A(!1)},[g.countryCode,$]),J=a.useCallback(async()=>{const T=g.businessIdentifier.replace(/[^0-9]/g,"");if(!g.businessIdentifier||T.length<9||g.countryCode!=="CH"){C(n("tenants.organisation.lookupIncomplete"));return}y(!0),C(null),A(!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}})),A(!0),setTimeout(()=>A(!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")?C(n("tenants.organisation.lookupServiceUnavailable")):M.includes("credentials")||M.includes("401")?C(n("tenants.organisation.lookupAuthError")):(M.includes("404")||M.includes("not found"),C(n("tenants.organisation.lookupFailed")))}finally{y(!1)}},[g.businessIdentifier,g.countryCode,n]),R=a.useCallback(T=>{const j=_t[T];j&&f(M=>({...M,countryCode:T,businessIdentifierType:j.defaultType,businessIdentifier:T==="CH"?"CHE-":"",address:{...M.address,countryCode:T,country:j.country}}))},[]);return{showLinkOrgModal:s,setShowLinkOrgModal:l,availableOrgs:d,setAvailableOrgs:i,loadingOrgs:c,setLoadingOrgs:h,selectedOrgId:b,setSelectedOrgId:u,linkingOrg:m,setLinkingOrg:o,orgSearchTerm:x,setOrgSearchTerm:p,showCreateOrgForm:N,setShowCreateOrgForm:B,creatingOrg:P,setCreatingOrg:L,newOrgForm:g,setNewOrgForm:f,lookupLoading:D,setLookupLoading:y,lookupError:H,setLookupError:C,lookupSuccess:F,setLookupSuccess:A,loadAvailableOrgs:Z,handleLinkOrganisation:z,handleUnlinkOrganisation:ee,handleCreateAndLinkOrganisation:ae,formatCheNumber:$,handleBusinessIdChange:X,handleZefixLookup:J,openLinkOrgModal:q,closeLinkOrgModal:U,handleCountryChange:R}}function Wt(t){const[n,s]=a.useState(null),[l,d]=a.useState(!1),[i,c]=a.useState(null),h=a.useCallback(async()=>{if(t){d(!0),c(null);try{const b=await E.adminApi.tenants.getTenantRoles(t);s(b)}catch(b){console.error("Failed to load tenant roles:",b),c("Failed to load roles")}finally{d(!1)}}},[t]);return{roles:n,loadingRoles:l,error:i,loadRoles:h}}function Xt({show:t,templates:n,selectedTemplateId:s,loadingTemplates:l,assigningTemplate:d,onTemplateSelect:i,onClose:c,onAssign:h,tenantTemplateId:b,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:h,disabled:d||!s||s===b,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(h=>h.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:h,onLinkOrgClick:b,onUnlinkOrg:u}){const{t:m}=de.useTranslation("admin"),o=xe.useNavigate(),[x,p]=a.useState(!1),[N,B]=a.useState({name:"",description:"",type:"Business"}),[P,L]=a.useState(!1),[g,f]=a.useState(!1),[D,y]=a.useState(!1),[H,C]=a.useState([]),[F,A]=a.useState(!1),[Z,q]=a.useState(""),[U,z]=a.useState(!1),[ee,ae]=a.useState(!1),[$,X]=a.useState(null),[J,R]=a.useState(!1),T=a.useCallback(async()=>{R(!0);try{const te=await De.ticketingApi.getConfiguration(t.id);X(te)}catch{X(null)}finally{R(!1)}},[t.id]);a.useEffect(()=>{T()},[T]);const j=a.useCallback(async()=>{A(!0);try{const te=await E.adminApi.templates.getAll();C(te.filter(Q=>Q.isActive))}catch(te){console.error("Failed to load templates:",te)}finally{A(!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)}}},S=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()},w=()=>{p(!1),B({name:"",description:"",type:"Business"})},ie=async()=>{if(N.name.trim()){L(!0);try{await E.adminApi.tenants.update(t.id,{name:N.name,description:N.description,type:N.type}),await d(),w()}catch(te){console.error("Failed to save tenant info:",te)}finally{L(!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:h,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:b,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:S,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:F,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:w,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:N.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:N.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 ${N.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))}),N.type==="Personal"&&t.organisationId&&e.jsx("p",{className:"mt-2 text-xs text-[var(--error-text)]",children:m("tenants.form.typeWarningOrg")}),N.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:w,className:"btn btn-secondary",children:m("common:cancel")}),e.jsx("button",{onClick:ie,disabled:P||!N.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"),[h,b]=a.useState({member:null,availableRoles:[],selectedRoleIds:[]}),[u,m]=a.useState(!1),[o,x]=a.useState(!1),[p,N]=a.useState(!1),[B,P]=a.useState([]),[L,g]=a.useState(!1),[f,D]=a.useState(""),[y,H]=a.useState(null),[C,F]=a.useState(!1),A=a.useCallback(async()=>{m(!0);try{return await E.adminApi.tenants.getTenantRoles(t)}catch(R){return console.error("Failed to load roles:",R),[]}finally{m(!1)}},[t]),Z=async R=>{b(j=>({...j,member:R,selectedRoleIds:R.roles.map(M=>M.roleId)}));const T=await A();b(j=>({...j,availableRoles:T}))},q=()=>{b({member:null,availableRoles:[],selectedRoleIds:[]})},U=R=>{b(T=>({...T,selectedRoleIds:T.selectedRoleIds.includes(R)?T.selectedRoleIds.filter(j=>j!==R):[...T.selectedRoleIds,R]}))},z=async()=>{if(h.member){x(!0);try{await E.adminApi.tenants.assignMemberRoles(t,h.member.userId,h.selectedRoleIds),await d(),q()}catch(R){console.error("Failed to save roles:",R)}finally{x(!1)}}},ee=async()=>{g(!0);try{const R=await E.adminApi.users.getAll({globalScope:!0});P(R.items)}catch(R){console.error("Failed to load available users:",R),P([])}finally{g(!1)}},ae=()=>{N(!0),H(null),D(""),ee()},$=()=>{N(!1),H(null),D(""),P([])},X=async()=>{if(y){F(!0);try{await E.adminApi.tenants.addMember(t,{userId:y}),await d(),$()}catch(R){console.error("Failed to add member:",R)}finally{F(!1)}}},J=[{key:"userDisplayName",label:c("common:name"),sortable:!0,render:R=>e.jsxs(xe.Link,{to:`/administration/users/${R.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 ${R.isOwner?"bg-[var(--warning-bg)] text-[var(--warning-text)]":"bg-[var(--color-accent-500)]/10 text-[var(--color-accent-500)]"}`,children:R.isOwner?e.jsx(r.Crown,{className:"w-4 h-4"}):(R.userDisplayName||R.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:R.userDisplayName||R.userEmail}),R.userEmail&&R.userDisplayName&&e.jsx("span",{className:"text-xs text-[var(--text-tertiary)] block truncate",children:R.userEmail})]})]})},{key:"roles",label:c("tenants.members.role"),render:R=>e.jsxs("div",{className:"flex flex-wrap gap-1",children:[R.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")]}),R.roles.length>0&&R.roles.map(T=>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"}),T.roleName]},T.roleId)),R.roles.length===0&&!R.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:R=>{const T=R.membershipSource;return T==="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")]}),R.primaryGroupName&&e.jsxs(xe.Link,{to:`/administration/users/groups/${R.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"}),R.primaryGroupName]})]}):T==="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")}),R.primaryGroupName&&e.jsxs(xe.Link,{to:`/administration/users/groups/${R.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"}),R.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:R=>e.jsx("span",{className:"text-sm text-[var(--text-tertiary)]",children:R.joinedAt?es(R.joinedAt):"-"})},{key:"actions",label:c("common:actionsColumn"),align:"right",render:R=>e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx("button",{onClick:T=>{T.stopPropagation(),Z(R)},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"})}),!R.isOwner&&R.membershipSource!=="Group"&&e.jsx("button",{onClick:T=>{T.stopPropagation(),i(R.userId)},disabled:l===R.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:R.membershipSource==="Both"?c("tenants.members.source.cannotRemoveBoth"):c("tenants.members.remove"),children:l===R.userId?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.UserMinus,{className:"w-4 h-4"})}),!R.isOwner&&R.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:(R,T)=>(R.userDisplayName||"").toLowerCase().includes(T.toLowerCase())||(R.userEmail||"").toLowerCase().includes(T.toLowerCase()),getRowKey:R=>R.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}}),h.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:h.member.userDisplayName||h.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:h.availableRoles.length===0?e.jsx("p",{className:"text-sm text-[var(--text-tertiary)] text-center py-4",children:c("tenants.members.manageRoles.noRolesAvailable")}):h.availableRoles.map(R=>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:h.selectedRoleIds.includes(R.id),onChange:()=>U(R.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:R.name}),R.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:R.description})]})]},R.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:R=>D(R.target.value),className:"input w-full",placeholder:c("tenants.members.searchUsers")})}),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("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(R=>f===""||R.fullName.toLowerCase().includes(f.toLowerCase())||R.email.toLowerCase().includes(f.toLowerCase())).map(R=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${y===R.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===R.id,onChange:()=>H(R.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:R.fullName}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:R.email})]})]},R.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||C,className:"btn btn-primary",children:C?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"),h=xe.useNavigate(),[b,u]=a.useState(!1),[m,o]=a.useState([]),[x,p]=a.useState(!1),[N,B]=a.useState([]),[P,L]=a.useState(!1),[g,f]=a.useState(""),[D,y]=a.useState({show:!1,group:null,loading:!1}),[H,C]=a.useState(!1),[F,A]=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)}},R=()=>{u(!0),B([]),f(""),J()},T=()=>{u(!1),B([]),f("")},j=v=>{B(w=>w.includes(v)?w.filter(ie=>ie!==v):[...w,v])},M=async()=>{if(N.length===0)return;L(!0);const v=[],w=[];for(const ie of N)try{await E.adminApi.tenants.addGroupToTenant(t,ie),v.push(ie)}catch(le){console.error(`Failed to add group ${ie}:`,le),w.push(ie)}await d(),w.length===0?T():v.length>0&&B(w),L(!1)},O=async()=>{if(F.trim()){ae(!0),X(null);try{const v=await St.groupsApi.create({name:F.trim(),description:Z.trim()||void 0,isSecurityGroup:U});await E.adminApi.tenants.addGroupToTenant(t,v.id),await d(),C(!1),A(""),q(""),z(!0)}catch(v){console.error("Failed to create group:",v);const w=v;w.response?.status===409?X(w.response.data?.message||c("tenants.groups.createError")):X(c("tenants.groups.createError"))}finally{ae(!1)}}},S=[{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:w=>{w.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:S,searchable:!0,searchPlaceholder:c("tenants.groups.searchPlaceholder"),searchFilter:(v,w)=>v.name.toLowerCase().includes(w.toLowerCase())||(v.description||"").toLowerCase().includes(w.toLowerCase()),getRowKey:v=>v.groupId,onRowClick:v=>h(`/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),C(!0)},className:"btn btn-secondary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),c("groups.createGroup")]}),e.jsxs("button",{onClick:R,className:"btn btn-primary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),c("tenants.groups.add")]})]}),pagination:{pageSize:10,showSizeSelector:!0}}),b&&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:T,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(w=>g===""||w.name.toLowerCase().includes(g.toLowerCase())||(w.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(w=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${N.includes(w.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:N.includes(w.groupId),onChange:()=>j(w.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:w.name}),w.description&&e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:w.description})]})]},w.groupId))})})(),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:T,className:"btn btn-secondary",children:c("common:cancel")}),e.jsx("button",{onClick:M,disabled:N.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:()=>C(!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:F,onChange:v=>A(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:()=>C(!1),className:"btn btn-secondary",children:c("common:cancel")}),e.jsxs("button",{onClick:O,disabled:!F.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:h,mode:b,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}),b!=="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:h,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:h}=de.useTranslation("admin"),[b,u]=a.useState(!0),[m,o]=a.useState(!1),[x,p]=a.useState(null),[N,B]=a.useState(null),[P,L]=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},C=a.useCallback(async()=>{if(t){u(!0),p(null);try{if(c==="template"){const M=(await E.adminApi.templates.getApplicationModules(s,d.applicationId)).map(S=>({id:S.moduleId,label:S.label,code:S.code,icon:S.icon,source:S.isAssigned?"Direct":"Unavailable",accessLevel:"FullAccess",isEffectivelyActive:S.isAssigned,isChecked:S.isAssigned,originalSource:S.isAssigned?"Direct":"Unavailable",sections:S.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),L(M.some(S=>S.isChecked)?"custom":"full");const O=new Set(M.filter(S=>S.sections.some(v=>v.isChecked)).map(S=>S.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(w=>({id:w.sectionId,label:w.label,code:w.code,icon:w.icon,source:w.source,accessLevel:w.accessLevel,isEffectivelyActive:w.isEffectivelyActive,isChecked:w.source!=="Revoked"&&w.source!=="Unavailable",originalSource:w.source}))}));f(M);const O=M.some(v=>v.source==="Direct"||v.source==="Overridden"||v.source==="Revoked"||v.sections.some(w=>w.source==="Direct"||w.source==="Overridden"||w.source==="Revoked"));L(O?"custom":"full");const S=new Set(M.filter(v=>v.sections.some(w=>w.source!=="Inherited"||!w.isEffectivelyActive)).map(v=>v.id));y(S)}}catch(j){p(j instanceof Error?j.message:"Failed to load data")}finally{u(!1)}}},[t,d.applicationId,s,c]);a.useEffect(()=>{C()},[C]);const F=j=>j.map(M=>({...M,isChecked:!0,sections:M.sections.map(O=>({...O,isChecked:!0}))})),A=j=>{j==="custom"&&P==="full"&&(g.some(O=>O.isChecked||O.sections.some(S=>S.isChecked))||f(F)),L(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 S=!M.find(v=>v.id===j)?.isChecked;return os(M,j,S)})},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(S=>S.isChecked)).map(O=>O.id),M=g.flatMap(O=>O.sections.filter(S=>S.isChecked).map(S=>S.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(h("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(S=>S.originalSource==="Direct"||S.originalSource==="Overridden"||S.originalSource==="Revoked").map(S=>({moduleId:S.id,action:j})),O=g.flatMap(S=>S.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(h("tenants.applications.customize.resetSuccess","Customizations reset")),i?.(),setTimeout(()=>n(),1e3)}catch(j){p(j instanceof Error?j.message:"Failed to reset")}finally{o(!1)}},T=(()=>{const j=g.length,M=g.filter(Q=>Q.isChecked).length,O=g.reduce((Q,pe)=>Q+pe.sections.length,0),S=g.reduce((Q,pe)=>Q+pe.sections.filter(me=>me.isChecked).length,0),v=g.filter(Q=>Q.source==="Inherited").length,w=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:S,inheritedCount:v,directCount:w,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:h("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:b?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})]}),N&&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:N})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("label",{className:"text-sm font-medium text-[var(--text-secondary)]",children:h("tenants.applications.customize.accessMode","Access Mode")}),e.jsxs("button",{type:"button",onClick:()=>A("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:h("tenants.applications.customize.fullAccess","Full Application Access")}),e.jsx("p",{className:"text-sm text-[var(--text-muted)] mt-1",children:h("tenants.applications.customize.fullAccessHint","Access to all modules and sections of this application")})]})]}),e.jsxs("button",{type:"button",onClick:()=>A("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:h("tenants.applications.customize.customAccess","Custom Access")}),e.jsx("p",{className:"text-sm text-[var(--text-muted)] mt-1",children:h("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:h("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:h},j.id)),g.length===0&&e.jsx("div",{className:"p-6 text-center text-sm text-[var(--text-muted)]",children:h("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:[T.checkedModules,"/",T.totalModules," ",h("tenants.applications.customize.modules","modules"),","," ",T.checkedSections,"/",T.totalSections," ",h("tenants.applications.customize.sections","sections")]}),(T.revokedInheritedModules>0||T.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"}),T.revokedInheritedModules>0&&e.jsxs("span",{children:[T.revokedInheritedModules," ",h("tenants.applications.customize.modules")," ",h("tenants.applications.customize.revokedLabel").toLowerCase()]}),T.revokedInheritedModules>0&&T.revokedInheritedSections>0&&", ",T.revokedInheritedSections>0&&e.jsxs("span",{children:[T.revokedInheritedSections," ",h("tenants.applications.customize.sections")," ",h("tenants.applications.customize.revokedLabel").toLowerCase()]})]})]}):h("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"}),h("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:h("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"}),h("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:h,onRemoveApplication:b,addingApplication:u,availableAppsError:m,filteredAvailableApps:o,loadingAvailableApps:x,selectedAppIds:p,assigningApps:N,appSearchTerm:B,selectedAccessLevel:P,bulkAccessMode:L,bulkModules:g,bulkExpandedModules:f,loadingBulkModules:D,showCustomizeDrawer:y,customizingApp:H,onOpenAddApplication:C,onCloseAddApplication:F,onAssignApplications:A,onAppToggle:Z,onSelectAllApps:q,onClearAppSelection:U,onOpenCustomizeDrawer:z,onCloseCustomizeDrawer:ee,onLoadBulkModules:ae,onToggleBulkModuleExpand:$,onToggleBulkModule:X,onToggleBulkSection:J,onGetBulkModuleCheckState:R,onGetBulkStats:T,onSelectAllBulkModules:j,onClearBulkModules:M,setAppSearchTerm:O,setSelectedAccessLevel:S,setBulkAccessMode:v}){const{t:w}=de.useTranslation("admin"),ie=a.useMemo(()=>T(),[T]),[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 oe=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?w("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})," ",w("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})," ",w("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})," ",w("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]})," ",w("tenants.applications.customize.modules")," / ",e.jsx("span",{className:"font-medium text-[var(--text-primary)]",children:K.totalSectionCount})," ",w("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 ${oe?.dotBg??"bg-green-500"}`}),e.jsx("select",{value:K.accessLevel,onChange:W=>{h(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:w(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"}),w("tenants.applications.customize.button")]}),b&&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:w("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:w("tenants.applications.assigned")}),e.jsxs("button",{onClick:C,className:"btn btn-primary",children:[e.jsx(r.Plus,{className:"w-4 h-4"}),w("tenants.applications.add")]})]}),d?vs():null,!d&&(!l||l.length===0)?gs(w):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:[w("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:[w("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:w("tenants.applications.modal.title")}),e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:w("tenants.applications.modal.subtitle")})]}),e.jsx("button",{onClick:F,className:"p-1 hover:bg-[var(--bg-hover)] rounded-[var(--radius-button)]","aria-label":w("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:[w("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:w("tenants.applications.modal.selectAll")}),p.length>0&&e.jsx("button",{type:"button",onClick:U,className:"text-xs text-[var(--text-muted)] hover:underline",children:w("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:w("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:w("tenants.applications.modal.errorForbidden")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:w("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:w("tenants.applications.modal.errorGeneric")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:w("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:w("tenants.applications.modal.noAvailable")})]}),!x&&!m&&o.length>0&&o.map(K=>{const oe=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 ${oe?"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 ${oe?"border-[var(--color-accent-600)] bg-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:oe&&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:w("tenants.applications.modal.moduleAccess")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mb-4",children:w("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 ${L==="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 ${L==="full"?"border-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:L==="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:w("tenants.applications.customize.fullAccess")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:w("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 ${L==="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 ${L==="custom"?"border-[var(--color-accent-600)]":"border-[var(--border-color)]"}`,children:L==="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:w("tenants.applications.customize.customAccess")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:w("tenants.applications.modal.customAccessModulesHint")})]})]})]}),L==="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:w("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:w("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," ",w("tenants.applications.customize.modules"),","," ",ie.assignedSections,"/",ie.totalSections," ",w("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:w("tenants.applications.modal.selectAllModules")}),ie.assignedSections>0&&e.jsx("button",{type:"button",onClick:M,className:"text-xs text-[var(--text-muted)] hover:underline",children:w("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 oe=R(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(oe)}`,children:[oe==="checked"&&e.jsx(r.Check,{className:"w-2.5 h-2.5 text-white"}),oe==="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:w("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:w("tenants.applications.modal.accessLevel")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mb-4",children:w("tenants.applications.modal.accessLevelHint")}),e.jsx(bs,{selectedAccessLevel:P,setSelectedAccessLevel:S})]})]}),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?w("tenants.applications.modal.selectedCount",{count:p.length}):w("tenants.applications.modal.noSelection")}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:F,className:"px-4 py-2 rounded-[var(--radius-button)] font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]",children:w("common:cancel")}),e.jsxs("button",{onClick:A,disabled:p.length===0||N,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:[N?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Plus,{className:"w-4 h-4"}),w("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:w("tenants.applications.removeConfirm.title"),message:e.jsxs("div",{className:"space-y-3 text-left",children:[e.jsx("p",{children:w("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:w("tenants.applications.removeConfirm.impactTitle")}),e.jsxs("ul",{className:"text-sm text-[var(--text-secondary)] space-y-1",children:[e.jsx("li",{children:w("tenants.applications.removeConfirm.impactModules",{count:le.app.totalModuleCount})}),e.jsx("li",{children:w("tenants.applications.removeConfirm.impactSections",{count:le.app.totalSectionCount})})]})]})]}),variant:"danger",confirmLabel:w("tenants.applications.remove"),loading:le.loading,onConfirm:async()=>{if(!(!b||!le.app)){te(K=>({...K,loading:!0}));try{await b(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:h}=E.useNavigation(),b=bt(n),u=Ut(n),m=Ot(n),o=a.useCallback(()=>{c&&n===c.id&&h()},[c,n,h]),x=a.useMemo(()=>({onApplicationsChanged:o}),[o]),p=Vt(n,x),N=Wt(n),B=Kt(n),P=Qe.useAccessRequests("tenant",n),[L,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}b.loadTenant()},[n,s,b]),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 N.loadRoles();break;case"applications":await p.loadApplications();break;case"requests":await P.loadRequests();break}H(z=>new Set(z).add(l))})()},[l,n,y,u,m,N,p,P]);const C=async U=>{if(!b.tenant||b.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(b.tenant.id):U==="Suspended"?await E.adminApi.tenants.suspend(b.tenant.id):U==="Archived"&&await E.adminApi.tenants.archive(b.tenant.id),await i(),await b.loadTenant()}catch(ae){console.error("Failed to update tenant status:",ae)}finally{g(null),D({...f,show:!1})}}})},F=async()=>{g("refresh");try{const U=[b.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(N.loadRoles());break;case"applications":U.push(p.loadApplications());break;case"requests":U.push(P.loadRequests());break}await Promise.all(U)}finally{g(null)}};if(b.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(!b.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:b.error||t("admin:tenants.notFound")})]})})]});const A=b.tenant,Z=rt[A.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:A.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:A.name}),e.jsx("p",{className:"text-sm sm:text-base text-[var(--text-secondary)]",children:A.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(A.status),t(`admin:tenants.status.${A.status.toLowerCase()}`)]}),e.jsx("span",{className:`px-3 py-1 rounded-[var(--radius-badge)] text-sm ${A.type==="Business"?"bg-[var(--info-bg)] text-[var(--info-text)]":"bg-[var(--accent-bg)] text-[var(--accent-text)]"}`,children:t(`admin:tenants.type.${A.type.toLowerCase()}`)}),A.status!=="Active"&&A.status!=="Archived"&&e.jsxs("button",{onClick:()=>C("Active"),disabled:L!==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:[L==="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")]}),A.status==="Active"&&e.jsxs("button",{onClick:()=>C("Suspended"),disabled:L!==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:[L==="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:F,disabled:L==="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 ${L==="refresh"?"animate-spin":""}`})})]})]}),b.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:b.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:A,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:L,onRefresh:F,onEditClick:b.openEditGeneralInfo,onStatusChange:U=>{C({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:L,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:N.roles,loadingRoles:N.loadingRoles}),l==="applications"&&e.jsx(ht,{tenantId:n,tenantName:A.name,applications:p.applications,loadingApps:p.loadingApps,actionLoading:L,onRefresh:p.loadApplications,onUpdateAccessLevel:p.handleUpdateAccessLevel,onRemoveApplication:p.handleRemoveApplication,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(),b.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,h,b,u,m,o,x,p,N,B,P=!1){return{name:t,legalName:n||void 0,countryCode:s,businessIdentifierType:l,businessIdentifier:d,vatNumber:i||void 0,address:{street:c,street2:h||void 0,postalCode:b,city:u,state:m||void 0,country:o,countryCode:x},phone:p||void 0,email:N||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,h]=a.useState(null),[b,u]=a.useState(null),[m,o]=a.useState(fs(d)),[x,p]=a.useState(i?"existing":"none"),[N,B]=a.useState(!1),[P,L]=a.useState(!0),[g,f]=a.useState(null),[D,y]=a.useState(!1),[H,C]=a.useState(null),[F,A]=a.useState(!1),[Z,q]=a.useState(!1),[U,z]=a.useState(null),[ee,ae]=a.useState([]),[$,X]=a.useState(""),[J,R]=a.useState(!1);a.useEffect(()=>{(async()=>{try{const ne=await E.adminApi.tenants.getConfig();h(ne.enableB2B),u(ne.enableB2C),i||o(ys(ne))}catch(ne){console.error("Failed to load tenant config:",ne),h(!0),u(!0)}finally{L(!1)}})()},[i]),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}),T||k(ne.name)}catch(ne){console.error("Failed to load organisation:",ne)}})()},[i]),a.useEffect(()=>{if(x!=="existing")return;const ne=setTimeout(async()=>{R(!0);try{const ue=await E.adminApi.organisations.getAvailable($||void 0);ae(ue)}catch(ue){console.error("Failed to search organisations:",ue)}finally{R(!1)}},300);return()=>clearTimeout(ne)},[x,$]);const[T,j]=a.useState(""),[M,O]=a.useState(""),[S,v]=a.useState(""),[w,ie]=a.useState(""),[le,te]=a.useState(""),[Q,pe]=a.useState("CH"),[me,K]=a.useState("UID_CHE"),[oe,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),C(null),A(!1)};a.useEffect(()=>{Q==="CH"&&me==="UID_CHE"&&ge(!oe||oe==="CHE-"?"CHE-":W(oe))},[Q,me,oe]);const[_,se]=a.useState(""),[V,Y]=a.useState(""),[re,ve]=a.useState(""),[he,fe]=a.useState(""),[ye,$e]=a.useState(""),[Te,Me]=a.useState(""),[Se,Ue]=a.useState(""),[Re,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),k=I=>{j(I),(!M||M===Ce(T))&&O(Ce(I))},ce=()=>{const I=oe.replace(/[^0-9]/g,"");return!oe||I.length<9||!Q?(C(t("admin:tenants.create.organisation.lookupIncomplete")),!1):!0},je=I=>{I.name&&(ie(I.name),T||k(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&&Me(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(ce()){y(!0),C(null),A(!1);try{const I=await E.adminApi.organisations.lookup(Q,oe);je(I),Pe(I),q(!0),A(!0),setTimeout(()=>A(!1),3e3)}catch(I){console.error("[Zefix Lookup] Failed:",I);const ne=I instanceof Error?I.message:"";C(Ke(ne))}finally{y(!1)}}},yt=async()=>{const I={name:T,slug:M||Ce(T),description:S||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:T,slug:M||Ce(T),description:S||void 0,organisationId:U.id};else if(x==="create"){const ue=js(w,le,Q,me,oe,_,ye,Te,Se,Re,Ge,Be,Fe,V,re,he,Z);I={name:T,slug:M||Ce(T),description:S||void 0,organisation:ue}}else I={name:T,slug:M||Ce(T),description:S||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=!!(T&&(m!=="Business"?!0:!!(T&&(x==="existing"?!!U:x!=="create"?!0:!!(w&&Q&&me&&oe&&ye&&Se&&Re&&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&&b===!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 ${b&&c?"grid-cols-2":"grid-cols-1"}`,children:[b&&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:T,onChange:I=>k(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:S,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),T||k(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:w,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:oe,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||!oe||oe.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]}),F&&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:oe.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=>Me(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:Re,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:N||!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:[N?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:h=0,fill:b="#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),N=Math.cos(-x*l),B=n+(i+10)*N,P=s+(i+10)*p,L=n+(i+30)*N,g=s+(i+30)*p,f=L+(N>=0?1:-1)*22,D=g,y=N>=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:h,fill:b}),e.jsx(be.Sector,{cx:n,cy:s,startAngle:c,endAngle:h,innerRadius:i+6,outerRadius:i+10,fill:b}),e.jsx("path",{d:`M${B},${P}L${L},${g}L${f},${D}`,stroke:b,fill:"none"}),e.jsx("circle",{cx:f,cy:D,r:2,fill:b,stroke:"none"}),e.jsx("text",{x:f+(N>=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),h=t.map((u,m)=>({...u,tenantType:n==="duration"?"_duration":u.tenantType,name:u.tenantName,value:d(u),fill:it[m%it.length]})),b=(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:h,cx:"50%",cy:"50%",innerRadius:70,outerRadius:110,fill:"#8884d8",dataKey:"value",onMouseEnter:b,children:h.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:h.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,h]=a.useState(null);if(a.useEffect(()=>{(async()=>{try{i(!0);const o=await E.tenantAnalyticsApi.getTrends(t);l(o),h(null)}catch(o){h(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 b=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:b,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 h=s(i),b=h/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:h.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:`${b}%`,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,h]=a.useState(!0),[b,u]=a.useState(!1),[m,o]=a.useState(null),[x,p]=a.useState(30),[N,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,N==="access"?"access":"duration")]);l(f),i(D)}catch(f){o(f instanceof Error?f.message:"Failed to load dashboard")}finally{h(!1),u(!1)}},[x,N]);a.useEffect(()=>{h(!0),P()},[P]);const L=()=>{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:L,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 ${N==="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 ${N==="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:L,disabled:b,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 ${b?"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)]"}),N==="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:N}):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:N==="access"?f.accessCount:`${f.totalDurationMinutes}m`}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:N==="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 ${N==="access"?"d'utilisation":"du temps passé"} par Tenant`})," (",x," ",n("common.days","jours"),")"]}),e.jsx(ks,{period:x,mode:N})]}),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 ${N==="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:N}):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}))}),Ms=t=>({...t,isAssigned:!1,sections:t.sections.map(n=>({...n,isAssigned:!1}))});function Rs(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),[h,b]=a.useState([]),[u,m]=a.useState(!1),[o,x]=a.useState([]),[p,N]=a.useState(!1),[B,P]=a.useState(""),[L,g]=a.useState(null),[f,D]=a.useState("FullAccess"),[y,H]=a.useState("full"),[C,F]=a.useState([]),[A,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(Rs):[];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);b(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]),R=a.useCallback(()=>{c(!1),x([]),P(""),D("FullAccess"),H("full"),F([]),Z(new Set)},[]),T=a.useCallback(async()=>{if(!(!t||o.length===0)){N(!0);try{const G={applicationIds:o,accessLevel:f,accessMode:y,moduleIds:y==="custom"?C.filter(_=>_.isAssigned).map(_=>_.id):void 0,sectionIds:y==="custom"?C.flatMap(_=>_.sections.filter(se=>se.isAssigned).map(se=>se.id)):void 0};await E.adminApi.templates.bulkAssignApplications(t,G),await X(),R()}catch(G){console.error("Failed to assign applications:",G)}finally{N(!1)}}},[t,o,f,y,C,X,R]),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)},[]),S=a.useCallback(()=>{ee(!1),$(null)},[]),v=a.useMemo(()=>{if(!B)return h;const G=B.toLowerCase();return h.filter(_=>_.label.toLowerCase().includes(G)||_.code.toLowerCase().includes(G))},[h,B]),w=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})}F(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=>{F(_=>_.map(se=>Ls(se,G)))},[]),me=a.useCallback((G,_)=>{F(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"},[]),oe=a.useCallback(()=>{const G=C.length,_=C.filter(Y=>Y.isAssigned||Y.sections.some(re=>re.isAssigned)).length,se=C.reduce((Y,re)=>Y+re.sections.length,0),V=C.reduce((Y,re)=>Y+re.sections.filter(ve=>ve.isAssigned).length,0);return{totalModules:G,assignedModules:_,totalSections:se,assignedSections:V}},[C]),ge=a.useCallback(()=>{F(G=>G.map(_=>Is(_)))},[]),W=a.useCallback(()=>{F(G=>G.map(_=>Ms(_)))},[]);return{applications:n,setApplications:s,loadingApps:l,setLoadingApps:d,addingApplication:i,setAddingApplication:c,availableApps:h,setAvailableApps:b,loadingAvailableApps:u,setLoadingAvailableApps:m,selectedAppIds:o,setSelectedAppIds:x,assigningApps:p,setAssigningApps:N,appSearchTerm:B,setAppSearchTerm:P,selectedAccessLevel:f,setSelectedAccessLevel:D,bulkAccessMode:y,setBulkAccessMode:H,bulkModules:C,setBulkModules:F,bulkExpandedModules:A,setBulkExpandedModules:Z,loadingBulkModules:q,setLoadingBulkModules:U,showCustomizeDrawer:z,setShowCustomizeDrawer:ee,customizingApp:ae,setCustomizingApp:$,loadApplications:X,availableAppsError:L,loadAvailableApps:J,handleAssignApplications:T,handleRemoveApplication:j,handleUpdateAccessLevel:M,openCustomizeDrawer:O,closeCustomizeDrawer:S,filteredAvailableApps:v,handleAppToggle:w,selectAllFilteredApps:ie,clearAppSelection:le,loadBulkModulesForApp:te,toggleBulkModuleExpand:Q,toggleBulkModule:pe,toggleBulkSection:me,getBulkModuleCheckState:K,getBulkStats:oe,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),[h,b]=a.useState(!0),[u,m]=a.useState(null),o=Bs(n),x=a.useCallback(async()=>{if(n)try{b(!0);const B=await E.adminApi.templates.getById(n);c(B),m(null)}catch{m(t("templates.errors.loadFailed"))}finally{b(!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]),h)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,N=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"}),N]})]})]})]}),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,h]=a.useState(null),b=a.useCallback(async()=>{try{i(!0),h(null);const u=await E.adminApi.templates.getTenants(t);l(u)}catch{h(n("templates.errors.loadFailed"))}finally{i(!1)}},[t,n]);return a.useEffect(()=>{b()},[b]),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:()=>b(),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,h]=a.useState(null),b=a.useCallback(async()=>{try{i(!0),h(null);const m=await E.adminApi.templates.getAiInstances(t);l(m)}catch{h(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 b()}catch{h(n("templates.errors.loadFailed"))}},[t,n,b]);return a.useEffect(()=>{b()},[b]),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:()=>b(),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,h]=a.useState(null),b=a.useCallback(async()=>{try{i(!0);const x=await E.adminApi.templates.getAll();l(x),h(null)}catch{h(t("tenants.template.errors.loadFailed"))}finally{i(!1)}},[t]);a.useEffect(()=>{b()},[b]);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,h]=a.useState(""),[b,u]=a.useState("Business"),[m,o]=a.useState(!1),[x,p]=a.useState(null),N=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:b});n(`/administration/tenants/template/${P.id}`)}catch(P){console.error("Failed to create template:",P);const L=P;L.response?.status===409?p(L.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:N,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=>h(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:b,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"),h=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(()=>{h()},[h]);const b={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:b.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:b.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:b.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:h,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=>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;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=({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.Settings,{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 Qs({config:t,loading:n,canEdit:s,onRefresh:l,onConfigUpdated:d,t:i,entraApi:c}){const[h,b]=a.useState(!1),[u,m]=a.useState(!1),[o,x]=a.useState(!1),[p,N]=a.useState(null),[B,P]=a.useState(!1),[L,g]=a.useState(null),[f,D]=a.useState(null),[y,H]=a.useState(null),[C,F]=a.useState(t?.hasClientSecret??!1),[A,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:""}),F(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=(S,v)=>{const w=Ys(v)?void 0:i("entra:settings.invalidGuidFormat");Z(ie=>({...ie,[S]:w}))},$=(S,v)=>{U(w=>({...w,[S]:v})),(S==="tenantId"||S==="clientId")&&ae(S,v)},X=!!(A.tenantId||A.clientId),J=!o&&!X&&q.tenantId&&q.clientId&&(q.clientSecret||C),R=!u&&!X&&q.tenantId&&q.clientId&&q.clientSecret,T=async S=>{try{await navigator.clipboard.writeText(S),H(S),setTimeout(()=>H(null),2e3)}catch(v){console.error("Failed to copy:",v instanceof Error?v.message:"Unknown error")}},j=async()=>{if(J){x(!0),N(null),g(null),D(null);try{const S=q.clientSecret?await c.settings.testConnection({tenantId:q.tenantId,clientId:q.clientId,clientSecret:q.clientSecret}):await c.settings.testStoredConnection();N(S),S.success?D(i("entra:settings.testSuccess")):g(S.errorMessage||i("entra:settings.testFailed"))}catch(S){console.error("Connection test failed:",S instanceof Error?S.message:"Unknown error"),g(i("entra:settings.testFailed"))}finally{x(!1)}}},M=async()=>{if(R){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")),F(!0),U(S=>({...S,clientSecret:""})),d()}catch(S){console.error("Failed to save credentials:",S instanceof Error?S.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(S){console.error("Failed to save settings:",S instanceof Error?S.message:"Unknown error"),g(i("entra:settings.saveError"))}finally{m(!1)}};return!s||!h?e.jsx(Zs,{config:t,loading:n,canEdit:s,onRefresh:l,onEdit:()=>b(!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(S=>e.jsxs("button",{onClick:()=>T(S.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:S.code}),y===S.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)]"})]},S.code))})]})]})}),L&&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:L})]}),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:S=>$("tenantId",S.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 ${A.tenantId?"border-[var(--error-border)] focus:ring-[var(--error-border)]":"border-[var(--border-color)] focus:ring-[var(--color-accent-500)]"}`}),A.tenantId&&e.jsx("p",{className:"mt-1.5 text-xs text-[var(--error-text)]",children:A.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:S=>$("clientId",S.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 ${A.clientId?"border-[var(--error-border)] focus:ring-[var(--error-border)]":"border-[var(--border-color)] focus:ring-[var(--color-accent-500)]"}`}),A.clientId&&e.jsx("p",{className:"mt-1.5 text-xs text-[var(--error-text)]",children:A.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"),C&&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:S=>$("clientSecret",S.target.value),placeholder:C?"••••••••••••••••":"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&&!C,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(S=>({...S,syncEnabled:!S.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:S=>ee(v=>({...v,syncIntervalMinutes:Number(S.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,children:["15 ",i("common:minutes")]}),e.jsxs("option",{value:30,children:["30 ",i("common:minutes")]}),e.jsxs("option",{value:60,children:["1 ",i("common:hour")]}),e.jsxs("option",{value:120,children:["2 ",i("common:hours")]}),e.jsxs("option",{value:360,children:["6 ",i("common:hours")]}),e.jsxs("option",{value:720,children:["12 ",i("common:hours")]}),e.jsxs("option",{value:1440,children:["24 ",i("common:hours")]})]})]}),e.jsx(Ye,{checked:z.useDeltaSync,onChange:()=>ee(S=>({...S,useDeltaSync:!S.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:S=>ee(v=>({...v,defaultConflictResolution:S.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",children:i("entra:settings.conflictResolutions.manualReview")}),e.jsx("option",{value:"EntraWins",children:i("entra:settings.conflictResolutions.entraWins")}),e.jsx("option",{value:"LocalWins",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(S=>({...S,syncOnlyActiveUsers:!S.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(S=>{const v=z.syncUserTypes.split(",").map(ie=>ie.trim()).filter(Boolean),w=v.includes(S.id);return e.jsxs("label",{className:`flex items-center gap-3 p-3 rounded-[var(--radius-button)] border cursor-pointer transition-all ${w?"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:w,onChange:()=>{let ie=w?v.filter(le=>le!==S.id):[...v,S.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.${S.labelKey}`)})]},S.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:()=>b(!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 Js=(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())},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,h]=a.useState([]),[b,u]=a.useState(!1),[m,o]=a.useState(1),[x,p]=a.useState(0),[N,B]=a.useState(null);return{syncing:t,setSyncing:n,lastSyncResult:s,setLastSyncResult:l,syncError:d,setSyncError:i,history:c,setHistory:h,historyLoading:b,setHistoryLoading:u,historyPage:m,setHistoryPage:o,historyTotalCount:x,setHistoryTotalCount:p,cancellingSessionId:N,setCancellingSessionId:B}};function ra({config:t,conflicts:n,syncStatus:s,loading:l,canSync:d,onRefresh:i,onResolveConflict:c,onSyncAll:h,onLoadHistory:b,onCancelSession:u,activeSyncSession:m,t:o}){const{syncing:x,setSyncing:p,lastSyncResult:N,setLastSyncResult:B,syncError:P,setSyncError:L,history:g,setHistory:f,historyLoading:D,setHistoryLoading:y,historyPage:H,setHistoryPage:C,historyTotalCount:F,setHistoryTotalCount:A,cancellingSessionId:Z,setCancellingSessionId:q}=aa(),U=5,z=a.useCallback(async $=>{y(!0);try{const X=await b($,U);if(!X)return;f(X.sessions),A(X.totalCount),C($)}catch(X){console.error("Failed to load history:",X)}finally{y(!1)}},[b,f,y,C,A]);a.useEffect(()=>{t?.isConfigured&&z(1)},[t?.isConfigured,z]);const ee=async()=>{p(!0),L(null),B(null);try{const $=await h();if(!$)return;B($),i(),z(1)}catch($){console.error("Sync failed:",$ instanceof Error?$.message:"Unknown error"),L(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})]}),N&&e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${N.success?"bg-[var(--success-bg)] border-[var(--success-border)]":"bg-[var(--error-bg)] border-[var(--error-border)]"}`,children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[N.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 ${N.success?"text-[var(--success-text)]":"text-[var(--error-text)]"}`,children:N.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:["+",N.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:["~",N.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:["-",N.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:N.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 ${N.conflicts>0?"text-[var(--warning-text)]":"text-[var(--text-primary)]"}`,children:N.conflicts})]})]}),N.errorMessage&&e.jsx("p",{className:"mt-3 text-sm text-[var(--error-text)]",children:N.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))})]})}),F>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,F),total:F})}),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>=F||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,h]=a.useState("config"),[b,u]=a.useState(!0),[m,o]=a.useState(null),x=a.useMemo(()=>Je.createEntraApi(n),[n]),[p,N]=a.useState(null),[B,P]=a.useState([]),[L,g]=a.useState([]),[f,D]=a.useState(null),[y,H]=a.useState(!1),[C,F]=a.useState(null),[A,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)&&h(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,S,v]=await Promise.all([x.settings.getConfiguration(),x.conflicts.getAll(),x.dashboard.getSyncStatus()]);N(O??null),P(Array.isArray(S)?S:[]),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(S=>{Js(S,F,J)}),[i,J]),a.useEffect(()=>{if(!C){Z("00:00");return}Z(ct(C.startedAt));const O=setInterval(()=>{Z(ct(C.startedAt))},1e3);return()=>clearInterval(O)},[C]);const R=a.useCallback(async(O,S)=>{if(!(!f||y)){H(!0);try{await x.conflicts.resolve(f.id,{resolution:O,notes:S||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]),T=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,S)=>{try{return await x.sync.getHistory(O,S)}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(S){return console.error("Failed to cancel session:",S instanceof Error?S.message:"Unknown error"),!1}},[x]);return b?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:"×"})]}),C&&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:["⏱ ",A]})})]}),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 S=O.icon,v=c===O.id,w=O.id==="sync"&&B.length>0;return e.jsxs("button",{onClick:()=>h(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(S,{className:"w-4 h-4"}),e.jsx("span",{className:"hidden sm:inline",children:O.label}),w&&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(Qs,{config:p,loading:b,canEdit:ee,onRefresh:J,onConfigUpdated:J,t:s,entraApi:x}),c==="sync"&&e.jsx(ra,{config:p,conflicts:B,syncStatus:L,loading:b,canSync:ae,onRefresh:J,onResolveConflict:D,onSyncAll:T,onLoadHistory:j,onCancelSession:M,activeSyncSession:C,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:R,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),[h,b]=a.useState(!1),[u,m]=a.useState(!1),[o,x]=a.useState(null),[p,N]=a.useState(null),[B,P]=a.useState(!1),[L,g]=a.useState(null),[f,D]=a.useState(null),[y,H]=a.useState(null),[C,F]=a.useState({}),[A,Z]=a.useState("SmartStack"),[q,U]=a.useState(""),[z,ee]=a.useState(""),[ae,$]=a.useState(""),[X,J]=a.useState(""),[R,T]=a.useState(""),[j,M]=a.useState(""),[O,S]=a.useState(""),[v,w]=a.useState(!1),[ie,le]=a.useState(60),te=A==="GLPI",Q=W=>C[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||""),T(""),M(W.glpiEntityId!=null?String(W.glpiEntityId):""),S(W.glpiRequestTypeId!=null?String(W.glpiRequestTypeId):""),w(W.syncEnabled),le(W.syncIntervalMinutes)}catch{g(null)}finally{d(!1)}},[t]);a.useEffect(()=>{pe()},[pe]);const me=()=>{if(!te)return F({}),!0;const W=oa({glpiBaseUrl:q,glpiClientId:z,glpiClientSecret:ae,glpiUsername:X,glpiPassword:R},L,s);return F(W),Object.keys(W).length===0},K=async()=>{if(!me())return;c(!0),x(null),N(null);const W=ca({glpiBaseUrl:q,glpiClientId:z,glpiClientSecret:ae,glpiUsername:X,glpiPassword:R,glpiEntityId:j,glpiRequestTypeId:O},A,v,ie);try{const G=await De.ticketingApi.saveConfiguration(t,W);g(G),$(""),T(""),N(s("admin:tenants.ticketing.saveSuccess"))}catch{x(s("admin:tenants.ticketing.saveFailed"))}finally{c(!1)}},oe=async()=>{b(!0),H(null),x(null),N(null);try{const W=await De.ticketingApi.testConnection(t,{glpiBaseUrl:q,glpiClientId:z,glpiClientSecret:ae||void 0,glpiUsername:X,glpiPassword:R||void 0});H(W),W.success?N(s("admin:tenants.ticketing.testSuccess")):x(W.errorMessage||s("admin:tenants.ticketing.testFailed"))}catch{x(s("admin:tenants.ticketing.testFailed"))}finally{b(!1)}},ge=async()=>{m(!0),D(null),x(null),N(null);try{const W=await De.ticketingApi.triggerSync(t);D(W),W.success?N(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:()=>N(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:A,onChange:W=>{const G=W.target.value;Z(G),G!=="GLPI"&&w(!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),F(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`}),C.glpiBaseUrl&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:C.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),F(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`}),C.glpiClientId&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:C.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")}),L?.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),F(G=>{const{glpiClientSecret:_,...se}=G;return se})},placeholder:L?.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"})})]}),C.glpiClientSecret&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:C.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),F(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`}),C.glpiUsername&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:C.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")}),L?.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:R,onChange:W=>{T(W.target.value),F(G=>{const{glpiPassword:_,...se}=G;return se})},placeholder:L?.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"})})]}),C.glpiPassword&&e.jsx("p",{className:"mt-1 text-xs text-[var(--error-text)]",children:C.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=>S(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:oe,disabled:h||!q||!z||!ae&&!L?.hasGlpiClientSecret||!X||!R&&!L?.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:[h?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:()=>w(!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")]})]})]})]})}),L?.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:L.lastSyncAt?new Date(L.lastSyncAt).toLocaleString():s("admin:tenants.ticketing.syncStatus.never")})]}),e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${L.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:[L.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 ${L.lastSyncError?"text-[var(--error-text)]":"text-[var(--success-text)]"}`,children:s("admin:tenants.ticketing.syncStatus.status")})]}),e.jsx("p",{className:`text-sm ${L.lastSyncError?"text-[var(--error-text)]":"text-[var(--success-text)]"}`,children:L.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,s,i]),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(h=>e.jsx("button",{onClick:()=>d(h),className:`px-4 py-2 border-b-2 transition-colors ${l===h?"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.${h}`)},h))})}),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),[h,b]=a.useState(null),[u,m]=a.useState({}),[o,x]=a.useState(null),p=a.useCallback(async()=>{try{d(!0),c(null);const L=await we.tenantTypeSettingsApi.getAll();s(L);const g={};for(const f of L)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 N=async L=>{const g=u[L];if(g)try{x(L),c(null);const f={icon:g.icon,iconType:g.iconType,color:g.color,displayName:g.displayName,description:g.description||null};await we.tenantTypeSettingsApi.update(L,f),b(t("admin:tenantTypeSettings.saveSuccess")),setTimeout(()=>b(null),3e3),await p()}catch{c(t("admin:tenantTypeSettings.saveError"))}finally{x(null)}},B=(L,g,f)=>{m(D=>({...D,[L]:{...D[L],[g]:f}}))},P=L=>{const g=n.find(D=>D.type===L),f=u[L];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})]}),h&&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:h})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:n.map(L=>{const g=u[L.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:L.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(L.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(L.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(L.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(L.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:()=>N(L.type),disabled:!P(L.type)||o===L.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===L.type?e.jsx(r.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(r.Save,{className:"w-4 h-4"}),t("common:save")]})]},L.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,h]=a.useState(null),[b,u]=a.useState(1),[m]=a.useState(10),[o,x]=a.useState(1),[p,N]=a.useState(""),[B,P]=a.useState("All"),L=a.useCallback(async y=>{i(!0),h(null);try{const H=await E.adminApi.organisations.getAll({page:b,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),h(t("common:error","An error occurred")))}finally{y?.aborted||i(!1)}},[b,m,p,B,t]);a.useEffect(()=>{const y=new AbortController;return L(y.signal),()=>y.abort()},[L]);const g=y=>{N(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:()=>L(),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")," ",b," ",t("common:of","of")," ",o]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>u(Math.max(1,b-1)),disabled:b===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,b+1)),disabled:b>=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),[h,b]=a.useState(!0),[u,m]=a.useState(null),[o,x]=a.useState(!1),p=()=>{const A=l.get("tab");return A&&pt.includes(A)?A:"info"},[N,B]=a.useState(p),[P,L]=a.useState({show:!1,notes:""}),[g,f]=a.useState({show:!1,reason:""});a.useEffect(()=>{N==="info"?l.get("tab")&&(l.delete("tab"),d(l,{replace:!0})):l.get("tab")!==N&&d({tab:N},{replace:!0})},[N,l,d]);const D=a.useCallback(async()=>{if(!n){s("/administration/tenants/organisations");return}b(!0),m(null);try{const A=await E.adminApi.organisations.getById(n);c(A)}catch(A){console.error("Failed to load organisation:",A),m(t("admin:organisations.loadError","Failed to load organisation"))}finally{b(!1)}},[n,s,t]);a.useEffect(()=>{D()},[D]);const y=async()=>{if(i){x(!0);try{const A=await E.adminApi.organisations.verify(i.id,P.notes||void 0);c(A),L({show:!1,notes:""})}catch(A){console.error("Failed to verify organisation:",A),m(t("admin:organisations.verifyError","Failed to verify organisation"))}finally{x(!1)}}},H=async()=>{if(i){x(!0);try{const A=await E.adminApi.organisations.reject(i.id,g.reason);c(A),f({show:!1,reason:""})}catch(A){console.error("Failed to reject organisation:",A),m(t("admin:organisations.rejectError","Failed to reject organisation"))}finally{x(!1)}}},C=i&&(i.phone||i.email||i.website);if(h)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 F=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 ${F.bgColor} ${F.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(A=>e.jsx("button",{onClick:()=>B(A),className:`px-4 py-2 border-b-2 transition-colors ${N===A?"border-[var(--primary-color)] text-[var(--primary-color)]":"border-transparent text-[var(--text-secondary)] hover:text-[var(--text-primary)]"}`,children:t(`admin:organisations.tabs.${A}`,A)},A))})}),N==="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:()=>L({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")]})]})]}),N==="contact"&&(C?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")})),N==="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:A=>L({...P,notes:A.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:()=>L({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:A=>f({...g,reason:A.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:h}=de.useTranslation(["admin","common"]),[b,u]=a.useState(!1),[m,o]=a.useState(null),[x,p]=a.useState(!1),N=C=>{const F=C.toUpperCase().replace(/[^A-Z0-9]/g,"");let A=F.startsWith("CHE")?F.slice(3):F.replace(/[^0-9]/g,"");return A=A.slice(0,9),A.length===0?"CHE-":A.length<=3?`CHE-${A}`:A.length<=6?`CHE-${A.slice(0,3)}.${A.slice(3)}`:`CHE-${A.slice(0,3)}.${A.slice(3,6)}.${A.slice(6)}`},B=()=>{switch(h.language?.substring(0,2).toLowerCase()){case"de":return"MWST";case"fr":return"TVA";case"it":return"IVA";default:return"MWST"}},P=C=>{let F=C;t.countryCode==="CH"&&(F=N(C)),n({...t,businessIdentifier:F,isFromRegistry:!1}),o(null),p(!1)},L=C=>{const F=vt[C];F&&n({...t,countryCode:C,businessIdentifierType:F.defaultType,businessIdentifier:C==="CH"?"CHE-":"",isFromRegistry:!1,address:{...t.address,countryCode:C,country:F.country}}),o(null),p(!1)};a.useEffect(()=>{t.countryCode==="CH"&&(!t.businessIdentifier||t.businessIdentifier==="")&&n({...t,businessIdentifier:"CHE-"})},[t,n]);const g=async()=>{const C=t.businessIdentifier.replace(/[^0-9]/g,"");if(!t.businessIdentifier||C.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 F=await E.adminApi.organisations.lookup(t.countryCode,t.businessIdentifier),A={...t,name:F.name||t.name,legalName:F.legalName||t.legalName,vatNumber:F.vatNumber?`${F.vatNumber} ${B()}`:t.vatNumber,phone:F.phone||t.phone,email:F.email||t.email,website:F.website||t.website,isFromRegistry:!0,address:{street:F.street||t.address.street,street2:F.street2||t.address.street2,postalCode:F.postalCode||t.address.postalCode,city:F.city||t.address.city,state:F.state||t.address.state,country:F.country||t.address.country,countryCode:F.countryCode||t.address.countryCode}};n(A),s&&F.name&&s(F.name),p(!0),setTimeout(()=>p(!1),3e3)}catch(F){console.error("[Zefix Lookup] Failed:",F);const A=F instanceof Error?F.message:"";A.includes("404")||A.includes("not found")?o(c("admin:tenants.organisation.lookupFailed","Company not found in registry")):A.includes("credentials")||A.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=C=>C?`${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:C=>n({...t,name:C.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:C=>L(C.target.value),className:f,children:Object.entries(vt).map(([C,F])=>e.jsxs("option",{value:C,children:[F.country," (",C,")"]},C))})]}),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:C=>P(C.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:b||!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:b?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:C=>n({...t,address:{...t.address,street:C.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:C=>n({...t,address:{...t.address,postalCode:C.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:C=>n({...t,address:{...t.address,city:C.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:C=>n({...t,vatNumber:C.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,h]=a.useState(null),[b,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),h(null);try{const p=fa(s),N=await E.adminApi.organisations.create(p);n(`/administration/tenants/organisations/${N.id}`)}catch(p){console.error("Failed to create organisation:",p),h(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:b})}),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-JSjfMShT.js.map