<!DOCTYPE html> <html lang="en" dir="ltr" id="top"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta property="og:title" content="Colophon"> <link rel="canonical" href="https://leilukin.com/colophon/"> <meta name="generator" content="Eleventy v3.0.0"> <meta name="author" content="Leilukin"> <meta name="description" content="Leilukin's Hub's colophon page."> <meta name="fediverse:creator" content="@Leilukin@dragonscave.space"> <meta property="og:site_name" content="Leilukin's Hub"> <meta property="og:type" content="article"> <meta property="og:description" content="Leilukin's Hub's colophon page."> <meta property="og:url" content="https://leilukin.com/colophon/"> <meta property="og:locale" content="en_MY"> <meta property="og:image" content="https://leilukin.com/assets/leilukin/leilukins-hub-meta-img.png"> <meta name="theme-color" content="#3d2163"> <link rel="alternate" type="application/rss+xml" title="Leilukin's Hub" href="/feed.xml"> <link rel="preload" href="/assets/fonts/lexend/lexend-v19-latin-regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/assets/fonts/lexend/lexend-v19-latin-700.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <style> @font-face { font-display: swap; font-family: 'Lexend'; font-style: normal; font-weight: 400; src: url('/assets/fonts/lexend/lexend-v19-latin-regular.woff2') format('woff2'); } @font-face { font-display: swap; font-family: 'Lexend'; font-style: normal; font-weight: 700; src: url('/assets/fonts/lexend/lexend-v19-latin-700.woff2') format('woff2'); } </style> <link rel="stylesheet" href="/assets/fonts/fonts.css"> <link rel="stylesheet" href="/assets/css/global.css"><link rel="stylesheet" href="/assets/css/general.css"><link rel="stylesheet" href="/assets/css/content.css"><link rel="stylesheet" href="/assets/css/plugins.css"><link rel="stylesheet" href="/assets/css/components.css"><link rel="stylesheet" href="/assets/css/a11y-syntax-highlighting-dark.css"><link rel="stylesheet" href="/assets/css/pridesymbols.css"><link rel="stylesheet" href="/assets/css/utility.css"> <style>.toc__wrapper { max-height: var(--ht-sticky-sidebar); overflow-x: auto; background-color: var(--clr-content-bg); padding: 1rem 1.3rem; } .toc__heading { font-size: 1.3rem; font-weight: 700; color: var(--clr-sub-heading); } .toc ol, .toc ol ol { display: grid; gap: 0.3em; } .toc ol { border-top: 0.1em solid var(--clr-title-border); padding-left: 1.3em; padding-top: 1em; } .toc ol ol { border-top: none; list-style-type: disc; padding-left: 1em; padding-top: 0.3em; } .toc ol a { font-size: 1.1rem; padding-left: 0.3em; } .toc ol ol a { padding: 0; font-size: 1rem; } .breadcrumbs { margin-bottom: 0.7em; display: flex; gap: 0.5em; flex-wrap: wrap; justify-content: center; } .blog__post--pagination { padding-top: 1em; margin-block-start: 2.5em; border-top: 0.1em solid var(--clr-title-border); } .blog__post--nextprev { list-style-type: ""; padding: 0; margin: 0; display: grid; gap: 0.7em; grid-template-columns: repeat(2, 1fr); grid-template-areas: 'prev next'; } .blog__post--prev { grid-area: prev; } .blog__post--next { grid-area: next; } .hero img { filter: drop-shadow(0.1rem 0.1rem 0.2rem black) drop-shadow(0.1rem 0.1rem 0.2rem rgba(30, 30, 30, 0.8)) ; } .hero { width: 100%; background-color: var(--clr-hero-bg); display: flex; flex-direction: column; justify-content: center; text-align: center; } .hero__top-bar { background: var(--clr-navbar-bg); width: 100%; padding: 0.5em 0.7em; } .hero__img { display: grid; place-content: center; } .hero img { object-fit: contain; overflow: hidden; max-height: 16rem; } .navbar { background: var(--clr-navbar-bg); width: 100%; z-index: 998; position: sticky; top: 0; padding: 0.6em; } .navbar__menu { list-style-type: ""; margin: 0; padding: 0; display: flex; gap: 1em; flex-wrap: wrap; text-align: center; } .navbar__menu a { color: var(--clr-navbar-link); text-decoration: none; font-weight: 700; cursor: pointer; display: inline-block; } .navbar__menu a:hover { color: var(--clr-link-hover); } .navbar__menu a:focus { outline-offset: 0.2em; } .navbar__links { display: flex; flex-wrap: wrap; justify-content: space-evenly; gap: 0.5em; } .navbar__toggle { background-color: inherit; color: var(--clr-navbar-link); border: none; padding: 0; font-size: 1.25rem; font-weight: 700; display: none; align-items: center; gap: 0.3em; } .navbar__toggle svg { fill: currentColor; } .navbar__toggle:focus, .navbar__menu a:focus { outline-offset: 0.1em; } .navbar__toggle:focus, .navbar__menu a:focus { outline: 0.15em solid var(--clr-navbar-link); } .navbar__popover { background: var(--clr-navbar-bg); border: 0.15em solid var(--clr-navbar-link); padding: 1.5em; max-width: 85%; } .navbar__popover::backdrop { background-color: black; opacity: 0.5; } @supports selector([popover]) { .navbar__toggle { display: flex; } .navbar__links { display: none; } } /* Tablet screen size */ @media only screen and (min-width: 43.75rem) { .navbar { padding: 1em 0.6em; } .navbar__toggle, .navbar__popover { display: none; } .navbar__links { display: flex; } } .top-btn, .top-btn:hover { color: var(--clr-top-btn-txt); text-decoration: none; font-weight: 700; } .top-btn { position: fixed; bottom: 0.5rem; right: 0.5rem; z-index: 999; background-color: var(--clr-top-btn-bg); display: flex; align-items: center; border-radius: 50em; padding: 0.3em 0.5em; gap: 0.2em; } .top-btn:focus { outline: 0.25em solid var(--clr-top-btn-bg); outline-offset: 0.15em; } .top-btn__arrow { display: inline-block; width: 1em; aspect-ratio: 1 / 1; stroke-width: 0; stroke: currentColor; fill: currentColor; } :root { --footer-gap: 0.5em; } .footer { margin-top: auto; width: 100%; background: var(--clr-main-footer-bg); padding: 1.5rem 1rem clamp(1.5rem, calc(100% - 1.5rem), 3.5rem); text-align: center; display: grid; gap: var(--footer-gap); } .footer__links, .footer__shrines { display: flex; flex-wrap: wrap; justify-content: center; column-gap: var(--footer-gap); } .footer__links { justify-self: center; } .footer__shrines { align-self: center; }</style> <link rel="icon" sizes="32x32" href="/favicon.ico"> <link rel="icon" type="image/svg+xml" href="/assets/favicon/leilukin-bee-favicon.svg"> <link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png"> <link rel="manifest" href="/assets/favicon/site.webmanifest"> <link rel="me" href="https://dragonscave.space/@Leilukin"> <link rel="me" href="https://github.com/Leilukin"> <link rel="authorization_endpoint" href="https://indieauth.com/auth"> <script src="/assets/js/D968lGk6J8.js" defer=""></script> <script src="/assets/js/details-utils.js" defer=""></script> <title> Colophon | Leilukin's Hub </title> </head> <body> <div class="skip-btn"><a href="#content">Skip to content</a></div> <header class="hero"> <div class="hero__top-bar hidden"></div> <div class="hero__img"> <img fetchpriority="high" src="/assets/leilukin/Leilukins-Hub-website-banner.avif" alt="Banner of Leilukin's Hub" width="900" height="300"> </div> </header> <nav class="navbar" aria-labelledby="top-level-nav-title"> <h2 class="visually-hidden" id="top-level-nav-title">Top Level</h2> <ul class="navbar__menu navbar__links"> <li> <a href="/">Home</a> </li> <li> <a href="/about/">About</a> </li> <li> <a href="/now/">Now</a> </li> <li> <a href="/blog/">Blog</a> </li> <li> <a href="/articles/">Articles</a> </li> <li> <a href="/projects/">Projects</a> </li> <li> <a href="/shrines/">Shrines</a> </li> <li> <a href="/adoptables/">Adoptables</a> </li> <li> <a href="/links/">Links</a> </li> <li> <a href="/guestbook/">Guestbook</a> </li> </ul> <button class="navbar__toggle" popovertarget="nav-menu" aria-label="Toggle navigation menu"> <svg aria-hidden="true" focusable="false" width="1em" height="1em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"></path></svg> Navigation </button> </nav> <div popover="" id="nav-menu" class="navbar__popover"> <ul class="navbar__menu"> <li> <a href="/">Home</a> </li> <li> <a href="/about/">About</a> </li> <li> <a href="/now/">Now</a> </li> <li> <a href="/blog/">Blog</a> </li> <li> <a href="/articles/">Articles</a> </li> <li> <a href="/projects/">Projects</a> </li> <li> <a href="/shrines/">Shrines</a> </li> <li> <a href="/adoptables/">Adoptables</a> </li> <li> <a href="/links/">Links</a> </li> <li> <a href="/guestbook/">Guestbook</a> </li> </ul> </div> <main id="content"> <header class="main__header"> <h1>Colophon</h1> <p>Leilukin's Hub's colophon page.</p> </header> <content-wrapper> <aside class="left-sidebar" aria-label="Left sidebar"> <details-utils force-open="(min-width: 60rem)" force-restore=""> <details class="toc__wrapper sidebar--sticky"> <summary class="toc__heading" id="toc-heading"> Table of Contents </summary> <nav class="toc" aria-labelledby="toc-heading"><ol><li><a href="#technology">Technology</a></li> <li><a href="#host-and-domain">Host and Domain</a></li> <li><a href="#plugins">Plugins</a><ol><li><a href="#eleventy-community-plugins">Eleventy Community Plugins</a></li> <li><a href="#markdown-it-plugins">markdown-it plugins</a></li></ol></li> <li><a href="#self-hosted-resources">Self-hosted Resources</a><ol><li><a href="#fonts">Fonts</a></li></ol></li> <li><a href="#branding">Branding</a></li> <li><a href="#javascript">JavaScript</a></li></ol></nav> </details> </details-utils> </aside> <article class="content"> <p>Information about how this website is built.</p> <div class="heading-wrapper h2"> <h2 id="technology">Technology</h2> <a class="heading-anchor" href="#technology" aria-labelledby="technology"><span hidden="">#</span></a></div> <ul> <li>Built with the static site generator <a href="https://www.11ty.dev/">Eleventy</a> v3.0.0.</li> <li>JavaScript runtime: <a href="https://bun.sh">Bun</a>.</li> <li>Templating languages: Nunjucks and Markdown.</li> <li>Code written with Visual Studio Code.</li> <li>Tested browsers: Mozilla Firefox, Vivaldi and Lynx.</li> <li>Source code available on <a href="https://github.com/helenclx/leilukin-site">GitHub</a> and its <a href="https://git.32bit.cafe/Leilukin/leilukin-site">Gitea mirror</a>.</li> </ul> <div class="heading-wrapper h2"> <h2 id="host-and-domain">Host and Domain</h2> <a class="heading-anchor" href="#host-and-domain" aria-labelledby="host-and-domain"><span hidden="">#</span></a></div> <ul> <li>Deployed to <a href="https://www.hostinger.my/">Hostinger</a> from this site's GitHub repository with a GitHub action</li> <li>The domain name, leilukin.com, was registered on 30 May 2024, was purchased from, registered on, and is managed by <a href="https://porkbun.com/">Porkbun</a></li> </ul> <p>Previously, this website was hosted on <a href="https://neocities.org/">Neocities</a> until 31 May 2024, and <a href="https://www.netlify.com/">Netlify</a> until 25 July 2024.</p> <div class="heading-wrapper h2"> <h2 id="plugins">Plugins</h2> <a class="heading-anchor" href="#plugins" aria-labelledby="plugins"><span hidden="">#</span></a></div> <ul> <li>Eleventy's official <a href="https://www.11ty.dev/docs/plugins/rss/">RSS</a> plugin</li> <li>Eleventy's official <a href="https://www.11ty.dev/docs/plugins/navigation/">Navigation</a> plugin</li> <li>Eleventy's official <a href="https://www.11ty.dev/docs/plugins/syntaxhighlight/">Syntax Highlighting</a> plugin</li> <li>Eleventy's official <a href="https://www.11ty.dev/docs/plugins/fetch/">Fetch</a> plugin</li> <li><a href="https://www.npmjs.com/package/@zachleat/details-utils">@zachleat/details-utils</a></li> </ul> <div class="heading-wrapper h3"> <h3 id="eleventy-community-plugins">Eleventy Community Plugins</h3> <a class="heading-anchor" href="#eleventy-community-plugins" aria-labelledby="eleventy-community-plugins"><span hidden="">#</span></a></div> <ul> <li><a href="https://www.npmjs.com/package/eleventy-plugin-wordcount-extended">eleventy-plugin-wordcount-extended</a></li> <li><a href="https://www.npmjs.com/package/eleventy-plugin-embed-everything">eleventy-plugin-embed-everything</a></li> <li><a href="https://www.npmjs.com/package/@uncenter/eleventy-plugin-toc">@uncenter/eleventy-plugin-toc</a></li> </ul> <div class="heading-wrapper h3"> <h3 id="markdown-it-plugins">markdown-it plugins</h3> <a class="heading-anchor" href="#markdown-it-plugins" aria-labelledby="markdown-it-plugins"><span hidden="">#</span></a></div> <p>Eleventy has the Markdown parser <a href="https://www.npmjs.com/package/markdown-it">markdown-it</a> built in to render Markdown to HTML.</p> <ul> <li><a href="https://www.npmjs.com/package/markdown-it-anchor">markdown-it-anchor</a></li> <li><a href="https://www.npmjs.com/package/markdown-it-attribution">markdown-it-attribution</a></li> <li><a href="https://www.npmjs.com/package/markdown-it-attrs">markdown-it-attrs</a></li> <li><a href="https://www.npmjs.com/package/markdown-it-bracketed-spans">markdown-it-bracketed-spans</a></li> <li><a href="https://www.npmjs.com/package/markdown-it-deflist">markdown-it-deflist</a></li> <li><a href="https://www.npmjs.com/package/markdown-it-footnote">markdown-it-footnote</a></li> </ul> <div class="heading-wrapper h2"> <h2 id="self-hosted-resources">Self-hosted Resources</h2> <a class="heading-anchor" href="#self-hosted-resources" aria-labelledby="self-hosted-resources"><span hidden="">#</span></a></div> <ul> <li>Eric Bailey's <a href="https://github.com/ericwbailey/a11y-syntax-highlighting">a11y-syntax-highlighting</a> CSS dark mode stylesheet for Prism.js</li> </ul> <div class="heading-wrapper h3"> <h3 id="fonts">Fonts</h3> <a class="heading-anchor" href="#fonts" aria-labelledby="fonts"><span hidden="">#</span></a></div> <ul> <li><a href="https://www.lexend.com/">Lexend</a> font family — used as the default font of this site. CSS stylesheet and WOFF2 font format generated by <a href="https://gwfh.mranftl.com/fonts">google-webfonts-helper</a>.</li> <li><a href="https://www.intel.com/content/www/us/en/company-overview/one-monospace-font.html">Intel One Mono</a> typeface — used as the monospaced font of this site.</li> </ul> <div class="heading-wrapper h2"> <h2 id="branding">Branding</h2> <a class="heading-anchor" href="#branding" aria-labelledby="branding"><span hidden="">#</span></a></div> <p>I drew the Leilukin bee illustration and made my website's button in Adobe Photoshop CS5.</p> <div class="heading-wrapper h2"> <h2 id="javascript">JavaScript</h2> <a class="heading-anchor" href="#javascript" aria-labelledby="javascript"><span hidden="">#</span></a></div> <p>Due to this website being a static site, JavaScript is used to create dynamic and interactive components of this site. Here is a list of how JavaScript is used on this site:</p> <ul> <li>The header of every page uses JavaScript to detect the visitor's current date, so the header will display a top blurb and in some cases also changes the header background on certain dates, including: <ul> <li>LGBTQ+ events, International Women's Day, Disability Pride Month, website anniversary and my birthday;</li> <li>Release anniversaries of media with dedicated shrines, including: <ul> <li><a href="/shrines/asummersend"><cite>A Summer’s End — Hong Kong 1986</cite></a></li> <li><a href="/shrines/starwarskotor"><cite>Star Wars: Knights of the Old Republic</cite></a></li> <li><a href="/shrines/cassettebeasts"><cite>Cassette Beasts</cite></a></li> <li><a href="/shrines/pokemonoras"><cite>Pokémon Omega Ruby</cite> and <cite>Alpha Sapphire</cite></a></li> </ul> </li> <li>Birthdays of characters from <cite>A Summer’s End — Hong Kong 1986</cite> on its shrine.</li> </ul> </li> <li>Add buttons to copy code snippets to pages with code blocks.</li> <li>Scott O'Hara's <a href="https://github.com/scottaohara/a11y_tooltips">ARIA Tooltips</a> script is used to implement accessible tooltips that meet Web Content Accessibility Guidelines (WCAG) 2.2 success criterion for <a href="https://www.w3.org/WAI/WCAG22/Understanding/content-on-hover-or-focus.html">1.4.13: Content on Hover or Focus (Level AA)</a>, by allowing visitors to see tooltips on keyboard focus and dismiss tooltips by pressing the Escape key.</li> <li>Zach Leatherman's <a href="https://www.npmjs.com/package/@zachleat/details-utils">details-utils</a> JavaScript package is used to automatically expand sidebar table of contents on wide screens.</li> <li><a href="https://status.cafe/">status.cafe</a> widget, which is placed on the home page, uses JavaScript to fetch data of my latest status update.</li> <li><a href="https://www.websitecarbon.com/badge/">Website Carbon Badge</a>, which is placed on the home page, uses JavaScript to calculate the carbon footprint of this website.</li> <li><a href="/links">Links page</a>'s <a href="/links/#joined">Joined tab</a> includes webring widgets that use JavaScript.</li> <li><a href="/guestbook">Guestbook</a> uses JavaScript to render a form, send form data to my private Discord channel via Discord webhook, and fetch data from Google Sheets to display messages on the web page (guestbook code by <a href="https://groundedwren.neocities.org/pages/controls/guestbookDemo">Vera Konigin</a>).</li> </ul> <p>You can still access most of the content of this site with JavaScript disabled, but the above components will not work as intended.</p> <p class="update-info">(This colophon page was last updated on <time datetime="2025-02-17T18:18:21+0800">17 February 2025</time>)</p> </article> </content-wrapper> </main> <footer class="footer"> <p> <svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM0 176L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-208L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"></path></svg> <a rel="nofollow, noindex" href="emailme/">Contact me by email</a> (<a href="https://useplaintext.email/">plain text email</a> encouraged) </p> <h2 class="visually-hidden">Footer Navigation:</h2> <ul class="inline-nav footer__links"> <li> <a href="/feed.xml"><svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"></path></svg>RSS Feed</a> </li> <li><a href="/sitemap/ ">Site Map</a></li><li><a href="/changelogs/">Changelogs</a></li><li><a href="/accessibility/">Accessibility</a></li><li><a aria-current="page" href="/colophon/">Colophon</a></li></ul> <p>Made with ♥ by Leilukin since 11 September 2022</p> <p> <svg class="inline-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M96 64c0-17.7 14.3-32 32-32l320 0 64 0c70.7 0 128 57.3 128 128s-57.3 128-128 128l-32 0c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96L96 64zM480 224l32 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0 0 128zM32 416l512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32z"></path></svg> <a href="https://ko-fi.com/leilukin">Support me on Ko-Fi</a> </p><div class="h-card hidden"> <span class="p-name p-nickname">Leilukin</span> <a href="/" class="u-url">Home page</a> <img src="https://i.postimg.cc/RZJgS6tY/leilukin-bee.avif" alt="Leilukin" class="u-photo" loading="lazy"> <span class="p-country-name">Malaysia</span> <span class="p-note">They/she. A proudly queer and autistic <span class="p-gender-identity">non-binary</span> lesbian from Malaysia.</span> </div><a href="#top" class="top-btn"> <svg class="top-btn__arrow" focusable="false" aria-hidden="true" viewBox="0 0 26 28"> <path d="M25.172 15.172c0 0.531-0.219 1.031-0.578 1.406l-1.172 1.172c-0.375 0.375-0.891 0.594-1.422 0.594s-1.047-0.219-1.406-0.594l-4.594-4.578v11c0 1.125-0.938 1.828-2 1.828h-2c-1.062 0-2-0.703-2-1.828v-11l-4.594 4.578c-0.359 0.375-0.875 0.594-1.406 0.594s-1.047-0.219-1.406-0.594l-1.172-1.172c-0.375-0.375-0.594-0.875-0.594-1.406s0.219-1.047 0.594-1.422l10.172-10.172c0.359-0.375 0.875-0.578 1.406-0.578s1.047 0.203 1.422 0.578l10.172 10.172c0.359 0.375 0.578 0.891 0.578 1.422z"></path> </svg> Back to Top </a> </footer> </body> </html>