Earlier we lightly discussed something called a partial, or reusable piece of code that can be imported in other files.

Let’s put that into practice by creating a new navbar for us to use in our layouts. Inside of our components file, let’s create a new file named narvbar.njk

In that file we’re going to create and set a variable navLinks so we can maintain an easy to find collection of our links names and paths, to loop over and spit out some UI.

{% 
  set linkList = [
    {'text': 'Home','url': '/'},
    {'text': 'Events','url': '/events/'}
  ] 
%}

<nav class="h-10 w-full">
  <ul class="flex p-7 gap-4 under items-center w-full h-full bg-neutral-800 text-gray-300 ">
    {% for link in linkList  %}
      <li class="hover:text-purple-600">
        <a class="{{ 'underline underline-offset-2' if link.url === page.url }}" href="{{ link.url }}">{{ link.text }}</a>
      </li>  
    {% endfor %}
  </ul>
</nav>

From there, all that’s left is for us to make sure it’s included inside of all our pages by moving it to our layout.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="/styles.css" />

  <title>{{ title }}</title>
</head>
<body class="w-screen h-screen bg-slate-400 flex flex-col text-gray-800 align-center justify-center">  
  <div class="flex flex-col w-screen h-screen">
    
    {% include "components/navbar.njk" %} 
    
    <main>
      {{ content | safe }}
    </main>
  </div>
</body>
</html>

Creating our base layout + setting up Tailwind

Use global data files in 11ty to fetch scheduled events from Discord