@atlashub/smartstack 3.39.0-preview.1049 → 3.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{AgentSkillsPage-DgqyaZwI.js → AgentSkillsPage-BS_W2KTh.js} +2 -2
- package/dist/chunks/{AgentSkillsPage-DgqyaZwI.js.map → AgentSkillsPage-BS_W2KTh.js.map} +1 -1
- package/dist/chunks/{AgentSkillsPage-ojivq0Cu.js → AgentSkillsPage-CmDFLnp7.js} +2 -2
- package/dist/chunks/{AgentSkillsPage-ojivq0Cu.js.map → AgentSkillsPage-CmDFLnp7.js.map} +1 -1
- package/dist/chunks/{AgentWorkloadPage-BGGTfOLs.js → AgentWorkloadPage-C8IvYfhT.js} +2 -2
- package/dist/chunks/{AgentWorkloadPage-BGGTfOLs.js.map → AgentWorkloadPage-C8IvYfhT.js.map} +1 -1
- package/dist/chunks/{AgentWorkloadPage-DWsC5VoS.js → AgentWorkloadPage-JXsQbwuM.js} +2 -2
- package/dist/chunks/{AgentWorkloadPage-DWsC5VoS.js.map → AgentWorkloadPage-JXsQbwuM.js.map} +1 -1
- package/dist/chunks/{ApiCatalogDetailPage-7EifQOAh.js → ApiCatalogDetailPage-CYOt34Vy.js} +2 -2
- package/dist/chunks/{ApiCatalogDetailPage-7EifQOAh.js.map → ApiCatalogDetailPage-CYOt34Vy.js.map} +1 -1
- package/dist/chunks/{ApiCatalogDetailPage-BD7XE4xK.js → ApiCatalogDetailPage-wFZDsTGy.js} +3 -3
- package/dist/chunks/{ApiCatalogDetailPage-BD7XE4xK.js.map → ApiCatalogDetailPage-wFZDsTGy.js.map} +1 -1
- package/dist/chunks/{ApiCatalogPage-BfPoZGD3.js → ApiCatalogPage-Bdm3HNGP.js} +2 -2
- package/dist/chunks/{ApiCatalogPage-BfPoZGD3.js.map → ApiCatalogPage-Bdm3HNGP.js.map} +1 -1
- package/dist/chunks/{ApiCatalogPage-BOPTnk-b.js → ApiCatalogPage-m_TWQyGv.js} +2 -2
- package/dist/chunks/{ApiCatalogPage-BOPTnk-b.js.map → ApiCatalogPage-m_TWQyGv.js.map} +1 -1
- package/dist/chunks/ApplicationDetailPage-C2BSpEoW.js +2 -0
- package/dist/chunks/{ApplicationDetailPage-CWdz0TS4.js.map → ApplicationDetailPage-C2BSpEoW.js.map} +1 -1
- package/dist/chunks/{ApplicationDetailPage-CDQqViuH.js → ApplicationDetailPage-CcgDAP-J.js} +503 -501
- package/dist/chunks/{ApplicationDetailPage-CDQqViuH.js.map → ApplicationDetailPage-CcgDAP-J.js.map} +1 -1
- package/dist/chunks/{ApplicationsDashboardPage-ZyXm2Cd1.js → ApplicationsDashboardPage-CDIjziL3.js} +3 -3
- package/dist/chunks/{ApplicationsDashboardPage-ZyXm2Cd1.js.map → ApplicationsDashboardPage-CDIjziL3.js.map} +1 -1
- package/dist/chunks/{ApplicationsDashboardPage-BH4S3qA2.js → ApplicationsDashboardPage-DslDyNzJ.js} +2 -2
- package/dist/chunks/{ApplicationsDashboardPage-BH4S3qA2.js.map → ApplicationsDashboardPage-DslDyNzJ.js.map} +1 -1
- package/dist/chunks/{ApplicationsGridPage-D0fU1_Le.js → ApplicationsGridPage-BCjsQGU0.js} +2 -2
- package/dist/chunks/{ApplicationsGridPage-D0fU1_Le.js.map → ApplicationsGridPage-BCjsQGU0.js.map} +1 -1
- package/dist/chunks/{ApplicationsGridPage-C1WF2Htv.js → ApplicationsGridPage-CIfKiCND.js} +2 -2
- package/dist/chunks/{ApplicationsGridPage-C1WF2Htv.js.map → ApplicationsGridPage-CIfKiCND.js.map} +1 -1
- package/dist/chunks/{ApplicationsListPage-Cxvt2_WQ.js → ApplicationsListPage-CT75kNcH.js} +2 -2
- package/dist/chunks/{ApplicationsListPage-Cxvt2_WQ.js.map → ApplicationsListPage-CT75kNcH.js.map} +1 -1
- package/dist/chunks/{ApplicationsListPage-B3ItaY4r.js → ApplicationsListPage-D2B4PZ5n.js} +2 -2
- package/dist/chunks/{ApplicationsListPage-B3ItaY4r.js.map → ApplicationsListPage-D2B4PZ5n.js.map} +1 -1
- package/dist/chunks/{ApplicationsPage-BqfNR-kc.js → ApplicationsPage-CaTBtduL.js} +2 -2
- package/dist/chunks/{ApplicationsPage-BqfNR-kc.js.map → ApplicationsPage-CaTBtduL.js.map} +1 -1
- package/dist/chunks/{ApplicationsPage-DuxuWfrN.js → ApplicationsPage-DW1LhL0U.js} +4 -4
- package/dist/chunks/{ApplicationsPage-DuxuWfrN.js.map → ApplicationsPage-DW1LhL0U.js.map} +1 -1
- package/dist/chunks/{AssignmentRulesPage-CR1C7V0a.js → AssignmentRulesPage-Bt9M0ki7.js} +2 -2
- package/dist/chunks/{AssignmentRulesPage-CR1C7V0a.js.map → AssignmentRulesPage-Bt9M0ki7.js.map} +1 -1
- package/dist/chunks/{AssignmentRulesPage-C4Jouh2g.js → AssignmentRulesPage-Y7xv60NY.js} +2 -2
- package/dist/chunks/{AssignmentRulesPage-C4Jouh2g.js.map → AssignmentRulesPage-Y7xv60NY.js.map} +1 -1
- package/dist/chunks/{AssignmentsPage-v8QUJkE7.js → AssignmentsPage-1eQGTjTi.js} +2 -2
- package/dist/chunks/{AssignmentsPage-v8QUJkE7.js.map → AssignmentsPage-1eQGTjTi.js.map} +1 -1
- package/dist/chunks/{AssignmentsPage-CjuGAd8n.js → AssignmentsPage-RURdPvfZ.js} +2 -2
- package/dist/chunks/{AssignmentsPage-CjuGAd8n.js.map → AssignmentsPage-RURdPvfZ.js.map} +1 -1
- package/dist/chunks/{AuthCallbackPage-BxIXPUJk.js → AuthCallbackPage-8hF0jYlK.js} +2 -2
- package/dist/chunks/{AuthCallbackPage-BxIXPUJk.js.map → AuthCallbackPage-8hF0jYlK.js.map} +1 -1
- package/dist/chunks/{AuthCallbackPage-CuS-efzY.js → AuthCallbackPage-DPL68Asu.js} +2 -2
- package/dist/chunks/{AuthCallbackPage-CuS-efzY.js.map → AuthCallbackPage-DPL68Asu.js.map} +1 -1
- package/dist/chunks/{ConfirmEmailPage-CWIqy2bT.js → ConfirmEmailPage-BKlpZkVk.js} +2 -2
- package/dist/chunks/{ConfirmEmailPage-CWIqy2bT.js.map → ConfirmEmailPage-BKlpZkVk.js.map} +1 -1
- package/dist/chunks/{ConfirmEmailPage-CkN8IfP-.js → ConfirmEmailPage-CawSZypI.js} +2 -2
- package/dist/chunks/{ConfirmEmailPage-CkN8IfP-.js.map → ConfirmEmailPage-CawSZypI.js.map} +1 -1
- package/dist/chunks/{CreateSupportTicketPage-Df0ow5ge.js → CreateSupportTicketPage-AwbMbBIH.js} +2 -2
- package/dist/chunks/{CreateSupportTicketPage-Df0ow5ge.js.map → CreateSupportTicketPage-AwbMbBIH.js.map} +1 -1
- package/dist/chunks/{CreateSupportTicketPage-CmrDfFxP.js → CreateSupportTicketPage-Dg1YW1eA.js} +2 -2
- package/dist/chunks/{CreateSupportTicketPage-CmrDfFxP.js.map → CreateSupportTicketPage-Dg1YW1eA.js.map} +1 -1
- package/dist/chunks/{DashboardPage-B4Pi5P3O.js → DashboardPage-B4YxOF-9.js} +3 -3
- package/dist/chunks/{DashboardPage-B4Pi5P3O.js.map → DashboardPage-B4YxOF-9.js.map} +1 -1
- package/dist/chunks/{DashboardPage-wEKZ_DWf.js → DashboardPage-BZxjinar.js} +2 -2
- package/dist/chunks/{DashboardPage-wEKZ_DWf.js.map → DashboardPage-BZxjinar.js.map} +1 -1
- package/dist/chunks/{DashboardPage-BAqpoxCW.js → DashboardPage-Bo09y8r7.js} +3 -3
- package/dist/chunks/{DashboardPage-BAqpoxCW.js.map → DashboardPage-Bo09y8r7.js.map} +1 -1
- package/dist/chunks/{DashboardPage-BT5kFaQA.js → DashboardPage-Cq5adDjP.js} +2 -2
- package/dist/chunks/{DashboardPage-BT5kFaQA.js.map → DashboardPage-Cq5adDjP.js.map} +1 -1
- package/dist/chunks/{EscalationConfigPage-4pF38E4N.js → EscalationConfigPage-C8Hv5naz.js} +2 -2
- package/dist/chunks/{EscalationConfigPage-4pF38E4N.js.map → EscalationConfigPage-C8Hv5naz.js.map} +1 -1
- package/dist/chunks/{EscalationConfigPage-Bcifnt_h.js → EscalationConfigPage-DNAqMRxA.js} +2 -2
- package/dist/chunks/{EscalationConfigPage-Bcifnt_h.js.map → EscalationConfigPage-DNAqMRxA.js.map} +1 -1
- package/dist/chunks/{ForceChangePasswordPage-CBaMV_PS.js → ForceChangePasswordPage-BURE_vNg.js} +2 -2
- package/dist/chunks/{ForceChangePasswordPage-CBaMV_PS.js.map → ForceChangePasswordPage-BURE_vNg.js.map} +1 -1
- package/dist/chunks/{ForceChangePasswordPage-ClDXluX1.js → ForceChangePasswordPage-C6jDZshk.js} +2 -2
- package/dist/chunks/{ForceChangePasswordPage-ClDXluX1.js.map → ForceChangePasswordPage-C6jDZshk.js.map} +1 -1
- package/dist/chunks/{ForgotPasswordPage--ueWRNSO.js → ForgotPasswordPage-C5HLYbz4.js} +2 -2
- package/dist/chunks/{ForgotPasswordPage--ueWRNSO.js.map → ForgotPasswordPage-C5HLYbz4.js.map} +1 -1
- package/dist/chunks/{ForgotPasswordPage-CzpAkP5R.js → ForgotPasswordPage-D3ZQBtjd.js} +2 -2
- package/dist/chunks/{ForgotPasswordPage-CzpAkP5R.js.map → ForgotPasswordPage-D3ZQBtjd.js.map} +1 -1
- package/dist/chunks/{GroupDetailPage-dXNOoSXE.js → GroupDetailPage-CTuzp9Vp.js} +5 -5
- package/dist/chunks/{GroupDetailPage-dXNOoSXE.js.map → GroupDetailPage-CTuzp9Vp.js.map} +1 -1
- package/dist/chunks/{GroupDetailPage-BIgBzQk0.js → GroupDetailPage-NJc2zCxC.js} +2 -2
- package/dist/chunks/{GroupDetailPage-BIgBzQk0.js.map → GroupDetailPage-NJc2zCxC.js.map} +1 -1
- package/dist/chunks/{MyAccessRequestsPage-K2NXkdy4.js → MyAccessRequestsPage-Cvr29Pnq.js} +2 -2
- package/dist/chunks/{MyAccessRequestsPage-K2NXkdy4.js.map → MyAccessRequestsPage-Cvr29Pnq.js.map} +1 -1
- package/dist/chunks/{MyAccessRequestsPage-Be8VvLhh.js → MyAccessRequestsPage-t6I24rHN.js} +2 -2
- package/dist/chunks/{MyAccessRequestsPage-Be8VvLhh.js.map → MyAccessRequestsPage-t6I24rHN.js.map} +1 -1
- package/dist/chunks/{MyTenantsPage-BXx1nPC8.js → MyTenantsPage-Dy2RZ_Ei.js} +2 -2
- package/dist/chunks/{MyTenantsPage-BXx1nPC8.js.map → MyTenantsPage-Dy2RZ_Ei.js.map} +1 -1
- package/dist/chunks/{MyTenantsPage-B9ZAUeCa.js → MyTenantsPage-SvDCQ4Wt.js} +3 -3
- package/dist/chunks/{MyTenantsPage-B9ZAUeCa.js.map → MyTenantsPage-SvDCQ4Wt.js.map} +1 -1
- package/dist/chunks/{MyTicketsPage-C9MSmmR5.js → MyTicketsPage-C3lEBFD9.js} +2 -2
- package/dist/chunks/{MyTicketsPage-C9MSmmR5.js.map → MyTicketsPage-C3lEBFD9.js.map} +1 -1
- package/dist/chunks/{MyTicketsPage-d0PoJpnX.js → MyTicketsPage-DydDgFyz.js} +2 -2
- package/dist/chunks/{MyTicketsPage-d0PoJpnX.js.map → MyTicketsPage-DydDgFyz.js.map} +1 -1
- package/dist/chunks/{NavigationAppsPage-CJ3BjLlz.js → NavigationAppsPage-Dyv767w8.js} +2 -2
- package/dist/chunks/{NavigationAppsPage-CJ3BjLlz.js.map → NavigationAppsPage-Dyv767w8.js.map} +1 -1
- package/dist/chunks/{NavigationAppsPage-8t2xbddT.js → NavigationAppsPage-WqSspaVo.js} +2 -2
- package/dist/chunks/{NavigationAppsPage-8t2xbddT.js.map → NavigationAppsPage-WqSspaVo.js.map} +1 -1
- package/dist/chunks/{NotificationsPage-_62-bmuk.js → NotificationsPage-Di4I95PM.js} +2 -2
- package/dist/chunks/{NotificationsPage-_62-bmuk.js.map → NotificationsPage-Di4I95PM.js.map} +1 -1
- package/dist/chunks/{NotificationsPage-CLHfVUxm.js → NotificationsPage-elSovpBw.js} +2 -2
- package/dist/chunks/{NotificationsPage-CLHfVUxm.js.map → NotificationsPage-elSovpBw.js.map} +1 -1
- package/dist/chunks/{OnboardingWizardPage-Dkc22Jc4.js → OnboardingWizardPage-fdWdkwiT.js} +2 -2
- package/dist/chunks/{OnboardingWizardPage-Dkc22Jc4.js.map → OnboardingWizardPage-fdWdkwiT.js.map} +1 -1
- package/dist/chunks/{OnboardingWizardPage-D1rzD6gR.js → OnboardingWizardPage-nPLe2buQ.js} +2 -2
- package/dist/chunks/{OnboardingWizardPage-D1rzD6gR.js.map → OnboardingWizardPage-nPLe2buQ.js.map} +1 -1
- package/dist/chunks/{PermissionDetailPage-BSvSe4SI.js → PermissionDetailPage-B8C7tWFP.js} +2 -2
- package/dist/chunks/{PermissionDetailPage-BSvSe4SI.js.map → PermissionDetailPage-B8C7tWFP.js.map} +1 -1
- package/dist/chunks/{PermissionDetailPage-_HhbxzlG.js → PermissionDetailPage-IUgUaTkE.js} +2 -2
- package/dist/chunks/{PermissionDetailPage-_HhbxzlG.js.map → PermissionDetailPage-IUgUaTkE.js.map} +1 -1
- package/dist/chunks/{PermissionsPage-Xb92YAHn.js → PermissionsPage-CmX5sQf2.js} +2 -2
- package/dist/chunks/{PermissionsPage-Xb92YAHn.js.map → PermissionsPage-CmX5sQf2.js.map} +1 -1
- package/dist/chunks/{PermissionsPage-B0M4gA5m.js → PermissionsPage-Kg0rduOM.js} +2 -2
- package/dist/chunks/{PermissionsPage-B0M4gA5m.js.map → PermissionsPage-Kg0rduOM.js.map} +1 -1
- package/dist/chunks/{PortalDashboardPage-DTeMESj9.js → PortalDashboardPage-CCAYuhtI.js} +2 -2
- package/dist/chunks/{PortalDashboardPage-DTeMESj9.js.map → PortalDashboardPage-CCAYuhtI.js.map} +1 -1
- package/dist/chunks/{PortalDashboardPage-pt9hipR4.js → PortalDashboardPage-Dme1XmzN.js} +2 -2
- package/dist/chunks/{PortalDashboardPage-pt9hipR4.js.map → PortalDashboardPage-Dme1XmzN.js.map} +1 -1
- package/dist/chunks/{PreferencesPage-Cy30AWIN.js → PreferencesPage-Ct6xWAFp.js} +2 -2
- package/dist/chunks/{PreferencesPage-Cy30AWIN.js.map → PreferencesPage-Ct6xWAFp.js.map} +1 -1
- package/dist/chunks/{PreferencesPage-CsHVGMgp.js → PreferencesPage-Db2RjMpm.js} +2 -2
- package/dist/chunks/{PreferencesPage-CsHVGMgp.js.map → PreferencesPage-Db2RjMpm.js.map} +1 -1
- package/dist/chunks/{ProfilePage-6Gf7igUI.js → ProfilePage-D6Xb1ALH.js} +2 -2
- package/dist/chunks/{ProfilePage-6Gf7igUI.js.map → ProfilePage-D6Xb1ALH.js.map} +1 -1
- package/dist/chunks/{ProfilePage-BzBWkztf.js → ProfilePage-DN2s-lfp.js} +2 -2
- package/dist/chunks/{ProfilePage-BzBWkztf.js.map → ProfilePage-DN2s-lfp.js.map} +1 -1
- package/dist/chunks/{ReferencesManagementPage-DEDoHrnU.js → ReferencesManagementPage-B5mcshG1.js} +2 -2
- package/dist/chunks/{ReferencesManagementPage-DEDoHrnU.js.map → ReferencesManagementPage-B5mcshG1.js.map} +1 -1
- package/dist/chunks/{ReferencesManagementPage-DD1QiFYr.js → ReferencesManagementPage-DB975ktX.js} +3 -3
- package/dist/chunks/{ReferencesManagementPage-DD1QiFYr.js.map → ReferencesManagementPage-DB975ktX.js.map} +1 -1
- package/dist/chunks/{RegisterPage-asdx33fV.js → RegisterPage-ZskZrLZH.js} +2 -2
- package/dist/chunks/{RegisterPage-asdx33fV.js.map → RegisterPage-ZskZrLZH.js.map} +1 -1
- package/dist/chunks/{RegisterPage-CIPHRYkl.js → RegisterPage-b8yIPVgh.js} +2 -2
- package/dist/chunks/{RegisterPage-CIPHRYkl.js.map → RegisterPage-b8yIPVgh.js.map} +1 -1
- package/dist/chunks/{ResetPasswordPage-B4Dj24vU.js → ResetPasswordPage-CeAvfsE-.js} +2 -2
- package/dist/chunks/{ResetPasswordPage-B4Dj24vU.js.map → ResetPasswordPage-CeAvfsE-.js.map} +1 -1
- package/dist/chunks/{ResetPasswordPage-B8MWH_Vi.js → ResetPasswordPage-Dzp5dCp8.js} +2 -2
- package/dist/chunks/{ResetPasswordPage-B8MWH_Vi.js.map → ResetPasswordPage-Dzp5dCp8.js.map} +1 -1
- package/dist/chunks/{ResolutionModal-Cs6T441o.js → ResolutionModal-CRVN7gHv.js} +2 -2
- package/dist/chunks/{ResolutionModal-Cs6T441o.js.map → ResolutionModal-CRVN7gHv.js.map} +1 -1
- package/dist/chunks/{ResolutionModal-rLoFOxm9.js → ResolutionModal-DJOw1sLT.js} +2 -2
- package/dist/chunks/{ResolutionModal-rLoFOxm9.js.map → ResolutionModal-DJOw1sLT.js.map} +1 -1
- package/dist/chunks/{RoleDetailPage-Pkw0wU5g.js → RoleDetailPage-CLVoFVF8.js} +2 -2
- package/dist/chunks/{RoleDetailPage-Pkw0wU5g.js.map → RoleDetailPage-CLVoFVF8.js.map} +1 -1
- package/dist/chunks/{RoleDetailPage-CNFG6j6P.js → RoleDetailPage-XGnPD_8C.js} +3 -3
- package/dist/chunks/{RoleDetailPage-CNFG6j6P.js.map → RoleDetailPage-XGnPD_8C.js.map} +1 -1
- package/dist/chunks/{RolesPage-BHEkMR2O.js → RolesPage-BnAMpR2b.js} +2 -2
- package/dist/chunks/{RolesPage-BHEkMR2O.js.map → RolesPage-BnAMpR2b.js.map} +1 -1
- package/dist/chunks/{RolesPage-D35jwDJU.js → RolesPage-Czj9LMkL.js} +2 -2
- package/dist/chunks/{RolesPage-D35jwDJU.js.map → RolesPage-Czj9LMkL.js.map} +1 -1
- package/dist/chunks/{SlaConfigPage-DtonDehw.js → SlaConfigPage-HM0MpIlg.js} +2 -2
- package/dist/chunks/{SlaConfigPage-DtonDehw.js.map → SlaConfigPage-HM0MpIlg.js.map} +1 -1
- package/dist/chunks/{SlaConfigPage-C5Jstix-.js → SlaConfigPage-ZRyAs8aY.js} +2 -2
- package/dist/chunks/{SlaConfigPage-C5Jstix-.js.map → SlaConfigPage-ZRyAs8aY.js.map} +1 -1
- package/dist/chunks/{SupportPermissionsPage-6pC73oCY.js → SupportPermissionsPage-CxJuGgcQ.js} +2 -2
- package/dist/chunks/{SupportPermissionsPage-6pC73oCY.js.map → SupportPermissionsPage-CxJuGgcQ.js.map} +1 -1
- package/dist/chunks/{SupportPermissionsPage-CsJKGt__.js → SupportPermissionsPage-DNd323OK.js} +2 -2
- package/dist/chunks/{SupportPermissionsPage-CsJKGt__.js.map → SupportPermissionsPage-DNd323OK.js.map} +1 -1
- package/dist/chunks/{TemplatesPage-DjmYOGEC.js → TemplatesPage-CdwPLsHj.js} +2 -2
- package/dist/chunks/{TemplatesPage-DjmYOGEC.js.map → TemplatesPage-CdwPLsHj.js.map} +1 -1
- package/dist/chunks/{TemplatesPage-DlY91VO_.js → TemplatesPage-Co3ygZvF.js} +2 -2
- package/dist/chunks/{TemplatesPage-DlY91VO_.js.map → TemplatesPage-Co3ygZvF.js.map} +1 -1
- package/dist/chunks/{TenantCard-BHLcv2gD.js → TenantCard-CmCfIK2F.js} +2 -2
- package/dist/chunks/{TenantCard-BHLcv2gD.js.map → TenantCard-CmCfIK2F.js.map} +1 -1
- package/dist/chunks/{TenantCard-DGCKVvKI.js → TenantCard-DI66acce.js} +2 -2
- package/dist/chunks/{TenantCard-DGCKVvKI.js.map → TenantCard-DI66acce.js.map} +1 -1
- package/dist/chunks/{TenantScopeSelector-dsSwnOWg.js → TenantScopeSelector-5NOwmFX2.js} +2 -2
- package/dist/chunks/{TenantScopeSelector-dsSwnOWg.js.map → TenantScopeSelector-5NOwmFX2.js.map} +1 -1
- package/dist/chunks/{TenantScopeSelector-CU5z5PJH.js → TenantScopeSelector-CEFgxiWt.js} +2 -2
- package/dist/chunks/{TenantScopeSelector-CU5z5PJH.js.map → TenantScopeSelector-CEFgxiWt.js.map} +1 -1
- package/dist/chunks/{TicketDetailPage-BQHMaRmq.js → TicketDetailPage-BhZ-mpv7.js} +2 -2
- package/dist/chunks/{TicketDetailPage-BQHMaRmq.js.map → TicketDetailPage-BhZ-mpv7.js.map} +1 -1
- package/dist/chunks/{TicketDetailPage-Bk_0uQ3B.js → TicketDetailPage-BxOiOG22.js} +2 -2
- package/dist/chunks/{TicketDetailPage-Bk_0uQ3B.js.map → TicketDetailPage-BxOiOG22.js.map} +1 -1
- package/dist/chunks/{TicketsPage-CufUJctx.js → TicketsPage-BiTvIcM8.js} +2 -2
- package/dist/chunks/{TicketsPage-CufUJctx.js.map → TicketsPage-BiTvIcM8.js.map} +1 -1
- package/dist/chunks/{TicketsPage-C8QQ4SKy.js → TicketsPage-CSiinHME.js} +2 -2
- package/dist/chunks/{TicketsPage-C8QQ4SKy.js.map → TicketsPage-CSiinHME.js.map} +1 -1
- package/dist/chunks/{UserCreateTicketPage-DoEMtJoe.js → UserCreateTicketPage-B3TW1oV7.js} +2 -2
- package/dist/chunks/{UserCreateTicketPage-DoEMtJoe.js.map → UserCreateTicketPage-B3TW1oV7.js.map} +1 -1
- package/dist/chunks/{UserCreateTicketPage-XxjNlR9K.js → UserCreateTicketPage-BszUd_WZ.js} +2 -2
- package/dist/chunks/{UserCreateTicketPage-XxjNlR9K.js.map → UserCreateTicketPage-BszUd_WZ.js.map} +1 -1
- package/dist/chunks/{UserDashboardPage-fdhZwMLg.js → UserDashboardPage-C6MvatAb.js} +2 -2
- package/dist/chunks/{UserDashboardPage-fdhZwMLg.js.map → UserDashboardPage-C6MvatAb.js.map} +1 -1
- package/dist/chunks/{UserDashboardPage-BV1d2hMG.js → UserDashboardPage-Dtt9VzG_.js} +2 -2
- package/dist/chunks/{UserDashboardPage-BV1d2hMG.js.map → UserDashboardPage-Dtt9VzG_.js.map} +1 -1
- package/dist/chunks/{UserDetailPage-C97e-Dax.js → UserDetailPage-BEEV2vlJ.js} +5 -5
- package/dist/chunks/{UserDetailPage-C97e-Dax.js.map → UserDetailPage-BEEV2vlJ.js.map} +1 -1
- package/dist/chunks/{UserDetailPage-BcA7Vhb2.js → UserDetailPage-Dw5OHheZ.js} +2 -2
- package/dist/chunks/{UserDetailPage-BcA7Vhb2.js.map → UserDetailPage-Dw5OHheZ.js.map} +1 -1
- package/dist/chunks/{UserTicketDetailPage-BA2syxXG.js → UserTicketDetailPage-B4YkzzbR.js} +2 -2
- package/dist/chunks/{UserTicketDetailPage-BA2syxXG.js.map → UserTicketDetailPage-B4YkzzbR.js.map} +1 -1
- package/dist/chunks/{UserTicketDetailPage-CXuZVAa2.js → UserTicketDetailPage-DCFV-0ny.js} +2 -2
- package/dist/chunks/{UserTicketDetailPage-CXuZVAa2.js.map → UserTicketDetailPage-DCFV-0ny.js.map} +1 -1
- package/dist/chunks/{UsersGroupsPage-CPVk31Dh.js → UsersGroupsPage-CY-l9fTp.js} +3 -3
- package/dist/chunks/{UsersGroupsPage-CPVk31Dh.js.map → UsersGroupsPage-CY-l9fTp.js.map} +1 -1
- package/dist/chunks/{UsersGroupsPage-DS2YiUE4.js → UsersGroupsPage-c28vYHN9.js} +2 -2
- package/dist/chunks/{UsersGroupsPage-DS2YiUE4.js.map → UsersGroupsPage-c28vYHN9.js.map} +1 -1
- package/dist/chunks/{UsersPage-BIXWHFmG.js → UsersPage-1sLlq9QD.js} +2 -2
- package/dist/chunks/{UsersPage-BIXWHFmG.js.map → UsersPage-1sLlq9QD.js.map} +1 -1
- package/dist/chunks/{UsersPage-DS8aWUKj.js → UsersPage-Bm-uNxh0.js} +2 -2
- package/dist/chunks/{UsersPage-DS8aWUKj.js.map → UsersPage-Bm-uNxh0.js.map} +1 -1
- package/dist/chunks/{accessRequestsApi-C-r0mrCH.js → accessRequestsApi-CJPjyEkH.js} +2 -2
- package/dist/chunks/{accessRequestsApi-C-r0mrCH.js.map → accessRequestsApi-CJPjyEkH.js.map} +1 -1
- package/dist/chunks/{accessRequestsApi-k3ZwhcFb.js → accessRequestsApi-D_pj1wl6.js} +2 -2
- package/dist/chunks/{accessRequestsApi-k3ZwhcFb.js.map → accessRequestsApi-D_pj1wl6.js.map} +1 -1
- package/dist/chunks/{aiApi-B-H-76wM.js → aiApi-ByF-oo1J.js} +2 -2
- package/dist/chunks/{aiApi-B-H-76wM.js.map → aiApi-ByF-oo1J.js.map} +1 -1
- package/dist/chunks/{aiApi-CcdrBILv.js → aiApi-Dt3fj0dU.js} +2 -2
- package/dist/chunks/{aiApi-CcdrBILv.js.map → aiApi-Dt3fj0dU.js.map} +1 -1
- package/dist/chunks/{applicationAnalyticsApi-CO3tk6Ju.js → applicationAnalyticsApi-BgG3SGJm.js} +2 -2
- package/dist/chunks/{applicationAnalyticsApi-CO3tk6Ju.js.map → applicationAnalyticsApi-BgG3SGJm.js.map} +1 -1
- package/dist/chunks/{applicationAnalyticsApi-CLVdVLDu.js → applicationAnalyticsApi-ktD65iLO.js} +2 -2
- package/dist/chunks/{applicationAnalyticsApi-CLVdVLDu.js.map → applicationAnalyticsApi-ktD65iLO.js.map} +1 -1
- package/dist/chunks/{groupsApi-DExOJZPF.js → groupsApi-C-FLWPCO.js} +2 -2
- package/dist/chunks/{groupsApi-DExOJZPF.js.map → groupsApi-C-FLWPCO.js.map} +1 -1
- package/dist/chunks/{groupsApi-CyqyYsmi.js → groupsApi-CBI5vMLa.js} +2 -2
- package/dist/chunks/{groupsApi-CyqyYsmi.js.map → groupsApi-CBI5vMLa.js.map} +1 -1
- package/dist/chunks/{index-DtAReZI6.js → index-B727-QSU.js} +2 -2
- package/dist/chunks/{index-DtAReZI6.js.map → index-B727-QSU.js.map} +1 -1
- package/dist/chunks/{index-BlOgmQzc.js → index-B9q3vx13.js} +2 -2
- package/dist/chunks/{index-BlOgmQzc.js.map → index-B9q3vx13.js.map} +1 -1
- package/dist/chunks/{index-VSQ2prtJ.js → index-BD-REzV9.js} +2 -2
- package/dist/chunks/{index-VSQ2prtJ.js.map → index-BD-REzV9.js.map} +1 -1
- package/dist/chunks/{index-XOOiD_zY.js → index-BDRogQH_.js} +3 -3
- package/dist/chunks/{index-XOOiD_zY.js.map → index-BDRogQH_.js.map} +1 -1
- package/dist/chunks/{index-DOQyf5yZ.js → index-C-DYxdvd.js} +8 -8
- package/dist/chunks/{index-DOQyf5yZ.js.map → index-C-DYxdvd.js.map} +1 -1
- package/dist/chunks/{index-Cq80YBne.js → index-CBtjGPod.js} +105 -105
- package/dist/chunks/{index-Cq80YBne.js.map → index-CBtjGPod.js.map} +1 -1
- package/dist/chunks/{index-dlXYTPWH.js → index-CF1cvNUL.js} +4 -4
- package/dist/chunks/{index-dlXYTPWH.js.map → index-CF1cvNUL.js.map} +1 -1
- package/dist/chunks/{index-COA_xJVJ.js → index-CH0pTHy1.js} +2 -2
- package/dist/chunks/{index-COA_xJVJ.js.map → index-CH0pTHy1.js.map} +1 -1
- package/dist/chunks/{index-DjZQ6ZG_.js → index-Ca88RIuT.js} +2 -2
- package/dist/chunks/{index-DjZQ6ZG_.js.map → index-Ca88RIuT.js.map} +1 -1
- package/dist/chunks/{index-Cj-9tGpd.js → index-CkWvsvKW.js} +2 -2
- package/dist/chunks/{index-Cj-9tGpd.js.map → index-CkWvsvKW.js.map} +1 -1
- package/dist/chunks/{index-EL_ZNnMH.js → index-CzYKE5fL.js} +2 -2
- package/dist/chunks/{index-EL_ZNnMH.js.map → index-CzYKE5fL.js.map} +1 -1
- package/dist/chunks/{index-qXfYaEmV.js → index-D32ol7lq.js} +2 -2
- package/dist/chunks/{index-qXfYaEmV.js.map → index-D32ol7lq.js.map} +1 -1
- package/dist/chunks/{index-DMQQ0KyA.js → index-D7hmx9IX.js} +2 -2
- package/dist/chunks/{index-DMQQ0KyA.js.map → index-D7hmx9IX.js.map} +1 -1
- package/dist/chunks/{index-BetDcNZm.js → index-DThcQmwZ.js} +2 -2
- package/dist/chunks/{index-BetDcNZm.js.map → index-DThcQmwZ.js.map} +1 -1
- package/dist/chunks/{index-C7h5yvcP.js → index-D_3J6ziZ.js} +2 -2
- package/dist/chunks/{index-C7h5yvcP.js.map → index-D_3J6ziZ.js.map} +1 -1
- package/dist/chunks/{index-C_nDTEP5.js → index-JSjfMShT.js} +2 -2
- package/dist/chunks/{index-C_nDTEP5.js.map → index-JSjfMShT.js.map} +1 -1
- package/dist/chunks/{index-COXxU0FH.js → index-gzXJw_ow.js} +3 -3
- package/dist/chunks/{index-COXxU0FH.js.map → index-gzXJw_ow.js.map} +1 -1
- package/dist/chunks/{index-jJxtz2bs.js → index-rRAbl04H.js} +2 -2
- package/dist/chunks/{index-jJxtz2bs.js.map → index-rRAbl04H.js.map} +1 -1
- package/dist/chunks/{tenantIconMap-Ddvguo0l.js → tenantIconMap-Cw-hQ9n4.js} +2 -2
- package/dist/chunks/{tenantIconMap-Ddvguo0l.js.map → tenantIconMap-Cw-hQ9n4.js.map} +1 -1
- package/dist/chunks/{tenantIconMap-DBa5MjIz.js → tenantIconMap-DinwojNW.js} +2 -2
- package/dist/chunks/{tenantIconMap-DBa5MjIz.js.map → tenantIconMap-DinwojNW.js.map} +1 -1
- package/dist/chunks/{ticketingApi-Cr6QSv0g.js → ticketingApi-CcWdebXv.js} +2 -2
- package/dist/chunks/{ticketingApi-Cr6QSv0g.js.map → ticketingApi-CcWdebXv.js.map} +1 -1
- package/dist/chunks/{ticketingApi-D6s75rOB.js → ticketingApi-x0BwZ1NH.js} +2 -2
- package/dist/chunks/{ticketingApi-D6s75rOB.js.map → ticketingApi-x0BwZ1NH.js.map} +1 -1
- package/dist/chunks/{useAccessRequests-VuQT-n-P.js → useAccessRequests-BBTIYht3.js} +2 -2
- package/dist/chunks/{useAccessRequests-VuQT-n-P.js.map → useAccessRequests-BBTIYht3.js.map} +1 -1
- package/dist/chunks/{useAccessRequests-CanI2ypo.js → useAccessRequests-BBUj9XY9.js} +71 -71
- package/dist/chunks/{useAccessRequests-CanI2ypo.js.map → useAccessRequests-BBUj9XY9.js.map} +1 -1
- package/dist/chunks/{useUserAccessRequests-BEVZLX_M.js → useUserAccessRequests-BKQxcOXH.js} +2 -2
- package/dist/chunks/{useUserAccessRequests-BEVZLX_M.js.map → useUserAccessRequests-BKQxcOXH.js.map} +1 -1
- package/dist/chunks/{useUserAccessRequests-Ba40FDLm.js → useUserAccessRequests-BPUPiP55.js} +2 -2
- package/dist/chunks/{useUserAccessRequests-Ba40FDLm.js.map → useUserAccessRequests-BPUPiP55.js.map} +1 -1
- package/dist/pages/platform/administration/applications/ApplicationDetailPage.d.ts.map +1 -1
- package/dist/smartstack.cjs +1 -1
- package/dist/smartstack.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/ApplicationDetailPage-CWdz0TS4.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),fe=require("react-router-dom"),ke=require("react-i18next"),v=require("./index-XOOiD_zY.js"),a=require("lucide-react"),Ue=require("./groupsApi-DExOJZPF.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,n,p){return s.filter(c=>n==="all"||c.application===n).map(c=>({...c,modules:c.modules.filter(S=>p==="all"||S.module.moduleLabel===p)})).filter(c=>c.modules.length>0)}function Oe(s,n,p){return s.map(c=>({...c,modules:c.modules.filter(S=>{const{status:R}=p(S);return n.has(R)})})).filter(c=>c.modules.length>0)}function ze({section:s,resources:n,moduleIndex:p,sectionIndex:c,collapsedSections:S,renderResourceRow:R}){const G=n.length>0,M=S.has(s.id);return e.jsxs(l.Fragment,{children:[R(s,p+c+1,"section",G,M),G&&!M&&n.map((W,m)=>R(W,p+c+m+2,"resource",!1,!1))]},s.id)}function Be({roleId:s}){const{t:n}=ke.useTranslation("admin"),{user:p}=v.useAuth(),{collapsedApps:c,toggleApp:S}=v.useCollapsibleState(),[R,G]=l.useState(new Set),[M,W]=l.useState(new Set),[m,ie]=l.useState(new Set),[re,b]=l.useState(null),[T,y]=l.useState("all"),[h,D]=l.useState("all"),se=l.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=l.useMemo(()=>N.find(t=>t.id===s),[N,s]),f=l.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=l.useCallback(t=>{G(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},[]),de=l.useCallback(t=>{W(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},[]),I=l.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=l.useCallback(t=>{!x||!f||g(x.id,t)},[x,f,g]),Y=l.useCallback(t=>{if(!x)return!1;const d=P(x.id,t);return d.isDirect||d.isInherited},[x,P]),me=l.useCallback(t=>ee.calculateModuleWithSectionsStatus(t.module,t.sections,Y),[Y]),xe=l.useCallback(t=>ee.calculatePermissionStatus(t,Y),[Y]),J=l.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=l.useCallback(t=>Ie(t,T,h),[T,h]),F=l.useCallback(t=>m.size===0?t:Oe(t,m,me),[m,me]),O=l.useMemo(()=>{let t=ee.groupByApplicationWithSections(q);return t=te(t),t=F(t),t},[q,te,F]),ae=l.useMemo(()=>O.reduce((t,d)=>t+d.modules.length,0),[O]),ue=l.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:n("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:n("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:n("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:n(`assignments.actions.${d==="*"?"all":d}.description`),children:[u,e.jsx("span",{className:"capitalize",children:n(`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=l.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} - ${n("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:n("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:n("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:n("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"}),n("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"}),n("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:[n("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:n("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:[n("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:n("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:[n("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)]"}`}),n("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)]"}`}),n("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)]"}`}),n("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)]"}`}),n("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:n("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," ",n("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:n("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:n("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:n("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(l.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(l.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:n("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:n}=fe.useParams(),p=fe.useNavigate(),[c,S]=l.useState(null),[R,G]=l.useState(!0),[M,W]=l.useState(!1),[m,ie]=l.useState("info"),[re,b]=l.useState(null),[T,y]=l.useState(null),[h,D]=l.useState({name:"",shortName:"",category:"Custom",description:"",parentRoleId:null}),[se,je]=l.useState([]),ce=["Global","Admin","Manager","Contributor","Viewer","Custom"],[N,q]=l.useState([]),[H,k]=l.useState(!1),[_,X]=l.useState(null),[g,w]=l.useState({name:"",shortName:"",description:""}),[K,P]=l.useState(!1),[x,f]=l.useState(!1),[$,V]=l.useState(""),[de,I]=l.useState(!1),[ye,Y]=l.useState([]),[me,xe]=l.useState(!1),[J,te]=l.useState(""),[F,O]=l.useState(null),[ae,ue]=l.useState(!1),[ve,pe]=l.useState(null),[Ne,Q]=l.useState(!1),[we,Ce]=l.useState([]),[be,t]=l.useState(!1),[d,o]=l.useState(""),[u,C]=l.useState(null),[A,E]=l.useState(!1),[U,z]=l.useState(null),j=l.useCallback(async()=>{if(n)try{G(!0);const[r,i]=await Promise.all([v.adminApi.roles.getById(n),v.adminApi.roles.getAll()]);S(r),je(i.filter(ne=>ne.id!==n)),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)}},[n,s]);l.useEffect(()=>{j()},[j]);const le=async r=>{if(r.preventDefault(),!(!n||!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(n,i),y(s("roleDetail.success.saved")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{W(!1)}}},L=l.useCallback(async()=>{if(n){k(!0);try{const r=await v.adminApi.roles.getTranslations(n);q(r)}catch(r){console.error("Failed to load translations:",r)}finally{k(!1)}}},[n]);l.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(n){P(!0),b(null);try{await v.adminApi.roles.upsertTranslation(n,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(n&&confirm(s("roleDetail.translations.confirmDelete")))try{await v.adminApi.roles.deleteTranslation(n,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(!(!n||!F)){ue(!0);try{await v.adminApi.roles.assignUser(n,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(n&&confirm(s("roleDetail.users.confirmRemove"))){pe(r);try{await v.adminApi.roles.removeUser(n,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(!(!n||!u)){E(!0);try{await v.adminApi.roles.assignGroup(n,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(n&&confirm(s("roleDetail.groups.confirmRemove"))){z(r);try{await v.adminApi.roles.removeGroup(n,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"&&n&&e.jsx(Be,{roleId:n}),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"),l=require("react"),fe=require("react-router-dom"),ke=require("react-i18next"),v=require("./index-BDRogQH_.js"),a=require("lucide-react"),Ue=require("./groupsApi-C-FLWPCO.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,n,p){return s.filter(c=>n==="all"||c.application===n).map(c=>({...c,modules:c.modules.filter(S=>p==="all"||S.module.moduleLabel===p)})).filter(c=>c.modules.length>0)}function Oe(s,n,p){return s.map(c=>({...c,modules:c.modules.filter(S=>{const{status:R}=p(S);return n.has(R)})})).filter(c=>c.modules.length>0)}function ze({section:s,resources:n,moduleIndex:p,sectionIndex:c,collapsedSections:S,renderResourceRow:R}){const G=n.length>0,M=S.has(s.id);return e.jsxs(l.Fragment,{children:[R(s,p+c+1,"section",G,M),G&&!M&&n.map((W,m)=>R(W,p+c+m+2,"resource",!1,!1))]},s.id)}function Be({roleId:s}){const{t:n}=ke.useTranslation("admin"),{user:p}=v.useAuth(),{collapsedApps:c,toggleApp:S}=v.useCollapsibleState(),[R,G]=l.useState(new Set),[M,W]=l.useState(new Set),[m,ie]=l.useState(new Set),[re,b]=l.useState(null),[T,y]=l.useState("all"),[h,D]=l.useState("all"),se=l.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=l.useMemo(()=>N.find(t=>t.id===s),[N,s]),f=l.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=l.useCallback(t=>{G(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},[]),de=l.useCallback(t=>{W(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},[]),I=l.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=l.useCallback(t=>{!x||!f||g(x.id,t)},[x,f,g]),Y=l.useCallback(t=>{if(!x)return!1;const d=P(x.id,t);return d.isDirect||d.isInherited},[x,P]),me=l.useCallback(t=>ee.calculateModuleWithSectionsStatus(t.module,t.sections,Y),[Y]),xe=l.useCallback(t=>ee.calculatePermissionStatus(t,Y),[Y]),J=l.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=l.useCallback(t=>Ie(t,T,h),[T,h]),F=l.useCallback(t=>m.size===0?t:Oe(t,m,me),[m,me]),O=l.useMemo(()=>{let t=ee.groupByApplicationWithSections(q);return t=te(t),t=F(t),t},[q,te,F]),ae=l.useMemo(()=>O.reduce((t,d)=>t+d.modules.length,0),[O]),ue=l.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:n("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:n("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:n("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:n(`assignments.actions.${d==="*"?"all":d}.description`),children:[u,e.jsx("span",{className:"capitalize",children:n(`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=l.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} - ${n("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:n("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:n("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:n("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"}),n("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"}),n("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:[n("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:n("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:[n("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:n("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:[n("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)]"}`}),n("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)]"}`}),n("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)]"}`}),n("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)]"}`}),n("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:n("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," ",n("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:n("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:n("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:n("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(l.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(l.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:n("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:n}=fe.useParams(),p=fe.useNavigate(),[c,S]=l.useState(null),[R,G]=l.useState(!0),[M,W]=l.useState(!1),[m,ie]=l.useState("info"),[re,b]=l.useState(null),[T,y]=l.useState(null),[h,D]=l.useState({name:"",shortName:"",category:"Custom",description:"",parentRoleId:null}),[se,je]=l.useState([]),ce=["Global","Admin","Manager","Contributor","Viewer","Custom"],[N,q]=l.useState([]),[H,k]=l.useState(!1),[_,X]=l.useState(null),[g,w]=l.useState({name:"",shortName:"",description:""}),[K,P]=l.useState(!1),[x,f]=l.useState(!1),[$,V]=l.useState(""),[de,I]=l.useState(!1),[ye,Y]=l.useState([]),[me,xe]=l.useState(!1),[J,te]=l.useState(""),[F,O]=l.useState(null),[ae,ue]=l.useState(!1),[ve,pe]=l.useState(null),[Ne,Q]=l.useState(!1),[we,Ce]=l.useState([]),[be,t]=l.useState(!1),[d,o]=l.useState(""),[u,C]=l.useState(null),[A,E]=l.useState(!1),[U,z]=l.useState(null),j=l.useCallback(async()=>{if(n)try{G(!0);const[r,i]=await Promise.all([v.adminApi.roles.getById(n),v.adminApi.roles.getAll()]);S(r),je(i.filter(ne=>ne.id!==n)),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)}},[n,s]);l.useEffect(()=>{j()},[j]);const le=async r=>{if(r.preventDefault(),!(!n||!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(n,i),y(s("roleDetail.success.saved")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{W(!1)}}},L=l.useCallback(async()=>{if(n){k(!0);try{const r=await v.adminApi.roles.getTranslations(n);q(r)}catch(r){console.error("Failed to load translations:",r)}finally{k(!1)}}},[n]);l.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(n){P(!0),b(null);try{await v.adminApi.roles.upsertTranslation(n,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(n&&confirm(s("roleDetail.translations.confirmDelete")))try{await v.adminApi.roles.deleteTranslation(n,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(!(!n||!F)){ue(!0);try{await v.adminApi.roles.assignUser(n,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(n&&confirm(s("roleDetail.users.confirmRemove"))){pe(r);try{await v.adminApi.roles.removeUser(n,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(!(!n||!u)){E(!0);try{await v.adminApi.roles.assignGroup(n,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(n&&confirm(s("roleDetail.groups.confirmRemove"))){z(r);try{await v.adminApi.roles.removeGroup(n,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"&&n&&e.jsx(Be,{roleId:n}),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-CLVoFVF8.js.map
|