diff --git a/client/src/App.tsx b/client/src/App.tsx
index 2634fd2..e075456 100644
--- a/client/src/App.tsx
+++ b/client/src/App.tsx
@@ -5,14 +5,21 @@ import Languages from 'pages/Languages';
import Typing from 'pages/Typing';
import NotFound from 'pages/NotFound';
+import Footer from 'components/Footer';
+
function App() {
return (
-
WPM: {Math.round(score)}
Accuracy: {Math.round(accuracy)}%
diff --git a/client/src/constants/default.ts b/client/src/constants/default.ts index ac6423e..62a4456 100644 --- a/client/src/constants/default.ts +++ b/client/src/constants/default.ts @@ -34,3 +34,31 @@ export const KEYS_TO_DISABLE = [ 'ArrowLeft', 'ArrowRight', ]; + +export const SUPPORTED_LANGUAGES = [ + 'javascript', + 'typescript', + 'python', + 'rust', + 'golang', + 'java', + 'ruby', + 'php', + 'swift', + 'kotlin', + 'dart', + 'scala', + 'elixir', + 'haskell', + 'clojure', + 'lua', + 'r', + 'perl', + 'bash', + 'powershell', + 'pascal', + 'ocaml', + 'c', + 'c++', + 'fortran' +]; diff --git a/client/src/index.css b/client/src/index.css index 5550671..e804abd 100644 --- a/client/src/index.css +++ b/client/src/index.css @@ -1,4 +1,9 @@ :root { + --black: #131314; + --white: #dddddd; + --crimson: #bd1839; + --background: #1d1b1b; + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; line-height: 1.5; font-weight: 400; @@ -12,10 +17,52 @@ -moz-osx-font-smoothing: grayscale; } -body { +* { margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; + padding: 0; +} + +::-webkit-scrollbar { + width: 0; + height: 0; + background: transparent; +} + +::-webkit-scrollbar-thumb { + background: transparent; +} + +::selection { + background: var(--crimson); + color: var(--white); +} + +a { + text-decoration: none; + color: var(--white); +} + +body { + background: var(--background); + color: var(--white); +} + +body::-webkit-scrollbar { + width: 0.5rem; +} + +body::-webkit-scrollbar-thumb { + background-color: var(--crimson); +} + +.app { + min-height: 95vh; +} + +@media (min-width: 1441px) { + .app { + width: 1368px; + + margin: 0 auto; + } } diff --git a/client/src/pages/Home/index.css b/client/src/pages/Home/index.css index 0427de6..78e555d 100644 --- a/client/src/pages/Home/index.css +++ b/client/src/pages/Home/index.css @@ -1,3 +1,99 @@ -.container { - text-align: left; +.home-container { + padding: 0rem 3rem; + margin-bottom: 1rem; +} + +@media (max-width: 768px) { + .home-container { + padding: 0rem 1rem; + } +} + +header { + margin: 0 auto; + padding: 2.5rem 1.25rem; + + text-align: center; +} + +header h1 { + font-size: 3.5rem; + font-weight: bold; + + margin-bottom: 1.5rem; + + color: var(--crimson); +} + +header p { + font-size: 1.5rem; + font-weight: 400; + + margin-bottom: 2.5rem; + + color: var(--white); +} + +header .cta { + all: unset; + cursor: pointer; + + background: var(--crimson); + color: var(--white); + + border-radius: 0.75rem; + box-shadow: none; + + padding: 1rem 2rem; + font-size: 1.25rem; + font-weight: bold; + + text-decoration: none; +} + +.features { + margin-top: 2rem; + padding: 2.5rem 1.25rem; + + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + align-items: stretch; + gap: 3rem; +} + +.feature, .benefit { + padding: 1.5rem; + + border-radius: 0.75rem; + + background: var(--black); +} + +.feature h3, .benefit h3 { + font-size: 1.5rem; + font-weight: bold; + + margin-bottom: 1rem; +} + +.benefits { + margin-top: 2rem; + padding: 2.5rem 1.25rem; +} + +.benefits h2 { + font-size: 3.5rem; + font-weight: bold; + text-align: center; + + margin-bottom: 1.5rem; + + color: var(--crimson); +} + +.benefits-wrapper { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + align-items: stretch; + gap: 3rem; } diff --git a/client/src/pages/Home/index.tsx b/client/src/pages/Home/index.tsx index 794fb73..b3951fe 100644 --- a/client/src/pages/Home/index.tsx +++ b/client/src/pages/Home/index.tsx @@ -1,9 +1,56 @@ +import { NavLink } from 'react-router'; import './index.css'; function Home() { return ( -Master touch typing with real code snippets from your favorite programming languages, powered by AI.
++ Practice with actual code examples from popular repositories, making your learning relevant to real-world + programming. +
++ Choose from Python, JavaScript, TypeScript, Rust, and more. Practice with the languages you use daily. +
++ Code is generated with the help of the Open Source LLM Models. +
+Increase your coding speed and reduce errors with proper typing technique
++ Familiarize yourself with language syntax while improving your typing speed +
+