diff --git a/package-lock.json b/package-lock.json index 7c96a3d..58094c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,6 +23,7 @@ "node-sql-parser": "^4.7.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-google-recaptcha": "^3.1.0", "react-hotkeys-hook": "^4.4.1", "react-router-dom": "^6.11.2", "react-scripts": "5.0.1", @@ -9350,6 +9351,19 @@ "he": "bin/he" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -15181,6 +15195,18 @@ "node": ">=14" } }, + "node_modules/react-async-script": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-async-script/-/react-async-script-1.2.0.tgz", + "integrity": "sha512-bCpkbm9JiAuMGhkqoAiC0lLkb40DJ0HOEJIku+9JDjxX3Rcs+ztEOG13wbrOskt3n2DTrjshhaQ/iay+SnGg5Q==", + "dependencies": { + "hoist-non-react-statics": "^3.3.0", + "prop-types": "^15.5.0" + }, + "peerDependencies": { + "react": ">=16.4.1" + } + }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", @@ -15283,6 +15309,18 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" }, + "node_modules/react-google-recaptcha": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/react-google-recaptcha/-/react-google-recaptcha-3.1.0.tgz", + "integrity": "sha512-cYW2/DWas8nEKZGD7SCu9BSuVz8iOcOLHChHyi7upUuVhkpkhYG/6N3KDiTQ3XAiZ2UAZkfvYKMfAHOzBOcGEg==", + "dependencies": { + "prop-types": "^15.5.0", + "react-async-script": "^1.2.0" + }, + "peerDependencies": { + "react": ">=16.4.1" + } + }, "node_modules/react-hotkeys-hook": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-4.4.1.tgz", diff --git a/package.json b/package.json index f5547a9..d6908cd 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "node-sql-parser": "^4.7.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-google-recaptcha": "^3.1.0", "react-hotkeys-hook": "^4.4.1", "react-router-dom": "^6.11.2", "react-scripts": "5.0.1", diff --git a/src/App.js b/src/App.js index 7f223a9..e3545bb 100644 --- a/src/App.js +++ b/src/App.js @@ -4,20 +4,20 @@ import LandingPage from "./pages/landing_page"; import Survey from "./pages/survey"; import Shortcuts from "./pages/shortcuts"; import BugReport from "./pages/bug_report"; +import SignUp from "./pages/signup"; function App() { return ( - <> - - - } /> - } /> - } /> - }/> - }/> - - - + + + } /> + } /> + } /> + } /> + } /> + } /> + + ); } diff --git a/src/pages/bug_report.jsx b/src/pages/bug_report.jsx index b2fe762..7330c5a 100644 --- a/src/pages/bug_report.jsx +++ b/src/pages/bug_report.jsx @@ -151,7 +151,7 @@ export default function BugReport() { body.setAttribute("theme-mode", "light"); } } - document.title = "Report a bug - drawDB"; + document.title = "Report a bug | drawDB"; document.body.setAttribute("class", "theme"); }, [setTheme]); diff --git a/src/pages/editor.jsx b/src/pages/editor.jsx index c972a1f..c90bf78 100644 --- a/src/pages/editor.jsx +++ b/src/pages/editor.jsx @@ -454,7 +454,7 @@ export default function Editor(props) { ); useEffect(() => { - document.title = "Editor - drawDB"; + document.title = "Editor | drawDB"; socket.connect(); diff --git a/src/pages/landing_page.jsx b/src/pages/landing_page.jsx index cd9e130..2bb8113 100644 --- a/src/pages/landing_page.jsx +++ b/src/pages/landing_page.jsx @@ -21,7 +21,7 @@ export default function LandingPage() { )}
-
+
logo @@ -42,9 +42,17 @@ export default function LandingPage() { Download
- +
+ + Log in + + + Sign up + +

diff --git a/src/pages/shortcuts.jsx b/src/pages/shortcuts.jsx index 147b77e..03066a6 100644 --- a/src/pages/shortcuts.jsx +++ b/src/pages/shortcuts.jsx @@ -81,7 +81,7 @@ export default function Shortcuts() { body.setAttribute("theme-mode", "light"); } } - document.title = "Shortcuts - drawDB"; + document.title = "Shortcuts | drawDB"; document.body.setAttribute("class", "theme"); }, [setTheme]); diff --git a/src/pages/signup.jsx b/src/pages/signup.jsx new file mode 100644 index 0000000..39df6ca --- /dev/null +++ b/src/pages/signup.jsx @@ -0,0 +1,38 @@ +import React, { useEffect } from "react"; +import { Link } from "react-router-dom"; +import logo from "../assets/logo_light_46.png"; +import ReCAPTCHA from "react-google-recaptcha"; + +export default function SignUp() { + useEffect(() => { + document.title = "Create account | drawDB"; + }); + return ( +
+
+
+
+ + logo + +
Create your account
+
+
+
or
+
+
+ + + + {}} + /> + +
+
+
+ ); +}