@atlashub/smartstack 3.28.0 → 3.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/dist/chunks/{AgentSkillsPage-ChykpPZx.js → AgentSkillsPage-CVq3qZoe.js} +2 -2
  2. package/dist/chunks/{AgentSkillsPage-ChykpPZx.js.map → AgentSkillsPage-CVq3qZoe.js.map} +1 -1
  3. package/dist/chunks/{AgentSkillsPage-ABpqnnyK.js → AgentSkillsPage-DJb49NMA.js} +2 -2
  4. package/dist/chunks/{AgentSkillsPage-ABpqnnyK.js.map → AgentSkillsPage-DJb49NMA.js.map} +1 -1
  5. package/dist/chunks/{AgentWorkloadPage-BltzNlXI.js → AgentWorkloadPage-D_nk3gKj.js} +2 -2
  6. package/dist/chunks/{AgentWorkloadPage-BltzNlXI.js.map → AgentWorkloadPage-D_nk3gKj.js.map} +1 -1
  7. package/dist/chunks/{AgentWorkloadPage-BI5QWJyQ.js → AgentWorkloadPage-oHEi-sFh.js} +2 -2
  8. package/dist/chunks/{AgentWorkloadPage-BI5QWJyQ.js.map → AgentWorkloadPage-oHEi-sFh.js.map} +1 -1
  9. package/dist/chunks/{ApiCatalogDetailPage-BaheZKBq.js → ApiCatalogDetailPage-Cr0q2HnB.js} +3 -3
  10. package/dist/chunks/{ApiCatalogDetailPage-BaheZKBq.js.map → ApiCatalogDetailPage-Cr0q2HnB.js.map} +1 -1
  11. package/dist/chunks/{ApiCatalogDetailPage-CsRxlHwO.js → ApiCatalogDetailPage-DX8buBkV.js} +2 -2
  12. package/dist/chunks/{ApiCatalogDetailPage-CsRxlHwO.js.map → ApiCatalogDetailPage-DX8buBkV.js.map} +1 -1
  13. package/dist/chunks/{ApiCatalogPage-CqmmHpQ4.js → ApiCatalogPage-DN7sazvI.js} +2 -2
  14. package/dist/chunks/{ApiCatalogPage-CqmmHpQ4.js.map → ApiCatalogPage-DN7sazvI.js.map} +1 -1
  15. package/dist/chunks/{ApiCatalogPage-B0yIz8-U.js → ApiCatalogPage-DqboIzZE.js} +2 -2
  16. package/dist/chunks/{ApiCatalogPage-B0yIz8-U.js.map → ApiCatalogPage-DqboIzZE.js.map} +1 -1
  17. package/dist/chunks/{ApplicationDetailPage-CngD5JSN.js → ApplicationDetailPage--9YwwS5A.js} +2 -2
  18. package/dist/chunks/{ApplicationDetailPage-CngD5JSN.js.map → ApplicationDetailPage--9YwwS5A.js.map} +1 -1
  19. package/dist/chunks/{ApplicationDetailPage-CdT6KNd7.js → ApplicationDetailPage-CCNjr64K.js} +4 -4
  20. package/dist/chunks/{ApplicationDetailPage-CdT6KNd7.js.map → ApplicationDetailPage-CCNjr64K.js.map} +1 -1
  21. package/dist/chunks/{ApplicationsDashboardPage-DHmnjk2O.js → ApplicationsDashboardPage-BSsHN3Yj.js} +2 -2
  22. package/dist/chunks/{ApplicationsDashboardPage-DHmnjk2O.js.map → ApplicationsDashboardPage-BSsHN3Yj.js.map} +1 -1
  23. package/dist/chunks/{ApplicationsDashboardPage-1V4iQ6eY.js → ApplicationsDashboardPage-Bs-Xgca4.js} +3 -3
  24. package/dist/chunks/{ApplicationsDashboardPage-1V4iQ6eY.js.map → ApplicationsDashboardPage-Bs-Xgca4.js.map} +1 -1
  25. package/dist/chunks/{ApplicationsGridPage-Bo3NDnBF.js → ApplicationsGridPage-DDysNWJ5.js} +2 -2
  26. package/dist/chunks/{ApplicationsGridPage-Bo3NDnBF.js.map → ApplicationsGridPage-DDysNWJ5.js.map} +1 -1
  27. package/dist/chunks/{ApplicationsGridPage-CiMJFlB_.js → ApplicationsGridPage-s1WEzOXS.js} +2 -2
  28. package/dist/chunks/{ApplicationsGridPage-CiMJFlB_.js.map → ApplicationsGridPage-s1WEzOXS.js.map} +1 -1
  29. package/dist/chunks/{ApplicationsListPage-L2_S23aN.js → ApplicationsListPage-B3CSMiV0.js} +2 -2
  30. package/dist/chunks/{ApplicationsListPage-L2_S23aN.js.map → ApplicationsListPage-B3CSMiV0.js.map} +1 -1
  31. package/dist/chunks/{ApplicationsListPage-De8jQ1Cm.js → ApplicationsListPage-B6ZCecIl.js} +2 -2
  32. package/dist/chunks/{ApplicationsListPage-De8jQ1Cm.js.map → ApplicationsListPage-B6ZCecIl.js.map} +1 -1
  33. package/dist/chunks/{ApplicationsPage-DBq7_Sm8.js → ApplicationsPage-BBaiBM--.js} +2 -2
  34. package/dist/chunks/{ApplicationsPage-DBq7_Sm8.js.map → ApplicationsPage-BBaiBM--.js.map} +1 -1
  35. package/dist/chunks/{ApplicationsPage-CiNI-b0R.js → ApplicationsPage-ztPwoAGt.js} +4 -4
  36. package/dist/chunks/{ApplicationsPage-CiNI-b0R.js.map → ApplicationsPage-ztPwoAGt.js.map} +1 -1
  37. package/dist/chunks/{AssignmentRulesPage-DFsO4ZES.js → AssignmentRulesPage-CK4L4rBO.js} +2 -2
  38. package/dist/chunks/{AssignmentRulesPage-DFsO4ZES.js.map → AssignmentRulesPage-CK4L4rBO.js.map} +1 -1
  39. package/dist/chunks/{AssignmentRulesPage-C8rfUsMB.js → AssignmentRulesPage-DFSVFFXr.js} +2 -2
  40. package/dist/chunks/{AssignmentRulesPage-C8rfUsMB.js.map → AssignmentRulesPage-DFSVFFXr.js.map} +1 -1
  41. package/dist/chunks/{AssignmentsPage-78C_EBsw.js → AssignmentsPage-Bp7oQD7Q.js} +2 -2
  42. package/dist/chunks/{AssignmentsPage-78C_EBsw.js.map → AssignmentsPage-Bp7oQD7Q.js.map} +1 -1
  43. package/dist/chunks/{AssignmentsPage-COCikISI.js → AssignmentsPage-JCLpyg94.js} +2 -2
  44. package/dist/chunks/{AssignmentsPage-COCikISI.js.map → AssignmentsPage-JCLpyg94.js.map} +1 -1
  45. package/dist/chunks/{AuthCallbackPage-DqT6ueVi.js → AuthCallbackPage-Bl9xlJ3h.js} +2 -2
  46. package/dist/chunks/{AuthCallbackPage-DqT6ueVi.js.map → AuthCallbackPage-Bl9xlJ3h.js.map} +1 -1
  47. package/dist/chunks/{AuthCallbackPage-BF4bkTnR.js → AuthCallbackPage-CzMHz4jy.js} +2 -2
  48. package/dist/chunks/{AuthCallbackPage-BF4bkTnR.js.map → AuthCallbackPage-CzMHz4jy.js.map} +1 -1
  49. package/dist/chunks/{ConfirmEmailPage-Bh_K5qJn.js → ConfirmEmailPage-D_8T1vqV.js} +2 -2
  50. package/dist/chunks/{ConfirmEmailPage-Bh_K5qJn.js.map → ConfirmEmailPage-D_8T1vqV.js.map} +1 -1
  51. package/dist/chunks/{ConfirmEmailPage-DJy4idrf.js → ConfirmEmailPage-M7mJgXvn.js} +2 -2
  52. package/dist/chunks/{ConfirmEmailPage-DJy4idrf.js.map → ConfirmEmailPage-M7mJgXvn.js.map} +1 -1
  53. package/dist/chunks/{CreateSupportTicketPage-pL7jbG9o.js → CreateSupportTicketPage-BNEGavlu.js} +2 -2
  54. package/dist/chunks/{CreateSupportTicketPage-pL7jbG9o.js.map → CreateSupportTicketPage-BNEGavlu.js.map} +1 -1
  55. package/dist/chunks/{CreateSupportTicketPage-AVTwXbJd.js → CreateSupportTicketPage-C2X2mfds.js} +2 -2
  56. package/dist/chunks/{CreateSupportTicketPage-AVTwXbJd.js.map → CreateSupportTicketPage-C2X2mfds.js.map} +1 -1
  57. package/dist/chunks/{DashboardPage-DdQlTLw0.js → DashboardPage-4oy2YqvT.js} +2 -2
  58. package/dist/chunks/{DashboardPage-DdQlTLw0.js.map → DashboardPage-4oy2YqvT.js.map} +1 -1
  59. package/dist/chunks/{DashboardPage-C55mIiB6.js → DashboardPage-CO-8B8EI.js} +3 -3
  60. package/dist/chunks/{DashboardPage-C55mIiB6.js.map → DashboardPage-CO-8B8EI.js.map} +1 -1
  61. package/dist/chunks/{DashboardPage-CcCnUl7s.js → DashboardPage-CPArUG-S.js} +2 -2
  62. package/dist/chunks/{DashboardPage-CcCnUl7s.js.map → DashboardPage-CPArUG-S.js.map} +1 -1
  63. package/dist/chunks/{DashboardPage-DOitDfGV.js → DashboardPage-D5MRMxEV.js} +3 -3
  64. package/dist/chunks/{DashboardPage-DOitDfGV.js.map → DashboardPage-D5MRMxEV.js.map} +1 -1
  65. package/dist/chunks/{EscalationConfigPage-DNnZftCH.js → EscalationConfigPage-CwdnfJbJ.js} +2 -2
  66. package/dist/chunks/{EscalationConfigPage-DNnZftCH.js.map → EscalationConfigPage-CwdnfJbJ.js.map} +1 -1
  67. package/dist/chunks/{EscalationConfigPage-DRr55328.js → EscalationConfigPage-DnjLFXnL.js} +2 -2
  68. package/dist/chunks/{EscalationConfigPage-DRr55328.js.map → EscalationConfigPage-DnjLFXnL.js.map} +1 -1
  69. package/dist/chunks/{ForceChangePasswordPage-1SCOPIqK.js → ForceChangePasswordPage-ZEIfyqwE.js} +2 -2
  70. package/dist/chunks/{ForceChangePasswordPage-1SCOPIqK.js.map → ForceChangePasswordPage-ZEIfyqwE.js.map} +1 -1
  71. package/dist/chunks/{ForceChangePasswordPage-DBeG_HRO.js → ForceChangePasswordPage-sh-3h_H9.js} +2 -2
  72. package/dist/chunks/{ForceChangePasswordPage-DBeG_HRO.js.map → ForceChangePasswordPage-sh-3h_H9.js.map} +1 -1
  73. package/dist/chunks/{ForgotPasswordPage-Dlb6wKfC.js → ForgotPasswordPage-B4M6-xeM.js} +2 -2
  74. package/dist/chunks/{ForgotPasswordPage-Dlb6wKfC.js.map → ForgotPasswordPage-B4M6-xeM.js.map} +1 -1
  75. package/dist/chunks/{ForgotPasswordPage-DffYfXva.js → ForgotPasswordPage-MIu-U7p0.js} +2 -2
  76. package/dist/chunks/{ForgotPasswordPage-DffYfXva.js.map → ForgotPasswordPage-MIu-U7p0.js.map} +1 -1
  77. package/dist/chunks/{GroupDetailPage-C9nRbeHI.js → GroupDetailPage-4XK3Bs_r.js} +5 -5
  78. package/dist/chunks/{GroupDetailPage-C9nRbeHI.js.map → GroupDetailPage-4XK3Bs_r.js.map} +1 -1
  79. package/dist/chunks/{GroupDetailPage-CPPUWzXf.js → GroupDetailPage-C-kvtd2T.js} +2 -2
  80. package/dist/chunks/{GroupDetailPage-CPPUWzXf.js.map → GroupDetailPage-C-kvtd2T.js.map} +1 -1
  81. package/dist/chunks/{MyAccessRequestsPage-BAX0xwJX.js → MyAccessRequestsPage-CP41FzHi.js} +2 -2
  82. package/dist/chunks/{MyAccessRequestsPage-BAX0xwJX.js.map → MyAccessRequestsPage-CP41FzHi.js.map} +1 -1
  83. package/dist/chunks/{MyAccessRequestsPage-BMY1V631.js → MyAccessRequestsPage-DzrXTrVi.js} +2 -2
  84. package/dist/chunks/{MyAccessRequestsPage-BMY1V631.js.map → MyAccessRequestsPage-DzrXTrVi.js.map} +1 -1
  85. package/dist/chunks/{MyTenantsPage-Bbn4HxN2.js → MyTenantsPage-CZRkMbh8.js} +2 -2
  86. package/dist/chunks/{MyTenantsPage-Bbn4HxN2.js.map → MyTenantsPage-CZRkMbh8.js.map} +1 -1
  87. package/dist/chunks/{MyTenantsPage-BHtp67SD.js → MyTenantsPage-V_SwYio2.js} +3 -3
  88. package/dist/chunks/{MyTenantsPage-BHtp67SD.js.map → MyTenantsPage-V_SwYio2.js.map} +1 -1
  89. package/dist/chunks/{MyTicketsPage-BvZeiTXu.js → MyTicketsPage-DOUhaLal.js} +2 -2
  90. package/dist/chunks/{MyTicketsPage-BvZeiTXu.js.map → MyTicketsPage-DOUhaLal.js.map} +1 -1
  91. package/dist/chunks/{MyTicketsPage-D9IGVofj.js → MyTicketsPage-DnvAIeyr.js} +2 -2
  92. package/dist/chunks/{MyTicketsPage-D9IGVofj.js.map → MyTicketsPage-DnvAIeyr.js.map} +1 -1
  93. package/dist/chunks/{NavigationAppsPage-DiPBCsAF.js → NavigationAppsPage-DXvpLsbt.js} +2 -2
  94. package/dist/chunks/{NavigationAppsPage-DiPBCsAF.js.map → NavigationAppsPage-DXvpLsbt.js.map} +1 -1
  95. package/dist/chunks/{NavigationAppsPage-ChtMK1yt.js → NavigationAppsPage-DfTa4jCG.js} +2 -2
  96. package/dist/chunks/{NavigationAppsPage-ChtMK1yt.js.map → NavigationAppsPage-DfTa4jCG.js.map} +1 -1
  97. package/dist/chunks/{NotificationsPage-BxCiGzHk.js → NotificationsPage-D76MdAs-.js} +2 -2
  98. package/dist/chunks/{NotificationsPage-BxCiGzHk.js.map → NotificationsPage-D76MdAs-.js.map} +1 -1
  99. package/dist/chunks/{NotificationsPage-BCnL9oPb.js → NotificationsPage-I1yCk7tk.js} +2 -2
  100. package/dist/chunks/{NotificationsPage-BCnL9oPb.js.map → NotificationsPage-I1yCk7tk.js.map} +1 -1
  101. package/dist/chunks/{OnboardingWizardPage-CV_cxq7k.js → OnboardingWizardPage-BRUzcl1A.js} +2 -2
  102. package/dist/chunks/{OnboardingWizardPage-CV_cxq7k.js.map → OnboardingWizardPage-BRUzcl1A.js.map} +1 -1
  103. package/dist/chunks/{OnboardingWizardPage-Du-tQ2ag.js → OnboardingWizardPage-DtWUPCh3.js} +2 -2
  104. package/dist/chunks/{OnboardingWizardPage-Du-tQ2ag.js.map → OnboardingWizardPage-DtWUPCh3.js.map} +1 -1
  105. package/dist/chunks/{PermissionDetailPage-C1iuWv0G.js → PermissionDetailPage-CUNKbl7t.js} +2 -2
  106. package/dist/chunks/{PermissionDetailPage-C1iuWv0G.js.map → PermissionDetailPage-CUNKbl7t.js.map} +1 -1
  107. package/dist/chunks/{PermissionDetailPage-Ds4Jt1os.js → PermissionDetailPage-DJJGbXoX.js} +2 -2
  108. package/dist/chunks/{PermissionDetailPage-Ds4Jt1os.js.map → PermissionDetailPage-DJJGbXoX.js.map} +1 -1
  109. package/dist/chunks/{PermissionsPage-BGI2nxCn.js → PermissionsPage-B8wmawPV.js} +2 -2
  110. package/dist/chunks/{PermissionsPage-BGI2nxCn.js.map → PermissionsPage-B8wmawPV.js.map} +1 -1
  111. package/dist/chunks/{PermissionsPage-sauv7ct1.js → PermissionsPage-Dbjcctuh.js} +2 -2
  112. package/dist/chunks/{PermissionsPage-sauv7ct1.js.map → PermissionsPage-Dbjcctuh.js.map} +1 -1
  113. package/dist/chunks/{PortalDashboardPage-CQWEcghD.js → PortalDashboardPage-BeNfBZmb.js} +2 -2
  114. package/dist/chunks/{PortalDashboardPage-CQWEcghD.js.map → PortalDashboardPage-BeNfBZmb.js.map} +1 -1
  115. package/dist/chunks/{PortalDashboardPage-2kCbJw9w.js → PortalDashboardPage-zii0ll57.js} +2 -2
  116. package/dist/chunks/{PortalDashboardPage-2kCbJw9w.js.map → PortalDashboardPage-zii0ll57.js.map} +1 -1
  117. package/dist/chunks/{PreferencesPage-Bu4gaDRb.js → PreferencesPage-BCpuIGzv.js} +2 -2
  118. package/dist/chunks/{PreferencesPage-Bu4gaDRb.js.map → PreferencesPage-BCpuIGzv.js.map} +1 -1
  119. package/dist/chunks/{PreferencesPage-Dbg0bEYD.js → PreferencesPage-BmvrBaAD.js} +2 -2
  120. package/dist/chunks/{PreferencesPage-Dbg0bEYD.js.map → PreferencesPage-BmvrBaAD.js.map} +1 -1
  121. package/dist/chunks/{ProfilePage-C5QS7tsh.js → ProfilePage-eowQd59_.js} +2 -2
  122. package/dist/chunks/{ProfilePage-C5QS7tsh.js.map → ProfilePage-eowQd59_.js.map} +1 -1
  123. package/dist/chunks/{ProfilePage-DfiBhOUt.js → ProfilePage-mf5wI0-n.js} +2 -2
  124. package/dist/chunks/{ProfilePage-DfiBhOUt.js.map → ProfilePage-mf5wI0-n.js.map} +1 -1
  125. package/dist/chunks/{ReferencesManagementPage-Bs0mapj8.js → ReferencesManagementPage-8UPgkVE8.js} +3 -3
  126. package/dist/chunks/{ReferencesManagementPage-Bs0mapj8.js.map → ReferencesManagementPage-8UPgkVE8.js.map} +1 -1
  127. package/dist/chunks/{ReferencesManagementPage-C0RgHbJb.js → ReferencesManagementPage-CLsaUNqA.js} +2 -2
  128. package/dist/chunks/{ReferencesManagementPage-C0RgHbJb.js.map → ReferencesManagementPage-CLsaUNqA.js.map} +1 -1
  129. package/dist/chunks/{RegisterPage-DS1chV_A.js → RegisterPage-57X-ILDb.js} +2 -2
  130. package/dist/chunks/{RegisterPage-DS1chV_A.js.map → RegisterPage-57X-ILDb.js.map} +1 -1
  131. package/dist/chunks/{RegisterPage-DoeIiJt0.js → RegisterPage-CNyHSbqs.js} +2 -2
  132. package/dist/chunks/{RegisterPage-DoeIiJt0.js.map → RegisterPage-CNyHSbqs.js.map} +1 -1
  133. package/dist/chunks/{ResetPasswordPage-3KEk3zj5.js → ResetPasswordPage-CyV8l-Zo.js} +2 -2
  134. package/dist/chunks/{ResetPasswordPage-3KEk3zj5.js.map → ResetPasswordPage-CyV8l-Zo.js.map} +1 -1
  135. package/dist/chunks/{ResetPasswordPage-C_VQSFB5.js → ResetPasswordPage-JW8-mh_k.js} +2 -2
  136. package/dist/chunks/{ResetPasswordPage-C_VQSFB5.js.map → ResetPasswordPage-JW8-mh_k.js.map} +1 -1
  137. package/dist/chunks/{ResolutionModal-S6URD--N.js → ResolutionModal-CjwE73NX.js} +2 -2
  138. package/dist/chunks/{ResolutionModal-S6URD--N.js.map → ResolutionModal-CjwE73NX.js.map} +1 -1
  139. package/dist/chunks/{ResolutionModal-BzI1x79r.js → ResolutionModal-wddG59kg.js} +2 -2
  140. package/dist/chunks/{ResolutionModal-BzI1x79r.js.map → ResolutionModal-wddG59kg.js.map} +1 -1
  141. package/dist/chunks/{RoleDetailPage-SXK9cq_3.js → RoleDetailPage-CrioVHFI.js} +3 -3
  142. package/dist/chunks/{RoleDetailPage-SXK9cq_3.js.map → RoleDetailPage-CrioVHFI.js.map} +1 -1
  143. package/dist/chunks/{RoleDetailPage-DvEEWPKr.js → RoleDetailPage-TUOGR1ow.js} +2 -2
  144. package/dist/chunks/{RoleDetailPage-DvEEWPKr.js.map → RoleDetailPage-TUOGR1ow.js.map} +1 -1
  145. package/dist/chunks/{RolesPage-B75lCugt.js → RolesPage-CAcols3D.js} +2 -2
  146. package/dist/chunks/{RolesPage-B75lCugt.js.map → RolesPage-CAcols3D.js.map} +1 -1
  147. package/dist/chunks/{RolesPage-C5gYJxAl.js → RolesPage-sJBWaNff.js} +2 -2
  148. package/dist/chunks/{RolesPage-C5gYJxAl.js.map → RolesPage-sJBWaNff.js.map} +1 -1
  149. package/dist/chunks/{SlaConfigPage-BqXHATb6.js → SlaConfigPage-BPGRloOS.js} +2 -2
  150. package/dist/chunks/{SlaConfigPage-BqXHATb6.js.map → SlaConfigPage-BPGRloOS.js.map} +1 -1
  151. package/dist/chunks/{SlaConfigPage-DZ4P1FFW.js → SlaConfigPage-D5TRn7Ir.js} +2 -2
  152. package/dist/chunks/{SlaConfigPage-DZ4P1FFW.js.map → SlaConfigPage-D5TRn7Ir.js.map} +1 -1
  153. package/dist/chunks/{SupportPermissionsPage-B4xy_pCQ.js → SupportPermissionsPage-Dc2bWTzG.js} +2 -2
  154. package/dist/chunks/{SupportPermissionsPage-B4xy_pCQ.js.map → SupportPermissionsPage-Dc2bWTzG.js.map} +1 -1
  155. package/dist/chunks/{SupportPermissionsPage-DW7KJjYK.js → SupportPermissionsPage-UXmYLrIq.js} +2 -2
  156. package/dist/chunks/{SupportPermissionsPage-DW7KJjYK.js.map → SupportPermissionsPage-UXmYLrIq.js.map} +1 -1
  157. package/dist/chunks/{TemplatesPage-DZa0PQTE.js → TemplatesPage-dmPlqqiD.js} +2 -2
  158. package/dist/chunks/{TemplatesPage-DZa0PQTE.js.map → TemplatesPage-dmPlqqiD.js.map} +1 -1
  159. package/dist/chunks/{TemplatesPage-m5-sLJ7F.js → TemplatesPage-nTY85sNA.js} +2 -2
  160. package/dist/chunks/{TemplatesPage-m5-sLJ7F.js.map → TemplatesPage-nTY85sNA.js.map} +1 -1
  161. package/dist/chunks/{TenantCard-BJQi7Oew.js → TenantCard-BUXfstRZ.js} +2 -2
  162. package/dist/chunks/{TenantCard-BJQi7Oew.js.map → TenantCard-BUXfstRZ.js.map} +1 -1
  163. package/dist/chunks/{TenantCard-CqfifMrM.js → TenantCard-BhT-31ls.js} +2 -2
  164. package/dist/chunks/{TenantCard-CqfifMrM.js.map → TenantCard-BhT-31ls.js.map} +1 -1
  165. package/dist/chunks/{TenantScopeSelector-CdiYJvuH.js → TenantScopeSelector-3_mzBLNI.js} +2 -2
  166. package/dist/chunks/{TenantScopeSelector-CdiYJvuH.js.map → TenantScopeSelector-3_mzBLNI.js.map} +1 -1
  167. package/dist/chunks/{TenantScopeSelector-Cl5DD318.js → TenantScopeSelector-B-SRDR2R.js} +2 -2
  168. package/dist/chunks/{TenantScopeSelector-Cl5DD318.js.map → TenantScopeSelector-B-SRDR2R.js.map} +1 -1
  169. package/dist/chunks/{TicketDetailPage-BOC9rHu3.js → TicketDetailPage-B4cR3rOC.js} +2 -2
  170. package/dist/chunks/{TicketDetailPage-BOC9rHu3.js.map → TicketDetailPage-B4cR3rOC.js.map} +1 -1
  171. package/dist/chunks/{TicketDetailPage-C1UuMxD8.js → TicketDetailPage-xN3wPnFL.js} +2 -2
  172. package/dist/chunks/{TicketDetailPage-C1UuMxD8.js.map → TicketDetailPage-xN3wPnFL.js.map} +1 -1
  173. package/dist/chunks/{TicketsPage-BCgHZA-m.js → TicketsPage-CkHgXSxU.js} +2 -2
  174. package/dist/chunks/{TicketsPage-BCgHZA-m.js.map → TicketsPage-CkHgXSxU.js.map} +1 -1
  175. package/dist/chunks/{TicketsPage-BjaN4Baq.js → TicketsPage-Dwi2xpMI.js} +2 -2
  176. package/dist/chunks/{TicketsPage-BjaN4Baq.js.map → TicketsPage-Dwi2xpMI.js.map} +1 -1
  177. package/dist/chunks/{UserCreateTicketPage-ChQL1mVY.js → UserCreateTicketPage-D2a3EOey.js} +3 -3
  178. package/dist/chunks/UserCreateTicketPage-D2a3EOey.js.map +1 -0
  179. package/dist/chunks/{UserCreateTicketPage-DkjsHeV7.js → UserCreateTicketPage-bcbSLglE.js} +48 -48
  180. package/dist/chunks/UserCreateTicketPage-bcbSLglE.js.map +1 -0
  181. package/dist/chunks/{UserDashboardPage-BMYrtF3o.js → UserDashboardPage-DwnDRNoW.js} +2 -2
  182. package/dist/chunks/{UserDashboardPage-BMYrtF3o.js.map → UserDashboardPage-DwnDRNoW.js.map} +1 -1
  183. package/dist/chunks/{UserDashboardPage-81-3GJAQ.js → UserDashboardPage-ZMsx8LWw.js} +2 -2
  184. package/dist/chunks/{UserDashboardPage-81-3GJAQ.js.map → UserDashboardPage-ZMsx8LWw.js.map} +1 -1
  185. package/dist/chunks/{UserDetailPage-BMW8jAWG.js → UserDetailPage-BRFowOFL.js} +2 -2
  186. package/dist/chunks/{UserDetailPage-BMW8jAWG.js.map → UserDetailPage-BRFowOFL.js.map} +1 -1
  187. package/dist/chunks/{UserDetailPage-D6oCH2eS.js → UserDetailPage-CZyV-zsg.js} +5 -5
  188. package/dist/chunks/{UserDetailPage-D6oCH2eS.js.map → UserDetailPage-CZyV-zsg.js.map} +1 -1
  189. package/dist/chunks/{UserTicketDetailPage-ZH2BDWBt.js → UserTicketDetailPage-BstGk_BP.js} +2 -2
  190. package/dist/chunks/{UserTicketDetailPage-ZH2BDWBt.js.map → UserTicketDetailPage-BstGk_BP.js.map} +1 -1
  191. package/dist/chunks/{UserTicketDetailPage-Z_myXXJ0.js → UserTicketDetailPage-DzB_pELt.js} +2 -2
  192. package/dist/chunks/{UserTicketDetailPage-Z_myXXJ0.js.map → UserTicketDetailPage-DzB_pELt.js.map} +1 -1
  193. package/dist/chunks/{UsersGroupsPage-B8Ka6uRa.js → UsersGroupsPage-BygTv_kK.js} +3 -3
  194. package/dist/chunks/{UsersGroupsPage-B8Ka6uRa.js.map → UsersGroupsPage-BygTv_kK.js.map} +1 -1
  195. package/dist/chunks/{UsersGroupsPage-xJmGib8b.js → UsersGroupsPage-DTmhzttW.js} +2 -2
  196. package/dist/chunks/{UsersGroupsPage-xJmGib8b.js.map → UsersGroupsPage-DTmhzttW.js.map} +1 -1
  197. package/dist/chunks/{UsersPage-CQ38akZ_.js → UsersPage-DcwLyMAX.js} +2 -2
  198. package/dist/chunks/{UsersPage-CQ38akZ_.js.map → UsersPage-DcwLyMAX.js.map} +1 -1
  199. package/dist/chunks/{UsersPage-Bd2-vl39.js → UsersPage-TIqSHgHj.js} +2 -2
  200. package/dist/chunks/{UsersPage-Bd2-vl39.js.map → UsersPage-TIqSHgHj.js.map} +1 -1
  201. package/dist/chunks/{accessRequestsApi-DguOx0q0.js → accessRequestsApi-3FjMFbpa.js} +2 -2
  202. package/dist/chunks/{accessRequestsApi-DguOx0q0.js.map → accessRequestsApi-3FjMFbpa.js.map} +1 -1
  203. package/dist/chunks/{accessRequestsApi-COtWo9kC.js → accessRequestsApi-B6dsJzvH.js} +2 -2
  204. package/dist/chunks/{accessRequestsApi-COtWo9kC.js.map → accessRequestsApi-B6dsJzvH.js.map} +1 -1
  205. package/dist/chunks/{aiApi-CITiWGYX.js → aiApi-9G4wG_mT.js} +2 -2
  206. package/dist/chunks/{aiApi-CITiWGYX.js.map → aiApi-9G4wG_mT.js.map} +1 -1
  207. package/dist/chunks/{aiApi-BmZsud6O.js → aiApi-DXOdsoxr.js} +2 -2
  208. package/dist/chunks/{aiApi-BmZsud6O.js.map → aiApi-DXOdsoxr.js.map} +1 -1
  209. package/dist/chunks/{applicationAnalyticsApi-BYoEJzSN.js → applicationAnalyticsApi-D0DEp9Y-.js} +2 -2
  210. package/dist/chunks/{applicationAnalyticsApi-BYoEJzSN.js.map → applicationAnalyticsApi-D0DEp9Y-.js.map} +1 -1
  211. package/dist/chunks/{applicationAnalyticsApi-D62lc6z4.js → applicationAnalyticsApi-DhOd6idI.js} +2 -2
  212. package/dist/chunks/{applicationAnalyticsApi-D62lc6z4.js.map → applicationAnalyticsApi-DhOd6idI.js.map} +1 -1
  213. package/dist/chunks/auth-Ca2Rn6on.js +2 -0
  214. package/dist/chunks/auth-Ca2Rn6on.js.map +1 -0
  215. package/dist/chunks/auth-ClNTDOqm.js +18 -0
  216. package/dist/chunks/auth-ClNTDOqm.js.map +1 -0
  217. package/dist/chunks/auth-DECnMZjF.js +18 -0
  218. package/dist/chunks/auth-DECnMZjF.js.map +1 -0
  219. package/dist/chunks/auth-DPvxdqy4.js +18 -0
  220. package/dist/chunks/auth-DPvxdqy4.js.map +1 -0
  221. package/dist/chunks/auth-HzvnTaOm.js +2 -0
  222. package/dist/chunks/auth-HzvnTaOm.js.map +1 -0
  223. package/dist/chunks/auth-M6aNTKCH.js +2 -0
  224. package/dist/chunks/auth-M6aNTKCH.js.map +1 -0
  225. package/dist/chunks/auth-UHnAu6_e.js +2 -0
  226. package/dist/chunks/auth-UHnAu6_e.js.map +1 -0
  227. package/dist/chunks/auth-YrujJY7m.js +18 -0
  228. package/dist/chunks/auth-YrujJY7m.js.map +1 -0
  229. package/dist/chunks/{groupsApi-3CR-_g5b.js → groupsApi-Db8G2lLs.js} +2 -2
  230. package/dist/chunks/{groupsApi-3CR-_g5b.js.map → groupsApi-Db8G2lLs.js.map} +1 -1
  231. package/dist/chunks/{groupsApi-BUyBgf_N.js → groupsApi-lbxNsHFv.js} +2 -2
  232. package/dist/chunks/{groupsApi-BUyBgf_N.js.map → groupsApi-lbxNsHFv.js.map} +1 -1
  233. package/dist/chunks/{index-IJR_91Yt.js → index-BI2dc1FS.js} +2 -2
  234. package/dist/chunks/{index-IJR_91Yt.js.map → index-BI2dc1FS.js.map} +1 -1
  235. package/dist/chunks/{index-DIQ6Jmmq.js → index-Bn8HzILk.js} +4 -4
  236. package/dist/chunks/{index-DIQ6Jmmq.js.map → index-Bn8HzILk.js.map} +1 -1
  237. package/dist/chunks/{index-DA5VyW0k.js → index-CN2WRyg1.js} +2249 -2264
  238. package/dist/chunks/index-CN2WRyg1.js.map +1 -0
  239. package/dist/chunks/{index-Br2wsGE8.js → index-CTGSmYvs.js} +2 -2
  240. package/dist/chunks/{index-Br2wsGE8.js.map → index-CTGSmYvs.js.map} +1 -1
  241. package/dist/chunks/index-CUICSveU.js +2 -0
  242. package/dist/chunks/index-CUICSveU.js.map +1 -0
  243. package/dist/chunks/{index-S-X8qFYW.js → index-CgtbaFf5.js} +2 -2
  244. package/dist/chunks/{index-S-X8qFYW.js.map → index-CgtbaFf5.js.map} +1 -1
  245. package/dist/chunks/{index-_g82N2nb.js → index-D0HS542b.js} +2 -2
  246. package/dist/chunks/{index-_g82N2nb.js.map → index-D0HS542b.js.map} +1 -1
  247. package/dist/chunks/{index-BIqcvvbh.js → index-DEtq-xUL.js} +9 -8
  248. package/dist/chunks/index-DEtq-xUL.js.map +1 -0
  249. package/dist/chunks/{index-BOKR3bw6.js → index-DF93KQFR.js} +2 -2
  250. package/dist/chunks/{index-BOKR3bw6.js.map → index-DF93KQFR.js.map} +1 -1
  251. package/dist/chunks/{index-CxgEV-rT.js → index-DLekpNSE.js} +2 -2
  252. package/dist/chunks/{index-CxgEV-rT.js.map → index-DLekpNSE.js.map} +1 -1
  253. package/dist/chunks/{index-DEOBhXS_.js → index-DUS-tunb.js} +2 -2
  254. package/dist/chunks/{index-DEOBhXS_.js.map → index-DUS-tunb.js.map} +1 -1
  255. package/dist/chunks/{index-BMsjMCv9.js → index-DjC1u2hI.js} +3 -3
  256. package/dist/chunks/{index-BMsjMCv9.js.map → index-DjC1u2hI.js.map} +1 -1
  257. package/dist/chunks/{index-BxHVPJ-j.js → index-DqbVFB1H.js} +2 -2
  258. package/dist/chunks/{index-BxHVPJ-j.js.map → index-DqbVFB1H.js.map} +1 -1
  259. package/dist/chunks/{index-Djy4eIbB.js → index-DwqLhQ8S.js} +2 -2
  260. package/dist/chunks/{index-Djy4eIbB.js.map → index-DwqLhQ8S.js.map} +1 -1
  261. package/dist/chunks/{index-C1w97Ejz.js → index-HsAOBno4.js} +2 -2
  262. package/dist/chunks/{index-C1w97Ejz.js.map → index-HsAOBno4.js.map} +1 -1
  263. package/dist/chunks/{index-Czk12A3G.js → index-TiWOcC0g.js} +2 -2
  264. package/dist/chunks/{index-Czk12A3G.js.map → index-TiWOcC0g.js.map} +1 -1
  265. package/dist/chunks/{index-vXiLh35n.js → index-cAikSVW0.js} +13 -13
  266. package/dist/chunks/index-cAikSVW0.js.map +1 -0
  267. package/dist/chunks/{index-CNxx56kE.js → index-xhRXN1Jq.js} +2 -2
  268. package/dist/chunks/{index-CNxx56kE.js.map → index-xhRXN1Jq.js.map} +1 -1
  269. package/dist/chunks/{tenantIconMap-COKA97Ug.js → tenantIconMap-CHeS7oLt.js} +2 -2
  270. package/dist/chunks/{tenantIconMap-COKA97Ug.js.map → tenantIconMap-CHeS7oLt.js.map} +1 -1
  271. package/dist/chunks/{tenantIconMap-BuSQUUyZ.js → tenantIconMap-__FKj6CN.js} +2 -2
  272. package/dist/chunks/{tenantIconMap-BuSQUUyZ.js.map → tenantIconMap-__FKj6CN.js.map} +1 -1
  273. package/dist/chunks/{ticketingApi-DbREwHez.js → ticketingApi-Cj239hYB.js} +2 -2
  274. package/dist/chunks/{ticketingApi-DbREwHez.js.map → ticketingApi-Cj239hYB.js.map} +1 -1
  275. package/dist/chunks/{ticketingApi-C6EbupqP.js → ticketingApi-DF4RwD_6.js} +2 -2
  276. package/dist/chunks/{ticketingApi-C6EbupqP.js.map → ticketingApi-DF4RwD_6.js.map} +1 -1
  277. package/dist/chunks/{useAccessRequests-vucIb3_w.js → useAccessRequests-CFam8zFR.js} +3 -3
  278. package/dist/chunks/{useAccessRequests-vucIb3_w.js.map → useAccessRequests-CFam8zFR.js.map} +1 -1
  279. package/dist/chunks/{useAccessRequests-C0dY6y-4.js → useAccessRequests-CViOUwyF.js} +2 -2
  280. package/dist/chunks/{useAccessRequests-C0dY6y-4.js.map → useAccessRequests-CViOUwyF.js.map} +1 -1
  281. package/dist/chunks/{useUserAccessRequests-BBcw1Rk9.js → useUserAccessRequests-B-Cs6NX1.js} +2 -2
  282. package/dist/chunks/{useUserAccessRequests-BBcw1Rk9.js.map → useUserAccessRequests-B-Cs6NX1.js.map} +1 -1
  283. package/dist/chunks/{useUserAccessRequests-Cj0nkesW.js → useUserAccessRequests-CslSQeBJ.js} +2 -2
  284. package/dist/chunks/{useUserAccessRequests-Cj0nkesW.js.map → useUserAccessRequests-CslSQeBJ.js.map} +1 -1
  285. package/dist/contexts/AuthContext.d.ts.map +1 -1
  286. package/dist/pages/LoginPage.d.ts.map +1 -1
  287. package/dist/pages/platform/administration/tenants/TenantDetailPage.d.ts.map +1 -1
  288. package/dist/pages/platform/support/UserCreateTicketPage.d.ts.map +1 -1
  289. package/dist/services/api/apiClient.d.ts.map +1 -1
  290. package/dist/services/support/ticketDraftService.d.ts.map +1 -1
  291. package/dist/smartstack.cjs +1 -1
  292. package/dist/smartstack.js +6 -6
  293. package/dist/utils/permissions.generated.d.ts +288 -0
  294. package/dist/utils/permissions.generated.d.ts.map +1 -0
  295. package/dist/utils/uuid.d.ts +6 -0
  296. package/dist/utils/uuid.d.ts.map +1 -0
  297. package/package.json +1 -1
  298. package/dist/chunks/UserCreateTicketPage-ChQL1mVY.js.map +0 -1
  299. package/dist/chunks/UserCreateTicketPage-DkjsHeV7.js.map +0 -1
  300. package/dist/chunks/auth-B-hELPDB.js +0 -2
  301. package/dist/chunks/auth-B-hELPDB.js.map +0 -1
  302. package/dist/chunks/auth-BYaMuq7D.js +0 -16
  303. package/dist/chunks/auth-BYaMuq7D.js.map +0 -1
  304. package/dist/chunks/auth-C5zpZ9k7.js +0 -2
  305. package/dist/chunks/auth-C5zpZ9k7.js.map +0 -1
  306. package/dist/chunks/auth-CDpRMVv1.js +0 -16
  307. package/dist/chunks/auth-CDpRMVv1.js.map +0 -1
  308. package/dist/chunks/auth-CyPkCta2.js +0 -2
  309. package/dist/chunks/auth-CyPkCta2.js.map +0 -1
  310. package/dist/chunks/auth-DL47kvnl.js +0 -2
  311. package/dist/chunks/auth-DL47kvnl.js.map +0 -1
  312. package/dist/chunks/auth-Diiv90i1.js +0 -16
  313. package/dist/chunks/auth-Diiv90i1.js.map +0 -1
  314. package/dist/chunks/auth-rog9MvUr.js +0 -16
  315. package/dist/chunks/auth-rog9MvUr.js.map +0 -1
  316. package/dist/chunks/index-BIqcvvbh.js.map +0 -1
  317. package/dist/chunks/index-DA5VyW0k.js.map +0 -1
  318. package/dist/chunks/index-Dht6EQW1.js +0 -2
  319. package/dist/chunks/index-Dht6EQW1.js.map +0 -1
  320. package/dist/chunks/index-vXiLh35n.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("react"),fe=require("react-router-dom"),ke=require("react-i18next"),v=require("./index-vXiLh35n.js"),a=require("lucide-react"),Ue=require("./groupsApi-BUyBgf_N.js"),ee=require("./PermissionPopover-CtYTz7MK.js"),Ge={"*":e.jsx(a.Shield,{className:"h-3 w-3"}),read:e.jsx(a.Eye,{className:"h-3 w-3"}),create:e.jsx(a.Plus,{className:"h-3 w-3"}),update:e.jsx(a.Edit,{className:"h-3 w-3"}),delete:e.jsx(a.Trash2,{className:"h-3 w-3"}),assign:e.jsx(a.UserPlus,{className:"h-3 w-3"}),execute:e.jsx(a.Play,{className:"h-3 w-3"})},Me={"*":"bg-[var(--accent-bg)] text-[var(--accent-text)] border-[var(--accent-border)]",read:"bg-[var(--info-bg)] text-[var(--info-text)] border-[var(--info-border)]",create:"bg-[var(--success-bg)] text-[var(--success-text)] border-[var(--success-border)]",update:"bg-[var(--warning-bg)] text-[var(--warning-text)] border-[var(--warning-border)]",delete:"bg-[var(--error-bg)] text-[var(--error-text)] border-[var(--error-border)]",assign:"bg-[var(--accent-bg)] text-[var(--accent-text)] border-[var(--accent-border)]",execute:"bg-[var(--warning-bg)] text-[var(--warning-text)] border-[var(--warning-border)]"};function Ie(s,l,p){return s.filter(c=>l==="all"||c.application===l).map(c=>({...c,modules:c.modules.filter(S=>p==="all"||S.module.moduleLabel===p)})).filter(c=>c.modules.length>0)}function Oe(s,l,p){return s.map(c=>({...c,modules:c.modules.filter(S=>{const{status:R}=p(S);return l.has(R)})})).filter(c=>c.modules.length>0)}function ze({section:s,resources:l,moduleIndex:p,sectionIndex:c,collapsedSections:S,renderResourceRow:R}){const G=l.length>0,M=S.has(s.id);return e.jsxs(n.Fragment,{children:[R(s,p+c+1,"section",G,M),G&&!M&&l.map((W,m)=>R(W,p+c+m+2,"resource",!1,!1))]},s.id)}function Be({roleId:s}){const{t:l}=ke.useTranslation("admin"),{user:p}=v.useAuth(),{collapsedApps:c,toggleApp:S}=v.useCollapsibleState(),[R,G]=n.useState(new Set),[M,W]=n.useState(new Set),[m,ie]=n.useState(new Set),[re,b]=n.useState(null),[T,y]=n.useState("all"),[h,D]=n.useState("all"),se=n.useMemo(()=>p?v.hasFullAccess(p.permissions):!1,[p]),{loading:je,error:ce,roles:N,filteredResources:q,hasChanges:H,saving:k,saveSuccess:_,saveError:X,togglePermission:g,saveChanges:w,resetChanges:K,getPermissionInheritance:P}=v.usePermissionMatrix({canEditSystemRoles:se}),x=n.useMemo(()=>N.find(t=>t.id===s),[N,s]),f=n.useMemo(()=>!(!x||x.isSystem&&!se),[x,se]),$=t=>{ie(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},V=t=>{G(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},de=t=>{W(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},I=n.useMemo(()=>{const t=[],d=[];return q.forEach(o=>{if(o.level==="module"){const u=o.applicationLabel;t.find(C=>C.app===u)||t.push({app:o.applicationLabel,label:o.applicationLabel}),d.push({app:o.applicationLabel,module:o.moduleLabel,label:o.moduleLabel})}}),{applications:t.sort((o,u)=>o.label.localeCompare(u.label)),modules:d.sort((o,u)=>o.label.localeCompare(u.label))}},[q]),ye=n.useCallback(t=>{!x||!f||g(x.id,t)},[x,f,g]),Y=n.useCallback(t=>{if(!x)return!1;const d=P(x.id,t);return d.isDirect||d.isInherited},[x,P]),me=n.useCallback(t=>ee.calculateModuleWithSectionsStatus(t.module,t.sections,Y),[Y]),xe=n.useCallback(t=>ee.calculatePermissionStatus(t,Y),[Y]),J=n.useCallback(t=>x?t.permissions.filter(d=>{const o=P(x.id,d.id);return o.isDirect||o.isInherited}).map(d=>d.action):[],[x,P]),te=n.useCallback(t=>Ie(t,T,h),[T,h]),F=n.useCallback(t=>m.size===0?t:Oe(t,m,me),[m,me]),O=n.useMemo(()=>{let t=ee.groupByApplicationWithSections(q);return t=te(t),t=F(t),t},[q,te,F]),ae=n.useMemo(()=>O.reduce((t,d)=>t+d.modules.length,0),[O]),ue=n.useCallback((t,d)=>{d==="module"?V(t):d==="section"&&de(t)},[V,de]),ve=t=>{b(re===t?null:t)};if(je)return e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsxs("div",{className:"text-center",children:[e.jsx(a.Loader2,{className:"h-8 w-8 animate-spin text-[var(--color-accent-500)] mx-auto mb-4"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:l("userPermissions.loading")})]})});if(ce)return e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("p",{className:"text-[var(--error-text)]",children:ce})]})});if(!x)return e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:l("roleDetail.notFound")});const pe=t=>t==="resource"?e.jsx(a.Database,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):t==="section"?e.jsx(a.FileText,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):e.jsx(a.Box,{className:"h-3.5 w-3.5 text-[var(--text-secondary)]"}),Ne=t=>t==="resource"?"text-[var(--text-muted)] italic":t==="section"?"text-[var(--text-secondary)]":"font-medium text-[var(--text-primary)]",Q=t=>t==="resource"?"pl-28":t==="section"?"pl-22":"pl-16",we=(t,d,o,u)=>t?e.jsx("button",{onClick:()=>ue(d,o),className:"p-0.5 hover:bg-[var(--bg-hover)] rounded",children:u?e.jsx(a.ChevronRight,{className:"h-3 w-3 text-[var(--text-muted)]"}):e.jsx(a.ChevronDown,{className:"h-3 w-3 text-[var(--text-muted)]"})}):null,Ce=t=>t.length===0?e.jsx("span",{className:"text-xs text-[var(--text-muted)] italic",children:l("assignments.noPermissions")}):t.map(d=>{const o=Me[d]||"bg-[var(--bg-secondary)] text-[var(--text-secondary)] border-[var(--border-color)]",u=Ge[d]||e.jsx(a.Eye,{className:"h-3 w-3"});return e.jsxs("div",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 rounded-[var(--radius-badge)] border text-xs font-medium ${o}`,title:l(`assignments.actions.${d==="*"?"all":d}.description`),children:[u,e.jsx("span",{className:"capitalize",children:l(`assignments.actions.${d==="*"?"all":d}.label`)})]},d)}),be=(t,d,o,u=!1,C=!1)=>{const{status:A,grantedCount:E}=xe(t),U=re===t.id,z=n.createRef(),j=ee.getPermissionCellBackground(A),le=J(t),L=Q(o),Z=d%2===0?"item-light":"item-medium";return e.jsxs("tr",{className:`hover:bg-[var(--bg-hover)] ${Z}`,children:[e.jsx("td",{className:`sticky left-0 z-10 ${Z} px-3 py-2 ${L}`,style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("div",{className:"flex items-center gap-2",children:[we(u,t.id,o,C),pe(o),e.jsx("span",{className:`text-sm ${Ne(o)}`,children:t.moduleLabel}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",t.permissions.length,")"]})]})}),e.jsxs("td",{className:`px-0 py-1 text-center relative ${j}`,style:{width:"60px",minWidth:"60px",maxWidth:"60px"},children:[e.jsx("button",{ref:z,type:"button",onClick:()=>f&&ve(t.id),disabled:!f,className:`w-full h-full min-h-[36px] flex items-center justify-center rounded transition-colors ${f?"hover:opacity-80":"cursor-not-allowed opacity-50"} ${U?"ring-2 ring-[var(--color-accent-500)]":""}`,title:f?`${x.name} - ${t.moduleLabel}: ${E}/${t.permissions.length}`:`${x.name} - ${l("assignments.systemRoleReadOnly")}`,children:e.jsx(ee.PermissionStatusIndicator,{status:A,grantedCount:E,totalCount:t.permissions.length})}),U&&f&&e.jsx(ee.PermissionPopover,{mode:"editable",role:x,resource:t,onTogglePermission:ye,onClose:()=>b(null),getPermissionInheritance:(he,ge)=>P(x.id,ge)})]}),e.jsx("td",{className:"px-3 py-2",children:e.jsx("div",{className:"flex flex-wrap gap-1.5",children:Ce(le)})})]},t.id)};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"min-h-[52px]",children:[_&&e.jsx("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Check,{className:"h-4 w-4 text-[var(--success-text)]"}),e.jsx("p",{className:"text-sm text-[var(--success-text)] font-medium",children:l("common.savedSuccessfully","Sauvegardé avec succès !")})]})}),!_&&k&&e.jsx("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--info-bg)] border border-[var(--info-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Loader2,{className:"h-4 w-4 animate-spin text-[var(--info-text)]"}),e.jsx("p",{className:"text-sm text-[var(--info-text)] font-medium",children:l("common.saving","Sauvegarde en cours...")})]})}),!_&&!k&&H&&e.jsxs("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx("p",{className:"text-sm text-[var(--warning-text)]",children:l("assignments.unsavedChanges","You have unsaved changes")}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:K,disabled:k,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-[var(--radius-button)] bg-[var(--bg-secondary)] border border-[var(--border-color)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-50",children:[e.jsx(a.X,{className:"h-4 w-4"}),l("common.cancel")]}),e.jsxs("button",{onClick:w,disabled:k,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50",children:[k?e.jsx(a.Loader2,{className:"h-4 w-4 animate-spin"}):e.jsx(a.Save,{className:"h-4 w-4"}),l("common.save")]})]})]}),!_&&!k&&!H&&e.jsx("div",{className:"h-[52px]"})]}),X&&e.jsx("div",{className:"p-3 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.AlertCircle,{className:"h-4 w-4 text-[var(--error-text)]"}),e.jsx("p",{className:"text-sm text-[var(--error-text)]",children:X})]})}),e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("label",{className:"text-sm text-[var(--text-secondary)]",children:[l("userPermissions.filters.application"),":"]}),e.jsxs("select",{value:T,onChange:t=>{y(t.target.value),D("all")},className:"px-3 py-1.5 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-[var(--radius-input)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:l("userPermissions.filters.allApplications")}),I.applications.map(t=>e.jsx("option",{value:t.app,children:t.label},t.app))]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("label",{className:"text-sm text-[var(--text-secondary)]",children:[l("userPermissions.filters.module"),":"]}),e.jsxs("select",{value:h,onChange:t=>D(t.target.value),className:"px-3 py-1.5 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-[var(--radius-input)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:l("userPermissions.filters.allModules")}),I.modules.filter(t=>T==="all"||t.app===T).map(t=>e.jsx("option",{value:t.module,children:t.label},`${t.app}:${t.module}`))]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("span",{className:"text-sm font-medium text-[var(--text-secondary)]",children:[l("userPermissions.filterByStatus"),":"]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("button",{onClick:()=>$("all"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("all")?"bg-[var(--success-bg)] border-[var(--success-border)] text-[var(--success-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--success-border)]"}`,children:[e.jsx(a.Check,{className:`h-3.5 w-3.5 ${m.has("all")?"":"text-[var(--success-dot)]"}`}),l("assignments.complete")]}),e.jsxs("button",{onClick:()=>$("some"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("some")?"bg-[var(--warning-bg)] border-[var(--warning-border)] text-[var(--warning-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--warning-border)]"}`,children:[e.jsx(a.Star,{className:`h-3.5 w-3.5 ${m.has("some")?"":"text-[var(--warning-dot)]"}`}),l("assignments.partial")]}),e.jsxs("button",{onClick:()=>$("read-only"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("read-only")?"bg-[var(--info-bg)] border-[var(--info-border)] text-[var(--info-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--info-border)]"}`,children:[e.jsx(a.Eye,{className:`h-3.5 w-3.5 ${m.has("read-only")?"":"text-[var(--info-dot)]"}`}),l("assignments.readOnly")]}),e.jsxs("button",{onClick:()=>$("none"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("none")?"bg-[var(--error-bg)] border-[var(--error-border)] text-[var(--error-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--error-border)]"}`,children:[e.jsx(a.Ban,{className:`h-3.5 w-3.5 ${m.has("none")?"":"text-[var(--text-muted)]"}`}),l("assignments.none")]})]}),m.size>0&&e.jsx("button",{onClick:()=>ie(new Set),className:"text-xs text-[var(--color-accent-500)] hover:text-[var(--color-accent-600)] underline",children:l("assignments.clearFilters")})]}),e.jsx("div",{className:"flex items-center gap-3",children:e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:[ae," ",l("assignments.modules")]})}),e.jsx("div",{className:"overflow-x-auto overflow-y-visible",children:e.jsxs("table",{className:"border-collapse",style:{width:"auto"},children:[e.jsx("thead",{className:"item-medium border-b border-[var(--item-color-border)]",children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",className:"sticky left-0 z-20 item-medium px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"280px",minWidth:"280px",maxWidth:"280px",height:"48px",verticalAlign:"middle"},children:l("assignments.resource")}),e.jsx("th",{scope:"col",className:"px-2 text-center text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"60px",minWidth:"60px",maxWidth:"60px",height:"48px",verticalAlign:"middle"},children:l("userPermissions.status")}),e.jsx("th",{scope:"col",className:"px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{height:"48px",verticalAlign:"middle"},children:l("assignments.permissions")})]})}),e.jsx("tbody",{className:"divide-y divide-[var(--item-color-border)]",children:O.map(t=>{const d=t.application,o=c.has(d);return e.jsxs(n.Fragment,{children:[e.jsxs("tr",{className:"bg-[var(--bg-tertiary)]",children:[e.jsx("td",{className:"sticky left-0 z-10 px-3 py-2 bg-[var(--bg-tertiary)]",style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("button",{onClick:()=>S(d),className:"flex items-center gap-3 w-full text-left hover:opacity-80",children:[o?e.jsx(a.ChevronRight,{className:"h-4 w-4 text-[var(--text-secondary)]"}):e.jsx(a.ChevronDown,{className:"h-4 w-4 text-[var(--text-secondary)]"}),e.jsx(a.FolderOpen,{className:"h-4 w-4 text-[var(--text-secondary)]"}),e.jsx("span",{className:"text-sm font-semibold text-[var(--text-primary)]",children:t.application}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)] ml-auto",children:[t.modules.length," module",t.modules.length>1?"s":""]})]})}),e.jsx("td",{className:"px-0 py-2"}),e.jsx("td",{className:"px-0 py-2"})]}),!o&&t.modules.map((u,C)=>{const{module:A,sections:E}=u,U=E.length>0,z=R.has(A.id);return e.jsxs(n.Fragment,{children:[be(A,C,"module",U,z),U&&!z&&E.map((j,le)=>{const{section:L,resources:Z}=j;return e.jsx(ze,{section:L,resources:Z,moduleIndex:C,sectionIndex:le,collapsedSections:M,renderResourceRow:be},L.id)})]},A.id)})]},d)})})]})}),ae===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:l("assignments.noResources")})]})}const De=[{code:"fr",label:"Français"},{code:"en",label:"English"},{code:"it",label:"Italiano"},{code:"de",label:"Deutsch"}];function We(){const{t:s}=ke.useTranslation("admin"),{id:l}=fe.useParams(),p=fe.useNavigate(),[c,S]=n.useState(null),[R,G]=n.useState(!0),[M,W]=n.useState(!1),[m,ie]=n.useState("info"),[re,b]=n.useState(null),[T,y]=n.useState(null),[h,D]=n.useState({name:"",shortName:"",category:"Custom",description:"",parentRoleId:null}),[se,je]=n.useState([]),ce=["Global","Admin","Manager","Contributor","Viewer","Custom"],[N,q]=n.useState([]),[H,k]=n.useState(!1),[_,X]=n.useState(null),[g,w]=n.useState({name:"",shortName:"",description:""}),[K,P]=n.useState(!1),[x,f]=n.useState(!1),[$,V]=n.useState(""),[de,I]=n.useState(!1),[ye,Y]=n.useState([]),[me,xe]=n.useState(!1),[J,te]=n.useState(""),[F,O]=n.useState(null),[ae,ue]=n.useState(!1),[ve,pe]=n.useState(null),[Ne,Q]=n.useState(!1),[we,Ce]=n.useState([]),[be,t]=n.useState(!1),[d,o]=n.useState(""),[u,C]=n.useState(null),[A,E]=n.useState(!1),[U,z]=n.useState(null),j=n.useCallback(async()=>{if(l)try{G(!0);const[r,i]=await Promise.all([v.adminApi.roles.getById(l),v.adminApi.roles.getAll()]);S(r),je(i.filter(ne=>ne.id!==l)),D({name:r.name,shortName:r.shortName,category:r.category,description:r.description||"",parentRoleId:r.parentRoleId})}catch(r){console.error("Failed to load role:",r),b(s("roleDetail.errors.loadFailed"))}finally{G(!1)}},[l,s]);n.useEffect(()=>{j()},[j]);const le=async r=>{if(r.preventDefault(),!(!l||!c)){W(!0),b(null),y(null);try{const i={name:h.name,shortName:h.shortName,category:h.category,description:h.description||void 0,parentRoleId:h.parentRoleId||void 0};await v.adminApi.roles.update(l,i),y(s("roleDetail.success.saved")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{W(!1)}}},L=n.useCallback(async()=>{if(l){k(!0);try{const r=await v.adminApi.roles.getTranslations(l);q(r)}catch(r){console.error("Failed to load translations:",r)}finally{k(!1)}}},[l]);n.useEffect(()=>{m==="translations"&&N.length===0&&L()},[m,N.length,L]);const Z=r=>{X(r.languageCode),w({name:r.name,shortName:r.shortName,description:r.description||""})},he=()=>{X(null),f(!1),w({name:"",shortName:"",description:""}),V("")},ge=async r=>{if(l){P(!0),b(null);try{await v.adminApi.roles.upsertTranslation(l,r,g),y(s("roleDetail.translations.saved")),X(null),f(!1),V(""),L()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{P(!1)}}},Ae=async r=>{if(l&&confirm(s("roleDetail.translations.confirmDelete")))try{await v.adminApi.roles.deleteTranslation(l,r),y(s("roleDetail.translations.deleted")),L()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}},Se=De.filter(r=>!N.some(i=>i.languageCode===r.code)),Le=async()=>{I(!0),O(null),te(""),xe(!0);try{const r=await v.adminApi.users.getAll({globalScope:!0});Y(r.items)}catch(r){console.error("Failed to load users:",r)}finally{xe(!1)}},Re=async()=>{if(!(!l||!F)){ue(!0);try{await v.adminApi.roles.assignUser(l,F),I(!1),O(null),y(s("roleDetail.users.assigned")),j()}catch(r){b(r instanceof Error?r.message:s("roleDetail.errors.assignFailed"))}finally{ue(!1)}}},Te=async r=>{if(l&&confirm(s("roleDetail.users.confirmRemove"))){pe(r);try{await v.adminApi.roles.removeUser(l,r),y(s("roleDetail.users.removed")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.removeFailed"))}finally{pe(null)}}},Pe=async()=>{Q(!0),C(null),o(""),t(!0);try{const r=await Ue.groupsApi.getAll();Ce(r)}catch(r){console.error("Failed to load groups:",r)}finally{t(!1)}},$e=async()=>{if(!(!l||!u)){E(!0);try{await v.adminApi.roles.assignGroup(l,u),Q(!1),C(null),y(s("roleDetail.groups.assigned")),j()}catch(r){b(r instanceof Error?r.message:s("roleDetail.errors.assignFailed"))}finally{E(!1)}}},Fe=async r=>{if(l&&confirm(s("roleDetail.groups.confirmRemove"))){z(r);try{await v.adminApi.roles.removeGroup(l,r),y(s("roleDetail.groups.removed")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.removeFailed"))}finally{z(null)}}},Ee=[{id:"info",label:s("roleDetail.tabs.info"),icon:e.jsx(a.Settings,{className:"w-4 h-4"})},{id:"permissions",label:s("roleDetail.tabs.permissions"),icon:e.jsx(a.Shield,{className:"w-4 h-4"})},{id:"users",label:s("roleDetail.tabs.users"),icon:e.jsx(a.Users,{className:"w-4 h-4"})},{id:"groups",label:s("roleDetail.tabs.groups"),icon:e.jsx(a.UsersRound,{className:"w-4 h-4"})},{id:"translations",label:s("roleDetail.tabs.translations"),icon:e.jsx(a.Languages,{className:"w-4 h-4"})}];return R?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(a.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}):c?e.jsxs("div",{className:"space-y-6",children:[e.jsx(v.Breadcrumb,{items:[{label:s("header.title"),href:"/administration"},{label:s("roles.title","Roles"),href:"/administration/permissions/roles"},{label:c?.name||"Detail"}]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>p("/administration/permissions/roles"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold text-[var(--text-primary)]",children:c.name}),c.isSystem&&e.jsxs("span",{className:"flex items-center gap-1 px-2 py-1 rounded-[var(--radius-badge)] text-xs bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(a.Lock,{className:"w-3 h-3"}),s("roles.system")]})]}),c.description&&e.jsx("p",{className:"text-sm sm:text-base text-[var(--text-secondary)] mt-1",children:c.description})]}),e.jsxs("div",{className:"flex items-center gap-4 text-sm text-[var(--text-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Users,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.users.length," ",s("roleDetail.usersCount")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.UsersRound,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.groups?.length||0," ",s("roleDetail.groupsCount")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Shield,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.permissions.length," ",s("roles.permissions")]})]})]})]}),re&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] text-[var(--error-text)] flex items-center gap-2",children:[e.jsx(a.AlertTriangle,{className:"w-5 h-5 flex-shrink-0"}),re]}),T&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)] text-[var(--success-text)] flex items-center gap-2",children:[e.jsx(a.CheckCircle,{className:"w-5 h-5 flex-shrink-0"}),T]}),e.jsx("div",{className:"flex gap-1 p-1 bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)]",children:Ee.map(r=>e.jsxs("button",{onClick:()=>ie(r.id),className:`flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] font-medium transition-colors ${m===r.id?"bg-[var(--color-accent-600)] text-white":"text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"}`,children:[r.icon,e.jsx("span",{className:"hidden sm:inline",children:r.label})]},r.id))}),e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] p-4 sm:p-6",children:[m==="info"&&e.jsxs("form",{onSubmit:le,className:"space-y-6 max-w-2xl",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.id")}),e.jsx("div",{className:"px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-tertiary)] text-[var(--text-secondary)] font-mono text-sm",children:c.id})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roles.form.name")," *"]}),e.jsx("input",{type:"text",required:!0,value:h.name,onChange:r=>D(i=>({...i,name:r.target.value})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roleDetail.info.shortName")," *"]}),e.jsx("input",{type:"text",required:!0,value:h.shortName,onChange:r=>D(i=>({...i,shortName:r.target.value})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.shortNameHelp")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roleDetail.info.category")," *"]}),e.jsx("select",{value:h.category,onChange:r=>D(i=>({...i,category:r.target.value})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",children:ce.map(r=>e.jsx("option",{value:r,children:s(`roleDetail.categories.${r.toLowerCase()}`)},r))}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.categoryHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.parentRole")}),e.jsxs("select",{value:h.parentRoleId||"",onChange:r=>D(i=>({...i,parentRoleId:r.target.value||null})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"",children:s("roleDetail.info.noParent")}),se.map(r=>e.jsxs("option",{value:r.id,children:[r.name," (",s(`roleDetail.categories.${r.category.toLowerCase()}`),")"]},r.id))]}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.parentRoleHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roles.form.description")}),e.jsx("textarea",{value:h.description,onChange:r=>D(i=>({...i,description:r.target.value})),rows:3,className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] resize-none"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.systemRole")}),e.jsx("div",{className:"flex items-center gap-2",children:c.isSystem?e.jsxs("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-[var(--radius-badge)] text-sm bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(a.Lock,{className:"w-4 h-4"}),s("roleDetail.info.isSystemRole")]}):e.jsx("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-[var(--radius-badge)] text-sm bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:s("roleDetail.info.isCustomRole")})})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4 pt-4 border-t border-[var(--border-color)]",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.createdAt")}),e.jsx("div",{className:"text-sm text-[var(--text-primary)]",children:new Date(c.createdAt).toLocaleString()})]}),c.updatedAt&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.updatedAt")}),e.jsx("div",{className:"text-sm text-[var(--text-primary)]",children:new Date(c.updatedAt).toLocaleString()})]})]}),e.jsx("div",{className:"flex justify-end pt-4",children:e.jsxs("button",{type:"submit",disabled:M,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[M?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Save,{className:"w-4 h-4"}),s("common.save")]})})]}),m==="permissions"&&l&&e.jsx(Be,{roleId:l}),m==="groups"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.groups.title")," (",c.groups?.length||0,")"]}),e.jsxs("button",{onClick:Pe,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.groups.add")]})]}),!c.groups||c.groups.length===0?e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.groups.noGroups")}):e.jsx("div",{className:"grid gap-3",children:c.groups.map(r=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs(fe.Link,{to:`/administration/users/groups/${r.id}`,className:"flex items-center gap-4 flex-1 min-w-0 hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-accent-100)] flex items-center justify-center",children:e.jsx(a.UsersRound,{className:"w-5 h-5 text-[var(--color-accent-700)]"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)] truncate",children:r.name}),e.jsxs("div",{className:"text-sm text-[var(--text-secondary)] truncate",children:[r.membersCount," ",s("roleDetail.groups.members"),r.description&&` · ${r.description}`]})]})]}),e.jsx("button",{onClick:()=>Fe(r.id),disabled:U===r.id,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)] transition-colors disabled:opacity-50",title:s("roleDetail.groups.remove"),children:U===r.id?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Trash2,{className:"w-4 h-4"})})]},r.id))}),Ne&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:s("roleDetail.groups.addTitle")}),e.jsx("button",{onClick:()=>Q(!1),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(a.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:d,onChange:r=>o(r.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",placeholder:s("roleDetail.groups.searchPlaceholder")})]})}),be?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto",children:we.filter(r=>!c.groups?.some(i=>i.id===r.id)&&(d===""||r.name.toLowerCase().includes(d.toLowerCase())||(r.description||"").toLowerCase().includes(d.toLowerCase()))).map(r=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${u===r.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)] border border-transparent"}`,htmlFor:`group-${r.id}`,children:[e.jsx("input",{id:`group-${r.id}`,type:"radio",name:"selectedGroup",checked:u===r.id,onChange:()=>C(r.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:r.name}),e.jsxs("p",{className:"text-xs text-[var(--text-tertiary)]",children:[r.memberCount," ",s("roleDetail.groups.members"),r.description&&` · ${r.description}`]})]})]},r.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:()=>Q(!1),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] font-medium transition-colors",children:s("common.cancel")}),e.jsxs("button",{onClick:$e,disabled:!u||A,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[A&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.add")]})]})]})})]}),m==="users"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.users.title")," (",c.users.length,")"]}),e.jsxs("button",{onClick:Le,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.users.add")]})]}),c.users.length===0?e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.users.noUsers")}):e.jsx("div",{className:"grid gap-3",children:c.users.map(r=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs(fe.Link,{to:`/administration/users/${r.id}`,className:"flex items-center gap-4 flex-1 min-w-0 hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-accent-100)] flex items-center justify-center",children:e.jsx("span",{className:"text-sm font-medium text-[var(--color-accent-700)]",children:r.fullName.split(" ").map(i=>i.at(0)).join("").toUpperCase().slice(0,2)})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)] truncate",children:r.fullName}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)] truncate",children:r.email})]})]}),e.jsx("button",{onClick:()=>Te(r.id),disabled:ve===r.id,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)] transition-colors disabled:opacity-50",title:s("roleDetail.users.remove"),children:ve===r.id?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Trash2,{className:"w-4 h-4"})})]},r.id))}),de&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:s("roleDetail.users.addTitle")}),e.jsx("button",{onClick:()=>I(!1),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(a.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:J,onChange:r=>te(r.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",placeholder:s("roleDetail.users.searchPlaceholder")})]})}),me?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto",children:ye.filter(r=>!c.users.some(i=>i.id===r.id)&&(J===""||r.fullName.toLowerCase().includes(J.toLowerCase())||r.email.toLowerCase().includes(J.toLowerCase()))).map(r=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${F===r.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)] border border-transparent"}`,htmlFor:`user-${r.id}`,children:[e.jsx("input",{id:`user-${r.id}`,type:"radio",name:"selectedUser",checked:F===r.id,onChange:()=>O(r.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:r.fullName}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:r.email})]})]},r.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:()=>I(!1),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] font-medium transition-colors",children:s("common.cancel")}),e.jsxs("button",{onClick:Re,disabled:!F||ae,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[ae&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.add")]})]})]})})]}),m==="translations"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.translations.title")," (",N.length,")"]}),Se.length>0&&e.jsxs("button",{onClick:()=>f(!0),className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.translations.add")]})]}),x&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--color-accent-500)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h4",{className:"font-medium text-[var(--text-primary)]",children:s("roleDetail.translations.addNew")}),e.jsx("button",{onClick:he,className:"p-1 rounded hover:bg-[var(--bg-hover)]",children:e.jsx(a.X,{className:"w-4 h-4 text-[var(--text-secondary)]"})})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.language")}),e.jsxs("select",{value:$,onChange:r=>V(r.target.value),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:[e.jsx("option",{value:"",children:s("roleDetail.translations.selectLanguage")}),Se.map(r=>e.jsx("option",{value:r.code,children:r.label},r.code))]})]}),$&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.name")}),e.jsx("input",{type:"text",value:g.name,onChange:r=>w(i=>({...i,name:r.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.shortName")}),e.jsx("input",{type:"text",value:g.shortName,onChange:r=>w(i=>({...i,shortName:r.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.description")}),e.jsx("textarea",{value:g.description||"",onChange:r=>w(i=>({...i,description:r.target.value})),rows:2,className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] resize-none"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:he,className:"px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] text-sm font-medium",children:s("common.cancel")}),e.jsxs("button",{onClick:()=>ge($),disabled:K||!g.name||!g.shortName,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium disabled:opacity-50",children:[K&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.save")]})]})]})]})]}),H&&e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}),!H&&N.length===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.translations.noTranslations")}),!H&&N.length>0&&e.jsx("div",{className:"space-y-3",children:N.map(r=>{const i=De.find(B=>B.code===r.languageCode),ne=_===r.languageCode;return e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${ne?"bg-[var(--bg-primary)] border-[var(--color-accent-500)]":"bg-[var(--bg-primary)] border-[var(--border-color)]"}`,children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"px-2 py-0.5 text-xs font-medium rounded bg-[var(--bg-tertiary)] text-[var(--text-secondary)] uppercase",children:r.languageCode}),e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:i?.label||r.languageCode})]}),!ne&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>Z(r),className:"p-1.5 rounded hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--color-accent-600)]",title:s("common.edit"),children:e.jsx(a.Edit2,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>Ae(r.languageCode),className:"p-1.5 rounded hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)]",title:s("common.delete"),children:e.jsx(a.Trash2,{className:"w-4 h-4"})})]})]}),ne?e.jsxs("div",{className:"grid gap-3 mt-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.name")}),e.jsx("input",{type:"text",value:g.name,onChange:B=>w(oe=>({...oe,name:B.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.shortName")}),e.jsx("input",{type:"text",value:g.shortName,onChange:B=>w(oe=>({...oe,shortName:B.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.description")}),e.jsx("textarea",{value:g.description||"",onChange:B=>w(oe=>({...oe,description:B.target.value})),rows:2,className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] resize-none"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:he,className:"px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] text-sm font-medium",children:s("common.cancel")}),e.jsxs("button",{onClick:()=>ge(r.languageCode),disabled:K||!g.name||!g.shortName,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium disabled:opacity-50",children:[K&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.save")]})]})]}):e.jsxs("div",{className:"grid gap-1",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)]",children:r.name}),e.jsxs("div",{className:"text-sm text-[var(--text-secondary)]",children:[s("roleDetail.translations.shortName"),": ",r.shortName]}),r.description&&e.jsx("div",{className:"text-sm text-[var(--text-tertiary)] mt-1",children:r.description})]})]},r.languageCode)})})]})]})]}):e.jsxs("div",{className:"text-center py-12",children:[e.jsx("p",{className:"text-[var(--text-secondary)]",children:s("roleDetail.notFound")}),e.jsx("button",{onClick:()=>p("/administration/permissions/roles"),className:"mt-4 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white",children:s("roleDetail.backToList")})]})}exports.RoleDetailPage=We;
2
- //# sourceMappingURL=RoleDetailPage-DvEEWPKr.js.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("react"),fe=require("react-router-dom"),ke=require("react-i18next"),v=require("./index-cAikSVW0.js"),a=require("lucide-react"),Ue=require("./groupsApi-lbxNsHFv.js"),ee=require("./PermissionPopover-CtYTz7MK.js"),Ge={"*":e.jsx(a.Shield,{className:"h-3 w-3"}),read:e.jsx(a.Eye,{className:"h-3 w-3"}),create:e.jsx(a.Plus,{className:"h-3 w-3"}),update:e.jsx(a.Edit,{className:"h-3 w-3"}),delete:e.jsx(a.Trash2,{className:"h-3 w-3"}),assign:e.jsx(a.UserPlus,{className:"h-3 w-3"}),execute:e.jsx(a.Play,{className:"h-3 w-3"})},Me={"*":"bg-[var(--accent-bg)] text-[var(--accent-text)] border-[var(--accent-border)]",read:"bg-[var(--info-bg)] text-[var(--info-text)] border-[var(--info-border)]",create:"bg-[var(--success-bg)] text-[var(--success-text)] border-[var(--success-border)]",update:"bg-[var(--warning-bg)] text-[var(--warning-text)] border-[var(--warning-border)]",delete:"bg-[var(--error-bg)] text-[var(--error-text)] border-[var(--error-border)]",assign:"bg-[var(--accent-bg)] text-[var(--accent-text)] border-[var(--accent-border)]",execute:"bg-[var(--warning-bg)] text-[var(--warning-text)] border-[var(--warning-border)]"};function Ie(s,l,p){return s.filter(c=>l==="all"||c.application===l).map(c=>({...c,modules:c.modules.filter(S=>p==="all"||S.module.moduleLabel===p)})).filter(c=>c.modules.length>0)}function Oe(s,l,p){return s.map(c=>({...c,modules:c.modules.filter(S=>{const{status:R}=p(S);return l.has(R)})})).filter(c=>c.modules.length>0)}function ze({section:s,resources:l,moduleIndex:p,sectionIndex:c,collapsedSections:S,renderResourceRow:R}){const G=l.length>0,M=S.has(s.id);return e.jsxs(n.Fragment,{children:[R(s,p+c+1,"section",G,M),G&&!M&&l.map((W,m)=>R(W,p+c+m+2,"resource",!1,!1))]},s.id)}function Be({roleId:s}){const{t:l}=ke.useTranslation("admin"),{user:p}=v.useAuth(),{collapsedApps:c,toggleApp:S}=v.useCollapsibleState(),[R,G]=n.useState(new Set),[M,W]=n.useState(new Set),[m,ie]=n.useState(new Set),[re,b]=n.useState(null),[T,y]=n.useState("all"),[h,D]=n.useState("all"),se=n.useMemo(()=>p?v.hasFullAccess(p.permissions):!1,[p]),{loading:je,error:ce,roles:N,filteredResources:q,hasChanges:H,saving:k,saveSuccess:_,saveError:X,togglePermission:g,saveChanges:w,resetChanges:K,getPermissionInheritance:P}=v.usePermissionMatrix({canEditSystemRoles:se}),x=n.useMemo(()=>N.find(t=>t.id===s),[N,s]),f=n.useMemo(()=>!(!x||x.isSystem&&!se),[x,se]),$=t=>{ie(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},V=t=>{G(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},de=t=>{W(d=>{const o=new Set(d);return o.has(t)?o.delete(t):o.add(t),o})},I=n.useMemo(()=>{const t=[],d=[];return q.forEach(o=>{if(o.level==="module"){const u=o.applicationLabel;t.find(C=>C.app===u)||t.push({app:o.applicationLabel,label:o.applicationLabel}),d.push({app:o.applicationLabel,module:o.moduleLabel,label:o.moduleLabel})}}),{applications:t.sort((o,u)=>o.label.localeCompare(u.label)),modules:d.sort((o,u)=>o.label.localeCompare(u.label))}},[q]),ye=n.useCallback(t=>{!x||!f||g(x.id,t)},[x,f,g]),Y=n.useCallback(t=>{if(!x)return!1;const d=P(x.id,t);return d.isDirect||d.isInherited},[x,P]),me=n.useCallback(t=>ee.calculateModuleWithSectionsStatus(t.module,t.sections,Y),[Y]),xe=n.useCallback(t=>ee.calculatePermissionStatus(t,Y),[Y]),J=n.useCallback(t=>x?t.permissions.filter(d=>{const o=P(x.id,d.id);return o.isDirect||o.isInherited}).map(d=>d.action):[],[x,P]),te=n.useCallback(t=>Ie(t,T,h),[T,h]),F=n.useCallback(t=>m.size===0?t:Oe(t,m,me),[m,me]),O=n.useMemo(()=>{let t=ee.groupByApplicationWithSections(q);return t=te(t),t=F(t),t},[q,te,F]),ae=n.useMemo(()=>O.reduce((t,d)=>t+d.modules.length,0),[O]),ue=n.useCallback((t,d)=>{d==="module"?V(t):d==="section"&&de(t)},[V,de]),ve=t=>{b(re===t?null:t)};if(je)return e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsxs("div",{className:"text-center",children:[e.jsx(a.Loader2,{className:"h-8 w-8 animate-spin text-[var(--color-accent-500)] mx-auto mb-4"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:l("userPermissions.loading")})]})});if(ce)return e.jsx("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("p",{className:"text-[var(--error-text)]",children:ce})]})});if(!x)return e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:l("roleDetail.notFound")});const pe=t=>t==="resource"?e.jsx(a.Database,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):t==="section"?e.jsx(a.FileText,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):e.jsx(a.Box,{className:"h-3.5 w-3.5 text-[var(--text-secondary)]"}),Ne=t=>t==="resource"?"text-[var(--text-muted)] italic":t==="section"?"text-[var(--text-secondary)]":"font-medium text-[var(--text-primary)]",Q=t=>t==="resource"?"pl-28":t==="section"?"pl-22":"pl-16",we=(t,d,o,u)=>t?e.jsx("button",{onClick:()=>ue(d,o),className:"p-0.5 hover:bg-[var(--bg-hover)] rounded",children:u?e.jsx(a.ChevronRight,{className:"h-3 w-3 text-[var(--text-muted)]"}):e.jsx(a.ChevronDown,{className:"h-3 w-3 text-[var(--text-muted)]"})}):null,Ce=t=>t.length===0?e.jsx("span",{className:"text-xs text-[var(--text-muted)] italic",children:l("assignments.noPermissions")}):t.map(d=>{const o=Me[d]||"bg-[var(--bg-secondary)] text-[var(--text-secondary)] border-[var(--border-color)]",u=Ge[d]||e.jsx(a.Eye,{className:"h-3 w-3"});return e.jsxs("div",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 rounded-[var(--radius-badge)] border text-xs font-medium ${o}`,title:l(`assignments.actions.${d==="*"?"all":d}.description`),children:[u,e.jsx("span",{className:"capitalize",children:l(`assignments.actions.${d==="*"?"all":d}.label`)})]},d)}),be=(t,d,o,u=!1,C=!1)=>{const{status:A,grantedCount:E}=xe(t),U=re===t.id,z=n.createRef(),j=ee.getPermissionCellBackground(A),le=J(t),L=Q(o),Z=d%2===0?"item-light":"item-medium";return e.jsxs("tr",{className:`hover:bg-[var(--bg-hover)] ${Z}`,children:[e.jsx("td",{className:`sticky left-0 z-10 ${Z} px-3 py-2 ${L}`,style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("div",{className:"flex items-center gap-2",children:[we(u,t.id,o,C),pe(o),e.jsx("span",{className:`text-sm ${Ne(o)}`,children:t.moduleLabel}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",t.permissions.length,")"]})]})}),e.jsxs("td",{className:`px-0 py-1 text-center relative ${j}`,style:{width:"60px",minWidth:"60px",maxWidth:"60px"},children:[e.jsx("button",{ref:z,type:"button",onClick:()=>f&&ve(t.id),disabled:!f,className:`w-full h-full min-h-[36px] flex items-center justify-center rounded transition-colors ${f?"hover:opacity-80":"cursor-not-allowed opacity-50"} ${U?"ring-2 ring-[var(--color-accent-500)]":""}`,title:f?`${x.name} - ${t.moduleLabel}: ${E}/${t.permissions.length}`:`${x.name} - ${l("assignments.systemRoleReadOnly")}`,children:e.jsx(ee.PermissionStatusIndicator,{status:A,grantedCount:E,totalCount:t.permissions.length})}),U&&f&&e.jsx(ee.PermissionPopover,{mode:"editable",role:x,resource:t,onTogglePermission:ye,onClose:()=>b(null),getPermissionInheritance:(he,ge)=>P(x.id,ge)})]}),e.jsx("td",{className:"px-3 py-2",children:e.jsx("div",{className:"flex flex-wrap gap-1.5",children:Ce(le)})})]},t.id)};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"min-h-[52px]",children:[_&&e.jsx("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Check,{className:"h-4 w-4 text-[var(--success-text)]"}),e.jsx("p",{className:"text-sm text-[var(--success-text)] font-medium",children:l("common.savedSuccessfully","Sauvegardé avec succès !")})]})}),!_&&k&&e.jsx("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--info-bg)] border border-[var(--info-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Loader2,{className:"h-4 w-4 animate-spin text-[var(--info-text)]"}),e.jsx("p",{className:"text-sm text-[var(--info-text)] font-medium",children:l("common.saving","Sauvegarde en cours...")})]})}),!_&&!k&&H&&e.jsxs("div",{className:"flex items-center justify-between p-3 rounded-[var(--radius-card)] bg-[var(--warning-bg)] border border-[var(--warning-border)]",children:[e.jsx("p",{className:"text-sm text-[var(--warning-text)]",children:l("assignments.unsavedChanges","You have unsaved changes")}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:K,disabled:k,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-[var(--radius-button)] bg-[var(--bg-secondary)] border border-[var(--border-color)] text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-50",children:[e.jsx(a.X,{className:"h-4 w-4"}),l("common.cancel")]}),e.jsxs("button",{onClick:w,disabled:k,className:"inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white hover:bg-[var(--color-accent-700)] disabled:opacity-50",children:[k?e.jsx(a.Loader2,{className:"h-4 w-4 animate-spin"}):e.jsx(a.Save,{className:"h-4 w-4"}),l("common.save")]})]})]}),!_&&!k&&!H&&e.jsx("div",{className:"h-[52px]"})]}),X&&e.jsx("div",{className:"p-3 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.AlertCircle,{className:"h-4 w-4 text-[var(--error-text)]"}),e.jsx("p",{className:"text-sm text-[var(--error-text)]",children:X})]})}),e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("label",{className:"text-sm text-[var(--text-secondary)]",children:[l("userPermissions.filters.application"),":"]}),e.jsxs("select",{value:T,onChange:t=>{y(t.target.value),D("all")},className:"px-3 py-1.5 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-[var(--radius-input)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:l("userPermissions.filters.allApplications")}),I.applications.map(t=>e.jsx("option",{value:t.app,children:t.label},t.app))]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("label",{className:"text-sm text-[var(--text-secondary)]",children:[l("userPermissions.filters.module"),":"]}),e.jsxs("select",{value:h,onChange:t=>D(t.target.value),className:"px-3 py-1.5 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-[var(--radius-input)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"all",children:l("userPermissions.filters.allModules")}),I.modules.filter(t=>T==="all"||t.app===T).map(t=>e.jsx("option",{value:t.module,children:t.label},`${t.app}:${t.module}`))]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("span",{className:"text-sm font-medium text-[var(--text-secondary)]",children:[l("userPermissions.filterByStatus"),":"]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("button",{onClick:()=>$("all"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("all")?"bg-[var(--success-bg)] border-[var(--success-border)] text-[var(--success-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--success-border)]"}`,children:[e.jsx(a.Check,{className:`h-3.5 w-3.5 ${m.has("all")?"":"text-[var(--success-dot)]"}`}),l("assignments.complete")]}),e.jsxs("button",{onClick:()=>$("some"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("some")?"bg-[var(--warning-bg)] border-[var(--warning-border)] text-[var(--warning-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--warning-border)]"}`,children:[e.jsx(a.Star,{className:`h-3.5 w-3.5 ${m.has("some")?"":"text-[var(--warning-dot)]"}`}),l("assignments.partial")]}),e.jsxs("button",{onClick:()=>$("read-only"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("read-only")?"bg-[var(--info-bg)] border-[var(--info-border)] text-[var(--info-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--info-border)]"}`,children:[e.jsx(a.Eye,{className:`h-3.5 w-3.5 ${m.has("read-only")?"":"text-[var(--info-dot)]"}`}),l("assignments.readOnly")]}),e.jsxs("button",{onClick:()=>$("none"),className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-full border transition-colors ${m.has("none")?"bg-[var(--error-bg)] border-[var(--error-border)] text-[var(--error-text)]":"bg-[var(--bg-tertiary)] border-[var(--border-color)] text-[var(--text-secondary)] hover:border-[var(--error-border)]"}`,children:[e.jsx(a.Ban,{className:`h-3.5 w-3.5 ${m.has("none")?"":"text-[var(--text-muted)]"}`}),l("assignments.none")]})]}),m.size>0&&e.jsx("button",{onClick:()=>ie(new Set),className:"text-xs text-[var(--color-accent-500)] hover:text-[var(--color-accent-600)] underline",children:l("assignments.clearFilters")})]}),e.jsx("div",{className:"flex items-center gap-3",children:e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:[ae," ",l("assignments.modules")]})}),e.jsx("div",{className:"overflow-x-auto overflow-y-visible",children:e.jsxs("table",{className:"border-collapse",style:{width:"auto"},children:[e.jsx("thead",{className:"item-medium border-b border-[var(--item-color-border)]",children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",className:"sticky left-0 z-20 item-medium px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"280px",minWidth:"280px",maxWidth:"280px",height:"48px",verticalAlign:"middle"},children:l("assignments.resource")}),e.jsx("th",{scope:"col",className:"px-2 text-center text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"60px",minWidth:"60px",maxWidth:"60px",height:"48px",verticalAlign:"middle"},children:l("userPermissions.status")}),e.jsx("th",{scope:"col",className:"px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{height:"48px",verticalAlign:"middle"},children:l("assignments.permissions")})]})}),e.jsx("tbody",{className:"divide-y divide-[var(--item-color-border)]",children:O.map(t=>{const d=t.application,o=c.has(d);return e.jsxs(n.Fragment,{children:[e.jsxs("tr",{className:"bg-[var(--bg-tertiary)]",children:[e.jsx("td",{className:"sticky left-0 z-10 px-3 py-2 bg-[var(--bg-tertiary)]",style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("button",{onClick:()=>S(d),className:"flex items-center gap-3 w-full text-left hover:opacity-80",children:[o?e.jsx(a.ChevronRight,{className:"h-4 w-4 text-[var(--text-secondary)]"}):e.jsx(a.ChevronDown,{className:"h-4 w-4 text-[var(--text-secondary)]"}),e.jsx(a.FolderOpen,{className:"h-4 w-4 text-[var(--text-secondary)]"}),e.jsx("span",{className:"text-sm font-semibold text-[var(--text-primary)]",children:t.application}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)] ml-auto",children:[t.modules.length," module",t.modules.length>1?"s":""]})]})}),e.jsx("td",{className:"px-0 py-2"}),e.jsx("td",{className:"px-0 py-2"})]}),!o&&t.modules.map((u,C)=>{const{module:A,sections:E}=u,U=E.length>0,z=R.has(A.id);return e.jsxs(n.Fragment,{children:[be(A,C,"module",U,z),U&&!z&&E.map((j,le)=>{const{section:L,resources:Z}=j;return e.jsx(ze,{section:L,resources:Z,moduleIndex:C,sectionIndex:le,collapsedSections:M,renderResourceRow:be},L.id)})]},A.id)})]},d)})})]})}),ae===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:l("assignments.noResources")})]})}const De=[{code:"fr",label:"Français"},{code:"en",label:"English"},{code:"it",label:"Italiano"},{code:"de",label:"Deutsch"}];function We(){const{t:s}=ke.useTranslation("admin"),{id:l}=fe.useParams(),p=fe.useNavigate(),[c,S]=n.useState(null),[R,G]=n.useState(!0),[M,W]=n.useState(!1),[m,ie]=n.useState("info"),[re,b]=n.useState(null),[T,y]=n.useState(null),[h,D]=n.useState({name:"",shortName:"",category:"Custom",description:"",parentRoleId:null}),[se,je]=n.useState([]),ce=["Global","Admin","Manager","Contributor","Viewer","Custom"],[N,q]=n.useState([]),[H,k]=n.useState(!1),[_,X]=n.useState(null),[g,w]=n.useState({name:"",shortName:"",description:""}),[K,P]=n.useState(!1),[x,f]=n.useState(!1),[$,V]=n.useState(""),[de,I]=n.useState(!1),[ye,Y]=n.useState([]),[me,xe]=n.useState(!1),[J,te]=n.useState(""),[F,O]=n.useState(null),[ae,ue]=n.useState(!1),[ve,pe]=n.useState(null),[Ne,Q]=n.useState(!1),[we,Ce]=n.useState([]),[be,t]=n.useState(!1),[d,o]=n.useState(""),[u,C]=n.useState(null),[A,E]=n.useState(!1),[U,z]=n.useState(null),j=n.useCallback(async()=>{if(l)try{G(!0);const[r,i]=await Promise.all([v.adminApi.roles.getById(l),v.adminApi.roles.getAll()]);S(r),je(i.filter(ne=>ne.id!==l)),D({name:r.name,shortName:r.shortName,category:r.category,description:r.description||"",parentRoleId:r.parentRoleId})}catch(r){console.error("Failed to load role:",r),b(s("roleDetail.errors.loadFailed"))}finally{G(!1)}},[l,s]);n.useEffect(()=>{j()},[j]);const le=async r=>{if(r.preventDefault(),!(!l||!c)){W(!0),b(null),y(null);try{const i={name:h.name,shortName:h.shortName,category:h.category,description:h.description||void 0,parentRoleId:h.parentRoleId||void 0};await v.adminApi.roles.update(l,i),y(s("roleDetail.success.saved")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{W(!1)}}},L=n.useCallback(async()=>{if(l){k(!0);try{const r=await v.adminApi.roles.getTranslations(l);q(r)}catch(r){console.error("Failed to load translations:",r)}finally{k(!1)}}},[l]);n.useEffect(()=>{m==="translations"&&N.length===0&&L()},[m,N.length,L]);const Z=r=>{X(r.languageCode),w({name:r.name,shortName:r.shortName,description:r.description||""})},he=()=>{X(null),f(!1),w({name:"",shortName:"",description:""}),V("")},ge=async r=>{if(l){P(!0),b(null);try{await v.adminApi.roles.upsertTranslation(l,r,g),y(s("roleDetail.translations.saved")),X(null),f(!1),V(""),L()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}finally{P(!1)}}},Ae=async r=>{if(l&&confirm(s("roleDetail.translations.confirmDelete")))try{await v.adminApi.roles.deleteTranslation(l,r),y(s("roleDetail.translations.deleted")),L()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.saveFailed"))}},Se=De.filter(r=>!N.some(i=>i.languageCode===r.code)),Le=async()=>{I(!0),O(null),te(""),xe(!0);try{const r=await v.adminApi.users.getAll({globalScope:!0});Y(r.items)}catch(r){console.error("Failed to load users:",r)}finally{xe(!1)}},Re=async()=>{if(!(!l||!F)){ue(!0);try{await v.adminApi.roles.assignUser(l,F),I(!1),O(null),y(s("roleDetail.users.assigned")),j()}catch(r){b(r instanceof Error?r.message:s("roleDetail.errors.assignFailed"))}finally{ue(!1)}}},Te=async r=>{if(l&&confirm(s("roleDetail.users.confirmRemove"))){pe(r);try{await v.adminApi.roles.removeUser(l,r),y(s("roleDetail.users.removed")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.removeFailed"))}finally{pe(null)}}},Pe=async()=>{Q(!0),C(null),o(""),t(!0);try{const r=await Ue.groupsApi.getAll();Ce(r)}catch(r){console.error("Failed to load groups:",r)}finally{t(!1)}},$e=async()=>{if(!(!l||!u)){E(!0);try{await v.adminApi.roles.assignGroup(l,u),Q(!1),C(null),y(s("roleDetail.groups.assigned")),j()}catch(r){b(r instanceof Error?r.message:s("roleDetail.errors.assignFailed"))}finally{E(!1)}}},Fe=async r=>{if(l&&confirm(s("roleDetail.groups.confirmRemove"))){z(r);try{await v.adminApi.roles.removeGroup(l,r),y(s("roleDetail.groups.removed")),j()}catch(i){b(i instanceof Error?i.message:s("roleDetail.errors.removeFailed"))}finally{z(null)}}},Ee=[{id:"info",label:s("roleDetail.tabs.info"),icon:e.jsx(a.Settings,{className:"w-4 h-4"})},{id:"permissions",label:s("roleDetail.tabs.permissions"),icon:e.jsx(a.Shield,{className:"w-4 h-4"})},{id:"users",label:s("roleDetail.tabs.users"),icon:e.jsx(a.Users,{className:"w-4 h-4"})},{id:"groups",label:s("roleDetail.tabs.groups"),icon:e.jsx(a.UsersRound,{className:"w-4 h-4"})},{id:"translations",label:s("roleDetail.tabs.translations"),icon:e.jsx(a.Languages,{className:"w-4 h-4"})}];return R?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(a.Loader2,{className:"w-8 h-8 animate-spin text-[var(--color-accent-500)]"})}):c?e.jsxs("div",{className:"space-y-6",children:[e.jsx(v.Breadcrumb,{items:[{label:s("header.title"),href:"/administration"},{label:s("roles.title","Roles"),href:"/administration/permissions/roles"},{label:c?.name||"Detail"}]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>p("/administration/permissions/roles"),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.ArrowLeft,{className:"w-5 h-5 text-[var(--text-secondary)]"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold text-[var(--text-primary)]",children:c.name}),c.isSystem&&e.jsxs("span",{className:"flex items-center gap-1 px-2 py-1 rounded-[var(--radius-badge)] text-xs bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(a.Lock,{className:"w-3 h-3"}),s("roles.system")]})]}),c.description&&e.jsx("p",{className:"text-sm sm:text-base text-[var(--text-secondary)] mt-1",children:c.description})]}),e.jsxs("div",{className:"flex items-center gap-4 text-sm text-[var(--text-secondary)]",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Users,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.users.length," ",s("roleDetail.usersCount")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.UsersRound,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.groups?.length||0," ",s("roleDetail.groupsCount")]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Shield,{className:"w-4 h-4"}),e.jsxs("span",{children:[c.permissions.length," ",s("roles.permissions")]})]})]})]}),re&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] text-[var(--error-text)] flex items-center gap-2",children:[e.jsx(a.AlertTriangle,{className:"w-5 h-5 flex-shrink-0"}),re]}),T&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--success-bg)] border border-[var(--success-border)] text-[var(--success-text)] flex items-center gap-2",children:[e.jsx(a.CheckCircle,{className:"w-5 h-5 flex-shrink-0"}),T]}),e.jsx("div",{className:"flex gap-1 p-1 bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)]",children:Ee.map(r=>e.jsxs("button",{onClick:()=>ie(r.id),className:`flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] font-medium transition-colors ${m===r.id?"bg-[var(--color-accent-600)] text-white":"text-[var(--text-secondary)] hover:bg-[var(--bg-hover)]"}`,children:[r.icon,e.jsx("span",{className:"hidden sm:inline",children:r.label})]},r.id))}),e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] p-4 sm:p-6",children:[m==="info"&&e.jsxs("form",{onSubmit:le,className:"space-y-6 max-w-2xl",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.id")}),e.jsx("div",{className:"px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-tertiary)] text-[var(--text-secondary)] font-mono text-sm",children:c.id})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roles.form.name")," *"]}),e.jsx("input",{type:"text",required:!0,value:h.name,onChange:r=>D(i=>({...i,name:r.target.value})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roleDetail.info.shortName")," *"]}),e.jsx("input",{type:"text",required:!0,value:h.shortName,onChange:r=>D(i=>({...i,shortName:r.target.value})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]"}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.shortNameHelp")})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:[s("roleDetail.info.category")," *"]}),e.jsx("select",{value:h.category,onChange:r=>D(i=>({...i,category:r.target.value})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",children:ce.map(r=>e.jsx("option",{value:r,children:s(`roleDetail.categories.${r.toLowerCase()}`)},r))}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.categoryHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.parentRole")}),e.jsxs("select",{value:h.parentRoleId||"",onChange:r=>D(i=>({...i,parentRoleId:r.target.value||null})),className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",children:[e.jsx("option",{value:"",children:s("roleDetail.info.noParent")}),se.map(r=>e.jsxs("option",{value:r.id,children:[r.name," (",s(`roleDetail.categories.${r.category.toLowerCase()}`),")"]},r.id))]}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-tertiary)]",children:s("roleDetail.info.parentRoleHelp")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roles.form.description")}),e.jsx("textarea",{value:h.description,onChange:r=>D(i=>({...i,description:r.target.value})),rows:3,className:"w-full px-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] resize-none"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.info.systemRole")}),e.jsx("div",{className:"flex items-center gap-2",children:c.isSystem?e.jsxs("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-[var(--radius-badge)] text-sm bg-[var(--warning-bg)] text-[var(--warning-text)] border border-[var(--warning-border)]",children:[e.jsx(a.Lock,{className:"w-4 h-4"}),s("roleDetail.info.isSystemRole")]}):e.jsx("span",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-[var(--radius-badge)] text-sm bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:s("roleDetail.info.isCustomRole")})})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4 pt-4 border-t border-[var(--border-color)]",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.createdAt")}),e.jsx("div",{className:"text-sm text-[var(--text-primary)]",children:new Date(c.createdAt).toLocaleString()})]}),c.updatedAt&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.updatedAt")}),e.jsx("div",{className:"text-sm text-[var(--text-primary)]",children:new Date(c.updatedAt).toLocaleString()})]})]}),e.jsx("div",{className:"flex justify-end pt-4",children:e.jsxs("button",{type:"submit",disabled:M,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[M?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Save,{className:"w-4 h-4"}),s("common.save")]})})]}),m==="permissions"&&l&&e.jsx(Be,{roleId:l}),m==="groups"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.groups.title")," (",c.groups?.length||0,")"]}),e.jsxs("button",{onClick:Pe,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.groups.add")]})]}),!c.groups||c.groups.length===0?e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.groups.noGroups")}):e.jsx("div",{className:"grid gap-3",children:c.groups.map(r=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs(fe.Link,{to:`/administration/users/groups/${r.id}`,className:"flex items-center gap-4 flex-1 min-w-0 hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-accent-100)] flex items-center justify-center",children:e.jsx(a.UsersRound,{className:"w-5 h-5 text-[var(--color-accent-700)]"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)] truncate",children:r.name}),e.jsxs("div",{className:"text-sm text-[var(--text-secondary)] truncate",children:[r.membersCount," ",s("roleDetail.groups.members"),r.description&&` · ${r.description}`]})]})]}),e.jsx("button",{onClick:()=>Fe(r.id),disabled:U===r.id,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)] transition-colors disabled:opacity-50",title:s("roleDetail.groups.remove"),children:U===r.id?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Trash2,{className:"w-4 h-4"})})]},r.id))}),Ne&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:s("roleDetail.groups.addTitle")}),e.jsx("button",{onClick:()=>Q(!1),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(a.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:d,onChange:r=>o(r.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",placeholder:s("roleDetail.groups.searchPlaceholder")})]})}),be?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto",children:we.filter(r=>!c.groups?.some(i=>i.id===r.id)&&(d===""||r.name.toLowerCase().includes(d.toLowerCase())||(r.description||"").toLowerCase().includes(d.toLowerCase()))).map(r=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${u===r.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)] border border-transparent"}`,htmlFor:`group-${r.id}`,children:[e.jsx("input",{id:`group-${r.id}`,type:"radio",name:"selectedGroup",checked:u===r.id,onChange:()=>C(r.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:r.name}),e.jsxs("p",{className:"text-xs text-[var(--text-tertiary)]",children:[r.memberCount," ",s("roleDetail.groups.members"),r.description&&` · ${r.description}`]})]})]},r.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:()=>Q(!1),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] font-medium transition-colors",children:s("common.cancel")}),e.jsxs("button",{onClick:$e,disabled:!u||A,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[A&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.add")]})]})]})})]}),m==="users"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.users.title")," (",c.users.length,")"]}),e.jsxs("button",{onClick:Le,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.users.add")]})]}),c.users.length===0?e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.users.noUsers")}):e.jsx("div",{className:"grid gap-3",children:c.users.map(r=>e.jsxs("div",{className:"flex items-center gap-4 p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--border-color)]",children:[e.jsxs(fe.Link,{to:`/administration/users/${r.id}`,className:"flex items-center gap-4 flex-1 min-w-0 hover:opacity-80 transition-opacity",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[var(--color-accent-100)] flex items-center justify-center",children:e.jsx("span",{className:"text-sm font-medium text-[var(--color-accent-700)]",children:r.fullName.split(" ").map(i=>i.at(0)).join("").toUpperCase().slice(0,2)})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)] truncate",children:r.fullName}),e.jsx("div",{className:"text-sm text-[var(--text-secondary)] truncate",children:r.email})]})]}),e.jsx("button",{onClick:()=>Te(r.id),disabled:ve===r.id,className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)] transition-colors disabled:opacity-50",title:s("roleDetail.users.remove"),children:ve===r.id?e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}):e.jsx(a.Trash2,{className:"w-4 h-4"})})]},r.id))}),de&&e.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50",children:e.jsxs("div",{className:"bg-[var(--bg-secondary)] rounded-[var(--radius-card)] border border-[var(--border-color)] w-full max-w-md p-6 m-4 max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:s("roleDetail.users.addTitle")}),e.jsx("button",{onClick:()=>I(!1),className:"p-2 rounded-[var(--radius-button)] hover:bg-[var(--bg-hover)] transition-colors",children:e.jsx(a.X,{className:"w-5 h-5 text-[var(--text-tertiary)]"})})]}),e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"relative",children:[e.jsx(a.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--text-tertiary)]"}),e.jsx("input",{type:"text",value:J,onChange:r=>te(r.target.value),className:"w-full pl-10 pr-4 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)]",placeholder:s("roleDetail.users.searchPlaceholder")})]})}),me?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}):e.jsx("div",{className:"space-y-2 max-h-64 overflow-y-auto",children:ye.filter(r=>!c.users.some(i=>i.id===r.id)&&(J===""||r.fullName.toLowerCase().includes(J.toLowerCase())||r.email.toLowerCase().includes(J.toLowerCase()))).map(r=>e.jsxs("label",{className:`flex items-center gap-3 cursor-pointer p-3 rounded-[var(--radius-button)] transition-colors ${F===r.id?"bg-[var(--color-accent-500)]/10 border border-[var(--color-accent-500)]":"hover:bg-[var(--bg-hover)] border border-transparent"}`,htmlFor:`user-${r.id}`,children:[e.jsx("input",{id:`user-${r.id}`,type:"radio",name:"selectedUser",checked:F===r.id,onChange:()=>O(r.id),className:"w-4 h-4 text-[var(--color-accent-600)] focus:ring-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-[var(--text-primary)] font-medium",children:r.fullName}),e.jsx("p",{className:"text-xs text-[var(--text-tertiary)]",children:r.email})]})]},r.id))}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx("button",{onClick:()=>I(!1),className:"px-4 py-2 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] font-medium transition-colors",children:s("common.cancel")}),e.jsxs("button",{onClick:Re,disabled:!F||ae,className:"flex items-center gap-2 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white font-medium transition-colors disabled:opacity-50",children:[ae&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.add")]})]})]})})]}),m==="translations"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-lg font-semibold text-[var(--text-primary)]",children:[s("roleDetail.translations.title")," (",N.length,")"]}),Se.length>0&&e.jsxs("button",{onClick:()=>f(!0),className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium transition-colors",children:[e.jsx(a.Plus,{className:"w-4 h-4"}),s("roleDetail.translations.add")]})]}),x&&e.jsxs("div",{className:"p-4 rounded-[var(--radius-card)] bg-[var(--bg-primary)] border border-[var(--color-accent-500)]",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h4",{className:"font-medium text-[var(--text-primary)]",children:s("roleDetail.translations.addNew")}),e.jsx("button",{onClick:he,className:"p-1 rounded hover:bg-[var(--bg-hover)]",children:e.jsx(a.X,{className:"w-4 h-4 text-[var(--text-secondary)]"})})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.language")}),e.jsxs("select",{value:$,onChange:r=>V(r.target.value),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]",children:[e.jsx("option",{value:"",children:s("roleDetail.translations.selectLanguage")}),Se.map(r=>e.jsx("option",{value:r.code,children:r.label},r.code))]})]}),$&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.name")}),e.jsx("input",{type:"text",value:g.name,onChange:r=>w(i=>({...i,name:r.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.shortName")}),e.jsx("input",{type:"text",value:g.shortName,onChange:r=>w(i=>({...i,shortName:r.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.description")}),e.jsx("textarea",{value:g.description||"",onChange:r=>w(i=>({...i,description:r.target.value})),rows:2,className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] resize-none"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:he,className:"px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] text-sm font-medium",children:s("common.cancel")}),e.jsxs("button",{onClick:()=>ge($),disabled:K||!g.name||!g.shortName,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium disabled:opacity-50",children:[K&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.save")]})]})]})]})]}),H&&e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(a.Loader2,{className:"w-6 h-6 animate-spin text-[var(--color-accent-500)]"})}),!H&&N.length===0&&e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s("roleDetail.translations.noTranslations")}),!H&&N.length>0&&e.jsx("div",{className:"space-y-3",children:N.map(r=>{const i=De.find(B=>B.code===r.languageCode),ne=_===r.languageCode;return e.jsxs("div",{className:`p-4 rounded-[var(--radius-card)] border ${ne?"bg-[var(--bg-primary)] border-[var(--color-accent-500)]":"bg-[var(--bg-primary)] border-[var(--border-color)]"}`,children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"px-2 py-0.5 text-xs font-medium rounded bg-[var(--bg-tertiary)] text-[var(--text-secondary)] uppercase",children:r.languageCode}),e.jsx("span",{className:"text-sm text-[var(--text-secondary)]",children:i?.label||r.languageCode})]}),!ne&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>Z(r),className:"p-1.5 rounded hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--color-accent-600)]",title:s("common.edit"),children:e.jsx(a.Edit2,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>Ae(r.languageCode),className:"p-1.5 rounded hover:bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:text-[var(--error-text)]",title:s("common.delete"),children:e.jsx(a.Trash2,{className:"w-4 h-4"})})]})]}),ne?e.jsxs("div",{className:"grid gap-3 mt-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.name")}),e.jsx("input",{type:"text",value:g.name,onChange:B=>w(oe=>({...oe,name:B.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.shortName")}),e.jsx("input",{type:"text",value:g.shortName,onChange:B=>w(oe=>({...oe,shortName:B.target.value})),className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)]"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:s("roleDetail.translations.description")}),e.jsx("textarea",{value:g.description||"",onChange:B=>w(oe=>({...oe,description:B.target.value})),rows:2,className:"w-full px-3 py-2 rounded-[var(--radius-input)] border border-[var(--border-color)] bg-[var(--bg-secondary)] text-[var(--text-primary)] resize-none"})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{onClick:he,className:"px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--bg-tertiary)] hover:bg-[var(--bg-hover)] text-[var(--text-primary)] text-sm font-medium",children:s("common.cancel")}),e.jsxs("button",{onClick:()=>ge(r.languageCode),disabled:K||!g.name||!g.shortName,className:"flex items-center gap-2 px-3 py-1.5 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] hover:bg-[var(--color-accent-700)] text-white text-sm font-medium disabled:opacity-50",children:[K&&e.jsx(a.Loader2,{className:"w-4 h-4 animate-spin"}),s("common.save")]})]})]}):e.jsxs("div",{className:"grid gap-1",children:[e.jsx("div",{className:"font-medium text-[var(--text-primary)]",children:r.name}),e.jsxs("div",{className:"text-sm text-[var(--text-secondary)]",children:[s("roleDetail.translations.shortName"),": ",r.shortName]}),r.description&&e.jsx("div",{className:"text-sm text-[var(--text-tertiary)] mt-1",children:r.description})]})]},r.languageCode)})})]})]})]}):e.jsxs("div",{className:"text-center py-12",children:[e.jsx("p",{className:"text-[var(--text-secondary)]",children:s("roleDetail.notFound")}),e.jsx("button",{onClick:()=>p("/administration/permissions/roles"),className:"mt-4 px-4 py-2 rounded-[var(--radius-button)] bg-[var(--color-accent-600)] text-white",children:s("roleDetail.backToList")})]})}exports.RoleDetailPage=We;
2
+ //# sourceMappingURL=RoleDetailPage-TUOGR1ow.js.map