richie-education 2.25.1 → 2.27.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 (218) hide show
  1. package/cunningham.cjs +4 -0
  2. package/i18n/locales/ar-SA.json +208 -92
  3. package/i18n/locales/es-ES.json +208 -92
  4. package/i18n/locales/fa-IR.json +208 -92
  5. package/i18n/locales/fr-CA.json +212 -96
  6. package/i18n/locales/fr-FR.json +210 -94
  7. package/i18n/locales/ko-KR.json +208 -92
  8. package/i18n/locales/pt-PT.json +214 -98
  9. package/i18n/locales/ru-RU.json +212 -96
  10. package/i18n/locales/vi-VN.json +208 -92
  11. package/jest/setup.ts +15 -0
  12. package/js/api/lms/dummy.ts +19 -0
  13. package/js/api/lms/openedx-fonzie.ts +23 -1
  14. package/js/components/ContractFrame/AbstractContractFrame.spec.tsx +1 -2
  15. package/js/components/DownloadContractButton/index.spec.tsx +3 -0
  16. package/js/components/EnrollmentDate/index.spec.tsx +93 -0
  17. package/js/components/EnrollmentDate/index.tsx +36 -0
  18. package/js/components/Form/Form/index.tsx +8 -0
  19. package/js/components/Form/test-utils.ts +6 -2
  20. package/js/components/Form/utils.ts +1 -1
  21. package/js/components/Modal/index.tsx +21 -23
  22. package/js/components/OpenEdxFullNameForm/index.stories.tsx +16 -0
  23. package/js/components/OpenEdxFullNameForm/index.tsx +159 -0
  24. package/js/components/Pagination/index.spec.tsx +4 -14
  25. package/js/components/PaymentButton/_styles.scss +1 -0
  26. package/js/components/{PaymentButton/components/PaymentInterfaces → PaymentInterfaces}/Dummy.tsx +12 -4
  27. package/js/components/PaymentInterfaces/LyraPopIn.spec.tsx +95 -0
  28. package/js/components/PaymentInterfaces/LyraPopIn.tsx +135 -0
  29. package/js/components/{PaymentButton/components/PaymentInterfaces → PaymentInterfaces}/PayplugLightbox.tsx +12 -7
  30. package/js/components/{PaymentButton/components/PaymentInterfaces → PaymentInterfaces}/__mocks__/index.tsx +1 -2
  31. package/js/components/{PaymentButton/components/PaymentInterfaces → PaymentInterfaces}/index.spec.tsx +22 -8
  32. package/js/components/{PaymentButton/components/PaymentInterfaces → PaymentInterfaces}/index.tsx +10 -12
  33. package/js/components/PaymentInterfaces/types.ts +46 -0
  34. package/js/components/PaymentScheduleGrid/_styles.scss +32 -0
  35. package/js/components/PaymentScheduleGrid/index.tsx +91 -0
  36. package/js/components/ProtectedRoute/index.spec.tsx +81 -0
  37. package/js/components/ProtectedRoute/index.tsx +11 -0
  38. package/js/components/PurchaseButton/index.spec.tsx +105 -57
  39. package/js/components/PurchaseButton/index.tsx +17 -7
  40. package/js/components/SaleTunnel/AddressSelector/CreateAddressFormModal.tsx +71 -0
  41. package/js/components/SaleTunnel/AddressSelector/EditAddressFormModal.tsx +68 -0
  42. package/js/components/SaleTunnel/AddressSelector/_styles.scss +11 -0
  43. package/js/components/SaleTunnel/AddressSelector/index.spec.tsx +270 -0
  44. package/js/components/SaleTunnel/AddressSelector/index.tsx +137 -0
  45. package/js/components/SaleTunnel/CertificateSaleTunnel/CertificateProductPath.tsx +48 -0
  46. package/js/components/SaleTunnel/CertificateSaleTunnel/index.tsx +35 -0
  47. package/js/components/SaleTunnel/CredentialSaleTunnel/CredentialProductPath.tsx +42 -0
  48. package/js/components/SaleTunnel/CredentialSaleTunnel/index.tsx +37 -0
  49. package/js/components/SaleTunnel/CreditCardSelector/_styles.scss +46 -0
  50. package/js/components/SaleTunnel/CreditCardSelector/index.spec.tsx +321 -0
  51. package/js/components/SaleTunnel/CreditCardSelector/index.tsx +260 -0
  52. package/js/components/{PaymentButton → SaleTunnel/GenericPaymentButton}/index.tsx +105 -97
  53. package/js/components/SaleTunnel/GenericSaleTunnel.tsx +209 -0
  54. package/js/components/SaleTunnel/{components/SaleTunnelStepValidation → ProductPath}/CourseRunsList.tsx +1 -1
  55. package/js/components/SaleTunnel/ProductPath/ProductPathCertificateDefinition.tsx +23 -0
  56. package/js/components/SaleTunnel/ProductPath/ProductPathInstructions.tsx +14 -0
  57. package/js/components/SaleTunnel/{components/SaleTunnelStepValidation → ProductPath}/TargetCourseDetail.tsx +2 -1
  58. package/js/components/SaleTunnel/{components/SaleTunnelStepValidation → ProductPath}/_styles.scss +5 -38
  59. package/js/components/SaleTunnel/SaleTunnelInformation/index.tsx +137 -0
  60. package/js/components/SaleTunnel/SaleTunnelNotValidated/index.tsx +70 -0
  61. package/js/components/SaleTunnel/{components/SaleTunnelStepResume → SaleTunnelSuccess}/index.tsx +15 -21
  62. package/js/components/SaleTunnel/Sponsors/SaleTunnelSponsors.scss +15 -0
  63. package/js/components/SaleTunnel/Sponsors/SaleTunnelSponsors.tsx +20 -0
  64. package/js/components/SaleTunnel/_styles.scss +128 -6
  65. package/js/components/{PaymentButton → SaleTunnel}/hooks/useTerms.tsx +5 -2
  66. package/js/components/SaleTunnel/index.credential.spec.tsx +143 -0
  67. package/js/components/SaleTunnel/index.full-process.spec.tsx +292 -0
  68. package/js/components/SaleTunnel/index.spec.tsx +821 -133
  69. package/js/components/SaleTunnel/index.stories.tsx +32 -0
  70. package/js/components/SaleTunnel/index.tsx +23 -186
  71. package/js/components/SearchInput/index.tsx +1 -1
  72. package/js/components/SuccessIcon/_styles.scss +1 -15
  73. package/js/components/Tabs/_styles.scss +34 -0
  74. package/js/components/Tabs/index.stories.tsx +32 -0
  75. package/js/components/Tabs/index.tsx +80 -0
  76. package/js/components/WarningIcon/_styles.scss +84 -0
  77. package/js/components/WarningIcon/index.tsx +18 -0
  78. package/js/hooks/useCertificates/index.tsx +14 -4
  79. package/js/hooks/useContractArchive/index.ts +6 -1
  80. package/js/hooks/useCourseProductUnion/index.spec.tsx +9 -23
  81. package/js/hooks/useCourseRunOrder/index.spec.tsx +55 -0
  82. package/js/hooks/useCourseRunOrder/index.tsx +27 -0
  83. package/js/hooks/useDashboardAddressForm.tsx +6 -0
  84. package/js/hooks/useDateFormat/index.spec.tsx +37 -0
  85. package/js/hooks/{useDateFormat.tsx → useDateFormat/index.tsx} +6 -1
  86. package/js/hooks/useJoanieUserAbilities/index.spec.tsx +19 -23
  87. package/js/hooks/useMatchMedia.ts +4 -0
  88. package/js/hooks/useOpenEdxProfile/index.ts +61 -3
  89. package/js/hooks/useOpenEdxProfile/utils/index.spec.ts +0 -32
  90. package/js/hooks/useOpenEdxProfile/utils/index.ts +19 -38
  91. package/js/hooks/useUnionResource/index.spec.tsx +11 -14
  92. package/js/hooks/useUnionResource/index.ts +4 -7
  93. package/js/hooks/useUnionResource/utils/fetchEntity.ts +1 -0
  94. package/js/pages/DashboardAddressesManagement/DashboardCreateAddress.spec.tsx +17 -11
  95. package/js/pages/DashboardAddressesManagement/DashboardEditAddress.spec.tsx +49 -53
  96. package/js/pages/DashboardAddressesManagement/index.spec.tsx +43 -75
  97. package/js/pages/DashboardCertificates/_styles.scss +4 -0
  98. package/js/pages/DashboardCertificates/components/CertificateList/index.tsx +83 -0
  99. package/js/pages/DashboardCertificates/index.spec.tsx +80 -56
  100. package/js/pages/DashboardCertificates/index.tsx +42 -59
  101. package/js/pages/DashboardContracts/index.spec.tsx +4 -24
  102. package/js/pages/DashboardCourses/index.spec.tsx +6 -6
  103. package/js/pages/DashboardCourses/useOrdersEnrollments.tsx +1 -0
  104. package/js/pages/DashboardCreditCardsManagement/CreditCardBrandLogo.spec.tsx +29 -0
  105. package/js/pages/DashboardCreditCardsManagement/CreditCardBrandLogo.tsx +15 -4
  106. package/js/pages/DashboardCreditCardsManagement/DashboardEditCreditCard.spec.tsx +3 -1
  107. package/js/pages/DashboardCreditCardsManagement/_styles.scss +5 -1
  108. package/js/pages/DashboardCreditCardsManagement/index.spec.tsx +1 -0
  109. package/js/pages/DashboardOpenEdxProfile/index.spec.tsx +46 -5
  110. package/js/pages/DashboardOpenEdxProfile/index.stories.tsx +10 -0
  111. package/js/pages/DashboardOpenEdxProfile/index.tsx +21 -14
  112. package/js/pages/DashboardOrderLayout/index.spec.tsx +5 -10
  113. package/js/pages/DashboardPageNotFound/index.tsx +45 -0
  114. package/js/pages/TeacherDashboardContractsLayout/components/BulkDownloadContractButton/index.spec.tsx +137 -96
  115. package/js/pages/TeacherDashboardContractsLayout/components/BulkDownloadContractButton/index.timer.spec.tsx +129 -88
  116. package/js/pages/TeacherDashboardContractsLayout/components/BulkDownloadContractButton/index.tsx +8 -3
  117. package/js/pages/TeacherDashboardContractsLayout/components/ContractActionsBar/index.spec.tsx +4 -22
  118. package/js/pages/TeacherDashboardContractsLayout/components/ContractActionsBar/index.tsx +7 -3
  119. package/js/pages/TeacherDashboardContractsLayout/hooks/useCheckContractArchiveExists/index.spec.tsx +48 -7
  120. package/js/pages/TeacherDashboardContractsLayout/hooks/useCheckContractArchiveExists/index.tsx +13 -4
  121. package/js/pages/TeacherDashboardContractsLayout/hooks/useDownloadContractArchive/contractArchiveLocalStorage.spec.ts +163 -65
  122. package/js/pages/TeacherDashboardContractsLayout/hooks/useDownloadContractArchive/contractArchiveLocalStorage.ts +43 -8
  123. package/js/pages/TeacherDashboardContractsLayout/hooks/useDownloadContractArchive/index.spec.tsx +250 -159
  124. package/js/pages/TeacherDashboardContractsLayout/hooks/useDownloadContractArchive/index.tsx +25 -8
  125. package/js/pages/TeacherDashboardContractsLayout/hooks/useHasContractToDownload/index.tsx +1 -1
  126. package/js/pages/TeacherDashboardContractsLayout/hooks/useTeacherContractFilters/index.spec.tsx +1 -2
  127. package/js/pages/TeacherDashboardCourseLearnersLayout/hooks/useCourseLearnersFilters/index.spec.tsx +1 -2
  128. package/js/pages/TeacherDashboardCourseLoader/CourseRunList/utils.tsx +2 -2
  129. package/js/pages/TeacherDashboardOrganizationCourseLoader/index.spec.tsx +6 -0
  130. package/js/pages/TeacherDashboardTraining/index.spec.tsx +10 -0
  131. package/js/settings/settings.prod.ts +1 -0
  132. package/js/translations/ar-SA.json +1 -1
  133. package/js/translations/es-ES.json +1 -1
  134. package/js/translations/fa-IR.json +1 -1
  135. package/js/translations/fr-CA.json +1 -1
  136. package/js/translations/fr-FR.json +1 -1
  137. package/js/translations/ko-KR.json +1 -1
  138. package/js/translations/pt-PT.json +1 -1
  139. package/js/translations/ru-RU.json +1 -1
  140. package/js/translations/vi-VN.json +1 -1
  141. package/js/types/Joanie.ts +29 -28
  142. package/js/types/api.ts +2 -0
  143. package/js/types/payments/lyra.d.ts +3 -0
  144. package/js/utils/CertificateHelper/index.spec.ts +30 -21
  145. package/js/utils/cunningham-tokens.ts +3 -6
  146. package/js/utils/download.ts +1 -1
  147. package/js/utils/errors/handle.spec.ts +2 -2
  148. package/js/utils/errors/handle.ts +1 -1
  149. package/js/utils/test/Cunningham.tsx +31 -0
  150. package/js/utils/test/createTestQueryClient.ts +40 -8
  151. package/js/utils/test/expectUrlMatchLocationDisplayed.ts +0 -1
  152. package/js/utils/test/factories/joanie.ts +11 -16
  153. package/js/utils/test/makeHistoryOf.ts +11 -0
  154. package/js/utils/test/wrappers/AppWrapper.tsx +26 -0
  155. package/js/utils/test/wrappers/BaseAppWrapper.tsx +3 -3
  156. package/js/utils/test/wrappers/BaseJoanieAppWrapper.tsx +3 -3
  157. package/js/utils/test/wrappers/JoanieAppWrapper.tsx +3 -6
  158. package/js/utils/test/wrappers/PresentationalAppWrapper.tsx +5 -7
  159. package/js/utils/test/wrappers/types.ts +2 -0
  160. package/js/widgets/Dashboard/components/DashboardAvatar/_styles.scss +1 -0
  161. package/js/widgets/Dashboard/components/DashboardAvatar/index.tsx +3 -1
  162. package/js/widgets/Dashboard/components/DashboardItem/CourseEnrolling/hooks/useCourseRunPeriodMessage.ts +4 -2
  163. package/js/widgets/Dashboard/components/DashboardItem/Enrollment/ProductCertificateFooter/index.spec.tsx +2 -2
  164. package/js/widgets/Dashboard/components/DashboardItem/Enrollment/ProductCertificateFooter/index.tsx +7 -6
  165. package/js/widgets/Dashboard/components/DashboardItem/_styles.scss +3 -1
  166. package/js/widgets/Dashboard/components/DashboardLayout/index.tsx +5 -1
  167. package/js/widgets/Dashboard/components/DashboardLayoutRoute/index.tsx +8 -11
  168. package/js/widgets/Dashboard/components/DashboardSidebar/components/MenuNavLink/index.tsx +4 -1
  169. package/js/widgets/Dashboard/components/DashboardSidebar/index.tsx +1 -0
  170. package/js/widgets/Dashboard/components/LearnerDashboardSidebar/index.tsx +7 -0
  171. package/js/widgets/Dashboard/components/TeacherDashboardCourseSidebar/index.spec.tsx +12 -5
  172. package/js/widgets/Dashboard/contexts/DashboardBreadcrumbsContext.tsx +5 -3
  173. package/js/widgets/Dashboard/index.spec.tsx +48 -23
  174. package/js/widgets/Dashboard/utils/dashboardRoutes.tsx +37 -8
  175. package/js/widgets/Dashboard/utils/learnerRoutes.tsx +22 -3
  176. package/js/widgets/Dashboard/utils/learnerRoutesPaths.tsx +12 -0
  177. package/js/widgets/Dashboard/utils/teacherDashboardPaths.tsx +0 -6
  178. package/js/widgets/Dashboard/utils/teacherRoutes.tsx +0 -7
  179. package/js/widgets/Search/hooks/useCourseSearch/index.spec.tsx +2 -2
  180. package/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/CourseProductItemFooter/index.tsx +7 -5
  181. package/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/components/CourseProductCourseRuns/EnrollableCourseRunList.tsx +1 -1
  182. package/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/index.stories.tsx +21 -2
  183. package/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/index.tsx +5 -11
  184. package/js/widgets/SyllabusCourseRunsList/components/CourseRunItem/index.tsx +2 -2
  185. package/js/widgets/SyllabusCourseRunsList/components/CourseRunItemWithEnrollment/index.product.spec.tsx +133 -0
  186. package/js/widgets/SyllabusCourseRunsList/components/CourseRunItemWithEnrollment/index.tsx +29 -3
  187. package/js/widgets/SyllabusCourseRunsList/components/SyllabusCourseRun/index.tsx +3 -2
  188. package/js/widgets/SyllabusCourseRunsList/hooks/useCourseEnrollment/index.spec.tsx +32 -0
  189. package/js/widgets/SyllabusCourseRunsList/hooks/useCourseEnrollment/index.ts +3 -2
  190. package/js/widgets/SyllabusCourseRunsList/index.tsx +3 -3
  191. package/js/widgets/UserLogin/index.not.isJoanieEnabled.spec.tsx +1 -2
  192. package/js/widgets/UserLogin/index.spec.tsx +22 -21
  193. package/js/widgets/index.tsx +8 -5
  194. package/package.json +54 -53
  195. package/scss/colors/_theme.scss +14 -0
  196. package/scss/components/_content.scss +5 -0
  197. package/scss/components/_index.scss +7 -5
  198. package/scss/objects/_form.scss +17 -6
  199. package/scss/tools/_index.scss +1 -0
  200. package/{js/components/SaleTunnel/components/SaleTunnelStepResume/_styles.scss → scss/tools/_keyframes.scss} +14 -37
  201. package/scss/vendors/css/cunningham-tokens.css +3 -0
  202. package/scss/vendors/cunningham-tokens.scss +7 -3
  203. package/js/components/PaymentButton/index.spec.tsx +0 -1063
  204. package/js/components/SaleTunnel/components/RegisteredCreditCard/_styles.scss +0 -37
  205. package/js/components/SaleTunnel/components/RegisteredCreditCard/index.spec.tsx +0 -90
  206. package/js/components/SaleTunnel/components/RegisteredCreditCard/index.tsx +0 -64
  207. package/js/components/SaleTunnel/components/SaleTunnelStepPayment/_styles.scss +0 -188
  208. package/js/components/SaleTunnel/components/SaleTunnelStepPayment/index.spec.tsx +0 -319
  209. package/js/components/SaleTunnel/components/SaleTunnelStepPayment/index.tsx +0 -285
  210. package/js/components/SaleTunnel/components/SaleTunnelStepResume/index.spec.tsx +0 -80
  211. package/js/components/SaleTunnel/components/SaleTunnelStepValidation/index.spec.tsx +0 -170
  212. package/js/components/SaleTunnel/components/SaleTunnelStepValidation/index.tsx +0 -108
  213. package/js/components/SaleTunnel/components/StepBreadcrumb/_styles.scss +0 -90
  214. package/js/components/SaleTunnel/components/StepBreadcrumb/index.spec.tsx +0 -242
  215. package/js/components/SaleTunnel/components/StepBreadcrumb/index.tsx +0 -125
  216. package/js/components/SaleTunnel/context.tsx +0 -44
  217. package/js/utils/test/wrappers/ReactQueryAppWrapper.tsx +0 -16
  218. /package/js/{widgets/SyllabusCourseRunsList/components/CourseProductItem/types → types}/payments/payplug.d.ts +0 -0
package/cunningham.cjs CHANGED
@@ -62,9 +62,13 @@ module.exports = {
62
62
  indianred3: '#df484b',
63
63
  midnightblue: '#141b2c',
64
64
  mantis: '#76ce68',
65
+ 'mantis-darken': '#006908',
65
66
  },
66
67
  },
67
68
  components: {
69
+ tabs: {
70
+ 'border-bottom-color': 'ref(theme.colors.greyscale-300)',
71
+ },
68
72
  button: {
69
73
  'font-family': 'Montserrat',
70
74
  },
@@ -213,7 +213,7 @@
213
213
  },
214
214
  "components.CourseProductItem.fromTo": {
215
215
  "description": "Course run date range",
216
- "message": "From {from} to {to}"
216
+ "message": "From {from} {to, select, undefined {} other {to {to}}}"
217
217
  },
218
218
  "components.CourseProductItem.loadingInitial": {
219
219
  "description": "Accessible text for the initial loading spinner displayed when product is fetching",
@@ -293,11 +293,11 @@
293
293
  },
294
294
  "components.CourseRunItem.courseRunTitleWithDates": {
295
295
  "description": "Course run details displayed on the syllabus",
296
- "message": "{title}, from {start} to {end}"
296
+ "message": "{title}, from {start} {end, select, undefined {} other {to {end}}}"
297
297
  },
298
298
  "components.CourseRunItem.courseRunWithDates": {
299
299
  "description": "Course run details displayed on the syllabus when it has no title",
300
- "message": "From {start} to {end}"
300
+ "message": "From {start} {end, select, undefined {} other {to {end}}}"
301
301
  },
302
302
  "components.CourseRunItemWithEnrollment.enrolled": {
303
303
  "description": "Help text for users are enrolled in the course run.",
@@ -317,7 +317,7 @@
317
317
  },
318
318
  "components.CourseRunList.dataCourseRunPeriod": {
319
319
  "description": "Message displayed in course run datagrid for course run period",
320
- "message": "From {from} to {to}"
320
+ "message": "From {from} {to, select, undefined {} other {to {to}}}"
321
321
  },
322
322
  "components.CourseRunList.noCourseRunAvailable": {
323
323
  "description": "Text displayed when no course run are opened for the course",
@@ -327,10 +327,18 @@
327
327
  "description": "Help text below the \"Unenroll now\" CTA when an enrollment attempt has already failed.",
328
328
  "message": "Unenroll from this course"
329
329
  },
330
+ "components.Dashboard.DashboardRoutes.certificates.enrollment.label": {
331
+ "description": "Label of the enrollment certificates view used in navigation components.",
332
+ "message": "My attestations of achievement"
333
+ },
330
334
  "components.Dashboard.DashboardRoutes.certificates.label": {
331
335
  "description": "Label of the certificates view used in navigation components.",
332
336
  "message": "My certificates"
333
337
  },
338
+ "components.Dashboard.DashboardRoutes.certificates.order.label": {
339
+ "description": "Label of the order certificates view used in navigation components.",
340
+ "message": "My certificates"
341
+ },
334
342
  "components.Dashboard.DashboardRoutes.contracts.label": {
335
343
  "description": "Label of the training contracts view used in navigation components.",
336
344
  "message": "My training contracts"
@@ -439,10 +447,18 @@
439
447
  "description": "Message displayed when there are no certificates",
440
448
  "message": "You have no certificates yet."
441
449
  },
450
+ "components.DashboardCertificates.enrollmentCertificateTabLabel": {
451
+ "description": "The label of the enrollment certificate tab",
452
+ "message": "Attestations of achievement"
453
+ },
442
454
  "components.DashboardCertificates.loading": {
443
455
  "description": "Message displayed while loading certificates",
444
456
  "message": "Loading certificates..."
445
457
  },
458
+ "components.DashboardCertificates.orderCertificateTabLabel": {
459
+ "description": "The label of the order certificate tab",
460
+ "message": "Certificates"
461
+ },
446
462
  "components.DashboardContracts.empty": {
447
463
  "description": "Message displayed when there are no training contracts",
448
464
  "message": "You have no training contract yet."
@@ -861,7 +877,7 @@
861
877
  },
862
878
  "components.EnrollableCourseRunList.ariaSelectCourseRun": {
863
879
  "description": "Accessible label used by screen reader when user checked a course run radio input.",
864
- "message": "Select course run from {start} to {end}."
880
+ "message": "Select course run from {start} {end, select, undefined {} other {to {end}}}."
865
881
  },
866
882
  "components.EnrollableCourseRunList.enroll": {
867
883
  "description": "Text label for the enroll button",
@@ -903,10 +919,18 @@
903
919
  "description": "Accessible label displayed when user is being unenrolled.",
904
920
  "message": "Unenrolling..."
905
921
  },
922
+ "components.EnrollmentDate.enrollClosed": {
923
+ "description": "Text label for the enrollment dates when enrollment is passed",
924
+ "message": "Enrollment closed since {date}"
925
+ },
906
926
  "components.EnrollmentDate.enrollFrom": {
907
927
  "description": "Text label for the enrollment dates when enrollment is not yet opened",
908
928
  "message": "Enrollment from {date}"
909
929
  },
930
+ "components.EnrollmentDate.enrollSince": {
931
+ "description": "Text label for the enrollment dates when enrollment opened and never closed",
932
+ "message": "Enrollment open since {date}"
933
+ },
910
934
  "components.EnrollmentDate.enrollUntil": {
911
935
  "description": "Text label for the enrollment dates when enrollment is opened",
912
936
  "message": "Enrollment until {date}"
@@ -967,6 +991,30 @@
967
991
  "description": "label of the settings link",
968
992
  "message": "Settings"
969
993
  },
994
+ "components.OpenEdxFullNameForm.emailInputLabel": {
995
+ "description": "Label of \"email\" field of the openEdx full name form",
996
+ "message": "Email"
997
+ },
998
+ "components.OpenEdxFullNameForm.error": {
999
+ "description": "Message displayed i nopenEdx full name form when submit the request fail",
1000
+ "message": "There was an error while updating your full name. Please try again later."
1001
+ },
1002
+ "components.OpenEdxFullNameForm.fullNameInputDescription": {
1003
+ "description": "Descripiton on the \"fullName\" field of the openEdx full name form.",
1004
+ "message": "Please check that your fullname is correct. It will be used on official document (e.g: certificate)"
1005
+ },
1006
+ "components.OpenEdxFullNameForm.fullNameInputLabel": {
1007
+ "description": "Label of \"fullName\" field of the openEdx full name form",
1008
+ "message": "Full name"
1009
+ },
1010
+ "components.OpenEdxFullNameForm.loadingLabel": {
1011
+ "description": "Label of the loading profile spinner on openEdx full name form",
1012
+ "message": "Loading..."
1013
+ },
1014
+ "components.OpenEdxFullNameForm.submitButtonLabel": {
1015
+ "description": "Label of the submit button on openEdx full name form",
1016
+ "message": "Submit"
1017
+ },
970
1018
  "components.PaginateCourseSearch.currentlyReadingLastPageN": {
971
1019
  "description": "Accessibility helper in pagination, shown next to the current page number when it is the last page.",
972
1020
  "message": "حاليا قراءة الصفحة الأخيرة {page}"
@@ -1036,29 +1084,125 @@
1036
1084
  "message": "By checking this box, you accept the"
1037
1085
  },
1038
1086
  "components.ProductCertificateFooter.buyProductCertificateLabel": {
1039
- "description": "Label on the enrollement row that propose to buy a product of type certificate",
1087
+ "description": "Label on the enrollment row that propose to buy a product of type certificate",
1040
1088
  "message": "An exam which delivers a certificate can be purchased for this course."
1041
1089
  },
1042
1090
  "components.ProductCertificateFooter.downloadProductCertificateLabel": {
1043
- "description": "Label on the enrollement row that propose to download a certificate",
1091
+ "description": "Label on the enrollment row that propose to download a certificate",
1044
1092
  "message": "A certificate is available for download."
1045
1093
  },
1046
1094
  "components.ProductCertificateFooter.pendingProductCertificateLabel": {
1047
- "description": "Label on the enrollement when a product of type certificate have been bought",
1095
+ "description": "Label on the enrollment when a product of type certificate have been bought",
1048
1096
  "message": "Finish this course to obtain your certificate."
1049
1097
  },
1050
- "components.RegisteredCreditCard.expirationDate": {
1051
- "description": "Credit card expiration date label",
1052
- "message": "Expiration date: {expirationDate}"
1053
- },
1054
- "components.RegisteredCreditCard.inputAriaLabel": {
1055
- "description": "ARIA Label read by screen reader to inform which card is focused",
1056
- "message": "{selected, select, true {Unselect} other {Select}} {title}'s card"
1057
- },
1058
1098
  "components.RootSearchSuggestField.searchFieldPlaceholder": {
1059
1099
  "description": "Placeholder text displayed in the search field when it is empty.",
1060
1100
  "message": "البحث عن دورات"
1061
1101
  },
1102
+ "components.SaleTunnel.AddressSelector.CreateAddressFormModal.submit": {
1103
+ "description": "Submit button label.",
1104
+ "message": "Create"
1105
+ },
1106
+ "components.SaleTunnel.AddressSelector.CreateAddressFormModal.title": {
1107
+ "description": "Add address modal title.",
1108
+ "message": "Add address"
1109
+ },
1110
+ "components.SaleTunnel.AddressSelector.EditAddressFormModal.save": {
1111
+ "description": "Save button label.",
1112
+ "message": "Save"
1113
+ },
1114
+ "components.SaleTunnel.AddressSelector.EditAddressFormModal.title": {
1115
+ "description": "Edit address modal title.",
1116
+ "message": "Edit address"
1117
+ },
1118
+ "components.SaleTunnel.AddressSelector.create": {
1119
+ "description": "Address create button.",
1120
+ "message": "Create"
1121
+ },
1122
+ "components.SaleTunnel.AddressSelector.edit": {
1123
+ "description": "Address edit button.",
1124
+ "message": "Edit"
1125
+ },
1126
+ "components.SaleTunnel.AddressSelector.label": {
1127
+ "description": "Address field label.",
1128
+ "message": "Billing address"
1129
+ },
1130
+ "components.SaleTunnel.Certificate.ProductPath.title": {
1131
+ "description": "Title of certificate product path section",
1132
+ "message": "Your learning path"
1133
+ },
1134
+ "components.SaleTunnel.Credential.ProductPath.title": {
1135
+ "description": "Title of credential product path section",
1136
+ "message": "Your learning path"
1137
+ },
1138
+ "components.SaleTunnel.CreditCardSelector.creditCardEmptyInlineDescription": {
1139
+ "description": "Description for the empty credit card inline",
1140
+ "message": "Use another credit card during payment"
1141
+ },
1142
+ "components.SaleTunnel.CreditCardSelector.description": {
1143
+ "description": "Description for the credit card section",
1144
+ "message": "Choose your payment method or add a new one during the payment."
1145
+ },
1146
+ "components.SaleTunnel.CreditCardSelector.editCreditCardAriaLabel": {
1147
+ "description": "Aria label for the edit credit card button",
1148
+ "message": "Change credit card"
1149
+ },
1150
+ "components.SaleTunnel.CreditCardSelector.endsWith": {
1151
+ "description": "Text to show the credit card code",
1152
+ "message": "Ends with •••• {code}"
1153
+ },
1154
+ "components.SaleTunnel.CreditCardSelector.expiration": {
1155
+ "description": "Text to show the credit card expiration date",
1156
+ "message": "Expires on {month}/{year}"
1157
+ },
1158
+ "components.SaleTunnel.CreditCardSelector.expired": {
1159
+ "description": "Text to show the credit card expired date",
1160
+ "message": "Expired since {month}/{year}"
1161
+ },
1162
+ "components.SaleTunnel.CreditCardSelector.modalDescription": {
1163
+ "description": "Description for the credit card modal",
1164
+ "message": "Choose the default payment method you want to use for this order and the upcoming payments."
1165
+ },
1166
+ "components.SaleTunnel.CreditCardSelector.modalTitle": {
1167
+ "description": "Title for the credit card modal",
1168
+ "message": "Choose credit card"
1169
+ },
1170
+ "components.SaleTunnel.CreditCardSelector.modalValidate": {
1171
+ "description": "Validate button for the credit card modal",
1172
+ "message": "Validate"
1173
+ },
1174
+ "components.SaleTunnel.CreditCardSelector.title": {
1175
+ "description": "Title for the credit card section",
1176
+ "message": "Payment method"
1177
+ },
1178
+ "components.SaleTunnel.Information.description": {
1179
+ "description": "Description of the information section",
1180
+ "message": "Those information will be used for billing"
1181
+ },
1182
+ "components.SaleTunnel.Information.email.info": {
1183
+ "description": "Info for the email",
1184
+ "message": "This email will be used to send you confirmation mails, it is the one you created your account with."
1185
+ },
1186
+ "components.SaleTunnel.Information.email.label": {
1187
+ "description": "Label for the email",
1188
+ "message": "Account email"
1189
+ },
1190
+ "components.SaleTunnel.Information.fullNameLabel": {
1191
+ "description": "Label for the full name input",
1192
+ "message": "Full name"
1193
+ },
1194
+ "components.SaleTunnel.Information.title": {
1195
+ "description": "Title for the information section",
1196
+ "message": "Information"
1197
+ },
1198
+ "components.SaleTunnel.Information.total.info": {
1199
+ "description": "Information about the total amount",
1200
+ "message": "You will then pay on the secured platform of our payment provider."
1201
+ },
1202
+ "components.SaleTunnel.Information.total.label": {
1203
+ "description": "Label for the total amount",
1204
+ "message": "Total"
1205
+ },
1062
1206
  "components.SaleTunnel.callToActionDescription": {
1063
1207
  "description": "Additional description announced by screen readers when focusing the call to action buying button",
1064
1208
  "message": "Purchase {product}"
@@ -1079,26 +1223,6 @@
1079
1223
  "description": "Label displayed below the product's CTA when there is no remaining available seat for the product",
1080
1224
  "message": "There are no more places available for this product."
1081
1225
  },
1082
- "components.SaleTunnel.stepPayment": {
1083
- "description": "Label of the Payment step",
1084
- "message": "Payment"
1085
- },
1086
- "components.SaleTunnel.stepResume": {
1087
- "description": "Label of the Resume step",
1088
- "message": "Resume"
1089
- },
1090
- "components.SaleTunnel.stepValidation": {
1091
- "description": "Label of the Validation step",
1092
- "message": "Validation"
1093
- },
1094
- "components.SaleTunnelStepPayment.registeredCardSectionTitle": {
1095
- "description": "Label for the registered credit cards section",
1096
- "message": "Your registered credit card"
1097
- },
1098
- "components.SaleTunnelStepPayment.resumeTile": {
1099
- "description": "Label for the resume tile",
1100
- "message": "You are about to purchase"
1101
- },
1102
1226
  "components.SaleTunnelStepPayment.termsMessageLink": {
1103
1227
  "description": "Clickable link included in the terms message",
1104
1228
  "message": "General Terms of Sale"
@@ -1107,77 +1231,61 @@
1107
1231
  "description": "Title of clickable link included in the terms message",
1108
1232
  "message": "Open a preview of the General Terms of Sale"
1109
1233
  },
1110
- "components.SaleTunnelStepPayment.userBillingAddressAddLabel": {
1111
- "description": "Label for the billing address add button",
1112
- "message": "Add an address"
1113
- },
1114
- "components.SaleTunnelStepPayment.userBillingAddressCreateLabel": {
1115
- "description": "Label for the billing address create button",
1116
- "message": "Create an address"
1117
- },
1118
- "components.SaleTunnelStepPayment.userBillingAddressFieldset": {
1119
- "description": "Label for the billing address fieldset",
1120
- "message": "Billing address"
1234
+ "components.SaleTunnelStepValidation.availableCourseRuns": {
1235
+ "description": "Course runs available text",
1236
+ "message": "{ count, plural, =0 {No course runs} one {One course run} other {# course runs} } available"
1121
1237
  },
1122
- "components.SaleTunnelStepPayment.userBillingAddressNoEntry": {
1123
- "description": "Message displayed when the user has no address.",
1124
- "message": "You don't have any billing addresses yet."
1238
+ "components.SaleTunnelStepValidation.courseRunDates": {
1239
+ "description": "Course run date text",
1240
+ "message": "From {start} {end, select, undefined {} other {to {end}}}"
1125
1241
  },
1126
- "components.SaleTunnelStepPayment.userBillingAddressSelectLabel": {
1127
- "description": "Label for the billing address select",
1128
- "message": "Select a billing address"
1242
+ "components.SaleTunnelStepValidation.language": {
1243
+ "description": "Label displayed before the list of languages",
1244
+ "message": "{ count, plural, one {Language:} other {Languages:} }"
1129
1245
  },
1130
- "components.SaleTunnelStepPayment.userTile": {
1131
- "description": "Label for the user information tile",
1132
- "message": "Your personal information"
1246
+ "components.SaleTunnelStepValidation.noCourseRunAvailable": {
1247
+ "description": "Text displayed when no course run are opened for the course",
1248
+ "message": "No session available for this course."
1133
1249
  },
1134
- "components.SaleTunnelStepResume.congratulations": {
1250
+ "components.SaleTunnelSuccess.congratulations": {
1135
1251
  "description": "Text displayed to thank user for his order",
1136
1252
  "message": "Congratulations!"
1137
1253
  },
1138
- "components.SaleTunnelStepResume.cta": {
1254
+ "components.SaleTunnelSuccess.cta": {
1139
1255
  "description": "Label to the call to action to close sale tunnel",
1140
1256
  "message": "Start this course now!"
1141
1257
  },
1142
- "components.SaleTunnelStepResume.ctaSignature": {
1258
+ "components.SaleTunnelSuccess.ctaSignature": {
1143
1259
  "description": "Label to the call to action to close sale tunnel if there is a pending signature",
1144
1260
  "message": "Sign the training contract"
1145
1261
  },
1146
- "components.SaleTunnelStepResume.successDetailMessage": {
1262
+ "components.SaleTunnelSuccess.successDetailMessage": {
1147
1263
  "description": "Text to remind that order's invoice will be send by email soon",
1148
1264
  "message": "You will receive your invoice by email in a few moments."
1149
1265
  },
1150
- "components.SaleTunnelStepResume.successDetailSignatureMessage": {
1266
+ "components.SaleTunnelSuccess.successDetailSignatureMessage": {
1151
1267
  "description": "Text to remind that order needs to be signed",
1152
1268
  "message": "In order to enroll to course runs you first need to sign the training contract."
1153
1269
  },
1154
- "components.SaleTunnelStepResume.successMessage": {
1270
+ "components.SaleTunnelSuccess.successMessage": {
1155
1271
  "description": "Message to confirm that order has been created",
1156
1272
  "message": "Your order has been successfully created."
1157
1273
  },
1158
- "components.SaleTunnelStepValidation.availableCourseRuns": {
1159
- "description": "Course runs available text",
1160
- "message": "{ count, plural, =0 {No course runs} one {One course run} other {# course runs} } available"
1161
- },
1162
- "components.SaleTunnelStepValidation.courseRunDates": {
1163
- "description": "Course run date text",
1164
- "message": "From {start} to {end}"
1165
- },
1166
- "components.SaleTunnelStepValidation.includingVAT": {
1167
- "description": "Text displayed next to the price to mention this is the price including VAT.",
1168
- "message": "including VAT"
1274
+ "components.SaleTunnelSuccessNotValidated.apology": {
1275
+ "description": "Text displayed to thank user for his order",
1276
+ "message": "Sorry, you'll have to wait a little longer!"
1169
1277
  },
1170
- "components.SaleTunnelStepValidation.language": {
1171
- "description": "Label displayed before the list of languages",
1172
- "message": "{ count, plural, one {Language:} other {Languages:} }"
1278
+ "components.SaleTunnelSuccessNotValidated.cta": {
1279
+ "description": "Label to the call to action to close sale tunnel",
1280
+ "message": "Close"
1173
1281
  },
1174
- "components.SaleTunnelStepValidation.noCourseRunAvailable": {
1175
- "description": "Text displayed when no course run are opened for the course",
1176
- "message": "No session available for this course."
1282
+ "components.SaleTunnelSuccessNotValidated.description": {
1283
+ "description": "Text to remind that order's invoice will be send by email soon",
1284
+ "message": "Your payment has succeeded but your order validation is taking too long, you can close this dialog and come back later. You will receive your invoice by email in a few moments."
1177
1285
  },
1178
- "components.SaleTunnelStepValidation.proceedToPayment": {
1179
- "description": "CTA to go to payment step",
1180
- "message": "Proceed to payment"
1286
+ "components.SaleTunnelSuccessNotValidated.title": {
1287
+ "description": "Message to confirm that order has been created",
1288
+ "message": "It takes too long to validate your order."
1181
1289
  },
1182
1290
  "components.Search.errorMessage": {
1183
1291
  "description": "Error message for Search view when the request to load courses fails",
@@ -1275,10 +1383,6 @@
1275
1383
  "description": "Label of \"sign contract\" action.",
1276
1384
  "message": "Sign"
1277
1385
  },
1278
- "components.StepBreadcrumb.stepCount": {
1279
- "description": "Info about current step, not visible, only announced by screen readers",
1280
- "message": "Step {current, number} of {total, number} {active, select, true {(active)} other {}}"
1281
- },
1282
1386
  "components.StudentDashboardSidebar.header": {
1283
1387
  "description": "Title of the dashboard sidebar",
1284
1388
  "message": "Welcome {name}"
@@ -1355,10 +1459,6 @@
1355
1459
  "description": "Button displayed on the syllabus when not all course runs are displayed",
1356
1460
  "message": "View more"
1357
1461
  },
1358
- "components.TeacherDashboard.TeacherDashboardRoutes.course.contracts.label": {
1359
- "description": "Label of the course contracts view.",
1360
- "message": "Contracts"
1361
- },
1362
1462
  "components.TeacherDashboard.TeacherDashboardRoutes.course.label": {
1363
1463
  "description": "Label of the course root view.",
1364
1464
  "message": "{courseTitle}"
@@ -1553,11 +1653,11 @@
1553
1653
  },
1554
1654
  "components.useCourseRunPeriodMessage.onGoingEnrolledRunPeriod": {
1555
1655
  "description": "Text to display when a course run is ongoing and the user is enrolled to.",
1556
- "message": "You are enrolled for this session. It's open from {startDate} to {endDate}"
1656
+ "message": "You are enrolled for this session. It's open from {startDate} {endDate, select, undefined {} other {to {endDate}}}"
1557
1657
  },
1558
1658
  "components.useCourseRunPeriodMessage.onGoingRunPeriod": {
1559
1659
  "description": "Text to display when a course run is on going.",
1560
- "message": "This session started on {startDate} and will end on {endDate}"
1660
+ "message": "This session started on {startDate} {endDate, select, undefined {} other {and will end on {endDate}}}"
1561
1661
  },
1562
1662
  "components.useStaticFilters.courses": {
1563
1663
  "description": "localized human_name label for coursesConfig filter name",
@@ -1723,6 +1823,10 @@
1723
1823
  "description": "Error message shown to the user when openEdx profile fetch request fails.",
1724
1824
  "message": "An error occurred while fetching your profile. Please retry later."
1725
1825
  },
1826
+ "hooks.useOpenEdxProfile.errorUpdate": {
1827
+ "description": "Error message shown to the user when openEdx profile fullname post request fails.",
1828
+ "message": "An error occurred while updating your full name. Please retry later."
1829
+ },
1726
1830
  "hooks.useOrders.errorGet": {
1727
1831
  "description": "Error message shown to the user when orders fetch request fails.",
1728
1832
  "message": "An error occurred while fetching orders. Please retry later."
@@ -1831,6 +1935,18 @@
1831
1935
  "description": "Translation for level of education \"secondary or high school\" in openEdx profile",
1832
1936
  "message": "Secondary or high school"
1833
1937
  },
1938
+ "page.PageNotFound.pageNotFoundHomeLink": {
1939
+ "description": "Home link of the page not found page",
1940
+ "message": "Back to the home page"
1941
+ },
1942
+ "page.PageNotFound.pageNotFoundSubTitle": {
1943
+ "description": "Subtitle of the page not found page",
1944
+ "message": "The requested content does not exist."
1945
+ },
1946
+ "page.PageNotFound.pageNotFoundTitle": {
1947
+ "description": "Title of the page not found page",
1948
+ "message": "Page not found"
1949
+ },
1834
1950
  "pages.CourseLearnerDataGrid.columnActions": {
1835
1951
  "description": "Label for actions column",
1836
1952
  "message": "Actions"