From a0beae19ca6ad3d7e8dbfb4d8b97f8e2a81ad93a Mon Sep 17 00:00:00 2001
From: Foster Hangdaan <foster@hangdaan.email>
Date: Sat, 5 Aug 2023 12:20:31 -0400
Subject: [PATCH] Accept meta and links data in base layout

This allows you to add custom `<meta/>` and `<links/>` tags inside the
document's `<head>`.
---
 _includes/layouts/base.tsx | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/_includes/layouts/base.tsx b/_includes/layouts/base.tsx
index 56b7968..dd3da68 100644
--- a/_includes/layouts/base.tsx
+++ b/_includes/layouts/base.tsx
@@ -1,4 +1,4 @@
-export default function({ title, description, children, comp }) {
+export default function({ title, description, children, comp, metas, links }) {
   return (
     <html lang="en-CA">
       <head>
@@ -10,12 +10,18 @@ export default function({ title, description, children, comp }) {
         <meta name="color-scheme" content="dark light"/>
         <meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1a1b26"/>
         <meta name="theme-color" media="(prefers-color-scheme: light)" content="#d5d6db"/>
+        {Array.isArray(metas) && metas.length > 0 &&
+          metas.map(m => <meta name={m.name} content={m.content}/>)
+        }
         <link rel="stylesheet" href="/styles/main.css"/>
         <link rel="icon" type="image/png" href="/icons/tabicon-16.png" sizes="16x16" />
         <link rel="icon" type="image/png" href="/icons/tabicon-32.png" sizes="32x32" />
         <link rel="icon" type="image/png" href="/icons/tabicon-96.png" sizes="96x96" />
         <link rel="icon" type="image/png" href="/icons/tabicon-128.png" sizes="128x128" />
         <link rel="icon" type="image/png" href="/icons/tabicon-196.png" sizes="196x196" />
+        {Array.isArray(links) && links.length > 0 &&
+          links.map(l => <link rel={l.rel} href={l.href} type={l.type} title={l.title}/>)
+        }
       </head>
       <body>
         { comp.navbar() }