@atlashub/smartstack 3.21.0 → 3.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{AgentSkillsPage-7si3Ng8e.js → AgentSkillsPage-BWQSCYl-.js} +2 -2
- package/dist/chunks/{AgentSkillsPage-7si3Ng8e.js.map → AgentSkillsPage-BWQSCYl-.js.map} +1 -1
- package/dist/chunks/{AgentSkillsPage-D0cD1QdM.js → AgentSkillsPage-IQcMnBaD.js} +2 -2
- package/dist/chunks/{AgentSkillsPage-D0cD1QdM.js.map → AgentSkillsPage-IQcMnBaD.js.map} +1 -1
- package/dist/chunks/{AgentWorkloadPage-H_7ze33H.js → AgentWorkloadPage-DqrjkvWL.js} +2 -2
- package/dist/chunks/{AgentWorkloadPage-H_7ze33H.js.map → AgentWorkloadPage-DqrjkvWL.js.map} +1 -1
- package/dist/chunks/{AgentWorkloadPage-D4d86cdV.js → AgentWorkloadPage-w-HiyFYP.js} +2 -2
- package/dist/chunks/{AgentWorkloadPage-D4d86cdV.js.map → AgentWorkloadPage-w-HiyFYP.js.map} +1 -1
- package/dist/chunks/{ApiCatalogDetailPage-2ktkRrCb.js → ApiCatalogDetailPage-D3L8Yf4G.js} +3 -3
- package/dist/chunks/{ApiCatalogDetailPage-2ktkRrCb.js.map → ApiCatalogDetailPage-D3L8Yf4G.js.map} +1 -1
- package/dist/chunks/{ApiCatalogDetailPage-BQ53xuwD.js → ApiCatalogDetailPage-MPT3Kz6H.js} +2 -2
- package/dist/chunks/{ApiCatalogDetailPage-BQ53xuwD.js.map → ApiCatalogDetailPage-MPT3Kz6H.js.map} +1 -1
- package/dist/chunks/{ApiCatalogPage-BEqTDJz8.js → ApiCatalogPage-D4Hg3uiS.js} +2 -2
- package/dist/chunks/{ApiCatalogPage-BEqTDJz8.js.map → ApiCatalogPage-D4Hg3uiS.js.map} +1 -1
- package/dist/chunks/{ApiCatalogPage-BBkWSLI8.js → ApiCatalogPage-DRg5Cz0r.js} +2 -2
- package/dist/chunks/{ApiCatalogPage-BBkWSLI8.js.map → ApiCatalogPage-DRg5Cz0r.js.map} +1 -1
- package/dist/chunks/{ApplicationDetailPage-BYJ2YMPq.js → ApplicationDetailPage-Caizuyn2.js} +2 -2
- package/dist/chunks/{ApplicationDetailPage-BYJ2YMPq.js.map → ApplicationDetailPage-Caizuyn2.js.map} +1 -1
- package/dist/chunks/{ApplicationDetailPage-D8-bf1as.js → ApplicationDetailPage-CuCW6aMB.js} +4 -4
- package/dist/chunks/{ApplicationDetailPage-D8-bf1as.js.map → ApplicationDetailPage-CuCW6aMB.js.map} +1 -1
- package/dist/chunks/{ApplicationsDashboardPage-BBlLms2r.js → ApplicationsDashboardPage-B2MW8-Kc.js} +2 -2
- package/dist/chunks/{ApplicationsDashboardPage-BBlLms2r.js.map → ApplicationsDashboardPage-B2MW8-Kc.js.map} +1 -1
- package/dist/chunks/{ApplicationsDashboardPage-DTWZxJJM.js → ApplicationsDashboardPage-BDIjFIYZ.js} +3 -3
- package/dist/chunks/{ApplicationsDashboardPage-DTWZxJJM.js.map → ApplicationsDashboardPage-BDIjFIYZ.js.map} +1 -1
- package/dist/chunks/{ApplicationsGridPage-BQaMsK1K.js → ApplicationsGridPage-DV-FihKj.js} +2 -2
- package/dist/chunks/{ApplicationsGridPage-BQaMsK1K.js.map → ApplicationsGridPage-DV-FihKj.js.map} +1 -1
- package/dist/chunks/{ApplicationsGridPage-DbVcvezt.js → ApplicationsGridPage-DXsTfXPI.js} +2 -2
- package/dist/chunks/{ApplicationsGridPage-DbVcvezt.js.map → ApplicationsGridPage-DXsTfXPI.js.map} +1 -1
- package/dist/chunks/{ApplicationsListPage-DYKM2Yeo.js → ApplicationsListPage--CGkyBuJ.js} +2 -2
- package/dist/chunks/{ApplicationsListPage-DYKM2Yeo.js.map → ApplicationsListPage--CGkyBuJ.js.map} +1 -1
- package/dist/chunks/{ApplicationsListPage-C91v2rZt.js → ApplicationsListPage-JUX823bh.js} +2 -2
- package/dist/chunks/{ApplicationsListPage-C91v2rZt.js.map → ApplicationsListPage-JUX823bh.js.map} +1 -1
- package/dist/chunks/{ApplicationsPage-BCbgotIx.js → ApplicationsPage-6zgFye6w.js} +2 -2
- package/dist/chunks/{ApplicationsPage-BCbgotIx.js.map → ApplicationsPage-6zgFye6w.js.map} +1 -1
- package/dist/chunks/{ApplicationsPage-CW3-Hjlu.js → ApplicationsPage-CQPuuiO6.js} +4 -4
- package/dist/chunks/{ApplicationsPage-CW3-Hjlu.js.map → ApplicationsPage-CQPuuiO6.js.map} +1 -1
- package/dist/chunks/{AssignmentRulesPage-D8vfGDBN.js → AssignmentRulesPage-CFffeEbo.js} +2 -2
- package/dist/chunks/{AssignmentRulesPage-D8vfGDBN.js.map → AssignmentRulesPage-CFffeEbo.js.map} +1 -1
- package/dist/chunks/{AssignmentRulesPage-CxktlEMB.js → AssignmentRulesPage-D78UeUId.js} +2 -2
- package/dist/chunks/{AssignmentRulesPage-CxktlEMB.js.map → AssignmentRulesPage-D78UeUId.js.map} +1 -1
- package/dist/chunks/{AssignmentsPage-DmfBYQAD.js → AssignmentsPage-Cww2ifZF.js} +2 -2
- package/dist/chunks/{AssignmentsPage-DmfBYQAD.js.map → AssignmentsPage-Cww2ifZF.js.map} +1 -1
- package/dist/chunks/{AssignmentsPage-sRCCBmRc.js → AssignmentsPage-DE_QS2LO.js} +2 -2
- package/dist/chunks/{AssignmentsPage-sRCCBmRc.js.map → AssignmentsPage-DE_QS2LO.js.map} +1 -1
- package/dist/chunks/{AuthCallbackPage-C7XiZxKb.js → AuthCallbackPage-CA2nO6DG.js} +2 -2
- package/dist/chunks/{AuthCallbackPage-C7XiZxKb.js.map → AuthCallbackPage-CA2nO6DG.js.map} +1 -1
- package/dist/chunks/{AuthCallbackPage-BCe_bwJM.js → AuthCallbackPage-CDUAoX-N.js} +2 -2
- package/dist/chunks/{AuthCallbackPage-BCe_bwJM.js.map → AuthCallbackPage-CDUAoX-N.js.map} +1 -1
- package/dist/chunks/{ConfirmEmailPage-BUfGSqxF.js → ConfirmEmailPage-BqsILAYH.js} +2 -2
- package/dist/chunks/{ConfirmEmailPage-BUfGSqxF.js.map → ConfirmEmailPage-BqsILAYH.js.map} +1 -1
- package/dist/chunks/{ConfirmEmailPage-Buj4x-rx.js → ConfirmEmailPage-INeHCuMB.js} +2 -2
- package/dist/chunks/{ConfirmEmailPage-Buj4x-rx.js.map → ConfirmEmailPage-INeHCuMB.js.map} +1 -1
- package/dist/chunks/{CreateSupportTicketPage-CKDX_HQm.js → CreateSupportTicketPage-BWeuV2aU.js} +2 -2
- package/dist/chunks/{CreateSupportTicketPage-CKDX_HQm.js.map → CreateSupportTicketPage-BWeuV2aU.js.map} +1 -1
- package/dist/chunks/{CreateSupportTicketPage-0LgY-_pu.js → CreateSupportTicketPage-OBwF4v7b.js} +2 -2
- package/dist/chunks/{CreateSupportTicketPage-0LgY-_pu.js.map → CreateSupportTicketPage-OBwF4v7b.js.map} +1 -1
- package/dist/chunks/{DashboardPage-CUZ80NGV.js → DashboardPage-CKHqWrdS.js} +3 -3
- package/dist/chunks/{DashboardPage-CUZ80NGV.js.map → DashboardPage-CKHqWrdS.js.map} +1 -1
- package/dist/chunks/{DashboardPage-CaNOAstg.js → DashboardPage-COmc9b__.js} +3 -3
- package/dist/chunks/{DashboardPage-CaNOAstg.js.map → DashboardPage-COmc9b__.js.map} +1 -1
- package/dist/chunks/{DashboardPage-B48_rQFi.js → DashboardPage-CfKZHiSj.js} +2 -2
- package/dist/chunks/{DashboardPage-B48_rQFi.js.map → DashboardPage-CfKZHiSj.js.map} +1 -1
- package/dist/chunks/{DashboardPage-CUZV1J9t.js → DashboardPage-CwEZZ3jx.js} +2 -2
- package/dist/chunks/{DashboardPage-CUZV1J9t.js.map → DashboardPage-CwEZZ3jx.js.map} +1 -1
- package/dist/chunks/{EscalationConfigPage-CdzAbnGy.js → EscalationConfigPage--7lgZ0kJ.js} +2 -2
- package/dist/chunks/{EscalationConfigPage-CdzAbnGy.js.map → EscalationConfigPage--7lgZ0kJ.js.map} +1 -1
- package/dist/chunks/{EscalationConfigPage-CYGIl_e6.js → EscalationConfigPage-DPyiBcqV.js} +2 -2
- package/dist/chunks/{EscalationConfigPage-CYGIl_e6.js.map → EscalationConfigPage-DPyiBcqV.js.map} +1 -1
- package/dist/chunks/{ForceChangePasswordPage-lRpkwcX7.js → ForceChangePasswordPage-BE-6umub.js} +2 -2
- package/dist/chunks/{ForceChangePasswordPage-lRpkwcX7.js.map → ForceChangePasswordPage-BE-6umub.js.map} +1 -1
- package/dist/chunks/{ForceChangePasswordPage-CvmYAV3r.js → ForceChangePasswordPage-CnsYoWmV.js} +2 -2
- package/dist/chunks/{ForceChangePasswordPage-CvmYAV3r.js.map → ForceChangePasswordPage-CnsYoWmV.js.map} +1 -1
- package/dist/chunks/{ForgotPasswordPage-0u49E4Pw.js → ForgotPasswordPage-CSq4DnFF.js} +2 -2
- package/dist/chunks/{ForgotPasswordPage-0u49E4Pw.js.map → ForgotPasswordPage-CSq4DnFF.js.map} +1 -1
- package/dist/chunks/{ForgotPasswordPage-CxQUqKOm.js → ForgotPasswordPage-DZLVolAC.js} +2 -2
- package/dist/chunks/{ForgotPasswordPage-CxQUqKOm.js.map → ForgotPasswordPage-DZLVolAC.js.map} +1 -1
- package/dist/chunks/{GroupDetailPage-DFBvVO1S.js → GroupDetailPage-Bf9Wb_2j.js} +5 -5
- package/dist/chunks/{GroupDetailPage-DFBvVO1S.js.map → GroupDetailPage-Bf9Wb_2j.js.map} +1 -1
- package/dist/chunks/{GroupDetailPage-B2FkKrGG.js → GroupDetailPage-R-hf3rJ7.js} +2 -2
- package/dist/chunks/{GroupDetailPage-B2FkKrGG.js.map → GroupDetailPage-R-hf3rJ7.js.map} +1 -1
- package/dist/chunks/{MyAccessRequestsPage-C9IX4c0K.js → MyAccessRequestsPage-BIisvWM6.js} +2 -2
- package/dist/chunks/{MyAccessRequestsPage-C9IX4c0K.js.map → MyAccessRequestsPage-BIisvWM6.js.map} +1 -1
- package/dist/chunks/{MyAccessRequestsPage-D6pVULNM.js → MyAccessRequestsPage-BLSV7Tbx.js} +2 -2
- package/dist/chunks/{MyAccessRequestsPage-D6pVULNM.js.map → MyAccessRequestsPage-BLSV7Tbx.js.map} +1 -1
- package/dist/chunks/{MyTenantsPage-BEcYYdGR.js → MyTenantsPage-D-7k9CP1.js} +3 -3
- package/dist/chunks/{MyTenantsPage-BEcYYdGR.js.map → MyTenantsPage-D-7k9CP1.js.map} +1 -1
- package/dist/chunks/{MyTenantsPage-D9f85zjF.js → MyTenantsPage-DqGW6aDt.js} +2 -2
- package/dist/chunks/{MyTenantsPage-D9f85zjF.js.map → MyTenantsPage-DqGW6aDt.js.map} +1 -1
- package/dist/chunks/{MyTicketsPage-DJR8h6y1.js → MyTicketsPage--DgDsnZA.js} +2 -2
- package/dist/chunks/{MyTicketsPage-DJR8h6y1.js.map → MyTicketsPage--DgDsnZA.js.map} +1 -1
- package/dist/chunks/{MyTicketsPage-DiOUExKJ.js → MyTicketsPage-CqJ3Aqob.js} +2 -2
- package/dist/chunks/{MyTicketsPage-DiOUExKJ.js.map → MyTicketsPage-CqJ3Aqob.js.map} +1 -1
- package/dist/chunks/{NavigationAppsPage-CeHbxfZw.js → NavigationAppsPage-Bebis_RT.js} +2 -2
- package/dist/chunks/{NavigationAppsPage-CeHbxfZw.js.map → NavigationAppsPage-Bebis_RT.js.map} +1 -1
- package/dist/chunks/{NavigationAppsPage-If7tmCFY.js → NavigationAppsPage-THNPOAjv.js} +2 -2
- package/dist/chunks/{NavigationAppsPage-If7tmCFY.js.map → NavigationAppsPage-THNPOAjv.js.map} +1 -1
- package/dist/chunks/{NotificationsPage-C29Lln5o.js → NotificationsPage-CAbNW_Cn.js} +2 -2
- package/dist/chunks/{NotificationsPage-C29Lln5o.js.map → NotificationsPage-CAbNW_Cn.js.map} +1 -1
- package/dist/chunks/{NotificationsPage-BiaLRb0s.js → NotificationsPage-DxwizUhL.js} +2 -2
- package/dist/chunks/{NotificationsPage-BiaLRb0s.js.map → NotificationsPage-DxwizUhL.js.map} +1 -1
- package/dist/chunks/{OnboardingWizardPage-DQrBKNBq.js → OnboardingWizardPage-C6HlbJ3K.js} +2 -2
- package/dist/chunks/{OnboardingWizardPage-DQrBKNBq.js.map → OnboardingWizardPage-C6HlbJ3K.js.map} +1 -1
- package/dist/chunks/{OnboardingWizardPage-BQah4cI8.js → OnboardingWizardPage-CyC2zONO.js} +2 -2
- package/dist/chunks/{OnboardingWizardPage-BQah4cI8.js.map → OnboardingWizardPage-CyC2zONO.js.map} +1 -1
- package/dist/chunks/{PermissionDetailPage-Ckjdjvf9.js → PermissionDetailPage-BDHiNgky.js} +2 -2
- package/dist/chunks/{PermissionDetailPage-Ckjdjvf9.js.map → PermissionDetailPage-BDHiNgky.js.map} +1 -1
- package/dist/chunks/{PermissionDetailPage-Dh8v7mGj.js → PermissionDetailPage-C5K17ydY.js} +2 -2
- package/dist/chunks/{PermissionDetailPage-Dh8v7mGj.js.map → PermissionDetailPage-C5K17ydY.js.map} +1 -1
- package/dist/chunks/{PermissionsPage-l0PnY-EE.js → PermissionsPage-COI5LJPo.js} +2 -2
- package/dist/chunks/{PermissionsPage-l0PnY-EE.js.map → PermissionsPage-COI5LJPo.js.map} +1 -1
- package/dist/chunks/{PermissionsPage-DLy9U3P3.js → PermissionsPage-CkOwH2_d.js} +2 -2
- package/dist/chunks/{PermissionsPage-DLy9U3P3.js.map → PermissionsPage-CkOwH2_d.js.map} +1 -1
- package/dist/chunks/{PortalDashboardPage-DFBx38-x.js → PortalDashboardPage-CoEC4CmC.js} +2 -2
- package/dist/chunks/{PortalDashboardPage-DFBx38-x.js.map → PortalDashboardPage-CoEC4CmC.js.map} +1 -1
- package/dist/chunks/{PortalDashboardPage-rQYhrX0q.js → PortalDashboardPage-DrYymEf-.js} +2 -2
- package/dist/chunks/{PortalDashboardPage-rQYhrX0q.js.map → PortalDashboardPage-DrYymEf-.js.map} +1 -1
- package/dist/chunks/{PreferencesPage-BBu8yZQB.js → PreferencesPage-CJRaU3ba.js} +2 -2
- package/dist/chunks/{PreferencesPage-BBu8yZQB.js.map → PreferencesPage-CJRaU3ba.js.map} +1 -1
- package/dist/chunks/{PreferencesPage-B81MsNV1.js → PreferencesPage-Cqr9mAab.js} +2 -2
- package/dist/chunks/{PreferencesPage-B81MsNV1.js.map → PreferencesPage-Cqr9mAab.js.map} +1 -1
- package/dist/chunks/{ProfilePage-DDrl10zj.js → ProfilePage-BZVpg6-l.js} +2 -2
- package/dist/chunks/{ProfilePage-DDrl10zj.js.map → ProfilePage-BZVpg6-l.js.map} +1 -1
- package/dist/chunks/{ProfilePage-DPoXwdnc.js → ProfilePage-Cu_FITeL.js} +2 -2
- package/dist/chunks/{ProfilePage-DPoXwdnc.js.map → ProfilePage-Cu_FITeL.js.map} +1 -1
- package/dist/chunks/{ReferencesManagementPage-eFsKjIEK.js → ReferencesManagementPage-DUlVk9Ps.js} +3 -3
- package/dist/chunks/{ReferencesManagementPage-eFsKjIEK.js.map → ReferencesManagementPage-DUlVk9Ps.js.map} +1 -1
- package/dist/chunks/{ReferencesManagementPage-DhVsuElE.js → ReferencesManagementPage-ZCuYtqd7.js} +2 -2
- package/dist/chunks/{ReferencesManagementPage-DhVsuElE.js.map → ReferencesManagementPage-ZCuYtqd7.js.map} +1 -1
- package/dist/chunks/{RegisterPage-CiQib3-6.js → RegisterPage-C4xmVwh9.js} +2 -2
- package/dist/chunks/{RegisterPage-CiQib3-6.js.map → RegisterPage-C4xmVwh9.js.map} +1 -1
- package/dist/chunks/{RegisterPage-bXCcJD88.js → RegisterPage-DGyzoIHT.js} +2 -2
- package/dist/chunks/{RegisterPage-bXCcJD88.js.map → RegisterPage-DGyzoIHT.js.map} +1 -1
- package/dist/chunks/{ResetPasswordPage-Dqiahhnj.js → ResetPasswordPage-DqDD6VPR.js} +2 -2
- package/dist/chunks/{ResetPasswordPage-Dqiahhnj.js.map → ResetPasswordPage-DqDD6VPR.js.map} +1 -1
- package/dist/chunks/{ResetPasswordPage-CubPG3yv.js → ResetPasswordPage-Glu-aeqv.js} +2 -2
- package/dist/chunks/{ResetPasswordPage-CubPG3yv.js.map → ResetPasswordPage-Glu-aeqv.js.map} +1 -1
- package/dist/chunks/{ResolutionModal-Bg7XZmR1.js → ResolutionModal-CxjANAOP.js} +2 -2
- package/dist/chunks/{ResolutionModal-Bg7XZmR1.js.map → ResolutionModal-CxjANAOP.js.map} +1 -1
- package/dist/chunks/{ResolutionModal-DqRk_T0n.js → ResolutionModal-Duat18qV.js} +2 -2
- package/dist/chunks/{ResolutionModal-DqRk_T0n.js.map → ResolutionModal-Duat18qV.js.map} +1 -1
- package/dist/chunks/{RoleDetailPage-Blau6_4c.js → RoleDetailPage-BQffUSnt.js} +3 -3
- package/dist/chunks/{RoleDetailPage-Blau6_4c.js.map → RoleDetailPage-BQffUSnt.js.map} +1 -1
- package/dist/chunks/{RoleDetailPage-CiRVxxIP.js → RoleDetailPage-JTm5lD1_.js} +2 -2
- package/dist/chunks/{RoleDetailPage-CiRVxxIP.js.map → RoleDetailPage-JTm5lD1_.js.map} +1 -1
- package/dist/chunks/{RolesPage-Pm-RN3lP.js → RolesPage-B9rRzciI.js} +2 -2
- package/dist/chunks/{RolesPage-Pm-RN3lP.js.map → RolesPage-B9rRzciI.js.map} +1 -1
- package/dist/chunks/{RolesPage-Cb8joqdJ.js → RolesPage-BN8_zMOC.js} +2 -2
- package/dist/chunks/{RolesPage-Cb8joqdJ.js.map → RolesPage-BN8_zMOC.js.map} +1 -1
- package/dist/chunks/{SlaConfigPage-B86McKM6.js → SlaConfigPage-B7kZNig4.js} +2 -2
- package/dist/chunks/{SlaConfigPage-B86McKM6.js.map → SlaConfigPage-B7kZNig4.js.map} +1 -1
- package/dist/chunks/{SlaConfigPage-BY7gvYU6.js → SlaConfigPage-okvZfA_K.js} +2 -2
- package/dist/chunks/{SlaConfigPage-BY7gvYU6.js.map → SlaConfigPage-okvZfA_K.js.map} +1 -1
- package/dist/chunks/{SupportPermissionsPage-BYxcLMSd.js → SupportPermissionsPage-DGAPqJbl.js} +2 -2
- package/dist/chunks/{SupportPermissionsPage-BYxcLMSd.js.map → SupportPermissionsPage-DGAPqJbl.js.map} +1 -1
- package/dist/chunks/{SupportPermissionsPage-MXqXNJIZ.js → SupportPermissionsPage-Dg_wLOme.js} +2 -2
- package/dist/chunks/{SupportPermissionsPage-MXqXNJIZ.js.map → SupportPermissionsPage-Dg_wLOme.js.map} +1 -1
- package/dist/chunks/{TemplatesPage-BDguJ401.js → TemplatesPage-DT9fhlAU.js} +2 -2
- package/dist/chunks/{TemplatesPage-BDguJ401.js.map → TemplatesPage-DT9fhlAU.js.map} +1 -1
- package/dist/chunks/{TemplatesPage-DdnGgioU.js → TemplatesPage-DiEk538p.js} +2 -2
- package/dist/chunks/{TemplatesPage-DdnGgioU.js.map → TemplatesPage-DiEk538p.js.map} +1 -1
- package/dist/chunks/{TenantCard-ffwWsgFQ.js → TenantCard-BbSYk9_Z.js} +2 -2
- package/dist/chunks/{TenantCard-ffwWsgFQ.js.map → TenantCard-BbSYk9_Z.js.map} +1 -1
- package/dist/chunks/{TenantCard-CUjb6og9.js → TenantCard-CEkiKxcZ.js} +2 -2
- package/dist/chunks/{TenantCard-CUjb6og9.js.map → TenantCard-CEkiKxcZ.js.map} +1 -1
- package/dist/chunks/{TenantScopeSelector-Dz7i1I43.js → TenantScopeSelector-BWfYxvEa.js} +2 -2
- package/dist/chunks/{TenantScopeSelector-Dz7i1I43.js.map → TenantScopeSelector-BWfYxvEa.js.map} +1 -1
- package/dist/chunks/{TenantScopeSelector-Cym_Zyps.js → TenantScopeSelector-D-BKgQPV.js} +2 -2
- package/dist/chunks/{TenantScopeSelector-Cym_Zyps.js.map → TenantScopeSelector-D-BKgQPV.js.map} +1 -1
- package/dist/chunks/{TicketDetailPage-GOh9GX7E.js → TicketDetailPage-C1mNS9Up.js} +2 -2
- package/dist/chunks/{TicketDetailPage-GOh9GX7E.js.map → TicketDetailPage-C1mNS9Up.js.map} +1 -1
- package/dist/chunks/{TicketDetailPage-Du8WMyqf.js → TicketDetailPage-ieVDRh42.js} +2 -2
- package/dist/chunks/{TicketDetailPage-Du8WMyqf.js.map → TicketDetailPage-ieVDRh42.js.map} +1 -1
- package/dist/chunks/{TicketsPage-Bqd6moQy.js → TicketsPage-CnuWsnIW.js} +2 -2
- package/dist/chunks/{TicketsPage-Bqd6moQy.js.map → TicketsPage-CnuWsnIW.js.map} +1 -1
- package/dist/chunks/{TicketsPage-WdU4Bb7M.js → TicketsPage-jjyY15_D.js} +2 -2
- package/dist/chunks/{TicketsPage-WdU4Bb7M.js.map → TicketsPage-jjyY15_D.js.map} +1 -1
- package/dist/chunks/{UserCreateTicketPage-Cm1emgwR.js → UserCreateTicketPage-B8Tvf-ag.js} +2 -2
- package/dist/chunks/{UserCreateTicketPage-Cm1emgwR.js.map → UserCreateTicketPage-B8Tvf-ag.js.map} +1 -1
- package/dist/chunks/{UserCreateTicketPage-BPw-5Y_D.js → UserCreateTicketPage-DnOsDlfO.js} +2 -2
- package/dist/chunks/{UserCreateTicketPage-BPw-5Y_D.js.map → UserCreateTicketPage-DnOsDlfO.js.map} +1 -1
- package/dist/chunks/{UserDashboardPage-BP5WeXPS.js → UserDashboardPage-BrtkJ-NB.js} +2 -2
- package/dist/chunks/{UserDashboardPage-BP5WeXPS.js.map → UserDashboardPage-BrtkJ-NB.js.map} +1 -1
- package/dist/chunks/{UserDashboardPage-B53C8fUq.js → UserDashboardPage-KLB5CQP5.js} +2 -2
- package/dist/chunks/{UserDashboardPage-B53C8fUq.js.map → UserDashboardPage-KLB5CQP5.js.map} +1 -1
- package/dist/chunks/{UserDetailPage-B110bmGX.js → UserDetailPage-U7smBQoF.js} +5 -5
- package/dist/chunks/{UserDetailPage-B110bmGX.js.map → UserDetailPage-U7smBQoF.js.map} +1 -1
- package/dist/chunks/{UserDetailPage-CV2VCE46.js → UserDetailPage-_J6lcKAU.js} +2 -2
- package/dist/chunks/{UserDetailPage-CV2VCE46.js.map → UserDetailPage-_J6lcKAU.js.map} +1 -1
- package/dist/chunks/{UserTicketDetailPage-CCNJON1V.js → UserTicketDetailPage-CWoYQgH-.js} +2 -2
- package/dist/chunks/{UserTicketDetailPage-CCNJON1V.js.map → UserTicketDetailPage-CWoYQgH-.js.map} +1 -1
- package/dist/chunks/{UserTicketDetailPage-V0mLXrox.js → UserTicketDetailPage-DkufSlvZ.js} +2 -2
- package/dist/chunks/{UserTicketDetailPage-V0mLXrox.js.map → UserTicketDetailPage-DkufSlvZ.js.map} +1 -1
- package/dist/chunks/{UsersGroupsPage-CmdaU-z-.js → UsersGroupsPage-C38s2-Rq.js} +3 -3
- package/dist/chunks/{UsersGroupsPage-CmdaU-z-.js.map → UsersGroupsPage-C38s2-Rq.js.map} +1 -1
- package/dist/chunks/{UsersGroupsPage-BgfAMgEP.js → UsersGroupsPage-Dq3rAteo.js} +2 -2
- package/dist/chunks/{UsersGroupsPage-BgfAMgEP.js.map → UsersGroupsPage-Dq3rAteo.js.map} +1 -1
- package/dist/chunks/{UsersPage-Bg7033pp.js → UsersPage-B5C5KEUR.js} +2 -2
- package/dist/chunks/{UsersPage-Bg7033pp.js.map → UsersPage-B5C5KEUR.js.map} +1 -1
- package/dist/chunks/{UsersPage-TYAfwPY1.js → UsersPage-CXC9Hvq6.js} +2 -2
- package/dist/chunks/{UsersPage-TYAfwPY1.js.map → UsersPage-CXC9Hvq6.js.map} +1 -1
- package/dist/chunks/{accessRequestsApi-DZeDvzwv.js → accessRequestsApi-B-4TJ5_U.js} +2 -2
- package/dist/chunks/{accessRequestsApi-DZeDvzwv.js.map → accessRequestsApi-B-4TJ5_U.js.map} +1 -1
- package/dist/chunks/{accessRequestsApi-ZXFPCid2.js → accessRequestsApi-DZSfThpd.js} +2 -2
- package/dist/chunks/{accessRequestsApi-ZXFPCid2.js.map → accessRequestsApi-DZSfThpd.js.map} +1 -1
- package/dist/chunks/{aiApi-CsH8DXgs.js → aiApi-B20Teu2v.js} +2 -2
- package/dist/chunks/{aiApi-CsH8DXgs.js.map → aiApi-B20Teu2v.js.map} +1 -1
- package/dist/chunks/{aiApi-CVPzFTXa.js → aiApi-DMGz-RPM.js} +2 -2
- package/dist/chunks/{aiApi-CVPzFTXa.js.map → aiApi-DMGz-RPM.js.map} +1 -1
- package/dist/chunks/{applicationAnalyticsApi-B8AhFYLr.js → applicationAnalyticsApi-Bwa75Fzd.js} +2 -2
- package/dist/chunks/{applicationAnalyticsApi-B8AhFYLr.js.map → applicationAnalyticsApi-Bwa75Fzd.js.map} +1 -1
- package/dist/chunks/{applicationAnalyticsApi-Ce_1qOk-.js → applicationAnalyticsApi-CLBqRPfN.js} +2 -2
- package/dist/chunks/{applicationAnalyticsApi-Ce_1qOk-.js.map → applicationAnalyticsApi-CLBqRPfN.js.map} +1 -1
- package/dist/chunks/{groupsApi-BgCk2fsp.js → groupsApi-QzXI-5xu.js} +2 -2
- package/dist/chunks/{groupsApi-BgCk2fsp.js.map → groupsApi-QzXI-5xu.js.map} +1 -1
- package/dist/chunks/{groupsApi-BIbG665N.js → groupsApi-hB9kSWEd.js} +2 -2
- package/dist/chunks/{groupsApi-BIbG665N.js.map → groupsApi-hB9kSWEd.js.map} +1 -1
- package/dist/chunks/{index-Cb3LotuT.js → index--NGcBYUu.js} +3 -3
- package/dist/chunks/{index-Cb3LotuT.js.map → index--NGcBYUu.js.map} +1 -1
- package/dist/chunks/{index-C33zcyF4.js → index--aPwOFjF.js} +2 -2
- package/dist/chunks/{index-C33zcyF4.js.map → index--aPwOFjF.js.map} +1 -1
- package/dist/chunks/{index-sMr9qND_.js → index-0VrOtwP0.js} +2 -2
- package/dist/chunks/{index-sMr9qND_.js.map → index-0VrOtwP0.js.map} +1 -1
- package/dist/chunks/{index-DDKetfKq.js → index-37U271aw.js} +2 -2
- package/dist/chunks/{index-DDKetfKq.js.map → index-37U271aw.js.map} +1 -1
- package/dist/chunks/{index-B9fS7ir6.js → index-B7qZTuQ-.js} +2 -2
- package/dist/chunks/{index-B9fS7ir6.js.map → index-B7qZTuQ-.js.map} +1 -1
- package/dist/chunks/{index-CdjBY7L8.js → index-Bedzmqr-.js} +2 -2
- package/dist/chunks/{index-CdjBY7L8.js.map → index-Bedzmqr-.js.map} +1 -1
- package/dist/chunks/{index-CHG_O1fS.js → index-Betxo5g5.js} +2 -2
- package/dist/chunks/{index-CHG_O1fS.js.map → index-Betxo5g5.js.map} +1 -1
- package/dist/chunks/{index-jiGu-H8x.js → index-BmaJz475.js} +2 -2
- package/dist/chunks/{index-jiGu-H8x.js.map → index-BmaJz475.js.map} +1 -1
- package/dist/chunks/{index-C53JoVNk.js → index-Buhqag3v.js} +2 -2
- package/dist/chunks/{index-C53JoVNk.js.map → index-Buhqag3v.js.map} +1 -1
- package/dist/chunks/{index-DO0Rw7hX.js → index-C3VxlfKq.js} +2 -2
- package/dist/chunks/{index-DO0Rw7hX.js.map → index-C3VxlfKq.js.map} +1 -1
- package/dist/chunks/{index-CSQ60fpG.js → index-CgpRo8Oe.js} +2 -2
- package/dist/chunks/{index-CSQ60fpG.js.map → index-CgpRo8Oe.js.map} +1 -1
- package/dist/chunks/{index-B-e-ELsf.js → index-DOY0w8Iu.js} +8 -8
- package/dist/chunks/{index-B-e-ELsf.js.map → index-DOY0w8Iu.js.map} +1 -1
- package/dist/chunks/{index-D2REDIRX.js → index-DwuvIOrQ.js} +2 -2
- package/dist/chunks/{index-D2REDIRX.js.map → index-DwuvIOrQ.js.map} +1 -1
- package/dist/chunks/{index-DCcl7Qof.js → index-DzedSLdI.js} +2 -2
- package/dist/chunks/{index-DCcl7Qof.js.map → index-DzedSLdI.js.map} +1 -1
- package/dist/chunks/{index-2wUhd9Lu.js → index-IgLVXPg8.js} +10 -10
- package/dist/chunks/index-IgLVXPg8.js.map +1 -0
- package/dist/chunks/{index-CwSaRXXg.js → index-lpIzhufD.js} +1916 -1900
- package/dist/chunks/index-lpIzhufD.js.map +1 -0
- package/dist/chunks/{index-Cuwn2q-f.js → index-mLUKwbGl.js} +4 -4
- package/dist/chunks/{index-Cuwn2q-f.js.map → index-mLUKwbGl.js.map} +1 -1
- package/dist/chunks/{index-B0mk2tNY.js → index-tO6MMIFB.js} +2 -2
- package/dist/chunks/{index-B0mk2tNY.js.map → index-tO6MMIFB.js.map} +1 -1
- package/dist/chunks/{tenantIconMap-BpNANQ5s.js → tenantIconMap-BQD9byc8.js} +2 -2
- package/dist/chunks/{tenantIconMap-BpNANQ5s.js.map → tenantIconMap-BQD9byc8.js.map} +1 -1
- package/dist/chunks/{tenantIconMap-DtdUgvJO.js → tenantIconMap-CTMuSt18.js} +2 -2
- package/dist/chunks/{tenantIconMap-DtdUgvJO.js.map → tenantIconMap-CTMuSt18.js.map} +1 -1
- package/dist/chunks/{ticketingApi-Bu4rKwLl.js → ticketingApi-BNIdox5t.js} +2 -2
- package/dist/chunks/{ticketingApi-Bu4rKwLl.js.map → ticketingApi-BNIdox5t.js.map} +1 -1
- package/dist/chunks/{ticketingApi-r4Avm9iS.js → ticketingApi-J0vC_t7r.js} +2 -2
- package/dist/chunks/{ticketingApi-r4Avm9iS.js.map → ticketingApi-J0vC_t7r.js.map} +1 -1
- package/dist/chunks/{useAccessRequests-B9bF4swg.js → useAccessRequests-DCNNLnxk.js} +3 -3
- package/dist/chunks/{useAccessRequests-B9bF4swg.js.map → useAccessRequests-DCNNLnxk.js.map} +1 -1
- package/dist/chunks/{useAccessRequests-JyPUX3Om.js → useAccessRequests-DT7X4FAK.js} +2 -2
- package/dist/chunks/{useAccessRequests-JyPUX3Om.js.map → useAccessRequests-DT7X4FAK.js.map} +1 -1
- package/dist/chunks/{useUserAccessRequests-DjPQenC2.js → useUserAccessRequests-BYbmG4c7.js} +2 -2
- package/dist/chunks/{useUserAccessRequests-DjPQenC2.js.map → useUserAccessRequests-BYbmG4c7.js.map} +1 -1
- package/dist/chunks/{useUserAccessRequests-BB6FHW14.js → useUserAccessRequests-CylKxRN6.js} +2 -2
- package/dist/chunks/{useUserAccessRequests-BB6FHW14.js.map → useUserAccessRequests-CylKxRN6.js.map} +1 -1
- package/dist/hooks/useCollapsibleState.d.ts +5 -2
- package/dist/hooks/useCollapsibleState.d.ts.map +1 -1
- package/dist/i18n/config.d.ts +1 -0
- package/dist/i18n/config.d.ts.map +1 -1
- package/dist/main.d.ts +0 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/smartstack.cjs +1 -1
- package/dist/smartstack.js +1 -1
- package/dist/utils/permissions.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/index-2wUhd9Lu.js.map +0 -1
- package/dist/chunks/index-CwSaRXXg.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("react"),fe=require("react-router-dom"),ke=require("react-i18next"),v=require("./index-2wUhd9Lu.js"),a=require("lucide-react"),Ue=require("./groupsApi-BIbG665N.js"),ee=require("./PermissionPopover-CtYTz7MK.js"),Ge={"*":e.jsx(a.Shield,{className:"h-3 w-3"}),read:e.jsx(a.Eye,{className:"h-3 w-3"}),create:e.jsx(a.Plus,{className:"h-3 w-3"}),update:e.jsx(a.Edit,{className:"h-3 w-3"}),delete:e.jsx(a.Trash2,{className:"h-3 w-3"}),assign:e.jsx(a.UserPlus,{className:"h-3 w-3"}),execute:e.jsx(a.Play,{className:"h-3 w-3"})},Me={"*":"bg-[var(--accent-bg)] text-[var(--accent-text)] border-[var(--accent-border)]",read:"bg-[var(--info-bg)] text-[var(--info-text)] border-[var(--info-border)]",create:"bg-[var(--success-bg)] text-[var(--success-text)] border-[var(--success-border)]",update:"bg-[var(--warning-bg)] text-[var(--warning-text)] border-[var(--warning-border)]",delete:"bg-[var(--error-bg)] text-[var(--error-text)] border-[var(--error-border)]",assign:"bg-[var(--accent-bg)] text-[var(--accent-text)] border-[var(--accent-border)]",execute:"bg-[var(--warning-bg)] text-[var(--warning-text)] border-[var(--warning-border)]"};function Ie(s,l,p){return s.filter(c=>l==="all"||c.application===l).map(c=>({...c,modules:c.modules.filter(S=>p==="all"||S.module.moduleLabel===p)})).filter(c=>c.modules.length>0)}function Oe(s,l,p){return s.map(c=>({...c,modules:c.modules.filter(S=>{const{status:R}=p(S);return l.has(R)})})).filter(c=>c.modules.length>0)}function ze({section:s,resources:l,moduleIndex:p,sectionIndex:c,collapsedSections:S,renderResourceRow:R}){const G=l.length>0,M=S.has(s.id);return e.jsxs(n.Fragment,{children:[R(s,p+c+1,"section",G,M),G&&!M&&l.map((W,m)=>R(W,p+c+m+2,"resource",!1,!1))]},s.id)}function Be({roleId:s}){const{t:l}=ke.useTranslation("admin"),{user:p}=v.useAuth(),{collapsedApps:c,toggleApp:S}=v.useCollapsibleState(),[R,G]=n.useState(new Set),[M,W]=n.useState(new Set),[m,ie]=n.useState(new Set),[re,b]=n.useState(null),[T,y]=n.useState("all"),[h,D]=n.useState("all"),se=n.useMemo(()=>p?v.hasFullAccess(p.permissions):!1,[p]),{loading:je,error:ce,roles:N,filteredResources:q,hasChanges:H,saving:k,saveSuccess:_,saveError:X,togglePermission:g,saveChanges:w,resetChanges:K,getPermissionInheritance:P}=v.usePermissionMatrix({canEditSystemRoles:se}),x=n.useMemo(()=>N.find(t=>t.id===s),[N,s]),f=n.useMemo(()=>!(!x||x.isSystem&&!se),[x,se]),$=t=>{ie(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},V=t=>{G(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},de=t=>{W(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},I=n.useMemo(()=>{const t=[],d=[];return q.forEach(o=>{if(o.level==="module"){const u=o.applicationLabel;t.find(C=>C.app===u)||t.push({app:o.applicationLabel,label:o.applicationLabel}),d.push({app:o.applicationLabel,module:o.moduleLabel,label:o.moduleLabel})}}),{applications:t.sort((o,u)=>o.label.localeCompare(u.label)),modules:d.sort((o,u)=>o.label.localeCompare(u.label))}},[q]),ye=n.useCallback(t=>{!x||!f||g(x.id,t)},[x,f,g]),Y=n.useCallback(t=>{if(!x)return!1;const d=P(x.id,t);return d.isDirect||d.isInherited},[x,P]),me=n.useCallback(t=>ee.calculateModuleWithSectionsStatus(t.module,t.sections,Y),[Y]),xe=n.useCallback(t=>ee.calculatePermissionStatus(t,Y),[Y]),J=n.useCallback(t=>x?t.permissions.filter(d=>{const o=P(x.id,d.id);return o.isDirect||o.isInherited}).map(d=>d.action):[],[x,P]),te=n.useCallback(t=>Ie(t,T,h),[T,h]),F=n.useCallback(t=>m.size===0?t:Oe(t,m,me),[m,me]),O=n.useMemo(()=>{let t=ee.groupByApplicationWithSections(q);return t=te(t),t=F(t),t},[q,te,F]),ae=n.useMemo(()=>O.reduce((t,d)=>t+d.modules.length,0),[O]),ue=n.useCallback((t,d)=>{d==="module"?V(t):d==="section"&&de(t)},[V,de]),ve=t=>{b(re===t?null:t)};if(je)return e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsxs("div",{className:"text-center",children:[e.jsx(a.Loader2,{className:"h-8 w-8 animate-spin text-[var(--color-accent-500)] mx-auto mb-4"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:l("userPermissions.loading")})]})});if(ce)return 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",children:[e.jsx(a.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("p",{className:"text-[var(--error-text)]",children:ce})]})});if(!x)return e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:l("roleDetail.notFound")});const pe=t=>t==="resource"?e.jsx(a.Database,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):t==="section"?e.jsx(a.FileText,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):e.jsx(a.Box,{className:"h-3.5 w-3.5 text-[var(--text-secondary)]"}),Ne=t=>t==="resource"?"text-[var(--text-muted)] italic":t==="section"?"text-[var(--text-secondary)]":"font-medium text-[var(--text-primary)]",Q=t=>t==="resource"?"pl-28":t==="section"?"pl-22":"pl-16",we=(t,d,o,u)=>t?e.jsx("button",{onClick:()=>ue(d,o),className:"p-0.5 hover:bg-[var(--bg-hover)] rounded",children:u?e.jsx(a.ChevronRight,{className:"h-3 w-3 text-[var(--text-muted)]"}):e.jsx(a.ChevronDown,{className:"h-3 w-3 text-[var(--text-muted)]"})}):null,Ce=t=>t.length===0?e.jsx("span",{className:"text-xs text-[var(--text-muted)] italic",children:l("assignments.noPermissions")}):t.map(d=>{const o=Me[d]||"bg-[var(--bg-secondary)] text-[var(--text-secondary)] border-[var(--border-color)]",u=Ge[d]||e.jsx(a.Eye,{className:"h-3 w-3"});return e.jsxs("div",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 rounded-[var(--radius-badge)] border text-xs font-medium ${o}`,title:l(`assignments.actions.${d==="*"?"all":d}.description`),children:[u,e.jsx("span",{className:"capitalize",children:l(`assignments.actions.${d==="*"?"all":d}.label`)})]},d)}),be=(t,d,o,u=!1,C=!1)=>{const{status:A,grantedCount:E}=xe(t),U=re===t.id,z=n.createRef(),j=ee.getPermissionCellBackground(A),le=J(t),L=Q(o),Z=d%2===0?"item-light":"item-medium";return e.jsxs("tr",{className:`hover:bg-[var(--bg-hover)] ${Z}`,children:[e.jsx("td",{className:`sticky left-0 z-10 ${Z} px-3 py-2 ${L}`,style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("div",{className:"flex items-center gap-2",children:[we(u,t.id,o,C),pe(o),e.jsx("span",{className:`text-sm ${Ne(o)}`,children:t.moduleLabel}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",t.permissions.length,")"]})]})}),e.jsxs("td",{className:`px-0 py-1 text-center relative ${j}`,style:{width:"60px",minWidth:"60px",maxWidth:"60px"},children:[e.jsx("button",{ref:z,type:"button",onClick:()=>f&&ve(t.id),disabled:!f,className:`w-full h-full min-h-[36px] flex items-center justify-center rounded transition-colors ${f?"hover:opacity-80":"cursor-not-allowed opacity-50"} ${U?"ring-2 ring-[var(--color-accent-500)]":""}`,title:f?`${x.name} - ${t.moduleLabel}: ${E}/${t.permissions.length}`:`${x.name} - ${l("assignments.systemRoleReadOnly")}`,children:e.jsx(ee.PermissionStatusIndicator,{status:A,grantedCount:E,totalCount:t.permissions.length})}),U&&f&&e.jsx(ee.PermissionPopover,{mode:"editable",role:x,resource:t,onTogglePermission:ye,onClose:()=>b(null),getPermissionInheritance:(he,ge)=>P(x.id,ge)})]}),e.jsx("td",{className:"px-3 py-2",children:e.jsx("div",{className:"flex flex-wrap gap-1.5",children:Ce(le)})})]},t.id)};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"min-h-[52px]",children:[_&&e.jsx("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Check,{className:"h-4 w-4 text-[var(--success-text)]"}),e.jsx("p",{className:"text-sm text-[var(--success-text)] font-medium",children:l("common.savedSuccessfully","Sauvegardé avec succès !")})]})}),!_&&k&&e.jsx("div",{className:"flex items-center justify-between 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",children:[e.jsx(a.Loader2,{className:"h-4 w-4 animate-spin text-[var(--info-text)]"}),e.jsx("p",{className:"text-sm text-[var(--info-text)] font-medium",children:l("common.saving","Sauvegarde en cours...")})]})}),!_&&!k&&H&&e.jsxs("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx("p",{className:"text-sm text-[var(--warning-text)]",children:l("assignments.unsavedChanges","You have unsaved changes")}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:K,disabled:k,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-[var(--radius-button)] bg-[var(--bg-secondary)] border border-[var(--border-color)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-50",children:[e.jsx(a.X,{className:"h-4 w-4"}),l("common.cancel")]}),e.jsxs("button",{onClick:w,disabled:k,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50",children:[k?e.jsx(a.Loader2,{className:"h-4 w-4 animate-spin"}):e.jsx(a.Save,{className:"h-4 w-4"}),l("common.save")]})]})]}),!_&&!k&&!H&&e.jsx("div",{className:"h-[52px]"})]}),X&&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",children:[e.jsx(a.AlertCircle,{className:"h-4 w-4 text-[var(--error-text)]"}),e.jsx("p",{className:"text-sm text-[var(--error-text)]",children:X})]})}),e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("label",{className:"text-sm text-[var(--text-secondary)]",children:[l("userPermissions.filters.application"),":"]}),e.jsxs("select",{value:T,onChange:t=>{y(t.target.value),D("all")},className:"px-3 py-1.5 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-[var(--radius-input)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:l("userPermissions.filters.allApplications")}),I.applications.map(t=>e.jsx("option",{value:t.app,children:t.label},t.app))]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("label",{className:"text-sm text-[var(--text-secondary)]",children:[l("userPermissions.filters.module"),":"]}),e.jsxs("select",{value:h,onChange:t=>D(t.target.value),className:"px-3 py-1.5 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-[var(--radius-input)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:l("userPermissions.filters.allModules")}),I.modules.filter(t=>T==="all"||t.app===T).map(t=>e.jsx("option",{value:t.module,children:t.label},`${t.app}:${t.module}`))]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("span",{className:"text-sm font-medium text-[var(--text-secondary)]",children:[l("userPermissions.filterByStatus"),":"]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("button",{onClick:()=>$("all"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("all")?"bg-[var(--success-bg)] border-[var(--success-border)] text-[var(--success-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--success-border)]"}`,children:[e.jsx(a.Check,{className:`h-3.5 w-3.5 ${m.has("all")?"":"text-[var(--success-dot)]"}`}),l("assignments.complete")]}),e.jsxs("button",{onClick:()=>$("some"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("some")?"bg-[var(--warning-bg)] border-[var(--warning-border)] text-[var(--warning-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--warning-border)]"}`,children:[e.jsx(a.Star,{className:`h-3.5 w-3.5 ${m.has("some")?"":"text-[var(--warning-dot)]"}`}),l("assignments.partial")]}),e.jsxs("button",{onClick:()=>$("read-only"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("read-only")?"bg-[var(--info-bg)] border-[var(--info-border)] text-[var(--info-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--info-border)]"}`,children:[e.jsx(a.Eye,{className:`h-3.5 w-3.5 ${m.has("read-only")?"":"text-[var(--info-dot)]"}`}),l("assignments.readOnly")]}),e.jsxs("button",{onClick:()=>$("none"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("none")?"bg-[var(--error-bg)] border-[var(--error-border)] text-[var(--error-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--error-border)]"}`,children:[e.jsx(a.Ban,{className:`h-3.5 w-3.5 ${m.has("none")?"":"text-[var(--text-muted)]"}`}),l("assignments.none")]})]}),m.size>0&&e.jsx("button",{onClick:()=>ie(new Set),className:"text-xs text-[var(--color-accent-500)] hover:text-[var(--color-accent-600)] underline",children:l("assignments.clearFilters")})]}),e.jsx("div",{className:"flex items-center gap-3",children:e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:[ae," ",l("assignments.modules")]})}),e.jsx("div",{className:"overflow-x-auto overflow-y-visible",children:e.jsxs("table",{className:"border-collapse",style:{width:"auto"},children:[e.jsx("thead",{className:"item-medium border-b border-[var(--item-color-border)]",children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",className:"sticky left-0 z-20 item-medium px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"280px",minWidth:"280px",maxWidth:"280px",height:"48px",verticalAlign:"middle"},children:l("assignments.resource")}),e.jsx("th",{scope:"col",className:"px-2 text-center text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"60px",minWidth:"60px",maxWidth:"60px",height:"48px",verticalAlign:"middle"},children:l("userPermissions.status")}),e.jsx("th",{scope:"col",className:"px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{height:"48px",verticalAlign:"middle"},children:l("assignments.permissions")})]})}),e.jsx("tbody",{className:"divide-y divide-[var(--item-color-border)]",children:O.map(t=>{const d=t.application,o=c.has(d);return e.jsxs(n.Fragment,{children:[e.jsxs("tr",{className:"bg-[var(--bg-tertiary)]",children:[e.jsx("td",{className:"sticky left-0 z-10 px-3 py-2 bg-[var(--bg-tertiary)]",style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("button",{onClick:()=>S(d),className:"flex items-center gap-3 w-full text-left hover:opacity-80",children:[o?e.jsx(a.ChevronRight,{className:"h-4 w-4 text-[var(--text-secondary)]"}):e.jsx(a.ChevronDown,{className:"h-4 w-4 text-[var(--text-secondary)]"}),e.jsx(a.FolderOpen,{className:"h-4 w-4 text-[var(--text-secondary)]"}),e.jsx("span",{className:"text-sm font-semibold text-[var(--text-primary)]",children:t.application}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)] ml-auto",children:[t.modules.length," module",t.modules.length>1?"s":""]})]})}),e.jsx("td",{className:"px-0 py-2"}),e.jsx("td",{className:"px-0 py-2"})]}),!o&&t.modules.map((u,C)=>{const{module:A,sections:E}=u,U=E.length>0,z=R.has(A.id);return e.jsxs(n.Fragment,{children:[be(A,C,"module",U,z),U&&!z&&E.map((j,le)=>{const{section:L,resources:Z}=j;return e.jsx(ze,{section:L,resources:Z,moduleIndex:C,sectionIndex:le,collapsedSections:M,renderResourceRow:be},L.id)})]},A.id)})]},d)})})]})}),ae===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:l("assignments.noResources")})]})}const De=[{code:"fr",label:"Français"},{code:"en",label:"English"},{code:"it",label:"Italiano"},{code:"de",label:"Deutsch"}];function We(){const{t:s}=ke.useTranslation("admin"),{id:l}=fe.useParams(),p=fe.useNavigate(),[c,S]=n.useState(null),[R,G]=n.useState(!0),[M,W]=n.useState(!1),[m,ie]=n.useState("info"),[re,b]=n.useState(null),[T,y]=n.useState(null),[h,D]=n.useState({name:"",shortName:"",category:"Custom",description:"",parentRoleId:null}),[se,je]=n.useState([]),ce=["Global","Admin","Manager","Contributor","Viewer","Custom"],[N,q]=n.useState([]),[H,k]=n.useState(!1),[_,X]=n.useState(null),[g,w]=n.useState({name:"",shortName:"",description:""}),[K,P]=n.useState(!1),[x,f]=n.useState(!1),[$,V]=n.useState(""),[de,I]=n.useState(!1),[ye,Y]=n.useState([]),[me,xe]=n.useState(!1),[J,te]=n.useState(""),[F,O]=n.useState(null),[ae,ue]=n.useState(!1),[ve,pe]=n.useState(null),[Ne,Q]=n.useState(!1),[we,Ce]=n.useState([]),[be,t]=n.useState(!1),[d,o]=n.useState(""),[u,C]=n.useState(null),[A,E]=n.useState(!1),[U,z]=n.useState(null),j=n.useCallback(async()=>{if(l)try{G(!0);const[r,i]=await Promise.all([v.adminApi.roles.getById(l),v.adminApi.roles.getAll()]);S(r),je(i.filter(ne=>ne.id!==l)),D({name:r.name,shortName:r.shortName,category:r.category,description:r.description||"",parentRoleId:r.parentRoleId})}catch(r){console.error("Failed to load role:",r),b(s("roleDetail.errors.loadFailed"))}finally{G(!1)}},[l,s]);n.useEffect(()=>{j()},[j]);const le=async r=>{if(r.preventDefault(),!(!l||!c)){W(!0),b(null),y(null);try{const i={name:h.name,shortName:h.shortName,category:h.category,description:h.description||void 0,parentRoleId:h.parentRoleId||void 0};await v.adminApi.roles.update(l,i),y(s("roleDetail.success.saved")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{W(!1)}}},L=n.useCallback(async()=>{if(l){k(!0);try{const r=await v.adminApi.roles.getTranslations(l);q(r)}catch(r){console.error("Failed to load translations:",r)}finally{k(!1)}}},[l]);n.useEffect(()=>{m==="translations"&&N.length===0&&L()},[m,N.length,L]);const Z=r=>{X(r.languageCode),w({name:r.name,shortName:r.shortName,description:r.description||""})},he=()=>{X(null),f(!1),w({name:"",shortName:"",description:""}),V("")},ge=async r=>{if(l){P(!0),b(null);try{await v.adminApi.roles.upsertTranslation(l,r,g),y(s("roleDetail.translations.saved")),X(null),f(!1),V(""),L()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{P(!1)}}},Ae=async r=>{if(l&&confirm(s("roleDetail.translations.confirmDelete")))try{await v.adminApi.roles.deleteTranslation(l,r),y(s("roleDetail.translations.deleted")),L()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}},Se=De.filter(r=>!N.some(i=>i.languageCode===r.code)),Le=async()=>{I(!0),O(null),te(""),xe(!0);try{const r=await v.adminApi.users.getAll({globalScope:!0});Y(r.items)}catch(r){console.error("Failed to load users:",r)}finally{xe(!1)}},Re=async()=>{if(!(!l||!F)){ue(!0);try{await v.adminApi.roles.assignUser(l,F),I(!1),O(null),y(s("roleDetail.users.assigned")),j()}catch(r){b(r instanceof Error?r.message:s("roleDetail.errors.assignFailed"))}finally{ue(!1)}}},Te=async r=>{if(l&&confirm(s("roleDetail.users.confirmRemove"))){pe(r);try{await v.adminApi.roles.removeUser(l,r),y(s("roleDetail.users.removed")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.removeFailed"))}finally{pe(null)}}},Pe=async()=>{Q(!0),C(null),o(""),t(!0);try{const r=await Ue.groupsApi.getAll();Ce(r)}catch(r){console.error("Failed to load groups:",r)}finally{t(!1)}},$e=async()=>{if(!(!l||!u)){E(!0);try{await v.adminApi.roles.assignGroup(l,u),Q(!1),C(null),y(s("roleDetail.groups.assigned")),j()}catch(r){b(r instanceof Error?r.message:s("roleDetail.errors.assignFailed"))}finally{E(!1)}}},Fe=async r=>{if(l&&confirm(s("roleDetail.groups.confirmRemove"))){z(r);try{await v.adminApi.roles.removeGroup(l,r),y(s("roleDetail.groups.removed")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.removeFailed"))}finally{z(null)}}},Ee=[{id:"info",label:s("roleDetail.tabs.info"),icon:e.jsx(a.Settings,{className:"w-4 h-4"})},{id:"permissions",label:s("roleDetail.tabs.permissions"),icon:e.jsx(a.Shield,{className:"w-4 h-4"})},{id:"users",label:s("roleDetail.tabs.users"),icon:e.jsx(a.Users,{className:"w-4 h-4"})},{id:"groups",label:s("roleDetail.tabs.groups"),icon:e.jsx(a.UsersRound,{className:"w-4 h-4"})},{id:"translations",label:s("roleDetail.tabs.translations"),icon:e.jsx(a.Languages,{className:"w-4 h-4"})}];return R?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(a.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}):c?e.jsxs("div",{className:"space-y-6",children:[e.jsx(v.Breadcrumb,{items:[{label:s("header.title"),href:"/administration"},{label:s("roles.title","Roles"),href:"/administration/permissions/roles"},{label:c?.name||"Detail"}]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>p("/administration/permissions/roles"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold text-[var(--text-primary)]",children:c.name}),c.isSystem&&e.jsxs("span",{className:"flex items-center gap-1 px-2 py-1 rounded-[var(--radius-badge)] text-xs bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(a.Lock,{className:"w-3 h-3"}),s("roles.system")]})]}),c.description&&e.jsx("p",{className:"text-sm sm:text-base text-[var(--text-secondary)] mt-1",children:c.description})]}),e.jsxs("div",{className:"flex items-center gap-4 text-sm text-[var(--text-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Users,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.users.length," ",s("roleDetail.usersCount")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.UsersRound,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.groups?.length||0," ",s("roleDetail.groupsCount")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Shield,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.permissions.length," ",s("roles.permissions")]})]})]})]}),re&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] text-[var(--error-text)] flex items-center gap-2",children:[e.jsx(a.AlertTriangle,{className:"w-5 h-5 flex-shrink-0"}),re]}),T&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)] text-[var(--success-text)] flex items-center gap-2",children:[e.jsx(a.CheckCircle,{className:"w-5 h-5 flex-shrink-0"}),T]}),e.jsx("div",{className:"flex gap-1 p-1 bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)]",children:Ee.map(r=>e.jsxs("button",{onClick:()=>ie(r.id),className:`flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] font-medium transition-colors ${m===r.id?"bg-[var(--color-accent-600)] text-white":"text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"}`,children:[r.icon,e.jsx("span",{className:"hidden sm:inline",children:r.label})]},r.id))}),e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] p-4 sm:p-6",children:[m==="info"&&e.jsxs("form",{onSubmit:le,className:"space-y-6 max-w-2xl",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.id")}),e.jsx("div",{className:"px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-tertiary)] text-[var(--text-secondary)] font-mono text-sm",children:c.id})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roles.form.name")," *"]}),e.jsx("input",{type:"text",required:!0,value:h.name,onChange:r=>D(i=>({...i,name:r.target.value})),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)]"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roleDetail.info.shortName")," *"]}),e.jsx("input",{type:"text",required:!0,value:h.shortName,onChange:r=>D(i=>({...i,shortName:r.target.value})),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)]"}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.shortNameHelp")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roleDetail.info.category")," *"]}),e.jsx("select",{value:h.category,onChange:r=>D(i=>({...i,category:r.target.value})),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)]",children:ce.map(r=>e.jsx("option",{value:r,children:s(`roleDetail.categories.${r.toLowerCase()}`)},r))}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.categoryHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.parentRole")}),e.jsxs("select",{value:h.parentRoleId||"",onChange:r=>D(i=>({...i,parentRoleId:r.target.value||null})),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)]",children:[e.jsx("option",{value:"",children:s("roleDetail.info.noParent")}),se.map(r=>e.jsxs("option",{value:r.id,children:[r.name," (",s(`roleDetail.categories.${r.category.toLowerCase()}`),")"]},r.id))]}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.parentRoleHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roles.form.description")}),e.jsx("textarea",{value:h.description,onChange:r=>D(i=>({...i,description:r.target.value})),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)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] resize-none"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.systemRole")}),e.jsx("div",{className:"flex items-center gap-2",children:c.isSystem?e.jsxs("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-[var(--radius-badge)] text-sm bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(a.Lock,{className:"w-4 h-4"}),s("roleDetail.info.isSystemRole")]}):e.jsx("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-[var(--radius-badge)] text-sm bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:s("roleDetail.info.isCustomRole")})})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4 pt-4 border-t border-[var(--border-color)]",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.createdAt")}),e.jsx("div",{className:"text-sm text-[var(--text-primary)]",children:new Date(c.createdAt).toLocaleString()})]}),c.updatedAt&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.updatedAt")}),e.jsx("div",{className:"text-sm text-[var(--text-primary)]",children:new Date(c.updatedAt).toLocaleString()})]})]}),e.jsx("div",{className:"flex justify-end pt-4",children:e.jsxs("button",{type:"submit",disabled:M,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[M?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Save,{className:"w-4 h-4"}),s("common.save")]})})]}),m==="permissions"&&l&&e.jsx(Be,{roleId:l}),m==="groups"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.groups.title")," (",c.groups?.length||0,")"]}),e.jsxs("button",{onClick:Pe,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.groups.add")]})]}),!c.groups||c.groups.length===0?e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.groups.noGroups")}):e.jsx("div",{className:"grid gap-3",children:c.groups.map(r=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs(fe.Link,{to:`/administration/users/groups/${r.id}`,className:"flex items-center gap-4 flex-1 min-w-0 hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-accent-100)] flex items-center justify-center",children:e.jsx(a.UsersRound,{className:"w-5 h-5 text-[var(--color-accent-700)]"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)] truncate",children:r.name}),e.jsxs("div",{className:"text-sm text-[var(--text-secondary)] truncate",children:[r.membersCount," ",s("roleDetail.groups.members"),r.description&&` · ${r.description}`]})]})]}),e.jsx("button",{onClick:()=>Fe(r.id),disabled:U===r.id,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)] transition-colors disabled:opacity-50",title:s("roleDetail.groups.remove"),children:U===r.id?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Trash2,{className:"w-4 h-4"})})]},r.id))}),Ne&&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:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] 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.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:s("roleDetail.groups.addTitle")}),e.jsx("button",{onClick:()=>Q(!1),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(a.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:d,onChange:r=>o(r.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",placeholder:s("roleDetail.groups.searchPlaceholder")})]})}),be?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(a.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",children:we.filter(r=>!c.groups?.some(i=>i.id===r.id)&&(d===""||r.name.toLowerCase().includes(d.toLowerCase())||(r.description||"").toLowerCase().includes(d.toLowerCase()))).map(r=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${u===r.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)] border border-transparent"}`,htmlFor:`group-${r.id}`,children:[e.jsx("input",{id:`group-${r.id}`,type:"radio",name:"selectedGroup",checked:u===r.id,onChange:()=>C(r.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:r.name}),e.jsxs("p",{className:"text-xs text-[var(--text-tertiary)]",children:[r.memberCount," ",s("roleDetail.groups.members"),r.description&&` · ${r.description}`]})]})]},r.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:()=>Q(!1),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] font-medium transition-colors",children:s("common.cancel")}),e.jsxs("button",{onClick:$e,disabled:!u||A,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[A&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.add")]})]})]})})]}),m==="users"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.users.title")," (",c.users.length,")"]}),e.jsxs("button",{onClick:Le,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.users.add")]})]}),c.users.length===0?e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.users.noUsers")}):e.jsx("div",{className:"grid gap-3",children:c.users.map(r=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs(fe.Link,{to:`/administration/users/${r.id}`,className:"flex items-center gap-4 flex-1 min-w-0 hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-accent-100)] flex items-center justify-center",children:e.jsx("span",{className:"text-sm font-medium text-[var(--color-accent-700)]",children:r.fullName.split(" ").map(i=>i.at(0)).join("").toUpperCase().slice(0,2)})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)] truncate",children:r.fullName}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)] truncate",children:r.email})]})]}),e.jsx("button",{onClick:()=>Te(r.id),disabled:ve===r.id,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)] transition-colors disabled:opacity-50",title:s("roleDetail.users.remove"),children:ve===r.id?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Trash2,{className:"w-4 h-4"})})]},r.id))}),de&&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:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] 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.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:s("roleDetail.users.addTitle")}),e.jsx("button",{onClick:()=>I(!1),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(a.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:J,onChange:r=>te(r.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",placeholder:s("roleDetail.users.searchPlaceholder")})]})}),me?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(a.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",children:ye.filter(r=>!c.users.some(i=>i.id===r.id)&&(J===""||r.fullName.toLowerCase().includes(J.toLowerCase())||r.email.toLowerCase().includes(J.toLowerCase()))).map(r=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${F===r.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)] border border-transparent"}`,htmlFor:`user-${r.id}`,children:[e.jsx("input",{id:`user-${r.id}`,type:"radio",name:"selectedUser",checked:F===r.id,onChange:()=>O(r.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1 min-w-0",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:()=>I(!1),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] font-medium transition-colors",children:s("common.cancel")}),e.jsxs("button",{onClick:Re,disabled:!F||ae,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[ae&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.add")]})]})]})})]}),m==="translations"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.translations.title")," (",N.length,")"]}),Se.length>0&&e.jsxs("button",{onClick:()=>f(!0),className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.translations.add")]})]}),x&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--color-accent-500)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h4",{className:"font-medium text-[var(--text-primary)]",children:s("roleDetail.translations.addNew")}),e.jsx("button",{onClick:he,className:"p-1 rounded hover:bg-[var(--bg-hover)]",children:e.jsx(a.X,{className:"w-4 h-4 text-[var(--text-secondary)]"})})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.language")}),e.jsxs("select",{value:$,onChange:r=>V(r.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)]",children:[e.jsx("option",{value:"",children:s("roleDetail.translations.selectLanguage")}),Se.map(r=>e.jsx("option",{value:r.code,children:r.label},r.code))]})]}),$&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.name")}),e.jsx("input",{type:"text",value:g.name,onChange:r=>w(i=>({...i,name:r.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)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.shortName")}),e.jsx("input",{type:"text",value:g.shortName,onChange:r=>w(i=>({...i,shortName:r.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)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.description")}),e.jsx("textarea",{value:g.description||"",onChange:r=>w(i=>({...i,description:r.target.value})),rows:2,className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] resize-none"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:he,className:"px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] text-sm font-medium",children:s("common.cancel")}),e.jsxs("button",{onClick:()=>ge($),disabled:K||!g.name||!g.shortName,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium disabled:opacity-50",children:[K&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.save")]})]})]})]})]}),H&&e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}),!H&&N.length===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.translations.noTranslations")}),!H&&N.length>0&&e.jsx("div",{className:"space-y-3",children:N.map(r=>{const i=De.find(B=>B.code===r.languageCode),ne=_===r.languageCode;return e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${ne?"bg-[var(--bg-primary)] border-[var(--color-accent-500)]":"bg-[var(--bg-primary)] border-[var(--border-color)]"}`,children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"px-2 py-0.5 text-xs font-medium rounded bg-[var(--bg-tertiary)] text-[var(--text-secondary)] uppercase",children:r.languageCode}),e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:i?.label||r.languageCode})]}),!ne&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>Z(r),className:"p-1.5 rounded hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--color-accent-600)]",title:s("common.edit"),children:e.jsx(a.Edit2,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>Ae(r.languageCode),className:"p-1.5 rounded hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)]",title:s("common.delete"),children:e.jsx(a.Trash2,{className:"w-4 h-4"})})]})]}),ne?e.jsxs("div",{className:"grid gap-3 mt-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.name")}),e.jsx("input",{type:"text",value:g.name,onChange:B=>w(oe=>({...oe,name:B.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)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.shortName")}),e.jsx("input",{type:"text",value:g.shortName,onChange:B=>w(oe=>({...oe,shortName:B.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)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.description")}),e.jsx("textarea",{value:g.description||"",onChange:B=>w(oe=>({...oe,description:B.target.value})),rows:2,className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] resize-none"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:he,className:"px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] text-sm font-medium",children:s("common.cancel")}),e.jsxs("button",{onClick:()=>ge(r.languageCode),disabled:K||!g.name||!g.shortName,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium disabled:opacity-50",children:[K&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.save")]})]})]}):e.jsxs("div",{className:"grid gap-1",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)]",children:r.name}),e.jsxs("div",{className:"text-sm text-[var(--text-secondary)]",children:[s("roleDetail.translations.shortName"),": ",r.shortName]}),r.description&&e.jsx("div",{className:"text-sm text-[var(--text-tertiary)] mt-1",children:r.description})]})]},r.languageCode)})})]})]})]}):e.jsxs("div",{className:"text-center py-12",children:[e.jsx("p",{className:"text-[var(--text-secondary)]",children:s("roleDetail.notFound")}),e.jsx("button",{onClick:()=>p("/administration/permissions/roles"),className:"mt-4 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white",children:s("roleDetail.backToList")})]})}exports.RoleDetailPage=We;
|
|
2
|
-
//# sourceMappingURL=RoleDetailPage-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("react"),fe=require("react-router-dom"),ke=require("react-i18next"),v=require("./index-IgLVXPg8.js"),a=require("lucide-react"),Ue=require("./groupsApi-hB9kSWEd.js"),ee=require("./PermissionPopover-CtYTz7MK.js"),Ge={"*":e.jsx(a.Shield,{className:"h-3 w-3"}),read:e.jsx(a.Eye,{className:"h-3 w-3"}),create:e.jsx(a.Plus,{className:"h-3 w-3"}),update:e.jsx(a.Edit,{className:"h-3 w-3"}),delete:e.jsx(a.Trash2,{className:"h-3 w-3"}),assign:e.jsx(a.UserPlus,{className:"h-3 w-3"}),execute:e.jsx(a.Play,{className:"h-3 w-3"})},Me={"*":"bg-[var(--accent-bg)] text-[var(--accent-text)] border-[var(--accent-border)]",read:"bg-[var(--info-bg)] text-[var(--info-text)] border-[var(--info-border)]",create:"bg-[var(--success-bg)] text-[var(--success-text)] border-[var(--success-border)]",update:"bg-[var(--warning-bg)] text-[var(--warning-text)] border-[var(--warning-border)]",delete:"bg-[var(--error-bg)] text-[var(--error-text)] border-[var(--error-border)]",assign:"bg-[var(--accent-bg)] text-[var(--accent-text)] border-[var(--accent-border)]",execute:"bg-[var(--warning-bg)] text-[var(--warning-text)] border-[var(--warning-border)]"};function Ie(s,l,p){return s.filter(c=>l==="all"||c.application===l).map(c=>({...c,modules:c.modules.filter(S=>p==="all"||S.module.moduleLabel===p)})).filter(c=>c.modules.length>0)}function Oe(s,l,p){return s.map(c=>({...c,modules:c.modules.filter(S=>{const{status:R}=p(S);return l.has(R)})})).filter(c=>c.modules.length>0)}function ze({section:s,resources:l,moduleIndex:p,sectionIndex:c,collapsedSections:S,renderResourceRow:R}){const G=l.length>0,M=S.has(s.id);return e.jsxs(n.Fragment,{children:[R(s,p+c+1,"section",G,M),G&&!M&&l.map((W,m)=>R(W,p+c+m+2,"resource",!1,!1))]},s.id)}function Be({roleId:s}){const{t:l}=ke.useTranslation("admin"),{user:p}=v.useAuth(),{collapsedApps:c,toggleApp:S}=v.useCollapsibleState(),[R,G]=n.useState(new Set),[M,W]=n.useState(new Set),[m,ie]=n.useState(new Set),[re,b]=n.useState(null),[T,y]=n.useState("all"),[h,D]=n.useState("all"),se=n.useMemo(()=>p?v.hasFullAccess(p.permissions):!1,[p]),{loading:je,error:ce,roles:N,filteredResources:q,hasChanges:H,saving:k,saveSuccess:_,saveError:X,togglePermission:g,saveChanges:w,resetChanges:K,getPermissionInheritance:P}=v.usePermissionMatrix({canEditSystemRoles:se}),x=n.useMemo(()=>N.find(t=>t.id===s),[N,s]),f=n.useMemo(()=>!(!x||x.isSystem&&!se),[x,se]),$=t=>{ie(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},V=t=>{G(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},de=t=>{W(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},I=n.useMemo(()=>{const t=[],d=[];return q.forEach(o=>{if(o.level==="module"){const u=o.applicationLabel;t.find(C=>C.app===u)||t.push({app:o.applicationLabel,label:o.applicationLabel}),d.push({app:o.applicationLabel,module:o.moduleLabel,label:o.moduleLabel})}}),{applications:t.sort((o,u)=>o.label.localeCompare(u.label)),modules:d.sort((o,u)=>o.label.localeCompare(u.label))}},[q]),ye=n.useCallback(t=>{!x||!f||g(x.id,t)},[x,f,g]),Y=n.useCallback(t=>{if(!x)return!1;const d=P(x.id,t);return d.isDirect||d.isInherited},[x,P]),me=n.useCallback(t=>ee.calculateModuleWithSectionsStatus(t.module,t.sections,Y),[Y]),xe=n.useCallback(t=>ee.calculatePermissionStatus(t,Y),[Y]),J=n.useCallback(t=>x?t.permissions.filter(d=>{const o=P(x.id,d.id);return o.isDirect||o.isInherited}).map(d=>d.action):[],[x,P]),te=n.useCallback(t=>Ie(t,T,h),[T,h]),F=n.useCallback(t=>m.size===0?t:Oe(t,m,me),[m,me]),O=n.useMemo(()=>{let t=ee.groupByApplicationWithSections(q);return t=te(t),t=F(t),t},[q,te,F]),ae=n.useMemo(()=>O.reduce((t,d)=>t+d.modules.length,0),[O]),ue=n.useCallback((t,d)=>{d==="module"?V(t):d==="section"&&de(t)},[V,de]),ve=t=>{b(re===t?null:t)};if(je)return e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsxs("div",{className:"text-center",children:[e.jsx(a.Loader2,{className:"h-8 w-8 animate-spin text-[var(--color-accent-500)] mx-auto mb-4"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:l("userPermissions.loading")})]})});if(ce)return 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",children:[e.jsx(a.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("p",{className:"text-[var(--error-text)]",children:ce})]})});if(!x)return e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:l("roleDetail.notFound")});const pe=t=>t==="resource"?e.jsx(a.Database,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):t==="section"?e.jsx(a.FileText,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):e.jsx(a.Box,{className:"h-3.5 w-3.5 text-[var(--text-secondary)]"}),Ne=t=>t==="resource"?"text-[var(--text-muted)] italic":t==="section"?"text-[var(--text-secondary)]":"font-medium text-[var(--text-primary)]",Q=t=>t==="resource"?"pl-28":t==="section"?"pl-22":"pl-16",we=(t,d,o,u)=>t?e.jsx("button",{onClick:()=>ue(d,o),className:"p-0.5 hover:bg-[var(--bg-hover)] rounded",children:u?e.jsx(a.ChevronRight,{className:"h-3 w-3 text-[var(--text-muted)]"}):e.jsx(a.ChevronDown,{className:"h-3 w-3 text-[var(--text-muted)]"})}):null,Ce=t=>t.length===0?e.jsx("span",{className:"text-xs text-[var(--text-muted)] italic",children:l("assignments.noPermissions")}):t.map(d=>{const o=Me[d]||"bg-[var(--bg-secondary)] text-[var(--text-secondary)] border-[var(--border-color)]",u=Ge[d]||e.jsx(a.Eye,{className:"h-3 w-3"});return e.jsxs("div",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 rounded-[var(--radius-badge)] border text-xs font-medium ${o}`,title:l(`assignments.actions.${d==="*"?"all":d}.description`),children:[u,e.jsx("span",{className:"capitalize",children:l(`assignments.actions.${d==="*"?"all":d}.label`)})]},d)}),be=(t,d,o,u=!1,C=!1)=>{const{status:A,grantedCount:E}=xe(t),U=re===t.id,z=n.createRef(),j=ee.getPermissionCellBackground(A),le=J(t),L=Q(o),Z=d%2===0?"item-light":"item-medium";return e.jsxs("tr",{className:`hover:bg-[var(--bg-hover)] ${Z}`,children:[e.jsx("td",{className:`sticky left-0 z-10 ${Z} px-3 py-2 ${L}`,style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("div",{className:"flex items-center gap-2",children:[we(u,t.id,o,C),pe(o),e.jsx("span",{className:`text-sm ${Ne(o)}`,children:t.moduleLabel}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",t.permissions.length,")"]})]})}),e.jsxs("td",{className:`px-0 py-1 text-center relative ${j}`,style:{width:"60px",minWidth:"60px",maxWidth:"60px"},children:[e.jsx("button",{ref:z,type:"button",onClick:()=>f&&ve(t.id),disabled:!f,className:`w-full h-full min-h-[36px] flex items-center justify-center rounded transition-colors ${f?"hover:opacity-80":"cursor-not-allowed opacity-50"} ${U?"ring-2 ring-[var(--color-accent-500)]":""}`,title:f?`${x.name} - ${t.moduleLabel}: ${E}/${t.permissions.length}`:`${x.name} - ${l("assignments.systemRoleReadOnly")}`,children:e.jsx(ee.PermissionStatusIndicator,{status:A,grantedCount:E,totalCount:t.permissions.length})}),U&&f&&e.jsx(ee.PermissionPopover,{mode:"editable",role:x,resource:t,onTogglePermission:ye,onClose:()=>b(null),getPermissionInheritance:(he,ge)=>P(x.id,ge)})]}),e.jsx("td",{className:"px-3 py-2",children:e.jsx("div",{className:"flex flex-wrap gap-1.5",children:Ce(le)})})]},t.id)};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"min-h-[52px]",children:[_&&e.jsx("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Check,{className:"h-4 w-4 text-[var(--success-text)]"}),e.jsx("p",{className:"text-sm text-[var(--success-text)] font-medium",children:l("common.savedSuccessfully","Sauvegardé avec succès !")})]})}),!_&&k&&e.jsx("div",{className:"flex items-center justify-between 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",children:[e.jsx(a.Loader2,{className:"h-4 w-4 animate-spin text-[var(--info-text)]"}),e.jsx("p",{className:"text-sm text-[var(--info-text)] font-medium",children:l("common.saving","Sauvegarde en cours...")})]})}),!_&&!k&&H&&e.jsxs("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx("p",{className:"text-sm text-[var(--warning-text)]",children:l("assignments.unsavedChanges","You have unsaved changes")}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:K,disabled:k,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-[var(--radius-button)] bg-[var(--bg-secondary)] border border-[var(--border-color)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-50",children:[e.jsx(a.X,{className:"h-4 w-4"}),l("common.cancel")]}),e.jsxs("button",{onClick:w,disabled:k,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50",children:[k?e.jsx(a.Loader2,{className:"h-4 w-4 animate-spin"}):e.jsx(a.Save,{className:"h-4 w-4"}),l("common.save")]})]})]}),!_&&!k&&!H&&e.jsx("div",{className:"h-[52px]"})]}),X&&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",children:[e.jsx(a.AlertCircle,{className:"h-4 w-4 text-[var(--error-text)]"}),e.jsx("p",{className:"text-sm text-[var(--error-text)]",children:X})]})}),e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("label",{className:"text-sm text-[var(--text-secondary)]",children:[l("userPermissions.filters.application"),":"]}),e.jsxs("select",{value:T,onChange:t=>{y(t.target.value),D("all")},className:"px-3 py-1.5 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-[var(--radius-input)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:l("userPermissions.filters.allApplications")}),I.applications.map(t=>e.jsx("option",{value:t.app,children:t.label},t.app))]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("label",{className:"text-sm text-[var(--text-secondary)]",children:[l("userPermissions.filters.module"),":"]}),e.jsxs("select",{value:h,onChange:t=>D(t.target.value),className:"px-3 py-1.5 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-[var(--radius-input)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:l("userPermissions.filters.allModules")}),I.modules.filter(t=>T==="all"||t.app===T).map(t=>e.jsx("option",{value:t.module,children:t.label},`${t.app}:${t.module}`))]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("span",{className:"text-sm font-medium text-[var(--text-secondary)]",children:[l("userPermissions.filterByStatus"),":"]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("button",{onClick:()=>$("all"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("all")?"bg-[var(--success-bg)] border-[var(--success-border)] text-[var(--success-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--success-border)]"}`,children:[e.jsx(a.Check,{className:`h-3.5 w-3.5 ${m.has("all")?"":"text-[var(--success-dot)]"}`}),l("assignments.complete")]}),e.jsxs("button",{onClick:()=>$("some"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("some")?"bg-[var(--warning-bg)] border-[var(--warning-border)] text-[var(--warning-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--warning-border)]"}`,children:[e.jsx(a.Star,{className:`h-3.5 w-3.5 ${m.has("some")?"":"text-[var(--warning-dot)]"}`}),l("assignments.partial")]}),e.jsxs("button",{onClick:()=>$("read-only"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("read-only")?"bg-[var(--info-bg)] border-[var(--info-border)] text-[var(--info-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--info-border)]"}`,children:[e.jsx(a.Eye,{className:`h-3.5 w-3.5 ${m.has("read-only")?"":"text-[var(--info-dot)]"}`}),l("assignments.readOnly")]}),e.jsxs("button",{onClick:()=>$("none"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("none")?"bg-[var(--error-bg)] border-[var(--error-border)] text-[var(--error-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--error-border)]"}`,children:[e.jsx(a.Ban,{className:`h-3.5 w-3.5 ${m.has("none")?"":"text-[var(--text-muted)]"}`}),l("assignments.none")]})]}),m.size>0&&e.jsx("button",{onClick:()=>ie(new Set),className:"text-xs text-[var(--color-accent-500)] hover:text-[var(--color-accent-600)] underline",children:l("assignments.clearFilters")})]}),e.jsx("div",{className:"flex items-center gap-3",children:e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:[ae," ",l("assignments.modules")]})}),e.jsx("div",{className:"overflow-x-auto overflow-y-visible",children:e.jsxs("table",{className:"border-collapse",style:{width:"auto"},children:[e.jsx("thead",{className:"item-medium border-b border-[var(--item-color-border)]",children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",className:"sticky left-0 z-20 item-medium px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"280px",minWidth:"280px",maxWidth:"280px",height:"48px",verticalAlign:"middle"},children:l("assignments.resource")}),e.jsx("th",{scope:"col",className:"px-2 text-center text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"60px",minWidth:"60px",maxWidth:"60px",height:"48px",verticalAlign:"middle"},children:l("userPermissions.status")}),e.jsx("th",{scope:"col",className:"px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{height:"48px",verticalAlign:"middle"},children:l("assignments.permissions")})]})}),e.jsx("tbody",{className:"divide-y divide-[var(--item-color-border)]",children:O.map(t=>{const d=t.application,o=c.has(d);return e.jsxs(n.Fragment,{children:[e.jsxs("tr",{className:"bg-[var(--bg-tertiary)]",children:[e.jsx("td",{className:"sticky left-0 z-10 px-3 py-2 bg-[var(--bg-tertiary)]",style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("button",{onClick:()=>S(d),className:"flex items-center gap-3 w-full text-left hover:opacity-80",children:[o?e.jsx(a.ChevronRight,{className:"h-4 w-4 text-[var(--text-secondary)]"}):e.jsx(a.ChevronDown,{className:"h-4 w-4 text-[var(--text-secondary)]"}),e.jsx(a.FolderOpen,{className:"h-4 w-4 text-[var(--text-secondary)]"}),e.jsx("span",{className:"text-sm font-semibold text-[var(--text-primary)]",children:t.application}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)] ml-auto",children:[t.modules.length," module",t.modules.length>1?"s":""]})]})}),e.jsx("td",{className:"px-0 py-2"}),e.jsx("td",{className:"px-0 py-2"})]}),!o&&t.modules.map((u,C)=>{const{module:A,sections:E}=u,U=E.length>0,z=R.has(A.id);return e.jsxs(n.Fragment,{children:[be(A,C,"module",U,z),U&&!z&&E.map((j,le)=>{const{section:L,resources:Z}=j;return e.jsx(ze,{section:L,resources:Z,moduleIndex:C,sectionIndex:le,collapsedSections:M,renderResourceRow:be},L.id)})]},A.id)})]},d)})})]})}),ae===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:l("assignments.noResources")})]})}const De=[{code:"fr",label:"Français"},{code:"en",label:"English"},{code:"it",label:"Italiano"},{code:"de",label:"Deutsch"}];function We(){const{t:s}=ke.useTranslation("admin"),{id:l}=fe.useParams(),p=fe.useNavigate(),[c,S]=n.useState(null),[R,G]=n.useState(!0),[M,W]=n.useState(!1),[m,ie]=n.useState("info"),[re,b]=n.useState(null),[T,y]=n.useState(null),[h,D]=n.useState({name:"",shortName:"",category:"Custom",description:"",parentRoleId:null}),[se,je]=n.useState([]),ce=["Global","Admin","Manager","Contributor","Viewer","Custom"],[N,q]=n.useState([]),[H,k]=n.useState(!1),[_,X]=n.useState(null),[g,w]=n.useState({name:"",shortName:"",description:""}),[K,P]=n.useState(!1),[x,f]=n.useState(!1),[$,V]=n.useState(""),[de,I]=n.useState(!1),[ye,Y]=n.useState([]),[me,xe]=n.useState(!1),[J,te]=n.useState(""),[F,O]=n.useState(null),[ae,ue]=n.useState(!1),[ve,pe]=n.useState(null),[Ne,Q]=n.useState(!1),[we,Ce]=n.useState([]),[be,t]=n.useState(!1),[d,o]=n.useState(""),[u,C]=n.useState(null),[A,E]=n.useState(!1),[U,z]=n.useState(null),j=n.useCallback(async()=>{if(l)try{G(!0);const[r,i]=await Promise.all([v.adminApi.roles.getById(l),v.adminApi.roles.getAll()]);S(r),je(i.filter(ne=>ne.id!==l)),D({name:r.name,shortName:r.shortName,category:r.category,description:r.description||"",parentRoleId:r.parentRoleId})}catch(r){console.error("Failed to load role:",r),b(s("roleDetail.errors.loadFailed"))}finally{G(!1)}},[l,s]);n.useEffect(()=>{j()},[j]);const le=async r=>{if(r.preventDefault(),!(!l||!c)){W(!0),b(null),y(null);try{const i={name:h.name,shortName:h.shortName,category:h.category,description:h.description||void 0,parentRoleId:h.parentRoleId||void 0};await v.adminApi.roles.update(l,i),y(s("roleDetail.success.saved")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{W(!1)}}},L=n.useCallback(async()=>{if(l){k(!0);try{const r=await v.adminApi.roles.getTranslations(l);q(r)}catch(r){console.error("Failed to load translations:",r)}finally{k(!1)}}},[l]);n.useEffect(()=>{m==="translations"&&N.length===0&&L()},[m,N.length,L]);const Z=r=>{X(r.languageCode),w({name:r.name,shortName:r.shortName,description:r.description||""})},he=()=>{X(null),f(!1),w({name:"",shortName:"",description:""}),V("")},ge=async r=>{if(l){P(!0),b(null);try{await v.adminApi.roles.upsertTranslation(l,r,g),y(s("roleDetail.translations.saved")),X(null),f(!1),V(""),L()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{P(!1)}}},Ae=async r=>{if(l&&confirm(s("roleDetail.translations.confirmDelete")))try{await v.adminApi.roles.deleteTranslation(l,r),y(s("roleDetail.translations.deleted")),L()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}},Se=De.filter(r=>!N.some(i=>i.languageCode===r.code)),Le=async()=>{I(!0),O(null),te(""),xe(!0);try{const r=await v.adminApi.users.getAll({globalScope:!0});Y(r.items)}catch(r){console.error("Failed to load users:",r)}finally{xe(!1)}},Re=async()=>{if(!(!l||!F)){ue(!0);try{await v.adminApi.roles.assignUser(l,F),I(!1),O(null),y(s("roleDetail.users.assigned")),j()}catch(r){b(r instanceof Error?r.message:s("roleDetail.errors.assignFailed"))}finally{ue(!1)}}},Te=async r=>{if(l&&confirm(s("roleDetail.users.confirmRemove"))){pe(r);try{await v.adminApi.roles.removeUser(l,r),y(s("roleDetail.users.removed")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.removeFailed"))}finally{pe(null)}}},Pe=async()=>{Q(!0),C(null),o(""),t(!0);try{const r=await Ue.groupsApi.getAll();Ce(r)}catch(r){console.error("Failed to load groups:",r)}finally{t(!1)}},$e=async()=>{if(!(!l||!u)){E(!0);try{await v.adminApi.roles.assignGroup(l,u),Q(!1),C(null),y(s("roleDetail.groups.assigned")),j()}catch(r){b(r instanceof Error?r.message:s("roleDetail.errors.assignFailed"))}finally{E(!1)}}},Fe=async r=>{if(l&&confirm(s("roleDetail.groups.confirmRemove"))){z(r);try{await v.adminApi.roles.removeGroup(l,r),y(s("roleDetail.groups.removed")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.removeFailed"))}finally{z(null)}}},Ee=[{id:"info",label:s("roleDetail.tabs.info"),icon:e.jsx(a.Settings,{className:"w-4 h-4"})},{id:"permissions",label:s("roleDetail.tabs.permissions"),icon:e.jsx(a.Shield,{className:"w-4 h-4"})},{id:"users",label:s("roleDetail.tabs.users"),icon:e.jsx(a.Users,{className:"w-4 h-4"})},{id:"groups",label:s("roleDetail.tabs.groups"),icon:e.jsx(a.UsersRound,{className:"w-4 h-4"})},{id:"translations",label:s("roleDetail.tabs.translations"),icon:e.jsx(a.Languages,{className:"w-4 h-4"})}];return R?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(a.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}):c?e.jsxs("div",{className:"space-y-6",children:[e.jsx(v.Breadcrumb,{items:[{label:s("header.title"),href:"/administration"},{label:s("roles.title","Roles"),href:"/administration/permissions/roles"},{label:c?.name||"Detail"}]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>p("/administration/permissions/roles"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold text-[var(--text-primary)]",children:c.name}),c.isSystem&&e.jsxs("span",{className:"flex items-center gap-1 px-2 py-1 rounded-[var(--radius-badge)] text-xs bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(a.Lock,{className:"w-3 h-3"}),s("roles.system")]})]}),c.description&&e.jsx("p",{className:"text-sm sm:text-base text-[var(--text-secondary)] mt-1",children:c.description})]}),e.jsxs("div",{className:"flex items-center gap-4 text-sm text-[var(--text-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Users,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.users.length," ",s("roleDetail.usersCount")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.UsersRound,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.groups?.length||0," ",s("roleDetail.groupsCount")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Shield,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.permissions.length," ",s("roles.permissions")]})]})]})]}),re&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] text-[var(--error-text)] flex items-center gap-2",children:[e.jsx(a.AlertTriangle,{className:"w-5 h-5 flex-shrink-0"}),re]}),T&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)] text-[var(--success-text)] flex items-center gap-2",children:[e.jsx(a.CheckCircle,{className:"w-5 h-5 flex-shrink-0"}),T]}),e.jsx("div",{className:"flex gap-1 p-1 bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)]",children:Ee.map(r=>e.jsxs("button",{onClick:()=>ie(r.id),className:`flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] font-medium transition-colors ${m===r.id?"bg-[var(--color-accent-600)] text-white":"text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"}`,children:[r.icon,e.jsx("span",{className:"hidden sm:inline",children:r.label})]},r.id))}),e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] p-4 sm:p-6",children:[m==="info"&&e.jsxs("form",{onSubmit:le,className:"space-y-6 max-w-2xl",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.id")}),e.jsx("div",{className:"px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-tertiary)] text-[var(--text-secondary)] font-mono text-sm",children:c.id})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roles.form.name")," *"]}),e.jsx("input",{type:"text",required:!0,value:h.name,onChange:r=>D(i=>({...i,name:r.target.value})),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)]"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roleDetail.info.shortName")," *"]}),e.jsx("input",{type:"text",required:!0,value:h.shortName,onChange:r=>D(i=>({...i,shortName:r.target.value})),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)]"}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.shortNameHelp")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roleDetail.info.category")," *"]}),e.jsx("select",{value:h.category,onChange:r=>D(i=>({...i,category:r.target.value})),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)]",children:ce.map(r=>e.jsx("option",{value:r,children:s(`roleDetail.categories.${r.toLowerCase()}`)},r))}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.categoryHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.parentRole")}),e.jsxs("select",{value:h.parentRoleId||"",onChange:r=>D(i=>({...i,parentRoleId:r.target.value||null})),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)]",children:[e.jsx("option",{value:"",children:s("roleDetail.info.noParent")}),se.map(r=>e.jsxs("option",{value:r.id,children:[r.name," (",s(`roleDetail.categories.${r.category.toLowerCase()}`),")"]},r.id))]}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.parentRoleHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roles.form.description")}),e.jsx("textarea",{value:h.description,onChange:r=>D(i=>({...i,description:r.target.value})),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)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] resize-none"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.systemRole")}),e.jsx("div",{className:"flex items-center gap-2",children:c.isSystem?e.jsxs("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-[var(--radius-badge)] text-sm bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(a.Lock,{className:"w-4 h-4"}),s("roleDetail.info.isSystemRole")]}):e.jsx("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-[var(--radius-badge)] text-sm bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:s("roleDetail.info.isCustomRole")})})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4 pt-4 border-t border-[var(--border-color)]",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.createdAt")}),e.jsx("div",{className:"text-sm text-[var(--text-primary)]",children:new Date(c.createdAt).toLocaleString()})]}),c.updatedAt&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.updatedAt")}),e.jsx("div",{className:"text-sm text-[var(--text-primary)]",children:new Date(c.updatedAt).toLocaleString()})]})]}),e.jsx("div",{className:"flex justify-end pt-4",children:e.jsxs("button",{type:"submit",disabled:M,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[M?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Save,{className:"w-4 h-4"}),s("common.save")]})})]}),m==="permissions"&&l&&e.jsx(Be,{roleId:l}),m==="groups"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.groups.title")," (",c.groups?.length||0,")"]}),e.jsxs("button",{onClick:Pe,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.groups.add")]})]}),!c.groups||c.groups.length===0?e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.groups.noGroups")}):e.jsx("div",{className:"grid gap-3",children:c.groups.map(r=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs(fe.Link,{to:`/administration/users/groups/${r.id}`,className:"flex items-center gap-4 flex-1 min-w-0 hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-accent-100)] flex items-center justify-center",children:e.jsx(a.UsersRound,{className:"w-5 h-5 text-[var(--color-accent-700)]"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)] truncate",children:r.name}),e.jsxs("div",{className:"text-sm text-[var(--text-secondary)] truncate",children:[r.membersCount," ",s("roleDetail.groups.members"),r.description&&` · ${r.description}`]})]})]}),e.jsx("button",{onClick:()=>Fe(r.id),disabled:U===r.id,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)] transition-colors disabled:opacity-50",title:s("roleDetail.groups.remove"),children:U===r.id?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Trash2,{className:"w-4 h-4"})})]},r.id))}),Ne&&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:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] 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.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:s("roleDetail.groups.addTitle")}),e.jsx("button",{onClick:()=>Q(!1),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(a.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:d,onChange:r=>o(r.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",placeholder:s("roleDetail.groups.searchPlaceholder")})]})}),be?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(a.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",children:we.filter(r=>!c.groups?.some(i=>i.id===r.id)&&(d===""||r.name.toLowerCase().includes(d.toLowerCase())||(r.description||"").toLowerCase().includes(d.toLowerCase()))).map(r=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${u===r.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)] border border-transparent"}`,htmlFor:`group-${r.id}`,children:[e.jsx("input",{id:`group-${r.id}`,type:"radio",name:"selectedGroup",checked:u===r.id,onChange:()=>C(r.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:r.name}),e.jsxs("p",{className:"text-xs text-[var(--text-tertiary)]",children:[r.memberCount," ",s("roleDetail.groups.members"),r.description&&` · ${r.description}`]})]})]},r.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:()=>Q(!1),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] font-medium transition-colors",children:s("common.cancel")}),e.jsxs("button",{onClick:$e,disabled:!u||A,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[A&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.add")]})]})]})})]}),m==="users"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.users.title")," (",c.users.length,")"]}),e.jsxs("button",{onClick:Le,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.users.add")]})]}),c.users.length===0?e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.users.noUsers")}):e.jsx("div",{className:"grid gap-3",children:c.users.map(r=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs(fe.Link,{to:`/administration/users/${r.id}`,className:"flex items-center gap-4 flex-1 min-w-0 hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-accent-100)] flex items-center justify-center",children:e.jsx("span",{className:"text-sm font-medium text-[var(--color-accent-700)]",children:r.fullName.split(" ").map(i=>i.at(0)).join("").toUpperCase().slice(0,2)})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)] truncate",children:r.fullName}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)] truncate",children:r.email})]})]}),e.jsx("button",{onClick:()=>Te(r.id),disabled:ve===r.id,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)] transition-colors disabled:opacity-50",title:s("roleDetail.users.remove"),children:ve===r.id?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Trash2,{className:"w-4 h-4"})})]},r.id))}),de&&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:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] 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.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:s("roleDetail.users.addTitle")}),e.jsx("button",{onClick:()=>I(!1),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(a.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:J,onChange:r=>te(r.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",placeholder:s("roleDetail.users.searchPlaceholder")})]})}),me?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(a.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",children:ye.filter(r=>!c.users.some(i=>i.id===r.id)&&(J===""||r.fullName.toLowerCase().includes(J.toLowerCase())||r.email.toLowerCase().includes(J.toLowerCase()))).map(r=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${F===r.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)] border border-transparent"}`,htmlFor:`user-${r.id}`,children:[e.jsx("input",{id:`user-${r.id}`,type:"radio",name:"selectedUser",checked:F===r.id,onChange:()=>O(r.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1 min-w-0",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:()=>I(!1),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] font-medium transition-colors",children:s("common.cancel")}),e.jsxs("button",{onClick:Re,disabled:!F||ae,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[ae&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.add")]})]})]})})]}),m==="translations"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.translations.title")," (",N.length,")"]}),Se.length>0&&e.jsxs("button",{onClick:()=>f(!0),className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.translations.add")]})]}),x&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--color-accent-500)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h4",{className:"font-medium text-[var(--text-primary)]",children:s("roleDetail.translations.addNew")}),e.jsx("button",{onClick:he,className:"p-1 rounded hover:bg-[var(--bg-hover)]",children:e.jsx(a.X,{className:"w-4 h-4 text-[var(--text-secondary)]"})})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.language")}),e.jsxs("select",{value:$,onChange:r=>V(r.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)]",children:[e.jsx("option",{value:"",children:s("roleDetail.translations.selectLanguage")}),Se.map(r=>e.jsx("option",{value:r.code,children:r.label},r.code))]})]}),$&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.name")}),e.jsx("input",{type:"text",value:g.name,onChange:r=>w(i=>({...i,name:r.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)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.shortName")}),e.jsx("input",{type:"text",value:g.shortName,onChange:r=>w(i=>({...i,shortName:r.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)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.description")}),e.jsx("textarea",{value:g.description||"",onChange:r=>w(i=>({...i,description:r.target.value})),rows:2,className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] resize-none"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:he,className:"px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] text-sm font-medium",children:s("common.cancel")}),e.jsxs("button",{onClick:()=>ge($),disabled:K||!g.name||!g.shortName,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium disabled:opacity-50",children:[K&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.save")]})]})]})]})]}),H&&e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}),!H&&N.length===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.translations.noTranslations")}),!H&&N.length>0&&e.jsx("div",{className:"space-y-3",children:N.map(r=>{const i=De.find(B=>B.code===r.languageCode),ne=_===r.languageCode;return e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${ne?"bg-[var(--bg-primary)] border-[var(--color-accent-500)]":"bg-[var(--bg-primary)] border-[var(--border-color)]"}`,children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"px-2 py-0.5 text-xs font-medium rounded bg-[var(--bg-tertiary)] text-[var(--text-secondary)] uppercase",children:r.languageCode}),e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:i?.label||r.languageCode})]}),!ne&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>Z(r),className:"p-1.5 rounded hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--color-accent-600)]",title:s("common.edit"),children:e.jsx(a.Edit2,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>Ae(r.languageCode),className:"p-1.5 rounded hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)]",title:s("common.delete"),children:e.jsx(a.Trash2,{className:"w-4 h-4"})})]})]}),ne?e.jsxs("div",{className:"grid gap-3 mt-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.name")}),e.jsx("input",{type:"text",value:g.name,onChange:B=>w(oe=>({...oe,name:B.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)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.shortName")}),e.jsx("input",{type:"text",value:g.shortName,onChange:B=>w(oe=>({...oe,shortName:B.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)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.description")}),e.jsx("textarea",{value:g.description||"",onChange:B=>w(oe=>({...oe,description:B.target.value})),rows:2,className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] resize-none"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:he,className:"px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] text-sm font-medium",children:s("common.cancel")}),e.jsxs("button",{onClick:()=>ge(r.languageCode),disabled:K||!g.name||!g.shortName,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium disabled:opacity-50",children:[K&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.save")]})]})]}):e.jsxs("div",{className:"grid gap-1",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)]",children:r.name}),e.jsxs("div",{className:"text-sm text-[var(--text-secondary)]",children:[s("roleDetail.translations.shortName"),": ",r.shortName]}),r.description&&e.jsx("div",{className:"text-sm text-[var(--text-tertiary)] mt-1",children:r.description})]})]},r.languageCode)})})]})]})]}):e.jsxs("div",{className:"text-center py-12",children:[e.jsx("p",{className:"text-[var(--text-secondary)]",children:s("roleDetail.notFound")}),e.jsx("button",{onClick:()=>p("/administration/permissions/roles"),className:"mt-4 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white",children:s("roleDetail.backToList")})]})}exports.RoleDetailPage=We;
|
|
2
|
+
//# sourceMappingURL=RoleDetailPage-JTm5lD1_.js.map
|