feat: update footer links and search indices (#40818)

This commit is contained in:
Kristofer Koishigawa
2021-01-29 01:17:42 +09:00
committed by Mrugesh Mohapatra
parent 0b944ddfde
commit 187e3ec973
14 changed files with 298 additions and 294 deletions

View File

@@ -377,6 +377,8 @@
"heres-a-quote": "我们未找到你搜索的信息。这里分享一句名言:" "heres-a-quote": "我们未找到你搜索的信息。这里分享一句名言:"
}, },
"search": { "search": {
"index-name": "news-zh",
"search-page-url": "https://chinese.freecodecamp.org/news/search/?query={{searchQuery}}",
"label": "搜索", "label": "搜索",
"placeholder": "搜索 6,000+ 篇教程", "placeholder": "搜索 6,000+ 篇教程",
"see-results": "查看 {{searchQuery}} 的所有结果", "see-results": "查看 {{searchQuery}} 的所有结果",

View File

@@ -1,62 +1,62 @@
{ {
"article1title": "Chinese: Git Clone", "article0title": "Golang Benchmark",
"article1link": "https://www.freecodecamp.org/news/git-clone-branch-how-to-clone-a-specific-branch/", "article0link": "https://chinese.freecodecamp.org/news/golang-benchmark/",
"article2title": "Chinese: Agile Methods", "article1title": "树莓派",
"article2link": "https://www.freecodecamp.org/news/agile-methods-and-methodology-for-beginners/", "article1link": "https://chinese.freecodecamp.org/news/build-a-personal-dev-server-on-a-5-dollar-raspberry-pi/",
"article3title": "Chinese: Python Main", "article2title": "如何发布一个网站",
"article3link": "https://www.freecodecamp.org/news/if-name-main-python-example/", "article2link": "https://chinese.freecodecamp.org/news/publish-a-no-code-website-in-10-minutes/",
"article4title": "Chinese: Callback", "article3title": "PWA 入门与实践",
"article4link": "https://www.freecodecamp.org/news/javascript-callback-functions-what-are-callbacks-in-js-and-how-to-use-them/", "article3link": "https://chinese.freecodecamp.org/news/a-brief-introduction-to-pwa/",
"article5title": "Chinese: Debounce", "article4title": "Git 删除分支",
"article5link": "https://www.freecodecamp.org/news/debounce-javascript-tutorial-how-to-make-your-js-wait-up/", "article4link": "https://chinese.freecodecamp.org/news/how-to-delete-a-git-branch-both-locally-and-remotely/",
"article6title": "Chinese: URL Encode", "article5title": "NPM 教程",
"article6link": "https://www.freecodecamp.org/news/javascript-url-encode-example-how-to-use-encodeuricomponent-and-encodeuri/", "article5link": "https://chinese.freecodecamp.org/news/what-is-npm-a-node-package-manager-tutorial-for-beginners/",
"article7title": "Chinese: Blink HTML", "article6title": "前端开发学习路线",
"article7link": "https://www.freecodecamp.org/news/make-it-blink-html-tutorial-how-to-use-the-blink-tag-with-code-examples/", "article6link": "https://chinese.freecodecamp.org/news/map-of-learning-front-end/",
"article8title": "Chinese: Python Tuple", "article7title": "谷歌小恐龙",
"article8link": "https://www.freecodecamp.org/news/python-returns-multiple-values-how-to-return-a-tuple-list-dictionary/", "article7link": "https://chinese.freecodecamp.org/news/do-you-know-the-chrome-dino-game-millions-of-people-are-playing/",
"article9title": "Chinese: JavaScript Push", "article8title": "GraphQL 教程",
"article9link": "https://www.freecodecamp.org/news/javascript-array-insert-how-to-add-to-an-array-with-the-push-unshift-and-concat-functions/", "article8link": "https://chinese.freecodecamp.org/news/a-detailed-guide-to-graphql/",
"article10title": "Chinese: Java List", "article9title": "Webpack 多入口配置",
"article10link": "https://www.freecodecamp.org/news/java-list-tutorial-util-list-api-example/", "article9link": "https://chinese.freecodecamp.org/news/an-introduction-to-webpack-multi-entry-configuration/",
"article11title": "Chinese: UX", "article10title": "TypeScript",
"article11link": "https://www.freecodecamp.org/news/learn-ux-design-self-taught-user-experience-designer/", "article10link": "https://chinese.freecodecamp.org/news/why-should-you-use-typescript/",
"article12title": "Chinese: Design Thinking", "article11title": "Web 开发工程师",
"article12link": "https://www.freecodecamp.org/news/what-is-design-thinking-an-introduction-to-the-design-process-for-entrepreneurs-and-developers/", "article11link": "https://chinese.freecodecamp.org/news/the-practical-guide-to-becoming-a-professional-web-developer/",
"article13title": "Chinese: Prime Number List", "article12title": "提交第一个 PR",
"article13link": "https://www.freecodecamp.org/news/prime-numbers-list-chart-of-primes/", "article12link": "https://chinese.freecodecamp.org/news/how-to-make-your-first-pull-request-on-github/",
"article14title": "Chinese: Product Design", "article13title": "Express ES6 支持",
"article14link": "https://www.freecodecamp.org/news/product-design-explained-in-plain-english/", "article13link": "https://chinese.freecodecamp.org/news/how-to-enable-es6-and-beyond-syntax-with-node-and-express/",
"article15title": "Chinese: Digital Design", "article14title": "Python 快速排序算法",
"article15link": "https://www.freecodecamp.org/news/what-is-digital-design-and-why-does-it-matter/", "article14link": "https://chinese.freecodecamp.org/news/sorting-in-python/",
"article16title": "Chinese: Coding Games", "article15title": "React 作品集",
"article16link": "https://www.freecodecamp.org/news/best-coding-games-online-adults-learn-to-code/", "article15link": "https://chinese.freecodecamp.org/news/portfolio-app-using-react/",
"article17title": "Chinese: SVM", "article16title": "JS 隐式类型转换",
"article17link": "https://www.freecodecamp.org/news/svm-machine-learning-tutorial-what-is-the-support-vector-machine-algorithm-explained-with-code-examples/", "article16link": "https://chinese.freecodecamp.org/news/javascript-implicit-type-conversion/",
"article18title": "Chinese: JavaScript forEach", "article17title": "Deno 入门手册",
"article18link": "https://www.freecodecamp.org/news/javascript-foreach-how-to-loop-through-an-array-in-js/", "article17link": "https://chinese.freecodecamp.org/news/the-deno-handbook-with-examples/",
"article19title": "Chinese: Google BERT", "article18title": "前端和后端的区别",
"article19link": "https://www.freecodecamp.org/news/google-bert-nlp-machine-learning-tutorial/", "article18link": "https://chinese.freecodecamp.org/news/front-end-developer-vs-back-end-developer-definition-and-meaning-in-practice/",
"article20title": "Chinese: Create Table SQL", "article19title": "JS 函数的 this 指向",
"article20link": "https://www.freecodecamp.org/news/sql-create-table-statement-with-example-syntax/", "article19link": "https://chinese.freecodecamp.org/news/javascript-this/",
"article21title": "Chinese: Responsive Web Design", "article20title": "GitHub Pages 部署网页",
"article21link": "https://www.freecodecamp.org/news/responsive-web-design-how-to-make-a-website-look-good-on-phones-and-tablets/", "article20link": "https://chinese.freecodecamp.org/news/create-a-free-static-site-with-github-pages-in-10-minutes/",
"article22title": "Chinese: What Is an SVG File?", "article21title": "第一门编程语言",
"article22link": "https://www.freecodecamp.org/news/svg-basics-what-are-scalable-vector-graphics-and-how-do-you-use-them/", "article21link": "https://chinese.freecodecamp.org/news/what-programming-language-should-i-learn-first/",
"article23title": "Chinese: PDF Password Remover", "article22title": "配置 VS Code",
"article23link": "https://www.freecodecamp.org/news/pdf-password-remover-guide-how-to-remove-password-protection-from-a-pdf/", "article22link": "https://chinese.freecodecamp.org/news/how-to-set-up-vscode-to-improve-your-productivity/",
"article24title": "Chinese: What Is a PDF?", "article23title": "前端学习路线",
"article24link": "https://www.freecodecamp.org/news/what-is-a-pdf-file-and-how-do-you-open-it-solved/", "article23link": "https://chinese.freecodecamp.org/news/map-of-learning-front-end/",
"article25title": "Chinese: What Is Python?", "article24title": "自学编程",
"article25link": "https://www.freecodecamp.org/news/what-is-python-used-for-10-coding-uses-for-the-python-programming-language/", "article24link": "https://chinese.freecodecamp.org/news/first-line-of-code-to-226k-job-offer-in-8-months/",
"article26title": "Chinese: What Is TLS?", "article25title": "Java",
"article26link": "https://www.freecodecamp.org/news/what-is-tls-transport-layer-security-encryption-explained-in-plain-english/", "article25link": "https://chinese.freecodecamp.org/news/java-you-have-not-know-about/",
"article27title": "Chinese: What Is a LAN?", "article26title": "React 学习手册",
"article27link": "https://www.freecodecamp.org/news/what-is-a-lan-local-area-network-explained-in-plain-english/", "article26link": "https://chinese.freecodecamp.org/news/the-react-handbook/",
"article28title": "Chinese: What Is npm?", "article27title": "JSON 文件注释",
"article28link": "https://www.freecodecamp.org/news/what-is-npm-a-node-package-manager-tutorial-for-beginners/", "article27link": "https://chinese.freecodecamp.org/news/json-comment/",
"article29title": "Chinese: RSync Examples", "article28title": "Canvas 动画",
"article29link": "https://www.freecodecamp.org/news/rsync-examples-rsync-options-and-how-to-copy-files-over-ssh/", "article28link": "https://chinese.freecodecamp.org/news/canvas-animation-performance-optimization-practice/",
"article30title": "Chinese: Random Forest", "article29title": "JWT 授权和认证",
"article30link": "https://www.freecodecamp.org/news/how-to-use-the-tree-based-algorithm-for-machine-learning/" "article29link": "https://chinese.freecodecamp.org/news/java-spring-boot-jwt-authorization-and-authentication/"
} }

View File

@@ -379,6 +379,8 @@
"heres-a-quote": "We couldn't find what you were looking for, but here is a quote:" "heres-a-quote": "We couldn't find what you were looking for, but here is a quote:"
}, },
"search": { "search": {
"index-name": "news",
"search-page-url": "https://www.freecodecamp.org/news/search/?query={{searchQuery}}",
"label": "Search", "label": "Search",
"placeholder": "Search 6,000+ tutorials", "placeholder": "Search 6,000+ tutorials",
"see-results": "See all results for {{searchQuery}}", "see-results": "See all results for {{searchQuery}}",

View File

@@ -1,62 +1,62 @@
{ {
"article1title": "Git Clone", "article0title": "What is Docker?",
"article1link": "https://www.freecodecamp.org/news/git-clone-branch-how-to-clone-a-specific-branch/", "article0link": "https://www.freecodecamp.org/news/what-is-docker-used-for-a-docker-container-tutorial-for-beginners/",
"article2title": "Agile Methods", "article1title": "TCP/IP Model",
"article2link": "https://www.freecodecamp.org/news/agile-methods-and-methodology-for-beginners/", "article1link": "https://www.freecodecamp.org/news/what-is-tcp-ip-layers-and-protocols-explained/",
"article3title": "Python Main", "article2title": "RTF File",
"article3link": "https://www.freecodecamp.org/news/if-name-main-python-example/", "article2link": "https://www.freecodecamp.org/news/rtf-file-what-is-the-rich-text-format/",
"article4title": "Callback", "article3title": "CSS Transition",
"article4link": "https://www.freecodecamp.org/news/javascript-callback-functions-what-are-callbacks-in-js-and-how-to-use-them/", "article3link": "https://www.freecodecamp.org/news/css-transition-examples/",
"article5title": "Debounce", "article4title": "How to Use Instagram?",
"article5link": "https://www.freecodecamp.org/news/debounce-javascript-tutorial-how-to-make-your-js-wait-up/", "article4link": "https://www.freecodecamp.org/news/how-to-use-instagram-like-a-pro/",
"article6title": "URL Encode", "article5title": "MBR VS GPT",
"article6link": "https://www.freecodecamp.org/news/javascript-url-encode-example-how-to-use-encodeuricomponent-and-encodeuri/", "article5link": "https://www.freecodecamp.org/news/mbr-vs-gpt-whats-the-difference-between-an-mbr-partition-and-a-gpt-partition-solved/",
"article7title": "Blink HTML", "article6title": "FAT32 Format",
"article7link": "https://www.freecodecamp.org/news/make-it-blink-html-tutorial-how-to-use-the-blink-tag-with-code-examples/", "article6link": "https://www.freecodecamp.org/news/how-to-format-a-usb-drive-to-fat32-on-windows-10/",
"article8title": "Python Tuple", "article7title": "Error 503 Code",
"article8link": "https://www.freecodecamp.org/news/python-returns-multiple-values-how-to-return-a-tuple-list-dictionary/", "article7link": "https://www.freecodecamp.org/news/http-error-503-service-unavailable-explained-what-the-503-error-code-means/",
"article9title": "JavaScript Push", "article8title": "Windows Hosts File",
"article9link": "https://www.freecodecamp.org/news/javascript-array-insert-how-to-add-to-an-array-with-the-push-unshift-and-concat-functions/", "article8link": "https://www.freecodecamp.org/news/how-to-find-and-edit-a-windows-hosts-file/",
"article10title": "Java List", "article9title": "Mobi to PDF",
"article10link": "https://www.freecodecamp.org/news/java-list-tutorial-util-list-api-example/", "article9link": "https://www.freecodecamp.org/news/mobi-to-pdf-how-to-convert-to-and-from-a-mobi-file/",
"article11title": "UX", "article10title": "What is STEM?",
"article11link": "https://www.freecodecamp.org/news/learn-ux-design-self-taught-user-experience-designer/", "article10link": "https://www.freecodecamp.org/news/what-is-stem-the-meaning-of-an-acronym-youll-hear-a-lot-in-school/",
"article12title": "Design Thinking", "article11title": "JavaScript Void 0",
"article12link": "https://www.freecodecamp.org/news/what-is-design-thinking-an-introduction-to-the-design-process-for-entrepreneurs-and-developers/", "article11link": "https://www.freecodecamp.org/news/javascript-void-keyword-explained/",
"article13title": "Prime Number List", "article12title": "SQL Delete Row",
"article13link": "https://www.freecodecamp.org/news/prime-numbers-list-chart-of-primes/", "article12link": "https://www.freecodecamp.org/news/sql-delete-row-statement-examples/",
"article14title": "Product Design", "article13title": "JavaScript Replace",
"article14link": "https://www.freecodecamp.org/news/product-design-explained-in-plain-english/", "article13link": "https://www.freecodecamp.org/news/javascript-string-replace-example-with-regex/",
"article15title": "Digital Design", "article14title": "Python JSON Parser",
"article15link": "https://www.freecodecamp.org/news/what-is-digital-design-and-why-does-it-matter/", "article14link": "https://www.freecodecamp.org/news/python-read-json-file-how-to-load-json-from-a-file-and-parse-dumps/",
"article16title": "Coding Games", "article15title": "cmd Delete Folder",
"article16link": "https://www.freecodecamp.org/news/best-coding-games-online-adults-learn-to-code/", "article15link": "https://www.freecodecamp.org/news/cmd-delete-folder-how-to-remove-files-and-folders-in-windows/",
"article17title": "SVM", "article16title": "What is NFC?",
"article17link": "https://www.freecodecamp.org/news/svm-machine-learning-tutorial-what-is-the-support-vector-machine-algorithm-explained-with-code-examples/", "article16link": "https://www.freecodecamp.org/news/what-is-nfc-near-field-communication-uses-chips-tags-and-readers-explained/",
"article18title": "JavaScript forEach", "article17title": "Content Type JSON",
"article18link": "https://www.freecodecamp.org/news/javascript-foreach-how-to-loop-through-an-array-in-js/", "article17link": "https://www.freecodecamp.org/news/what-is-the-correct-content-type-for-json-request-header-mime-type-explained/",
"article19title": "Google BERT", "article18title": "Convert HEIC to JPG",
"article19link": "https://www.freecodecamp.org/news/google-bert-nlp-machine-learning-tutorial/", "article18link": "https://www.freecodecamp.org/news/heic-to-jpg-how-to-convert-images-on-a-mac/",
"article20title": "Create Table SQL", "article19title": "Math Random Java",
"article20link": "https://www.freecodecamp.org/news/sql-create-table-statement-with-example-syntax/", "article19link": "https://www.freecodecamp.org/news/generate-random-numbers-java/",
"article21title": "Responsive Web Design", "article20title": "WordPress for Beginners",
"article21link": "https://www.freecodecamp.org/news/responsive-web-design-how-to-make-a-website-look-good-on-phones-and-tablets/", "article20link": "https://www.freecodecamp.org/news/how-to-start-a-blog-with-wordpress/",
"article22title": "What Is an SVG File?", "article21title": "Qualitative VS Quantitative",
"article22link": "https://www.freecodecamp.org/news/svg-basics-what-are-scalable-vector-graphics-and-how-do-you-use-them/", "article21link": "https://www.freecodecamp.org/news/qualitative-vs-quantitative-definition-research-methods-and-data/",
"article23title": "PDF Password Remover", "article22title": "JavaScript Split String",
"article23link": "https://www.freecodecamp.org/news/pdf-password-remover-guide-how-to-remove-password-protection-from-a-pdf/", "article22link": "https://www.freecodecamp.org/news/javascript-split-string-example/",
"article24title": "What Is a PDF?", "article23title": "Accented Letters on Mac",
"article24link": "https://www.freecodecamp.org/news/what-is-a-pdf-file-and-how-do-you-open-it-solved/", "article23link": "https://www.freecodecamp.org/news/how-to-type-letters-with-accents-on-mac/",
"article25title": "What Is Python?", "article24title": "Windows 10 Product Key",
"article25link": "https://www.freecodecamp.org/news/what-is-python-used-for-10-coding-uses-for-the-python-programming-language/", "article24link": "https://www.freecodecamp.org/news/how-to-find-a-windows-10-product-key/",
"article26title": "What Is TLS?", "article25title": "Google Docs Landscape",
"article26link": "https://www.freecodecamp.org/news/what-is-tls-transport-layer-security-encryption-explained-in-plain-english/", "article25link": "https://www.freecodecamp.org/news/google-docs-landscape-tutorial-how-to-make-a-google-doc-landscape-orientation/",
"article27title": "What Is a LAN?", "article26title": "Antimalware Executable",
"article27link": "https://www.freecodecamp.org/news/what-is-a-lan-local-area-network-explained-in-plain-english/", "article26link": "https://www.freecodecamp.org/news/antimalware-service-executable-what-is-msmpeng-exe-and-why-is-it-running-in-windows-10/",
"article28title": "What Is npm?", "article27title": "Windows 10 Start Menu",
"article28link": "https://www.freecodecamp.org/news/what-is-npm-a-node-package-manager-tutorial-for-beginners/", "article27link": "https://www.freecodecamp.org/news/windows-10-start-menu-not-working-solved/",
"article29title": "RSync Examples", "article28title": "Windows 10 Command Line",
"article29link": "https://www.freecodecamp.org/news/rsync-examples-rsync-options-and-how-to-copy-files-over-ssh/", "article28link": "https://www.freecodecamp.org/news/how-to-open-the-command-prompt-in-windows-10/",
"article30title": "Random Forest", "article29title": "Google Account Recovery",
"article30link": "https://www.freecodecamp.org/news/how-to-use-the-tree-based-algorithm-for-machine-learning/" "article29link": "https://www.freecodecamp.org/news/google-account-recovery-change-gmail-password/"
} }

View File

@@ -379,6 +379,8 @@
"heres-a-quote": "No pudimos encontrar lo que estabas buscando, pero aquí hay una cita:" "heres-a-quote": "No pudimos encontrar lo que estabas buscando, pero aquí hay una cita:"
}, },
"search": { "search": {
"index-name": "news-es",
"search-page-url": "https://www.freecodecamp.org/espanol/news/search/?query={{searchQuery}}",
"label": "Buscar", "label": "Buscar",
"placeholder": "Buscar tutorial", "placeholder": "Buscar tutorial",
"see-results": "Ver todos los resultados de {{searchQuery}}", "see-results": "Ver todos los resultados de {{searchQuery}}",

View File

@@ -1,62 +1,62 @@
{ {
"article1title": "Spanish: Git Clone", "article0title": "Git Clone",
"article1link": "https://www.freecodecamp.org/news/git-clone-branch-how-to-clone-a-specific-branch/", "article0link": "https://www.freecodecamp.org/espanol/news/como-clonar-una-branch-en-git/",
"article2title": "Spanish: Agile Methods", "article1title": "Métodos Agile",
"article2link": "https://www.freecodecamp.org/news/agile-methods-and-methodology-for-beginners/", "article1link": "https://www.freecodecamp.org/espanol/news/metodologia-agile/",
"article3title": "Spanish: Python Main", "article2title": "Python Main",
"article3link": "https://www.freecodecamp.org/news/if-name-main-python-example/", "article2link": "https://www.freecodecamp.org/espanol/news/python-if-name-main/",
"article4title": "Spanish: Callback", "article3title": "Callback",
"article4link": "https://www.freecodecamp.org/news/javascript-callback-functions-what-are-callbacks-in-js-and-how-to-use-them/", "article3link": "https://www.freecodecamp.org/news/javascript-callback-functions-what-are-callbacks-in-js-and-how-to-use-them/",
"article5title": "Spanish: Debounce", "article4title": "Debounce",
"article5link": "https://www.freecodecamp.org/news/debounce-javascript-tutorial-how-to-make-your-js-wait-up/", "article4link": "https://www.freecodecamp.org/espanol/news/curso-debounce-javascript-como-hacer-que-tu-js-espere/",
"article6title": "Spanish: URL Encode", "article5title": "URL Encode",
"article6link": "https://www.freecodecamp.org/news/javascript-url-encode-example-how-to-use-encodeuricomponent-and-encodeuri/", "article5link": "https://www.freecodecamp.org/espanol/news/url-codificacion-como-utilizar-encodeuricomponent-javascript/",
"article7title": "Spanish: Blink HTML", "article6title": "Blink HTML",
"article7link": "https://www.freecodecamp.org/news/make-it-blink-html-tutorial-how-to-use-the-blink-tag-with-code-examples/", "article6link": "https://www.freecodecamp.org/news/make-it-blink-html-tutorial-how-to-use-the-blink-tag-with-code-examples/",
"article8title": "Spanish: Python Tuple", "article7title": "Python Tupla",
"article8link": "https://www.freecodecamp.org/news/python-returns-multiple-values-how-to-return-a-tuple-list-dictionary/", "article7link": "https://www.freecodecamp.org/espanol/news/tuplas-listas-python/",
"article9title": "Spanish: JavaScript Push", "article8title": "JavaScript Push",
"article9link": "https://www.freecodecamp.org/news/javascript-array-insert-how-to-add-to-an-array-with-the-push-unshift-and-concat-functions/", "article8link": "https://www.freecodecamp.org/espanol/news/como-agregar-elementos-a-un-arreglo/",
"article10title": "Spanish: Java List", "article9title": "Java List",
"article10link": "https://www.freecodecamp.org/news/java-list-tutorial-util-list-api-example/", "article9link": "https://www.freecodecamp.org/news/java-list-tutorial-util-list-api-example/",
"article11title": "Spanish: UX", "article10title": "UX",
"article11link": "https://www.freecodecamp.org/news/learn-ux-design-self-taught-user-experience-designer/", "article10link": "https://www.freecodecamp.org/espanol/news/diseno-ux-convertirse-en-un-disenador-de-experiencia-de-usuario/",
"article12title": "Spanish: Design Thinking", "article11title": "Proceso de Diseño",
"article12link": "https://www.freecodecamp.org/news/what-is-design-thinking-an-introduction-to-the-design-process-for-entrepreneurs-and-developers/", "article11link": "https://www.freecodecamp.org/espanol/news/pensamiento-de-diseno-emprendedores-desarrolladores/",
"article13title": "Spanish: Prime Number List", "article12title": "Números Primos",
"article13link": "https://www.freecodecamp.org/news/prime-numbers-list-chart-of-primes/", "article12link": "https://www.freecodecamp.org/espanol/news/lista-de-numeros-primos-una-grafica-con-todos-los/",
"article14title": "Spanish: Product Design", "article13title": "Diseño de Producto",
"article14link": "https://www.freecodecamp.org/news/product-design-explained-in-plain-english/", "article13link": "https://www.freecodecamp.org/espanol/news/product-design-explicado-en-un-espanol-sencillo/",
"article15title": "Spanish: Digital Design", "article14title": "Digital Design",
"article15link": "https://www.freecodecamp.org/news/what-is-digital-design-and-why-does-it-matter/", "article14link": "https://www.freecodecamp.org/news/what-is-digital-design-and-why-does-it-matter/",
"article16title": "Spanish: Coding Games", "article15title": "Juegos de Código",
"article16link": "https://www.freecodecamp.org/news/best-coding-games-online-adults-learn-to-code/", "article15link": "https://www.freecodecamp.org/espanol/news/los-mejores-juegos-online-para-aprender-programar/",
"article17title": "Spanish: SVM", "article16title": "SVM",
"article17link": "https://www.freecodecamp.org/news/svm-machine-learning-tutorial-what-is-the-support-vector-machine-algorithm-explained-with-code-examples/", "article16link": "https://www.freecodecamp.org/news/svm-machine-learning-tutorial-what-is-the-support-vector-machine-algorithm-explained-with-code-examples/",
"article18title": "Spanish: JavaScript forEach", "article17title": "JavaScript forEach",
"article18link": "https://www.freecodecamp.org/news/javascript-foreach-how-to-loop-through-an-array-in-js/", "article17link": "https://www.freecodecamp.org/news/javascript-foreach-how-to-loop-through-an-array-in-js/",
"article19title": "Spanish: Google BERT", "article18title": "Google BERT",
"article19link": "https://www.freecodecamp.org/news/google-bert-nlp-machine-learning-tutorial/", "article18link": "https://www.freecodecamp.org/news/google-bert-nlp-machine-learning-tutorial/",
"article20title": "Spanish: Create Table SQL", "article19title": "Create Table SQL",
"article20link": "https://www.freecodecamp.org/news/sql-create-table-statement-with-example-syntax/", "article19link": "https://www.freecodecamp.org/espanol/news/create-table-sql-server-con-ejemplo/",
"article21title": "Spanish: Responsive Web Design", "article20title": "Diseño Web Responsive",
"article21link": "https://www.freecodecamp.org/news/responsive-web-design-how-to-make-a-website-look-good-on-phones-and-tablets/", "article20link": "https://www.freecodecamp.org/espanol/news/diseno-web-responsive-como-hacer-que-un-sitio-web-se-vea-bien-en-telefonos-y-tabletas/",
"article22title": "Spanish: What Is an SVG File?", "article21title": "¿Qué es un archivo SVG?",
"article22link": "https://www.freecodecamp.org/news/svg-basics-what-are-scalable-vector-graphics-and-how-do-you-use-them/", "article21link": "https://www.freecodecamp.org/espanol/news/que-es-svg-explicacion-de-etiquetas-imagenes/",
"article23title": "Spanish: PDF Password Remover", "article22title": "PDF Password Remover",
"article23link": "https://www.freecodecamp.org/news/pdf-password-remover-guide-how-to-remove-password-protection-from-a-pdf/", "article22link": "https://www.freecodecamp.org/news/pdf-password-remover-guide-how-to-remove-password-protection-from-a-pdf/",
"article24title": "Spanish: What Is a PDF?", "article23title": "¿Qué es un Archivo PDF?",
"article24link": "https://www.freecodecamp.org/news/what-is-a-pdf-file-and-how-do-you-open-it-solved/", "article23link": "https://www.freecodecamp.org/espanol/news/que-es-un-archivo-pdf-como-lo-abres/",
"article25title": "Spanish: What Is Python?", "article24title": "What Is Python?",
"article25link": "https://www.freecodecamp.org/news/what-is-python-used-for-10-coding-uses-for-the-python-programming-language/", "article24link": "https://www.freecodecamp.org/news/what-is-python-used-for-10-coding-uses-for-the-python-programming-language/",
"article26title": "Spanish: What Is TLS?", "article25title": "¿Qué es TLS?",
"article26link": "https://www.freecodecamp.org/news/what-is-tls-transport-layer-security-encryption-explained-in-plain-english/", "article25link": "https://www.freecodecamp.org/espanol/news/que-is-tls-explicado-en-espanol-simple/",
"article27title": "Spanish: What Is a LAN?", "article26title": "¿Qué es una red LAN?",
"article27link": "https://www.freecodecamp.org/news/what-is-a-lan-local-area-network-explained-in-plain-english/", "article26link": "https://www.freecodecamp.org/espanol/news/que-es-una-red-lan-explicada-en-espanol/",
"article28title": "Spanish: What Is npm?", "article27title": "¿Qué es npm?",
"article28link": "https://www.freecodecamp.org/news/what-is-npm-a-node-package-manager-tutorial-for-beginners/", "article27link": "https://www.freecodecamp.org/espanol/news/node-js-npm-tutorial/",
"article29title": "Spanish: RSync Examples", "article28title": "Ejemplos de RSync",
"article29link": "https://www.freecodecamp.org/news/rsync-examples-rsync-options-and-how-to-copy-files-over-ssh/", "article28link": "https://www.freecodecamp.org/espanol/news/rsync-ejemplos-opciones-y-copiar-archivos-atraves-ssh/",
"article30title": "Spanish: Random Forest", "article29title": "Random Forest",
"article30link": "https://www.freecodecamp.org/news/how-to-use-the-tree-based-algorithm-for-machine-learning/" "article29link": "https://www.freecodecamp.org/news/how-to-use-the-tree-based-algorithm-for-machine-learning/"
} }

View File

@@ -98,7 +98,7 @@ const translationsSchema = {
'ask-later': 'Ask me later' 'ask-later': 'Ask me later'
}, },
landing: { landing: {
'big-heading-1': 'Learn to code at home.', 'big-heading-1': 'Learn to code — for free.',
'big-heading-2': 'Build projects.', 'big-heading-2': 'Build projects.',
'big-heading-3': 'Earn certifications.', 'big-heading-3': 'Earn certifications.',
'h2-heading': 'h2-heading':
@@ -449,8 +449,11 @@ const translationsSchema = {
"We couldn't find what you were looking for, but here is a quote:" "We couldn't find what you were looking for, but here is a quote:"
}, },
search: { search: {
'index-name': 'news',
'search-page-url':
'https://www.freecodecamp.org/news/search/?query={{searchQuery}}',
label: 'Search', label: 'Search',
placeholder: 'Search 6,000+ tutorial', placeholder: 'Search 6,000+ tutorials',
'see-results': 'See all results for {{searchQuery}}', 'see-results': 'See all results for {{searchQuery}}',
'no-tutorials': 'No tutorials found', 'no-tutorials': 'No tutorials found',
try: 'Looking for something? Try the search bar on this page.', try: 'Looking for something? Try the search bar on this page.',

View File

@@ -4,96 +4,95 @@
*/ */
const trendingSchema = { const trendingSchema = {
article1title: 'Git Clone', article0title: 'What is Docker?',
article0link:
'https://www.freecodecamp.org/news/what-is-docker-used-for-a-docker-container-tutorial-for-beginners/',
article1title: 'TCP/IP Model',
article1link: article1link:
'https://www.freecodecamp.org/news/git-clone-branch-how-to-clone-a-specific-branch/', 'https://www.freecodecamp.org/news/what-is-tcp-ip-layers-and-protocols-explained/',
article2title: 'Agile Methods', article2title: 'RTF File',
article2link: article2link:
'https://www.freecodecamp.org/news/agile-methods-and-methodology-for-beginners/', 'https://www.freecodecamp.org/news/rtf-file-what-is-the-rich-text-format/',
article3title: 'Python Main', article3title: 'CSS Transition',
article3link: article3link: 'https://www.freecodecamp.org/news/css-transition-examples/',
'https://www.freecodecamp.org/news/if-name-main-python-example/', article4title: 'How to Use Instagram?',
article4title: 'Callback',
article4link: article4link:
'https://www.freecodecamp.org/news/javascript-callback-functions-what-are-callbacks-in-js-and-how-to-use-them/', 'https://www.freecodecamp.org/news/how-to-use-instagram-like-a-pro/',
article5title: 'Debounce', article5title: 'MBR VS GPT',
article5link: article5link:
'https://www.freecodecamp.org/news/debounce-javascript-tutorial-how-to-make-your-js-wait-up/', 'https://www.freecodecamp.org/news/mbr-vs-gpt-whats-the-difference-between-an-mbr-partition-and-a-gpt-partition-solved/',
article6title: 'URL Encode', article6title: 'FAT32 Format',
article6link: article6link:
'https://www.freecodecamp.org/news/javascript-url-encode-example-how-to-use-encodeuricomponent-and-encodeuri/', 'https://www.freecodecamp.org/news/how-to-format-a-usb-drive-to-fat32-on-windows-10/',
article7title: 'Blink HTML', article7title: 'Error 503 Code',
article7link: article7link:
'https://www.freecodecamp.org/news/make-it-blink-html-tutorial-how-to-use-the-blink-tag-with-code-examples/', 'https://www.freecodecamp.org/news/http-error-503-service-unavailable-explained-what-the-503-error-code-means/',
article8title: 'Python Tuple', article8title: 'Windows Hosts File',
article8link: article8link:
'https://www.freecodecamp.org/news/python-returns-multiple-values-how-to-return-a-tuple-list-dictionary/', 'https://www.freecodecamp.org/news/how-to-find-and-edit-a-windows-hosts-file/',
article9title: 'JavaScript Push', article9title: 'Mobi to PDF',
article9link: article9link:
'https://www.freecodecamp.org/news/javascript-array-insert-how-to-add-to-an-array-with-the-push-unshift-and-concat-functions/', 'https://www.freecodecamp.org/news/mobi-to-pdf-how-to-convert-to-and-from-a-mobi-file/',
article10title: 'Java List', article10title: 'What is STEM?',
article10link: article10link:
'https://www.freecodecamp.org/news/java-list-tutorial-util-list-api-example/', 'https://www.freecodecamp.org/news/what-is-stem-the-meaning-of-an-acronym-youll-hear-a-lot-in-school/',
article11title: 'UX', article11title: 'JavaScript Void 0',
article11link: article11link:
'https://www.freecodecamp.org/news/learn-ux-design-self-taught-user-experience-designer/', 'https://www.freecodecamp.org/news/javascript-void-keyword-explained/',
article12title: 'Design Thinking', article12title: 'SQL Delete Row',
article12link: article12link:
'https://www.freecodecamp.org/news/what-is-design-thinking-an-introduction-to-the-design-process-for-entrepreneurs-and-developers/', 'https://www.freecodecamp.org/news/sql-delete-row-statement-examples/',
article13title: 'Prime Number List', article13title: 'JavaScript Replace',
article13link: article13link:
'https://www.freecodecamp.org/news/prime-numbers-list-chart-of-primes/', 'https://www.freecodecamp.org/news/javascript-string-replace-example-with-regex/',
article14title: 'Product Design', article14title: 'Python JSON Parser',
article14link: article14link:
'https://www.freecodecamp.org/news/product-design-explained-in-plain-english/', 'https://www.freecodecamp.org/news/python-read-json-file-how-to-load-json-from-a-file-and-parse-dumps/',
article15title: 'Digital Design', article15title: 'cmd Delete Folder',
article15link: article15link:
'https://www.freecodecamp.org/news/what-is-digital-design-and-why-does-it-matter/', 'https://www.freecodecamp.org/news/cmd-delete-folder-how-to-remove-files-and-folders-in-windows/',
article16title: 'Coding Games', article16title: 'What is NFC?',
article16link: article16link:
'https://www.freecodecamp.org/news/best-coding-games-online-adults-learn-to-code/', 'https://www.freecodecamp.org/news/what-is-nfc-near-field-communication-uses-chips-tags-and-readers-explained/',
article17title: 'SVM', article17title: 'Content Type JSON',
article17link: article17link:
'https://www.freecodecamp.org/news/svm-machine-learning-tutorial-what-is-the-support-vector-machine-algorithm-explained-with-code-examples/', 'https://www.freecodecamp.org/news/what-is-the-correct-content-type-for-json-request-header-mime-type-explained/',
article18title: 'JavaScript forEach', article18title: 'Convert HEIC to JPG',
article18link: article18link:
'https://www.freecodecamp.org/news/javascript-foreach-how-to-loop-through-an-array-in-js/', 'https://www.freecodecamp.org/news/heic-to-jpg-how-to-convert-images-on-a-mac/',
article19title: 'Google BERT', article19title: 'Math Random Java',
article19link: article19link:
'https://www.freecodecamp.org/news/google-bert-nlp-machine-learning-tutorial/', 'https://www.freecodecamp.org/news/generate-random-numbers-java/',
article20title: 'Create Table SQL', article20title: 'WordPress for Beginners',
article20link: article20link:
'https://www.freecodecamp.org/news/sql-create-table-statement-with-example-syntax/', 'https://www.freecodecamp.org/news/how-to-start-a-blog-with-wordpress/',
article21title: 'Responsive Web Design', article21title: 'Qualitative VS Quantitative',
article21link: article21link:
'https://www.freecodecamp.org/news/responsive-web-design-how-to-make-a-website-look-good-on-phones-and-tablets/', 'https://www.freecodecamp.org/news/qualitative-vs-quantitative-definition-research-methods-and-data/',
article22title: 'What Is an SVG File?', article22title: 'JavaScript Split String',
article22link: article22link:
'https://www.freecodecamp.org/news/svg-basics-what-are-scalable-vector-graphics-and-how-do-you-use-them/', 'https://www.freecodecamp.org/news/javascript-split-string-example/',
article23title: 'PDF Password Remover', article23title: 'Accented Letters on Mac',
article23link: article23link:
'https://www.freecodecamp.org/news/pdf-password-remover-guide-how-to-remove-password-protection-from-a-pdf/', 'https://www.freecodecamp.org/news/how-to-type-letters-with-accents-on-mac/',
article24title: 'What Is a PDF?', article24title: 'Windows 10 Product Key',
article24link: article24link:
'https://www.freecodecamp.org/news/what-is-a-pdf-file-and-how-do-you-open-it-solved/', 'https://www.freecodecamp.org/news/how-to-find-a-windows-10-product-key/',
article25title: 'What Is Python?', article25title: 'Google Docs Landscape',
article25link: article25link:
'https://www.freecodecamp.org/news/what-is-python-used-for-10-coding-uses-for-the-python-programming-language/', 'https://www.freecodecamp.org/news/google-docs-landscape-tutorial-how-to-make-a-google-doc-landscape-orientation/',
article26title: 'What Is TLS?', article26title: 'Antimalware Executable',
article26link: article26link:
'https://www.freecodecamp.org/news/what-is-tls-transport-layer-security-encryption-explained-in-plain-english/', 'https://www.freecodecamp.org/news/antimalware-service-executable-what-is-msmpeng-exe-and-why-is-it-running-in-windows-10/',
article27title: 'What Is a LAN?', article27title: 'Windows 10 Start Menu',
article27link: article27link:
'https://www.freecodecamp.org/news/what-is-a-lan-local-area-network-explained-in-plain-english/', 'https://www.freecodecamp.org/news/windows-10-start-menu-not-working-solved/',
article28title: 'What Is npm?', article28title: 'Windows 10 Command Line',
article28link: article28link:
'https://www.freecodecamp.org/news/what-is-npm-a-node-package-manager-tutorial-for-beginners/', 'https://www.freecodecamp.org/news/how-to-open-the-command-prompt-in-windows-10/',
article29title: 'RSync Examples', article29title: 'Google Account Recovery',
article29link: article29link:
'https://www.freecodecamp.org/news/rsync-examples-rsync-options-and-how-to-copy-files-over-ssh/', 'https://www.freecodecamp.org/news/google-account-recovery-change-gmail-password/'
article30title: 'Random Forest',
article30link:
'https://www.freecodecamp.org/news/how-to-use-the-tree-based-algorithm-for-machine-learning/'
}; };
exports.trendingSchema = trendingSchema; exports.trendingSchema = trendingSchema;

View File

@@ -76,6 +76,13 @@ exports[`<Footer /> matches snapshot 1`] = `
<div <div
className="footer-col footer-col-1" className="footer-col footer-col-1"
> >
<a
href="trending:article0link"
rel="noopener noreferrer"
target="_blank"
>
trending:article0title
</a>
<a <a
href="trending:article1link" href="trending:article1link"
rel="noopener noreferrer" rel="noopener noreferrer"
@@ -139,6 +146,10 @@ exports[`<Footer /> matches snapshot 1`] = `
> >
trending:article9title trending:article9title
</a> </a>
</div>
<div
className="footer-col footer-col-2"
>
<a <a
href="trending:article10link" href="trending:article10link"
rel="noopener noreferrer" rel="noopener noreferrer"
@@ -146,10 +157,6 @@ exports[`<Footer /> matches snapshot 1`] = `
> >
trending:article10title trending:article10title
</a> </a>
</div>
<div
className="footer-col footer-col-2"
>
<a <a
href="trending:article11link" href="trending:article11link"
rel="noopener noreferrer" rel="noopener noreferrer"
@@ -213,13 +220,6 @@ exports[`<Footer /> matches snapshot 1`] = `
> >
trending:article19title trending:article19title
</a> </a>
<a
href="trending:article20link"
rel="noopener noreferrer"
target="_blank"
>
trending:article20title
</a>
</div> </div>
<div <div
className="footer-col footer-col-3" className="footer-col footer-col-3"
@@ -227,6 +227,13 @@ exports[`<Footer /> matches snapshot 1`] = `
<div <div
className="footer-left" className="footer-left"
> >
<a
href="trending:article20link"
rel="noopener noreferrer"
target="_blank"
>
trending:article20title
</a>
<a <a
href="trending:article21link" href="trending:article21link"
rel="noopener noreferrer" rel="noopener noreferrer"
@@ -255,6 +262,10 @@ exports[`<Footer /> matches snapshot 1`] = `
> >
trending:article24title trending:article24title
</a> </a>
</div>
<div
className="footer-right"
>
<a <a
href="trending:article25link" href="trending:article25link"
rel="noopener noreferrer" rel="noopener noreferrer"
@@ -262,10 +273,6 @@ exports[`<Footer /> matches snapshot 1`] = `
> >
trending:article25title trending:article25title
</a> </a>
</div>
<div
className="footer-right"
>
<a <a
href="trending:article26link" href="trending:article26link"
rel="noopener noreferrer" rel="noopener noreferrer"
@@ -294,13 +301,6 @@ exports[`<Footer /> matches snapshot 1`] = `
> >
trending:article29title trending:article29title
</a> </a>
<a
href="trending:article30link"
rel="noopener noreferrer"
target="_blank"
>
trending:article30title
</a>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -42,6 +42,9 @@ function Footer() {
<div className='col-header'>{t('footer.trending-guides')}</div> <div className='col-header'>{t('footer.trending-guides')}</div>
<div className='trending-guides-row'> <div className='trending-guides-row'>
<div className='footer-col footer-col-1'> <div className='footer-col footer-col-1'>
<Link external={false} to={t('trending:article0link')}>
{t('trending:article0title')}
</Link>
<Link external={false} to={t('trending:article1link')}> <Link external={false} to={t('trending:article1link')}>
{t('trending:article1title')} {t('trending:article1title')}
</Link> </Link>
@@ -69,11 +72,11 @@ function Footer() {
<Link external={false} to={t('trending:article9link')}> <Link external={false} to={t('trending:article9link')}>
{t('trending:article9title')} {t('trending:article9title')}
</Link> </Link>
</div>
<div className='footer-col footer-col-2'>
<Link external={false} to={t('trending:article10link')}> <Link external={false} to={t('trending:article10link')}>
{t('trending:article10title')} {t('trending:article10title')}
</Link> </Link>
</div>
<div className='footer-col footer-col-2'>
<Link external={false} to={t('trending:article11link')}> <Link external={false} to={t('trending:article11link')}>
{t('trending:article11title')} {t('trending:article11title')}
</Link> </Link>
@@ -101,12 +104,12 @@ function Footer() {
<Link external={false} to={t('trending:article19link')}> <Link external={false} to={t('trending:article19link')}>
{t('trending:article19title')} {t('trending:article19title')}
</Link> </Link>
<Link external={false} to={t('trending:article20link')}>
{t('trending:article20title')}
</Link>
</div> </div>
<div className='footer-col footer-col-3'> <div className='footer-col footer-col-3'>
<div className='footer-left'> <div className='footer-left'>
<Link external={false} to={t('trending:article20link')}>
{t('trending:article20title')}
</Link>
<Link external={false} to={t('trending:article21link')}> <Link external={false} to={t('trending:article21link')}>
{t('trending:article21title')} {t('trending:article21title')}
</Link> </Link>
@@ -119,12 +122,12 @@ function Footer() {
<Link external={false} to={t('trending:article24link')}> <Link external={false} to={t('trending:article24link')}>
{t('trending:article24title')} {t('trending:article24title')}
</Link> </Link>
<Link external={false} to={t('trending:article25link')}>
{t('trending:article25title')}
</Link>
</div> </div>
<div className='footer-right'> <div className='footer-right'>
<Link external={false} to={t('trending:article25link')}>
{t('trending:article25title')}
</Link>
<Link external={false} to={t('trending:article26link')}> <Link external={false} to={t('trending:article26link')}>
{t('trending:article26title')} {t('trending:article26title')}
</Link> </Link>
@@ -137,9 +140,6 @@ function Footer() {
<Link external={false} to={t('trending:article29link')}> <Link external={false} to={t('trending:article29link')}>
{t('trending:article29title')} {t('trending:article29title')}
</Link> </Link>
<Link external={false} to={t('trending:article30link')}>
{t('trending:article30title')}
</Link>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -7,6 +7,7 @@ import qs from 'query-string';
import { navigate } from 'gatsby'; import { navigate } from 'gatsby';
import Media from 'react-responsive'; import Media from 'react-responsive';
import algoliasearch from 'algoliasearch/lite'; import algoliasearch from 'algoliasearch/lite';
import { withTranslation } from 'react-i18next';
import { import {
isSearchDropdownEnabledSelector, isSearchDropdownEnabledSelector,
@@ -31,6 +32,7 @@ const propTypes = {
isDropdownEnabled: PropTypes.bool, isDropdownEnabled: PropTypes.bool,
location: PropTypes.object.isRequired, location: PropTypes.object.isRequired,
query: PropTypes.string, query: PropTypes.string,
t: PropTypes.func.isRequired,
toggleSearchDropdown: PropTypes.func.isRequired, toggleSearchDropdown: PropTypes.func.isRequired,
updateSearchQuery: PropTypes.func.isRequired updateSearchQuery: PropTypes.func.isRequired
}; };
@@ -124,11 +126,11 @@ class InstantSearchRoot extends Component {
}; };
render() { render() {
const { query } = this.props; const { query, t } = this.props;
const MAX_MOBILE_HEIGHT = 768; const MAX_MOBILE_HEIGHT = 768;
return ( return (
<InstantSearch <InstantSearch
indexName='news' indexName={t('search.index-name')}
onSearchStateChange={this.onSearchStateChange} onSearchStateChange={this.onSearchStateChange}
searchClient={searchClient} searchClient={searchClient}
searchState={{ query }} searchState={{ query }}
@@ -157,7 +159,7 @@ InstantSearchRoot.propTypes = propTypes;
const InstantSearchRootConnected = connect( const InstantSearchRootConnected = connect(
mapStateToProps, mapStateToProps,
mapDispatchToProps mapDispatchToProps
)(InstantSearchRoot); )(withTranslation()(InstantSearchRoot));
const WithInstantSearch = ({ children }) => ( const WithInstantSearch = ({ children }) => (
<Location> <Location>

View File

@@ -93,7 +93,7 @@ export class SearchBar extends Component {
handleSearch(e, query) { handleSearch(e, query) {
e.preventDefault(); e.preventDefault();
const { toggleSearchDropdown, updateSearchQuery } = this.props; const { toggleSearchDropdown, updateSearchQuery, t } = this.props;
const { index, hits } = this.state; const { index, hits } = this.state;
const selectedHit = hits[index]; const selectedHit = hits[index];
@@ -116,9 +116,9 @@ export class SearchBar extends Component {
// are hits besides the footer // are hits besides the footer
return query && hits.length > 1 return query && hits.length > 1
? window.location.assign( ? window.location.assign(
`https://www.freecodecamp.org/news/search/?query=${encodeURIComponent( t('search.search-page-url', {
query searchQuery: encodeURIComponent(query)
)}` })
) )
: false; : false;
} }

View File

@@ -25,9 +25,9 @@ const CustomHits = connectHits(
query: searchQuery, query: searchQuery,
url: noHits url: noHits
? null ? null
: `https://www.freecodecamp.org/news/search/?query=${encodeURIComponent( : t('search.search-page-url', {
searchQuery searchQuery: encodeURIComponent(searchQuery)
)}`, }),
title: t('search.see-results', { searchQuery: searchQuery }), title: t('search.see-results', { searchQuery: searchQuery }),
_highlightResult: { _highlightResult: {
query: { query: {

View File

@@ -11,13 +11,7 @@ const Suggestion = ({ hit, handleMouseEnter, handleMouseLeave }) => {
? 'fcc_suggestion_footer fcc_suggestion_item' ? 'fcc_suggestion_footer fcc_suggestion_item'
: 'fcc_suggestion_item' : 'fcc_suggestion_item'
} }
href={ href={hit.url}
dropdownFooter
? `https://www.freecodecamp.org/news/search/?query=${encodeURIComponent(
hit.query
)}`
: hit.url
}
onMouseEnter={handleMouseEnter} onMouseEnter={handleMouseEnter}
onMouseLeave={handleMouseLeave} onMouseLeave={handleMouseLeave}
> >