deploy: 199ccf2f72
|
|
@ -0,0 +1,2 @@
|
||||||
|
_worker.js
|
||||||
|
_routes.json
|
||||||
|
|
@ -0,0 +1,88 @@
|
||||||
|
##### Optimize default expiration time - BEGIN
|
||||||
|
<IfModule mod_expires.c>
|
||||||
|
|
||||||
|
## Enable expiration control
|
||||||
|
ExpiresActive On
|
||||||
|
|
||||||
|
## CSS and JS expiration: 1 week after request
|
||||||
|
ExpiresByType text/css "now plus 1 week"
|
||||||
|
ExpiresByType application/javascript "now plus 1 week"
|
||||||
|
ExpiresByType application/x-javascript "now plus 1 week"
|
||||||
|
|
||||||
|
## Image files expiration: 1 month after request
|
||||||
|
ExpiresByType image/bmp "now plus 1 month"
|
||||||
|
ExpiresByType image/gif "now plus 1 month"
|
||||||
|
ExpiresByType image/jpeg "now plus 1 month"
|
||||||
|
ExpiresByType image/webp "now plus 1 month"
|
||||||
|
ExpiresByType image/jp2 "now plus 1 month"
|
||||||
|
ExpiresByType image/pipeg "now plus 1 month"
|
||||||
|
ExpiresByType image/png "now plus 1 month"
|
||||||
|
ExpiresByType image/svg+xml "now plus 1 month"
|
||||||
|
ExpiresByType image/tiff "now plus 1 month"
|
||||||
|
ExpiresByType image/x-icon "now plus 1 month"
|
||||||
|
ExpiresByType image/ico "now plus 1 month"
|
||||||
|
ExpiresByType image/icon "now plus 1 month"
|
||||||
|
ExpiresByType text/ico "now plus 1 month"
|
||||||
|
ExpiresByType application/ico "now plus 1 month"
|
||||||
|
ExpiresByType image/vnd.wap.wbmp "now plus 1 month"
|
||||||
|
|
||||||
|
## Font files expiration: 1 month after request
|
||||||
|
ExpiresByType application/x-font-ttf "now plus 1 month"
|
||||||
|
ExpiresByType application/x-font-opentype "now plus 1 month"
|
||||||
|
ExpiresByType application/x-font-woff "now plus 1 month"
|
||||||
|
ExpiresByType font/woff2 "now plus 1 month"
|
||||||
|
ExpiresByType image/svg+xml "now plus 1 month"
|
||||||
|
|
||||||
|
## Audio files expiration: 1 month after request
|
||||||
|
ExpiresByType audio/ogg "now plus 1 month"
|
||||||
|
ExpiresByType application/ogg "now plus 1 month"
|
||||||
|
ExpiresByType audio/basic "now plus 1 month"
|
||||||
|
ExpiresByType audio/mid "now plus 1 month"
|
||||||
|
ExpiresByType audio/midi "now plus 1 month"
|
||||||
|
ExpiresByType audio/mpeg "now plus 1 month"
|
||||||
|
ExpiresByType audio/mp3 "now plus 1 month"
|
||||||
|
ExpiresByType audio/x-aiff "now plus 1 month"
|
||||||
|
ExpiresByType audio/x-mpegurl "now plus 1 month"
|
||||||
|
ExpiresByType audio/x-pn-realaudio "now plus 1 month"
|
||||||
|
ExpiresByType audio/x-wav "now plus 1 month"
|
||||||
|
|
||||||
|
## Movie files expiration: 1 month after request
|
||||||
|
ExpiresByType application/x-shockwave-flash "now plus 1 month"
|
||||||
|
ExpiresByType x-world/x-vrml "now plus 1 month"
|
||||||
|
ExpiresByType video/x-msvideo "now plus 1 month"
|
||||||
|
ExpiresByType video/mpeg "now plus 1 month"
|
||||||
|
ExpiresByType video/mp4 "now plus 1 month"
|
||||||
|
ExpiresByType video/quicktime "now plus 1 month"
|
||||||
|
ExpiresByType video/x-la-asf "now plus 1 month"
|
||||||
|
ExpiresByType video/x-ms-asf "now plus 1 month"
|
||||||
|
</IfModule>
|
||||||
|
##### Optimize default expiration time - END
|
||||||
|
|
||||||
|
##### 1 Month for most static resources
|
||||||
|
<filesMatch ".(css|jpg|jpeg|png|webp|gif|js|ico|woff|woff2|eot|ttf)$">
|
||||||
|
Header set Cache-Control "max-age=2592000, public"
|
||||||
|
</filesMatch>
|
||||||
|
|
||||||
|
##### Enable gzip compression for resources
|
||||||
|
<ifModule mod_gzip.c>
|
||||||
|
mod_gzip_on Yes
|
||||||
|
mod_gzip_dechunk Yes
|
||||||
|
mod_gzip_item_include file .(html?|txt|css|js|php)$
|
||||||
|
mod_gzip_item_include handler ^cgi-script$
|
||||||
|
mod_gzip_item_include mime ^text/.*
|
||||||
|
mod_gzip_item_include mime ^application/x-javascript.*
|
||||||
|
mod_gzip_item_exclude mime ^image/.*
|
||||||
|
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
|
||||||
|
</ifModule>
|
||||||
|
|
||||||
|
##### Or, compress certain file types by extension:
|
||||||
|
<FilesMatch ".(html|css|jpg|jpeg|webp|png|gif|js|ico)">
|
||||||
|
SetOutputFilter DEFLATE
|
||||||
|
</FilesMatch>
|
||||||
|
|
||||||
|
##### Set Header Vary: Accept-Encoding
|
||||||
|
<IfModule mod_headers.c>
|
||||||
|
<FilesMatch ".(js|css|xml|gz|html)$">
|
||||||
|
Header append Vary: Accept-Encoding
|
||||||
|
</FilesMatch>
|
||||||
|
</IfModule>
|
||||||
|
|
@ -0,0 +1,105 @@
|
||||||
|
<!DOCTYPE html><html lang="en"> <head><!-- favicon --><link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"><link rel="sitemap" href="/sitemap-index.xml"><meta name="theme-name" content="pages"><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000"><meta name="generator" content="Astro v5.13.2"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"><title>
|
||||||
|
Page Not Found
|
||||||
|
|
||||||
|
</title><meta name="description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta name="author" content="Jane Doe"><meta property="og:title" content="Page Not Found
|
||||||
|
"><meta property="og:description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta property="og:type" content="website"><meta property="og:url" content="https://janedoe.com/404/"><meta property="og:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:title" content="Page Not Found
|
||||||
|
"><meta name="twitter:description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta name="twitter:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:card" content="summary_large_image"><!-- Katex --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js" integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script><!-- https://docs.astro.build/en/guides/view-transitions --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="swap"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.DXDO1ZkE.js"></script><script type="application/json" data-tooltips-options>{"interactive":false,"delay":[333,0]}</script><script type="module" src="/_astro/Tooltips.astro_astro_type_script_index_0_lang.Bx2cGmPu.js"></script><link rel="stylesheet" href="/_astro/about.DDk7dmDO.css">
|
||||||
|
<link rel="stylesheet" href="/_astro/about.D07_NNuH.css"><script type="module" src="/_astro/page.DlXkxCA4.js"></script></head> <body> <!-- ---
|
||||||
|
// Twinkling Star Background
|
||||||
|
const numStars = 1600;
|
||||||
|
const stars = Array.from({ length: numStars }).map(() => ({
|
||||||
|
left: `${Math.random() * 100}%`,
|
||||||
|
top: `${Math.random() * 100}%`,
|
||||||
|
size: `${Math.random() * 2 + 1}px`,
|
||||||
|
delay: `${7 * Math.random()}s`,
|
||||||
|
// hsl: `hsl(${Math.random() * 360}, 100%, 50%)`, // background: ${hsl};
|
||||||
|
}));
|
||||||
|
---
|
||||||
|
<div
|
||||||
|
class="fixed top-0 left-0 w-full h-full pointer-events-none overflow-hidden"
|
||||||
|
>
|
||||||
|
{
|
||||||
|
stars.map(({ left, top, size, delay }) => (
|
||||||
|
<div
|
||||||
|
class="absolute bg-none dark:bg-yellow-50 rounded-full animate-twinkle"
|
||||||
|
style={`
|
||||||
|
left: ${left};
|
||||||
|
top: ${top};
|
||||||
|
width: ${size};
|
||||||
|
height: ${size};
|
||||||
|
animation-delay: ${delay};
|
||||||
|
`}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div> --><!-- Gradient Cycle Background --><!-- <div
|
||||||
|
class="gradient animate-cycleBg fixed top-0 left-0 w-full h-full -z-1 pointer-events-none overflow-hidden"
|
||||||
|
/>
|
||||||
|
<style>
|
||||||
|
.gradient {
|
||||||
|
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
|
||||||
|
background-size: 400% 400%;
|
||||||
|
}
|
||||||
|
</style> --><!-- Single Image Background --><!-- <style>
|
||||||
|
html::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: url(/src/assets/backgrounds/bwca-dusk.png) no-repeat center center;
|
||||||
|
background-size: cover;
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
</style> --><!-- Dual Image Background --> <header class="container glass py-2 z-30 mb-4 lg:mt-4 lg:rounded-lg sticky top-0" data-astro-transition-persist="astro-zg46k4mb-1"> <nav class="relative flex flex-wrap items-center justify-between"> <!-- navbar toggler --> <input id="nav-toggle" type="checkbox" class="hidden"> <label for="nav-toggle" class="order-0 cursor-pointer flex items-center md:hidden text-txt-p dark:text-darkmode-txt-p lg:order-1"> <svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20"> <title>Menu Open</title> <path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path> </svg> <svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20"> <title>Menu Close</title> <polygon points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2" transform="rotate(45 10 10)"></polygon> </svg> </label> <!-- /navbar toggler --> <ul id="nav-menu" class="text-center lg:text-left order-3 hidden w-full pb-6 md:order-1 md:flex md:w-auto md:space-x-2 md:pb-0 lg:space-x-4"> <li class=""> <a href="/" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Home </a> </li><li class=""> <a href="/about" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> About </a> </li><li class=""> <a href="/docs" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Docs </a> </li><li class=""> <a href="/blog" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Blog </a> </li><li class=""> <a href="/portfolio" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Portfolio </a> </li> </ul> <div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0"> <a class="mr-4 inline-block border-border text-xl text-txt-p dark:border-darkmode-border dark:text-darkmode-txt-p" href="/search" aria-label="search"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M456.69 421.39 362.6 327.3a173.81 173.81 0 0 0 34.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 0 0 327.3 362.6l94.09 94.09a25 25 0 0 0 35.3-35.3zM97.92 222.72a124.8 124.8 0 1 1 124.8 124.8 124.95 124.95 0 0 1-124.8-124.8z"></path></svg> </a> <div class="inline-flex a mr-2"> <input class="absolute opacity-0" id="theme-switcher" data-theme-switcher type="checkbox"> <label class="relative inline-block h-4 w-6 cursor-pointer" for="theme-switcher"> <span class="sr-only">theme switcher</span> <span class="absolute -top-1 left-0 flex h-6 w-6 items-center justify-center rounded-full"> <svg class="absolute z-10 opacity-100 dark:opacity-0" viewBox="0 0 24 24" height="21" width="21"> <path fill="#000" d="M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z"></path> </svg> <svg class="absolute z-10 opacity-0 dark:opacity-100" viewBox="0 0 24 24" height="21" width="21"> <path fill="#fff" d="M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path> </svg> </span> </label> </div> <script data-astro-rerun>
|
||||||
|
const defaultTheme = "system";
|
||||||
|
|
||||||
|
function getTheme(defaultTheme) {
|
||||||
|
var darkMode = defaultTheme === "dark" ? true : false;
|
||||||
|
if (localStorage.getItem("theme") === "system") {
|
||||||
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||||
|
darkMode = true;
|
||||||
|
}
|
||||||
|
} else if (localStorage.getItem("theme") === "dark") {
|
||||||
|
darkMode = true;
|
||||||
|
} else if (localStorage.getItem("theme") === "light") {
|
||||||
|
darkMode = false;
|
||||||
|
}
|
||||||
|
return darkMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setTheme(darkMode) {
|
||||||
|
// Update DOM
|
||||||
|
darkMode
|
||||||
|
? document.documentElement.classList.add("dark")
|
||||||
|
: document.documentElement.classList.remove("dark");
|
||||||
|
// Update localStorage
|
||||||
|
localStorage.setItem("theme", darkMode ? "dark" : "light");
|
||||||
|
}
|
||||||
|
|
||||||
|
// This prevents flickering back to default theme before the page is fully loaded
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
|
||||||
|
document.addEventListener("astro:page-load", () => {
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
// Theme switcher
|
||||||
|
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
||||||
|
themeSwitch.forEach((el) => {
|
||||||
|
el.addEventListener("change", (e) => {
|
||||||
|
setTheme(e.target.checked);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script> </div> </nav> </header> <main id="main-content" class="flex-1"> <section class="section-sm text-center"> <div class="container"> <div class="row justify-center"> <div class="glass rounded-lg p-4 sm:col-10 md:col-8 lg:col-6 intersect:animate-fadeUp opacity-0"> <h1 class="text-[8rem] block">
|
||||||
|
404
|
||||||
|
</h1><h1 class="h2 mb-4">Page not found</h1> <p class="mb-8">
|
||||||
|
The page you are looking for might have been removed, had its name
|
||||||
|
changed, or is temporarily unavailable.
|
||||||
|
</p> <a href="/" target class="no-underline inline-block hover:opacity-100 "><div class="glass-t hover:bg-opacity-20 hover:backdrop-blur-none
|
||||||
|
px-4 py-2 rounded-md font-bold intersect:animate-fade opacity-0">Back to Home</div></a> </div> </div> </div> </section> </main> <footer class="glass container lg:my-4 lg:rounded-lg intersect:animate-fadeUp opacity-0"> <div class="row py-2 lg:py-0 items-center flex-wrap-reverse"> <div class="text-center lg:col-6 lg:mb-0 lg:text-left"> <ul> <li class="m-2 inline-block"> <a href="/terms">© Kristian Emil Takvam 2025</a> |
|
||||||
|
<a href="https://github.com/astrogon/astrogon" target="_blank"> <strong>Astrogon</strong></a> theme by
|
||||||
|
<a href="https://reednel.com/" target="_blank"> <strong>Reed Nelson</strong></a> </li> </ul> </div> <div class="text-center lg:col-6 lg:my-0 flex items-center justify-center lg:justify-end"> <ul class="py-2 flex items-center"><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="GitHub" href="https://www.github.com/Kremtastic" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">GitHub</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a></li><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="LinkedIn" href="https://www.linkedin.com/in/kristian-emil-takvam-70a475215/" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">LinkedIn</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a></li></ul> </div> </div> </footer> <!-- <ObserverScript /> --> </body></html>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
import{j as e}from"./jsx-runtime.CyXy1Ci3.js";import{r as a}from"./index.CaZlGE7t.js";const x=({title:t,children:o})=>{const[r,s]=a.useState(!1);return e.jsxs("div",{className:"mb-6 overflow-hidden rounded-lg border border-border dark:border-darkmode-border",children:[e.jsxs("button",{className:"glass-t-borderless flex w-full cursor-pointer items-center justify-between px-4 py-2 text-lg text-txt-p dark:text-darkmode-txt-p",onClick:()=>s(!r),children:[t,e.jsx("svg",{className:`ml-auto h-[.8em] w-[.8em] transition-transform duration-200 ${r?"rotate-0":"rotate-[-90deg]"}`,x:"0px",y:"0px",viewBox:"0 0 512 512",xmlSpace:"preserve",children:e.jsx("path",{fill:"currentColor",d:"M505.755,123.592c-8.341-8.341-21.824-8.341-30.165,0L256.005,343.176L36.421,123.592c-8.341-8.341-21.824-8.341-30.165,0 s-8.341,21.824,0,30.165l234.667,234.667c4.16,4.16,9.621,6.251,15.083,6.251c5.462,0,10.923-2.091,15.083-6.251l234.667-234.667 C514.096,145.416,514.096,131.933,505.755,123.592z"})})]}),e.jsx("div",{className:`max-h-0 overflow-hidden px-4 py-0 ${r&&"max-h-full py-0"}`,children:o})]})};export{x as default};
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
.yt-lite{background-color:#000;position:relative;display:block;contain:content;background-position:50%;background-size:cover;cursor:pointer}.yt-lite.lyt-activated:before{content:"";box-sizing:content-box;display:block;position:absolute;top:0;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==);background-position:top;background-repeat:repeat-x;height:60px;padding-bottom:50px;width:100%;transition:all .2s cubic-bezier(0,0,.2,1)}.yt-lite:after{content:"";display:block;padding-bottom:var(--aspect-ratio)}.yt-lite>iframe{width:100%;height:100%;position:absolute;top:0;left:0}.yt-lite>.lty-playbtn{width:70px;height:46px;background-color:#212121;z-index:1;opacity:.8;border-radius:14%;transition:all .2s cubic-bezier(0,0,.2,1)}.yt-lite:hover>.lty-playbtn{background-color:red;opacity:1}.yt-lite>.lty-playbtn:before{content:"";border-color:transparent transparent transparent #fff;border-style:solid;border-width:11px 0 11px 19px}.yt-lite>.lty-playbtn,.yt-lite>.lty-playbtn:before{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.yt-lite.lyt-activated{cursor:unset}.yt-lite.lyt-activated:before,.yt-lite.lyt-activated>.lty-playbtn{opacity:0;pointer-events:none}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
import{j as a}from"./jsx-runtime.CyXy1Ci3.js";import{m as b}from"./marked.esm.BhM9K_2c.js";import{r as d}from"./index.CaZlGE7t.js";b.use({mangle:!1,headerIds:!1});const x=({children:m})=>{const[t,s]=d.useState(0),[c,f]=d.useState(!1),n=d.useRef([]);d.useEffect(()=>{c?n.current[t]?.focus():f(!0)},[t]);const o=Array.from(m.props.value.matchAll(/<div\s+data-name="([^"]+)"[^>]*>(.*?)<\/div>/gs),e=>({name:e[1],children:e[0]})),p=(e,r)=>{e.key==="Enter"||e.key===" "?s(r):e.key==="ArrowRight"?s((t+1)%o.length):e.key==="ArrowLeft"&&s((t-1+o.length)%o.length)};return a.jsxs("div",{className:"overflow-hidden rounded-lg border border-border dark:border-darkmode-border",children:[a.jsx("ul",{className:"glass-t-borderless m-0 list-none flex border-b border-border dark:border-darkmode-border",children:o.map((e,r)=>a.jsx("li",{className:`my-0 px-8 cursor-pointer border-b-[3px] pt-2 pb-1 text-lg text-txt-s dark:text-darkmode-txt-s border-border dark:border-darkmode-border
|
||||||
|
${r===t&&"border-b-[3px] text-txt-p dark:text-darkmode-txt-p border-txt-p dark:border-darkmode-txt-p"}
|
||||||
|
`,role:"tab",tabIndex:r===t?0:-1,onKeyDown:l=>p(l,r),onClick:()=>s(r),ref:l=>n.current[r]=l,children:e.name},r))}),o.map((e,r)=>a.jsx("div",{className:t===r?"tab-content block px-5":"hidden",dangerouslySetInnerHTML:{__html:b.parse(e.children)}},r))]})};export{x as default};
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
import{j as L}from"./jsx-runtime.CyXy1Ci3.js";import{r as t}from"./index.CaZlGE7t.js";/* empty css *//*! *****************************************************************************
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
***************************************************************************** */var n=function(){return n=Object.assign||function(r){for(var a,c=1,m=arguments.length;c<m;c++){a=arguments[c];for(var l in a)Object.prototype.hasOwnProperty.call(a,l)&&(r[l]=a[l])}return r},n.apply(this,arguments)};function O(e,r){var a=t.useState(!1),c=a[0],m=a[1],l=t.useState(e.alwaysLoadIframe||!1),o=l[0],g=l[1],s=encodeURIComponent(e.id),h=typeof e.playlistCoverId=="string"?encodeURIComponent(e.playlistCoverId):null,u=e.title,d=e.poster||"hqdefault",b=e.announce||"Watch",f=new URLSearchParams(n(n(n(n({},e.muted?{mute:"1"}:{}),e.alwaysLoadIframe?{}:{autoplay:"1",state:"1"}),e.enableJsApi?{enablejsapi:"1"}:{}),e.playlist?{list:s}:{})),i=e.noCookie?"https://www.youtube-nocookie.com":"https://www.youtube.com";i=e.cookie?"https://www.youtube.com":"https://www.youtube-nocookie.com";var C=e.playlist?"".concat(i,"/embed/videoseries?").concat(f.toString()):"".concat(i,"/embed/").concat(s,"?").concat(f.toString()),v=e.webp?"webp":"jpg",y=e.webp?"vi_webp":"vi",w=e.thumbnail||(e.playlist?"https://i.ytimg.com/".concat(y,"/").concat(h,"/").concat(d,".").concat(v):"https://i.ytimg.com/".concat(y,"/").concat(s,"/").concat(d,".").concat(v)),I=e.activatedClass||"lyt-activated",E=e.adNetwork||!1,k=e.aspectHeight||9,p=e.aspectWidth||16,j=e.iframeClass||"",S=e.playerClass||"lty-playbtn",_=e.wrapperClass||"yt-lite",x=e.onIframeAdded||function(){},P=e.rel?"prefetch":"preload",F=e.containerElement||"article",N=e.style||{},R=function(){c||m(!0)},U=function(){o||g(!0)};return t.useEffect(function(){o&&x()},[o]),t.createElement(t.Fragment,null,t.createElement("link",{rel:P,href:w,as:"image"}),t.createElement(t.Fragment,null,c&&t.createElement(t.Fragment,null,t.createElement("link",{rel:"preconnect",href:i}),t.createElement("link",{rel:"preconnect",href:"https://www.google.com"}),E&&t.createElement(t.Fragment,null,t.createElement("link",{rel:"preconnect",href:"https://static.doubleclick.net"}),t.createElement("link",{rel:"preconnect",href:"https://googleads.g.doubleclick.net"})))),t.createElement(F,{onPointerOver:R,onClick:U,className:"".concat(_," ").concat(o?I:""),"data-title":u,style:n(n({backgroundImage:"url(".concat(w,")")},{"--aspect-ratio":"".concat(k/p*100,"%")}),N)},t.createElement("button",{type:"button",className:S,"aria-label":"".concat(b," ").concat(u)}),o&&t.createElement("iframe",{ref:r,className:j,title:u,width:"560",height:"315",frameBorder:"0",allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,src:C})))}var W=t.forwardRef(O);const Y=({id:e,title:r,...a})=>L.jsx(W,{wrapperClass:"yt-lite rounded-lg",id:e,title:r,...a});export{Y as default};
|
||||||
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
import{r as o}from"./index.CaZlGE7t.js";import{r as b}from"./index.CCkGd1JC.js";var s={},E;function g(){if(E)return s;E=1;var t=b();return s.createRoot=t.createRoot,s.hydrateRoot=t.hydrateRoot,s}var p=g();const v=({value:t,name:e,hydrate:r=!0})=>{if(!t)return null;const a=r?"astro-slot":"astro-static-slot";return o.createElement(a,{name:e,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:t}})};v.shouldComponentUpdate=()=>!1;var N=v;function C(t){for(const e in t)if(e.startsWith("__reactContainer"))return e}function R(t){let e={};for(const r of t.attributes)e[r.name]=r.value;return t.firstChild===null?o.createElement(t.localName,e):o.createElement(t.localName,e,Array.from(t.childNodes).map(r=>r.nodeType===Node.TEXT_NODE?r.data:r.nodeType===Node.ELEMENT_NODE?R(r):void 0).filter(r=>!!r))}function O(t,e){if(e&&t){let r=[],a=document.createElement("template");a.innerHTML=t;for(let u of a.content.children)r.push(R(u));return r}else return t?o.createElement(N,{value:t}):void 0}let y=new WeakMap;const h=(t,e)=>{let r=y.get(t);return r||(r=e(),y.set(t,r)),r};var H=t=>(e,r,{default:a,...u},{client:A})=>{if(!t.hasAttribute("ssr"))return;const d=t.getAttribute("data-action-key"),l=t.getAttribute("data-action-name"),f=t.getAttribute("data-action-result"),T=d&&l&&f?[JSON.parse(f),d,l]:void 0,_={identifierPrefix:t.getAttribute("prefix"),formState:T};for(const[i,n]of Object.entries(u))r[i]=o.createElement(N,{value:n,name:i});const c=o.createElement(e,r,O(a,t.hasAttribute("data-react-children"))),m=C(t);if(m&&delete t[m],A==="only")return o.startTransition(()=>{h(t,()=>{const n=p.createRoot(t);return t.addEventListener("astro:unmount",()=>n.unmount(),{once:!0}),n}).render(c)});o.startTransition(()=>{h(t,()=>{const n=p.hydrateRoot(t,c,_);return t.addEventListener("astro:unmount",()=>n.unmount(),{once:!0}),n}).render(c)})};export{H as default};
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
const d=new Set,c=new WeakSet;let f=!0,h,l=!1;function L(e){l||(l=!0,f??=e?.prefetchAll??!1,h??=e?.defaultStrategy??"hover",v(),g(),p(),y())}function v(){for(const e of["touchstart","mousedown"])document.body.addEventListener(e,t=>{i(t.target,"tap")&&s(t.target.href,{ignoreSlowConnection:!0})},{passive:!0})}function g(){let e;document.body.addEventListener("focusin",n=>{i(n.target,"hover")&&t(n)},{passive:!0}),document.body.addEventListener("focusout",o,{passive:!0}),u(()=>{for(const n of document.getElementsByTagName("a"))c.has(n)||i(n,"hover")&&(c.add(n),n.addEventListener("mouseenter",t,{passive:!0}),n.addEventListener("mouseleave",o,{passive:!0}))});function t(n){const r=n.target.href;e&&clearTimeout(e),e=setTimeout(()=>{s(r)},80)}function o(){e&&(clearTimeout(e),e=0)}}function p(){let e;u(()=>{for(const t of document.getElementsByTagName("a"))c.has(t)||i(t,"viewport")&&(c.add(t),e??=w(),e.observe(t))})}function w(){const e=new WeakMap;return new IntersectionObserver((t,o)=>{for(const n of t){const r=n.target,a=e.get(r);n.isIntersecting?(a&&clearTimeout(a),e.set(r,setTimeout(()=>{o.unobserve(r),e.delete(r),s(r.href)},300))):a&&(clearTimeout(a),e.delete(r))}})}function y(){u(()=>{for(const e of document.getElementsByTagName("a"))i(e,"load")&&s(e.href)})}function s(e,t){e=e.replace(/#.*/,"");const o=t?.ignoreSlowConnection??!1;if(S(e,o))if(d.add(e),document.createElement("link").relList?.supports?.("prefetch")&&t?.with!=="fetch"){const n=document.createElement("link");n.rel="prefetch",n.setAttribute("href",e),document.head.append(n)}else fetch(e,{priority:"low"})}function S(e,t){if(!navigator.onLine||!t&&m())return!1;try{const o=new URL(e,location.href);return location.origin===o.origin&&(location.pathname!==o.pathname||location.search!==o.search)&&!d.has(e)}catch{}return!1}function i(e,t){if(e?.tagName!=="A")return!1;const o=e.dataset.astroPrefetch;return o==="false"?!1:t==="tap"&&(o!=null||f)&&m()?!0:o==null&&f||o===""?t===h:o===t}function m(){if("connection"in navigator){const e=navigator.connection;return e.saveData||/2g/.test(e.effectiveType)}return!1}function u(e){e();let t=!1;document.addEventListener("astro:page-load",()=>{if(!t){t=!0;return}e()})}export{L as i};
|
||||||
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
|
@ -0,0 +1,9 @@
|
||||||
|
import{a as v}from"./index.CaZlGE7t.js";var i={exports:{}},t={};/**
|
||||||
|
* @license React
|
||||||
|
* react-jsx-runtime.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/var p;function y(){if(p)return t;p=1;var a=v(),R=Symbol.for("react.element"),x=Symbol.for("react.fragment"),c=Object.prototype.hasOwnProperty,l=a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,d={key:!0,ref:!0,__self:!0,__source:!0};function s(n,r,_){var e,o={},u=null,f=null;_!==void 0&&(u=""+_),r.key!==void 0&&(u=""+r.key),r.ref!==void 0&&(f=r.ref);for(e in r)c.call(r,e)&&!d.hasOwnProperty(e)&&(o[e]=r[e]);if(n&&n.defaultProps)for(e in r=n.defaultProps,r)o[e]===void 0&&(o[e]=r[e]);return{$$typeof:R,type:n,key:u,ref:f,props:o,_owner:l.current}}return t.Fragment=x,t.jsx=s,t.jsxs=s,t}var m;function O(){return m||(m=1,i.exports=y()),i.exports}var j=O();export{j};
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
import{i}from"./index.hIESyhSu.js";i();
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
<!DOCTYPE html><html lang="en"> <head><!-- favicon --><link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"><link rel="sitemap" href="/sitemap-index.xml"><meta name="theme-name" content="pages"><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000"><meta name="generator" content="Astro v5.13.2"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"><title>
|
||||||
|
Welcome!
|
||||||
|
|
||||||
|
</title><meta name="description" content="this is meta description
|
||||||
|
"><meta name="author" content="Jane Doe"><meta property="og:title" content="Welcome!
|
||||||
|
"><meta property="og:description" content="this is meta description
|
||||||
|
"><meta property="og:type" content="website"><meta property="og:url" content="https://janedoe.com/about/"><meta property="og:image" content="https://janedoe.com/_astro/john-doe.Cur90ukb.jpg"><meta name="twitter:title" content="Welcome!
|
||||||
|
"><meta name="twitter:description" content="this is meta description
|
||||||
|
"><meta name="twitter:image" content="https://janedoe.com/_astro/john-doe.Cur90ukb.jpg"><meta name="twitter:card" content="summary_large_image"><!-- Katex --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js" integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script><!-- https://docs.astro.build/en/guides/view-transitions --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="swap"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.DXDO1ZkE.js"></script><script type="application/json" data-tooltips-options>{"interactive":false,"delay":[333,0]}</script><script type="module" src="/_astro/Tooltips.astro_astro_type_script_index_0_lang.Bx2cGmPu.js"></script><link rel="stylesheet" href="/_astro/about.DDk7dmDO.css">
|
||||||
|
<link rel="stylesheet" href="/_astro/about.D07_NNuH.css"><script type="module" src="/_astro/page.DlXkxCA4.js"></script></head> <body> <!-- ---
|
||||||
|
// Twinkling Star Background
|
||||||
|
const numStars = 1600;
|
||||||
|
const stars = Array.from({ length: numStars }).map(() => ({
|
||||||
|
left: `${Math.random() * 100}%`,
|
||||||
|
top: `${Math.random() * 100}%`,
|
||||||
|
size: `${Math.random() * 2 + 1}px`,
|
||||||
|
delay: `${7 * Math.random()}s`,
|
||||||
|
// hsl: `hsl(${Math.random() * 360}, 100%, 50%)`, // background: ${hsl};
|
||||||
|
}));
|
||||||
|
---
|
||||||
|
<div
|
||||||
|
class="fixed top-0 left-0 w-full h-full pointer-events-none overflow-hidden"
|
||||||
|
>
|
||||||
|
{
|
||||||
|
stars.map(({ left, top, size, delay }) => (
|
||||||
|
<div
|
||||||
|
class="absolute bg-none dark:bg-yellow-50 rounded-full animate-twinkle"
|
||||||
|
style={`
|
||||||
|
left: ${left};
|
||||||
|
top: ${top};
|
||||||
|
width: ${size};
|
||||||
|
height: ${size};
|
||||||
|
animation-delay: ${delay};
|
||||||
|
`}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div> --><!-- Gradient Cycle Background --><!-- <div
|
||||||
|
class="gradient animate-cycleBg fixed top-0 left-0 w-full h-full -z-1 pointer-events-none overflow-hidden"
|
||||||
|
/>
|
||||||
|
<style>
|
||||||
|
.gradient {
|
||||||
|
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
|
||||||
|
background-size: 400% 400%;
|
||||||
|
}
|
||||||
|
</style> --><!-- Single Image Background --><!-- <style>
|
||||||
|
html::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: url(/src/assets/backgrounds/bwca-dusk.png) no-repeat center center;
|
||||||
|
background-size: cover;
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
</style> --><!-- Dual Image Background --> <header class="container glass py-2 z-30 mb-4 lg:mt-4 lg:rounded-lg sticky top-0" data-astro-transition-persist="astro-zg46k4mb-1"> <nav class="relative flex flex-wrap items-center justify-between"> <!-- navbar toggler --> <input id="nav-toggle" type="checkbox" class="hidden"> <label for="nav-toggle" class="order-0 cursor-pointer flex items-center md:hidden text-txt-p dark:text-darkmode-txt-p lg:order-1"> <svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20"> <title>Menu Open</title> <path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path> </svg> <svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20"> <title>Menu Close</title> <polygon points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2" transform="rotate(45 10 10)"></polygon> </svg> </label> <!-- /navbar toggler --> <ul id="nav-menu" class="text-center lg:text-left order-3 hidden w-full pb-6 md:order-1 md:flex md:w-auto md:space-x-2 md:pb-0 lg:space-x-4"> <li class=""> <a href="/" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Home </a> </li><li class=""> <a href="/about" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 active"> About </a> </li><li class=""> <a href="/docs" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Docs </a> </li><li class=""> <a href="/blog" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Blog </a> </li><li class=""> <a href="/portfolio" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Portfolio </a> </li> </ul> <div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0"> <a class="mr-4 inline-block border-border text-xl text-txt-p dark:border-darkmode-border dark:text-darkmode-txt-p" href="/search" aria-label="search"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M456.69 421.39 362.6 327.3a173.81 173.81 0 0 0 34.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 0 0 327.3 362.6l94.09 94.09a25 25 0 0 0 35.3-35.3zM97.92 222.72a124.8 124.8 0 1 1 124.8 124.8 124.95 124.95 0 0 1-124.8-124.8z"></path></svg> </a> <div class="inline-flex a mr-2"> <input class="absolute opacity-0" id="theme-switcher" data-theme-switcher type="checkbox"> <label class="relative inline-block h-4 w-6 cursor-pointer" for="theme-switcher"> <span class="sr-only">theme switcher</span> <span class="absolute -top-1 left-0 flex h-6 w-6 items-center justify-center rounded-full"> <svg class="absolute z-10 opacity-100 dark:opacity-0" viewBox="0 0 24 24" height="21" width="21"> <path fill="#000" d="M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z"></path> </svg> <svg class="absolute z-10 opacity-0 dark:opacity-100" viewBox="0 0 24 24" height="21" width="21"> <path fill="#fff" d="M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path> </svg> </span> </label> </div> <script data-astro-rerun>
|
||||||
|
const defaultTheme = "system";
|
||||||
|
|
||||||
|
function getTheme(defaultTheme) {
|
||||||
|
var darkMode = defaultTheme === "dark" ? true : false;
|
||||||
|
if (localStorage.getItem("theme") === "system") {
|
||||||
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||||
|
darkMode = true;
|
||||||
|
}
|
||||||
|
} else if (localStorage.getItem("theme") === "dark") {
|
||||||
|
darkMode = true;
|
||||||
|
} else if (localStorage.getItem("theme") === "light") {
|
||||||
|
darkMode = false;
|
||||||
|
}
|
||||||
|
return darkMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setTheme(darkMode) {
|
||||||
|
// Update DOM
|
||||||
|
darkMode
|
||||||
|
? document.documentElement.classList.add("dark")
|
||||||
|
: document.documentElement.classList.remove("dark");
|
||||||
|
// Update localStorage
|
||||||
|
localStorage.setItem("theme", darkMode ? "dark" : "light");
|
||||||
|
}
|
||||||
|
|
||||||
|
// This prevents flickering back to default theme before the page is fully loaded
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
|
||||||
|
document.addEventListener("astro:page-load", () => {
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
// Theme switcher
|
||||||
|
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
||||||
|
themeSwitch.forEach((el) => {
|
||||||
|
el.addEventListener("change", (e) => {
|
||||||
|
setTheme(e.target.checked);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script> </div> </nav> </header> <main id="main-content" class="flex-1"> <section class="section-sm"> <div class="container"> <div class="row justify-center"> <div class="glass rounded-lg text-center p-8 md:col-10 lg:col-7 intersect:animate-fadeUp opacity-0 intersect-no-queue"> <img src="/_astro/john-doe.Cur90ukb_Z1VQyI1.webp" alt loading="eager" decoding="async" fetchpriority="auto" width="1024" height="1024" class="mx-auto mb-6 rounded-lg w-64"> <h2 class="h3 mb-6">Welcome!</h2> <p>Thank you for stopping by this lonely site in this vast digital ocean we call the internet. Here I will upload my adventures in the exciting realm of programming and developing. Perhaps some alternative creative endeavours will be featured here as well. Hopefully you do find this an inspiring website, and not super cringe! I would hate to be <strong>that</strong> guy. Anyway, have a great day!</p>
|
||||||
|
<p><br>Yours truly,<br></p>
|
||||||
|
<h4 id="kristian-takvam">Kristian Takvam</h4> </div> </div> </div> </section> </main> <footer class="glass container lg:my-4 lg:rounded-lg intersect:animate-fadeUp opacity-0"> <div class="row py-2 lg:py-0 items-center flex-wrap-reverse"> <div class="text-center lg:col-6 lg:mb-0 lg:text-left"> <ul> <li class="m-2 inline-block"> <a href="/terms">© Kristian Emil Takvam 2025</a> |
|
||||||
|
<a href="https://github.com/astrogon/astrogon" target="_blank"> <strong>Astrogon</strong></a> theme by
|
||||||
|
<a href="https://reednel.com/" target="_blank"> <strong>Reed Nelson</strong></a> </li> </ul> </div> <div class="text-center lg:col-6 lg:my-0 flex items-center justify-center lg:justify-end"> <ul class="py-2 flex items-center"><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="GitHub" href="https://www.github.com/Kremtastic" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">GitHub</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a></li><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="LinkedIn" href="https://www.linkedin.com/in/kristian-emil-takvam-70a475215/" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">LinkedIn</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a></li></ul> </div> </div> </footer> <!-- <ObserverScript /> --> </body></html>
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<!DOCTYPE html><html lang="en"> <head><!-- favicon --><link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"><link rel="sitemap" href="/sitemap-index.xml"><meta name="theme-name" content="pages"><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000"><meta name="generator" content="Astro v5.13.2"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"><title>
|
||||||
|
Categories
|
||||||
|
|
||||||
|
</title><meta name="description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta name="author" content="Jane Doe"><meta property="og:title" content="Categories
|
||||||
|
"><meta property="og:description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta property="og:type" content="website"><meta property="og:url" content="https://janedoe.com/blog/categories/"><meta property="og:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:title" content="Categories
|
||||||
|
"><meta name="twitter:description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta name="twitter:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:card" content="summary_large_image"><!-- Katex --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js" integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script><!-- https://docs.astro.build/en/guides/view-transitions --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="swap"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.DXDO1ZkE.js"></script><script type="application/json" data-tooltips-options>{"interactive":false,"delay":[333,0]}</script><script type="module" src="/_astro/Tooltips.astro_astro_type_script_index_0_lang.Bx2cGmPu.js"></script><link rel="stylesheet" href="/_astro/about.DDk7dmDO.css">
|
||||||
|
<link rel="stylesheet" href="/_astro/about.D07_NNuH.css"><script type="module" src="/_astro/page.DlXkxCA4.js"></script></head> <body> <!-- ---
|
||||||
|
// Twinkling Star Background
|
||||||
|
const numStars = 1600;
|
||||||
|
const stars = Array.from({ length: numStars }).map(() => ({
|
||||||
|
left: `${Math.random() * 100}%`,
|
||||||
|
top: `${Math.random() * 100}%`,
|
||||||
|
size: `${Math.random() * 2 + 1}px`,
|
||||||
|
delay: `${7 * Math.random()}s`,
|
||||||
|
// hsl: `hsl(${Math.random() * 360}, 100%, 50%)`, // background: ${hsl};
|
||||||
|
}));
|
||||||
|
---
|
||||||
|
<div
|
||||||
|
class="fixed top-0 left-0 w-full h-full pointer-events-none overflow-hidden"
|
||||||
|
>
|
||||||
|
{
|
||||||
|
stars.map(({ left, top, size, delay }) => (
|
||||||
|
<div
|
||||||
|
class="absolute bg-none dark:bg-yellow-50 rounded-full animate-twinkle"
|
||||||
|
style={`
|
||||||
|
left: ${left};
|
||||||
|
top: ${top};
|
||||||
|
width: ${size};
|
||||||
|
height: ${size};
|
||||||
|
animation-delay: ${delay};
|
||||||
|
`}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div> --><!-- Gradient Cycle Background --><!-- <div
|
||||||
|
class="gradient animate-cycleBg fixed top-0 left-0 w-full h-full -z-1 pointer-events-none overflow-hidden"
|
||||||
|
/>
|
||||||
|
<style>
|
||||||
|
.gradient {
|
||||||
|
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
|
||||||
|
background-size: 400% 400%;
|
||||||
|
}
|
||||||
|
</style> --><!-- Single Image Background --><!-- <style>
|
||||||
|
html::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: url(/src/assets/backgrounds/bwca-dusk.png) no-repeat center center;
|
||||||
|
background-size: cover;
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
</style> --><!-- Dual Image Background --> <header class="container glass py-2 z-30 mb-4 lg:mt-4 lg:rounded-lg sticky top-0" data-astro-transition-persist="astro-zg46k4mb-1"> <nav class="relative flex flex-wrap items-center justify-between"> <!-- navbar toggler --> <input id="nav-toggle" type="checkbox" class="hidden"> <label for="nav-toggle" class="order-0 cursor-pointer flex items-center md:hidden text-txt-p dark:text-darkmode-txt-p lg:order-1"> <svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20"> <title>Menu Open</title> <path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path> </svg> <svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20"> <title>Menu Close</title> <polygon points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2" transform="rotate(45 10 10)"></polygon> </svg> </label> <!-- /navbar toggler --> <ul id="nav-menu" class="text-center lg:text-left order-3 hidden w-full pb-6 md:order-1 md:flex md:w-auto md:space-x-2 md:pb-0 lg:space-x-4"> <li class=""> <a href="/" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Home </a> </li><li class=""> <a href="/about" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> About </a> </li><li class=""> <a href="/docs" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Docs </a> </li><li class=""> <a href="/blog" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Blog </a> </li><li class=""> <a href="/portfolio" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Portfolio </a> </li> </ul> <div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0"> <a class="mr-4 inline-block border-border text-xl text-txt-p dark:border-darkmode-border dark:text-darkmode-txt-p" href="/search" aria-label="search"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M456.69 421.39 362.6 327.3a173.81 173.81 0 0 0 34.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 0 0 327.3 362.6l94.09 94.09a25 25 0 0 0 35.3-35.3zM97.92 222.72a124.8 124.8 0 1 1 124.8 124.8 124.95 124.95 0 0 1-124.8-124.8z"></path></svg> </a> <div class="inline-flex a mr-2"> <input class="absolute opacity-0" id="theme-switcher" data-theme-switcher type="checkbox"> <label class="relative inline-block h-4 w-6 cursor-pointer" for="theme-switcher"> <span class="sr-only">theme switcher</span> <span class="absolute -top-1 left-0 flex h-6 w-6 items-center justify-center rounded-full"> <svg class="absolute z-10 opacity-100 dark:opacity-0" viewBox="0 0 24 24" height="21" width="21"> <path fill="#000" d="M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z"></path> </svg> <svg class="absolute z-10 opacity-0 dark:opacity-100" viewBox="0 0 24 24" height="21" width="21"> <path fill="#fff" d="M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path> </svg> </span> </label> </div> <script data-astro-rerun>
|
||||||
|
const defaultTheme = "system";
|
||||||
|
|
||||||
|
function getTheme(defaultTheme) {
|
||||||
|
var darkMode = defaultTheme === "dark" ? true : false;
|
||||||
|
if (localStorage.getItem("theme") === "system") {
|
||||||
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||||
|
darkMode = true;
|
||||||
|
}
|
||||||
|
} else if (localStorage.getItem("theme") === "dark") {
|
||||||
|
darkMode = true;
|
||||||
|
} else if (localStorage.getItem("theme") === "light") {
|
||||||
|
darkMode = false;
|
||||||
|
}
|
||||||
|
return darkMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setTheme(darkMode) {
|
||||||
|
// Update DOM
|
||||||
|
darkMode
|
||||||
|
? document.documentElement.classList.add("dark")
|
||||||
|
: document.documentElement.classList.remove("dark");
|
||||||
|
// Update localStorage
|
||||||
|
localStorage.setItem("theme", darkMode ? "dark" : "light");
|
||||||
|
}
|
||||||
|
|
||||||
|
// This prevents flickering back to default theme before the page is fully loaded
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
|
||||||
|
document.addEventListener("astro:page-load", () => {
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
// Theme switcher
|
||||||
|
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
||||||
|
themeSwitch.forEach((el) => {
|
||||||
|
el.addEventListener("change", (e) => {
|
||||||
|
setTheme(e.target.checked);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script> </div> </nav> </header> <main id="main-content" class="flex-1"> <section class="flex justify-center"> <div class="container text-center m-2"> <div class="rounded-lg p-0 bg-gradient-to-t gradient"> <div class="rounded-lg glass px-8 py-6 intersect:animate-fadeDown opacity-0 intersect-no-queue"> <h1>Categories</h1> <nav aria-label="Breadcrumb" class="mt-4"> <ol class="inline-flex" role="list"> <li class="mx-1 capitalize" role="listitem"> <a class="text-txt-p dark:text-darkmode-txt-p" href="/"> Home </a> </li><li class="mx-1 capitalize" role="listitem"> <span class="inlin-block mr-1">/</span> <a class="text-txt-p dark:text-darkmode-txt-p" href="/blog"> blog </a> </li><li class="mx-1 capitalize" role="listitem"> <span class="inlin-block mr-1">/</span> <span class="text-txt-light dark:text-darkmode-txt-light">categories</span> </li> </ol> </nav> </div> </div> </div> </section> <section class="section"> <div class="container text-center"> <ul> </ul> </div> </section> </main> <footer class="glass container lg:my-4 lg:rounded-lg intersect:animate-fadeUp opacity-0"> <div class="row py-2 lg:py-0 items-center flex-wrap-reverse"> <div class="text-center lg:col-6 lg:mb-0 lg:text-left"> <ul> <li class="m-2 inline-block"> <a href="/terms">© Kristian Emil Takvam 2025</a> |
|
||||||
|
<a href="https://github.com/astrogon/astrogon" target="_blank"> <strong>Astrogon</strong></a> theme by
|
||||||
|
<a href="https://reednel.com/" target="_blank"> <strong>Reed Nelson</strong></a> </li> </ul> </div> <div class="text-center lg:col-6 lg:my-0 flex items-center justify-center lg:justify-end"> <ul class="py-2 flex items-center"><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="GitHub" href="https://www.github.com/Kremtastic" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">GitHub</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a></li><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="LinkedIn" href="https://www.linkedin.com/in/kristian-emil-takvam-70a475215/" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">LinkedIn</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a></li></ul> </div> </div> </footer> <!-- <ObserverScript /> --> </body></html>
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<!DOCTYPE html><html lang="en"> <head><!-- favicon --><link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"><link rel="sitemap" href="/sitemap-index.xml"><meta name="theme-name" content="pages"><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000"><meta name="generator" content="Astro v5.13.2"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"><title>
|
||||||
|
Tags
|
||||||
|
|
||||||
|
</title><meta name="description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta name="author" content="Jane Doe"><meta property="og:title" content="Tags
|
||||||
|
"><meta property="og:description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta property="og:type" content="website"><meta property="og:url" content="https://janedoe.com/blog/tags/"><meta property="og:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:title" content="Tags
|
||||||
|
"><meta name="twitter:description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta name="twitter:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:card" content="summary_large_image"><!-- Katex --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js" integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script><!-- https://docs.astro.build/en/guides/view-transitions --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="swap"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.DXDO1ZkE.js"></script><script type="application/json" data-tooltips-options>{"interactive":false,"delay":[333,0]}</script><script type="module" src="/_astro/Tooltips.astro_astro_type_script_index_0_lang.Bx2cGmPu.js"></script><link rel="stylesheet" href="/_astro/about.DDk7dmDO.css">
|
||||||
|
<link rel="stylesheet" href="/_astro/about.D07_NNuH.css"><script type="module" src="/_astro/page.DlXkxCA4.js"></script></head> <body> <!-- ---
|
||||||
|
// Twinkling Star Background
|
||||||
|
const numStars = 1600;
|
||||||
|
const stars = Array.from({ length: numStars }).map(() => ({
|
||||||
|
left: `${Math.random() * 100}%`,
|
||||||
|
top: `${Math.random() * 100}%`,
|
||||||
|
size: `${Math.random() * 2 + 1}px`,
|
||||||
|
delay: `${7 * Math.random()}s`,
|
||||||
|
// hsl: `hsl(${Math.random() * 360}, 100%, 50%)`, // background: ${hsl};
|
||||||
|
}));
|
||||||
|
---
|
||||||
|
<div
|
||||||
|
class="fixed top-0 left-0 w-full h-full pointer-events-none overflow-hidden"
|
||||||
|
>
|
||||||
|
{
|
||||||
|
stars.map(({ left, top, size, delay }) => (
|
||||||
|
<div
|
||||||
|
class="absolute bg-none dark:bg-yellow-50 rounded-full animate-twinkle"
|
||||||
|
style={`
|
||||||
|
left: ${left};
|
||||||
|
top: ${top};
|
||||||
|
width: ${size};
|
||||||
|
height: ${size};
|
||||||
|
animation-delay: ${delay};
|
||||||
|
`}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div> --><!-- Gradient Cycle Background --><!-- <div
|
||||||
|
class="gradient animate-cycleBg fixed top-0 left-0 w-full h-full -z-1 pointer-events-none overflow-hidden"
|
||||||
|
/>
|
||||||
|
<style>
|
||||||
|
.gradient {
|
||||||
|
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
|
||||||
|
background-size: 400% 400%;
|
||||||
|
}
|
||||||
|
</style> --><!-- Single Image Background --><!-- <style>
|
||||||
|
html::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: url(/src/assets/backgrounds/bwca-dusk.png) no-repeat center center;
|
||||||
|
background-size: cover;
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
</style> --><!-- Dual Image Background --> <header class="container glass py-2 z-30 mb-4 lg:mt-4 lg:rounded-lg sticky top-0" data-astro-transition-persist="astro-zg46k4mb-1"> <nav class="relative flex flex-wrap items-center justify-between"> <!-- navbar toggler --> <input id="nav-toggle" type="checkbox" class="hidden"> <label for="nav-toggle" class="order-0 cursor-pointer flex items-center md:hidden text-txt-p dark:text-darkmode-txt-p lg:order-1"> <svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20"> <title>Menu Open</title> <path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path> </svg> <svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20"> <title>Menu Close</title> <polygon points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2" transform="rotate(45 10 10)"></polygon> </svg> </label> <!-- /navbar toggler --> <ul id="nav-menu" class="text-center lg:text-left order-3 hidden w-full pb-6 md:order-1 md:flex md:w-auto md:space-x-2 md:pb-0 lg:space-x-4"> <li class=""> <a href="/" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Home </a> </li><li class=""> <a href="/about" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> About </a> </li><li class=""> <a href="/docs" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Docs </a> </li><li class=""> <a href="/blog" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Blog </a> </li><li class=""> <a href="/portfolio" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Portfolio </a> </li> </ul> <div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0"> <a class="mr-4 inline-block border-border text-xl text-txt-p dark:border-darkmode-border dark:text-darkmode-txt-p" href="/search" aria-label="search"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M456.69 421.39 362.6 327.3a173.81 173.81 0 0 0 34.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 0 0 327.3 362.6l94.09 94.09a25 25 0 0 0 35.3-35.3zM97.92 222.72a124.8 124.8 0 1 1 124.8 124.8 124.95 124.95 0 0 1-124.8-124.8z"></path></svg> </a> <div class="inline-flex a mr-2"> <input class="absolute opacity-0" id="theme-switcher" data-theme-switcher type="checkbox"> <label class="relative inline-block h-4 w-6 cursor-pointer" for="theme-switcher"> <span class="sr-only">theme switcher</span> <span class="absolute -top-1 left-0 flex h-6 w-6 items-center justify-center rounded-full"> <svg class="absolute z-10 opacity-100 dark:opacity-0" viewBox="0 0 24 24" height="21" width="21"> <path fill="#000" d="M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z"></path> </svg> <svg class="absolute z-10 opacity-0 dark:opacity-100" viewBox="0 0 24 24" height="21" width="21"> <path fill="#fff" d="M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path> </svg> </span> </label> </div> <script data-astro-rerun>
|
||||||
|
const defaultTheme = "system";
|
||||||
|
|
||||||
|
function getTheme(defaultTheme) {
|
||||||
|
var darkMode = defaultTheme === "dark" ? true : false;
|
||||||
|
if (localStorage.getItem("theme") === "system") {
|
||||||
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||||
|
darkMode = true;
|
||||||
|
}
|
||||||
|
} else if (localStorage.getItem("theme") === "dark") {
|
||||||
|
darkMode = true;
|
||||||
|
} else if (localStorage.getItem("theme") === "light") {
|
||||||
|
darkMode = false;
|
||||||
|
}
|
||||||
|
return darkMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setTheme(darkMode) {
|
||||||
|
// Update DOM
|
||||||
|
darkMode
|
||||||
|
? document.documentElement.classList.add("dark")
|
||||||
|
: document.documentElement.classList.remove("dark");
|
||||||
|
// Update localStorage
|
||||||
|
localStorage.setItem("theme", darkMode ? "dark" : "light");
|
||||||
|
}
|
||||||
|
|
||||||
|
// This prevents flickering back to default theme before the page is fully loaded
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
|
||||||
|
document.addEventListener("astro:page-load", () => {
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
// Theme switcher
|
||||||
|
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
||||||
|
themeSwitch.forEach((el) => {
|
||||||
|
el.addEventListener("change", (e) => {
|
||||||
|
setTheme(e.target.checked);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script> </div> </nav> </header> <main id="main-content" class="flex-1"> <section class="flex justify-center"> <div class="container text-center m-2"> <div class="rounded-lg p-0 bg-gradient-to-t gradient"> <div class="rounded-lg glass px-8 py-6 intersect:animate-fadeDown opacity-0 intersect-no-queue"> <h1>Tags</h1> <nav aria-label="Breadcrumb" class="mt-4"> <ol class="inline-flex" role="list"> <li class="mx-1 capitalize" role="listitem"> <a class="text-txt-p dark:text-darkmode-txt-p" href="/"> Home </a> </li><li class="mx-1 capitalize" role="listitem"> <span class="inlin-block mr-1">/</span> <a class="text-txt-p dark:text-darkmode-txt-p" href="/blog"> blog </a> </li><li class="mx-1 capitalize" role="listitem"> <span class="inlin-block mr-1">/</span> <span class="text-txt-light dark:text-darkmode-txt-light">tags</span> </li> </ol> </nav> </div> </div> </div> </section> <section class="section"> <div class="container text-center"> <ul> </ul> </div> </section> </main> <footer class="glass container lg:my-4 lg:rounded-lg intersect:animate-fadeUp opacity-0"> <div class="row py-2 lg:py-0 items-center flex-wrap-reverse"> <div class="text-center lg:col-6 lg:mb-0 lg:text-left"> <ul> <li class="m-2 inline-block"> <a href="/terms">© Kristian Emil Takvam 2025</a> |
|
||||||
|
<a href="https://github.com/astrogon/astrogon" target="_blank"> <strong>Astrogon</strong></a> theme by
|
||||||
|
<a href="https://reednel.com/" target="_blank"> <strong>Reed Nelson</strong></a> </li> </ul> </div> <div class="text-center lg:col-6 lg:my-0 flex items-center justify-center lg:justify-end"> <ul class="py-2 flex items-center"><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="GitHub" href="https://www.github.com/Kremtastic" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">GitHub</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a></li><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="LinkedIn" href="https://www.linkedin.com/in/kristian-emil-takvam-70a475215/" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">LinkedIn</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a></li></ul> </div> </div> </footer> <!-- <ObserverScript /> --> </body></html>
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<!DOCTYPE html><html lang="en"> <head><!-- favicon --><link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"><link rel="sitemap" href="/sitemap-index.xml"><meta name="theme-name" content="pages"><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000"><meta name="generator" content="Astro v5.13.2"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"><title>
|
||||||
|
Documentation
|
||||||
|
|
||||||
|
</title><meta name="description" content="This is the docs
|
||||||
|
"><meta name="author" content="Jane Doe"><meta property="og:title" content="Documentation
|
||||||
|
"><meta property="og:description" content="This is the docs
|
||||||
|
"><meta property="og:type" content="website"><meta property="og:url" content="https://janedoe.com/docs/"><meta property="og:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:title" content="Documentation
|
||||||
|
"><meta name="twitter:description" content="This is the docs
|
||||||
|
"><meta name="twitter:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:card" content="summary_large_image"><!-- Katex --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js" integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script><!-- https://docs.astro.build/en/guides/view-transitions --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="swap"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.DXDO1ZkE.js"></script><script type="application/json" data-tooltips-options>{"interactive":false,"delay":[333,0]}</script><script type="module" src="/_astro/Tooltips.astro_astro_type_script_index_0_lang.Bx2cGmPu.js"></script><link rel="stylesheet" href="/_astro/about.DDk7dmDO.css">
|
||||||
|
<link rel="stylesheet" href="/_astro/about.D07_NNuH.css"><script type="module" src="/_astro/page.DlXkxCA4.js"></script></head> <body> <!-- ---
|
||||||
|
// Twinkling Star Background
|
||||||
|
const numStars = 1600;
|
||||||
|
const stars = Array.from({ length: numStars }).map(() => ({
|
||||||
|
left: `${Math.random() * 100}%`,
|
||||||
|
top: `${Math.random() * 100}%`,
|
||||||
|
size: `${Math.random() * 2 + 1}px`,
|
||||||
|
delay: `${7 * Math.random()}s`,
|
||||||
|
// hsl: `hsl(${Math.random() * 360}, 100%, 50%)`, // background: ${hsl};
|
||||||
|
}));
|
||||||
|
---
|
||||||
|
<div
|
||||||
|
class="fixed top-0 left-0 w-full h-full pointer-events-none overflow-hidden"
|
||||||
|
>
|
||||||
|
{
|
||||||
|
stars.map(({ left, top, size, delay }) => (
|
||||||
|
<div
|
||||||
|
class="absolute bg-none dark:bg-yellow-50 rounded-full animate-twinkle"
|
||||||
|
style={`
|
||||||
|
left: ${left};
|
||||||
|
top: ${top};
|
||||||
|
width: ${size};
|
||||||
|
height: ${size};
|
||||||
|
animation-delay: ${delay};
|
||||||
|
`}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div> --><!-- Gradient Cycle Background --><!-- <div
|
||||||
|
class="gradient animate-cycleBg fixed top-0 left-0 w-full h-full -z-1 pointer-events-none overflow-hidden"
|
||||||
|
/>
|
||||||
|
<style>
|
||||||
|
.gradient {
|
||||||
|
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
|
||||||
|
background-size: 400% 400%;
|
||||||
|
}
|
||||||
|
</style> --><!-- Single Image Background --><!-- <style>
|
||||||
|
html::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: url(/src/assets/backgrounds/bwca-dusk.png) no-repeat center center;
|
||||||
|
background-size: cover;
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
</style> --><!-- Dual Image Background --> <header class="container glass py-2 z-30 mb-4 lg:mt-4 lg:rounded-lg sticky top-0" data-astro-transition-persist="astro-zg46k4mb-1"> <nav class="relative flex flex-wrap items-center justify-between"> <!-- navbar toggler --> <input id="nav-toggle" type="checkbox" class="hidden"> <label for="nav-toggle" class="order-0 cursor-pointer flex items-center md:hidden text-txt-p dark:text-darkmode-txt-p lg:order-1"> <svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20"> <title>Menu Open</title> <path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path> </svg> <svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20"> <title>Menu Close</title> <polygon points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2" transform="rotate(45 10 10)"></polygon> </svg> </label> <!-- /navbar toggler --> <ul id="nav-menu" class="text-center lg:text-left order-3 hidden w-full pb-6 md:order-1 md:flex md:w-auto md:space-x-2 md:pb-0 lg:space-x-4"> <li class=""> <a href="/" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Home </a> </li><li class=""> <a href="/about" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> About </a> </li><li class=""> <a href="/docs" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 active"> Docs </a> </li><li class=""> <a href="/blog" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Blog </a> </li><li class=""> <a href="/portfolio" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Portfolio </a> </li> </ul> <div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0"> <a class="mr-4 inline-block border-border text-xl text-txt-p dark:border-darkmode-border dark:text-darkmode-txt-p" href="/search" aria-label="search"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M456.69 421.39 362.6 327.3a173.81 173.81 0 0 0 34.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 0 0 327.3 362.6l94.09 94.09a25 25 0 0 0 35.3-35.3zM97.92 222.72a124.8 124.8 0 1 1 124.8 124.8 124.95 124.95 0 0 1-124.8-124.8z"></path></svg> </a> <div class="inline-flex a mr-2"> <input class="absolute opacity-0" id="theme-switcher" data-theme-switcher type="checkbox"> <label class="relative inline-block h-4 w-6 cursor-pointer" for="theme-switcher"> <span class="sr-only">theme switcher</span> <span class="absolute -top-1 left-0 flex h-6 w-6 items-center justify-center rounded-full"> <svg class="absolute z-10 opacity-100 dark:opacity-0" viewBox="0 0 24 24" height="21" width="21"> <path fill="#000" d="M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z"></path> </svg> <svg class="absolute z-10 opacity-0 dark:opacity-100" viewBox="0 0 24 24" height="21" width="21"> <path fill="#fff" d="M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path> </svg> </span> </label> </div> <script data-astro-rerun>
|
||||||
|
const defaultTheme = "system";
|
||||||
|
|
||||||
|
function getTheme(defaultTheme) {
|
||||||
|
var darkMode = defaultTheme === "dark" ? true : false;
|
||||||
|
if (localStorage.getItem("theme") === "system") {
|
||||||
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||||
|
darkMode = true;
|
||||||
|
}
|
||||||
|
} else if (localStorage.getItem("theme") === "dark") {
|
||||||
|
darkMode = true;
|
||||||
|
} else if (localStorage.getItem("theme") === "light") {
|
||||||
|
darkMode = false;
|
||||||
|
}
|
||||||
|
return darkMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setTheme(darkMode) {
|
||||||
|
// Update DOM
|
||||||
|
darkMode
|
||||||
|
? document.documentElement.classList.add("dark")
|
||||||
|
: document.documentElement.classList.remove("dark");
|
||||||
|
// Update localStorage
|
||||||
|
localStorage.setItem("theme", darkMode ? "dark" : "light");
|
||||||
|
}
|
||||||
|
|
||||||
|
// This prevents flickering back to default theme before the page is fully loaded
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
|
||||||
|
document.addEventListener("astro:page-load", () => {
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
// Theme switcher
|
||||||
|
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
||||||
|
themeSwitch.forEach((el) => {
|
||||||
|
el.addEventListener("change", (e) => {
|
||||||
|
setTheme(e.target.checked);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script> </div> </nav> </header> <main id="main-content" class="flex-1"> <section class="flex justify-center"> <div class="container text-center m-2"> <div class="rounded-lg p-0 bg-gradient-to-t gradient"> <div class="rounded-lg glass px-8 py-6 intersect:animate-fadeDown opacity-0 intersect-no-queue"> <h1>Documentation</h1> <nav aria-label="Breadcrumb" class="mt-4"> <ol class="inline-flex" role="list"> <li class="mx-1 capitalize" role="listitem"> <a class="text-txt-p dark:text-darkmode-txt-p" href="/"> Home </a> </li><li class="mx-1 capitalize" role="listitem"> <span class="inlin-block mr-1">/</span> <span class="text-txt-light dark:text-darkmode-txt-light">docs</span> </li> </ol> </nav> </div> </div> </div> </section> <section class="section"> <div class="container"> <div class="row"> <div class="md:col-6 lg:col-4 h-min p-2"> <div class="h-full m-2 pl-0 bg-gradient-to-br gradient rounded-lg intersect:animate-fadeUp opacity-0"> <div class="glass h-full rounded-lg"> <a class="group hover:opacity-100" href="/docs/tutorials"> <div class="relative rounded-lg pb-9/16 overflow-hidden"> <img src="/_astro/john-doe.Cur90ukb_Z2wlJtq.webp" alt loading="eager" decoding="async" fetchpriority="auto" width="1280" height="720" class="absolute object-cover w-full h-full group-hover:scale-[105%] transition-all duration-300"> <div class="glass-t absolute text-center rounded-lg px-2 py-1 top-[50%] left-[50%] -translate-x-[50%] -translate-y-[50%]"> <h4 class=""> Tutorials </h4> </div> </div> </a> </div> </div> </div> </div> </div> </section> </main> <footer class="glass container lg:my-4 lg:rounded-lg intersect:animate-fadeUp opacity-0"> <div class="row py-2 lg:py-0 items-center flex-wrap-reverse"> <div class="text-center lg:col-6 lg:mb-0 lg:text-left"> <ul> <li class="m-2 inline-block"> <a href="/terms">© Kristian Emil Takvam 2025</a> |
|
||||||
|
<a href="https://github.com/astrogon/astrogon" target="_blank"> <strong>Astrogon</strong></a> theme by
|
||||||
|
<a href="https://reednel.com/" target="_blank"> <strong>Reed Nelson</strong></a> </li> </ul> </div> <div class="text-center lg:col-6 lg:my-0 flex items-center justify-center lg:justify-end"> <ul class="py-2 flex items-center"><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="GitHub" href="https://www.github.com/Kremtastic" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">GitHub</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a></li><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="LinkedIn" href="https://www.linkedin.com/in/kristian-emil-takvam-70a475215/" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">LinkedIn</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a></li></ul> </div> </div> </footer> <!-- <ObserverScript /> --> </body></html>
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<!DOCTYPE html><html lang="en"> <head><!-- favicon --><link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"><link rel="sitemap" href="/sitemap-index.xml"><meta name="theme-name" content="pages"><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000"><meta name="generator" content="Astro v5.13.2"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"><title>
|
||||||
|
Tutorials
|
||||||
|
|
||||||
|
</title><meta name="description" content="This is the docs
|
||||||
|
"><meta name="author" content="Jane Doe"><meta property="og:title" content="Tutorials
|
||||||
|
"><meta property="og:description" content="This is the docs
|
||||||
|
"><meta property="og:type" content="website"><meta property="og:url" content="https://janedoe.com/docs/tutorials/"><meta property="og:image" content="https://janedoe.com/_astro/john-doe.Cur90ukb.jpg"><meta name="twitter:title" content="Tutorials
|
||||||
|
"><meta name="twitter:description" content="This is the docs
|
||||||
|
"><meta name="twitter:image" content="https://janedoe.com/_astro/john-doe.Cur90ukb.jpg"><meta name="twitter:card" content="summary_large_image"><!-- Katex --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js" integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script><!-- https://docs.astro.build/en/guides/view-transitions --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="swap"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.DXDO1ZkE.js"></script><script type="application/json" data-tooltips-options>{"interactive":false,"delay":[333,0]}</script><script type="module" src="/_astro/Tooltips.astro_astro_type_script_index_0_lang.Bx2cGmPu.js"></script><link rel="stylesheet" href="/_astro/about.DDk7dmDO.css">
|
||||||
|
<link rel="stylesheet" href="/_astro/about.D07_NNuH.css"><script type="module" src="/_astro/page.DlXkxCA4.js"></script></head> <body> <!-- ---
|
||||||
|
// Twinkling Star Background
|
||||||
|
const numStars = 1600;
|
||||||
|
const stars = Array.from({ length: numStars }).map(() => ({
|
||||||
|
left: `${Math.random() * 100}%`,
|
||||||
|
top: `${Math.random() * 100}%`,
|
||||||
|
size: `${Math.random() * 2 + 1}px`,
|
||||||
|
delay: `${7 * Math.random()}s`,
|
||||||
|
// hsl: `hsl(${Math.random() * 360}, 100%, 50%)`, // background: ${hsl};
|
||||||
|
}));
|
||||||
|
---
|
||||||
|
<div
|
||||||
|
class="fixed top-0 left-0 w-full h-full pointer-events-none overflow-hidden"
|
||||||
|
>
|
||||||
|
{
|
||||||
|
stars.map(({ left, top, size, delay }) => (
|
||||||
|
<div
|
||||||
|
class="absolute bg-none dark:bg-yellow-50 rounded-full animate-twinkle"
|
||||||
|
style={`
|
||||||
|
left: ${left};
|
||||||
|
top: ${top};
|
||||||
|
width: ${size};
|
||||||
|
height: ${size};
|
||||||
|
animation-delay: ${delay};
|
||||||
|
`}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div> --><!-- Gradient Cycle Background --><!-- <div
|
||||||
|
class="gradient animate-cycleBg fixed top-0 left-0 w-full h-full -z-1 pointer-events-none overflow-hidden"
|
||||||
|
/>
|
||||||
|
<style>
|
||||||
|
.gradient {
|
||||||
|
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
|
||||||
|
background-size: 400% 400%;
|
||||||
|
}
|
||||||
|
</style> --><!-- Single Image Background --><!-- <style>
|
||||||
|
html::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: url(/src/assets/backgrounds/bwca-dusk.png) no-repeat center center;
|
||||||
|
background-size: cover;
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
</style> --><!-- Dual Image Background --> <header class="container glass py-2 z-30 mb-4 lg:mt-4 lg:rounded-lg sticky top-0" data-astro-transition-persist="astro-zg46k4mb-1"> <nav class="relative flex flex-wrap items-center justify-between"> <!-- navbar toggler --> <input id="nav-toggle" type="checkbox" class="hidden"> <label for="nav-toggle" class="order-0 cursor-pointer flex items-center md:hidden text-txt-p dark:text-darkmode-txt-p lg:order-1"> <svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20"> <title>Menu Open</title> <path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path> </svg> <svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20"> <title>Menu Close</title> <polygon points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2" transform="rotate(45 10 10)"></polygon> </svg> </label> <!-- /navbar toggler --> <ul id="nav-menu" class="text-center lg:text-left order-3 hidden w-full pb-6 md:order-1 md:flex md:w-auto md:space-x-2 md:pb-0 lg:space-x-4"> <li class=""> <a href="/" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Home </a> </li><li class=""> <a href="/about" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> About </a> </li><li class=""> <a href="/docs" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Docs </a> </li><li class=""> <a href="/blog" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Blog </a> </li><li class=""> <a href="/portfolio" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Portfolio </a> </li> </ul> <div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0"> <a class="mr-4 inline-block border-border text-xl text-txt-p dark:border-darkmode-border dark:text-darkmode-txt-p" href="/search" aria-label="search"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M456.69 421.39 362.6 327.3a173.81 173.81 0 0 0 34.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 0 0 327.3 362.6l94.09 94.09a25 25 0 0 0 35.3-35.3zM97.92 222.72a124.8 124.8 0 1 1 124.8 124.8 124.95 124.95 0 0 1-124.8-124.8z"></path></svg> </a> <div class="inline-flex a mr-2"> <input class="absolute opacity-0" id="theme-switcher" data-theme-switcher type="checkbox"> <label class="relative inline-block h-4 w-6 cursor-pointer" for="theme-switcher"> <span class="sr-only">theme switcher</span> <span class="absolute -top-1 left-0 flex h-6 w-6 items-center justify-center rounded-full"> <svg class="absolute z-10 opacity-100 dark:opacity-0" viewBox="0 0 24 24" height="21" width="21"> <path fill="#000" d="M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z"></path> </svg> <svg class="absolute z-10 opacity-0 dark:opacity-100" viewBox="0 0 24 24" height="21" width="21"> <path fill="#fff" d="M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path> </svg> </span> </label> </div> <script data-astro-rerun>
|
||||||
|
const defaultTheme = "system";
|
||||||
|
|
||||||
|
function getTheme(defaultTheme) {
|
||||||
|
var darkMode = defaultTheme === "dark" ? true : false;
|
||||||
|
if (localStorage.getItem("theme") === "system") {
|
||||||
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||||
|
darkMode = true;
|
||||||
|
}
|
||||||
|
} else if (localStorage.getItem("theme") === "dark") {
|
||||||
|
darkMode = true;
|
||||||
|
} else if (localStorage.getItem("theme") === "light") {
|
||||||
|
darkMode = false;
|
||||||
|
}
|
||||||
|
return darkMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setTheme(darkMode) {
|
||||||
|
// Update DOM
|
||||||
|
darkMode
|
||||||
|
? document.documentElement.classList.add("dark")
|
||||||
|
: document.documentElement.classList.remove("dark");
|
||||||
|
// Update localStorage
|
||||||
|
localStorage.setItem("theme", darkMode ? "dark" : "light");
|
||||||
|
}
|
||||||
|
|
||||||
|
// This prevents flickering back to default theme before the page is fully loaded
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
|
||||||
|
document.addEventListener("astro:page-load", () => {
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
// Theme switcher
|
||||||
|
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
||||||
|
themeSwitch.forEach((el) => {
|
||||||
|
el.addEventListener("change", (e) => {
|
||||||
|
setTheme(e.target.checked);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script> </div> </nav> </header> <main id="main-content" class="flex-1"> <section class="flex justify-center"> <div class="container text-center m-2"> <div class="rounded-lg p-0 bg-gradient-to-t gradient"> <div class="rounded-lg glass px-8 py-6 intersect:animate-fadeDown opacity-0 intersect-no-queue"> <h1>Tutorials</h1> <nav aria-label="Breadcrumb" class="mt-4"> <ol class="inline-flex" role="list"> <li class="mx-1 capitalize" role="listitem"> <a class="text-txt-p dark:text-darkmode-txt-p" href="/"> Home </a> </li><li class="mx-1 capitalize" role="listitem"> <span class="inlin-block mr-1">/</span> <a class="text-txt-p dark:text-darkmode-txt-p" href="/docs"> docs </a> </li><li class="mx-1 capitalize" role="listitem"> <span class="inlin-block mr-1">/</span> <span class="text-txt-light dark:text-darkmode-txt-light">tutorials</span> </li> </ol> </nav> </div> </div> </div> </section> <section class="section"> <div class="container"> <div class="row"> <div class="md:col-6 lg:col-4 h-min p-2"> <div class="h-full m-2 pl-0 bg-gradient-to-br gradient rounded-lg intersect:animate-fadeUp opacity-0"> <div class="glass h-full rounded-lg"> <a class="group hover:opacity-100" href="/docs/tutorials/elements"> <div class="relative rounded-lg pb-9/16 overflow-hidden"> <img src="/_astro/john-doe.Cur90ukb_Z2wlJtq.webp" alt loading="eager" decoding="async" fetchpriority="auto" width="1280" height="720" class="absolute object-cover w-full h-full group-hover:scale-[105%] transition-all duration-300"> <div class="glass-t absolute text-center rounded-lg px-2 py-1 top-[50%] left-[50%] -translate-x-[50%] -translate-y-[50%]"> <h4 class=""> Elements </h4> </div> </div> </a> </div> </div> </div> </div> </div> </section> </main> <footer class="glass container lg:my-4 lg:rounded-lg intersect:animate-fadeUp opacity-0"> <div class="row py-2 lg:py-0 items-center flex-wrap-reverse"> <div class="text-center lg:col-6 lg:mb-0 lg:text-left"> <ul> <li class="m-2 inline-block"> <a href="/terms">© Kristian Emil Takvam 2025</a> |
|
||||||
|
<a href="https://github.com/astrogon/astrogon" target="_blank"> <strong>Astrogon</strong></a> theme by
|
||||||
|
<a href="https://reednel.com/" target="_blank"> <strong>Reed Nelson</strong></a> </li> </ul> </div> <div class="text-center lg:col-6 lg:my-0 flex items-center justify-center lg:justify-end"> <ul class="py-2 flex items-center"><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="GitHub" href="https://www.github.com/Kremtastic" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">GitHub</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a></li><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="LinkedIn" href="https://www.linkedin.com/in/kristian-emil-takvam-70a475215/" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">LinkedIn</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a></li></ul> </div> </div> </footer> <!-- <ObserverScript /> --> </body></html>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 128 128">
|
||||||
|
<path d="M50.4 78.5a75.1 75.1 0 0 0-28.5 6.9l24.2-65.7c.7-2 1.9-3.2 3.4-3.2h29c1.5 0 2.7 1.2 3.4 3.2l24.2 65.7s-11.6-7-28.5-7L67 45.5c-.4-1.7-1.6-2.8-2.9-2.8-1.3 0-2.5 1.1-2.9 2.7L50.4 78.5Zm-1.1 28.2Zm-4.2-20.2c-2 6.6-.6 15.8 4.2 20.2a17.5 17.5 0 0 1 .2-.7 5.5 5.5 0 0 1 5.7-4.5c2.8.1 4.3 1.5 4.7 4.7.2 1.1.2 2.3.2 3.5v.4c0 2.7.7 5.2 2.2 7.4a13 13 0 0 0 5.7 4.9v-.3l-.2-.3c-1.8-5.6-.5-9.5 4.4-12.8l1.5-1a73 73 0 0 0 3.2-2.2 16 16 0 0 0 6.8-11.4c.3-2 .1-4-.6-6l-.8.6-1.6 1a37 37 0 0 1-22.4 2.7c-5-.7-9.7-2-13.2-6.2Z" />
|
||||||
|
<style>
|
||||||
|
path { fill: #000; }
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
path { fill: #FFF; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 749 B |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
|
@ -0,0 +1,100 @@
|
||||||
|
<!DOCTYPE html><html lang="en"> <head><!-- favicon --><link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"><link rel="sitemap" href="/sitemap-index.xml"><meta name="theme-name" content="pages"><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000"><meta name="generator" content="Astro v5.13.2"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"><title>
|
||||||
|
Astrogon
|
||||||
|
|
||||||
|
</title><meta name="description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta name="author" content="Jane Doe"><meta property="og:title" content="Astrogon
|
||||||
|
"><meta property="og:description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta property="og:type" content="website"><meta property="og:url" content="https://janedoe.com/"><meta property="og:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:title" content="Astrogon
|
||||||
|
"><meta name="twitter:description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta name="twitter:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:card" content="summary_large_image"><!-- Katex --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js" integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script><!-- https://docs.astro.build/en/guides/view-transitions --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="swap"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.DXDO1ZkE.js"></script><script type="application/json" data-tooltips-options>{"interactive":false,"delay":[333,0]}</script><script type="module" src="/_astro/Tooltips.astro_astro_type_script_index_0_lang.Bx2cGmPu.js"></script><link rel="stylesheet" href="/_astro/about.DDk7dmDO.css">
|
||||||
|
<link rel="stylesheet" href="/_astro/about.D07_NNuH.css"><script type="module" src="/_astro/page.DlXkxCA4.js"></script></head> <body> <!-- ---
|
||||||
|
// Twinkling Star Background
|
||||||
|
const numStars = 1600;
|
||||||
|
const stars = Array.from({ length: numStars }).map(() => ({
|
||||||
|
left: `${Math.random() * 100}%`,
|
||||||
|
top: `${Math.random() * 100}%`,
|
||||||
|
size: `${Math.random() * 2 + 1}px`,
|
||||||
|
delay: `${7 * Math.random()}s`,
|
||||||
|
// hsl: `hsl(${Math.random() * 360}, 100%, 50%)`, // background: ${hsl};
|
||||||
|
}));
|
||||||
|
---
|
||||||
|
<div
|
||||||
|
class="fixed top-0 left-0 w-full h-full pointer-events-none overflow-hidden"
|
||||||
|
>
|
||||||
|
{
|
||||||
|
stars.map(({ left, top, size, delay }) => (
|
||||||
|
<div
|
||||||
|
class="absolute bg-none dark:bg-yellow-50 rounded-full animate-twinkle"
|
||||||
|
style={`
|
||||||
|
left: ${left};
|
||||||
|
top: ${top};
|
||||||
|
width: ${size};
|
||||||
|
height: ${size};
|
||||||
|
animation-delay: ${delay};
|
||||||
|
`}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div> --><!-- Gradient Cycle Background --><!-- <div
|
||||||
|
class="gradient animate-cycleBg fixed top-0 left-0 w-full h-full -z-1 pointer-events-none overflow-hidden"
|
||||||
|
/>
|
||||||
|
<style>
|
||||||
|
.gradient {
|
||||||
|
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
|
||||||
|
background-size: 400% 400%;
|
||||||
|
}
|
||||||
|
</style> --><!-- Single Image Background --><!-- <style>
|
||||||
|
html::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: url(/src/assets/backgrounds/bwca-dusk.png) no-repeat center center;
|
||||||
|
background-size: cover;
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
</style> --><!-- Dual Image Background --> <header class="container glass py-2 z-30 mb-4 lg:mt-4 lg:rounded-lg sticky top-0" data-astro-transition-persist="astro-zg46k4mb-1"> <nav class="relative flex flex-wrap items-center justify-between"> <!-- navbar toggler --> <input id="nav-toggle" type="checkbox" class="hidden"> <label for="nav-toggle" class="order-0 cursor-pointer flex items-center md:hidden text-txt-p dark:text-darkmode-txt-p lg:order-1"> <svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20"> <title>Menu Open</title> <path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path> </svg> <svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20"> <title>Menu Close</title> <polygon points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2" transform="rotate(45 10 10)"></polygon> </svg> </label> <!-- /navbar toggler --> <ul id="nav-menu" class="text-center lg:text-left order-3 hidden w-full pb-6 md:order-1 md:flex md:w-auto md:space-x-2 md:pb-0 lg:space-x-4"> <li class=""> <a href="/" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 active"> Home </a> </li><li class=""> <a href="/about" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> About </a> </li><li class=""> <a href="/docs" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Docs </a> </li><li class=""> <a href="/blog" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Blog </a> </li><li class=""> <a href="/portfolio" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Portfolio </a> </li> </ul> <div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0"> <a class="mr-4 inline-block border-border text-xl text-txt-p dark:border-darkmode-border dark:text-darkmode-txt-p" href="/search" aria-label="search"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M456.69 421.39 362.6 327.3a173.81 173.81 0 0 0 34.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 0 0 327.3 362.6l94.09 94.09a25 25 0 0 0 35.3-35.3zM97.92 222.72a124.8 124.8 0 1 1 124.8 124.8 124.95 124.95 0 0 1-124.8-124.8z"></path></svg> </a> <div class="inline-flex a mr-2"> <input class="absolute opacity-0" id="theme-switcher" data-theme-switcher type="checkbox"> <label class="relative inline-block h-4 w-6 cursor-pointer" for="theme-switcher"> <span class="sr-only">theme switcher</span> <span class="absolute -top-1 left-0 flex h-6 w-6 items-center justify-center rounded-full"> <svg class="absolute z-10 opacity-100 dark:opacity-0" viewBox="0 0 24 24" height="21" width="21"> <path fill="#000" d="M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z"></path> </svg> <svg class="absolute z-10 opacity-0 dark:opacity-100" viewBox="0 0 24 24" height="21" width="21"> <path fill="#fff" d="M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path> </svg> </span> </label> </div> <script data-astro-rerun>
|
||||||
|
const defaultTheme = "system";
|
||||||
|
|
||||||
|
function getTheme(defaultTheme) {
|
||||||
|
var darkMode = defaultTheme === "dark" ? true : false;
|
||||||
|
if (localStorage.getItem("theme") === "system") {
|
||||||
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||||
|
darkMode = true;
|
||||||
|
}
|
||||||
|
} else if (localStorage.getItem("theme") === "dark") {
|
||||||
|
darkMode = true;
|
||||||
|
} else if (localStorage.getItem("theme") === "light") {
|
||||||
|
darkMode = false;
|
||||||
|
}
|
||||||
|
return darkMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setTheme(darkMode) {
|
||||||
|
// Update DOM
|
||||||
|
darkMode
|
||||||
|
? document.documentElement.classList.add("dark")
|
||||||
|
: document.documentElement.classList.remove("dark");
|
||||||
|
// Update localStorage
|
||||||
|
localStorage.setItem("theme", darkMode ? "dark" : "light");
|
||||||
|
}
|
||||||
|
|
||||||
|
// This prevents flickering back to default theme before the page is fully loaded
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
|
||||||
|
document.addEventListener("astro:page-load", () => {
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
// Theme switcher
|
||||||
|
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
||||||
|
themeSwitch.forEach((el) => {
|
||||||
|
el.addEventListener("change", (e) => {
|
||||||
|
setTheme(e.target.checked);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script> </div> </nav> </header> <main id="main-content" class="flex-1"> <section class="section"> <div class="container"> <div class="row justify-center"> <div class="text-center lg:col-6"> <div class="blur-[0px]"> <img src="/_astro/john-doe.Cur90ukb_Z1VQyI1.webp" alt="Placeholder" loading="eager" decoding="async" fetchpriority="auto" width="1024" height="1024" class="mb-6 w-64"> </div> <h1 class="mb-4">Kristian Takvam</h1> <p class="mb-8">My personal blog.</p> <a href="https://github.com/Kremtastic" target="_blank" class="no-underline inline-block hover:opacity-100 "><div class="glass-t hover:bg-opacity-20 hover:backdrop-blur-none
|
||||||
|
px-4 py-2 rounded-md font-bold intersect:animate-fade opacity-0">GitHub</div></a> </div> </div> </div> </section> </main> <footer class="glass container lg:my-4 lg:rounded-lg intersect:animate-fadeUp opacity-0"> <div class="row py-2 lg:py-0 items-center flex-wrap-reverse"> <div class="text-center lg:col-6 lg:mb-0 lg:text-left"> <ul> <li class="m-2 inline-block"> <a href="/terms">© Kristian Emil Takvam 2025</a> |
|
||||||
|
<a href="https://github.com/astrogon/astrogon" target="_blank"> <strong>Astrogon</strong></a> theme by
|
||||||
|
<a href="https://reednel.com/" target="_blank"> <strong>Reed Nelson</strong></a> </li> </ul> </div> <div class="text-center lg:col-6 lg:my-0 flex items-center justify-center lg:justify-end"> <ul class="py-2 flex items-center"><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="GitHub" href="https://www.github.com/Kremtastic" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">GitHub</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a></li><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="LinkedIn" href="https://www.linkedin.com/in/kristian-emil-takvam-70a475215/" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">LinkedIn</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a></li></ul> </div> </div> </footer> <!-- <ObserverScript /> --> </body></html>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":"1.3.0","languages":{"en":{"hash":"en_b2bd14c6b2","wasm":"en","page_count":15}}}
|
||||||
|
|
@ -0,0 +1,214 @@
|
||||||
|
:root {
|
||||||
|
--pagefind-ui-scale: 0.8;
|
||||||
|
--pagefind-ui-primary: #034AD8;
|
||||||
|
--pagefind-ui-fade: #707070;
|
||||||
|
--pagefind-ui-text: #393939;
|
||||||
|
--pagefind-ui-background: #ffffff;
|
||||||
|
--pagefind-ui-border: #eeeeee;
|
||||||
|
--pagefind-ui-tag: #eeeeee;
|
||||||
|
--pagefind-ui-border-width: 2px;
|
||||||
|
--pagefind-ui-border-radius: 8px;
|
||||||
|
--pagefind-ui-image-border-radius: 8px;
|
||||||
|
--pagefind-ui-image-box-ratio: 3 / 2;
|
||||||
|
--pagefind-ui-font: system, -apple-system, ".SFNSText-Regular",
|
||||||
|
"San Francisco", "Roboto", "Segoe UI", "Helvetica Neue",
|
||||||
|
"Lucida Grande", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-pfmod-hidden] {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-pfmod-suppressed] {
|
||||||
|
opacity: 0 !important;
|
||||||
|
pointer-events: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-pfmod-sr-hidden] {
|
||||||
|
-webkit-clip: rect(0 0 0 0) !important;
|
||||||
|
clip: rect(0 0 0 0) !important;
|
||||||
|
-webkit-clip-path: inset(100%) !important;
|
||||||
|
clip-path: inset(100%) !important;
|
||||||
|
height: 1px !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
overflow: clip !important;
|
||||||
|
position: absolute !important;
|
||||||
|
white-space: nowrap !important;
|
||||||
|
width: 1px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-pfmod-loading] {
|
||||||
|
color: var(--pagefind-ui-text);
|
||||||
|
background-color: var(--pagefind-ui-text);
|
||||||
|
border-radius: var(--pagefind-ui-border-radius);
|
||||||
|
opacity: 0.1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Input */
|
||||||
|
|
||||||
|
.pagefind-modular-input-wrapper {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-input-wrapper::before {
|
||||||
|
background-color: var(--pagefind-ui-text);
|
||||||
|
width: calc(18px * var(--pagefind-ui-scale));
|
||||||
|
height: calc(18px * var(--pagefind-ui-scale));
|
||||||
|
top: calc(23px * var(--pagefind-ui-scale));
|
||||||
|
left: calc(20px * var(--pagefind-ui-scale));
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
opacity: 0.7;
|
||||||
|
-webkit-mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");
|
||||||
|
mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");
|
||||||
|
-webkit-mask-size: 100%;
|
||||||
|
mask-size: 100%;
|
||||||
|
z-index: 9;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-input {
|
||||||
|
height: calc(64px * var(--pagefind-ui-scale));
|
||||||
|
padding: 0 calc(70px * var(--pagefind-ui-scale)) 0 calc(54px * var(--pagefind-ui-scale));
|
||||||
|
background-color: var(--pagefind-ui-background);
|
||||||
|
border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);
|
||||||
|
border-radius: var(--pagefind-ui-border-radius);
|
||||||
|
font-size: calc(21px * var(--pagefind-ui-scale));
|
||||||
|
position: relative;
|
||||||
|
appearance: none;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-input::placeholder {
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-input-clear {
|
||||||
|
position: absolute;
|
||||||
|
top: calc(2px * var(--pagefind-ui-scale));
|
||||||
|
right: calc(2px * var(--pagefind-ui-scale));
|
||||||
|
height: calc(60px * var(--pagefind-ui-scale));
|
||||||
|
border-radius: var(--pagefind-ui-border-radius);
|
||||||
|
padding: 0 calc(15px * var(--pagefind-ui-scale)) 0 calc(2px * var(--pagefind-ui-scale));
|
||||||
|
color: var(--pagefind-ui-text);
|
||||||
|
font-size: calc(14px * var(--pagefind-ui-scale));
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: var(--pagefind-ui-background);
|
||||||
|
border: none;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ResultList */
|
||||||
|
|
||||||
|
.pagefind-modular-list-result {
|
||||||
|
list-style-type: none;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: min(calc(40px * var(--pagefind-ui-scale)), 3%);
|
||||||
|
padding: calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));
|
||||||
|
border-top: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-list-result:last-of-type {
|
||||||
|
border-bottom: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-list-thumb {
|
||||||
|
width: min(30%,
|
||||||
|
calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));
|
||||||
|
max-width: calc(120px * var(--pagefind-ui-scale));
|
||||||
|
margin-top: calc(10px * var(--pagefind-ui-scale));
|
||||||
|
aspect-ratio: var(--pagefind-ui-image-box-ratio);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-list-image {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
font-size: 0;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
border-radius: var(--pagefind-ui-image-border-radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-list-inner {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-top: calc(10px * var(--pagefind-ui-scale));
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-list-title {
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: calc(21px * var(--pagefind-ui-scale));
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-list-link {
|
||||||
|
color: var(--pagefind-ui-text);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-list-link:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-list-excerpt {
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: calc(16px * var(--pagefind-ui-scale));
|
||||||
|
margin-top: calc(4px * var(--pagefind-ui-scale));
|
||||||
|
margin-bottom: 0;
|
||||||
|
min-width: calc(250px * var(--pagefind-ui-scale));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FilterPills */
|
||||||
|
|
||||||
|
.pagefind-modular-filter-pills-wrapper {
|
||||||
|
overflow-x: scroll;
|
||||||
|
padding: 15px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-filter-pills {
|
||||||
|
display: flex;
|
||||||
|
gap: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-filter-pill {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border: none;
|
||||||
|
appearance: none;
|
||||||
|
padding: 0 calc(24px * var(--pagefind-ui-scale));
|
||||||
|
background-color: var(--pagefind-ui-background);
|
||||||
|
color: var(--pagefind-ui-fade);
|
||||||
|
border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);
|
||||||
|
border-radius: calc(25px * var(--pagefind-ui-scale));
|
||||||
|
font-size: calc(18px * var(--pagefind-ui-scale));
|
||||||
|
height: calc(50px * var(--pagefind-ui-scale));
|
||||||
|
cursor: pointer;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-filter-pill:hover {
|
||||||
|
border-color: var(--pagefind-ui-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagefind-modular-filter-pill[aria-pressed="true"] {
|
||||||
|
border-color: var(--pagefind-ui-primary);
|
||||||
|
color: var(--pagefind-ui-primary);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<!DOCTYPE html><html lang="en"> <head><!-- favicon --><link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"><link rel="sitemap" href="/sitemap-index.xml"><meta name="theme-name" content="pages"><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000"><meta name="generator" content="Astro v5.13.2"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"><title>
|
||||||
|
Poetry
|
||||||
|
|
||||||
|
</title><meta name="description" content="Jane's poems
|
||||||
|
"><meta name="author" content="Jane Doe"><meta property="og:title" content="Poetry
|
||||||
|
"><meta property="og:description" content="Jane's poems
|
||||||
|
"><meta property="og:type" content="website"><meta property="og:url" content="https://janedoe.com/poetry/"><meta property="og:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:title" content="Poetry
|
||||||
|
"><meta name="twitter:description" content="Jane's poems
|
||||||
|
"><meta name="twitter:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:card" content="summary_large_image"><!-- Katex --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js" integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script><!-- https://docs.astro.build/en/guides/view-transitions --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="swap"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.DXDO1ZkE.js"></script><script type="application/json" data-tooltips-options>{"interactive":false,"delay":[333,0]}</script><script type="module" src="/_astro/Tooltips.astro_astro_type_script_index_0_lang.Bx2cGmPu.js"></script><link rel="stylesheet" href="/_astro/about.DDk7dmDO.css">
|
||||||
|
<link rel="stylesheet" href="/_astro/about.D07_NNuH.css"><script type="module" src="/_astro/page.DlXkxCA4.js"></script></head> <body> <!-- ---
|
||||||
|
// Twinkling Star Background
|
||||||
|
const numStars = 1600;
|
||||||
|
const stars = Array.from({ length: numStars }).map(() => ({
|
||||||
|
left: `${Math.random() * 100}%`,
|
||||||
|
top: `${Math.random() * 100}%`,
|
||||||
|
size: `${Math.random() * 2 + 1}px`,
|
||||||
|
delay: `${7 * Math.random()}s`,
|
||||||
|
// hsl: `hsl(${Math.random() * 360}, 100%, 50%)`, // background: ${hsl};
|
||||||
|
}));
|
||||||
|
---
|
||||||
|
<div
|
||||||
|
class="fixed top-0 left-0 w-full h-full pointer-events-none overflow-hidden"
|
||||||
|
>
|
||||||
|
{
|
||||||
|
stars.map(({ left, top, size, delay }) => (
|
||||||
|
<div
|
||||||
|
class="absolute bg-none dark:bg-yellow-50 rounded-full animate-twinkle"
|
||||||
|
style={`
|
||||||
|
left: ${left};
|
||||||
|
top: ${top};
|
||||||
|
width: ${size};
|
||||||
|
height: ${size};
|
||||||
|
animation-delay: ${delay};
|
||||||
|
`}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div> --><!-- Gradient Cycle Background --><!-- <div
|
||||||
|
class="gradient animate-cycleBg fixed top-0 left-0 w-full h-full -z-1 pointer-events-none overflow-hidden"
|
||||||
|
/>
|
||||||
|
<style>
|
||||||
|
.gradient {
|
||||||
|
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
|
||||||
|
background-size: 400% 400%;
|
||||||
|
}
|
||||||
|
</style> --><!-- Single Image Background --><!-- <style>
|
||||||
|
html::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: url(/src/assets/backgrounds/bwca-dusk.png) no-repeat center center;
|
||||||
|
background-size: cover;
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
</style> --><!-- Dual Image Background --> <header class="container glass py-2 z-30 mb-4 lg:mt-4 lg:rounded-lg sticky top-0" data-astro-transition-persist="astro-zg46k4mb-1"> <nav class="relative flex flex-wrap items-center justify-between"> <!-- navbar toggler --> <input id="nav-toggle" type="checkbox" class="hidden"> <label for="nav-toggle" class="order-0 cursor-pointer flex items-center md:hidden text-txt-p dark:text-darkmode-txt-p lg:order-1"> <svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20"> <title>Menu Open</title> <path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path> </svg> <svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20"> <title>Menu Close</title> <polygon points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2" transform="rotate(45 10 10)"></polygon> </svg> </label> <!-- /navbar toggler --> <ul id="nav-menu" class="text-center lg:text-left order-3 hidden w-full pb-6 md:order-1 md:flex md:w-auto md:space-x-2 md:pb-0 lg:space-x-4"> <li class=""> <a href="/" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Home </a> </li><li class=""> <a href="/about" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> About </a> </li><li class=""> <a href="/docs" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Docs </a> </li><li class=""> <a href="/blog" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Blog </a> </li><li class=""> <a href="/portfolio" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Portfolio </a> </li> </ul> <div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0"> <a class="mr-4 inline-block border-border text-xl text-txt-p dark:border-darkmode-border dark:text-darkmode-txt-p" href="/search" aria-label="search"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M456.69 421.39 362.6 327.3a173.81 173.81 0 0 0 34.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 0 0 327.3 362.6l94.09 94.09a25 25 0 0 0 35.3-35.3zM97.92 222.72a124.8 124.8 0 1 1 124.8 124.8 124.95 124.95 0 0 1-124.8-124.8z"></path></svg> </a> <div class="inline-flex a mr-2"> <input class="absolute opacity-0" id="theme-switcher" data-theme-switcher type="checkbox"> <label class="relative inline-block h-4 w-6 cursor-pointer" for="theme-switcher"> <span class="sr-only">theme switcher</span> <span class="absolute -top-1 left-0 flex h-6 w-6 items-center justify-center rounded-full"> <svg class="absolute z-10 opacity-100 dark:opacity-0" viewBox="0 0 24 24" height="21" width="21"> <path fill="#000" d="M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z"></path> </svg> <svg class="absolute z-10 opacity-0 dark:opacity-100" viewBox="0 0 24 24" height="21" width="21"> <path fill="#fff" d="M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path> </svg> </span> </label> </div> <script data-astro-rerun>
|
||||||
|
const defaultTheme = "system";
|
||||||
|
|
||||||
|
function getTheme(defaultTheme) {
|
||||||
|
var darkMode = defaultTheme === "dark" ? true : false;
|
||||||
|
if (localStorage.getItem("theme") === "system") {
|
||||||
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||||
|
darkMode = true;
|
||||||
|
}
|
||||||
|
} else if (localStorage.getItem("theme") === "dark") {
|
||||||
|
darkMode = true;
|
||||||
|
} else if (localStorage.getItem("theme") === "light") {
|
||||||
|
darkMode = false;
|
||||||
|
}
|
||||||
|
return darkMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setTheme(darkMode) {
|
||||||
|
// Update DOM
|
||||||
|
darkMode
|
||||||
|
? document.documentElement.classList.add("dark")
|
||||||
|
: document.documentElement.classList.remove("dark");
|
||||||
|
// Update localStorage
|
||||||
|
localStorage.setItem("theme", darkMode ? "dark" : "light");
|
||||||
|
}
|
||||||
|
|
||||||
|
// This prevents flickering back to default theme before the page is fully loaded
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
|
||||||
|
document.addEventListener("astro:page-load", () => {
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
// Theme switcher
|
||||||
|
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
||||||
|
themeSwitch.forEach((el) => {
|
||||||
|
el.addEventListener("change", (e) => {
|
||||||
|
setTheme(e.target.checked);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script> </div> </nav> </header> <main id="main-content" class="flex-1"> <section class="flex justify-center"> <div class="container text-center m-2"> <div class="rounded-lg p-0 bg-gradient-to-t gradient"> <div class="rounded-lg glass px-8 py-6 intersect:animate-fadeDown opacity-0 intersect-no-queue"> <h1>Poetry</h1> <nav aria-label="Breadcrumb" class="mt-4"> <ol class="inline-flex" role="list"> <li class="mx-1 capitalize" role="listitem"> <a class="text-txt-p dark:text-darkmode-txt-p" href="/"> Home </a> </li><li class="mx-1 capitalize" role="listitem"> <span class="inlin-block mr-1">/</span> <span class="text-txt-light dark:text-darkmode-txt-light">poetry</span> </li> </ol> </nav> </div> </div> </div> </section> <section class="section"> <div class="flex container row justify-center"> <div class="col lg:col-8"> <div class="glass rounded-lg p-4 intersect:animate-fadeUp opacity-0"> <ul> </ul> </div> </div> </div> </section> </main> <footer class="glass container lg:my-4 lg:rounded-lg intersect:animate-fadeUp opacity-0"> <div class="row py-2 lg:py-0 items-center flex-wrap-reverse"> <div class="text-center lg:col-6 lg:mb-0 lg:text-left"> <ul> <li class="m-2 inline-block"> <a href="/terms">© Kristian Emil Takvam 2025</a> |
|
||||||
|
<a href="https://github.com/astrogon/astrogon" target="_blank"> <strong>Astrogon</strong></a> theme by
|
||||||
|
<a href="https://reednel.com/" target="_blank"> <strong>Reed Nelson</strong></a> </li> </ul> </div> <div class="text-center lg:col-6 lg:my-0 flex items-center justify-center lg:justify-end"> <ul class="py-2 flex items-center"><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="GitHub" href="https://www.github.com/Kremtastic" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">GitHub</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a></li><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="LinkedIn" href="https://www.linkedin.com/in/kristian-emil-takvam-70a475215/" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">LinkedIn</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a></li></ul> </div> </div> </footer> <!-- <ObserverScript /> --> </body></html>
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<!DOCTYPE html><html lang="en"> <head><!-- favicon --><link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"><link rel="sitemap" href="/sitemap-index.xml"><meta name="theme-name" content="pages"><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000"><meta name="generator" content="Astro v5.13.2"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"><title>
|
||||||
|
Recipes
|
||||||
|
|
||||||
|
</title><meta name="description" content="A modest recipe book.
|
||||||
|
"><meta name="author" content="Jane Doe"><meta property="og:title" content="Recipes
|
||||||
|
"><meta property="og:description" content="A modest recipe book.
|
||||||
|
"><meta property="og:type" content="website"><meta property="og:url" content="https://janedoe.com/recipes/"><meta property="og:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:title" content="Recipes
|
||||||
|
"><meta name="twitter:description" content="A modest recipe book.
|
||||||
|
"><meta name="twitter:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:card" content="summary_large_image"><!-- Katex --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js" integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script><!-- https://docs.astro.build/en/guides/view-transitions --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="swap"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.DXDO1ZkE.js"></script><script type="application/json" data-tooltips-options>{"interactive":false,"delay":[333,0]}</script><script type="module" src="/_astro/Tooltips.astro_astro_type_script_index_0_lang.Bx2cGmPu.js"></script><link rel="stylesheet" href="/_astro/about.DDk7dmDO.css">
|
||||||
|
<link rel="stylesheet" href="/_astro/about.D07_NNuH.css"><script type="module" src="/_astro/page.DlXkxCA4.js"></script></head> <body> <!-- ---
|
||||||
|
// Twinkling Star Background
|
||||||
|
const numStars = 1600;
|
||||||
|
const stars = Array.from({ length: numStars }).map(() => ({
|
||||||
|
left: `${Math.random() * 100}%`,
|
||||||
|
top: `${Math.random() * 100}%`,
|
||||||
|
size: `${Math.random() * 2 + 1}px`,
|
||||||
|
delay: `${7 * Math.random()}s`,
|
||||||
|
// hsl: `hsl(${Math.random() * 360}, 100%, 50%)`, // background: ${hsl};
|
||||||
|
}));
|
||||||
|
---
|
||||||
|
<div
|
||||||
|
class="fixed top-0 left-0 w-full h-full pointer-events-none overflow-hidden"
|
||||||
|
>
|
||||||
|
{
|
||||||
|
stars.map(({ left, top, size, delay }) => (
|
||||||
|
<div
|
||||||
|
class="absolute bg-none dark:bg-yellow-50 rounded-full animate-twinkle"
|
||||||
|
style={`
|
||||||
|
left: ${left};
|
||||||
|
top: ${top};
|
||||||
|
width: ${size};
|
||||||
|
height: ${size};
|
||||||
|
animation-delay: ${delay};
|
||||||
|
`}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div> --><!-- Gradient Cycle Background --><!-- <div
|
||||||
|
class="gradient animate-cycleBg fixed top-0 left-0 w-full h-full -z-1 pointer-events-none overflow-hidden"
|
||||||
|
/>
|
||||||
|
<style>
|
||||||
|
.gradient {
|
||||||
|
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
|
||||||
|
background-size: 400% 400%;
|
||||||
|
}
|
||||||
|
</style> --><!-- Single Image Background --><!-- <style>
|
||||||
|
html::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: url(/src/assets/backgrounds/bwca-dusk.png) no-repeat center center;
|
||||||
|
background-size: cover;
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
</style> --><!-- Dual Image Background --> <header class="container glass py-2 z-30 mb-4 lg:mt-4 lg:rounded-lg sticky top-0" data-astro-transition-persist="astro-zg46k4mb-1"> <nav class="relative flex flex-wrap items-center justify-between"> <!-- navbar toggler --> <input id="nav-toggle" type="checkbox" class="hidden"> <label for="nav-toggle" class="order-0 cursor-pointer flex items-center md:hidden text-txt-p dark:text-darkmode-txt-p lg:order-1"> <svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20"> <title>Menu Open</title> <path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path> </svg> <svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20"> <title>Menu Close</title> <polygon points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2" transform="rotate(45 10 10)"></polygon> </svg> </label> <!-- /navbar toggler --> <ul id="nav-menu" class="text-center lg:text-left order-3 hidden w-full pb-6 md:order-1 md:flex md:w-auto md:space-x-2 md:pb-0 lg:space-x-4"> <li class=""> <a href="/" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Home </a> </li><li class=""> <a href="/about" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> About </a> </li><li class=""> <a href="/docs" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Docs </a> </li><li class=""> <a href="/blog" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Blog </a> </li><li class=""> <a href="/portfolio" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Portfolio </a> </li> </ul> <div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0"> <a class="mr-4 inline-block border-border text-xl text-txt-p dark:border-darkmode-border dark:text-darkmode-txt-p" href="/search" aria-label="search"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M456.69 421.39 362.6 327.3a173.81 173.81 0 0 0 34.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 0 0 327.3 362.6l94.09 94.09a25 25 0 0 0 35.3-35.3zM97.92 222.72a124.8 124.8 0 1 1 124.8 124.8 124.95 124.95 0 0 1-124.8-124.8z"></path></svg> </a> <div class="inline-flex a mr-2"> <input class="absolute opacity-0" id="theme-switcher" data-theme-switcher type="checkbox"> <label class="relative inline-block h-4 w-6 cursor-pointer" for="theme-switcher"> <span class="sr-only">theme switcher</span> <span class="absolute -top-1 left-0 flex h-6 w-6 items-center justify-center rounded-full"> <svg class="absolute z-10 opacity-100 dark:opacity-0" viewBox="0 0 24 24" height="21" width="21"> <path fill="#000" d="M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z"></path> </svg> <svg class="absolute z-10 opacity-0 dark:opacity-100" viewBox="0 0 24 24" height="21" width="21"> <path fill="#fff" d="M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path> </svg> </span> </label> </div> <script data-astro-rerun>
|
||||||
|
const defaultTheme = "system";
|
||||||
|
|
||||||
|
function getTheme(defaultTheme) {
|
||||||
|
var darkMode = defaultTheme === "dark" ? true : false;
|
||||||
|
if (localStorage.getItem("theme") === "system") {
|
||||||
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||||
|
darkMode = true;
|
||||||
|
}
|
||||||
|
} else if (localStorage.getItem("theme") === "dark") {
|
||||||
|
darkMode = true;
|
||||||
|
} else if (localStorage.getItem("theme") === "light") {
|
||||||
|
darkMode = false;
|
||||||
|
}
|
||||||
|
return darkMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setTheme(darkMode) {
|
||||||
|
// Update DOM
|
||||||
|
darkMode
|
||||||
|
? document.documentElement.classList.add("dark")
|
||||||
|
: document.documentElement.classList.remove("dark");
|
||||||
|
// Update localStorage
|
||||||
|
localStorage.setItem("theme", darkMode ? "dark" : "light");
|
||||||
|
}
|
||||||
|
|
||||||
|
// This prevents flickering back to default theme before the page is fully loaded
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
|
||||||
|
document.addEventListener("astro:page-load", () => {
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
// Theme switcher
|
||||||
|
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
||||||
|
themeSwitch.forEach((el) => {
|
||||||
|
el.addEventListener("change", (e) => {
|
||||||
|
setTheme(e.target.checked);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script> </div> </nav> </header> <main id="main-content" class="flex-1"> <section class="flex justify-center"> <div class="container text-center m-2"> <div class="rounded-lg p-0 bg-gradient-to-t gradient"> <div class="rounded-lg glass px-8 py-6 intersect:animate-fadeDown opacity-0 intersect-no-queue"> <h1>Recipes</h1> <nav aria-label="Breadcrumb" class="mt-4"> <ol class="inline-flex" role="list"> <li class="mx-1 capitalize" role="listitem"> <a class="text-txt-p dark:text-darkmode-txt-p" href="/"> Home </a> </li><li class="mx-1 capitalize" role="listitem"> <span class="inlin-block mr-1">/</span> <span class="text-txt-light dark:text-darkmode-txt-light">recipes</span> </li> </ol> </nav> </div> </div> </div> </section> <section class="section m-2"> <div class="container"> <div class="row"> </div> </div> </section> </main> <footer class="glass container lg:my-4 lg:rounded-lg intersect:animate-fadeUp opacity-0"> <div class="row py-2 lg:py-0 items-center flex-wrap-reverse"> <div class="text-center lg:col-6 lg:mb-0 lg:text-left"> <ul> <li class="m-2 inline-block"> <a href="/terms">© Kristian Emil Takvam 2025</a> |
|
||||||
|
<a href="https://github.com/astrogon/astrogon" target="_blank"> <strong>Astrogon</strong></a> theme by
|
||||||
|
<a href="https://reednel.com/" target="_blank"> <strong>Reed Nelson</strong></a> </li> </ul> </div> <div class="text-center lg:col-6 lg:my-0 flex items-center justify-center lg:justify-end"> <ul class="py-2 flex items-center"><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="GitHub" href="https://www.github.com/Kremtastic" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">GitHub</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a></li><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="LinkedIn" href="https://www.linkedin.com/in/kristian-emil-takvam-70a475215/" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">LinkedIn</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a></li></ul> </div> </div> </footer> <!-- <ObserverScript /> --> </body></html>
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
User-agent: *
|
||||||
|
Allow: /
|
||||||
|
|
||||||
|
Disallow: /api/*
|
||||||
|
|
||||||
|
Sitemap: https://www.janedoe.com/sitemap-index.xml
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"short_name": "",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "/android-chrome-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/android-chrome-512x512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"theme_color": "#ffffff",
|
||||||
|
"background_color": "#ffffff",
|
||||||
|
"display": "standalone"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://kremtastic.github.io/</loc></url><url><loc>https://kremtastic.github.io/about/</loc></url><url><loc>https://kremtastic.github.io/blog/</loc></url><url><loc>https://kremtastic.github.io/blog/categories/</loc></url><url><loc>https://kremtastic.github.io/blog/tags/</loc></url><url><loc>https://kremtastic.github.io/docs/</loc></url><url><loc>https://kremtastic.github.io/docs/tutorials/</loc></url><url><loc>https://kremtastic.github.io/docs/tutorials/elements/</loc></url><url><loc>https://kremtastic.github.io/index-cards/</loc></url><url><loc>https://kremtastic.github.io/poetry/</loc></url><url><loc>https://kremtastic.github.io/portfolio/</loc></url><url><loc>https://kremtastic.github.io/recipes/</loc></url><url><loc>https://kremtastic.github.io/search/</loc></url><url><loc>https://kremtastic.github.io/terms/</loc></url></urlset>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://kremtastic.github.io/sitemap-0.xml</loc></sitemap></sitemapindex>
|
||||||
|
|
@ -0,0 +1,102 @@
|
||||||
|
<!DOCTYPE html><html lang="en"> <head><!-- favicon --><link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"><link rel="sitemap" href="/sitemap-index.xml"><meta name="theme-name" content="pages"><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000"><meta name="generator" content="Astro v5.13.2"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"><title>
|
||||||
|
Terms & Conditions
|
||||||
|
|
||||||
|
</title><meta name="description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta name="author" content="Jane Doe"><meta property="og:title" content="Terms & Conditions
|
||||||
|
"><meta property="og:description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta property="og:type" content="website"><meta property="og:url" content="https://janedoe.com/terms/"><meta property="og:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:title" content="Terms & Conditions
|
||||||
|
"><meta name="twitter:description" content="Astrogon is a simple and elegant Astro theme.
|
||||||
|
"><meta name="twitter:image" content="https://janedoe.com@assets/og-image.png"><meta name="twitter:card" content="summary_large_image"><!-- Katex --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js" integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script><!-- https://docs.astro.build/en/guides/view-transitions --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="swap"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.DXDO1ZkE.js"></script><script type="application/json" data-tooltips-options>{"interactive":false,"delay":[333,0]}</script><script type="module" src="/_astro/Tooltips.astro_astro_type_script_index_0_lang.Bx2cGmPu.js"></script><link rel="stylesheet" href="/_astro/about.DDk7dmDO.css">
|
||||||
|
<link rel="stylesheet" href="/_astro/about.D07_NNuH.css"><script type="module" src="/_astro/page.DlXkxCA4.js"></script></head> <body> <!-- ---
|
||||||
|
// Twinkling Star Background
|
||||||
|
const numStars = 1600;
|
||||||
|
const stars = Array.from({ length: numStars }).map(() => ({
|
||||||
|
left: `${Math.random() * 100}%`,
|
||||||
|
top: `${Math.random() * 100}%`,
|
||||||
|
size: `${Math.random() * 2 + 1}px`,
|
||||||
|
delay: `${7 * Math.random()}s`,
|
||||||
|
// hsl: `hsl(${Math.random() * 360}, 100%, 50%)`, // background: ${hsl};
|
||||||
|
}));
|
||||||
|
---
|
||||||
|
<div
|
||||||
|
class="fixed top-0 left-0 w-full h-full pointer-events-none overflow-hidden"
|
||||||
|
>
|
||||||
|
{
|
||||||
|
stars.map(({ left, top, size, delay }) => (
|
||||||
|
<div
|
||||||
|
class="absolute bg-none dark:bg-yellow-50 rounded-full animate-twinkle"
|
||||||
|
style={`
|
||||||
|
left: ${left};
|
||||||
|
top: ${top};
|
||||||
|
width: ${size};
|
||||||
|
height: ${size};
|
||||||
|
animation-delay: ${delay};
|
||||||
|
`}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div> --><!-- Gradient Cycle Background --><!-- <div
|
||||||
|
class="gradient animate-cycleBg fixed top-0 left-0 w-full h-full -z-1 pointer-events-none overflow-hidden"
|
||||||
|
/>
|
||||||
|
<style>
|
||||||
|
.gradient {
|
||||||
|
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
|
||||||
|
background-size: 400% 400%;
|
||||||
|
}
|
||||||
|
</style> --><!-- Single Image Background --><!-- <style>
|
||||||
|
html::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: url(/src/assets/backgrounds/bwca-dusk.png) no-repeat center center;
|
||||||
|
background-size: cover;
|
||||||
|
z-index: -1;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
</style> --><!-- Dual Image Background --> <header class="container glass py-2 z-30 mb-4 lg:mt-4 lg:rounded-lg sticky top-0" data-astro-transition-persist="astro-zg46k4mb-1"> <nav class="relative flex flex-wrap items-center justify-between"> <!-- navbar toggler --> <input id="nav-toggle" type="checkbox" class="hidden"> <label for="nav-toggle" class="order-0 cursor-pointer flex items-center md:hidden text-txt-p dark:text-darkmode-txt-p lg:order-1"> <svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20"> <title>Menu Open</title> <path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path> </svg> <svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20"> <title>Menu Close</title> <polygon points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2" transform="rotate(45 10 10)"></polygon> </svg> </label> <!-- /navbar toggler --> <ul id="nav-menu" class="text-center lg:text-left order-3 hidden w-full pb-6 md:order-1 md:flex md:w-auto md:space-x-2 md:pb-0 lg:space-x-4"> <li class=""> <a href="/" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Home </a> </li><li class=""> <a href="/about" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> About </a> </li><li class=""> <a href="/docs" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Docs </a> </li><li class=""> <a href="/blog" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Blog </a> </li><li class=""> <a href="/portfolio" class="block p-2 font-secondary font-semibold text-txt-p transition dark:text-darkmode-txt-p lg:px-2 lg:py-3 false"> Portfolio </a> </li> </ul> <div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0"> <a class="mr-4 inline-block border-border text-xl text-txt-p dark:border-darkmode-border dark:text-darkmode-txt-p" href="/search" aria-label="search"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M456.69 421.39 362.6 327.3a173.81 173.81 0 0 0 34.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 0 0 327.3 362.6l94.09 94.09a25 25 0 0 0 35.3-35.3zM97.92 222.72a124.8 124.8 0 1 1 124.8 124.8 124.95 124.95 0 0 1-124.8-124.8z"></path></svg> </a> <div class="inline-flex a mr-2"> <input class="absolute opacity-0" id="theme-switcher" data-theme-switcher type="checkbox"> <label class="relative inline-block h-4 w-6 cursor-pointer" for="theme-switcher"> <span class="sr-only">theme switcher</span> <span class="absolute -top-1 left-0 flex h-6 w-6 items-center justify-center rounded-full"> <svg class="absolute z-10 opacity-100 dark:opacity-0" viewBox="0 0 24 24" height="21" width="21"> <path fill="#000" d="M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z"></path> </svg> <svg class="absolute z-10 opacity-0 dark:opacity-100" viewBox="0 0 24 24" height="21" width="21"> <path fill="#fff" d="M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path> </svg> </span> </label> </div> <script data-astro-rerun>
|
||||||
|
const defaultTheme = "system";
|
||||||
|
|
||||||
|
function getTheme(defaultTheme) {
|
||||||
|
var darkMode = defaultTheme === "dark" ? true : false;
|
||||||
|
if (localStorage.getItem("theme") === "system") {
|
||||||
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||||
|
darkMode = true;
|
||||||
|
}
|
||||||
|
} else if (localStorage.getItem("theme") === "dark") {
|
||||||
|
darkMode = true;
|
||||||
|
} else if (localStorage.getItem("theme") === "light") {
|
||||||
|
darkMode = false;
|
||||||
|
}
|
||||||
|
return darkMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setTheme(darkMode) {
|
||||||
|
// Update DOM
|
||||||
|
darkMode
|
||||||
|
? document.documentElement.classList.add("dark")
|
||||||
|
: document.documentElement.classList.remove("dark");
|
||||||
|
// Update localStorage
|
||||||
|
localStorage.setItem("theme", darkMode ? "dark" : "light");
|
||||||
|
}
|
||||||
|
|
||||||
|
// This prevents flickering back to default theme before the page is fully loaded
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
|
||||||
|
document.addEventListener("astro:page-load", () => {
|
||||||
|
setTheme(getTheme(defaultTheme));
|
||||||
|
// Theme switcher
|
||||||
|
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
||||||
|
themeSwitch.forEach((el) => {
|
||||||
|
el.addEventListener("change", (e) => {
|
||||||
|
setTheme(e.target.checked);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script> </div> </nav> </header> <main id="main-content" class="flex-1"> <section class="flex justify-center"> <div class="container text-center m-2"> <div class="rounded-lg p-0 bg-gradient-to-t gradient"> <div class="rounded-lg glass px-8 py-6 intersect:animate-fadeDown opacity-0 intersect-no-queue"> <h1>Terms & Conditions</h1> <nav aria-label="Breadcrumb" class="mt-4"> <ol class="inline-flex" role="list"> <li class="mx-1 capitalize" role="listitem"> <a class="text-txt-p dark:text-darkmode-txt-p" href="/"> Home </a> </li><li class="mx-1 capitalize" role="listitem"> <span class="inlin-block mr-1">/</span> <span class="text-txt-light dark:text-darkmode-txt-light">terms</span> </li> </ol> </nav> </div> </div> </div> </section> <section class="section"> <div class="container"> <div class="row justify-center"> <div class="col-10 content glass rounded-lg p-4"> <h2 id="copyright">Copyright</h2>
|
||||||
|
<p>© 2025 Kristian Emil Takvam. All rights reserved.</p>
|
||||||
|
<p>This site is built using the open-source <a href="https://github.com/astrogon/astrogon" target="_blank"> <strong>Astrogon</strong></a> theme by <a href="https://reednel.com/" target="_blank"><strong>Reed Nelson</strong></a>, available under the MIT License.</p>
|
||||||
|
<p>You are free to view and share this site. However, please do not copy or republish my original content (text or images) without permission.</p> </div> </div> </div> </section> </main> <footer class="glass container lg:my-4 lg:rounded-lg intersect:animate-fadeUp opacity-0"> <div class="row py-2 lg:py-0 items-center flex-wrap-reverse"> <div class="text-center lg:col-6 lg:mb-0 lg:text-left"> <ul> <li class="m-2 inline-block"> <a href="/terms">© Kristian Emil Takvam 2025</a> |
|
||||||
|
<a href="https://github.com/astrogon/astrogon" target="_blank"> <strong>Astrogon</strong></a> theme by
|
||||||
|
<a href="https://reednel.com/" target="_blank"> <strong>Reed Nelson</strong></a> </li> </ul> </div> <div class="text-center lg:col-6 lg:my-0 flex items-center justify-center lg:justify-end"> <ul class="py-2 flex items-center"><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="GitHub" href="https://www.github.com/Kremtastic" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">GitHub</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a></li><li class="inline-block px-1 intersect:animate-fade opacity-0"><a class="glass-t rounded text-txt-p dark:text-darkmode-txt-p flex h-9 w-9 items-center justify-center text-center" aria-label="LinkedIn" href="https://www.linkedin.com/in/kristian-emil-takvam-70a475215/" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">LinkedIn</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="w-6 h-6" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a></li></ul> </div> </div> </footer> <!-- <ObserverScript /> --> </body></html>
|
||||||