diff --git a/hooks/categories.tsx b/hooks/categories.tsx new file mode 100644 index 00000000..3e6e6980 --- /dev/null +++ b/hooks/categories.tsx @@ -0,0 +1,62 @@ +import { + EnhancedEncryption, + FormatQuote, + Functions, + InsertPhoto, + OfflineBolt, + Search, + Sort, + Storage, +} from "@material-ui/icons"; +import useTranslation from "./translation"; + +type Category = { + name: string; + icon: JSX.Element; + href: string; +}; +export default function useCategories(): Category[] { + const t = useTranslation(); + return [ + { + name: t("categories:sorts"), + icon: , + href: "/category/sorts", + }, + { + name: t("categories:searches"), + icon: , + href: "/category/searches", + }, + { + name: t("categories:dynamicprogramming"), + icon: , + href: "/category/dynamicprogramming", + }, + { + name: t("categories:ciphers"), + icon: , + href: "/category/ciphers", + }, + { + name: t("categories:datastructures"), + icon: , + href: "/category/datastructures", + }, + { + name: t("categories:math"), + icon: , + href: "/category/math", + }, + { + name: t("categories:digitalimageprocessing"), + icon: , + href: "/category/digitalimageprocessing", + }, + { + name: t("categories:strings"), + icon: , + href: "/category/strings", + }, + ]; +} diff --git a/pages/index.tsx b/pages/index.tsx index 1e8ba52f..7af29fbf 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { Button, Card, @@ -9,31 +8,22 @@ import { Typography, } from "@material-ui/core"; import AlgorithmsList from "components/algorithmsList"; +import CategoriesList from "components/categoriesList"; +import Head from "components/head"; import LanguagesList from "components/languagesList"; -import { getAlgorithm } from "lib/algorithms"; import Section from "components/section"; -import CategoriesList from "components/categoriesList"; +import Translation from "components/translation"; +import useCategories from "hooks/categories"; +import useTranslation from "hooks/translation"; +import HomeLayout from "layouts/home"; +import { getAlgorithm } from "lib/algorithms"; +import { Algorithm } from "lib/models"; import { Language, Repositories } from "lib/repositories"; +import getRepositoryStars from "lib/stars"; import { serverSideTranslations } from "next-i18next/serverSideTranslations"; import GithubOriginalIcon from "react-devicons/github/original"; import GitterPlainIcon from "react-devicons/gitter/plain"; import WeblatePlainIcon from "react-devicons/weblate/plain"; -import { - Search, - Sort, - OfflineBolt, - EnhancedEncryption, - Storage, - Functions, - InsertPhoto, - FormatQuote, -} from "@material-ui/icons"; -import Translation from "components/translation"; -import useTranslation from "hooks/translation"; -import Head from "components/head"; -import getRepositoryStars from "lib/stars"; -import { Algorithm } from "lib/models"; -import HomeLayout from "layouts/home"; import classes from "./index.module.css"; export default function Home({ @@ -46,6 +36,7 @@ export default function Home({ stars: { [key: string]: number }; }) { const t = useTranslation(); + const categories = useCategories(); return ( <> @@ -84,50 +75,7 @@ export default function Home({
- , - href: "/category/sorts", - }, - { - name: t("categories:searches"), - icon: , - href: "/category/searches", - }, - { - name: t("categories:dynamicprogramming"), - icon: , - href: "/category/dynamicprogramming", - }, - { - name: t("categories:ciphers"), - icon: , - href: "/category/ciphers", - }, - { - name: t("categories:datastructures"), - icon: , - href: "/category/datastructures", - }, - { - name: t("categories:math"), - icon: , - href: "/category/math", - }, - { - name: t("categories:digitalimageprocessing"), - icon: , - href: "/category/digitalimageprocessing", - }, - { - name: t("categories:strings"), - icon: , - href: "/category/strings", - }, - ]} - /> +