feat/css-cleanup #2

Merged
millironx merged 41 commits from feat/css-cleanup into master 2024-12-02 02:51:14 +00:00
60 changed files with 912 additions and 1189 deletions

1
.gitattributes vendored
View file

@ -1 +0,0 @@
assets/scripts/pro-duotone-svg-icons/** filter=git-crypt diff=git-crypt

4
.gitignore vendored
View file

@ -151,3 +151,7 @@ dist
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
### FontAwesome gitignore ###
fontawesome-pro-6.3.0-web

3
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,3 @@
{
"editor.formatOnSave": true
}

View file

@ -2,15 +2,6 @@ when:
branch: "master"
steps:
- name: Decrypt repository
image: andyaugustin/git-crypt:v1.0.2
commands:
- echo "${GIT_CRYPT_KEY}" | base64 --decode > /tmp/.git-crypt-key
- git config --global --add safe.directory
- git-crypt unlock /tmp/.git-crypt-key
- rm /tmp/.git-crypt-key
secrets:
- git_crypt_key
- name: Install Node packages
image: node:18.14.2-slim
commands:

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32 32V448H416V384h32V0H416 384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-256H352v32H128V128zm224 64v32H128V192H352z"/></svg>

After

Width:  |  Height:  |  Size: 427 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M0 32H512V480H0V32zm160 72v48H448V104H160zm-32-8H64v64h64V96z"/></svg>

After

Width:  |  Height:  |  Size: 309 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 49.6 21.3 95.1 56.9 130.8L16 480l150.4-45.1c27.9 8.5 58.1 13.1 89.6 13.1z"/></svg>

After

Width:  |  Height:  |  Size: 387 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M128 0h24H296h24V24 96h64l64 320H0L64 96h64V24 0zM272 48H176V96h96V48zm16 400c0 35.3-28.7 64-64 64s-64-28.7-64-64H288z"/></svg>

After

Width:  |  Height:  |  Size: 366 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M0 304l0-96 96 0 0 96L0 304zm160 0l0-96 96 0 0 96-96 0zm160-96l96 0 0 96-96 0 0-96z"/></svg>

After

Width:  |  Height:  |  Size: 331 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M224 0H0V512H384V160H224V0zm32 0V128H384L256 0zM112 256H272h16v32H272 112 96V256h16zm0 64H272h16v32H272 112 96V320h16zm0 64H272h16v32H272 112 96V384h16z"/></svg>

After

Width:  |  Height:  |  Size: 400 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M224 0H0V512H384V427l-1.7 1.7L262.2 445.9l-11.7 1.9-11.6 1.9-5.3-10.5L222.1 416H209.9l-11.6 23.2-4.4 8.8H184h-8H164.1l-3.4-11.4L144 381l-16.7 55.6L123.9 448H112 80 64V416H80h20.1l20.6-68.6 3.4-11.4H136h16 11.9l3.4 11.4 15.4 51.4 3-5.9 4.4-8.8H200h32 9.9l4.4 8.8 7.2 14.5L267 313.4l117-117V160H224V0zm32 0V128H384L256 0zM505 119.8l-41.3 41.3 71 71L576 190.8l-71-71zm-63.9 63.9L299.9 325 288 407.9 370.9 396 512.1 254.7l-71-71z"/></svg>

After

Width:  |  Height:  |  Size: 673 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z"/></svg>

After

Width:  |  Height:  |  Size: 1,012 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M352 256c0-22.1-2.2-43.5-6.1-64H166.1c-3.9 20.5-6.1 41.9-6.1 64s2.2 43.5 6.1 64H345.9c3.9-20.5 6.1-41.9 6.1-64zm26.4-64c3.6 20.5 5.6 41.9 5.6 64s-2 43.5-5.6 64H503.9c5.3-20.5 8.1-41.9 8.1-64s-2.8-43.5-8.1-64H378.4zm115-32c-33-81.5-106.7-142.2-196-156.7c25.7 36.7 57 91 74 156.7h122zm-155.1 0c-11.4-40.2-28.4-75.9-45.8-105.4c-13-21.9-25.9-40-36.5-53.5c-10.5 13.5-23.5 31.6-36.5 53.5c-17.4 29.4-34.5 65.1-45.8 105.4H338.3zm-197.7 0c17-65.6 48.3-120 74-156.7C125.4 17.8 51.6 78.5 18.6 160h122zM8.1 192C2.8 212.5 0 233.9 0 256s2.8 43.5 8.1 64H133.6c-3.6-20.5-5.6-41.9-5.6-64s2-43.5 5.6-64H8.1zM173.7 352c11.4 40.2 28.4 75.9 45.8 105.4c13 21.9 25.9 40 36.5 53.5c10.5-13.5 23.5-31.6 36.5-53.5c17.4-29.4 34.5-65.1 45.8-105.4H173.7zm-33.2 0H18.6c33 81.5 106.7 142.2 196 156.7c-25.7-36.7-57-91-74-156.7zm352.8 0h-122c-17 65.6-48.3 120-74 156.7c89.2-14.5 163-75.2 196-156.7z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M640 176L320 288 127.8 220.7l198.1-77.8 14.9-5.9L329 107.3l-14.9 5.9-224 88-8.7 3.4L80 204V346.8c15.4 25.1 27.8 68.4 0 133.2L0 464s32.5-46.5 48-96.9V192.8L0 176V144L320 32 640 144v32zM143.6 260.2l165.9 58.1 10.6 3.7 10.6-3.7 165.9-58.1L512 408c0 35.3-86 72-192 72s-192-36.7-192-72l15.6-147.8z"/></svg>

After

Width:  |  Height:  |  Size: 540 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M511.8 287.6H576V240L288.4 0 0 240v47.6H64.1V512H224V352H352V512H512.8l-1-224.4z"/></svg>

After

Width:  |  Height:  |  Size: 328 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M511.8 287.6H576V240L288.4 0 0 240v47.6H64.1V512H224V352H352V512H512.8l-1-224.4z"/></svg>

After

Width:  |  Height:  |  Size: 328 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M64 0V104H56 24 0v48H24 56h8v80H56 24 0v48H24 56h8v80H56 24 0v48H24 56h8V512H192V0H64zM480 0H224V512H480V0z"/></svg>

After

Width:  |  Height:  |  Size: 355 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z"/></svg>

After

Width:  |  Height:  |  Size: 611 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M288 0H192V24H168c-48.6 0-88 39.4-88 88v32H24 0v48H24 424h24V144H424 128V112c0-22.1 17.9-40 40-40h24V96h96c26.5 0 48-21.5 48-48s-21.5-48-48-48zM48 224L80 512H368l32-288H48z"/></svg>

After

Width:  |  Height:  |  Size: 420 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M32 0H0V64H32V320v32H64 256v34.7l-54.6 54.6L178.7 464 224 509.3l22.6-22.6L288 445.3l41.4 41.4L352 509.3 397.3 464l-22.6-22.6L320 386.7V352H512h32V320 64h32V0H544 480 96 32zM96 64H480V288H320 256 96V64z"/></svg>

After

Width:  |  Height:  |  Size: 449 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M384 32H512h32V96H512 398.4c-5.2 25.8-22.9 47.1-46.4 57.3V448H512h32v64H512 320 128 96V448h32H288V153.3c-23.5-10.3-41.2-31.6-46.4-57.3H128 96V32h32H256c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zM112 128h32 14.5l6.7 12.9 88 168 2.7 5.2V320l0 32 0 9.9-7 7-40 40-7 7H192 64 54.1l-7-7L7 369l-7-7V352 320v-5.9l2.7-5.2 88-168L97.5 128H112zM51.1 320H204.9L129.5 176h-3L51.1 320zM481.5 128H496h32 14.5l6.7 12.9 88 168 2.7 5.2V320v32 9.9l-7 7-40 40-7 7H576 448h-9.9l-7-7-40-40-7-7V352 320v-5.9l2.7-5.2 88-168 6.7-12.9zm29 48L435.1 320H588.9L513.5 176h-3z"/></svg>

After

Width:  |  Height:  |  Size: 791 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"/></svg>

After

Width:  |  Height:  |  Size: 467 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z"/></svg>

After

Width:  |  Height:  |  Size: 980 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M0 32V256L224 480 448 256 224 32H0zm112 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/></svg>

After

Width:  |  Height:  |  Size: 325 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M0 144L256 0 512 144v48H0V144zM0 512V464l64-48V224h64V416h40V224h64V416h48V224h64V416h40V224h64V416l64 48v48H0zM256 144a32 32 0 1 0 0-64 32 32 0 1 0 0 64z"/></svg>

After

Width:  |  Height:  |  Size: 402 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M370.7 96C346 39.5 289.6 0 224 0S102 39.5 77.3 96H48V224H77.3c24.7 56.5 81.1 96 146.7 96s122-39.5 146.7-96H400V96H370.7zM336 128v32c0 53-43 96-96 96H208c-53 0-96-43-96-96V128l32-32H304l32 32zM192 160l-16-32-16 32-32 16 32 16 16 32 16-32 32-16-32-16zM97 304H48L0 512H128V416H320v96H448L400 304H351c-33.8 29.9-78.3 48-127 48s-93.2-18.1-127-48zm95 144H160v16 48h32V464 448zm80 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32z"/></svg>

After

Width:  |  Height:  |  Size: 659 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zM448 512L384 304H64L0 512H448z"/></svg>

After

Width:  |  Height:  |  Size: 327 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M384 64H0V448H384V64zM576 448V64L416 174.9V337.1L576 448z"/></svg>

After

Width:  |  Height:  |  Size: 305 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z"/></svg>

After

Width:  |  Height:  |  Size: 743 B

1
assets/graphics/fa/w.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M505.8 32h67.6L429.3 458.2 422 480H375l-6.7-23L287 178.3 205.7 457 199 480H152l-7.4-21.8L.6 32H68.2L172.8 341.4 256.3 55 263 32h48l6.7 23 83.5 286.4L505.8 32z"/></svg>

After

Width:  |  Height:  |  Size: 406 B

View file

@ -7,102 +7,37 @@
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="29.935179mm"
height="8.7677584mm"
viewBox="0 0 106.06953 31.06686"
id="svg2"
version="1.1"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="MillironX-title.svg">
<defs
id="defs4">
<inkscape:path-effect
effect="spiro"
id="path-effect4154"
is_visible="true" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.365291"
inkscape:cx="110.96366"
inkscape:cy="1.1809794"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showguides="false"
inkscape:window-width="1920"
inkscape:window-height="1023"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<inkscape:grid
type="xygrid"
id="grid3342"
originx="-201.95728"
originy="-551.96657" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-201.95727,-469.32877)">
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 205,497.3622 h 20 c 1.59641,0 3.22706,-0.0728 4.71101,-0.66135 1.48394,-0.58857 2.74536,-1.65633 3.71836,-2.92194 0.973,-1.26562 1.6829,-2.71578 2.64135,-3.99245 0.47923,-0.63833 1.02956,-1.23277 1.69028,-1.68064 0.66071,-0.44787 1.4408,-0.74362 2.239,-0.74362 0.7982,0 1.57829,0.29575 2.239,0.74362 0.66072,0.44787 1.21105,1.04231 1.69028,1.68064 0.95845,1.27667 1.66835,2.72683 2.64135,3.99245 0.973,1.26561 2.23442,2.33337 3.71836,2.92194 1.48395,0.58857 3.1146,0.66135 4.71101,0.66135 h 20"
id="path4152"
inkscape:path-effect="#path-effect4154"
inkscape:original-d="m 205,497.3622 h 20 c 5,0 8.99075,-10 15,-10 6.00925,0 10,10 15,10 h 20"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csssc"
transform="translate(1.2499871,-12.187492)" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 285,497.3622 20,-25"
id="path4156"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 285,472.3622 20,25"
id="path4158"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<!-- <text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:48.38618469px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="166.61456"
y="617.31299"
id="text3346"
sodipodi:linespacing="125%"
transform="scale(1.2096546,0.82668227)"><tspan
sodipodi:role="line"
id="tspan3348"
x="166.61456"
y="617.31299"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.14374161px;font-family:Garamond;-inkscape-font-specification:'Garamond Bold'">MILLIRON X</tspan></text>
-->
</g>
version="1.1">
<defs
id="defs4">
<style>
svg {
background-color: transparent;
color-scheme: light dark;
}
path {
stroke: light-dark(black, white);
}
</style>
</defs>
<g
transform="translate(-201.95727,-469.32877)">
<path
style="fill:none;fill-rule:evenodd;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 205,497.3622 h 20 c 1.59641,0 3.22706,-0.0728 4.71101,-0.66135 1.48394,-0.58857 2.74536,-1.65633 3.71836,-2.92194 0.973,-1.26562 1.6829,-2.71578 2.64135,-3.99245 0.47923,-0.63833 1.02956,-1.23277 1.69028,-1.68064 0.66071,-0.44787 1.4408,-0.74362 2.239,-0.74362 0.7982,0 1.57829,0.29575 2.239,0.74362 0.66072,0.44787 1.21105,1.04231 1.69028,1.68064 0.95845,1.27667 1.66835,2.72683 2.64135,3.99245 0.973,1.26561 2.23442,2.33337 3.71836,2.92194 1.48395,0.58857 3.1146,0.66135 4.71101,0.66135 h 20"
transform="translate(1.2499871,-12.187492)" />
<path
style="fill:none;fill-rule:evenodd;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 285,497.3622 20,-25"
/>
<path
style="fill:none;fill-rule:evenodd;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 285,472.3622 20,25"
/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -1,123 +0,0 @@
import { library, icon, config, dom } from "@fortawesome/fontawesome-svg-core";
import {
faBook,
faBrowser,
faComment,
faCowbell,
faEllipsis,
faFileAlt,
faFileSignature,
faGlobe,
faGraduationCap,
faHome,
faNotebook,
faPodium,
faPresentation,
faTag,
faScaleBalanced,
faUniversity,
faUser,
faUserAstronaut,
faVideo,
faW,
} from "./pro-duotone-svg-icons/index.mjs";
import {
faDiscord,
faGithub,
faGitlab,
faGolang,
faHtml5,
faOrcid,
faStackOverflow,
faSteam,
faVimeo,
} from "@fortawesome/free-brands-svg-icons";
config.familyDefault = "duotone";
config.styleDefault = "duotone";
const faBullSperm = {
prefix: "fax",
iconName: "bull-sperm",
icon: [
512,
512,
[],
null,
"M96 32c-6.691.363-12.375 4.062-15.375 7.062l-64 64c-12.8 12.8-5.333 26.667 0 32l96 64c10.3 10.301 22.938 4.887 37.563-7.812 8.635 9.735 16.63 18.38 23.125 24.875 8.33 8.33 23.436 16.284 41.75 24.313 18.313 8.028 39.82 16.065 60.812 24.062 20.992 7.997 41.474 15.986 57.625 23.938 16.15 7.95 27.882 16.013 31.5 23.25 6.52 13.038 26.468 44.939 48.875 79.75 22.32 34.674 46.99 72.043 63 96.062.02.029.042.096.064.125.045.064.144.185.189.25l2.812-1.5c-10.685-26.697-28.285-68.26-46.44-106.437-18.155-38.179-36.666-72.792-49.937-86.063-16.566-16.566-56.5-32.375-96.5-48.375s-80.066-32.19-95.5-47.625c-6.45-6.45-14.409-15.11-23.063-24.875 12.926-14.779 18.51-27.552 8.125-37.938-16-26.666-51.2-83.2-64-96-5.6-5.6-11.42-7.345-16.625-7.062zm372.688 436.75c.201.487.488 1.079.687 1.563-.291-.44-.644-.995-.937-1.438.023-.012.06.001.064 0 .002 0 .185-.06.188-.064.002-.001-.011-.038 0-.064z",
],
};
const faPeertube = {
prefix: "fax",
iconName: "peertube",
icon: [
512,
512,
[],
null,
"M55.8 25V255L255 140zM255 140v230l199.2-115zM55.8 255v230L255 370z",
],
};
const faGitea = {
prefix: "fax",
iconName: "gitea",
icon: [
512,
512,
[],
null,
"M92.7 114.5c-5.2 0-11 .4-17.6 1.9c-7 1.4-26.8 5.9-43 21.5C-3.9 169.9 5.3 221 6.4 228.6c1.4 9.4 5.5 35.4 25.4 58c36.6 44.9 115.5 43.8 115.5 43.8s9.7 23.1 24.5 44.4c20 26.5 40.6 47.1 60.6 49.6c50.4 0 151.1-.1 151.1-.1s9.6 .1 22.6-8.2c11.2-6.8 21.2-18.7 21.2-18.7s10.3-11 24.7-36.2c4.4-7.8 8.1-15.3 11.3-22.4c0 0 44.2-93.7 44.2-184.9c-.9-27.6-7.7-32.5-9.3-34.1c-3.3-3.3-7.7-3.2-7.7-3.2s-93.8 5.3-142.3 6.4c-10.6 .2-21.2 .5-31.7 .6l0 93.8c-4.4-2.1-8.9-4.2-13.3-6.3c0-29.1-.1-87.4-.1-87.4c-23.2 .3-71.4-1.8-71.4-1.8s-113.1-5.7-125.4-6.8c-3.9-.2-8.4-.7-13.6-.7zm9.8 38.4s5.7 47.5 12.6 75.4c5.8 23.4 19.8 62.2 19.8 62.2s-20.9-2.5-34.4-7.3c-20.7-6.8-29.5-15-29.5-15s-15.3-10.7-23-31.8c-13.2-35.4-1.1-57-1.1-57s6.7-18 30.8-24c11-3 24.8-2.5 24.8-2.5zm171 53.5c5.9-.4 11.9 2.6 11.9 2.6l18.2 8.8c-3.7 7.5-7.4 15-11.1 22.5c-5.4-.1-10.3 2.8-12.9 7.5c-2.7 5-2.2 11.3 1.5 15.8l-19.7 40.3c-6.6 .1-12.3 4.6-13.8 11s1.6 13 7.3 16c6.2 3.2 14 1.4 18.2-4.3c4.1-5.7 3.4-13.5-1.4-18.5L290.8 269c1.2 .1 3 .2 5-.4c3.3-.7 5.7-2.9 5.7-2.9c3.4 1.4 6.9 3 10.6 4.9c3.8 1.9 7.4 3.9 10.7 5.8c.7 .4 1.4 .9 2.2 1.5c1.3 1 2.7 2.5 3.8 4.4c1.5 4.4-1.5 11.9-1.5 11.9c-1.8 6.1-14.7 32.5-14.7 32.5c-6.5-.2-12.2 4-14.2 10c-2.1 6.5 .9 13.8 7.1 17s13.9 1.4 18-4.2c4-5.4 3.7-13-.9-18.1c1.5-3 3-5.9 4.5-9c4-8.3 10.8-24.3 10.8-24.3c.7-1.4 4.6-8.2 2.2-17c-2-9.1-10.1-13.4-10.1-13.4c-9.8-6.3-23.4-12.2-23.4-12.2s0-3.3-.9-5.7c-.9-2.5-2.2-4.1-3.1-5c3.6-7.4 7.2-14.8 10.8-22.2L373.9 252s10.1 4.6 12.2 13c1.5 5.9-.4 11.2-1.4 13.8c-5 12.3-44 90.5-44 90.5s-4.9 11.6-15.7 12.3c-4.6 .3-8.2-1-8.2-1s-.2-.1-4.2-1.7l-90.3-44s-8.7-4.6-10.2-12.5c-1.8-6.5 2.2-14.5 2.2-14.5l43.4-89.5s3.8-7.8 9.8-10.4c.5-.2 1.8-.8 3.6-1.2c.8-.2 1.6-.3 2.5-.4z",
],
};
const faNextcloud = {
prefix: "fax",
iconName: "nextcloud",
icon: [
733,
512,
[],
null,
"m365.6 114.3c-65 0-120.1 44.1-137.2 103.8c-14.8-31.7-47-53.8-84-53.8c-50.9 0-92.8 41.9-92.8 92.8s41.9 92.8 92.8 92.8c37 0 69.2-22.2 84-53.9c17.1 59.7 72.2 103.8 137.2 103.8c64.5 0 119.3-43.4 136.8-102.4c15.1 31 46.9 52.5 83.4 52.5c50.9 0 92.8-41.9 92.8-92.8s-41.9-92.8-92.8-92.8c-36.5 0-68.3 21.6-83.4 52.5c-17.1-59-71.9-102.4-136.4-102.4zm0 54.5c49.1 0 88.3 39.2 88.3 88.2s-39.2 88.3-88.3 88.3s-88.2-39.2-88.2-88.3s39.2-88.2 88.2-88.2zm-221.2 49.9c21.5 0 38.3 16.8 38.3 38.3s-16.9 38.3-38.3 38.3s-38.3-16.9-38.3-38.3s16.8-38.3 38.3-38.3zm441.4 0c21.5 0 38.3 16.8 38.3 38.3s-16.9 38.3-38.3 38.3s-38.3-16.9-38.3-38.3s16.8-38.3 38.3-38.3z",
],
};
library.add(
faBook,
faBrowser,
faBullSperm,
faComment,
faCowbell,
faDiscord,
faEllipsis,
faFileAlt,
faFileSignature,
faGitea,
faGithub,
faGitlab,
faGlobe,
faGolang,
faGraduationCap,
faHome,
faHtml5,
faNextcloud,
faNotebook,
faOrcid,
faPeertube,
faPodium,
faPresentation,
faTag,
faScaleBalanced,
faStackOverflow,
faSteam,
faUniversity,
faUser,
faUserAstronaut,
faVideo,
faVimeo,
faW
);
dom.i2svg();

View file

@ -1,5 +0,0 @@
$(window).scroll(function (e) {
oVal = $(window).scrollTop() / 170;
$(".blur").css("opacity", oVal);
});
$("#motto").fitText();

View file

@ -1,6 +0,0 @@
var tooltipTriggerList = [].slice.call(
document.querySelectorAll('[data-bs-toggle="tooltip"]')
);
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl);
});

492
assets/styles/millironx.css Normal file
View file

@ -0,0 +1,492 @@
:root {
/*
Color schemes
*/
color-scheme: light dark;
--prickly-pear-yellow: #735f02;
--eclipse-gray: #3a3a3a;
--pumpkin-olive: #59521c;
--manhattan-steel-blue: #224553;
--pine-green: #36581d;
--brown-swiss-calf-brown: #543c21;
--ear-tag-red: #67160e;
--flaming-gorge-blue: #1b3e5a;
--hayyard-green: #355322;
--coeurdalene-purple: #1b245a;
--brown-swiss-cow-brown: #563c1f;
--buffalo-blue: #0b496a;
--saddle-blue: #104165;
--brown-swiss-gray: #eaddca;
--lavender-purple: #d9c1f6;
/*
Fonts
*/
--font-family-antique: Superclarendon, "Bookman Old Style", "URW Bookman",
"URW Bookman L", "Georgia Pro", Georgia, serif;
--font-family-slab-serif: Rockwell, "Rockwell Nova", "Roboto Slab",
"DejaVu Serif", "Sitka Small", serif;
--font-family-system-ui: system-ui, sans-serif;
}
/*
Default element styles (for small screens)
*/
html {
background-color: light-dark(var(--brown-swiss-gray), var(--eclipse-gray));
font-family: var(--font-family-slab-serif);
}
a {
color: light-dark(var(--saddle-blue), var(--lavender-purple));
}
header {
display: flex;
justify-content: space-evenly;
align-items: center;
}
nav {
display: flex;
flex-direction: row;
overflow: scroll;
padding-bottom: 1rem;
position: sticky;
top: 0;
}
nav a {
color: light-dark(var(--brown-swiss-gray), var(--manhattan-steel-blue));
background-color: light-dark(
var(--manhattan-steel-blue),
var(--brown-swiss-gray)
);
border-radius: 0.05rem;
border-style: outset;
border-width: 0.2rem;
border-color: light-dark(
var(--manhattan-steel-blue),
var(--brown-swiss-gray)
);
min-width: 7.5rem;
max-width: 7.5rem;
display: flex;
justify-content: space-between;
align-items: center;
margin: 0.2rem;
text-decoration: none;
padding: 0 0.2rem;
font-family: var(--font-family-system-ui);
}
nav a:active {
border-style: inset;
}
nav a:hover {
background-color: light-dark(
var(--buffalo-blue),
color-mix(in srgb, var(--prickly-pear-yellow), var(--brown-swiss-gray) 75%)
);
}
figure {
border-color: light-dark(var(--eclipse-gray), var(--brown-swiss-gray));
border-width: 1.5pt;
border-style: inset;
padding: 1.25pt;
}
blockquote {
background: linear-gradient(
to right,
light-dark(lightgray, dimgray),
color-mix(
in srgb,
light-dark(var(--brown-swiss-gray), var(--eclipse-gray)),
white 25%
)
);
border-left: 5px solid black;
padding-left: 6px;
}
blockquote small::before {
content: "\2014 \00A0";
}
blockquote small {
font-size: 80%;
}
footer {
background-color: light-dark(lightgray, dimgray);
margin: 0 0 -1em -1em;
width: calc(100% - 1em);
padding: 0.25em 1.25em;
display: flex;
justify-content: space-between;
align-items: center;
}
form {
margin: 1rem;
}
fieldset {
padding: 1rem;
}
input,
select,
textarea {
width: 100%;
margin-bottom: 0.5rem;
}
input:invalid,
select:invalid,
textarea:invalid {
border-bottom-width: 2px;
border-bottom-color: var(--ear-tag-red);
}
/*
Container-type helper classes
*/
.row {
display: flex;
flex-direction: column;
width: 100%;
}
.motto {
position: relative;
display: grid;
place-items: center;
text-align: center;
color: #fff;
font-weight: 600;
text-shadow: 0 0 10px rgba(0, 0, 0, 0.33);
width: 100%;
padding: 0 0 0.5em 0;
border-radius: 0.25rem;
}
.motto::before {
content: " ";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-sizing: border-box;
background-size: cover;
background-position: 50% 50%;
}
.motto-inside {
position: relative;
max-width: 95%;
display: grid;
place-items: center;
text-align: center;
}
.motto .motto-inside h1 {
background-color: rgba(0.33, 0.33, 0.33, 0.33);
-webkit-text-stroke: 0.3px lightgray;
line-height: 1;
}
.card {
background-color: color-mix(
in srgb,
light-dark(var(--brown-swiss-gray), var(--eclipse-gray)),
white 10%
);
border-color: light-dark(
var(--manhattan-steel-blue),
var(--brown-swiss-gray)
);
border-width: 1.5pt;
border-radius: 0.1rem;
border-style: outset;
margin: 1rem 0;
padding: 0.5rem;
padding-top: 0;
position: relative;
display: flex;
flex-direction: column;
}
.card-link {
white-space: nowrap;
display: inline-flex;
gap: 0.375rem;
align-items: center;
text-underline-offset: 0.25em;
backface-visibility: hidden;
margin: 0 0.5em;
}
.category-button {
position: absolute;
top: 1em;
right: 1em;
display: grid;
color: white;
background-color: var(--ear-tag-red);
border-radius: 0.5em;
padding: 1em;
}
.card-title {
margin-right: 3em;
}
.card-title > a {
color: inherit;
}
.img-thumbnail {
width: 100%;
height: auto;
margin-top: 0.5rem;
}
.thumb-icon-wrapper {
margin-top: 1rem;
display: flex;
justify-content: center;
align-content: center;
}
.thumb-icon-badge {
font-size: xx-large;
justify-self: center;
align-self: center;
padding: 1.5rem 3rem;
border-radius: 3rem;
background-color: var(--ear-tag-red);
color: white;
}
.fa-container svg {
overflow: visible;
box-sizing: content-box;
display: inline-block;
height: 1em;
width: 1.25em;
vertical-align: -0.125em;
}
.fa-container svg path {
fill: currentColor;
}
/*
Helper classes
*/
.font-small-caps {
font-variant-caps: small-caps;
}
.img-fluid {
max-width: 100%;
height: auto;
}
.float-left {
float: none;
max-width: 100%;
}
.float-right {
float: none;
max-width: 100%;
}
/*
Application-state helper classes
*/
@media (prefers-color-scheme: light) {
.active {
background-color: var(--coeurdalene-purple);
}
}
@media (prefers-color-scheme: dark) {
.active {
color: color-mix(in srgb, var(--manhattan-steel-blue), white 75%);
background-color: color-mix(in srgb, var(--brown-swiss-gray), black 75%);
border-color: color-mix(in srgb, var(--brown-swiss-gray), black 50%);
}
}
/*
Desktop screen size adjustments
*/
@media (min-width: 768px) {
/*
Default element styles
*/
nav {
flex-direction: column;
padding-right: 1rem;
padding-bottom: 0;
/*
Workaround for Chrome always showing scrollbar even when scrolling not needed
*/
-ms-overflow-style: none;
scrollbar-width: none;
}
/*
Continued Chrome workaround
*/
nav::-webkit-scrollbar {
display: none;
}
main {
width: calc(100% - 10rem);
}
/*
Container-type helper classes
*/
.row {
flex-direction: row;
}
/*
Helper classes
*/
.float-left {
float: left;
max-width: 50%;
}
.float-right {
float: right;
max-width: 50%;
}
.card {
flex-direction: row;
}
.img-thumbnail {
margin-right: 1rem;
}
.card-header {
width: 20vw;
flex-shrink: 0;
}
.card-body {
margin-left: 1rem;
}
.bolder {
font-weight: bolder;
background-color: rgba(0, 0, 0, 0.33);
border-radius: 0.25em;
padding: 0.25em 0.75em 0.5em 0.33em;
}
/*
Clearfix implementation
*/
h1::before,
h2::before,
h3::before,
h4::before,
h5::before,
h6::before {
content: " "; /* Older browser do not support empty content */
visibility: hidden;
display: block;
height: 0;
clear: both;
}
} /* end @media */
@supports (animation-timeline: scroll()) and (animation-range: 0 50vh) {
@keyframes sticky-header {
from {
height: 50vh;
top: 6rem;
}
to {
height: 10vh;
top: -1rem;
}
}
@keyframes blurry-header {
from {
filter: blur(0);
}
to {
filter: blur(2px);
}
}
@keyframes transparent-text-bg {
from {
background-color: rgba(0.33, 0.33, 0.33, 0.33);
}
to {
background-color: rgba(0.33, 0.33, 0.33, 0);
}
}
main,
footer {
position: relative;
top: 55vh;
}
.motto {
position: fixed;
top: 12rem;
animation: sticky-header linear forwards;
animation-timeline: scroll();
animation-range: 0.001vh 50vh;
}
.motto::before {
filter: blur(12px);
top: 2rem;
animation: blurry-header linear forwards;
animation-timeline: scroll();
animation-range: 0.001vh 50vh;
}
.motto-inside h1 {
animation: transparent-text-bg linear forwards;
animation-timeline: scroll();
animation-range: 0.001vh 40vh;
}
@media (min-width: 768px) {
.motto {
width: calc(100% - 8rem);
}
.motto::before {
top: 0;
}
}
} /* end @supports */

View file

@ -48,10 +48,6 @@ $peek-height: 25rem;
background-position: center center;
}
.blur {
opacity: 0;
}
.list-main {
position: relative;
background-color: #fff;

View file

@ -1,152 +0,0 @@
---
title: Home
cardImage: charolette
motto: <small>My name is Thomas Christensen</small><br />I am Milliron X
description: The homepage of Thomas A. Christensen II
layout: _default/list
menu:
main:
params:
prefix: fad
icon: fa-home
weight: -1000
---
<h2>What is a "Milliron X"?</h2>
<h3>
It's a
<a href="https://en.wikipedia.org/wiki/Livestock_branding">cattle brand</a>,
of course! My cattle brand!
</h3>
<p>
The <dfn>milliron</dfn> is the bar with a bend in the middle. It does not
represent anything physical or textual <i>per se</i>, and is therefore a
rather unique element in cattle brands. Millirons are difficult to modify into
another brand, and provide a guarantee of authentic ownership.
</p>
<p>
<dfn>X</dfn> is the letter of mystery and mystique. For nerds, it's the
unknown in any algebra problem. Ranchers and cowboys will associate it with
big names like the "Bar X" and the "Double X." In either case, it lends itself
to a sense of withholding, prestige, and power.
</p>
<p>
Together, these two symbols represent the qualities I strive for in each of my
works: authenticity, originality, power, depth, and prestige.
</p>
<h2>Who am I?</h2>
{{% imgproc me-and-lady Resize "768x" "float-md-end w-md-50 p-3" %}}
Image courtesy [Guy McCutcheon Photography](https://www.guymccutcheon.com/)
{{% /imgproc %}}
<p>I am</p>
<ul>
<li>🧬 A bioinformatician (by profession)</li>
<li>📐 An engineer (by education)</li>
<li>🐂 A rancher (by lifestyle)</li>
<li>🖥️ A techie (self-taught)</li>
<li>🎥 And a filmmaker (at heart)</li>
</ul>
<p>
I've got a soft spot for Brown Swiss dairy cows (just in case you couldn't
tell by the pictures), and am sometimes called "one of those crazy, Wyoming
dairy cow people." I love anything to do with cattle or technology, but
especially anything to do with both of them.
</p>
<p>
<em>
<abbr
title="Born again, fundamentalist, dispensationalist, King James Bible-believing, independent Baptist"
>Christian</abbr
>, American, Convervative, Pro-gun, Heterosexual - any questions?
</em>
</p>
<h2>Where am I?</h2>
{{% imgproc wy-in-ks Resize "768x" "float-md-start w-md-50 p-3" / %}}
<p>
I am a Wyomingite sojurning in Kansas. That ought to lead to some interesting
stories.
</p>
Around the web you can find me at (in order of subjective importance)
<ul class="float-md-end w-md-50">
<li>
<i class="fab fa-fw fa-github"></i> GitHub:
<a href="https://github.com/MillironX">@MillironX</a>
</li>
<li>
<i class="fab fa-fw fa-orcid"></i>
ORCiD:
<a href="https://orcid.org/0000-0003-1219-9320">0000-0003-1219-9320</a>
</li>
<li>
<i class="fab fa-fw fa-gitlab"></i>
GitLab: <a href="https://gitlab.com/MillironX">@MillironX</a>
</li>
<li>
<i class="fab fa-fw fa-vimeo"></i>
Vimeo: <a href="https://vimeo.com/tchristensenii">Thomas Christensen II</a>
</li>
<li>
<i class="fab fa-fw fa-stack-overflow"></i>
Stack Exchange:
<a href="https://stackexchange.com/users/4863541/milliron-x">Milliron X</a>
</li>
<li>
<i class="fab fa-fw fa-steam"></i>
Steam: <a href="https://steamcommunity.com/id/millironx">MillironX</a>
</li>
<li>
<i class="fab fa-fw fa-discord"></i>
Discord:
<a href="https://discord.com/users/484492414837587978">@MillironX</a>
</li>
</ul>
<div style="clear: both;"></div>
<div class="card border-warning m-3">
<div class="card-body">
<p class="card-text">
This list is intended to verify my identity on other sites. Please do
<em>not</em> use it as fodder to try and "follow" me on each of these
platforms. I stand with RMS:
</p>
<figure>
<blockquote class="blockquote">
<p>
Facebook is a bad place for a person to be. When people find us on
Facebook, we lead them away from Facebook and then talk with them
elsewhere.
</p>
</blockquote>
<figcaption class="blockquote-footer">
Richard Stallman in
<cite
><a href="https://stallman.org/facebook-presence.html"
>If you feel your organization needs a 'presence' in Facebook</a
></cite
>
</figcaption>
</figure>
<p class="card-text">
I typically don't respond to inqueries made on these platforms. Please use
<a href="/contact">my contact form</a>, instead.
</p>
</div>
</div>

88
content/_index.md Normal file
View file

@ -0,0 +1,88 @@
---
title: Home
cardImage: charolette
cardImageDescription: She almost looks like she's in her native country again.
motto: <small>My name is Thomas Christensen</small><br />I am Milliron X
description: The homepage of Thomas A. Christensen II
layout: _default/list
menu:
main:
params:
icon: home
weight: -1000
---
## What is a "Milliron X"?
It's a [cattle brand](https://en.wikipedia.org/wiki/Livestock_branding), of
course! My cattle brand!
The <dfn>milliron</dfn> is the bar with a bend in the middle. It does not
represent anything physical or textual _per se_, and is therefore a rather
unique element in cattle brands. Millirons are difficult to modify into another
brand, and provide a guarantee of authentic ownership.
<dfn>X</dfn> is the letter of mystery and mystique. For nerds, it's the unknown
in any algebra problem. Ranchers and cowboys will associate it with big names
like the "Bar X" and the "Double X." In either case, it lends itself to a sense
of withholding, prestige, and power.
Together, these two symbols represent the qualities I strive for in each of my
works: authenticity, originality, power, depth, and prestige.
## Who am I?
{{< imgproc me-and-lady Resize "768x" "float-right" >}} Image courtesy
[Guy McCutcheon Photography](https://www.guymccutcheon.com/) {{< /imgproc >}}
I am
- 🧬 A bioinformatician (by profession)
- 📐 An engineer (by education)
- 🐂 A rancher (by lifestyle)
- 🖥️ A techie (self-taught)
- 🎥 And a filmmaker (at heart)
I've got a soft spot for Brown Swiss dairy cows (just in case you couldn't tell
by the pictures), and am sometimes called "one of those crazy, Wyoming dairy cow
people." I love anything to do with cattle or technology, but especially
anything to do with both of them.
_<abbr
title="Born again, fundamentalist, dispensationalist, King James Bible-believing, independent Baptist"
>Christian</abbr
>, American, Convervative, Pro-gun, Heterosexual - any questions?_
## Where am I?
{{< imgproc wy-in-ks Resize "768x" "float-left" / >}}
I am a Wyomingite sojurning in Kansas. That ought to lead to some interesting
stories.
Around the web you can find me at (in order of subjective importance)
- {{< fa github >}} GitHub: [@MillironX](https://github.com/MillironX)
- {{< fa orcid >}} ORDiD:
[0000-0003-1219-9320](https://orcid.org/0000-0003-1219-9320)
- {{< fa gitlab >}} GitLab: [@MillironX](https://gitlab.com/MillironX)
- {{< fa vimeo >}} Vimeo:
[Thomas Christensen II](https://vimeo.com/tchristensenii)
- {{< fa stack-overflow >}} StackExchange:
[Milliron X](https://stackexchange.com/users/4863541/milliron-x)
- {{< fa steam >}} Steam: [MillironX](https://steamcommunity.com/id/millironx)
This list is intended to verify my identity on other sites. Please do _not_ use
it as fodder to try and "follow" me on each of these platforms. I stand with
RMS:
{{< blockquote "Richard Stallman _in_ [If you feel your organization needs a 'presence' in Facebook](https://stallman.org/facebook-presence.html)" >}}
Facebook is a bad place for a person to be. When people find us on Facebook, we
lead them away from Facebook and then talk with them elsewhere.
{{< /blockquote >}}
I typically don't respond to inquiries made on these platforms. Please use
[my contact form](/contact), instead.
</div>
</div>

View file

@ -2,15 +2,16 @@
title: Academic Publications and Presentations
motto: Publications and Presentations
cardImage: library
decription: A list of my academic publications
cardImageDescription:
Personally, I preferred the Owen Library in Pullman seven miles west
description: A list of my academic publications
menu:
main:
name: Academia
params:
prefix: fad
icon: fa-university
icon: university
weight: 20
fa-thumbnail: fad fa-university
fa-thumbnail: university
---
> I have spent too long in school and not enough time in the middle of nowhere

View file

@ -1,76 +0,0 @@
---
title: Artificial Insemination
cardImage: Ai-calf
motto: Artificial Insemination
description:
Advertising page to try and sell my artificial insemination services
date: 2022-12-31
menu:
main:
params:
prefix: fax
icon: fa-bull-sperm
weight: 30
fa-thumbnail: fax fa-bull-sperm
---
<section itemscope itemtype="http://schema.org/Product">
<h2 itemprop="name">Cattle artificial insemination services</h2>
<p>
I am licensed in the Great State of Wyoming as a food animal artificial
insemination technician. I only offer AI services for cows, even though
legally I <em>could</em> AI cows, goats, and sheep. My services are most
readily available in the southeast Wyoming area or the Flint Hills of Kansas
depending on the time of year.
</p>
<h3>Rate schedule</h3>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<table
itemprop="priceSpecification"
itemscope
itemtype="http://schema.org/CompoundPriceSpecification"
class="table table-responsive table-striped"
>
<meta itemprop="price" content="25.00" />
<meta itemprop="priceCurrency" content="USD" />
<tr
itemprop="priceComponent"
itemscope
itemtype="http://schema.org/UnitPriceSpecification"
>
<th>Insemination</th>
<td><small>(per cow)</small></td>
<td>
<span itemprop="priceCurrency" content="USD">$</span
><span itemprop="price">25.00</span>
</td>
<td><small>5 cow minimum charge</small></td>
</tr>
<tr
itemprop="priceComponent"
itemscope
itemtype="http://schema.org/UnitPriceSpecification"
>
<th>Milage</th>
<td><small>(per mile, one-way)</small></td>
<td>
<span itemprop="priceCurrency" content="USD">$</span
><span itemprop="price">1.05</span>
</td>
<td><small>2.5 mile minimum charge</small></td>
</tr>
</table>
</div>
<p>
I will provide all equipment <strong>except</strong> semen storage (liquid
nitrogen tank) and cattle handling (i.e., squeeze chute).
</p>
<p>
To get started, <a href="/contact">contact me</a>, and select the "I'm
hiring for artificial insemination" option.
</p>
</section>

View file

@ -1,6 +1,9 @@
---
title: Contact Me
cardImage: venice-mailbox
cardImageDescription:
This mailbox was used for reporting public health offenses in Venice. It
survived the wrath of Napoleon because it didn't look enough like a lion.
motto: Contact Me
description: Contact form to get ahold of me
date: 2023-07-01
@ -8,100 +11,63 @@ menu:
main:
name: Contact
params:
prefix: fad
icon: fa-file-signature
icon: file-signature
weight: 1
fa-thumbnail: fad fa-file-signature
fa-thumbnail: file-signature
validation: true
---
<form
class="form-horizontal"
action="https://usebasin.com/f/787df7bfd22e"
method="post"
>
<form action="https://usebasin.com/f/787df7bfd22e" method="post">
<fieldset>
<legend>Contact Me</legend>
<input type="hidden" name="_gotcha" />
<div class="form-group">
<label for="name" class="col-lg-2 control-label">Name</label>
<div class="col-lg-10">
<input
type="text"
class="form-control"
id="name"
name="name"
placeholder="Jay Lush"
required
/>
</div>
</div>
<div class="form-group">
<label for="email" class="col-lg-2 control-label">Email</label>
<div class="col-lg-10">
<input
type="email"
class="form-control"
id="email"
name="email"
placeholder="jlush@iastate.edu"
required
/>
</div>
</div>
<div class="form-group">
<label for="phone" class="col-lg-2 control-label">Phone number</label>
<div class="col-lg-10">
<input
type="tel"
class="form-control"
id="phone"
name="phone"
placeholder="(515) 294-2160"
/>
</div>
</div>
<div class="form-group">
<label for="category" class="col-lg-2 control-label">Category</label>
<div class="col-lg-10">
<select class="form-select" id="category">
<option>I'm hiring for artificial insemination</option>
<option>Something else</option>
</select>
</div>
</div>
<div class="form-group">
<label for="subject" class="col-lg-2 control-label">Subject</label>
<div class="col-lg-10">
<input
type="text"
class="form-control"
id="subject"
name="subject"
placeholder="Beef genetics"
required
/>
</div>
</div>
<div class="form-group">
<label for="message" class="col-lg-2 control-label">Message</label>
<div class="col-lg-10">
<textarea
rows="5"
class="form-control font-sans"
id="message"
name="body"
required
style="min-height: 72pt;"
></textarea>
</div>
</div>
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<button type="reset" class="btn btn-default">Cancel</button>
<button type="submit" class="btn btn-primary pageclip-form__submit">
<span>Submit</span>
</button>
</div>
</div>
<label for="name">Name</label>
<input
type="text"
class="form-control"
id="name"
name="name"
placeholder="Jay Lush"
required
/>
<label for="email">Email</label>
<input
type="email"
class="form-control"
id="email"
name="email"
placeholder="jlush@iastate.edu"
required
/>
<label for="phone">Phone number</label>
<input
type="tel"
class="form-control"
id="phone"
name="phone"
placeholder="(515) 294-2160"
/>
<label for="subject">Subject</label>
<input
type="text"
class="form-control"
id="subject"
name="subject"
placeholder="Beef genetics"
required
/>
<label for="message">Message</label>
<textarea
rows="5"
class="form-control font-sans"
id="message"
name="body"
required
style="min-height: 72pt;"
></textarea>
<button type="reset" class="btn btn-default">Cancel</button>
<button type="submit" class="btn btn-primary pageclip-form__submit">
<span>Submit</span>
</button>
</fieldset>
</form>

View file

@ -1,14 +1,16 @@
---
title: Videos
cardImage: camera
cardImageDescription:
Isn't it a shame that the company that brought photography to the masses is
basically out of business now?
motto: Videography Portfolio
description: Showcase of my own videos
menu:
main:
params:
prefix: fad
icon: fa-video
fa-thumbnail: fad fa-video
icon: video
fa-thumbnail: video
---
> ### The culmination of all art forms is that of film.

View file

@ -1,15 +1,16 @@
---
title: My Websites
cardImage: eclipse
cardImageDescription:
Did you know that the population of Wyoming quadrupled for one day in 2017?
motto: Websites
description: List of websites that I have worked on
menu:
main:
name: Websites
params:
prefix: fad
icon: fa-browser
fa-thumbnail: fad fa-browser
icon: browser
fa-thumbnail: browser
---
I do occasionally build websites for myself and other people. Here is a list of

View file

@ -8,8 +8,8 @@
<meta name="description" content="{{ . }}" />
{{ end }}
<title>{{ .Title }} - {{ .Site.Title }}</title>
{{ $twbssass := resources.Get "styles/mix-twbs.scss" }}
{{ $twbssass = $twbssass | resources.ToCSS | resources.PostCSS | minify | resources.PostProcess }}
{{ $twbssass := resources.Get "styles/millironx.css" }}
{{ $twbssass = $twbssass | resources.PostCSS | minify | resources.PostProcess }}
<link href="{{ $twbssass.RelPermalink }}" rel="stylesheet" />
</head>
@ -17,109 +17,41 @@
<body>
<div class="container-fluid">
<div class="row wrapper min-vh-100 flex-column flex-sm-row">
{{ partial "sidebar" . }}
<main class="col bg-faded py-3 gx-0">
<div class="container">
<header class="d-none d-sm-none d-md-block text-center">
<h1 class="font-serif font-small-caps">
<object data="{{ $millironx.RelPermalink }}">
<img src="{{ $millironx.RelPermalink }}" alt="Milliron X" />
</object>
&emsp; Milliron X
</h1>
</header>
</div>
{{ block "main" . }}
<section class="container-fluid list-main">
<div class="container px-5">
{{ .Content }}
</div>
</section>
{{ end }}
<footer class="fixed-bottom">
<div class="container-fluid footer-contents">
<div class="row justify-content-between">
<div class="col-3 align-self-center">
{{ $brandedbull := resources.Get "graphics/brandedbull.svg" }}
{{ $brandedbullsmall := $brandedbull | resources.Minify }}
<img
src="{{ $brandedbullsmall.RelPermalink }}"
height="95rem"
/>
</div>
<div class="col-3 align-self-center">
<div
class="btn-group float-end"
role="group"
aria-label="Other Milliron X sites"
>
<a
class="btn btn-outline-primary btn-sm"
href="https://video.millironx.com/"
data-bs-toggle="tooltip"
title="Video (Peertube)"
>
<i class="fax fa-peertube fa-fw"></i>
</a>
<a
class="btn btn-outline-primary btn-sm"
href="https://code.millironx.com/"
data-bs-toggle="tooltip"
title="Code (Gitea)"
>
<i class="fax fa-gitea fa-fw"></i>
</a>
<a
class="btn btn-outline-primary btn-sm"
href="https://nextcloud.millironx.com/"
data-bs-toggle="tooltip"
title="Files (Nextcloud)"
>
<i class="fax fa-nextcloud fa-fw"></i>
</a>
<button
type="button"
class="btn btn-outline-primary btn-sm"
data-bs-toggle="modal"
data-bs-target="#extras-modal"
title="Extras"
>
<i class="fad fa-cowbell fa-fw"></i>
</button>
</div>
</div>
</div>
</div>
</footer>
</main>
</div>
<header>
<object data="{{ $millironx.RelPermalink }}">
<img src="{{ $millironx.RelPermalink }}" alt="Milliron X" />
</object>
<h1 class="font-small-caps">Milliron X</h1>
</header>
<div class="row">
{{ partial "sidebar" . }}
<main>
{{ block "main" . }}
{{ .Content }}
{{ end }}
</main>
</div>
<footer>
{{ $brandedbull := resources.Get "graphics/brandedbull.svg" }}
{{ $brandedbullsmall := $brandedbull | resources.Minify }}
<img src="{{ $brandedbullsmall.RelPermalink }}" height="95rem" />
<!-- Font Awesome -->
{{ $fontawesome := resources.Get "scripts/fa-icons.js" | js.Build "js/fontawesome.js" | minify }}
<script src="{{ $fontawesome.RelPermalink }}"></script>
<p>
&copy; {{ .Date | time.Format "2006" }} Thomas A. Christensen II
<br />
Licensed
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/"
>CC-BY 4.0</a
>
<br />
Built with <a href="https://gohugo.io">Hugo</a> v{{ hugo.Version }}
</p>
</footer>
<!-- JQuery -->
{{ $jquery := resources.Get "scripts/jquery/jquery.min.js" }}
{{ $jqmaskjs := resources.Get "scripts/jquery-mask-plugin/jquery.mask.min.js" }}
{{ $fittextjs := resources.Get "scripts/fittext/jquery.fittext.js" | minify }}
{{ $scrolljs := resources.Get "scripts/scroll-effect.js" | minify }}
{{ $maskjs := resources.Get "scripts/phone-masking.js" | minify }}
{{ $jquerybundle := slice $jquery $jqmaskjs $fittextjs $scrolljs $maskjs | resources.Concat "js/jquery-bundle.js" }}
<script src="{{ $jquerybundle.RelPermalink }}"></script>
{{ with .Params.validation }}
{{- partial "form-validation.html" -}}
{{ end }}
<!-- Bootstrap -->
{{ $popperjs := resources.Get "scripts/popper/popper.min.js" }}
{{ $twbsjs := resources.Get "scripts/bootstrap/bootstrap.min.js" }}
{{ $ttjs := resources.Get "scripts/tooltip-enable.js" | minify }}
{{ $bootstrapbundle := slice $popperjs $twbsjs $ttjs | resources.Concat "js/bootstrap-bundle.js" }}
<script src="{{ $bootstrapbundle.RelPermalink }}"></script>
<!-- Masonry -->
{{ $masonryjs := resources.Get "scripts/masonry/masonry.pkgd.min.js" }}
<script src="{{ $masonryjs.RelPermalink }}"></script>
<!-- GoatCounter -->
<script
@ -127,7 +59,5 @@
async
src="//gc.zgo.at/count.js"
></script>
{{ partial "extras-modal" . }}
</body>
</html>

View file

@ -1,64 +1,91 @@
{{ define "main" }}
{{ partial "scrolling-image-header" . }}
<section class="container-fluid list-main">
<div class="container px-5">
<section>
<div>
{{ block "content" . }}
{{ .Content }}
{{ end }}
</div>
<div class="row" data-masonry='{"percentPosition": true}'>
{{ range .Pages }}
<div class="col-xl-6 mb-4">
<div class="card">
{{ partial "category-button" . }}
{{ range .Pages }}
<div class="card">
{{ partial "category-button" . }}
<div class="card-body">
{{ partial "list-item-thumbnail" . }}
{{/* Prefer full-text links over local ones */}}
{{ $link := default .RelPermalink (index .Params "link") }}
<a href="{{ $link }}"><h3 class="card-title">{{ .Title }}</h3></a>
<div>
{{ dateFormat "02 Jan 2006" .Date }}
</div>
{{ range (.GetTerms "people") }}
<a
href="{{ .RelPermalink }}"
class="icon-link card-link {{ if eq .LinkTitle "Thomas A. Christensen II" }}
fw-bolder
{{ end }}"
><i class="fad fa-user"></i> {{ .LinkTitle }}</a
>
{{ end }}
<p class="card-text">
{{ .Summary }}
<strong
><small
><a href="{{ $link }}">Read&nbsp;more &raquo;</a></small
></strong
>
</p>
</div>
<div class="card-footer">
{{ range (.GetTerms "tags") }}
<a href="{{ .RelPermalink }}" class="icon-link card-link"
><i class="fad fa-tag"></i> {{ .LinkTitle }}</a
>
{{ end }}
{{ with .Param "fa-thumbnail" }}
<div class="card-header">
<div class="thumb-icon-wrapper">
<span class="thumb-icon-badge">
{{- partial "fa.html" . -}}
</span>
</div>
</div>
<!-- </card> -->
{{ end }}
{{/* Thumbnail images should be stored as 'thumbnail'.* in the page bundle, but
historically they might have been referenced as 'thumbnail' in the front
matter, or (even more historically) as 'cardImage'. Use scratch to
normalize all these different systems.
*/}}
{{ $bundleGlob := "thumbnail.*" }}
{{ $frontThumbGlob := print "images/" (.Params.thumbnail) ".*" }}
{{ $frontCardGlob := print "images/" (.Params.cardImage) ".jpg" }}
{{ $allThumbnailGlob := print "{" $frontThumbGlob "," $frontCardGlob "," $bundleGlob "}" }}
{{ with .Resources.GetMatch $allThumbnailGlob }}
{{ $thumbnail := . }}
{{ $thumbnailResized := $thumbnail.Resize "600x" }}
<div class="card-header">
<img
class="img-thumbnail"
src="{{ $thumbnailResized.RelPermalink }}"
alt="Thumbnail of {{ .Title }}"
/>
</div>
{{ end }}
<div class="card-body">
{{/* Prefer full-text links over local ones */}}
<div class="card-title">
{{ $link := default .RelPermalink (index .Params "link") }}
<a href="{{ $link }}"><h3>{{ .Title }}</h3></a>
</div>
<div>
{{ dateFormat "02 Jan 2006" .Date }}
</div>
{{ range (.GetTerms "people") }}
<a
href="{{ .RelPermalink }}"
class="card-link {{ if eq .LinkTitle "Thomas A. Christensen II" }}
bolder
{{ end }}"
>{{- partial "fa.html" "user" }} {{ .LinkTitle }}</a
>
{{ end }}
<p class="card-text">
{{ .Summary }}
<strong
><small
><a href="{{ $link }}">Read&nbsp;more&nbsp;&raquo;</a></small
></strong
>
</p>
<div class="card-footer">
{{ range (.GetTerms "tags") }}
<a href="{{ .RelPermalink }}" class="icon-link card-link"
>{{- partial "fa.html" "tag" }} {{ .LinkTitle }}</a
>
{{ end }}
</div>
</div>
<!-- </col> -->
{{ end }}
</div>
<!-- </row> -->
</div>
<!-- </card> -->
{{ end }}
</section>
{{ end }}

View file

@ -1,27 +1,27 @@
{{ define "main" }}
<section class="container-fluid list-main">
<div class="container px-5">
<h5>
{{ .Params.journal }}{{ with .Params.location }}: {{ . }}{{ end }}
</h5>
<h2>{{ .Title }}</h2>
<h3>
<small>
<ul class="list-inline">
{{ range .Params.authors }}
<li class="list-inline-item">{{ . }}</li>
{{ end }}
</ul>
</small>
</h3>
<h4>{{ .Date | time.Format "January 2, 2006" }}</h4>
{{ .Content }}
{{ with .Params.link }}
<div class="card border-dark m-3 p-3">
<a href="{{ . }}">{{ . }}</a>
<iframe src="{{ . }}" style="width: 100%; height: 75vh"></iframe>
</div>
{{ end }}
</div>
<section>
<h5>
{{ .Params.journal }}{{ with .Params.location }}: {{ . }}{{ end }}
</h5>
<h2>{{ .Title }}</h2>
<h3>
<small>
{{ range (.GetTerms "people") }}
<a
href="{{ .RelPermalink }}"
class="card-link {{ if eq .LinkTitle "Thomas A. Christensen II" }}
bolder
{{ end }}"
>{{- partial "fa.html" "user" }} {{ .LinkTitle }}</a
>
{{ end }}
</small>
</h3>
<h4>{{ .Date | time.Format "January 2, 2006" }}</h4>
{{ .Content }}
{{ with .Params.link }}
<a href="{{ . }}">{{ . }}</a>
<iframe src="{{ . }}" style="width: 100%; height: 75vh"></iframe>
{{ end }}
</section>
{{ end }}

View file

@ -1,74 +0,0 @@
<div class="d-flex py-2">
<div class="px-2">
{{ if eq .Params.medium "paper" }}
{{ .Scratch.Set "fa" "fa-book" }}
{{ else if eq .Params.medium "poster" }}
{{ .Scratch.Set "fa" "fa-presentation" }}
{{ else if eq .Params.medium "thesis" }}
{{ .Scratch.Set "fa" "fa-graduation-cap" }}
{{ else if eq .Params.medium "presentation" }}
{{ .Scratch.Set "fa" "fa-podium" }}
{{ else }}
{{ .Scratch.Set "fa" "fa-notebook" }}
{{ end }}
{{ $fa := (.Scratch.Get "fa") }}
<h3>
<i
class="fad fa-fw {{ $fa }}"
data-bs-toggle="tooltip"
title="{{ humanize .Params.medium }}"
></i>
</h3>
{{ with .Params.link }}
<a
class="btn btn-secondary dogear"
href="{{ . }}"
data-bs-toggle="tooltip"
title="Full text"
><i class="fad fa-file-alt"></i
></a>
{{ end }}
</div>
<div class="flex-grow-1 px-2">
<h3>
<a href="{{ .RelPermalink }}">
{{ .Title }}
</a>
</h3>
{{ $authlist := .Params.authors }}
{{ range $idx, $auth := .Params.authors }}
{{ if and (eq $idx (sub (len $authlist) 1)) (gt 1 (len $authlist)) }}
and
{{ end }}
{{- if eq $auth "Thomas A. Christensen II" }}
<strong>{{ $auth }}</strong>
{{- else }}
{{ $auth }}
{{- end }}
{{- if lt $idx (sub (len $authlist) 1) -}}
,
{{- end }}
{{ end }}
<br />
{{ .Params.journal }}:
{{ .Params.location }}
({{ dateFormat "02 Jan 2006" .Params.date }})
<br />
{{ with .Params.keywords }}
Keywords:
{{ range . }}
<a href="#">{{ . }}</a>
{{ end }}
<br />
{{ end }}
{{ if eq (.Scratch.Get "showAbstract") true }}
<details>
<summary>Abstract</summary>
{{ .Content }}
</details>
{{ end }}
</div>
</div>

View file

@ -1,27 +1,24 @@
<div class="category-button">
{{ with .Param "categories" }}
{{ range $i, $category := . }}
{{ if eq $i 0 }}
{{ with $.Site.GetPage (printf "/%s/%s" "categories" $category) }}
{{ $iconDictionary := dict
"video" "fad fa-video"
"paper" "fad fa-book"
"poster" "fad fa-presentation"
"thesis" "fad fa-graduation-cap"
"presentation" "fad fa-podium"
"web" "fad fa-globe"
}}
{{ $categoryIcon := index $iconDictionary $category }}
<a
href="{{ .RelPermalink }}"
class="btn btn-dark btn-sm"
data-bs-toggle="tooltip"
title="{{ humanize $category }}"
>
<i class="{{ $categoryIcon | default "fad fa-tag" }} fa-fw"></i>
</a>
{{ end }}
{{ with .Param "categories" }}
{{ range $i, $category := . }}
{{ if eq $i 0 }}
{{ with $.Site.GetPage (printf "/%s/%s" "categories" $category) }}
{{ $iconDictionary := dict
"video" "video"
"paper" "book"
"poster" "presentation"
"thesis" "graduation-cap"
"presentation" "podium"
"web" "globe"
}}
{{ $categoryIcon := index $iconDictionary $category }}
<a
class="category-button"
href="{{ .RelPermalink }}"
title="{{ humanize $category }}"
>
{{- partial "fa.html" $categoryIcon -}}
</a>
{{ end }}
{{ end }}
{{ end }}
</div>
{{ end }}

View file

@ -1,247 +0,0 @@
<div
class="modal fade"
id="extras-modal"
tabindex="-1"
aria-labelledby="extras-modal-label"
aria-hidden="true"
>
<div class="modal-dialog modal-dialog-scrollable modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5">Bonus content</h1>
<button
type="button"
class="btn-close"
data-bs-dismiss="modal"
aria-label="Close"
></button>
</div>
<div class="modal-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<a
class="nav-link active"
data-bs-toggle="tab"
href="#oss"
aria-selected="true"
role="tab"
>Open Source</a
>
</li>
<li class="nav-item" role="presentation">
<a class="nav-link" data-bs-toggle="tab" href="#privacy" role="tab">
Privacy</a
>
</li>
<li class="nav-item" role="presentation">
<a class="nav-link" data-bs-toggle="tab" href="#debug" role="tab">
Debug
</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade show active p-3" id="oss" role="tabpanel">
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/">
<img
class="img img-responsive"
alt="Creative Commons License"
style="border-width:0; display: block; margin: 0 auto"
src="https://i.creativecommons.org/l/by/4.0/88x31.png"
/>
</a>
<p>
&OpenCurlyDoubleQuote;{{ .Title }}&CloseCurlyDoubleQuote; by
Thomas A. Christensen II is licensed under a
<a
rel="license"
href="http://creativecommons.org/licenses/by/4.0/"
>Creative Commons Attribution 4.0 International License</a
>.
</p>
<p>
All images, unless otherwise noted, are licensed under a
<a
rel="license"
href="http://creativecommons.org/licenses/by-nd/4.0/"
>Creative Commons Attribution-NoDerivatives 4.0 International
License</a
>, instead.
</p>
<hr />
<p>
This site is open source!
<br />
<a
class="btn btn-dark"
href="https://code.millironx.com/millironx/millironx.github.io"
>
<i class="fax fa-gitea"></i>&emsp;Get the code! &raquo;
</a>
<a
class="btn btn-dark"
href="https://code.millironx.com/millironx/millironx.github.io/src/branch/master/LICENSE"
>
<i class="fad fa-scale-balanced"></i>&emsp;MIT Licensed &raquo;
</a>
</p>
<p>
In addition, I used a number of excellent open-source libraries
and toolkits in building it. I dedicate this space to
acknowledging them all.
</p>
<table class="table table-condensed table-responsive table-striped">
<tr>
<th>Project name</th>
<th>URL</th>
<th>License</th>
</tr>
<tr>
<th>Hugo</th>
<td><a href="https://gohugo.io/">gohugo.io</a></td>
<td>
<a href="https://github.com/gohugoio/hugo/blob/master/LICENSE"
>Apache License v2</a
>
</td>
</tr>
<tr>
<th>Node.js</th>
<td><a href="https://nodejs.org/">nodejs.org</a></td>
<td>
<a href="https://github.com/nodejs/node/blob/HEAD/LICENSE"
>MIT License</a
>
</td>
</tr>
<tr>
<th>Bootstrap 5</th>
<td>
<a href="https://getbootstrap.com/">getbootstrap.com</a>
</td>
<td>
<a href="https://github.com/twbs/bootstrap/blob/main/LICENSE"
>MIT License</a
>
</td>
</tr>
<tr>
<th>Bootswatch Lux 5</th>
<td>
<a href="https://bootswatch.com/lux/">bootswatch.com</a>
</td>
<td>
<a
href="https://github.com/thomaspark/bootswatch/blob/v5/LICENSE"
>MIT License</a
>
</td>
</tr>
<tr>
<th>JQuery 3</th>
<td><a href="https://jquery.com/">jquery.com</a></td>
<td><a href="https://jquery.org/license">MIT License</a></td>
</tr>
<tr>
<th>Font Awesome 6</th>
<td><a href="https://fontawesome.com/">fontawesome.com</a></td>
<td>
<a href="https://fontawesome.com/license/"
>Font Awesome Pro License</a
>
</td>
</tr>
<tr>
<th>Get S*** Done Toolkit</th>
<td>
<a
href="https://www.creative-tim.com/product/get-shit-done-kit"
>creative-tim.com</a
>
</td>
<td>
<a
href="https://github.com/timcreative/freebies/blob/master/LICENSE.md"
>MIT License</a
>
</td>
</tr>
<tr>
<th>FitText</th>
<td><a href="http://fittextjs.com/">fittextjs.com</a></td>
<td><a href="http://www.wtfpl.net/">WTFPL License</a></td>
</tr>
<tr>
<th>jQuery Mask Plugin</th>
<td>
<a href="https://igorescobar.github.io/jQuery-Mask-Plugin/"
>igorescobar.github.io</a
>
</td>
<td>
<a
href="https://github.com/igorescobar/jQuery-Mask-Plugin/blob/master/LICENSE"
>MIT License</a
>
</td>
</tr>
<tr>
<th>PostCSS</th>
<td><a href="https://postcss.org/">postcss.com</a></td>
<td>
<a href="https://github.com/postcss/postcss/blob/main/LICENSE"
>MIT License</a
>
</td>
</tr>
<tr>
<th>PurgeCSS</th>
<td><a href="https://purgecss.com/">purgecss.com</a></td>
<td>
<a
href="https://github.com/FullHuman/purgecss/blob/main/LICENSE"
>MIT License</a
>
</td>
</tr>
</table>
</div>
<div class="tab-pane fade p-3" id="privacy" role="tabpanel">
<p>
I take privacy very seriously. That said, I do need
<i>some</i> info on how many people visit. As a compromise, this
site uses <a href="https://goatcounter.com">GoatCounter</a>, a
privacy-friendly (as much as possible) web analytics library.
</p>
<p>
You may view all analytics gathered at
<a href="https://millironx.goatcounter.com/"
>millironx.goatcounter.com</a
>.
</p>
<p>
If you do not wish to participate in my site's analytics, you may
install a content-blocking extension into your browser and block
the domain
<code>gc.zgo.at</code>. I recommend either
<a href="https://github.com/gorhill/uBlock">uBlock Origin</a>
(instructions
<a
href="https://github.com/gorhill/uBlock/wiki/Dashboard:-My-filters"
>here</a
>) or <a href="https://noscript.net">NoScript</a> for this
purpose.
</p>
</div>
<div class="tab-pane fade p-3" id="debug" role="tabpanel">
<dl>
{{ range $key, $val := .Params }}
<dt>{{ $key }}</dt>
<dd>{{ $val }}</dd>
{{ end }}
</dl>
</div>
</div>
</div>
</div>
</div>
</div>

4
layouts/partials/fa.html Normal file
View file

@ -0,0 +1,4 @@
{{- $fontAwesomePath := print "assets/graphics/fa/" . ".svg" -}}
<span class="fa-container fa-fw">
{{- readFile $fontAwesomePath | safeHTML -}}
</span>

View file

@ -0,0 +1,6 @@
<!-- JQuery -->
{{ $jquery := resources.Get "scripts/jquery/jquery.min.js" }}
{{ $jqmaskjs := resources.Get "scripts/jquery-mask-plugin/jquery.mask.min.js" }}
{{ $maskjs := resources.Get "scripts/phone-masking.js" | minify }}
{{ $jquerybundle := slice $jquery $jqmaskjs $maskjs | resources.Concat "js/jquery-bundle.js" }}
<script src="{{ $jquerybundle.RelPermalink }}"></script>

View file

@ -1,26 +0,0 @@
{{ with .Param "fa-thumbnail" }}
<div class="thumb-icon-wrapper mb-3">
<span class="badge thumb-icon-badge rounded-pill bg-primary py-4 px-5">
<i class="fa-fw {{ . }}"></i>
</span>
</div>
{{ end }}
{{/* Thumbnail images should be stored as 'thumbnail'.* in the page bundle, but
historically they might have been referenced as 'thumbnail' in the front
matter, or (even more historically) as 'cardImage'. Use scratch to
normalize all these different systems.
*/}}
{{ $bundleGlob := "thumbnail.*" }}
{{ $frontThumbGlob := print "images/" (.Params.thumbnail) ".*" }}
{{ $frontCardGlob := print "images/" (.Params.cardImage) ".jpg" }}
{{ $allThumbnailGlob := print "{" $frontThumbGlob "," $frontCardGlob "," $bundleGlob "}" }}
{{ with .Resources.GetMatch $allThumbnailGlob }}
{{ $thumbnail := . }}
{{ $thumbnailResized := $thumbnail.Resize "600x" }}
<img
class="img img-thumbnail float-start me-3 md-max-width-33"
src="{{ $thumbnailResized.RelPermalink }}"
alt="Thumbnail of {{ .Title }}"
/>
{{ end }}

View file

@ -1,20 +1,18 @@
{{ $millironx := resources.Get "graphics/millironx.svg" }}
<div class="blurred-container">
<div class="motto">
{{ $imgsrc := print "images/" (.Param "cardImage") ".jpg" }}
{{ $mainimg := resources.Get $imgsrc }}
{{ $cardImageDescription := .Param "cardImageDescription" }}
{{ $croppedImage := $mainimg.Fill "6000x2000 center" }}
<style>
.motto::before {
background-image: url('{{ $croppedImage.RelPermalink }}');
}
</style>
<div class="motto" title="{{ $cardImageDescription }}">
<div class="motto-inside">
<h1 id="motto">
{{ default .Title (safeHTML (.Param "motto")) }}
</h1>
</div>
{{ $imgsrc := print "images/" (.Param "cardImage") ".jpg" }}
{{ $mainimg := resources.Get $imgsrc }}
{{ $blurimg := $mainimg.Filter (images.GaussianBlur 100) }}
<div
class="img-src"
style="background-image: url('{{ $mainimg.RelPermalink }}');"
></div>
<div
class="img-src blur"
style="background-image: url('{{ $blurimg.RelPermalink }}');"
></div>
</div>
<br />

View file

@ -1,48 +1,15 @@
{{ $millironx := resources.Get "graphics/millironx.svg" }}
{{ $currentPage := . }}
<aside class="col-12 col-md-3 p-0 bg-dark flex-shrink-1">
<nav
class="navbar navbar-expand-md navbar-dark bg-dark align-items-start flex-md-column flex-row"
>
<div class="container-fluid">
<a class="navbar-brand d-block d-md-none" href="#">
<object
class="d-inline-block align-text-top"
width="80"
height="24"
style="filter: invert(100%)"
data="{{ $millironx.RelPermalink }}"
>
<img src="{{ $millironx.RelPermalink }}" alt="Milliron X" />
</object>
&ensp;
<span class="font-small-caps font-serif">Milliron X</span>
</a>
<aside>
<nav>
{{ range .Site.Menus.main }}
<a
href
class="navbar-toggler"
data-bs-toggle="collapse"
data-bs-target=".sidebar"
class="{{ if $currentPage.IsMenuCurrent "main" . }}active{{ end }}"
href="{{ .URL }}"
>
<span class="navbar-toggler-icon"></span>
{{- partial "fa.html" .Params.icon -}}
{{ .Name }}
</a>
<div class="collapse navbar-collapse sidebar">
<ul class="flex-column navbar-nav w-100 justify-content-between">
{{ range .Site.Menus.main }}
<li class="nav-item">
<a
class="nav-link pl-0 {{ if $currentPage.IsMenuCurrent "main" . }}
active
{{ end }}"
href="{{ .URL }}"
>
<i class="{{ .Params.prefix }} {{ .Params.icon }} fa-fw"></i>
{{ .Name }}
</a>
</li>
{{ end }}
</ul>
</div>
</div>
{{ end }}
</nav>
</aside>

View file

@ -0,0 +1,9 @@
<blockquote>
{{ .Inner | markdownify }}
{{ with .Get 0 }}
<br />
<small>
{{ . | markdownify }}
</small>
{{ end }}
</blockquote>

View file

@ -0,0 +1,2 @@
{{- $faName := .Get 0 -}}
{{- partial "fa.html" $faName -}}

View file

@ -14,9 +14,9 @@
{{ else }}
{{ errorf "Invalid image processing command: Must be one of Crop, Fit, Fill or Resize." }}
{{ end }}
<figure class="figure {{ $figclass }}">
<figure class="{{ $figclass }}">
<img
class="figure-img img img-fluid"
class="img-fluid"
src="{{ $img.RelPermalink }}"
width="{{ $img.Width }}"
height="{{ $img.Height }}"

View file

@ -1,13 +0,0 @@
const purgecss = require("@fullhuman/postcss-purgecss")({
content: ["./hugo_stats.json"],
defaultExtractor: (content) => {
let els = JSON.parse(content).htmlElements;
return els.tags.concat(els.classes, els.ids);
},
});
if (process.env.HUGO_ENVIRONMENT === "production") {
module.exports = {
plugins: [purgecss],
};
}