From b6ebc5f88ffe9fb442238f160879ad47dd713d11 Mon Sep 17 00:00:00 2001 From: name Date: Fri, 11 Aug 2023 05:09:24 +0000 Subject: 2023-08-10 --- docusaurus/src/components/ButtonLink.tsx | 27 +++++++++ docusaurus/src/components/FormCTA.tsx | 23 ++++++++ docusaurus/src/components/FormQuickStart.tsx | 35 ++++++++++++ docusaurus/src/components/InputMathProblems.tsx | 33 +++++++++++ docusaurus/src/components/ShowStepButton.tsx | 25 +++++++++ docusaurus/src/css/custom.css | 21 +++++++ docusaurus/src/functions/submitMathInputForm.tsx | 23 ++++++++ docusaurus/src/theme/Footer/InputPreloader.tsx | 43 +++++++++++++++ docusaurus/src/theme/Footer/index.tsx | 21 +++++++ docusaurus/src/theme/NotFound/DDoSProtection.tsx | 34 ++++++++++++ docusaurus/src/theme/NotFound/index.tsx | 28 ++++++++++ docusaurus/src/theme/NotFound/redirectInput.tsx | 70 ++++++++++++++++++++++++ 12 files changed, 383 insertions(+) create mode 100644 docusaurus/src/components/ButtonLink.tsx create mode 100644 docusaurus/src/components/FormCTA.tsx create mode 100644 docusaurus/src/components/FormQuickStart.tsx create mode 100644 docusaurus/src/components/InputMathProblems.tsx create mode 100644 docusaurus/src/components/ShowStepButton.tsx create mode 100644 docusaurus/src/css/custom.css create mode 100644 docusaurus/src/functions/submitMathInputForm.tsx create mode 100644 docusaurus/src/theme/Footer/InputPreloader.tsx create mode 100644 docusaurus/src/theme/Footer/index.tsx create mode 100644 docusaurus/src/theme/NotFound/DDoSProtection.tsx create mode 100644 docusaurus/src/theme/NotFound/index.tsx create mode 100644 docusaurus/src/theme/NotFound/redirectInput.tsx (limited to 'docusaurus/src') diff --git a/docusaurus/src/components/ButtonLink.tsx b/docusaurus/src/components/ButtonLink.tsx new file mode 100644 index 0000000..12fc559 --- /dev/null +++ b/docusaurus/src/components/ButtonLink.tsx @@ -0,0 +1,27 @@ +/** + * @license + * SPDX-License-Identifier: AGPL-3.0-or-later + * This file is part of Wolfree. + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + */ + +import React from "react"; +import Link from "@docusaurus/Link"; +import { Button } from "@mui/material"; + +const ButtonLink = ({ to = String(), text = String() }) => ( + + + +); + +export default ButtonLink; + +// Typography - MUI System +// https://mui.com/system/typography/ + +// Docusaurus Client API | Docusaurus +// https://docusaurus.io/docs/docusaurus-core#link diff --git a/docusaurus/src/components/FormCTA.tsx b/docusaurus/src/components/FormCTA.tsx new file mode 100644 index 0000000..1b5a81e --- /dev/null +++ b/docusaurus/src/components/FormCTA.tsx @@ -0,0 +1,23 @@ +/** + * @license + * SPDX-License-Identifier: AGPL-3.0-or-later + * This file is part of Wolfree. + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + */ + +import React from "react"; +import submitMathInputForm from "../functions/submitMathInputForm"; +import InputMathProblems from "./InputMathProblems"; +import ShowStepButton from "./ShowStepButton"; + +const FormCTA = ({ autoFocus = Boolean() }) => ( +
+

+ +

+ +

+ +); + +export default FormCTA; diff --git a/docusaurus/src/components/FormQuickStart.tsx b/docusaurus/src/components/FormQuickStart.tsx new file mode 100644 index 0000000..60589fb --- /dev/null +++ b/docusaurus/src/components/FormQuickStart.tsx @@ -0,0 +1,35 @@ +/** + * @license + * SPDX-License-Identifier: AGPL-3.0-or-later + * This file is part of Wolfree. + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + */ + +import React from "react"; +import submitMathInputForm from "../functions/submitMathInputForm"; +import InputMathProblems from "./InputMathProblems"; +import ShowStepButton from "./ShowStepButton"; + +const FormQuickStart = () => ( +
+
    +
  1. +

    Type your math problem in the text box.

    + +
  2. +
  3. +

    + Click the "Show Steps" button. +

    + +
  4. +
  5. +

    + Explore the step-by-step solution provided. 🎉 +

    +
  6. +
+
+); + +export default FormQuickStart; diff --git a/docusaurus/src/components/InputMathProblems.tsx b/docusaurus/src/components/InputMathProblems.tsx new file mode 100644 index 0000000..c7b49ce --- /dev/null +++ b/docusaurus/src/components/InputMathProblems.tsx @@ -0,0 +1,33 @@ +/** + * @license + * SPDX-License-Identifier: AGPL-3.0-or-later + * This file is part of Wolfree. + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + */ + +import React from "react"; +import TextField from "@mui/material/TextField"; +// TextField API - Material UI +// https://mui.com/material-ui/api/text-field/ + +const InputMathProblems = ({ + autoFocus = Boolean(), + defaultValue = String(), +}) => ( + +); + +export default InputMathProblems; diff --git a/docusaurus/src/components/ShowStepButton.tsx b/docusaurus/src/components/ShowStepButton.tsx new file mode 100644 index 0000000..3ae7ba3 --- /dev/null +++ b/docusaurus/src/components/ShowStepButton.tsx @@ -0,0 +1,25 @@ +/** + * @license + * SPDX-License-Identifier: AGPL-3.0-or-later + * This file is part of Wolfree. + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + */ + +import React from "react"; +import { Button } from "@mui/material"; + +const ShowStepButton = () => ( + +); + +export default ShowStepButton; + +// Typography - MUI System +// https://mui.com/system/typography/ diff --git a/docusaurus/src/css/custom.css b/docusaurus/src/css/custom.css new file mode 100644 index 0000000..a027863 --- /dev/null +++ b/docusaurus/src/css/custom.css @@ -0,0 +1,21 @@ +/** + * @license + * SPDX-License-Identifier: AGPL-3.0-or-later + * This file is part of Wolfree. + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + */ + +:root { + --ifm-menu-link-padding-vertical: calc(var(--ifm-menu-link-padding-horizontal) * 1.5); + --ifm-color-primary: blue; + --ifm-color-gray-900: var(--ifm-color-gray-900); + --ifm-color-secondary-contrast-foreground: var(--ifm-color-gray-900); +} + +.footer__link-item { + line-height: 3; +} + +.alert { + --ifm-link-color: unset; +} \ No newline at end of file diff --git a/docusaurus/src/functions/submitMathInputForm.tsx b/docusaurus/src/functions/submitMathInputForm.tsx new file mode 100644 index 0000000..a90894e --- /dev/null +++ b/docusaurus/src/functions/submitMathInputForm.tsx @@ -0,0 +1,23 @@ +/** + * @license + * SPDX-License-Identifier: AGPL-3.0-or-later + * This file is part of Wolfree. + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + */ + +import { FormEventHandler } from "react"; + +const submitMathInputForm: FormEventHandler = (event) => { + event.preventDefault(); + const form = event.currentTarget; + const formData = new FormData(form); + + const i = formData.get("i") || ""; + if (i instanceof File) return; + + const url = new URL("/input/", window.location.href); + url.searchParams.set("i", i); + window.location.href = url.href; +}; + +export default submitMathInputForm; diff --git a/docusaurus/src/theme/Footer/InputPreloader.tsx b/docusaurus/src/theme/Footer/InputPreloader.tsx new file mode 100644 index 0000000..325f8a7 --- /dev/null +++ b/docusaurus/src/theme/Footer/InputPreloader.tsx @@ -0,0 +1,43 @@ +/** + * @license + * SPDX-License-Identifier: AGPL-3.0-or-later + * This file is part of Wolfree. + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + */ + +import React, { useEffect, useState } from "react"; + +const InputPreloader = () => { + const [showIframe, setShowIframe] = useState(false); + + useEffect(() => { + const handleIframeLoad = () => { + // Show the iframe after a 3000ms delay + const timerId = setTimeout(() => setShowIframe(true), 3000); + // Cleanup the timer when the component unmounts + return () => clearTimeout(timerId); + }; + + window.scroll(0, 0); + + window.addEventListener("load", handleIframeLoad); + + // Cleanup the event listener when the component unmounts + return () => window.removeEventListener("load", handleIframeLoad); + }, []); // Empty dependency array means the effect runs only once after initial render + + return ( + <> + {/* Use a descriptive title for accessibility */} + {showIframe && ( +