Skip to content

Toggle

Nút bấm hai trạng thái có thể bật hoặc tắt.

Cài đặt

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

Sử dụng

vue
<script setup lang="ts">
import { Toggle } from '@/components/ui/toggle'
</script>

<template>
  <Toggle>Toggle</Toggle>
</template>
tsx
import { Toggle } from "@/components/ui/toggle"

export default function App() {
  return <Toggle>Toggle</Toggle>
}
typescript
import { Component } from '@angular/core';
import { ToggleComponent } from '@/components/ui/toggle';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [ToggleComponent],
  template: `<ui-toggle>Toggle</ui-toggle>`
})
export class AppComponent {}

API Reference

Props

PropTypeDefaultMô tảFrameworks
pressedboolean-Trạng thái pressed (controlled)All
defaultPressedbooleanfalseTrạng thái pressed ban đầu (uncontrolled)All
onPressedChange(pressed: boolean) => void-Gọi khi trạng thái pressed thay đổiAll
disabledbooleanfalseVô hiệu hóa toggleAll
variant'default' | 'outline''default'Biến thể kiểu hiển thịAll
size'default' | 'sm' | 'lg''default'Biến thể kích thướcAll
asChildbooleanfalseRender như phần tử conReact, Vue, Angular
classNamestring''CSS class bổ sungAll

Ví dụ

Mặc định

vue
<Toggle>Toggle</Toggle>
tsx
<Toggle>Toggle</Toggle>
typescript
<ui-toggle>Toggle</ui-toggle>

Outline

vue
<Toggle variant="outline">Toggle</Toggle>
tsx
<Toggle variant="outline">Toggle</Toggle>
typescript
<ui-toggle variant="outline">Toggle</ui-toggle>

Với text

vue
<script setup lang="ts">
import { Italic } from 'lucide-vue-next'
import { Toggle } from '@/components/ui/toggle'
</script>

<template>
  <Toggle aria-label="Toggle italic">
    <Italic class="mr-2 h-4 w-4" />
    Italic
  </Toggle>
</template>
tsx
import { Italic } from "lucide-react"
import { Toggle } from "@/components/ui/toggle"

export default function App() {
  return (
    <Toggle aria-label="Toggle italic">
      <Italic className="mr-2 h-4 w-4" />
      Italic
    </Toggle>
  )
}
typescript
<ui-toggle aria-label="Toggle italic">
  <i class="icon-italic mr-2"></i>
  Italic
</ui-toggle>

Kích thước

vue
<div class="flex gap-2">
  <Toggle size="sm">Small</Toggle>
  <Toggle size="default">Default</Toggle>
  <Toggle size="lg">Large</Toggle>
</div>
tsx
<div className="flex gap-2">
  <Toggle size="sm">Small</Toggle>
  <Toggle size="default">Default</Toggle>
  <Toggle size="lg">Large</Toggle>
</div>
typescript
<div class="flex gap-2">
  <ui-toggle size="sm">Small</ui-toggle>
  <ui-toggle size="default">Default</ui-toggle>
  <ui-toggle size="lg">Large</ui-toggle>
</div>

Vô hiệu hóa

vue
<Toggle disabled>Disabled</Toggle>
tsx
<Toggle disabled>Disabled</Toggle>
typescript
<ui-toggle [disabled]="true">Disabled</ui-toggle>

Tương tác bàn phím

PhímMô tả
SpaceBật/tắt trạng thái
EnterBật/tắt trạng thái

Khả năng tiếp cận

Tuân thủ WAI-ARIA Toggle Button Pattern.

  • Sử dụng thuộc tính aria-pressed để chỉ ra trạng thái toggle
  • Hỗ trợ điều hướng bằng bàn phím
  • Có thể focus được

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.