Chuyển tới nội dung

Pro đang mở bán trước. Cài đặt mở từ tháng 1/2027. Xem Pro

Component

Navbar

Điều hướng trang ở đầu trang: thương hiệu, vài link và các hành động ở cuối hàng. Dưới md, các link chuyển vào một menu trượt vào từ cạnh bên. Chỉ có link: menu ứng dụng chứa lệnh là DropdownMenu, và ứng dụng có nhiều phần dùng Sidebar.

  • npm: 2 trực tiếp, 5 tổng
  • registry: 4 trực tiếp, 5 tổng

Xem trước

Props

  • label
  • menuLabel
  • sticky
  • icons
  • actions
import { Button } from "@/components/ui/button"
import { Navbar, NavbarActions, NavbarBrand, NavbarLink, NavbarLinks } from "@/components/ui/navbar"

<Navbar menuLabel="Trình đơn" label="Chính" className="w-full">
  <NavbarBrand href="#home">Acme</NavbarBrand>
  <NavbarLinks>
    <NavbarLink href="#overview" active>Tổng quan</NavbarLink>
    <NavbarLink href="#customers">Khách hàng</NavbarLink>
    <NavbarLink href="#reports">Báo cáo</NavbarLink>
  </NavbarLinks>
  <NavbarActions>
    <Button variant="ghost">Đăng nhập</Button>
    <Button>Bắt đầu</Button>
  </NavbarActions>
</Navbar>

Cách dùng

Khi nào dùng

  • Dẫn tới vài trang cấp cao nhất của một website hoặc ứng dụng nhỏ từ đầu mọi trang.
  • Giữ thương hiệu, các link chính và một hành động đăng nhập hoặc đăng ký trong một hàng.

Khi nào không dùng

  • Một ứng dụng có nhiều phần hoặc trang lồng nhau. Dùng Sidebar.
  • Điều hướng cấp cao nhất trên ứng dụng ưu tiên điện thoại. Dùng BottomNav.
  • Một menu các lệnh. Dùng DropdownMenu.

Ví dụ

Header của trang

import { Button } from "@/components/ui/button"
import { Navbar, NavbarActions, NavbarBrand, NavbarLink, NavbarLinks } from "@/components/ui/navbar"

<Navbar label="Chính" className="w-full">
  <NavbarBrand href="#home">Acme</NavbarBrand>
  <NavbarLinks>
    <NavbarLink href="#overview" active>Tổng quan</NavbarLink>
    <NavbarLink href="#customers">Khách hàng</NavbarLink>
    <NavbarLink href="#reports">Báo cáo</NavbarLink>
  </NavbarLinks>
  <NavbarActions>
    <Button variant="ghost">Đăng nhập</Button>
    <Button>Bắt đầu</Button>
  </NavbarActions>
</Navbar>

Icon đứng trước văn bản, 16px, và dùng màu accent ở trang hiện tại.

import { IconHome, IconInbox, IconSettings } from "@tabler/icons-react"
import { Navbar, NavbarBrand, NavbarLink, NavbarLinks } from "@/components/ui/navbar"

<Navbar label="Chính" className="w-full">
  <NavbarBrand href="#home">Acme</NavbarBrand>
  <NavbarLinks>
    <NavbarLink href="#home" active>
      <IconHome size={16} />
      Trang chủ
    </NavbarLink>
    <NavbarLink href="#inbox">
      <IconInbox size={16} />
      Hộp thư đến
    </NavbarLink>
    <NavbarLink href="#settings">
      <IconSettings size={16} />
      Cài đặt
    </NavbarLink>
  </NavbarLinks>
</Navbar>

Nên và không nên

Nên

  • Giữ tối đa năm link, mỗi link một hoặc hai từ.
  • Đánh dấu trang hiện tại bằng active, lấy từ router.
  • Dùng sticky trên trang dài, để các link luôn trong tầm với.

Không nên

  • Đừng đặt lệnh (Lưu, Xóa) vào các link; link dẫn tới một nơi.
  • Đừng dùng cả Navbar và Sidebar cho cùng các link.
  • Đừng lồng menu trong các link; một trang có nhiều phần sâu cần Sidebar.

Props

TênKiểuGiá trịMặc địnhMô tả
label bắt buộcstring--Đặt trên Navbar. Tên của landmark điều hướng, như Chính.
menuLabelstring-MenuĐặt trên Navbar. Tên của button menu dưới md, và tiêu đề của menu nó mở.
stickyboolean-falseĐặt trên Navbar. Dính ở đầu trang khi cuộn, trên một thanh kính mỏng, vẫn giữ đường kẻ bên dưới.
activeboolean-falseĐặt trên NavbarLink. Đánh dấu trang hiện tại: aria-current="page" và nền accent nhạt.
asChildboolean-falseĐặt trên NavbarLink hoặc NavbarBrand. Áp dụng giao diện và hành vi link lên child duy nhất của nó, như một link của router.
hrefstring--Đặt trên NavbarLink hoặc NavbarBrand. Nơi link dẫn tới.

Slot

TênBắt buộcMô tả
brandkhôngChildren của NavbarBrand: logo, tên hoặc cả hai.
linkskhôngChildren của NavbarLinks: các item NavbarLink, viết một lần cho cả hàng và menu.
actionskhôngChildren của NavbarActions: một hoặc hai Button.

Cấu tạo

PhầnMô tả
rootnav: một hàng, có đường kẻ bên dưới.
brandLink về trang chủ: logo, tên hoặc cả hai.
listul chứa các link. Từ md trở lên nằm sau thương hiệu; dưới md chuyển vào menu thành một cột.
linkMột link: văn bản và một icon 16px tùy chọn, trang hiện tại trên nền accent nhạt.
iconIcon tùy chọn trong một link.
menuButtonButton icon ghost mở menu dưới md.
actionsCác button ở cuối hàng, như Đăng nhập.

Khả năng truy cập

Role: navigation

PhímHành động
TabChuyển qua thương hiệu, các link (hoặc button menu dưới md) và các hành động.
EnterĐi theo link đang focus, hoặc mở menu từ button menu.
EscapeĐóng menu và trả focus về button menu.
  • Một landmark điều hướng được đặt tên bằng label, như EN `Main`. Đặt tên khác với mọi nav khác trên trang.
  • Các link là một danh sách. Link của trang hiện tại có aria-current="page" và đặt data-current.
  • Dưới md, button menu được đặt tên bằng menuLabel (EN `Menu`, VI `Trình đơn`). Menu là một dialog có tiêu đề bằng cùng văn bản, giữ focus bên trong khi mở.
  • Đi theo một link từ menu sẽ đóng menu.

Cài đặt

npx werewolf-ui add navbar

Chạy npx werewolf-ui init một lần trong app trước khi thêm component. Init cài token, thêm CSS import và luật cho agent. Add cài component này cùng các dependency và giữ nguyên theme của bạn. Xem Cài đặt để biết yêu cầu và cách cài qua registry.