@atlashub/smartstack 3.30.0 → 3.31.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-CVq3qZoe.js → AgentSkillsPage-CDMhqrhE.js} +2 -2
- package/dist/chunks/{AgentSkillsPage-CVq3qZoe.js.map → AgentSkillsPage-CDMhqrhE.js.map} +1 -1
- package/dist/chunks/{AgentSkillsPage-DJb49NMA.js → AgentSkillsPage-DcvOMm5k.js} +2 -2
- package/dist/chunks/{AgentSkillsPage-DJb49NMA.js.map → AgentSkillsPage-DcvOMm5k.js.map} +1 -1
- package/dist/chunks/{AgentWorkloadPage-D_nk3gKj.js → AgentWorkloadPage-DYBPNzjQ.js} +2 -2
- package/dist/chunks/{AgentWorkloadPage-D_nk3gKj.js.map → AgentWorkloadPage-DYBPNzjQ.js.map} +1 -1
- package/dist/chunks/{AgentWorkloadPage-oHEi-sFh.js → AgentWorkloadPage-YpJSDaWc.js} +2 -2
- package/dist/chunks/{AgentWorkloadPage-oHEi-sFh.js.map → AgentWorkloadPage-YpJSDaWc.js.map} +1 -1
- package/dist/chunks/{ApiCatalogDetailPage-Cr0q2HnB.js → ApiCatalogDetailPage-9r1axtCg.js} +3 -3
- package/dist/chunks/{ApiCatalogDetailPage-Cr0q2HnB.js.map → ApiCatalogDetailPage-9r1axtCg.js.map} +1 -1
- package/dist/chunks/{ApiCatalogDetailPage-DX8buBkV.js → ApiCatalogDetailPage-TjCQ8_A8.js} +2 -2
- package/dist/chunks/{ApiCatalogDetailPage-DX8buBkV.js.map → ApiCatalogDetailPage-TjCQ8_A8.js.map} +1 -1
- package/dist/chunks/{ApiCatalogPage-DqboIzZE.js → ApiCatalogPage-COxazTnz.js} +2 -2
- package/dist/chunks/{ApiCatalogPage-DqboIzZE.js.map → ApiCatalogPage-COxazTnz.js.map} +1 -1
- package/dist/chunks/{ApiCatalogPage-DN7sazvI.js → ApiCatalogPage-QRysH0pT.js} +2 -2
- package/dist/chunks/{ApiCatalogPage-DN7sazvI.js.map → ApiCatalogPage-QRysH0pT.js.map} +1 -1
- package/dist/chunks/{ApplicationDetailPage-CCNjr64K.js → ApplicationDetailPage-Dbx01Ikm.js} +4 -4
- package/dist/chunks/{ApplicationDetailPage-CCNjr64K.js.map → ApplicationDetailPage-Dbx01Ikm.js.map} +1 -1
- package/dist/chunks/{ApplicationDetailPage--9YwwS5A.js → ApplicationDetailPage-jSHy3MPz.js} +2 -2
- package/dist/chunks/{ApplicationDetailPage--9YwwS5A.js.map → ApplicationDetailPage-jSHy3MPz.js.map} +1 -1
- package/dist/chunks/{ApplicationsDashboardPage-Bs-Xgca4.js → ApplicationsDashboardPage-CclKc0wI.js} +3 -3
- package/dist/chunks/{ApplicationsDashboardPage-Bs-Xgca4.js.map → ApplicationsDashboardPage-CclKc0wI.js.map} +1 -1
- package/dist/chunks/{ApplicationsDashboardPage-BSsHN3Yj.js → ApplicationsDashboardPage-CxWmOc1x.js} +2 -2
- package/dist/chunks/{ApplicationsDashboardPage-BSsHN3Yj.js.map → ApplicationsDashboardPage-CxWmOc1x.js.map} +1 -1
- package/dist/chunks/{ApplicationsGridPage-s1WEzOXS.js → ApplicationsGridPage-BJXWXwyI.js} +2 -2
- package/dist/chunks/{ApplicationsGridPage-s1WEzOXS.js.map → ApplicationsGridPage-BJXWXwyI.js.map} +1 -1
- package/dist/chunks/{ApplicationsGridPage-DDysNWJ5.js → ApplicationsGridPage-D2l8cM3o.js} +2 -2
- package/dist/chunks/{ApplicationsGridPage-DDysNWJ5.js.map → ApplicationsGridPage-D2l8cM3o.js.map} +1 -1
- package/dist/chunks/{ApplicationsListPage-B3CSMiV0.js → ApplicationsListPage-CMosl3my.js} +2 -2
- package/dist/chunks/{ApplicationsListPage-B3CSMiV0.js.map → ApplicationsListPage-CMosl3my.js.map} +1 -1
- package/dist/chunks/{ApplicationsListPage-B6ZCecIl.js → ApplicationsListPage-Dc6NGQ61.js} +2 -2
- package/dist/chunks/{ApplicationsListPage-B6ZCecIl.js.map → ApplicationsListPage-Dc6NGQ61.js.map} +1 -1
- package/dist/chunks/{ApplicationsPage-BBaiBM--.js → ApplicationsPage-DH7tpMlF.js} +2 -2
- package/dist/chunks/{ApplicationsPage-BBaiBM--.js.map → ApplicationsPage-DH7tpMlF.js.map} +1 -1
- package/dist/chunks/{ApplicationsPage-ztPwoAGt.js → ApplicationsPage-DI-iMqoJ.js} +4 -4
- package/dist/chunks/{ApplicationsPage-ztPwoAGt.js.map → ApplicationsPage-DI-iMqoJ.js.map} +1 -1
- package/dist/chunks/{AssignmentRulesPage-DFSVFFXr.js → AssignmentRulesPage-B5UbujbZ.js} +2 -2
- package/dist/chunks/{AssignmentRulesPage-DFSVFFXr.js.map → AssignmentRulesPage-B5UbujbZ.js.map} +1 -1
- package/dist/chunks/{AssignmentRulesPage-CK4L4rBO.js → AssignmentRulesPage-E79QBSLb.js} +2 -2
- package/dist/chunks/{AssignmentRulesPage-CK4L4rBO.js.map → AssignmentRulesPage-E79QBSLb.js.map} +1 -1
- package/dist/chunks/{AssignmentsPage-JCLpyg94.js → AssignmentsPage-CDFaL1gT.js} +2 -2
- package/dist/chunks/{AssignmentsPage-JCLpyg94.js.map → AssignmentsPage-CDFaL1gT.js.map} +1 -1
- package/dist/chunks/{AssignmentsPage-Bp7oQD7Q.js → AssignmentsPage-CPeKJjyK.js} +2 -2
- package/dist/chunks/{AssignmentsPage-Bp7oQD7Q.js.map → AssignmentsPage-CPeKJjyK.js.map} +1 -1
- package/dist/chunks/{AuthCallbackPage-Bl9xlJ3h.js → AuthCallbackPage-BZ3Ocos5.js} +2 -2
- package/dist/chunks/{AuthCallbackPage-Bl9xlJ3h.js.map → AuthCallbackPage-BZ3Ocos5.js.map} +1 -1
- package/dist/chunks/{AuthCallbackPage-CzMHz4jy.js → AuthCallbackPage-Bml48QpH.js} +2 -2
- package/dist/chunks/{AuthCallbackPage-CzMHz4jy.js.map → AuthCallbackPage-Bml48QpH.js.map} +1 -1
- package/dist/chunks/{ConfirmEmailPage-M7mJgXvn.js → ConfirmEmailPage-DP1XPaKK.js} +2 -2
- package/dist/chunks/{ConfirmEmailPage-M7mJgXvn.js.map → ConfirmEmailPage-DP1XPaKK.js.map} +1 -1
- package/dist/chunks/{ConfirmEmailPage-D_8T1vqV.js → ConfirmEmailPage-DyzslZ06.js} +2 -2
- package/dist/chunks/{ConfirmEmailPage-D_8T1vqV.js.map → ConfirmEmailPage-DyzslZ06.js.map} +1 -1
- package/dist/chunks/{CreateSupportTicketPage-BNEGavlu.js → CreateSupportTicketPage-Bz2KrMik.js} +2 -2
- package/dist/chunks/{CreateSupportTicketPage-BNEGavlu.js.map → CreateSupportTicketPage-Bz2KrMik.js.map} +1 -1
- package/dist/chunks/{CreateSupportTicketPage-C2X2mfds.js → CreateSupportTicketPage-hKjKM0Bh.js} +2 -2
- package/dist/chunks/{CreateSupportTicketPage-C2X2mfds.js.map → CreateSupportTicketPage-hKjKM0Bh.js.map} +1 -1
- package/dist/chunks/{DashboardPage-4oy2YqvT.js → DashboardPage-B4nAd8Tj.js} +2 -2
- package/dist/chunks/{DashboardPage-4oy2YqvT.js.map → DashboardPage-B4nAd8Tj.js.map} +1 -1
- package/dist/chunks/{DashboardPage-D5MRMxEV.js → DashboardPage-C9qgPBS-.js} +3 -3
- package/dist/chunks/{DashboardPage-D5MRMxEV.js.map → DashboardPage-C9qgPBS-.js.map} +1 -1
- package/dist/chunks/{DashboardPage-CO-8B8EI.js → DashboardPage-CjbNGMo1.js} +3 -3
- package/dist/chunks/{DashboardPage-CO-8B8EI.js.map → DashboardPage-CjbNGMo1.js.map} +1 -1
- package/dist/chunks/{DashboardPage-CPArUG-S.js → DashboardPage-rN7IFlTR.js} +2 -2
- package/dist/chunks/{DashboardPage-CPArUG-S.js.map → DashboardPage-rN7IFlTR.js.map} +1 -1
- package/dist/chunks/{EscalationConfigPage-DnjLFXnL.js → EscalationConfigPage-CGv2L62M.js} +2 -2
- package/dist/chunks/{EscalationConfigPage-DnjLFXnL.js.map → EscalationConfigPage-CGv2L62M.js.map} +1 -1
- package/dist/chunks/{EscalationConfigPage-CwdnfJbJ.js → EscalationConfigPage-DpYDmsgw.js} +2 -2
- package/dist/chunks/{EscalationConfigPage-CwdnfJbJ.js.map → EscalationConfigPage-DpYDmsgw.js.map} +1 -1
- package/dist/chunks/{ForceChangePasswordPage-ZEIfyqwE.js → ForceChangePasswordPage-CLI_fpF4.js} +2 -2
- package/dist/chunks/{ForceChangePasswordPage-ZEIfyqwE.js.map → ForceChangePasswordPage-CLI_fpF4.js.map} +1 -1
- package/dist/chunks/{ForceChangePasswordPage-sh-3h_H9.js → ForceChangePasswordPage-Db6sOrZN.js} +2 -2
- package/dist/chunks/{ForceChangePasswordPage-sh-3h_H9.js.map → ForceChangePasswordPage-Db6sOrZN.js.map} +1 -1
- package/dist/chunks/{ForgotPasswordPage-B4M6-xeM.js → ForgotPasswordPage-BhMz2B6A.js} +2 -2
- package/dist/chunks/{ForgotPasswordPage-B4M6-xeM.js.map → ForgotPasswordPage-BhMz2B6A.js.map} +1 -1
- package/dist/chunks/{ForgotPasswordPage-MIu-U7p0.js → ForgotPasswordPage-D06arMXO.js} +2 -2
- package/dist/chunks/{ForgotPasswordPage-MIu-U7p0.js.map → ForgotPasswordPage-D06arMXO.js.map} +1 -1
- package/dist/chunks/{GroupDetailPage-4XK3Bs_r.js → GroupDetailPage-BCM8KBCd.js} +5 -5
- package/dist/chunks/{GroupDetailPage-4XK3Bs_r.js.map → GroupDetailPage-BCM8KBCd.js.map} +1 -1
- package/dist/chunks/{GroupDetailPage-C-kvtd2T.js → GroupDetailPage-CGMV3bWt.js} +2 -2
- package/dist/chunks/{GroupDetailPage-C-kvtd2T.js.map → GroupDetailPage-CGMV3bWt.js.map} +1 -1
- package/dist/chunks/{MyAccessRequestsPage-CP41FzHi.js → MyAccessRequestsPage-BBrwEomx.js} +2 -2
- package/dist/chunks/{MyAccessRequestsPage-CP41FzHi.js.map → MyAccessRequestsPage-BBrwEomx.js.map} +1 -1
- package/dist/chunks/{MyAccessRequestsPage-DzrXTrVi.js → MyAccessRequestsPage-CrlWe3gd.js} +2 -2
- package/dist/chunks/{MyAccessRequestsPage-DzrXTrVi.js.map → MyAccessRequestsPage-CrlWe3gd.js.map} +1 -1
- package/dist/chunks/{MyTenantsPage-V_SwYio2.js → MyTenantsPage-BOV34_rJ.js} +3 -3
- package/dist/chunks/{MyTenantsPage-V_SwYio2.js.map → MyTenantsPage-BOV34_rJ.js.map} +1 -1
- package/dist/chunks/{MyTenantsPage-CZRkMbh8.js → MyTenantsPage-CK4-klmd.js} +2 -2
- package/dist/chunks/{MyTenantsPage-CZRkMbh8.js.map → MyTenantsPage-CK4-klmd.js.map} +1 -1
- package/dist/chunks/{MyTicketsPage-DnvAIeyr.js → MyTicketsPage-CFZ1G4dG.js} +2 -2
- package/dist/chunks/{MyTicketsPage-DnvAIeyr.js.map → MyTicketsPage-CFZ1G4dG.js.map} +1 -1
- package/dist/chunks/{MyTicketsPage-DOUhaLal.js → MyTicketsPage-DuhpwhZx.js} +2 -2
- package/dist/chunks/{MyTicketsPage-DOUhaLal.js.map → MyTicketsPage-DuhpwhZx.js.map} +1 -1
- package/dist/chunks/{NavigationAppsPage-DfTa4jCG.js → NavigationAppsPage-BnNQRfBP.js} +2 -2
- package/dist/chunks/{NavigationAppsPage-DfTa4jCG.js.map → NavigationAppsPage-BnNQRfBP.js.map} +1 -1
- package/dist/chunks/{NavigationAppsPage-DXvpLsbt.js → NavigationAppsPage-DdJxEoTZ.js} +2 -2
- package/dist/chunks/{NavigationAppsPage-DXvpLsbt.js.map → NavigationAppsPage-DdJxEoTZ.js.map} +1 -1
- package/dist/chunks/{NotificationsPage-I1yCk7tk.js → NotificationsPage-BllOlagk.js} +2 -2
- package/dist/chunks/{NotificationsPage-I1yCk7tk.js.map → NotificationsPage-BllOlagk.js.map} +1 -1
- package/dist/chunks/{NotificationsPage-D76MdAs-.js → NotificationsPage-D1T_ozHl.js} +2 -2
- package/dist/chunks/{NotificationsPage-D76MdAs-.js.map → NotificationsPage-D1T_ozHl.js.map} +1 -1
- package/dist/chunks/{OnboardingWizardPage-BRUzcl1A.js → OnboardingWizardPage-CioLaCYz.js} +2 -2
- package/dist/chunks/{OnboardingWizardPage-BRUzcl1A.js.map → OnboardingWizardPage-CioLaCYz.js.map} +1 -1
- package/dist/chunks/{OnboardingWizardPage-DtWUPCh3.js → OnboardingWizardPage-CrAQt7qL.js} +2 -2
- package/dist/chunks/{OnboardingWizardPage-DtWUPCh3.js.map → OnboardingWizardPage-CrAQt7qL.js.map} +1 -1
- package/dist/chunks/{PermissionDetailPage-CUNKbl7t.js → PermissionDetailPage-BIG78-1-.js} +2 -2
- package/dist/chunks/{PermissionDetailPage-CUNKbl7t.js.map → PermissionDetailPage-BIG78-1-.js.map} +1 -1
- package/dist/chunks/{PermissionDetailPage-DJJGbXoX.js → PermissionDetailPage-CvPqugYu.js} +2 -2
- package/dist/chunks/{PermissionDetailPage-DJJGbXoX.js.map → PermissionDetailPage-CvPqugYu.js.map} +1 -1
- package/dist/chunks/{PermissionsPage-B8wmawPV.js → PermissionsPage-CDSuc8vw.js} +2 -2
- package/dist/chunks/{PermissionsPage-B8wmawPV.js.map → PermissionsPage-CDSuc8vw.js.map} +1 -1
- package/dist/chunks/{PermissionsPage-Dbjcctuh.js → PermissionsPage-XaOrGrPZ.js} +2 -2
- package/dist/chunks/{PermissionsPage-Dbjcctuh.js.map → PermissionsPage-XaOrGrPZ.js.map} +1 -1
- package/dist/chunks/{PortalDashboardPage-BeNfBZmb.js → PortalDashboardPage-BsWVXkMe.js} +2 -2
- package/dist/chunks/{PortalDashboardPage-BeNfBZmb.js.map → PortalDashboardPage-BsWVXkMe.js.map} +1 -1
- package/dist/chunks/{PortalDashboardPage-zii0ll57.js → PortalDashboardPage-oSD7oQhJ.js} +2 -2
- package/dist/chunks/{PortalDashboardPage-zii0ll57.js.map → PortalDashboardPage-oSD7oQhJ.js.map} +1 -1
- package/dist/chunks/{PreferencesPage-BCpuIGzv.js → PreferencesPage-DD0_XWdT.js} +2 -2
- package/dist/chunks/{PreferencesPage-BCpuIGzv.js.map → PreferencesPage-DD0_XWdT.js.map} +1 -1
- package/dist/chunks/{PreferencesPage-BmvrBaAD.js → PreferencesPage-ca2BOdoH.js} +2 -2
- package/dist/chunks/{PreferencesPage-BmvrBaAD.js.map → PreferencesPage-ca2BOdoH.js.map} +1 -1
- package/dist/chunks/{ProfilePage-mf5wI0-n.js → ProfilePage-Bex_JN5N.js} +2 -2
- package/dist/chunks/{ProfilePage-mf5wI0-n.js.map → ProfilePage-Bex_JN5N.js.map} +1 -1
- package/dist/chunks/{ProfilePage-eowQd59_.js → ProfilePage-C8tUIOnb.js} +2 -2
- package/dist/chunks/{ProfilePage-eowQd59_.js.map → ProfilePage-C8tUIOnb.js.map} +1 -1
- package/dist/chunks/{ReferencesManagementPage-CLsaUNqA.js → ReferencesManagementPage-B-FXS2ln.js} +2 -2
- package/dist/chunks/{ReferencesManagementPage-CLsaUNqA.js.map → ReferencesManagementPage-B-FXS2ln.js.map} +1 -1
- package/dist/chunks/{ReferencesManagementPage-8UPgkVE8.js → ReferencesManagementPage-C8KZprkI.js} +3 -3
- package/dist/chunks/{ReferencesManagementPage-8UPgkVE8.js.map → ReferencesManagementPage-C8KZprkI.js.map} +1 -1
- package/dist/chunks/{RegisterPage-CNyHSbqs.js → RegisterPage-BYt__zKJ.js} +2 -2
- package/dist/chunks/{RegisterPage-CNyHSbqs.js.map → RegisterPage-BYt__zKJ.js.map} +1 -1
- package/dist/chunks/{RegisterPage-57X-ILDb.js → RegisterPage-MWcVu-LY.js} +2 -2
- package/dist/chunks/{RegisterPage-57X-ILDb.js.map → RegisterPage-MWcVu-LY.js.map} +1 -1
- package/dist/chunks/{ResetPasswordPage-CyV8l-Zo.js → ResetPasswordPage-DaJiMj5Z.js} +2 -2
- package/dist/chunks/{ResetPasswordPage-CyV8l-Zo.js.map → ResetPasswordPage-DaJiMj5Z.js.map} +1 -1
- package/dist/chunks/{ResetPasswordPage-JW8-mh_k.js → ResetPasswordPage-rCLUIj_T.js} +2 -2
- package/dist/chunks/{ResetPasswordPage-JW8-mh_k.js.map → ResetPasswordPage-rCLUIj_T.js.map} +1 -1
- package/dist/chunks/{ResolutionModal-CjwE73NX.js → ResolutionModal-DeuPnLWg.js} +2 -2
- package/dist/chunks/{ResolutionModal-CjwE73NX.js.map → ResolutionModal-DeuPnLWg.js.map} +1 -1
- package/dist/chunks/{ResolutionModal-wddG59kg.js → ResolutionModal-j7Rp6apG.js} +2 -2
- package/dist/chunks/{ResolutionModal-wddG59kg.js.map → ResolutionModal-j7Rp6apG.js.map} +1 -1
- package/dist/chunks/{RoleDetailPage-CrioVHFI.js → RoleDetailPage-CLtZWX17.js} +3 -3
- package/dist/chunks/{RoleDetailPage-CrioVHFI.js.map → RoleDetailPage-CLtZWX17.js.map} +1 -1
- package/dist/chunks/{RoleDetailPage-TUOGR1ow.js → RoleDetailPage-TGyGmLMM.js} +2 -2
- package/dist/chunks/{RoleDetailPage-TUOGR1ow.js.map → RoleDetailPage-TGyGmLMM.js.map} +1 -1
- package/dist/chunks/{RolesPage-sJBWaNff.js → RolesPage-C0c5G9e7.js} +2 -2
- package/dist/chunks/{RolesPage-sJBWaNff.js.map → RolesPage-C0c5G9e7.js.map} +1 -1
- package/dist/chunks/{RolesPage-CAcols3D.js → RolesPage-Dm03fBBf.js} +2 -2
- package/dist/chunks/{RolesPage-CAcols3D.js.map → RolesPage-Dm03fBBf.js.map} +1 -1
- package/dist/chunks/{SlaConfigPage-BPGRloOS.js → SlaConfigPage-B4WDzEKi.js} +2 -2
- package/dist/chunks/{SlaConfigPage-BPGRloOS.js.map → SlaConfigPage-B4WDzEKi.js.map} +1 -1
- package/dist/chunks/{SlaConfigPage-D5TRn7Ir.js → SlaConfigPage-Cwo9NwxH.js} +2 -2
- package/dist/chunks/{SlaConfigPage-D5TRn7Ir.js.map → SlaConfigPage-Cwo9NwxH.js.map} +1 -1
- package/dist/chunks/{SupportPermissionsPage-UXmYLrIq.js → SupportPermissionsPage-CL12dFy-.js} +2 -2
- package/dist/chunks/{SupportPermissionsPage-UXmYLrIq.js.map → SupportPermissionsPage-CL12dFy-.js.map} +1 -1
- package/dist/chunks/{SupportPermissionsPage-Dc2bWTzG.js → SupportPermissionsPage-CneIhl30.js} +2 -2
- package/dist/chunks/{SupportPermissionsPage-Dc2bWTzG.js.map → SupportPermissionsPage-CneIhl30.js.map} +1 -1
- package/dist/chunks/{TemplatesPage-nTY85sNA.js → TemplatesPage-DStKmwHT.js} +2 -2
- package/dist/chunks/{TemplatesPage-nTY85sNA.js.map → TemplatesPage-DStKmwHT.js.map} +1 -1
- package/dist/chunks/{TemplatesPage-dmPlqqiD.js → TemplatesPage-X4Rrhs9p.js} +2 -2
- package/dist/chunks/{TemplatesPage-dmPlqqiD.js.map → TemplatesPage-X4Rrhs9p.js.map} +1 -1
- package/dist/chunks/{TenantCard-BhT-31ls.js → TenantCard-BUBYWtvR.js} +2 -2
- package/dist/chunks/{TenantCard-BhT-31ls.js.map → TenantCard-BUBYWtvR.js.map} +1 -1
- package/dist/chunks/{TenantCard-BUXfstRZ.js → TenantCard-CAgiB-NG.js} +2 -2
- package/dist/chunks/{TenantCard-BUXfstRZ.js.map → TenantCard-CAgiB-NG.js.map} +1 -1
- package/dist/chunks/{TenantScopeSelector-3_mzBLNI.js → TenantScopeSelector-B9vtpIZx.js} +2 -2
- package/dist/chunks/{TenantScopeSelector-3_mzBLNI.js.map → TenantScopeSelector-B9vtpIZx.js.map} +1 -1
- package/dist/chunks/{TenantScopeSelector-B-SRDR2R.js → TenantScopeSelector-BAoah-mL.js} +2 -2
- package/dist/chunks/{TenantScopeSelector-B-SRDR2R.js.map → TenantScopeSelector-BAoah-mL.js.map} +1 -1
- package/dist/chunks/{TicketDetailPage-xN3wPnFL.js → TicketDetailPage-BFcP4X8s.js} +2 -2
- package/dist/chunks/{TicketDetailPage-xN3wPnFL.js.map → TicketDetailPage-BFcP4X8s.js.map} +1 -1
- package/dist/chunks/{TicketDetailPage-B4cR3rOC.js → TicketDetailPage-D_Npnt4A.js} +2 -2
- package/dist/chunks/{TicketDetailPage-B4cR3rOC.js.map → TicketDetailPage-D_Npnt4A.js.map} +1 -1
- package/dist/chunks/{TicketsPage-Dwi2xpMI.js → TicketsPage-DBP9kalU.js} +2 -2
- package/dist/chunks/{TicketsPage-Dwi2xpMI.js.map → TicketsPage-DBP9kalU.js.map} +1 -1
- package/dist/chunks/{TicketsPage-CkHgXSxU.js → TicketsPage-p21DLhUb.js} +2 -2
- package/dist/chunks/{TicketsPage-CkHgXSxU.js.map → TicketsPage-p21DLhUb.js.map} +1 -1
- package/dist/chunks/{UserCreateTicketPage-D2a3EOey.js → UserCreateTicketPage-DOwShnG8.js} +2 -2
- package/dist/chunks/{UserCreateTicketPage-D2a3EOey.js.map → UserCreateTicketPage-DOwShnG8.js.map} +1 -1
- package/dist/chunks/{UserCreateTicketPage-bcbSLglE.js → UserCreateTicketPage-lvlvp2u6.js} +2 -2
- package/dist/chunks/{UserCreateTicketPage-bcbSLglE.js.map → UserCreateTicketPage-lvlvp2u6.js.map} +1 -1
- package/dist/chunks/{UserDashboardPage-ZMsx8LWw.js → UserDashboardPage-C_tm7Pld.js} +2 -2
- package/dist/chunks/{UserDashboardPage-ZMsx8LWw.js.map → UserDashboardPage-C_tm7Pld.js.map} +1 -1
- package/dist/chunks/{UserDashboardPage-DwnDRNoW.js → UserDashboardPage-Dp6q6FEW.js} +2 -2
- package/dist/chunks/{UserDashboardPage-DwnDRNoW.js.map → UserDashboardPage-Dp6q6FEW.js.map} +1 -1
- package/dist/chunks/{UserDetailPage-CZyV-zsg.js → UserDetailPage-6grZ6gmV.js} +5 -5
- package/dist/chunks/{UserDetailPage-CZyV-zsg.js.map → UserDetailPage-6grZ6gmV.js.map} +1 -1
- package/dist/chunks/{UserDetailPage-BRFowOFL.js → UserDetailPage-DXLxO7LF.js} +2 -2
- package/dist/chunks/{UserDetailPage-BRFowOFL.js.map → UserDetailPage-DXLxO7LF.js.map} +1 -1
- package/dist/chunks/{UserTicketDetailPage-BstGk_BP.js → UserTicketDetailPage-Ch9IfCPo.js} +2 -2
- package/dist/chunks/{UserTicketDetailPage-BstGk_BP.js.map → UserTicketDetailPage-Ch9IfCPo.js.map} +1 -1
- package/dist/chunks/{UserTicketDetailPage-DzB_pELt.js → UserTicketDetailPage-a4II5VEE.js} +2 -2
- package/dist/chunks/{UserTicketDetailPage-DzB_pELt.js.map → UserTicketDetailPage-a4II5VEE.js.map} +1 -1
- package/dist/chunks/{UsersGroupsPage-BygTv_kK.js → UsersGroupsPage-B7Er0V4l.js} +3 -3
- package/dist/chunks/{UsersGroupsPage-BygTv_kK.js.map → UsersGroupsPage-B7Er0V4l.js.map} +1 -1
- package/dist/chunks/{UsersGroupsPage-DTmhzttW.js → UsersGroupsPage-BeAv4QfV.js} +2 -2
- package/dist/chunks/{UsersGroupsPage-DTmhzttW.js.map → UsersGroupsPage-BeAv4QfV.js.map} +1 -1
- package/dist/chunks/{UsersPage-DcwLyMAX.js → UsersPage-0M1FLqOe.js} +2 -2
- package/dist/chunks/{UsersPage-DcwLyMAX.js.map → UsersPage-0M1FLqOe.js.map} +1 -1
- package/dist/chunks/{UsersPage-TIqSHgHj.js → UsersPage-ZR9r9vvf.js} +2 -2
- package/dist/chunks/{UsersPage-TIqSHgHj.js.map → UsersPage-ZR9r9vvf.js.map} +1 -1
- package/dist/chunks/{accessRequestsApi-3FjMFbpa.js → accessRequestsApi-BJH8EE1K.js} +2 -2
- package/dist/chunks/{accessRequestsApi-3FjMFbpa.js.map → accessRequestsApi-BJH8EE1K.js.map} +1 -1
- package/dist/chunks/{accessRequestsApi-B6dsJzvH.js → accessRequestsApi-CBpF5d54.js} +2 -2
- package/dist/chunks/{accessRequestsApi-B6dsJzvH.js.map → accessRequestsApi-CBpF5d54.js.map} +1 -1
- package/dist/chunks/{aiApi-9G4wG_mT.js → aiApi-CkkWAvNB.js} +2 -2
- package/dist/chunks/{aiApi-9G4wG_mT.js.map → aiApi-CkkWAvNB.js.map} +1 -1
- package/dist/chunks/{aiApi-DXOdsoxr.js → aiApi-Dl7a2lWz.js} +2 -2
- package/dist/chunks/{aiApi-DXOdsoxr.js.map → aiApi-Dl7a2lWz.js.map} +1 -1
- package/dist/chunks/{applicationAnalyticsApi-DhOd6idI.js → applicationAnalyticsApi-BwcSE_H1.js} +2 -2
- package/dist/chunks/{applicationAnalyticsApi-DhOd6idI.js.map → applicationAnalyticsApi-BwcSE_H1.js.map} +1 -1
- package/dist/chunks/{applicationAnalyticsApi-D0DEp9Y-.js → applicationAnalyticsApi-DKMmDvWk.js} +2 -2
- package/dist/chunks/{applicationAnalyticsApi-D0DEp9Y-.js.map → applicationAnalyticsApi-DKMmDvWk.js.map} +1 -1
- package/dist/chunks/{groupsApi-Db8G2lLs.js → groupsApi-BzDV3_Jc.js} +2 -2
- package/dist/chunks/{groupsApi-Db8G2lLs.js.map → groupsApi-BzDV3_Jc.js.map} +1 -1
- package/dist/chunks/{groupsApi-lbxNsHFv.js → groupsApi-CQ4vFMdP.js} +2 -2
- package/dist/chunks/{groupsApi-lbxNsHFv.js.map → groupsApi-CQ4vFMdP.js.map} +1 -1
- package/dist/chunks/{index-DEtq-xUL.js → index-BBmMbSZV.js} +8 -8
- package/dist/chunks/{index-DEtq-xUL.js.map → index-BBmMbSZV.js.map} +1 -1
- package/dist/chunks/{index-D0HS542b.js → index-BLlESTfA.js} +2 -2
- package/dist/chunks/{index-D0HS542b.js.map → index-BLlESTfA.js.map} +1 -1
- package/dist/chunks/{index-DUS-tunb.js → index-BPMjxWVx.js} +2 -2
- package/dist/chunks/{index-DUS-tunb.js.map → index-BPMjxWVx.js.map} +1 -1
- package/dist/chunks/{index-TiWOcC0g.js → index-CEbwdURd.js} +2 -2
- package/dist/chunks/{index-TiWOcC0g.js.map → index-CEbwdURd.js.map} +1 -1
- package/dist/chunks/{index-DF93KQFR.js → index-CUZygY5Q.js} +2 -2
- package/dist/chunks/{index-DF93KQFR.js.map → index-CUZygY5Q.js.map} +1 -1
- package/dist/chunks/{index-BI2dc1FS.js → index-Ci1SqFiY.js} +2 -2
- package/dist/chunks/{index-BI2dc1FS.js.map → index-Ci1SqFiY.js.map} +1 -1
- package/dist/chunks/{index-CTGSmYvs.js → index-Cib93xtp.js} +2 -2
- package/dist/chunks/{index-CTGSmYvs.js.map → index-Cib93xtp.js.map} +1 -1
- package/dist/chunks/{index-DqbVFB1H.js → index-CoHIgn5H.js} +2 -2
- package/dist/chunks/{index-DqbVFB1H.js.map → index-CoHIgn5H.js.map} +1 -1
- package/dist/chunks/{index-CN2WRyg1.js → index-CpY95_ro.js} +294 -292
- package/dist/chunks/{index-CN2WRyg1.js.map → index-CpY95_ro.js.map} +1 -1
- package/dist/chunks/{index-DjC1u2hI.js → index-D-2xSu5W.js} +3 -3
- package/dist/chunks/{index-DjC1u2hI.js.map → index-D-2xSu5W.js.map} +1 -1
- package/dist/chunks/{index-Bn8HzILk.js → index-D18t9DhC.js} +4 -4
- package/dist/chunks/{index-Bn8HzILk.js.map → index-D18t9DhC.js.map} +1 -1
- package/dist/chunks/{index-cAikSVW0.js → index-DK5czlkn.js} +9 -9
- package/dist/chunks/{index-cAikSVW0.js.map → index-DK5czlkn.js.map} +1 -1
- package/dist/chunks/{index-DLekpNSE.js → index-DQd324n7.js} +2 -2
- package/dist/chunks/{index-DLekpNSE.js.map → index-DQd324n7.js.map} +1 -1
- package/dist/chunks/{index-CgtbaFf5.js → index-Dbq-x5H9.js} +2 -2
- package/dist/chunks/{index-CgtbaFf5.js.map → index-Dbq-x5H9.js.map} +1 -1
- package/dist/chunks/{index-xhRXN1Jq.js → index-Det9dEaQ.js} +2 -2
- package/dist/chunks/{index-xhRXN1Jq.js.map → index-Det9dEaQ.js.map} +1 -1
- package/dist/chunks/{index-HsAOBno4.js → index-bgT9XOKZ.js} +2 -2
- package/dist/chunks/{index-HsAOBno4.js.map → index-bgT9XOKZ.js.map} +1 -1
- package/dist/chunks/{index-CUICSveU.js → index-h7ZrwrQg.js} +2 -2
- package/dist/chunks/{index-CUICSveU.js.map → index-h7ZrwrQg.js.map} +1 -1
- package/dist/chunks/{index-DwqLhQ8S.js → index-k4USDz2P.js} +2 -2
- package/dist/chunks/{index-DwqLhQ8S.js.map → index-k4USDz2P.js.map} +1 -1
- package/dist/chunks/{tenantIconMap-CHeS7oLt.js → tenantIconMap-7ihIWxAh.js} +2 -2
- package/dist/chunks/{tenantIconMap-CHeS7oLt.js.map → tenantIconMap-7ihIWxAh.js.map} +1 -1
- package/dist/chunks/{tenantIconMap-__FKj6CN.js → tenantIconMap-Dk6K-UTE.js} +2 -2
- package/dist/chunks/{tenantIconMap-__FKj6CN.js.map → tenantIconMap-Dk6K-UTE.js.map} +1 -1
- package/dist/chunks/{ticketingApi-DF4RwD_6.js → ticketingApi-BCMKkzlv.js} +2 -2
- package/dist/chunks/{ticketingApi-DF4RwD_6.js.map → ticketingApi-BCMKkzlv.js.map} +1 -1
- package/dist/chunks/{ticketingApi-Cj239hYB.js → ticketingApi-Dwn7pl5z.js} +2 -2
- package/dist/chunks/{ticketingApi-Cj239hYB.js.map → ticketingApi-Dwn7pl5z.js.map} +1 -1
- package/dist/chunks/{useAccessRequests-CFam8zFR.js → useAccessRequests-Du7CvowE.js} +3 -3
- package/dist/chunks/{useAccessRequests-CFam8zFR.js.map → useAccessRequests-Du7CvowE.js.map} +1 -1
- package/dist/chunks/{useAccessRequests-CViOUwyF.js → useAccessRequests-gJ7yhWyi.js} +2 -2
- package/dist/chunks/{useAccessRequests-CViOUwyF.js.map → useAccessRequests-gJ7yhWyi.js.map} +1 -1
- package/dist/chunks/{useUserAccessRequests-CslSQeBJ.js → useUserAccessRequests-5wWea2Jg.js} +2 -2
- package/dist/chunks/{useUserAccessRequests-CslSQeBJ.js.map → useUserAccessRequests-5wWea2Jg.js.map} +1 -1
- package/dist/chunks/{useUserAccessRequests-B-Cs6NX1.js → useUserAccessRequests-Bk_v8egy.js} +2 -2
- package/dist/chunks/{useUserAccessRequests-B-Cs6NX1.js.map → useUserAccessRequests-Bk_v8egy.js.map} +1 -1
- package/dist/components/routing/ProtectedRoute.d.ts.map +1 -1
- package/dist/smartstack.cjs +1 -1
- package/dist/smartstack.js +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("react"),fe=require("react-router-dom"),ke=require("react-i18next"),v=require("./index-cAikSVW0.js"),a=require("lucide-react"),Ue=require("./groupsApi-lbxNsHFv.js"),ee=require("./PermissionPopover-CtYTz7MK.js"),Ge={"*":e.jsx(a.Shield,{className:"h-3 w-3"}),read:e.jsx(a.Eye,{className:"h-3 w-3"}),create:e.jsx(a.Plus,{className:"h-3 w-3"}),update:e.jsx(a.Edit,{className:"h-3 w-3"}),delete:e.jsx(a.Trash2,{className:"h-3 w-3"}),assign:e.jsx(a.UserPlus,{className:"h-3 w-3"}),execute:e.jsx(a.Play,{className:"h-3 w-3"})},Me={"*":"bg-[var(--accent-bg)] text-[var(--accent-text)] border-[var(--accent-border)]",read:"bg-[var(--info-bg)] text-[var(--info-text)] border-[var(--info-border)]",create:"bg-[var(--success-bg)] text-[var(--success-text)] border-[var(--success-border)]",update:"bg-[var(--warning-bg)] text-[var(--warning-text)] border-[var(--warning-border)]",delete:"bg-[var(--error-bg)] text-[var(--error-text)] border-[var(--error-border)]",assign:"bg-[var(--accent-bg)] text-[var(--accent-text)] border-[var(--accent-border)]",execute:"bg-[var(--warning-bg)] text-[var(--warning-text)] border-[var(--warning-border)]"};function Ie(s,l,p){return s.filter(c=>l==="all"||c.application===l).map(c=>({...c,modules:c.modules.filter(S=>p==="all"||S.module.moduleLabel===p)})).filter(c=>c.modules.length>0)}function Oe(s,l,p){return s.map(c=>({...c,modules:c.modules.filter(S=>{const{status:R}=p(S);return l.has(R)})})).filter(c=>c.modules.length>0)}function ze({section:s,resources:l,moduleIndex:p,sectionIndex:c,collapsedSections:S,renderResourceRow:R}){const G=l.length>0,M=S.has(s.id);return e.jsxs(n.Fragment,{children:[R(s,p+c+1,"section",G,M),G&&!M&&l.map((W,m)=>R(W,p+c+m+2,"resource",!1,!1))]},s.id)}function Be({roleId:s}){const{t:l}=ke.useTranslation("admin"),{user:p}=v.useAuth(),{collapsedApps:c,toggleApp:S}=v.useCollapsibleState(),[R,G]=n.useState(new Set),[M,W]=n.useState(new Set),[m,ie]=n.useState(new Set),[re,b]=n.useState(null),[T,y]=n.useState("all"),[h,D]=n.useState("all"),se=n.useMemo(()=>p?v.hasFullAccess(p.permissions):!1,[p]),{loading:je,error:ce,roles:N,filteredResources:q,hasChanges:H,saving:k,saveSuccess:_,saveError:X,togglePermission:g,saveChanges:w,resetChanges:K,getPermissionInheritance:P}=v.usePermissionMatrix({canEditSystemRoles:se}),x=n.useMemo(()=>N.find(t=>t.id===s),[N,s]),f=n.useMemo(()=>!(!x||x.isSystem&&!se),[x,se]),$=t=>{ie(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},V=t=>{G(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},de=t=>{W(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},I=n.useMemo(()=>{const t=[],d=[];return q.forEach(o=>{if(o.level==="module"){const u=o.applicationLabel;t.find(C=>C.app===u)||t.push({app:o.applicationLabel,label:o.applicationLabel}),d.push({app:o.applicationLabel,module:o.moduleLabel,label:o.moduleLabel})}}),{applications:t.sort((o,u)=>o.label.localeCompare(u.label)),modules:d.sort((o,u)=>o.label.localeCompare(u.label))}},[q]),ye=n.useCallback(t=>{!x||!f||g(x.id,t)},[x,f,g]),Y=n.useCallback(t=>{if(!x)return!1;const d=P(x.id,t);return d.isDirect||d.isInherited},[x,P]),me=n.useCallback(t=>ee.calculateModuleWithSectionsStatus(t.module,t.sections,Y),[Y]),xe=n.useCallback(t=>ee.calculatePermissionStatus(t,Y),[Y]),J=n.useCallback(t=>x?t.permissions.filter(d=>{const o=P(x.id,d.id);return o.isDirect||o.isInherited}).map(d=>d.action):[],[x,P]),te=n.useCallback(t=>Ie(t,T,h),[T,h]),F=n.useCallback(t=>m.size===0?t:Oe(t,m,me),[m,me]),O=n.useMemo(()=>{let t=ee.groupByApplicationWithSections(q);return t=te(t),t=F(t),t},[q,te,F]),ae=n.useMemo(()=>O.reduce((t,d)=>t+d.modules.length,0),[O]),ue=n.useCallback((t,d)=>{d==="module"?V(t):d==="section"&&de(t)},[V,de]),ve=t=>{b(re===t?null:t)};if(je)return e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsxs("div",{className:"text-center",children:[e.jsx(a.Loader2,{className:"h-8 w-8 animate-spin text-[var(--color-accent-500)] mx-auto mb-4"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:l("userPermissions.loading")})]})});if(ce)return e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("p",{className:"text-[var(--error-text)]",children:ce})]})});if(!x)return e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:l("roleDetail.notFound")});const pe=t=>t==="resource"?e.jsx(a.Database,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):t==="section"?e.jsx(a.FileText,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):e.jsx(a.Box,{className:"h-3.5 w-3.5 text-[var(--text-secondary)]"}),Ne=t=>t==="resource"?"text-[var(--text-muted)] italic":t==="section"?"text-[var(--text-secondary)]":"font-medium text-[var(--text-primary)]",Q=t=>t==="resource"?"pl-28":t==="section"?"pl-22":"pl-16",we=(t,d,o,u)=>t?e.jsx("button",{onClick:()=>ue(d,o),className:"p-0.5 hover:bg-[var(--bg-hover)] rounded",children:u?e.jsx(a.ChevronRight,{className:"h-3 w-3 text-[var(--text-muted)]"}):e.jsx(a.ChevronDown,{className:"h-3 w-3 text-[var(--text-muted)]"})}):null,Ce=t=>t.length===0?e.jsx("span",{className:"text-xs text-[var(--text-muted)] italic",children:l("assignments.noPermissions")}):t.map(d=>{const o=Me[d]||"bg-[var(--bg-secondary)] text-[var(--text-secondary)] border-[var(--border-color)]",u=Ge[d]||e.jsx(a.Eye,{className:"h-3 w-3"});return e.jsxs("div",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 rounded-[var(--radius-badge)] border text-xs font-medium ${o}`,title:l(`assignments.actions.${d==="*"?"all":d}.description`),children:[u,e.jsx("span",{className:"capitalize",children:l(`assignments.actions.${d==="*"?"all":d}.label`)})]},d)}),be=(t,d,o,u=!1,C=!1)=>{const{status:A,grantedCount:E}=xe(t),U=re===t.id,z=n.createRef(),j=ee.getPermissionCellBackground(A),le=J(t),L=Q(o),Z=d%2===0?"item-light":"item-medium";return e.jsxs("tr",{className:`hover:bg-[var(--bg-hover)] ${Z}`,children:[e.jsx("td",{className:`sticky left-0 z-10 ${Z} px-3 py-2 ${L}`,style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("div",{className:"flex items-center gap-2",children:[we(u,t.id,o,C),pe(o),e.jsx("span",{className:`text-sm ${Ne(o)}`,children:t.moduleLabel}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",t.permissions.length,")"]})]})}),e.jsxs("td",{className:`px-0 py-1 text-center relative ${j}`,style:{width:"60px",minWidth:"60px",maxWidth:"60px"},children:[e.jsx("button",{ref:z,type:"button",onClick:()=>f&&ve(t.id),disabled:!f,className:`w-full h-full min-h-[36px] flex items-center justify-center rounded transition-colors ${f?"hover:opacity-80":"cursor-not-allowed opacity-50"} ${U?"ring-2 ring-[var(--color-accent-500)]":""}`,title:f?`${x.name} - ${t.moduleLabel}: ${E}/${t.permissions.length}`:`${x.name} - ${l("assignments.systemRoleReadOnly")}`,children:e.jsx(ee.PermissionStatusIndicator,{status:A,grantedCount:E,totalCount:t.permissions.length})}),U&&f&&e.jsx(ee.PermissionPopover,{mode:"editable",role:x,resource:t,onTogglePermission:ye,onClose:()=>b(null),getPermissionInheritance:(he,ge)=>P(x.id,ge)})]}),e.jsx("td",{className:"px-3 py-2",children:e.jsx("div",{className:"flex flex-wrap gap-1.5",children:Ce(le)})})]},t.id)};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"min-h-[52px]",children:[_&&e.jsx("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Check,{className:"h-4 w-4 text-[var(--success-text)]"}),e.jsx("p",{className:"text-sm text-[var(--success-text)] font-medium",children:l("common.savedSuccessfully","Sauvegardé avec succès !")})]})}),!_&&k&&e.jsx("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--info-bg)] border border-[var(--info-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Loader2,{className:"h-4 w-4 animate-spin text-[var(--info-text)]"}),e.jsx("p",{className:"text-sm text-[var(--info-text)] font-medium",children:l("common.saving","Sauvegarde en cours...")})]})}),!_&&!k&&H&&e.jsxs("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx("p",{className:"text-sm text-[var(--warning-text)]",children:l("assignments.unsavedChanges","You have unsaved changes")}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:K,disabled:k,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-[var(--radius-button)] bg-[var(--bg-secondary)] border border-[var(--border-color)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-50",children:[e.jsx(a.X,{className:"h-4 w-4"}),l("common.cancel")]}),e.jsxs("button",{onClick:w,disabled:k,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50",children:[k?e.jsx(a.Loader2,{className:"h-4 w-4 animate-spin"}):e.jsx(a.Save,{className:"h-4 w-4"}),l("common.save")]})]})]}),!_&&!k&&!H&&e.jsx("div",{className:"h-[52px]"})]}),X&&e.jsx("div",{className:"p-3 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.AlertCircle,{className:"h-4 w-4 text-[var(--error-text)]"}),e.jsx("p",{className:"text-sm text-[var(--error-text)]",children:X})]})}),e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("label",{className:"text-sm text-[var(--text-secondary)]",children:[l("userPermissions.filters.application"),":"]}),e.jsxs("select",{value:T,onChange:t=>{y(t.target.value),D("all")},className:"px-3 py-1.5 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-[var(--radius-input)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:l("userPermissions.filters.allApplications")}),I.applications.map(t=>e.jsx("option",{value:t.app,children:t.label},t.app))]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("label",{className:"text-sm text-[var(--text-secondary)]",children:[l("userPermissions.filters.module"),":"]}),e.jsxs("select",{value:h,onChange:t=>D(t.target.value),className:"px-3 py-1.5 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-[var(--radius-input)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:l("userPermissions.filters.allModules")}),I.modules.filter(t=>T==="all"||t.app===T).map(t=>e.jsx("option",{value:t.module,children:t.label},`${t.app}:${t.module}`))]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("span",{className:"text-sm font-medium text-[var(--text-secondary)]",children:[l("userPermissions.filterByStatus"),":"]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("button",{onClick:()=>$("all"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("all")?"bg-[var(--success-bg)] border-[var(--success-border)] text-[var(--success-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--success-border)]"}`,children:[e.jsx(a.Check,{className:`h-3.5 w-3.5 ${m.has("all")?"":"text-[var(--success-dot)]"}`}),l("assignments.complete")]}),e.jsxs("button",{onClick:()=>$("some"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("some")?"bg-[var(--warning-bg)] border-[var(--warning-border)] text-[var(--warning-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--warning-border)]"}`,children:[e.jsx(a.Star,{className:`h-3.5 w-3.5 ${m.has("some")?"":"text-[var(--warning-dot)]"}`}),l("assignments.partial")]}),e.jsxs("button",{onClick:()=>$("read-only"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("read-only")?"bg-[var(--info-bg)] border-[var(--info-border)] text-[var(--info-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--info-border)]"}`,children:[e.jsx(a.Eye,{className:`h-3.5 w-3.5 ${m.has("read-only")?"":"text-[var(--info-dot)]"}`}),l("assignments.readOnly")]}),e.jsxs("button",{onClick:()=>$("none"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("none")?"bg-[var(--error-bg)] border-[var(--error-border)] text-[var(--error-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--error-border)]"}`,children:[e.jsx(a.Ban,{className:`h-3.5 w-3.5 ${m.has("none")?"":"text-[var(--text-muted)]"}`}),l("assignments.none")]})]}),m.size>0&&e.jsx("button",{onClick:()=>ie(new Set),className:"text-xs text-[var(--color-accent-500)] hover:text-[var(--color-accent-600)] underline",children:l("assignments.clearFilters")})]}),e.jsx("div",{className:"flex items-center gap-3",children:e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:[ae," ",l("assignments.modules")]})}),e.jsx("div",{className:"overflow-x-auto overflow-y-visible",children:e.jsxs("table",{className:"border-collapse",style:{width:"auto"},children:[e.jsx("thead",{className:"item-medium border-b border-[var(--item-color-border)]",children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",className:"sticky left-0 z-20 item-medium px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"280px",minWidth:"280px",maxWidth:"280px",height:"48px",verticalAlign:"middle"},children:l("assignments.resource")}),e.jsx("th",{scope:"col",className:"px-2 text-center text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"60px",minWidth:"60px",maxWidth:"60px",height:"48px",verticalAlign:"middle"},children:l("userPermissions.status")}),e.jsx("th",{scope:"col",className:"px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{height:"48px",verticalAlign:"middle"},children:l("assignments.permissions")})]})}),e.jsx("tbody",{className:"divide-y divide-[var(--item-color-border)]",children:O.map(t=>{const d=t.application,o=c.has(d);return e.jsxs(n.Fragment,{children:[e.jsxs("tr",{className:"bg-[var(--bg-tertiary)]",children:[e.jsx("td",{className:"sticky left-0 z-10 px-3 py-2 bg-[var(--bg-tertiary)]",style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("button",{onClick:()=>S(d),className:"flex items-center gap-3 w-full text-left hover:opacity-80",children:[o?e.jsx(a.ChevronRight,{className:"h-4 w-4 text-[var(--text-secondary)]"}):e.jsx(a.ChevronDown,{className:"h-4 w-4 text-[var(--text-secondary)]"}),e.jsx(a.FolderOpen,{className:"h-4 w-4 text-[var(--text-secondary)]"}),e.jsx("span",{className:"text-sm font-semibold text-[var(--text-primary)]",children:t.application}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)] ml-auto",children:[t.modules.length," module",t.modules.length>1?"s":""]})]})}),e.jsx("td",{className:"px-0 py-2"}),e.jsx("td",{className:"px-0 py-2"})]}),!o&&t.modules.map((u,C)=>{const{module:A,sections:E}=u,U=E.length>0,z=R.has(A.id);return e.jsxs(n.Fragment,{children:[be(A,C,"module",U,z),U&&!z&&E.map((j,le)=>{const{section:L,resources:Z}=j;return e.jsx(ze,{section:L,resources:Z,moduleIndex:C,sectionIndex:le,collapsedSections:M,renderResourceRow:be},L.id)})]},A.id)})]},d)})})]})}),ae===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:l("assignments.noResources")})]})}const De=[{code:"fr",label:"Français"},{code:"en",label:"English"},{code:"it",label:"Italiano"},{code:"de",label:"Deutsch"}];function We(){const{t:s}=ke.useTranslation("admin"),{id:l}=fe.useParams(),p=fe.useNavigate(),[c,S]=n.useState(null),[R,G]=n.useState(!0),[M,W]=n.useState(!1),[m,ie]=n.useState("info"),[re,b]=n.useState(null),[T,y]=n.useState(null),[h,D]=n.useState({name:"",shortName:"",category:"Custom",description:"",parentRoleId:null}),[se,je]=n.useState([]),ce=["Global","Admin","Manager","Contributor","Viewer","Custom"],[N,q]=n.useState([]),[H,k]=n.useState(!1),[_,X]=n.useState(null),[g,w]=n.useState({name:"",shortName:"",description:""}),[K,P]=n.useState(!1),[x,f]=n.useState(!1),[$,V]=n.useState(""),[de,I]=n.useState(!1),[ye,Y]=n.useState([]),[me,xe]=n.useState(!1),[J,te]=n.useState(""),[F,O]=n.useState(null),[ae,ue]=n.useState(!1),[ve,pe]=n.useState(null),[Ne,Q]=n.useState(!1),[we,Ce]=n.useState([]),[be,t]=n.useState(!1),[d,o]=n.useState(""),[u,C]=n.useState(null),[A,E]=n.useState(!1),[U,z]=n.useState(null),j=n.useCallback(async()=>{if(l)try{G(!0);const[r,i]=await Promise.all([v.adminApi.roles.getById(l),v.adminApi.roles.getAll()]);S(r),je(i.filter(ne=>ne.id!==l)),D({name:r.name,shortName:r.shortName,category:r.category,description:r.description||"",parentRoleId:r.parentRoleId})}catch(r){console.error("Failed to load role:",r),b(s("roleDetail.errors.loadFailed"))}finally{G(!1)}},[l,s]);n.useEffect(()=>{j()},[j]);const le=async r=>{if(r.preventDefault(),!(!l||!c)){W(!0),b(null),y(null);try{const i={name:h.name,shortName:h.shortName,category:h.category,description:h.description||void 0,parentRoleId:h.parentRoleId||void 0};await v.adminApi.roles.update(l,i),y(s("roleDetail.success.saved")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{W(!1)}}},L=n.useCallback(async()=>{if(l){k(!0);try{const r=await v.adminApi.roles.getTranslations(l);q(r)}catch(r){console.error("Failed to load translations:",r)}finally{k(!1)}}},[l]);n.useEffect(()=>{m==="translations"&&N.length===0&&L()},[m,N.length,L]);const Z=r=>{X(r.languageCode),w({name:r.name,shortName:r.shortName,description:r.description||""})},he=()=>{X(null),f(!1),w({name:"",shortName:"",description:""}),V("")},ge=async r=>{if(l){P(!0),b(null);try{await v.adminApi.roles.upsertTranslation(l,r,g),y(s("roleDetail.translations.saved")),X(null),f(!1),V(""),L()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{P(!1)}}},Ae=async r=>{if(l&&confirm(s("roleDetail.translations.confirmDelete")))try{await v.adminApi.roles.deleteTranslation(l,r),y(s("roleDetail.translations.deleted")),L()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}},Se=De.filter(r=>!N.some(i=>i.languageCode===r.code)),Le=async()=>{I(!0),O(null),te(""),xe(!0);try{const r=await v.adminApi.users.getAll({globalScope:!0});Y(r.items)}catch(r){console.error("Failed to load users:",r)}finally{xe(!1)}},Re=async()=>{if(!(!l||!F)){ue(!0);try{await v.adminApi.roles.assignUser(l,F),I(!1),O(null),y(s("roleDetail.users.assigned")),j()}catch(r){b(r instanceof Error?r.message:s("roleDetail.errors.assignFailed"))}finally{ue(!1)}}},Te=async r=>{if(l&&confirm(s("roleDetail.users.confirmRemove"))){pe(r);try{await v.adminApi.roles.removeUser(l,r),y(s("roleDetail.users.removed")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.removeFailed"))}finally{pe(null)}}},Pe=async()=>{Q(!0),C(null),o(""),t(!0);try{const r=await Ue.groupsApi.getAll();Ce(r)}catch(r){console.error("Failed to load groups:",r)}finally{t(!1)}},$e=async()=>{if(!(!l||!u)){E(!0);try{await v.adminApi.roles.assignGroup(l,u),Q(!1),C(null),y(s("roleDetail.groups.assigned")),j()}catch(r){b(r instanceof Error?r.message:s("roleDetail.errors.assignFailed"))}finally{E(!1)}}},Fe=async r=>{if(l&&confirm(s("roleDetail.groups.confirmRemove"))){z(r);try{await v.adminApi.roles.removeGroup(l,r),y(s("roleDetail.groups.removed")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.removeFailed"))}finally{z(null)}}},Ee=[{id:"info",label:s("roleDetail.tabs.info"),icon:e.jsx(a.Settings,{className:"w-4 h-4"})},{id:"permissions",label:s("roleDetail.tabs.permissions"),icon:e.jsx(a.Shield,{className:"w-4 h-4"})},{id:"users",label:s("roleDetail.tabs.users"),icon:e.jsx(a.Users,{className:"w-4 h-4"})},{id:"groups",label:s("roleDetail.tabs.groups"),icon:e.jsx(a.UsersRound,{className:"w-4 h-4"})},{id:"translations",label:s("roleDetail.tabs.translations"),icon:e.jsx(a.Languages,{className:"w-4 h-4"})}];return R?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(a.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}):c?e.jsxs("div",{className:"space-y-6",children:[e.jsx(v.Breadcrumb,{items:[{label:s("header.title"),href:"/administration"},{label:s("roles.title","Roles"),href:"/administration/permissions/roles"},{label:c?.name||"Detail"}]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>p("/administration/permissions/roles"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold text-[var(--text-primary)]",children:c.name}),c.isSystem&&e.jsxs("span",{className:"flex items-center gap-1 px-2 py-1 rounded-[var(--radius-badge)] text-xs bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(a.Lock,{className:"w-3 h-3"}),s("roles.system")]})]}),c.description&&e.jsx("p",{className:"text-sm sm:text-base text-[var(--text-secondary)] mt-1",children:c.description})]}),e.jsxs("div",{className:"flex items-center gap-4 text-sm text-[var(--text-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Users,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.users.length," ",s("roleDetail.usersCount")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.UsersRound,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.groups?.length||0," ",s("roleDetail.groupsCount")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Shield,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.permissions.length," ",s("roles.permissions")]})]})]})]}),re&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] text-[var(--error-text)] flex items-center gap-2",children:[e.jsx(a.AlertTriangle,{className:"w-5 h-5 flex-shrink-0"}),re]}),T&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)] text-[var(--success-text)] flex items-center gap-2",children:[e.jsx(a.CheckCircle,{className:"w-5 h-5 flex-shrink-0"}),T]}),e.jsx("div",{className:"flex gap-1 p-1 bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)]",children:Ee.map(r=>e.jsxs("button",{onClick:()=>ie(r.id),className:`flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] font-medium transition-colors ${m===r.id?"bg-[var(--color-accent-600)] text-white":"text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"}`,children:[r.icon,e.jsx("span",{className:"hidden sm:inline",children:r.label})]},r.id))}),e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] p-4 sm:p-6",children:[m==="info"&&e.jsxs("form",{onSubmit:le,className:"space-y-6 max-w-2xl",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.id")}),e.jsx("div",{className:"px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-tertiary)] text-[var(--text-secondary)] font-mono text-sm",children:c.id})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roles.form.name")," *"]}),e.jsx("input",{type:"text",required:!0,value:h.name,onChange:r=>D(i=>({...i,name:r.target.value})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roleDetail.info.shortName")," *"]}),e.jsx("input",{type:"text",required:!0,value:h.shortName,onChange:r=>D(i=>({...i,shortName:r.target.value})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.shortNameHelp")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roleDetail.info.category")," *"]}),e.jsx("select",{value:h.category,onChange:r=>D(i=>({...i,category:r.target.value})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",children:ce.map(r=>e.jsx("option",{value:r,children:s(`roleDetail.categories.${r.toLowerCase()}`)},r))}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.categoryHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.parentRole")}),e.jsxs("select",{value:h.parentRoleId||"",onChange:r=>D(i=>({...i,parentRoleId:r.target.value||null})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"",children:s("roleDetail.info.noParent")}),se.map(r=>e.jsxs("option",{value:r.id,children:[r.name," (",s(`roleDetail.categories.${r.category.toLowerCase()}`),")"]},r.id))]}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.parentRoleHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roles.form.description")}),e.jsx("textarea",{value:h.description,onChange:r=>D(i=>({...i,description:r.target.value})),rows:3,className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] resize-none"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.systemRole")}),e.jsx("div",{className:"flex items-center gap-2",children:c.isSystem?e.jsxs("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-[var(--radius-badge)] text-sm bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(a.Lock,{className:"w-4 h-4"}),s("roleDetail.info.isSystemRole")]}):e.jsx("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-[var(--radius-badge)] text-sm bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:s("roleDetail.info.isCustomRole")})})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4 pt-4 border-t border-[var(--border-color)]",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.createdAt")}),e.jsx("div",{className:"text-sm text-[var(--text-primary)]",children:new Date(c.createdAt).toLocaleString()})]}),c.updatedAt&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.updatedAt")}),e.jsx("div",{className:"text-sm text-[var(--text-primary)]",children:new Date(c.updatedAt).toLocaleString()})]})]}),e.jsx("div",{className:"flex justify-end pt-4",children:e.jsxs("button",{type:"submit",disabled:M,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[M?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Save,{className:"w-4 h-4"}),s("common.save")]})})]}),m==="permissions"&&l&&e.jsx(Be,{roleId:l}),m==="groups"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.groups.title")," (",c.groups?.length||0,")"]}),e.jsxs("button",{onClick:Pe,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.groups.add")]})]}),!c.groups||c.groups.length===0?e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.groups.noGroups")}):e.jsx("div",{className:"grid gap-3",children:c.groups.map(r=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs(fe.Link,{to:`/administration/users/groups/${r.id}`,className:"flex items-center gap-4 flex-1 min-w-0 hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-accent-100)] flex items-center justify-center",children:e.jsx(a.UsersRound,{className:"w-5 h-5 text-[var(--color-accent-700)]"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)] truncate",children:r.name}),e.jsxs("div",{className:"text-sm text-[var(--text-secondary)] truncate",children:[r.membersCount," ",s("roleDetail.groups.members"),r.description&&` · ${r.description}`]})]})]}),e.jsx("button",{onClick:()=>Fe(r.id),disabled:U===r.id,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)] transition-colors disabled:opacity-50",title:s("roleDetail.groups.remove"),children:U===r.id?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Trash2,{className:"w-4 h-4"})})]},r.id))}),Ne&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:s("roleDetail.groups.addTitle")}),e.jsx("button",{onClick:()=>Q(!1),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(a.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:d,onChange:r=>o(r.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",placeholder:s("roleDetail.groups.searchPlaceholder")})]})}),be?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto",children:we.filter(r=>!c.groups?.some(i=>i.id===r.id)&&(d===""||r.name.toLowerCase().includes(d.toLowerCase())||(r.description||"").toLowerCase().includes(d.toLowerCase()))).map(r=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${u===r.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)] border border-transparent"}`,htmlFor:`group-${r.id}`,children:[e.jsx("input",{id:`group-${r.id}`,type:"radio",name:"selectedGroup",checked:u===r.id,onChange:()=>C(r.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:r.name}),e.jsxs("p",{className:"text-xs text-[var(--text-tertiary)]",children:[r.memberCount," ",s("roleDetail.groups.members"),r.description&&` · ${r.description}`]})]})]},r.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:()=>Q(!1),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] font-medium transition-colors",children:s("common.cancel")}),e.jsxs("button",{onClick:$e,disabled:!u||A,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[A&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.add")]})]})]})})]}),m==="users"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.users.title")," (",c.users.length,")"]}),e.jsxs("button",{onClick:Le,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.users.add")]})]}),c.users.length===0?e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.users.noUsers")}):e.jsx("div",{className:"grid gap-3",children:c.users.map(r=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs(fe.Link,{to:`/administration/users/${r.id}`,className:"flex items-center gap-4 flex-1 min-w-0 hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-accent-100)] flex items-center justify-center",children:e.jsx("span",{className:"text-sm font-medium text-[var(--color-accent-700)]",children:r.fullName.split(" ").map(i=>i.at(0)).join("").toUpperCase().slice(0,2)})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)] truncate",children:r.fullName}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)] truncate",children:r.email})]})]}),e.jsx("button",{onClick:()=>Te(r.id),disabled:ve===r.id,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)] transition-colors disabled:opacity-50",title:s("roleDetail.users.remove"),children:ve===r.id?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Trash2,{className:"w-4 h-4"})})]},r.id))}),de&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:s("roleDetail.users.addTitle")}),e.jsx("button",{onClick:()=>I(!1),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(a.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:J,onChange:r=>te(r.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",placeholder:s("roleDetail.users.searchPlaceholder")})]})}),me?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto",children:ye.filter(r=>!c.users.some(i=>i.id===r.id)&&(J===""||r.fullName.toLowerCase().includes(J.toLowerCase())||r.email.toLowerCase().includes(J.toLowerCase()))).map(r=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${F===r.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)] border border-transparent"}`,htmlFor:`user-${r.id}`,children:[e.jsx("input",{id:`user-${r.id}`,type:"radio",name:"selectedUser",checked:F===r.id,onChange:()=>O(r.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:r.fullName}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:r.email})]})]},r.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:()=>I(!1),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] font-medium transition-colors",children:s("common.cancel")}),e.jsxs("button",{onClick:Re,disabled:!F||ae,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[ae&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.add")]})]})]})})]}),m==="translations"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.translations.title")," (",N.length,")"]}),Se.length>0&&e.jsxs("button",{onClick:()=>f(!0),className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.translations.add")]})]}),x&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--color-accent-500)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h4",{className:"font-medium text-[var(--text-primary)]",children:s("roleDetail.translations.addNew")}),e.jsx("button",{onClick:he,className:"p-1 rounded hover:bg-[var(--bg-hover)]",children:e.jsx(a.X,{className:"w-4 h-4 text-[var(--text-secondary)]"})})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.language")}),e.jsxs("select",{value:$,onChange:r=>V(r.target.value),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:[e.jsx("option",{value:"",children:s("roleDetail.translations.selectLanguage")}),Se.map(r=>e.jsx("option",{value:r.code,children:r.label},r.code))]})]}),$&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.name")}),e.jsx("input",{type:"text",value:g.name,onChange:r=>w(i=>({...i,name:r.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.shortName")}),e.jsx("input",{type:"text",value:g.shortName,onChange:r=>w(i=>({...i,shortName:r.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.description")}),e.jsx("textarea",{value:g.description||"",onChange:r=>w(i=>({...i,description:r.target.value})),rows:2,className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] resize-none"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:he,className:"px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] text-sm font-medium",children:s("common.cancel")}),e.jsxs("button",{onClick:()=>ge($),disabled:K||!g.name||!g.shortName,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium disabled:opacity-50",children:[K&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.save")]})]})]})]})]}),H&&e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}),!H&&N.length===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.translations.noTranslations")}),!H&&N.length>0&&e.jsx("div",{className:"space-y-3",children:N.map(r=>{const i=De.find(B=>B.code===r.languageCode),ne=_===r.languageCode;return e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${ne?"bg-[var(--bg-primary)] border-[var(--color-accent-500)]":"bg-[var(--bg-primary)] border-[var(--border-color)]"}`,children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"px-2 py-0.5 text-xs font-medium rounded bg-[var(--bg-tertiary)] text-[var(--text-secondary)] uppercase",children:r.languageCode}),e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:i?.label||r.languageCode})]}),!ne&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>Z(r),className:"p-1.5 rounded hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--color-accent-600)]",title:s("common.edit"),children:e.jsx(a.Edit2,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>Ae(r.languageCode),className:"p-1.5 rounded hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)]",title:s("common.delete"),children:e.jsx(a.Trash2,{className:"w-4 h-4"})})]})]}),ne?e.jsxs("div",{className:"grid gap-3 mt-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.name")}),e.jsx("input",{type:"text",value:g.name,onChange:B=>w(oe=>({...oe,name:B.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.shortName")}),e.jsx("input",{type:"text",value:g.shortName,onChange:B=>w(oe=>({...oe,shortName:B.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.description")}),e.jsx("textarea",{value:g.description||"",onChange:B=>w(oe=>({...oe,description:B.target.value})),rows:2,className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] resize-none"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:he,className:"px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] text-sm font-medium",children:s("common.cancel")}),e.jsxs("button",{onClick:()=>ge(r.languageCode),disabled:K||!g.name||!g.shortName,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium disabled:opacity-50",children:[K&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.save")]})]})]}):e.jsxs("div",{className:"grid gap-1",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)]",children:r.name}),e.jsxs("div",{className:"text-sm text-[var(--text-secondary)]",children:[s("roleDetail.translations.shortName"),": ",r.shortName]}),r.description&&e.jsx("div",{className:"text-sm text-[var(--text-tertiary)] mt-1",children:r.description})]})]},r.languageCode)})})]})]})]}):e.jsxs("div",{className:"text-center py-12",children:[e.jsx("p",{className:"text-[var(--text-secondary)]",children:s("roleDetail.notFound")}),e.jsx("button",{onClick:()=>p("/administration/permissions/roles"),className:"mt-4 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white",children:s("roleDetail.backToList")})]})}exports.RoleDetailPage=We;
|
|
2
|
-
//# sourceMappingURL=RoleDetailPage-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("react"),fe=require("react-router-dom"),ke=require("react-i18next"),v=require("./index-DK5czlkn.js"),a=require("lucide-react"),Ue=require("./groupsApi-CQ4vFMdP.js"),ee=require("./PermissionPopover-CtYTz7MK.js"),Ge={"*":e.jsx(a.Shield,{className:"h-3 w-3"}),read:e.jsx(a.Eye,{className:"h-3 w-3"}),create:e.jsx(a.Plus,{className:"h-3 w-3"}),update:e.jsx(a.Edit,{className:"h-3 w-3"}),delete:e.jsx(a.Trash2,{className:"h-3 w-3"}),assign:e.jsx(a.UserPlus,{className:"h-3 w-3"}),execute:e.jsx(a.Play,{className:"h-3 w-3"})},Me={"*":"bg-[var(--accent-bg)] text-[var(--accent-text)] border-[var(--accent-border)]",read:"bg-[var(--info-bg)] text-[var(--info-text)] border-[var(--info-border)]",create:"bg-[var(--success-bg)] text-[var(--success-text)] border-[var(--success-border)]",update:"bg-[var(--warning-bg)] text-[var(--warning-text)] border-[var(--warning-border)]",delete:"bg-[var(--error-bg)] text-[var(--error-text)] border-[var(--error-border)]",assign:"bg-[var(--accent-bg)] text-[var(--accent-text)] border-[var(--accent-border)]",execute:"bg-[var(--warning-bg)] text-[var(--warning-text)] border-[var(--warning-border)]"};function Ie(s,l,p){return s.filter(c=>l==="all"||c.application===l).map(c=>({...c,modules:c.modules.filter(S=>p==="all"||S.module.moduleLabel===p)})).filter(c=>c.modules.length>0)}function Oe(s,l,p){return s.map(c=>({...c,modules:c.modules.filter(S=>{const{status:R}=p(S);return l.has(R)})})).filter(c=>c.modules.length>0)}function ze({section:s,resources:l,moduleIndex:p,sectionIndex:c,collapsedSections:S,renderResourceRow:R}){const G=l.length>0,M=S.has(s.id);return e.jsxs(n.Fragment,{children:[R(s,p+c+1,"section",G,M),G&&!M&&l.map((W,m)=>R(W,p+c+m+2,"resource",!1,!1))]},s.id)}function Be({roleId:s}){const{t:l}=ke.useTranslation("admin"),{user:p}=v.useAuth(),{collapsedApps:c,toggleApp:S}=v.useCollapsibleState(),[R,G]=n.useState(new Set),[M,W]=n.useState(new Set),[m,ie]=n.useState(new Set),[re,b]=n.useState(null),[T,y]=n.useState("all"),[h,D]=n.useState("all"),se=n.useMemo(()=>p?v.hasFullAccess(p.permissions):!1,[p]),{loading:je,error:ce,roles:N,filteredResources:q,hasChanges:H,saving:k,saveSuccess:_,saveError:X,togglePermission:g,saveChanges:w,resetChanges:K,getPermissionInheritance:P}=v.usePermissionMatrix({canEditSystemRoles:se}),x=n.useMemo(()=>N.find(t=>t.id===s),[N,s]),f=n.useMemo(()=>!(!x||x.isSystem&&!se),[x,se]),$=t=>{ie(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},V=t=>{G(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},de=t=>{W(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},I=n.useMemo(()=>{const t=[],d=[];return q.forEach(o=>{if(o.level==="module"){const u=o.applicationLabel;t.find(C=>C.app===u)||t.push({app:o.applicationLabel,label:o.applicationLabel}),d.push({app:o.applicationLabel,module:o.moduleLabel,label:o.moduleLabel})}}),{applications:t.sort((o,u)=>o.label.localeCompare(u.label)),modules:d.sort((o,u)=>o.label.localeCompare(u.label))}},[q]),ye=n.useCallback(t=>{!x||!f||g(x.id,t)},[x,f,g]),Y=n.useCallback(t=>{if(!x)return!1;const d=P(x.id,t);return d.isDirect||d.isInherited},[x,P]),me=n.useCallback(t=>ee.calculateModuleWithSectionsStatus(t.module,t.sections,Y),[Y]),xe=n.useCallback(t=>ee.calculatePermissionStatus(t,Y),[Y]),J=n.useCallback(t=>x?t.permissions.filter(d=>{const o=P(x.id,d.id);return o.isDirect||o.isInherited}).map(d=>d.action):[],[x,P]),te=n.useCallback(t=>Ie(t,T,h),[T,h]),F=n.useCallback(t=>m.size===0?t:Oe(t,m,me),[m,me]),O=n.useMemo(()=>{let t=ee.groupByApplicationWithSections(q);return t=te(t),t=F(t),t},[q,te,F]),ae=n.useMemo(()=>O.reduce((t,d)=>t+d.modules.length,0),[O]),ue=n.useCallback((t,d)=>{d==="module"?V(t):d==="section"&&de(t)},[V,de]),ve=t=>{b(re===t?null:t)};if(je)return e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsxs("div",{className:"text-center",children:[e.jsx(a.Loader2,{className:"h-8 w-8 animate-spin text-[var(--color-accent-500)] mx-auto mb-4"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:l("userPermissions.loading")})]})});if(ce)return e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("p",{className:"text-[var(--error-text)]",children:ce})]})});if(!x)return e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:l("roleDetail.notFound")});const pe=t=>t==="resource"?e.jsx(a.Database,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):t==="section"?e.jsx(a.FileText,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):e.jsx(a.Box,{className:"h-3.5 w-3.5 text-[var(--text-secondary)]"}),Ne=t=>t==="resource"?"text-[var(--text-muted)] italic":t==="section"?"text-[var(--text-secondary)]":"font-medium text-[var(--text-primary)]",Q=t=>t==="resource"?"pl-28":t==="section"?"pl-22":"pl-16",we=(t,d,o,u)=>t?e.jsx("button",{onClick:()=>ue(d,o),className:"p-0.5 hover:bg-[var(--bg-hover)] rounded",children:u?e.jsx(a.ChevronRight,{className:"h-3 w-3 text-[var(--text-muted)]"}):e.jsx(a.ChevronDown,{className:"h-3 w-3 text-[var(--text-muted)]"})}):null,Ce=t=>t.length===0?e.jsx("span",{className:"text-xs text-[var(--text-muted)] italic",children:l("assignments.noPermissions")}):t.map(d=>{const o=Me[d]||"bg-[var(--bg-secondary)] text-[var(--text-secondary)] border-[var(--border-color)]",u=Ge[d]||e.jsx(a.Eye,{className:"h-3 w-3"});return e.jsxs("div",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 rounded-[var(--radius-badge)] border text-xs font-medium ${o}`,title:l(`assignments.actions.${d==="*"?"all":d}.description`),children:[u,e.jsx("span",{className:"capitalize",children:l(`assignments.actions.${d==="*"?"all":d}.label`)})]},d)}),be=(t,d,o,u=!1,C=!1)=>{const{status:A,grantedCount:E}=xe(t),U=re===t.id,z=n.createRef(),j=ee.getPermissionCellBackground(A),le=J(t),L=Q(o),Z=d%2===0?"item-light":"item-medium";return e.jsxs("tr",{className:`hover:bg-[var(--bg-hover)] ${Z}`,children:[e.jsx("td",{className:`sticky left-0 z-10 ${Z} px-3 py-2 ${L}`,style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("div",{className:"flex items-center gap-2",children:[we(u,t.id,o,C),pe(o),e.jsx("span",{className:`text-sm ${Ne(o)}`,children:t.moduleLabel}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",t.permissions.length,")"]})]})}),e.jsxs("td",{className:`px-0 py-1 text-center relative ${j}`,style:{width:"60px",minWidth:"60px",maxWidth:"60px"},children:[e.jsx("button",{ref:z,type:"button",onClick:()=>f&&ve(t.id),disabled:!f,className:`w-full h-full min-h-[36px] flex items-center justify-center rounded transition-colors ${f?"hover:opacity-80":"cursor-not-allowed opacity-50"} ${U?"ring-2 ring-[var(--color-accent-500)]":""}`,title:f?`${x.name} - ${t.moduleLabel}: ${E}/${t.permissions.length}`:`${x.name} - ${l("assignments.systemRoleReadOnly")}`,children:e.jsx(ee.PermissionStatusIndicator,{status:A,grantedCount:E,totalCount:t.permissions.length})}),U&&f&&e.jsx(ee.PermissionPopover,{mode:"editable",role:x,resource:t,onTogglePermission:ye,onClose:()=>b(null),getPermissionInheritance:(he,ge)=>P(x.id,ge)})]}),e.jsx("td",{className:"px-3 py-2",children:e.jsx("div",{className:"flex flex-wrap gap-1.5",children:Ce(le)})})]},t.id)};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"min-h-[52px]",children:[_&&e.jsx("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Check,{className:"h-4 w-4 text-[var(--success-text)]"}),e.jsx("p",{className:"text-sm text-[var(--success-text)] font-medium",children:l("common.savedSuccessfully","Sauvegardé avec succès !")})]})}),!_&&k&&e.jsx("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--info-bg)] border border-[var(--info-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Loader2,{className:"h-4 w-4 animate-spin text-[var(--info-text)]"}),e.jsx("p",{className:"text-sm text-[var(--info-text)] font-medium",children:l("common.saving","Sauvegarde en cours...")})]})}),!_&&!k&&H&&e.jsxs("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx("p",{className:"text-sm text-[var(--warning-text)]",children:l("assignments.unsavedChanges","You have unsaved changes")}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:K,disabled:k,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-[var(--radius-button)] bg-[var(--bg-secondary)] border border-[var(--border-color)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-50",children:[e.jsx(a.X,{className:"h-4 w-4"}),l("common.cancel")]}),e.jsxs("button",{onClick:w,disabled:k,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50",children:[k?e.jsx(a.Loader2,{className:"h-4 w-4 animate-spin"}):e.jsx(a.Save,{className:"h-4 w-4"}),l("common.save")]})]})]}),!_&&!k&&!H&&e.jsx("div",{className:"h-[52px]"})]}),X&&e.jsx("div",{className:"p-3 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.AlertCircle,{className:"h-4 w-4 text-[var(--error-text)]"}),e.jsx("p",{className:"text-sm text-[var(--error-text)]",children:X})]})}),e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("label",{className:"text-sm text-[var(--text-secondary)]",children:[l("userPermissions.filters.application"),":"]}),e.jsxs("select",{value:T,onChange:t=>{y(t.target.value),D("all")},className:"px-3 py-1.5 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-[var(--radius-input)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:l("userPermissions.filters.allApplications")}),I.applications.map(t=>e.jsx("option",{value:t.app,children:t.label},t.app))]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("label",{className:"text-sm text-[var(--text-secondary)]",children:[l("userPermissions.filters.module"),":"]}),e.jsxs("select",{value:h,onChange:t=>D(t.target.value),className:"px-3 py-1.5 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-[var(--radius-input)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:l("userPermissions.filters.allModules")}),I.modules.filter(t=>T==="all"||t.app===T).map(t=>e.jsx("option",{value:t.module,children:t.label},`${t.app}:${t.module}`))]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("span",{className:"text-sm font-medium text-[var(--text-secondary)]",children:[l("userPermissions.filterByStatus"),":"]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("button",{onClick:()=>$("all"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("all")?"bg-[var(--success-bg)] border-[var(--success-border)] text-[var(--success-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--success-border)]"}`,children:[e.jsx(a.Check,{className:`h-3.5 w-3.5 ${m.has("all")?"":"text-[var(--success-dot)]"}`}),l("assignments.complete")]}),e.jsxs("button",{onClick:()=>$("some"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("some")?"bg-[var(--warning-bg)] border-[var(--warning-border)] text-[var(--warning-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--warning-border)]"}`,children:[e.jsx(a.Star,{className:`h-3.5 w-3.5 ${m.has("some")?"":"text-[var(--warning-dot)]"}`}),l("assignments.partial")]}),e.jsxs("button",{onClick:()=>$("read-only"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("read-only")?"bg-[var(--info-bg)] border-[var(--info-border)] text-[var(--info-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--info-border)]"}`,children:[e.jsx(a.Eye,{className:`h-3.5 w-3.5 ${m.has("read-only")?"":"text-[var(--info-dot)]"}`}),l("assignments.readOnly")]}),e.jsxs("button",{onClick:()=>$("none"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("none")?"bg-[var(--error-bg)] border-[var(--error-border)] text-[var(--error-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--error-border)]"}`,children:[e.jsx(a.Ban,{className:`h-3.5 w-3.5 ${m.has("none")?"":"text-[var(--text-muted)]"}`}),l("assignments.none")]})]}),m.size>0&&e.jsx("button",{onClick:()=>ie(new Set),className:"text-xs text-[var(--color-accent-500)] hover:text-[var(--color-accent-600)] underline",children:l("assignments.clearFilters")})]}),e.jsx("div",{className:"flex items-center gap-3",children:e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:[ae," ",l("assignments.modules")]})}),e.jsx("div",{className:"overflow-x-auto overflow-y-visible",children:e.jsxs("table",{className:"border-collapse",style:{width:"auto"},children:[e.jsx("thead",{className:"item-medium border-b border-[var(--item-color-border)]",children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",className:"sticky left-0 z-20 item-medium px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"280px",minWidth:"280px",maxWidth:"280px",height:"48px",verticalAlign:"middle"},children:l("assignments.resource")}),e.jsx("th",{scope:"col",className:"px-2 text-center text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"60px",minWidth:"60px",maxWidth:"60px",height:"48px",verticalAlign:"middle"},children:l("userPermissions.status")}),e.jsx("th",{scope:"col",className:"px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{height:"48px",verticalAlign:"middle"},children:l("assignments.permissions")})]})}),e.jsx("tbody",{className:"divide-y divide-[var(--item-color-border)]",children:O.map(t=>{const d=t.application,o=c.has(d);return e.jsxs(n.Fragment,{children:[e.jsxs("tr",{className:"bg-[var(--bg-tertiary)]",children:[e.jsx("td",{className:"sticky left-0 z-10 px-3 py-2 bg-[var(--bg-tertiary)]",style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("button",{onClick:()=>S(d),className:"flex items-center gap-3 w-full text-left hover:opacity-80",children:[o?e.jsx(a.ChevronRight,{className:"h-4 w-4 text-[var(--text-secondary)]"}):e.jsx(a.ChevronDown,{className:"h-4 w-4 text-[var(--text-secondary)]"}),e.jsx(a.FolderOpen,{className:"h-4 w-4 text-[var(--text-secondary)]"}),e.jsx("span",{className:"text-sm font-semibold text-[var(--text-primary)]",children:t.application}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)] ml-auto",children:[t.modules.length," module",t.modules.length>1?"s":""]})]})}),e.jsx("td",{className:"px-0 py-2"}),e.jsx("td",{className:"px-0 py-2"})]}),!o&&t.modules.map((u,C)=>{const{module:A,sections:E}=u,U=E.length>0,z=R.has(A.id);return e.jsxs(n.Fragment,{children:[be(A,C,"module",U,z),U&&!z&&E.map((j,le)=>{const{section:L,resources:Z}=j;return e.jsx(ze,{section:L,resources:Z,moduleIndex:C,sectionIndex:le,collapsedSections:M,renderResourceRow:be},L.id)})]},A.id)})]},d)})})]})}),ae===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:l("assignments.noResources")})]})}const De=[{code:"fr",label:"Français"},{code:"en",label:"English"},{code:"it",label:"Italiano"},{code:"de",label:"Deutsch"}];function We(){const{t:s}=ke.useTranslation("admin"),{id:l}=fe.useParams(),p=fe.useNavigate(),[c,S]=n.useState(null),[R,G]=n.useState(!0),[M,W]=n.useState(!1),[m,ie]=n.useState("info"),[re,b]=n.useState(null),[T,y]=n.useState(null),[h,D]=n.useState({name:"",shortName:"",category:"Custom",description:"",parentRoleId:null}),[se,je]=n.useState([]),ce=["Global","Admin","Manager","Contributor","Viewer","Custom"],[N,q]=n.useState([]),[H,k]=n.useState(!1),[_,X]=n.useState(null),[g,w]=n.useState({name:"",shortName:"",description:""}),[K,P]=n.useState(!1),[x,f]=n.useState(!1),[$,V]=n.useState(""),[de,I]=n.useState(!1),[ye,Y]=n.useState([]),[me,xe]=n.useState(!1),[J,te]=n.useState(""),[F,O]=n.useState(null),[ae,ue]=n.useState(!1),[ve,pe]=n.useState(null),[Ne,Q]=n.useState(!1),[we,Ce]=n.useState([]),[be,t]=n.useState(!1),[d,o]=n.useState(""),[u,C]=n.useState(null),[A,E]=n.useState(!1),[U,z]=n.useState(null),j=n.useCallback(async()=>{if(l)try{G(!0);const[r,i]=await Promise.all([v.adminApi.roles.getById(l),v.adminApi.roles.getAll()]);S(r),je(i.filter(ne=>ne.id!==l)),D({name:r.name,shortName:r.shortName,category:r.category,description:r.description||"",parentRoleId:r.parentRoleId})}catch(r){console.error("Failed to load role:",r),b(s("roleDetail.errors.loadFailed"))}finally{G(!1)}},[l,s]);n.useEffect(()=>{j()},[j]);const le=async r=>{if(r.preventDefault(),!(!l||!c)){W(!0),b(null),y(null);try{const i={name:h.name,shortName:h.shortName,category:h.category,description:h.description||void 0,parentRoleId:h.parentRoleId||void 0};await v.adminApi.roles.update(l,i),y(s("roleDetail.success.saved")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{W(!1)}}},L=n.useCallback(async()=>{if(l){k(!0);try{const r=await v.adminApi.roles.getTranslations(l);q(r)}catch(r){console.error("Failed to load translations:",r)}finally{k(!1)}}},[l]);n.useEffect(()=>{m==="translations"&&N.length===0&&L()},[m,N.length,L]);const Z=r=>{X(r.languageCode),w({name:r.name,shortName:r.shortName,description:r.description||""})},he=()=>{X(null),f(!1),w({name:"",shortName:"",description:""}),V("")},ge=async r=>{if(l){P(!0),b(null);try{await v.adminApi.roles.upsertTranslation(l,r,g),y(s("roleDetail.translations.saved")),X(null),f(!1),V(""),L()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{P(!1)}}},Ae=async r=>{if(l&&confirm(s("roleDetail.translations.confirmDelete")))try{await v.adminApi.roles.deleteTranslation(l,r),y(s("roleDetail.translations.deleted")),L()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}},Se=De.filter(r=>!N.some(i=>i.languageCode===r.code)),Le=async()=>{I(!0),O(null),te(""),xe(!0);try{const r=await v.adminApi.users.getAll({globalScope:!0});Y(r.items)}catch(r){console.error("Failed to load users:",r)}finally{xe(!1)}},Re=async()=>{if(!(!l||!F)){ue(!0);try{await v.adminApi.roles.assignUser(l,F),I(!1),O(null),y(s("roleDetail.users.assigned")),j()}catch(r){b(r instanceof Error?r.message:s("roleDetail.errors.assignFailed"))}finally{ue(!1)}}},Te=async r=>{if(l&&confirm(s("roleDetail.users.confirmRemove"))){pe(r);try{await v.adminApi.roles.removeUser(l,r),y(s("roleDetail.users.removed")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.removeFailed"))}finally{pe(null)}}},Pe=async()=>{Q(!0),C(null),o(""),t(!0);try{const r=await Ue.groupsApi.getAll();Ce(r)}catch(r){console.error("Failed to load groups:",r)}finally{t(!1)}},$e=async()=>{if(!(!l||!u)){E(!0);try{await v.adminApi.roles.assignGroup(l,u),Q(!1),C(null),y(s("roleDetail.groups.assigned")),j()}catch(r){b(r instanceof Error?r.message:s("roleDetail.errors.assignFailed"))}finally{E(!1)}}},Fe=async r=>{if(l&&confirm(s("roleDetail.groups.confirmRemove"))){z(r);try{await v.adminApi.roles.removeGroup(l,r),y(s("roleDetail.groups.removed")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.removeFailed"))}finally{z(null)}}},Ee=[{id:"info",label:s("roleDetail.tabs.info"),icon:e.jsx(a.Settings,{className:"w-4 h-4"})},{id:"permissions",label:s("roleDetail.tabs.permissions"),icon:e.jsx(a.Shield,{className:"w-4 h-4"})},{id:"users",label:s("roleDetail.tabs.users"),icon:e.jsx(a.Users,{className:"w-4 h-4"})},{id:"groups",label:s("roleDetail.tabs.groups"),icon:e.jsx(a.UsersRound,{className:"w-4 h-4"})},{id:"translations",label:s("roleDetail.tabs.translations"),icon:e.jsx(a.Languages,{className:"w-4 h-4"})}];return R?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(a.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}):c?e.jsxs("div",{className:"space-y-6",children:[e.jsx(v.Breadcrumb,{items:[{label:s("header.title"),href:"/administration"},{label:s("roles.title","Roles"),href:"/administration/permissions/roles"},{label:c?.name||"Detail"}]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>p("/administration/permissions/roles"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold text-[var(--text-primary)]",children:c.name}),c.isSystem&&e.jsxs("span",{className:"flex items-center gap-1 px-2 py-1 rounded-[var(--radius-badge)] text-xs bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(a.Lock,{className:"w-3 h-3"}),s("roles.system")]})]}),c.description&&e.jsx("p",{className:"text-sm sm:text-base text-[var(--text-secondary)] mt-1",children:c.description})]}),e.jsxs("div",{className:"flex items-center gap-4 text-sm text-[var(--text-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Users,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.users.length," ",s("roleDetail.usersCount")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.UsersRound,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.groups?.length||0," ",s("roleDetail.groupsCount")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Shield,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.permissions.length," ",s("roles.permissions")]})]})]})]}),re&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] text-[var(--error-text)] flex items-center gap-2",children:[e.jsx(a.AlertTriangle,{className:"w-5 h-5 flex-shrink-0"}),re]}),T&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)] text-[var(--success-text)] flex items-center gap-2",children:[e.jsx(a.CheckCircle,{className:"w-5 h-5 flex-shrink-0"}),T]}),e.jsx("div",{className:"flex gap-1 p-1 bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)]",children:Ee.map(r=>e.jsxs("button",{onClick:()=>ie(r.id),className:`flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] font-medium transition-colors ${m===r.id?"bg-[var(--color-accent-600)] text-white":"text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"}`,children:[r.icon,e.jsx("span",{className:"hidden sm:inline",children:r.label})]},r.id))}),e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] p-4 sm:p-6",children:[m==="info"&&e.jsxs("form",{onSubmit:le,className:"space-y-6 max-w-2xl",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.id")}),e.jsx("div",{className:"px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-tertiary)] text-[var(--text-secondary)] font-mono text-sm",children:c.id})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roles.form.name")," *"]}),e.jsx("input",{type:"text",required:!0,value:h.name,onChange:r=>D(i=>({...i,name:r.target.value})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roleDetail.info.shortName")," *"]}),e.jsx("input",{type:"text",required:!0,value:h.shortName,onChange:r=>D(i=>({...i,shortName:r.target.value})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.shortNameHelp")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roleDetail.info.category")," *"]}),e.jsx("select",{value:h.category,onChange:r=>D(i=>({...i,category:r.target.value})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",children:ce.map(r=>e.jsx("option",{value:r,children:s(`roleDetail.categories.${r.toLowerCase()}`)},r))}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.categoryHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.parentRole")}),e.jsxs("select",{value:h.parentRoleId||"",onChange:r=>D(i=>({...i,parentRoleId:r.target.value||null})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"",children:s("roleDetail.info.noParent")}),se.map(r=>e.jsxs("option",{value:r.id,children:[r.name," (",s(`roleDetail.categories.${r.category.toLowerCase()}`),")"]},r.id))]}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.parentRoleHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roles.form.description")}),e.jsx("textarea",{value:h.description,onChange:r=>D(i=>({...i,description:r.target.value})),rows:3,className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] resize-none"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.systemRole")}),e.jsx("div",{className:"flex items-center gap-2",children:c.isSystem?e.jsxs("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-[var(--radius-badge)] text-sm bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(a.Lock,{className:"w-4 h-4"}),s("roleDetail.info.isSystemRole")]}):e.jsx("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-[var(--radius-badge)] text-sm bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:s("roleDetail.info.isCustomRole")})})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4 pt-4 border-t border-[var(--border-color)]",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.createdAt")}),e.jsx("div",{className:"text-sm text-[var(--text-primary)]",children:new Date(c.createdAt).toLocaleString()})]}),c.updatedAt&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.updatedAt")}),e.jsx("div",{className:"text-sm text-[var(--text-primary)]",children:new Date(c.updatedAt).toLocaleString()})]})]}),e.jsx("div",{className:"flex justify-end pt-4",children:e.jsxs("button",{type:"submit",disabled:M,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[M?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Save,{className:"w-4 h-4"}),s("common.save")]})})]}),m==="permissions"&&l&&e.jsx(Be,{roleId:l}),m==="groups"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.groups.title")," (",c.groups?.length||0,")"]}),e.jsxs("button",{onClick:Pe,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.groups.add")]})]}),!c.groups||c.groups.length===0?e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.groups.noGroups")}):e.jsx("div",{className:"grid gap-3",children:c.groups.map(r=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs(fe.Link,{to:`/administration/users/groups/${r.id}`,className:"flex items-center gap-4 flex-1 min-w-0 hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-accent-100)] flex items-center justify-center",children:e.jsx(a.UsersRound,{className:"w-5 h-5 text-[var(--color-accent-700)]"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)] truncate",children:r.name}),e.jsxs("div",{className:"text-sm text-[var(--text-secondary)] truncate",children:[r.membersCount," ",s("roleDetail.groups.members"),r.description&&` · ${r.description}`]})]})]}),e.jsx("button",{onClick:()=>Fe(r.id),disabled:U===r.id,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)] transition-colors disabled:opacity-50",title:s("roleDetail.groups.remove"),children:U===r.id?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Trash2,{className:"w-4 h-4"})})]},r.id))}),Ne&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:s("roleDetail.groups.addTitle")}),e.jsx("button",{onClick:()=>Q(!1),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(a.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:d,onChange:r=>o(r.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",placeholder:s("roleDetail.groups.searchPlaceholder")})]})}),be?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto",children:we.filter(r=>!c.groups?.some(i=>i.id===r.id)&&(d===""||r.name.toLowerCase().includes(d.toLowerCase())||(r.description||"").toLowerCase().includes(d.toLowerCase()))).map(r=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${u===r.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)] border border-transparent"}`,htmlFor:`group-${r.id}`,children:[e.jsx("input",{id:`group-${r.id}`,type:"radio",name:"selectedGroup",checked:u===r.id,onChange:()=>C(r.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:r.name}),e.jsxs("p",{className:"text-xs text-[var(--text-tertiary)]",children:[r.memberCount," ",s("roleDetail.groups.members"),r.description&&` · ${r.description}`]})]})]},r.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:()=>Q(!1),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] font-medium transition-colors",children:s("common.cancel")}),e.jsxs("button",{onClick:$e,disabled:!u||A,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[A&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.add")]})]})]})})]}),m==="users"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.users.title")," (",c.users.length,")"]}),e.jsxs("button",{onClick:Le,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.users.add")]})]}),c.users.length===0?e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.users.noUsers")}):e.jsx("div",{className:"grid gap-3",children:c.users.map(r=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs(fe.Link,{to:`/administration/users/${r.id}`,className:"flex items-center gap-4 flex-1 min-w-0 hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-accent-100)] flex items-center justify-center",children:e.jsx("span",{className:"text-sm font-medium text-[var(--color-accent-700)]",children:r.fullName.split(" ").map(i=>i.at(0)).join("").toUpperCase().slice(0,2)})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)] truncate",children:r.fullName}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)] truncate",children:r.email})]})]}),e.jsx("button",{onClick:()=>Te(r.id),disabled:ve===r.id,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)] transition-colors disabled:opacity-50",title:s("roleDetail.users.remove"),children:ve===r.id?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Trash2,{className:"w-4 h-4"})})]},r.id))}),de&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:s("roleDetail.users.addTitle")}),e.jsx("button",{onClick:()=>I(!1),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(a.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:J,onChange:r=>te(r.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",placeholder:s("roleDetail.users.searchPlaceholder")})]})}),me?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto",children:ye.filter(r=>!c.users.some(i=>i.id===r.id)&&(J===""||r.fullName.toLowerCase().includes(J.toLowerCase())||r.email.toLowerCase().includes(J.toLowerCase()))).map(r=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${F===r.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)] border border-transparent"}`,htmlFor:`user-${r.id}`,children:[e.jsx("input",{id:`user-${r.id}`,type:"radio",name:"selectedUser",checked:F===r.id,onChange:()=>O(r.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:r.fullName}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:r.email})]})]},r.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:()=>I(!1),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] font-medium transition-colors",children:s("common.cancel")}),e.jsxs("button",{onClick:Re,disabled:!F||ae,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[ae&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.add")]})]})]})})]}),m==="translations"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.translations.title")," (",N.length,")"]}),Se.length>0&&e.jsxs("button",{onClick:()=>f(!0),className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.translations.add")]})]}),x&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--color-accent-500)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h4",{className:"font-medium text-[var(--text-primary)]",children:s("roleDetail.translations.addNew")}),e.jsx("button",{onClick:he,className:"p-1 rounded hover:bg-[var(--bg-hover)]",children:e.jsx(a.X,{className:"w-4 h-4 text-[var(--text-secondary)]"})})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.language")}),e.jsxs("select",{value:$,onChange:r=>V(r.target.value),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:[e.jsx("option",{value:"",children:s("roleDetail.translations.selectLanguage")}),Se.map(r=>e.jsx("option",{value:r.code,children:r.label},r.code))]})]}),$&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.name")}),e.jsx("input",{type:"text",value:g.name,onChange:r=>w(i=>({...i,name:r.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.shortName")}),e.jsx("input",{type:"text",value:g.shortName,onChange:r=>w(i=>({...i,shortName:r.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.description")}),e.jsx("textarea",{value:g.description||"",onChange:r=>w(i=>({...i,description:r.target.value})),rows:2,className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] resize-none"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:he,className:"px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] text-sm font-medium",children:s("common.cancel")}),e.jsxs("button",{onClick:()=>ge($),disabled:K||!g.name||!g.shortName,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium disabled:opacity-50",children:[K&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.save")]})]})]})]})]}),H&&e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}),!H&&N.length===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.translations.noTranslations")}),!H&&N.length>0&&e.jsx("div",{className:"space-y-3",children:N.map(r=>{const i=De.find(B=>B.code===r.languageCode),ne=_===r.languageCode;return e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${ne?"bg-[var(--bg-primary)] border-[var(--color-accent-500)]":"bg-[var(--bg-primary)] border-[var(--border-color)]"}`,children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"px-2 py-0.5 text-xs font-medium rounded bg-[var(--bg-tertiary)] text-[var(--text-secondary)] uppercase",children:r.languageCode}),e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:i?.label||r.languageCode})]}),!ne&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>Z(r),className:"p-1.5 rounded hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--color-accent-600)]",title:s("common.edit"),children:e.jsx(a.Edit2,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>Ae(r.languageCode),className:"p-1.5 rounded hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)]",title:s("common.delete"),children:e.jsx(a.Trash2,{className:"w-4 h-4"})})]})]}),ne?e.jsxs("div",{className:"grid gap-3 mt-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.name")}),e.jsx("input",{type:"text",value:g.name,onChange:B=>w(oe=>({...oe,name:B.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.shortName")}),e.jsx("input",{type:"text",value:g.shortName,onChange:B=>w(oe=>({...oe,shortName:B.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.description")}),e.jsx("textarea",{value:g.description||"",onChange:B=>w(oe=>({...oe,description:B.target.value})),rows:2,className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] resize-none"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:he,className:"px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] text-sm font-medium",children:s("common.cancel")}),e.jsxs("button",{onClick:()=>ge(r.languageCode),disabled:K||!g.name||!g.shortName,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium disabled:opacity-50",children:[K&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.save")]})]})]}):e.jsxs("div",{className:"grid gap-1",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)]",children:r.name}),e.jsxs("div",{className:"text-sm text-[var(--text-secondary)]",children:[s("roleDetail.translations.shortName"),": ",r.shortName]}),r.description&&e.jsx("div",{className:"text-sm text-[var(--text-tertiary)] mt-1",children:r.description})]})]},r.languageCode)})})]})]})]}):e.jsxs("div",{className:"text-center py-12",children:[e.jsx("p",{className:"text-[var(--text-secondary)]",children:s("roleDetail.notFound")}),e.jsx("button",{onClick:()=>p("/administration/permissions/roles"),className:"mt-4 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white",children:s("roleDetail.backToList")})]})}exports.RoleDetailPage=We;
|
|
2
|
+
//# sourceMappingURL=RoleDetailPage-TGyGmLMM.js.map
|