diff options
56 files changed, 4715 insertions, 847 deletions
diff --git a/blogs/hytale-modding-my-honest-concerns.md b/blogs/2026-02-02-hytale-modding-my-honest-concerns.md index bf74ab9..65c0895 100644 --- a/blogs/hytale-modding-my-honest-concerns.md +++ b/blogs/2026-02-02-hytale-modding-my-honest-concerns.md @@ -4,8 +4,6 @@ description: Hytale finally released, promising modding, but iz it true? date: 2026-02-02 --- -## Hytale - For those who don't know, [Hytale](https://hytale.com) is a video game created by Hypixel Studios (the people behind Minecraft's largest server: Hypixel), which has been in development for over 7 years, and has finally been released in public beta on January 13th 2026. Minecraft was a big part of childhood, and was what pushed me into becoming a programmer, I started by making Minecraft mods and plugins using Java. @@ -3,6 +3,11 @@ module website go 1.26.8 require ( - github.com/a-h/templ v0.3.1070 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect + github.com/a-h/templ v0.3.1070 + github.com/alecthomas/chroma/v2 v2.27.0 + github.com/yuin/goldmark v1.8.6 + github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc + gopkg.in/yaml.v3 v3.0.1 ) + +require github.com/dlclark/regexp2/v2 v2.2.1 // indirect @@ -1,5 +1,33 @@ github.com/a-h/templ v0.3.1070 h1:3iCOXHXqFXa99OQzgkUOLJbNzv/QjFGLwKZkBAg+ADA= github.com/a-h/templ v0.3.1070/go.mod h1:iIqB3g2RHBe/WlnPwa+Bvhh1TKXHWLRnBD9NWHOLm78= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/chroma/v2 v2.2.0/go.mod h1:vf4zrexSH54oEjJ7EdB65tGNHmH3pGZmVkgTP5RHvAs= +github.com/alecthomas/chroma/v2 v2.27.0 h1:FodwmyOBgJULFYmDqibcp9pvfDLWdtPRh9v/r5BXYZs= +github.com/alecthomas/chroma/v2 v2.27.0/go.mod h1:NjJ3ciIgrqBNeIkWZ4e46nseoLDslxU1LmfCoL+wcY8= +github.com/alecthomas/repr v0.0.0-20220113201626-b1b626ac65ae/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dlclark/regexp2/v2 v2.2.1 h1:mf4KkFUj0gJuarK8P+LgiS+Lit7m9N1yAwEfPbee7R0= +github.com/dlclark/regexp2/v2 v2.2.1/go.mod h1:avUrQvPaLz2DrFNHJF0taWAFFX2C1GMSSoeiqFjcBmU= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/yuin/goldmark v1.4.15/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/goldmark v1.8.6 h1:d0VcaP1sx9GkFVkoW+KtggpGi2KZ965i14b0+bDQST4= +github.com/yuin/goldmark v1.8.6/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= +github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc h1:+IAOyRda+RLrxa1WC7umKOZRsGq4QrFFMYApOeHzQwQ= +github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc/go.mod h1:ovIvrum6DQJA4QsJSovrkC4saKHQVs7TvcaeO8AIl5I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/public/footnotes.js b/public/footnotes.js new file mode 100644 index 0000000..57ded98 --- /dev/null +++ b/public/footnotes.js @@ -0,0 +1,99 @@ +document.documentElement.classList.add("js"); + +const SIDENOTES = { + inside: true, // true: notes inside the frame, right of the post. false: outside, in the margin + insideShare: 0.21, // share of the post area given to the notes when inside (0.3 = 70/30) + border: false, // border around each note + // readingWidth: "70ch", // max width of the post text, null = no cap + readingWidth: null, // max width of the post text, null = no cap +}; + +document.addEventListener("DOMContentLoaded", () => { + const area = document.querySelector("[data-scroll-area]"); + const article = area?.querySelector("article"); + if (!area || !article) return; + + article.style.maxWidth = SIDENOTES.readingWidth ?? "none"; + if (SIDENOTES.inside) + article.style.marginRight = `${SIDENOTES.insideShare * 100}%`; + + const refs = [...document.querySelectorAll("a.footnote-ref")]; + if (refs.length === 0) return; + + const panel = document.createElement("div"); + panel.className = "sidenotes" + (SIDENOTES.border ? " bordered" : ""); + document.body.append(panel); + + const items = refs.map((ref) => { + ref.addEventListener("click", (e) => e.preventDefault()); + + const note = document.getElementById(ref.getAttribute("href").slice(1)); + const body = document.createElement("div"); + body.append(...note.cloneNode(true).childNodes); + body.querySelector(".footnote-backref")?.remove(); + + const num = document.createElement("sup"); + num.className = "sidenote-num"; + num.textContent = ref.textContent; + (body.querySelector("p") ?? body).prepend(num); + + const el = document.createElement("div"); + el.className = "sidenote"; + el.append(body); + panel.append(el); + return { ref, el }; + }); + + const gap = 6; + let queued = false; + + const layout = () => { + queued = false; + const rem = parseFloat(getComputedStyle(document.documentElement).fontSize); + const top0 = area.getBoundingClientRect().top + area.clientTop; + + let left, right; + if (SIDENOTES.inside) { + const r = area.getBoundingClientRect(); + left = article.getBoundingClientRect().right + rem; + right = + r.left + + area.clientLeft + + area.clientWidth - + parseFloat(getComputedStyle(area).paddingRight); + } else { + left = area.closest("main").getBoundingClientRect().right + rem; + right = window.innerWidth - rem; + } + + Object.assign(panel.style, { + left: `${left}px`, + top: `${top0}px`, + width: `${Math.max(0, right - left)}px`, + height: `${area.clientHeight}px`, + }); + + let bottom = -Infinity; + for (const { ref, el } of items) { + const top = Math.max( + ref.getBoundingClientRect().top - top0, + bottom + gap, + ); + el.style.top = `${top}px`; + bottom = top + el.offsetHeight; + } + }; + + const schedule = () => { + if (!queued) { + queued = true; + requestAnimationFrame(layout); + } + }; + + area.addEventListener("scroll", schedule, { passive: true }); + window.addEventListener("resize", schedule); + new ResizeObserver(schedule).observe(area); + document.fonts?.ready.then(schedule); + layout(); +}); diff --git a/public/main.css b/public/main.css deleted file mode 100644 index 772f896..0000000 --- a/public/main.css +++ /dev/null @@ -1,12 +0,0 @@ -@layer theme, base, components, utilities; -@import "tailwindcss/theme.css" layer(theme); -@import "tailwindcss/preflight.css" layer(base); -@import "tailwindcss/utilities.css" layer(utilities); - -@source "../**/*.go"; -@source "../**/*.templ"; - -@keyframes pop { 50% { transform: scale(1.3); } } -[data-copied] svg { animation: pop 0.25s; } - -@keyframes bump { 50% { transform: scale(1.03); } } diff --git a/public/style.css b/public/style.css index db025d0..b5497de 100644 --- a/public/style.css +++ b/public/style.css @@ -7,32 +7,14 @@ sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; - --color-red-400: oklch(70.4% 0.191 22.216); - --color-red-800: oklch(44.4% 0.177 26.899); - --color-red-950: oklch(25.8% 0.092 26.042); - --color-emerald-400: oklch(76.5% 0.177 163.223); - --color-emerald-800: oklch(43.2% 0.095 166.913); - --color-emerald-950: oklch(26.2% 0.051 172.552); --color-gray-700: oklch(37.3% 0.034 259.733); - --color-zinc-200: oklch(92% 0.004 286.32); - --color-zinc-300: oklch(87.1% 0.006 286.286); - --color-zinc-400: oklch(70.5% 0.015 286.067); - --color-zinc-500: oklch(55.2% 0.016 285.938); --color-black: #000; --color-white: #fff; --spacing: 0.25rem; --container-3xl: 48rem; - --text-xs: 0.75rem; - --text-xs--line-height: calc(1 / 0.75); - --text-sm: 0.875rem; - --text-sm--line-height: calc(1.25 / 0.875); - --text-2xl: 1.5rem; - --text-2xl--line-height: calc(2 / 1.5); --font-weight-normal: 400; --font-weight-bold: 700; - --tracking-wider: 0.05em; --leading-relaxed: 1.625; - --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; --default-transition-duration: 150ms; --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); --default-font-family: var(--font-sans); @@ -188,9 +170,6 @@ } } @layer utilities { - .pointer-events-none { - pointer-events: none; - } .invisible { visibility: hidden; } @@ -212,9 +191,6 @@ .inset-x-\[0\.3rem\] { inset-inline: 0.3rem; } - .top-1 { - top: var(--spacing); - } .top-1\/2 { top: calc(1 / 2 * 100%); } @@ -287,12 +263,430 @@ .my-\[5vw\] { margin-block: 5vw; } + .prose { + color: var(--tw-prose-body); + max-width: 65ch; + :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 1.25em; + margin-bottom: 1.25em; + } + :where([class~="lead"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-lead); + font-size: 1.25em; + line-height: 1.6; + margin-top: 1.2em; + margin-bottom: 1.2em; + } + :where(a):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-links); + text-decoration: underline; + font-weight: 500; + } + :where(strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-bold); + font-weight: 600; + } + :where(a strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(blockquote strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(thead th strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: decimal; + margin-top: 1.25em; + margin-bottom: 1.25em; + padding-inline-start: 1.625em; + } + :where(ol[type="A"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: upper-alpha; + } + :where(ol[type="a"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: lower-alpha; + } + :where(ol[type="A" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: upper-alpha; + } + :where(ol[type="a" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: lower-alpha; + } + :where(ol[type="I"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: upper-roman; + } + :where(ol[type="i"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: lower-roman; + } + :where(ol[type="I" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: upper-roman; + } + :where(ol[type="i" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: lower-roman; + } + :where(ol[type="1"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: decimal; + } + :where(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: disc; + margin-top: 1.25em; + margin-bottom: 1.25em; + padding-inline-start: 1.625em; + } + :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { + font-weight: 400; + color: var(--tw-prose-counters); + } + :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { + color: var(--tw-prose-bullets); + } + :where(dt):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + margin-top: 1.25em; + } + :where(hr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-color: var(--tw-prose-hr); + border-top-width: 1px; + margin-top: 3em; + margin-bottom: 3em; + } + :where(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 500; + font-style: italic; + color: var(--tw-prose-quotes); + border-inline-start-width: 0.25rem; + border-inline-start-color: var(--tw-prose-quote-borders); + quotes: "\201C""\201D""\2018""\2019"; + margin-top: 1.6em; + margin-bottom: 1.6em; + padding-inline-start: 1em; + } + :where(blockquote p:first-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { + content: open-quote; + } + :where(blockquote p:last-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { + content: close-quote; + } + :where(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 800; + font-size: 2.25em; + margin-top: 0; + margin-bottom: 0.8888889em; + line-height: 1.1111111; + } + :where(h1 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 900; + color: inherit; + } + :where(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 700; + font-size: 1.5em; + margin-top: 2em; + margin-bottom: 1em; + line-height: 1.3333333; + } + :where(h2 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 800; + color: inherit; + } + :where(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + font-size: 1.25em; + margin-top: 1.6em; + margin-bottom: 0.6em; + line-height: 1.6; + } + :where(h3 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 700; + color: inherit; + } + :where(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + margin-top: 1.5em; + margin-bottom: 0.5em; + line-height: 1.5; + } + :where(h4 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 700; + color: inherit; + } + :where(img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; + } + :where(picture):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + display: block; + margin-top: 2em; + margin-bottom: 2em; + } + :where(video):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; + } + :where(kbd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 500; + font-family: inherit; + color: var(--tw-prose-kbd); + box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows); + font-size: 0.875em; + border-radius: 0.3125rem; + padding-top: 0.1875em; + padding-inline-end: 0.375em; + padding-bottom: 0.1875em; + padding-inline-start: 0.375em; + } + :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-code); + font-weight: 600; + font-size: 0.875em; + } + :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { + content: "`"; + } + :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { + content: "`"; + } + :where(a code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(h1 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(h2 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + font-size: 0.875em; + } + :where(h3 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + font-size: 0.9em; + } + :where(h4 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(blockquote code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(thead th code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(pre):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-pre-code); + background-color: var(--tw-prose-pre-bg); + overflow-x: auto; + font-weight: 400; + font-size: 0.875em; + line-height: 1.7142857; + margin-top: 1.7142857em; + margin-bottom: 1.7142857em; + border-radius: 0.375rem; + padding-top: 0.8571429em; + padding-inline-end: 1.1428571em; + padding-bottom: 0.8571429em; + padding-inline-start: 1.1428571em; + } + :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + background-color: transparent; + border-width: 0; + border-radius: 0; + padding: 0; + font-weight: inherit; + color: inherit; + font-size: inherit; + font-family: inherit; + line-height: inherit; + } + :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { + content: none; + } + :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { + content: none; + } + :where(table):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + width: 100%; + table-layout: auto; + margin-top: 2em; + margin-bottom: 2em; + font-size: 0.875em; + line-height: 1.7142857; + } + :where(thead):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-th-borders); + } + :where(thead th):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + vertical-align: bottom; + padding-inline-end: 0.5714286em; + padding-bottom: 0.5714286em; + padding-inline-start: 0.5714286em; + } + :where(tbody tr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-td-borders); + } + :where(tbody tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-bottom-width: 0; + } + :where(tbody td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + vertical-align: baseline; + } + :where(tfoot):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-top-width: 1px; + border-top-color: var(--tw-prose-th-borders); + } + :where(tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + vertical-align: top; + } + :where(th, td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + text-align: start; + } + :where(figure > *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + margin-bottom: 0; + } + :where(figcaption):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-captions); + font-size: 0.875em; + line-height: 1.4285714; + margin-top: 0.8571429em; + } + --tw-prose-body: oklch(37.3% 0.034 259.733); + --tw-prose-headings: oklch(21% 0.034 264.665); + --tw-prose-lead: oklch(44.6% 0.03 256.802); + --tw-prose-links: oklch(21% 0.034 264.665); + --tw-prose-bold: oklch(21% 0.034 264.665); + --tw-prose-counters: oklch(55.1% 0.027 264.364); + --tw-prose-bullets: oklch(87.2% 0.01 258.338); + --tw-prose-hr: oklch(92.8% 0.006 264.531); + --tw-prose-quotes: oklch(21% 0.034 264.665); + --tw-prose-quote-borders: oklch(92.8% 0.006 264.531); + --tw-prose-captions: oklch(55.1% 0.027 264.364); + --tw-prose-kbd: oklch(21% 0.034 264.665); + --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.034 264.665) 10%, transparent); + --tw-prose-code: oklch(21% 0.034 264.665); + --tw-prose-pre-code: oklch(92.8% 0.006 264.531); + --tw-prose-pre-bg: oklch(27.8% 0.033 256.848); + --tw-prose-th-borders: oklch(87.2% 0.01 258.338); + --tw-prose-td-borders: oklch(92.8% 0.006 264.531); + --tw-prose-invert-body: oklch(87.2% 0.01 258.338); + --tw-prose-invert-headings: #fff; + --tw-prose-invert-lead: oklch(70.7% 0.022 261.325); + --tw-prose-invert-links: #fff; + --tw-prose-invert-bold: #fff; + --tw-prose-invert-counters: oklch(70.7% 0.022 261.325); + --tw-prose-invert-bullets: oklch(44.6% 0.03 256.802); + --tw-prose-invert-hr: oklch(37.3% 0.034 259.733); + --tw-prose-invert-quotes: oklch(96.7% 0.003 264.542); + --tw-prose-invert-quote-borders: oklch(37.3% 0.034 259.733); + --tw-prose-invert-captions: oklch(70.7% 0.022 261.325); + --tw-prose-invert-kbd: #fff; + --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%); + --tw-prose-invert-code: #fff; + --tw-prose-invert-pre-code: oklch(87.2% 0.01 258.338); + --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%); + --tw-prose-invert-th-borders: oklch(44.6% 0.03 256.802); + --tw-prose-invert-td-borders: oklch(37.3% 0.034 259.733); + font-size: 1rem; + line-height: 1.75; + :where(picture > img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + margin-bottom: 0; + } + :where(li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0.5em; + margin-bottom: 0.5em; + } + :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-start: 0.375em; + } + :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-start: 0.375em; + } + :where(.prose > ul > li p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0.75em; + margin-bottom: 0.75em; + } + :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 1.25em; + } + :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-bottom: 1.25em; + } + :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 1.25em; + } + :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-bottom: 1.25em; + } + :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0.75em; + margin-bottom: 0.75em; + } + :where(dl):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 1.25em; + margin-bottom: 1.25em; + } + :where(dd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0.5em; + padding-inline-start: 1.625em; + } + :where(hr + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + } + :where(h2 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + } + :where(h3 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + } + :where(h4 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + } + :where(thead th:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-start: 0; + } + :where(thead th:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-end: 0; + } + :where(tbody td, tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-top: 0.5714286em; + padding-inline-end: 0.5714286em; + padding-bottom: 0.5714286em; + padding-inline-start: 0.5714286em; + } + :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-start: 0; + } + :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-end: 0; + } + :where(figure):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; + } + :where(.prose > :first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + } + :where(.prose > :last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-bottom: 0; + } + } .mt-\[0\.5rem\] { margin-top: 0.5rem; } .mt-\[0\.625vw\] { margin-top: 0.625vw; } + .mt-\[1rem\] { + margin-top: 1rem; + } .mt-\[1vw\] { margin-top: 1vw; } @@ -440,19 +834,9 @@ .flex-1 { flex: 1; } - .flex-shrink { - flex-shrink: 1; - } .shrink-0 { flex-shrink: 0; } - .border-collapse { - border-collapse: collapse; - } - .-translate-y-1 { - --tw-translate-y: calc(var(--spacing) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - } .-translate-y-1\/2 { --tw-translate-y: calc(calc(1 / 2 * 100%) * -1); translate: var(--tw-translate-x) var(--tw-translate-y); @@ -469,9 +853,6 @@ .cursor-grab { cursor: grab; } - .cursor-not-allowed { - cursor: not-allowed; - } .cursor-pointer { cursor: pointer; } @@ -544,6 +925,9 @@ .gap-x-\[1ch\] { column-gap: 1ch; } + .gap-x-\[1rem\] { + column-gap: 1rem; + } .gap-x-\[2rem\] { column-gap: 2rem; } @@ -641,24 +1025,6 @@ border-color: color-mix(in oklab, var(--alt) 30%, transparent); } } - .border-\(--alt\)\/60 { - border-color: var(--alt); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--alt) 60%, transparent); - } - } - .border-\(--alt\)\/70 { - border-color: var(--alt); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--alt) 70%, transparent); - } - } - .border-\(--alt\)\/80 { - border-color: var(--alt); - @supports (color: color-mix(in lab, red, red)) { - border-color: color-mix(in oklab, var(--alt) 80%, transparent); - } - } .border-\(--secondary\)\/60 { border-color: var(--secondary); @supports (color: color-mix(in lab, red, red)) { @@ -698,27 +1064,6 @@ .bg-\[var\(--text\)\] { background-color: var(--text); } - .bg-black { - background-color: var(--color-black); - } - .bg-black\/0 { - background-color: color-mix(in srgb, #000 0%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-black) 0%, transparent); - } - } - .bg-black\/10 { - background-color: color-mix(in srgb, #000 10%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-black) 10%, transparent); - } - } - .bg-black\/15 { - background-color: color-mix(in srgb, #000 15%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-black) 15%, transparent); - } - } .bg-black\/20 { background-color: color-mix(in srgb, #000 20%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -731,33 +1076,12 @@ background-color: color-mix(in oklab, var(--color-black) 30%, transparent); } } - .bg-black\/50 { - background-color: color-mix(in srgb, #000 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-black) 50%, transparent); - } - } - .bg-white { - background-color: var(--color-white); - } .bg-white\/2 { background-color: color-mix(in srgb, #fff 2%, transparent); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-white) 2%, transparent); } } - .bg-white\/5 { - background-color: color-mix(in srgb, #fff 5%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-white) 5%, transparent); - } - } - .bg-white\/15 { - background-color: color-mix(in srgb, #fff 15%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-white) 15%, transparent); - } - } .bg-white\/\[0\.03\] { background-color: color-mix(in srgb, #fff 3%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -809,9 +1133,6 @@ .p-\[3vw\] { padding: 3vw; } - .px-3 { - padding-inline: calc(var(--spacing) * 3); - } .px-3\.5 { padding-inline: calc(var(--spacing) * 3.5); } @@ -869,6 +1190,9 @@ .text-right { text-align: right; } + .font-\(family-name\:--font-normal\) { + font-family: var(--font-normal); + } .font-\[\'JetBrains_Mono\'\] { font-family: 'JetBrains Mono'; } @@ -908,6 +1232,9 @@ .text-\[5vw\] { font-size: 5vw; } + .text-\[17\.6px\] { + font-size: 17.6px; + } .text-\[60\%\] { font-size: 60%; } @@ -935,6 +1262,10 @@ .text-\[170\%\] { font-size: 170%; } + .leading-\[1\.7\] { + --tw-leading: 1.7; + line-height: 1.7; + } .leading-\[normal\] { --tw-leading: normal; line-height: normal; @@ -963,12 +1294,6 @@ .text-\(--alt\) { color: var(--alt); } - .text-\(--alt\)\/20 { - color: var(--alt); - @supports (color: color-mix(in lab, red, red)) { - color: color-mix(in oklab, var(--alt) 20%, transparent); - } - } .text-\(--alt\)\/80 { color: var(--alt); @supports (color: color-mix(in lab, red, red)) { @@ -993,15 +1318,6 @@ .text-\[\#5C6CC1\] { color: #5C6CC1; } - .text-\[\#8eb0c8\] { - color: #8eb0c8; - } - .text-\[\#9A38F4\] { - color: #9A38F4; - } - .text-\[\#9e55e1\] { - color: #9e55e1; - } .text-\[\#46d46c\] { color: #46d46c; } @@ -1014,24 +1330,9 @@ .text-\[\#897ccb\] { color: #897ccb; } - .text-\[\#5079DB\] { - color: #5079DB; - } - .text-\[\#5487ac\] { - color: #5487ac; - } .text-\[\#5874FF\] { color: #5874FF; } - .text-\[\#5947B4\] { - color: #5947B4; - } - .text-\[\#7847D1\] { - color: #7847D1; - } - .text-\[\#487494\] { - color: #487494; - } .text-\[\#BDC3C7\] { color: #BDC3C7; } @@ -1044,9 +1345,6 @@ .text-\[\#D27D9B\] { color: #D27D9B; } - .text-\[\#DD6718\] { - color: #DD6718; - } .text-\[\#ED532D\] { color: #ED532D; } @@ -1068,12 +1366,6 @@ .text-\[\#a34eeb\] { color: #a34eeb; } - .text-\[\#ad72c7\] { - color: #ad72c7; - } - .text-\[\#b56df7\] { - color: #b56df7; - } .text-\[\%v\] { color: %v; } @@ -1089,15 +1381,9 @@ .no-underline { text-decoration-line: none; } - .underline { - text-decoration-line: underline; - } .opacity-0 { opacity: 0%; } - .opacity-40 { - opacity: 40%; - } .shadow-\[0_0_1\.5rem_color-mix\(in_srgb\,var\(--accent\)_25\%\,transparent\)\] { --tw-shadow: 0 0 1.5rem var(--tw-shadow-color, var(--accent)); @supports (color: color-mix(in lab, red, red)) { @@ -1105,10 +1391,6 @@ } box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } - .outline { - outline-style: var(--tw-outline-style); - outline-width: 1px; - } .transition-colors { transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); @@ -1118,10 +1400,6 @@ --tw-duration: 150ms; transition-duration: 150ms; } - .select-none { - -webkit-user-select: none; - user-select: none; - } .select-text { -webkit-user-select: text; user-select: text; @@ -1212,14 +1490,6 @@ background-color: color-mix(in oklab, var(--color-white) 10%, transparent); } } - .hover\:bg-white\/20:hover { - background-color: color-mix(in srgb, #fff 20%, transparent); - } - @supports (color: color-mix(in lab, red, red)) { - .hover\:bg-white\/20:hover { - background-color: color-mix(in oklab, var(--color-white) 20%, transparent); - } - } .hover\:text-\(--accent\):hover { color: var(--accent); } @@ -1429,6 +1699,111 @@ transform: scale(1.03); } } +.prose { + --tw-prose-body: var(--text); + --tw-prose-headings: var(--primary); + --tw-prose-links: var(--secondary); + --tw-prose-bold: var(--text); + --tw-prose-bullets: var(--alt); + --tw-prose-counters: var(--alt); + --tw-prose-hr: var(--alt); + --tw-prose-quotes: var(--text); + --tw-prose-quote-borders: var(--alt); + --tw-prose-captions: var(--alt); + --tw-prose-code: var(--extra); + --tw-prose-pre-code: var(--text); + --tw-prose-pre-bg: rgb(0 0 0 / 0.3); + --tw-prose-th-borders: var(--alt); + --tw-prose-td-borders: var(--alt); +} +.prose a.footnote-ref, .prose a.footnote-ref:hover { + text-decoration: none; +} +.prose code::before, .prose code::after { + content: none; +} +.prose :not(pre) > code { + padding: 0.1em 0.4em; + border-radius: 0.3em; + background: var(--alt); + @supports (color: color-mix(in lab, red, red)) { + background: color-mix(in srgb, var(--alt) 25%, transparent); + } + font-size: 0.9em; +} +.prose pre, .prose code { + font-family: var(--font-mono); +} +.js .footnotes { + display: none; +} +.sidenotes { + position: fixed; + overflow: hidden; + pointer-events: none; +} +.sidenote { + position: absolute; + left: 0; + right: 0; + background: var(--background); + font-family: var(--font-normal); + font-size: 16px; + line-height: 1.4; + pointer-events: auto; +} +.sidenotes.bordered .sidenote { + border: 0.1rem solid var(--alt); + padding: 0.4rem 0.6rem; +} +.sidenote-num { + font-size: 70%; + color: var(--secondary); + margin-right: 0.15em; +} +.chroma .k, .chroma .kc, .chroma .kd, .chroma .kn, .chroma .kp, .chroma .kr, .chroma .kt { + color: var(--secondary); +} +.chroma .nf, .chroma .nc, .chroma .nb { + color: var(--primary); +} +.chroma .s, .chroma .sa, .chroma .sb, .chroma .sc, .chroma .dl, .chroma .sd, .chroma .s2, .chroma .se, .chroma .sh, .chroma .si, .chroma .sx, .chroma .sr, .chroma .s1, .chroma .ss { + color: var(--extra); +} +.chroma .m, .chroma .mb, .chroma .mf, .chroma .mh, .chroma .mi, .chroma .il, .chroma .mo { + color: var(--primary); +} +.chroma .c, .chroma .ch, .chroma .cm, .chroma .c1, .chroma .cs, .chroma .cp, .chroma .cpf { + color: var(--alt); + font-style: italic; +} +.codeblock { + margin: 1.2em 0; + border: 0.1rem solid var(--alt); + border-radius: 0.4rem; + background: rgb(0 0 0 / 0.3); + overflow: hidden; +} +.codeblock::before { + content: attr(data-lang); + display: block; + padding: 0.2em 0.8em; + border-bottom: 0.1rem solid var(--alt); + font-size: 0.75em; + color: var(--alt); +} +.codeblock[data-lang=""]::before { + display: none; +} +.codeblock pre { + margin: 0; + padding: 0.8em 1em; + background: transparent; + border-radius: 0; + overflow-x: auto; + font-size: 0.85em; + line-height: 1.5; +} @property --tw-translate-x { syntax: "*"; inherits: false; @@ -1562,11 +1937,6 @@ inherits: false; initial-value: 0 0 #0000; } -@property --tw-outline-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} @property --tw-duration { syntax: "*"; inherits: false; @@ -1576,11 +1946,6 @@ initial-value: ""; inherits: false; } -@keyframes pulse { - 50% { - opacity: 0.5; - } -} @layer properties { @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { *, ::before, ::after, ::backdrop { @@ -1613,7 +1978,6 @@ --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; - --tw-outline-style: solid; --tw-duration: initial; --tw-content: ""; } diff --git a/public/styles/fonts/Inter/Inter-Black.woff2 b/public/styles/fonts/Inter/Inter-Black.woff2 Binary files differnew file mode 100644 index 0000000..2e73dce --- /dev/null +++ b/public/styles/fonts/Inter/Inter-Black.woff2 diff --git a/public/styles/fonts/Inter/Inter-BlackItalic.woff2 b/public/styles/fonts/Inter/Inter-BlackItalic.woff2 Binary files differnew file mode 100644 index 0000000..d85db93 --- /dev/null +++ b/public/styles/fonts/Inter/Inter-BlackItalic.woff2 diff --git a/public/styles/fonts/Inter/Inter-Bold.woff2 b/public/styles/fonts/Inter/Inter-Bold.woff2 Binary files differnew file mode 100644 index 0000000..b9e3cb3 --- /dev/null +++ b/public/styles/fonts/Inter/Inter-Bold.woff2 diff --git a/public/styles/fonts/Inter/Inter-BoldItalic.woff2 b/public/styles/fonts/Inter/Inter-BoldItalic.woff2 Binary files differnew file mode 100644 index 0000000..31cd052 --- /dev/null +++ b/public/styles/fonts/Inter/Inter-BoldItalic.woff2 diff --git a/public/styles/fonts/Inter/Inter-ExtraBold.woff2 b/public/styles/fonts/Inter/Inter-ExtraBold.woff2 Binary files differnew file mode 100644 index 0000000..bbd0006 --- /dev/null +++ b/public/styles/fonts/Inter/Inter-ExtraBold.woff2 diff --git a/public/styles/fonts/Inter/Inter-ExtraBoldItalic.woff2 b/public/styles/fonts/Inter/Inter-ExtraBoldItalic.woff2 Binary files differnew file mode 100644 index 0000000..288f2de --- /dev/null +++ b/public/styles/fonts/Inter/Inter-ExtraBoldItalic.woff2 diff --git a/public/styles/fonts/Inter/Inter-ExtraLight.woff2 b/public/styles/fonts/Inter/Inter-ExtraLight.woff2 Binary files differnew file mode 100644 index 0000000..f691003 --- /dev/null +++ b/public/styles/fonts/Inter/Inter-ExtraLight.woff2 diff --git a/public/styles/fonts/Inter/Inter-ExtraLightItalic.woff2 b/public/styles/fonts/Inter/Inter-ExtraLightItalic.woff2 Binary files differnew file mode 100644 index 0000000..3e3934d --- /dev/null +++ b/public/styles/fonts/Inter/Inter-ExtraLightItalic.woff2 diff --git a/public/styles/fonts/Inter/Inter-Italic.woff2 b/public/styles/fonts/Inter/Inter-Italic.woff2 Binary files differnew file mode 100644 index 0000000..9a1ad21 --- /dev/null +++ b/public/styles/fonts/Inter/Inter-Italic.woff2 diff --git a/public/styles/fonts/Inter/Inter-Light.woff2 b/public/styles/fonts/Inter/Inter-Light.woff2 Binary files differnew file mode 100644 index 0000000..f3e012a --- /dev/null +++ b/public/styles/fonts/Inter/Inter-Light.woff2 diff --git a/public/styles/fonts/Inter/Inter-LightItalic.woff2 b/public/styles/fonts/Inter/Inter-LightItalic.woff2 Binary files differnew file mode 100644 index 0000000..2f37009 --- /dev/null +++ b/public/styles/fonts/Inter/Inter-LightItalic.woff2 diff --git a/public/styles/fonts/Inter/Inter-Medium.woff2 b/public/styles/fonts/Inter/Inter-Medium.woff2 Binary files differnew file mode 100644 index 0000000..fdfdcc6 --- /dev/null +++ b/public/styles/fonts/Inter/Inter-Medium.woff2 diff --git a/public/styles/fonts/Inter/Inter-MediumItalic.woff2 b/public/styles/fonts/Inter/Inter-MediumItalic.woff2 Binary files differnew file mode 100644 index 0000000..0dc5a30 --- /dev/null +++ b/public/styles/fonts/Inter/Inter-MediumItalic.woff2 diff --git a/public/styles/fonts/Inter/Inter-Regular.woff2 b/public/styles/fonts/Inter/Inter-Regular.woff2 Binary files differnew file mode 100644 index 0000000..2bcd222 --- /dev/null +++ b/public/styles/fonts/Inter/Inter-Regular.woff2 diff --git a/public/styles/fonts/Inter/Inter-SemiBold.woff2 b/public/styles/fonts/Inter/Inter-SemiBold.woff2 Binary files differnew file mode 100644 index 0000000..fbae113 --- /dev/null +++ b/public/styles/fonts/Inter/Inter-SemiBold.woff2 diff --git a/public/styles/fonts/Inter/Inter-SemiBoldItalic.woff2 b/public/styles/fonts/Inter/Inter-SemiBoldItalic.woff2 Binary files differnew file mode 100644 index 0000000..d67d01c --- /dev/null +++ b/public/styles/fonts/Inter/Inter-SemiBoldItalic.woff2 diff --git a/public/styles/fonts/Inter/Inter-Thin.woff2 b/public/styles/fonts/Inter/Inter-Thin.woff2 Binary files differnew file mode 100644 index 0000000..83bf54b --- /dev/null +++ b/public/styles/fonts/Inter/Inter-Thin.woff2 diff --git a/public/styles/fonts/Inter/Inter-ThinItalic.woff2 b/public/styles/fonts/Inter/Inter-ThinItalic.woff2 Binary files differnew file mode 100644 index 0000000..928da4b --- /dev/null +++ b/public/styles/fonts/Inter/Inter-ThinItalic.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-Black.woff2 b/public/styles/fonts/Inter/InterDisplay-Black.woff2 Binary files differnew file mode 100644 index 0000000..72532b2 --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-Black.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-BlackItalic.woff2 b/public/styles/fonts/Inter/InterDisplay-BlackItalic.woff2 Binary files differnew file mode 100644 index 0000000..de02111 --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-BlackItalic.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-Bold.woff2 b/public/styles/fonts/Inter/InterDisplay-Bold.woff2 Binary files differnew file mode 100644 index 0000000..304c31d --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-Bold.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-BoldItalic.woff2 b/public/styles/fonts/Inter/InterDisplay-BoldItalic.woff2 Binary files differnew file mode 100644 index 0000000..89d5c5a --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-BoldItalic.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-ExtraBold.woff2 b/public/styles/fonts/Inter/InterDisplay-ExtraBold.woff2 Binary files differnew file mode 100644 index 0000000..4250fa0 --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-ExtraBold.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-ExtraBoldItalic.woff2 b/public/styles/fonts/Inter/InterDisplay-ExtraBoldItalic.woff2 Binary files differnew file mode 100644 index 0000000..d68a400 --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-ExtraBoldItalic.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-ExtraLight.woff2 b/public/styles/fonts/Inter/InterDisplay-ExtraLight.woff2 Binary files differnew file mode 100644 index 0000000..7d376e2 --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-ExtraLight.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-ExtraLightItalic.woff2 b/public/styles/fonts/Inter/InterDisplay-ExtraLightItalic.woff2 Binary files differnew file mode 100644 index 0000000..1f1ca72 --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-ExtraLightItalic.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-Italic.woff2 b/public/styles/fonts/Inter/InterDisplay-Italic.woff2 Binary files differnew file mode 100644 index 0000000..4475f7c --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-Italic.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-Light.woff2 b/public/styles/fonts/Inter/InterDisplay-Light.woff2 Binary files differnew file mode 100644 index 0000000..ef7dbbf --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-Light.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-LightItalic.woff2 b/public/styles/fonts/Inter/InterDisplay-LightItalic.woff2 Binary files differnew file mode 100644 index 0000000..a57c48b --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-LightItalic.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-Medium.woff2 b/public/styles/fonts/Inter/InterDisplay-Medium.woff2 Binary files differnew file mode 100644 index 0000000..f6157fa --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-Medium.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-MediumItalic.woff2 b/public/styles/fonts/Inter/InterDisplay-MediumItalic.woff2 Binary files differnew file mode 100644 index 0000000..8b2f1c2 --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-MediumItalic.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-Regular.woff2 b/public/styles/fonts/Inter/InterDisplay-Regular.woff2 Binary files differnew file mode 100644 index 0000000..b5a45e8 --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-Regular.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-SemiBold.woff2 b/public/styles/fonts/Inter/InterDisplay-SemiBold.woff2 Binary files differnew file mode 100644 index 0000000..6e04091 --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-SemiBold.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-SemiBoldItalic.woff2 b/public/styles/fonts/Inter/InterDisplay-SemiBoldItalic.woff2 Binary files differnew file mode 100644 index 0000000..72b4743 --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-SemiBoldItalic.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-Thin.woff2 b/public/styles/fonts/Inter/InterDisplay-Thin.woff2 Binary files differnew file mode 100644 index 0000000..893595a --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-Thin.woff2 diff --git a/public/styles/fonts/Inter/InterDisplay-ThinItalic.woff2 b/public/styles/fonts/Inter/InterDisplay-ThinItalic.woff2 Binary files differnew file mode 100644 index 0000000..46e1b5a --- /dev/null +++ b/public/styles/fonts/Inter/InterDisplay-ThinItalic.woff2 diff --git a/public/styles/fonts/Inter/InterVariable-Italic.woff2 b/public/styles/fonts/Inter/InterVariable-Italic.woff2 Binary files differnew file mode 100644 index 0000000..b3530f3 --- /dev/null +++ b/public/styles/fonts/Inter/InterVariable-Italic.woff2 diff --git a/public/styles/fonts/Inter/InterVariable.woff2 b/public/styles/fonts/Inter/InterVariable.woff2 Binary files differnew file mode 100644 index 0000000..5a8d3e7 --- /dev/null +++ b/public/styles/fonts/Inter/InterVariable.woff2 diff --git a/public/styles/fonts/Inter/inter.css b/public/styles/fonts/Inter/inter.css new file mode 100644 index 0000000..6144065 --- /dev/null +++ b/public/styles/fonts/Inter/inter.css @@ -0,0 +1,148 @@ +/* Variable fonts usage: +:root { font-family: "Inter", sans-serif; } +@supports (font-variation-settings: normal) { + :root { font-family: "InterVariable", sans-serif; font-optical-sizing: auto; } +} */ +@font-face { + font-family: InterVariable; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("InterVariable.woff2") format("woff2"); +} +@font-face { + font-family: InterVariable; + font-style: italic; + font-weight: 100 900; + font-display: swap; + src: url("InterVariable-Italic.woff2") format("woff2"); +} + +/* static fonts */ +@font-face { font-family: "Inter"; font-style: normal; font-weight: 100; font-display: swap; src: url("Inter-Thin.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: italic; font-weight: 100; font-display: swap; src: url("Inter-ThinItalic.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: normal; font-weight: 200; font-display: swap; src: url("Inter-ExtraLight.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: italic; font-weight: 200; font-display: swap; src: url("Inter-ExtraLightItalic.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: normal; font-weight: 300; font-display: swap; src: url("Inter-Light.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: italic; font-weight: 300; font-display: swap; src: url("Inter-LightItalic.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: normal; font-weight: 400; font-display: swap; src: url("Inter-Regular.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: italic; font-weight: 400; font-display: swap; src: url("Inter-Italic.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: normal; font-weight: 500; font-display: swap; src: url("Inter-Medium.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: italic; font-weight: 500; font-display: swap; src: url("Inter-MediumItalic.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: normal; font-weight: 600; font-display: swap; src: url("Inter-SemiBold.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: italic; font-weight: 600; font-display: swap; src: url("Inter-SemiBoldItalic.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: normal; font-weight: 700; font-display: swap; src: url("Inter-Bold.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: italic; font-weight: 700; font-display: swap; src: url("Inter-BoldItalic.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: normal; font-weight: 800; font-display: swap; src: url("Inter-ExtraBold.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: italic; font-weight: 800; font-display: swap; src: url("Inter-ExtraBoldItalic.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: normal; font-weight: 900; font-display: swap; src: url("Inter-Black.woff2") format("woff2"); } +@font-face { font-family: "Inter"; font-style: italic; font-weight: 900; font-display: swap; src: url("Inter-BlackItalic.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 100; font-display: swap; src: url("InterDisplay-Thin.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 100; font-display: swap; src: url("InterDisplay-ThinItalic.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 200; font-display: swap; src: url("InterDisplay-ExtraLight.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 200; font-display: swap; src: url("InterDisplay-ExtraLightItalic.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 300; font-display: swap; src: url("InterDisplay-Light.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 300; font-display: swap; src: url("InterDisplay-LightItalic.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 400; font-display: swap; src: url("InterDisplay-Regular.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 400; font-display: swap; src: url("InterDisplay-Italic.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 500; font-display: swap; src: url("InterDisplay-Medium.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 500; font-display: swap; src: url("InterDisplay-MediumItalic.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 600; font-display: swap; src: url("InterDisplay-SemiBold.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 600; font-display: swap; src: url("InterDisplay-SemiBoldItalic.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 700; font-display: swap; src: url("InterDisplay-Bold.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 700; font-display: swap; src: url("InterDisplay-BoldItalic.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 800; font-display: swap; src: url("InterDisplay-ExtraBold.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 800; font-display: swap; src: url("InterDisplay-ExtraBoldItalic.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: normal; font-weight: 900; font-display: swap; src: url("InterDisplay-Black.woff2") format("woff2"); } +@font-face { font-family: "InterDisplay"; font-style: italic; font-weight: 900; font-display: swap; src: url("InterDisplay-BlackItalic.woff2") format("woff2"); } + +@font-feature-values InterVariable { + @character-variant { + cv01: 1; cv02: 2; cv03: 3; cv04: 4; cv05: 5; cv06: 6; cv07: 7; cv08: 8; + cv09: 9; cv10: 10; cv11: 11; cv12: 12; cv13: 13; + alt-1: 1; /* Alternate one */ + alt-3: 9; /* Flat-top three */ + open-4: 2; /* Open four */ + open-6: 3; /* Open six */ + open-9: 4; /* Open nine */ + lc-l-with-tail: 5; /* Lower-case L with tail */ + simplified-u: 6; /* Simplified u */ + alt-double-s: 7; /* Alternate German double s */ + uc-i-with-serif: 8; /* Upper-case i with serif */ + uc-g-with-spur: 10; /* Capital G with spur */ + single-story-a: 11; /* Single-story a */ + compact-lc-f: 12; /* Compact f */ + compact-lc-t: 13; /* Compact t */ + } + @styleset { + ss01: 1; ss02: 2; ss03: 3; ss04: 4; ss05: 5; ss06: 6; ss07: 7; ss08: 8; + open-digits: 1; /* Open digits */ + disambiguation: 2; /* Disambiguation (with zero) */ + disambiguation-except-zero: 4; /* Disambiguation (no zero) */ + round-quotes-and-commas: 3; /* Round quotes & commas */ + square-punctuation: 7; /* Square punctuation */ + square-quotes: 8; /* Square quotes */ + circled-characters: 5; /* Circled characters */ + squared-characters: 6; /* Squared characters */ + } +} +@font-feature-values Inter { + @character-variant { + cv01: 1; cv02: 2; cv03: 3; cv04: 4; cv05: 5; cv06: 6; cv07: 7; cv08: 8; + cv09: 9; cv10: 10; cv11: 11; cv12: 12; cv13: 13; + alt-1: 1; /* Alternate one */ + alt-3: 9; /* Flat-top three */ + open-4: 2; /* Open four */ + open-6: 3; /* Open six */ + open-9: 4; /* Open nine */ + lc-l-with-tail: 5; /* Lower-case L with tail */ + simplified-u: 6; /* Simplified u */ + alt-double-s: 7; /* Alternate German double s */ + uc-i-with-serif: 8; /* Upper-case i with serif */ + uc-g-with-spur: 10; /* Capital G with spur */ + single-story-a: 11; /* Single-story a */ + compact-lc-f: 12; /* Compact f */ + compact-lc-t: 13; /* Compact t */ + } + @styleset { + ss01: 1; ss02: 2; ss03: 3; ss04: 4; ss05: 5; ss06: 6; ss07: 7; ss08: 8; + open-digits: 1; /* Open digits */ + disambiguation: 2; /* Disambiguation (with zero) */ + disambiguation-except-zero: 4; /* Disambiguation (no zero) */ + round-quotes-and-commas: 3; /* Round quotes & commas */ + square-punctuation: 7; /* Square punctuation */ + square-quotes: 8; /* Square quotes */ + circled-characters: 5; /* Circled characters */ + squared-characters: 6; /* Squared characters */ + } +} +@font-feature-values InterDisplay { + @character-variant { + cv01: 1; cv02: 2; cv03: 3; cv04: 4; cv05: 5; cv06: 6; cv07: 7; cv08: 8; + cv09: 9; cv10: 10; cv11: 11; cv12: 12; cv13: 13; + alt-1: 1; /* Alternate one */ + alt-3: 9; /* Flat-top three */ + open-4: 2; /* Open four */ + open-6: 3; /* Open six */ + open-9: 4; /* Open nine */ + lc-l-with-tail: 5; /* Lower-case L with tail */ + simplified-u: 6; /* Simplified u */ + alt-double-s: 7; /* Alternate German double s */ + uc-i-with-serif: 8; /* Upper-case i with serif */ + uc-g-with-spur: 10; /* Capital G with spur */ + single-story-a: 11; /* Single-story a */ + compact-lc-f: 12; /* Compact f */ + compact-lc-t: 13; /* Compact t */ + } + @styleset { + ss01: 1; ss02: 2; ss03: 3; ss04: 4; ss05: 5; ss06: 6; ss07: 7; ss08: 8; + open-digits: 1; /* Open digits */ + disambiguation: 2; /* Disambiguation (with zero) */ + disambiguation-except-zero: 4; /* Disambiguation (no zero) */ + round-quotes-and-commas: 3; /* Round quotes & commas */ + square-punctuation: 7; /* Square punctuation */ + square-quotes: 8; /* Square quotes */ + circled-characters: 5; /* Circled characters */ + squared-characters: 6; /* Squared characters */ + } +} diff --git a/public/styles/fonts/JetBrainsMono.css b/public/styles/fonts/JetBrainsMono.css index 807fe1f..fc0183e 100644 --- a/public/styles/fonts/JetBrainsMono.css +++ b/public/styles/fonts/JetBrainsMono.css @@ -1,108 +1,108 @@ @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-Thin.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-Thin.woff2") format("woff2"); font-weight: 100; font-style: normal; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-ThinItalic.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-ThinItalic.woff2") format("woff2"); font-weight: 100; font-style: italic; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-ExtraLight.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-ExtraLight.woff2") format("woff2"); font-weight: 200; font-style: normal; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-ExtraLightItalic.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-ExtraLightItalic.woff2") format("woff2"); font-weight: 200; font-style: italic; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-Light.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-Light.woff2") format("woff2"); font-weight: 300; font-style: normal; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-LightItalic.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-LightItalic.woff2") format("woff2"); font-weight: 300; font-style: italic; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-Regular.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-Regular.woff2") format("woff2"); font-weight: 400; font-style: normal; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-Italic.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-Italic.woff2") format("woff2"); font-weight: 400; font-style: italic; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-Medium.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-Medium.woff2") format("woff2"); font-weight: 500; font-style: normal; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-MediumItalic.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-MediumItalic.woff2") format("woff2"); font-weight: 500; font-style: italic; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-SemiBold.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-SemiBold.woff2") format("woff2"); font-weight: 600; font-style: normal; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-SemiBoldItalic.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-SemiBoldItalic.woff2") format("woff2"); font-weight: 600; font-style: italic; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-Bold.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-Bold.woff2") format("woff2"); font-weight: 700; font-style: normal; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-BoldItalic.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-BoldItalic.woff2") format("woff2"); font-weight: 700; font-style: italic; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-ExtraBold.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-ExtraBold.woff2") format("woff2"); font-weight: 800; font-style: normal; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-ExtraBoldItalic.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-ExtraBoldItalic.woff2") format("woff2"); font-weight: 800; font-style: italic; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-ExtraBold.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-ExtraBold.woff2") format("woff2"); font-weight: 900; font-style: normal; } @font-face { font-family: "Jetbrains Mono"; - src: url("/fonts/JetBrainsMono-ExtraBoldItalic.woff2") format("woff2"); + src: url("/public/fonts/JetBrainsMono-ExtraBoldItalic.woff2") format("woff2"); font-weight: 900; font-style: italic; } diff --git a/public/styles/fonts/LowresPixel-Regular.woff b/public/styles/fonts/LowresPixel-Regular.woff Binary files differnew file mode 100644 index 0000000..a1b368a --- /dev/null +++ b/public/styles/fonts/LowresPixel-Regular.woff diff --git a/public/styles/fonts/LowresPixel.css b/public/styles/fonts/LowresPixel.css new file mode 100644 index 0000000..ae4f1d3 --- /dev/null +++ b/public/styles/fonts/LowresPixel.css @@ -0,0 +1,8 @@ +@font-face { + font-family: "LowerPixelRegular"; + font-style: normal; + font-weight: normal; + src: + local("LowerPixelRegular"), + url("LowresPixel-Regular.woff") format("woff"); +} diff --git a/public/styles/fonts/Monocraft.css b/public/styles/fonts/Monocraft.css index 34fd24a..af7b397 100644 --- a/public/styles/fonts/Monocraft.css +++ b/public/styles/fonts/Monocraft.css @@ -1,108 +1,126 @@ @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-ExtraLight.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-ExtraLight.ttf") format("truetype"); font-weight: 100; font-style: normal; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-ExtraLight-Italic.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-ExtraLight-Italic.ttf") format("truetype"); font-weight: 100; font-style: italic; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-ExtraLight.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-ExtraLight.ttf") format("truetype"); font-weight: 200; font-style: normal; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-ExtraLight-Italic.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-ExtraLight-Italic.ttf") format("truetype"); font-weight: 200; font-style: italic; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-Light.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-Light.ttf") format("truetype"); font-weight: 300; font-style: normal; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-Light-Italic.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-Light-Italic.ttf") format("truetype"); font-weight: 300; font-style: italic; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft.ttf") format("truetype"); + src: url("/public/fonts/Monocraft.ttf") format("truetype"); font-weight: 400; font-style: normal; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-Italic.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-Italic.ttf") format("truetype"); font-weight: 400; font-style: italic; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft.ttf") format("truetype"); + src: url("/public/fonts/Monocraft.ttf") format("truetype"); font-weight: 500; font-style: normal; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-Italic.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-Italic.ttf") format("truetype"); font-weight: 500; font-style: italic; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-SemiBold.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-SemiBold.ttf") format("truetype"); font-weight: 600; font-style: normal; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-SemiBold-Italic.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-SemiBold-Italic.ttf") format("truetype"); font-weight: 600; font-style: italic; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-Bold.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-Bold.ttf") format("truetype"); font-weight: 700; font-style: normal; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-Bold-Italic.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-Bold-Italic.ttf") format("truetype"); font-weight: 700; font-style: italic; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-Black.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-Black.ttf") format("truetype"); font-weight: 800; font-style: normal; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-Black-Italic.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-Black-Italic.ttf") format("truetype"); font-weight: 800; font-style: italic; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-Black.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-Black.ttf") format("truetype"); font-weight: 900; font-style: normal; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } @font-face { font-family: "Monocraft"; - src: url("/fonts/Monocraft-Black-Italic.ttf") format("truetype"); + src: url("/public/fonts/Monocraft-Black-Italic.ttf") format("truetype"); font-weight: 900; font-style: italic; + size-adjust: 90%; /* Adjust to JetBrainsMono width, 0.6 / 0.6666 = 0.9 */ } diff --git a/public/styles/main.css b/public/styles/main.css new file mode 100644 index 0000000..41d7fa2 --- /dev/null +++ b/public/styles/main.css @@ -0,0 +1,263 @@ +@import "./fonts/Inter/inter.css"; +@import "./fonts/JetBrainsMono.css"; +@import "./fonts/Monocraft.css"; +@import "./fonts/LowresPixel.css"; + +@layer theme, base, components, utilities; +@import "tailwindcss/theme.css" layer(theme); +@import "tailwindcss/preflight.css" layer(base); +@import "tailwindcss/utilities.css" layer(utilities); + +@source "../**/*.go"; +@source "../**/*.templ"; + +:root { + --primary: #54d7a9; + --secondary: #9b7eca; + --accent: #7ed4fb; + --extra: #8fcc75; + --text: #ffffff; + --alt: #999999; + --background: #000000; + --font-mono: "Jetbrains Mono", monospace; + --font-normal: "Inter", system-ui, sans-serif; +} + +html { + background-color: var(--background); + color: var(--text); + font-family: var(--font-mono); + user-select: none; + + font-size: 1vw; +} + +body { + min-height: 100vh; + display: grid; + place-items: center; + /* font-family: var(--font-mono); */ +} + +@layer base { + a { + font-weight: 300; + text-decoration: none; + color: var(--secondary); + transition-duration: 0.2s; + transition-property: color, text-decoration; + } + a:hover { + text-decoration: underline; + color: var(--accent); + } +} + +.scrollbox::-webkit-scrollbar { + width: 1.5rem; +} +.scrollbox::-webkit-scrollbar-track { + background: transparent; + border-left: 0.1rem solid var(--alt); +} +.scrollbox::-webkit-scrollbar-thumb { + background: var(--primary); + border: 0.3rem solid transparent; + background-clip: padding-box; + border-radius: 0; +} +.scrollbox::-webkit-scrollbar-thumb:hover { + background: var(--accent); +} + +@supports not selector(::-webkit-scrollbar) { + .scrollbox { + scrollbar-color: var(--primary) transparent; + } +} + +@plugin "@tailwindcss/typography"; + +.prose { + --tw-prose-body: var(--text); + --tw-prose-headings: var(--primary); + --tw-prose-links: var(--secondary); + --tw-prose-bold: var(--text); + --tw-prose-bullets: var(--alt); + --tw-prose-counters: var(--alt); + --tw-prose-hr: var(--alt); + --tw-prose-quotes: var(--text); + --tw-prose-quote-borders: var(--alt); + --tw-prose-captions: var(--alt); + --tw-prose-code: var(--extra); + --tw-prose-pre-code: var(--text); + --tw-prose-pre-bg: rgb(0 0 0 / 0.3); + --tw-prose-th-borders: var(--alt); + --tw-prose-td-borders: var(--alt); +} + +/* .prose a[target="_blank"]::after { content: " ↗"; font-size: 0.8em; } */ + +/* headings: color, size, spacing above/below */ +/* .prose h1 { color: var(--accent); font-size: 1.9em; margin: 1.6em 0 0.6em; } */ +/* .prose h2 { color: var(--primary); font-size: 1.5em; margin: 1.6em 0 0.5em; } */ +/* .prose h3 { color: var(--primary); font-size: 1.2em; margin: 1.4em 0 0.4em; } */ + +/* paragraph and list spacing */ +/* .prose p, .prose ul, .prose ol { margin: 1em 0; } */ +/* .prose li { margin: 0.3em 0; } */ + +/* links, with no underline on footnote refs */ +/* .prose a { text-decoration: none; } */ +/* .prose a:hover { text-decoration: underline; } */ +.prose a.footnote-ref, +.prose a.footnote-ref:hover { + text-decoration: none; +} + +/* quotes: drop the plugin's quote marks */ +/* .prose blockquote { border-left: 0.2em solid var(--alt); padding-left: 1em; font-style: normal; } */ +/* .prose blockquote p::before, .prose blockquote p::after { content: none; } */ + +/* inline code: drop the plugin's backticks, add a tag-like background */ +.prose code::before, +.prose code::after { + content: none; +} +.prose :not(pre) > code { + padding: 0.1em 0.4em; + border-radius: 0.3em; + background: color-mix(in srgb, var(--alt) 25%, transparent); + font-size: 0.9em; +} + +/* the article uses the proportional font, so code needs the mono one back */ +.prose pre, +.prose code { + font-family: var(--font-mono); +} + +.js .footnotes { + display: none; +} + +.sidenotes { + position: fixed; + overflow: hidden; + pointer-events: none; +} + +.sidenote { + position: absolute; + left: 0; + right: 0; + background: var(--background); + font-family: var(--font-normal); + font-size: 16px; + line-height: 1.4; + pointer-events: auto; +} + +.sidenotes.bordered .sidenote { + border: 0.1rem solid var(--alt); + padding: 0.4rem 0.6rem; +} + +.sidenote-num { + font-size: 70%; + color: var(--secondary); + margin-right: 0.15em; +} + +.chroma .k, +.chroma .kc, +.chroma .kd, +.chroma .kn, +.chroma .kp, +.chroma .kr, +.chroma .kt { + color: var(--secondary); +} +.chroma .nf, +.chroma .nc, +.chroma .nb { + color: var(--primary); +} +.chroma .s, +.chroma .sa, +.chroma .sb, +.chroma .sc, +.chroma .dl, +.chroma .sd, +.chroma .s2, +.chroma .se, +.chroma .sh, +.chroma .si, +.chroma .sx, +.chroma .sr, +.chroma .s1, +.chroma .ss { + color: var(--extra); +} +.chroma .m, +.chroma .mb, +.chroma .mf, +.chroma .mh, +.chroma .mi, +.chroma .il, +.chroma .mo { + color: var(--primary); +} +.chroma .c, +.chroma .ch, +.chroma .cm, +.chroma .c1, +.chroma .cs, +.chroma .cp, +.chroma .cpf { + color: var(--alt); + font-style: italic; +} + +.codeblock { + margin: 1.2em 0; + border: 0.1rem solid var(--alt); + border-radius: 0.4rem; + background: rgb(0 0 0 / 0.3); + overflow: hidden; +} +.codeblock::before { + content: attr(data-lang); + display: block; + padding: 0.2em 0.8em; + border-bottom: 0.1rem solid var(--alt); + font-size: 0.75em; + color: var(--alt); +} +.codeblock[data-lang=""]::before { + display: none; +} +.codeblock pre { + margin: 0; + padding: 0.8em 1em; + background: transparent; + border-radius: 0; + overflow-x: auto; + font-size: 0.85em; + line-height: 1.5; +} + +@keyframes pop { + 50% { + transform: scale(1.3); + } +} +[data-copied] svg { + animation: pop 0.25s; +} + +@keyframes bump { + 50% { + transform: scale(1.03); + } +} diff --git a/public/styles/style.css b/public/styles/style.css new file mode 100644 index 0000000..872086f --- /dev/null +++ b/public/styles/style.css @@ -0,0 +1,2696 @@ +/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ +@layer properties; +@font-face { + font-family: InterVariable; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("InterVariable.woff2") format("woff2"); +} +@font-face { + font-family: InterVariable; + font-style: italic; + font-weight: 100 900; + font-display: swap; + src: url("InterVariable-Italic.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url("Inter-Thin.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url("Inter-ThinItalic.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url("Inter-ExtraLight.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url("Inter-ExtraLightItalic.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url("Inter-Light.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url("Inter-LightItalic.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("Inter-Regular.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url("Inter-Italic.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url("Inter-Medium.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url("Inter-MediumItalic.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url("Inter-SemiBold.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url("Inter-SemiBoldItalic.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url("Inter-Bold.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url("Inter-BoldItalic.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url("Inter-ExtraBold.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url("Inter-ExtraBoldItalic.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url("Inter-Black.woff2") format("woff2"); +} +@font-face { + font-family: "Inter"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url("Inter-BlackItalic.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url("InterDisplay-Thin.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url("InterDisplay-ThinItalic.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url("InterDisplay-ExtraLight.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url("InterDisplay-ExtraLightItalic.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url("InterDisplay-Light.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url("InterDisplay-LightItalic.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("InterDisplay-Regular.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url("InterDisplay-Italic.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url("InterDisplay-Medium.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url("InterDisplay-MediumItalic.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url("InterDisplay-SemiBold.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url("InterDisplay-SemiBoldItalic.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url("InterDisplay-Bold.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url("InterDisplay-BoldItalic.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url("InterDisplay-ExtraBold.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url("InterDisplay-ExtraBoldItalic.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url("InterDisplay-Black.woff2") format("woff2"); +} +@font-face { + font-family: "InterDisplay"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url("InterDisplay-BlackItalic.woff2") format("woff2"); +} +@font-feature-values InterVariable { + @character-variant { + cv01: 1; + cv02: 2; + cv03: 3; + cv04: 4; + cv05: 5; + cv06: 6; + cv07: 7; + cv08: 8; + cv09: 9; + cv10: 10; + cv11: 11; + cv12: 12; + cv13: 13; + alt-1: 1; + alt-3: 9; + open-4: 2; + open-6: 3; + open-9: 4; + lc-l-with-tail: 5; + simplified-u: 6; + alt-double-s: 7; + uc-i-with-serif: 8; + uc-g-with-spur: 10; + single-story-a: 11; + compact-lc-f: 12; + compact-lc-t: 13; + } + @styleset { + ss01: 1; + ss02: 2; + ss03: 3; + ss04: 4; + ss05: 5; + ss06: 6; + ss07: 7; + ss08: 8; + open-digits: 1; + disambiguation: 2; + disambiguation-except-zero: 4; + round-quotes-and-commas: 3; + square-punctuation: 7; + square-quotes: 8; + circled-characters: 5; + squared-characters: 6; + } +} +@font-feature-values Inter { + @character-variant { + cv01: 1; + cv02: 2; + cv03: 3; + cv04: 4; + cv05: 5; + cv06: 6; + cv07: 7; + cv08: 8; + cv09: 9; + cv10: 10; + cv11: 11; + cv12: 12; + cv13: 13; + alt-1: 1; + alt-3: 9; + open-4: 2; + open-6: 3; + open-9: 4; + lc-l-with-tail: 5; + simplified-u: 6; + alt-double-s: 7; + uc-i-with-serif: 8; + uc-g-with-spur: 10; + single-story-a: 11; + compact-lc-f: 12; + compact-lc-t: 13; + } + @styleset { + ss01: 1; + ss02: 2; + ss03: 3; + ss04: 4; + ss05: 5; + ss06: 6; + ss07: 7; + ss08: 8; + open-digits: 1; + disambiguation: 2; + disambiguation-except-zero: 4; + round-quotes-and-commas: 3; + square-punctuation: 7; + square-quotes: 8; + circled-characters: 5; + squared-characters: 6; + } +} +@font-feature-values InterDisplay { + @character-variant { + cv01: 1; + cv02: 2; + cv03: 3; + cv04: 4; + cv05: 5; + cv06: 6; + cv07: 7; + cv08: 8; + cv09: 9; + cv10: 10; + cv11: 11; + cv12: 12; + cv13: 13; + alt-1: 1; + alt-3: 9; + open-4: 2; + open-6: 3; + open-9: 4; + lc-l-with-tail: 5; + simplified-u: 6; + alt-double-s: 7; + uc-i-with-serif: 8; + uc-g-with-spur: 10; + single-story-a: 11; + compact-lc-f: 12; + compact-lc-t: 13; + } + @styleset { + ss01: 1; + ss02: 2; + ss03: 3; + ss04: 4; + ss05: 5; + ss06: 6; + ss07: 7; + ss08: 8; + open-digits: 1; + disambiguation: 2; + disambiguation-except-zero: 4; + round-quotes-and-commas: 3; + square-punctuation: 7; + square-quotes: 8; + circled-characters: 5; + squared-characters: 6; + } +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-Thin.woff2") format("woff2"); + font-weight: 100; + font-style: normal; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-ThinItalic.woff2") format("woff2"); + font-weight: 100; + font-style: italic; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-ExtraLight.woff2") format("woff2"); + font-weight: 200; + font-style: normal; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-ExtraLightItalic.woff2") format("woff2"); + font-weight: 200; + font-style: italic; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-Light.woff2") format("woff2"); + font-weight: 300; + font-style: normal; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-LightItalic.woff2") format("woff2"); + font-weight: 300; + font-style: italic; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-Regular.woff2") format("woff2"); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-Italic.woff2") format("woff2"); + font-weight: 400; + font-style: italic; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-Medium.woff2") format("woff2"); + font-weight: 500; + font-style: normal; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-MediumItalic.woff2") format("woff2"); + font-weight: 500; + font-style: italic; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-SemiBold.woff2") format("woff2"); + font-weight: 600; + font-style: normal; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-SemiBoldItalic.woff2") format("woff2"); + font-weight: 600; + font-style: italic; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-Bold.woff2") format("woff2"); + font-weight: 700; + font-style: normal; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-BoldItalic.woff2") format("woff2"); + font-weight: 700; + font-style: italic; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-ExtraBold.woff2") format("woff2"); + font-weight: 800; + font-style: normal; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-ExtraBoldItalic.woff2") format("woff2"); + font-weight: 800; + font-style: italic; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-ExtraBold.woff2") format("woff2"); + font-weight: 900; + font-style: normal; +} +@font-face { + font-family: "Jetbrains Mono"; + src: url("/public/fonts/JetBrainsMono-ExtraBoldItalic.woff2") format("woff2"); + font-weight: 900; + font-style: italic; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-ExtraLight.ttf") format("truetype"); + font-weight: 100; + font-style: normal; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-ExtraLight-Italic.ttf") format("truetype"); + font-weight: 100; + font-style: italic; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-ExtraLight.ttf") format("truetype"); + font-weight: 200; + font-style: normal; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-ExtraLight-Italic.ttf") format("truetype"); + font-weight: 200; + font-style: italic; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-Light.ttf") format("truetype"); + font-weight: 300; + font-style: normal; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-Light-Italic.ttf") format("truetype"); + font-weight: 300; + font-style: italic; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft.ttf") format("truetype"); + font-weight: 400; + font-style: normal; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-Italic.ttf") format("truetype"); + font-weight: 400; + font-style: italic; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft.ttf") format("truetype"); + font-weight: 500; + font-style: normal; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-Italic.ttf") format("truetype"); + font-weight: 500; + font-style: italic; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-SemiBold.ttf") format("truetype"); + font-weight: 600; + font-style: normal; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-SemiBold-Italic.ttf") format("truetype"); + font-weight: 600; + font-style: italic; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-Bold.ttf") format("truetype"); + font-weight: 700; + font-style: normal; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-Bold-Italic.ttf") format("truetype"); + font-weight: 700; + font-style: italic; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-Black.ttf") format("truetype"); + font-weight: 800; + font-style: normal; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-Black-Italic.ttf") format("truetype"); + font-weight: 800; + font-style: italic; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-Black.ttf") format("truetype"); + font-weight: 900; + font-style: normal; + size-adjust: 90%; +} +@font-face { + font-family: "Monocraft"; + src: url("/public/fonts/Monocraft-Black-Italic.ttf") format("truetype"); + font-weight: 900; + font-style: italic; + size-adjust: 90%; +} +@font-face { + font-family: "LowerPixelRegular"; + font-style: normal; + font-weight: normal; + src: local("LowerPixelRegular"), url("LowresPixel-Regular.woff") format("woff"); +} +@layer theme, base, components, utilities; +@layer theme { + :root, :host { + --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', Arial, + sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', + monospace; + --color-gray-700: oklch(37.3% 0.034 259.733); + --color-black: #000; + --color-white: #fff; + --spacing: 0.25rem; + --container-3xl: 48rem; + --font-weight-normal: 400; + --font-weight-bold: 700; + --leading-relaxed: 1.625; + --default-transition-duration: 150ms; + --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + --default-font-family: var(--font-sans); + --default-mono-font-family: var(--font-mono); + } +} +@layer base { + *, ::after, ::before, ::backdrop, ::file-selector-button { + box-sizing: border-box; + margin: 0; + padding: 0; + border: 0 solid; + } + html, :host { + line-height: 1.5; + -webkit-text-size-adjust: 100%; + tab-size: 4; + font-family: var(--default-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'); + font-feature-settings: var(--default-font-feature-settings, normal); + font-variation-settings: var(--default-font-variation-settings, normal); + -webkit-tap-highlight-color: transparent; + } + hr { + height: 0; + color: inherit; + border-top-width: 1px; + } + abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + } + h1, h2, h3, h4, h5, h6 { + font-size: inherit; + font-weight: inherit; + } + a { + color: inherit; + -webkit-text-decoration: inherit; + text-decoration: inherit; + } + b, strong { + font-weight: bolder; + } + code, kbd, samp, pre { + font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace); + font-feature-settings: var(--default-mono-font-feature-settings, normal); + font-variation-settings: var(--default-mono-font-variation-settings, normal); + font-size: 1em; + } + small { + font-size: 80%; + } + sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + sub { + bottom: -0.25em; + } + sup { + top: -0.5em; + } + table { + text-indent: 0; + border-color: inherit; + border-collapse: collapse; + } + :-moz-focusring:where(:not(iframe)) { + outline: auto; + } + progress { + vertical-align: baseline; + } + summary { + display: list-item; + } + ol, ul, menu { + list-style: none; + } + img, svg, video, canvas, audio, iframe, embed, object { + display: block; + vertical-align: middle; + } + img, video { + max-width: 100%; + height: auto; + } + button, input, select, optgroup, textarea, ::file-selector-button { + font: inherit; + font-feature-settings: inherit; + font-variation-settings: inherit; + letter-spacing: inherit; + color: inherit; + border-radius: 0; + background-color: transparent; + opacity: 1; + } + :where(select:is([multiple], [size])) optgroup { + font-weight: bolder; + } + :where(select:is([multiple], [size])) optgroup option { + padding-inline-start: 20px; + } + ::file-selector-button { + margin-inline-end: 4px; + } + ::placeholder { + opacity: 1; + } + @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) { + ::placeholder { + color: currentcolor; + @supports (color: color-mix(in lab, red, red)) { + color: color-mix(in oklab, currentcolor 50%, transparent); + } + } + } + textarea { + resize: vertical; + } + ::-webkit-search-decoration { + -webkit-appearance: none; + } + ::-webkit-date-and-time-value { + min-height: 1lh; + text-align: inherit; + } + ::-webkit-datetime-edit { + display: inline-flex; + } + ::-webkit-datetime-edit-fields-wrapper { + padding: 0; + } + ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field { + padding-block: 0; + } + ::-webkit-calendar-picker-indicator { + line-height: 1; + } + :-moz-ui-invalid { + box-shadow: none; + } + button, input:where([type='button'], [type='reset'], [type='submit']), ::file-selector-button { + appearance: button; + } + ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { + height: auto; + } + [hidden]:where(:not([hidden='until-found'])) { + display: none !important; + } +} +@layer utilities { + .invisible { + visibility: hidden; + } + .visible { + visibility: visible; + } + .absolute { + position: absolute; + } + .fixed { + position: fixed; + } + .relative { + position: relative; + } + .static { + position: static; + } + .inset-x-\[0\.3rem\] { + inset-inline: 0.3rem; + } + .top-1\/2 { + top: calc(1 / 2 * 100%); + } + .top-\[-0\.7em\] { + top: -0.7em; + } + .top-\[-0\.75rem\] { + top: -0.75rem; + } + .top-\[0\.6rem\] { + top: 0.6rem; + } + .right-\[0\.6rem\] { + right: 0.6rem; + } + .right-full { + right: 100%; + } + .bottom-\[-0\.7em\] { + bottom: -0.7em; + } + .bottom-\[-0\.55rem\] { + bottom: -0.55rem; + } + .bottom-\[-0\.75rem\] { + bottom: -0.75rem; + } + .left-\[0\.5em\] { + left: 0.5em; + } + .left-\[0\.625rem\] { + left: 0.625rem; + } + .z-10 { + z-index: 10; + } + .col-span-2 { + grid-column: span 2 / span 2; + } + .-m-\[0\.4rem\] { + margin: calc(0.4rem * -1); + } + .m-0 { + margin: 0px; + } + .m-\[-0\.1vw\] { + margin: -0.1vw; + } + .m-auto { + margin: auto; + } + .mx-\[0\.2vw\] { + margin-inline: 0.2vw; + } + .mx-\[1vw\] { + margin-inline: 1vw; + } + .my-\[-0\.15rem\] { + margin-block: -0.15rem; + } + .my-\[0\.625vw\] { + margin-block: 0.625vw; + } + .my-\[2\.5vw\] { + margin-block: 2.5vw; + } + .my-\[3vw\] { + margin-block: 3vw; + } + .my-\[5vw\] { + margin-block: 5vw; + } + .prose { + color: var(--tw-prose-body); + max-width: 65ch; + :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 1.25em; + margin-bottom: 1.25em; + } + :where([class~="lead"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-lead); + font-size: 1.25em; + line-height: 1.6; + margin-top: 1.2em; + margin-bottom: 1.2em; + } + :where(a):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-links); + text-decoration: underline; + font-weight: 500; + } + :where(strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-bold); + font-weight: 600; + } + :where(a strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(blockquote strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(thead th strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: decimal; + margin-top: 1.25em; + margin-bottom: 1.25em; + padding-inline-start: 1.625em; + } + :where(ol[type="A"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: upper-alpha; + } + :where(ol[type="a"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: lower-alpha; + } + :where(ol[type="A" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: upper-alpha; + } + :where(ol[type="a" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: lower-alpha; + } + :where(ol[type="I"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: upper-roman; + } + :where(ol[type="i"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: lower-roman; + } + :where(ol[type="I" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: upper-roman; + } + :where(ol[type="i" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: lower-roman; + } + :where(ol[type="1"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: decimal; + } + :where(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + list-style-type: disc; + margin-top: 1.25em; + margin-bottom: 1.25em; + padding-inline-start: 1.625em; + } + :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { + font-weight: 400; + color: var(--tw-prose-counters); + } + :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { + color: var(--tw-prose-bullets); + } + :where(dt):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + margin-top: 1.25em; + } + :where(hr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-color: var(--tw-prose-hr); + border-top-width: 1px; + margin-top: 3em; + margin-bottom: 3em; + } + :where(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 500; + font-style: italic; + color: var(--tw-prose-quotes); + border-inline-start-width: 0.25rem; + border-inline-start-color: var(--tw-prose-quote-borders); + quotes: "\201C""\201D""\2018""\2019"; + margin-top: 1.6em; + margin-bottom: 1.6em; + padding-inline-start: 1em; + } + :where(blockquote p:first-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { + content: open-quote; + } + :where(blockquote p:last-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { + content: close-quote; + } + :where(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 800; + font-size: 2.25em; + margin-top: 0; + margin-bottom: 0.8888889em; + line-height: 1.1111111; + } + :where(h1 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 900; + color: inherit; + } + :where(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 700; + font-size: 1.5em; + margin-top: 2em; + margin-bottom: 1em; + line-height: 1.3333333; + } + :where(h2 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 800; + color: inherit; + } + :where(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + font-size: 1.25em; + margin-top: 1.6em; + margin-bottom: 0.6em; + line-height: 1.6; + } + :where(h3 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 700; + color: inherit; + } + :where(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + margin-top: 1.5em; + margin-bottom: 0.5em; + line-height: 1.5; + } + :where(h4 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 700; + color: inherit; + } + :where(img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; + } + :where(picture):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + display: block; + margin-top: 2em; + margin-bottom: 2em; + } + :where(video):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; + } + :where(kbd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + font-weight: 500; + font-family: inherit; + color: var(--tw-prose-kbd); + box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows); + font-size: 0.875em; + border-radius: 0.3125rem; + padding-top: 0.1875em; + padding-inline-end: 0.375em; + padding-bottom: 0.1875em; + padding-inline-start: 0.375em; + } + :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-code); + font-weight: 600; + font-size: 0.875em; + } + :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { + content: "`"; + } + :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { + content: "`"; + } + :where(a code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(h1 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(h2 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + font-size: 0.875em; + } + :where(h3 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + font-size: 0.9em; + } + :where(h4 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(blockquote code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(thead th code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: inherit; + } + :where(pre):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-pre-code); + background-color: var(--tw-prose-pre-bg); + overflow-x: auto; + font-weight: 400; + font-size: 0.875em; + line-height: 1.7142857; + margin-top: 1.7142857em; + margin-bottom: 1.7142857em; + border-radius: 0.375rem; + padding-top: 0.8571429em; + padding-inline-end: 1.1428571em; + padding-bottom: 0.8571429em; + padding-inline-start: 1.1428571em; + } + :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + background-color: transparent; + border-width: 0; + border-radius: 0; + padding: 0; + font-weight: inherit; + color: inherit; + font-size: inherit; + font-family: inherit; + line-height: inherit; + } + :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { + content: none; + } + :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { + content: none; + } + :where(table):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + width: 100%; + table-layout: auto; + margin-top: 2em; + margin-bottom: 2em; + font-size: 0.875em; + line-height: 1.7142857; + } + :where(thead):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-th-borders); + } + :where(thead th):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + vertical-align: bottom; + padding-inline-end: 0.5714286em; + padding-bottom: 0.5714286em; + padding-inline-start: 0.5714286em; + } + :where(tbody tr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-td-borders); + } + :where(tbody tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-bottom-width: 0; + } + :where(tbody td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + vertical-align: baseline; + } + :where(tfoot):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + border-top-width: 1px; + border-top-color: var(--tw-prose-th-borders); + } + :where(tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + vertical-align: top; + } + :where(th, td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + text-align: start; + } + :where(figure > *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + margin-bottom: 0; + } + :where(figcaption):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + color: var(--tw-prose-captions); + font-size: 0.875em; + line-height: 1.4285714; + margin-top: 0.8571429em; + } + --tw-prose-body: oklch(37.3% 0.034 259.733); + --tw-prose-headings: oklch(21% 0.034 264.665); + --tw-prose-lead: oklch(44.6% 0.03 256.802); + --tw-prose-links: oklch(21% 0.034 264.665); + --tw-prose-bold: oklch(21% 0.034 264.665); + --tw-prose-counters: oklch(55.1% 0.027 264.364); + --tw-prose-bullets: oklch(87.2% 0.01 258.338); + --tw-prose-hr: oklch(92.8% 0.006 264.531); + --tw-prose-quotes: oklch(21% 0.034 264.665); + --tw-prose-quote-borders: oklch(92.8% 0.006 264.531); + --tw-prose-captions: oklch(55.1% 0.027 264.364); + --tw-prose-kbd: oklch(21% 0.034 264.665); + --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.034 264.665) 10%, transparent); + --tw-prose-code: oklch(21% 0.034 264.665); + --tw-prose-pre-code: oklch(92.8% 0.006 264.531); + --tw-prose-pre-bg: oklch(27.8% 0.033 256.848); + --tw-prose-th-borders: oklch(87.2% 0.01 258.338); + --tw-prose-td-borders: oklch(92.8% 0.006 264.531); + --tw-prose-invert-body: oklch(87.2% 0.01 258.338); + --tw-prose-invert-headings: #fff; + --tw-prose-invert-lead: oklch(70.7% 0.022 261.325); + --tw-prose-invert-links: #fff; + --tw-prose-invert-bold: #fff; + --tw-prose-invert-counters: oklch(70.7% 0.022 261.325); + --tw-prose-invert-bullets: oklch(44.6% 0.03 256.802); + --tw-prose-invert-hr: oklch(37.3% 0.034 259.733); + --tw-prose-invert-quotes: oklch(96.7% 0.003 264.542); + --tw-prose-invert-quote-borders: oklch(37.3% 0.034 259.733); + --tw-prose-invert-captions: oklch(70.7% 0.022 261.325); + --tw-prose-invert-kbd: #fff; + --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%); + --tw-prose-invert-code: #fff; + --tw-prose-invert-pre-code: oklch(87.2% 0.01 258.338); + --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%); + --tw-prose-invert-th-borders: oklch(44.6% 0.03 256.802); + --tw-prose-invert-td-borders: oklch(37.3% 0.034 259.733); + font-size: 1rem; + line-height: 1.75; + :where(picture > img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + margin-bottom: 0; + } + :where(li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0.5em; + margin-bottom: 0.5em; + } + :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-start: 0.375em; + } + :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-start: 0.375em; + } + :where(.prose > ul > li p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0.75em; + margin-bottom: 0.75em; + } + :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 1.25em; + } + :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-bottom: 1.25em; + } + :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 1.25em; + } + :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-bottom: 1.25em; + } + :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0.75em; + margin-bottom: 0.75em; + } + :where(dl):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 1.25em; + margin-bottom: 1.25em; + } + :where(dd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0.5em; + padding-inline-start: 1.625em; + } + :where(hr + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + } + :where(h2 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + } + :where(h3 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + } + :where(h4 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + } + :where(thead th:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-start: 0; + } + :where(thead th:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-end: 0; + } + :where(tbody td, tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-top: 0.5714286em; + padding-inline-end: 0.5714286em; + padding-bottom: 0.5714286em; + padding-inline-start: 0.5714286em; + } + :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-start: 0; + } + :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + padding-inline-end: 0; + } + :where(figure):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; + } + :where(.prose > :first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-top: 0; + } + :where(.prose > :last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + margin-bottom: 0; + } + } + .mt-\[0\.5rem\] { + margin-top: 0.5rem; + } + .mt-\[0\.625vw\] { + margin-top: 0.625vw; + } + .mt-\[1rem\] { + margin-top: 1rem; + } + .mt-\[1vw\] { + margin-top: 1vw; + } + .mt-\[8vw\] { + margin-top: 8vw; + } + .mt-\[10vw\] { + margin-top: 10vw; + } + .mr-2 { + margin-right: calc(var(--spacing) * 2); + } + .mr-\[0\.1vw\] { + margin-right: 0.1vw; + } + .mr-\[2\.5vh\] { + margin-right: 2.5vh; + } + .mb-0 { + margin-bottom: 0px; + } + .mb-6 { + margin-bottom: calc(var(--spacing) * 6); + } + .mb-\[0\.30rem\] { + margin-bottom: 0.30rem; + } + .mb-\[1\.5rem\] { + margin-bottom: 1.5rem; + } + .mb-\[1\.5625vw\] { + margin-bottom: 1.5625vw; + } + .mb-\[1rem\] { + margin-bottom: 1rem; + } + .mb-\[5vw\] { + margin-bottom: 5vw; + } + .mb-\[7vw\] { + margin-bottom: 7vw; + } + .-ml-\[0\.1rem\] { + margin-left: calc(0.1rem * -1); + } + .ml-\[-4vw\] { + margin-left: -4vw; + } + .ml-auto { + margin-left: auto; + } + .block { + display: block; + } + .flex { + display: flex; + } + .grid { + display: grid; + } + .hidden { + display: none; + } + .inline-block { + display: inline-block; + } + .inline-flex { + display: inline-flex; + } + .table { + display: table; + } + .h-0 { + height: 0px; + } + .h-38 { + height: calc(var(--spacing) * 38); + } + .h-\[9\.5vw\] { + height: 9.5vw; + } + .h-\[40rem\] { + height: 40rem; + } + .h-\[62\%\] { + height: 62%; + } + .h-\[80svh\] { + height: 80svh; + } + .h-\[85svh\] { + height: 85svh; + } + .h-\[97vh\] { + height: 97vh; + } + .h-\[100\%\] { + height: 100%; + } + .h-full { + height: 100%; + } + .max-h-\[80svh\] { + max-height: 80svh; + } + .min-h-0 { + min-height: 0px; + } + .w-0 { + width: 0px; + } + .w-8 { + width: calc(var(--spacing) * 8); + } + .w-\[30\%\] { + width: 30%; + } + .w-\[67\%\] { + width: 67%; + } + .w-\[70\%\] { + width: 70%; + } + .w-\[75rem\] { + width: 75rem; + } + .w-\[95vw\] { + width: 95vw; + } + .w-\[100\%\] { + width: 100%; + } + .w-\[334\%\] { + width: 334%; + } + .w-full { + width: 100%; + } + .max-w-3xl { + max-width: var(--container-3xl); + } + .min-w-0 { + min-width: 0px; + } + .flex-1 { + flex: 1; + } + .shrink-0 { + flex-shrink: 0; + } + .-translate-y-1\/2 { + --tw-translate-y: calc(calc(1 / 2 * 100%) * -1); + translate: var(--tw-translate-x) var(--tw-translate-y); + } + .scale-150 { + --tw-scale-x: 150%; + --tw-scale-y: 150%; + --tw-scale-z: 150%; + scale: var(--tw-scale-x) var(--tw-scale-y); + } + .transform { + transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,); + } + .cursor-grab { + cursor: grab; + } + .cursor-pointer { + cursor: pointer; + } + .touch-none { + touch-action: none; + } + .resize { + resize: both; + } + .\[scrollbar-width\:none\] { + scrollbar-width: none; + } + .grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .grid-cols-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + .grid-cols-\[29\%_1fr\] { + grid-template-columns: 29% 1fr; + } + .flex-col { + flex-direction: column; + } + .flex-wrap { + flex-wrap: wrap; + } + .items-baseline { + align-items: baseline; + } + .items-center { + align-items: center; + } + .justify-between { + justify-content: space-between; + } + .gap-4 { + gap: calc(var(--spacing) * 4); + } + .gap-8 { + gap: calc(var(--spacing) * 8); + } + .gap-10 { + gap: calc(var(--spacing) * 10); + } + .gap-16 { + gap: calc(var(--spacing) * 16); + } + .gap-\[0\.5rem\] { + gap: 0.5rem; + } + .gap-\[0\.0625rem\] { + gap: 0.0625rem; + } + .gap-\[1\.25vw\] { + gap: 1.25vw; + } + .gap-\[1ch\] { + gap: 1ch; + } + .gap-x-4 { + column-gap: calc(var(--spacing) * 4); + } + .gap-x-8 { + column-gap: calc(var(--spacing) * 8); + } + .gap-x-\[1ch\] { + column-gap: 1ch; + } + .gap-x-\[1rem\] { + column-gap: 1rem; + } + .gap-x-\[2rem\] { + column-gap: 2rem; + } + .gap-x-\[5vw\] { + column-gap: 5vw; + } + :where(.space-x-\[1\.25vw\] > :not(:last-child)) { + --tw-space-x-reverse: 0; + margin-inline-start: calc(1.25vw * var(--tw-space-x-reverse)); + margin-inline-end: calc(1.25vw * calc(1 - var(--tw-space-x-reverse))); + } + .gap-y-2 { + row-gap: calc(var(--spacing) * 2); + } + .gap-y-4 { + row-gap: calc(var(--spacing) * 4); + } + .gap-y-\[0\.4rem\] { + row-gap: 0.4rem; + } + .self-center { + align-self: center; + } + .self-start { + align-self: flex-start; + } + .truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .overflow-auto { + overflow: auto; + } + .overflow-hidden { + overflow: hidden; + } + .overflow-x-hidden { + overflow-x: hidden; + } + .overflow-y-auto { + overflow-y: auto; + } + .rounded-\[0\.3rem\] { + border-radius: 0.3rem; + } + .rounded-\[0\.4rem\] { + border-radius: 0.4rem; + } + .border { + border-style: var(--tw-border-style); + border-width: 1px; + } + .border-\[0\.01rem\] { + border-style: var(--tw-border-style); + border-width: 0.01rem; + } + .border-\[0\.1rem\] { + border-style: var(--tw-border-style); + border-width: 0.1rem; + } + .border-\[0\.1vw\] { + border-style: var(--tw-border-style); + border-width: 0.1vw; + } + .border-\[0\.2rem\] { + border-style: var(--tw-border-style); + border-width: 0.2rem; + } + .border-\[0\.05rem\] { + border-style: var(--tw-border-style); + border-width: 0.05rem; + } + .border-\[0\.25vh\] { + border-style: var(--tw-border-style); + border-width: 0.25vh; + } + .border-\[0\.125rem\] { + border-style: var(--tw-border-style); + border-width: 0.125rem; + } + .border-solid { + --tw-border-style: solid; + border-style: solid; + } + .border-\(--accent\)\! { + border-color: var(--accent) !important; + } + .border-\(--alt\) { + border-color: var(--alt); + } + .border-\(--alt\)\/30 { + border-color: var(--alt); + @supports (color: color-mix(in lab, red, red)) { + border-color: color-mix(in oklab, var(--alt) 30%, transparent); + } + } + .border-\(--secondary\)\/60 { + border-color: var(--secondary); + @supports (color: color-mix(in lab, red, red)) { + border-color: color-mix(in oklab, var(--secondary) 60%, transparent); + } + } + .border-\(--text\) { + border-color: var(--text); + } + .border-\[color\:var\(--alt\)\] { + border-color: var(--alt); + } + .border-\[var\(--alt\)\] { + border-color: var(--alt); + } + .bg-\(--alt\)\/25 { + background-color: var(--alt); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--alt) 25%, transparent); + } + } + .bg-\(--background\) { + background-color: var(--background); + } + .bg-\(--extra\)\/70 { + background-color: var(--extra); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--extra) 70%, transparent); + } + } + .bg-\(--secondary\) { + background-color: var(--secondary); + } + .bg-\[var\(--background\)\] { + background-color: var(--background); + } + .bg-\[var\(--text\)\] { + background-color: var(--text); + } + .bg-black\/20 { + background-color: color-mix(in srgb, #000 20%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-black) 20%, transparent); + } + } + .bg-black\/30 { + background-color: color-mix(in srgb, #000 30%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-black) 30%, transparent); + } + } + .bg-white\/2 { + background-color: color-mix(in srgb, #fff 2%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-white) 2%, transparent); + } + } + .bg-white\/\[0\.03\] { + background-color: color-mix(in srgb, #fff 3%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-white) 3%, transparent); + } + } + .bg-\[linear-gradient\(to_bottom\,\#181825\,var\(--background\)\)\] { + background-image: linear-gradient(to bottom,#181825,var(--background)); + } + .bg-\[linear-gradient\(to_bottom\,var\(--background\)\,var\(--cmp-bg\,transparent\)\)\] { + background-image: linear-gradient(to bottom,var(--background),var(--cmp-bg,transparent)); + } + .fill-\[\#7ed4fb\]\/50 { + fill: color-mix(in oklab, #7ed4fb 50%, transparent); + } + .stroke-\[var\(--alt\)\] { + stroke: var(--alt); + } + .stroke-\[var\(--primary\)\] { + stroke: var(--primary); + } + .object-cover { + object-fit: cover; + } + .p-0 { + padding: 0px; + } + .p-4 { + padding: calc(var(--spacing) * 4); + } + .p-8 { + padding: calc(var(--spacing) * 8); + } + .p-\[0\.2rem\] { + padding: 0.2rem; + } + .p-\[0\.4rem\] { + padding: 0.4rem; + } + .p-\[0\.8em\] { + padding: 0.8em; + } + .p-\[1rem\] { + padding: 1rem; + } + .p-\[2\.2svh\] { + padding: 2.2svh; + } + .p-\[3vw\] { + padding: 3vw; + } + .px-3\.5 { + padding-inline: calc(var(--spacing) * 3.5); + } + .px-\[0\.1vw\] { + padding-inline: 0.1vw; + } + .px-\[0\.4rem\] { + padding-inline: 0.4rem; + } + .px-\[0\.5em\] { + padding-inline: 0.5em; + } + .px-\[0\.6rem\] { + padding-inline: 0.6rem; + } + .px-\[0\.625rem\] { + padding-inline: 0.625rem; + } + .py-\(--ypad\) { + padding-block: var(--ypad); + } + .py-2 { + padding-block: calc(var(--spacing) * 2); + } + .py-16 { + padding-block: calc(var(--spacing) * 16); + } + .py-\[0\.1rem\] { + padding-block: 0.1rem; + } + .py-\[0\.625vw\] { + padding-block: 0.625vw; + } + .pt-3 { + padding-top: calc(var(--spacing) * 3); + } + .pt-\[1\.0625em\] { + padding-top: 1.0625em; + } + .pt-\[1vw\] { + padding-top: 1vw; + } + .pt-\[5vw\] { + padding-top: 5vw; + } + .pt-\[calc\(var\(--ypad\)\+0\.0625rem\)\] { + padding-top: calc(var(--ypad) + 0.0625rem); + } + .pr-\[1\.25vw\] { + padding-right: 1.25vw; + } + .text-left { + text-align: left; + } + .text-right { + text-align: right; + } + .font-\(family-name\:--font-normal\) { + font-family: var(--font-normal); + } + .font-\[\'JetBrains_Mono\'\] { + font-family: 'JetBrains Mono'; + } + .font-mono { + font-family: var(--font-mono); + } + .text-\[0\.6rem\] { + font-size: 0.6rem; + } + .text-\[0\.8rem\] { + font-size: 0.8rem; + } + .text-\[0\.96vw\] { + font-size: 0.96vw; + } + .text-\[0\.675rem\] { + font-size: 0.675rem; + } + .text-\[1\.125rem\] { + font-size: 1.125rem; + } + .text-\[1\.375rem\] { + font-size: 1.375rem; + } + .text-\[1rem\] { + font-size: 1rem; + } + .text-\[2\.5vw\] { + font-size: 2.5vw; + } + .text-\[3\.5vw\] { + font-size: 3.5vw; + } + .text-\[3vw\] { + font-size: 3vw; + } + .text-\[5vw\] { + font-size: 5vw; + } + .text-\[17\.6px\] { + font-size: 17.6px; + } + .text-\[60\%\] { + font-size: 60%; + } + .text-\[75\%\] { + font-size: 75%; + } + .text-\[80\%\] { + font-size: 80%; + } + .text-\[85\%\] { + font-size: 85%; + } + .text-\[90\%\] { + font-size: 90%; + } + .text-\[95\%\] { + font-size: 95%; + } + .text-\[110\%\] { + font-size: 110%; + } + .text-\[130\%\] { + font-size: 130%; + } + .text-\[170\%\] { + font-size: 170%; + } + .leading-\[1\.7\] { + --tw-leading: 1.7; + line-height: 1.7; + } + .leading-\[1\.32\] { + --tw-leading: 1.32; + line-height: 1.32; + } + .leading-\[normal\] { + --tw-leading: normal; + line-height: normal; + } + .leading-relaxed { + --tw-leading: var(--leading-relaxed); + line-height: var(--leading-relaxed); + } + .font-bold { + --tw-font-weight: var(--font-weight-bold); + font-weight: var(--font-weight-bold); + } + .font-normal { + --tw-font-weight: var(--font-weight-normal); + font-weight: var(--font-weight-normal); + } + .wrap-anywhere { + overflow-wrap: anywhere; + } + .whitespace-nowrap { + white-space: nowrap; + } + .text-\(--accent\) { + color: var(--accent); + } + .text-\(--alt\) { + color: var(--alt); + } + .text-\(--alt\)\/80 { + color: var(--alt); + @supports (color: color-mix(in lab, red, red)) { + color: color-mix(in oklab, var(--alt) 80%, transparent); + } + } + .text-\(--background\) { + color: var(--background); + } + .text-\(--primary\) { + color: var(--primary); + } + .text-\(--secondary\) { + color: var(--secondary); + } + .text-\[\#00ADD7\] { + color: #00ADD7; + } + .text-\[\#00f1ff\] { + color: #00f1ff; + } + .text-\[\#5C6CC1\] { + color: #5C6CC1; + } + .text-\[\#46d46c\] { + color: #46d46c; + } + .text-\[\#54D7A9\] { + color: #54D7A9; + } + .text-\[\#739ebb\] { + color: #739ebb; + } + .text-\[\#897ccb\] { + color: #897ccb; + } + .text-\[\#5874FF\] { + color: #5874FF; + } + .text-\[\#BDC3C7\] { + color: #BDC3C7; + } + .text-\[\#C7727F\] { + color: #C7727F; + } + .text-\[\#D8C44B\] { + color: #D8C44B; + } + .text-\[\#D27D9B\] { + color: #D27D9B; + } + .text-\[\#ED532D\] { + color: #ED532D; + } + .text-\[\#F5A670\] { + color: #F5A670; + } + .text-\[\#F9B010\] { + color: #F9B010; + } + .text-\[\#F16265\] { + color: #F16265; + } + .text-\[\#FF8019\] { + color: #FF8019; + } + .text-\[\#FFFFFF\] { + color: #FFFFFF; + } + .text-\[\#a34eeb\] { + color: #a34eeb; + } + .text-\[\%v\] { + color: %v; + } + .text-\[color\:var\(--alt\)\] { + color: var(--alt); + } + .text-\[var\(--accent\)\] { + color: var(--accent); + } + .text-\[var\(--secondary\)\] { + color: var(--secondary); + } + .no-underline { + text-decoration-line: none; + } + .opacity-0 { + opacity: 0%; + } + .shadow-\[0_0_1\.5rem_color-mix\(in_srgb\,var\(--accent\)_25\%\,transparent\)\] { + --tw-shadow: 0 0 1.5rem var(--tw-shadow-color, var(--accent)); + @supports (color: color-mix(in lab, red, red)) { + --tw-shadow: 0 0 1.5rem var(--tw-shadow-color, color-mix(in srgb,var(--accent) 25%,transparent)); + } + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + .transition-colors { + transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + } + .duration-150 { + --tw-duration: 150ms; + transition-duration: 150ms; + } + .select-text { + -webkit-user-select: text; + user-select: text; + } + .\[--border-py\:0\.5rem\] { + --border-py: 0.5rem; + } + .\[--border-py\:0\.25rem\] { + --border-py: 0.25rem; + } + .\[--border-py\:0\.75rem\] { + --border-py: 0.75rem; + } + .\[--border-py\:0\.875rem\] { + --border-py: 0.875rem; + } + .\[--border-py\:1\.25rem\] { + --border-py: 1.25rem; + } + .\[--ypad\:var\(--border-py\,0\.875rem\)\] { + --ypad: var(--border-py,0.875rem); + } + @media (hover: hover) { + .group-hover\:text-\[var\(--alt\)\]:is(:where(.group):hover *) { + color: var(--alt); + } + .group-hover\:text-gray-700:is(:where(.group):hover *) { + color: var(--color-gray-700); + } + .group-hover\:underline:is(:where(.group):hover *) { + text-decoration-line: underline; + } + } + .group-data-copied\:block:is(:where(.group)[data-copied] *) { + display: block; + } + .group-data-copied\/copy\:block:is(:where(.group\/copy)[data-copied] *) { + display: block; + } + .group-data-copied\/copy\:bg-\(--primary\)\/25\!:is(:where(.group\/copy)[data-copied] *) { + background-color: var(--primary) !important; + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--primary) 25%, transparent) !important; + } + } + .after\:absolute::after { + content: var(--tw-content); + position: absolute; + } + .after\:inset-0::after { + content: var(--tw-content); + inset: 0px; + } + .after\:z-0::after { + content: var(--tw-content); + z-index: 0; + } + @media (hover: hover) { + .hover\:bg-\(--alt\)\/25:hover { + background-color: var(--alt); + } + @supports (color: color-mix(in lab, red, red)) { + .hover\:bg-\(--alt\)\/25:hover { + background-color: color-mix(in oklab, var(--alt) 25%, transparent); + } + } + .hover\:bg-\(--secondary\)\/15:hover { + background-color: var(--secondary); + } + @supports (color: color-mix(in lab, red, red)) { + .hover\:bg-\(--secondary\)\/15:hover { + background-color: color-mix(in oklab, var(--secondary) 15%, transparent); + } + } + .hover\:bg-white\/5:hover { + background-color: color-mix(in srgb, #fff 5%, transparent); + } + @supports (color: color-mix(in lab, red, red)) { + .hover\:bg-white\/5:hover { + background-color: color-mix(in oklab, var(--color-white) 5%, transparent); + } + } + .hover\:bg-white\/10:hover { + background-color: color-mix(in srgb, #fff 10%, transparent); + } + @supports (color: color-mix(in lab, red, red)) { + .hover\:bg-white\/10:hover { + background-color: color-mix(in oklab, var(--color-white) 10%, transparent); + } + } + .hover\:text-\(--accent\):hover { + color: var(--accent); + } + .hover\:text-\[var\(--alt\)\]:hover { + color: var(--alt); + } + .hover\:text-\[var\(--secondary\)\]:hover { + color: var(--secondary); + } + .hover\:text-gray-700:hover { + color: var(--color-gray-700); + } + .hover\:no-underline:hover { + text-decoration-line: none; + } + .hover\:underline:hover { + text-decoration-line: underline; + } + } + .data-copied\:animate-\[bump_0\.25s\][data-copied] { + animation: bump 0.25s; + } + .data-copied\:bg-\(--primary\)\/25\![data-copied] { + background-color: var(--primary) !important; + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--primary) 25%, transparent) !important; + } + } + @media (width >= 40rem) { + .sm\:invisible { + visibility: hidden; + } + .sm\:visible { + visibility: visible; + } + .sm\:top-\[-0\.75vw\] { + top: -0.75vw; + } + .sm\:bottom-\[-0\.75vw\] { + bottom: -0.75vw; + } + .sm\:left-\[0\.625vw\] { + left: 0.625vw; + } + .sm\:col-span-2 { + grid-column: span 2 / span 2; + } + .sm\:m-0 { + margin: 0px; + } + .sm\:my-\[0\.625vw\] { + margin-block: 0.625vw; + } + .sm\:my-\[2\.5vw\] { + margin-block: 2.5vw; + } + .sm\:my-\[2\.25vw\] { + margin-block: 2.25vw; + } + .sm\:mt-\[0\.625vw\] { + margin-top: 0.625vw; + } + .sm\:mt-\[0vw\] { + margin-top: 0vw; + } + .sm\:mr-0 { + margin-right: 0px; + } + .sm\:mr-\[2\.5vw\] { + margin-right: 2.5vw; + } + .sm\:mb-\[1\.5625vw\] { + margin-bottom: 1.5625vw; + } + .sm\:mb-\[2vw\] { + margin-bottom: 2vw; + } + .sm\:contents { + display: contents; + } + .sm\:flex { + display: flex; + } + .sm\:grid { + display: grid; + } + .sm\:h-0 { + height: 0px; + } + .sm\:h-\[30vw\] { + height: 30vw; + } + .sm\:h-\[35vw\] { + height: 35vw; + } + .sm\:h-\[38vw\] { + height: 38vw; + } + .sm\:h-full { + height: 100%; + } + .sm\:max-h-\[24vw\] { + max-height: 24vw; + } + .sm\:w-0 { + width: 0px; + } + .sm\:w-\[40\%\] { + width: 40%; + } + .sm\:w-\[60\%\] { + width: 60%; + } + .sm\:w-\[68\.75vw\] { + width: 68.75vw; + } + .sm\:w-full { + width: 100%; + } + .sm\:grid-cols-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + .sm\:grid-cols-\[1fr_1fr_1fr\] { + grid-template-columns: 1fr 1fr 1fr; + } + .sm\:grid-cols-\[2fr_3fr\] { + grid-template-columns: 2fr 3fr; + } + .sm\:gap-\[1\.25vw\] { + gap: 1.25vw; + } + .sm\:gap-x-\[0\.625vw\] { + column-gap: 0.625vw; + } + .sm\:overflow-visible { + overflow: visible; + } + .sm\:border-\[0\.1vw\] { + border-style: var(--tw-border-style); + border-width: 0.1vw; + } + .sm\:border-\[0\.2vw\] { + border-style: var(--tw-border-style); + border-width: 0.2vw; + } + .sm\:border-\[0\.125vw\] { + border-style: var(--tw-border-style); + border-width: 0.125vw; + } + .sm\:border-solid { + --tw-border-style: solid; + border-style: solid; + } + .sm\:p-\[1vw\] { + padding: 1vw; + } + .sm\:p-\[2\.2vw\] { + padding: 2.2vw; + } + .sm\:px-\[0\.625vw\] { + padding-inline: 0.625vw; + } + .sm\:pt-0 { + padding-top: 0px; + } + .sm\:pt-\[1\.0625vw\] { + padding-top: 1.0625vw; + } + .sm\:pl-\[1\.25vw\] { + padding-left: 1.25vw; + } + .sm\:text-\[1\.125vw\] { + font-size: 1.125vw; + } + .sm\:text-\[1\.375vw\] { + font-size: 1.375vw; + } + .sm\:text-\[1vw\] { + font-size: 1vw; + } + .sm\:text-\[100\%\] { + font-size: 100%; + } + } + @media (width >= 48rem) { + .md\:grid-cols-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + } + .\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar { + display: none; + } + .\[\&\>\*\+\*\]\:mt-\[-0\.1rem\] > * + * { + margin-top: -0.1rem; + } +} +:root { + --primary: #54d7a9; + --secondary: #9b7eca; + --accent: #7ed4fb; + --extra: #8fcc75; + --text: #ffffff; + --alt: #999999; + --background: #000000; + --font-mono: "Jetbrains Mono", monospace; + --font-normal: "Inter", system-ui, sans-serif; +} +html { + background-color: var(--background); + color: var(--text); + font-family: var(--font-mono); + user-select: none; + font-size: 1vw; +} +body { + min-height: 100vh; + display: grid; + place-items: center; +} +@layer base { + a { + font-weight: 300; + text-decoration: none; + color: var(--secondary); + transition-duration: 0.2s; + transition-property: color, text-decoration; + } + a:hover { + text-decoration: underline; + color: var(--accent); + } +} +.scrollbox::-webkit-scrollbar { + width: 1.5rem; +} +.scrollbox::-webkit-scrollbar-track { + background: transparent; + border-left: 0.1rem solid var(--alt); +} +.scrollbox::-webkit-scrollbar-thumb { + background: var(--primary); + border: 0.3rem solid transparent; + background-clip: padding-box; + border-radius: 0; +} +.scrollbox::-webkit-scrollbar-thumb:hover { + background: var(--accent); +} +@supports not selector(::-webkit-scrollbar) { + .scrollbox { + scrollbar-color: var(--primary) transparent; + } +} +.prose { + --tw-prose-body: var(--text); + --tw-prose-headings: var(--primary); + --tw-prose-links: var(--secondary); + --tw-prose-bold: var(--text); + --tw-prose-bullets: var(--alt); + --tw-prose-counters: var(--alt); + --tw-prose-hr: var(--alt); + --tw-prose-quotes: var(--text); + --tw-prose-quote-borders: var(--alt); + --tw-prose-captions: var(--alt); + --tw-prose-code: var(--extra); + --tw-prose-pre-code: var(--text); + --tw-prose-pre-bg: rgb(0 0 0 / 0.3); + --tw-prose-th-borders: var(--alt); + --tw-prose-td-borders: var(--alt); +} +.prose a.footnote-ref, .prose a.footnote-ref:hover { + text-decoration: none; +} +.prose code::before, .prose code::after { + content: none; +} +.prose :not(pre) > code { + padding: 0.1em 0.4em; + border-radius: 0.3em; + background: var(--alt); + @supports (color: color-mix(in lab, red, red)) { + background: color-mix(in srgb, var(--alt) 25%, transparent); + } + font-size: 0.9em; +} +.prose pre, .prose code { + font-family: var(--font-mono); +} +.js .footnotes { + display: none; +} +.sidenotes { + position: fixed; + overflow: hidden; + pointer-events: none; +} +.sidenote { + position: absolute; + left: 0; + right: 0; + background: var(--background); + font-family: var(--font-normal); + font-size: 16px; + line-height: 1.4; + pointer-events: auto; +} +.sidenotes.bordered .sidenote { + border: 0.1rem solid var(--alt); + padding: 0.4rem 0.6rem; +} +.sidenote-num { + font-size: 70%; + color: var(--secondary); + margin-right: 0.15em; +} +.chroma .k, .chroma .kc, .chroma .kd, .chroma .kn, .chroma .kp, .chroma .kr, .chroma .kt { + color: var(--secondary); +} +.chroma .nf, .chroma .nc, .chroma .nb { + color: var(--primary); +} +.chroma .s, .chroma .sa, .chroma .sb, .chroma .sc, .chroma .dl, .chroma .sd, .chroma .s2, .chroma .se, .chroma .sh, .chroma .si, .chroma .sx, .chroma .sr, .chroma .s1, .chroma .ss { + color: var(--extra); +} +.chroma .m, .chroma .mb, .chroma .mf, .chroma .mh, .chroma .mi, .chroma .il, .chroma .mo { + color: var(--primary); +} +.chroma .c, .chroma .ch, .chroma .cm, .chroma .c1, .chroma .cs, .chroma .cp, .chroma .cpf { + color: var(--alt); + font-style: italic; +} +.codeblock { + margin: 1.2em 0; + border: 0.1rem solid var(--alt); + border-radius: 0.4rem; + background: rgb(0 0 0 / 0.3); + overflow: hidden; +} +.codeblock::before { + content: attr(data-lang); + display: block; + padding: 0.2em 0.8em; + border-bottom: 0.1rem solid var(--alt); + font-size: 0.75em; + color: var(--alt); +} +.codeblock[data-lang=""]::before { + display: none; +} +.codeblock pre { + margin: 0; + padding: 0.8em 1em; + background: transparent; + border-radius: 0; + overflow-x: auto; + font-size: 0.85em; + line-height: 1.5; +} +@keyframes pop { + 50% { + transform: scale(1.3); + } +} +[data-copied] svg { + animation: pop 0.25s; +} +@keyframes bump { + 50% { + transform: scale(1.03); + } +} +@property --tw-translate-x { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-translate-y { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-translate-z { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-scale-x { + syntax: "*"; + inherits: false; + initial-value: 1; +} +@property --tw-scale-y { + syntax: "*"; + inherits: false; + initial-value: 1; +} +@property --tw-scale-z { + syntax: "*"; + inherits: false; + initial-value: 1; +} +@property --tw-rotate-x { + syntax: "*"; + inherits: false; +} +@property --tw-rotate-y { + syntax: "*"; + inherits: false; +} +@property --tw-rotate-z { + syntax: "*"; + inherits: false; +} +@property --tw-skew-x { + syntax: "*"; + inherits: false; +} +@property --tw-skew-y { + syntax: "*"; + inherits: false; +} +@property --tw-space-x-reverse { + syntax: "*"; + inherits: false; + initial-value: 0; +} +@property --tw-border-style { + syntax: "*"; + inherits: false; + initial-value: solid; +} +@property --tw-leading { + syntax: "*"; + inherits: false; +} +@property --tw-font-weight { + syntax: "*"; + inherits: false; +} +@property --tw-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-shadow-color { + syntax: "*"; + inherits: false; +} +@property --tw-shadow-alpha { + syntax: "<percentage>"; + inherits: false; + initial-value: 100%; +} +@property --tw-inset-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-inset-shadow-color { + syntax: "*"; + inherits: false; +} +@property --tw-inset-shadow-alpha { + syntax: "<percentage>"; + inherits: false; + initial-value: 100%; +} +@property --tw-ring-color { + syntax: "*"; + inherits: false; +} +@property --tw-ring-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-inset-ring-color { + syntax: "*"; + inherits: false; +} +@property --tw-inset-ring-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-ring-inset { + syntax: "*"; + inherits: false; +} +@property --tw-ring-offset-width { + syntax: "<length>"; + inherits: false; + initial-value: 0px; +} +@property --tw-ring-offset-color { + syntax: "*"; + inherits: false; + initial-value: #fff; +} +@property --tw-ring-offset-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-duration { + syntax: "*"; + inherits: false; +} +@property --tw-content { + syntax: "*"; + initial-value: ""; + inherits: false; +} +@layer properties { + @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { + *, ::before, ::after, ::backdrop { + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-translate-z: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-scale-z: 1; + --tw-rotate-x: initial; + --tw-rotate-y: initial; + --tw-rotate-z: initial; + --tw-skew-x: initial; + --tw-skew-y: initial; + --tw-space-x-reverse: 0; + --tw-border-style: solid; + --tw-leading: initial; + --tw-font-weight: initial; + --tw-shadow: 0 0 #0000; + --tw-shadow-color: initial; + --tw-shadow-alpha: 100%; + --tw-inset-shadow: 0 0 #0000; + --tw-inset-shadow-color: initial; + --tw-inset-shadow-alpha: 100%; + --tw-ring-color: initial; + --tw-ring-shadow: 0 0 #0000; + --tw-inset-ring-color: initial; + --tw-inset-ring-shadow: 0 0 #0000; + --tw-ring-inset: initial; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-offset-shadow: 0 0 #0000; + --tw-duration: initial; + --tw-content: ""; + } + } +} diff --git a/public/styles/terminal.css b/public/styles/terminal.css deleted file mode 100644 index e0e80aa..0000000 --- a/public/styles/terminal.css +++ /dev/null @@ -1,70 +0,0 @@ -@import url("@styles/fonts/JetBrainsMono.css"); - -@font-face { - font-family: "Monocraft"; - src: url("/fonts/Monocraft.ttf") format("truetype"); - font-display: swap; -} - -:root { - --primary: #54d7a9; - --secondary: #9b7eca; - --accent: #7ed4fb; - --extra: #8fcc75; - --text: #ffffff; - --alt: #999999; - --background: #000000; - --font: "Jetbrains Mono", monospace; -} - -html { - background-color: var(--background); - color: var(--text); - font-family: var(--font); - user-select: none; - - font-size: 1vw; -} - -body { - min-height: 100vh; - display: grid; - place-items: center; -} - -@layer base { - a { - font-weight: 300; - text-decoration: none; - color: var(--secondary); - transition-duration: 0.2s; - transition-property: color, text-decoration; - } - a:hover { - text-decoration: underline; - color: var(--accent); - } -} - -.scrollbox::-webkit-scrollbar { - width: 1.5rem; -} -.scrollbox::-webkit-scrollbar-track { - background: transparent; - border-left: 0.1rem solid var(--alt); -} -.scrollbox::-webkit-scrollbar-thumb { - background: var(--primary); - border: 0.3rem solid transparent; - background-clip: padding-box; - border-radius: 0; -} -.scrollbox::-webkit-scrollbar-thumb:hover { - background: var(--accent); -} - -@supports not selector(::-webkit-scrollbar) { - .scrollbox { - scrollbar-color: var(--primary) transparent; - } -} @@ -11,7 +11,7 @@ trap cleanup SIGINT SIGTERM EXIT templ generate --watch --proxy="http://localhost:8080" --cmd="DEV=1 go run ." --watch-pattern='(.+\.go$)|(.+\.templ$)|(.+_templ\.txt$)|(.+\.css$)|(.+\.js$)|(.+\.md$)|(.+\.svg$)|(.+\.json$)|(.+\.html$)|(.+\.txt$)|(.+\.ttf$)|(.+\.woff2?$)|(.+\.png$)|(.+\.jpg$)|(.+\.webp$)' & TEMPL_PID=$! -tail -f /dev/null | tailwindcss -i ./public/main.css -o ./public/style.css --watch & +tail -f /dev/null | tailwindcss -i ./public/styles/main.css -o ./public/styles/style.css --watch & TAILWIND_PID=$! echo "[dev] Watching Templ (PID $TEMPL_PID) and Tailwind (PID $TAILWIND_PID)..." @@ -1,11 +1,14 @@ package main import ( + "bytes" "cmp" "embed" "encoding/json" "errors" "fmt" + "html" + "html/template" "io/fs" "log" "net/http" @@ -17,6 +20,15 @@ import ( "time" "github.com/a-h/templ" + chromahtml "github.com/alecthomas/chroma/v2/formatters/html" + "github.com/yuin/goldmark" + highlighting "github.com/yuin/goldmark-highlighting/v2" + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/extension" + "github.com/yuin/goldmark/parser" + gmhtml "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/text" + "github.com/yuin/goldmark/util" "gopkg.in/yaml.v3" ) @@ -159,6 +171,56 @@ type Blog struct { Desc string Date time.Time Body string // raw markdown for rendering + HTML string // rendered body +} + +var md = goldmark.New( + goldmark.WithExtensions( + extension.GFM, + extension.Footnote, + highlighting.NewHighlighting( + highlighting.WithFormatOptions(chromahtml.WithClasses(true)), + highlighting.WithWrapperRenderer(func(w util.BufWriter, ctx highlighting.CodeBlockContext, entering bool) { + if entering { + lang, _ := ctx.Language() + fmt.Fprintf(w, `<div class="codeblock" data-lang="%s">`, template.HTMLEscapeString(string(lang))) + } else { + w.WriteString(`</div>`) + } + }), + ), + ), + goldmark.WithRendererOptions(gmhtml.WithUnsafe()), + goldmark.WithParserOptions( + parser.WithASTTransformers(util.Prioritized(externalLinks{}, 100)), + ), +) + +var tagRe = regexp.MustCompile(`<[^>]*>`) + +func ligatures(html string) string { + var out strings.Builder + depth, last := 0, 0 + apply := func(s string) string { + if depth == 0 { + return arrows.Replace(s) + } + return s + } + for _, loc := range tagRe.FindAllStringIndex(html, -1) { + out.WriteString(apply(html[last:loc[0]])) + tag := html[loc[0]:loc[1]] + switch { + case strings.HasPrefix(tag, "<pre"), strings.HasPrefix(tag, "<code"): + depth++ + case strings.HasPrefix(tag, "</pre"), strings.HasPrefix(tag, "</code"): + depth-- + } + out.WriteString(tag) + last = loc[1] + } + out.WriteString(apply(html[last:])) + return out.String() } type frontmatter struct { @@ -167,6 +229,20 @@ type frontmatter struct { Date time.Time `yaml:"date"` } +func findBlog(blogs []Blog, slug string) (blog, prev, next *Blog) { + i := slices.IndexFunc(blogs, func(b Blog) bool { return b.Slug == slug }) + if i < 0 { + return nil, nil, nil + } + if i+1 < len(blogs) { + prev = &blogs[i+1] // older + } + if i > 0 { + next = &blogs[i-1] // newer + } + return &blogs[i], prev, next +} + var datePrefix = regexp.MustCompile(`^(\d{4}-\d{2}-\d{2})-(.+)\.md$`) func parseBlog(name, raw string) (Blog, error) { @@ -182,6 +258,12 @@ func parseBlog(name, raw string) (Blog, error) { } } + var buf bytes.Buffer + if err := md.Convert([]byte(body), &buf); err != nil { + return Blog{}, err + } + HTML := ligatures(buf.String()) + slug := strings.TrimSuffix(name, ".md") date := frontmatter.Date // frontmatter wins if match := datePrefix.FindStringSubmatch(name); match != nil { @@ -204,6 +286,7 @@ func parseBlog(name, raw string) (Blog, error) { Date: date, Body: body, Desc: frontmatter.Desc, + HTML: HTML, }, nil } @@ -264,12 +347,66 @@ func latestBlog(blogs []Blog) *Blog { return &blogs[0] } +type externalLinks struct{} + +func newReplacer(pairs map[string]string) *strings.Replacer { + keys := make([]string, 0, len(pairs)) + for k := range pairs { + keys = append(keys, k) + } + slices.SortFunc(keys, func(a, b string) int { return cmp.Compare(len(b), len(a)) }) + + args := make([]string, 0, len(keys)*2) + for _, k := range keys { + args = append(args, html.EscapeString(k), pairs[k]) // rendered text has < and > escaped + } + return strings.NewReplacer(args...) +} + +var arrows = newReplacer(map[string]string{ + // arrows + "->": "→", "<-": "←", "<->": "↔", + "-->": "⟶", "<--": "⟵", "<-->": "⟷", + "->>": "↠", "<<-": "↞", "|->": "↦", + "~>": "↝", "<~": "↜", + // double arrows + "=>": "⇒", "<=>": "⇔", + "==>": "⟹", "<==": "⟸", "<==>": "⟺", + // comparisons + ">=": "≥", "<=": "≤", "!=": "≠", "+-": "±", +}) + +func openInNewTab(n ast.Node) { + n.SetAttributeString("target", []byte("_blank")) + n.SetAttributeString("rel", []byte("noopener noreferrer")) +} + +func (externalLinks) Transform(doc *ast.Document, reader text.Reader, pc parser.Context) { + src := reader.Source() + ast.Walk(doc, func(n ast.Node, entering bool) (ast.WalkStatus, error) { + if !entering { + return ast.WalkContinue, nil + } + switch link := n.(type) { + case *ast.Link: + if bytes.HasPrefix(link.Destination, []byte("http")) { + openInNewTab(link) + } + case *ast.AutoLink: + if link.AutoLinkType == ast.AutoLinkURL && bytes.HasPrefix(link.URL(src), []byte("http")) { + openInNewTab(link) + } + } + return ast.WalkContinue, nil + }) +} + var projects = []Project{ { Slug: "krypton", Title: "Krypton", Category: "Programming Language Compiler", - Desc: "A modern Minecraft creator event. As a developer, I helped with minor improvements to the cosmetics system. ", + Desc: "", // Icon: IconCpu("text-[#F5A670] self-center"), Icon: IconKrypton(), Tags: []ProjectTag{ @@ -294,6 +431,7 @@ var projects = []Project{ Icon: IconCpu("text-[#F16265]"), Tags: []ProjectTag{ {"Zig", Color("text-[#D8C44B]")}, + {"Raylib", Color("text-[#FFFFFF]")}, }, Links: []ProjectLink{ {IconGit("text-[#F5A670]"), "Git", "https://git.kyren.codes/kyren/cpu-vs-ai.git"}, @@ -514,13 +652,14 @@ func main() { } jetbrains := FontPack{ - Monospace: "JetBrains Mono", - Normal: `system-ui, sans-serif`, + Monospace: `JetBrains Mono, monospace`, + Normal: `Inter, system-ui, sans-serif`, } minecraft := FontPack{ - Monospace: `"Monocraft", "JetBrains Mono", monospace`, - Normal: `"Monocraft", system-ui, sans-serif`, + Monospace: `Monocraft, JetBrains Mono, monospace`, + // Normal: `Inter, Lower Pixel Regular, Monocraft, system-ui, sans-serif`, + Normal: `LowerPixelRegular, Inter, system-ui, sans-serif`, } SetTheme("carbonight-cat", carbonightCat) @@ -564,6 +703,15 @@ func main() { BlogsPage(currentStyle(r), getBlogs()).Render(r.Context(), w) }) + mux.HandleFunc("GET /blogs/{slug}", func(w http.ResponseWriter, r *http.Request) { + blog, prev, next := findBlog(getBlogs(), r.PathValue("slug")) + if blog == nil { + notFoundHandler(w, r) + return + } + BlogPage(currentStyle(r), *blog, prev, next).Render(r.Context(), w) + }) + mux.HandleFunc("GET /theme/{name}", styleHandler("theme", func(n string) (map[string]string, bool) { theme, ok := GetTheme(n) return theme.Vars(), ok diff --git a/website.templ b/website.templ index 1371351..733aca1 100644 --- a/website.templ +++ b/website.templ @@ -23,7 +23,8 @@ templ HeadComponent(title string, description string) { <script src="/public/theme.js" defer></script> <script src="/public/scrollbar.js" defer></script> <script src="/public/my_uptime.js" defer></script> - <link rel="stylesheet" href="/public/style.css"/> + <script src="/public/footnotes.js" defer></script> + <link rel="stylesheet" href="/public/styles/style.css"/> { children... } </head> } @@ -151,9 +152,7 @@ templ Nav(path string) { templ TerminalLayout(style Style, path string) { <!DOCTYPE html> <html lang="en" style={ styleToCss(style) }> - @HeadComponent(path, "My personal website") { - <link rel="stylesheet" href="/public/styles/terminal.css"/> - } + @HeadComponent(path, "My personal website") <body> <main class="flex flex-col w-[75rem] h-[40rem] p-8 border-[0.2rem] border-(--text) overflow-hidden text-[1.125rem]"> @Nav(path) @@ -184,7 +183,7 @@ templ HomePage(style Style, latestBlog *Blog) { @TerminalBorder("Profile", "", "[--border-py:0.875rem]") { <div class="flex items-center gap-4 h-38"> <img src="/public/favicon.svg" alt="picture" class="h-full object-cover"/> - @CopyPre(sshKey, "shrink-0 text-[0.675rem] leading-[normal]") { + @CopyPre(sshKey, "shrink-0 text-[0.675rem] leading-[1.32]") { { fingerprint } } </div> @@ -750,3 +749,28 @@ templ Icon(color string) { { children... } </svg> } + +templ BlogPage(style Style, blog Blog, prev *Blog, next *Blog) { + @TerminalLayout(style, blog.Title) { + @ScrollBox("") { + @BlogItem("", blog, "mb-[1rem]") + <article class="prose select-text font-(family-name:--font-normal) text-[17.6px] leading-[1.7]"> + @templ.Raw(blog.HTML) + </article> + <div class="grid grid-cols-2 gap-x-[1rem] mt-[1rem]"> + @BlogNav("Previous Blog", prev, "") + @BlogNav("Next Blog", next, "") + </div> + } + } +} + +templ BlogNav(label string, blog *Blog, extra string) { + if blog != nil { + @TerminalBorder(label, "", "min-w-0 "+extra) { + <a href={ templ.SafeURL("/blogs/" + blog.Slug) } class="block min-w-0 truncate">vim ~/blogs/{ blog.Slug }</a> + } + } else { + <div></div> + } +} diff --git a/website_templ.go b/website_templ.go index e914080..ec59c8a 100644 --- a/website_templ.go +++ b/website_templ.go @@ -81,7 +81,7 @@ func HeadComponent(title string, description string) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "\"><meta property=\"og:type\" content=\"website\"><meta property=\"og:url\" content=\"https://kyren.codes/\"><meta property=\"og:image\" content=\"https://kyren.codes/public/image.png\"><meta property=\"og:image:alt\" content=\"a cyan sphere with a dark background\"><meta property=\"og:site_name\" content=\"Kyren's Website\"><script src=\"/public/copy.js\" defer></script><script src=\"/public/theme.js\" defer></script><script src=\"/public/scrollbar.js\" defer></script><script src=\"/public/my_uptime.js\" defer></script><link rel=\"stylesheet\" href=\"/public/style.css\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "\"><meta property=\"og:type\" content=\"website\"><meta property=\"og:url\" content=\"https://kyren.codes/\"><meta property=\"og:image\" content=\"https://kyren.codes/public/image.png\"><meta property=\"og:image:alt\" content=\"a cyan sphere with a dark background\"><meta property=\"og:site_name\" content=\"Kyren's Website\"><script src=\"/public/copy.js\" defer></script><script src=\"/public/theme.js\" defer></script><script src=\"/public/scrollbar.js\" defer></script><script src=\"/public/my_uptime.js\" defer></script><script src=\"/public/footnotes.js\" defer></script><link rel=\"stylesheet\" href=\"/public/styles/style.css\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -145,7 +145,7 @@ func BlogItem(header string, blog Blog, extra string) templ.Component { var templ_7745c5c3_Var8 templ.SafeURL templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("/blogs/" + blog.Slug)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 42, Col: 49} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 43, Col: 49} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) if templ_7745c5c3_Err != nil { @@ -158,7 +158,7 @@ func BlogItem(header string, blog Blog, extra string) templ.Component { var templ_7745c5c3_Var9 string templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(blog.Title) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 44, Col: 17} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 45, Col: 17} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) if templ_7745c5c3_Err != nil { @@ -171,7 +171,7 @@ func BlogItem(header string, blog Blog, extra string) templ.Component { var templ_7745c5c3_Var10 string templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(blog.Desc) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 46, Col: 45} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 47, Col: 45} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) if templ_7745c5c3_Err != nil { @@ -219,7 +219,7 @@ func Link(href string, newTab bool) templ.Component { var templ_7745c5c3_Var12 templ.SafeURL templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 54, Col: 28} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 55, Col: 28} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) if templ_7745c5c3_Err != nil { @@ -353,7 +353,7 @@ func TerminalBorderForBlog(header string, footer string, extra string, enable bo var templ_7745c5c3_Var19 string templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(header) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 73, Col: 132} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 74, Col: 132} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19)) if templ_7745c5c3_Err != nil { @@ -366,7 +366,7 @@ func TerminalBorderForBlog(header string, footer string, extra string, enable bo var templ_7745c5c3_Var20 string templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(footer) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 74, Col: 149} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 75, Col: 149} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20)) if templ_7745c5c3_Err != nil { @@ -458,7 +458,7 @@ func TerminalBorder(header string, footer string, extra string) templ.Component var templ_7745c5c3_Var25 string templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(header) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 91, Col: 137} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 92, Col: 137} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) if templ_7745c5c3_Err != nil { @@ -471,7 +471,7 @@ func TerminalBorder(header string, footer string, extra string) templ.Component var templ_7745c5c3_Var26 string templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(footer) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 92, Col: 140} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 93, Col: 140} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) if templ_7745c5c3_Err != nil { @@ -567,7 +567,7 @@ func TerminalBorderWithCopy(header string, footer string, extra string, text str var templ_7745c5c3_Var30 templ.SafeURL templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 105, Col: 33} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 106, Col: 33} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) if templ_7745c5c3_Err != nil { @@ -593,7 +593,7 @@ func TerminalBorderWithCopy(header string, footer string, extra string, text str var templ_7745c5c3_Var31 string templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.ResolveAttributeValue(text) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 109, Col: 26} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 110, Col: 26} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var31) if templ_7745c5c3_Err != nil { @@ -629,7 +629,7 @@ func TerminalBorderWithCopy(header string, footer string, extra string, text str var templ_7745c5c3_Var32 string templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.ResolveAttributeValue(text) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 117, Col: 42} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 118, Col: 42} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var32) if templ_7745c5c3_Err != nil { @@ -685,7 +685,7 @@ func CopyPre(text string, preClass string) templ.Component { var templ_7745c5c3_Var34 string templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.ResolveAttributeValue(text) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 126, Col: 39} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 127, Col: 39} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var34) if templ_7745c5c3_Err != nil { @@ -757,7 +757,7 @@ func NavLink(href string, label string) templ.Component { var templ_7745c5c3_Var38 templ.SafeURL templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 135, Col: 30} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 136, Col: 30} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38)) if templ_7745c5c3_Err != nil { @@ -770,7 +770,7 @@ func NavLink(href string, label string) templ.Component { var templ_7745c5c3_Var39 string templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(label) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 135, Col: 87} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 136, Col: 87} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39)) if templ_7745c5c3_Err != nil { @@ -812,7 +812,7 @@ func Nav(path string) templ.Component { var templ_7745c5c3_Var41 string templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(path) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 140, Col: 14} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 141, Col: 14} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41)) if templ_7745c5c3_Err != nil { @@ -872,7 +872,7 @@ func TerminalLayout(style Style, path string) templ.Component { var templ_7745c5c3_Var43 string templ_7745c5c3_Var43, templ_7745c5c3_Err = templruntime.SanitizeStyleAttributeValues(styleToCss(style)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 153, Col: 42} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 154, Col: 42} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43)) if templ_7745c5c3_Err != nil { @@ -882,29 +882,11 @@ func TerminalLayout(style Style, path string) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var44 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "<link rel=\"stylesheet\" href=\"/public/styles/terminal.css\">") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return nil - }) - templ_7745c5c3_Err = HeadComponent(path, "My personal website").Render(templ.WithChildren(ctx, templ_7745c5c3_Var44), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = HeadComponent(path, "My personal website").Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "<body><main class=\"flex flex-col w-[75rem] h-[40rem] p-8 border-[0.2rem] border-(--text) overflow-hidden text-[1.125rem]\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "<body><main class=\"flex flex-col w-[75rem] h-[40rem] p-8 border-[0.2rem] border-(--text) overflow-hidden text-[1.125rem]\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -916,7 +898,7 @@ func TerminalLayout(style Style, path string) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</main></body></html>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</main></body></html>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -953,12 +935,12 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var45 := templ.GetChildren(ctx) - if templ_7745c5c3_Var45 == nil { - templ_7745c5c3_Var45 = templ.NopComponent + templ_7745c5c3_Var44 := templ.GetChildren(ctx) + if templ_7745c5c3_Var44 == nil { + templ_7745c5c3_Var44 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var46 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var45 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -970,29 +952,29 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - var templ_7745c5c3_Var47 = []any{"grid grid-cols-[29%_1fr] gap-x-8 flex-1 min-h-0", templ.KV("gap-y-4", !false)} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var47...) + var templ_7745c5c3_Var46 = []any{"grid grid-cols-[29%_1fr] gap-x-8 flex-1 min-h-0", templ.KV("gap-y-4", !false)} + templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var46...) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "<div class=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<div class=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var48 string - templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var47).String()) + var templ_7745c5c3_Var47 string + templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var46).String()) if templ_7745c5c3_Err != nil { return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 1, Col: 0} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var48) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var47) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "\"><div class=\"flex flex-col min-h-0 [--border-py:0.75rem]\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "\"><div class=\"flex flex-col min-h-0 [--border-py:0.75rem]\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var49 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var48 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1004,7 +986,7 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var50 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var49 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1016,11 +998,11 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "<div class=\"flex items-center gap-4 h-38\"><img src=\"/public/favicon.svg\" alt=\"picture\" class=\"h-full object-cover\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "<div class=\"flex items-center gap-4 h-38\"><img src=\"/public/favicon.svg\" alt=\"picture\" class=\"h-full object-cover\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var51 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var50 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1032,32 +1014,32 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - var templ_7745c5c3_Var52 string - templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(fingerprint) + var templ_7745c5c3_Var51 string + templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(fingerprint) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 188, Col: 21} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 187, Col: 21} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = CopyPre(sshKey, "shrink-0 text-[0.675rem] leading-[normal]").Render(templ.WithChildren(ctx, templ_7745c5c3_Var51), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = CopyPre(sshKey, "shrink-0 text-[0.675rem] leading-[1.32]").Render(templ.WithChildren(ctx, templ_7745c5c3_Var50), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "</div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorder("Profile", "", "[--border-py:0.875rem]").Render(templ.WithChildren(ctx, templ_7745c5c3_Var50), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorder("Profile", "", "[--border-py:0.875rem]").Render(templ.WithChildren(ctx, templ_7745c5c3_Var49), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var53 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var52 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1069,17 +1051,17 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "contact@kyren.codes") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "contact@kyren.codes") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorderWithCopy("Email", "", "", "contact@kyren.codes", "mailto:contact@kyren.codes", false).Render(templ.WithChildren(ctx, templ_7745c5c3_Var53), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorderWithCopy("Email", "", "", "contact@kyren.codes", "mailto:contact@kyren.codes", false).Render(templ.WithChildren(ctx, templ_7745c5c3_Var52), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var54 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var53 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1091,7 +1073,7 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var55 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var54 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1103,23 +1085,23 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "git.kyren.codes") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "git.kyren.codes") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Link("https://git.kyren.codes", true).Render(templ.WithChildren(ctx, templ_7745c5c3_Var55), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Link("https://git.kyren.codes", true).Render(templ.WithChildren(ctx, templ_7745c5c3_Var54), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorder("Git Repos (main)", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var54), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorder("Git Repos (main)", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var53), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var56 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var55 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1131,7 +1113,7 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var57 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var56 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1143,23 +1125,23 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "github.com/Kyren223") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "github.com/Kyren223") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Link("https://github.com/kyren223", true).Render(templ.WithChildren(ctx, templ_7745c5c3_Var57), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Link("https://github.com/kyren223", true).Render(templ.WithChildren(ctx, templ_7745c5c3_Var56), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorder("GitHub (secondary)", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var56), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorder("GitHub (secondary)", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var55), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var58 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var57 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1171,7 +1153,7 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var59 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var58 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1183,33 +1165,33 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "Kyren223") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "Kyren223") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Link("https://discord.com/users/481884415090229258", true).Render(templ.WithChildren(ctx, templ_7745c5c3_Var59), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Link("https://discord.com/users/481884415090229258", true).Render(templ.WithChildren(ctx, templ_7745c5c3_Var58), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorder("Discord", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var58), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorder("Discord", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var57), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalStack(true, "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var49), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalStack(true, "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var48), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "</div><div class=\"flex flex-col gap-10 min-h-0 select-text\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "</div><div class=\"flex flex-col gap-10 min-h-0 select-text\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var60 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var59 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1221,11 +1203,11 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "<div class=\"flex gap-[1ch] text-[1rem]\"><span>Working on</span> <span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "<div class=\"flex gap-[1ch] text-[1rem]\"><span>Working on</span> <span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var61 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var60 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1237,27 +1219,27 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "Krypton") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "Krypton") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Link("/projects/krypton", false).Render(templ.WithChildren(ctx, templ_7745c5c3_Var61), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Link("/projects/krypton", false).Render(templ.WithChildren(ctx, templ_7745c5c3_Var60), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "</span> <span>|</span> <span>Learning Langdev & Compiler Design</span> <span>|</span> <span>Available for hire</span></div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "</span> <span>|</span> <span>Learning Langdev & Compiler Design</span> <span>|</span> <span>Available for hire</span></div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorder("Status", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var60), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorder("Status", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var59), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var62 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var61 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1269,13 +1251,13 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "Hi! I'm Kyren, a softwarea engineer and game developer. I love working with low level languages and learning things deeply. I am also a terminal nerd and Linux enthusiast who uses NVIM btw. And when I am not coding, I am most likely playing video games, watching Anime, or solving Rubik's cubes fast.") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "Hi! I'm Kyren, a softwarea engineer and game developer. I love working with low level languages and learning things deeply. I am also a terminal nerd and Linux enthusiast who uses NVIM btw. And when I am not coding, I am most likely playing video games, watching Anime, or solving Rubik's cubes fast.") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorder("About Me", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var62), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorder("About Me", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var61), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -1283,11 +1265,11 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var63 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var62 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1299,28 +1281,28 @@ func HomePage(style Style, latestBlog *Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - var templ_7745c5c3_Var64 string - templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.JoinStringErrs(sshKey) + var templ_7745c5c3_Var63 string + templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(sshKey) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 237, Col: 12} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 236, Col: 12} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var64)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorderWithCopy("SSH Key", "", footerClass(false), sshKey, "", true).Render(templ.WithChildren(ctx, templ_7745c5c3_Var63), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorderWithCopy("SSH Key", "", footerClass(false), sshKey, "", true).Render(templ.WithChildren(ctx, templ_7745c5c3_Var62), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "</div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalLayout(style, "/home/kyren/").Render(templ.WithChildren(ctx, templ_7745c5c3_Var46), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalLayout(style, "/home/kyren/").Render(templ.WithChildren(ctx, templ_7745c5c3_Var45), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -1352,12 +1334,12 @@ func InfoPage(style Style) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var65 := templ.GetChildren(ctx) - if templ_7745c5c3_Var65 == nil { - templ_7745c5c3_Var65 = templ.NopComponent + templ_7745c5c3_Var64 := templ.GetChildren(ctx) + if templ_7745c5c3_Var64 == nil { + templ_7745c5c3_Var64 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var66 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var65 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1369,7 +1351,7 @@ func InfoPage(style Style) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var67 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var66 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1381,7 +1363,7 @@ func InfoPage(style Style) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var68 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var67 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1393,7 +1375,7 @@ func InfoPage(style Style) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "<span>$ fastfetch") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "<span>$ fastfetch") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -1401,25 +1383,25 @@ func InfoPage(style Style) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "</span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorder("Info", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var68), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorder("Info", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var67), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalStack(false, "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var67), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalStack(false, "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var66), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalLayout(style, "/home/kyren/info.md").Render(templ.WithChildren(ctx, templ_7745c5c3_Var66), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalLayout(style, "/home/kyren/info.md").Render(templ.WithChildren(ctx, templ_7745c5c3_Var65), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -1488,12 +1470,12 @@ func FlagshipProject(project Project, extra string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var69 := templ.GetChildren(ctx) - if templ_7745c5c3_Var69 == nil { - templ_7745c5c3_Var69 = templ.NopComponent + templ_7745c5c3_Var68 := templ.GetChildren(ctx) + if templ_7745c5c3_Var68 == nil { + templ_7745c5c3_Var68 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var70 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var69 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1505,7 +1487,7 @@ func FlagshipProject(project Project, extra string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "<div class=\"flex gap-8 w-full\"><div class=\"flex flex-col gap-4 flex-1 min-w-0\"><div class=\"flex flex-wrap items-baseline gap-x-[1ch] gap-y-[0.4rem]\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "<div class=\"flex gap-8 w-full\"><div class=\"flex flex-col gap-4 flex-1 min-w-0\"><div class=\"flex flex-wrap items-baseline gap-x-[1ch] gap-y-[0.4rem]\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -1513,92 +1495,92 @@ func FlagshipProject(project Project, extra string) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "<a href=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "<a href=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var71 templ.SafeURL - templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("/projects/" + project.Slug)) + var templ_7745c5c3_Var70 templ.SafeURL + templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("/projects/" + project.Slug)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 315, Col: 57} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 314, Col: 57} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var71)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var70)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "\" class=\"no-underline text-[170%] font-bold text-(--accent) after:absolute after:inset-0 after:z-0\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "\" class=\"no-underline text-[170%] font-bold text-(--accent) after:absolute after:inset-0 after:z-0\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var72 string - templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.JoinStringErrs(project.Title) + var templ_7745c5c3_Var71 string + templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.JoinStringErrs(project.Title) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 315, Col: 173} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 314, Col: 173} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var72)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var71)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "</a> <span class=\"text-[85%] text-(--primary)\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "</a> <span class=\"text-[85%] text-(--primary)\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var73 string - templ_7745c5c3_Var73, templ_7745c5c3_Err = templ.JoinStringErrs(project.Category) + var templ_7745c5c3_Var72 string + templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.JoinStringErrs(project.Category) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 316, Col: 65} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 315, Col: 65} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var73)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var72)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "</span> ") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "</span> ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } for _, tag := range project.Tags { - var templ_7745c5c3_Var74 = []any{"text-[75%] px-[0.4rem] inline-block rounded-[0.3rem] border-[0.01rem] bg-(--alt)/25" + " " + tag.Color} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var74...) + var templ_7745c5c3_Var73 = []any{"text-[75%] px-[0.4rem] inline-block rounded-[0.3rem] border-[0.01rem] bg-(--alt)/25" + " " + tag.Color} + templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var73...) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "<code class=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "<code class=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var75 string - templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var74).String()) + var templ_7745c5c3_Var74 string + templ_7745c5c3_Var74, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var73).String()) if templ_7745c5c3_Err != nil { return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 1, Col: 0} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var75) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var74) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var76 string - templ_7745c5c3_Var76, templ_7745c5c3_Err = templ.JoinStringErrs(tag.Name) + var templ_7745c5c3_Var75 string + templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.JoinStringErrs(tag.Name) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 318, Col: 136} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 317, Col: 136} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var76)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var75)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</code> ") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "</code> ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<span class=\"ml-auto flex items-center self-center relative z-10\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "<span class=\"ml-auto flex items-center self-center relative z-10\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } for _, link := range project.Links { - templ_7745c5c3_Var77 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var76 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1616,30 +1598,30 @@ func FlagshipProject(project Project, extra string) templ.Component { } return nil }) - templ_7745c5c3_Err = IconLink(link.URL, link.Label, "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var77), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = IconLink(link.URL, link.Label, "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var76), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "</span></div><p class=\"leading-relaxed max-w-3xl\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "</span></div><p class=\"leading-relaxed max-w-3xl\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var78 string - templ_7745c5c3_Var78, templ_7745c5c3_Err = templ.JoinStringErrs(project.Desc) + var templ_7745c5c3_Var77 string + templ_7745c5c3_Var77, templ_7745c5c3_Err = templ.JoinStringErrs(project.Desc) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 328, Col: 55} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 327, Col: 55} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var78)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var77)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "</p>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "</p>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } if len(flagship.Downloads) > 0 || flagship.Version != "" { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "<div class=\"flex flex-wrap items-center gap-x-4 gap-y-2 relative z-10\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<div class=\"flex flex-wrap items-center gap-x-4 gap-y-2 relative z-10\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -1661,63 +1643,63 @@ func FlagshipProject(project Project, extra string) templ.Component { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "</div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "</div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } if len(flagship.Stats) > 0 { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "<div class=\"flex flex-wrap gap-x-[2rem] gap-y-[0.4rem] text-[85%]\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "<div class=\"flex flex-wrap gap-x-[2rem] gap-y-[0.4rem] text-[85%]\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } for _, stat := range flagship.Stats { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "<span class=\"flex gap-[1ch]\"><span class=\"font-bold text-(--primary)\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "<span class=\"flex gap-[1ch]\"><span class=\"font-bold text-(--primary)\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var79 string - templ_7745c5c3_Var79, templ_7745c5c3_Err = templ.JoinStringErrs(stat.Value) + var templ_7745c5c3_Var78 string + templ_7745c5c3_Var78, templ_7745c5c3_Err = templ.JoinStringErrs(stat.Value) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 346, Col: 61} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 345, Col: 61} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var79)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var78)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "</span> <span class=\"text-(--alt)\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "</span> <span class=\"text-(--alt)\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var80 string - templ_7745c5c3_Var80, templ_7745c5c3_Err = templ.JoinStringErrs(stat.Label) + var templ_7745c5c3_Var79 string + templ_7745c5c3_Var79, templ_7745c5c3_Err = templ.JoinStringErrs(stat.Label) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 347, Col: 47} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 346, Col: 47} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var80)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var79)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "</span></span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "</span></span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "</div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "</div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "</div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "</div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } if flagship.Snippet != "" { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "<div class=\"shrink-0 self-start flex flex-col gap-[0.5rem] p-[1rem] rounded-[0.4rem] bg-black/30 relative z-10\"><span class=\"text-[75%] text-(--alt)\">example</span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "<div class=\"shrink-0 self-start flex flex-col gap-[0.5rem] p-[1rem] rounded-[0.4rem] bg-black/30 relative z-10\"><span class=\"text-[75%] text-(--alt)\">example</span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var81 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var80 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1729,33 +1711,33 @@ func FlagshipProject(project Project, extra string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - var templ_7745c5c3_Var82 string - templ_7745c5c3_Var82, templ_7745c5c3_Err = templ.JoinStringErrs(flagship.Snippet) + var templ_7745c5c3_Var81 string + templ_7745c5c3_Var81, templ_7745c5c3_Err = templ.JoinStringErrs(flagship.Snippet) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 357, Col: 24} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 356, Col: 24} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var82)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var81)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = CopyPre(flagship.Snippet, "text-[80%] leading-[normal]").Render(templ.WithChildren(ctx, templ_7745c5c3_Var81), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = CopyPre(flagship.Snippet, "text-[80%] leading-[normal]").Render(templ.WithChildren(ctx, templ_7745c5c3_Var80), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "</div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "</div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "</div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "</div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorder("", "", flagshipClasses+" "+extra).Render(templ.WithChildren(ctx, templ_7745c5c3_Var70), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorder("", "", flagshipClasses+" "+extra).Render(templ.WithChildren(ctx, templ_7745c5c3_Var69), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -1779,26 +1761,26 @@ func VersionTag(project Project) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var83 := templ.GetChildren(ctx) - if templ_7745c5c3_Var83 == nil { - templ_7745c5c3_Var83 = templ.NopComponent + templ_7745c5c3_Var82 := templ.GetChildren(ctx) + if templ_7745c5c3_Var82 == nil { + templ_7745c5c3_Var82 = templ.NopComponent } ctx = templ.ClearChildren(ctx) if flagship.Version != "" { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "<span class=\"flex items-baseline gap-[1ch] text-[85%]\"><code class=\"text-[#46d46c]\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "<span class=\"flex items-baseline gap-[1ch] text-[85%]\"><code class=\"text-[#46d46c]\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var84 string - templ_7745c5c3_Var84, templ_7745c5c3_Err = templ.JoinStringErrs(flagship.Version) + var templ_7745c5c3_Var83 string + templ_7745c5c3_Var83, templ_7745c5c3_Err = templ.JoinStringErrs(flagship.Version) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 368, Col: 50} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 367, Col: 50} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var84)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var83)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "</code></span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "</code></span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -1823,56 +1805,56 @@ func DownloadButton(download Download) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var85 := templ.GetChildren(ctx) - if templ_7745c5c3_Var85 == nil { - templ_7745c5c3_Var85 = templ.NopComponent + templ_7745c5c3_Var84 := templ.GetChildren(ctx) + if templ_7745c5c3_Var84 == nil { + templ_7745c5c3_Var84 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var86 = []any{"no-underline inline-flex items-center gap-[1ch] px-[0.6rem] py-[0.1rem] rounded-[0.4rem] border-[0.1rem] border-solid text-[85%] transition-colors", + var templ_7745c5c3_Var85 = []any{"no-underline inline-flex items-center gap-[1ch] px-[0.6rem] py-[0.1rem] rounded-[0.4rem] border-[0.1rem] border-solid text-[85%] transition-colors", templ.KV("border-(--secondary)/60 text-(--secondary) hover:bg-(--secondary)/15", download.Enabled), templ.KV("border-(--alt)/30 text-(--alt)/80 bg-white/2", !download.Enabled), } - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var86...) + templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var85...) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "<a") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "<a") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } if download.Enabled { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, " href=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, " href=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var87 templ.SafeURL - templ_7745c5c3_Var87, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(download.URL)) + var templ_7745c5c3_Var86 templ.SafeURL + templ_7745c5c3_Var86, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(download.URL)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 377, Col: 37} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 376, Col: 37} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var87)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var86)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, " class=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, " class=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var88 string - templ_7745c5c3_Var88, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var86).String()) + var templ_7745c5c3_Var87 string + templ_7745c5c3_Var87, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var85).String()) if templ_7745c5c3_Err != nil { return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 1, Col: 0} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var88) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var87) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -1887,43 +1869,43 @@ func DownloadButton(download Download) templ.Component { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "<span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "<span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var89 string - templ_7745c5c3_Var89, templ_7745c5c3_Err = templ.JoinStringErrs(download.Label) + var templ_7745c5c3_Var88 string + templ_7745c5c3_Var88, templ_7745c5c3_Err = templ.JoinStringErrs(download.Label) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 390, Col: 24} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 389, Col: 24} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var89)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var88)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "</span> ") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "</span> ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } if download.Size != "" { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "<span class=\"text-(--alt)\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "<span class=\"text-(--alt)\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var90 string - templ_7745c5c3_Var90, templ_7745c5c3_Err = templ.JoinStringErrs(download.Size) + var templ_7745c5c3_Var89 string + templ_7745c5c3_Var89, templ_7745c5c3_Err = templ.JoinStringErrs(download.Size) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 392, Col: 45} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 391, Col: 45} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var90)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var89)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "</span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "</span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "</a>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "</a>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -1947,12 +1929,12 @@ func IconArchive(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var91 := templ.GetChildren(ctx) - if templ_7745c5c3_Var91 == nil { - templ_7745c5c3_Var91 = templ.NopComponent + templ_7745c5c3_Var90 := templ.GetChildren(ctx) + if templ_7745c5c3_Var90 == nil { + templ_7745c5c3_Var90 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var92 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var91 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -1964,13 +1946,13 @@ func IconArchive(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "<rect width=\"20\" height=\"5\" x=\"2\" y=\"3\" rx=\"1\"></rect> <path d=\"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\"></path> <path d=\"M10 12h4\"></path>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "<rect width=\"20\" height=\"5\" x=\"2\" y=\"3\" rx=\"1\"></rect> <path d=\"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\"></path> <path d=\"M10 12h4\"></path>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var92), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var91), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -1994,77 +1976,77 @@ func IconLink(href string, label string, extra string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var93 := templ.GetChildren(ctx) - if templ_7745c5c3_Var93 == nil { - templ_7745c5c3_Var93 = templ.NopComponent + templ_7745c5c3_Var92 := templ.GetChildren(ctx) + if templ_7745c5c3_Var92 == nil { + templ_7745c5c3_Var92 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var94 = []any{"text-[90%] block p-[0.2rem] rounded-[0.4rem] transition-colors hover:bg-(--alt)/25" + " " + extra} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var94...) + var templ_7745c5c3_Var93 = []any{"text-[90%] block p-[0.2rem] rounded-[0.4rem] transition-colors hover:bg-(--alt)/25" + " " + extra} + templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var93...) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "<a href=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "<a href=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var95 templ.SafeURL - templ_7745c5c3_Var95, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href)) + var templ_7745c5c3_Var94 templ.SafeURL + templ_7745c5c3_Var94, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 406, Col: 30} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 405, Col: 30} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var95)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var94)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var96 string - templ_7745c5c3_Var96, templ_7745c5c3_Err = templ.ResolveAttributeValue(label) + var templ_7745c5c3_Var95 string + templ_7745c5c3_Var95, templ_7745c5c3_Err = templ.ResolveAttributeValue(label) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 406, Col: 93} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 405, Col: 93} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var96) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var95) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, "\" title=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "\" title=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var97 string - templ_7745c5c3_Var97, templ_7745c5c3_Err = templ.ResolveAttributeValue(label) + var templ_7745c5c3_Var96 string + templ_7745c5c3_Var96, templ_7745c5c3_Err = templ.ResolveAttributeValue(label) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 406, Col: 109} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 405, Col: 109} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var97) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var96) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "\" class=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, "\" class=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var98 string - templ_7745c5c3_Var98, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var94).String()) + var templ_7745c5c3_Var97 string + templ_7745c5c3_Var97, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var93).String()) if templ_7745c5c3_Err != nil { return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 1, Col: 0} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var98) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var97) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ_7745c5c3_Var93.Render(ctx, templ_7745c5c3_Buffer) + templ_7745c5c3_Err = templ_7745c5c3_Var92.Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "</a>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "</a>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -2088,12 +2070,12 @@ func IconGit(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var99 := templ.GetChildren(ctx) - if templ_7745c5c3_Var99 == nil { - templ_7745c5c3_Var99 = templ.NopComponent + templ_7745c5c3_Var98 := templ.GetChildren(ctx) + if templ_7745c5c3_Var98 == nil { + templ_7745c5c3_Var98 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var100 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var99 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2105,13 +2087,13 @@ func IconGit(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, "<line x1=\"6\" x2=\"6\" y1=\"3\" y2=\"15\"></line> <circle cx=\"18\" cy=\"6\" r=\"3\"></circle> <circle cx=\"6\" cy=\"18\" r=\"3\"></circle> <path d=\"M18 9a9 9 0 0 1-9 9\"></path>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "<line x1=\"6\" x2=\"6\" y1=\"3\" y2=\"15\"></line> <circle cx=\"18\" cy=\"6\" r=\"3\"></circle> <circle cx=\"6\" cy=\"18\" r=\"3\"></circle> <path d=\"M18 9a9 9 0 0 1-9 9\"></path>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var100), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var99), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -2135,12 +2117,12 @@ func IconGithub(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var101 := templ.GetChildren(ctx) - if templ_7745c5c3_Var101 == nil { - templ_7745c5c3_Var101 = templ.NopComponent + templ_7745c5c3_Var100 := templ.GetChildren(ctx) + if templ_7745c5c3_Var100 == nil { + templ_7745c5c3_Var100 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var102 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var101 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2152,13 +2134,13 @@ func IconGithub(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 117, "<path d=\"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4\"></path> <path d=\"M9 18c-4.51 2-5-2-7-2\"></path>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, "<path d=\"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4\"></path> <path d=\"M9 18c-4.51 2-5-2-7-2\"></path>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var102), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var101), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -2182,12 +2164,12 @@ func IconExternal(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var103 := templ.GetChildren(ctx) - if templ_7745c5c3_Var103 == nil { - templ_7745c5c3_Var103 = templ.NopComponent + templ_7745c5c3_Var102 := templ.GetChildren(ctx) + if templ_7745c5c3_Var102 == nil { + templ_7745c5c3_Var102 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var104 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var103 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2199,13 +2181,13 @@ func IconExternal(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 118, "<path d=\"M15 3h6v6\"></path> <path d=\"M10 14 21 3\"></path> <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 117, "<path d=\"M15 3h6v6\"></path> <path d=\"M10 14 21 3\"></path> <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var104), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var103), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -2229,12 +2211,12 @@ func IconKrypton() templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var105 := templ.GetChildren(ctx) - if templ_7745c5c3_Var105 == nil { - templ_7745c5c3_Var105 = templ.NopComponent + templ_7745c5c3_Var104 := templ.GetChildren(ctx) + if templ_7745c5c3_Var104 == nil { + templ_7745c5c3_Var104 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var106 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var105 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2246,13 +2228,13 @@ func IconKrypton() templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 119, "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\"><!-- Outer Circle --><circle cx=\"50\" cy=\"50\" r=\"42\" stroke-width=\"6\"></circle><!-- Inner Dot --><circle cx=\"50\" cy=\"50\" r=\"16\" fill=\"currentColor\" stroke=\"none\"></circle></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 118, "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\"><!-- Outer Circle --><circle cx=\"50\" cy=\"50\" r=\"42\" stroke-width=\"6\"></circle><!-- Inner Dot --><circle cx=\"50\" cy=\"50\" r=\"16\" fill=\"currentColor\" stroke=\"none\"></circle></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon("text-[#00f1ff] scale-150").Render(templ.WithChildren(ctx, templ_7745c5c3_Var106), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon("text-[#00f1ff] scale-150").Render(templ.WithChildren(ctx, templ_7745c5c3_Var105), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -2283,16 +2265,16 @@ func ProjectItem(project Project, extra string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var107 := templ.GetChildren(ctx) - if templ_7745c5c3_Var107 == nil { - templ_7745c5c3_Var107 = templ.NopComponent + templ_7745c5c3_Var106 := templ.GetChildren(ctx) + if templ_7745c5c3_Var106 == nil { + templ_7745c5c3_Var106 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 120, "<div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 119, "<div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var108 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var107 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2304,7 +2286,7 @@ func ProjectItem(project Project, extra string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 121, "<div class=\"flex flex-col gap-[0.0625rem] w-full\"><div class=\"flex flex-wrap items-baseline gap-x-[1ch] gap-y-[0.4rem]\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 120, "<div class=\"flex flex-col gap-[0.0625rem] w-full\"><div class=\"flex flex-wrap items-baseline gap-x-[1ch] gap-y-[0.4rem]\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -2312,102 +2294,102 @@ func ProjectItem(project Project, extra string) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 122, "<a href=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 121, "<a href=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var109 templ.SafeURL - templ_7745c5c3_Var109, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(projectURL(project))) + var templ_7745c5c3_Var108 templ.SafeURL + templ_7745c5c3_Var108, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(projectURL(project))) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 461, Col: 47} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 460, Col: 47} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var109)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var108)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 123, "\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 122, "\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } if project.Link != "" { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 124, " target=\"_blank\" rel=\"noopener noreferrer\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 123, " target=\"_blank\" rel=\"noopener noreferrer\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 125, " class=\"text-[130%] font-bold text-(--accent) after:absolute after:inset-0 after:z-0\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 124, " class=\"text-[130%] font-bold text-(--accent) after:absolute after:inset-0 after:z-0\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var110 string - templ_7745c5c3_Var110, templ_7745c5c3_Err = templ.JoinStringErrs(project.Title) + var templ_7745c5c3_Var109 string + templ_7745c5c3_Var109, templ_7745c5c3_Err = templ.JoinStringErrs(project.Title) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 467, Col: 21} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 466, Col: 21} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var110)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var109)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 126, "</a> <span class=\"text-[80%] text-(--primary)\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 125, "</a> <span class=\"text-[80%] text-(--primary)\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var111 string - templ_7745c5c3_Var111, templ_7745c5c3_Err = templ.JoinStringErrs(project.Category) + var templ_7745c5c3_Var110 string + templ_7745c5c3_Var110, templ_7745c5c3_Err = templ.JoinStringErrs(project.Category) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 468, Col: 65} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 467, Col: 65} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var111)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var110)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 127, "</span> ") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 126, "</span> ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } for _, tag := range project.Tags { - var templ_7745c5c3_Var112 = []any{"text-[75%] px-[0.4rem] inline-block rounded-[0.3rem] border-[0.01rem] bg-(--alt)/25" + " " + tag.Color} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var112...) + var templ_7745c5c3_Var111 = []any{"text-[75%] px-[0.4rem] inline-block rounded-[0.3rem] border-[0.01rem] bg-(--alt)/25" + " " + tag.Color} + templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var111...) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 128, "<code class=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 127, "<code class=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var113 string - templ_7745c5c3_Var113, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var112).String()) + var templ_7745c5c3_Var112 string + templ_7745c5c3_Var112, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var111).String()) if templ_7745c5c3_Err != nil { return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 1, Col: 0} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var113) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var112) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 129, "\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 128, "\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var114 string - templ_7745c5c3_Var114, templ_7745c5c3_Err = templ.JoinStringErrs(tag.Name) + var templ_7745c5c3_Var113 string + templ_7745c5c3_Var113, templ_7745c5c3_Err = templ.JoinStringErrs(tag.Name) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 470, Col: 136} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 469, Col: 136} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var114)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var113)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 130, "</code>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 129, "</code>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 131, "<span class=\"ml-auto flex items-center self-center relative z-10\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 130, "<span class=\"ml-auto flex items-center self-center relative z-10\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } for _, link := range project.Links { - templ_7745c5c3_Var115 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var114 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2425,35 +2407,35 @@ func ProjectItem(project Project, extra string) templ.Component { } return nil }) - templ_7745c5c3_Err = IconLink(link.URL, link.Label, "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var115), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = IconLink(link.URL, link.Label, "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var114), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 132, "</span></div><p class=\"text-[95%]\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 131, "</span></div><p class=\"text-[95%]\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var116 string - templ_7745c5c3_Var116, templ_7745c5c3_Err = templ.JoinStringErrs(project.Desc) + var templ_7745c5c3_Var115 string + templ_7745c5c3_Var115, templ_7745c5c3_Err = templ.JoinStringErrs(project.Desc) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 483, Col: 40} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 482, Col: 40} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var116)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var115)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 133, "</p></div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 132, "</p></div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorder("", "", "[--border-py:0.25rem] py-2 text-[80%] bg-black/20 hover:bg-white/5 transition-colors duration-150"+" "+extra).Render(templ.WithChildren(ctx, templ_7745c5c3_Var108), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorder("", "", "[--border-py:0.25rem] py-2 text-[80%] bg-black/20 hover:bg-white/5 transition-colors duration-150"+" "+extra).Render(templ.WithChildren(ctx, templ_7745c5c3_Var107), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 134, "</div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 133, "</div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -2482,12 +2464,12 @@ func ProjectsPage(style Style, projects []Project, pinned int) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var117 := templ.GetChildren(ctx) - if templ_7745c5c3_Var117 == nil { - templ_7745c5c3_Var117 = templ.NopComponent + templ_7745c5c3_Var116 := templ.GetChildren(ctx) + if templ_7745c5c3_Var116 == nil { + templ_7745c5c3_Var116 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var118 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var117 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2503,7 +2485,7 @@ func ProjectsPage(style Style, projects []Project, pinned int) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var119 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var118 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2515,7 +2497,7 @@ func ProjectsPage(style Style, projects []Project, pinned int) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var120 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var119 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2544,19 +2526,19 @@ func ProjectsPage(style Style, projects []Project, pinned int) templ.Component { } return nil }) - templ_7745c5c3_Err = TerminalStack(false, "mt-[0.5rem]").Render(templ.WithChildren(ctx, templ_7745c5c3_Var120), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalStack(false, "mt-[0.5rem]").Render(templ.WithChildren(ctx, templ_7745c5c3_Var119), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = ScrollBox("").Render(templ.WithChildren(ctx, templ_7745c5c3_Var119), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = ScrollBox("").Render(templ.WithChildren(ctx, templ_7745c5c3_Var118), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalLayout(style, "/home/kyren/projects").Render(templ.WithChildren(ctx, templ_7745c5c3_Var118), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalLayout(style, "/home/kyren/projects").Render(templ.WithChildren(ctx, templ_7745c5c3_Var117), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -2580,12 +2562,12 @@ func NotFoundPage(style Style, path string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var121 := templ.GetChildren(ctx) - if templ_7745c5c3_Var121 == nil { - templ_7745c5c3_Var121 = templ.NopComponent + templ_7745c5c3_Var120 := templ.GetChildren(ctx) + if templ_7745c5c3_Var120 == nil { + templ_7745c5c3_Var120 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var122 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var121 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2597,7 +2579,7 @@ func NotFoundPage(style Style, path string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var123 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var122 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2609,7 +2591,7 @@ func NotFoundPage(style Style, path string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var124 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var123 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2621,43 +2603,43 @@ func NotFoundPage(style Style, path string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 135, "<span><p>$ cd ~") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 134, "<span><p>$ cd ~") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var125 string - templ_7745c5c3_Var125, templ_7745c5c3_Err = templ.JoinStringErrs(path) + var templ_7745c5c3_Var124 string + templ_7745c5c3_Var124, templ_7745c5c3_Err = templ.JoinStringErrs(path) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 518, Col: 20} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 517, Col: 20} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var125)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var124)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 136, "</p><p class=\"pt-3\">\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 135, "</p><p class=\"pt-3\">\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var126 string - templ_7745c5c3_Var126, templ_7745c5c3_Err = templ.JoinStringErrs(path[1:]) + var templ_7745c5c3_Var125 string + templ_7745c5c3_Var125, templ_7745c5c3_Err = templ.JoinStringErrs(path[1:]) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 519, Col: 32} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 518, Col: 32} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var126)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var125)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 137, "\": No such file or directory (os error 2) </p></span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 136, "\": No such file or directory (os error 2) </p></span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorder("Shell", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var124), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorder("Shell", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var123), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var127 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var126 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2669,24 +2651,24 @@ func NotFoundPage(style Style, path string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 138, "<span><div class=\"gap-[1ch]\"><span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 137, "<span><div class=\"gap-[1ch]\"><span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var128 string - templ_7745c5c3_Var128, templ_7745c5c3_Err = templ.JoinStringErrs(">") + var templ_7745c5c3_Var127 string + templ_7745c5c3_Var127, templ_7745c5c3_Err = templ.JoinStringErrs(">") if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 525, Col: 17} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 524, Col: 17} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var128)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var127)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 139, "</span> <span class=\"text-(--secondary)\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 138, "</span> <span class=\"text-(--secondary)\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var129 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var128 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2698,39 +2680,39 @@ func NotFoundPage(style Style, path string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - var templ_7745c5c3_Var130 string - templ_7745c5c3_Var130, templ_7745c5c3_Err = templ.JoinStringErrs("cd -") + var templ_7745c5c3_Var129 string + templ_7745c5c3_Var129, templ_7745c5c3_Err = templ.JoinStringErrs("cd -") if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 528, Col: 16} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 527, Col: 16} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var130)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var129)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Link("javascript:history.back()", false).Render(templ.WithChildren(ctx, templ_7745c5c3_Var129), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Link("javascript:history.back()", false).Render(templ.WithChildren(ctx, templ_7745c5c3_Var128), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 140, "</span> <span class=\"text-(--alt)\"># Previous page</span></div><div class=\"gap-[1ch]\"><span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 139, "</span> <span class=\"text-(--alt)\"># Previous page</span></div><div class=\"gap-[1ch]\"><span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var131 string - templ_7745c5c3_Var131, templ_7745c5c3_Err = templ.JoinStringErrs(">") + var templ_7745c5c3_Var130 string + templ_7745c5c3_Var130, templ_7745c5c3_Err = templ.JoinStringErrs(">") if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 536, Col: 17} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 535, Col: 17} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var131)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var130)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 141, "</span> <span class=\"text-(--secondary)\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 140, "</span> <span class=\"text-(--secondary)\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var132 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var131 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2742,40 +2724,40 @@ func NotFoundPage(style Style, path string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - var templ_7745c5c3_Var133 string - templ_7745c5c3_Var133, templ_7745c5c3_Err = templ.JoinStringErrs("cd $HOME") + var templ_7745c5c3_Var132 string + templ_7745c5c3_Var132, templ_7745c5c3_Err = templ.JoinStringErrs("cd $HOME") if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 539, Col: 20} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 538, Col: 20} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var133)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var132)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Link("/", false).Render(templ.WithChildren(ctx, templ_7745c5c3_Var132), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Link("/", false).Render(templ.WithChildren(ctx, templ_7745c5c3_Var131), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 142, "</span></div></span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 141, "</span></div></span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorder("", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var127), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorder("", "", "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var126), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalStack(true, "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var123), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalStack(true, "").Render(templ.WithChildren(ctx, templ_7745c5c3_Var122), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalLayout(style, path).Render(templ.WithChildren(ctx, templ_7745c5c3_Var122), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalLayout(style, path).Render(templ.WithChildren(ctx, templ_7745c5c3_Var121), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -2799,38 +2781,38 @@ func ScrollBox(extra string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var134 := templ.GetChildren(ctx) - if templ_7745c5c3_Var134 == nil { - templ_7745c5c3_Var134 = templ.NopComponent + templ_7745c5c3_Var133 := templ.GetChildren(ctx) + if templ_7745c5c3_Var133 == nil { + templ_7745c5c3_Var133 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var135 = []any{"flex flex-1 min-h-0", extra} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var135...) + var templ_7745c5c3_Var134 = []any{"flex flex-1 min-h-0", extra} + templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var134...) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 143, "<div data-scrollbox class=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 142, "<div data-scrollbox class=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var136 string - templ_7745c5c3_Var136, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var135).String()) + var templ_7745c5c3_Var135 string + templ_7745c5c3_Var135, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var134).String()) if templ_7745c5c3_Err != nil { return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 1, Col: 0} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var136) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var135) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 144, "\"><div data-scroll-area class=\"flex-1 min-w-0 overflow-y-auto border-[0.1rem] border-solid border-(--alt) p-[1rem] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 143, "\"><div data-scroll-area class=\"flex-1 min-w-0 overflow-y-auto border-[0.1rem] border-solid border-(--alt) p-[1rem] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ_7745c5c3_Var134.Render(ctx, templ_7745c5c3_Buffer) + templ_7745c5c3_Err = templ_7745c5c3_Var133.Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 145, "</div><div data-scroll-track class=\"relative w-8 -ml-[0.1rem] border-[0.1rem] border-solid border-(--alt)\"><div data-scroll-thumb class=\"absolute inset-x-[0.3rem] bg-(--secondary) cursor-grab touch-none\"></div></div></div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 144, "</div><div data-scroll-track class=\"relative w-8 -ml-[0.1rem] border-[0.1rem] border-solid border-(--alt)\"><div data-scroll-thumb class=\"absolute inset-x-[0.3rem] bg-(--secondary) cursor-grab touch-none\"></div></div></div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -2854,12 +2836,12 @@ func BlogsPage(style Style, blogs []Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var137 := templ.GetChildren(ctx) - if templ_7745c5c3_Var137 == nil { - templ_7745c5c3_Var137 = templ.NopComponent + templ_7745c5c3_Var136 := templ.GetChildren(ctx) + if templ_7745c5c3_Var136 == nil { + templ_7745c5c3_Var136 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var138 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var137 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2871,7 +2853,7 @@ func BlogsPage(style Style, blogs []Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var139 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var138 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2883,17 +2865,17 @@ func BlogsPage(style Style, blogs []Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 146, "$ ls -lh ~/blogs") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 145, "$ ls -lh ~/blogs") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalBorder("Shell", "", "mb-[1rem]").Render(templ.WithChildren(ctx, templ_7745c5c3_Var139), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalBorder("Shell", "", "mb-[1rem]").Render(templ.WithChildren(ctx, templ_7745c5c3_Var138), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Var140 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var139 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2905,7 +2887,7 @@ func BlogsPage(style Style, blogs []Blog) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var141 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var140 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2927,19 +2909,19 @@ func BlogsPage(style Style, blogs []Blog) templ.Component { } return nil }) - templ_7745c5c3_Err = TerminalStack(false, "mt-[0.5rem]").Render(templ.WithChildren(ctx, templ_7745c5c3_Var141), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalStack(false, "mt-[0.5rem]").Render(templ.WithChildren(ctx, templ_7745c5c3_Var140), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = ScrollBox("").Render(templ.WithChildren(ctx, templ_7745c5c3_Var140), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = ScrollBox("").Render(templ.WithChildren(ctx, templ_7745c5c3_Var139), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = TerminalLayout(style, "blogs").Render(templ.WithChildren(ctx, templ_7745c5c3_Var138), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = TerminalLayout(style, "blogs").Render(templ.WithChildren(ctx, templ_7745c5c3_Var137), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -2970,12 +2952,12 @@ func IconMonitor(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var142 := templ.GetChildren(ctx) - if templ_7745c5c3_Var142 == nil { - templ_7745c5c3_Var142 = templ.NopComponent + templ_7745c5c3_Var141 := templ.GetChildren(ctx) + if templ_7745c5c3_Var141 == nil { + templ_7745c5c3_Var141 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var143 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var142 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -2987,13 +2969,13 @@ func IconMonitor(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 147, "<rect width=\"20\" height=\"14\" x=\"2\" y=\"3\" rx=\"2\"></rect> <line x1=\"8\" x2=\"16\" y1=\"21\" y2=\"21\"></line> <line x1=\"12\" x2=\"12\" y1=\"17\" y2=\"21\"></line>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 146, "<rect width=\"20\" height=\"14\" x=\"2\" y=\"3\" rx=\"2\"></rect> <line x1=\"8\" x2=\"16\" y1=\"21\" y2=\"21\"></line> <line x1=\"12\" x2=\"12\" y1=\"17\" y2=\"21\"></line>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var143), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var142), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3017,12 +2999,12 @@ func IconTerminal(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var144 := templ.GetChildren(ctx) - if templ_7745c5c3_Var144 == nil { - templ_7745c5c3_Var144 = templ.NopComponent + templ_7745c5c3_Var143 := templ.GetChildren(ctx) + if templ_7745c5c3_Var143 == nil { + templ_7745c5c3_Var143 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var145 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var144 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3034,13 +3016,13 @@ func IconTerminal(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 148, "<polyline points=\"4 17 10 11 4 5\"></polyline> <line x1=\"12\" x2=\"20\" y1=\"19\" y2=\"19\"></line>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 147, "<polyline points=\"4 17 10 11 4 5\"></polyline> <line x1=\"12\" x2=\"20\" y1=\"19\" y2=\"19\"></line>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var145), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var144), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3064,12 +3046,12 @@ func IconCode(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var146 := templ.GetChildren(ctx) - if templ_7745c5c3_Var146 == nil { - templ_7745c5c3_Var146 = templ.NopComponent + templ_7745c5c3_Var145 := templ.GetChildren(ctx) + if templ_7745c5c3_Var145 == nil { + templ_7745c5c3_Var145 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var147 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var146 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3081,13 +3063,13 @@ func IconCode(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 149, "<polyline points=\"16 18 22 12 16 6\"></polyline> <polyline points=\"8 6 2 12 8 18\"></polyline>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 148, "<polyline points=\"16 18 22 12 16 6\"></polyline> <polyline points=\"8 6 2 12 8 18\"></polyline>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var147), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var146), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3111,12 +3093,12 @@ func IconCpu(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var148 := templ.GetChildren(ctx) - if templ_7745c5c3_Var148 == nil { - templ_7745c5c3_Var148 = templ.NopComponent + templ_7745c5c3_Var147 := templ.GetChildren(ctx) + if templ_7745c5c3_Var147 == nil { + templ_7745c5c3_Var147 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var149 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var148 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3128,13 +3110,13 @@ func IconCpu(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 150, "<rect width=\"16\" height=\"16\" x=\"4\" y=\"4\" rx=\"2\"></rect> <rect width=\"6\" height=\"6\" x=\"9\" y=\"9\" rx=\"1\"></rect> <path d=\"M15 2v2M15 20v2M2 15h2M2 9h2M20 15h2M20 9h2M9 2v2M9 20v2\"></path>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 149, "<rect width=\"16\" height=\"16\" x=\"4\" y=\"4\" rx=\"2\"></rect> <rect width=\"6\" height=\"6\" x=\"9\" y=\"9\" rx=\"1\"></rect> <path d=\"M15 2v2M15 20v2M2 15h2M2 9h2M20 15h2M20 9h2M9 2v2M9 20v2\"></path>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var149), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var148), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3158,12 +3140,12 @@ func IconScriptLang(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var150 := templ.GetChildren(ctx) - if templ_7745c5c3_Var150 == nil { - templ_7745c5c3_Var150 = templ.NopComponent + templ_7745c5c3_Var149 := templ.GetChildren(ctx) + if templ_7745c5c3_Var149 == nil { + templ_7745c5c3_Var149 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var151 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var150 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3175,13 +3157,13 @@ func IconScriptLang(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 151, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-file-terminal preview-icon\"><path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"></path><path d=\"M14 2v5a1 1 0 0 0 1 1h5\"></path><path d=\"m8 16 2-2-2-2\"></path><path d=\"M12 18h4\"></path></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 150, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-file-terminal preview-icon\"><path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"></path><path d=\"M14 2v5a1 1 0 0 0 1 1h5\"></path><path d=\"m8 16 2-2-2-2\"></path><path d=\"M12 18h4\"></path></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var151), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var150), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3205,12 +3187,12 @@ func IconEditor(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var152 := templ.GetChildren(ctx) - if templ_7745c5c3_Var152 == nil { - templ_7745c5c3_Var152 = templ.NopComponent + templ_7745c5c3_Var151 := templ.GetChildren(ctx) + if templ_7745c5c3_Var151 == nil { + templ_7745c5c3_Var151 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var153 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var152 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3222,13 +3204,13 @@ func IconEditor(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 152, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-square-pen preview-icon\"><path d=\"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"></path><path d=\"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\"></path></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 151, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-square-pen preview-icon\"><path d=\"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"></path><path d=\"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\"></path></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var153), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var152), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3252,12 +3234,12 @@ func IconDebugger(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var154 := templ.GetChildren(ctx) - if templ_7745c5c3_Var154 == nil { - templ_7745c5c3_Var154 = templ.NopComponent + templ_7745c5c3_Var153 := templ.GetChildren(ctx) + if templ_7745c5c3_Var153 == nil { + templ_7745c5c3_Var153 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var155 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var154 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3269,13 +3251,13 @@ func IconDebugger(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 153, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-bug-off preview-icon\"><path d=\"M12 20v-8\"></path><path d=\"M12.656 7H14a4 4 0 0 1 4 4v1.344\"></path><path d=\"M14.12 3.88 16 2\"></path><path d=\"M17.123 17.123A6 6 0 0 1 6 14v-3a4 4 0 0 1 1.72-3.287\"></path><path d=\"m2 2 20 20\"></path><path d=\"M21 5a4 4 0 0 1-3.55 3.97\"></path><path d=\"M22 13h-3.344\"></path><path d=\"M3 21a4 4 0 0 1 3.81-4\"></path><path d=\"M3 5a4 4 0 0 0 3.55 3.97\"></path><path d=\"M6 13H2\"></path><path d=\"m8 2 1.88 1.88\"></path><path d=\"M9.712 4.06A3 3 0 0 1 15 6v1.13\"></path></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 152, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-bug-off preview-icon\"><path d=\"M12 20v-8\"></path><path d=\"M12.656 7H14a4 4 0 0 1 4 4v1.344\"></path><path d=\"M14.12 3.88 16 2\"></path><path d=\"M17.123 17.123A6 6 0 0 1 6 14v-3a4 4 0 0 1 1.72-3.287\"></path><path d=\"m2 2 20 20\"></path><path d=\"M21 5a4 4 0 0 1-3.55 3.97\"></path><path d=\"M22 13h-3.344\"></path><path d=\"M3 21a4 4 0 0 1 3.81-4\"></path><path d=\"M3 5a4 4 0 0 0 3.55 3.97\"></path><path d=\"M6 13H2\"></path><path d=\"m8 2 1.88 1.88\"></path><path d=\"M9.712 4.06A3 3 0 0 1 15 6v1.13\"></path></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var155), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var154), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3299,12 +3281,12 @@ func IconKeyboard(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var156 := templ.GetChildren(ctx) - if templ_7745c5c3_Var156 == nil { - templ_7745c5c3_Var156 = templ.NopComponent + templ_7745c5c3_Var155 := templ.GetChildren(ctx) + if templ_7745c5c3_Var155 == nil { + templ_7745c5c3_Var155 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var157 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var156 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3316,13 +3298,13 @@ func IconKeyboard(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 154, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-keyboard preview-icon\"><path d=\"M10 8h.01\"></path><path d=\"M12 12h.01\"></path><path d=\"M14 8h.01\"></path><path d=\"M16 12h.01\"></path><path d=\"M18 8h.01\"></path><path d=\"M6 8h.01\"></path><path d=\"M7 16h10\"></path><path d=\"M8 12h.01\"></path><rect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"></rect></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 153, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-keyboard preview-icon\"><path d=\"M10 8h.01\"></path><path d=\"M12 12h.01\"></path><path d=\"M14 8h.01\"></path><path d=\"M16 12h.01\"></path><path d=\"M18 8h.01\"></path><path d=\"M6 8h.01\"></path><path d=\"M7 16h10\"></path><path d=\"M8 12h.01\"></path><rect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"></rect></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var157), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var156), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3346,12 +3328,12 @@ func IconUptime(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var158 := templ.GetChildren(ctx) - if templ_7745c5c3_Var158 == nil { - templ_7745c5c3_Var158 = templ.NopComponent + templ_7745c5c3_Var157 := templ.GetChildren(ctx) + if templ_7745c5c3_Var157 == nil { + templ_7745c5c3_Var157 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var159 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var158 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3363,13 +3345,13 @@ func IconUptime(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 155, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-clock preview-icon\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M12 6v6l4 2\"></path></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 154, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-clock preview-icon\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M12 6v6l4 2\"></path></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var159), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var158), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3393,12 +3375,12 @@ func IconEko(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var160 := templ.GetChildren(ctx) - if templ_7745c5c3_Var160 == nil { - templ_7745c5c3_Var160 = templ.NopComponent + templ_7745c5c3_Var159 := templ.GetChildren(ctx) + if templ_7745c5c3_Var159 == nil { + templ_7745c5c3_Var159 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var161 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var160 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3410,13 +3392,13 @@ func IconEko(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 156, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-wifi preview-icon\"><path d=\"M12 20h.01\"></path><path d=\"M2 8.82a15 15 0 0 1 20 0\"></path><path d=\"M5 12.859a10 10 0 0 1 14 0\"></path><path d=\"M8.5 16.429a5 5 0 0 1 7 0\"></path></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 155, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-wifi preview-icon\"><path d=\"M12 20h.01\"></path><path d=\"M2 8.82a15 15 0 0 1 20 0\"></path><path d=\"M5 12.859a10 10 0 0 1 14 0\"></path><path d=\"M8.5 16.429a5 5 0 0 1 7 0\"></path></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var161), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var160), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3440,12 +3422,12 @@ func IconTrident(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var162 := templ.GetChildren(ctx) - if templ_7745c5c3_Var162 == nil { - templ_7745c5c3_Var162 = templ.NopComponent + templ_7745c5c3_Var161 := templ.GetChildren(ctx) + if templ_7745c5c3_Var161 == nil { + templ_7745c5c3_Var161 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var163 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var162 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3457,13 +3439,13 @@ func IconTrident(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 157, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide preview-icon\"><path d=\"m16 2-2.3 2.3a3 3 0 0 0 0 4.2l1.8 1.8a3 3 0 0 0 4.2 0L22 8\"></path> <path d=\"M19 5 2.1 21.9\"></path></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 156, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide preview-icon\"><path d=\"m16 2-2.3 2.3a3 3 0 0 0 0 4.2l1.8 1.8a3 3 0 0 0 4.2 0L22 8\"></path> <path d=\"M19 5 2.1 21.9\"></path></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var163), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var162), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3487,12 +3469,12 @@ func IconDotfiles(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var164 := templ.GetChildren(ctx) - if templ_7745c5c3_Var164 == nil { - templ_7745c5c3_Var164 = templ.NopComponent + templ_7745c5c3_Var163 := templ.GetChildren(ctx) + if templ_7745c5c3_Var163 == nil { + templ_7745c5c3_Var163 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var165 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var164 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3504,13 +3486,13 @@ func IconDotfiles(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 158, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-settings preview-icon\"><path d=\"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 157, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-settings preview-icon\"><path d=\"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var165), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var164), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3534,12 +3516,12 @@ func IconVideo(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var166 := templ.GetChildren(ctx) - if templ_7745c5c3_Var166 == nil { - templ_7745c5c3_Var166 = templ.NopComponent + templ_7745c5c3_Var165 := templ.GetChildren(ctx) + if templ_7745c5c3_Var165 == nil { + templ_7745c5c3_Var165 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var167 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var166 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3551,13 +3533,13 @@ func IconVideo(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 159, " <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-monitor-play preview-icon\"><path d=\"M15.033 9.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56V7.648a.645.645 0 0 1 .967-.56z\"></path><path d=\"M12 17v4\"></path><path d=\"M8 21h8\"></path><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\"></rect></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 158, " <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-monitor-play preview-icon\"><path d=\"M15.033 9.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56V7.648a.645.645 0 0 1 .967-.56z\"></path><path d=\"M12 17v4\"></path><path d=\"M8 21h8\"></path><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\"></rect></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var167), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var166), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3581,12 +3563,12 @@ func IconJetbrains(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var168 := templ.GetChildren(ctx) - if templ_7745c5c3_Var168 == nil { - templ_7745c5c3_Var168 = templ.NopComponent + templ_7745c5c3_Var167 := templ.GetChildren(ctx) + if templ_7745c5c3_Var167 == nil { + templ_7745c5c3_Var167 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var169 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var168 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3598,13 +3580,13 @@ func IconJetbrains(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 160, "<svg fill=\"none\" viewBox=\"0 0 64 64\" xmlns=\"http://www.w3.org/2000/svg\"><defs><linearGradient id=\"_R_34j5_\" x1=\"0.85\" x2=\"62.62\" y1=\"62.72\" y2=\"1.81\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#FF9419\"></stop> <stop offset=\"0.43\" stop-color=\"#FF021D\"></stop> <stop offset=\"0.99\" stop-color=\"#E600FF\"></stop></linearGradient></defs> <path fill=\"url(#_R_34j5_)\" d=\"M20.34 3.66 3.66 20.34A12.5 12.5 0 0 0 0 29.18V59c0 2.76 2.24 5 5 5h29.82c3.32 0 6.49-1.32 8.84-3.66l16.68-16.68c2.34-2.34 3.66-5.52 3.66-8.84V5c0-2.76-2.24-5-5-5H29.18c-3.32 0-6.49 1.32-8.84 3.66\"></path> <path fill=\"#000\" d=\"M48 16H8v40h40z\"></path> <path fill=\"#fff\" d=\"M30 47H13v4h17z\"></path></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 159, "<svg fill=\"none\" viewBox=\"0 0 64 64\" xmlns=\"http://www.w3.org/2000/svg\"><defs><linearGradient id=\"_R_34j5_\" x1=\"0.85\" x2=\"62.62\" y1=\"62.72\" y2=\"1.81\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#FF9419\"></stop> <stop offset=\"0.43\" stop-color=\"#FF021D\"></stop> <stop offset=\"0.99\" stop-color=\"#E600FF\"></stop></linearGradient></defs> <path fill=\"url(#_R_34j5_)\" d=\"M20.34 3.66 3.66 20.34A12.5 12.5 0 0 0 0 29.18V59c0 2.76 2.24 5 5 5h29.82c3.32 0 6.49-1.32 8.84-3.66l16.68-16.68c2.34-2.34 3.66-5.52 3.66-8.84V5c0-2.76-2.24-5-5-5H29.18c-3.32 0-6.49 1.32-8.84 3.66\"></path> <path fill=\"#000\" d=\"M48 16H8v40h40z\"></path> <path fill=\"#fff\" d=\"M30 47H13v4h17z\"></path></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var169), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var168), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3628,12 +3610,12 @@ func IconDocs(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var170 := templ.GetChildren(ctx) - if templ_7745c5c3_Var170 == nil { - templ_7745c5c3_Var170 = templ.NopComponent + templ_7745c5c3_Var169 := templ.GetChildren(ctx) + if templ_7745c5c3_Var169 == nil { + templ_7745c5c3_Var169 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var171 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var170 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3645,13 +3627,13 @@ func IconDocs(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 161, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-book-open preview-icon\"><path d=\"M12 5v16\"></path><path d=\"M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z\"></path></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 160, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-book-open preview-icon\"><path d=\"M12 5v16\"></path><path d=\"M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z\"></path></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var171), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var170), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3675,12 +3657,12 @@ func IconReleases(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var172 := templ.GetChildren(ctx) - if templ_7745c5c3_Var172 == nil { - templ_7745c5c3_Var172 = templ.NopComponent + templ_7745c5c3_Var171 := templ.GetChildren(ctx) + if templ_7745c5c3_Var171 == nil { + templ_7745c5c3_Var171 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var173 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var172 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) if !templ_7745c5c3_IsBuffer { @@ -3692,13 +3674,13 @@ func IconReleases(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 162, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-tags preview-icon\"><path d=\"M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z\"></path><path d=\"M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193\"></path><circle cx=\"10.5\" cy=\"6.5\" r=\".5\" fill=\"currentColor\"></circle></svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 161, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-tags preview-icon\"><path d=\"M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z\"></path><path d=\"M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193\"></path><circle cx=\"10.5\" cy=\"6.5\" r=\".5\" fill=\"currentColor\"></circle></svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } return nil }) - templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var173), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = Icon(color).Render(templ.WithChildren(ctx, templ_7745c5c3_Var172), templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3750,30 +3732,30 @@ func Fastfetch(rows []FetchRow) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var174 := templ.GetChildren(ctx) - if templ_7745c5c3_Var174 == nil { - templ_7745c5c3_Var174 = templ.NopComponent + templ_7745c5c3_Var173 := templ.GetChildren(ctx) + if templ_7745c5c3_Var173 == nil { + templ_7745c5c3_Var173 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 163, "<div style=\"\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto auto auto 1fr;\n\t\talign-items: center;\n\t\tcolumn-gap: 1ch;\n\t\tline-height: normal;\n\t\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 162, "<div style=\"\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto auto auto 1fr;\n\t\talign-items: center;\n\t\tcolumn-gap: 1ch;\n\t\tline-height: normal;\n\t\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } for i, row := range rows { - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 164, "<span class=\"text-(--alt)\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 163, "<span class=\"text-(--alt)\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var175 string - templ_7745c5c3_Var175, templ_7745c5c3_Err = templ.JoinStringErrs(branch(i, len(rows))) + var templ_7745c5c3_Var174 string + templ_7745c5c3_Var174, templ_7745c5c3_Err = templ.JoinStringErrs(branch(i, len(rows))) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 740, Col: 52} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 739, Col: 52} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var175)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var174)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 165, "</span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 164, "</span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3781,69 +3763,69 @@ func Fastfetch(rows []FetchRow) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var176 = []any{row.Color, "font-bold"} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var176...) + var templ_7745c5c3_Var175 = []any{row.Color, "font-bold"} + templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var175...) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 166, "<span class=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 165, "<span class=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var177 string - templ_7745c5c3_Var177, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var176).String()) + var templ_7745c5c3_Var176 string + templ_7745c5c3_Var176, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var175).String()) if templ_7745c5c3_Err != nil { return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 1, Col: 0} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var177) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var176) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 167, "\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 166, "\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var178 string - templ_7745c5c3_Var178, templ_7745c5c3_Err = templ.JoinStringErrs(row.Label) + var templ_7745c5c3_Var177 string + templ_7745c5c3_Var177, templ_7745c5c3_Err = templ.JoinStringErrs(row.Label) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 742, Col: 53} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 741, Col: 53} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var178)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var177)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 168, "</span> <span id=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 167, "</span> <span id=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var179 string - templ_7745c5c3_Var179, templ_7745c5c3_Err = templ.ResolveAttributeValue(row.Label) + var templ_7745c5c3_Var178 string + templ_7745c5c3_Var178, templ_7745c5c3_Err = templ.ResolveAttributeValue(row.Label) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 743, Col: 23} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 742, Col: 23} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var179) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var178) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 169, "\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 168, "\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var180 string - templ_7745c5c3_Var180, templ_7745c5c3_Err = templ.JoinStringErrs(row.Value) + var templ_7745c5c3_Var179 string + templ_7745c5c3_Var179, templ_7745c5c3_Err = templ.JoinStringErrs(row.Value) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 743, Col: 37} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 742, Col: 37} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var180)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var179)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 170, "</span>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 169, "</span>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 171, "</div>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 170, "</div>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3867,38 +3849,38 @@ func Icon(color string) templ.Component { }() } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var181 := templ.GetChildren(ctx) - if templ_7745c5c3_Var181 == nil { - templ_7745c5c3_Var181 = templ.NopComponent + templ_7745c5c3_Var180 := templ.GetChildren(ctx) + if templ_7745c5c3_Var180 == nil { + templ_7745c5c3_Var180 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - var templ_7745c5c3_Var182 = []any{"shrink-0", Color(color), "self-center"} - templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var182...) + var templ_7745c5c3_Var181 = []any{"shrink-0", Color(color), "self-center"} + templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var181...) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 172, "<svg width=\"1.1em\" height=\"1.1em\" class=\"") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 171, "<svg width=\"1.1em\" height=\"1.1em\" class=\"") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var183 string - templ_7745c5c3_Var183, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var182).String()) + var templ_7745c5c3_Var182 string + templ_7745c5c3_Var182, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var181).String()) if templ_7745c5c3_Err != nil { return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 1, Col: 0} } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var183) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var182) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 173, "\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 172, "\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ_7745c5c3_Var181.Render(ctx, templ_7745c5c3_Buffer) + templ_7745c5c3_Err = templ_7745c5c3_Var180.Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 174, "</svg>") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 173, "</svg>") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -3906,4 +3888,173 @@ func Icon(color string) templ.Component { }) } +func BlogPage(style Style, blog Blog, prev *Blog, next *Blog) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var183 := templ.GetChildren(ctx) + if templ_7745c5c3_Var183 == nil { + templ_7745c5c3_Var183 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Var184 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var185 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Err = BlogItem("", blog, "mb-[1rem]").Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 174, "<article class=\"prose select-text font-(family-name:--font-normal) text-[17.6px] leading-[1.7]\">") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ.Raw(blog.HTML).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 175, "</article><div class=\"grid grid-cols-2 gap-x-[1rem] mt-[1rem]\">") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = BlogNav("Previous Blog", prev, "").Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = BlogNav("Next Blog", next, "").Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 176, "</div>") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) + templ_7745c5c3_Err = ScrollBox("").Render(templ.WithChildren(ctx, templ_7745c5c3_Var185), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) + templ_7745c5c3_Err = TerminalLayout(style, blog.Title).Render(templ.WithChildren(ctx, templ_7745c5c3_Var184), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +func BlogNav(label string, blog *Blog, extra string) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var186 := templ.GetChildren(ctx) + if templ_7745c5c3_Var186 == nil { + templ_7745c5c3_Var186 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + if blog != nil { + templ_7745c5c3_Var187 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 177, "<a href=\"") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var188 templ.SafeURL + templ_7745c5c3_Var188, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("/blogs/" + blog.Slug)) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 771, Col: 49} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var188)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 178, "\" class=\"block min-w-0 truncate\">vim ~/blogs/") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var189 string + templ_7745c5c3_Var189, templ_7745c5c3_Err = templ.JoinStringErrs(blog.Slug) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `website.templ`, Line: 771, Col: 106} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var189)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 179, "</a>") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) + templ_7745c5c3_Err = TerminalBorder(label, "", "min-w-0 "+extra).Render(templ.WithChildren(ctx, templ_7745c5c3_Var187), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 180, "<div></div>") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + return nil + }) +} + var _ = templruntime.GeneratedTemplate |
