From 3140267ea0a3b37032003992695afd7dc1f4f46c Mon Sep 17 00:00:00 2001 From: Kevin Hoerr Date: Sat, 23 Dec 2023 23:59:02 -0500 Subject: De gatsby (#326) * de-gatsby * Add inversed image for dark background * eleventy * Reinstate workflows to prior state * Strip inline styling for index image * Passthrough src/public/ files * Use global data to encode build date encoded string * Clean public directory before build * Reinstall eslint, prettier * Reinstate .gitattributes for public dir * build.yml: escape config file for version numbering * Revert public changes for PR validation * Rename src/public/ to src/static/ * Include github-actions in dependabot updates * re-establish typescript * Update prevent-file-change-action to v1.5.1 * Re-add typescript to linting * Re-add typescript for eslint * Fix whitespace diff for tsconfig.json * Fix whitespace in .eslintrc.json --- src/components/BlockLink.tsx | 17 -- src/components/Layout.tsx | 35 ---- src/components/SEO.tsx | 17 -- src/components/index.ts | 4 - src/config.ts | 23 +++ src/hooks/SiteMetadata.ts | 21 --- src/hooks/SiteVersion.ts | 19 -- src/hooks/index.ts | 4 - src/pages/404.njk | 10 + src/pages/404.tsx | 23 --- src/pages/index.njk | 33 ++++ src/pages/index.tsx | 73 -------- src/static/favicon-32x32.png | Bin 0 -> 3058 bytes src/static/icons/code.svg | 4 + src/static/icons/github.svg | 4 + src/static/icons/icon-144x144.png | Bin 0 -> 42763 bytes src/static/icons/icon-192x192.png | Bin 0 -> 72918 bytes src/static/icons/icon-256x256.png | Bin 0 -> 122738 bytes src/static/icons/icon-384x384.png | Bin 0 -> 252395 bytes src/static/icons/icon-48x48.png | Bin 0 -> 6080 bytes src/static/icons/icon-512x512.png | Bin 0 -> 414864 bytes src/static/icons/icon-72x72.png | Bin 0 -> 11641 bytes src/static/icons/icon-96x96.png | Bin 0 -> 20144 bytes src/static/icons/mastodon.svg | 4 + src/static/manifest.webmanifest | 34 ++++ .../6cac9/main.webp | Bin 0 -> 13260 bytes .../88e48/main.png | Bin 0 -> 43389 bytes src/static/styles.css | 205 +++++++++++++++++++++ src/styles/BlockAnchor.ts | 21 --- src/styles/BlockBody.ts | 27 --- src/styles/BlockHeader.ts | 12 -- src/styles/Content.ts | 8 - src/styles/Footer.ts | 13 -- src/styles/index.ts | 9 - src/styles/main.css | 41 ----- src/templates/layouts/page.njk | 37 ++++ 36 files changed, 354 insertions(+), 344 deletions(-) delete mode 100644 src/components/BlockLink.tsx delete mode 100644 src/components/Layout.tsx delete mode 100644 src/components/SEO.tsx delete mode 100644 src/components/index.ts create mode 100644 src/config.ts delete mode 100644 src/hooks/SiteMetadata.ts delete mode 100644 src/hooks/SiteVersion.ts delete mode 100644 src/hooks/index.ts create mode 100644 src/pages/404.njk delete mode 100644 src/pages/404.tsx create mode 100644 src/pages/index.njk delete mode 100644 src/pages/index.tsx create mode 100644 src/static/favicon-32x32.png create mode 100644 src/static/icons/code.svg create mode 100644 src/static/icons/github.svg create mode 100644 src/static/icons/icon-144x144.png create mode 100644 src/static/icons/icon-192x192.png create mode 100644 src/static/icons/icon-256x256.png create mode 100644 src/static/icons/icon-384x384.png create mode 100644 src/static/icons/icon-48x48.png create mode 100644 src/static/icons/icon-512x512.png create mode 100644 src/static/icons/icon-72x72.png create mode 100644 src/static/icons/icon-96x96.png create mode 100644 src/static/icons/mastodon.svg create mode 100644 src/static/manifest.webmanifest create mode 100644 src/static/static/81e0da73927123f3f6b0c9a2d0750e76/6cac9/main.webp create mode 100644 src/static/static/81e0da73927123f3f6b0c9a2d0750e76/88e48/main.png create mode 100644 src/static/styles.css delete mode 100644 src/styles/BlockAnchor.ts delete mode 100644 src/styles/BlockBody.ts delete mode 100644 src/styles/BlockHeader.ts delete mode 100644 src/styles/Content.ts delete mode 100644 src/styles/Footer.ts delete mode 100644 src/styles/index.ts delete mode 100644 src/styles/main.css create mode 100644 src/templates/layouts/page.njk (limited to 'src') diff --git a/src/components/BlockLink.tsx b/src/components/BlockLink.tsx deleted file mode 100644 index 6b841f0..0000000 --- a/src/components/BlockLink.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from "react"; -import { BlockAnchor, BlockBody } from "../styles"; - -type BlockLinkProps = { - children?: React.ReactNode; - as?: undefined; -} & React.LinkHTMLAttributes; - -const BlockLink = ({ children, ...attributes }: BlockLinkProps) => { - return ( - - {children} - - ); -}; - -export default BlockLink; diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx deleted file mode 100644 index fec336f..0000000 --- a/src/components/Layout.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from "react"; -import { IconContext } from "react-icons/lib"; -import { Content, Footer } from "../styles"; -import { useSiteVersion } from "../hooks"; -import { getTimestamp } from "../util/timestamp"; - -import "../styles/main.css"; - -interface LayoutProps { - children: React.ReactNode; -} - -const Layout = ({ children }: LayoutProps) => { - const version = useSiteVersion(); - return ( - -
- - {children} - -
- - ©2023 kjhoerr@https://submelon.dev/: - {getTimestamp(Number(version))} - -
-
-
-
- ); -}; - -export default Layout; diff --git a/src/components/SEO.tsx b/src/components/SEO.tsx deleted file mode 100644 index b13dc19..0000000 --- a/src/components/SEO.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from "react"; -import { useSiteMetadata } from "../hooks"; - -export function Head(): React.ReactElement { - const { author, description, title } = useSiteMetadata(); - - return ( - <> - - - - - - {title} - - ); -} diff --git a/src/components/index.ts b/src/components/index.ts deleted file mode 100644 index 6e7bcb7..0000000 --- a/src/components/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import BlockLink from "./BlockLink"; -import Layout from "./Layout"; - -export { BlockLink, Layout }; diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 0000000..3fdcf24 --- /dev/null +++ b/src/config.ts @@ -0,0 +1,23 @@ +import { getTimestamp } from "./util/timestamp"; +import BuildInfo from "../config.json"; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export default function (eleventyConfig: any) { + eleventyConfig.addPassthroughCopy({ + "./src/static/": "/", + }); + eleventyConfig.addGlobalData("buildTimeEncoded", () => { + return getTimestamp(Number(BuildInfo.version)); + }); + eleventyConfig.addWatchTarget("./src/config.ts"); + + return { + templateFormats: ["njk", "html"], + htmlTemplateEngine: "njk", + dir: { + input: "src/pages", + includes: "../templates", + output: "public", + }, + }; +} diff --git a/src/hooks/SiteMetadata.ts b/src/hooks/SiteMetadata.ts deleted file mode 100644 index 889f42b..0000000 --- a/src/hooks/SiteMetadata.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { useStaticQuery, graphql } from "gatsby"; - -type SiteMetadata = NonNullable< - NonNullable["siteMetadata"] ->; - -export const useSiteMetadata = (): SiteMetadata => { - const { site } = useStaticQuery(graphql` - query getSiteMetadata { - site { - siteMetadata { - author - description - title - } - } - } - `); - - return site?.siteMetadata ?? ({} as SiteMetadata); -}; diff --git a/src/hooks/SiteVersion.ts b/src/hooks/SiteVersion.ts deleted file mode 100644 index 6726a3c..0000000 --- a/src/hooks/SiteVersion.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useStaticQuery, graphql } from "gatsby"; - -type SiteVersion = NonNullable< - NonNullable["siteMetadata"] ->["version"]; - -export const useSiteVersion = (): SiteVersion => { - const { site } = useStaticQuery(graphql` - query getSiteVersion { - site { - siteMetadata { - version - } - } - } - `); - - return site?.siteMetadata?.version ?? "0"; -}; diff --git a/src/hooks/index.ts b/src/hooks/index.ts deleted file mode 100644 index 1250d57..0000000 --- a/src/hooks/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { useSiteMetadata } from "./SiteMetadata"; -import { useSiteVersion } from "./SiteVersion"; - -export { useSiteMetadata, useSiteVersion }; diff --git a/src/pages/404.njk b/src/pages/404.njk new file mode 100644 index 0000000..3c965ac --- /dev/null +++ b/src/pages/404.njk @@ -0,0 +1,10 @@ +--- +layout: layouts/page.njk +--- +

Not found

+
+ Sorry! We couldn't find what you were looking for ðŸ˜” +
+
+ Home +
\ No newline at end of file diff --git a/src/pages/404.tsx b/src/pages/404.tsx deleted file mode 100644 index 782a349..0000000 --- a/src/pages/404.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -import { BlockLink, Layout } from "../components"; -import { BlockBody, BlockHeader } from "../styles"; - -const NotFoundPage = (): React.ReactElement => { - return ( - - Not found - - Sorry! We couldn't find what you were looking for - - 😔 - - - - Home - - - ); -}; - -export default NotFoundPage; -export { Head } from "../components/SEO"; diff --git a/src/pages/index.njk b/src/pages/index.njk new file mode 100644 index 0000000..67d8506 --- /dev/null +++ b/src/pages/index.njk @@ -0,0 +1,33 @@ +--- +layout: layouts/page.njk +--- + + + Picture of Kevin Hoerr + +

Hello!

+
+

I'm a computer science and math graduate from Millersville University. I work as a Solutions Architect and specialize in development operations and systems validation for web applications.

+

During my time at Millersville I was the lead Linux admin for the Cyber Defense Organization (CDO). In addition to constructing a new computer lab for our efforts, we participated in NCL and MACCDC.

+

Most of my development experience is focused around full stack development. For the front-end I use TypeScript and ReactJS using create-react-app or NextJS. For back-end systems I have used both Java with Spring Boot and rust with actix-web extensively. To mediate APIs I have used Apache Kafka, OpenAPI, and GraphQL.

+

My free time is spent engaging in general computing hobbies. When I'm not trying out new application frameworks, I am fiddling around with Guix or NixOS. I run a kubernetes cluster at home to manage, maintain, and secure my personal network as well as experimenting with distributed workloads.

+ - Kevin H. +
+
+ + + kjhoerr on GitHub + +
+
+ + + Pantry (pet project) + +
+
+ + + @kjhoerr@cybr.es + +
\ No newline at end of file diff --git a/src/pages/index.tsx b/src/pages/index.tsx deleted file mode 100644 index fe407c4..0000000 --- a/src/pages/index.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import React from "react"; -import { StaticImage } from "gatsby-plugin-image"; -import { FaCode, FaGithub, FaMastodon } from "react-icons/fa"; -import { BlockLink, Layout } from "../components"; -import { BlockBody, BlockHeader } from "../styles"; - -const IndexPage = (): React.ReactElement => { - return ( - -
- -
- Hello! - -

- I'm a computer science and math graduate from Millersville - University. I work as a Solutions Architect and specialize in - development operations and systems validation for web applications. -

-

- During my time at Millersville I was the lead Linux admin for the - Cyber Defense Organization (CDO). In addition to constructing a new - computer lab for our efforts, we participated in NCL and MACCDC. -

-

- Most of my development experience is focused around full stack - development. For the front-end I use TypeScript and ReactJS using - create-react-app or NextJS. For back-end systems I have used both Java - with Spring Boot and rust with actix-web extensively. To mediate APIs - I have used Apache Kafka, OpenAPI, and GraphQL. -

-

- My free time is spent engaging in general computing hobbies. When - I'm not trying out new application frameworks, I am fiddling - around with Guix or NixOS. I run a kubernetes cluster at home to - manage, maintain, and secure my personal network as well as - experimenting with distributed workloads. -

- - Kevin H. -
- - kjhoerr on GitHub - - - Pantry (pet project) - - - @kjhoerr@cybr.es - -
- ); -}; - -export default IndexPage; -export { Head } from "../components/SEO"; diff --git a/src/static/favicon-32x32.png b/src/static/favicon-32x32.png new file mode 100644 index 0000000..baa2b5e Binary files /dev/null and b/src/static/favicon-32x32.png differ diff --git a/src/static/icons/code.svg b/src/static/icons/code.svg new file mode 100644 index 0000000..ddd0a7d --- /dev/null +++ b/src/static/icons/code.svg @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/src/static/icons/github.svg b/src/static/icons/github.svg new file mode 100644 index 0000000..2179508 --- /dev/null +++ b/src/static/icons/github.svg @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/src/static/icons/icon-144x144.png b/src/static/icons/icon-144x144.png new file mode 100644 index 0000000..18f5e4f Binary files /dev/null and b/src/static/icons/icon-144x144.png differ diff --git a/src/static/icons/icon-192x192.png b/src/static/icons/icon-192x192.png new file mode 100644 index 0000000..7d6c60c Binary files /dev/null and b/src/static/icons/icon-192x192.png differ diff --git a/src/static/icons/icon-256x256.png b/src/static/icons/icon-256x256.png new file mode 100644 index 0000000..9f331e2 Binary files /dev/null and b/src/static/icons/icon-256x256.png differ diff --git a/src/static/icons/icon-384x384.png b/src/static/icons/icon-384x384.png new file mode 100644 index 0000000..39bdf43 Binary files /dev/null and b/src/static/icons/icon-384x384.png differ diff --git a/src/static/icons/icon-48x48.png b/src/static/icons/icon-48x48.png new file mode 100644 index 0000000..951cbe7 Binary files /dev/null and b/src/static/icons/icon-48x48.png differ diff --git a/src/static/icons/icon-512x512.png b/src/static/icons/icon-512x512.png new file mode 100644 index 0000000..be1b067 Binary files /dev/null and b/src/static/icons/icon-512x512.png differ diff --git a/src/static/icons/icon-72x72.png b/src/static/icons/icon-72x72.png new file mode 100644 index 0000000..ac5beec Binary files /dev/null and b/src/static/icons/icon-72x72.png differ diff --git a/src/static/icons/icon-96x96.png b/src/static/icons/icon-96x96.png new file mode 100644 index 0000000..5ae5b70 Binary files /dev/null and b/src/static/icons/icon-96x96.png differ diff --git a/src/static/icons/mastodon.svg b/src/static/icons/mastodon.svg new file mode 100644 index 0000000..b298458 --- /dev/null +++ b/src/static/icons/mastodon.svg @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/src/static/manifest.webmanifest b/src/static/manifest.webmanifest new file mode 100644 index 0000000..516cdf7 --- /dev/null +++ b/src/static/manifest.webmanifest @@ -0,0 +1,34 @@ +{ + "name": "Kevin J Hoerr", + "short_name": "kjhoerr", + "start_url": "/", + "background_color": "#e1e1e1", + "theme_color": "#e1e1e1", + "display": "browser", + "icons": [ + { "src": "icons/icon-48x48.png", "sizes": "48x48", "type": "image/png" }, + { "src": "icons/icon-72x72.png", "sizes": "72x72", "type": "image/png" }, + { "src": "icons/icon-96x96.png", "sizes": "96x96", "type": "image/png" }, + { + "src": "icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png" + }, + { + "src": "icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/icon-256x256.png", + "sizes": "256x256", + "type": "image/png" + }, + { + "src": "icons/icon-384x384.png", + "sizes": "384x384", + "type": "image/png" + }, + { "src": "icons/icon-512x512.png", "sizes": "512x512", "type": "image/png" } + ] +} diff --git a/src/static/static/81e0da73927123f3f6b0c9a2d0750e76/6cac9/main.webp b/src/static/static/81e0da73927123f3f6b0c9a2d0750e76/6cac9/main.webp new file mode 100644 index 0000000..185b64e Binary files /dev/null and b/src/static/static/81e0da73927123f3f6b0c9a2d0750e76/6cac9/main.webp differ diff --git a/src/static/static/81e0da73927123f3f6b0c9a2d0750e76/88e48/main.png b/src/static/static/81e0da73927123f3f6b0c9a2d0750e76/88e48/main.png new file mode 100644 index 0000000..5139f93 Binary files /dev/null and b/src/static/static/81e0da73927123f3f6b0c9a2d0750e76/88e48/main.png differ diff --git a/src/static/styles.css b/src/static/styles.css new file mode 100644 index 0000000..90e7842 --- /dev/null +++ b/src/static/styles.css @@ -0,0 +1,205 @@ +body { + background-color: #e1e1e1; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXpUWHRUaXRsZQAACNdLSkzOTi/KL81LAQAWSwQhPQTyzQAAABt6VFh0QXV0aG9yAAAI1/NOLcvMU/DITy0qAgAYDwQeUS3vvwAAAZNJREFUeNrt3bFtQ0EMREH5x+q/M3Wi3IJaMGR7yHtbwCWDBY4J+fV4PL5vH879fr9tz/P5/JV3rzAcjI+DhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhDHglxXG/+RdjisMB2N1QyZirAWZirESZDLGOpDpGKtANmCsAdmCsQJkE8Z4kG0Yo0E2YowF2YoxEmQzxjiQ7RijQE7AGANyCsYIkJMweJDTMGiQEzFYkFMxSJCTMTiQ0zEokDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAGTuph/E3e5bjCcDBGNOS03fRXGA4GDXLq1YYrDAeDBDn9nskVhoNBgYQBgYQBgYQBgYQBgYQBgYQBgYQBgYQBgYQBgYQBgYQBgYQBgYTxs7wA+yQwVSKvoHMAAAAASUVORK5CYII=); + background-repeat: repeat; + font-display: serif; + font-family: Merriweather, serif; + font-size: 16px; + color: #000; +} + +::selection { + background-color: #999; + color: #fff; +} + +em, +p, +q { + display: block; + text-indent: 28px; +} + +p { + margin: 0 0 16px; +} + +p > a, +p > a:hover, +p > a:visited { + color: #000; + padding: 1px 3px; + text-decoration: none; +} + +p > a, +p > a:visited { + background-color: #e1e1e1; +} + +p > a:hover { + background-color: #d5d5d5; +} + +i.icon { + display: inline-block; + stroke-width: 0; + overflow-clip-margin: content-box; + overflow: hidden; + margin-bottom: -4px; + height: 20px; + width: 20px; + filter: invert(37%) sepia(0%) saturate(1906%) hue-rotate(177deg) + brightness(97%) contrast(72%); +} +i.icon.fa-code { + background-image: url(icons/code.svg); +} +i.icon.fa-github { + background-image: url(icons/github.svg); +} +i.icon.fa-mastodon { + background-image: url(icons/mastodon.svg); +} + +article { + width: 350px; + margin: 0px auto; + margin-bottom: 120px; + padding-top: 136px; +} + +article > picture { + width: 350px; + height: 350px; +} + +section { + background-color: #fff; + border: 1px #000 solid; + border-left: 3px #000 solid; + border-right: 3px #000 solid; + padding: 4px 8px; +} + +section:has(h1) { + border: 0px; + background-color: #000; + width: 100%; + margin-top: 3px; + padding: 4px 0px 0px; +} + +section + section { + margin-top: 3px; +} + +section:has(h1) + section { + margin-top: 0px; +} + +section > h1 { + text-align: center; + color: #fff; + font-size: 36px; + font-weight: bold; + margin: 0px; + padding: 0px; +} + +section:has(a) { + padding: 0; +} + +section:has(a):hover { + background-color: #ddd; + color: #222; +} + +section > a { + padding: 8px; + width: 328px; + display: block; + text-align: center; + -webkit-text-decoration: none; + text-decoration: none; + color: #777; +} + +section > a:visited, +section > a:active { + padding: 8px; + width: 328px; + display: block; + text-align: center; + -webkit-text-decoration: none; + text-decoration: none; + color: #777; +} + +section:last-child, +section:last-child > a { + border-bottom-left-radius: 18px; + border-bottom-right-radius: 18px; +} + +footer { + width: 100%; + position: fixed; + left: 0px; + bottom: 0px; + text-align: center; + font-size: 12px; +} + +footer > span { + padding: 2px; + background: #e1e1e1; +} + +@media (prefers-color-scheme: dark) { + body { + background-color: #424242; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAAltJREFUeF7t3cuKwzAMheHprs/VZd//YbqbIS10CLk5sSTr8mfvYPOBQPIhuT2fz98f4ef1egm/0d/r7ve7yqZu0iBg9DmJgoDRhzGtFgMBox9DDAQMGQwREDDkMLpBwJDF6AIBQx7jMggYOhiXQMDQwzgNAoYuxikQMPQxmkHAsMFoAgHDDuMQBAxbjF0QMOwxNkHAGIOxCgLGOIwFCBhjMWYgYIzH+IKA4QPjDfJ4PMRDDn6O99mJViBB45zpQSJhTJUqNUg0jNQlKyJGWpCoGClBImOkA4mOkQokA0YakCwYKUAyYYQHyYYRGiQjRliQrBghQTJjhAPJjhEKpAJGGJAqGCFAKmG4B6mG4RqkIoZbkKoYLkEqY7gDqY7hCgSMT6jIReoEjP+E13AQMOZxu6EgYCyzj8NAwFgPog4BAWM7FWwOAsZ+RNsUBIzjvLwZCBjHGGZ9CBhtGCYgYLRjqIOAcQ5DFQSM8xhqIGBcw1ABAeM6hjgIGH0YoiBg9GOIgYAhgyECAoYcRjcIGLIYXSBgyGNcBgFDB+MSCBh6GKdBwNDFOAUChj5GMwgYNhhNIGDYYRyCgGGLsQsChj3GJggYYzBWQcAYh7EAAWMsxgwEjPEYXxAwfGC8QaR/Tqx5tApf4A4DUgFjqlQhQKpghChZlTDcg1TDcA1SEcMtSFUMlyCVMdyBVMdwBQLGp6V20YeA8T/fGA4CxnzYNBQEjOXkbxgIGOtj2CEgYGzPxM1BwNi/oDAFAeP4tsgMBIxjDLM+BIw2DBMQMNox1EHAOIehCgLGeYxpxR8MpN5wf4mWVQAAAABJRU5ErkJggg==); + color: #ddd; + } + + p > a, + p > a:hover, + p > a:visited { + color: #fff; + } + + i.icon { + filter: invert(77%) sepia(0%) saturate(0%) hue-rotate(26deg) brightness(88%) + contrast(92%); + } + + section { + background-color: #000; + border-color: #777; + } + + section:has(h1) { + background-color: #777; + } + + section > h1 { + color: #000; + } + + section > a, + section > a:visited, + section > a:active { + color: #aaa; + } + + section:has(a):hover { + background-color: #222; + color: #ddd; + } + + footer > span { + background: #646464; + } +} diff --git a/src/styles/BlockAnchor.ts b/src/styles/BlockAnchor.ts deleted file mode 100644 index 05eb2a2..0000000 --- a/src/styles/BlockAnchor.ts +++ /dev/null @@ -1,21 +0,0 @@ -import styled from "styled-components"; - -export default styled.a` - padding: 8px; - width: 328px; - display: block; - text-align: center; - -webkit-text-decoration: none; - text-decoration: none; - color: #666; - &:visited, - &:active { - padding: 8px; - width: 328px; - display: block; - text-align: center; - -webkit-text-decoration: none; - text-decoration: none; - color: #666; - } -`; diff --git a/src/styles/BlockBody.ts b/src/styles/BlockBody.ts deleted file mode 100644 index 8fb655e..0000000 --- a/src/styles/BlockBody.ts +++ /dev/null @@ -1,27 +0,0 @@ -import styled from "styled-components"; -import BlockAnchor from "./BlockAnchor"; - -export default styled.div` - & + & { - margin-top: 3px; - } - - background-color: #fff; - border: 1px #000 solid; - border-left: 3px #000 solid; - border-right: 3px #000 solid; - - padding: ${(props) => (props.theme.link ? "0" : "4px 8px")}; - - & > ${BlockAnchor} { - &:hover { - background-color: #ddd; - color: #222; - } - } - &:last-child, - &:last-child > ${BlockAnchor} { - border-bottom-left-radius: 18px; - border-bottom-right-radius: 18px; - } -`; diff --git a/src/styles/BlockHeader.ts b/src/styles/BlockHeader.ts deleted file mode 100644 index eb6fe93..0000000 --- a/src/styles/BlockHeader.ts +++ /dev/null @@ -1,12 +0,0 @@ -import styled from "styled-components"; - -export default styled.div` - background-color: #000; - width: 100%; - text-align: center; - color: #fff; - font-size: 36px; - font-weight: bold; - margin-top: 3px; - padding-top: 4px; -`; diff --git a/src/styles/Content.ts b/src/styles/Content.ts deleted file mode 100644 index 388e12f..0000000 --- a/src/styles/Content.ts +++ /dev/null @@ -1,8 +0,0 @@ -import styled from "styled-components"; - -export default styled.div` - width: 350px; - margin: 0px auto; - margin-bottom: 120px; - padding-top: 136px; -`; diff --git a/src/styles/Footer.ts b/src/styles/Footer.ts deleted file mode 100644 index a121b68..0000000 --- a/src/styles/Footer.ts +++ /dev/null @@ -1,13 +0,0 @@ -import styled from "styled-components"; - -export default styled.div` - width: 100%; - position: fixed; - left: 0px; - bottom: 0px; - text-align: center; - font-size: 12px; - span { - background-color: #e1e1e1; - } -`; diff --git a/src/styles/index.ts b/src/styles/index.ts deleted file mode 100644 index 978271a..0000000 --- a/src/styles/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import BlockAnchor from "./BlockAnchor"; -import BlockBody from "./BlockBody"; -import BlockHeader from "./BlockHeader"; -import Content from "./Content"; -import Footer from "./Footer"; - -type Theme = Record; - -export { BlockAnchor, BlockBody, BlockHeader, Content, Footer, Theme }; diff --git a/src/styles/main.css b/src/styles/main.css deleted file mode 100644 index f1b50d3..0000000 --- a/src/styles/main.css +++ /dev/null @@ -1,41 +0,0 @@ -body { - background-color: #e1e1e1; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXpUWHRUaXRsZQAACNdLSkzOTi/KL81LAQAWSwQhPQTyzQAAABt6VFh0QXV0aG9yAAAI1/NOLcvMU/DITy0qAgAYDwQeUS3vvwAAAZNJREFUeNrt3bFtQ0EMREH5x+q/M3Wi3IJaMGR7yHtbwCWDBY4J+fV4PL5vH879fr9tz/P5/JV3rzAcjI+DhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhAGBhDHglxXG/+RdjisMB2N1QyZirAWZirESZDLGOpDpGKtANmCsAdmCsQJkE8Z4kG0Yo0E2YowF2YoxEmQzxjiQ7RijQE7AGANyCsYIkJMweJDTMGiQEzFYkFMxSJCTMTiQ0zEokDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAgkDAGTuph/E3e5bjCcDBGNOS03fRXGA4GDXLq1YYrDAeDBDn9nskVhoNBgYQBgYQBgYQBgYQBgYQBgYQBgYQBgYQBgYQBgYQBgYQBgYQBgYTxs7wA+yQwVSKvoHMAAAAASUVORK5CYII=); - background-repeat: repeat; - font-display: serif; - font-family: Merriweather, serif; - font-size: 16px -} - -::selection { - background-color: #999; - color: #fff -} - -em, -p, -q { - display: block; - text-indent: 28px -} - -p { - margin: 0 0 16px -} - -p>a, -p>a:hover, -p>a:visited { - color: #000; - padding: 1px 3px; - text-decoration: none -} - -p>a, -p>a:visited { - background-color: #e1e1e1 -} - -p>a:hover { - background-color: #d5d5d5 -} \ No newline at end of file diff --git a/src/templates/layouts/page.njk b/src/templates/layouts/page.njk new file mode 100644 index 0000000..adf9e7f --- /dev/null +++ b/src/templates/layouts/page.njk @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Kevin J Hoerr <kjhoerr@submelon.tech> + + +
+
+ {{ content | safe }} +
+ +
+ + \ No newline at end of file -- cgit