diff --git a/components/404View.vue b/components/404View.vue index 648fb29..8e936bb 100644 --- a/components/404View.vue +++ b/components/404View.vue @@ -4,99 +4,116 @@ 404

Not Found!

- Hmm, Sorry... The page you are looking for could not be found, maybe - something went wrong? + Oops! We couldn't find the page you're looking for. It seems like + something went wrong. It might not be our fault. If you believe it is, + please let us know by filing an issue.

+

+ ← Go Back + File an issue +

+ + diff --git a/components/BlogFooter.vue b/components/BlogFooter.vue index 8e4d459..864fbba 100644 --- a/components/BlogFooter.vue +++ b/components/BlogFooter.vue @@ -6,10 +6,35 @@ If you have any questions or comments about this post, please feel free to leave a comment below.

+ +
- - ← Go back to the blog's home - +
+
+

+ + ← Previous +
{{ frontmatter.prev }} +
+ + Next → +
{{ frontmatter.next }} +
+

@@ -17,11 +42,9 @@ import { useData } from "vitepress"; import { onMounted } from "vue"; -const { theme } = useData(); +const { theme, frontmatter } = useData(); onMounted(() => { - const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches; - // Load GitHub Comments script dynamically const script = document.createElement("script"); script.src = "https://giscus.app/client.js"; @@ -35,12 +58,8 @@ onMounted(() => { script.setAttribute("data-reactions-enabled", "1"); script.setAttribute("data-emit-metadata", "0"); script.setAttribute("data-input-position", "bottom"); - - // Apply different theme attributes based on color mode - script.setAttribute("data-theme", isDarkMode ? "transparent_dark" : "light"); - + script.setAttribute("data-theme", "preferred_color_scheme"); script.setAttribute("data-lang", "en"); - script.setAttribute("data-loading", "lazy"); script.setAttribute("crossorigin", "anonymous"); // Append the script to the document @@ -55,17 +74,25 @@ onMounted(() => { a { display: block; padding: 20px; - border-radius: 10px; - color: var(--color-text-secondary); - width: 100%; + color: var(--color-accent); + margin: 0 0.2rem; text-align: center; text-decoration: none; + background-color: transparent; transition: all 0.3s ease; - margin-top: 30px; + + &:first-child { + border-radius: 10px; + text-align: left; + } + + &:last-child { + border-radius: 10px; + text-align: right; + } &:hover { transform: translateY(-5px); - background-color: var(--color-background-second); } &:active { @@ -74,7 +101,6 @@ onMounted(() => { span { font-size: 1em; - font-weight: 800; margin-bottom: 0 !important; } } diff --git a/components/BlogHead.vue b/components/BlogHead.vue index 2bd99fb..69ddc10 100644 --- a/components/BlogHead.vue +++ b/components/BlogHead.vue @@ -1,43 +1,62 @@ diff --git a/components/BlogList.vue b/components/BlogList.vue new file mode 100644 index 0000000..3455988 --- /dev/null +++ b/components/BlogList.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/components/Footer.vue b/components/Footer.vue index 764cc33..0768068 100644 --- a/components/Footer.vue +++ b/components/Footer.vue @@ -1,32 +1,30 @@ diff --git a/components/SimpleLayout.vue b/components/SimpleLayout.vue index 64280ba..6c01cd9 100644 --- a/components/SimpleLayout.vue +++ b/components/SimpleLayout.vue @@ -2,7 +2,7 @@

- ↑ Go to top + ↑ Go to top File an issue @@ -18,37 +18,38 @@ const { theme } = useData(); diff --git a/components/posts.data.ts b/components/posts.data.ts new file mode 100644 index 0000000..95c0ac3 --- /dev/null +++ b/components/posts.data.ts @@ -0,0 +1,34 @@ +import { createContentLoader } from "vitepress"; + +interface Post { + title: string; + description: string; + tags: string[]; +} + +declare const data: Post[]; +export { data }; + +export default createContentLoader("blog/posts/*.md", { + excerpt: true, + transform(raw): Post[] { + return raw + .map(({ frontmatter }) => ({ + title: frontmatter.title, + description: frontmatter.description, + tags: frontmatter.tags, + date: formatDate(frontmatter.date), + })) + .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()); + }, +}); + +function formatDate(raw: string): string { + const date = new Date(raw); + date.setUTCHours(12); + return date.toLocaleDateString("en-GB", { + year: "numeric", + month: "long", + day: "2-digit", + }); +} diff --git a/icons/RSSFeed.vue b/icons/RSSFeed.vue index a25aa43..960eb0f 100644 --- a/icons/RSSFeed.vue +++ b/icons/RSSFeed.vue @@ -1,8 +1,15 @@ \ No newline at end of file +

+ diff --git a/icons/SourceCode.vue b/icons/SourceCode.vue index b1f99a0..7186b9a 100644 --- a/icons/SourceCode.vue +++ b/icons/SourceCode.vue @@ -1,18 +1,26 @@ \ No newline at end of file + &:hover { + fill: var(--color-accent); + } +} + diff --git a/index.ts b/index.ts index e1e0cf4..de029bf 100644 --- a/index.ts +++ b/index.ts @@ -2,5 +2,4 @@ import "./Layout.vue"; import "./styles/index.scss"; import "inter-ui/inter.css"; import "inter-ui/inter-variable.css"; -import "inter-ui/inter-display.css"; -import "@fontsource/source-code-pro/500.css"; \ No newline at end of file +import "non.geist/mono" diff --git a/package.json b/package.json index 1148518..daa78df 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "aplos", - "version": "0.0.1", - "description": "The Aplos VitePress theme as an NPM package.", + "version": "1.2.0", + "description": "The Aplos VitePress theme", "main": "index.ts", "keywords": [ "VitePress", @@ -11,16 +11,9 @@ "author": "Gabriel Cozma", "license": "MIT", "dependencies": { - "@fontsource/source-code-pro": "^5.0.16", "inter-ui": "^4.0.2", - "sass": "^1.71.1" - }, - "directories": { - "test": "test" - }, - "devDependencies": {}, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "non.geist": "^1.0.2", + "sass": "^1.74.1" }, "repository": { "type": "git", @@ -29,5 +22,5 @@ "bugs": { "url": "https://github.com/GabsEdits/aplos-npm/issues" }, - "homepage": "https://github.com/GabsEdits/aplos-npm#readme" + "homepage": "https://aplos.gxbs.me" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1658317..6f5a082 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,22 +5,18 @@ settings: excludeLinksFromLockfile: false dependencies: - '@fontsource/source-code-pro': - specifier: ^5.0.16 - version: 5.0.16 inter-ui: specifier: ^4.0.2 version: 4.0.2 + non.geist: + specifier: ^1.0.2 + version: 1.0.2 sass: - specifier: ^1.71.1 - version: 1.71.1 + specifier: ^1.74.1 + version: 1.74.1 packages: - /@fontsource/source-code-pro@5.0.16: - resolution: {integrity: sha512-ErErGXjKo9/fAJE49fyU8M6DuJUpdqR5YLM8jGJOC5ZcKIDSTQ5m+R3DTa0VYHAGGFbk2qLWVWD/r5sfCLA/jQ==} - dev: false - /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -29,8 +25,8 @@ packages: picomatch: 2.3.1 dev: false - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} dev: false @@ -91,7 +87,7 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 dev: false /is-extglob@2.1.1: @@ -111,6 +107,10 @@ packages: engines: {node: '>=0.12.0'} dev: false + /non.geist@1.0.2: + resolution: {integrity: sha512-oGCfo7Ub5bJmCOAt4CMAsCrVal/JXkQtxgBcpXzdU3lQib9c5hHdr62I8vI6TtdlsLcaYAPD/HRfZNdBUobwFg==} + dev: false + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -128,18 +128,18 @@ packages: picomatch: 2.3.1 dev: false - /sass@1.71.1: - resolution: {integrity: sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==} + /sass@1.74.1: + resolution: {integrity: sha512-w0Z9p/rWZWelb88ISOLyvqTWGmtmu2QJICqDBGyNnfG4OUnPX9BBjjYIXUpXCMOOg5MQWNpqzt876la1fsTvUA==} engines: {node: '>=14.0.0'} hasBin: true dependencies: chokidar: 3.6.0 immutable: 4.3.5 - source-map-js: 1.0.2 + source-map-js: 1.2.0 dev: false - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} dev: false diff --git a/styles/cards.scss b/styles/cards.scss index 07cf8f2..657a693 100644 --- a/styles/cards.scss +++ b/styles/cards.scss @@ -1,58 +1,74 @@ -.tip, -.danger, -.info, -.warning { - margin: 20px 0; - width: 50%; - border-radius: 10px; - padding: 30px 20px; +.custom-block:not(.details) { + margin: 1.25rem 0; + width: max-content; + max-width: 70%; + min-width: 45%; + border-radius: 0.625rem; + padding: 1.8rem 1.25rem; + line-height: 24px; p { - margin-bottom: 0 !important; - color: var(--color-text) !important; + color: var(--color-text); + } + + p:not(.custom-block-title) { + margin: 0; + font-size: 0.9rem; + } + + .custom-block-title { + font-size: 1.8rem; + margin-top: 0; + font-weight: 800; + margin-bottom: 10px; } } -.tip .custom-block-title { - font-size: 2em !important; - margin-top: 0 !important; - font-weight: 800; - margin-bottom: 10px !important; +.danger { + background-color: #ff001936; + + @media (prefers-color-scheme: dark) { + background-color: #39181b; + } } -.danger .custom-block-title { - font-size: 2em !important; - margin-top: 0 !important; - font-weight: 800; - margin-bottom: 10px !important; +.warning { + background-color: #ffcc007e; + + @media (prefers-color-scheme: dark) { + background-color: #372a1a; + } } -.details { - border-radius: 10px !important; - margin: 20px 0 !important; - width: 50%; +.tip { + background-color: #00ff006a; - summary { - font-size: 1.2em !important; - margin-top: 0 !important; - font-weight: 800; + @media (prefers-color-scheme: dark) { + background-color: #1f3f1f; } + } -.info .custom-block-title { - font-size: 2em !important; - margin-top: 0 !important; - font-weight: 800; - margin-bottom: 10px !important; +.info { + background-color: var(--color-background-mute); } -.warning { - color: var(--vp-c-text-2); +.details { + border-radius: 0.625rem; + background-color: var(--color-background-second); + padding: 16px; + margin: 1.25rem 0; + min-width: 45%; + max-width: max-content; - .custom-block-title { - font-size: 2em !important; - margin-top: 0 !important; - font-weight: 800; - margin-bottom: 10px !important; + summary { + margin-top: 0; + cursor: pointer; + font-weight: 700; + } + + p { + font-size: 15px; + margin: 10px 0 0 0; } } diff --git a/styles/color.scss b/styles/color.scss index 15c5d32..ef5e7b0 100644 --- a/styles/color.scss +++ b/styles/color.scss @@ -30,6 +30,9 @@ $bg-color-s-d: color.scale( $bg-color-m-l: color.scale($bg-color-s-l, $lightness: -5%) !default; $bg-color-m-d: color.scale($bg-color-s-d, $lightness: 5%) !default; +$bg-color-accent-alpha-l: color.scale($color-accent-l, $alpha: -60%) !default; +$bg-color-accent-alpha-d: color.scale($color-accent, $alpha: -60%) !default; + $bg-color-code-l: color.scale($bg-color-l, $lightness: -5%) !default; $bg-color-code-d: mix($bg-color-d, $bg-color-s-d, 60%); @@ -46,7 +49,8 @@ $text-color-secondary-d: color.scale( :root { --color-accent: #{$color-accent-l}; - --base-shadow: 0px 10px 34px 0px rgba(0, 0, 0, 0.15); + --color-accent-alpha: #{$bg-color-accent-alpha-l}; + --base-shadow: 0 0.625rem 2.125rem 0 rgba(0, 0, 0, 0.15); --color-text-secondary: #{$text-color-secondary-l}; --color-border: #75757560; @@ -56,11 +60,10 @@ $text-color-secondary-d: color.scale( --color-background-code: #{$bg-color-code-l}; --color-header: #{$nav-bg-l}; --color-text: #{color.scale($bg-color-l, $lightness: -90%)}; -} -@media (prefers-color-scheme: dark) { - :root { + @media (prefers-color-scheme: dark) { --color-accent: #{$color-accent-d}; + --color-accent-alpha: #{$bg-color-accent-alpha-d}; --color-background: #{$bg-color-d}; --color-background-second: #{$bg-color-s-d}; --color-background-mute: #{$bg-color-m-d}; diff --git a/styles/common.scss b/styles/common.scss index 862c8b7..efc66e6 100644 --- a/styles/common.scss +++ b/styles/common.scss @@ -17,34 +17,56 @@ h1 { font-weight: 900; line-height: normal; letter-spacing: -0.075rem; - margin: 2.0938rem 0 !important; + margin: 2.0938rem 0; } h2 { - font-size: 35px; + font-size: 2.1875rem; font-style: normal; font-weight: 800; line-height: normal; letter-spacing: -0.075rem; - margin: 1.575rem 0 !important; } h3 { - font-size: 25px; + font-size: 1.5625rem; font-style: normal; font-weight: 700; line-height: normal; letter-spacing: -0.075rem; } +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; +} + +h1, +h2, +h3, +h4, +h5, +h6, +li, +p { + overflow-wrap: break-word; +} + pre { - font-family: "Source Code Pro", monospace; + font-family: "Geist Mono", monospace; + font-weight: 500; background-color: var(--color-background-code); - border-right: var(--color-accent) 5px solid; - padding: 0.625rem 1.25rem !important; + border-right: var(--color-accent) 0.3125rem solid; + padding: 0.625rem 1.25rem; overflow: auto; max-width: 100%; - border-radius: 20px; + border-radius: 1.25rem; margin: 1.25rem 0; code { @@ -52,11 +74,32 @@ pre { color: var(--color-text); border-radius: 0; padding: 0; - border: 0px; + border: 0; + + span { + color: var(--shiki-light, inherit); + + @media (prefers-color-scheme: dark) { + color: var(--shiki-dark, inherit); + } + + .line .highlighted { + background-color: rgba(142, 150, 170, 0.14); + + @media (prefers-color-scheme: dark) { + background-color: rgba(101, 117, 133, 0.16); + } + } + } } .highlighted { - background-color: var(--vp-code-line-highlight-color); + background-color: rgba(142, 150, 170, 0.14); + + @media (prefers-color-scheme: dark) { + background-color: rgba(101, 117, 133, 0.16); + } + transition: background-color 0.5s; margin: 0 -1.5rem; padding: 0 1.5rem; @@ -72,17 +115,17 @@ pre { } blockquote { - border-left: var(--color-accent) 5px solid; - border-radius: 0.5rem 3.125rem 3.125rem 0.5rem; + border-left: var(--color-accent) 0.3125rem solid; + border-radius: 0.5rem 1.5rem 1.5rem 0.5rem; background-color: var(--color-background-second); - padding: 10px 19px; + padding: 0.625rem 1.1875rem; margin: 0; width: max-content; max-width: 97%; blockquote { - margin: 5px 0; - padding: 5px 10px; + margin: 0.3125rem 0; + padding: 0.3125rem 0.625rem; } p { @@ -93,15 +136,15 @@ blockquote { img, video { - border-radius: 10px; - margin: 10px 0; + border-radius: 0.625rem; + margin: 0.625rem 0; width: 100%; - transition: transform 0.4s, border-radius 0.4s, border 1.5s ease; + transition: transform 0.4s, border-radius 0.4s, box-shadow 1.5s ease; &:hover { transform: scale(1.1); - border: var(--color-border) 2px solid; - border-radius: 20px; + box-shadow: var(--base-shadow); + border-radius: 1.25rem; cursor: zoom-in; } } @@ -134,39 +177,49 @@ main a { color: var(--color-accent); text-decoration: underline; font-weight: 700; + transition: text-decoration 0.3s ease transform 0.3s ease; + + &:hover { + text-decoration: dotted underline; + } + + &:active { + transform: scale(0.9); + } } hr { - border-radius: 20px; - border: var(--color-border) 2px solid; - margin: 20px 5%; + border-radius: 1.25rem; + border: var(--color-border) 0.125rem solid; + margin: 1.25rem 5%; } code { - font-family: "Source Code Pro", monospace; + font-family: "Geist Mono", monospace; + font-weight: 500; background-color: var(--color-background-second); - border-radius: 7px; + border-radius: 0.45rem; color: var(--color-accent); - padding: 1px 6px; - font-size: 14px; - border: 1px solid var(--color-border); + padding: 0.125rem 0.25rem; + font-size: 0.83rem; } kbd { background-color: var(--color-background-second); - border-radius: 5px; - border: 1px solid var(--color-border); - border-bottom: 2px solid var(--color-border); - padding: 3px; - font-size: 14px; + border-radius: 0.3125rem; + border: 0.0625rem solid var(--color-border); + border-bottom: 0.125rem solid var(--color-border); + font-family: "Geist Mono", monospace; + padding: 0.1875rem; + font-size: 0.875rem; cursor: pointer; &:active { - border-bottom: 1px solid var(--color-border); + border-bottom: 0.0625rem solid var(--color-border); background-color: var(--color-border); - border-left: 2px solid var(--color-border); - padding-bottom: 4px; - padding-left: 4px; + border-left: 0.125rem solid var(--color-border); + padding-bottom: 0.25rem; + padding-left: 0.25rem; } } @@ -174,11 +227,11 @@ time { background-color: var(--color-background-second); color: var(--color-accent); font-weight: 700; - border-radius: 5px; - border: 1px solid var(--color-border); - border-bottom: 2px solid var(--color-border); - padding: 3px; - font-size: 14px; + border-radius: 0.3125rem; + border: 0.0625rem solid var(--color-border); + border-bottom: 0.125rem solid var(--color-border); + padding: 0.1875rem; + font-size: 0.875rem; cursor: pointer; span { @@ -196,10 +249,10 @@ time { } &:active { - border-bottom: 1px solid var(--color-border); - border-top: 2px solid var(--color-border); + border-bottom: 0.0625rem solid var(--color-border); + border-top: 0.125rem solid var(--color-border); font-weight: 800; - padding-top: 4px; + padding-top: 0.25rem; span { animation: none; @@ -211,13 +264,13 @@ mark { background-color: var(--color-background-second); color: var(--color-accent); margin: 0; - padding: 2px 6px 3px 6px; - border-radius: 10px; + padding: 0.125rem 0.375rem 0.1875rem 0.375rem; + border-radius: 0.625rem; } table { border-collapse: collapse; - border-radius: 10px; + border-radius: 0.625rem; overflow: hidden; table-layout: fixed; width: 100%; @@ -226,13 +279,13 @@ table { background-color: var(--color-background-mute); color: var(--color-accent); font-weight: 700; - padding: 10px 20px; + padding: 0.625rem 1.25rem; text-align: center; } td { color: var(--color-text); - padding: 10px 20px; + padding: 0.625rem 1.25rem; } tr { @@ -243,64 +296,16 @@ table { } &:first-child { - border-bottom: 0px solid var(--color-border); + border-bottom: 0 solid var(--color-border); } } } /* Others */ -#coming-soon { - background-color: #ffec1faf; - border-radius: 10px; - padding: 30px 20px; - box-shadow: var(--base-shadow); - margin-bottom: 20px; - color: #291d00f1; - width: 100%; - text-align: center; - - h1 { - font-size: 2em; - margin-top: 0 !important; - font-weight: 800; - margin-bottom: 0 !important; - } - - p { - margin-top: 0 !important; - } -} - -#NotFound { - background-color: var(--color-background-second); - border-radius: 10px; - padding: 30px 20px; - box-shadow: var(--base-shadow); - margin-bottom: 20px; - color: var(--color-text-secondary); - width: 100%; - text-align: center; - - h1 { - font-size: 2em; - margin-top: 0 !important; - font-weight: 800; - margin-bottom: 0 !important; - } - - span { - font-size: 7em; - font-weight: 800; - letter-spacing: -12.2px; - line-height: -2px; - color: var(--color-text); - } -} - ul, ol { - margin: 10px 0px 10px 50px; + margin: 0; } ul { @@ -317,6 +322,28 @@ a mark { transition: transform 0.3s ease; &:hover { - transform: scale(1.2); + transform: scale(1.2) rotate(10deg); } } + +aside { + background-color: var(--color-background-second); + border-radius: 1rem; + float: right; + margin-inline-start: 1rem; + padding: 1rem; + width: 30%; +} + +button { + padding: 0; + background-color: transparent; + background-image: none; + border: 0; + cursor: pointer; +} + +abbr { + cursor: help; + text-decoration: 1px dotted underline; +} diff --git a/styles/index.scss b/styles/index.scss index 0a67042..71f0e29 100644 --- a/styles/index.scss +++ b/styles/index.scss @@ -1,9 +1,9 @@ /* - * Aplos version 1.0.0 (https://aplos.gxbs.me/) + * Aplos (https://aplos.gxbs.me/) * Copyright 2023-2024 Gabriel Cozma/Gabs * Licensed under MIT (https://github.com/GabsEdits/aplos/src/branch/main/LICENSE) - * Based on Vitepress (https://vitepress.dev) & inspired Duckquill (https://daudix.codeberg.page/duckquill) + * Based on VitePress (https://vitepress.dev) & inspired Duckquill (https://daudix.codeberg.page/duckquill) */ @import "common.scss"; @@ -14,6 +14,7 @@ :root { font-family: Inter, sans-serif; font-feature-settings: "liga" 1, "calt" 1, "cv05" 1; + scroll-behavior: smooth; /* fix for Chrome */ } @@ -27,22 +28,32 @@ } } +*, ::before, ::after { + box-sizing: border-box; +} + body { - font-family: Inter, sans-serif, "Noto Color Emoji"; + font-family: Inter, sans-serif; scroll-behavior: smooth; background-color: var(--color-background); color: var(--color-text); + line-height: 24px; + font-size: 16px; + font-weight: 400; + font-synthesis: style; + text-rendering: optimizeLegibility; } main { width: 60vw; + scroll-behavior: smooth; margin-top: 7%; margin-bottom: 4%; font-size: 1rem; line-height: 1.5; margin-left: auto; margin-right: auto; - max-width: 60.1875rem; + max-width: 60rem; } ::selection { @@ -52,9 +63,10 @@ main { :target { scroll-margin-top: 15vh; - animation: highlight-in-out 800ms .4s; + animation: highlight-in-out 800ms 0.4s; color: var(--color-accent); - text-shadow: var(--color-background-second) 0 0 4px,var(--color-accent) 0 0 12px; + text-shadow: var(--color-background-second) 0 0 0.25rem, + var(--color-accent) 0 0 0.75rem; @keyframes highlight-in-out { 50% { @@ -67,62 +79,63 @@ main { } html { - scrollbar-color: var(--color-accent) rgba(0, 0, 0, 0); accent-color: var(--color-accent); + scroll-behavior: smooth; } -nav { - background-color: none; - backdrop-filter: blur(10px); - -webkit-backdrop-filter: blur(10px); - overflow: hidden; - position: fixed; - top: 3rem; - left: 50%; - transform: translate(-50%, -50%); - border-radius: 2.5rem; - background-color: var(--color-header); - border: 0.4px solid var(--color-border); - z-index: 9999; - padding: 0.0625rem 1.5625rem; - text-align: center; - - ul { - list-style-type: none; - margin: 0; - padding: 0; +header { + nav { + background-color: none; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); overflow: hidden; - display: flex; - align-items: center; - justify-content: space-between; - - li { - display: inline-block; - - a { - display: block; - text-align: center; - color: var(--color-text-secondary); - text-decoration: none; - font-weight: 600; - font-size: 14px; - letter-spacing: -0.045rem; - margin: 0 0.3125rem; - transform: scale(1); - font-size: 14px; - transition: color 0.7s ease, transform 100ms ease; - - &:hover { - color: var(--color-accent); - } - - &:active { - color: var(--color-accent); - transform: scale(0.9); - } - - &.active { - color: var(--color-accent); + position: fixed; + top: 3rem; + left: 50%; + transform: translate(-50%, -50%); + border-radius: 2.5rem; + background-color: var(--color-header); + border: 0.4px solid var(--color-border); + z-index: 9999; + padding: 0.0625rem 1.5625rem; + text-align: center; + + ul { + list-style-type: none; + margin: 0; + padding: 0; + overflow: hidden; + display: flex; + align-items: center; + justify-content: space-between; + + li { + display: inline-block; + + a { + display: block; + text-align: center; + color: var(--color-text-secondary); + text-decoration: none; + font-weight: 600; + font-size: 14px; + letter-spacing: -0.015rem; + margin: 0 0.3125rem; + transform: scale(1); + transition: color 0.7s ease, transform 100ms ease; + + &:hover { + color: var(--color-accent); + } + + &:active { + color: var(--color-accent); + transform: scale(0.9); + } + + &.active { + color: var(--color-accent); + } } } } @@ -134,7 +147,7 @@ nav { * { font-size: 16px; - letter-spacing: -0.0625rem; + letter-spacing: -0.0325rem; font-weight: 800; color: var(--color-text); margin: 0.5rem 0.3125rem 0.5rem 0.3125rem; @@ -154,6 +167,7 @@ nav { content: ""; position: absolute; height: 110%; + margin: 0; width: 0.0625rem; background-color: var(--color-border); top: 0; @@ -195,9 +209,21 @@ footer { #copyright, #copyleft, + #powered { + font-weight: 500; + + b { + font-weight: 700; + } + } + #powered { color: var(--color-text-secondary); - font-weight: 600; + font-weight: 500; + } + + small { + margin-top: 0.625rem; } #author { @@ -207,7 +233,7 @@ footer { .lang { color: var(--color-text-secondary); - font-family: "Source Code Pro", monospace; + font-family: "Geist Mono", monospace; font-size: 14px; position: absolute; right: 20px; @@ -216,9 +242,67 @@ footer { /* Other */ +.table-of-contents { + background-color: none; + backdrop-filter: blur(0.625rem); + -webkit-backdrop-filter: blur(0.625rem); + overflow: hidden; + position: fixed; + top: 9.375rem; + left: 10%; + border-radius: 1rem; + z-index: 9999; + padding: 0.625rem 1.5625rem; + text-align: left; + + ul { + list-style-type: decimal; + color: var(--color-text-secondary); + font-size: 0.875rem; + font-weight: 600; + margin: 0 0 0 0.9375rem; + padding: 0; + + li { + text-align: left; + + ul li { + list-style-type: disc; + } + + a { + display: block; + text-align: left; + text-decoration: none; + font-weight: 600; + font-size: 0.875rem; + letter-spacing: -0.045rem; + margin: 0 0.3125rem; + transform: scale(1); + font-size: 0.875rem; + transition: color 0.7s ease, transform 100ms ease; + + &:hover { + color: var(--color-accent); + } + + &:active { + color: var(--color-accent); + transform: scale(0.9); + } + + &.active { + color: var(--color-accent); + } + } + } + } +} + button.copy { direction: ltr; position: absolute; + display: none; top: 12px; right: 12px; z-index: 3; @@ -239,3 +323,18 @@ button.copy { .header-anchor { display: none; // I will hide it for now } + +a, +area, +button, +[role="button"], +input, +label, +select, +summary, +textarea { + touch-action: manipulation; + font-family: inherit; + font-feature-settings: inherit; + color: var(--color-text); +} diff --git a/styles/medias.scss b/styles/medias.scss index 08c00dd..32d3f27 100644 --- a/styles/medias.scss +++ b/styles/medias.scss @@ -1,25 +1,26 @@ -@media screen and (max-width: 1414px) { +@media screen and (max-width: 88.375rem) { main { - margin-top: 150px !important; - margin-bottom: 150px !important; + margin-top: 9.375rem !important; + margin-bottom: 9.375rem !important; width: 90vw !important; } + nav { - padding: 5px 20px !important; + padding: 0.3125rem 1.25rem !important; h1, ul li a { - font-size: 16px !important; + font-size: 1rem !important; } .fa-brands { - font-size: 16px !important; + font-size: 1rem !important; } } code { - padding: 3px 10px !important; - margin-top: 15px; + padding: 0.1875rem 0.625rem !important; + margin-top: 0.9375rem; line-height: 1.2; } @@ -34,9 +35,32 @@ .lang { display: none; } + + .table-of-contents { + left: 6% !important; + } +} + +@media screen and (max-width: 1828px) { + .table-of-contents { + display: none; + } } -@media screen and (min-width: 1414px) and (max-width: 1902px) { +@media screen and (max-width: 37.5rem){ + ul, ol { + margin: 0 0 0 10px; + } + + aside { + float: none; + width: 100%; + margin-inline-start: 0; + } +} + + +@media screen and (min-width: 88.375rem) and (max-width: 118.875rem) { main { margin: 7% 20%; }