109 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!doctype html>
 | |
| 
 | |
| {% if title %}
 | |
|   {% set pagetitle = title %}
 | |
| {% else %}
 | |
|   {% set pagetitle = page.fileSlug %}
 | |
| {% endif %}
 | |
| 
 | |
| <html>
 | |
| <head>
 | |
|   <title>Portfolio - {{ pagetitle | capitalize }}</title>
 | |
|   <meta charset="UTF-8">
 | |
|   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | |
| 
 | |
|   <meta property="og:title" content="Portfolio - {{ pagetitle | capitalize }}" />
 | |
|   <meta property="og:description" content="{{ description }}" />
 | |
| 
 | |
|   <link href="/styles.css" rel="stylesheet">
 | |
|   <link href="https://unpkg.com/prismjs@1.20.0/themes/prism-okaidia.css" rel="stylesheet">
 | |
| 
 | |
|   <link rel="apple-touch-icon" sizes="180x180" href="/img/site/favicons/apple-touch-icon.png">
 | |
|   <link rel="icon" type="image/png" sizes="32x32" href="/img/site/favicons/favicon-32x32.png">
 | |
|   <link rel="icon" type="image/png" sizes="16x16" href="/img/site/favicons/favicon-16x16.png">
 | |
|   <link rel="manifest" href="/img/site/favicons/site.webmanifest">
 | |
| 
 | |
|   <script defer data-domain="gaiety.me" src="https://plausible.io/js/script.js"></script>
 | |
| 
 | |
|   <script>
 | |
|     let isOpen = false;
 | |
|     function mobileToggle() {
 | |
|       isOpen = !isOpen;
 | |
| 
 | |
|       document.getElementById('mobileToggleButton').setAttribute('aria-expanded', isOpen);
 | |
|       document.getElementById('mobileToggleText').innerText = `${isOpen ? 'Close' : 'Open'} Navigation`;
 | |
|       document.getElementById('mobileToggleIconOpened').classList.add('block');
 | |
|       document.getElementById('mobileToggleIconOpened').classList.remove('hidden');
 | |
|       document.getElementById('mobileToggleIconClosed').classList.add('hidden');
 | |
|       document.getElementById('mobileToggleIconClosed').classList.remove('block');
 | |
|       document.getElementById('mobileNavigation').classList.add(isOpen ? 'block' : 'hidden');
 | |
|       document.getElementById('mobileNavigation').classList.remove(isOpen ? 'hidden' : 'block');
 | |
|     }
 | |
|   </script>
 | |
| </head>
 | |
| 
 | |
| <body class="bg-gray-100">
 | |
|   <header>
 | |
|     <nav class="bg-white shadow">
 | |
|       <div class="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8">
 | |
|         <div class="relative flex justify-between h-16">
 | |
|           <div class="absolute inset-y-0 left-0 flex justify-between w-full sm:hidden">
 | |
|             <button
 | |
|               class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-link"
 | |
|               aria-expanded="false"
 | |
|               onclick="mobileToggle()"
 | |
|               id="mobileToggleButton">
 | |
|               <span id="mobileToggleText" class="sr-only">Open navigation</span>
 | |
|               <svg id="mobileToggleIconClosed" class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
 | |
|                 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
 | |
|               </svg>
 | |
|               <svg id="mobileToggleIconOpened" class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
 | |
|                 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
 | |
|               </svg>
 | |
|             </button>
 | |
|             <a
 | |
|               href="/"
 | |
|               class="focus:outline-link"
 | |
|               {% if page.url == navItem.url %}aria-current="page"{% endif %}
 | |
|             >
 | |
|               <img class="h-12 w-12 mt-2 rounded-full" src="/img/site/avatar.gif" alt="Home">
 | |
|             </a>
 | |
|           </div>
 | |
|           <div class="flex-1 flex justify-between sm:items-stretch sm:justify-start">
 | |
|             <div class="hidden sm:flex sm:space-x-8">
 | |
|               <a
 | |
|                 href="/"
 | |
|                 class="focus:outline-link"
 | |
|                 {% if page.url == navItem.url %}aria-current="page"{% endif %}
 | |
|               >
 | |
|                 <img class="h-12 w-12 mt-2 rounded-full" src="/img/site/avatar.gif" alt="Home">
 | |
|               </a>
 | |
|               {%- for navItem in navigation -%}
 | |
|                 <a
 | |
|                   href="{{navItem.url}}"
 | |
|                   class="{% if page.url == navItem.url %}border-pink-700 text-gray-900{% else %}border-transparent hover:border-pink-700 text-gray-500{% endif %} inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium focus:outline-link"
 | |
|                   {% if page.url == navItem.url %}aria-current="page"{% endif %}
 | |
|                 >
 | |
|                   {{navItem.title}}
 | |
|                 </a>
 | |
|               {%- endfor -%}
 | |
|             </div>
 | |
|           </div>
 | |
|         </div>
 | |
|       </div>
 | |
| 
 | |
|       <div id="mobileNavigation" class="hidden sm:hidden">
 | |
|         <div class="pt-2 pb-4 space-y-1">
 | |
|           {%- for navItem in navigation -%}
 | |
|             <a
 | |
|               href="{{navItem.url}}"
 | |
|               class="{% if page.url == navItem.url %}border-pink-700 bg-pink-50 text-pink-700{% else %}border-transparent hover:border-pink-700 text-gray-500{% endif %} block pl-3 pr-4 py-2 border-l-4 text-base font-medium focus:outline-link"
 | |
|               {% if page.url == navItem.url %}aria-current="page"{% endif %}
 | |
|             >
 | |
|               {{navItem.title}}
 | |
|             </a>
 | |
|           {%- endfor -%}
 | |
|         </div>
 | |
|       </div>
 | |
|     </nav>
 | |
|   </header>
 | 
