Tailwind CSS Integration

This example demonstrates integrating UmbNav with Tailwind CSS for styling navigation menus.

Prerequisites

  • Tailwind CSS installed and configured

  • UmbNav package configured

Basic Tailwind Navigation

Razor Implementation

@using Umbraco.Community.UmbNav.Core.Models
@using Umbraco.Community.UmbNav.Core.Enums

@{
    var home = Model.Root();
    var navigation = home?.Value<IEnumerable<UmbNavItem>>("mainNavigation");
}

<nav class="bg-white shadow-sm">
    <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
        <div class="flex justify-between h-16">
            <!-- Logo -->
            <div class="flex-shrink-0 flex items-center">
                <a href="@home?.Url()">
                    <img class="h-8 w-auto" src="/images/logo.svg" alt="Logo" />
                </a>
            </div>

            <!-- Desktop Navigation -->
            <div class="hidden md:flex md:items-center md:space-x-4">
                @if (navigation != null)
                {
                    foreach (var item in navigation)
                    {
                        @await Html.PartialAsync("_TailwindNavItem", item, new ViewDataDictionary(ViewData) { { "CurrentPage", Model } })
                    }
                }
            </div>

            <!-- Mobile menu button -->
            <div class="flex items-center md:hidden">
                <button type="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-none focus:ring-2 focus:ring-inset focus:ring-indigo-500"
                        aria-controls="mobile-menu"
                        aria-expanded="false"
                        x-data="{ open: false }"
                        @@click="open = !open">
                    <span class="sr-only">Open main menu</span>
                    <svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
                    </svg>
                </button>
            </div>
        </div>
    </div>
</nav>

_TailwindNavItem.cshtml

Tailwind Mobile Menu with Alpine.js

_TailwindMobileNavItem.cshtml

Tailwind Mega Menu

Tailwind Component Classes

Add these custom utilities to your tailwind.config.js:

Last updated

Was this helpful?