@atlashub/smartstack 3.31.0 → 3.32.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 (281) hide show
  1. package/dist/chunks/{AgentSkillsPage-DcvOMm5k.js → AgentSkillsPage-BMxOA-nm.js} +2 -2
  2. package/dist/chunks/{AgentSkillsPage-DcvOMm5k.js.map → AgentSkillsPage-BMxOA-nm.js.map} +1 -1
  3. package/dist/chunks/{AgentSkillsPage-CDMhqrhE.js → AgentSkillsPage-DSwfoazB.js} +2 -2
  4. package/dist/chunks/{AgentSkillsPage-CDMhqrhE.js.map → AgentSkillsPage-DSwfoazB.js.map} +1 -1
  5. package/dist/chunks/{AgentWorkloadPage-YpJSDaWc.js → AgentWorkloadPage-B_emq8kd.js} +2 -2
  6. package/dist/chunks/{AgentWorkloadPage-YpJSDaWc.js.map → AgentWorkloadPage-B_emq8kd.js.map} +1 -1
  7. package/dist/chunks/{AgentWorkloadPage-DYBPNzjQ.js → AgentWorkloadPage-_USTeYWz.js} +2 -2
  8. package/dist/chunks/{AgentWorkloadPage-DYBPNzjQ.js.map → AgentWorkloadPage-_USTeYWz.js.map} +1 -1
  9. package/dist/chunks/{ApiCatalogDetailPage-9r1axtCg.js → ApiCatalogDetailPage-BC_HxVu5.js} +3 -3
  10. package/dist/chunks/{ApiCatalogDetailPage-9r1axtCg.js.map → ApiCatalogDetailPage-BC_HxVu5.js.map} +1 -1
  11. package/dist/chunks/{ApiCatalogDetailPage-TjCQ8_A8.js → ApiCatalogDetailPage-BI7zyZAd.js} +2 -2
  12. package/dist/chunks/{ApiCatalogDetailPage-TjCQ8_A8.js.map → ApiCatalogDetailPage-BI7zyZAd.js.map} +1 -1
  13. package/dist/chunks/{ApiCatalogPage-COxazTnz.js → ApiCatalogPage-CutaHo5K.js} +2 -2
  14. package/dist/chunks/{ApiCatalogPage-COxazTnz.js.map → ApiCatalogPage-CutaHo5K.js.map} +1 -1
  15. package/dist/chunks/{ApiCatalogPage-QRysH0pT.js → ApiCatalogPage-M80MorHU.js} +2 -2
  16. package/dist/chunks/{ApiCatalogPage-QRysH0pT.js.map → ApiCatalogPage-M80MorHU.js.map} +1 -1
  17. package/dist/chunks/{ApplicationDetailPage-jSHy3MPz.js → ApplicationDetailPage-DVY0wua0.js} +2 -2
  18. package/dist/chunks/{ApplicationDetailPage-jSHy3MPz.js.map → ApplicationDetailPage-DVY0wua0.js.map} +1 -1
  19. package/dist/chunks/{ApplicationDetailPage-Dbx01Ikm.js → ApplicationDetailPage-DzszwaIZ.js} +4 -4
  20. package/dist/chunks/{ApplicationDetailPage-Dbx01Ikm.js.map → ApplicationDetailPage-DzszwaIZ.js.map} +1 -1
  21. package/dist/chunks/{ApplicationsDashboardPage-CclKc0wI.js → ApplicationsDashboardPage-B3ptvnJz.js} +3 -3
  22. package/dist/chunks/{ApplicationsDashboardPage-CclKc0wI.js.map → ApplicationsDashboardPage-B3ptvnJz.js.map} +1 -1
  23. package/dist/chunks/{ApplicationsDashboardPage-CxWmOc1x.js → ApplicationsDashboardPage-D0pxqbEc.js} +2 -2
  24. package/dist/chunks/{ApplicationsDashboardPage-CxWmOc1x.js.map → ApplicationsDashboardPage-D0pxqbEc.js.map} +1 -1
  25. package/dist/chunks/{ApplicationsGridPage-D2l8cM3o.js → ApplicationsGridPage-Ca23FBSP.js} +2 -2
  26. package/dist/chunks/{ApplicationsGridPage-D2l8cM3o.js.map → ApplicationsGridPage-Ca23FBSP.js.map} +1 -1
  27. package/dist/chunks/{ApplicationsGridPage-BJXWXwyI.js → ApplicationsGridPage-qi2UCD24.js} +2 -2
  28. package/dist/chunks/{ApplicationsGridPage-BJXWXwyI.js.map → ApplicationsGridPage-qi2UCD24.js.map} +1 -1
  29. package/dist/chunks/{ApplicationsListPage-CMosl3my.js → ApplicationsListPage-CEUmBXN0.js} +2 -2
  30. package/dist/chunks/{ApplicationsListPage-CMosl3my.js.map → ApplicationsListPage-CEUmBXN0.js.map} +1 -1
  31. package/dist/chunks/{ApplicationsListPage-Dc6NGQ61.js → ApplicationsListPage-cE82bv8j.js} +2 -2
  32. package/dist/chunks/{ApplicationsListPage-Dc6NGQ61.js.map → ApplicationsListPage-cE82bv8j.js.map} +1 -1
  33. package/dist/chunks/{ApplicationsPage-DI-iMqoJ.js → ApplicationsPage-DW1BrVVN.js} +4 -4
  34. package/dist/chunks/{ApplicationsPage-DI-iMqoJ.js.map → ApplicationsPage-DW1BrVVN.js.map} +1 -1
  35. package/dist/chunks/{ApplicationsPage-DH7tpMlF.js → ApplicationsPage-RAqTs5HI.js} +2 -2
  36. package/dist/chunks/{ApplicationsPage-DH7tpMlF.js.map → ApplicationsPage-RAqTs5HI.js.map} +1 -1
  37. package/dist/chunks/{AssignmentRulesPage-E79QBSLb.js → AssignmentRulesPage-C0qnk3oR.js} +2 -2
  38. package/dist/chunks/{AssignmentRulesPage-E79QBSLb.js.map → AssignmentRulesPage-C0qnk3oR.js.map} +1 -1
  39. package/dist/chunks/{AssignmentRulesPage-B5UbujbZ.js → AssignmentRulesPage-CVgFmhEs.js} +2 -2
  40. package/dist/chunks/{AssignmentRulesPage-B5UbujbZ.js.map → AssignmentRulesPage-CVgFmhEs.js.map} +1 -1
  41. package/dist/chunks/{AssignmentsPage-CDFaL1gT.js → AssignmentsPage-Bv9HYtYN.js} +2 -2
  42. package/dist/chunks/{AssignmentsPage-CDFaL1gT.js.map → AssignmentsPage-Bv9HYtYN.js.map} +1 -1
  43. package/dist/chunks/{AssignmentsPage-CPeKJjyK.js → AssignmentsPage-z1q1C9Uz.js} +2 -2
  44. package/dist/chunks/{AssignmentsPage-CPeKJjyK.js.map → AssignmentsPage-z1q1C9Uz.js.map} +1 -1
  45. package/dist/chunks/{AuthCallbackPage-BZ3Ocos5.js → AuthCallbackPage-CcteN6Kv.js} +2 -2
  46. package/dist/chunks/{AuthCallbackPage-BZ3Ocos5.js.map → AuthCallbackPage-CcteN6Kv.js.map} +1 -1
  47. package/dist/chunks/{AuthCallbackPage-Bml48QpH.js → AuthCallbackPage-DL5PJUYJ.js} +2 -2
  48. package/dist/chunks/{AuthCallbackPage-Bml48QpH.js.map → AuthCallbackPage-DL5PJUYJ.js.map} +1 -1
  49. package/dist/chunks/{ConfirmEmailPage-DyzslZ06.js → ConfirmEmailPage-BP8VUz-A.js} +2 -2
  50. package/dist/chunks/{ConfirmEmailPage-DyzslZ06.js.map → ConfirmEmailPage-BP8VUz-A.js.map} +1 -1
  51. package/dist/chunks/{ConfirmEmailPage-DP1XPaKK.js → ConfirmEmailPage-CeflKXpN.js} +2 -2
  52. package/dist/chunks/{ConfirmEmailPage-DP1XPaKK.js.map → ConfirmEmailPage-CeflKXpN.js.map} +1 -1
  53. package/dist/chunks/{CreateSupportTicketPage-Bz2KrMik.js → CreateSupportTicketPage-BAdvWb_8.js} +2 -2
  54. package/dist/chunks/{CreateSupportTicketPage-Bz2KrMik.js.map → CreateSupportTicketPage-BAdvWb_8.js.map} +1 -1
  55. package/dist/chunks/{CreateSupportTicketPage-hKjKM0Bh.js → CreateSupportTicketPage-DDiv79-p.js} +2 -2
  56. package/dist/chunks/{CreateSupportTicketPage-hKjKM0Bh.js.map → CreateSupportTicketPage-DDiv79-p.js.map} +1 -1
  57. package/dist/chunks/{DashboardPage-B4nAd8Tj.js → DashboardPage-B_uyyRRE.js} +2 -2
  58. package/dist/chunks/{DashboardPage-B4nAd8Tj.js.map → DashboardPage-B_uyyRRE.js.map} +1 -1
  59. package/dist/chunks/{DashboardPage-rN7IFlTR.js → DashboardPage-CpoduSu7.js} +2 -2
  60. package/dist/chunks/{DashboardPage-rN7IFlTR.js.map → DashboardPage-CpoduSu7.js.map} +1 -1
  61. package/dist/chunks/{DashboardPage-CjbNGMo1.js → DashboardPage-D4pyUgdM.js} +3 -3
  62. package/dist/chunks/{DashboardPage-CjbNGMo1.js.map → DashboardPage-D4pyUgdM.js.map} +1 -1
  63. package/dist/chunks/{DashboardPage-C9qgPBS-.js → DashboardPage-Kp-MCxW4.js} +3 -3
  64. package/dist/chunks/{DashboardPage-C9qgPBS-.js.map → DashboardPage-Kp-MCxW4.js.map} +1 -1
  65. package/dist/chunks/{EscalationConfigPage-CGv2L62M.js → EscalationConfigPage-D-WCN6YS.js} +2 -2
  66. package/dist/chunks/{EscalationConfigPage-CGv2L62M.js.map → EscalationConfigPage-D-WCN6YS.js.map} +1 -1
  67. package/dist/chunks/{EscalationConfigPage-DpYDmsgw.js → EscalationConfigPage-UrLJarSI.js} +2 -2
  68. package/dist/chunks/{EscalationConfigPage-DpYDmsgw.js.map → EscalationConfigPage-UrLJarSI.js.map} +1 -1
  69. package/dist/chunks/{ForceChangePasswordPage-Db6sOrZN.js → ForceChangePasswordPage-BIh1SF5C.js} +2 -2
  70. package/dist/chunks/{ForceChangePasswordPage-Db6sOrZN.js.map → ForceChangePasswordPage-BIh1SF5C.js.map} +1 -1
  71. package/dist/chunks/{ForceChangePasswordPage-CLI_fpF4.js → ForceChangePasswordPage-FFZZRpU7.js} +2 -2
  72. package/dist/chunks/{ForceChangePasswordPage-CLI_fpF4.js.map → ForceChangePasswordPage-FFZZRpU7.js.map} +1 -1
  73. package/dist/chunks/{ForgotPasswordPage-BhMz2B6A.js → ForgotPasswordPage-BKqRF7SF.js} +2 -2
  74. package/dist/chunks/{ForgotPasswordPage-BhMz2B6A.js.map → ForgotPasswordPage-BKqRF7SF.js.map} +1 -1
  75. package/dist/chunks/{ForgotPasswordPage-D06arMXO.js → ForgotPasswordPage-BXp8qQUX.js} +2 -2
  76. package/dist/chunks/{ForgotPasswordPage-D06arMXO.js.map → ForgotPasswordPage-BXp8qQUX.js.map} +1 -1
  77. package/dist/chunks/{GroupDetailPage-BCM8KBCd.js → GroupDetailPage-a0hBx-LO.js} +5 -5
  78. package/dist/chunks/{GroupDetailPage-BCM8KBCd.js.map → GroupDetailPage-a0hBx-LO.js.map} +1 -1
  79. package/dist/chunks/{GroupDetailPage-CGMV3bWt.js → GroupDetailPage-eGGJCqgq.js} +2 -2
  80. package/dist/chunks/{GroupDetailPage-CGMV3bWt.js.map → GroupDetailPage-eGGJCqgq.js.map} +1 -1
  81. package/dist/chunks/{MyAccessRequestsPage-BBrwEomx.js → MyAccessRequestsPage-BgQSyy5d.js} +2 -2
  82. package/dist/chunks/{MyAccessRequestsPage-BBrwEomx.js.map → MyAccessRequestsPage-BgQSyy5d.js.map} +1 -1
  83. package/dist/chunks/{MyAccessRequestsPage-CrlWe3gd.js → MyAccessRequestsPage-Dmb0rUHO.js} +2 -2
  84. package/dist/chunks/{MyAccessRequestsPage-CrlWe3gd.js.map → MyAccessRequestsPage-Dmb0rUHO.js.map} +1 -1
  85. package/dist/chunks/{MyTenantsPage-BOV34_rJ.js → MyTenantsPage-BZTeqyDr.js} +3 -3
  86. package/dist/chunks/{MyTenantsPage-BOV34_rJ.js.map → MyTenantsPage-BZTeqyDr.js.map} +1 -1
  87. package/dist/chunks/{MyTenantsPage-CK4-klmd.js → MyTenantsPage-kCHBF2uA.js} +2 -2
  88. package/dist/chunks/{MyTenantsPage-CK4-klmd.js.map → MyTenantsPage-kCHBF2uA.js.map} +1 -1
  89. package/dist/chunks/{MyTicketsPage-DuhpwhZx.js → MyTicketsPage-BwNIqpCE.js} +2 -2
  90. package/dist/chunks/{MyTicketsPage-DuhpwhZx.js.map → MyTicketsPage-BwNIqpCE.js.map} +1 -1
  91. package/dist/chunks/{MyTicketsPage-CFZ1G4dG.js → MyTicketsPage-CTpjkA5t.js} +2 -2
  92. package/dist/chunks/{MyTicketsPage-CFZ1G4dG.js.map → MyTicketsPage-CTpjkA5t.js.map} +1 -1
  93. package/dist/chunks/{NavigationAppsPage-BnNQRfBP.js → NavigationAppsPage-DO5bTibb.js} +2 -2
  94. package/dist/chunks/{NavigationAppsPage-BnNQRfBP.js.map → NavigationAppsPage-DO5bTibb.js.map} +1 -1
  95. package/dist/chunks/{NavigationAppsPage-DdJxEoTZ.js → NavigationAppsPage-vx_n07SD.js} +2 -2
  96. package/dist/chunks/{NavigationAppsPage-DdJxEoTZ.js.map → NavigationAppsPage-vx_n07SD.js.map} +1 -1
  97. package/dist/chunks/{NotificationsPage-BllOlagk.js → NotificationsPage-Br9sb9AQ.js} +2 -2
  98. package/dist/chunks/{NotificationsPage-BllOlagk.js.map → NotificationsPage-Br9sb9AQ.js.map} +1 -1
  99. package/dist/chunks/{NotificationsPage-D1T_ozHl.js → NotificationsPage-CRhd752L.js} +2 -2
  100. package/dist/chunks/{NotificationsPage-D1T_ozHl.js.map → NotificationsPage-CRhd752L.js.map} +1 -1
  101. package/dist/chunks/{OnboardingWizardPage-CrAQt7qL.js → OnboardingWizardPage-BIl3Usew.js} +2 -2
  102. package/dist/chunks/{OnboardingWizardPage-CrAQt7qL.js.map → OnboardingWizardPage-BIl3Usew.js.map} +1 -1
  103. package/dist/chunks/{OnboardingWizardPage-CioLaCYz.js → OnboardingWizardPage-CjqxWX7h.js} +2 -2
  104. package/dist/chunks/{OnboardingWizardPage-CioLaCYz.js.map → OnboardingWizardPage-CjqxWX7h.js.map} +1 -1
  105. package/dist/chunks/{PermissionDetailPage-CvPqugYu.js → PermissionDetailPage-COIuJXH-.js} +2 -2
  106. package/dist/chunks/{PermissionDetailPage-CvPqugYu.js.map → PermissionDetailPage-COIuJXH-.js.map} +1 -1
  107. package/dist/chunks/{PermissionDetailPage-BIG78-1-.js → PermissionDetailPage-P_d6xnY0.js} +2 -2
  108. package/dist/chunks/{PermissionDetailPage-BIG78-1-.js.map → PermissionDetailPage-P_d6xnY0.js.map} +1 -1
  109. package/dist/chunks/{PermissionsPage-CDSuc8vw.js → PermissionsPage-BhjnMyFY.js} +2 -2
  110. package/dist/chunks/{PermissionsPage-CDSuc8vw.js.map → PermissionsPage-BhjnMyFY.js.map} +1 -1
  111. package/dist/chunks/{PermissionsPage-XaOrGrPZ.js → PermissionsPage-CHYy8XFr.js} +2 -2
  112. package/dist/chunks/{PermissionsPage-XaOrGrPZ.js.map → PermissionsPage-CHYy8XFr.js.map} +1 -1
  113. package/dist/chunks/{PortalDashboardPage-oSD7oQhJ.js → PortalDashboardPage-BwQ4NQrH.js} +2 -2
  114. package/dist/chunks/{PortalDashboardPage-oSD7oQhJ.js.map → PortalDashboardPage-BwQ4NQrH.js.map} +1 -1
  115. package/dist/chunks/{PortalDashboardPage-BsWVXkMe.js → PortalDashboardPage-hLJcfGnT.js} +2 -2
  116. package/dist/chunks/{PortalDashboardPage-BsWVXkMe.js.map → PortalDashboardPage-hLJcfGnT.js.map} +1 -1
  117. package/dist/chunks/{PreferencesPage-ca2BOdoH.js → PreferencesPage-DYYqisR0.js} +2 -2
  118. package/dist/chunks/{PreferencesPage-ca2BOdoH.js.map → PreferencesPage-DYYqisR0.js.map} +1 -1
  119. package/dist/chunks/{PreferencesPage-DD0_XWdT.js → PreferencesPage-DzpM-lpD.js} +2 -2
  120. package/dist/chunks/{PreferencesPage-DD0_XWdT.js.map → PreferencesPage-DzpM-lpD.js.map} +1 -1
  121. package/dist/chunks/{ProfilePage-C8tUIOnb.js → ProfilePage-D98bvXeT.js} +2 -2
  122. package/dist/chunks/{ProfilePage-C8tUIOnb.js.map → ProfilePage-D98bvXeT.js.map} +1 -1
  123. package/dist/chunks/{ProfilePage-Bex_JN5N.js → ProfilePage-DWRDN0fo.js} +2 -2
  124. package/dist/chunks/{ProfilePage-Bex_JN5N.js.map → ProfilePage-DWRDN0fo.js.map} +1 -1
  125. package/dist/chunks/{ReferencesManagementPage-B-FXS2ln.js → ReferencesManagementPage-B0Cq9BHS.js} +2 -2
  126. package/dist/chunks/{ReferencesManagementPage-B-FXS2ln.js.map → ReferencesManagementPage-B0Cq9BHS.js.map} +1 -1
  127. package/dist/chunks/{ReferencesManagementPage-C8KZprkI.js → ReferencesManagementPage-CxbfOBs2.js} +3 -3
  128. package/dist/chunks/{ReferencesManagementPage-C8KZprkI.js.map → ReferencesManagementPage-CxbfOBs2.js.map} +1 -1
  129. package/dist/chunks/{RegisterPage-MWcVu-LY.js → RegisterPage-DMeq3GzW.js} +2 -2
  130. package/dist/chunks/{RegisterPage-MWcVu-LY.js.map → RegisterPage-DMeq3GzW.js.map} +1 -1
  131. package/dist/chunks/{RegisterPage-BYt__zKJ.js → RegisterPage-DvG2Php7.js} +2 -2
  132. package/dist/chunks/{RegisterPage-BYt__zKJ.js.map → RegisterPage-DvG2Php7.js.map} +1 -1
  133. package/dist/chunks/{ResetPasswordPage-rCLUIj_T.js → ResetPasswordPage-DOTswepm.js} +2 -2
  134. package/dist/chunks/{ResetPasswordPage-rCLUIj_T.js.map → ResetPasswordPage-DOTswepm.js.map} +1 -1
  135. package/dist/chunks/{ResetPasswordPage-DaJiMj5Z.js → ResetPasswordPage-ntMMFvDo.js} +2 -2
  136. package/dist/chunks/{ResetPasswordPage-DaJiMj5Z.js.map → ResetPasswordPage-ntMMFvDo.js.map} +1 -1
  137. package/dist/chunks/{ResolutionModal-j7Rp6apG.js → ResolutionModal-CKt73sIZ.js} +2 -2
  138. package/dist/chunks/{ResolutionModal-j7Rp6apG.js.map → ResolutionModal-CKt73sIZ.js.map} +1 -1
  139. package/dist/chunks/{ResolutionModal-DeuPnLWg.js → ResolutionModal-XGHCELez.js} +2 -2
  140. package/dist/chunks/{ResolutionModal-DeuPnLWg.js.map → ResolutionModal-XGHCELez.js.map} +1 -1
  141. package/dist/chunks/{RoleDetailPage-CLtZWX17.js → RoleDetailPage-BtnYTVN6.js} +3 -3
  142. package/dist/chunks/{RoleDetailPage-CLtZWX17.js.map → RoleDetailPage-BtnYTVN6.js.map} +1 -1
  143. package/dist/chunks/{RoleDetailPage-TGyGmLMM.js → RoleDetailPage-DAp65p0d.js} +2 -2
  144. package/dist/chunks/{RoleDetailPage-TGyGmLMM.js.map → RoleDetailPage-DAp65p0d.js.map} +1 -1
  145. package/dist/chunks/{RolesPage-Dm03fBBf.js → RolesPage-DyEhJHxw.js} +2 -2
  146. package/dist/chunks/{RolesPage-Dm03fBBf.js.map → RolesPage-DyEhJHxw.js.map} +1 -1
  147. package/dist/chunks/{RolesPage-C0c5G9e7.js → RolesPage-FmZCLEYo.js} +2 -2
  148. package/dist/chunks/{RolesPage-C0c5G9e7.js.map → RolesPage-FmZCLEYo.js.map} +1 -1
  149. package/dist/chunks/{SlaConfigPage-B4WDzEKi.js → SlaConfigPage-DTtP2Q4t.js} +2 -2
  150. package/dist/chunks/{SlaConfigPage-B4WDzEKi.js.map → SlaConfigPage-DTtP2Q4t.js.map} +1 -1
  151. package/dist/chunks/{SlaConfigPage-Cwo9NwxH.js → SlaConfigPage-LpVD_ai4.js} +2 -2
  152. package/dist/chunks/{SlaConfigPage-Cwo9NwxH.js.map → SlaConfigPage-LpVD_ai4.js.map} +1 -1
  153. package/dist/chunks/{SupportPermissionsPage-CL12dFy-.js → SupportPermissionsPage-BV8F_Tl3.js} +2 -2
  154. package/dist/chunks/{SupportPermissionsPage-CL12dFy-.js.map → SupportPermissionsPage-BV8F_Tl3.js.map} +1 -1
  155. package/dist/chunks/{SupportPermissionsPage-CneIhl30.js → SupportPermissionsPage-Bzfq6pKf.js} +2 -2
  156. package/dist/chunks/{SupportPermissionsPage-CneIhl30.js.map → SupportPermissionsPage-Bzfq6pKf.js.map} +1 -1
  157. package/dist/chunks/{TemplatesPage-DStKmwHT.js → TemplatesPage-CYHH5WlP.js} +2 -2
  158. package/dist/chunks/{TemplatesPage-DStKmwHT.js.map → TemplatesPage-CYHH5WlP.js.map} +1 -1
  159. package/dist/chunks/{TemplatesPage-X4Rrhs9p.js → TemplatesPage-czt_RH5f.js} +2 -2
  160. package/dist/chunks/{TemplatesPage-X4Rrhs9p.js.map → TemplatesPage-czt_RH5f.js.map} +1 -1
  161. package/dist/chunks/{TenantCard-BUBYWtvR.js → TenantCard-Bqh5PGJx.js} +2 -2
  162. package/dist/chunks/{TenantCard-BUBYWtvR.js.map → TenantCard-Bqh5PGJx.js.map} +1 -1
  163. package/dist/chunks/{TenantCard-CAgiB-NG.js → TenantCard-C6qKD480.js} +2 -2
  164. package/dist/chunks/{TenantCard-CAgiB-NG.js.map → TenantCard-C6qKD480.js.map} +1 -1
  165. package/dist/chunks/{TenantScopeSelector-BAoah-mL.js → TenantScopeSelector-DWUP8Le7.js} +2 -2
  166. package/dist/chunks/{TenantScopeSelector-BAoah-mL.js.map → TenantScopeSelector-DWUP8Le7.js.map} +1 -1
  167. package/dist/chunks/{TenantScopeSelector-B9vtpIZx.js → TenantScopeSelector-DxQ7HNbh.js} +2 -2
  168. package/dist/chunks/{TenantScopeSelector-B9vtpIZx.js.map → TenantScopeSelector-DxQ7HNbh.js.map} +1 -1
  169. package/dist/chunks/{TicketDetailPage-BFcP4X8s.js → TicketDetailPage-BuxXLcJi.js} +2 -2
  170. package/dist/chunks/{TicketDetailPage-BFcP4X8s.js.map → TicketDetailPage-BuxXLcJi.js.map} +1 -1
  171. package/dist/chunks/{TicketDetailPage-D_Npnt4A.js → TicketDetailPage-Dy4pg33-.js} +2 -2
  172. package/dist/chunks/{TicketDetailPage-D_Npnt4A.js.map → TicketDetailPage-Dy4pg33-.js.map} +1 -1
  173. package/dist/chunks/{TicketsPage-p21DLhUb.js → TicketsPage-Ck-HUgte.js} +2 -2
  174. package/dist/chunks/{TicketsPage-p21DLhUb.js.map → TicketsPage-Ck-HUgte.js.map} +1 -1
  175. package/dist/chunks/{TicketsPage-DBP9kalU.js → TicketsPage-jlN9JDzm.js} +2 -2
  176. package/dist/chunks/{TicketsPage-DBP9kalU.js.map → TicketsPage-jlN9JDzm.js.map} +1 -1
  177. package/dist/chunks/{UserCreateTicketPage-DOwShnG8.js → UserCreateTicketPage-BrRZyXMn.js} +2 -2
  178. package/dist/chunks/{UserCreateTicketPage-DOwShnG8.js.map → UserCreateTicketPage-BrRZyXMn.js.map} +1 -1
  179. package/dist/chunks/{UserCreateTicketPage-lvlvp2u6.js → UserCreateTicketPage-D58Ro4Nb.js} +2 -2
  180. package/dist/chunks/{UserCreateTicketPage-lvlvp2u6.js.map → UserCreateTicketPage-D58Ro4Nb.js.map} +1 -1
  181. package/dist/chunks/{UserDashboardPage-Dp6q6FEW.js → UserDashboardPage-C5ulSzaI.js} +2 -2
  182. package/dist/chunks/{UserDashboardPage-Dp6q6FEW.js.map → UserDashboardPage-C5ulSzaI.js.map} +1 -1
  183. package/dist/chunks/{UserDashboardPage-C_tm7Pld.js → UserDashboardPage-CjAx5OHh.js} +2 -2
  184. package/dist/chunks/{UserDashboardPage-C_tm7Pld.js.map → UserDashboardPage-CjAx5OHh.js.map} +1 -1
  185. package/dist/chunks/{UserDetailPage-DXLxO7LF.js → UserDetailPage-Bhpry9xq.js} +2 -2
  186. package/dist/chunks/{UserDetailPage-DXLxO7LF.js.map → UserDetailPage-Bhpry9xq.js.map} +1 -1
  187. package/dist/chunks/{UserDetailPage-6grZ6gmV.js → UserDetailPage-DUu2mA_n.js} +5 -5
  188. package/dist/chunks/{UserDetailPage-6grZ6gmV.js.map → UserDetailPage-DUu2mA_n.js.map} +1 -1
  189. package/dist/chunks/{UserTicketDetailPage-a4II5VEE.js → UserTicketDetailPage-DpFFjIso.js} +2 -2
  190. package/dist/chunks/{UserTicketDetailPage-a4II5VEE.js.map → UserTicketDetailPage-DpFFjIso.js.map} +1 -1
  191. package/dist/chunks/{UserTicketDetailPage-Ch9IfCPo.js → UserTicketDetailPage-YJvBWFEu.js} +2 -2
  192. package/dist/chunks/{UserTicketDetailPage-Ch9IfCPo.js.map → UserTicketDetailPage-YJvBWFEu.js.map} +1 -1
  193. package/dist/chunks/{UsersGroupsPage-BeAv4QfV.js → UsersGroupsPage-b2PTQX_m.js} +2 -2
  194. package/dist/chunks/{UsersGroupsPage-BeAv4QfV.js.map → UsersGroupsPage-b2PTQX_m.js.map} +1 -1
  195. package/dist/chunks/{UsersGroupsPage-B7Er0V4l.js → UsersGroupsPage-l33K3Nca.js} +3 -3
  196. package/dist/chunks/{UsersGroupsPage-B7Er0V4l.js.map → UsersGroupsPage-l33K3Nca.js.map} +1 -1
  197. package/dist/chunks/{UsersPage-ZR9r9vvf.js → UsersPage-BjC5ZqTa.js} +2 -2
  198. package/dist/chunks/{UsersPage-ZR9r9vvf.js.map → UsersPage-BjC5ZqTa.js.map} +1 -1
  199. package/dist/chunks/{UsersPage-0M1FLqOe.js → UsersPage-NsTukS8m.js} +2 -2
  200. package/dist/chunks/{UsersPage-0M1FLqOe.js.map → UsersPage-NsTukS8m.js.map} +1 -1
  201. package/dist/chunks/{accessRequestsApi-CBpF5d54.js → accessRequestsApi-C2usKVGJ.js} +2 -2
  202. package/dist/chunks/{accessRequestsApi-CBpF5d54.js.map → accessRequestsApi-C2usKVGJ.js.map} +1 -1
  203. package/dist/chunks/{accessRequestsApi-BJH8EE1K.js → accessRequestsApi-LuovcP6l.js} +2 -2
  204. package/dist/chunks/{accessRequestsApi-BJH8EE1K.js.map → accessRequestsApi-LuovcP6l.js.map} +1 -1
  205. package/dist/chunks/{aiApi-Dl7a2lWz.js → aiApi-B03u3zUH.js} +2 -2
  206. package/dist/chunks/{aiApi-Dl7a2lWz.js.map → aiApi-B03u3zUH.js.map} +1 -1
  207. package/dist/chunks/{aiApi-CkkWAvNB.js → aiApi-Cwg0B8PJ.js} +2 -2
  208. package/dist/chunks/{aiApi-CkkWAvNB.js.map → aiApi-Cwg0B8PJ.js.map} +1 -1
  209. package/dist/chunks/{applicationAnalyticsApi-BwcSE_H1.js → applicationAnalyticsApi-BobBdehV.js} +2 -2
  210. package/dist/chunks/{applicationAnalyticsApi-BwcSE_H1.js.map → applicationAnalyticsApi-BobBdehV.js.map} +1 -1
  211. package/dist/chunks/{applicationAnalyticsApi-DKMmDvWk.js → applicationAnalyticsApi-jCZhWKOx.js} +2 -2
  212. package/dist/chunks/{applicationAnalyticsApi-DKMmDvWk.js.map → applicationAnalyticsApi-jCZhWKOx.js.map} +1 -1
  213. package/dist/chunks/{groupsApi-BzDV3_Jc.js → groupsApi-CoxnW9vH.js} +2 -2
  214. package/dist/chunks/{groupsApi-BzDV3_Jc.js.map → groupsApi-CoxnW9vH.js.map} +1 -1
  215. package/dist/chunks/{groupsApi-CQ4vFMdP.js → groupsApi-D2lFFcgu.js} +2 -2
  216. package/dist/chunks/{groupsApi-CQ4vFMdP.js.map → groupsApi-D2lFFcgu.js.map} +1 -1
  217. package/dist/chunks/{index-Det9dEaQ.js → index-B5U_Jp0-.js} +2 -2
  218. package/dist/chunks/{index-Det9dEaQ.js.map → index-B5U_Jp0-.js.map} +1 -1
  219. package/dist/chunks/{index-D18t9DhC.js → index-BDB_a-p7.js} +4 -4
  220. package/dist/chunks/{index-D18t9DhC.js.map → index-BDB_a-p7.js.map} +1 -1
  221. package/dist/chunks/{index-CUZygY5Q.js → index-BbHRJz-n.js} +2 -2
  222. package/dist/chunks/{index-CUZygY5Q.js.map → index-BbHRJz-n.js.map} +1 -1
  223. package/dist/chunks/{index-CoHIgn5H.js → index-CI2WU5ZZ.js} +2 -2
  224. package/dist/chunks/{index-CoHIgn5H.js.map → index-CI2WU5ZZ.js.map} +1 -1
  225. package/dist/chunks/{index-D-2xSu5W.js → index-CLk9ClC2.js} +3 -3
  226. package/dist/chunks/{index-D-2xSu5W.js.map → index-CLk9ClC2.js.map} +1 -1
  227. package/dist/chunks/{index-Dbq-x5H9.js → index-CmTKGOa_.js} +2 -2
  228. package/dist/chunks/{index-Dbq-x5H9.js.map → index-CmTKGOa_.js.map} +1 -1
  229. package/dist/chunks/{index-k4USDz2P.js → index-D5oIr6PO.js} +2 -2
  230. package/dist/chunks/{index-k4USDz2P.js.map → index-D5oIr6PO.js.map} +1 -1
  231. package/dist/chunks/{index-Cib93xtp.js → index-DC6TBJV_.js} +2 -2
  232. package/dist/chunks/{index-Cib93xtp.js.map → index-DC6TBJV_.js.map} +1 -1
  233. package/dist/chunks/{index-CpY95_ro.js → index-DN97bp_f.js} +1128 -1093
  234. package/dist/chunks/index-DN97bp_f.js.map +1 -0
  235. package/dist/chunks/{index-BPMjxWVx.js → index-DRW5qV_L.js} +2 -2
  236. package/dist/chunks/{index-BPMjxWVx.js.map → index-DRW5qV_L.js.map} +1 -1
  237. package/dist/chunks/{index-DQd324n7.js → index-DcLZao1q.js} +2 -2
  238. package/dist/chunks/{index-DQd324n7.js.map → index-DcLZao1q.js.map} +1 -1
  239. package/dist/chunks/{index-bgT9XOKZ.js → index-DcMOmGtX.js} +2 -2
  240. package/dist/chunks/{index-bgT9XOKZ.js.map → index-DcMOmGtX.js.map} +1 -1
  241. package/dist/chunks/{index-DK5czlkn.js → index-DnML-nfd.js} +10 -10
  242. package/dist/chunks/index-DnML-nfd.js.map +1 -0
  243. package/dist/chunks/{index-BBmMbSZV.js → index-Drd59qAP.js} +8 -8
  244. package/dist/chunks/{index-BBmMbSZV.js.map → index-Drd59qAP.js.map} +1 -1
  245. package/dist/chunks/{index-CEbwdURd.js → index-EiIHjIgi.js} +2 -2
  246. package/dist/chunks/{index-CEbwdURd.js.map → index-EiIHjIgi.js.map} +1 -1
  247. package/dist/chunks/{index-BLlESTfA.js → index-axYz6ptj.js} +2 -2
  248. package/dist/chunks/{index-BLlESTfA.js.map → index-axYz6ptj.js.map} +1 -1
  249. package/dist/chunks/{index-Ci1SqFiY.js → index-lXrXnhFc.js} +2 -2
  250. package/dist/chunks/{index-Ci1SqFiY.js.map → index-lXrXnhFc.js.map} +1 -1
  251. package/dist/chunks/{index-h7ZrwrQg.js → index-rI-1r6c2.js} +2 -2
  252. package/dist/chunks/{index-h7ZrwrQg.js.map → index-rI-1r6c2.js.map} +1 -1
  253. package/dist/chunks/{tenantIconMap-Dk6K-UTE.js → tenantIconMap-B4wAYGWP.js} +2 -2
  254. package/dist/chunks/{tenantIconMap-Dk6K-UTE.js.map → tenantIconMap-B4wAYGWP.js.map} +1 -1
  255. package/dist/chunks/{tenantIconMap-7ihIWxAh.js → tenantIconMap-Cfm15HwB.js} +2 -2
  256. package/dist/chunks/{tenantIconMap-7ihIWxAh.js.map → tenantIconMap-Cfm15HwB.js.map} +1 -1
  257. package/dist/chunks/{ticketingApi-BCMKkzlv.js → ticketingApi-CLMAPZDw.js} +2 -2
  258. package/dist/chunks/{ticketingApi-BCMKkzlv.js.map → ticketingApi-CLMAPZDw.js.map} +1 -1
  259. package/dist/chunks/{ticketingApi-Dwn7pl5z.js → ticketingApi-CTap4NdE.js} +2 -2
  260. package/dist/chunks/{ticketingApi-Dwn7pl5z.js.map → ticketingApi-CTap4NdE.js.map} +1 -1
  261. package/dist/chunks/{useAccessRequests-gJ7yhWyi.js → useAccessRequests-CBpDkq9o.js} +2 -2
  262. package/dist/chunks/{useAccessRequests-gJ7yhWyi.js.map → useAccessRequests-CBpDkq9o.js.map} +1 -1
  263. package/dist/chunks/{useAccessRequests-Du7CvowE.js → useAccessRequests-Cj2-OoAW.js} +3 -3
  264. package/dist/chunks/{useAccessRequests-Du7CvowE.js.map → useAccessRequests-Cj2-OoAW.js.map} +1 -1
  265. package/dist/chunks/{useUserAccessRequests-5wWea2Jg.js → useUserAccessRequests-C6l2VMe1.js} +2 -2
  266. package/dist/chunks/{useUserAccessRequests-5wWea2Jg.js.map → useUserAccessRequests-C6l2VMe1.js.map} +1 -1
  267. package/dist/chunks/{useUserAccessRequests-Bk_v8egy.js → useUserAccessRequests-Ds3K-ENU.js} +2 -2
  268. package/dist/chunks/{useUserAccessRequests-Bk_v8egy.js.map → useUserAccessRequests-Ds3K-ENU.js.map} +1 -1
  269. package/dist/components/routing/DynamicRouter.d.ts.map +1 -1
  270. package/dist/components/routing/ProtectedRoute.d.ts.map +1 -1
  271. package/dist/contexts/AuthContext.d.ts.map +1 -1
  272. package/dist/contexts/NavigationContext.d.ts.map +1 -1
  273. package/dist/extensions/PageRegistry.d.ts +2 -0
  274. package/dist/extensions/PageRegistry.d.ts.map +1 -1
  275. package/dist/services/api/adminApi/settings.d.ts +8 -3
  276. package/dist/services/api/adminApi/settings.d.ts.map +1 -1
  277. package/dist/smartstack.cjs +1 -1
  278. package/dist/smartstack.js +1 -1
  279. package/package.json +1 -1
  280. package/dist/chunks/index-CpY95_ro.js.map +0 -1
  281. package/dist/chunks/index-DK5czlkn.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),le=require("react-i18next"),n=require("lucide-react"),J=require("./index-DK5czlkn.js"),Q=require("./PermissionPopover-CtYTz7MK.js");function ge({section:s,resources:v,moduleIndex:A,sectionIndex:k,isCollapsed:$,collapsedSections:S,paginatedRoles:b,canEditSystemRoles:O,statusFilters:i,openPopover:h,onToggleCollapse:M,onTogglePermission:P,onCellClick:f,setOpenPopover:y,renderResourceRow:N}){const T=S.has(s.id),m=v.length>0;return e.jsxs(l.Fragment,{children:[N(s,A+k+1,"section",m,T),m&&!T&&v.map((L,I)=>N(L,A+k+I+2,"resource",!1,!1))]},s.id)}function ve({roles:s,resources:v,canEditSystemRoles:A=!1,onTogglePermission:k,getPermissionInheritance:$,rolesPerPage:S,rolePageIndex:b,modulesPerPage:O,modulePageIndex:i,collapsedApps:h,onToggleApp:M,statusFilters:P}){const{t:f}=le.useTranslation("admin"),[y,N]=l.useState(null),[T,m]=l.useState(new Set),[L,I]=l.useState(new Set),D=l.useCallback((t,o)=>{o(c=>{const p=new Set(c);return p.has(t)?p.delete(t):p.add(t),p})},[]),E=l.useCallback(t=>{D(t,m)},[D]),z=l.useCallback(t=>{D(t,I)},[D]),q=l.useMemo(()=>v.filter(t=>t.level==="module").length,[v]),_=l.useMemo(()=>{const t=b*S;return s.slice(t,t+S)},[s,b,S]),B=l.useMemo(()=>Q.groupByApplicationWithSections(v),[v]),r=l.useCallback(()=>{const t=i*O,o=t+O,c={current:0},p=[];for(const w of B){const C=h.has(w.application),g=[];if(!C)for(const R of w.modules)c.current>=t&&c.current<o&&g.push(R),c.current++;p.push({application:w.application,modules:g})}return p},[B,i,O,h]),u=l.useMemo(()=>r(),[r]),F=l.useCallback((t,o)=>{const c=$(t,o);return c.isDirect||c.isInherited},[$]),Z=l.useCallback((t,o)=>Q.calculatePermissionStatus(o,c=>F(t,c)),[F]),V=(t,o)=>{y?.roleId===t&&y?.resourceId===o?N(null):N({roleId:t,resourceId:o})};if(s.length===0||q===0)return e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s.length===0?f("assignments.noRoles"):f("assignments.noResources")});const W=t=>{switch(t){case"resource":return"pl-28";case"section":return"pl-22";default:return"pl-16"}},K=t=>t==="resource"?e.jsx(n.Database,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):t==="section"?e.jsx(n.FileText,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):e.jsx(n.Box,{className:"h-3.5 w-3.5 text-[var(--text-secondary)]"}),Y=t=>t==="resource"?"text-[var(--text-muted)] italic":t==="section"?"text-[var(--text-secondary)]":"font-medium text-[var(--text-primary)]",ee=l.useCallback((t,o)=>{o==="module"?E(t):o==="section"&&z(t)},[E,z]),ae=(t,o,c,p)=>t?e.jsx("button",{onClick:()=>ee(o,c),className:"p-0.5 hover:bg-[var(--bg-hover)] rounded",children:p?e.jsx(n.ChevronRight,{className:"h-3 w-3 text-[var(--text-muted)]"}):e.jsx(n.ChevronDown,{className:"h-3 w-3 text-[var(--text-muted)]"})}):null,ne=t=>_.map(o=>{const{status:c,grantedCount:p}=Z(o.id,t),w=y?.roleId===o.id&&y?.resourceId===t.id,C=l.createRef(),g=!o.isSystem||A,R=Q.getPermissionCellBackground(c),j=(P?.size??0)>0&&!P?.has(c);return e.jsxs("td",{className:`px-0 py-1 text-center relative ${j?"":R}`,style:{width:"44px",minWidth:"44px",maxWidth:"44px"},children:[e.jsx("button",{ref:C,type:"button",onClick:()=>g&&!j&&V(o.id,t.id),disabled:!g||j,className:`w-full h-full min-h-[36px] flex items-center justify-center rounded transition-colors ${j?"opacity-10 cursor-default":g?"hover:opacity-80":"cursor-not-allowed opacity-50"} ${w?"ring-2 ring-[var(--color-accent-500)]":""}`,title:j?void 0:g?`${o.name} - ${t.moduleLabel}: ${p}/${t.permissions.length}`:`${o.name} - ${f("assignments.systemRoleReadOnly")}`,children:e.jsx(Q.PermissionStatusIndicator,{status:c,grantedCount:p,totalCount:t.permissions.length})}),w&&g&&!j&&e.jsx(Q.PermissionPopover,{mode:"editable",role:o,resource:t,onTogglePermission:H=>k(o.id,H),onClose:()=>N(null),getPermissionInheritance:$})]},`${o.id}-${t.id}`)}),se=(t,o,c,p=!1,w=!1)=>{const C=W(c),g=o%2===0?"item-light":"item-medium";return e.jsxs("tr",{className:`hover:bg-[var(--bg-hover)] ${g}`,children:[e.jsx("td",{className:`sticky left-0 z-10 ${g} px-3 py-2 ${C}`,style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("div",{className:"flex items-center gap-2",children:[ae(p,t.id,c,w),K(c),e.jsx("span",{className:`text-sm ${Y(c)}`,children:t.moduleLabel}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",t.permissions.length,")"]})]})}),ne(t)]},t.id)};return e.jsx("div",{className:"overflow-x-auto overflow-y-visible",children:e.jsxs("table",{className:"border-collapse",style:{width:"auto"},children:[e.jsx("thead",{className:"item-medium border-b border-[var(--item-color-border)]",children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",className:"sticky left-0 z-20 item-medium px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"280px",minWidth:"280px",maxWidth:"280px",height:"180px",verticalAlign:"bottom",paddingBottom:"12px"},children:f("assignments.resource")}),_.map(t=>e.jsx("th",{scope:"col",className:"relative overflow-visible",style:{width:"44px",minWidth:"44px",maxWidth:"44px",height:"180px",padding:0,verticalAlign:"bottom"},children:e.jsx("div",{className:"absolute bottom-2 left-1/2",style:{transform:"translateX(-6px) rotate(-55deg)",transformOrigin:"bottom left",width:"160px"},children:e.jsxs("div",{className:"flex items-center gap-1",children:[t.isSystem&&e.jsx(n.Lock,{className:"h-3 w-3 flex-shrink-0 text-[var(--warning-dot)]"}),e.jsx("span",{className:"text-[10px] font-medium text-[var(--text-primary)] whitespace-nowrap",title:t.name,children:t.name})]})})},t.id))]})}),e.jsx("tbody",{className:"divide-y divide-[var(--item-color-border)]",children:u.map(t=>{const o=h.has(t.application),c=_.length;return e.jsxs(l.Fragment,{children:[e.jsxs("tr",{className:"bg-[var(--color-accent-900)]/30 dark:bg-[var(--color-accent-900)]/50",children:[e.jsx("td",{className:"sticky left-0 z-10 px-3 py-3 bg-[var(--color-accent-900)]/30 dark:bg-[var(--color-accent-900)]/50",style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("button",{onClick:()=>M(t.application),className:"flex items-center gap-3 w-full text-left hover:opacity-80",children:[o?e.jsx(n.ChevronRight,{className:"h-5 w-5 text-[var(--color-accent-400)]"}):e.jsx(n.ChevronDown,{className:"h-5 w-5 text-[var(--color-accent-400)]"}),e.jsx(n.FolderOpen,{className:"h-5 w-5 text-[var(--color-accent-400)]"}),e.jsx("span",{className:"text-sm font-bold text-[var(--color-accent-300)] uppercase tracking-wider",children:t.application}),e.jsx("span",{className:"text-xs text-[var(--color-accent-400)] ml-auto",children:f("assignments.moduleCount",{count:t.modules.length})})]})}),e.jsx("td",{colSpan:c,className:"px-0 py-3"})]}),!o&&t.modules.map((p,w)=>{const{module:C,sections:g}=p,R=g.length>0,j=T.has(C.id);return e.jsxs(l.Fragment,{children:[se(C,w,"module",R,j),R&&!j&&g.map((H,G)=>{const{section:te,resources:U}=H;return e.jsx(ge,{section:te,resources:U,moduleIndex:w,sectionIndex:G,isCollapsed:j,collapsedSections:L,paginatedRoles:_,canEditSystemRoles:A,statusFilters:P,openPopover:y,onToggleCollapse:ee,onTogglePermission:k,onCellClick:V,setOpenPopover:N,renderResourceRow:se},te.id)})]},C.id)})]},t.application)})})]})})}function be({filters:s,roles:v,categories:A,applications:k,modules:$,hasChanges:S,onFilterChange:b,onReset:O}){const{t:i}=le.useTranslation("admin"),[h,M]=l.useState(!1),[P,f]=l.useState(""),y=l.useRef(null),N=l.useRef(null),T=l.useMemo(()=>{let r=v;if(s.categoryFilter!=="all"&&(r=r.filter(u=>u.category===s.categoryFilter)),P.trim()){const u=P.toLowerCase();r=r.filter(F=>F.name.toLowerCase().includes(u)||F.shortName?.toLowerCase().includes(u))}return r},[v,s.categoryFilter,P]);l.useEffect(()=>{h&&N.current&&setTimeout(()=>N.current?.focus(),50)},[h]);const m=r=>{M(r),r||f("")},L=$.filter(r=>!(s.applicationFilter!=="all"&&r.app!==s.applicationFilter));l.useEffect(()=>{function r(u){y.current&&!y.current.contains(u.target)&&m(!1)}return document.addEventListener("mousedown",r),()=>document.removeEventListener("mousedown",r)},[]);const I=r=>{const u=s.selectedRoleIds.includes(r)?s.selectedRoleIds.filter(F=>F!==r):[...s.selectedRoleIds,r];b({selectedRoleIds:u})},D=()=>{b({selectedRoleIds:T.map(r=>r.id)})},E=()=>{b({selectedRoleIds:[]})},z=r=>{b({applicationFilter:r,moduleFilter:"all"})},q=r=>{b({categoryFilter:r,selectedRoleIds:[]})},_=s.selectedRoleIds.length>0||s.categoryFilter!=="all"||s.applicationFilter!=="all"||s.moduleFilter!=="all",B=s.selectedRoleIds.length===0?i("permissions.filters.allRoles"):s.selectedRoleIds.length===1?v.find(r=>r.id===s.selectedRoleIds[0])?.name||i("assignments.oneRoleSelected"):`${s.selectedRoleIds.length} ${i("permissions.filters.rolesSelected")}`;return e.jsxs("div",{className:"bg-[var(--bg-card)] border border-[var(--item-color-border)] rounded-[var(--radius-card)] p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-secondary)]",children:[e.jsx(n.Filter,{className:"h-4 w-4"}),e.jsx("span",{children:i("assignments.filters")})]}),e.jsxs("div",{className:"flex flex-wrap gap-4",children:[e.jsxs("div",{className:"min-w-[160px] flex-1",children:[e.jsx("label",{htmlFor:"category-filter",className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("permissions.filters.selectCategory")}),e.jsxs("select",{id:"category-filter",value:s.categoryFilter,onChange:r=>q(r.target.value),className:"block w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] leading-5 bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] sm:text-sm",children:[e.jsx("option",{value:"all",children:i("permissions.filters.allCategories")}),A.map(r=>e.jsx("option",{value:r,children:i(`roles.categories.${r.toLowerCase()}`)},r))]})]}),e.jsxs("div",{ref:y,className:"relative min-w-[200px] flex-[2]",children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("permissions.filters.selectRoles")}),e.jsxs("button",{type:"button",onClick:()=>m(!h),className:"w-full flex items-center justify-between px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] bg-[var(--bg-primary)] text-[var(--text-primary)] hover:bg-[var(--bg-secondary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] text-sm",children:[e.jsx("span",{className:"truncate",children:B}),e.jsx(n.ChevronDown,{className:`h-4 w-4 text-[var(--text-muted)] transition-transform ${h?"rotate-180":""}`})]}),h&&e.jsxs("div",{className:"absolute z-50 mt-1 w-full bg-[var(--bg-card)] border border-[var(--border-color)] rounded-[var(--radius-card)] shadow-lg",children:[e.jsx("div",{className:"px-3 py-2 border-b border-[var(--border-color)]",children:e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-y-0 left-0 pl-2 flex items-center pointer-events-none",children:e.jsx(n.Search,{className:"h-4 w-4 text-[var(--text-muted)]"})}),e.jsx("input",{ref:N,type:"text",value:P,onChange:r=>f(r.target.value),placeholder:i("permissions.filters.searchRoles"),className:"block w-full pl-8 pr-3 py-1.5 text-sm border border-[var(--border-color)] rounded-[var(--radius-input)] bg-[var(--bg-primary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)]"})]})}),e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-b border-[var(--border-color)] bg-[var(--bg-secondary)]",children:[e.jsx("button",{type:"button",onClick:D,className:"text-xs text-[var(--color-accent-600)] hover:text-[var(--color-accent-700)]",children:i("permissions.filters.selectAll")}),e.jsx("button",{type:"button",onClick:E,className:"text-xs text-[var(--text-muted)] hover:text-[var(--text-secondary)]",children:i("permissions.filters.clearSelection")})]}),e.jsx("div",{className:"max-h-64 overflow-auto",children:T.length===0?e.jsx("div",{className:"px-3 py-4 text-sm text-[var(--text-muted)] text-center",children:i("permissions.filters.noRolesFound")}):T.map(r=>e.jsxs("button",{type:"button",onClick:()=>I(r.id),className:"w-full flex items-center gap-3 px-3 py-2 hover:bg-[var(--bg-secondary)] cursor-pointer text-left",children:[e.jsx("div",{className:`w-4 h-4 rounded border flex items-center justify-center flex-shrink-0 ${s.selectedRoleIds.includes(r.id)?"bg-[var(--color-accent-600)] border-[var(--color-accent-600)]":"border-[var(--border-color)] bg-[var(--bg-primary)]"}`,children:s.selectedRoleIds.includes(r.id)&&e.jsx(n.Check,{className:"h-3 w-3 text-white"})}),e.jsx("span",{className:"text-sm text-[var(--text-primary)] truncate",children:r.name}),r.isSystem&&e.jsx("span",{className:"text-xs px-1.5 py-0.5 rounded bg-[var(--bg-tertiary)] text-[var(--text-muted)] flex-shrink-0",children:i("assignments.systemRole")})]},r.id))})]})]}),e.jsxs("div",{className:"min-w-[160px] flex-1",children:[e.jsx("label",{htmlFor:"application-filter",className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("assignments.filterByApplication")}),e.jsxs("select",{id:"application-filter",value:s.applicationFilter,onChange:r=>z(r.target.value),disabled:k.length===0,className:"block w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] leading-5 bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx("option",{value:"all",children:i("assignments.allApplications")}),k.map(r=>e.jsx("option",{value:r.app,children:r.label},r.app))]})]}),e.jsxs("div",{className:"min-w-[160px] flex-1",children:[e.jsx("label",{htmlFor:"module-filter",className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("permissions.filters.selectModule")}),e.jsxs("select",{id:"module-filter",value:s.moduleFilter,onChange:r=>b({moduleFilter:r.target.value}),disabled:L.length===0,className:"block w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] leading-5 bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx("option",{value:"all",children:i("permissions.filters.allModules")}),L.map(r=>e.jsx("option",{value:r.module,children:r.label},`${r.app}:${r.module}`))]})]}),e.jsx("div",{className:"flex items-end flex-shrink-0",children:_&&e.jsxs("button",{type:"button",onClick:O,className:"w-full inline-flex items-center justify-center gap-2 px-3 py-2 text-sm text-[var(--text-secondary)] hover:text-[var(--text-primary)] border border-[var(--border-color)] rounded-[var(--radius-input)] hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(n.RotateCcw,{className:"h-4 w-4"}),i("assignments.clearFilters")]})})]}),s.selectedRoleIds.length>0&&e.jsx("div",{className:"flex flex-wrap gap-2",children:s.selectedRoleIds.map(r=>{const u=v.find(F=>F.id===r);return u?e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 text-xs rounded-full bg-[var(--color-accent-100)] text-[var(--color-accent-700)] dark:bg-[var(--color-accent-900)] dark:text-[var(--color-accent-300)]",children:[u.name,e.jsx("button",{type:"button",onClick:()=>I(r),className:"hover:text-[var(--color-accent-900)] dark:hover:text-[var(--color-accent-100)]",children:e.jsx(n.X,{className:"h-3 w-3"})})]},r):null})}),S&&e.jsx("div",{className:"flex items-center justify-end pt-2 border-t border-[var(--border-color)]",children:e.jsx("div",{className:"text-sm text-[var(--warning-text)]",children:i("assignments.unsavedChanges")})})]})}const ie={viewer:{nameKey:"assignments.templates.viewer.name",descriptionKey:"assignments.templates.viewer.description",icon:n.Eye,color:"blue",permissions:["*.read"]},member:{nameKey:"assignments.templates.member.name",descriptionKey:"assignments.templates.member.description",icon:n.User,color:"green",permissions:["*.read","*.create"]},contributor:{nameKey:"assignments.templates.contributor.name",descriptionKey:"assignments.templates.contributor.description",icon:n.Pencil,color:"orange",permissions:["*.read","*.create","*.update"]},admin:{nameKey:"assignments.templates.admin.name",descriptionKey:"assignments.templates.admin.description",icon:n.ShieldCheck,color:"red",permissions:["*.*"]}},fe=[10,25,50],je=[10,15,20,25];function ye(){const{t:s}=le.useTranslation("admin"),{user:v}=J.useAuth(),[A,k]=l.useState(!1),[$,S]=l.useState(null),[b,O]=l.useState(25),[i,h]=l.useState(1),[M,P]=l.useState(10),[f,y]=l.useState(0),[N,T]=l.useState(new Set),[m,L]=l.useState(new Set),[I,D]=l.useState(!1),E=a=>{L(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d}),h(1),y(0)},z=a=>{T(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d})},q=l.useMemo(()=>v?J.hasFullAccess(v.permissions):!1,[v]),{loading:_,error:B,saveError:r,saving:u,roles:F,assignments:Z,filters:V,filteredRoles:W,filteredResources:K,hasChanges:Y,applications:ee,modules:ae,categories:ne,togglePermission:se,updateFilters:t,reloadData:o,resetChanges:c,clearSaveError:p,getPermissionInheritance:w}=J.usePermissionMatrix({canEditSystemRoles:q}),C=l.useCallback((a,x)=>{const d=x.permissions.filter(he=>{const oe=w(a,he.id);return oe.isDirect||oe.isInherited}),X=d.length,pe=x.totalPermissions;return X===0?"none":X===pe?"all":X===1&&d[0]?.action==="read"?"read-only":"some"},[w]),g=l.useMemo(()=>K.filter(a=>a.level==="module"),[K]),R=l.useMemo(()=>m.size===0?W:W.filter(a=>{for(const x of g){const d=C(a.id,x);if(m.has(d))return!0}return!1}),[W,g,m,C]),j=l.useMemo(()=>m.size===0?K:K.filter(a=>{if(a.level!=="module")return!0;for(const x of W){const d=C(x.id,a);if(m.has(d))return!0}return!1}),[K,W,m,C]),H=l.useMemo(()=>{let a=0;return Object.values(Z).forEach(x=>{a+=x.size}),a},[Z]),G=l.useMemo(()=>j.filter(a=>!(a.level!=="module"||N.has(a.applicationLabel))).length,[j,N]),te=l.useMemo(()=>j.filter(a=>a.level==="module").length,[j]),U=Math.ceil(G/b),ce=a=>{h(1),t(a)},de=a=>{O(a),h(1)},re=Math.ceil(R.length/M),me=a=>{P(a),y(0)},xe=async a=>{const x=ie[a];if(!x)return;const d=prompt(s("assignments.enterRoleName"),s(x.nameKey));if(d)try{S(null),await J.adminApi.roles.create({name:d,description:s(x.descriptionKey),permissionIds:[]}),k(!1),await o()}catch(X){S(X instanceof Error?X.message:"Failed to create role from template")}},ue=()=>{h(1),t({selectedRoleIds:[],resourceSearch:"",applicationFilter:"all",moduleFilter:"all"})};return _?e.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:e.jsxs("div",{className:"text-center",children:[e.jsx(n.Loader2,{className:"h-8 w-8 animate-spin text-[var(--color-accent-500)] mx-auto mb-4"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:s("assignments.loading")})]})}):B?e.jsx("div",{className:"p-6",children:e.jsx("div",{className:"rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] p-4",children:e.jsxs("div",{className:"flex",children:[e.jsx(n.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsxs("div",{className:"ml-3",children:[e.jsx("h3",{className:"text-sm font-medium text-[var(--error-text)]",children:s("common.error")}),e.jsx("div",{className:"mt-2 text-sm text-[var(--error-text)] opacity-80",children:e.jsx("p",{children:B})})]})]})})}):e.jsxs("div",{className:"p-6 space-y-4",children:[e.jsx(J.Breadcrumb,{items:[{label:s("header.title"),href:"/administration"},{label:s("assignments.title","Assignments")}]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:s("assignments.title")}),e.jsx("p",{className:"mt-1 text-sm text-[var(--text-secondary)]",children:s("assignments.subtitle")})]}),e.jsx("div",{className:"flex items-center gap-3 flex-shrink-0",children:e.jsxs("button",{type:"button",onClick:()=>k(!0),className:"inline-flex items-center px-4 py-2 border border-[var(--border-color)] text-sm font-medium rounded-[var(--radius-button)] text-[var(--text-secondary)] bg-[var(--bg-card)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx(n.Sparkles,{className:"h-4 w-4 mr-2"}),s("assignments.createFromTemplate")]})})]}),r&&e.jsx("div",{className:"rounded-[var(--radius-card)] bg-[var(--error-bg)] p-3 border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx(n.AlertCircle,{className:"h-4 w-4 text-[var(--error-text)]"}),e.jsx("p",{className:"ml-2 text-sm text-[var(--error-text)]",children:r}),e.jsx("button",{type:"button",onClick:p,className:"ml-auto text-sm text-[var(--error-text)] hover:opacity-80 font-medium",children:s("common.dismiss")})]})}),(Y||u)&&e.jsx("div",{className:"rounded-[var(--radius-card)] bg-[var(--warning-bg)] p-3 border border-[var(--warning-border)]",children:e.jsxs("div",{className:"flex items-center",children:[u?e.jsx(n.Loader2,{className:"h-4 w-4 text-[var(--warning-dot)] animate-spin"}):e.jsx(n.Info,{className:"h-4 w-4 text-[var(--warning-dot)]"}),e.jsx("p",{className:"ml-2 text-sm text-[var(--warning-text)]",children:s(u?"assignments.saving":"assignments.autoSaveActive")}),!u&&e.jsx("button",{type:"button",onClick:c,className:"ml-auto text-sm text-[var(--warning-text)] hover:opacity-80 font-medium",children:s("assignments.discardChanges")})]})}),e.jsx(be,{filters:V,roles:F,categories:ne,applications:ee,modules:ae,hasChanges:Y,onFilterChange:ce,onReset:ue}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 py-2",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--color-accent-100)] text-[var(--color-accent-700)] dark:bg-[var(--color-accent-900)] dark:text-[var(--color-accent-300)]",children:[R.length," ",s("assignments.roles")]}),e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:[G,"/",te," ",s("assignments.modules")]}),e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--success-bg)] text-[var(--success-text)] border border-[var(--success-border)]",children:[H," ",s("assignments.permissionsAssigned")]})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-[var(--text-secondary)] border-l border-[var(--border-color)] pl-4",children:[e.jsxs("span",{children:[s("assignments.rolesPerPage"),":"]}),e.jsx("select",{value:M,onChange:a=>me(Number(a.target.value)),className:"px-2 py-1 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:je.map(a=>e.jsx("option",{value:a,children:a},a))}),e.jsxs("span",{className:"text-[var(--text-muted)]",children:[f*M+1,"-",Math.min((f+1)*M,R.length)," / ",R.length]}),re>1&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>y(a=>Math.max(0,a-1)),disabled:f===0,className:"p-1 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronLeft,{className:"h-3.5 w-3.5"})}),e.jsxs("span",{className:"text-xs min-w-[50px] text-center",children:[f+1," / ",re]}),e.jsx("button",{onClick:()=>y(a=>Math.min(re-1,a+1)),disabled:f>=re-1,className:"p-1 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronRight,{className:"h-3.5 w-3.5"})})]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs("button",{onClick:()=>E("none"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("none")?"bg-red-500/30 border-red-500 text-red-700 dark:text-red-300":"bg-red-500/10 border-red-500/30 text-red-600 dark:text-red-400 hover:bg-red-500/20 hover:border-red-500"}`,children:[e.jsx(n.Ban,{className:"h-3.5 w-3.5"}),s("assignments.none")]}),e.jsxs("button",{onClick:()=>E("read-only"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("read-only")?"bg-sky-500/30 border-sky-500 text-sky-700 dark:text-sky-300":"bg-sky-500/10 border-sky-500/30 text-sky-600 dark:text-sky-400 hover:bg-sky-500/20 hover:border-sky-500"}`,children:[e.jsx(n.Eye,{className:"h-3.5 w-3.5"}),s("assignments.readOnly")]}),e.jsxs("button",{onClick:()=>E("some"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("some")?"bg-amber-500/30 border-amber-500 text-amber-700 dark:text-amber-300":"bg-amber-500/10 border-amber-500/30 text-amber-600 dark:text-amber-400 hover:bg-amber-500/20 hover:border-amber-500"}`,children:[e.jsx(n.Star,{className:"h-3.5 w-3.5"}),s("assignments.partial")]}),e.jsxs("button",{onClick:()=>E("all"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("all")?"bg-emerald-500/30 border-emerald-500 text-emerald-700 dark:text-emerald-300":"bg-emerald-500/10 border-emerald-500/30 text-emerald-600 dark:text-emerald-400 hover:bg-emerald-500/20 hover:border-emerald-500"}`,children:[e.jsx(n.Check,{className:"h-3.5 w-3.5"}),s("assignments.complete")]}),m.size>0&&e.jsx("button",{onClick:()=>L(new Set),className:"text-xs text-[var(--color-accent-500)] hover:text-[var(--color-accent-600)] underline ml-2",children:s("assignments.clearFilters")})]})]}),e.jsxs("div",{className:"bg-[var(--bg-card)] border border-[var(--item-color-border)] rounded-[var(--radius-card)] overflow-hidden",children:[e.jsxs("button",{type:"button",onClick:()=>D(!I),className:"w-full flex items-center justify-between px-4 py-2.5 text-sm font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(n.BookOpen,{className:"h-4 w-4 text-[var(--color-accent-500)]"}),e.jsx("span",{children:s("assignments.guide.title")})]}),I?e.jsx(n.ChevronUp,{className:"h-4 w-4 text-[var(--text-muted)]"}):e.jsx(n.ChevronDown,{className:"h-4 w-4 text-[var(--text-muted)]"})]}),I&&e.jsx("div",{className:"px-4 pb-4 border-t border-[var(--item-color-border)]",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 pt-3",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-[var(--text-primary)] uppercase tracking-wider mb-2",children:s("assignments.guide.colorLegendTitle")}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-red-500/10 border border-red-500/20 text-red-600 dark:text-red-400",children:e.jsx(n.Ban,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.noneDesc")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-sky-500/20 border border-sky-500/30 text-sky-700 dark:text-sky-300",children:e.jsx(n.Eye,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.readOnlyDesc")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-amber-500/20 border border-amber-500/30 text-amber-700 dark:text-amber-300",children:e.jsx(n.Star,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.partialDesc")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-emerald-500/20 border border-emerald-500/30 text-emerald-700 dark:text-emerald-300",children:e.jsx(n.Check,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.completeDesc")})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-[var(--text-primary)] uppercase tracking-wider mb-2",children:s("assignments.guide.howToUseTitle")}),e.jsxs("ul",{className:"space-y-1.5 text-xs text-[var(--text-secondary)]",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.clickCell")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx(n.Lock,{className:"h-3 w-3 flex-shrink-0 mt-0.5 text-[var(--warning-dot)]"}),s("assignments.guide.systemRoles")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.inheritance")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.autoSave")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.filterButtons")]})]})]})]})})]}),e.jsx("div",{className:"bg-[var(--bg-card)] shadow-[var(--shadow-md)] rounded-[var(--radius-card)] border border-[var(--item-color-border)]",children:e.jsx(ve,{roles:R,resources:j,assignments:Z,canEditSystemRoles:q,onTogglePermission:se,getPermissionInheritance:w,rolesPerPage:M,rolePageIndex:f,modulesPerPage:b,modulePageIndex:i-1,collapsedApps:N,onToggleApp:z,statusFilters:m})}),e.jsx("div",{className:"py-3 px-4 bg-[var(--bg-card)] rounded-[var(--radius-card)] border border-[var(--item-color-border)]",children:e.jsxs("div",{className:"flex items-center gap-3 text-sm text-[var(--text-secondary)]",children:[e.jsxs("span",{children:[s("assignments.itemsPerPage"),":"]}),e.jsx("select",{value:b,onChange:a=>de(Number(a.target.value)),className:"px-2 py-1 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:fe.map(a=>e.jsx("option",{value:a,children:a},a))}),e.jsxs("span",{className:"text-[var(--text-muted)]",children:[(i-1)*b+1,"-",Math.min(i*b,G)," / ",G]}),U>1&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>h(a=>Math.max(1,a-1)),disabled:i===1,className:"p-1.5 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronLeft,{className:"h-4 w-4"})}),e.jsxs("span",{className:"text-sm min-w-[60px] text-center",children:[i," / ",U]}),e.jsx("button",{onClick:()=>h(a=>Math.min(U,a+1)),disabled:i>=U,className:"p-1.5 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronRight,{className:"h-4 w-4"})})]})]})}),A&&e.jsx("div",{className:"fixed inset-0 z-50 overflow-y-auto",children:e.jsxs("div",{className:"flex items-center justify-center min-h-screen px-4 pt-4 pb-20 text-center sm:p-0",children:[e.jsx("button",{type:"button",className:"fixed inset-0 bg-black/50 transition-opacity",onClick:()=>k(!1),"aria-label":"Close modal"}),e.jsxs("div",{className:"inline-block align-bottom bg-[var(--bg-card)] rounded-[var(--radius-modal)] px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full sm:p-6 border border-[var(--border-color)]",children:[e.jsxs("div",{className:"mb-4",children:[e.jsx("h3",{className:"text-lg font-medium text-[var(--text-primary)]",children:s("assignments.createFromTemplate")}),e.jsx("p",{className:"mt-1 text-sm text-[var(--text-secondary)]",children:s("assignments.templateDescription")})]}),$&&e.jsx("div",{className:"mb-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] p-3",children:e.jsxs("div",{className:"flex",children:[e.jsx(n.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("div",{className:"ml-3",children:e.jsx("p",{className:"text-sm text-[var(--error-text)]",children:$})})]})}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:Object.entries(ie).map(([a,x])=>{const d=x.icon;return e.jsx("button",{onClick:()=>xe(a),className:"relative p-4 rounded-[var(--radius-card)] border-2 text-left transition-all hover:shadow-lg hover:scale-105 border-[var(--border-color)] hover:border-[var(--color-accent-500)]",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(d,{className:"h-6 w-6 text-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"text-sm font-medium text-[var(--text-primary)]",children:s(x.nameKey)}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-secondary)]",children:s(x.descriptionKey)})]})]})},a)})}),e.jsx("div",{className:"mt-5 sm:mt-6",children:e.jsx("button",{type:"button",onClick:()=>{k(!1),S(null)},className:"w-full inline-flex justify-center rounded-[var(--radius-button)] border border-[var(--border-color)] shadow-sm px-4 py-2 bg-[var(--bg-secondary)] text-base font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] transition-colors",children:s("common.cancel")})})]})]})})]})}exports.AssignmentsPage=ye;
2
- //# sourceMappingURL=AssignmentsPage-CPeKJjyK.js.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),le=require("react-i18next"),n=require("lucide-react"),J=require("./index-DnML-nfd.js"),Q=require("./PermissionPopover-CtYTz7MK.js");function ge({section:s,resources:v,moduleIndex:A,sectionIndex:k,isCollapsed:$,collapsedSections:S,paginatedRoles:b,canEditSystemRoles:O,statusFilters:i,openPopover:h,onToggleCollapse:M,onTogglePermission:P,onCellClick:f,setOpenPopover:y,renderResourceRow:N}){const T=S.has(s.id),m=v.length>0;return e.jsxs(l.Fragment,{children:[N(s,A+k+1,"section",m,T),m&&!T&&v.map((L,I)=>N(L,A+k+I+2,"resource",!1,!1))]},s.id)}function ve({roles:s,resources:v,canEditSystemRoles:A=!1,onTogglePermission:k,getPermissionInheritance:$,rolesPerPage:S,rolePageIndex:b,modulesPerPage:O,modulePageIndex:i,collapsedApps:h,onToggleApp:M,statusFilters:P}){const{t:f}=le.useTranslation("admin"),[y,N]=l.useState(null),[T,m]=l.useState(new Set),[L,I]=l.useState(new Set),D=l.useCallback((t,o)=>{o(c=>{const p=new Set(c);return p.has(t)?p.delete(t):p.add(t),p})},[]),E=l.useCallback(t=>{D(t,m)},[D]),z=l.useCallback(t=>{D(t,I)},[D]),q=l.useMemo(()=>v.filter(t=>t.level==="module").length,[v]),_=l.useMemo(()=>{const t=b*S;return s.slice(t,t+S)},[s,b,S]),B=l.useMemo(()=>Q.groupByApplicationWithSections(v),[v]),r=l.useCallback(()=>{const t=i*O,o=t+O,c={current:0},p=[];for(const w of B){const C=h.has(w.application),g=[];if(!C)for(const R of w.modules)c.current>=t&&c.current<o&&g.push(R),c.current++;p.push({application:w.application,modules:g})}return p},[B,i,O,h]),u=l.useMemo(()=>r(),[r]),F=l.useCallback((t,o)=>{const c=$(t,o);return c.isDirect||c.isInherited},[$]),Z=l.useCallback((t,o)=>Q.calculatePermissionStatus(o,c=>F(t,c)),[F]),V=(t,o)=>{y?.roleId===t&&y?.resourceId===o?N(null):N({roleId:t,resourceId:o})};if(s.length===0||q===0)return e.jsx("div",{className:"text-center py-12 text-[var(--text-secondary)]",children:s.length===0?f("assignments.noRoles"):f("assignments.noResources")});const W=t=>{switch(t){case"resource":return"pl-28";case"section":return"pl-22";default:return"pl-16"}},K=t=>t==="resource"?e.jsx(n.Database,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):t==="section"?e.jsx(n.FileText,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}):e.jsx(n.Box,{className:"h-3.5 w-3.5 text-[var(--text-secondary)]"}),Y=t=>t==="resource"?"text-[var(--text-muted)] italic":t==="section"?"text-[var(--text-secondary)]":"font-medium text-[var(--text-primary)]",ee=l.useCallback((t,o)=>{o==="module"?E(t):o==="section"&&z(t)},[E,z]),ae=(t,o,c,p)=>t?e.jsx("button",{onClick:()=>ee(o,c),className:"p-0.5 hover:bg-[var(--bg-hover)] rounded",children:p?e.jsx(n.ChevronRight,{className:"h-3 w-3 text-[var(--text-muted)]"}):e.jsx(n.ChevronDown,{className:"h-3 w-3 text-[var(--text-muted)]"})}):null,ne=t=>_.map(o=>{const{status:c,grantedCount:p}=Z(o.id,t),w=y?.roleId===o.id&&y?.resourceId===t.id,C=l.createRef(),g=!o.isSystem||A,R=Q.getPermissionCellBackground(c),j=(P?.size??0)>0&&!P?.has(c);return e.jsxs("td",{className:`px-0 py-1 text-center relative ${j?"":R}`,style:{width:"44px",minWidth:"44px",maxWidth:"44px"},children:[e.jsx("button",{ref:C,type:"button",onClick:()=>g&&!j&&V(o.id,t.id),disabled:!g||j,className:`w-full h-full min-h-[36px] flex items-center justify-center rounded transition-colors ${j?"opacity-10 cursor-default":g?"hover:opacity-80":"cursor-not-allowed opacity-50"} ${w?"ring-2 ring-[var(--color-accent-500)]":""}`,title:j?void 0:g?`${o.name} - ${t.moduleLabel}: ${p}/${t.permissions.length}`:`${o.name} - ${f("assignments.systemRoleReadOnly")}`,children:e.jsx(Q.PermissionStatusIndicator,{status:c,grantedCount:p,totalCount:t.permissions.length})}),w&&g&&!j&&e.jsx(Q.PermissionPopover,{mode:"editable",role:o,resource:t,onTogglePermission:H=>k(o.id,H),onClose:()=>N(null),getPermissionInheritance:$})]},`${o.id}-${t.id}`)}),se=(t,o,c,p=!1,w=!1)=>{const C=W(c),g=o%2===0?"item-light":"item-medium";return e.jsxs("tr",{className:`hover:bg-[var(--bg-hover)] ${g}`,children:[e.jsx("td",{className:`sticky left-0 z-10 ${g} px-3 py-2 ${C}`,style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("div",{className:"flex items-center gap-2",children:[ae(p,t.id,c,w),K(c),e.jsx("span",{className:`text-sm ${Y(c)}`,children:t.moduleLabel}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",t.permissions.length,")"]})]})}),ne(t)]},t.id)};return e.jsx("div",{className:"overflow-x-auto overflow-y-visible",children:e.jsxs("table",{className:"border-collapse",style:{width:"auto"},children:[e.jsx("thead",{className:"item-medium border-b border-[var(--item-color-border)]",children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",className:"sticky left-0 z-20 item-medium px-3 text-left text-xs font-medium text-[var(--text-secondary)] uppercase tracking-wider",style:{width:"280px",minWidth:"280px",maxWidth:"280px",height:"180px",verticalAlign:"bottom",paddingBottom:"12px"},children:f("assignments.resource")}),_.map(t=>e.jsx("th",{scope:"col",className:"relative overflow-visible",style:{width:"44px",minWidth:"44px",maxWidth:"44px",height:"180px",padding:0,verticalAlign:"bottom"},children:e.jsx("div",{className:"absolute bottom-2 left-1/2",style:{transform:"translateX(-6px) rotate(-55deg)",transformOrigin:"bottom left",width:"160px"},children:e.jsxs("div",{className:"flex items-center gap-1",children:[t.isSystem&&e.jsx(n.Lock,{className:"h-3 w-3 flex-shrink-0 text-[var(--warning-dot)]"}),e.jsx("span",{className:"text-[10px] font-medium text-[var(--text-primary)] whitespace-nowrap",title:t.name,children:t.name})]})})},t.id))]})}),e.jsx("tbody",{className:"divide-y divide-[var(--item-color-border)]",children:u.map(t=>{const o=h.has(t.application),c=_.length;return e.jsxs(l.Fragment,{children:[e.jsxs("tr",{className:"bg-[var(--color-accent-900)]/30 dark:bg-[var(--color-accent-900)]/50",children:[e.jsx("td",{className:"sticky left-0 z-10 px-3 py-3 bg-[var(--color-accent-900)]/30 dark:bg-[var(--color-accent-900)]/50",style:{width:"280px",minWidth:"280px",maxWidth:"280px"},children:e.jsxs("button",{onClick:()=>M(t.application),className:"flex items-center gap-3 w-full text-left hover:opacity-80",children:[o?e.jsx(n.ChevronRight,{className:"h-5 w-5 text-[var(--color-accent-400)]"}):e.jsx(n.ChevronDown,{className:"h-5 w-5 text-[var(--color-accent-400)]"}),e.jsx(n.FolderOpen,{className:"h-5 w-5 text-[var(--color-accent-400)]"}),e.jsx("span",{className:"text-sm font-bold text-[var(--color-accent-300)] uppercase tracking-wider",children:t.application}),e.jsx("span",{className:"text-xs text-[var(--color-accent-400)] ml-auto",children:f("assignments.moduleCount",{count:t.modules.length})})]})}),e.jsx("td",{colSpan:c,className:"px-0 py-3"})]}),!o&&t.modules.map((p,w)=>{const{module:C,sections:g}=p,R=g.length>0,j=T.has(C.id);return e.jsxs(l.Fragment,{children:[se(C,w,"module",R,j),R&&!j&&g.map((H,G)=>{const{section:te,resources:U}=H;return e.jsx(ge,{section:te,resources:U,moduleIndex:w,sectionIndex:G,isCollapsed:j,collapsedSections:L,paginatedRoles:_,canEditSystemRoles:A,statusFilters:P,openPopover:y,onToggleCollapse:ee,onTogglePermission:k,onCellClick:V,setOpenPopover:N,renderResourceRow:se},te.id)})]},C.id)})]},t.application)})})]})})}function be({filters:s,roles:v,categories:A,applications:k,modules:$,hasChanges:S,onFilterChange:b,onReset:O}){const{t:i}=le.useTranslation("admin"),[h,M]=l.useState(!1),[P,f]=l.useState(""),y=l.useRef(null),N=l.useRef(null),T=l.useMemo(()=>{let r=v;if(s.categoryFilter!=="all"&&(r=r.filter(u=>u.category===s.categoryFilter)),P.trim()){const u=P.toLowerCase();r=r.filter(F=>F.name.toLowerCase().includes(u)||F.shortName?.toLowerCase().includes(u))}return r},[v,s.categoryFilter,P]);l.useEffect(()=>{h&&N.current&&setTimeout(()=>N.current?.focus(),50)},[h]);const m=r=>{M(r),r||f("")},L=$.filter(r=>!(s.applicationFilter!=="all"&&r.app!==s.applicationFilter));l.useEffect(()=>{function r(u){y.current&&!y.current.contains(u.target)&&m(!1)}return document.addEventListener("mousedown",r),()=>document.removeEventListener("mousedown",r)},[]);const I=r=>{const u=s.selectedRoleIds.includes(r)?s.selectedRoleIds.filter(F=>F!==r):[...s.selectedRoleIds,r];b({selectedRoleIds:u})},D=()=>{b({selectedRoleIds:T.map(r=>r.id)})},E=()=>{b({selectedRoleIds:[]})},z=r=>{b({applicationFilter:r,moduleFilter:"all"})},q=r=>{b({categoryFilter:r,selectedRoleIds:[]})},_=s.selectedRoleIds.length>0||s.categoryFilter!=="all"||s.applicationFilter!=="all"||s.moduleFilter!=="all",B=s.selectedRoleIds.length===0?i("permissions.filters.allRoles"):s.selectedRoleIds.length===1?v.find(r=>r.id===s.selectedRoleIds[0])?.name||i("assignments.oneRoleSelected"):`${s.selectedRoleIds.length} ${i("permissions.filters.rolesSelected")}`;return e.jsxs("div",{className:"bg-[var(--bg-card)] border border-[var(--item-color-border)] rounded-[var(--radius-card)] p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-secondary)]",children:[e.jsx(n.Filter,{className:"h-4 w-4"}),e.jsx("span",{children:i("assignments.filters")})]}),e.jsxs("div",{className:"flex flex-wrap gap-4",children:[e.jsxs("div",{className:"min-w-[160px] flex-1",children:[e.jsx("label",{htmlFor:"category-filter",className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("permissions.filters.selectCategory")}),e.jsxs("select",{id:"category-filter",value:s.categoryFilter,onChange:r=>q(r.target.value),className:"block w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] leading-5 bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] sm:text-sm",children:[e.jsx("option",{value:"all",children:i("permissions.filters.allCategories")}),A.map(r=>e.jsx("option",{value:r,children:i(`roles.categories.${r.toLowerCase()}`)},r))]})]}),e.jsxs("div",{ref:y,className:"relative min-w-[200px] flex-[2]",children:[e.jsx("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("permissions.filters.selectRoles")}),e.jsxs("button",{type:"button",onClick:()=>m(!h),className:"w-full flex items-center justify-between px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] bg-[var(--bg-primary)] text-[var(--text-primary)] hover:bg-[var(--bg-secondary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] text-sm",children:[e.jsx("span",{className:"truncate",children:B}),e.jsx(n.ChevronDown,{className:`h-4 w-4 text-[var(--text-muted)] transition-transform ${h?"rotate-180":""}`})]}),h&&e.jsxs("div",{className:"absolute z-50 mt-1 w-full bg-[var(--bg-card)] border border-[var(--border-color)] rounded-[var(--radius-card)] shadow-lg",children:[e.jsx("div",{className:"px-3 py-2 border-b border-[var(--border-color)]",children:e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-y-0 left-0 pl-2 flex items-center pointer-events-none",children:e.jsx(n.Search,{className:"h-4 w-4 text-[var(--text-muted)]"})}),e.jsx("input",{ref:N,type:"text",value:P,onChange:r=>f(r.target.value),placeholder:i("permissions.filters.searchRoles"),className:"block w-full pl-8 pr-3 py-1.5 text-sm border border-[var(--border-color)] rounded-[var(--radius-input)] bg-[var(--bg-primary)] text-[var(--text-primary)] placeholder-[var(--text-muted)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)]"})]})}),e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-b border-[var(--border-color)] bg-[var(--bg-secondary)]",children:[e.jsx("button",{type:"button",onClick:D,className:"text-xs text-[var(--color-accent-600)] hover:text-[var(--color-accent-700)]",children:i("permissions.filters.selectAll")}),e.jsx("button",{type:"button",onClick:E,className:"text-xs text-[var(--text-muted)] hover:text-[var(--text-secondary)]",children:i("permissions.filters.clearSelection")})]}),e.jsx("div",{className:"max-h-64 overflow-auto",children:T.length===0?e.jsx("div",{className:"px-3 py-4 text-sm text-[var(--text-muted)] text-center",children:i("permissions.filters.noRolesFound")}):T.map(r=>e.jsxs("button",{type:"button",onClick:()=>I(r.id),className:"w-full flex items-center gap-3 px-3 py-2 hover:bg-[var(--bg-secondary)] cursor-pointer text-left",children:[e.jsx("div",{className:`w-4 h-4 rounded border flex items-center justify-center flex-shrink-0 ${s.selectedRoleIds.includes(r.id)?"bg-[var(--color-accent-600)] border-[var(--color-accent-600)]":"border-[var(--border-color)] bg-[var(--bg-primary)]"}`,children:s.selectedRoleIds.includes(r.id)&&e.jsx(n.Check,{className:"h-3 w-3 text-white"})}),e.jsx("span",{className:"text-sm text-[var(--text-primary)] truncate",children:r.name}),r.isSystem&&e.jsx("span",{className:"text-xs px-1.5 py-0.5 rounded bg-[var(--bg-tertiary)] text-[var(--text-muted)] flex-shrink-0",children:i("assignments.systemRole")})]},r.id))})]})]}),e.jsxs("div",{className:"min-w-[160px] flex-1",children:[e.jsx("label",{htmlFor:"application-filter",className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("assignments.filterByApplication")}),e.jsxs("select",{id:"application-filter",value:s.applicationFilter,onChange:r=>z(r.target.value),disabled:k.length===0,className:"block w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] leading-5 bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx("option",{value:"all",children:i("assignments.allApplications")}),k.map(r=>e.jsx("option",{value:r.app,children:r.label},r.app))]})]}),e.jsxs("div",{className:"min-w-[160px] flex-1",children:[e.jsx("label",{htmlFor:"module-filter",className:"block text-sm font-medium text-[var(--text-secondary)] mb-1",children:i("permissions.filters.selectModule")}),e.jsxs("select",{id:"module-filter",value:s.moduleFilter,onChange:r=>b({moduleFilter:r.target.value}),disabled:L.length===0,className:"block w-full px-3 py-2 border border-[var(--border-color)] rounded-[var(--radius-input)] leading-5 bg-[var(--bg-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-accent-500)] focus:border-[var(--color-accent-500)] sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx("option",{value:"all",children:i("permissions.filters.allModules")}),L.map(r=>e.jsx("option",{value:r.module,children:r.label},`${r.app}:${r.module}`))]})]}),e.jsx("div",{className:"flex items-end flex-shrink-0",children:_&&e.jsxs("button",{type:"button",onClick:O,className:"w-full inline-flex items-center justify-center gap-2 px-3 py-2 text-sm text-[var(--text-secondary)] hover:text-[var(--text-primary)] border border-[var(--border-color)] rounded-[var(--radius-input)] hover:bg-[var(--bg-secondary)] transition-colors",children:[e.jsx(n.RotateCcw,{className:"h-4 w-4"}),i("assignments.clearFilters")]})})]}),s.selectedRoleIds.length>0&&e.jsx("div",{className:"flex flex-wrap gap-2",children:s.selectedRoleIds.map(r=>{const u=v.find(F=>F.id===r);return u?e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 text-xs rounded-full bg-[var(--color-accent-100)] text-[var(--color-accent-700)] dark:bg-[var(--color-accent-900)] dark:text-[var(--color-accent-300)]",children:[u.name,e.jsx("button",{type:"button",onClick:()=>I(r),className:"hover:text-[var(--color-accent-900)] dark:hover:text-[var(--color-accent-100)]",children:e.jsx(n.X,{className:"h-3 w-3"})})]},r):null})}),S&&e.jsx("div",{className:"flex items-center justify-end pt-2 border-t border-[var(--border-color)]",children:e.jsx("div",{className:"text-sm text-[var(--warning-text)]",children:i("assignments.unsavedChanges")})})]})}const ie={viewer:{nameKey:"assignments.templates.viewer.name",descriptionKey:"assignments.templates.viewer.description",icon:n.Eye,color:"blue",permissions:["*.read"]},member:{nameKey:"assignments.templates.member.name",descriptionKey:"assignments.templates.member.description",icon:n.User,color:"green",permissions:["*.read","*.create"]},contributor:{nameKey:"assignments.templates.contributor.name",descriptionKey:"assignments.templates.contributor.description",icon:n.Pencil,color:"orange",permissions:["*.read","*.create","*.update"]},admin:{nameKey:"assignments.templates.admin.name",descriptionKey:"assignments.templates.admin.description",icon:n.ShieldCheck,color:"red",permissions:["*.*"]}},fe=[10,25,50],je=[10,15,20,25];function ye(){const{t:s}=le.useTranslation("admin"),{user:v}=J.useAuth(),[A,k]=l.useState(!1),[$,S]=l.useState(null),[b,O]=l.useState(25),[i,h]=l.useState(1),[M,P]=l.useState(10),[f,y]=l.useState(0),[N,T]=l.useState(new Set),[m,L]=l.useState(new Set),[I,D]=l.useState(!1),E=a=>{L(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d}),h(1),y(0)},z=a=>{T(x=>{const d=new Set(x);return d.has(a)?d.delete(a):d.add(a),d})},q=l.useMemo(()=>v?J.hasFullAccess(v.permissions):!1,[v]),{loading:_,error:B,saveError:r,saving:u,roles:F,assignments:Z,filters:V,filteredRoles:W,filteredResources:K,hasChanges:Y,applications:ee,modules:ae,categories:ne,togglePermission:se,updateFilters:t,reloadData:o,resetChanges:c,clearSaveError:p,getPermissionInheritance:w}=J.usePermissionMatrix({canEditSystemRoles:q}),C=l.useCallback((a,x)=>{const d=x.permissions.filter(he=>{const oe=w(a,he.id);return oe.isDirect||oe.isInherited}),X=d.length,pe=x.totalPermissions;return X===0?"none":X===pe?"all":X===1&&d[0]?.action==="read"?"read-only":"some"},[w]),g=l.useMemo(()=>K.filter(a=>a.level==="module"),[K]),R=l.useMemo(()=>m.size===0?W:W.filter(a=>{for(const x of g){const d=C(a.id,x);if(m.has(d))return!0}return!1}),[W,g,m,C]),j=l.useMemo(()=>m.size===0?K:K.filter(a=>{if(a.level!=="module")return!0;for(const x of W){const d=C(x.id,a);if(m.has(d))return!0}return!1}),[K,W,m,C]),H=l.useMemo(()=>{let a=0;return Object.values(Z).forEach(x=>{a+=x.size}),a},[Z]),G=l.useMemo(()=>j.filter(a=>!(a.level!=="module"||N.has(a.applicationLabel))).length,[j,N]),te=l.useMemo(()=>j.filter(a=>a.level==="module").length,[j]),U=Math.ceil(G/b),ce=a=>{h(1),t(a)},de=a=>{O(a),h(1)},re=Math.ceil(R.length/M),me=a=>{P(a),y(0)},xe=async a=>{const x=ie[a];if(!x)return;const d=prompt(s("assignments.enterRoleName"),s(x.nameKey));if(d)try{S(null),await J.adminApi.roles.create({name:d,description:s(x.descriptionKey),permissionIds:[]}),k(!1),await o()}catch(X){S(X instanceof Error?X.message:"Failed to create role from template")}},ue=()=>{h(1),t({selectedRoleIds:[],resourceSearch:"",applicationFilter:"all",moduleFilter:"all"})};return _?e.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:e.jsxs("div",{className:"text-center",children:[e.jsx(n.Loader2,{className:"h-8 w-8 animate-spin text-[var(--color-accent-500)] mx-auto mb-4"}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:s("assignments.loading")})]})}):B?e.jsx("div",{className:"p-6",children:e.jsx("div",{className:"rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] p-4",children:e.jsxs("div",{className:"flex",children:[e.jsx(n.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsxs("div",{className:"ml-3",children:[e.jsx("h3",{className:"text-sm font-medium text-[var(--error-text)]",children:s("common.error")}),e.jsx("div",{className:"mt-2 text-sm text-[var(--error-text)] opacity-80",children:e.jsx("p",{children:B})})]})]})})}):e.jsxs("div",{className:"p-6 space-y-4",children:[e.jsx(J.Breadcrumb,{items:[{label:s("header.title"),href:"/administration"},{label:s("assignments.title","Assignments")}]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-[var(--text-primary)]",children:s("assignments.title")}),e.jsx("p",{className:"mt-1 text-sm text-[var(--text-secondary)]",children:s("assignments.subtitle")})]}),e.jsx("div",{className:"flex items-center gap-3 flex-shrink-0",children:e.jsxs("button",{type:"button",onClick:()=>k(!0),className:"inline-flex items-center px-4 py-2 border border-[var(--border-color)] text-sm font-medium rounded-[var(--radius-button)] text-[var(--text-secondary)] bg-[var(--bg-card)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsx(n.Sparkles,{className:"h-4 w-4 mr-2"}),s("assignments.createFromTemplate")]})})]}),r&&e.jsx("div",{className:"rounded-[var(--radius-card)] bg-[var(--error-bg)] p-3 border border-[var(--error-border)]",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx(n.AlertCircle,{className:"h-4 w-4 text-[var(--error-text)]"}),e.jsx("p",{className:"ml-2 text-sm text-[var(--error-text)]",children:r}),e.jsx("button",{type:"button",onClick:p,className:"ml-auto text-sm text-[var(--error-text)] hover:opacity-80 font-medium",children:s("common.dismiss")})]})}),(Y||u)&&e.jsx("div",{className:"rounded-[var(--radius-card)] bg-[var(--warning-bg)] p-3 border border-[var(--warning-border)]",children:e.jsxs("div",{className:"flex items-center",children:[u?e.jsx(n.Loader2,{className:"h-4 w-4 text-[var(--warning-dot)] animate-spin"}):e.jsx(n.Info,{className:"h-4 w-4 text-[var(--warning-dot)]"}),e.jsx("p",{className:"ml-2 text-sm text-[var(--warning-text)]",children:s(u?"assignments.saving":"assignments.autoSaveActive")}),!u&&e.jsx("button",{type:"button",onClick:c,className:"ml-auto text-sm text-[var(--warning-text)] hover:opacity-80 font-medium",children:s("assignments.discardChanges")})]})}),e.jsx(be,{filters:V,roles:F,categories:ne,applications:ee,modules:ae,hasChanges:Y,onFilterChange:ce,onReset:ue}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 py-2",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--color-accent-100)] text-[var(--color-accent-700)] dark:bg-[var(--color-accent-900)] dark:text-[var(--color-accent-300)]",children:[R.length," ",s("assignments.roles")]}),e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--bg-tertiary)] text-[var(--text-secondary)]",children:[G,"/",te," ",s("assignments.modules")]}),e.jsxs("span",{className:"px-2.5 py-1 text-xs font-semibold rounded-full bg-[var(--success-bg)] text-[var(--success-text)] border border-[var(--success-border)]",children:[H," ",s("assignments.permissionsAssigned")]})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-[var(--text-secondary)] border-l border-[var(--border-color)] pl-4",children:[e.jsxs("span",{children:[s("assignments.rolesPerPage"),":"]}),e.jsx("select",{value:M,onChange:a=>me(Number(a.target.value)),className:"px-2 py-1 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:je.map(a=>e.jsx("option",{value:a,children:a},a))}),e.jsxs("span",{className:"text-[var(--text-muted)]",children:[f*M+1,"-",Math.min((f+1)*M,R.length)," / ",R.length]}),re>1&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>y(a=>Math.max(0,a-1)),disabled:f===0,className:"p-1 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronLeft,{className:"h-3.5 w-3.5"})}),e.jsxs("span",{className:"text-xs min-w-[50px] text-center",children:[f+1," / ",re]}),e.jsx("button",{onClick:()=>y(a=>Math.min(re-1,a+1)),disabled:f>=re-1,className:"p-1 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronRight,{className:"h-3.5 w-3.5"})})]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs("button",{onClick:()=>E("none"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("none")?"bg-red-500/30 border-red-500 text-red-700 dark:text-red-300":"bg-red-500/10 border-red-500/30 text-red-600 dark:text-red-400 hover:bg-red-500/20 hover:border-red-500"}`,children:[e.jsx(n.Ban,{className:"h-3.5 w-3.5"}),s("assignments.none")]}),e.jsxs("button",{onClick:()=>E("read-only"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("read-only")?"bg-sky-500/30 border-sky-500 text-sky-700 dark:text-sky-300":"bg-sky-500/10 border-sky-500/30 text-sky-600 dark:text-sky-400 hover:bg-sky-500/20 hover:border-sky-500"}`,children:[e.jsx(n.Eye,{className:"h-3.5 w-3.5"}),s("assignments.readOnly")]}),e.jsxs("button",{onClick:()=>E("some"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("some")?"bg-amber-500/30 border-amber-500 text-amber-700 dark:text-amber-300":"bg-amber-500/10 border-amber-500/30 text-amber-600 dark:text-amber-400 hover:bg-amber-500/20 hover:border-amber-500"}`,children:[e.jsx(n.Star,{className:"h-3.5 w-3.5"}),s("assignments.partial")]}),e.jsxs("button",{onClick:()=>E("all"),className:`inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-full border transition-colors cursor-pointer ${m.has("all")?"bg-emerald-500/30 border-emerald-500 text-emerald-700 dark:text-emerald-300":"bg-emerald-500/10 border-emerald-500/30 text-emerald-600 dark:text-emerald-400 hover:bg-emerald-500/20 hover:border-emerald-500"}`,children:[e.jsx(n.Check,{className:"h-3.5 w-3.5"}),s("assignments.complete")]}),m.size>0&&e.jsx("button",{onClick:()=>L(new Set),className:"text-xs text-[var(--color-accent-500)] hover:text-[var(--color-accent-600)] underline ml-2",children:s("assignments.clearFilters")})]})]}),e.jsxs("div",{className:"bg-[var(--bg-card)] border border-[var(--item-color-border)] rounded-[var(--radius-card)] overflow-hidden",children:[e.jsxs("button",{type:"button",onClick:()=>D(!I),className:"w-full flex items-center justify-between px-4 py-2.5 text-sm font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(n.BookOpen,{className:"h-4 w-4 text-[var(--color-accent-500)]"}),e.jsx("span",{children:s("assignments.guide.title")})]}),I?e.jsx(n.ChevronUp,{className:"h-4 w-4 text-[var(--text-muted)]"}):e.jsx(n.ChevronDown,{className:"h-4 w-4 text-[var(--text-muted)]"})]}),I&&e.jsx("div",{className:"px-4 pb-4 border-t border-[var(--item-color-border)]",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 pt-3",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-[var(--text-primary)] uppercase tracking-wider mb-2",children:s("assignments.guide.colorLegendTitle")}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-red-500/10 border border-red-500/20 text-red-600 dark:text-red-400",children:e.jsx(n.Ban,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.noneDesc")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-sky-500/20 border border-sky-500/30 text-sky-700 dark:text-sky-300",children:e.jsx(n.Eye,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.readOnlyDesc")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-amber-500/20 border border-amber-500/30 text-amber-700 dark:text-amber-300",children:e.jsx(n.Star,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.partialDesc")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-emerald-500/20 border border-emerald-500/30 text-emerald-700 dark:text-emerald-300",children:e.jsx(n.Check,{className:"h-3 w-3"})}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s("assignments.guide.completeDesc")})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold text-[var(--text-primary)] uppercase tracking-wider mb-2",children:s("assignments.guide.howToUseTitle")}),e.jsxs("ul",{className:"space-y-1.5 text-xs text-[var(--text-secondary)]",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.clickCell")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx(n.Lock,{className:"h-3 w-3 flex-shrink-0 mt-0.5 text-[var(--warning-dot)]"}),s("assignments.guide.systemRoles")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.inheritance")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.autoSave")]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-[var(--color-accent-500)] mt-0.5",children:"•"}),s("assignments.guide.filterButtons")]})]})]})]})})]}),e.jsx("div",{className:"bg-[var(--bg-card)] shadow-[var(--shadow-md)] rounded-[var(--radius-card)] border border-[var(--item-color-border)]",children:e.jsx(ve,{roles:R,resources:j,assignments:Z,canEditSystemRoles:q,onTogglePermission:se,getPermissionInheritance:w,rolesPerPage:M,rolePageIndex:f,modulesPerPage:b,modulePageIndex:i-1,collapsedApps:N,onToggleApp:z,statusFilters:m})}),e.jsx("div",{className:"py-3 px-4 bg-[var(--bg-card)] rounded-[var(--radius-card)] border border-[var(--item-color-border)]",children:e.jsxs("div",{className:"flex items-center gap-3 text-sm text-[var(--text-secondary)]",children:[e.jsxs("span",{children:[s("assignments.itemsPerPage"),":"]}),e.jsx("select",{value:b,onChange:a=>de(Number(a.target.value)),className:"px-2 py-1 text-sm bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-accent-500)]",children:fe.map(a=>e.jsx("option",{value:a,children:a},a))}),e.jsxs("span",{className:"text-[var(--text-muted)]",children:[(i-1)*b+1,"-",Math.min(i*b,G)," / ",G]}),U>1&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>h(a=>Math.max(1,a-1)),disabled:i===1,className:"p-1.5 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronLeft,{className:"h-4 w-4"})}),e.jsxs("span",{className:"text-sm min-w-[60px] text-center",children:[i," / ",U]}),e.jsx("button",{onClick:()=>h(a=>Math.min(U,a+1)),disabled:i>=U,className:"p-1.5 rounded border border-[var(--border-color)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-hover)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:e.jsx(n.ChevronRight,{className:"h-4 w-4"})})]})]})}),A&&e.jsx("div",{className:"fixed inset-0 z-50 overflow-y-auto",children:e.jsxs("div",{className:"flex items-center justify-center min-h-screen px-4 pt-4 pb-20 text-center sm:p-0",children:[e.jsx("button",{type:"button",className:"fixed inset-0 bg-black/50 transition-opacity",onClick:()=>k(!1),"aria-label":"Close modal"}),e.jsxs("div",{className:"inline-block align-bottom bg-[var(--bg-card)] rounded-[var(--radius-modal)] px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full sm:p-6 border border-[var(--border-color)]",children:[e.jsxs("div",{className:"mb-4",children:[e.jsx("h3",{className:"text-lg font-medium text-[var(--text-primary)]",children:s("assignments.createFromTemplate")}),e.jsx("p",{className:"mt-1 text-sm text-[var(--text-secondary)]",children:s("assignments.templateDescription")})]}),$&&e.jsx("div",{className:"mb-4 rounded-[var(--radius-card)] bg-[var(--error-bg)] border border-[var(--error-border)] p-3",children:e.jsxs("div",{className:"flex",children:[e.jsx(n.AlertCircle,{className:"h-5 w-5 text-[var(--error-text)]"}),e.jsx("div",{className:"ml-3",children:e.jsx("p",{className:"text-sm text-[var(--error-text)]",children:$})})]})}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:Object.entries(ie).map(([a,x])=>{const d=x.icon;return e.jsx("button",{onClick:()=>xe(a),className:"relative p-4 rounded-[var(--radius-card)] border-2 text-left transition-all hover:shadow-lg hover:scale-105 border-[var(--border-color)] hover:border-[var(--color-accent-500)]",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(d,{className:"h-6 w-6 text-[var(--color-accent-500)]"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"text-sm font-medium text-[var(--text-primary)]",children:s(x.nameKey)}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-secondary)]",children:s(x.descriptionKey)})]})]})},a)})}),e.jsx("div",{className:"mt-5 sm:mt-6",children:e.jsx("button",{type:"button",onClick:()=>{k(!1),S(null)},className:"w-full inline-flex justify-center rounded-[var(--radius-button)] border border-[var(--border-color)] shadow-sm px-4 py-2 bg-[var(--bg-secondary)] text-base font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-hover)] transition-colors",children:s("common.cancel")})})]})]})})]})}exports.AssignmentsPage=ye;
2
+ //# sourceMappingURL=AssignmentsPage-z1q1C9Uz.js.map