Skip to content

Menubar

Menu hiển thị liên tục phổ biến trong các ứng dụng desktop, cung cấp quyền truy cập nhanh vào một tập hợp các lệnh nhất quán.

Chỉ dành cho Web

Component này chỉ khả dụng cho các framework web (Vue, React, Angular). Menubar dành cho desktop không phù hợp với nền tảng mobile.

Cài đặt

bash
npx @galaxy-stack/nebula-cli@latest add menubar
bash
pnpm dlx @galaxy-stack/nebula-cli@latest add menubar
bash
yarn dlx @galaxy-stack/nebula-cli@latest add menubar
bash
bunx @galaxy-stack/nebula-cli@latest add menubar

Sử dụng

vue
<script setup lang="ts">
import { Menubar, MenubarMenu, MenubarTrigger, MenubarContent, MenubarItem } from '@/components/ui/menubar'
</script>

<template>
  <Menubar>
    <MenubarMenu>
      <MenubarTrigger>Tệp</MenubarTrigger>
      <MenubarContent>
        <MenubarItem>Mới</MenubarItem>
        <MenubarItem>Mở</MenubarItem>
      </MenubarContent>
    </MenubarMenu>
  </Menubar>
</template>
tsx
import { Menubar, MenubarMenu, MenubarTrigger, MenubarContent, MenubarItem } from "@/components/ui/menubar"

export default function App() {
  return (
    <Menubar>
      <MenubarMenu>
        <MenubarTrigger>Tệp</MenubarTrigger>
        <MenubarContent>
          <MenubarItem>Mới</MenubarItem>
          <MenubarItem>Mở</MenubarItem>
        </MenubarContent>
      </MenubarMenu>
    </Menubar>
  )
}
typescript
import { Component } from '@angular/core';
import { MenubarComponent } from '@/components/ui/menubar';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [MenubarComponent],
  template: `
    <ui-menubar>
      <ui-menubar-menu>
        <ui-menubar-trigger>Tệp</ui-menubar-trigger>
        <ui-menubar-content>
          <ui-menubar-item>Mới</ui-menubar-item>
          <ui-menubar-item>Mở</ui-menubar-item>
        </ui-menubar-content>
      </ui-menubar-menu>
    </ui-menubar>
  `
})
export class AppComponent {}

API Reference

PropTypeDefaultMô tảFrameworks
valuestring-Giá trị menu mở (controlled)Web only
defaultValuestring-Giá trị menu mở ban đầu (uncontrolled)Web only
onValueChange(value: string) => void-Gọi khi giá trị menu mở thay đổiWeb only
dir'ltr' | 'rtl''ltr'Hướng đọc cho điều hướng bàn phímWeb only
loopbooleanfalseLặp focus từ cuối về đầuWeb only
classNamestring''CSS class cho menubar rootWeb only
PropTypeDefaultMô tảFrameworks
valuestring-Giá trị duy nhất liên kết với menuWeb only
PropTypeDefaultMô tảFrameworks
classNamestring''CSS classWeb only
PropTypeDefaultMô tảFrameworks
side'top' | 'right' | 'bottom' | 'left''bottom'Vị trí ưu tiênWeb only
align'start' | 'center' | 'end''start'Căn chỉnhWeb only
classNamestring''CSS classWeb only
PropTypeDefaultMô tảFrameworks
classNamestring''CSS classWeb only
disabledbooleanfalseVô hiệu hóa itemWeb only
PropTypeDefaultMô tảFrameworks
classNamestring''CSS classWeb only
PropTypeDefaultMô tảFrameworks
checkedboolean-Trạng thái checked (controlled)Web only
classNamestring''CSS classWeb only
PropTypeDefaultMô tảFrameworks
valuestring-Giá trị controlledWeb only
onValueChange(value: string) => void-Gọi khi giá trị thay đổiWeb only
PropTypeDefaultMô tảFrameworks
valuestring-Giá trị radio itemWeb only
classNamestring''CSS classWeb only
PropTypeDefaultMô tảFrameworks
openboolean-Trạng thái mở (controlled)Web only
defaultOpenbooleanfalseTrạng thái mở mặc địnhWeb only
onOpenChange(open: boolean) => void-Gọi khi trạng thái mở thay đổiWeb only
PropTypeDefaultMô tảFrameworks
classNamestring''CSS classWeb only
PropTypeDefaultMô tảFrameworks
side'top' | 'right' | 'bottom' | 'left''right'Vị trí ưu tiênWeb only
align'start' | 'center' | 'end''start'Căn chỉnhWeb only
classNamestring''CSS classWeb only
PropTypeDefaultMô tảFrameworks
classNamestring''CSS classWeb only
PropTypeDefaultMô tảFrameworks
classNamestring''CSS classWeb only

Khả năng truy cập

  • Điều hướng bàn phím: [TODO]
  • Đọc màn hình: [TODO]
  • Quản lý focus: [TODO]
  • Tuân thủ WCAG: Tuân thủ WCAG 2.1 cấp độ AA

Tác giả

Bùi Trọng Hiếu (kevinbui)

Giấy phép

MIT © 2025 Bùi Trọng Hiếu (kevinbui)

Phát hành theo Giấy phép MIT.