diff --git a/app/Footer.tsx b/app/Footer.tsx index a1414c4..d883f82 100644 --- a/app/Footer.tsx +++ b/app/Footer.tsx @@ -1,5 +1,5 @@ import React from "react"; -import styles from "../styles/Footer.module.scss"; +import styles from "../styles/modules/Footer.module.scss"; import Image from "next/image"; export default function Footer() { return ( diff --git a/app/Nav.tsx b/app/Nav.tsx index 63dc1ca..7693da8 100644 --- a/app/Nav.tsx +++ b/app/Nav.tsx @@ -1,5 +1,5 @@ "use client"; -import styles from "../styles/Nav.module.scss"; +import styles from "../styles/modules/Nav.module.scss"; import Image from "next/image"; import Link from "next/link"; import { useEffect } from "react"; diff --git a/app/articles/[categoryName]/[articleName]/ContentTable.tsx b/app/articles/[categoryName]/[articleName]/ContentTable.tsx index 8c0c33b..9b8db5f 100644 --- a/app/articles/[categoryName]/[articleName]/ContentTable.tsx +++ b/app/articles/[categoryName]/[articleName]/ContentTable.tsx @@ -1,6 +1,6 @@ import React from "react"; import prisma from "../../../../lib/prisma"; -import styles from "../../../../styles/TutorialContentTable.module.scss"; +import styles from "../../../../styles/modules/TutorialContentTable.module.scss"; import { Article, ContentTableEntry } from "@prisma/client"; export default function ContentTable({ diff --git a/app/articles/[categoryName]/[articleName]/Sidebar.tsx b/app/articles/[categoryName]/[articleName]/Sidebar.tsx index 62d18c1..bedbd60 100644 --- a/app/articles/[categoryName]/[articleName]/Sidebar.tsx +++ b/app/articles/[categoryName]/[articleName]/Sidebar.tsx @@ -1,5 +1,5 @@ import React from "react"; -import styles from "../../../../styles/Sidebar.module.scss"; +import styles from "../../../../styles/modules/Sidebar.module.scss"; export default function Sidebar() { return (
diff --git a/app/articles/[categoryName]/[articleName]/page.tsx b/app/articles/[categoryName]/[articleName]/page.tsx index fa8d6e2..094efb9 100644 --- a/app/articles/[categoryName]/[articleName]/page.tsx +++ b/app/articles/[categoryName]/[articleName]/page.tsx @@ -1,7 +1,7 @@ import { marked } from "marked"; import ContentTable from "./ContentTable"; import Sidebar from "./Sidebar"; -import styles from "../../../../styles/Tutorial.module.scss"; +import styles from "../../../../styles/modules/Tutorial.module.scss"; import LoadMarkdown from "./LoadMarkdown"; import prisma from "../../../../lib/prisma"; import { Article, Category, ContentTableEntry } from "@prisma/client"; diff --git a/app/articles/[categoryName]/page.tsx b/app/articles/[categoryName]/page.tsx index 71df7e8..1a26f8b 100644 --- a/app/articles/[categoryName]/page.tsx +++ b/app/articles/[categoryName]/page.tsx @@ -1,4 +1,4 @@ -import styles from "../../../styles/Category.module.scss"; +import styles from "../../../styles/modules/Category.module.scss"; import Link from "next/link"; import prisma from "../../../lib/prisma"; import { Article, Category } from "@prisma/client"; diff --git a/app/articles/page.tsx b/app/articles/page.tsx index 6ab00cd..1bd6654 100644 --- a/app/articles/page.tsx +++ b/app/articles/page.tsx @@ -1,4 +1,4 @@ -import styles from "../../styles/CategoryList.module.scss"; +import styles from "../../styles/modules/CategoryList.module.scss"; import Link from "next/link"; import prisma from "../../lib/prisma"; import { Category, Svg, Prisma } from "@prisma/client"; diff --git a/app/layout.tsx b/app/layout.tsx index e1f9d7a..edea00e 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,5 +1,5 @@ import "../styles/globals.scss"; -import "../styles/colorVariables.scss"; +import "../styles/variables_colors.scss"; import "../styles/variables.scss"; import Nav from "./Nav"; import Footer from "./Footer"; diff --git a/app/testing/typography/page.tsx b/app/testing/typography/page.tsx new file mode 100644 index 0000000..e0176f8 --- /dev/null +++ b/app/testing/typography/page.tsx @@ -0,0 +1,23 @@ +import React from "react"; + +export default function Typograhy() { + return ( +
+

Testing this headline

+

Testing this headline

+

Testing this headline

+

Testing this headline

+
Testing this headline
+
Testing this headline
+
+

+ This is a paragraph Lorem ipsum dolor sit, amet consectetur adipisicing + elit. Dolores enim unde obcaecati ea harum voluptate, nisi quia. Quod, + et autem! Aperiam mollitia ullam ab eaque quidem facilis est ducimus + delectus. +

+
+ This is a link +
+ ); +} diff --git a/styles/globals.scss b/styles/globals.scss index 1dbf9ab..ee12ec8 100644 --- a/styles/globals.scss +++ b/styles/globals.scss @@ -1,5 +1,7 @@ -@import "colorVariables.scss"; +@import "variables_colors.scss"; @import "variables.scss"; +@import "typography.scss"; + * { box-sizing: border-box; padding: 0; @@ -15,13 +17,7 @@ html, body { max-width: 100vw; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", - "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; background-color: var(--color-background-body); - color: var(--color-font); min-height: 100vh; display: flex; flex-direction: column; @@ -30,28 +26,3 @@ body { flex: 1; } } - -p, -a { - letter-spacing: 1px; - &:visited { - color: var(--color-font); - } -} - -a { - font-weight: bold; - text-decoration: none; - color: var(--color-font-link); - transition: color 50ms linear; - - &:hover { - text-decoration: underline; - color: var(--color-font-link-hover) !important; - } - - &:visited { - text-decoration: none; - color: var(--color-font-link); - } -} diff --git a/styles/Category.module.scss b/styles/modules/Category.module.scss similarity index 97% rename from styles/Category.module.scss rename to styles/modules/Category.module.scss index f4bbd44..e5eff6a 100644 --- a/styles/Category.module.scss +++ b/styles/modules/Category.module.scss @@ -1,4 +1,4 @@ -@import "variables.scss"; +@import "../variables.scss"; .category { h1 { text-align: center; diff --git a/styles/CategoryList.module.scss b/styles/modules/CategoryList.module.scss similarity index 96% rename from styles/CategoryList.module.scss rename to styles/modules/CategoryList.module.scss index f4138b0..7df209f 100644 --- a/styles/CategoryList.module.scss +++ b/styles/modules/CategoryList.module.scss @@ -1,9 +1,6 @@ -@import "variables.scss"; +@import "../variables.scss"; .categoryList { - h1 { - text-align: center; - font-size: 1.5em; - } + text-align: center; .content { margin-top: 30px; diff --git a/styles/Footer.module.scss b/styles/modules/Footer.module.scss similarity index 97% rename from styles/Footer.module.scss rename to styles/modules/Footer.module.scss index 8144e99..3087c83 100644 --- a/styles/Footer.module.scss +++ b/styles/modules/Footer.module.scss @@ -1,4 +1,4 @@ -@import "variables.scss"; +@import "../variables.scss"; .footer { padding: 200px 15px 30px 15px; display: flex; diff --git a/styles/Nav.module.scss b/styles/modules/Nav.module.scss similarity index 99% rename from styles/Nav.module.scss rename to styles/modules/Nav.module.scss index 19e9451..770743c 100644 --- a/styles/Nav.module.scss +++ b/styles/modules/Nav.module.scss @@ -1,4 +1,4 @@ -@import "variables.scss"; +@import "../variables.scss"; .nav { background-color: var(--color-background-nav); height: $nav-height-inital; diff --git a/styles/Sidebar.module.scss b/styles/modules/Sidebar.module.scss similarity index 95% rename from styles/Sidebar.module.scss rename to styles/modules/Sidebar.module.scss index 5067c48..337e731 100644 --- a/styles/Sidebar.module.scss +++ b/styles/modules/Sidebar.module.scss @@ -1,4 +1,4 @@ -@import "variables.scss"; +@import "../variables.scss"; .sidebar { .stickyContainer { diff --git a/styles/Tutorial.module.scss b/styles/modules/Tutorial.module.scss similarity index 93% rename from styles/Tutorial.module.scss rename to styles/modules/Tutorial.module.scss index 516c30c..6a80690 100644 --- a/styles/Tutorial.module.scss +++ b/styles/modules/Tutorial.module.scss @@ -1,4 +1,4 @@ -@import "variables.scss"; +@import "../variables.scss"; .tutorial { display: grid; gap: 70px; diff --git a/styles/TutorialContentTable.module.scss b/styles/modules/TutorialContentTable.module.scss similarity index 94% rename from styles/TutorialContentTable.module.scss rename to styles/modules/TutorialContentTable.module.scss index daf6c65..401c083 100644 --- a/styles/TutorialContentTable.module.scss +++ b/styles/modules/TutorialContentTable.module.scss @@ -1,4 +1,5 @@ -@import "variables.scss"; +@import "../variables.scss"; + .tutorialContentTable { @media (max-width: $tutorial-breakpoint-2) { display: none; diff --git a/styles/typography.scss b/styles/typography.scss new file mode 100644 index 0000000..593c057 --- /dev/null +++ b/styles/typography.scss @@ -0,0 +1,72 @@ +// This file includes styles for text and font styles in the project. +// It does not include color styles, which are defined in the 'variables_colors.scss' and 'global.scss' files. + +@import url("https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"); +@import "variables_colors.scss"; +@import "variables.scss"; + +html, +body { + font-family: "Roboto", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: var(--color-font); + font-size: $font-size-default; + letter-spacing: $font-letter-spacing-default; +} + +/* Headings */ +h1 { + font-size: calc($font-size-default + $font-size-headline-step * 6); + font-weight: bold; + letter-spacing: $font-letter-spacing-headline-large; +} + +h2 { + // 5 skipped on purpose + font-size: calc($font-size-default + $font-size-headline-step * 4); + font-weight: bold; + letter-spacing: $font-letter-spacing-headline-medium; +} + +h3 { + font-size: calc($font-size-default + $font-size-headline-step * 3); + font-weight: bold; + letter-spacing: $font-letter-spacing-headline-small; +} + +h4 { + font-size: calc($font-size-default + $font-size-headline-step * 2); + font-weight: bold; + letter-spacing: $font-letter-spacing-headline-small; +} + +h5 { + font-size: calc($font-size-default + $font-size-headline-step * 1); + font-weight: bold; + letter-spacing: $font-letter-spacing-headline-small; +} + +h6 { + font-size: $font-size-default; + font-weight: bold; + letter-spacing: 1.25px; +} + +/* General Texts */ +a { + font-weight: bold; + text-decoration: none; + color: var(--color-font-link); + transition: color 50ms linear; + + &:hover { + text-decoration: underline; + color: var(--color-font-link-hover) !important; + } + + &:visited { + text-decoration: none; + color: var(--color-font-link); + } +} diff --git a/styles/variables.scss b/styles/variables.scss index 385e28d..0592e52 100644 --- a/styles/variables.scss +++ b/styles/variables.scss @@ -1,3 +1,13 @@ +// This file stores all SCSS variables in one place to simplify the use of variables throughout the project. + +/* Typography */ +$font-size-default: 1em; +$font-size-headline-step: 0.12em; +$font-letter-spacing-default: 1px; +$font-letter-spacing-headline-large: 2px; +$font-letter-spacing-headline-medium: 1.5px; +$font-letter-spacing-headline-small: 1.25px; + /* Tutorial Page */ $tutorial-grid-sticky-top: 60px; $tutorial-content-table-width: 200px; @@ -28,6 +38,5 @@ $categoryList-breakpoint-1: 850px; $categoryList-breakpoint-2: 600px; /* Category */ - $category-breakpoint-1: 800px; $category-breakpoint-2: 550px; diff --git a/styles/colorVariables.scss b/styles/variables_colors.scss similarity index 89% rename from styles/colorVariables.scss rename to styles/variables_colors.scss index ebdcba2..91f7294 100644 --- a/styles/colorVariables.scss +++ b/styles/variables_colors.scss @@ -1,3 +1,7 @@ +// We use pure CSS variables in this file because SCSS variables get hardcoded after compiling, +// which means the dynamic changing effect is lost. +// Using CSS variables allows us to change the values at runtime + :root { /*! By default colors are in DARK mode */ /* Colors: General */