flowbite-svelte-son
Version:
Flowbite components for Svelte
350 lines (295 loc) • 12.5 kB
Markdown
---
layout: componentLayout
title: Svelte Navbar - Flowbite
breadcrumb_title: Navbar
dir: Components
description: The navbar component can be used to show a list of navigation links positioned on the top side of your page based on multiple layouts, sizes, and dropdowns
---
<MetaTag {breadcrumb_title} {title} {dir} {description}/>
<script>
import { Htwo, ExampleDiv, GitHubSource, CompoDescription, TableProp, TableDefaultRow, MetaTag } from '../utils'
import { Badge, Breadcrumb, BreadcrumbItem, Heading, P, A } from '$lib';
// Props table
import { props as items } from '../props/Navbar.json'
import { props as items2 } from '../props/NavBrand.json'
import { props as items3 } from '../props/NavLi.json'
import { props as items4 } from '../props/NavUl.json'
let propHeader = ['Name', 'Type', 'Default']
let divClass='w-full relative overflow-x-auto shadow-md sm:rounded-lg py-4'
let theadClass ='text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-white'
</script>
<Breadcrumb class="pt-16 py-8">
<BreadcrumbItem href="/" home >Home</BreadcrumbItem>
<BreadcrumbItem>{dir}</BreadcrumbItem>
<BreadcrumbItem>{breadcrumb_title}</BreadcrumbItem>
</Breadcrumb>
<Heading class="mb-2" tag="h1" customSize="text-3xl">{title}</Heading>
<CompoDescription>{description}</CompoDescription>
<ExampleDiv>
<GitHubSource href="navbar/Navbar.svelte">Navbar</GitHubSource>
<GitHubSource href="navbar/NavBrand.svelte">NavBrand</GitHubSource>
<GitHubSource href="navbar/NavLi.svelte">NavLi</GitHubSource>
<GitHubSource href="navbar/NavUl.svelte">NavUl</GitHubSource>
<GitHubSource href="navbar/NavHamburger.svelte">NavHamburger</GitHubSource>
</ExampleDiv>
Get started with the responsive navbar component from Flowbite to quickly set up a navigation menu for your website and set up the logo, list of pages, CTA button, search input, user profile options with a dropdown, and more.
<Htwo label="Setup" />
```html
<script>
import { Navbar, NavBrand, NavLi, NavUl, NavHamburger } from 'flowbite-svelte'
</script>
```
<Htwo label="Default navbar" />
Use this example of a navigation bar built with the utility classes from Tailwind CSS to enable users to navigate across the pages of your website.
```svelte example hideScript
<script>
import { Navbar, NavBrand, NavLi, NavUl, NavHamburger } from 'flowbite-svelte'
</script>
<Navbar let:hidden let:toggle>
<NavBrand href="/">
<img
src="https://flowbite.com/docs/images/logo.svg"
class="mr-3 h-6 sm:h-9"
alt="Flowbite Logo"
/>
<span class="self-center whitespace-nowrap text-xl font-semibold dark:text-white">
Flowbite
</span>
</NavBrand>
<NavHamburger on:click={toggle} />
<NavUl {hidden}>
<NavLi href="/" active={true}>Home</NavLi>
<NavLi href="/about">About</NavLi>
<NavLi href="/services">Services</NavLi>
<NavLi href="/pricing">Pricing</NavLi>
<NavLi href="/contact">Contact</NavLi>
</NavUl>
</Navbar>
```
<Htwo label="Navbar with dropdown" />
This example can be used to show a secondary dropdown menu when clicking on one of the navigation links.
```svelte example class="h-80"
<script>
import { Navbar, NavBrand, NavLi, NavUl, NavHamburger, Dropdown, DropdownItem, Chevron, DropdownDivider } from 'flowbite-svelte'
</script>
<Navbar let:hidden let:toggle>
<NavBrand href="/">
<img
src="https://flowbite.com/docs/images/logo.svg"
class="mr-3 h-6 sm:h-9"
alt="Flowbite Logo"
/>
<span class="self-center whitespace-nowrap text-xl font-semibold dark:text-white">
Flowbite
</span>
</NavBrand>
<NavHamburger on:click={toggle} />
<NavUl {hidden}>
<NavLi href="/" active={true}>Home</NavLi>
<NavLi id="nav-menu1" class="cursor-pointer"><Chevron aligned>Dropdown</Chevron></NavLi>
<NavLi href="/services">Services</NavLi>
<NavLi href="/pricing">Pricing</NavLi>
<NavLi href="/contact">Contact</NavLi>
<Dropdown triggeredBy="#nav-menu1" class="w-44 z-20">
<DropdownItem>Dashboard</DropdownItem>
<DropdownItem>Settings</DropdownItem>
<DropdownItem>Earnings</DropdownItem>
<DropdownDivider />
<DropdownItem>Sign out</DropdownItem>
</Dropdown>
</NavUl>
</Navbar>
```
<Htwo label="Navbar with search" />
Use this example of a navbar element to also show a search input element that you can integrate for a site-wide search.
```svelte example class="h-80"
<script>
import { Navbar, NavBrand, NavLi, NavUl, NavHamburger, Button, Input } from 'flowbite-svelte'
</script>
<Navbar let:hidden let:toggle>
<NavBrand href="/">
<img
src="https://flowbite.com/docs/images/logo.svg"
class="mr-3 h-6 sm:h-9"
alt="Flowbite Logo"
/>
<span class="self-center whitespace-nowrap text-xl font-semibold dark:text-white">
Flowbite
</span>
</NavBrand>
<div class="flex md:order-2">
<Button color="none" data-collapse-toggle="mobile-menu-3" aria-controls="mobile-menu-3" aria-expanded="false" class="md:hidden text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 mr-1" >
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 dark:text-white"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z" /></svg>
</Button>
<div class="hidden relative md:block">
<div class="flex absolute inset-y-0 left-0 items-center pl-3 pointer-events-none">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 dark:text-white"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z" /></svg>
</div>
<Input id="search-navbar" class="pl-10" placeholder="Search..." />
</div>
<NavHamburger on:click={toggle} />
</div>
<NavUl {hidden}>
<NavLi href="/" active={true}>Home</NavLi>
<NavLi href="/about">About</NavLi>
<NavLi href="/services">Services</NavLi>
</NavUl>
</Navbar>
```
<Htwo label="Navbar with CTA button" />
Use the following navbar element to show a call to action button alongside the logo and page links.
```svelte example class="h-80 md:h-64"
<script>
import { Navbar, NavBrand, NavLi, NavUl, NavHamburger, Button, Input } from 'flowbite-svelte'
</script>
<Navbar let:hidden let:toggle>
<NavBrand href="/">
<img
src="https://flowbite.com/docs/images/logo.svg"
class="mr-3 h-6 sm:h-9"
alt="Flowbite Logo"
/>
<span class="self-center whitespace-nowrap text-xl font-semibold dark:text-white">
Flowbite
</span>
</NavBrand>
<div class="flex md:order-2">
<Button size="sm">Get started</Button>
<NavHamburger on:click={toggle} />
</div>
<NavUl {hidden} class="order-1">
<NavLi href="/" active={true}>Home</NavLi>
<NavLi href="/about">About</NavLi>
<NavLi href="/services">Services</NavLi>
<NavLi href="/pricing">Pricing</NavLi>
<NavLi href="/contact">Contact</NavLi>
</NavUl>
</Navbar>
```
<Htwo label="Sticky navbar" />
Use this example to keep the navbar positioned fixed to the top side as you scroll down the document page.
```svelte example class="h-80"
<script>
import { Navbar, NavBrand, NavLi, NavUl, NavHamburger, ImagePlaceholder, Skeleton, TextPlaceholder } from 'flowbite-svelte'
</script>
<div class="relative px-8">
<Navbar
navClass="px-2 sm:px-4 py-2.5 absolute w-full z-20 top-0 left-0 border-b"
let:hidden
let:toggle
>
<NavBrand href="/">
<img src="https://flowbite.com/docs/images/logo.svg" class="mr-3 h-6 sm:h-9" alt="Flowbite Logo"/>
<span class="self-center whitespace-nowrap text-xl font-semibold dark:text-white">Flowbite</span>
</NavBrand>
<NavHamburger on:click={toggle} />
<NavUl {hidden}>
<NavLi href="/" active={true}>Home</NavLi>
<NavLi href="/about">About</NavLi>
<NavLi href="/services">Services</NavLi>
<NavLi href="/pricing">Pricing</NavLi>
<NavLi href="/contact">Contact</NavLi>
</NavUl>
</Navbar>
<div style="height:300px;" class="overflow-scroll pb-16">
<Skeleton class="mt-16 mb-8" />
<ImagePlaceholder class="my-8" />
<TextPlaceholder class="my-8" />
</div>
</div>
```
<Htwo label="User menu dropdown" />
Use this example to create a navigation bar with a user profile or button to toggle a dropdown menu.
```svelte example class="h-80"
<script>
import { Navbar, NavBrand, NavLi, NavUl, NavHamburger, Avatar, Dropdown, DropdownItem, DropdownHeader, DropdownDivider } from 'flowbite-svelte'
</script>
<Navbar let:hidden let:toggle>
<NavBrand href="/">
<img src="https://flowbite.com/docs/images/logo.svg" class="mr-3 h-6 sm:h-9" alt="Flowbite Logo"/>
<span class="self-center whitespace-nowrap text-xl font-semibold dark:text-white">Flowbite</span>
</NavBrand>
<div class="flex items-center md:order-2">
<Avatar id="avatar-menu" src="/images/profile-picture-3.webp" />
<NavHamburger on:click={toggle} class1="w-full md:flex md:w-auto md:order-1"/>
</div>
<Dropdown placement="bottom" triggeredBy="#avatar-menu">
<DropdownHeader>
<span class="block text-sm"> Bonnie Green </span>
<span class="block truncate text-sm font-medium"> name@flowbite.com </span>
</DropdownHeader>
<DropdownItem>Dashboard</DropdownItem>
<DropdownItem>Settings</DropdownItem>
<DropdownItem>Earnings</DropdownItem>
<DropdownDivider />
<DropdownItem>Sign out</DropdownItem>
</Dropdown>
<NavUl {hidden}>
<NavLi href="/" active={true}>Home</NavLi>
<NavLi href="/about">About</NavLi>
<NavLi href="/services">Services</NavLi>
<NavLi href="/pricing">Pricing</NavLi>
<NavLi href="/contact">Contact</NavLi>
</NavUl>
</Navbar>
```
<Htwo label="Solid background" />
Use this example to show a solid background for the navbar component instead of being transparent.
```svelte example
<script>
import { Navbar, NavBrand, NavLi, NavUl, NavHamburger } from 'flowbite-svelte'
</script>
<Navbar let:hidden let:toggle rounded color="form">
<NavBrand href="/">
<img src="https://flowbite.com/docs/images/logo.svg" class="mr-3 h-6 sm:h-9" alt="Flowbite Logo"/>
<span class="self-center whitespace-nowrap text-xl font-semibold dark:text-white">Flowbite</span>
</NavBrand>
<NavHamburger on:click={toggle} />
<NavUl {hidden}>
<NavLi href="/" active={true}>Home</NavLi>
<NavLi href="/about">About</NavLi>
<NavLi href="/services">Services</NavLi>
<NavLi href="/pricing">Pricing</NavLi>
<NavLi href="/contact">Contact</NavLi>
</NavUl>
</Navbar>
```
<Htwo label="Props" />
<p>The component has the following props, type, and default values. See <A href="/pages/types">types
page</A> for type information.</p>
<h3 class='text-xl w-full dark:text-white py-4'>Navbar</h3>
<TableProp header={propHeader} {divClass} {theadClass}>
<TableDefaultRow {items} rowState='hover' />
</TableProp>
<h3 class='text-xl w-full dark:text-white py-4'>NavBrand</h3>
<TableProp header={propHeader} {divClass} {theadClass}>
<TableDefaultRow items={items2} rowState='hover' />
</TableProp>
<h3 class='text-xl w-full dark:text-white py-4'>NavLi</h3>
<TableProp header={propHeader} {divClass} {theadClass}>
<TableDefaultRow items={items3} rowState='hover' />
</TableProp>
<h3 class='text-xl w-full dark:text-white py-4'>NavUl</h3>
<TableProp header={propHeader} {divClass} {theadClass}>
<TableDefaultRow items={items4} rowState='hover' />
</TableProp>
<Htwo label="Forwarded Events" />
<Heading tag="h3" customSize="text-xl font-semibold" class="mb-4">NavLi</Heading>
<div class="flex flex-wrap gap-2">
<Badge large={true}>on:blur</Badge>
<Badge large={true}>on:change</Badge>
<Badge large={true}>on:click</Badge>
<Badge large={true}>on:focus</Badge>
<Badge large={true}>on:keydown</Badge>
<Badge large={true}>on:keypress</Badge>
<Badge large={true}>on:keyup</Badge>
<Badge large={true}>on:mouseenter</Badge>
<Badge large={true}>on:mouseleave</Badge>
<Badge large={true}>on:mouseover</Badge>
</div>
<Htwo label="References" />
<P>
<A href="https://flowbite.com/docs/components/navbar/" target="_blank" rel="noreferrer" class="link"
>Flowbite Navbar</A
>
</P>