Header and footer
Addheader.mdx or footer.mdx next to blog.json, and each replaces the theme’s own. Write plain markup with Tailwind classes. You can paste HTML from your landing page if you change class to className, close empty tags like <img /> and remove <!-- --> comments, because these files are MDX.
header.mdx
Interactive parts like a mobile menu go in a component in
snippets/ that you import as usual. See Your own components. Wrap your content in site-container to give it the same width as the posts below (it follows layout.width). Theme colors are available as these Tailwind classes: bg-background, text-foreground, bg-muted, text-muted-foreground, border-border, bg-card, bg-primary and text-primary.
The header and footer get no data, so write your site name and links into them directly. With your own header, the navbar IDs like #topbar-cta-button don’t exist, so use your own class names. When Notra branding is on, Notra adds a small “Powered by Notra” line under your footer.
Slots
Slots add your own content at fixed places, and each one is a file inslots/:
slots/after-post.mdx
slots/ with any other name stops the build with Unknown slot and the list of valid names.
Your own CSS
For anything the settings and files don’t cover, addstyle.css, which loads after the theme so it can override any style. See Design and CSS.
What isn’t allowed
Header, footer and slots follow the same rules as posts, so imports only come from your repository and Notra doesn’t allow<script> tags. Put JavaScript in script.js instead. See Analytics and scripts.