{ "version": 3, "sources": ["../../../../../../internal/esbuild/entrypoints/modern/classic/category.ts", "sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=703522d0-950c-4125-894d-9d73c9653ba0", "../../../../../../internal/esbuild/entrypoints/modern/classic/category.ts", "../../src/modern/features/categories/index.js", "../../src/modern/models/categories.js", "../../src/modern/features/categories/components/TaggedProjectList.js", "../../src/modern/features/categories/styles.js", "../../src/modern/features/categories/components/CategoryPartner.js"], "sourcesContent": ["\n import \"_sentry-debug-id-injection-stub\";\n import * as OriginalModule from \"./internal/esbuild/entrypoints/modern/classic/category.ts\";\n export default OriginalModule.default;\n export * from \"./internal/esbuild/entrypoints/modern/classic/category.ts\";", ";{try{let e=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\"88b392d7-ebd8-4d86-b2aa-397958973b9c\",e._sentryDebugIdIdentifier=\"sentry-dbid-88b392d7-ebd8-4d86-b2aa-397958973b9c\")}catch(e){}};", "import '@owl-nest/polyfill'\nimport '../../../../../src/ulule/static/site/src/modern/features/init/index.js'\nimport '../../../../../src/ulule/static/site/src/modern/features/categories/index.js'\n", "import * as React from 'react'\nimport * as ReactDOM from 'react-dom/client'\nimport PropTypes from 'prop-types'\nimport { YakThemeProvider } from 'next-yak'\n\nimport { t, tc } from '@owl-nest/localize'\nimport { COLORS, styles as S } from '@ulule/owl-kit-components/next'\n\nimport { getCurrentLanguage } from '$features/init/language'\nimport { getCurrentCurrency } from '$features/init/currency'\nimport { getResourceUrl } from '$models/resources'\nimport config from '$utils/config'\nimport { categoryDescription } from '$models/categories'\n\nimport TaggedProjectList from './components/TaggedProjectList'\nimport CategoryPartner from './components/CategoryPartner'\n\nimport * as AppStyle from './styles'\n\nconfig.set({\n category: { ...window.CATEGORY_DATA },\n searchData: { ...window.CATEGORY_PAGE_SEARCH_DATA },\n})\n\nconst CategoryPage = ({ category, currentCurrency, currentLanguage, presaleCreationUrl }) => {\n const {\n accent_color: accentColor,\n background,\n bg_color: bgColor,\n id,\n name,\n partner,\n slug,\n subtitle,\n title,\n } = category\n const currentUser = window.UFE && window.UFE.user\n const titleImage = getResourceUrl(title)\n const { is_authenticated: userIsAuthenticated } = currentUser\n\n const theme = {\n colors: {\n accent: accentColor,\n primary: bgColor || COLORS.PRIMARY_BLUE_500,\n },\n }\n\n const initialSearchSettings = {\n filters: {\n categories: [id],\n statuses: ['all'],\n },\n sorting: 'popular',\n }\n const searchData = config.get('searchData')\n\n return (\n \n \n \n \n \n {titleImage ? (\n \n ) : (\n {name}\n )}\n {subtitle && {subtitle}}\n \n \n\n \n \n \n \n\n \n \n \n {tc('You have a[br][strong: %(category)s] project?', {\n strong: ,\n br:
,\n category: name,\n })}\n
\n {!partner && (\n \n )}\n \n {t('Launch my project')}\n \n
\n {partner && (\n \n )}\n
\n
\n
\n
\n )\n}\n\nCategoryPage.defaultProps = {\n category: {},\n}\n\nCategoryPage.propTypes = {\n category: PropTypes.shape({\n accent_color: PropTypes.string,\n background: PropTypes.shape({\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.number,\n url: PropTypes.string,\n width: PropTypes.number,\n }),\n }),\n }),\n bg_color: PropTypes.string,\n cta_description: PropTypes.string,\n description: PropTypes.string,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n name: PropTypes.string.isRequired,\n title: PropTypes.shape({\n value: PropTypes.string.isRequired,\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.string,\n url: PropTypes.string.isRequired,\n width: PropTypes.string,\n }).isRequired,\n }),\n }),\n }),\n currentCurrency: PropTypes.string.isRequired,\n currentLanguage: PropTypes.string.isRequired,\n presaleCreationUrl: PropTypes.string.isRequired,\n}\n\nconst renderApp = (currency, language) => {\n const categoryAppContainer = document.getElementById('react-category-app')\n const { presaleCreationUrl } = categoryAppContainer && categoryAppContainer.dataset\n\n const root = ReactDOM.createRoot(categoryAppContainer)\n root.render(\n ,\n )\n}\n\n// Initialize application after fetching geolocation in init.es6.js\n// TODO: @ludovic: init a React application with portals to\n// render faster elements that not required location\nwindow.addEventListener('js:location:loaded', async () => {\n const currentLanguage = getCurrentLanguage()\n\n let currentCurrency\n try {\n currentCurrency = await getCurrentCurrency()\n } catch (error) {\n console.error(error)\n }\n\n renderApp(currentCurrency, currentLanguage)\n})\n", "const scoreMatch = (tag, lang, country) => {\n const langMatch = tag.languages && tag.languages.includes(lang)\n const countryMatch = tag.countries && tag.countries.includes(country)\n\n if (langMatch && countryMatch) {\n return 4\n }\n\n if (countryMatch && !tag.languages.length) {\n return 3\n }\n\n if (langMatch && !tag.countries.length) {\n return 2\n }\n\n if (!tag.countries.length && !tag.languages.length) {\n return 1\n }\n\n return 0\n}\n\nexport const categoryName = (category, lang) => {\n if (category && category.name && category.name[lang]) {\n return category && category.name && category.name[lang]\n }\n\n return category && category.slug\n}\n\nexport const categoryDescription = (category, lang) => {\n if (category && category.description && category.description[lang]) {\n return category && category.description && category.description[lang]\n }\n\n return ''\n}\n\n/**\n * Get a list of unique categories which are filtered by lang & country.\n * This function group all item with the same id (slug).\n * Then, it applies a matching score in function of params lang and country for each grouped item.\n * Finally, it takes the item with the best score.\n * @param {Object[]} list\n * @param {string} lang - selected language\n * @param {string} country - selected country\n * @returns {Object[]}\n * */\nexport const filterCategories = (list = [], lang = '', country = '') => {\n if (!lang || !country || list.length === 0) return []\n\n const matches = {}\n\n list.forEach(item => {\n const uniqueId = item.tag.slug\n const score = scoreMatch(item, lang, country)\n const previousMatch = matches[uniqueId]\n\n if (score && (!previousMatch || previousMatch.score < score)) {\n matches[uniqueId] = { score, item }\n }\n })\n\n return Object.keys(matches)\n .map(tagId => {\n const tagItem = Object.assign({}, matches[tagId].item)\n // Update absolute_url value with current country to avoid redirection\n tagItem.tag.absolute_url = `${tagItem.tag.absolute_url}?country=${country}`\n\n return tagItem\n })\n .sort((prevTag, nextTag) => {\n if (!prevTag.searchbar_position) return 1\n if (!nextTag.searchbar_position) return -1\n if (prevTag.searchbar_position > nextTag.searchbar_position) return 1\n if (prevTag.searchbar_position < nextTag.searchbar_position) return -1\n return 0\n })\n}\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { t, tc } from '@owl-nest/localize'\nimport { DropdownFilter, LoadMoreButton, Icon } from '@ulule/owl-kit-components'\n\nimport { projectShape } from '$utils/prop-types'\n\nimport ProjectList from '$components/ProjectsList/ProjectsList'\nimport SortingBar from '$features/discover/components/sortingbar'\nimport { withProjectResults, DEFAULT_LIMIT } from '$hocs/ProjectSearchResults'\n\nimport * as S from '../styles'\n\nconst CURRENCY_RATES = window.CURRENCIES && { ...window.CURRENCIES.RATES }\nconst { noResults: NO_RESULTS_IMAGE, remindMe: REMIND_ME_IMAGE } = { ...window.CATEGORY_PAGE_TAGGED_PROJECTS_ASSETS }\n\nconst TaggedProjectList = ({\n categoryName,\n categorySlug,\n currentFilters,\n currentCurrency,\n currentLanguage,\n currentSorting,\n errorFetchingMore,\n filters = [],\n isFetching,\n isFetchingMore,\n loadMoreProjects,\n moreProjectsToFetch,\n noProjectWithInitialParams,\n projectCount,\n results,\n sorting,\n updateFilter,\n updateSorting,\n userIsAuthenticated\n}) => {\n return noProjectWithInitialParams ? null : (\n \n \n \n {\n updateFilter(filters[0].name, event.target.value)\n }}\n options={filters[0].options}\n useDefault\n value={currentFilters.statuses[0]}\n />\n \n\n {!projectCount && !isFetching ? (\n // TODO: Eventually put in common with the channel page\n \n \n \n {tc('[strong: No results]. We invite you to change your search criteria.', { strong: })}\n \n updateFilter('statuses', 'all')}>\n \n {t('Reinitialize filters')}\n \n \n ) : (\n \n \n \n )}\n\n {moreProjectsToFetch && (\n \n \n \n )}\n \n )\n}\n\nTaggedProjectList.defaultProps = {\n currentFilters: {},\n currentSorting: null,\n errorFetchingMore: false,\n isFetching: true,\n isFetchingMore: false,\n moreProjectsToFetch: false,\n noProjectWithInitialParams: false,\n projectCount: 0,\n results: [],\n userIsAuthenticated: false\n}\n\nTaggedProjectList.propTypes = {\n categoryName: PropTypes.string.isRequired,\n currentFilters: PropTypes.objectOf(PropTypes.array),\n currentCurrency: PropTypes.string.isRequired,\n currentLanguage: PropTypes.string.isRequired,\n currentSorting: PropTypes.string,\n errorFetchingMore: PropTypes.bool,\n filters: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n options: PropTypes.arrayOf(PropTypes.shape({})),\n position: PropTypes.number\n })\n ).isRequired,\n isFetching: PropTypes.bool,\n isFetchingMore: PropTypes.bool,\n loadMoreProjects: PropTypes.func.isRequired,\n moreProjectsToFetch: PropTypes.bool,\n noProjectWithInitialParams: PropTypes.bool,\n projectCount: PropTypes.number,\n results: PropTypes.arrayOf(projectShape),\n sorting: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired\n })\n ).isRequired,\n updateFilter: PropTypes.func.isRequired,\n updateSorting: PropTypes.func.isRequired,\n userIsAuthenticated: PropTypes.bool\n}\n\nexport default withProjectResults(TaggedProjectList)\n", "import { styled } from 'next-yak'\nimport { CallToAction, COLORS, FONTS, SecondaryLink, Title1, Title2 } from '@ulule/owl-kit-components'\n\nimport { rem } from '$utils/styles'\n\nconst DEFAULT_GRID_BASIS = 1146\nconst HEIGHT_SHIFT = 220\nconst SPACING = 16\n\n/**\n * HEADER LAYOUT\n */\n\nexport const CategoryPageCover = styled.div`\n background-color: ${(props) => props.theme.colors.accent || props.theme.colors.primary};\n border-bottom: 4px solid ${(props) => props.theme.colors.primary};\n min-height: ${() => rem(300)};\n\n @media screen and (min-width: 768px) {\n background-image: ${(props) => `url(${props.background})`};\n background-repeat: no-repeat;\n min-height: ${() => rem(350)};\n background-position: center;\n }\n`\n\nexport const CategoryPageHeader = styled.header``\n\nexport const CategoryPageTitleContainer = styled.div`\n margin: 12% auto -${() => rem(68)};\n max-width: ${() => rem(DEFAULT_GRID_BASIS)};\n padding: 0 ${() => rem(SPACING)};\n position: relative;\n\n @media screen and (min-width: 768px) {\n margin: auto;\n }\n`\n\n/**\n * HEADER COMPONENTS\n */\n\nexport const CategoryPageLogo = styled.img`\n bottom: ${(props) => (props.withSubtitle ? rem(HEIGHT_SHIFT - SPACING) : rem(HEIGHT_SHIFT - SPACING * 4))};\n margin: 0;\n max-width: 90%;\n position: absolute;\n`\n\nexport const CategoryPageTitle = styled.h1`\n bottom: ${() => rem(HEIGHT_SHIFT - SPACING)};\n color: ${COLORS.PRIMARY_GREY_000};\n font-family: ${FONTS.SECONDARY_FONT};\n font-size: ${() => rem(48)};\n margin: 0;\n position: absolute;\n`\n\nexport const CategoryPageSubtitle = styled(Title1)`\n bottom: ${() => rem(HEIGHT_SHIFT - SPACING * 4)};\n color: ${COLORS.PRIMARY_GREY_000};\n position: absolute;\n`\n\n/**\n * BODY LAYOUT\n */\n\nexport const CategoryPageContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n margin: auto;\n margin-bottom: ${() => rem(52)};\n margin-top: -${() => rem(120)};\n max-width: ${() => rem(DEFAULT_GRID_BASIS)};\n padding: 0 ${() => rem(SPACING)};\n\n @media (min-width: 768px) {\n flex-direction: row;\n }\n`\n\nexport const CategoryPageProjectListWrapper = styled.div`\n background-color: white;\n border-radius: 6px;\n margin-bottom: ${() => rem(22)};\n padding: ${() => rem(32)} ${() => rem(16)};\n width: 100%;\n\n @media screen and (min-width: 768px) {\n margin-bottom: 0;\n margin-right: ${() => rem(12)};\n }\n`\n\nexport const CategoryPageRightAside = styled.aside`\n margin: 0 auto;\n max-width: ${() => rem(360)};\n width: 100%;\n`\n\n/**\n * BODY COMPONENTS\n */\n\nexport const CategoryPageInfoCardTitle = styled(Title2)`\n font-size: ${() => rem(22)};\n line-height: ${() => rem(32)};\n margin-bottom: ${() => rem(22)};\n`\n\nexport const CategoryPageInfoCard = styled.div`\n background: #ffffff;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n padding: ${() => rem(20)} ${() => rem(14)};\n width: 100%;\n\n ${CategoryPageInfoCardTitle} {\n text-align: center;\n\n strong {\n color: ${(props) => props.theme.colors.primary || COLORS.PRIMARY_BLUE_500};\n text-transform: uppercase;\n }\n }\n\n @media (min-width: 768px) {\n padding: ${() => rem(23)};\n padding-bottom: ${() => rem(20)};\n }\n`\n\nexport const CategoryPageInfoCardCTA = styled(CallToAction)`\n background-color: ${(props) => props.theme.colors.primary || COLORS.PRIMARY_BLUE_500};\n margin-top: ${() => rem(20)};\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary || COLORS.PRIMARY_BLUE_500};\n opacity: 0.9;\n }\n`\n\nexport const CategoryPageTaggedProjectList = styled.div`\n /* HACK: TODO: If you are reading this and the 'ProjectList' component\n ** has been migrated to SC, please use it here instead of the generic ul/li.\n */\n ul {\n position: relative;\n display: flex;\n flex-flow: row wrap;\n justify-content: center;\n list-style: none;\n margin: -${() => rem(SPACING * 0.5)};\n padding: 0;\n\n li {\n box-sizing: border-box;\n display: flex;\n flex: 0 1 auto;\n justify-content: center;\n margin: 0;\n padding: ${() => rem(SPACING / 2)};\n width: 33%;\n\n @media screen and (max-width: 1139px) {\n width: 50%;\n }\n\n @media screen and (max-width: 899px) {\n width: 100%;\n }\n\n @media screen and (max-width: 767px) {\n width: 50%;\n }\n\n @media screen and (max-width: 498px) {\n width: 100%;\n }\n }\n }\n`\n\nexport const CategoryPageTaggedProjectsFooter = styled.footer`\n margin-top: ${() => rem(32)};\n text-align: center;\n`\n\nexport const CategoryPageTaggedProjectsHeader = styled.header`\n display: flex;\n justify-content: space-between;\n margin-bottom: ${() => rem(32)};\n width: 100%;\n\n @media screen and (max-width: 767px) {\n justify-content: center;\n }\n\n /* Sorting bar title */\n & > div {\n display: block;\n }\n\n strong {\n color: ${(props) => props.theme.colors.primary};\n display: block;\n font-size: 26px;\n margin-bottom: ${() => rem(4)};\n margin-right: ${() => rem(10)};\n }\n\n /* Filter dropdown */\n & > span {\n display: none;\n max-height: ${() => rem(42)};\n\n @media screen and (min-width: 768px) {\n display: inline-flex;\n }\n }\n`\n\nexport const CategoryPageTaggedProjectsNoResults = styled.div`\n text-align: center;\n`\n\nexport const CategoryPageTaggedProjectsNoResultsText = styled.div`\n margin-top: ${() => rem(24)};\n`\n\nexport const CategoryPageTaggedProjectsResetFilters = styled(SecondaryLink)`\n align-items: center;\n display: inline-flex;\n height: ${() => rem(50)};\n\n > div:first-child {\n color: ${COLORS.PRIMARY_GREY_500};\n margin-right: ${() => rem(5)};\n transform: rotate(-180deg);\n transition: transform 200ms ease-out;\n }\n\n &:hover {\n > div:first-child {\n transition: transform 400ms ease-in;\n transform: rotate(180deg);\n }\n }\n`\n", "import * as React from 'react'\nimport * as PropTypes from 'prop-types'\nimport { styled } from 'next-yak'\n\nimport { COLORS, RoleTag, styles as S } from '@ulule/owl-kit-components/next'\nimport { getResourceUrl } from '$models/resources'\n\nimport { t } from '@ulule/localize'\n\nimport * as Styles from '../styles'\n\nconst Wrapper = styled(Styles.CategoryPageInfoCard)`\n margin: 16px 0;\n`\n\nconst OurPicks = styled(RoleTag)`\n display: block;\n margin: 0 auto 20px auto;\n`\n\nconst Heading = styled(S.heading.S)`\n text-align: center;\n`\n\nconst PartnerLogo = styled.img`\n max-width: 50%;\n margin: 20px auto;\n`\n\nconst CallToAction = styled(S.button.CallToAction)`\n margin: 20px 0 10px 0;\n color: ${(props) => props.newColor};\n border-color: ${(props) => props.newColor};\n\n &:hover {\n background-color: ${(props) => props.newColor};\n color: ${COLORS.PRIMARY_GREY_000};\n border-color: ${(props) => props.newColor};\n }\n`\n\nconst CategoryPartner = ({ categoryName, color, description, link, logo, partnerName }) => {\n const logoUrl = getResourceUrl(logo)\n return (\n \n {t('Right now')}\n \n {t('Launch your %(category)s project with the support of %(partner)s', {\n category: categoryName,\n partner: partnerName,\n })}\n \n \n \n \n {t('Learn more')}\n \n \n )\n}\n\nCategoryPartner.propTypes = {\n categoryName: PropTypes.string,\n description: PropTypes.string,\n logo: PropTypes.shape({\n value: PropTypes.string.isRequired,\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.string,\n url: PropTypes.string.isRequired,\n width: PropTypes.string,\n }).isRequired,\n }),\n }),\n link: PropTypes.string,\n color: PropTypes.string,\n partnerName: PropTypes.string,\n}\n\nexport default CategoryPartner\n"], "mappings": "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", "names": ["init_define_process_env", "init_sentry_release_injection_stub", "init_define_process_env", "init_sentry_release_injection_stub", "n", "init_define_process_env", "init_sentry_release_injection_stub", "init_define_process_env", "init_sentry_release_injection_stub", "React", "ReactDOM", "import_prop_types", "init_define_process_env", "init_sentry_release_injection_stub", "categoryDescription", "category", "lang", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "init_define_process_env", "init_sentry_release_injection_stub", "DEFAULT_GRID_BASIS", "HEIGHT_SHIFT", "SPACING", "CategoryPageCover", "styled", "props", "theme", "colors", "accent", "primary", "rem", "background", "CategoryPageHeader", "CategoryPageTitleContainer", "CategoryPageLogo", "withSubtitle", "CategoryPageTitle", "CategoryPageSubtitle", "Title1", "CategoryPageContentWrapper", "CategoryPageProjectListWrapper", "CategoryPageRightAside", "CategoryPageInfoCardTitle", "Title2", "CategoryPageInfoCard", "COLORS", "PRIMARY_BLUE_500", "CategoryPageInfoCardCTA", "CallToAction", "CategoryPageTaggedProjectList", "CategoryPageTaggedProjectsFooter", "CategoryPageTaggedProjectsHeader", "CategoryPageTaggedProjectsNoResults", "CategoryPageTaggedProjectsNoResultsText", "CategoryPageTaggedProjectsResetFilters", "SecondaryLink", "CURRENCY_RATES", "NO_RESULTS_IMAGE", "REMIND_ME_IMAGE", "TaggedProjectList", "categoryName", "categorySlug", "currentFilters", "currentCurrency", "currentLanguage", "currentSorting", "errorFetchingMore", "filters", "isFetching", "isFetchingMore", "loadMoreProjects", "moreProjectsToFetch", "noProjectWithInitialParams", "projectCount", "results", "sorting", "updateFilter", "updateSorting", "userIsAuthenticated", "React", "CategoryPageTaggedProjectsHeader", "sortingbar_default", "DropdownFilter_default", "event", "CategoryPageTaggedProjectsNoResults", "t", "CategoryPageTaggedProjectsNoResultsText", "tc", "CategoryPageTaggedProjectsResetFilters", "Icon_default", "CategoryPageTaggedProjectList", "ProjectsList_default", "DEFAULT_LIMIT", "CategoryPageTaggedProjectsFooter", "LoadMoreButton_default", "PropTypes", "projectShape", "TaggedProjectList_default", "withProjectResults", "init_define_process_env", "init_sentry_release_injection_stub", "React", "PropTypes", "Wrapper", "styled", "CategoryPageInfoCard", "OurPicks", "RoleTag", "Heading", "S", "heading", "PartnerLogo", "CallToAction", "button", "props", "newColor", "CategoryPartner", "categoryName", "color", "description", "link", "logo", "partnerName", "logoUrl", "getResourceUrl", "t", "category", "partner", "src", "copy", "M", "light", "dangerouslySetInnerHTML", "__html", "as", "kind", "href", "propTypes", "string", "shape", "value", "isRequired", "versions", "full", "height", "url", "width", "CategoryPartner_default", "config", "set", "category", "window", "CATEGORY_DATA", "searchData", "CATEGORY_PAGE_SEARCH_DATA", "CategoryPage", "currentCurrency", "currentLanguage", "presaleCreationUrl", "accent_color", "accentColor", "background", "bg_color", "bgColor", "id", "name", "partner", "slug", "subtitle", "title", "currentUser", "UFE", "user", "titleImage", "getResourceUrl", "is_authenticated", "userIsAuthenticated", "theme", "colors", "accent", "primary", "COLORS", "PRIMARY_BLUE_500", "initialSearchSettings", "filters", "categories", "statuses", "sorting", "get", "YakThemeProvider", "Fragment", "CategoryPageHeader", "CategoryPageCover", "CategoryPageTitleContainer", "CategoryPageLogo", "alt", "src", "withSubtitle", "CategoryPageTitle", "CategoryPageSubtitle", "CategoryPageContentWrapper", "CategoryPageProjectListWrapper", "TaggedProjectList", "categoryName", "categorySlug", "initialSettings", "CategoryPageRightAside", "CategoryPageInfoCard", "CategoryPageInfoCardTitle", "tc", "strong", "br", "S", "copy", "M", "light", "dangerouslySetInnerHTML", "__html", "categoryDescription", "a", "href", "CategoryPageInfoCardCTA", "t", "CategoryPartner", "partnerName", "description", "logo", "link", "url", "color", "defaultProps", "propTypes", "PropTypes", "shape", "string", "versions", "full", "height", "number", "width", "cta_description", "oneOfType", "isRequired", "value", "renderApp", "currency", "language", "categoryAppContainer", "document", "getElementById", "dataset", "createRoot", "render", "addEventListener", "getCurrentLanguage", "getCurrentCurrency", "error", "console", "category_default"] }