richie-education 2.22.0 → 2.24.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 (300) hide show
  1. package/.storybook/__mocks__/utils/context.ts +1 -1
  2. package/cunningham.cjs +65 -0
  3. package/i18n/locales/ar-SA.json +280 -92
  4. package/i18n/locales/es-ES.json +280 -92
  5. package/i18n/locales/fa-IR.json +280 -92
  6. package/i18n/locales/fr-CA.json +302 -114
  7. package/i18n/locales/fr-FR.json +280 -92
  8. package/i18n/locales/ko-KR.json +280 -92
  9. package/i18n/locales/pt-PT.json +288 -100
  10. package/i18n/locales/ru-RU.json +280 -92
  11. package/jest/setup.ts +5 -0
  12. package/jest.config.js +1 -1
  13. package/js/api/configuration.ts +1 -1
  14. package/js/api/joanie.spec.ts +13 -0
  15. package/js/api/joanie.ts +89 -20
  16. package/js/api/lms/dummy.spec.ts +1 -1
  17. package/js/api/lms/index.spec.ts +1 -1
  18. package/js/api/lms/joanie.spec.ts +79 -0
  19. package/js/api/lms/joanie.ts +34 -2
  20. package/js/api/lms/openedx-fonzie.spec.ts +2 -2
  21. package/js/api/lms/openedx-hawthorn.spec.ts +3 -3
  22. package/js/api/mocks/joanie/assets/course_cover_001.jpg +0 -0
  23. package/js/api/mocks/joanie/assets/course_icon_001.png +0 -0
  24. package/js/api/web-analytics/base.ts +11 -1
  25. package/js/api/web-analytics/google_tag.spec.ts +1 -1
  26. package/js/api/web-analytics/google_tag_manager.spec.ts +1 -1
  27. package/js/api/web-analytics/google_universal_analytics.spec.ts +1 -1
  28. package/js/api/web-analytics/google_universal_analytics_and_tag_manager.spec.ts +1 -1
  29. package/js/api/web-analytics/index.ts +5 -1
  30. package/js/api/web-analytics/no_provider.spec.ts +1 -1
  31. package/js/api/web-analytics/unknown_provider.spec.ts +1 -1
  32. package/js/components/AddressesManagement/AddressForm.spec.tsx +3 -3
  33. package/js/components/AddressesManagement/AddressForm.tsx +1 -1
  34. package/js/components/AddressesManagement/index.spec.tsx +7 -7
  35. package/js/components/AddressesManagement/index.tsx +2 -2
  36. package/js/components/AddressesManagement/validationSchema.spec.ts +14 -14
  37. package/js/components/CourseGlimpse/CourseGlimpseFooter.tsx +10 -8
  38. package/js/components/CourseGlimpse/CourseLink.tsx +37 -0
  39. package/js/components/CourseGlimpse/index.spec.tsx +55 -52
  40. package/js/components/CourseGlimpse/index.stories.tsx +4 -4
  41. package/js/components/CourseGlimpse/index.tsx +58 -16
  42. package/js/components/CourseGlimpse/utils.ts +105 -0
  43. package/js/components/CourseGlimpseList/index.spec.tsx +26 -12
  44. package/js/components/CourseGlimpseList/index.stories.tsx +4 -4
  45. package/js/components/CourseGlimpseList/index.tsx +51 -30
  46. package/js/components/CourseGlimpseList/utils.ts +11 -0
  47. package/js/components/DjangoCMSTemplate/index.spec.tsx +46 -0
  48. package/js/components/DjangoCMSTemplate/index.tsx +36 -0
  49. package/js/components/Icon/index.spec.tsx +42 -4
  50. package/js/components/Icon/index.stories.tsx +96 -2
  51. package/js/components/Icon/index.tsx +47 -36
  52. package/js/components/Modal/index.tsx +2 -2
  53. package/js/components/RegisteredAddress/index.spec.tsx +6 -10
  54. package/js/components/SearchInput/index.spec.tsx +1 -1
  55. package/js/components/SearchInput/index.tsx +2 -2
  56. package/js/components/TeacherDashboardCourseList/_styles.scss +40 -0
  57. package/js/components/TeacherDashboardCourseList/index.spec.tsx +162 -0
  58. package/js/components/TeacherDashboardCourseList/index.tsx +95 -0
  59. package/js/contexts/JoanieApiContext/index.spec.tsx +1 -1
  60. package/js/contexts/SessionContext/JoanieSessionProvider.spec.tsx +5 -5
  61. package/js/contexts/SessionContext/index.spec.tsx +10 -11
  62. package/js/contexts/SessionContext/no-authentication.spec.tsx +1 -1
  63. package/js/hooks/useCourseProductRelation/index.ts +41 -0
  64. package/js/hooks/useCourseProductUnion/index.spec.tsx +128 -0
  65. package/js/hooks/useCourseProductUnion/index.ts +55 -0
  66. package/js/hooks/useCourseRuns/index.ts +31 -0
  67. package/js/hooks/useCourses/index.spec.tsx +87 -0
  68. package/js/hooks/useCourses/index.ts +31 -0
  69. package/js/hooks/useCreditCards/index.spec.tsx +3 -3
  70. package/js/hooks/useDashboardAddressForm.tsx +18 -5
  71. package/js/hooks/useDateFormat.tsx +1 -1
  72. package/js/hooks/useDownloadCertificate/index.spec.tsx +3 -3
  73. package/js/hooks/useMatchMedia.ts +10 -2
  74. package/js/hooks/useOrders.ts +2 -2
  75. package/js/hooks/useOrganizations/index.ts +4 -4
  76. package/js/hooks/useResources/index.spec.tsx +18 -17
  77. package/js/hooks/useUnionResource/index.spec.tsx +313 -0
  78. package/js/hooks/useUnionResource/index.ts +155 -0
  79. package/js/hooks/useUnionResource/utils/fetchEntities.ts +97 -0
  80. package/js/hooks/useUnionResource/utils/fetchEntity.ts +84 -0
  81. package/js/hooks/useUnionResource/utils/hasIntegrity.spec.ts +33 -0
  82. package/js/hooks/useUnionResource/utils/hasIntegrity.ts +27 -0
  83. package/js/hooks/useUnionResource/utils/log.ts +8 -0
  84. package/js/hooks/useUnionResource/utils/syncIntegrityCount.ts +140 -0
  85. package/js/pages/DashboardAddressesManagement/DashboardCreateAddress.spec.tsx +8 -8
  86. package/js/pages/DashboardAddressesManagement/DashboardEditAddress.spec.tsx +8 -8
  87. package/js/pages/DashboardAddressesManagement/DashboardEditAddress.stories.tsx +1 -1
  88. package/js/pages/DashboardAddressesManagement/index.spec.tsx +10 -10
  89. package/js/pages/DashboardAddressesManagement/index.tsx +2 -2
  90. package/js/pages/DashboardCertificates/index.spec.tsx +2 -2
  91. package/js/pages/DashboardCourses/index.spec.tsx +53 -192
  92. package/js/pages/DashboardCourses/index.tsx +12 -7
  93. package/js/pages/DashboardCourses/useOrdersEnrollments.tsx +31 -286
  94. package/js/pages/DashboardCreditCardsManagement/CreditCardBrandLogo.stories.tsx +1 -1
  95. package/js/pages/DashboardCreditCardsManagement/DashboardCreditCardBox.tsx +2 -2
  96. package/js/pages/DashboardCreditCardsManagement/DashboardEditCreditCard.spec.tsx +16 -16
  97. package/js/pages/DashboardCreditCardsManagement/DashboardEditCreditCard.stories.tsx +1 -1
  98. package/js/pages/DashboardCreditCardsManagement/index.spec.tsx +28 -28
  99. package/js/pages/DashboardOrderLayout/index.spec.tsx +75 -0
  100. package/js/pages/DashboardOrderLayout/index.tsx +50 -0
  101. package/js/pages/TeacherCourseDashboardLoader/CourseRunList/CourseRunListCell/index.spec.tsx +17 -0
  102. package/js/pages/TeacherCourseDashboardLoader/CourseRunList/CourseRunListCell/index.tsx +56 -0
  103. package/js/pages/TeacherCourseDashboardLoader/CourseRunList/_styles.scss +43 -0
  104. package/js/pages/TeacherCourseDashboardLoader/CourseRunList/index.spec.tsx +26 -0
  105. package/js/pages/TeacherCourseDashboardLoader/CourseRunList/index.tsx +28 -0
  106. package/js/pages/TeacherCourseDashboardLoader/CourseRunList/utils.spec.tsx +62 -0
  107. package/js/pages/TeacherCourseDashboardLoader/CourseRunList/utils.tsx +80 -0
  108. package/js/pages/TeacherCourseDashboardLoader/index.tsx +99 -0
  109. package/js/pages/TeacherCoursesDashboardLoader/index.spec.tsx +103 -0
  110. package/js/pages/TeacherCoursesDashboardLoader/index.tsx +29 -6
  111. package/js/pages/TeacherOrganizationCourseDashboardLoader/index.tsx +28 -4
  112. package/js/pages/TeacherTrainingDashboard/TeacherTrainingDashboardLoader.tsx +54 -0
  113. package/js/pages/TeacherTrainingDashboard/_styles.scss +6 -0
  114. package/js/pages/TeacherTrainingDashboard/index.spec.tsx +106 -0
  115. package/js/pages/TeacherTrainingDashboard/index.tsx +77 -0
  116. package/js/settings.ts +9 -0
  117. package/js/translations/ar-SA.json +1 -1
  118. package/js/translations/es-ES.json +1 -1
  119. package/js/translations/fa-IR.json +1 -1
  120. package/js/translations/fr-CA.json +1 -1
  121. package/js/translations/fr-FR.json +1 -1
  122. package/js/translations/ko-KR.json +1 -1
  123. package/js/translations/pt-PT.json +1 -1
  124. package/js/translations/ru-RU.json +1 -1
  125. package/js/types/Course.ts +7 -7
  126. package/js/types/Joanie.ts +116 -35
  127. package/js/types/commonDataProps.ts +18 -10
  128. package/js/types/globals.d.ts +4 -0
  129. package/js/types/index.ts +19 -10
  130. package/js/types/utils.ts +6 -0
  131. package/js/types/web-analytics/index.ts +9 -0
  132. package/js/utils/CourseRuns/index.spec.tsx +19 -0
  133. package/js/utils/CourseRuns/index.ts +79 -0
  134. package/js/utils/CoursesHelper/index.spec.ts +20 -20
  135. package/js/utils/CreditCardHelper/index.spec.tsx +25 -19
  136. package/js/utils/IntlHelper/index.spec.tsx +9 -1
  137. package/js/utils/IntlHelper/index.ts +11 -1
  138. package/js/utils/JoinAnd/index.spec.tsx +25 -0
  139. package/js/utils/JoinAnd/index.ts +30 -0
  140. package/js/utils/ProductHelper/index.spec.ts +183 -0
  141. package/js/utils/ProductHelper/index.ts +44 -0
  142. package/js/utils/errors/HttpError.ts +11 -1
  143. package/js/utils/errors/handle.spec.ts +1 -1
  144. package/js/utils/mptt/index.ts +2 -2
  145. package/js/utils/react-query/useSessionMutation/index.spec.tsx +1 -1
  146. package/js/utils/react-query/useSessionQuery/index.spec.tsx +1 -1
  147. package/js/utils/test/createTestQueryClient.ts +1 -1
  148. package/js/utils/test/expectBreadcrumbsToEqualParts.ts +6 -9
  149. package/js/utils/test/factories/factories.spec.ts +157 -0
  150. package/js/utils/test/factories/factories.ts +92 -0
  151. package/js/utils/test/factories/helper.spec.ts +69 -0
  152. package/js/utils/test/factories/helper.ts +64 -0
  153. package/js/utils/test/factories/joanie.ts +293 -178
  154. package/js/utils/test/factories/reactQuery.ts +1 -1
  155. package/js/utils/test/factories/richie.ts +202 -77
  156. package/js/utils/test/mockPaginatedResponse.ts +14 -0
  157. package/js/utils/test/mockProductWithOrder.ts +17 -0
  158. package/js/widgets/CourseProductItem/_styles.scss +35 -5
  159. package/js/widgets/CourseProductItem/components/CourseProductCertificateItem/_styles.scss +4 -0
  160. package/js/widgets/CourseProductItem/components/CourseProductCertificateItem/index.spec.tsx +8 -13
  161. package/js/widgets/CourseProductItem/components/CourseProductCourseRuns/CourseRunList.tsx +21 -15
  162. package/js/widgets/CourseProductItem/components/CourseProductCourseRuns/EnrollableCourseRunList.tsx +21 -13
  163. package/js/widgets/CourseProductItem/components/CourseProductCourseRuns/_styles.scss +1 -1
  164. package/js/widgets/CourseProductItem/components/CourseProductCourseRuns/index.spec.tsx +70 -52
  165. package/js/widgets/CourseProductItem/components/CourseRunItem/index.spec.tsx +4 -5
  166. package/js/widgets/CourseProductItem/components/CourseRunItem/index.tsx +14 -0
  167. package/js/widgets/CourseProductItem/components/EnrollmentDate/index.tsx +51 -0
  168. package/js/widgets/CourseProductItem/components/PaymentButton/index.spec.tsx +23 -33
  169. package/js/widgets/CourseProductItem/components/PaymentButton/index.tsx +20 -2
  170. package/js/widgets/CourseProductItem/components/PaymentInterfaces/index.spec.tsx +4 -13
  171. package/js/widgets/CourseProductItem/components/PurchaseButton/index.spec.tsx +132 -28
  172. package/js/widgets/CourseProductItem/components/PurchaseButton/index.tsx +19 -3
  173. package/js/widgets/CourseProductItem/components/RegisteredCreditCard/index.spec.tsx +3 -9
  174. package/js/widgets/CourseProductItem/components/SaleTunnel/index.spec.tsx +18 -16
  175. package/js/widgets/CourseProductItem/components/SaleTunnel/index.tsx +24 -6
  176. package/js/widgets/CourseProductItem/components/SaleTunnelStepPayment/index.spec.tsx +11 -11
  177. package/js/widgets/CourseProductItem/components/SaleTunnelStepPayment/index.tsx +3 -3
  178. package/js/widgets/CourseProductItem/components/SaleTunnelStepValidation/CourseRunsList.tsx +26 -13
  179. package/js/widgets/CourseProductItem/components/SaleTunnelStepValidation/TargetCourseDetail.tsx +32 -0
  180. package/js/widgets/CourseProductItem/components/SaleTunnelStepValidation/_styles.scss +39 -8
  181. package/js/widgets/CourseProductItem/components/SaleTunnelStepValidation/index.spec.tsx +16 -7
  182. package/js/widgets/CourseProductItem/components/SaleTunnelStepValidation/index.tsx +5 -8
  183. package/js/widgets/CourseProductItem/components/StepBreadcrumb/index.spec.tsx +3 -2
  184. package/js/widgets/CourseProductItem/contexts/CourseProductContext/index.spec.tsx +1 -0
  185. package/js/widgets/CourseProductItem/contexts/CourseProductContext/index.tsx +7 -3
  186. package/js/widgets/CourseProductItem/hooks/useStepManager/index.ts +2 -2
  187. package/js/widgets/CourseProductItem/index.spec.tsx +178 -30
  188. package/js/widgets/CourseProductItem/index.tsx +124 -46
  189. package/js/widgets/Dashboard/_styles.scss +0 -146
  190. package/js/widgets/Dashboard/components/DashboardAvatar/_styles.scss +28 -0
  191. package/js/widgets/Dashboard/components/DashboardAvatar/index.spec.tsx +18 -16
  192. package/js/widgets/Dashboard/components/DashboardAvatar/index.stories.tsx +10 -2
  193. package/js/widgets/Dashboard/components/DashboardAvatar/index.tsx +28 -4
  194. package/js/widgets/Dashboard/components/DashboardBreadcrumbs/_styles.scss +27 -0
  195. package/js/widgets/Dashboard/components/DashboardBreadcrumbs/index.tsx +18 -14
  196. package/js/widgets/Dashboard/components/DashboardCard/_styles.scss +10 -1
  197. package/js/widgets/Dashboard/components/DashboardCard/index.tsx +35 -18
  198. package/js/widgets/Dashboard/components/DashboardItem/Certificate/index.spec.tsx +5 -5
  199. package/js/widgets/Dashboard/components/DashboardItem/Certificate/index.stories.tsx +1 -1
  200. package/js/widgets/Dashboard/components/DashboardItem/Certificate/index.tsx +4 -4
  201. package/js/widgets/Dashboard/components/DashboardItem/DashboardItemCourseEnrolling.spec.tsx +1 -1
  202. package/js/widgets/Dashboard/components/DashboardItem/DashboardItemCourseEnrolling.stories.tsx +7 -7
  203. package/js/widgets/Dashboard/components/DashboardItem/DashboardItemCourseEnrolling.tsx +5 -5
  204. package/js/widgets/Dashboard/components/DashboardItem/Enrollment/DashboardItemEnrollment.spec.tsx +21 -27
  205. package/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrder.spec.tsx +110 -158
  206. package/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrder.tsx +8 -8
  207. package/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderReadonly.stories.tsx +3 -3
  208. package/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderWritable.stories.tsx +4 -4
  209. package/js/widgets/Dashboard/components/DashboardItem/stories.mock.ts +5 -3
  210. package/js/widgets/Dashboard/components/DashboardLayout/_styles.scss +68 -0
  211. package/js/widgets/Dashboard/components/DashboardLayout/index.tsx +21 -12
  212. package/js/widgets/Dashboard/components/DashboardLayoutRoute/index.spec.tsx +5 -5
  213. package/js/widgets/Dashboard/components/DashboardLayoutRoute/index.tsx +14 -6
  214. package/js/widgets/Dashboard/components/DashboardOrderLoader/index.tsx +4 -7
  215. package/js/widgets/Dashboard/components/DashboardSidebar/_styles.scss +106 -0
  216. package/js/widgets/Dashboard/components/DashboardSidebar/index.stories.tsx +1 -1
  217. package/js/widgets/Dashboard/components/DashboardSidebar/index.tsx +35 -12
  218. package/js/widgets/Dashboard/components/LearnerDashboardSidebar/index.stories.tsx +1 -1
  219. package/js/widgets/Dashboard/components/LearnerDashboardSidebar/index.tsx +6 -2
  220. package/js/widgets/Dashboard/components/NavigateWithParams/index.spec.tsx +1 -1
  221. package/js/widgets/Dashboard/components/ProtectedOutlet/AuthenticatedOutlet.spec.tsx +1 -1
  222. package/js/widgets/Dashboard/components/TeacherCourseDashboardSidebar/_styles.scss +9 -0
  223. package/js/widgets/Dashboard/components/TeacherCourseDashboardSidebar/index.spec.tsx +105 -0
  224. package/js/widgets/Dashboard/components/TeacherCourseDashboardSidebar/index.tsx +115 -0
  225. package/js/widgets/Dashboard/components/TeacherOrganizationDashboardSidebar/index.stories.tsx +1 -1
  226. package/js/widgets/Dashboard/components/TeacherOrganizationDashboardSidebar/index.tsx +39 -10
  227. package/js/widgets/Dashboard/components/TeacherProfileDashboardSidebar/components/OrganizationLinks/_styles.scss +2 -2
  228. package/js/widgets/Dashboard/components/TeacherProfileDashboardSidebar/components/OrganizationLinks/index.tsx +3 -3
  229. package/js/widgets/Dashboard/components/TeacherProfileDashboardSidebar/index.spec.tsx +5 -19
  230. package/js/widgets/Dashboard/components/TeacherProfileDashboardSidebar/index.stories.tsx +1 -1
  231. package/js/widgets/Dashboard/components/TeacherProfileDashboardSidebar/index.tsx +1 -5
  232. package/js/widgets/Dashboard/hooks/useEnroll/index.spec.tsx +3 -3
  233. package/js/widgets/Dashboard/index.spec.tsx +17 -13
  234. package/js/widgets/Dashboard/utils/dashboardRoutes.tsx +1 -1
  235. package/js/widgets/Dashboard/utils/learnerRouteMessages.tsx +11 -0
  236. package/js/widgets/Dashboard/utils/learnerRoutes.tsx +15 -3
  237. package/js/widgets/Dashboard/utils/teacherRouteMessages.tsx +52 -95
  238. package/js/widgets/Dashboard/utils/teacherRoutes.tsx +70 -88
  239. package/js/widgets/LtiConsumer/index.spec.tsx +5 -1
  240. package/js/widgets/RootSearchSuggestField/index.spec.tsx +4 -4
  241. package/js/widgets/RootSearchSuggestField/index.tsx +1 -1
  242. package/js/widgets/Search/components/FiltersPaneCloseButton.tsx +2 -2
  243. package/js/widgets/Search/hooks/useFilterValue/index.spec.tsx +3 -2
  244. package/js/widgets/Search/index.spec.tsx +1 -1
  245. package/js/widgets/Search/index.tsx +2 -2
  246. package/js/widgets/SearchSuggestField/index.spec.tsx +2 -2
  247. package/js/widgets/SearchSuggestField/index.tsx +1 -1
  248. package/js/widgets/{CourseRunEnrollment/components → SyllabusCourseRunsList/components/CourseRunEnrollment}/CourseRunUnenrollmentButton/index.spec.tsx +1 -1
  249. package/js/widgets/{CourseRunEnrollment → SyllabusCourseRunsList/components/CourseRunEnrollment}/index.joanie.spec.tsx +17 -26
  250. package/js/widgets/{CourseRunEnrollment → SyllabusCourseRunsList/components/CourseRunEnrollment}/index.openedx.spec.tsx +21 -30
  251. package/js/widgets/{CourseRunEnrollment → SyllabusCourseRunsList/components/CourseRunEnrollment}/index.tsx +6 -13
  252. package/js/widgets/SyllabusCourseRunsList/components/CourseRunItem/index.spec.tsx +41 -0
  253. package/js/widgets/SyllabusCourseRunsList/components/CourseRunItem/index.tsx +47 -0
  254. package/js/widgets/SyllabusCourseRunsList/components/CourseRunItemWithEnrollment/index.spec.tsx +125 -0
  255. package/js/widgets/SyllabusCourseRunsList/components/CourseRunItemWithEnrollment/index.tsx +51 -0
  256. package/js/widgets/SyllabusCourseRunsList/components/CourseWishButton/hooks/useCourseWish/index.spec.tsx +134 -0
  257. package/js/widgets/{CourseAddToWishlist/hooks/useUserWishlistCourses → SyllabusCourseRunsList/components/CourseWishButton/hooks/useCourseWish}/index.ts +6 -27
  258. package/js/widgets/{CourseAddToWishlist → SyllabusCourseRunsList/components/CourseWishButton}/index.login.spec.tsx +48 -33
  259. package/js/widgets/{CourseAddToWishlist → SyllabusCourseRunsList/components/CourseWishButton}/index.logout.spec.tsx +12 -9
  260. package/js/widgets/{CourseAddToWishlist → SyllabusCourseRunsList/components/CourseWishButton}/index.tsx +19 -20
  261. package/js/widgets/SyllabusCourseRunsList/components/SyllabusAsideList/index.tsx +178 -0
  262. package/js/widgets/SyllabusCourseRunsList/components/SyllabusCourseRun/index.tsx +110 -0
  263. package/js/widgets/SyllabusCourseRunsList/components/SyllabusSimpleCourseRunsList/index.spec.tsx +41 -0
  264. package/js/widgets/SyllabusCourseRunsList/components/SyllabusSimpleCourseRunsList/index.tsx +76 -0
  265. package/js/widgets/{CourseRunEnrollment → SyllabusCourseRunsList}/hooks/useCourseEnrollment/index.spec.tsx +12 -13
  266. package/js/widgets/SyllabusCourseRunsList/index.spec.tsx +702 -0
  267. package/js/widgets/SyllabusCourseRunsList/index.tsx +117 -0
  268. package/js/widgets/UserLogin/components/UserMenu/MobileUserMenu.tsx +2 -2
  269. package/js/widgets/UserLogin/index.spec.tsx +3 -3
  270. package/js/widgets/UserLogin/index.tsx +2 -2
  271. package/js/widgets/index.spec.tsx +1 -1
  272. package/js/widgets/index.tsx +3 -6
  273. package/mocks/handlers.ts +1 -3
  274. package/package.json +69 -66
  275. package/scss/_main.scss +6 -0
  276. package/scss/colors/_palette.scss +2 -26
  277. package/scss/colors/_theme.scss +5 -0
  278. package/scss/components/_index.scss +12 -4
  279. package/scss/components/_styleguide.scss +28 -10
  280. package/scss/components/_subheader.scss +0 -8
  281. package/scss/components/templates/courses/cms/_course_detail.scss +8 -0
  282. package/scss/generic/_background.scss +10 -2
  283. package/scss/generic/_type.scss +11 -3
  284. package/scss/objects/_characteristics.scss +8 -1
  285. package/scss/objects/_course_glimpses.scss +10 -2
  286. package/scss/objects/_dashboard.scss +55 -0
  287. package/scss/objects/_index.scss +1 -0
  288. package/scss/settings/_fonts.scss +12 -6
  289. package/scss/vendors/css/cunningham-tokens.css +119 -0
  290. package/scss/vendors/cunningham-tokens.scss +133 -0
  291. package/tsconfig.json +1 -0
  292. package/js/api/mocks/joanie/organizations.ts +0 -47
  293. package/js/pages/TeacherProfileSettingsDashboardLoader/index.tsx +0 -28
  294. package/js/types/libs/helpscout__helix/index.d.ts +0 -1
  295. package/js/widgets/CourseAddToWishlist/hooks/useUserWishlistCourses/index.spec.tsx +0 -154
  296. /package/js/widgets/{CourseRunEnrollment/components → SyllabusCourseRunsList/components/CourseRunEnrollment}/CourseRunUnenrollmentButton/_styles.scss +0 -0
  297. /package/js/widgets/{CourseRunEnrollment/components → SyllabusCourseRunsList/components/CourseRunEnrollment}/CourseRunUnenrollmentButton/index.tsx +0 -0
  298. /package/js/widgets/{CourseRunEnrollment → SyllabusCourseRunsList/components/CourseRunEnrollment}/_styles.scss +0 -0
  299. /package/js/widgets/{CourseAddToWishlist → SyllabusCourseRunsList/components/CourseWishButton}/_styles.scss +0 -0
  300. /package/js/widgets/{CourseRunEnrollment → SyllabusCourseRunsList}/hooks/useCourseEnrollment/index.ts +0 -0
@@ -11,5 +11,5 @@ let context = {
11
11
  };
12
12
 
13
13
  (window as any).__richie_frontend_context__ = {
14
- context: RichieContextFactory(context).generate(),
14
+ context: RichieContextFactory(context).one(),
15
15
  };
package/cunningham.cjs ADDED
@@ -0,0 +1,65 @@
1
+ /* Custom Cunningham Tokens for Richie
2
+
3
+ In a child project, you can override those tokens by creating a token file like this one,
4
+ merge your custom tokens with default Richie ones then by using cunningham cli to generate
5
+ sass and ts tokens files (take a look to the `build-theme` command within package.json
6
+ see it in action).
7
+
8
+ E.g:
9
+ const tokens = require('richie-education/cunningham.cjs')
10
+ module.exports = {
11
+ theme: {
12
+ ...tokens.theme
13
+ colors: {
14
+ ...tokens.colors,
15
+ 'your-black': '#1E1E1E',
16
+ },
17
+ },
18
+ */
19
+
20
+ module.exports = {
21
+ theme: {
22
+ font: {
23
+ families: { base: 'Hind', accent: 'Montserrat' },
24
+ },
25
+ colors: {
26
+ 'primary-100': '#ffcad1',
27
+ 'primary-200': '#f19597',
28
+ 'primary-300': '#e86a6f',
29
+ 'primary-400': '#f2444b',
30
+ 'primary-500': '#f72c30',
31
+ 'primary-600': '#e81f2f',
32
+ 'primary-700': '#d60f29',
33
+ 'primary-800': '#c90022',
34
+ 'primary-900': '#bb0014',
35
+ 'secondary-100': '#eff8ff',
36
+ 'secondary-200': '#eaf3fd',
37
+ 'secondary-300': '#e2ebf5',
38
+ 'secondary-400': '#c0c9d3',
39
+ 'secondary-500': '#a3abb4',
40
+ 'secondary-600': '#79818a',
41
+ 'secondary-700': '#656c75',
42
+ 'secondary-800': '#454d55',
43
+ 'secondary-900': '#242b32',
44
+ black: '#090909',
45
+ 'dark-grey': '#232323',
46
+ charcoal: '#29303b',
47
+ 'slate-grey': '#686868',
48
+ 'battleship-grey': '#686f7a',
49
+ 'light-grey': '#d2d2d2',
50
+ silver: '#d5dbe0',
51
+ azure2: '#eceff1',
52
+ smoke: '#fdfdfd',
53
+ white: '#ffffff',
54
+ denim: '#0067b7',
55
+ firebrick6: '#f72c30',
56
+ 'purplish-grey': '#726c74',
57
+ grey32: '#525151',
58
+ grey59: '#969696',
59
+ grey87: '#dfdfdf',
60
+ indianred3: '#df484b',
61
+ midnightblue: '#141b2c',
62
+ mantis: '#76ce68',
63
+ },
64
+ },
65
+ };
@@ -183,6 +183,14 @@
183
183
  "description": "Accessible label displayed while certificate is being generated.",
184
184
  "message": "Certificate is being generated..."
185
185
  },
186
+ "components.CourseProductItem.availableIn": {
187
+ "description": "Course run languages",
188
+ "message": "Available in {languages}"
189
+ },
190
+ "components.CourseProductItem.fromTo": {
191
+ "description": "Course run date range",
192
+ "message": "From {from} to {to}"
193
+ },
186
194
  "components.CourseProductItem.loadingInitial": {
187
195
  "description": "Accessible text for the initial loading spinner displayed when product is fetching",
188
196
  "message": "Loading product information..."
@@ -203,14 +211,6 @@
203
211
  "description": "Start label displayed in the header of course run dates section",
204
212
  "message": "Start"
205
213
  },
206
- "components.CourseProductsLists.enrollOn": {
207
- "description": "Text label for the enrollment dates",
208
- "message": "Enrollment from {start} to {end}"
209
- },
210
- "components.CourseProductsLists.noCourseRunAvailable": {
211
- "description": "Text displayed when no course run are opened for the course",
212
- "message": "No session available for this course."
213
- },
214
214
  "components.CourseRunEnrollment.enroll": {
215
215
  "description": "CTA for users who can enroll in the course run or could enroll if they logged in.",
216
216
  "message": "التسجيل الآن"
@@ -251,9 +251,33 @@
251
251
  "description": "Help text below the \"Unenroll now\" CTA when an enrollment attempt has already failed.",
252
252
  "message": "Your unenrollment request failed."
253
253
  },
254
- "components.CourseRunList.enrollFromTo": {
255
- "description": "Text label for the enrollment dates",
256
- "message": "Enrollment from {start} to {end}"
254
+ "components.CourseRunItem.courseRunTitleWithDates": {
255
+ "description": "Course run details displayed on the syllabus",
256
+ "message": "{title}, from {start} to {end}"
257
+ },
258
+ "components.CourseRunItem.courseRunWithDates": {
259
+ "description": "Course run details displayed on the syllabus when it has no title",
260
+ "message": "From {start} to {end}"
261
+ },
262
+ "components.CourseRunItemWithEnrollment.enrolled": {
263
+ "description": "Help text for users are enrolled in the course run.",
264
+ "message": "Enrolled"
265
+ },
266
+ "components.CourseRunItemWithEnrollment.enrolledAriaLabel": {
267
+ "description": "Help text for users are enrolled in the course run.",
268
+ "message": "You are enrolled in this course run"
269
+ },
270
+ "components.CourseRunItemWithEnrollment.goToCourse": {
271
+ "description": "Link title for users to go to the course run in which they are enrolled.",
272
+ "message": "Go to course"
273
+ },
274
+ "components.CourseRunList.dataCourseRunLink": {
275
+ "description": "Message displayed in course run datagrid for course run link",
276
+ "message": "go to course area"
277
+ },
278
+ "components.CourseRunList.dataCourseRunPeriod": {
279
+ "description": "Message displayed in course run datagrid for course run period",
280
+ "message": "from {from} to {to}"
257
281
  },
258
282
  "components.CourseRunList.noCourseRunAvailable": {
259
283
  "description": "Text displayed when no course run are opened for the course",
@@ -295,6 +319,14 @@
295
319
  "description": "The path to display an order detail view.",
296
320
  "message": "/courses/orders/{orderId}"
297
321
  },
322
+ "components.Dashboard.DashboardRoutes.order.runs.label": {
323
+ "description": "Label of the order runs view used in navigation components.",
324
+ "message": "General information"
325
+ },
326
+ "components.Dashboard.DashboardRoutes.order.runs.path": {
327
+ "description": "The path to display an order runs view.",
328
+ "message": "/courses/orders/{orderId}/runs"
329
+ },
298
330
  "components.Dashboard.DashboardRoutes.preferences.addresses.creation.label": {
299
331
  "description": "Label of the addresses creation view.",
300
332
  "message": "Create address"
@@ -515,10 +547,6 @@
515
547
  "description": "Text label for the enroll button",
516
548
  "message": "Enroll"
517
549
  },
518
- "components.EnrollableCourseRunList.enrollOn": {
519
- "description": "Text label for the enrollment dates",
520
- "message": "Enrollment from {enrollment_start} to {enrollment_end}"
521
- },
522
550
  "components.EnrollableCourseRunList.enrolling": {
523
551
  "description": "Label displayed when a request to enroll to a course run is loading",
524
552
  "message": "Enrolling..."
@@ -555,6 +583,14 @@
555
583
  "description": "Accessible label displayed when user is being unenrolled.",
556
584
  "message": "Unenrolling..."
557
585
  },
586
+ "components.EnrollmentDate.enrollFrom": {
587
+ "description": "Text label for the enrollment dates when enrollment is not yet opened",
588
+ "message": "Enrollment from {date}"
589
+ },
590
+ "components.EnrollmentDate.enrollUntil": {
591
+ "description": "Text label for the enrollment dates when enrollment is opened",
592
+ "message": "Enrollment until {date}"
593
+ },
558
594
  "components.LanguageSelector.currentlySelected": {
559
595
  "description": "Accessible hint to mark the currently selected language in the language selector",
560
596
  "message": "(المحدد حاليا)"
@@ -619,6 +655,10 @@
619
655
  "description": "Error message shown when payment creation request failed.",
620
656
  "message": "An error occurred during payment. Please retry later."
621
657
  },
658
+ "components.PaymentButton.errorFullProduct": {
659
+ "description": "Error message shown when payment creation request failed because there is no remaining available seat for the product.",
660
+ "message": "There are no more places available for this product."
661
+ },
622
662
  "components.PaymentButton.pay": {
623
663
  "description": "CTA label to proceed to the payment of the product",
624
664
  "message": "Pay {price}"
@@ -652,9 +692,13 @@
652
692
  "message": "Login to purchase {product}"
653
693
  },
654
694
  "components.SaleTunnel.noCourseRunToPurchase": {
655
- "description": "Label displayed inside the product's when there is no courseRun",
695
+ "description": "Label displayed below the product's CTA when there is no courseRun",
656
696
  "message": "At least one course has no course runs, this product is not currently available for sale"
657
697
  },
698
+ "components.SaleTunnel.noRemainingOrder": {
699
+ "description": "Label displayed below the product's CTA when there is no remaining available seat for the product",
700
+ "message": "There are no more places available for this product."
701
+ },
658
702
  "components.SaleTunnel.stepPayment": {
659
703
  "description": "Label of the Payment step",
660
704
  "message": "Payment"
@@ -727,6 +771,14 @@
727
771
  "description": "Text displayed next to the price to mention this is the price including VAT.",
728
772
  "message": "including VAT"
729
773
  },
774
+ "components.SaleTunnelStepValidation.language": {
775
+ "description": "Label displayed before the list of languages",
776
+ "message": "{ count, plural, one {Language:} other {Languages:} }"
777
+ },
778
+ "components.SaleTunnelStepValidation.noCourseRunAvailable": {
779
+ "description": "Text displayed when no course run are opened for the course",
780
+ "message": "No session available for this course."
781
+ },
730
782
  "components.SaleTunnelStepValidation.proceedToPayment": {
731
783
  "description": "CTA to go to payment step",
732
784
  "message": "Proceed to payment"
@@ -827,37 +879,157 @@
827
879
  "description": "Sub title of the dashboard sidebar",
828
880
  "message": "You are on your dashboard"
829
881
  },
830
- "components.TeacherDashboard.TeacherDashboardRoutes.course.classrooms.label": {
831
- "description": "Label of the course classrooms view.",
832
- "message": "Classrooms"
882
+ "components.SyllabusAsideList.archived": {
883
+ "description": "Message displayed on syllabus when there are archived course runs",
884
+ "message": "Archived"
885
+ },
886
+ "components.SyllabusAsideList.courseRunsTitle": {
887
+ "description": "Message displayed on the top of course runs list on syllabus when there is 0 or multiple course runs opened",
888
+ "message": "Course runs"
889
+ },
890
+ "components.SyllabusAsideList.noCourseRuns": {
891
+ "description": "Message displayed on syllabus when there are no course runs to show",
892
+ "message": "No course runs"
893
+ },
894
+ "components.SyllabusAsideList.noOtherCourseRuns": {
895
+ "description": "Message displayed on syllabus when there are no other course runs to show than the only one opened",
896
+ "message": "No other course runs"
897
+ },
898
+ "components.SyllabusAsideList.ongoing": {
899
+ "description": "Message displayed on syllabus when there are ongoing course runs",
900
+ "message": "Ongoing"
901
+ },
902
+ "components.SyllabusAsideList.otherCourseRuns": {
903
+ "description": "Message displayed on the top of course runs list on syllabus when there is only one course run opened",
904
+ "message": "Other course runs"
905
+ },
906
+ "components.SyllabusAsideList.toBeScheduled": {
907
+ "description": "Message displayed on syllabus when there are course runs to be scheduled",
908
+ "message": "To be scheduled"
909
+ },
910
+ "components.SyllabusAsideList.upcoming": {
911
+ "description": "Message displayed on syllabus when there are upcoming course runs",
912
+ "message": "Upcoming"
913
+ },
914
+ "components.SyllabusCourseRun.course": {
915
+ "description": "Title of the course dates section of an opened course run block",
916
+ "message": "Course"
917
+ },
918
+ "components.SyllabusCourseRun.coursePeriod": {
919
+ "description": "Course date of an opened course run block",
920
+ "message": "From {startDate} to {endDate}"
921
+ },
922
+ "components.SyllabusCourseRun.enrollment": {
923
+ "description": "Title of the enrollment dates section of an opened course run block",
924
+ "message": "Enrollment"
925
+ },
926
+ "components.SyllabusCourseRun.enrollmentPeriod": {
927
+ "description": "Enrollment date of an opened course run block",
928
+ "message": "From {startDate} to {endDate}"
929
+ },
930
+ "components.SyllabusCourseRun.languages": {
931
+ "description": "Title of the languages section of an opened course run block",
932
+ "message": "Languages"
933
+ },
934
+ "components.SyllabusCourseRunsList.multipleOpenedCourseRuns": {
935
+ "description": "Message displayed when there are multiple opened course runs on a syllabus",
936
+ "message": "{count} course runs are currently open for this course"
937
+ },
938
+ "components.SyllabusCourseRunsList.multipleOpenedCourseRunsButton": {
939
+ "description": "Message displayed on the button when there are multiple opened course runs on a syllabus",
940
+ "message": "Choose now"
941
+ },
942
+ "components.SyllabusCourseRunsList.noOpenedCourseRuns": {
943
+ "description": "Message displayed when there are no opened course runs on a syllabus",
944
+ "message": "No opened course runs"
945
+ },
946
+ "components.SyllabusSimpleCourseRunsList.viewMore": {
947
+ "description": "Button displayed on the syllabus when not all course runs are displayed",
948
+ "message": "View more"
949
+ },
950
+ "components.TeacherCourseDashboardLoader.errorNoCourse": {
951
+ "description": "Message displayed when requested course is not found",
952
+ "message": "This course doesn't exist"
953
+ },
954
+ "components.TeacherCourseDashboardLoader.loading": {
955
+ "description": "Message displayed while loading a course",
956
+ "message": "Loading course..."
833
957
  },
834
- "components.TeacherDashboard.TeacherDashboardRoutes.course.classrooms.path": {
835
- "description": "The path to display the course classrooms view.",
836
- "message": "/teacher/course/{courseCode}/classrooms"
958
+ "components.TeacherCourseDashboardLoader.pageTitle": {
959
+ "description": "Use for the page title of the course area",
960
+ "message": "Course area"
961
+ },
962
+ "components.TeacherCourseDashboardSidebar.header": {
963
+ "description": "Title of the course dashboard sidebar",
964
+ "message": "{courseTitle}"
965
+ },
966
+ "components.TeacherCourseDashboardSidebar.loading": {
967
+ "description": "Message displayed while loading a course",
968
+ "message": "Loading course..."
969
+ },
970
+ "components.TeacherCourseDashboardSidebar.subHeader": {
971
+ "description": "Sub title of the course dashboard sidebar",
972
+ "message": "You are on the course dashboard"
973
+ },
974
+ "components.TeacherCourseDashboardSidebar.syllabusLinkLabel": {
975
+ "description": "Syllabus link label",
976
+ "message": "Go to syllabus"
977
+ },
978
+ "components.TeacherCoursesDashboardLoader.title.archived": {
979
+ "description": "Archived courses title",
980
+ "message": "Archived"
981
+ },
982
+ "components.TeacherCoursesDashboardLoader.title.filteredCourses": {
983
+ "description": "Filtered courses title",
984
+ "message": "Your courses"
985
+ },
986
+ "components.TeacherCoursesDashboardLoader.title.incoming": {
987
+ "description": "Incoming courses title",
988
+ "message": "Incoming"
989
+ },
990
+ "components.TeacherCoursesDashboardLoader.title.ongoing": {
991
+ "description": "Ongoing courses title",
992
+ "message": "Ongoing"
993
+ },
994
+ "components.TeacherDashboard.TeacherDashboardRoutes.course.generalInformation.path": {
995
+ "description": "The path to display the course general information view.",
996
+ "message": "/teacher/courses/{courseId}/information"
837
997
  },
838
998
  "components.TeacherDashboard.TeacherDashboardRoutes.course.label": {
839
- "description": "Label of the course view.",
840
- "message": "General informations"
999
+ "description": "Label of the course root view.",
1000
+ "message": "{courseTitle}"
841
1001
  },
842
1002
  "components.TeacherDashboard.TeacherDashboardRoutes.course.path": {
843
1003
  "description": "The path to display the course view.",
844
- "message": "/teacher/course/{courseCode}"
1004
+ "message": "/teacher/courses/{courseId}"
845
1005
  },
846
- "components.TeacherDashboard.TeacherDashboardRoutes.course.records.label": {
847
- "description": "Label of the course's records view.",
848
- "message": "Records"
1006
+ "components.TeacherDashboard.TeacherDashboardRoutes.course.product.label": {
1007
+ "description": "Label of the product view.",
1008
+ "message": "Training"
849
1009
  },
850
- "components.TeacherDashboard.TeacherDashboardRoutes.course.records.path": {
851
- "description": "The path to display the course's records view.",
852
- "message": "/teacher/course/{courseCode}/records"
1010
+ "components.TeacherDashboard.TeacherDashboardRoutes.course.product.path": {
1011
+ "description": "The path to display the product view.",
1012
+ "message": "/teacher/courses/{courseId}/products/{courseProductRelationId}"
853
1013
  },
854
- "components.TeacherDashboard.TeacherDashboardRoutes.course.settings.label": {
855
- "description": "Label of the course settings view.",
856
- "message": "Settings"
1014
+ "components.TeacherDashboard.TeacherDashboardRoutes.generalInformation.label": {
1015
+ "description": "Label of the course general information view.",
1016
+ "message": "General information"
1017
+ },
1018
+ "components.TeacherDashboard.TeacherDashboardRoutes.organization.course.generalInformation.label": {
1019
+ "description": "Label of the organization course general information view.",
1020
+ "message": "General information"
857
1021
  },
858
- "components.TeacherDashboard.TeacherDashboardRoutes.course.settings.path": {
859
- "description": "The path to display the course settings view.",
860
- "message": "/teacher/course/{courseCode}/settings"
1022
+ "components.TeacherDashboard.TeacherDashboardRoutes.organization.course.generalInformation.path": {
1023
+ "description": "The path to display the organization course general information view.",
1024
+ "message": "/teacher/organizations/{organizationId}/courses/{courseId}/information"
1025
+ },
1026
+ "components.TeacherDashboard.TeacherDashboardRoutes.organization.course.product.label": {
1027
+ "description": "Label of the organization product view.",
1028
+ "message": "Training"
1029
+ },
1030
+ "components.TeacherDashboard.TeacherDashboardRoutes.organization.course.product.path": {
1031
+ "description": "The path to display the organization product view.",
1032
+ "message": "/teacher/organizations/{organizationId}/courses/{courseId}/products/{courseProductRelationId}"
861
1033
  },
862
1034
  "components.TeacherDashboard.TeacherDashboardRoutes.organization.courses.label": {
863
1035
  "description": "Label of the organization courses view.",
@@ -865,31 +1037,15 @@
865
1037
  },
866
1038
  "components.TeacherDashboard.TeacherDashboardRoutes.organization.courses.path": {
867
1039
  "description": "The path to display the organization courses view.",
868
- "message": "/teacher/organization/{organizationId}/courses"
1040
+ "message": "/teacher/organizations/{organizationId}/courses"
869
1041
  },
870
1042
  "components.TeacherDashboard.TeacherDashboardRoutes.organization.label": {
871
1043
  "description": "Label of the organization view.",
872
- "message": "General informations"
873
- },
874
- "components.TeacherDashboard.TeacherDashboardRoutes.organization.members.label": {
875
- "description": "Label of the unisersity members view.",
876
- "message": "Members"
877
- },
878
- "components.TeacherDashboard.TeacherDashboardRoutes.organization.members.path": {
879
- "description": "The path to display the unisersity members view.",
880
- "message": "/teacher/organization/{organizationId}/members"
1044
+ "message": "{organizationTitle}"
881
1045
  },
882
1046
  "components.TeacherDashboard.TeacherDashboardRoutes.organization.path": {
883
1047
  "description": "The path to display the organization view.",
884
- "message": "/teacher/organization/{organizationId}"
885
- },
886
- "components.TeacherDashboard.TeacherDashboardRoutes.organization.settings.label": {
887
- "description": "Label of the organization settings view.",
888
- "message": "Settings"
889
- },
890
- "components.TeacherDashboard.TeacherDashboardRoutes.organization.settings.path": {
891
- "description": "The path to display the organization settings view.",
892
- "message": "/teacher/organization/{organizationId}/settings"
1048
+ "message": "/teacher/organizations/{organizationId}"
893
1049
  },
894
1050
  "components.TeacherDashboard.TeacherDashboardRoutes.profile.courses.label": {
895
1051
  "description": "Label of the teacher courses liste view.",
@@ -897,31 +1053,7 @@
897
1053
  },
898
1054
  "components.TeacherDashboard.TeacherDashboardRoutes.profile.courses.path": {
899
1055
  "description": "The path to display the teacher courses liste view.",
900
- "message": "/teacher/profile/courses"
901
- },
902
- "components.TeacherDashboard.TeacherDashboardRoutes.profile.label": {
903
- "description": "Label of the teacher profile view.",
904
- "message": "Profile"
905
- },
906
- "components.TeacherDashboard.TeacherDashboardRoutes.profile.notifications.label": {
907
- "description": "Label of the teacher notifications view.",
908
- "message": "Notifications"
909
- },
910
- "components.TeacherDashboard.TeacherDashboardRoutes.profile.notifications.path": {
911
- "description": "The path to display the teacher notifications view.",
912
- "message": "/teacher/profile/notifications"
913
- },
914
- "components.TeacherDashboard.TeacherDashboardRoutes.profile.path": {
915
- "description": "The path to display the teacher profile view.",
916
- "message": "/teacher/profile"
917
- },
918
- "components.TeacherDashboard.TeacherDashboardRoutes.profile.settings.label": {
919
- "description": "Label of the teacher profile settings view.",
920
- "message": "Settings"
921
- },
922
- "components.TeacherDashboard.TeacherDashboardRoutes.profile.settings.path": {
923
- "description": "The path to display the teacher profile settings view.",
924
- "message": "/teacher/profile/settings"
1056
+ "message": "/teacher/courses"
925
1057
  },
926
1058
  "components.TeacherDashboard.TeacherDashboardRoutes.root.label": {
927
1059
  "description": "Label of the teacher dashboard root view.",
@@ -931,13 +1063,29 @@
931
1063
  "description": "The path to display the teacher dashboard root view.",
932
1064
  "message": "/teacher"
933
1065
  },
1066
+ "components.TeacherDashboardCourseList.emptyList": {
1067
+ "description": "Empty placeholder of the dashboard's list of trainings",
1068
+ "message": "You have no courses yet."
1069
+ },
1070
+ "components.TeacherDashboardCourseList.loadMore": {
1071
+ "description": "Button to manually load more trainings",
1072
+ "message": "Load more"
1073
+ },
1074
+ "components.TeacherDashboardCourseList.loading": {
1075
+ "description": "Message displayed while loading trainings on the teacher's dashboard'",
1076
+ "message": "Loading courses..."
1077
+ },
934
1078
  "components.TeacherOrganizationCourseDashboardLoader.loading": {
935
- "description": "Message displayed while loading courses on the teacher's dashboard'",
1079
+ "description": "Message displayed while loading an organization",
936
1080
  "message": "Loading organization ..."
937
1081
  },
938
- "components.TeacherOrganizationDashboardSidebar.header": {
939
- "description": "Title of the organization dashboard sidebar",
940
- "message": "{organizationName}"
1082
+ "components.TeacherOrganizationCourseDashboardLoader.title": {
1083
+ "description": "Message displayed as title of organization courses page",
1084
+ "message": "Courses of {organizationTitle}"
1085
+ },
1086
+ "components.TeacherOrganizationDashboardSidebar.loading": {
1087
+ "description": "Message displayed while loading an organization",
1088
+ "message": "Loading organization..."
941
1089
  },
942
1090
  "components.TeacherOrganizationDashboardSidebar.subHeader": {
943
1091
  "description": "Sub title of the organization dashboard sidebar",
@@ -951,17 +1099,21 @@
951
1099
  "description": "Title of the organizations section",
952
1100
  "message": "My universities"
953
1101
  },
954
- "components.TeacherProfileDashboardSidebar.header": {
955
- "description": "Title of the dashboard sidebar",
956
- "message": "{name}"
957
- },
958
1102
  "components.TeacherProfileDashboardSidebar.subHeader": {
959
1103
  "description": "Sub title of the dashboard sidebar",
960
1104
  "message": "You are on your teacher dashboard"
961
1105
  },
962
- "components.TeacherProfileSettingsDashboardLoader.loading": {
963
- "description": "Message displayed while loading settings",
964
- "message": "Loading settings..."
1106
+ "components.TeacherTrainingDashboard.errorNoCourseProductRelation": {
1107
+ "description": "Message displayed when requested course product relation is not found",
1108
+ "message": "This product doesn't exist"
1109
+ },
1110
+ "components.TeacherTrainingDashboardLoader.loading": {
1111
+ "description": "Message displayed while loading a course",
1112
+ "message": "Loading training..."
1113
+ },
1114
+ "components.TeacherTrainingDashboardLoader.pageTitle": {
1115
+ "description": "Use for the page title of the training area",
1116
+ "message": "Training area"
965
1117
  },
966
1118
  "components.UserLogin.logIn": {
967
1119
  "description": "Text for the login button.",
@@ -1027,6 +1179,34 @@
1027
1179
  "description": "Error message shown to the user when no certificate matches.",
1028
1180
  "message": "Cannot find the certificate"
1029
1181
  },
1182
+ "hooks.useCourseProductRelations.errorGet": {
1183
+ "description": "Error message shown to the user when course product relation fetch request fails.",
1184
+ "message": "An error occurred while fetching trainings. Please retry later."
1185
+ },
1186
+ "hooks.useCourseProductRelations.errorNotFound": {
1187
+ "description": "Error message shown to the user when no course product relation matches.",
1188
+ "message": "Cannot find the training."
1189
+ },
1190
+ "hooks.useCourseProductUnion.errorGet": {
1191
+ "description": "Error message shown to the user when trainings fetch request fails.",
1192
+ "message": "An error occurred while fetching trainings. Please retry later."
1193
+ },
1194
+ "hooks.useCourseRuns.errorGet": {
1195
+ "description": "Error message shown to the user when course runs fetch request fails.",
1196
+ "message": "An error occurred while fetching course runs. Please retry later."
1197
+ },
1198
+ "hooks.useCourseRuns.errorNotFound": {
1199
+ "description": "Error message shown to the user when no course runs matches.",
1200
+ "message": "Cannot find the course runs."
1201
+ },
1202
+ "hooks.useCourses.errorNotFound": {
1203
+ "description": "Error message shown to the user when not course matches.",
1204
+ "message": "Cannot find the course."
1205
+ },
1206
+ "hooks.useCourses.errorSelect": {
1207
+ "description": "Error message shown to the user when course fetch request fails.",
1208
+ "message": "An error occurred while fetching course. Please retry later."
1209
+ },
1030
1210
  "hooks.useCreditCards.errorCreate": {
1031
1211
  "description": "Error message shown to the user when credit card creation request fails.",
1032
1212
  "message": "An error occurred while creating the credit card. Please retry later."
@@ -1127,6 +1307,10 @@
1127
1307
  "description": "Error message shown to the user when resource update request fails.",
1128
1308
  "message": "An error occurred while updating a resource. Please retry later."
1129
1309
  },
1310
+ "hooks.useUnionResource.errorGet": {
1311
+ "description": "Error message shown to the user when union resources fetch request fails.",
1312
+ "message": "An error occurred while fetching data. Please retry later."
1313
+ },
1130
1314
  "hooks.useWishlist.errorCreate": {
1131
1315
  "description": "Error message shown to the user when wishlist creation request fails.",
1132
1316
  "message": "An error occurred when adding this course to your wishlist. Please retry later."
@@ -1142,5 +1326,9 @@
1142
1326
  "hooks.useWishlist.errorNotFound": {
1143
1327
  "description": "Error message shown to the user when no wishlist matches.",
1144
1328
  "message": "Cannot find the wishlist."
1329
+ },
1330
+ "utils.joinAnd.and": {
1331
+ "description": "The and word",
1332
+ "message": "and"
1145
1333
  }
1146
1334
  }