@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"),l=require("react"),le=require("react-i18next"),n=require("lucide-react"),J=require("./index-2wUhd9Lu.js"),Q=require("./PermissionPopover-CtYTz7MK.js");function ge({section:s,resources:v,moduleIndex:A,sectionIndex:k,isCollapsed:$,collapsedSections:S,paginatedRoles:b,canEditSystemRoles:O,statusFilters:i,openPopover:h,onToggleCollapse:M,onTogglePermission:P,onCellClick:f,setOpenPopover:y,renderResourceRow:N}){const T=S.has(s.id),m=v.length>0;return e.jsxs(l.Fragment,{children:[N(s,A+k+1,"section",m,T),m&&!T&&v.map((L,I)=>N(L,A+k+I+2,"resource",!1,!1))]},s.id)}function ve({roles:s,resources:v,canEditSystemRoles:A=!1,onTogglePermission:k,getPermissionInheritance:$,rolesPerPage:S,rolePageIndex:b,modulesPerPage:O,modulePageIndex:i,collapsedApps:h,onToggleApp:M,statusFilters:P}){const{t:f}=le.useTranslation("admin"),[y,N]=l.useState(null),[T,m]=l.useState(new Set),[L,I]=l.useState(new Set),D=l.useCallback((t,o)=>{o(c=>{const p=new Set(c);return p.has(t)?p.delete(t):p.add(t),p})},[]),E=l.useCallback(t=>{D(t,m)},[D]),z=l.useCallback(t=>{D(t,I)},[D]),q=l.useMemo(()=>v.filter(t=>t.level==="module").length,[v]),_=l.useMemo(()=>{const t=b*S;return s.slice(t,t+S)},[s,b,S]),B=l.useMemo(()=>Q.groupByApplicationWithSections(v),[v]),r=l.useCallback(()=>{const t=i*O,o=t+O,c={current:0},p=[];for(const w of B){const C=h.has(w.application),g=[];if(!C)for(const R of w.modules)c.current>=t&&c.current<o&&g.push(R),c.current++;p.push({application:w.application,modules:g})}return p},[B,i,O,h]),u=l.useMemo(()=>r(),[r]),F=l.useCallback((t,o)=>{const c=$(t,o);return c.isDirect||c.isInherited},[$]),Z=l.useCallback((t,o)=>Q.calculatePermissionStatus(o,c=>F(t,c)),[F]),V=(t,o)=>{y?.roleId===t&&y?.resourceId===o?N(null):N({roleId:t,resourceId:o})};if(s.length===0||q===0)return e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s.length===0?f("assignments.noRoles"):f("assignments.noResources")});const W=t=>{switch(t){case"resource":return"pl-28";case"section":return"pl-22";default:return"pl-16"}},K=t=>t==="resource"?e.jsx(n.Database,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):t==="section"?e.jsx(n.FileText,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):e.jsx(n.Box,{className:"h-3.5 w-3.5 text-[var(--text-secondary)]"}),Y=t=>t==="resource"?"text-[var(--text-muted)] italic":t==="section"?"text-[var(--text-secondary)]":"font-medium text-[var(--text-primary)]",ee=l.useCallback((t,o)=>{o==="module"?E(t):o==="section"&&z(t)},[E,z]),ae=(t,o,c,p)=>t?e.jsx("button",{onClick:()=>ee(o,c),className:"p-0.5 hover:bg-[var(--bg-hover)] rounded",children:p?e.jsx(n.ChevronRight,{className:"h-3 w-3 text-[var(--text-muted)]"}):e.jsx(n.ChevronDown,{className:"h-3 w-3 text-[var(--text-muted)]"})}):null,ne=t=>_.map(o=>{const{status:c,grantedCount:p}=Z(o.id,t),w=y?.roleId===o.id&&y?.resourceId===t.id,C=l.createRef(),g=!o.isSystem||A,R=Q.getPermissionCellBackground(c),j=(P?.size??0)>0&&!P?.has(c);return e.jsxs("td",{className:`px-0 py-1 text-center relative ${j?"":R}`,style:{width:"44px",minWidth:"44px",maxWidth:"44px"},children:[e.jsx("button",{ref:C,type:"button",onClick:()=>g&&!j&&V(o.id,t.id),disabled:!g||j,className:`w-full h-full min-h-[36px] flex items-center justify-center rounded transition-colors ${j?"opacity-10 cursor-default":g?"hover:opacity-80":"cursor-not-allowed opacity-50"} ${w?"ring-2 ring-[var(--color-accent-500)]":""}`,title:j?void 0:g?`${o.name} - ${t.moduleLabel}: ${p}/${t.permissions.length}`:`${o.name} - ${f("assignments.systemRoleReadOnly")}`,children:e.jsx(Q.PermissionStatusIndicator,{status:c,grantedCount:p,totalCount:t.permissions.length})}),w&&g&&!j&&e.jsx(Q.PermissionPopover,{mode:"editable",role:o,resource:t,onTogglePermission:H=>k(o.id,H),onClose:()=>N(null),getPermissionInheritance:$})]},`${o.id}-${t.id}`)}),se=(t,o,c,p=!1,w=!1)=>{const C=W(c),g=o%2===0?"item-light":"item-medium";return e.jsxs("tr",{className:`hover:bg-[var(--bg-hover)] ${g}`,children:[e.jsx("td",{className:`sticky left-0 z-10 ${g} px-3 py-2 ${C}`,style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("div",{className:"flex items-center gap-2",children:[ae(p,t.id,c,w),K(c),e.jsx("span",{className:`text-sm ${Y(c)}`,children:t.moduleLabel}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",t.permissions.length,")"]})]})}),ne(t)]},t.id)};return 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:"180px",verticalAlign:"bottom",paddingBottom:"12px"},children:f("assignments.resource")}),_.map(t=>e.jsx("th",{scope:"col",className:"relative overflow-visible",style:{width:"44px",minWidth:"44px",maxWidth:"44px",height:"180px",padding:0,verticalAlign:"bottom"},children:e.jsx("div",{className:"absolute bottom-2 left-1/2",style:{transform:"translateX(-6px) rotate(-55deg)",transformOrigin:"bottom left",width:"160px"},children:e.jsxs("div",{className:"flex items-center gap-1",children:[t.isSystem&&e.jsx(n.Lock,{className:"h-3 w-3 flex-shrink-0 text-[var(--warning-dot)]"}),e.jsx("span",{className:"text-[10px] font-medium text-[var(--text-primary)] whitespace-nowrap",title:t.name,children:t.name})]})})},t.id))]})}),e.jsx("tbody",{className:"divide-y divide-[var(--item-color-border)]",children:u.map(t=>{const o=h.has(t.application),c=_.length;return e.jsxs(l.Fragment,{children:[e.jsxs("tr",{className:"bg-[var(--color-accent-900)]/30 dark:bg-[var(--color-accent-900)]/50",children:[e.jsx("td",{className:"sticky left-0 z-10 px-3 py-3 bg-[var(--color-accent-900)]/30 dark:bg-[var(--color-accent-900)]/50",style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("button",{onClick:()=>M(t.application),className:"flex items-center gap-3 w-full text-left hover:opacity-80",children:[o?e.jsx(n.ChevronRight,{className:"h-5 w-5 text-[var(--color-accent-400)]"}):e.jsx(n.ChevronDown,{className:"h-5 w-5 text-[var(--color-accent-400)]"}),e.jsx(n.FolderOpen,{className:"h-5 w-5 text-[var(--color-accent-400)]"}),e.jsx("span",{className:"text-sm font-bold text-[var(--color-accent-300)] uppercase tracking-wider",children:t.application}),e.jsx("span",{className:"text-xs text-[var(--color-accent-400)] ml-auto",children:f("assignments.moduleCount",{count:t.modules.length})})]})}),e.jsx("td",{colSpan:c,className:"px-0 py-3"})]}),!o&&t.modules.map((p,w)=>{const{module:C,sections:g}=p,R=g.length>0,j=T.has(C.id);return e.jsxs(l.Fragment,{children:[se(C,w,"module",R,j),R&&!j&&g.map((H,G)=>{const{section:te,resources:U}=H;return e.jsx(ge,{section:te,resources:U,moduleIndex:w,sectionIndex:G,isCollapsed:j,collapsedSections:L,paginatedRoles:_,canEditSystemRoles:A,statusFilters:P,openPopover:y,onToggleCollapse:ee,onTogglePermission:k,onCellClick:V,setOpenPopover:N,renderResourceRow:se},te.id)})]},C.id)})]},t.application)})})]})})}function be({filters:s,roles:v,categories:A,applications:k,modules:$,hasChanges:S,onFilterChange:b,onReset:O}){const{t:i}=le.useTranslation("admin"),[h,M]=l.useState(!1),[P,f]=l.useState(""),y=l.useRef(null),N=l.useRef(null),T=l.useMemo(()=>{let r=v;if(s.categoryFilter!=="all"&&(r=r.filter(u=>u.category===s.categoryFilter)),P.trim()){const u=P.toLowerCase();r=r.filter(F=>F.name.toLowerCase().includes(u)||F.shortName?.toLowerCase().includes(u))}return r},[v,s.categoryFilter,P]);l.useEffect(()=>{h&&N.current&&setTimeout(()=>N.current?.focus(),50)},[h]);const m=r=>{M(r),r||f("")},L=$.filter(r=>!(s.applicationFilter!=="all"&&r.app!==s.applicationFilter));l.useEffect(()=>{function r(u){y.current&&!y.current.contains(u.target)&&m(!1)}return document.addEventListener("mousedown",r),()=>document.removeEventListener("mousedown",r)},[]);const I=r=>{const u=s.selectedRoleIds.includes(r)?s.selectedRoleIds.filter(F=>F!==r):[...s.selectedRoleIds,r];b({selectedRoleIds:u})},D=()=>{b({selectedRoleIds:T.map(r=>r.id)})},E=()=>{b({selectedRoleIds:[]})},z=r=>{b({applicationFilter:r,moduleFilter:"all"})},q=r=>{b({categoryFilter:r,selectedRoleIds:[]})},_=s.selectedRoleIds.length>0||s.categoryFilter!=="all"||s.applicationFilter!=="all"||s.moduleFilter!=="all",B=s.selectedRoleIds.length===0?i("permissions.filters.allRoles"):s.selectedRoleIds.length===1?v.find(r=>r.id===s.selectedRoleIds[0])?.name||i("assignments.oneRoleSelected"):`${s.selectedRoleIds.length} ${i("permissions.filters.rolesSelected")}`;return e.jsxs("div",{className:"bg-[var(--bg-card)] border border-[var(--item-color-border)] rounded-[var(--radius-card)] p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-secondary)]",children:[e.jsx(n.Filter,{className:"h-4 w-4"}),e.jsx("span",{children:i("assignments.filters")})]}),e.jsxs("div",{className:"flex flex-wrap gap-4",children:[e.jsxs("div",{className:"min-w-[160px] flex-1",children:[e.jsx("label",{htmlFor:"category-filter",className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("permissions.filters.selectCategory")}),e.jsxs("select",{id:"category-filter",value:s.categoryFilter,onChange:r=>q(r.target.value),className:"block w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] leading-5 bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] sm:text-sm",children:[e.jsx("option",{value:"all",children:i("permissions.filters.allCategories")}),A.map(r=>e.jsx("option",{value:r,children:i(`roles.categories.${r.toLowerCase()}`)},r))]})]}),e.jsxs("div",{ref:y,className:"relative min-w-[200px] flex-[2]",children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("permissions.filters.selectRoles")}),e.jsxs("button",{type:"button",onClick:()=>m(!h),className:"w-full flex items-center justify-between px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] bg-[var(--bg-primary)] text-[var(--text-primary)] hover:bg-[var(--bg-secondary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] text-sm",children:[e.jsx("span",{className:"truncate",children:B}),e.jsx(n.ChevronDown,{className:`h-4 w-4 text-[var(--text-muted)] transition-transform ${h?"rotate-180":""}`})]}),h&&e.jsxs("div",{className:"absolute z-50 mt-1 w-full bg-[var(--bg-card)] border border-[var(--border-color)] rounded-[var(--radius-card)] shadow-lg",children:[e.jsx("div",{className:"px-3 py-2 border-b border-[var(--border-color)]",children:e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-y-0 left-0 pl-2 flex items-center pointer-events-none",children:e.jsx(n.Search,{className:"h-4 w-4 text-[var(--text-muted)]"})}),e.jsx("input",{ref:N,type:"text",value:P,onChange:r=>f(r.target.value),placeholder:i("permissions.filters.searchRoles"),className:"block w-full pl-8 pr-3 py-1.5 text-sm border border-[var(--border-color)] rounded-[var(--radius-input)] bg-[var(--bg-primary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)]"})]})}),e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-b border-[var(--border-color)] bg-[var(--bg-secondary)]",children:[e.jsx("button",{type:"button",onClick:D,className:"text-xs text-[var(--color-accent-600)] hover:text-[var(--color-accent-700)]",children:i("permissions.filters.selectAll")}),e.jsx("button",{type:"button",onClick:E,className:"text-xs text-[var(--text-muted)] hover:text-[var(--text-secondary)]",children:i("permissions.filters.clearSelection")})]}),e.jsx("div",{className:"max-h-64 overflow-auto",children:T.length===0?e.jsx("div",{className:"px-3 py-4 text-sm text-[var(--text-muted)] text-center",children:i("permissions.filters.noRolesFound")}):T.map(r=>e.jsxs("button",{type:"button",onClick:()=>I(r.id),className:"w-full flex items-center gap-3 px-3 py-2 hover:bg-[var(--bg-secondary)] cursor-pointer text-left",children:[e.jsx("div",{className:`w-4 h-4 rounded border flex items-center justify-center flex-shrink-0 ${s.selectedRoleIds.includes(r.id)?"bg-[var(--color-accent-600)] border-[var(--color-accent-600)]":"border-[var(--border-color)] bg-[var(--bg-primary)]"}`,children:s.selectedRoleIds.includes(r.id)&&e.jsx(n.Check,{className:"h-3 w-3 text-white"})}),e.jsx("span",{className:"text-sm text-[var(--text-primary)] truncate",children:r.name}),r.isSystem&&e.jsx("span",{className:"text-xs px-1.5 py-0.5 rounded bg-[var(--bg-tertiary)] text-[var(--text-muted)] flex-shrink-0",children:i("assignments.systemRole")})]},r.id))})]})]}),e.jsxs("div",{className:"min-w-[160px] flex-1",children:[e.jsx("label",{htmlFor:"application-filter",className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("assignments.filterByApplication")}),e.jsxs("select",{id:"application-filter",value:s.applicationFilter,onChange:r=>z(r.target.value),disabled:k.length===0,className:"block w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] leading-5 bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx("option",{value:"all",children:i("assignments.allApplications")}),k.map(r=>e.jsx("option",{value:r.app,children:r.label},r.app))]})]}),e.jsxs("div",{className:"min-w-[160px] flex-1",children:[e.jsx("label",{htmlFor:"module-filter",className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("permissions.filters.selectModule")}),e.jsxs("select",{id:"module-filter",value:s.moduleFilter,onChange:r=>b({moduleFilter:r.target.value}),disabled:L.length===0,className:"block w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] leading-5 bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx("option",{value:"all",children:i("permissions.filters.allModules")}),L.map(r=>e.jsx("option",{value:r.module,children:r.label},`${r.app}:${r.module}`))]})]}),e.jsx("div",{className:"flex items-end flex-shrink-0",children:_&&e.jsxs("button",{type:"button",onClick:O,className:"w-full inline-flex items-center justify-center gap-2 px-3 py-2 text-sm text-[var(--text-secondary)] hover:text-[var(--text-primary)] border border-[var(--border-color)] rounded-[var(--radius-input)] hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(n.RotateCcw,{className:"h-4 w-4"}),i("assignments.clearFilters")]})})]}),s.selectedRoleIds.length>0&&e.jsx("div",{className:"flex flex-wrap gap-2",children:s.selectedRoleIds.map(r=>{const u=v.find(F=>F.id===r);return u?e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 text-xs rounded-full bg-[var(--color-accent-100)] text-[var(--color-accent-700)] dark:bg-[var(--color-accent-900)] dark:text-[var(--color-accent-300)]",children:[u.name,e.jsx("button",{type:"button",onClick:()=>I(r),className:"hover:text-[var(--color-accent-900)] dark:hover:text-[var(--color-accent-100)]",children:e.jsx(n.X,{className:"h-3 w-3"})})]},r):null})}),S&&e.jsx("div",{className:"flex items-center justify-end pt-2 border-t border-[var(--border-color)]",children:e.jsx("div",{className:"text-sm text-[var(--warning-text)]",children:i("assignments.unsavedChanges")})})]})}const ie={viewer:{nameKey:"assignments.templates.viewer.name",descriptionKey:"assignments.templates.viewer.description",icon:n.Eye,color:"blue",permissions:["*.read"]},member:{nameKey:"assignments.templates.member.name",descriptionKey:"assignments.templates.member.description",icon:n.User,color:"green",permissions:["*.read","*.create"]},contributor:{nameKey:"assignments.templates.contributor.name",descriptionKey:"assignments.templates.contributor.description",icon:n.Pencil,color:"orange",permissions:["*.read","*.create","*.update"]},admin:{nameKey:"assignments.templates.admin.name",descriptionKey:"assignments.templates.admin.description",icon:n.ShieldCheck,color:"red",permissions:["*.*"]}},fe=[10,25,50],je=[10,15,20,25];function ye(){const{t:s}=le.useTranslation("admin"),{user:v}=J.useAuth(),[A,k]=l.useState(!1),[$,S]=l.useState(null),[b,O]=l.useState(25),[i,h]=l.useState(1),[M,P]=l.useState(10),[f,y]=l.useState(0),[N,T]=l.useState(new Set),[m,L]=l.useState(new Set),[I,D]=l.useState(!1),E=a=>{L(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d}),h(1),y(0)},z=a=>{T(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d})},q=l.useMemo(()=>v?J.hasFullAccess(v.permissions):!1,[v]),{loading:_,error:B,saveError:r,saving:u,roles:F,assignments:Z,filters:V,filteredRoles:W,filteredResources:K,hasChanges:Y,applications:ee,modules:ae,categories:ne,togglePermission:se,updateFilters:t,reloadData:o,resetChanges:c,clearSaveError:p,getPermissionInheritance:w}=J.usePermissionMatrix({canEditSystemRoles:q}),C=l.useCallback((a,x)=>{const d=x.permissions.filter(he=>{const oe=w(a,he.id);return oe.isDirect||oe.isInherited}),X=d.length,pe=x.totalPermissions;return X===0?"none":X===pe?"all":X===1&&d[0]?.action==="read"?"read-only":"some"},[w]),g=l.useMemo(()=>K.filter(a=>a.level==="module"),[K]),R=l.useMemo(()=>m.size===0?W:W.filter(a=>{for(const x of g){const d=C(a.id,x);if(m.has(d))return!0}return!1}),[W,g,m,C]),j=l.useMemo(()=>m.size===0?K:K.filter(a=>{if(a.level!=="module")return!0;for(const x of W){const d=C(x.id,a);if(m.has(d))return!0}return!1}),[K,W,m,C]),H=l.useMemo(()=>{let a=0;return Object.values(Z).forEach(x=>{a+=x.size}),a},[Z]),G=l.useMemo(()=>j.filter(a=>!(a.level!=="module"||N.has(a.applicationLabel))).length,[j,N]),te=l.useMemo(()=>j.filter(a=>a.level==="module").length,[j]),U=Math.ceil(G/b),ce=a=>{h(1),t(a)},de=a=>{O(a),h(1)},re=Math.ceil(R.length/M),me=a=>{P(a),y(0)},xe=async a=>{const x=ie[a];if(!x)return;const d=prompt(s("assignments.enterRoleName"),s(x.nameKey));if(d)try{S(null),await J.adminApi.roles.create({name:d,description:s(x.descriptionKey),permissionIds:[]}),k(!1),await o()}catch(X){S(X instanceof Error?X.message:"Failed to create role from template")}},ue=()=>{h(1),t({selectedRoleIds:[],resourceSearch:"",applicationFilter:"all",moduleFilter:"all"})};return _?e.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:e.jsxs("div",{className:"text-center",children:[e.jsx(n.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:s("assignments.loading")})]})}):B?e.jsx("div",{className:"p-6",children:e.jsx("div",{className:"rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] p-4",children:e.jsxs("div",{className:"flex",children:[e.jsx(n.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsxs("div",{className:"ml-3",children:[e.jsx("h3",{className:"text-sm font-medium text-[var(--error-text)]",children:s("common.error")}),e.jsx("div",{className:"mt-2 text-sm text-[var(--error-text)] opacity-80",children:e.jsx("p",{children:B})})]})]})})}):e.jsxs("div",{className:"p-6 space-y-4",children:[e.jsx(J.Breadcrumb,{items:[{label:s("header.title"),href:"/administration"},{label:s("assignments.title","Assignments")}]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:s("assignments.title")}),e.jsx("p",{className:"mt-1 text-sm text-[var(--text-secondary)]",children:s("assignments.subtitle")})]}),e.jsx("div",{className:"flex items-center gap-3 flex-shrink-0",children:e.jsxs("button",{type:"button",onClick:()=>k(!0),className:"inline-flex items-center px-4 py-2 border border-[var(--border-color)] text-sm font-medium rounded-[var(--radius-button)] text-[var(--text-secondary)] bg-[var(--bg-card)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx(n.Sparkles,{className:"h-4 w-4 mr-2"}),s("assignments.createFromTemplate")]})})]}),r&&e.jsx("div",{className:"rounded-[var(--radius-card)] bg-[var(--error-bg)] p-3 border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx(n.AlertCircle,{className:"h-4 w-4 text-[var(--error-text)]"}),e.jsx("p",{className:"ml-2 text-sm text-[var(--error-text)]",children:r}),e.jsx("button",{type:"button",onClick:p,className:"ml-auto text-sm text-[var(--error-text)] hover:opacity-80 font-medium",children:s("common.dismiss")})]})}),(Y||u)&&e.jsx("div",{className:"rounded-[var(--radius-card)] bg-[var(--warning-bg)] p-3 border border-[var(--warning-border)]",children:e.jsxs("div",{className:"flex items-center",children:[u?e.jsx(n.Loader2,{className:"h-4 w-4 text-[var(--warning-dot)] animate-spin"}):e.jsx(n.Info,{className:"h-4 w-4 text-[var(--warning-dot)]"}),e.jsx("p",{className:"ml-2 text-sm text-[var(--warning-text)]",children:s(u?"assignments.saving":"assignments.autoSaveActive")}),!u&&e.jsx("button",{type:"button",onClick:c,className:"ml-auto text-sm text-[var(--warning-text)] hover:opacity-80 font-medium",children:s("assignments.discardChanges")})]})}),e.jsx(be,{filters:V,roles:F,categories:ne,applications:ee,modules:ae,hasChanges:Y,onFilterChange:ce,onReset:ue}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 py-2",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--color-accent-100)] text-[var(--color-accent-700)] dark:bg-[var(--color-accent-900)] dark:text-[var(--color-accent-300)]",children:[R.length," ",s("assignments.roles")]}),e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:[G,"/",te," ",s("assignments.modules")]}),e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--success-bg)] text-[var(--success-text)] border border-[var(--success-border)]",children:[H," ",s("assignments.permissionsAssigned")]})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-[var(--text-secondary)] border-l border-[var(--border-color)] pl-4",children:[e.jsxs("span",{children:[s("assignments.rolesPerPage"),":"]}),e.jsx("select",{value:M,onChange:a=>me(Number(a.target.value)),className:"px-2 py-1 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:je.map(a=>e.jsx("option",{value:a,children:a},a))}),e.jsxs("span",{className:"text-[var(--text-muted)]",children:[f*M+1,"-",Math.min((f+1)*M,R.length)," / ",R.length]}),re>1&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>y(a=>Math.max(0,a-1)),disabled:f===0,className:"p-1 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronLeft,{className:"h-3.5 w-3.5"})}),e.jsxs("span",{className:"text-xs min-w-[50px] text-center",children:[f+1," / ",re]}),e.jsx("button",{onClick:()=>y(a=>Math.min(re-1,a+1)),disabled:f>=re-1,className:"p-1 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronRight,{className:"h-3.5 w-3.5"})})]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs("button",{onClick:()=>E("none"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("none")?"bg-red-500/30 border-red-500 text-red-700 dark:text-red-300":"bg-red-500/10 border-red-500/30 text-red-600 dark:text-red-400 hover:bg-red-500/20 hover:border-red-500"}`,children:[e.jsx(n.Ban,{className:"h-3.5 w-3.5"}),s("assignments.none")]}),e.jsxs("button",{onClick:()=>E("read-only"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("read-only")?"bg-sky-500/30 border-sky-500 text-sky-700 dark:text-sky-300":"bg-sky-500/10 border-sky-500/30 text-sky-600 dark:text-sky-400 hover:bg-sky-500/20 hover:border-sky-500"}`,children:[e.jsx(n.Eye,{className:"h-3.5 w-3.5"}),s("assignments.readOnly")]}),e.jsxs("button",{onClick:()=>E("some"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("some")?"bg-amber-500/30 border-amber-500 text-amber-700 dark:text-amber-300":"bg-amber-500/10 border-amber-500/30 text-amber-600 dark:text-amber-400 hover:bg-amber-500/20 hover:border-amber-500"}`,children:[e.jsx(n.Star,{className:"h-3.5 w-3.5"}),s("assignments.partial")]}),e.jsxs("button",{onClick:()=>E("all"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("all")?"bg-emerald-500/30 border-emerald-500 text-emerald-700 dark:text-emerald-300":"bg-emerald-500/10 border-emerald-500/30 text-emerald-600 dark:text-emerald-400 hover:bg-emerald-500/20 hover:border-emerald-500"}`,children:[e.jsx(n.Check,{className:"h-3.5 w-3.5"}),s("assignments.complete")]}),m.size>0&&e.jsx("button",{onClick:()=>L(new Set),className:"text-xs text-[var(--color-accent-500)] hover:text-[var(--color-accent-600)] underline ml-2",children:s("assignments.clearFilters")})]})]}),e.jsxs("div",{className:"bg-[var(--bg-card)] border border-[var(--item-color-border)] rounded-[var(--radius-card)] overflow-hidden",children:[e.jsxs("button",{type:"button",onClick:()=>D(!I),className:"w-full flex items-center justify-between px-4 py-2.5 text-sm font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(n.BookOpen,{className:"h-4 w-4 text-[var(--color-accent-500)]"}),e.jsx("span",{children:s("assignments.guide.title")})]}),I?e.jsx(n.ChevronUp,{className:"h-4 w-4 text-[var(--text-muted)]"}):e.jsx(n.ChevronDown,{className:"h-4 w-4 text-[var(--text-muted)]"})]}),I&&e.jsx("div",{className:"px-4 pb-4 border-t border-[var(--item-color-border)]",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 pt-3",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-[var(--text-primary)] uppercase tracking-wider mb-2",children:s("assignments.guide.colorLegendTitle")}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-red-500/10 border border-red-500/20 text-red-600 dark:text-red-400",children:e.jsx(n.Ban,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.noneDesc")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-sky-500/20 border border-sky-500/30 text-sky-700 dark:text-sky-300",children:e.jsx(n.Eye,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.readOnlyDesc")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-amber-500/20 border border-amber-500/30 text-amber-700 dark:text-amber-300",children:e.jsx(n.Star,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.partialDesc")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-emerald-500/20 border border-emerald-500/30 text-emerald-700 dark:text-emerald-300",children:e.jsx(n.Check,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.completeDesc")})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-[var(--text-primary)] uppercase tracking-wider mb-2",children:s("assignments.guide.howToUseTitle")}),e.jsxs("ul",{className:"space-y-1.5 text-xs text-[var(--text-secondary)]",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.clickCell")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx(n.Lock,{className:"h-3 w-3 flex-shrink-0 mt-0.5 text-[var(--warning-dot)]"}),s("assignments.guide.systemRoles")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.inheritance")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.autoSave")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.filterButtons")]})]})]})]})})]}),e.jsx("div",{className:"bg-[var(--bg-card)] shadow-[var(--shadow-md)] rounded-[var(--radius-card)] border border-[var(--item-color-border)]",children:e.jsx(ve,{roles:R,resources:j,assignments:Z,canEditSystemRoles:q,onTogglePermission:se,getPermissionInheritance:w,rolesPerPage:M,rolePageIndex:f,modulesPerPage:b,modulePageIndex:i-1,collapsedApps:N,onToggleApp:z,statusFilters:m})}),e.jsx("div",{className:"py-3 px-4 bg-[var(--bg-card)] rounded-[var(--radius-card)] border border-[var(--item-color-border)]",children:e.jsxs("div",{className:"flex items-center gap-3 text-sm text-[var(--text-secondary)]",children:[e.jsxs("span",{children:[s("assignments.itemsPerPage"),":"]}),e.jsx("select",{value:b,onChange:a=>de(Number(a.target.value)),className:"px-2 py-1 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:fe.map(a=>e.jsx("option",{value:a,children:a},a))}),e.jsxs("span",{className:"text-[var(--text-muted)]",children:[(i-1)*b+1,"-",Math.min(i*b,G)," / ",G]}),U>1&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>h(a=>Math.max(1,a-1)),disabled:i===1,className:"p-1.5 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronLeft,{className:"h-4 w-4"})}),e.jsxs("span",{className:"text-sm min-w-[60px] text-center",children:[i," / ",U]}),e.jsx("button",{onClick:()=>h(a=>Math.min(U,a+1)),disabled:i>=U,className:"p-1.5 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronRight,{className:"h-4 w-4"})})]})]})}),A&&e.jsx("div",{className:"fixed inset-0 z-50 overflow-y-auto",children:e.jsxs("div",{className:"flex items-center justify-center min-h-screen px-4 pt-4 pb-20 text-center sm:p-0",children:[e.jsx("button",{type:"button",className:"fixed inset-0 bg-black/50 transition-opacity",onClick:()=>k(!1),"aria-label":"Close modal"}),e.jsxs("div",{className:"inline-block align-bottom bg-[var(--bg-card)] rounded-[var(--radius-modal)] px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full sm:p-6 border border-[var(--border-color)]",children:[e.jsxs("div",{className:"mb-4",children:[e.jsx("h3",{className:"text-lg font-medium text-[var(--text-primary)]",children:s("assignments.createFromTemplate")}),e.jsx("p",{className:"mt-1 text-sm text-[var(--text-secondary)]",children:s("assignments.templateDescription")})]}),$&&e.jsx("div",{className:"mb-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] p-3",children:e.jsxs("div",{className:"flex",children:[e.jsx(n.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("div",{className:"ml-3",children:e.jsx("p",{className:"text-sm text-[var(--error-text)]",children:$})})]})}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:Object.entries(ie).map(([a,x])=>{const d=x.icon;return e.jsx("button",{onClick:()=>xe(a),className:"relative p-4 rounded-[var(--radius-card)] border-2 text-left transition-all hover:shadow-lg hover:scale-105 border-[var(--border-color)] hover:border-[var(--color-accent-500)]",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(d,{className:"h-6 w-6 text-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"text-sm font-medium text-[var(--text-primary)]",children:s(x.nameKey)}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-secondary)]",children:s(x.descriptionKey)})]})]})},a)})}),e.jsx("div",{className:"mt-5 sm:mt-6",children:e.jsx("button",{type:"button",onClick:()=>{k(!1),S(null)},className:"w-full inline-flex justify-center rounded-[var(--radius-button)] border border-[var(--border-color)] shadow-sm px-4 py-2 bg-[var(--bg-secondary)] text-base font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] transition-colors",children:s("common.cancel")})})]})]})})]})}exports.AssignmentsPage=ye;
|
|
2
|
-
//# sourceMappingURL=AssignmentsPage-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),le=require("react-i18next"),n=require("lucide-react"),J=require("./index-IgLVXPg8.js"),Q=require("./PermissionPopover-CtYTz7MK.js");function ge({section:s,resources:v,moduleIndex:A,sectionIndex:k,isCollapsed:$,collapsedSections:S,paginatedRoles:b,canEditSystemRoles:O,statusFilters:i,openPopover:h,onToggleCollapse:M,onTogglePermission:P,onCellClick:f,setOpenPopover:y,renderResourceRow:N}){const T=S.has(s.id),m=v.length>0;return e.jsxs(l.Fragment,{children:[N(s,A+k+1,"section",m,T),m&&!T&&v.map((L,I)=>N(L,A+k+I+2,"resource",!1,!1))]},s.id)}function ve({roles:s,resources:v,canEditSystemRoles:A=!1,onTogglePermission:k,getPermissionInheritance:$,rolesPerPage:S,rolePageIndex:b,modulesPerPage:O,modulePageIndex:i,collapsedApps:h,onToggleApp:M,statusFilters:P}){const{t:f}=le.useTranslation("admin"),[y,N]=l.useState(null),[T,m]=l.useState(new Set),[L,I]=l.useState(new Set),D=l.useCallback((t,o)=>{o(c=>{const p=new Set(c);return p.has(t)?p.delete(t):p.add(t),p})},[]),E=l.useCallback(t=>{D(t,m)},[D]),z=l.useCallback(t=>{D(t,I)},[D]),q=l.useMemo(()=>v.filter(t=>t.level==="module").length,[v]),_=l.useMemo(()=>{const t=b*S;return s.slice(t,t+S)},[s,b,S]),B=l.useMemo(()=>Q.groupByApplicationWithSections(v),[v]),r=l.useCallback(()=>{const t=i*O,o=t+O,c={current:0},p=[];for(const w of B){const C=h.has(w.application),g=[];if(!C)for(const R of w.modules)c.current>=t&&c.current<o&&g.push(R),c.current++;p.push({application:w.application,modules:g})}return p},[B,i,O,h]),u=l.useMemo(()=>r(),[r]),F=l.useCallback((t,o)=>{const c=$(t,o);return c.isDirect||c.isInherited},[$]),Z=l.useCallback((t,o)=>Q.calculatePermissionStatus(o,c=>F(t,c)),[F]),V=(t,o)=>{y?.roleId===t&&y?.resourceId===o?N(null):N({roleId:t,resourceId:o})};if(s.length===0||q===0)return e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s.length===0?f("assignments.noRoles"):f("assignments.noResources")});const W=t=>{switch(t){case"resource":return"pl-28";case"section":return"pl-22";default:return"pl-16"}},K=t=>t==="resource"?e.jsx(n.Database,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):t==="section"?e.jsx(n.FileText,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):e.jsx(n.Box,{className:"h-3.5 w-3.5 text-[var(--text-secondary)]"}),Y=t=>t==="resource"?"text-[var(--text-muted)] italic":t==="section"?"text-[var(--text-secondary)]":"font-medium text-[var(--text-primary)]",ee=l.useCallback((t,o)=>{o==="module"?E(t):o==="section"&&z(t)},[E,z]),ae=(t,o,c,p)=>t?e.jsx("button",{onClick:()=>ee(o,c),className:"p-0.5 hover:bg-[var(--bg-hover)] rounded",children:p?e.jsx(n.ChevronRight,{className:"h-3 w-3 text-[var(--text-muted)]"}):e.jsx(n.ChevronDown,{className:"h-3 w-3 text-[var(--text-muted)]"})}):null,ne=t=>_.map(o=>{const{status:c,grantedCount:p}=Z(o.id,t),w=y?.roleId===o.id&&y?.resourceId===t.id,C=l.createRef(),g=!o.isSystem||A,R=Q.getPermissionCellBackground(c),j=(P?.size??0)>0&&!P?.has(c);return e.jsxs("td",{className:`px-0 py-1 text-center relative ${j?"":R}`,style:{width:"44px",minWidth:"44px",maxWidth:"44px"},children:[e.jsx("button",{ref:C,type:"button",onClick:()=>g&&!j&&V(o.id,t.id),disabled:!g||j,className:`w-full h-full min-h-[36px] flex items-center justify-center rounded transition-colors ${j?"opacity-10 cursor-default":g?"hover:opacity-80":"cursor-not-allowed opacity-50"} ${w?"ring-2 ring-[var(--color-accent-500)]":""}`,title:j?void 0:g?`${o.name} - ${t.moduleLabel}: ${p}/${t.permissions.length}`:`${o.name} - ${f("assignments.systemRoleReadOnly")}`,children:e.jsx(Q.PermissionStatusIndicator,{status:c,grantedCount:p,totalCount:t.permissions.length})}),w&&g&&!j&&e.jsx(Q.PermissionPopover,{mode:"editable",role:o,resource:t,onTogglePermission:H=>k(o.id,H),onClose:()=>N(null),getPermissionInheritance:$})]},`${o.id}-${t.id}`)}),se=(t,o,c,p=!1,w=!1)=>{const C=W(c),g=o%2===0?"item-light":"item-medium";return e.jsxs("tr",{className:`hover:bg-[var(--bg-hover)] ${g}`,children:[e.jsx("td",{className:`sticky left-0 z-10 ${g} px-3 py-2 ${C}`,style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("div",{className:"flex items-center gap-2",children:[ae(p,t.id,c,w),K(c),e.jsx("span",{className:`text-sm ${Y(c)}`,children:t.moduleLabel}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",t.permissions.length,")"]})]})}),ne(t)]},t.id)};return 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:"180px",verticalAlign:"bottom",paddingBottom:"12px"},children:f("assignments.resource")}),_.map(t=>e.jsx("th",{scope:"col",className:"relative overflow-visible",style:{width:"44px",minWidth:"44px",maxWidth:"44px",height:"180px",padding:0,verticalAlign:"bottom"},children:e.jsx("div",{className:"absolute bottom-2 left-1/2",style:{transform:"translateX(-6px) rotate(-55deg)",transformOrigin:"bottom left",width:"160px"},children:e.jsxs("div",{className:"flex items-center gap-1",children:[t.isSystem&&e.jsx(n.Lock,{className:"h-3 w-3 flex-shrink-0 text-[var(--warning-dot)]"}),e.jsx("span",{className:"text-[10px] font-medium text-[var(--text-primary)] whitespace-nowrap",title:t.name,children:t.name})]})})},t.id))]})}),e.jsx("tbody",{className:"divide-y divide-[var(--item-color-border)]",children:u.map(t=>{const o=h.has(t.application),c=_.length;return e.jsxs(l.Fragment,{children:[e.jsxs("tr",{className:"bg-[var(--color-accent-900)]/30 dark:bg-[var(--color-accent-900)]/50",children:[e.jsx("td",{className:"sticky left-0 z-10 px-3 py-3 bg-[var(--color-accent-900)]/30 dark:bg-[var(--color-accent-900)]/50",style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("button",{onClick:()=>M(t.application),className:"flex items-center gap-3 w-full text-left hover:opacity-80",children:[o?e.jsx(n.ChevronRight,{className:"h-5 w-5 text-[var(--color-accent-400)]"}):e.jsx(n.ChevronDown,{className:"h-5 w-5 text-[var(--color-accent-400)]"}),e.jsx(n.FolderOpen,{className:"h-5 w-5 text-[var(--color-accent-400)]"}),e.jsx("span",{className:"text-sm font-bold text-[var(--color-accent-300)] uppercase tracking-wider",children:t.application}),e.jsx("span",{className:"text-xs text-[var(--color-accent-400)] ml-auto",children:f("assignments.moduleCount",{count:t.modules.length})})]})}),e.jsx("td",{colSpan:c,className:"px-0 py-3"})]}),!o&&t.modules.map((p,w)=>{const{module:C,sections:g}=p,R=g.length>0,j=T.has(C.id);return e.jsxs(l.Fragment,{children:[se(C,w,"module",R,j),R&&!j&&g.map((H,G)=>{const{section:te,resources:U}=H;return e.jsx(ge,{section:te,resources:U,moduleIndex:w,sectionIndex:G,isCollapsed:j,collapsedSections:L,paginatedRoles:_,canEditSystemRoles:A,statusFilters:P,openPopover:y,onToggleCollapse:ee,onTogglePermission:k,onCellClick:V,setOpenPopover:N,renderResourceRow:se},te.id)})]},C.id)})]},t.application)})})]})})}function be({filters:s,roles:v,categories:A,applications:k,modules:$,hasChanges:S,onFilterChange:b,onReset:O}){const{t:i}=le.useTranslation("admin"),[h,M]=l.useState(!1),[P,f]=l.useState(""),y=l.useRef(null),N=l.useRef(null),T=l.useMemo(()=>{let r=v;if(s.categoryFilter!=="all"&&(r=r.filter(u=>u.category===s.categoryFilter)),P.trim()){const u=P.toLowerCase();r=r.filter(F=>F.name.toLowerCase().includes(u)||F.shortName?.toLowerCase().includes(u))}return r},[v,s.categoryFilter,P]);l.useEffect(()=>{h&&N.current&&setTimeout(()=>N.current?.focus(),50)},[h]);const m=r=>{M(r),r||f("")},L=$.filter(r=>!(s.applicationFilter!=="all"&&r.app!==s.applicationFilter));l.useEffect(()=>{function r(u){y.current&&!y.current.contains(u.target)&&m(!1)}return document.addEventListener("mousedown",r),()=>document.removeEventListener("mousedown",r)},[]);const I=r=>{const u=s.selectedRoleIds.includes(r)?s.selectedRoleIds.filter(F=>F!==r):[...s.selectedRoleIds,r];b({selectedRoleIds:u})},D=()=>{b({selectedRoleIds:T.map(r=>r.id)})},E=()=>{b({selectedRoleIds:[]})},z=r=>{b({applicationFilter:r,moduleFilter:"all"})},q=r=>{b({categoryFilter:r,selectedRoleIds:[]})},_=s.selectedRoleIds.length>0||s.categoryFilter!=="all"||s.applicationFilter!=="all"||s.moduleFilter!=="all",B=s.selectedRoleIds.length===0?i("permissions.filters.allRoles"):s.selectedRoleIds.length===1?v.find(r=>r.id===s.selectedRoleIds[0])?.name||i("assignments.oneRoleSelected"):`${s.selectedRoleIds.length} ${i("permissions.filters.rolesSelected")}`;return e.jsxs("div",{className:"bg-[var(--bg-card)] border border-[var(--item-color-border)] rounded-[var(--radius-card)] p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-secondary)]",children:[e.jsx(n.Filter,{className:"h-4 w-4"}),e.jsx("span",{children:i("assignments.filters")})]}),e.jsxs("div",{className:"flex flex-wrap gap-4",children:[e.jsxs("div",{className:"min-w-[160px] flex-1",children:[e.jsx("label",{htmlFor:"category-filter",className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("permissions.filters.selectCategory")}),e.jsxs("select",{id:"category-filter",value:s.categoryFilter,onChange:r=>q(r.target.value),className:"block w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] leading-5 bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] sm:text-sm",children:[e.jsx("option",{value:"all",children:i("permissions.filters.allCategories")}),A.map(r=>e.jsx("option",{value:r,children:i(`roles.categories.${r.toLowerCase()}`)},r))]})]}),e.jsxs("div",{ref:y,className:"relative min-w-[200px] flex-[2]",children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("permissions.filters.selectRoles")}),e.jsxs("button",{type:"button",onClick:()=>m(!h),className:"w-full flex items-center justify-between px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] bg-[var(--bg-primary)] text-[var(--text-primary)] hover:bg-[var(--bg-secondary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] text-sm",children:[e.jsx("span",{className:"truncate",children:B}),e.jsx(n.ChevronDown,{className:`h-4 w-4 text-[var(--text-muted)] transition-transform ${h?"rotate-180":""}`})]}),h&&e.jsxs("div",{className:"absolute z-50 mt-1 w-full bg-[var(--bg-card)] border border-[var(--border-color)] rounded-[var(--radius-card)] shadow-lg",children:[e.jsx("div",{className:"px-3 py-2 border-b border-[var(--border-color)]",children:e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-y-0 left-0 pl-2 flex items-center pointer-events-none",children:e.jsx(n.Search,{className:"h-4 w-4 text-[var(--text-muted)]"})}),e.jsx("input",{ref:N,type:"text",value:P,onChange:r=>f(r.target.value),placeholder:i("permissions.filters.searchRoles"),className:"block w-full pl-8 pr-3 py-1.5 text-sm border border-[var(--border-color)] rounded-[var(--radius-input)] bg-[var(--bg-primary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)]"})]})}),e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-b border-[var(--border-color)] bg-[var(--bg-secondary)]",children:[e.jsx("button",{type:"button",onClick:D,className:"text-xs text-[var(--color-accent-600)] hover:text-[var(--color-accent-700)]",children:i("permissions.filters.selectAll")}),e.jsx("button",{type:"button",onClick:E,className:"text-xs text-[var(--text-muted)] hover:text-[var(--text-secondary)]",children:i("permissions.filters.clearSelection")})]}),e.jsx("div",{className:"max-h-64 overflow-auto",children:T.length===0?e.jsx("div",{className:"px-3 py-4 text-sm text-[var(--text-muted)] text-center",children:i("permissions.filters.noRolesFound")}):T.map(r=>e.jsxs("button",{type:"button",onClick:()=>I(r.id),className:"w-full flex items-center gap-3 px-3 py-2 hover:bg-[var(--bg-secondary)] cursor-pointer text-left",children:[e.jsx("div",{className:`w-4 h-4 rounded border flex items-center justify-center flex-shrink-0 ${s.selectedRoleIds.includes(r.id)?"bg-[var(--color-accent-600)] border-[var(--color-accent-600)]":"border-[var(--border-color)] bg-[var(--bg-primary)]"}`,children:s.selectedRoleIds.includes(r.id)&&e.jsx(n.Check,{className:"h-3 w-3 text-white"})}),e.jsx("span",{className:"text-sm text-[var(--text-primary)] truncate",children:r.name}),r.isSystem&&e.jsx("span",{className:"text-xs px-1.5 py-0.5 rounded bg-[var(--bg-tertiary)] text-[var(--text-muted)] flex-shrink-0",children:i("assignments.systemRole")})]},r.id))})]})]}),e.jsxs("div",{className:"min-w-[160px] flex-1",children:[e.jsx("label",{htmlFor:"application-filter",className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("assignments.filterByApplication")}),e.jsxs("select",{id:"application-filter",value:s.applicationFilter,onChange:r=>z(r.target.value),disabled:k.length===0,className:"block w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] leading-5 bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx("option",{value:"all",children:i("assignments.allApplications")}),k.map(r=>e.jsx("option",{value:r.app,children:r.label},r.app))]})]}),e.jsxs("div",{className:"min-w-[160px] flex-1",children:[e.jsx("label",{htmlFor:"module-filter",className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("permissions.filters.selectModule")}),e.jsxs("select",{id:"module-filter",value:s.moduleFilter,onChange:r=>b({moduleFilter:r.target.value}),disabled:L.length===0,className:"block w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] leading-5 bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx("option",{value:"all",children:i("permissions.filters.allModules")}),L.map(r=>e.jsx("option",{value:r.module,children:r.label},`${r.app}:${r.module}`))]})]}),e.jsx("div",{className:"flex items-end flex-shrink-0",children:_&&e.jsxs("button",{type:"button",onClick:O,className:"w-full inline-flex items-center justify-center gap-2 px-3 py-2 text-sm text-[var(--text-secondary)] hover:text-[var(--text-primary)] border border-[var(--border-color)] rounded-[var(--radius-input)] hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(n.RotateCcw,{className:"h-4 w-4"}),i("assignments.clearFilters")]})})]}),s.selectedRoleIds.length>0&&e.jsx("div",{className:"flex flex-wrap gap-2",children:s.selectedRoleIds.map(r=>{const u=v.find(F=>F.id===r);return u?e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 text-xs rounded-full bg-[var(--color-accent-100)] text-[var(--color-accent-700)] dark:bg-[var(--color-accent-900)] dark:text-[var(--color-accent-300)]",children:[u.name,e.jsx("button",{type:"button",onClick:()=>I(r),className:"hover:text-[var(--color-accent-900)] dark:hover:text-[var(--color-accent-100)]",children:e.jsx(n.X,{className:"h-3 w-3"})})]},r):null})}),S&&e.jsx("div",{className:"flex items-center justify-end pt-2 border-t border-[var(--border-color)]",children:e.jsx("div",{className:"text-sm text-[var(--warning-text)]",children:i("assignments.unsavedChanges")})})]})}const ie={viewer:{nameKey:"assignments.templates.viewer.name",descriptionKey:"assignments.templates.viewer.description",icon:n.Eye,color:"blue",permissions:["*.read"]},member:{nameKey:"assignments.templates.member.name",descriptionKey:"assignments.templates.member.description",icon:n.User,color:"green",permissions:["*.read","*.create"]},contributor:{nameKey:"assignments.templates.contributor.name",descriptionKey:"assignments.templates.contributor.description",icon:n.Pencil,color:"orange",permissions:["*.read","*.create","*.update"]},admin:{nameKey:"assignments.templates.admin.name",descriptionKey:"assignments.templates.admin.description",icon:n.ShieldCheck,color:"red",permissions:["*.*"]}},fe=[10,25,50],je=[10,15,20,25];function ye(){const{t:s}=le.useTranslation("admin"),{user:v}=J.useAuth(),[A,k]=l.useState(!1),[$,S]=l.useState(null),[b,O]=l.useState(25),[i,h]=l.useState(1),[M,P]=l.useState(10),[f,y]=l.useState(0),[N,T]=l.useState(new Set),[m,L]=l.useState(new Set),[I,D]=l.useState(!1),E=a=>{L(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d}),h(1),y(0)},z=a=>{T(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d})},q=l.useMemo(()=>v?J.hasFullAccess(v.permissions):!1,[v]),{loading:_,error:B,saveError:r,saving:u,roles:F,assignments:Z,filters:V,filteredRoles:W,filteredResources:K,hasChanges:Y,applications:ee,modules:ae,categories:ne,togglePermission:se,updateFilters:t,reloadData:o,resetChanges:c,clearSaveError:p,getPermissionInheritance:w}=J.usePermissionMatrix({canEditSystemRoles:q}),C=l.useCallback((a,x)=>{const d=x.permissions.filter(he=>{const oe=w(a,he.id);return oe.isDirect||oe.isInherited}),X=d.length,pe=x.totalPermissions;return X===0?"none":X===pe?"all":X===1&&d[0]?.action==="read"?"read-only":"some"},[w]),g=l.useMemo(()=>K.filter(a=>a.level==="module"),[K]),R=l.useMemo(()=>m.size===0?W:W.filter(a=>{for(const x of g){const d=C(a.id,x);if(m.has(d))return!0}return!1}),[W,g,m,C]),j=l.useMemo(()=>m.size===0?K:K.filter(a=>{if(a.level!=="module")return!0;for(const x of W){const d=C(x.id,a);if(m.has(d))return!0}return!1}),[K,W,m,C]),H=l.useMemo(()=>{let a=0;return Object.values(Z).forEach(x=>{a+=x.size}),a},[Z]),G=l.useMemo(()=>j.filter(a=>!(a.level!=="module"||N.has(a.applicationLabel))).length,[j,N]),te=l.useMemo(()=>j.filter(a=>a.level==="module").length,[j]),U=Math.ceil(G/b),ce=a=>{h(1),t(a)},de=a=>{O(a),h(1)},re=Math.ceil(R.length/M),me=a=>{P(a),y(0)},xe=async a=>{const x=ie[a];if(!x)return;const d=prompt(s("assignments.enterRoleName"),s(x.nameKey));if(d)try{S(null),await J.adminApi.roles.create({name:d,description:s(x.descriptionKey),permissionIds:[]}),k(!1),await o()}catch(X){S(X instanceof Error?X.message:"Failed to create role from template")}},ue=()=>{h(1),t({selectedRoleIds:[],resourceSearch:"",applicationFilter:"all",moduleFilter:"all"})};return _?e.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:e.jsxs("div",{className:"text-center",children:[e.jsx(n.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:s("assignments.loading")})]})}):B?e.jsx("div",{className:"p-6",children:e.jsx("div",{className:"rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] p-4",children:e.jsxs("div",{className:"flex",children:[e.jsx(n.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsxs("div",{className:"ml-3",children:[e.jsx("h3",{className:"text-sm font-medium text-[var(--error-text)]",children:s("common.error")}),e.jsx("div",{className:"mt-2 text-sm text-[var(--error-text)] opacity-80",children:e.jsx("p",{children:B})})]})]})})}):e.jsxs("div",{className:"p-6 space-y-4",children:[e.jsx(J.Breadcrumb,{items:[{label:s("header.title"),href:"/administration"},{label:s("assignments.title","Assignments")}]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:s("assignments.title")}),e.jsx("p",{className:"mt-1 text-sm text-[var(--text-secondary)]",children:s("assignments.subtitle")})]}),e.jsx("div",{className:"flex items-center gap-3 flex-shrink-0",children:e.jsxs("button",{type:"button",onClick:()=>k(!0),className:"inline-flex items-center px-4 py-2 border border-[var(--border-color)] text-sm font-medium rounded-[var(--radius-button)] text-[var(--text-secondary)] bg-[var(--bg-card)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx(n.Sparkles,{className:"h-4 w-4 mr-2"}),s("assignments.createFromTemplate")]})})]}),r&&e.jsx("div",{className:"rounded-[var(--radius-card)] bg-[var(--error-bg)] p-3 border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx(n.AlertCircle,{className:"h-4 w-4 text-[var(--error-text)]"}),e.jsx("p",{className:"ml-2 text-sm text-[var(--error-text)]",children:r}),e.jsx("button",{type:"button",onClick:p,className:"ml-auto text-sm text-[var(--error-text)] hover:opacity-80 font-medium",children:s("common.dismiss")})]})}),(Y||u)&&e.jsx("div",{className:"rounded-[var(--radius-card)] bg-[var(--warning-bg)] p-3 border border-[var(--warning-border)]",children:e.jsxs("div",{className:"flex items-center",children:[u?e.jsx(n.Loader2,{className:"h-4 w-4 text-[var(--warning-dot)] animate-spin"}):e.jsx(n.Info,{className:"h-4 w-4 text-[var(--warning-dot)]"}),e.jsx("p",{className:"ml-2 text-sm text-[var(--warning-text)]",children:s(u?"assignments.saving":"assignments.autoSaveActive")}),!u&&e.jsx("button",{type:"button",onClick:c,className:"ml-auto text-sm text-[var(--warning-text)] hover:opacity-80 font-medium",children:s("assignments.discardChanges")})]})}),e.jsx(be,{filters:V,roles:F,categories:ne,applications:ee,modules:ae,hasChanges:Y,onFilterChange:ce,onReset:ue}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 py-2",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--color-accent-100)] text-[var(--color-accent-700)] dark:bg-[var(--color-accent-900)] dark:text-[var(--color-accent-300)]",children:[R.length," ",s("assignments.roles")]}),e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:[G,"/",te," ",s("assignments.modules")]}),e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--success-bg)] text-[var(--success-text)] border border-[var(--success-border)]",children:[H," ",s("assignments.permissionsAssigned")]})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-[var(--text-secondary)] border-l border-[var(--border-color)] pl-4",children:[e.jsxs("span",{children:[s("assignments.rolesPerPage"),":"]}),e.jsx("select",{value:M,onChange:a=>me(Number(a.target.value)),className:"px-2 py-1 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:je.map(a=>e.jsx("option",{value:a,children:a},a))}),e.jsxs("span",{className:"text-[var(--text-muted)]",children:[f*M+1,"-",Math.min((f+1)*M,R.length)," / ",R.length]}),re>1&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>y(a=>Math.max(0,a-1)),disabled:f===0,className:"p-1 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronLeft,{className:"h-3.5 w-3.5"})}),e.jsxs("span",{className:"text-xs min-w-[50px] text-center",children:[f+1," / ",re]}),e.jsx("button",{onClick:()=>y(a=>Math.min(re-1,a+1)),disabled:f>=re-1,className:"p-1 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronRight,{className:"h-3.5 w-3.5"})})]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs("button",{onClick:()=>E("none"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("none")?"bg-red-500/30 border-red-500 text-red-700 dark:text-red-300":"bg-red-500/10 border-red-500/30 text-red-600 dark:text-red-400 hover:bg-red-500/20 hover:border-red-500"}`,children:[e.jsx(n.Ban,{className:"h-3.5 w-3.5"}),s("assignments.none")]}),e.jsxs("button",{onClick:()=>E("read-only"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("read-only")?"bg-sky-500/30 border-sky-500 text-sky-700 dark:text-sky-300":"bg-sky-500/10 border-sky-500/30 text-sky-600 dark:text-sky-400 hover:bg-sky-500/20 hover:border-sky-500"}`,children:[e.jsx(n.Eye,{className:"h-3.5 w-3.5"}),s("assignments.readOnly")]}),e.jsxs("button",{onClick:()=>E("some"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("some")?"bg-amber-500/30 border-amber-500 text-amber-700 dark:text-amber-300":"bg-amber-500/10 border-amber-500/30 text-amber-600 dark:text-amber-400 hover:bg-amber-500/20 hover:border-amber-500"}`,children:[e.jsx(n.Star,{className:"h-3.5 w-3.5"}),s("assignments.partial")]}),e.jsxs("button",{onClick:()=>E("all"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("all")?"bg-emerald-500/30 border-emerald-500 text-emerald-700 dark:text-emerald-300":"bg-emerald-500/10 border-emerald-500/30 text-emerald-600 dark:text-emerald-400 hover:bg-emerald-500/20 hover:border-emerald-500"}`,children:[e.jsx(n.Check,{className:"h-3.5 w-3.5"}),s("assignments.complete")]}),m.size>0&&e.jsx("button",{onClick:()=>L(new Set),className:"text-xs text-[var(--color-accent-500)] hover:text-[var(--color-accent-600)] underline ml-2",children:s("assignments.clearFilters")})]})]}),e.jsxs("div",{className:"bg-[var(--bg-card)] border border-[var(--item-color-border)] rounded-[var(--radius-card)] overflow-hidden",children:[e.jsxs("button",{type:"button",onClick:()=>D(!I),className:"w-full flex items-center justify-between px-4 py-2.5 text-sm font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(n.BookOpen,{className:"h-4 w-4 text-[var(--color-accent-500)]"}),e.jsx("span",{children:s("assignments.guide.title")})]}),I?e.jsx(n.ChevronUp,{className:"h-4 w-4 text-[var(--text-muted)]"}):e.jsx(n.ChevronDown,{className:"h-4 w-4 text-[var(--text-muted)]"})]}),I&&e.jsx("div",{className:"px-4 pb-4 border-t border-[var(--item-color-border)]",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 pt-3",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-[var(--text-primary)] uppercase tracking-wider mb-2",children:s("assignments.guide.colorLegendTitle")}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-red-500/10 border border-red-500/20 text-red-600 dark:text-red-400",children:e.jsx(n.Ban,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.noneDesc")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-sky-500/20 border border-sky-500/30 text-sky-700 dark:text-sky-300",children:e.jsx(n.Eye,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.readOnlyDesc")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-amber-500/20 border border-amber-500/30 text-amber-700 dark:text-amber-300",children:e.jsx(n.Star,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.partialDesc")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-emerald-500/20 border border-emerald-500/30 text-emerald-700 dark:text-emerald-300",children:e.jsx(n.Check,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.completeDesc")})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-[var(--text-primary)] uppercase tracking-wider mb-2",children:s("assignments.guide.howToUseTitle")}),e.jsxs("ul",{className:"space-y-1.5 text-xs text-[var(--text-secondary)]",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.clickCell")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx(n.Lock,{className:"h-3 w-3 flex-shrink-0 mt-0.5 text-[var(--warning-dot)]"}),s("assignments.guide.systemRoles")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.inheritance")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.autoSave")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.filterButtons")]})]})]})]})})]}),e.jsx("div",{className:"bg-[var(--bg-card)] shadow-[var(--shadow-md)] rounded-[var(--radius-card)] border border-[var(--item-color-border)]",children:e.jsx(ve,{roles:R,resources:j,assignments:Z,canEditSystemRoles:q,onTogglePermission:se,getPermissionInheritance:w,rolesPerPage:M,rolePageIndex:f,modulesPerPage:b,modulePageIndex:i-1,collapsedApps:N,onToggleApp:z,statusFilters:m})}),e.jsx("div",{className:"py-3 px-4 bg-[var(--bg-card)] rounded-[var(--radius-card)] border border-[var(--item-color-border)]",children:e.jsxs("div",{className:"flex items-center gap-3 text-sm text-[var(--text-secondary)]",children:[e.jsxs("span",{children:[s("assignments.itemsPerPage"),":"]}),e.jsx("select",{value:b,onChange:a=>de(Number(a.target.value)),className:"px-2 py-1 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:fe.map(a=>e.jsx("option",{value:a,children:a},a))}),e.jsxs("span",{className:"text-[var(--text-muted)]",children:[(i-1)*b+1,"-",Math.min(i*b,G)," / ",G]}),U>1&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>h(a=>Math.max(1,a-1)),disabled:i===1,className:"p-1.5 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronLeft,{className:"h-4 w-4"})}),e.jsxs("span",{className:"text-sm min-w-[60px] text-center",children:[i," / ",U]}),e.jsx("button",{onClick:()=>h(a=>Math.min(U,a+1)),disabled:i>=U,className:"p-1.5 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronRight,{className:"h-4 w-4"})})]})]})}),A&&e.jsx("div",{className:"fixed inset-0 z-50 overflow-y-auto",children:e.jsxs("div",{className:"flex items-center justify-center min-h-screen px-4 pt-4 pb-20 text-center sm:p-0",children:[e.jsx("button",{type:"button",className:"fixed inset-0 bg-black/50 transition-opacity",onClick:()=>k(!1),"aria-label":"Close modal"}),e.jsxs("div",{className:"inline-block align-bottom bg-[var(--bg-card)] rounded-[var(--radius-modal)] px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full sm:p-6 border border-[var(--border-color)]",children:[e.jsxs("div",{className:"mb-4",children:[e.jsx("h3",{className:"text-lg font-medium text-[var(--text-primary)]",children:s("assignments.createFromTemplate")}),e.jsx("p",{className:"mt-1 text-sm text-[var(--text-secondary)]",children:s("assignments.templateDescription")})]}),$&&e.jsx("div",{className:"mb-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] p-3",children:e.jsxs("div",{className:"flex",children:[e.jsx(n.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("div",{className:"ml-3",children:e.jsx("p",{className:"text-sm text-[var(--error-text)]",children:$})})]})}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:Object.entries(ie).map(([a,x])=>{const d=x.icon;return e.jsx("button",{onClick:()=>xe(a),className:"relative p-4 rounded-[var(--radius-card)] border-2 text-left transition-all hover:shadow-lg hover:scale-105 border-[var(--border-color)] hover:border-[var(--color-accent-500)]",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(d,{className:"h-6 w-6 text-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"text-sm font-medium text-[var(--text-primary)]",children:s(x.nameKey)}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-secondary)]",children:s(x.descriptionKey)})]})]})},a)})}),e.jsx("div",{className:"mt-5 sm:mt-6",children:e.jsx("button",{type:"button",onClick:()=>{k(!1),S(null)},className:"w-full inline-flex justify-center rounded-[var(--radius-button)] border border-[var(--border-color)] shadow-sm px-4 py-2 bg-[var(--bg-secondary)] text-base font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] transition-colors",children:s("common.cancel")})})]})]})})]})}exports.AssignmentsPage=ye;
|
|
2
|
+
//# sourceMappingURL=AssignmentsPage-Cww2ifZF.js.map
|