@openedx/frontend-app-instructor-dashboard 1.0.0-alpha.4 → 1.0.0-alpha.40

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 (301) hide show
  1. package/dist/Main.d.ts +1 -1
  2. package/dist/Main.js +11 -18
  3. package/dist/Main.js.map +1 -1
  4. package/dist/app.js +0 -6
  5. package/dist/app.js.map +1 -1
  6. package/dist/certificates/CertificatesPage.d.ts +1 -0
  7. package/dist/certificates/CertificatesPage.js +312 -2
  8. package/dist/certificates/CertificatesPage.js.map +1 -1
  9. package/dist/certificates/CertificatesPage.scss +90 -0
  10. package/dist/certificates/components/CertificateTable.d.ts +14 -0
  11. package/dist/certificates/components/CertificateTable.js +88 -0
  12. package/dist/certificates/components/CertificateTable.js.map +1 -0
  13. package/dist/certificates/components/CertificatesPageHeader.d.ts +7 -0
  14. package/dist/certificates/components/CertificatesPageHeader.js +11 -0
  15. package/dist/certificates/components/CertificatesPageHeader.js.map +1 -0
  16. package/dist/certificates/components/CertificatesToolbar.d.ts +11 -0
  17. package/dist/certificates/components/CertificatesToolbar.js +33 -0
  18. package/dist/certificates/components/CertificatesToolbar.js.map +1 -0
  19. package/dist/certificates/components/DisableCertificatesModal.d.ts +9 -0
  20. package/dist/certificates/components/DisableCertificatesModal.js +24 -0
  21. package/dist/certificates/components/DisableCertificatesModal.js.map +1 -0
  22. package/dist/certificates/components/FilterDropdown.d.ts +8 -0
  23. package/dist/certificates/components/FilterDropdown.js +50 -0
  24. package/dist/certificates/components/FilterDropdown.js.map +1 -0
  25. package/dist/certificates/components/GenerateCertificatesModal.d.ts +9 -0
  26. package/dist/certificates/components/GenerateCertificatesModal.js +19 -0
  27. package/dist/certificates/components/GenerateCertificatesModal.js.map +1 -0
  28. package/dist/certificates/components/GenerationHistoryTable.d.ts +11 -0
  29. package/dist/certificates/components/GenerationHistoryTable.js +25 -0
  30. package/dist/certificates/components/GenerationHistoryTable.js.map +1 -0
  31. package/dist/certificates/components/GrantExceptionsModal.d.ts +9 -0
  32. package/dist/certificates/components/GrantExceptionsModal.js +55 -0
  33. package/dist/certificates/components/GrantExceptionsModal.js.map +1 -0
  34. package/dist/certificates/components/InvalidateCertificateModal.d.ts +8 -0
  35. package/dist/certificates/components/InvalidateCertificateModal.js +26 -0
  36. package/dist/certificates/components/InvalidateCertificateModal.js.map +1 -0
  37. package/dist/certificates/components/IssuedCertificatesTab.d.ts +18 -0
  38. package/dist/certificates/components/IssuedCertificatesTab.js +6 -0
  39. package/dist/certificates/components/IssuedCertificatesTab.js.map +1 -0
  40. package/dist/certificates/components/LearnerActionModal.d.ts +16 -0
  41. package/dist/certificates/components/LearnerActionModal.js +27 -0
  42. package/dist/certificates/components/LearnerActionModal.js.map +1 -0
  43. package/dist/certificates/components/RegenerateCertificatesModal.d.ts +11 -0
  44. package/dist/certificates/components/RegenerateCertificatesModal.js +46 -0
  45. package/dist/certificates/components/RegenerateCertificatesModal.js.map +1 -0
  46. package/dist/certificates/components/RemoveExceptionModal.d.ts +9 -0
  47. package/dist/certificates/components/RemoveExceptionModal.js +10 -0
  48. package/dist/certificates/components/RemoveExceptionModal.js.map +1 -0
  49. package/dist/certificates/components/RemoveInvalidationModal.d.ts +9 -0
  50. package/dist/certificates/components/RemoveInvalidationModal.js +10 -0
  51. package/dist/certificates/components/RemoveInvalidationModal.js.map +1 -0
  52. package/dist/certificates/constants.d.ts +15 -0
  53. package/dist/certificates/constants.js +16 -0
  54. package/dist/certificates/constants.js.map +1 -0
  55. package/dist/certificates/data/api.d.ts +30 -0
  56. package/dist/certificates/data/api.js +126 -0
  57. package/dist/certificates/data/api.js.map +1 -0
  58. package/dist/certificates/data/apiHook.d.ts +63 -0
  59. package/dist/certificates/data/apiHook.js +133 -0
  60. package/dist/certificates/data/apiHook.js.map +1 -0
  61. package/dist/certificates/data/queryKeys.d.ts +9 -0
  62. package/dist/certificates/data/queryKeys.js +9 -0
  63. package/dist/certificates/data/queryKeys.js.map +1 -0
  64. package/dist/certificates/messages.d.ts +548 -0
  65. package/dist/certificates/messages.js +550 -0
  66. package/dist/certificates/messages.js.map +1 -0
  67. package/dist/certificates/types.d.ts +66 -0
  68. package/dist/certificates/types.js +26 -0
  69. package/dist/certificates/types.js.map +1 -0
  70. package/dist/certificates/utils/errorHandling.d.ts +12 -0
  71. package/dist/certificates/utils/errorHandling.js +24 -0
  72. package/dist/certificates/utils/errorHandling.js.map +1 -0
  73. package/dist/certificates/utils/filterUtils.d.ts +4 -0
  74. package/dist/certificates/utils/filterUtils.js +31 -0
  75. package/dist/certificates/utils/filterUtils.js.map +1 -0
  76. package/dist/certificates/utils/index.d.ts +2 -0
  77. package/dist/certificates/utils/index.js +2 -0
  78. package/dist/certificates/utils/index.js.map +1 -0
  79. package/dist/components/ActionCard.d.ts +2 -2
  80. package/dist/components/ActionCard.js +1 -1
  81. package/dist/components/ActionCard.js.map +1 -1
  82. package/dist/components/CodeEditor.d.ts +5 -0
  83. package/dist/components/CodeEditor.js +34 -0
  84. package/dist/components/CodeEditor.js.map +1 -0
  85. package/dist/components/PendingTasks.d.ts +3 -1
  86. package/dist/components/PendingTasks.js +3 -2
  87. package/dist/components/PendingTasks.js.map +1 -1
  88. package/dist/components/SpecifyLearnerField.d.ts +4 -1
  89. package/dist/components/SpecifyLearnerField.js +55 -15
  90. package/dist/components/SpecifyLearnerField.js.map +1 -1
  91. package/dist/components/SpecifyProblemField.d.ts +13 -0
  92. package/dist/components/SpecifyProblemField.js +52 -0
  93. package/dist/components/SpecifyProblemField.js.map +1 -0
  94. package/dist/components/UsernameFilter.d.ts +7 -0
  95. package/dist/components/UsernameFilter.js +19 -0
  96. package/dist/components/UsernameFilter.js.map +1 -0
  97. package/dist/components/messages.d.ts +45 -0
  98. package/dist/components/messages.js +45 -0
  99. package/dist/components/messages.js.map +1 -1
  100. package/dist/courseInfo/types.d.ts +5 -0
  101. package/dist/courseInfo/types.js.map +1 -1
  102. package/dist/courseTeam/CourseTeamPage.js +25 -2
  103. package/dist/courseTeam/CourseTeamPage.js.map +1 -1
  104. package/dist/courseTeam/components/AddTeamMemberModal.d.ts +6 -0
  105. package/dist/courseTeam/components/AddTeamMemberModal.js +61 -0
  106. package/dist/courseTeam/components/AddTeamMemberModal.js.map +1 -0
  107. package/dist/courseTeam/components/EditTeamMemberModal.d.ts +8 -0
  108. package/dist/courseTeam/components/EditTeamMemberModal.js +102 -0
  109. package/dist/courseTeam/components/EditTeamMemberModal.js.map +1 -0
  110. package/dist/courseTeam/components/MembersContent.d.ts +6 -0
  111. package/dist/courseTeam/components/MembersContent.js +48 -0
  112. package/dist/courseTeam/components/MembersContent.js.map +1 -0
  113. package/dist/courseTeam/components/RoleFilter.d.ts +7 -0
  114. package/dist/courseTeam/components/RoleFilter.js +22 -0
  115. package/dist/courseTeam/components/RoleFilter.js.map +1 -0
  116. package/dist/courseTeam/components/RolesContent.d.ts +3 -0
  117. package/dist/courseTeam/components/RolesContent.js +25 -0
  118. package/dist/courseTeam/components/RolesContent.js.map +1 -0
  119. package/dist/courseTeam/constants.d.ts +3 -0
  120. package/dist/courseTeam/constants.js +4 -0
  121. package/dist/courseTeam/constants.js.map +1 -0
  122. package/dist/courseTeam/data/api.d.ts +6 -0
  123. package/dist/courseTeam/data/api.js +38 -0
  124. package/dist/courseTeam/data/api.js.map +1 -0
  125. package/dist/courseTeam/data/apiHook.d.ts +8 -0
  126. package/dist/courseTeam/data/apiHook.js +32 -0
  127. package/dist/courseTeam/data/apiHook.js.map +1 -0
  128. package/dist/courseTeam/data/queryKeys.d.ts +7 -0
  129. package/dist/courseTeam/data/queryKeys.js +14 -0
  130. package/dist/courseTeam/data/queryKeys.js.map +1 -0
  131. package/dist/courseTeam/messages.d.ts +258 -0
  132. package/dist/courseTeam/messages.js +260 -0
  133. package/dist/courseTeam/messages.js.map +1 -0
  134. package/dist/courseTeam/types.d.ts +29 -0
  135. package/dist/courseTeam/types.js +3 -0
  136. package/dist/courseTeam/types.js.map +1 -0
  137. package/dist/data/api.d.ts +2 -1
  138. package/dist/data/api.js +9 -3
  139. package/dist/data/api.js.map +1 -1
  140. package/dist/data/apiHook.d.ts +1 -0
  141. package/dist/data/apiHook.js +11 -2
  142. package/dist/data/apiHook.js.map +1 -1
  143. package/dist/data/queryKeys.d.ts +4 -0
  144. package/dist/data/queryKeys.js +4 -0
  145. package/dist/data/queryKeys.js.map +1 -1
  146. package/dist/data/utils.d.ts +2 -0
  147. package/dist/data/utils.js +9 -0
  148. package/dist/data/utils.js.map +1 -0
  149. package/dist/dateExtensions/components/AddExtensionModal.d.ts +1 -1
  150. package/dist/dateExtensions/components/AddExtensionModal.js +6 -7
  151. package/dist/dateExtensions/components/AddExtensionModal.js.map +1 -1
  152. package/dist/dateExtensions/components/DateExtensionsList.js +3 -14
  153. package/dist/dateExtensions/components/DateExtensionsList.js.map +1 -1
  154. package/dist/dateExtensions/data/apiHook.d.ts +2 -2
  155. package/dist/dateExtensions/data/apiHook.js +4 -4
  156. package/dist/dateExtensions/data/apiHook.js.map +1 -1
  157. package/dist/dateExtensions/messages.d.ts +0 -5
  158. package/dist/dateExtensions/messages.js +1 -6
  159. package/dist/dateExtensions/messages.js.map +1 -1
  160. package/dist/enrollments/EnrollmentsPage.js +34 -7
  161. package/dist/enrollments/EnrollmentsPage.js.map +1 -1
  162. package/dist/enrollments/components/AddBetaTestersModal.d.ts +6 -0
  163. package/dist/enrollments/components/AddBetaTestersModal.js +69 -0
  164. package/dist/enrollments/components/AddBetaTestersModal.js.map +1 -0
  165. package/dist/enrollments/components/EnrollLearnersModal.d.ts +6 -0
  166. package/dist/enrollments/components/EnrollLearnersModal.js +53 -0
  167. package/dist/enrollments/components/EnrollLearnersModal.js.map +1 -0
  168. package/dist/enrollments/components/EnrollmentStatusModal.js +3 -3
  169. package/dist/enrollments/components/EnrollmentStatusModal.js.map +1 -1
  170. package/dist/enrollments/components/EnrollmentsList.d.ts +3 -2
  171. package/dist/enrollments/components/EnrollmentsList.js +13 -14
  172. package/dist/enrollments/components/EnrollmentsList.js.map +1 -1
  173. package/dist/enrollments/components/UnenrollModal.d.ts +1 -1
  174. package/dist/enrollments/components/UnenrollModal.js +29 -3
  175. package/dist/enrollments/components/UnenrollModal.js.map +1 -1
  176. package/dist/enrollments/components/UpdateBetaTesterModal.d.ts +8 -0
  177. package/dist/enrollments/components/UpdateBetaTesterModal.js +72 -0
  178. package/dist/enrollments/components/UpdateBetaTesterModal.js.map +1 -0
  179. package/dist/enrollments/data/api.d.ts +3 -1
  180. package/dist/enrollments/data/api.js +11 -1
  181. package/dist/enrollments/data/api.js.map +1 -1
  182. package/dist/enrollments/data/apiHook.d.ts +5 -3
  183. package/dist/enrollments/data/apiHook.js +21 -3
  184. package/dist/enrollments/data/apiHook.js.map +1 -1
  185. package/dist/enrollments/data/queryKeys.d.ts +1 -1
  186. package/dist/enrollments/data/queryKeys.js.map +1 -1
  187. package/dist/enrollments/messages.d.ts +131 -1
  188. package/dist/enrollments/messages.js +136 -6
  189. package/dist/enrollments/messages.js.map +1 -1
  190. package/dist/enrollments/types.d.ts +25 -0
  191. package/dist/enrollments/types.js.map +1 -1
  192. package/dist/grading/GradingPage.js +15 -2
  193. package/dist/grading/GradingPage.js.map +1 -1
  194. package/dist/grading/components/GradingActionRow.d.ts +2 -0
  195. package/dist/grading/components/GradingActionRow.js +20 -0
  196. package/dist/grading/components/GradingActionRow.js.map +1 -0
  197. package/dist/grading/components/GradingConfigurationModal.d.ts +6 -0
  198. package/dist/grading/components/GradingConfigurationModal.js +15 -0
  199. package/dist/grading/components/GradingConfigurationModal.js.map +1 -0
  200. package/dist/grading/components/GradingLearnerContent.d.ts +7 -0
  201. package/dist/grading/components/GradingLearnerContent.js +199 -0
  202. package/dist/grading/components/GradingLearnerContent.js.map +1 -0
  203. package/dist/grading/data/api.d.ts +6 -0
  204. package/dist/grading/data/api.js +59 -0
  205. package/dist/grading/data/api.js.map +1 -0
  206. package/dist/grading/data/apiHook.d.ts +6 -0
  207. package/dist/grading/data/apiHook.js +29 -0
  208. package/dist/grading/data/apiHook.js.map +1 -0
  209. package/dist/grading/data/queryKeys.d.ts +9 -0
  210. package/dist/grading/data/queryKeys.js +8 -0
  211. package/dist/grading/data/queryKeys.js.map +1 -0
  212. package/dist/grading/messages.d.ts +248 -0
  213. package/dist/grading/messages.js +250 -0
  214. package/dist/grading/messages.js.map +1 -0
  215. package/dist/grading/types.d.ts +11 -0
  216. package/dist/grading/types.js +2 -0
  217. package/dist/grading/types.js.map +1 -0
  218. package/dist/hooks/useDebouncedFilter.d.ts +1 -0
  219. package/dist/hooks/useDebouncedFilter.js +5 -0
  220. package/dist/hooks/useDebouncedFilter.js.map +1 -1
  221. package/dist/instructorNav/InstructorNav.js +16 -4
  222. package/dist/instructorNav/InstructorNav.js.map +1 -1
  223. package/dist/messages.d.ts +8 -0
  224. package/dist/messages.js +10 -0
  225. package/dist/messages.js.map +1 -0
  226. package/dist/pageWrapper/PageWrapper.js +3 -1
  227. package/dist/pageWrapper/PageWrapper.js.map +1 -1
  228. package/dist/providers/AccessErrorObserver.d.ts +9 -0
  229. package/dist/providers/AccessErrorObserver.js +35 -0
  230. package/dist/providers/AccessErrorObserver.js.map +1 -0
  231. package/dist/providers/AccessErrorProvider.d.ts +19 -0
  232. package/dist/providers/AccessErrorProvider.js +51 -0
  233. package/dist/providers/AccessErrorProvider.js.map +1 -0
  234. package/dist/providers/messages.d.ts +33 -0
  235. package/dist/providers/messages.js +35 -0
  236. package/dist/providers/messages.js.map +1 -0
  237. package/dist/provides.d.ts +2 -1
  238. package/dist/provides.js +3 -2
  239. package/dist/provides.js.map +1 -1
  240. package/dist/routes.d.ts +1 -1
  241. package/dist/routes.js +2 -2
  242. package/dist/routes.js.map +1 -1
  243. package/dist/slots/CourseInfoSlot/CourseInfoSlot.d.ts +2 -0
  244. package/dist/slots/CourseInfoSlot/CourseInfoSlot.js +14 -0
  245. package/dist/slots/CourseInfoSlot/CourseInfoSlot.js.map +1 -0
  246. package/dist/slots.js +13 -1
  247. package/dist/slots.js.map +1 -1
  248. package/dist/specialExams/SpecialExamsPage.js +14 -2
  249. package/dist/specialExams/SpecialExamsPage.js.map +1 -1
  250. package/dist/specialExams/components/AddAllowanceModal.d.ts +6 -0
  251. package/dist/specialExams/components/AddAllowanceModal.js +84 -0
  252. package/dist/specialExams/components/AddAllowanceModal.js.map +1 -0
  253. package/dist/specialExams/components/Allowances.d.ts +2 -0
  254. package/dist/specialExams/components/Allowances.js +89 -0
  255. package/dist/specialExams/components/Allowances.js.map +1 -0
  256. package/dist/specialExams/components/AllowancesList.d.ts +8 -0
  257. package/dist/specialExams/components/AllowancesList.js +63 -0
  258. package/dist/specialExams/components/AllowancesList.js.map +1 -0
  259. package/dist/specialExams/components/AttemptsList.d.ts +3 -0
  260. package/dist/specialExams/components/AttemptsList.js +50 -0
  261. package/dist/specialExams/components/AttemptsList.js.map +1 -0
  262. package/dist/specialExams/components/DeleteAllowanceModal.d.ts +8 -0
  263. package/dist/specialExams/components/DeleteAllowanceModal.js +29 -0
  264. package/dist/specialExams/components/DeleteAllowanceModal.js.map +1 -0
  265. package/dist/specialExams/components/EditAllowanceModal.d.ts +8 -0
  266. package/dist/specialExams/components/EditAllowanceModal.js +62 -0
  267. package/dist/specialExams/components/EditAllowanceModal.js.map +1 -0
  268. package/dist/specialExams/constants.d.ts +43 -0
  269. package/dist/specialExams/constants.js +19 -0
  270. package/dist/specialExams/constants.js.map +1 -0
  271. package/dist/specialExams/data/api.d.ts +7 -0
  272. package/dist/specialExams/data/api.js +55 -0
  273. package/dist/specialExams/data/api.js.map +1 -0
  274. package/dist/specialExams/data/apiHook.d.ts +6 -0
  275. package/dist/specialExams/data/apiHook.js +37 -0
  276. package/dist/specialExams/data/apiHook.js.map +1 -0
  277. package/dist/specialExams/data/queryKeys.d.ts +8 -0
  278. package/dist/specialExams/data/queryKeys.js +9 -0
  279. package/dist/specialExams/data/queryKeys.js.map +1 -0
  280. package/dist/specialExams/messages.d.ts +228 -0
  281. package/dist/specialExams/messages.js +230 -0
  282. package/dist/specialExams/messages.js.map +1 -0
  283. package/dist/specialExams/types.d.ts +65 -0
  284. package/dist/specialExams/types.js +2 -0
  285. package/dist/specialExams/types.js.map +1 -0
  286. package/dist/style.scss +16 -0
  287. package/dist/testUtils.js +2 -2
  288. package/dist/testUtils.js.map +1 -1
  289. package/dist/types/index.d.ts +15 -0
  290. package/dist/types/index.js.map +1 -1
  291. package/dist/utils/formatters.d.ts +5 -0
  292. package/dist/utils/formatters.js +10 -0
  293. package/dist/utils/formatters.js.map +1 -1
  294. package/package.json +6 -6
  295. package/dist/app.scss +0 -10
  296. package/dist/providers/QueryProvider.d.ts +0 -6
  297. package/dist/providers/QueryProvider.js +0 -16
  298. package/dist/providers/QueryProvider.js.map +0 -1
  299. package/dist/providers.d.ts +0 -3
  300. package/dist/providers.js +0 -8
  301. package/dist/providers.js.map +0 -1
@@ -0,0 +1,550 @@
1
+ import { defineMessages } from '@openedx/frontend-base';
2
+ const messages = defineMessages({
3
+ pageTitle: {
4
+ id: 'instruct.certificates.pageTitle',
5
+ defaultMessage: 'Certificates',
6
+ description: 'Title for certificates page',
7
+ },
8
+ grantExceptionsButton: {
9
+ id: 'instruct.certificates.grantExceptionsButton',
10
+ defaultMessage: 'Grant Exception(s)',
11
+ description: 'Button to grant certificate exceptions',
12
+ },
13
+ invalidateCertificateButton: {
14
+ id: 'instruct.certificates.invalidateCertificateButton',
15
+ defaultMessage: 'Invalidate Certificate',
16
+ description: 'Button to invalidate certificates',
17
+ },
18
+ disableCertificatesButton: {
19
+ id: 'instruct.certificates.disableCertificatesButton',
20
+ defaultMessage: 'Disable Certificates',
21
+ description: 'Button to disable certificate generation',
22
+ },
23
+ regenerateCertificatesButton: {
24
+ id: 'instruct.certificates.regenerateCertificatesButton',
25
+ defaultMessage: 'Regenerate Certificates',
26
+ description: 'Button to regenerate certificates',
27
+ },
28
+ issuedCertificatesTab: {
29
+ id: 'instruct.certificates.issuedCertificatesTab',
30
+ defaultMessage: 'Issued Certificates',
31
+ description: 'Tab label for issued certificates',
32
+ },
33
+ generationHistoryTab: {
34
+ id: 'instruct.certificates.generationHistoryTab',
35
+ defaultMessage: 'Certificate Generation History',
36
+ description: 'Tab label for certificate generation history',
37
+ },
38
+ searchPlaceholder: {
39
+ id: 'instruct.certificates.searchPlaceholder',
40
+ defaultMessage: 'Search by username or email',
41
+ description: 'Placeholder text for search input',
42
+ },
43
+ filterAllLearners: {
44
+ id: 'instruct.certificates.filterAllLearners',
45
+ defaultMessage: 'All Learners',
46
+ description: 'Filter option for all learners',
47
+ },
48
+ filterReceived: {
49
+ id: 'instruct.certificates.filterReceived',
50
+ defaultMessage: 'Received',
51
+ description: 'Filter option for learners who received certificates',
52
+ },
53
+ filterNotReceived: {
54
+ id: 'instruct.certificates.filterNotReceived',
55
+ defaultMessage: 'Not Received',
56
+ description: 'Filter option for learners who did not receive certificates',
57
+ },
58
+ filterAuditPassing: {
59
+ id: 'instruct.certificates.filterAuditPassing',
60
+ defaultMessage: 'Audit - Passing',
61
+ description: 'Filter option for audit learners who are passing',
62
+ },
63
+ filterAuditNotPassing: {
64
+ id: 'instruct.certificates.filterAuditNotPassing',
65
+ defaultMessage: 'Audit - Not Passing',
66
+ description: 'Filter option for audit learners who are not passing',
67
+ },
68
+ filterErrorState: {
69
+ id: 'instruct.certificates.filterErrorState',
70
+ defaultMessage: 'Error State',
71
+ description: 'Filter option for error states',
72
+ },
73
+ filterGrantedExceptions: {
74
+ id: 'instruct.certificates.filterGrantedExceptions',
75
+ defaultMessage: 'Granted Exceptions',
76
+ description: 'Filter option for granted exceptions',
77
+ },
78
+ filterInvalidated: {
79
+ id: 'instruct.certificates.filterInvalidated',
80
+ defaultMessage: 'Invalidated',
81
+ description: 'Filter option for invalidated certificates',
82
+ },
83
+ columnUsername: {
84
+ id: 'instruct.certificates.columnUsername',
85
+ defaultMessage: 'Username',
86
+ description: 'Table column header for username',
87
+ },
88
+ columnEmail: {
89
+ id: 'instruct.certificates.columnEmail',
90
+ defaultMessage: 'Email',
91
+ description: 'Table column header for email',
92
+ },
93
+ columnEnrollmentTrack: {
94
+ id: 'instruct.certificates.columnEnrollmentTrack',
95
+ defaultMessage: 'Enrollment Track',
96
+ description: 'Table column header for enrollment track',
97
+ },
98
+ columnCertificateStatus: {
99
+ id: 'instruct.certificates.columnCertificateStatus',
100
+ defaultMessage: 'Certificate Status',
101
+ description: 'Table column header for certificate status',
102
+ },
103
+ columnSpecialCase: {
104
+ id: 'instruct.certificates.columnSpecialCase',
105
+ defaultMessage: 'Special Case',
106
+ description: 'Table column header for special case',
107
+ },
108
+ columnExceptionGranted: {
109
+ id: 'instruct.certificates.columnExceptionGranted',
110
+ defaultMessage: 'Exception Granted',
111
+ description: 'Table column header for exception granted',
112
+ },
113
+ columnExceptionNotes: {
114
+ id: 'instruct.certificates.columnExceptionNotes',
115
+ defaultMessage: 'Exception Notes',
116
+ description: 'Table column header for exception notes',
117
+ },
118
+ columnInvalidatedBy: {
119
+ id: 'instruct.certificates.columnInvalidatedBy',
120
+ defaultMessage: 'Invalidated By',
121
+ description: 'Table column header for invalidated by',
122
+ },
123
+ columnInvalidationDate: {
124
+ id: 'instruct.certificates.columnInvalidationDate',
125
+ defaultMessage: 'Invalidation Date',
126
+ description: 'Table column header for invalidation date',
127
+ },
128
+ columnInvalidationNote: {
129
+ id: 'instruct.certificates.columnInvalidationNote',
130
+ defaultMessage: 'Invalidation Note',
131
+ description: 'Table column header for invalidation note',
132
+ },
133
+ columnActions: {
134
+ id: 'instruct.certificates.columnActions',
135
+ defaultMessage: 'Actions',
136
+ description: 'Table column header for actions',
137
+ },
138
+ removeExceptionAction: {
139
+ id: 'instruct.certificates.removeExceptionAction',
140
+ defaultMessage: 'Remove Exception',
141
+ description: 'Action menu item to remove exception',
142
+ },
143
+ removeInvalidationAction: {
144
+ id: 'instruct.certificates.removeInvalidationAction',
145
+ defaultMessage: 'Remove Invalidation',
146
+ description: 'Action menu item to remove invalidation',
147
+ },
148
+ noDataMessage: {
149
+ id: 'instruct.certificates.noDataMessage',
150
+ defaultMessage: 'No certificates found',
151
+ description: 'Message when no certificates are found',
152
+ },
153
+ exceptionRemovedToast: {
154
+ id: 'instruct.certificates.exceptionRemovedToast',
155
+ defaultMessage: 'Exception removed for {email}',
156
+ description: 'Toast message when exception is removed',
157
+ },
158
+ invalidationRemovedToast: {
159
+ id: 'instruct.certificates.invalidationRemovedToast',
160
+ defaultMessage: 'The certificate for {email} has been re-validated and the system is re-running the grade for this learner.',
161
+ description: 'Toast message when invalidation is removed',
162
+ },
163
+ exceptionsGrantedToast: {
164
+ id: 'instruct.certificates.exceptionsGrantedToast',
165
+ defaultMessage: 'Exceptions granted for {count} learner(s)',
166
+ description: 'Toast message when exceptions are granted',
167
+ },
168
+ certificatesInvalidatedToast: {
169
+ id: 'instruct.certificates.certificatesInvalidatedToast',
170
+ defaultMessage: 'Certificates invalidated for {count} learner(s)',
171
+ description: 'Toast message when certificates are invalidated',
172
+ },
173
+ grantExceptionsModalTitle: {
174
+ id: 'instruct.certificates.grantExceptionsModalTitle',
175
+ defaultMessage: 'Add to Exceptions List',
176
+ description: 'Title for grant exceptions modal',
177
+ },
178
+ grantExceptionsModalDescription: {
179
+ id: 'instruct.certificates.grantExceptionsModalDescription',
180
+ defaultMessage: 'Set exceptions to generate certificates for learners who did not qualify for a certificate but have been given an exception by the course team. After you add learners to the exception list, you must Generate Exception Certificates.',
181
+ description: 'Description for grant exceptions modal',
182
+ },
183
+ invalidateCertificateModalTitle: {
184
+ id: 'instruct.certificates.invalidateCertificateModalTitle',
185
+ defaultMessage: 'Invalidate Certificate',
186
+ description: 'Title for invalidate certificate modal',
187
+ },
188
+ invalidateCertificateModalDescription: {
189
+ id: 'instruct.certificates.invalidateCertificateModalDescription',
190
+ defaultMessage: 'Enter username or email to invalidate a certificate.',
191
+ description: 'Description for invalidate certificate modal',
192
+ },
193
+ removeExceptionModalTitle: {
194
+ id: 'instruct.certificates.removeExceptionModalTitle',
195
+ defaultMessage: 'Remove Exception',
196
+ description: 'Title for remove exception modal',
197
+ },
198
+ removeExceptionModalMessage: {
199
+ id: 'instruct.certificates.removeExceptionModalMessage',
200
+ defaultMessage: 'Are you sure you want to remove the certificate exception for {email}?',
201
+ description: 'Message for remove exception confirmation modal',
202
+ },
203
+ removeInvalidationModalTitle: {
204
+ id: 'instruct.certificates.removeInvalidationModalTitle',
205
+ defaultMessage: 'Remove Invalidation',
206
+ description: 'Title for remove invalidation modal',
207
+ },
208
+ removeInvalidationModalMessage: {
209
+ id: 'instruct.certificates.removeInvalidationModalMessage',
210
+ defaultMessage: 'Are you sure you want to remove invalidation for {email}?',
211
+ description: 'Message for remove invalidation confirmation modal',
212
+ },
213
+ disableCertificatesModalTitle: {
214
+ id: 'instruct.certificates.disableCertificatesModalTitle',
215
+ defaultMessage: 'Disable Certificate Generation',
216
+ description: 'Title for disable certificates modal',
217
+ },
218
+ disableCertificatesModalMessage: {
219
+ id: 'instruct.certificates.disableCertificatesModalMessage',
220
+ defaultMessage: 'Students will not be able to receive certificates until certificate generation is re-enabled. Are you sure you want to disable certificate generation?',
221
+ description: 'Message for disable certificates modal',
222
+ },
223
+ enableCertificatesModalTitle: {
224
+ id: 'instruct.certificates.enableCertificatesModalTitle',
225
+ defaultMessage: 'Enable Certificate Generation',
226
+ description: 'Title for enable certificates modal',
227
+ },
228
+ enableCertificatesModalMessage: {
229
+ id: 'instruct.certificates.enableCertificatesModalMessage',
230
+ defaultMessage: 'Are you sure you want to enable certificate generation for this course?',
231
+ description: 'Message for enable certificates modal',
232
+ },
233
+ notesLabel: {
234
+ id: 'instruct.certificates.notesLabel',
235
+ defaultMessage: 'Notes (Optional)',
236
+ description: 'Label for notes field',
237
+ },
238
+ notesPlaceholder: {
239
+ id: 'instruct.certificates.notesPlaceholder',
240
+ defaultMessage: 'Enter notes...',
241
+ description: 'Placeholder for notes field',
242
+ },
243
+ learnersLabel: {
244
+ id: 'instruct.certificates.learnersLabel',
245
+ defaultMessage: 'Username or Email',
246
+ description: 'Label for learners field',
247
+ },
248
+ learnersPlaceholder: {
249
+ id: 'instruct.certificates.learnersPlaceholder',
250
+ defaultMessage: 'Enter usernames or emails (one per line)',
251
+ description: 'Placeholder for learners field',
252
+ },
253
+ learnerLabel: {
254
+ id: 'instruct.certificates.learnerLabel',
255
+ defaultMessage: 'Username or Email',
256
+ description: 'Label for single learner field',
257
+ },
258
+ learnerPlaceholder: {
259
+ id: 'instruct.certificates.learnerPlaceholder',
260
+ defaultMessage: 'Enter username or email',
261
+ description: 'Placeholder for single learner field',
262
+ },
263
+ bulkUploadTab: {
264
+ id: 'instruct.certificates.bulkUploadTab',
265
+ defaultMessage: 'Bulk',
266
+ description: 'Tab label for bulk CSV upload',
267
+ },
268
+ singleLearnerTab: {
269
+ id: 'instruct.certificates.singleLearnerTab',
270
+ defaultMessage: 'Individual',
271
+ description: 'Tab label for single learner input',
272
+ },
273
+ csvFileLabel: {
274
+ id: 'instruct.certificates.csvFileLabel',
275
+ defaultMessage: 'Upload CSV',
276
+ description: 'Label for CSV file upload',
277
+ },
278
+ csvInstructions: {
279
+ id: 'instruct.certificates.csvInstructions',
280
+ defaultMessage: 'CSV Instructions',
281
+ description: 'Link text for CSV instructions',
282
+ },
283
+ csvInstructionsTooltip: {
284
+ id: 'instruct.certificates.csvInstructionsTooltip',
285
+ defaultMessage: 'CSV file should contain the usernames or email addresses of learners who will receive exceptions. Include the username or email address in the first comma separated field. You can include an optional note describing the reason for the exception in the second comma separated field.',
286
+ description: 'Tooltip text for CSV instructions',
287
+ },
288
+ csvFileSelected: {
289
+ id: 'instruct.certificates.csvFileSelected',
290
+ defaultMessage: 'File selected: {fileName}',
291
+ description: 'Message shown when CSV file is selected',
292
+ },
293
+ csvUploadPending: {
294
+ id: 'instruct.certificates.csvUploadPending',
295
+ defaultMessage: 'CSV file "{fileName}" is ready. Bulk upload will be processed when the backend API is available.',
296
+ description: 'Message shown when CSV upload is pending backend implementation',
297
+ },
298
+ studentGeneratedCertificatesMenuItem: {
299
+ id: 'instruct.certificates.studentGeneratedCertificatesMenuItem',
300
+ defaultMessage: 'Student Generated Certificates',
301
+ description: 'Menu item for student generated certificates',
302
+ },
303
+ moreActionsButton: {
304
+ id: 'instruct.certificates.moreActionsButton',
305
+ defaultMessage: 'More actions',
306
+ description: 'Button for more actions menu',
307
+ },
308
+ studentGeneratedCertificatesModalTitle: {
309
+ id: 'instruct.certificates.studentGeneratedCertificatesModalTitle',
310
+ defaultMessage: 'Student Generated Certificates',
311
+ description: 'Title for student generated certificates modal',
312
+ },
313
+ enableStudentGeneratedCertificates: {
314
+ id: 'instruct.certificates.enableStudentGeneratedCertificates',
315
+ defaultMessage: 'Enable Student Generated Certificates',
316
+ description: 'Checkbox label for enabling student generated certificates',
317
+ },
318
+ studentGeneratedCertificatesDescription: {
319
+ id: 'instruct.certificates.studentGeneratedCertificatesDescription',
320
+ defaultMessage: 'This functionality is enabled by default',
321
+ description: 'Description text for student generated certificates',
322
+ },
323
+ close: {
324
+ id: 'instruct.certificates.close',
325
+ defaultMessage: 'Close',
326
+ description: 'Close button text',
327
+ },
328
+ studentEmailUsername: {
329
+ id: 'instruct.certificates.studentEmailUsername',
330
+ defaultMessage: 'Student Email/Username',
331
+ description: 'Placeholder for student email or username field',
332
+ },
333
+ notesOptional: {
334
+ id: 'instruct.certificates.notesOptional',
335
+ defaultMessage: 'Notes (optional)',
336
+ description: 'Placeholder for optional notes field',
337
+ },
338
+ individualTabDescription: {
339
+ id: 'instruct.certificates.individualTabDescription',
340
+ defaultMessage: 'Enter the username or email address of each learner that you want to add as an exception.',
341
+ description: 'Description for individual tab',
342
+ },
343
+ cancel: {
344
+ id: 'instruct.certificates.cancel',
345
+ defaultMessage: 'Cancel',
346
+ description: 'Cancel button text',
347
+ },
348
+ confirm: {
349
+ id: 'instruct.certificates.confirm',
350
+ defaultMessage: 'Confirm',
351
+ description: 'Confirm button text',
352
+ },
353
+ submit: {
354
+ id: 'instruct.certificates.submit',
355
+ defaultMessage: 'Submit',
356
+ description: 'Submit button text',
357
+ },
358
+ save: {
359
+ id: 'instruct.certificates.save',
360
+ defaultMessage: 'Save',
361
+ description: 'Save button text',
362
+ },
363
+ columnTaskName: {
364
+ id: 'instruct.certificates.columnTaskName',
365
+ defaultMessage: 'Task Name',
366
+ description: 'Table column header for task name',
367
+ },
368
+ columnDate: {
369
+ id: 'instruct.certificates.columnDate',
370
+ defaultMessage: 'Date',
371
+ description: 'Table column header for date',
372
+ },
373
+ columnDetails: {
374
+ id: 'instruct.certificates.columnDetails',
375
+ defaultMessage: 'Details',
376
+ description: 'Table column header for details',
377
+ },
378
+ noTasksMessage: {
379
+ id: 'instruct.certificates.noTasksMessage',
380
+ defaultMessage: 'No certificate generation tasks found',
381
+ description: 'Message when no tasks are found',
382
+ },
383
+ errorGrantException: {
384
+ id: 'instruct.certificates.errorGrantException',
385
+ defaultMessage: 'Failed to grant exceptions',
386
+ description: 'Error message when granting exceptions fails',
387
+ },
388
+ errorInvalidateCertificate: {
389
+ id: 'instruct.certificates.errorInvalidateCertificate',
390
+ defaultMessage: 'Failed to invalidate certificates',
391
+ description: 'Error message when invalidating certificates fails',
392
+ },
393
+ errorRemoveException: {
394
+ id: 'instruct.certificates.errorRemoveException',
395
+ defaultMessage: 'Failed to remove exception',
396
+ description: 'Error message when removing exception fails',
397
+ },
398
+ errorRemoveInvalidation: {
399
+ id: 'instruct.certificates.errorRemoveInvalidation',
400
+ defaultMessage: 'Failed to remove invalidation',
401
+ description: 'Error message when removing invalidation fails',
402
+ },
403
+ errorToggleCertificateGeneration: {
404
+ id: 'instruct.certificates.errorToggleCertificateGeneration',
405
+ defaultMessage: 'Failed to toggle certificate generation',
406
+ description: 'Error message when toggling certificate generation fails',
407
+ },
408
+ successEnableCertificates: {
409
+ id: 'instruct.certificates.successEnableCertificates',
410
+ defaultMessage: 'Certificate generation enabled',
411
+ description: 'Success message when certificate generation is enabled',
412
+ },
413
+ successDisableCertificates: {
414
+ id: 'instruct.certificates.successDisableCertificates',
415
+ defaultMessage: 'Certificate generation disabled',
416
+ description: 'Success message when certificate generation is disabled',
417
+ },
418
+ certificatesDisabledMessage: {
419
+ id: 'instruct.certificates.certificatesDisabledMessage',
420
+ defaultMessage: 'Certificate management features are not enabled for this course. Please contact your system administrator to enable certificate generation.',
421
+ description: 'Message displayed when certificate features are disabled',
422
+ },
423
+ certificatesRegeneratedToast: {
424
+ id: 'instruct.certificates.certificatesRegeneratedToast',
425
+ defaultMessage: 'Certificate regeneration started successfully',
426
+ description: 'Success message when certificates are regenerated',
427
+ },
428
+ errorRegenerateCertificates: {
429
+ id: 'instruct.certificates.errorRegenerateCertificates',
430
+ defaultMessage: 'Failed to regenerate certificates',
431
+ description: 'Error message when certificate regeneration fails',
432
+ },
433
+ regenerateCertificatesButtonWithFilter: {
434
+ id: 'instruct.certificates.regenerateCertificatesButtonWithFilter',
435
+ defaultMessage: 'Regenerate Certificates: {filter}',
436
+ description: 'Button to regenerate certificates with filter applied',
437
+ },
438
+ generateCertificatesButton: {
439
+ id: 'instruct.certificates.generateCertificatesButton',
440
+ defaultMessage: 'Generate Certificates',
441
+ description: 'Button to generate certificates for granted exceptions',
442
+ },
443
+ regenerateTooltipAllLearners: {
444
+ id: 'instruct.certificates.regenerateTooltipAllLearners',
445
+ defaultMessage: 'To regenerate certificates, choose a group of learners from the "All Learners" filter',
446
+ description: 'Tooltip for regenerate button when All Learners filter is selected',
447
+ },
448
+ regenerateTooltipInvalidated: {
449
+ id: 'instruct.certificates.regenerateTooltipInvalidated',
450
+ defaultMessage: 'To regenerate certificates, choose a different group of learners from the learners filter',
451
+ description: 'Tooltip for regenerate button when Invalidated filter is selected',
452
+ },
453
+ regenerateModalTitleReceived: {
454
+ id: 'instruct.certificates.regenerateModalTitleReceived',
455
+ defaultMessage: 'Regenerate certificates for learners who have already received certificates?',
456
+ description: 'Title for regenerate modal when Received filter is selected',
457
+ },
458
+ regenerateModalMessageReceived: {
459
+ id: 'instruct.certificates.regenerateModalMessageReceived',
460
+ defaultMessage: 'Clicking "Regenerate" will regenerate certificates for {number} learner(s)',
461
+ description: 'Message for regenerate modal when Received filter is selected',
462
+ },
463
+ regenerateModalTitleNotReceived: {
464
+ id: 'instruct.certificates.regenerateModalTitleNotReceived',
465
+ defaultMessage: 'Regenerate certificates for learners who have not received certificates?',
466
+ description: 'Title for regenerate modal when Not Received filter is selected',
467
+ },
468
+ regenerateModalMessageNotReceived: {
469
+ id: 'instruct.certificates.regenerateModalMessageNotReceived',
470
+ defaultMessage: 'Clicking "Regenerate" will regenerate certificates for {number} learner(s)',
471
+ description: 'Message for regenerate modal when Not Received filter is selected',
472
+ },
473
+ regenerateModalTitleAuditPassing: {
474
+ id: 'instruct.certificates.regenerateModalTitleAuditPassing',
475
+ defaultMessage: 'Regenerate certificates for learners with audit - passing state?',
476
+ description: 'Title for regenerate modal when Audit Passing filter is selected',
477
+ },
478
+ regenerateModalMessageAuditPassing: {
479
+ id: 'instruct.certificates.regenerateModalMessageAuditPassing',
480
+ defaultMessage: 'Clicking "Regenerate" will regenerate certificates for {number} learner(s)',
481
+ description: 'Message for regenerate modal when Audit Passing filter is selected',
482
+ },
483
+ regenerateModalTitleAuditNotPassing: {
484
+ id: 'instruct.certificates.regenerateModalTitleAuditNotPassing',
485
+ defaultMessage: 'Regenerate certificates for learners with audit - not passing state?',
486
+ description: 'Title for regenerate modal when Audit Not Passing filter is selected',
487
+ },
488
+ regenerateModalMessageAuditNotPassing: {
489
+ id: 'instruct.certificates.regenerateModalMessageAuditNotPassing',
490
+ defaultMessage: 'Clicking "Regenerate" will regenerate certificates for {number} learner(s)',
491
+ description: 'Message for regenerate modal when Audit Not Passing filter is selected',
492
+ },
493
+ regenerateModalTitleErrorState: {
494
+ id: 'instruct.certificates.regenerateModalTitleErrorState',
495
+ defaultMessage: 'Regenerate certificates for learners with an error state?',
496
+ description: 'Title for regenerate modal when Error State filter is selected',
497
+ },
498
+ regenerateModalMessageErrorState: {
499
+ id: 'instruct.certificates.regenerateModalMessageErrorState',
500
+ defaultMessage: 'Clicking "Regenerate" will regenerate certificates for {number} learner(s)',
501
+ description: 'Message for regenerate modal when Error State filter is selected',
502
+ },
503
+ generateModalTitle: {
504
+ id: 'instruct.certificates.generateModalTitle',
505
+ defaultMessage: 'Generate Certificates?',
506
+ description: 'Title for generate certificates modal',
507
+ },
508
+ generateModalDescription: {
509
+ id: 'instruct.certificates.generateModalDescription',
510
+ defaultMessage: 'Generate certificates for learners who have granted exceptions? Clicking "Generate" will regenerate certificates for {number} learner(s)',
511
+ description: 'Description for generate certificates modal',
512
+ },
513
+ generateOptionAll: {
514
+ id: 'instruct.certificates.generateOptionAll',
515
+ defaultMessage: 'All Users on the Exception list',
516
+ description: 'Option to generate certificates for all users on exception list',
517
+ },
518
+ generateOptionWithoutCertificate: {
519
+ id: 'instruct.certificates.generateOptionWithoutCertificate',
520
+ defaultMessage: 'All Users on the Exception list who do not yet have a certificate',
521
+ description: 'Option to generate certificates for users without certificates',
522
+ },
523
+ generate: {
524
+ id: 'instruct.certificates.generate',
525
+ defaultMessage: 'Generate',
526
+ description: 'Generate button text',
527
+ },
528
+ regenerate: {
529
+ id: 'instruct.certificates.regenerate',
530
+ defaultMessage: 'Regenerate',
531
+ description: 'Regenerate button text',
532
+ },
533
+ regenerateModalTitleDefault: {
534
+ id: 'instruct.certificates.regenerateModalTitleDefault',
535
+ defaultMessage: 'Regenerate Certificates?',
536
+ description: 'Default title for regenerate modal',
537
+ },
538
+ regenerateModalMessageDefault: {
539
+ id: 'instruct.certificates.regenerateModalMessageDefault',
540
+ defaultMessage: 'Clicking "Regenerate" will regenerate certificates for {number} learner(s)',
541
+ description: 'Default message for regenerate modal',
542
+ },
543
+ errorModalTitle: {
544
+ id: 'instruct.certificates.errorModalTitle',
545
+ defaultMessage: 'Error',
546
+ description: 'Title for error modal',
547
+ },
548
+ });
549
+ export default messages;
550
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/certificates/messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n pageTitle: {\n id: 'instruct.certificates.pageTitle',\n defaultMessage: 'Certificates',\n description: 'Title for certificates page',\n },\n grantExceptionsButton: {\n id: 'instruct.certificates.grantExceptionsButton',\n defaultMessage: 'Grant Exception(s)',\n description: 'Button to grant certificate exceptions',\n },\n invalidateCertificateButton: {\n id: 'instruct.certificates.invalidateCertificateButton',\n defaultMessage: 'Invalidate Certificate',\n description: 'Button to invalidate certificates',\n },\n disableCertificatesButton: {\n id: 'instruct.certificates.disableCertificatesButton',\n defaultMessage: 'Disable Certificates',\n description: 'Button to disable certificate generation',\n },\n regenerateCertificatesButton: {\n id: 'instruct.certificates.regenerateCertificatesButton',\n defaultMessage: 'Regenerate Certificates',\n description: 'Button to regenerate certificates',\n },\n issuedCertificatesTab: {\n id: 'instruct.certificates.issuedCertificatesTab',\n defaultMessage: 'Issued Certificates',\n description: 'Tab label for issued certificates',\n },\n generationHistoryTab: {\n id: 'instruct.certificates.generationHistoryTab',\n defaultMessage: 'Certificate Generation History',\n description: 'Tab label for certificate generation history',\n },\n searchPlaceholder: {\n id: 'instruct.certificates.searchPlaceholder',\n defaultMessage: 'Search by username or email',\n description: 'Placeholder text for search input',\n },\n filterAllLearners: {\n id: 'instruct.certificates.filterAllLearners',\n defaultMessage: 'All Learners',\n description: 'Filter option for all learners',\n },\n filterReceived: {\n id: 'instruct.certificates.filterReceived',\n defaultMessage: 'Received',\n description: 'Filter option for learners who received certificates',\n },\n filterNotReceived: {\n id: 'instruct.certificates.filterNotReceived',\n defaultMessage: 'Not Received',\n description: 'Filter option for learners who did not receive certificates',\n },\n filterAuditPassing: {\n id: 'instruct.certificates.filterAuditPassing',\n defaultMessage: 'Audit - Passing',\n description: 'Filter option for audit learners who are passing',\n },\n filterAuditNotPassing: {\n id: 'instruct.certificates.filterAuditNotPassing',\n defaultMessage: 'Audit - Not Passing',\n description: 'Filter option for audit learners who are not passing',\n },\n filterErrorState: {\n id: 'instruct.certificates.filterErrorState',\n defaultMessage: 'Error State',\n description: 'Filter option for error states',\n },\n filterGrantedExceptions: {\n id: 'instruct.certificates.filterGrantedExceptions',\n defaultMessage: 'Granted Exceptions',\n description: 'Filter option for granted exceptions',\n },\n filterInvalidated: {\n id: 'instruct.certificates.filterInvalidated',\n defaultMessage: 'Invalidated',\n description: 'Filter option for invalidated certificates',\n },\n columnUsername: {\n id: 'instruct.certificates.columnUsername',\n defaultMessage: 'Username',\n description: 'Table column header for username',\n },\n columnEmail: {\n id: 'instruct.certificates.columnEmail',\n defaultMessage: 'Email',\n description: 'Table column header for email',\n },\n columnEnrollmentTrack: {\n id: 'instruct.certificates.columnEnrollmentTrack',\n defaultMessage: 'Enrollment Track',\n description: 'Table column header for enrollment track',\n },\n columnCertificateStatus: {\n id: 'instruct.certificates.columnCertificateStatus',\n defaultMessage: 'Certificate Status',\n description: 'Table column header for certificate status',\n },\n columnSpecialCase: {\n id: 'instruct.certificates.columnSpecialCase',\n defaultMessage: 'Special Case',\n description: 'Table column header for special case',\n },\n columnExceptionGranted: {\n id: 'instruct.certificates.columnExceptionGranted',\n defaultMessage: 'Exception Granted',\n description: 'Table column header for exception granted',\n },\n columnExceptionNotes: {\n id: 'instruct.certificates.columnExceptionNotes',\n defaultMessage: 'Exception Notes',\n description: 'Table column header for exception notes',\n },\n columnInvalidatedBy: {\n id: 'instruct.certificates.columnInvalidatedBy',\n defaultMessage: 'Invalidated By',\n description: 'Table column header for invalidated by',\n },\n columnInvalidationDate: {\n id: 'instruct.certificates.columnInvalidationDate',\n defaultMessage: 'Invalidation Date',\n description: 'Table column header for invalidation date',\n },\n columnInvalidationNote: {\n id: 'instruct.certificates.columnInvalidationNote',\n defaultMessage: 'Invalidation Note',\n description: 'Table column header for invalidation note',\n },\n columnActions: {\n id: 'instruct.certificates.columnActions',\n defaultMessage: 'Actions',\n description: 'Table column header for actions',\n },\n removeExceptionAction: {\n id: 'instruct.certificates.removeExceptionAction',\n defaultMessage: 'Remove Exception',\n description: 'Action menu item to remove exception',\n },\n removeInvalidationAction: {\n id: 'instruct.certificates.removeInvalidationAction',\n defaultMessage: 'Remove Invalidation',\n description: 'Action menu item to remove invalidation',\n },\n noDataMessage: {\n id: 'instruct.certificates.noDataMessage',\n defaultMessage: 'No certificates found',\n description: 'Message when no certificates are found',\n },\n exceptionRemovedToast: {\n id: 'instruct.certificates.exceptionRemovedToast',\n defaultMessage: 'Exception removed for {email}',\n description: 'Toast message when exception is removed',\n },\n invalidationRemovedToast: {\n id: 'instruct.certificates.invalidationRemovedToast',\n defaultMessage: 'The certificate for {email} has been re-validated and the system is re-running the grade for this learner.',\n description: 'Toast message when invalidation is removed',\n },\n exceptionsGrantedToast: {\n id: 'instruct.certificates.exceptionsGrantedToast',\n defaultMessage: 'Exceptions granted for {count} learner(s)',\n description: 'Toast message when exceptions are granted',\n },\n certificatesInvalidatedToast: {\n id: 'instruct.certificates.certificatesInvalidatedToast',\n defaultMessage: 'Certificates invalidated for {count} learner(s)',\n description: 'Toast message when certificates are invalidated',\n },\n grantExceptionsModalTitle: {\n id: 'instruct.certificates.grantExceptionsModalTitle',\n defaultMessage: 'Add to Exceptions List',\n description: 'Title for grant exceptions modal',\n },\n grantExceptionsModalDescription: {\n id: 'instruct.certificates.grantExceptionsModalDescription',\n defaultMessage: 'Set exceptions to generate certificates for learners who did not qualify for a certificate but have been given an exception by the course team. After you add learners to the exception list, you must Generate Exception Certificates.',\n description: 'Description for grant exceptions modal',\n },\n invalidateCertificateModalTitle: {\n id: 'instruct.certificates.invalidateCertificateModalTitle',\n defaultMessage: 'Invalidate Certificate',\n description: 'Title for invalidate certificate modal',\n },\n invalidateCertificateModalDescription: {\n id: 'instruct.certificates.invalidateCertificateModalDescription',\n defaultMessage: 'Enter username or email to invalidate a certificate.',\n description: 'Description for invalidate certificate modal',\n },\n removeExceptionModalTitle: {\n id: 'instruct.certificates.removeExceptionModalTitle',\n defaultMessage: 'Remove Exception',\n description: 'Title for remove exception modal',\n },\n removeExceptionModalMessage: {\n id: 'instruct.certificates.removeExceptionModalMessage',\n defaultMessage: 'Are you sure you want to remove the certificate exception for {email}?',\n description: 'Message for remove exception confirmation modal',\n },\n removeInvalidationModalTitle: {\n id: 'instruct.certificates.removeInvalidationModalTitle',\n defaultMessage: 'Remove Invalidation',\n description: 'Title for remove invalidation modal',\n },\n removeInvalidationModalMessage: {\n id: 'instruct.certificates.removeInvalidationModalMessage',\n defaultMessage: 'Are you sure you want to remove invalidation for {email}?',\n description: 'Message for remove invalidation confirmation modal',\n },\n disableCertificatesModalTitle: {\n id: 'instruct.certificates.disableCertificatesModalTitle',\n defaultMessage: 'Disable Certificate Generation',\n description: 'Title for disable certificates modal',\n },\n disableCertificatesModalMessage: {\n id: 'instruct.certificates.disableCertificatesModalMessage',\n defaultMessage: 'Students will not be able to receive certificates until certificate generation is re-enabled. Are you sure you want to disable certificate generation?',\n description: 'Message for disable certificates modal',\n },\n enableCertificatesModalTitle: {\n id: 'instruct.certificates.enableCertificatesModalTitle',\n defaultMessage: 'Enable Certificate Generation',\n description: 'Title for enable certificates modal',\n },\n enableCertificatesModalMessage: {\n id: 'instruct.certificates.enableCertificatesModalMessage',\n defaultMessage: 'Are you sure you want to enable certificate generation for this course?',\n description: 'Message for enable certificates modal',\n },\n notesLabel: {\n id: 'instruct.certificates.notesLabel',\n defaultMessage: 'Notes (Optional)',\n description: 'Label for notes field',\n },\n notesPlaceholder: {\n id: 'instruct.certificates.notesPlaceholder',\n defaultMessage: 'Enter notes...',\n description: 'Placeholder for notes field',\n },\n learnersLabel: {\n id: 'instruct.certificates.learnersLabel',\n defaultMessage: 'Username or Email',\n description: 'Label for learners field',\n },\n learnersPlaceholder: {\n id: 'instruct.certificates.learnersPlaceholder',\n defaultMessage: 'Enter usernames or emails (one per line)',\n description: 'Placeholder for learners field',\n },\n learnerLabel: {\n id: 'instruct.certificates.learnerLabel',\n defaultMessage: 'Username or Email',\n description: 'Label for single learner field',\n },\n learnerPlaceholder: {\n id: 'instruct.certificates.learnerPlaceholder',\n defaultMessage: 'Enter username or email',\n description: 'Placeholder for single learner field',\n },\n bulkUploadTab: {\n id: 'instruct.certificates.bulkUploadTab',\n defaultMessage: 'Bulk',\n description: 'Tab label for bulk CSV upload',\n },\n singleLearnerTab: {\n id: 'instruct.certificates.singleLearnerTab',\n defaultMessage: 'Individual',\n description: 'Tab label for single learner input',\n },\n csvFileLabel: {\n id: 'instruct.certificates.csvFileLabel',\n defaultMessage: 'Upload CSV',\n description: 'Label for CSV file upload',\n },\n csvInstructions: {\n id: 'instruct.certificates.csvInstructions',\n defaultMessage: 'CSV Instructions',\n description: 'Link text for CSV instructions',\n },\n csvInstructionsTooltip: {\n id: 'instruct.certificates.csvInstructionsTooltip',\n defaultMessage: 'CSV file should contain the usernames or email addresses of learners who will receive exceptions. Include the username or email address in the first comma separated field. You can include an optional note describing the reason for the exception in the second comma separated field.',\n description: 'Tooltip text for CSV instructions',\n },\n csvFileSelected: {\n id: 'instruct.certificates.csvFileSelected',\n defaultMessage: 'File selected: {fileName}',\n description: 'Message shown when CSV file is selected',\n },\n csvUploadPending: {\n id: 'instruct.certificates.csvUploadPending',\n defaultMessage: 'CSV file \"{fileName}\" is ready. Bulk upload will be processed when the backend API is available.',\n description: 'Message shown when CSV upload is pending backend implementation',\n },\n studentGeneratedCertificatesMenuItem: {\n id: 'instruct.certificates.studentGeneratedCertificatesMenuItem',\n defaultMessage: 'Student Generated Certificates',\n description: 'Menu item for student generated certificates',\n },\n moreActionsButton: {\n id: 'instruct.certificates.moreActionsButton',\n defaultMessage: 'More actions',\n description: 'Button for more actions menu',\n },\n studentGeneratedCertificatesModalTitle: {\n id: 'instruct.certificates.studentGeneratedCertificatesModalTitle',\n defaultMessage: 'Student Generated Certificates',\n description: 'Title for student generated certificates modal',\n },\n enableStudentGeneratedCertificates: {\n id: 'instruct.certificates.enableStudentGeneratedCertificates',\n defaultMessage: 'Enable Student Generated Certificates',\n description: 'Checkbox label for enabling student generated certificates',\n },\n studentGeneratedCertificatesDescription: {\n id: 'instruct.certificates.studentGeneratedCertificatesDescription',\n defaultMessage: 'This functionality is enabled by default',\n description: 'Description text for student generated certificates',\n },\n close: {\n id: 'instruct.certificates.close',\n defaultMessage: 'Close',\n description: 'Close button text',\n },\n studentEmailUsername: {\n id: 'instruct.certificates.studentEmailUsername',\n defaultMessage: 'Student Email/Username',\n description: 'Placeholder for student email or username field',\n },\n notesOptional: {\n id: 'instruct.certificates.notesOptional',\n defaultMessage: 'Notes (optional)',\n description: 'Placeholder for optional notes field',\n },\n individualTabDescription: {\n id: 'instruct.certificates.individualTabDescription',\n defaultMessage: 'Enter the username or email address of each learner that you want to add as an exception.',\n description: 'Description for individual tab',\n },\n cancel: {\n id: 'instruct.certificates.cancel',\n defaultMessage: 'Cancel',\n description: 'Cancel button text',\n },\n confirm: {\n id: 'instruct.certificates.confirm',\n defaultMessage: 'Confirm',\n description: 'Confirm button text',\n },\n submit: {\n id: 'instruct.certificates.submit',\n defaultMessage: 'Submit',\n description: 'Submit button text',\n },\n save: {\n id: 'instruct.certificates.save',\n defaultMessage: 'Save',\n description: 'Save button text',\n },\n columnTaskName: {\n id: 'instruct.certificates.columnTaskName',\n defaultMessage: 'Task Name',\n description: 'Table column header for task name',\n },\n columnDate: {\n id: 'instruct.certificates.columnDate',\n defaultMessage: 'Date',\n description: 'Table column header for date',\n },\n columnDetails: {\n id: 'instruct.certificates.columnDetails',\n defaultMessage: 'Details',\n description: 'Table column header for details',\n },\n noTasksMessage: {\n id: 'instruct.certificates.noTasksMessage',\n defaultMessage: 'No certificate generation tasks found',\n description: 'Message when no tasks are found',\n },\n errorGrantException: {\n id: 'instruct.certificates.errorGrantException',\n defaultMessage: 'Failed to grant exceptions',\n description: 'Error message when granting exceptions fails',\n },\n errorInvalidateCertificate: {\n id: 'instruct.certificates.errorInvalidateCertificate',\n defaultMessage: 'Failed to invalidate certificates',\n description: 'Error message when invalidating certificates fails',\n },\n errorRemoveException: {\n id: 'instruct.certificates.errorRemoveException',\n defaultMessage: 'Failed to remove exception',\n description: 'Error message when removing exception fails',\n },\n errorRemoveInvalidation: {\n id: 'instruct.certificates.errorRemoveInvalidation',\n defaultMessage: 'Failed to remove invalidation',\n description: 'Error message when removing invalidation fails',\n },\n errorToggleCertificateGeneration: {\n id: 'instruct.certificates.errorToggleCertificateGeneration',\n defaultMessage: 'Failed to toggle certificate generation',\n description: 'Error message when toggling certificate generation fails',\n },\n successEnableCertificates: {\n id: 'instruct.certificates.successEnableCertificates',\n defaultMessage: 'Certificate generation enabled',\n description: 'Success message when certificate generation is enabled',\n },\n successDisableCertificates: {\n id: 'instruct.certificates.successDisableCertificates',\n defaultMessage: 'Certificate generation disabled',\n description: 'Success message when certificate generation is disabled',\n },\n certificatesDisabledMessage: {\n id: 'instruct.certificates.certificatesDisabledMessage',\n defaultMessage: 'Certificate management features are not enabled for this course. Please contact your system administrator to enable certificate generation.',\n description: 'Message displayed when certificate features are disabled',\n },\n certificatesRegeneratedToast: {\n id: 'instruct.certificates.certificatesRegeneratedToast',\n defaultMessage: 'Certificate regeneration started successfully',\n description: 'Success message when certificates are regenerated',\n },\n errorRegenerateCertificates: {\n id: 'instruct.certificates.errorRegenerateCertificates',\n defaultMessage: 'Failed to regenerate certificates',\n description: 'Error message when certificate regeneration fails',\n },\n regenerateCertificatesButtonWithFilter: {\n id: 'instruct.certificates.regenerateCertificatesButtonWithFilter',\n defaultMessage: 'Regenerate Certificates: {filter}',\n description: 'Button to regenerate certificates with filter applied',\n },\n generateCertificatesButton: {\n id: 'instruct.certificates.generateCertificatesButton',\n defaultMessage: 'Generate Certificates',\n description: 'Button to generate certificates for granted exceptions',\n },\n regenerateTooltipAllLearners: {\n id: 'instruct.certificates.regenerateTooltipAllLearners',\n defaultMessage: 'To regenerate certificates, choose a group of learners from the \"All Learners\" filter',\n description: 'Tooltip for regenerate button when All Learners filter is selected',\n },\n regenerateTooltipInvalidated: {\n id: 'instruct.certificates.regenerateTooltipInvalidated',\n defaultMessage: 'To regenerate certificates, choose a different group of learners from the learners filter',\n description: 'Tooltip for regenerate button when Invalidated filter is selected',\n },\n regenerateModalTitleReceived: {\n id: 'instruct.certificates.regenerateModalTitleReceived',\n defaultMessage: 'Regenerate certificates for learners who have already received certificates?',\n description: 'Title for regenerate modal when Received filter is selected',\n },\n regenerateModalMessageReceived: {\n id: 'instruct.certificates.regenerateModalMessageReceived',\n defaultMessage: 'Clicking \"Regenerate\" will regenerate certificates for {number} learner(s)',\n description: 'Message for regenerate modal when Received filter is selected',\n },\n regenerateModalTitleNotReceived: {\n id: 'instruct.certificates.regenerateModalTitleNotReceived',\n defaultMessage: 'Regenerate certificates for learners who have not received certificates?',\n description: 'Title for regenerate modal when Not Received filter is selected',\n },\n regenerateModalMessageNotReceived: {\n id: 'instruct.certificates.regenerateModalMessageNotReceived',\n defaultMessage: 'Clicking \"Regenerate\" will regenerate certificates for {number} learner(s)',\n description: 'Message for regenerate modal when Not Received filter is selected',\n },\n regenerateModalTitleAuditPassing: {\n id: 'instruct.certificates.regenerateModalTitleAuditPassing',\n defaultMessage: 'Regenerate certificates for learners with audit - passing state?',\n description: 'Title for regenerate modal when Audit Passing filter is selected',\n },\n regenerateModalMessageAuditPassing: {\n id: 'instruct.certificates.regenerateModalMessageAuditPassing',\n defaultMessage: 'Clicking \"Regenerate\" will regenerate certificates for {number} learner(s)',\n description: 'Message for regenerate modal when Audit Passing filter is selected',\n },\n regenerateModalTitleAuditNotPassing: {\n id: 'instruct.certificates.regenerateModalTitleAuditNotPassing',\n defaultMessage: 'Regenerate certificates for learners with audit - not passing state?',\n description: 'Title for regenerate modal when Audit Not Passing filter is selected',\n },\n regenerateModalMessageAuditNotPassing: {\n id: 'instruct.certificates.regenerateModalMessageAuditNotPassing',\n defaultMessage: 'Clicking \"Regenerate\" will regenerate certificates for {number} learner(s)',\n description: 'Message for regenerate modal when Audit Not Passing filter is selected',\n },\n regenerateModalTitleErrorState: {\n id: 'instruct.certificates.regenerateModalTitleErrorState',\n defaultMessage: 'Regenerate certificates for learners with an error state?',\n description: 'Title for regenerate modal when Error State filter is selected',\n },\n regenerateModalMessageErrorState: {\n id: 'instruct.certificates.regenerateModalMessageErrorState',\n defaultMessage: 'Clicking \"Regenerate\" will regenerate certificates for {number} learner(s)',\n description: 'Message for regenerate modal when Error State filter is selected',\n },\n generateModalTitle: {\n id: 'instruct.certificates.generateModalTitle',\n defaultMessage: 'Generate Certificates?',\n description: 'Title for generate certificates modal',\n },\n generateModalDescription: {\n id: 'instruct.certificates.generateModalDescription',\n defaultMessage: 'Generate certificates for learners who have granted exceptions? Clicking \"Generate\" will regenerate certificates for {number} learner(s)',\n description: 'Description for generate certificates modal',\n },\n generateOptionAll: {\n id: 'instruct.certificates.generateOptionAll',\n defaultMessage: 'All Users on the Exception list',\n description: 'Option to generate certificates for all users on exception list',\n },\n generateOptionWithoutCertificate: {\n id: 'instruct.certificates.generateOptionWithoutCertificate',\n defaultMessage: 'All Users on the Exception list who do not yet have a certificate',\n description: 'Option to generate certificates for users without certificates',\n },\n generate: {\n id: 'instruct.certificates.generate',\n defaultMessage: 'Generate',\n description: 'Generate button text',\n },\n regenerate: {\n id: 'instruct.certificates.regenerate',\n defaultMessage: 'Regenerate',\n description: 'Regenerate button text',\n },\n regenerateModalTitleDefault: {\n id: 'instruct.certificates.regenerateModalTitleDefault',\n defaultMessage: 'Regenerate Certificates?',\n description: 'Default title for regenerate modal',\n },\n regenerateModalMessageDefault: {\n id: 'instruct.certificates.regenerateModalMessageDefault',\n defaultMessage: 'Clicking \"Regenerate\" will regenerate certificates for {number} learner(s)',\n description: 'Default message for regenerate modal',\n },\n errorModalTitle: {\n id: 'instruct.certificates.errorModalTitle',\n defaultMessage: 'Error',\n description: 'Title for error modal',\n },\n});\n\nexport default messages;\n"]}