treehouse/template/components/_head.hbs
リキ萌 36705e7c1e adding document mode
I've been thinking a lot about the treehouse and I feel like it's time to say goodbye to the tree format.
2025-07-14 19:25:22 +02:00

77 lines
3.5 KiB
Handlebars

<meta charset="UTF-8">
<title>{{#if (ne page.title config.user.title)}}{{ page.title }} · {{/if}}{{ config.user.title }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
@font-face {
font-family: "RecVar";
src: url("{{ asset 'font/Recursive_VF_1.085.woff2' }}");
}
</style>
<link rel="stylesheet" href="{{ asset 'css/base.css' }}">
<link rel="stylesheet" href="{{ asset 'css/main.css' }}">
<link rel="stylesheet" href="{{ asset 'css/icons.css' }}">
{{!--
Import maps currently don't support the src="" attribute. Unless we come up with something
clever to do while browser vendors figure that out, we'll just have to do a cache-busting string substitution.
--}}
<script type="importmap">{{{ import_map }}}</script>
{{#if dev}}
<script type="module">
import "treehouse/dev/live-reload.js";
import "treehouse/dev/picture-upload.js";
</script>
<link rel="stylesheet" href="{{ asset 'css/dev.css' }}">
{{/if}}
<script>
const TREEHOUSE_DEV = {{ dev }};
const TREEHOUSE_SITE = `{{ config.site }}`;
{{!-- Yeah, this should probably be solved in a better way somehow.
For now this is used to allow literate-programming.js to refer to syntax files with the ?v attribute,
so that they don't need to be redownloaded every single time. --}}
const TREEHOUSE_SYNTAX_URLS = {
javascript: `{{{ asset 'syntax/javascript.json' }}}`,
haku: `{{{ asset 'syntax/haku.json' }}}`,
};
</script>
<script type="module" async>
import "treehouse/command-line.js";
import "treehouse/emoji.js";
import "treehouse/overlay.js";
import "treehouse/settings.js";
import "treehouse/spells.js";
import "treehouse/tree.js";
import "treehouse/ulid.js";
import "treehouse/usability.js";
</script>
<meta property="og:site_name" content="{{ config.user.title }}">
<meta property="og:title" content="{{ page.title }}">
{{#if page.thumbnail}}
<meta property="og:image" content="{{ page.thumbnail.url }}">
<meta property="og:image:alt" content="{{ page.thumbnail.alt }}">
{{/if}}
<link rel="icon" sizes="16x16" href="{{ asset (cat (cat 'favicon/' season) '@1x.png') }}">
<link rel="icon" sizes="32x32" href="{{ asset (cat (cat 'favicon/' season) '@2x.png') }}">
<link rel="icon" sizes="64x64" href="{{ asset (cat (cat 'favicon/' season) '@4x.png') }}">
<link rel="icon" sizes="128x128" href="{{ asset (cat (cat 'favicon/' season) '@8x.png') }}">
<link rel="icon" sizes="256x256" href="{{ asset (cat (cat 'favicon/' season) '@16x.png') }}">
<link rel="icon" sizes="512x512" href="{{ asset (cat (cat 'favicon/' season) '@32x.png') }}">
<link rel="apple-touch-icon" sizes="16x16" href="{{ asset (cat (cat 'favicon/' season) '@1x.png') }}">
<link rel="apple-touch-icon" sizes="32x32" href="{{ asset (cat (cat 'favicon/' season) '@2x.png') }}">
<link rel="apple-touch-icon" sizes="64x64" href="{{ asset (cat (cat 'favicon/' season) '@4x.png') }}">
<link rel="apple-touch-icon" sizes="128x128" href="{{ asset (cat (cat 'favicon/' season) '@8x.png') }}">
<link rel="apple-touch-icon" sizes="256x256" href="{{ asset (cat (cat 'favicon/' season) '@16x.png') }}">
<link rel="apple-touch-icon" sizes="512x512" href="{{ asset (cat (cat 'favicon/' season) '@32x.png') }}">
<link rel="canonical" href="{{ config.site }}/{{#if (ne page.tree_path 'index')}}{{ page.tree_path }}{{/if}}">
{{#each feeds as |feed_name|}}
<link rel="alternate" type="application/atom+xml" title="{{ feed_name }}" href="{{ config.site }}/feed/{{ feed_name }}.atom">
{{/each}}