diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..643afc9 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,41 @@ +# This is the build workflow +name: Build + +# Controls when the workflow will run +on: + push: + pull_request: + workflow_call: + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + name: Build + # The type of runner that the job will run on + runs-on: ubuntu-latest + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Checkout + uses: actions/checkout@v4 + with: + lfs: true + # From: https://github.com/actions/setup-python/blob/main/docs/advanced-usage.md#caching-packages + - name: Install poetry + run: pipx install poetry==1.7.1 + - uses: actions/setup-python@v5 + with: + python-version-file: .python-version + cache: poetry + # Install with --no-root because project does produce a python package + - run: poetry install --no-root + # From: https://github.com/squidfunk/mkdocs-material/blob/master/docs/publishing-your-site.md#with-github-actions + - name: Setup MkDocs cache + uses: actions/cache@v3 + with: + key: mkdocs-material-${{ github.run_id }} + path: .cache + restore-keys: | + mkdocs-material- + - name: Build MkDocs site + run: poetry run mkdocs build diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 9325533..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: ci - -on: - push: - branches: - - master - - main - -permissions: - contents: write - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Configure Git Credentials - run: | - git config user.name github-actions[bot] - git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - uses: actions/setup-python@v4 - with: - python-version: 3.x - - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV - - uses: actions/cache@v3 - with: - key: mkdocs-material-${{ env.cache_id }} - path: .cache - restore-keys: | - mkdocs-material- - - run: pip install mkdocs-material - - run: mkdocs gh-deploy --force diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..e00336a --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,47 @@ +# This is the release workflow +name: Release + +permissions: + contents: write + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the "main" branch + push: + branches: + - main + - beta + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + inputs: + do_release: + description: 'Run the release job?' + required: true + default: false + type: boolean + +env: + test_env_var: "hello!" + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + release: + name: Release + if: ${{ inputs.do_release }} + needs: build + runs-on: ubuntu-latest + permissions: + contents: write # to be able to publish a GitHub release + issues: write # to be able to comment on released issues + pull-requests: write # to be able to comment on released pull requests + id-token: write # to enable use of OIDC for npm provenance + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - uses: ./.github/workflows/build.yml + - uses: actions/setup-node@v3 + - name: Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: npx semantic-release diff --git a/.gitignore b/.gitignore index c49c0b1..decfc7a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ - site .cache \ No newline at end of file diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..5fdbe14 --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,3 @@ +line-length: false +no-inline-html: false +no-multiple-blanks: false diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..512d523 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.12.1 \ No newline at end of file diff --git a/README.md b/README.md index 06274a0..cdd2d71 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,28 @@ -# justenstall.github.io +# Justen Stall's Website My portfolio and blog website. + +## Developing + +- The site is maintained as an [MkDocs] website using the [Material for MkDocs] theme + - See [`mkdocs.yml`](./mkdocs.yml) +- The site source is contained in the [`src/`](./src/) directory + - This is configured in [`mkdocs.yml`](./mkdocs.yml) + - Differed from the default (`docs/`) to reflect that this site is not documentation +- Dependencies are managed using [Poetry] for Python + - See [`pyproject.toml`](./pyproject.toml) +- Common tasks are defined using [Taskfile](https://taskfile.dev/) + - See [`Taskfile.yml`](./Taskfile.yml) + +## Testing + +To test the site locally, install the dependencies using [Poetry] and run the . + +## Deploying + +The site is deployed to a CloudFlare-managed domain using [CloudFlare Pages]. The guide [Deploy an MkDocs site to CloudFlare Pages](https://developers.cloudflare.com/pages/framework-guides/deploy-an-mkdocs-site/) was useful for setting this deployment up. + +[MkDocs]: "MkDocs" +[Material for MkDocs]: "Material for MkDocs" +[Poetry]: "Poetry" +[CloudFlare Pages]: "CloudFlare Pages" diff --git a/Taskfile.yml b/Taskfile.yml index c424144..19ebb24 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -3,10 +3,24 @@ version: "3" tasks: + poetry: + silent: true + # internal: true + cmds: + - command -v poetry + + install-deps: + deps: + - poetry + cmds: + - poetry install --no-root + serve: + deps: [install-deps] cmds: - poetry run mkdocs serve build: + deps: [install-deps] cmds: - poetry run mkdocs build diff --git a/docs/theme/home.html b/docs/theme/home.html deleted file mode 100644 index d61f2a7..0000000 --- a/docs/theme/home.html +++ /dev/null @@ -1,154 +0,0 @@ -{% extends "base.html" %} - -{% block htmltitle %} -{{config.site_name}} -{% endblock %} - -{% block tabs %} -{{ super() }} - - - - - -
- -
- -{% endblock %} -{% block content %}{% endblock %} -{% block footer %} -{{ super() }} -{% endblock %} \ No newline at end of file diff --git a/docs/theme/zigzag.css b/docs/theme/zigzag.css deleted file mode 100644 index f385285..0000000 --- a/docs/theme/zigzag.css +++ /dev/null @@ -1,91 +0,0 @@ -/* - Zig Zag Underline -*/ - -.zigzag { - display: inline-block; - position: relative; -} - -.zigzag:after { - content: ""; - height: .2em; - width: 100%; - position: absolute; - background: url("zigzag-black.svg"); - background-size: .35em; - bottom: 0; - left: 0; - -webkit-animation: zigzagPlay 1.5s infinite linear; - -moz-animation: zigzagPlay 1.5s infinite linear; - -ms-animation: zigzagPlay 1.5s infinite linear; - -o-animation: zigzagPlay 1.5s infinite linear; - animation: zigzagPlay 1.5s infinite linear; - -webkit-animation-play-state: paused; - -moz-animation-play-state: paused; - -o-animation-play-state: paused; - animation-play-state: paused; -} - -.zigzag:hover:after { - -webkit-animation-play-state: running; - -moz-animation-play-state: running; - -o-animation-play-state: running; - animation-play-state: running; -} - -@-webkit-keyframes zigzagPlay { - 0% { - background-position: 0rem; - } - 100% { - background-position: -2rem; - } -} - -@-moz-keyframes zigzagPlay { - 0% { - background-position: 0rem; - } - 100% { - background-position: -2rem; - } -} - -@-ms-keyframes zigzagPlay { - 0% { - background-position: 0rem; - } - 100% { - background-position: -2rem; - } -} - -@-o-keyframes zigzagPlay { - 0% { - background-position: 0rem; - } - 100% { - background-position: -2rem; - } -} - -@keyframes zigzagPlay { - 0% { - background-position: 0rem; - } - 100% { - background-position: -2rem; - } -} - -.zigzag-play:after { - -webkit-animation-play-state: running !important; - -moz-animation-play-state: running !important; - -o-animation-play-state: running !important; - animation-play-state: running !important; -} - -.zigzag-title:after { - top: 2rem; -} \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 9ffb9d8..bfc91f4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -15,7 +15,7 @@ theme: font: text: Inter code: DM Mono - custom_dir: docs/theme + custom_dir: src/theme features: - content.code.copy - navigation.sections @@ -32,8 +32,6 @@ extra: link: https://github.com/justenstall - icon: fontawesome/brands/slack link: https://cloud-native.slack.com/team/U026HE0JFEJ - - icon: fontawesome/brands/git-alt - link: https://github.com/justenstall/justenstall.github.io home: image: assets/justenstall.jpg description: | @@ -41,8 +39,9 @@ extra: extra_css: - stylesheets/theme-colors.css + - stylesheets/portfolio.css -docs_dir: docs +docs_dir: src plugins: - blog: diff --git a/poetry.lock b/poetry.lock index 71a129a..9033767 100644 --- a/poetry.lock +++ b/poetry.lock @@ -973,5 +973,5 @@ files = [ [metadata] lock-version = "2.0" -python-versions = "^3.11" -content-hash = "4e628d1ed7884d667a41a90cd424a10dac1b0185781af69d1af5e53c7b5e35fc" +python-versions = "^3.12" +content-hash = "f3dcb83ce9408583e6d66cc080e357ddbe78f442b7150e0bda4a73e4fb6eb5dc" diff --git a/pyproject.toml b/pyproject.toml index 6d563fa..ee4b176 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ authors = ["Justen Stall "] readme = "README.md" [tool.poetry.dependencies] -python = "^3.11" +python = "^3.12" mkdocs = "^1.5.3" mkdocs-material = {extras = ["imaging"], version = "^9.5.3"} pygments = "^2.17.2" diff --git a/docs/assets/app-icon-fullres.png b/src/assets/app-icon-fullres.png similarity index 100% rename from docs/assets/app-icon-fullres.png rename to src/assets/app-icon-fullres.png diff --git a/docs/assets/favicon-blue-white-black.png b/src/assets/favicon-blue-white-black.png similarity index 100% rename from docs/assets/favicon-blue-white-black.png rename to src/assets/favicon-blue-white-black.png diff --git a/docs/assets/favicon-fullres.png b/src/assets/favicon-fullres.png similarity index 100% rename from docs/assets/favicon-fullres.png rename to src/assets/favicon-fullres.png diff --git a/docs/assets/favicon-t-black-blue.png b/src/assets/favicon-t-black-blue.png similarity index 100% rename from docs/assets/favicon-t-black-blue.png rename to src/assets/favicon-t-black-blue.png diff --git a/docs/assets/favicon-t-blue-black.png b/src/assets/favicon-t-blue-black.png similarity index 100% rename from docs/assets/favicon-t-blue-black.png rename to src/assets/favicon-t-blue-black.png diff --git a/docs/assets/favicon-t-blue-white.png b/src/assets/favicon-t-blue-white.png similarity index 100% rename from docs/assets/favicon-t-blue-white.png rename to src/assets/favicon-t-blue-white.png diff --git a/docs/assets/favicon-t-white-black.png b/src/assets/favicon-t-white-black.png similarity index 100% rename from docs/assets/favicon-t-white-black.png rename to src/assets/favicon-t-white-black.png diff --git a/docs/assets/favicon-white-black-blue.png b/src/assets/favicon-white-black-blue.png similarity index 100% rename from docs/assets/favicon-white-black-blue.png rename to src/assets/favicon-white-black-blue.png diff --git a/docs/assets/favicon/android-chrome-192x192.png b/src/assets/favicon/android-chrome-192x192.png similarity index 100% rename from docs/assets/favicon/android-chrome-192x192.png rename to src/assets/favicon/android-chrome-192x192.png diff --git a/docs/assets/favicon/android-chrome-384x384.png b/src/assets/favicon/android-chrome-384x384.png similarity index 100% rename from docs/assets/favicon/android-chrome-384x384.png rename to src/assets/favicon/android-chrome-384x384.png diff --git a/docs/assets/favicon/android-chrome-512x512.png b/src/assets/favicon/android-chrome-512x512.png similarity index 100% rename from docs/assets/favicon/android-chrome-512x512.png rename to src/assets/favicon/android-chrome-512x512.png diff --git a/docs/assets/favicon/apple-touch-icon.png b/src/assets/favicon/apple-touch-icon.png similarity index 100% rename from docs/assets/favicon/apple-touch-icon.png rename to src/assets/favicon/apple-touch-icon.png diff --git a/docs/assets/favicon/browserconfig.xml b/src/assets/favicon/browserconfig.xml similarity index 100% rename from docs/assets/favicon/browserconfig.xml rename to src/assets/favicon/browserconfig.xml diff --git a/docs/assets/favicon/favicon-16x16.png b/src/assets/favicon/favicon-16x16.png similarity index 100% rename from docs/assets/favicon/favicon-16x16.png rename to src/assets/favicon/favicon-16x16.png diff --git a/docs/assets/favicon/favicon-32x32.png b/src/assets/favicon/favicon-32x32.png similarity index 100% rename from docs/assets/favicon/favicon-32x32.png rename to src/assets/favicon/favicon-32x32.png diff --git a/docs/assets/favicon/favicon.ico b/src/assets/favicon/favicon.ico similarity index 100% rename from docs/assets/favicon/favicon.ico rename to src/assets/favicon/favicon.ico diff --git a/docs/assets/favicon/mstile-150x150.png b/src/assets/favicon/mstile-150x150.png similarity index 100% rename from docs/assets/favicon/mstile-150x150.png rename to src/assets/favicon/mstile-150x150.png diff --git a/docs/assets/favicon/mstile-310x150.png b/src/assets/favicon/mstile-310x150.png similarity index 100% rename from docs/assets/favicon/mstile-310x150.png rename to src/assets/favicon/mstile-310x150.png diff --git a/docs/assets/favicon/mstile-310x310.png b/src/assets/favicon/mstile-310x310.png similarity index 100% rename from docs/assets/favicon/mstile-310x310.png rename to src/assets/favicon/mstile-310x310.png diff --git a/docs/assets/favicon/mstile-70x70.png b/src/assets/favicon/mstile-70x70.png similarity index 100% rename from docs/assets/favicon/mstile-70x70.png rename to src/assets/favicon/mstile-70x70.png diff --git a/docs/assets/favicon/og-image.jpg b/src/assets/favicon/og-image.jpg similarity index 100% rename from docs/assets/favicon/og-image.jpg rename to src/assets/favicon/og-image.jpg diff --git a/docs/assets/favicon/safari-pinned-tab.svg b/src/assets/favicon/safari-pinned-tab.svg similarity index 100% rename from docs/assets/favicon/safari-pinned-tab.svg rename to src/assets/favicon/safari-pinned-tab.svg diff --git a/docs/assets/favicon/site.webmanifest b/src/assets/favicon/site.webmanifest similarity index 100% rename from docs/assets/favicon/site.webmanifest rename to src/assets/favicon/site.webmanifest diff --git a/docs/assets/justenstall.jpg b/src/assets/justenstall.jpg similarity index 100% rename from docs/assets/justenstall.jpg rename to src/assets/justenstall.jpg diff --git a/docs/assets/misspell-black-transparent.png b/src/assets/misspell-black-transparent.png similarity index 100% rename from docs/assets/misspell-black-transparent.png rename to src/assets/misspell-black-transparent.png diff --git a/docs/biography/assets/black-knights.jpg b/src/biography/assets/black-knights.jpg similarity index 100% rename from docs/biography/assets/black-knights.jpg rename to src/biography/assets/black-knights.jpg diff --git a/docs/biography/assets/cooper-primary.png b/src/biography/assets/cooper-primary.png similarity index 100% rename from docs/biography/assets/cooper-primary.png rename to src/biography/assets/cooper-primary.png diff --git a/docs/biography/assets/fe-blue.jpg b/src/biography/assets/fe-blue.jpg similarity index 100% rename from docs/biography/assets/fe-blue.jpg rename to src/biography/assets/fe-blue.jpg diff --git a/docs/biography/assets/fe-primary.jpg b/src/biography/assets/fe-primary.jpg similarity index 100% rename from docs/biography/assets/fe-primary.jpg rename to src/biography/assets/fe-primary.jpg diff --git a/docs/biography/assets/fe-wikipedia.jpg b/src/biography/assets/fe-wikipedia.jpg similarity index 100% rename from docs/biography/assets/fe-wikipedia.jpg rename to src/biography/assets/fe-wikipedia.jpg diff --git a/docs/biography/assets/ge-monogram.png b/src/biography/assets/ge-monogram.png similarity index 100% rename from docs/biography/assets/ge-monogram.png rename to src/biography/assets/ge-monogram.png diff --git a/docs/biography/assets/ge-primary.svg b/src/biography/assets/ge-primary.svg similarity index 100% rename from docs/biography/assets/ge-primary.svg rename to src/biography/assets/ge-primary.svg diff --git a/docs/biography/assets/udayton-logo-horizontal-2color.png b/src/biography/assets/udayton-logo-horizontal-2color.png similarity index 100% rename from docs/biography/assets/udayton-logo-horizontal-2color.png rename to src/biography/assets/udayton-logo-horizontal-2color.png diff --git a/docs/biography/assets/udayton-logo-primary-2color.png b/src/biography/assets/udayton-logo-primary-2color.png similarity index 100% rename from docs/biography/assets/udayton-logo-primary-2color.png rename to src/biography/assets/udayton-logo-primary-2color.png diff --git a/docs/biography/assets/udayton-logo-vertical-2color.png b/src/biography/assets/udayton-logo-vertical-2color.png similarity index 100% rename from docs/biography/assets/udayton-logo-vertical-2color.png rename to src/biography/assets/udayton-logo-vertical-2color.png diff --git a/docs/biography/assets/udri-monogram.jpg b/src/biography/assets/udri-monogram.jpg similarity index 100% rename from docs/biography/assets/udri-monogram.jpg rename to src/biography/assets/udri-monogram.jpg diff --git a/docs/biography/assets/udri-primary.jpg b/src/biography/assets/udri-primary.jpg similarity index 100% rename from docs/biography/assets/udri-primary.jpg rename to src/biography/assets/udri-primary.jpg diff --git a/docs/biography/assets/vb.jpg b/src/biography/assets/vb.jpg similarity index 100% rename from docs/biography/assets/vb.jpg rename to src/biography/assets/vb.jpg diff --git a/docs/biography/education.md b/src/biography/education.md similarity index 64% rename from docs/biography/education.md rename to src/biography/education.md index 6367520..2c8ef06 100644 --- a/docs/biography/education.md +++ b/src/biography/education.md @@ -4,16 +4,31 @@ ### Master's of Computer Science, University of Dayton -![University of Dayton](assets/udayton-logo-vertical-2color.png){ align=right width=100 padding-right=20 } +
+
Expected graduation: May 2024 Currently working on a Software Engineering research project to conclude the program. +
+ + +![University of Dayton](assets/udayton-logo-vertical-2color.png){ .narrow-image } + +
## Completed ### B.S. in Computer Science, University of Dayton -![University of Dayton](assets/udayton-logo-vertical-2color.png){ align=right width=100 padding-right=20 } +
+ +
Graduated in May of 2021. + +
+ +![University of Dayton](assets/udayton-logo-vertical-2color.png){ .narrow-image } + +
diff --git a/docs/biography/experience.md b/src/biography/experience.md similarity index 61% rename from docs/biography/experience.md rename to src/biography/experience.md index 96d3982..6d923ac 100644 --- a/docs/biography/experience.md +++ b/src/biography/experience.md @@ -2,34 +2,64 @@ ## Current + ### Data Science Engineer, University of Dayton Research Institute -![University of Dayton Research Institute](assets/udri-primary.jpg){ align=right width=200 padding=10 } +
Currently employed as a Data Science Engineer at the University of Dayton Research Institute. +{ .description } + +![University of Dayton Research Institute](assets/udri-primary.jpg){ .image } + +
## Previous -### Flyer Enterprises -[![Flyer Enterprises](assets/fe-primary.jpg){ align=right width=100 padding=10 }](https://www.flyerenterprises.com/) +### App Development Project Manager, Flyer Enterprises + +
Worked for the student-run organization Flyer Enterprises from September 2018 to May 2021. Main project was developing a mobile application, digital loyalty card system, and a simple content management system for keeping menus up-to-date and running promotions viewable in the mobile application. Also contributed to the [FE Digital](https://www.fedigitalagency.com/) team as the lead web developer and consultant for local small businesses. +{ .description } -### University of Dayton Research Institute +![Flyer Enterprises](assets/fe-primary.jpg){ .narrow-image } -![University of Dayton Research Institute](assets/udri-primary.jpg){ align=right width=200 padding=10 } +
+ + +### Intern, University of Dayton Research Institute + +
Worked for UDRI as a part-time intern during the 2020-2021 school year. +{ .description } + +![University of Dayton Research Institute](assets/udri-primary.jpg){ .image } -### GE Aviation +
-![GE Aviation](assets/ge-primary.svg){ align=right width=200 padding=10 } + +### Intern, GE Aviation + +
Worked for GE Aviation as a Digital Technology intern in the Summer of 2019. Assisted the military contracts group with data analysis and automation. +{ .description } + +![GE Aviation](assets/ge-primary.svg){ .image } + +
-### Cooper Tire & Rubber Company -![Cooper Tire & Rubber Company](assets/cooper-primary.png){ align=right width=200 padding=10 } +### Intern, Cooper Tire & Rubber Company + +
Worked for Cooper Tire as an IT Infrastructure intern in the Summer of 2018. Helped the IT department streamline their device lifecycle management and mobile device management processes. +{ .description } + +![Cooper Tire & Rubber Company](assets/cooper-primary.png){ .image } + +
diff --git a/docs/biography/index.md b/src/biography/index.md similarity index 100% rename from docs/biography/index.md rename to src/biography/index.md diff --git a/docs/biography/portfolio.md b/src/biography/portfolio.md similarity index 100% rename from docs/biography/portfolio.md rename to src/biography/portfolio.md diff --git a/docs/blog/.authors.yml b/src/blog/.authors.yml similarity index 100% rename from docs/blog/.authors.yml rename to src/blog/.authors.yml diff --git a/docs/blog/index.md b/src/blog/index.md similarity index 100% rename from docs/blog/index.md rename to src/blog/index.md diff --git a/docs/blog/posts/first-post.md b/src/blog/posts/first-post.md similarity index 100% rename from docs/blog/posts/first-post.md rename to src/blog/posts/first-post.md diff --git a/docs/index.md b/src/index.md similarity index 100% rename from docs/index.md rename to src/index.md diff --git a/src/stylesheets/portfolio.css b/src/stylesheets/portfolio.css new file mode 100644 index 0000000..1f65aca --- /dev/null +++ b/src/stylesheets/portfolio.css @@ -0,0 +1,32 @@ +.portfolio-entry-content { + display: flex; + flex-wrap: wrap; + align-items: center; + flex-direction: column; + justify-content: space-between; +} + +.portfolio-entry-content .image { + height: 2rem; + flex-shrink: 0; +} + +.portfolio-entry-content .narrow-image { + height: 4rem; + flex-shrink: 0; +} + +.portfolio-entry-content .description { + align-self: flex-start; + flex-grow: 2; +} + +@media screen and (min-width: 60em) { + .portfolio-entry-content { + flex-direction: row; + } + + .portfolio-entry-content .description { + max-width: 70%; + } +} diff --git a/docs/stylesheets/theme-colors.css b/src/stylesheets/theme-colors.css similarity index 100% rename from docs/stylesheets/theme-colors.css rename to src/stylesheets/theme-colors.css diff --git a/src/theme/home.css b/src/theme/home.css new file mode 100644 index 0000000..8208672 --- /dev/null +++ b/src/theme/home.css @@ -0,0 +1,130 @@ +/* + Styles for home.html +*/ + +.md-main { + display: none; +} + +.md-header--shadow { + box-shadow: none; +} + +.container-hero { + padding-top: 0rem; + background: linear-gradient( + to bottom, + var(--md-primary-fg-color), + var(--md-primary-fg-color--light) 99% + ); + flex-grow: 2; +} + +.tx-hero { + margin: 32px 2.8rem; + color: var(--md-primary-bg-color); + justify-content: center; +} + +.tx-hero h1 { + margin-bottom: 1rem; + color: currentColor; + font-weight: 700; +} + +.tx-hero__content { + padding-bottom: 1rem; + margin: 0 auto; +} + +.tx-hero__image { + width: 100%; + max-width: 15rem; + order: 1; +} + +.avatar { + border-radius: 50%; +} + +.tx-hero .md-button { + margin-top: 0.5rem; + margin-right: 0.5rem; + color: var(--md-primary-bg-color); + border-color: transparent; +} + +.tx-hero .md-button--primary { + background-color: var(--md-primary-bg-color); + color: hsl(0, 2%, 19%); + padding: 5px 10px; + border-color: var(--md-primary-bg-color); +} + +.tx-hero .md-button .twemoji { + padding-right: 3px; +} + +.tx-hero .md-button:focus, +.tx-hero .md-button:hover { + background-color: #000000; + color: #ffffff; + border-color: #000000; +} + +@media screen and (min-width: 60em) { + .tx-hero { + display: flex; + align-items: center; + justify-content: center; + } + + .tx-hero__content { + max-width: 22rem; + margin: 3.5rem 4rem 3.5rem 1rem; + align-items: center; + } + + .md-sidebar--primary { + display: none; + } +} + +/* + Zig Zag Underline +*/ + +.zigzag { + display: inline-block; + position: relative; +} + +.zigzag:after { + content: ""; + height: 0.2em; + width: 100%; + position: absolute; + background: url("zigzag-black.svg"); + background-size: 0.35em; + bottom: 0; + left: 0; + animation: zigzagPlay 1.5s infinite linear; + animation-play-state: paused; +} + +.zigzag:hover:after { + animation-play-state: running; +} + +@keyframes zigzagPlay { + 0% { background-position: 0rem; } + 100% { background-position: -1.7rem; } +} + +.zigzag-play:after { + animation-play-state: running !important; +} + +.zigzag-title:after { + top: 2rem; +} diff --git a/src/theme/home.html b/src/theme/home.html new file mode 100644 index 0000000..3e8b32b --- /dev/null +++ b/src/theme/home.html @@ -0,0 +1,50 @@ +{% extends "base.html" %} + +{% block htmltitle %} +{{config.site_name}} +{% endblock %} + +{% block tabs %} +{{ super() }} + + + +
+ +
+ +{% endblock %} +{% block content %}{% endblock %} +{% block footer %} +{{ super() }} +{% endblock %} diff --git a/docs/theme/zigzag-black.svg b/src/theme/zigzag-black.svg similarity index 83% rename from docs/theme/zigzag-black.svg rename to src/theme/zigzag-black.svg index 3098ede..3df0527 100644 --- a/docs/theme/zigzag-black.svg +++ b/src/theme/zigzag-black.svg @@ -1,5 +1,4 @@ -