\n \n);\n\nFooterCopyrightSection.propTypes = {\n intl: intlShape.isRequired,\n};\n\nclass SiteFooter extends React.Component {\n constructor(props) {\n super(props);\n this.externalLinkClickHandler = this.externalLinkClickHandler.bind(this);\n }\n\n externalLinkClickHandler(event) {\n const label = event.currentTarget.getAttribute('href');\n const eventName = EVENT_NAMES.FOOTER_LINK;\n const properties = {\n category: 'outbound_link',\n label,\n };\n sendTrackEvent(eventName, properties);\n }\n\n render() {\n const {\n supportedLanguages,\n onLanguageSelected,\n logo,\n intl,\n } = this.props;\n const showLanguageSelector = supportedLanguages.length > 0 && onLanguageSelected;\n const { config } = this.context;\n\n return (\n \n );\n }\n}\n\nSiteFooter.contextType = AppContext;\n\nSiteFooter.propTypes = {\n intl: intlShape.isRequired,\n logo: PropTypes.string,\n onLanguageSelected: PropTypes.func,\n supportedLanguages: PropTypes.arrayOf(PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })),\n};\n\nSiteFooter.defaultProps = {\n logo: undefined,\n onLanguageSelected: undefined,\n supportedLanguages: [],\n};\n\nexport default injectIntl(SiteFooter);\nexport { EVENT_NAMES };\n"],"mappings":"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","ignoreList":[]}
\ No newline at end of file
diff --git a/dist/components/Footer.messages.js b/dist/components/Footer.messages.js
new file mode 100644
index 000000000..8f30b9218
--- /dev/null
+++ b/dist/components/Footer.messages.js
@@ -0,0 +1,120 @@
+import { defineMessages } from '@edx/frontend-platform/i18n';
+var messages = defineMessages({
+ 'footer.languageForm.select.label': {
+ id: 'footer.languageForm.select.label',
+ defaultMessage: 'Choose Language',
+ description: 'The label for the laguage select part of the language selection form.'
+ },
+ 'footer.languageForm.submit.label': {
+ id: 'footer.languageForm.submit.label',
+ defaultMessage: 'Apply',
+ description: 'The label for button to submit the language selection form.'
+ },
+ 'footer.logo.altText': {
+ id: 'footer.logo.altText',
+ defaultMessage: 'Powered by Open edX',
+ description: 'alt text for the footer logo.'
+ },
+ 'footer.logo.ariaLabel': {
+ id: 'footer.logo.ariaLabel',
+ defaultMessage: 'edX Home',
+ description: 'aria-label for the footer logo.'
+ },
+ 'footer.ariaLabel': {
+ id: 'footer.ariaLabel',
+ defaultMessage: 'Page Footer',
+ description: 'aria-label for the footer component'
+ },
+ 'footer.copyright.message': {
+ id: 'footer.copyright.message',
+ defaultMessage: 'All rights reserved',
+ description: 'Message to display on the copyright section of the footer'
+ },
+ 'footer.nau.title': {
+ id: 'footer.nau.title',
+ defaultMessage: 'NAU',
+ description: 'The label for the nau section of the footer.'
+ },
+ 'footer.nau.about': {
+ id: 'footer.nau.about',
+ defaultMessage: 'About',
+ description: 'The label for the link to the nau about page.'
+ },
+ 'footer.nau.courses': {
+ id: 'footer.nau.courses',
+ defaultMessage: 'Courses',
+ description: 'The label for the link to the nau courses page.'
+ },
+ 'footer.nau.partner': {
+ id: 'footer.nau.partner',
+ defaultMessage: 'How to become a partner',
+ description: 'The label for the link to the nau partner page.'
+ },
+ 'footer.nau.communication': {
+ id: 'footer.nau.communication',
+ defaultMessage: 'Communication',
+ description: 'The label for the communication section of the nau footer.'
+ },
+ 'footer.nau.help': {
+ id: 'footer.nau.help',
+ defaultMessage: 'Help',
+ description: 'The label for the link to the nau help page.'
+ },
+ 'footer.nau.news': {
+ id: 'footer.nau.news',
+ defaultMessage: 'News',
+ description: 'The label for the link to the nau news page.'
+ },
+ 'footer.nau.legal': {
+ id: 'footer.nau.legal',
+ defaultMessage: 'Legal',
+ description: 'The label for the legal section of the nau footer.'
+ },
+ 'footer.nau.mediakit': {
+ id: 'footer.nau.mediakit',
+ defaultMessage: 'Media Kit',
+ description: 'The label for the link to the nau media kit page.'
+ },
+ 'footer.nau.termsconditions': {
+ id: 'footer.nau.termsconditions',
+ defaultMessage: 'Terms and Conditions',
+ description: 'The label for the link to the nau terms and conditions page.'
+ },
+ 'footer.nau.privacypolicy': {
+ id: 'footer.nau.privacypolicy',
+ defaultMessage: 'Privacy Policy',
+ description: 'The label for the link to the nau privacy policy page.'
+ },
+ 'footer.nau.cookies': {
+ id: 'footer.nau.cookies',
+ defaultMessage: 'Cookies Policy',
+ description: 'The label for the link to the nau cookies policy page.'
+ },
+ 'footer.nau.certification': {
+ id: 'footer.nau.certification',
+ defaultMessage: 'Certification Policy',
+ description: 'The label for the link to the nau certification policy page.'
+ },
+ 'footer.nau.codeofhonor': {
+ id: 'footer.nau.codeofhonor',
+ defaultMessage: 'Code of Honor',
+ description: 'The label for the link to the nau code of honor page.'
+ },
+ 'footer.nau.social.facebook': {
+ id: 'footer.nau.social.facebook',
+ defaultMessage: 'Follow us on Facebook',
+ description: 'The label for the link to the nau facebook page.'
+ },
+ 'footer.nau.social.linkedin': {
+ id: 'footer.nau.social.linkedin',
+ defaultMessage: 'Follow us on LinkedIn',
+ description: 'The label for the link to the nau linkedin page.'
+ },
+ 'footer.nau.social.newsletter': {
+ id: 'footer.nau.social.newsletter',
+ defaultMessage: 'Subscribe to our newsletter',
+ description: 'The label for the link to the nau newsletter page.'
+ }
+});
+export default messages;
+//# sourceMappingURL=Footer.messages.js.map
\ No newline at end of file
diff --git a/dist/components/Footer.messages.js.map b/dist/components/Footer.messages.js.map
new file mode 100644
index 000000000..239afc01e
--- /dev/null
+++ b/dist/components/Footer.messages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Footer.messages.js","names":["defineMessages","messages","id","defaultMessage","description"],"sources":["../../src/components/Footer.messages.js"],"sourcesContent":["import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n 'footer.languageForm.select.label': {\n id: 'footer.languageForm.select.label',\n defaultMessage: 'Choose Language',\n description: 'The label for the laguage select part of the language selection form.',\n },\n 'footer.languageForm.submit.label': {\n id: 'footer.languageForm.submit.label',\n defaultMessage: 'Apply',\n description: 'The label for button to submit the language selection form.',\n },\n 'footer.logo.altText': {\n id: 'footer.logo.altText',\n defaultMessage: 'Powered by Open edX',\n description: 'alt text for the footer logo.',\n },\n 'footer.logo.ariaLabel': {\n id: 'footer.logo.ariaLabel',\n defaultMessage: 'edX Home',\n description: 'aria-label for the footer logo.',\n },\n 'footer.ariaLabel': {\n id: 'footer.ariaLabel',\n defaultMessage: 'Page Footer',\n description: 'aria-label for the footer component',\n },\n 'footer.copyright.message': {\n id: 'footer.copyright.message',\n defaultMessage: 'All rights reserved',\n description: 'Message to display on the copyright section of the footer',\n },\n 'footer.nau.title': {\n id: 'footer.nau.title',\n defaultMessage: 'NAU',\n description: 'The label for the nau section of the footer.',\n },\n 'footer.nau.about': {\n id: 'footer.nau.about',\n defaultMessage: 'About',\n description: 'The label for the link to the nau about page.',\n },\n 'footer.nau.courses': {\n id: 'footer.nau.courses',\n defaultMessage: 'Courses',\n description: 'The label for the link to the nau courses page.',\n },\n 'footer.nau.partner': {\n id: 'footer.nau.partner',\n defaultMessage: 'How to become a partner',\n description: 'The label for the link to the nau partner page.',\n },\n 'footer.nau.communication': {\n id: 'footer.nau.communication',\n defaultMessage: 'Communication',\n description: 'The label for the communication section of the nau footer.',\n },\n 'footer.nau.help': {\n id: 'footer.nau.help',\n defaultMessage: 'Help',\n description: 'The label for the link to the nau help page.',\n },\n 'footer.nau.news': {\n id: 'footer.nau.news',\n defaultMessage: 'News',\n description: 'The label for the link to the nau news page.',\n },\n 'footer.nau.legal': {\n id: 'footer.nau.legal',\n defaultMessage: 'Legal',\n description: 'The label for the legal section of the nau footer.',\n },\n 'footer.nau.mediakit': {\n id: 'footer.nau.mediakit',\n defaultMessage: 'Media Kit',\n description: 'The label for the link to the nau media kit page.',\n },\n 'footer.nau.termsconditions': {\n id: 'footer.nau.termsconditions',\n defaultMessage: 'Terms and Conditions',\n description: 'The label for the link to the nau terms and conditions page.',\n },\n 'footer.nau.privacypolicy': {\n id: 'footer.nau.privacypolicy',\n defaultMessage: 'Privacy Policy',\n description: 'The label for the link to the nau privacy policy page.',\n },\n 'footer.nau.cookies': {\n id: 'footer.nau.cookies',\n defaultMessage: 'Cookies Policy',\n description: 'The label for the link to the nau cookies policy page.',\n },\n 'footer.nau.certification': {\n id: 'footer.nau.certification',\n defaultMessage: 'Certification Policy',\n description: 'The label for the link to the nau certification policy page.',\n },\n 'footer.nau.codeofhonor': {\n id: 'footer.nau.codeofhonor',\n defaultMessage: 'Code of Honor',\n description: 'The label for the link to the nau code of honor page.',\n },\n 'footer.nau.social.facebook': {\n id: 'footer.nau.social.facebook',\n defaultMessage: 'Follow us on Facebook',\n description: 'The label for the link to the nau facebook page.',\n },\n 'footer.nau.social.linkedin': {\n id: 'footer.nau.social.linkedin',\n defaultMessage: 'Follow us on LinkedIn',\n description: 'The label for the link to the nau linkedin page.',\n },\n 'footer.nau.social.newsletter': {\n id: 'footer.nau.social.newsletter',\n defaultMessage: 'Subscribe to our newsletter',\n description: 'The label for the link to the nau newsletter page.',\n },\n});\n\nexport default messages;\n"],"mappings":"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","ignoreList":[]}
\ No newline at end of file
diff --git a/dist/components/LanguageSelector.js b/dist/components/LanguageSelector.js
new file mode 100644
index 000000000..85a14c91c
--- /dev/null
+++ b/dist/components/LanguageSelector.js
@@ -0,0 +1,61 @@
+var _excluded = ["intl", "options", "onSubmit"];
+function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
+function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
+import React from 'react';
+import PropTypes from 'prop-types';
+import { injectIntl, intlShape, FormattedMessage } from '@edx/frontend-platform/i18n';
+var LanguageSelector = function LanguageSelector(_ref) {
+ var intl = _ref.intl,
+ options = _ref.options,
+ onSubmit = _ref.onSubmit,
+ props = _objectWithoutProperties(_ref, _excluded);
+ var handleSubmit = function handleSubmit(e) {
+ e.preventDefault();
+ var languageCode = e.target.elements['site-footer-language-select'].value;
+ onSubmit(languageCode);
+ };
+ return /*#__PURE__*/React.createElement("form", _extends({
+ className: "form-inline",
+ onSubmit: handleSubmit
+ }, props), /*#__PURE__*/React.createElement("div", {
+ className: "form-group"
+ }, /*#__PURE__*/React.createElement("label", {
+ htmlFor: "site-footer-language-select",
+ className: "d-inline-block m-0"
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
+ id: "footer.languageForm.select.label",
+ defaultMessage: "Choose Language",
+ description: "The label for the laguage select part of the language selection form."
+ })), /*#__PURE__*/React.createElement("select", {
+ id: "site-footer-language-select",
+ className: "form-control-sm mx-2",
+ name: "site-footer-language-select",
+ defaultValue: intl.locale
+ }, options.map(function (_ref2) {
+ var value = _ref2.value,
+ label = _ref2.label;
+ return /*#__PURE__*/React.createElement("option", {
+ key: value,
+ value: value
+ }, label);
+ })), /*#__PURE__*/React.createElement("button", {
+ "data-testid": "site-footer-submit-btn",
+ className: "btn btn-outline-primary btn-sm",
+ type: "submit"
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
+ id: "footer.languageForm.submit.label",
+ defaultMessage: "Apply",
+ description: "The label for button to submit the language selection form."
+ }))));
+};
+LanguageSelector.propTypes = {
+ intl: intlShape.isRequired,
+ onSubmit: PropTypes.func.isRequired,
+ options: PropTypes.arrayOf(PropTypes.shape({
+ value: PropTypes.string,
+ label: PropTypes.string
+ })).isRequired
+};
+export default injectIntl(LanguageSelector);
+//# sourceMappingURL=LanguageSelector.js.map
\ No newline at end of file
diff --git a/dist/components/LanguageSelector.js.map b/dist/components/LanguageSelector.js.map
new file mode 100644
index 000000000..9e72f0aeb
--- /dev/null
+++ b/dist/components/LanguageSelector.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"LanguageSelector.js","names":["React","PropTypes","injectIntl","intlShape","FormattedMessage","LanguageSelector","_ref","intl","options","onSubmit","props","_objectWithoutProperties","_excluded","handleSubmit","e","preventDefault","languageCode","target","elements","value","createElement","_extends","className","htmlFor","id","defaultMessage","description","name","defaultValue","locale","map","_ref2","label","key","type","propTypes","isRequired","func","arrayOf","shape","string"],"sources":["../../src/components/LanguageSelector.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, intlShape, FormattedMessage } from '@edx/frontend-platform/i18n';\n\nconst LanguageSelector = ({\n intl, options, onSubmit, ...props\n}) => {\n const handleSubmit = (e) => {\n e.preventDefault();\n const languageCode = e.target.elements['site-footer-language-select'].value;\n onSubmit(languageCode);\n };\n\n return (\n \n );\n};\n\nLanguageSelector.propTypes = {\n intl: intlShape.isRequired,\n onSubmit: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n })).isRequired,\n};\n\nexport default injectIntl(LanguageSelector);\n"],"mappings":";;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,UAAU,EAAEC,SAAS,EAAEC,gBAAgB,QAAQ,6BAA6B;AAErF,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAAC,IAAA,EAEhB;EAAA,IADJC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAEC,OAAO,GAAAF,IAAA,CAAPE,OAAO;IAAEC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IAAKC,KAAK,GAAAC,wBAAA,CAAAL,IAAA,EAAAM,SAAA;EAEjC,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,CAAC,EAAK;IAC1BA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClB,IAAMC,YAAY,GAAGF,CAAC,CAACG,MAAM,CAACC,QAAQ,CAAC,6BAA6B,CAAC,CAACC,KAAK;IAC3EV,QAAQ,CAACO,YAAY,CAAC;EACxB,CAAC;EAED,oBACEhB,KAAA,CAAAoB,aAAA,SAAAC,QAAA;IACEC,SAAS,EAAC,aAAa;IACvBb,QAAQ,EAAEI;EAAa,GACnBH,KAAK,gBAETV,KAAA,CAAAoB,aAAA;IAAKE,SAAS,EAAC;EAAY,gBAEzBtB,KAAA,CAAAoB,aAAA;IAAOG,OAAO,EAAC,6BAA6B;IAACD,SAAS,EAAC;EAAoB,gBACzEtB,KAAA,CAAAoB,aAAA,CAAChB,gBAAgB;IACfoB,EAAE,EAAC,kCAAkC;IACrCC,cAAc,EAAC,iBAAiB;IAChCC,WAAW,EAAC;EAAuE,CACpF,CACI,CAAC,eACR1B,KAAA,CAAAoB,aAAA;IACEI,EAAE,EAAC,6BAA6B;IAChCF,SAAS,EAAC,sBAAsB;IAChCK,IAAI,EAAC,6BAA6B;IAClCC,YAAY,EAAErB,IAAI,CAACsB;EAAO,GAEzBrB,OAAO,CAACsB,GAAG,CAAC,UAAAC,KAAA;IAAA,IAAGZ,KAAK,GAAAY,KAAA,CAALZ,KAAK;MAAEa,KAAK,GAAAD,KAAA,CAALC,KAAK;IAAA,oBAAOhC,KAAA,CAAAoB,aAAA;MAAQa,GAAG,EAAEd,KAAM;MAACA,KAAK,EAAEA;IAAM,GAAEa,KAAc,CAAC;EAAA,EAC/E,CAAC,eACThC,KAAA,CAAAoB,aAAA;IAAQ,eAAY,wBAAwB;IAACE,SAAS,EAAC,gCAAgC;IAACY,IAAI,EAAC;EAAQ,gBACnGlC,KAAA,CAAAoB,aAAA,CAAChB,gBAAgB;IACfoB,EAAE,EAAC,kCAAkC;IACrCC,cAAc,EAAC,OAAO;IACtBC,WAAW,EAAC;EAA6D,CAC1E,CACK,CACL,CACD,CAAC;AAEX,CAAC;AAEDrB,gBAAgB,CAAC8B,SAAS,GAAG;EAC3B5B,IAAI,EAAEJ,SAAS,CAACiC,UAAU;EAC1B3B,QAAQ,EAAER,SAAS,CAACoC,IAAI,CAACD,UAAU;EACnC5B,OAAO,EAAEP,SAAS,CAACqC,OAAO,CAACrC,SAAS,CAACsC,KAAK,CAAC;IACzCpB,KAAK,EAAElB,SAAS,CAACuC,MAAM;IACvBR,KAAK,EAAE/B,SAAS,CAACuC;EACnB,CAAC,CAAC,CAAC,CAACJ;AACN,CAAC;AAED,eAAelC,UAAU,CAACG,gBAAgB,CAAC","ignoreList":[]}
\ No newline at end of file
diff --git a/dist/components/footer-links/FooterLinks.js b/dist/components/footer-links/FooterLinks.js
new file mode 100644
index 000000000..25aecd1ad
--- /dev/null
+++ b/dist/components/footer-links/FooterLinks.js
@@ -0,0 +1,60 @@
+function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
+import React from 'react';
+import PropTypes from 'prop-types';
+import { intlShape } from '@edx/frontend-platform/i18n';
+import messages from '../Footer.messages';
+var FooterLinkItem = function FooterLinkItem(_ref) {
+ var intl = _ref.intl,
+ link = _ref.link;
+ var getLocaleCode = intl.locale.split('-')[0] === 'pt' ? 'pt' : 'en';
+ var renderUrl = function renderUrl(url) {
+ if (_typeof(url) === 'object') {
+ return url[getLocaleCode];
+ }
+ return url;
+ };
+ return /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement("a", {
+ href: renderUrl(link.url)
+ }, intl.formatMessage(messages[link.title])));
+};
+var FooterLinks = function FooterLinks(_ref2) {
+ var intl = _ref2.intl,
+ links = _ref2.links;
+ if (!links) {
+ return null;
+ }
+ return /*#__PURE__*/React.createElement("nav", {
+ className: "footer-links d-md-flex justify-content-between px-4"
+ }, links.map(function (link) {
+ return /*#__PURE__*/React.createElement("div", {
+ className: "footer-links-navigation py-3"
+ }, /*#__PURE__*/React.createElement("span", null, intl.formatMessage(messages[link.title])), /*#__PURE__*/React.createElement("ul", null, link.menus.map(function (menu) {
+ return /*#__PURE__*/React.createElement(FooterLinkItem, {
+ intl: intl,
+ link: menu
+ });
+ })));
+ }));
+};
+FooterLinkItem.propTypes = {
+ intl: intlShape.isRequired,
+ link: PropTypes.shape({
+ title: PropTypes.string.isRequired,
+ url: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired
+ }).isRequired
+};
+FooterLinks.propTypes = {
+ intl: intlShape.isRequired,
+ links: PropTypes.arrayOf(PropTypes.shape({
+ title: PropTypes.string.isRequired,
+ menus: PropTypes.arrayOf(PropTypes.shape({
+ title: PropTypes.string.isRequired,
+ url: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired
+ })).isRequired
+ }))
+};
+FooterLinks.defaultProps = {
+ links: []
+};
+export default FooterLinks;
+//# sourceMappingURL=FooterLinks.js.map
\ No newline at end of file
diff --git a/dist/components/footer-links/FooterLinks.js.map b/dist/components/footer-links/FooterLinks.js.map
new file mode 100644
index 000000000..5ade22ae7
--- /dev/null
+++ b/dist/components/footer-links/FooterLinks.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"FooterLinks.js","names":["React","PropTypes","intlShape","messages","FooterLinkItem","_ref","intl","link","getLocaleCode","locale","split","renderUrl","url","_typeof","createElement","href","formatMessage","title","FooterLinks","_ref2","links","className","map","menus","menu","propTypes","isRequired","shape","string","oneOfType","object","arrayOf","defaultProps"],"sources":["../../../src/components/footer-links/FooterLinks.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { intlShape } from '@edx/frontend-platform/i18n';\nimport messages from '../Footer.messages';\n\nconst FooterLinkItem = ({ intl, link }) => {\n const getLocaleCode = (intl.locale.split('-')[0] === 'pt') ? 'pt' : 'en';\n\n const renderUrl = (url) => {\n if (typeof url === 'object') { return url[getLocaleCode]; }\n return url;\n };\n\n return (\n