richie-education 3.3.2-dev6 → 3.4.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 (149) hide show
  1. package/.eslintrc.json +0 -3
  2. package/.storybook/preview.tsx +49 -24
  3. package/cunningham.cjs +31 -0
  4. package/i18n/compile-translations.js +12 -10
  5. package/i18n/locales/ar-SA.json +20 -0
  6. package/i18n/locales/es-ES.json +20 -0
  7. package/i18n/locales/fa-IR.json +20 -0
  8. package/i18n/locales/fr-CA.json +20 -0
  9. package/i18n/locales/fr-FR.json +21 -1
  10. package/i18n/locales/ko-KR.json +20 -0
  11. package/i18n/locales/pt-PT.json +42 -22
  12. package/i18n/locales/ru-RU.json +20 -0
  13. package/i18n/locales/vi-VN.json +20 -0
  14. package/jest.config.js +5 -0
  15. package/js/components/AddressesManagement/AddressForm/index.stories.tsx +1 -1
  16. package/js/components/AddressesManagement/AddressForm/index.tsx +4 -3
  17. package/js/components/AddressesManagement/index.stories.tsx +1 -1
  18. package/js/components/AddressesManagement/index.tsx +5 -3
  19. package/js/components/Badge/index.stories.tsx +1 -1
  20. package/js/components/Badge/index.tsx +1 -1
  21. package/js/components/Banner/index.stories.tsx +1 -1
  22. package/js/components/CourseGlimpse/index.stories.tsx +1 -1
  23. package/js/components/CourseGlimpseList/index.stories.tsx +1 -1
  24. package/js/components/CreditCardSelector/_styles.scss +2 -2
  25. package/js/components/CreditCardSelector/index.tsx +11 -3
  26. package/js/components/DownloadCertificateButton/index.tsx +2 -1
  27. package/js/components/DownloadContractButton/index.tsx +7 -1
  28. package/js/components/Form/Form/index.tsx +4 -2
  29. package/js/components/Icon/index.stories.tsx +2 -1
  30. package/js/components/Modal/index.stories.tsx +1 -1
  31. package/js/components/Modal/index.tsx +2 -1
  32. package/js/components/OpenEdxFullNameForm/index.stories.tsx +1 -1
  33. package/js/components/OpenEdxFullNameForm/index.tsx +2 -2
  34. package/js/components/PaymentScheduleGrid/_styles.scss +2 -2
  35. package/js/components/PurchaseButton/index.stories.tsx +1 -1
  36. package/js/components/RegisteredAddress/index.stories.tsx +1 -1
  37. package/js/components/RegisteredAddress/index.tsx +4 -2
  38. package/js/components/SaleTunnel/AddressSelector/CreateAddressFormModal.tsx +1 -1
  39. package/js/components/SaleTunnel/AddressSelector/EditAddressFormModal.tsx +1 -1
  40. package/js/components/SaleTunnel/AddressSelector/index.tsx +4 -2
  41. package/js/components/SaleTunnel/SaleTunnelInformation/SaleTunnelInformationGroup.tsx +4 -3
  42. package/js/components/SaleTunnel/SaleTunnelInformation/SaleTunnelInformationSingular.tsx +27 -5
  43. package/js/components/SaleTunnel/SubscriptionButton/index.tsx +7 -5
  44. package/js/components/SaleTunnel/_styles.scss +9 -8
  45. package/js/components/SaleTunnel/index.credential.spec.tsx +50 -1
  46. package/js/components/SaleTunnel/index.stories.tsx +1 -1
  47. package/js/components/Spinner/index.stories.tsx +1 -1
  48. package/js/components/Tabs/index.stories.tsx +1 -1
  49. package/js/components/Tabs/index.tsx +2 -1
  50. package/js/components/TeacherDashboardCourseList/index.tsx +2 -1
  51. package/js/hooks/useAddressesManagement.tsx +4 -2
  52. package/js/hooks/useCreditCards/index.ts +6 -4
  53. package/js/hooks/useDashboardAddressForm.tsx +3 -3
  54. package/js/hooks/useMatchMedia.ts +1 -1
  55. package/js/hooks/useResources/useResourcesRoot.ts +1 -1
  56. package/js/hooks/useUnionResource/index.ts +6 -2
  57. package/js/hooks/useUnionResource/utils/fetchEntity.ts +1 -0
  58. package/js/pages/DashboardAddressesManagement/DashboardAddressBox.tsx +3 -3
  59. package/js/pages/DashboardAddressesManagement/DashboardCreateAddress.stories.tsx +1 -1
  60. package/js/pages/DashboardAddressesManagement/DashboardCreateAddress.tsx +1 -1
  61. package/js/pages/DashboardAddressesManagement/DashboardEditAddress.stories.tsx +1 -1
  62. package/js/pages/DashboardAddressesManagement/DashboardEditAddress.tsx +3 -2
  63. package/js/pages/DashboardAddressesManagement/index.stories.tsx +1 -1
  64. package/js/pages/DashboardAddressesManagement/index.tsx +1 -1
  65. package/js/pages/DashboardCourses/index.tsx +2 -1
  66. package/js/pages/DashboardCreditCardsManagement/CreditCardBrandLogo.stories.tsx +1 -1
  67. package/js/pages/DashboardCreditCardsManagement/DashboardCreditCardBox.tsx +3 -3
  68. package/js/pages/DashboardCreditCardsManagement/DashboardEditCreditCard.stories.tsx +1 -1
  69. package/js/pages/DashboardCreditCardsManagement/DashboardEditCreditCard.tsx +3 -2
  70. package/js/pages/DashboardCreditCardsManagement/index.stories.tsx +1 -1
  71. package/js/pages/DashboardOpenEdxProfile/index.stories.tsx +1 -1
  72. package/js/pages/TeacherDashboardContractsLayout/components/BulkDownloadContractButton/index.tsx +4 -2
  73. package/js/pages/TeacherDashboardContractsLayout/components/SignOrganizationContractButton/index.tsx +2 -1
  74. package/js/pages/TeacherDashboardContractsLayout/hooks/useCheckContractArchiveExists/index.spec.tsx +4 -4
  75. package/js/pages/TeacherDashboardContractsLayout/hooks/useDownloadContractArchive/index.spec.tsx +8 -9
  76. package/js/pages/TeacherDashboardContractsLayout/hooks/useDownloadContractArchive/index.tsx +14 -3
  77. package/js/pages/TeacherDashboardCourseLearnersLayout/components/CourseLearnerDataGrid/index.tsx +6 -1
  78. package/js/pages/TeacherDashboardCourseLoader/CourseRunList/utils.tsx +2 -1
  79. package/js/pages/TeacherDashboardOrganizationAgreements/BulkAgreementContractButton.tsx +4 -2
  80. package/js/pages/TeacherDashboardOrganizationAgreements/SignOrganizationAgreementButton.tsx +2 -1
  81. package/js/pages/TeacherDashboardOrganizationQuotes/index.full-process.spec.tsx +2 -2
  82. package/js/pages/TeacherDashboardOrganizationQuotes/index.spec.tsx +1 -1
  83. package/js/pages/TeacherDashboardOrganizationQuotes/index.tsx +3 -2
  84. package/js/translations/ar-SA.json +1 -1
  85. package/js/translations/es-ES.json +1 -1
  86. package/js/translations/fa-IR.json +1 -1
  87. package/js/translations/fr-CA.json +1 -1
  88. package/js/translations/fr-FR.json +1 -1
  89. package/js/translations/ko-KR.json +1 -1
  90. package/js/translations/pt-PT.json +1 -1
  91. package/js/translations/ru-RU.json +1 -1
  92. package/js/translations/vi-VN.json +1 -1
  93. package/js/types/Joanie.ts +1 -1
  94. package/js/utils/ProductHelper/index.spec.ts +1 -1
  95. package/js/utils/StorybookHelper/index.tsx +3 -6
  96. package/js/utils/cunningham-tokens.ts +1111 -142
  97. package/js/utils/errors/handle.spec.ts +3 -3
  98. package/js/utils/react-query/useSessionMutation/index.ts +8 -3
  99. package/js/utils/test/factories/joanie.ts +1 -1
  100. package/js/widgets/Dashboard/components/DashboardAvatar/index.stories.tsx +1 -1
  101. package/js/widgets/Dashboard/components/DashboardBox/index.stories.tsx +13 -5
  102. package/js/widgets/Dashboard/components/DashboardBreadcrumbs/index.stories.tsx +1 -1
  103. package/js/widgets/Dashboard/components/DashboardBreadcrumbs/index.tsx +3 -2
  104. package/js/widgets/Dashboard/components/DashboardCard/index.spec.tsx +13 -2
  105. package/js/widgets/Dashboard/components/DashboardCard/index.stories.tsx +12 -4
  106. package/js/widgets/Dashboard/components/DashboardCard/index.tsx +1 -1
  107. package/js/widgets/Dashboard/components/DashboardItem/BatchOrder/BatchOrderPaymentModal/BatchOrderPaymentManager.tsx +1 -1
  108. package/js/widgets/Dashboard/components/DashboardItem/BatchOrder/BatchOrderPaymentModal/index.tsx +2 -1
  109. package/js/widgets/Dashboard/components/DashboardItem/Certificate/index.stories.tsx +1 -1
  110. package/js/widgets/Dashboard/components/DashboardItem/Contract/index.stories.tsx +1 -1
  111. package/js/widgets/Dashboard/components/DashboardItem/CourseEnrolling/index.stories.tsx +1 -1
  112. package/js/widgets/Dashboard/components/DashboardItem/CourseEnrolling/index.tsx +8 -4
  113. package/js/widgets/Dashboard/components/DashboardItem/Enrollment/DashboardItemEnrollment.stories.tsx +1 -1
  114. package/js/widgets/Dashboard/components/DashboardItem/Enrollment/ProductCertificateFooter/index.tsx +1 -1
  115. package/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderReadonly.stories.tsx +1 -1
  116. package/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderWritable.stories.tsx +1 -1
  117. package/js/widgets/Dashboard/components/DashboardItem/Order/Installment/index.tsx +1 -1
  118. package/js/widgets/Dashboard/components/DashboardItem/Order/OrderPaymentDetailsModal/_styles.scss +2 -2
  119. package/js/widgets/Dashboard/components/DashboardItem/Order/OrderPaymentRetryModal/index.tsx +2 -1
  120. package/js/widgets/Dashboard/components/DashboardItem/Order/OrganizationBlock/index.tsx +6 -3
  121. package/js/widgets/Dashboard/components/DashboardItem/index.stories.tsx +1 -1
  122. package/js/widgets/Dashboard/components/DashboardItem/index.tsx +2 -1
  123. package/js/widgets/Dashboard/components/DashboardListAvatar/index.stories.tsx +1 -1
  124. package/js/widgets/Dashboard/components/DashboardSidebar/index.stories.tsx +1 -1
  125. package/js/widgets/Dashboard/components/LearnerDashboardSidebar/index.stories.tsx +1 -1
  126. package/js/widgets/Dashboard/components/ProtectedOutlet/AuthenticatedOutlet.spec.tsx +1 -1
  127. package/js/widgets/Dashboard/components/ProtectedOutlet/ProtectedOutlet.spec.tsx +1 -1
  128. package/js/widgets/Dashboard/components/SearchBar/index.tsx +2 -1
  129. package/js/widgets/Dashboard/components/TeacherDashboardOrganizationSidebar/index.stories.tsx +1 -1
  130. package/js/widgets/Dashboard/components/TeacherDashboardProfileSidebar/index.stories.tsx +1 -1
  131. package/js/widgets/Dashboard/hooks/useRouteInfo/index.spec.tsx +2 -2
  132. package/js/widgets/Dashboard/index.spec.tsx +1 -1
  133. package/js/widgets/Search/components/SearchFilterValueParent/index.stories.tsx +1 -1
  134. package/js/widgets/Search/components/SearchFiltersPane/index.tsx +2 -1
  135. package/js/widgets/Slider/index.stories.tsx +1 -1
  136. package/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/components/CourseProductCertificateItem/index.stories.tsx +1 -1
  137. package/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/components/CourseRunItem/index.stories.tsx +1 -1
  138. package/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/index.stories.tsx +1 -1
  139. package/js/widgets/SyllabusCourseRunsList/components/CourseWishButton/index.tsx +4 -2
  140. package/js/widgets/SyllabusCourseRunsList/components/SyllabusCourseRun/index.stories.tsx +1 -1
  141. package/js/widgets/SyllabusCourseRunsList/components/SyllabusCourseRunCompacted/index.stories.tsx +41 -0
  142. package/js/widgets/UserLogin/index.stories.tsx +1 -1
  143. package/package.json +81 -81
  144. package/scss/components/_subheader.scss +1 -1
  145. package/scss/trumps/_bootstrap.scss +1 -0
  146. package/scss/vendors/css/cunningham-tokens.css +1259 -154
  147. package/scss/vendors/cunningham-tokens.scss +1479 -150
  148. package/tsconfig.json +1 -1
  149. package/webpack.config.js +8 -0
package/.eslintrc.json CHANGED
@@ -39,9 +39,6 @@
39
39
  "arrow-parens": "error",
40
40
  "consistent-return": "off",
41
41
  "default-case": "off",
42
- "formatjs/no-multiple-whitespaces": "error",
43
- "formatjs/enforce-description": "error",
44
- "formatjs/enforce-default-message": "error",
45
42
  "global-require": "off",
46
43
  "import/extensions": "off",
47
44
  "import/no-cycle": ["off"],
@@ -1,23 +1,17 @@
1
1
  import { useState } from 'react';
2
2
  import { IntlProvider } from 'react-intl';
3
3
  import { CunninghamProvider } from '@openfun/cunningham-react';
4
- import { Preview } from '@storybook/react';
4
+ import { Preview } from '@storybook/react-webpack5';
5
5
  import { useAsyncEffect } from 'hooks/useAsyncEffect';
6
+ import frMessages from 'translations/fr-FR.json';
6
7
  import './__mocks__/utils/context';
7
8
 
8
- export const preview: Preview = {
9
- parameters: {
10
- actions: { argTypesRegex: '^on[A-Z].*' },
11
- controls: {
12
- matchers: {
13
- color: /(background|color)$/i,
14
- date: /Date$/,
15
- },
16
- },
17
- }
9
+ const messages: Record<string, Record<string, string>> = {
10
+ en: {},
11
+ 'fr-FR': frMessages,
18
12
  };
19
13
 
20
- const IconsWrapper = (props) => {
14
+ const IconsWrapper = ({ children }: { children: React.ReactNode }) => {
21
15
  const [symbols, setSymbols] = useState('');
22
16
 
23
17
  useAsyncEffect(async () => {
@@ -29,19 +23,50 @@ const IconsWrapper = (props) => {
29
23
  return (
30
24
  <div>
31
25
  <div dangerouslySetInnerHTML={{ __html: symbols }} />
32
- {props.children}
26
+ {children}
33
27
  </div>
34
28
  );
35
29
  };
36
30
 
37
- export const decorators = [
38
- (Story) => (
39
- <IntlProvider locale="en">
40
- <IconsWrapper>
41
- <CunninghamProvider>
42
- <Story />
43
- </CunninghamProvider>
44
- </IconsWrapper>
45
- </IntlProvider>
46
- ),
47
- ];
31
+ const preview: Preview = {
32
+ globalTypes: {
33
+ locale: {
34
+ name: 'Locale',
35
+ description: 'Internationalization locale',
36
+ defaultValue: 'en',
37
+ toolbar: {
38
+ icon: 'globe',
39
+ items: [
40
+ { value: 'en', title: 'English' },
41
+ { value: 'fr-FR', title: 'Français' },
42
+ ],
43
+ showName: true,
44
+ },
45
+ },
46
+ },
47
+ parameters: {
48
+ actions: { argTypesRegex: '^on[A-Z].*' },
49
+ controls: {
50
+ matchers: {
51
+ color: /(background|color)$/i,
52
+ date: /Date$/,
53
+ },
54
+ },
55
+ },
56
+ decorators: [
57
+ (Story, context) => {
58
+ const locale = context.globals.locale || 'en';
59
+ return (
60
+ <IntlProvider locale={locale} messages={messages[locale]}>
61
+ <IconsWrapper>
62
+ <CunninghamProvider>
63
+ <Story />
64
+ </CunninghamProvider>
65
+ </IconsWrapper>
66
+ </IntlProvider>
67
+ );
68
+ },
69
+ ],
70
+ };
71
+
72
+ export default preview;
package/cunningham.cjs CHANGED
@@ -63,6 +63,7 @@ module.exports = {
63
63
  midnightblue: '#141b2c',
64
64
  mantis: '#76ce68',
65
65
  'mantis-darken': '#006908',
66
+ 'warning-500': '#937303',
66
67
  },
67
68
  },
68
69
  components: {
@@ -77,6 +78,36 @@ module.exports = {
77
78
  lightness: 55,
78
79
  },
79
80
  },
81
+ contextuals: {
82
+ content: {
83
+ semantic: {
84
+ brand: { 'on-brand': 'ref(globals.colors.gray-000)', tertiary: 'ref(globals.colors.gray-600)' },
85
+ },
86
+ },
87
+ },
88
+ globals: {
89
+ colors: {
90
+ 'brand-050': '#fff0f1',
91
+ 'brand-100': '#ffcad1',
92
+ 'brand-150': '#f8b0b4',
93
+ 'brand-200': '#f19597',
94
+ 'brand-250': '#ed8083',
95
+ 'brand-300': '#e86a6f',
96
+ 'brand-350': '#ed575d',
97
+ 'brand-400': '#f2444b',
98
+ 'brand-450': '#f5383e',
99
+ 'brand-500': '#f63237',
100
+ 'brand-550': '#f72c30',
101
+ 'brand-600': '#e81f2f',
102
+ 'brand-650': '#d60f29',
103
+ 'brand-700': '#c90022',
104
+ 'brand-750': '#c2001b',
105
+ 'brand-800': '#bb0014',
106
+ 'brand-850': '#a30010',
107
+ 'brand-900': '#8c000d',
108
+ 'brand-950': '#6b0009',
109
+ },
110
+ },
80
111
  },
81
112
  },
82
113
  };
@@ -1,41 +1,43 @@
1
1
  #! /usr/bin/env node
2
2
  const path = require('path');
3
3
  const fs = require('fs');
4
- const yargs = require('yargs');
4
+ const yargs = require('yargs/yargs');
5
+ const { hideBin } = require('yargs/helpers');
5
6
  const { glob } = require('glob');
6
7
  const { merge } = require('cljs-merge');
7
8
 
8
9
  /**
9
10
  * compile-translations
10
- *
11
+ *
11
12
  * formatjs/cli compile and compile-folder methods do not allow merge.
12
13
  * So we need your own compile method.
13
- *
14
+ *
14
15
  * Without specify option, this script compile all translations files includes
15
16
  * in i18n/locales into js/translations
16
- *
17
+ *
17
18
  * You can provide a search pattern to include other translation sources. If several files have the
18
19
  * same name, they will be merged.
19
- *
20
+ *
20
21
  * Usage: ./compile-translations.js [search_patterns] [--ignore] [--outDir <path_to_output_files]
21
- *
22
- *
22
+ *
23
+ *
23
24
  * ARGUMENTS:
24
25
  * search_pattern list of patterns to search additional translation files (support only json)
25
26
  * --ignore a pattern to ignore a path where search files (e.g ./node_modules)
26
27
  * --outDir output directory
27
- *
28
+ *
28
29
  */
29
30
 
31
+ const { argv } = yargs(hideBin(process.argv));
30
32
 
31
33
  // Transparently includes Richie default translation files to lighten command
32
34
  const LOCALES_PATTERN = path.resolve(__dirname, `./locales/*.json`);
33
35
  // Output directory
34
- const OUT_DIR = yargs.argv.outDir || path.resolve(__dirname, `../js/translations`);
36
+ const OUT_DIR = argv.outDir || path.resolve(__dirname, `../js/translations`);
35
37
 
36
38
 
37
39
  (async () => {
38
- const { ignore, _: patterns } = yargs.argv
40
+ const { ignore, _: patterns } = argv
39
41
  const filesPattern = [
40
42
  LOCALES_PATTERN,
41
43
  ...patterns.map((filepath) => path.resolve(process.cwd(), filepath))
@@ -1911,6 +1911,14 @@
1911
1911
  "description": "Validate button for the credit card modal",
1912
1912
  "message": "Validate"
1913
1913
  },
1914
+ "components.SaleTunnel.Information.cpf.buttonLabel": {
1915
+ "description": "Label for the button redirecting to Mon Compte Formation",
1916
+ "message": "Go to Mon Compte Formation"
1917
+ },
1918
+ "components.SaleTunnel.Information.cpf.description": {
1919
+ "description": "Explanatory text for the CPF payment option",
1920
+ "message": "Purchase your training course by using your Personal Training Account (CPF) on Mon Compte Formation."
1921
+ },
1914
1922
  "components.SaleTunnel.Information.description": {
1915
1923
  "description": "Description of the information section",
1916
1924
  "message": "This information will be used for billing"
@@ -1951,6 +1959,18 @@
1951
1959
  "description": "Message displayed representing the payment schedule when the order is free.",
1952
1960
  "message": "No payment required. This order is fully covered."
1953
1961
  },
1962
+ "components.SaleTunnel.Information.paymentMode.classic": {
1963
+ "description": "Label for the classic card payment option",
1964
+ "message": "Credit card payment"
1965
+ },
1966
+ "components.SaleTunnel.Information.paymentMode.cpf": {
1967
+ "description": "Label for the CPF (Mon Compte Formation) payment option",
1968
+ "message": "My Training Account (CPF)"
1969
+ },
1970
+ "components.SaleTunnel.Information.paymentMode.title": {
1971
+ "description": "Title for the payment mode selection section",
1972
+ "message": "Payment method"
1973
+ },
1954
1974
  "components.SaleTunnel.Information.paymentSchedule": {
1955
1975
  "description": "Title for the payment schedule section",
1956
1976
  "message": "Payment schedule"
@@ -1911,6 +1911,14 @@
1911
1911
  "description": "Validate button for the credit card modal",
1912
1912
  "message": "Validate"
1913
1913
  },
1914
+ "components.SaleTunnel.Information.cpf.buttonLabel": {
1915
+ "description": "Label for the button redirecting to Mon Compte Formation",
1916
+ "message": "Go to Mon Compte Formation"
1917
+ },
1918
+ "components.SaleTunnel.Information.cpf.description": {
1919
+ "description": "Explanatory text for the CPF payment option",
1920
+ "message": "Purchase your training course by using your Personal Training Account (CPF) on Mon Compte Formation."
1921
+ },
1914
1922
  "components.SaleTunnel.Information.description": {
1915
1923
  "description": "Description of the information section",
1916
1924
  "message": "This information will be used for billing"
@@ -1951,6 +1959,18 @@
1951
1959
  "description": "Message displayed representing the payment schedule when the order is free.",
1952
1960
  "message": "No payment required. This order is fully covered."
1953
1961
  },
1962
+ "components.SaleTunnel.Information.paymentMode.classic": {
1963
+ "description": "Label for the classic card payment option",
1964
+ "message": "Credit card payment"
1965
+ },
1966
+ "components.SaleTunnel.Information.paymentMode.cpf": {
1967
+ "description": "Label for the CPF (Mon Compte Formation) payment option",
1968
+ "message": "My Training Account (CPF)"
1969
+ },
1970
+ "components.SaleTunnel.Information.paymentMode.title": {
1971
+ "description": "Title for the payment mode selection section",
1972
+ "message": "Payment method"
1973
+ },
1954
1974
  "components.SaleTunnel.Information.paymentSchedule": {
1955
1975
  "description": "Title for the payment schedule section",
1956
1976
  "message": "Payment schedule"
@@ -1911,6 +1911,14 @@
1911
1911
  "description": "Validate button for the credit card modal",
1912
1912
  "message": "Validate"
1913
1913
  },
1914
+ "components.SaleTunnel.Information.cpf.buttonLabel": {
1915
+ "description": "Label for the button redirecting to Mon Compte Formation",
1916
+ "message": "Go to Mon Compte Formation"
1917
+ },
1918
+ "components.SaleTunnel.Information.cpf.description": {
1919
+ "description": "Explanatory text for the CPF payment option",
1920
+ "message": "Purchase your training course by using your Personal Training Account (CPF) on Mon Compte Formation."
1921
+ },
1914
1922
  "components.SaleTunnel.Information.description": {
1915
1923
  "description": "Description of the information section",
1916
1924
  "message": "This information will be used for billing"
@@ -1951,6 +1959,18 @@
1951
1959
  "description": "Message displayed representing the payment schedule when the order is free.",
1952
1960
  "message": "No payment required. This order is fully covered."
1953
1961
  },
1962
+ "components.SaleTunnel.Information.paymentMode.classic": {
1963
+ "description": "Label for the classic card payment option",
1964
+ "message": "Credit card payment"
1965
+ },
1966
+ "components.SaleTunnel.Information.paymentMode.cpf": {
1967
+ "description": "Label for the CPF (Mon Compte Formation) payment option",
1968
+ "message": "My Training Account (CPF)"
1969
+ },
1970
+ "components.SaleTunnel.Information.paymentMode.title": {
1971
+ "description": "Title for the payment mode selection section",
1972
+ "message": "Payment method"
1973
+ },
1954
1974
  "components.SaleTunnel.Information.paymentSchedule": {
1955
1975
  "description": "Title for the payment schedule section",
1956
1976
  "message": "Payment schedule"
@@ -1911,6 +1911,14 @@
1911
1911
  "description": "Validate button for the credit card modal",
1912
1912
  "message": "Validate"
1913
1913
  },
1914
+ "components.SaleTunnel.Information.cpf.buttonLabel": {
1915
+ "description": "Label for the button redirecting to Mon Compte Formation",
1916
+ "message": "Go to Mon Compte Formation"
1917
+ },
1918
+ "components.SaleTunnel.Information.cpf.description": {
1919
+ "description": "Explanatory text for the CPF payment option",
1920
+ "message": "Purchase your training course by using your Personal Training Account (CPF) on Mon Compte Formation."
1921
+ },
1914
1922
  "components.SaleTunnel.Information.description": {
1915
1923
  "description": "Description of the information section",
1916
1924
  "message": "This information will be used for billing"
@@ -1951,6 +1959,18 @@
1951
1959
  "description": "Message displayed representing the payment schedule when the order is free.",
1952
1960
  "message": "No payment required. This order is fully covered."
1953
1961
  },
1962
+ "components.SaleTunnel.Information.paymentMode.classic": {
1963
+ "description": "Label for the classic card payment option",
1964
+ "message": "Credit card payment"
1965
+ },
1966
+ "components.SaleTunnel.Information.paymentMode.cpf": {
1967
+ "description": "Label for the CPF (Mon Compte Formation) payment option",
1968
+ "message": "My Training Account (CPF)"
1969
+ },
1970
+ "components.SaleTunnel.Information.paymentMode.title": {
1971
+ "description": "Title for the payment mode selection section",
1972
+ "message": "Payment method"
1973
+ },
1954
1974
  "components.SaleTunnel.Information.paymentSchedule": {
1955
1975
  "description": "Title for the payment schedule section",
1956
1976
  "message": "Payment schedule"
@@ -1911,6 +1911,14 @@
1911
1911
  "description": "Validate button for the credit card modal",
1912
1912
  "message": "Valider"
1913
1913
  },
1914
+ "components.SaleTunnel.Information.cpf.buttonLabel": {
1915
+ "description": "Label for the button redirecting to Mon Compte Formation",
1916
+ "message": "Aller sur Mon Compte Formation"
1917
+ },
1918
+ "components.SaleTunnel.Information.cpf.description": {
1919
+ "description": "Explanatory text for the CPF payment option",
1920
+ "message": "Achetez votre cours de formation en utilisant votre Compte Personnel de Formation (CPF) sur Mon Compte Formation."
1921
+ },
1914
1922
  "components.SaleTunnel.Information.description": {
1915
1923
  "description": "Description of the information section",
1916
1924
  "message": "Ces informations seront utilisées pour la facturation"
@@ -1951,6 +1959,18 @@
1951
1959
  "description": "Message displayed representing the payment schedule when the order is free.",
1952
1960
  "message": "Aucun paiement requis. Cette commande est entièrement prise en charge."
1953
1961
  },
1962
+ "components.SaleTunnel.Information.paymentMode.classic": {
1963
+ "description": "Label for the classic card payment option",
1964
+ "message": "Paiement par carte bancaire"
1965
+ },
1966
+ "components.SaleTunnel.Information.paymentMode.cpf": {
1967
+ "description": "Label for the CPF (Mon Compte Formation) payment option",
1968
+ "message": "Mon Compte Formation (CPF)"
1969
+ },
1970
+ "components.SaleTunnel.Information.paymentMode.title": {
1971
+ "description": "Title for the payment mode selection section",
1972
+ "message": "Méthode de paiement"
1973
+ },
1954
1974
  "components.SaleTunnel.Information.paymentSchedule": {
1955
1975
  "description": "Title for the payment schedule section",
1956
1976
  "message": "Échéancier"
@@ -2397,7 +2417,7 @@
2397
2417
  },
2398
2418
  "components.SyllabusCourseRunCompacted.selfPaceCoursePeriod": {
2399
2419
  "description": "Course date of an opened and self paced course run block",
2400
- "message": "Du {endDate, select, undefined {} other {au {endDate}}}"
2420
+ "message": "Jusqu'au {endDate, select, undefined {} other {{endDate}}}"
2401
2421
  },
2402
2422
  "components.SyllabusCourseRunCompacted.selfPaceNoEndDate": {
2403
2423
  "description": "Self paced course run block with no end date",
@@ -1911,6 +1911,14 @@
1911
1911
  "description": "Validate button for the credit card modal",
1912
1912
  "message": "Validate"
1913
1913
  },
1914
+ "components.SaleTunnel.Information.cpf.buttonLabel": {
1915
+ "description": "Label for the button redirecting to Mon Compte Formation",
1916
+ "message": "Go to Mon Compte Formation"
1917
+ },
1918
+ "components.SaleTunnel.Information.cpf.description": {
1919
+ "description": "Explanatory text for the CPF payment option",
1920
+ "message": "Purchase your training course by using your Personal Training Account (CPF) on Mon Compte Formation."
1921
+ },
1914
1922
  "components.SaleTunnel.Information.description": {
1915
1923
  "description": "Description of the information section",
1916
1924
  "message": "This information will be used for billing"
@@ -1951,6 +1959,18 @@
1951
1959
  "description": "Message displayed representing the payment schedule when the order is free.",
1952
1960
  "message": "No payment required. This order is fully covered."
1953
1961
  },
1962
+ "components.SaleTunnel.Information.paymentMode.classic": {
1963
+ "description": "Label for the classic card payment option",
1964
+ "message": "Credit card payment"
1965
+ },
1966
+ "components.SaleTunnel.Information.paymentMode.cpf": {
1967
+ "description": "Label for the CPF (Mon Compte Formation) payment option",
1968
+ "message": "My Training Account (CPF)"
1969
+ },
1970
+ "components.SaleTunnel.Information.paymentMode.title": {
1971
+ "description": "Title for the payment mode selection section",
1972
+ "message": "Payment method"
1973
+ },
1954
1974
  "components.SaleTunnel.Information.paymentSchedule": {
1955
1975
  "description": "Title for the payment schedule section",
1956
1976
  "message": "Payment schedule"
@@ -25,47 +25,47 @@
25
25
  },
26
26
  "batchOrder.address": {
27
27
  "description": "Label for the field asking the company address",
28
- "message": "Address"
28
+ "message": "Endereço"
29
29
  },
30
30
  "batchOrder.bankTransfer": {
31
31
  "description": "Option label for selecting bank transfer payment",
32
- "message": "Bank transfer"
32
+ "message": "Transferência bancária"
33
33
  },
34
34
  "batchOrder.cardPayment": {
35
35
  "description": "Option label for selecting credit card payment",
36
- "message": "Credit card"
36
+ "message": "Cartão de crédito"
37
37
  },
38
38
  "batchOrder.city": {
39
39
  "description": "Label for the field asking the city",
40
- "message": "City"
40
+ "message": "Cidade"
41
41
  },
42
42
  "batchOrder.companyName": {
43
43
  "description": "Label for the field asking the name of the company",
44
- "message": "Company name"
44
+ "message": "Nome da empresa"
45
45
  },
46
46
  "batchOrder.contactEmail": {
47
47
  "description": "Label for the field asking the billing contact email",
48
- "message": "Contact email"
48
+ "message": "E-mail de contacto"
49
49
  },
50
50
  "batchOrder.contactName": {
51
51
  "description": "Label for the field asking the billing contact name",
52
- "message": "Contact name"
52
+ "message": "Nome do contacto"
53
53
  },
54
54
  "batchOrder.country": {
55
55
  "description": "Label for the field asking the country",
56
- "message": "Country"
56
+ "message": "País"
57
57
  },
58
58
  "batchOrder.email": {
59
59
  "description": "Label for the field asking the email address of the contact person",
60
- "message": "Email"
60
+ "message": "E-mail"
61
61
  },
62
62
  "batchOrder.firstName": {
63
63
  "description": "Label for the field asking the first name of the contact person",
64
- "message": "First name"
64
+ "message": "Nome próprio"
65
65
  },
66
66
  "batchOrder.fundingEntity": {
67
67
  "description": "Label for the field asking the type of funding entity",
68
- "message": "Funding entity"
68
+ "message": "Entidade financiadora"
69
69
  },
70
70
  "batchOrder.fundingEntityAmount": {
71
71
  "description": "Label for the field asking the amount covered by the funding entity",
@@ -1911,6 +1911,14 @@
1911
1911
  "description": "Validate button for the credit card modal",
1912
1912
  "message": "Validar"
1913
1913
  },
1914
+ "components.SaleTunnel.Information.cpf.buttonLabel": {
1915
+ "description": "Label for the button redirecting to Mon Compte Formation",
1916
+ "message": "Go to Mon Compte Formation"
1917
+ },
1918
+ "components.SaleTunnel.Information.cpf.description": {
1919
+ "description": "Explanatory text for the CPF payment option",
1920
+ "message": "Purchase your training course by using your Personal Training Account (CPF) on Mon Compte Formation."
1921
+ },
1914
1922
  "components.SaleTunnel.Information.description": {
1915
1923
  "description": "Description of the information section",
1916
1924
  "message": "This information will be used for billing"
@@ -1951,6 +1959,18 @@
1951
1959
  "description": "Message displayed representing the payment schedule when the order is free.",
1952
1960
  "message": "No payment required. This order is fully covered."
1953
1961
  },
1962
+ "components.SaleTunnel.Information.paymentMode.classic": {
1963
+ "description": "Label for the classic card payment option",
1964
+ "message": "Credit card payment"
1965
+ },
1966
+ "components.SaleTunnel.Information.paymentMode.cpf": {
1967
+ "description": "Label for the CPF (Mon Compte Formation) payment option",
1968
+ "message": "My Training Account (CPF)"
1969
+ },
1970
+ "components.SaleTunnel.Information.paymentMode.title": {
1971
+ "description": "Title for the payment mode selection section",
1972
+ "message": "Payment method"
1973
+ },
1954
1974
  "components.SaleTunnel.Information.paymentSchedule": {
1955
1975
  "description": "Title for the payment schedule section",
1956
1976
  "message": "Calendário de pagamento"
@@ -2241,7 +2261,7 @@
2241
2261
  },
2242
2262
  "components.SubscriptionButton.errorBatchOrderMaxOrders": {
2243
2263
  "description": "Error message shown when batch order creation fails because maximum number of orders is reached by an active offering rule.",
2244
- "message": "Unable to create the order: the maximum number of available seats for this offering has been reached. Please contact support for more information."
2264
+ "message": "Não foi possível criar a encomenda: foi atingido o número máximo de lugares disponíveis para esta oferta. Contacte o apoio ao cliente para obter mais informações."
2245
2265
  },
2246
2266
  "components.SubscriptionButton.errorDefault": {
2247
2267
  "description": "Error message shown when order creation request failed.",
@@ -2397,7 +2417,7 @@
2397
2417
  },
2398
2418
  "components.SyllabusCourseRunCompacted.selfPaceCoursePeriod": {
2399
2419
  "description": "Course date of an opened and self paced course run block",
2400
- "message": "Until {endDate, select, undefined {} other {{endDate}}}"
2420
+ "message": "Até {endDate, select, undefined {} other {{endDate}}}"
2401
2421
  },
2402
2422
  "components.SyllabusCourseRunCompacted.selfPaceNoEndDate": {
2403
2423
  "description": "Self paced course run block with no end date",
@@ -2445,7 +2465,7 @@
2445
2465
  },
2446
2466
  "components.TeacherDashboard.TeacherDashboardRoutes.organization.agreements.label": {
2447
2467
  "description": "Label of the organization agreements view.",
2448
- "message": "Agreements"
2468
+ "message": "Acordos"
2449
2469
  },
2450
2470
  "components.TeacherDashboard.TeacherDashboardRoutes.organization.contracts.label": {
2451
2471
  "description": "Label of the organization contracts view.",
@@ -2481,7 +2501,7 @@
2481
2501
  },
2482
2502
  "components.TeacherDashboard.TeacherDashboardRoutes.organization.quotes.label": {
2483
2503
  "description": "Label of the organization quotes view.",
2484
- "message": "Quotes"
2504
+ "message": "Cotações"
2485
2505
  },
2486
2506
  "components.TeacherDashboard.TeacherDashboardRoutes.profile.courses.label": {
2487
2507
  "description": "Label of the teacher courses liste view.",
@@ -2673,7 +2693,7 @@
2673
2693
  },
2674
2694
  "hooks.useBatchOrders.errorCreate": {
2675
2695
  "description": "Error message shown when batch order creation fails.",
2676
- "message": "An error occurred while creating the batch order."
2696
+ "message": "Ocorreu um erro ao criar a encomenda em lote."
2677
2697
  },
2678
2698
  "hooks.useCertificates.errorGet": {
2679
2699
  "description": "Error message shown to the user when certificates fetch request fails.",
@@ -2793,11 +2813,11 @@
2793
2813
  },
2794
2814
  "hooks.useOfferingOrganizations.errorNotFound": {
2795
2815
  "description": "Error message shown to the user when no organizations matches.",
2796
- "message": "Cannot find the organization"
2816
+ "message": "Não é possível encontrar a organização"
2797
2817
  },
2798
2818
  "hooks.useOfferingOrganizations.errorSelect": {
2799
2819
  "description": "Error message shown to the user when organizations fetch request fails.",
2800
- "message": "An error occurred while fetching organizations. Please retry later."
2820
+ "message": "Ocorreu um erro ao carregar as organizações. Por favor, tente novamente mais tarde."
2801
2821
  },
2802
2822
  "hooks.useOfferings.errorGet": {
2803
2823
  "description": "Error message shown to the user when offering fetch request fails.",
@@ -2845,7 +2865,7 @@
2845
2865
  },
2846
2866
  "hooks.useOrganizationsQuotes.errorGet": {
2847
2867
  "description": "Error message shown when batch order fetch fails.",
2848
- "message": "An error occurred while fetching the batch order."
2868
+ "message": "Ocorreu um erro ao recuperar a encomenda em lote."
2849
2869
  },
2850
2870
  "hooks.useResources.errorCreate": {
2851
2871
  "description": "Error message shown to the user when resource creation request fails.",
@@ -3001,11 +3021,11 @@
3001
3021
  },
3002
3022
  "pages.TeacherDashboardOrganizationAgreementsLayout.pageTitle": {
3003
3023
  "description": "Use for the page title of the organization agreements",
3004
- "message": "Agreements"
3024
+ "message": "Acordos"
3005
3025
  },
3006
3026
  "pages.TeacherDashboardOrganizationAgreementsLayout.signAllPendingAgreements": {
3007
3027
  "description": "Button to sign all pending agreements",
3008
- "message": "Sign all pending agreements ({ count })"
3028
+ "message": "Assinar todos os acordos pendentes ({ count })"
3009
3029
  },
3010
3030
  "pages.TeacherDashboardOrganizationContractsLayout.columnLearnerName": {
3011
3031
  "description": "Label for learnerName column",
@@ -3029,7 +3049,7 @@
3029
3049
  },
3030
3050
  "pages.TeacherDashboardOrganizationQuotesLayout.pageTitle": {
3031
3051
  "description": "Use for the page title of the organization quotes",
3032
- "message": "Quotes"
3052
+ "message": "Cotações"
3033
3053
  },
3034
3054
  "utils.ContractHelper.learnerHalfSigned": {
3035
3055
  "description": "Label for unsigned contract status in learner point of view",
@@ -1911,6 +1911,14 @@
1911
1911
  "description": "Validate button for the credit card modal",
1912
1912
  "message": "Validate"
1913
1913
  },
1914
+ "components.SaleTunnel.Information.cpf.buttonLabel": {
1915
+ "description": "Label for the button redirecting to Mon Compte Formation",
1916
+ "message": "Go to Mon Compte Formation"
1917
+ },
1918
+ "components.SaleTunnel.Information.cpf.description": {
1919
+ "description": "Explanatory text for the CPF payment option",
1920
+ "message": "Purchase your training course by using your Personal Training Account (CPF) on Mon Compte Formation."
1921
+ },
1914
1922
  "components.SaleTunnel.Information.description": {
1915
1923
  "description": "Description of the information section",
1916
1924
  "message": "This information will be used for billing"
@@ -1951,6 +1959,18 @@
1951
1959
  "description": "Message displayed representing the payment schedule when the order is free.",
1952
1960
  "message": "No payment required. This order is fully covered."
1953
1961
  },
1962
+ "components.SaleTunnel.Information.paymentMode.classic": {
1963
+ "description": "Label for the classic card payment option",
1964
+ "message": "Credit card payment"
1965
+ },
1966
+ "components.SaleTunnel.Information.paymentMode.cpf": {
1967
+ "description": "Label for the CPF (Mon Compte Formation) payment option",
1968
+ "message": "My Training Account (CPF)"
1969
+ },
1970
+ "components.SaleTunnel.Information.paymentMode.title": {
1971
+ "description": "Title for the payment mode selection section",
1972
+ "message": "Payment method"
1973
+ },
1954
1974
  "components.SaleTunnel.Information.paymentSchedule": {
1955
1975
  "description": "Title for the payment schedule section",
1956
1976
  "message": "Payment schedule"