Compare commits

...

10 commits

17 changed files with 115 additions and 292 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

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

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

View file

@ -131,6 +131,28 @@ footer {
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
*/
@ -257,11 +279,8 @@ footer {
box-sizing: content-box;
display: inline-block;
height: 1em;
vertical-align: -0.125em;
}
.fa-container.fa-fw svg {
width: 1.25em;
vertical-align: -0.125em;
}
.fa-container svg path {
@ -333,6 +352,10 @@ footer {
display: none;
}
main {
width: calc(100% - 10rem);
}
/*
Container-type helper classes
*/

View file

@ -62,16 +62,15 @@ stories.
Around the web you can find me at (in order of subjective importance)
- {{< fa github yes >}} GitHub: [@MillironX](https://github.com/MillironX)
- {{< fa orcid yes >}} ORDiD:
- {{< fa github >}} GitHub: [@MillironX](https://github.com/MillironX)
- {{< fa orcid >}} ORDiD:
[0000-0003-1219-9320](https://orcid.org/0000-0003-1219-9320)
- {{< fa gitlab yes >}} GitLab: [@MillironX](https://gitlab.com/MillironX)
- {{< fa vimeo yes >}} Vimeo:
- {{< fa gitlab >}} GitLab: [@MillironX](https://gitlab.com/MillironX)
- {{< fa vimeo >}} Vimeo:
[Thomas Christensen II](https://vimeo.com/tchristensenii)
- {{< fa stack-overflow yes >}} StackExchange:
- {{< fa stack-overflow >}} StackExchange:
[Milliron X](https://stackexchange.com/users/4863541/milliron-x)
- {{< fa steam yes >}} Steam:
[MillironX](https://steamcommunity.com/id/millironx)
- {{< 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

View file

@ -14,96 +14,60 @@ menu:
icon: file-signature
weight: 1
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

@ -48,16 +48,11 @@
</p>
</footer>
<!-- Font Awesome -->
{{ $fontawesome := resources.Get "scripts/fa-icons.js" | js.Build "js/fontawesome.js" | minify }}
<script src="{{ $fontawesome.RelPermalink }}"></script>
{{ with .Params.validation }}
{{- partial "form-validation.html" -}}
{{ end }}
<!-- 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>
<!-- GoatCounter -->
<script
data-goatcounter="https://millironx.goatcounter.com/count"

View file

@ -15,10 +15,7 @@
<div class="card-header">
<div class="thumb-icon-wrapper">
<span class="thumb-icon-badge">
{{- $fontAwesomePath := print "assets/graphics/fa/" . ".svg" -}}
<span class="fa-container fa-fw">
{{- readFile $fontAwesomePath | safeHTML -}}
</span>
{{- partial "fa.html" . -}}
</span>
</div>
</div>
@ -63,9 +60,9 @@
<a
href="{{ .RelPermalink }}"
class="card-link {{ if eq .LinkTitle "Thomas A. Christensen II" }}
fw-bolder
bolder
{{ end }}"
><i class="fad fa-user"></i> {{ .LinkTitle }}</a
>{{- partial "fa.html" "user" }} {{ .LinkTitle }}</a
>
{{ end }}
@ -82,7 +79,7 @@
<div class="card-footer">
{{ range (.GetTerms "tags") }}
<a href="{{ .RelPermalink }}" class="icon-link card-link"
><i class="fad fa-tag"></i> {{ .LinkTitle }}</a
>{{- partial "fa.html" "tag" }} {{ .LinkTitle }}</a
>
{{ end }}
</div>

View file

@ -3,12 +3,12 @@
{{ 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"
"video" "video"
"paper" "book"
"poster" "presentation"
"thesis" "graduation-cap"
"presentation" "podium"
"web" "globe"
}}
{{ $categoryIcon := index $iconDictionary $category }}
<a
@ -16,7 +16,7 @@
href="{{ .RelPermalink }}"
title="{{ humanize $category }}"
>
<i class="{{ $categoryIcon | default "fad fa-tag" }} fa-fw"></i>
{{- partial "fa.html" $categoryIcon -}}
</a>
{{ end }}
{{ end }}

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,19 +1,13 @@
{{ $millironx := resources.Get "graphics/millironx.svg" }}
{{ $currentPage := . }}
<aside class="col-12 col-md-3 p-0 bg-dark flex-shrink-1">
<aside>
<nav>
{{ range .Site.Menus.main }}
<a
class="{{ if $currentPage.IsMenuCurrent "main" . }}active{{ end }}"
href="{{ .URL }}"
>
{{- $fontAwesomePath := print "assets/graphics/fa/" .Params.icon ".svg" -}}
<span
class="fa-container
fa-fw"
>
{{- readFile $fontAwesomePath | safeHTML -}}
</span>
{{- partial "fa.html" .Params.icon -}}
{{ .Name }}
</a>
{{ end }}

View file

@ -1,13 +1,2 @@
{{- $faName := .Get 0 -}}
{{- $isFullWidth := .Get 1 -}}
{{- $fontAwesomePath := print "assets/graphics/fa/" $faName ".svg" -}}
<span
class="fa-container{{- if eq $isFullWidth "yes" }}
fa-fw
{{ end -}}"
>
{{- readFile $fontAwesomePath | safeHTML -}}
</span>
{{- partial "fa.html" $faName -}}

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],
};
}