Toolbar
İlişkili kontrollerden (biçimlendirme butonları, görünüm seçenekleri, bir menü) oluşan ve tek bir Tab durağı olan satır; kontroller arasında ok tuşlarıyla geçilir.
import { DropdownMenu, Toolbar, VisuallyHidden } from "@meridui/react";
export function Example() {
const [bold, setBold] = useState(true);
const [italic, setItalic] = useState(false);
return (
<Toolbar.Root aria-label="Metin biçimlendirme">
<Toolbar.Group aria-label="Stil">
<Toolbar.Button aria-pressed={bold} onClick={() => setBold(!bold)}>
<strong aria-hidden="true">K</strong>
<VisuallyHidden>Kalın</VisuallyHidden>
</Toolbar.Button>
<Toolbar.Button aria-pressed={italic} onClick={() => setItalic(!italic)}>
<em aria-hidden="true">İ</em>
<VisuallyHidden>İtalik</VisuallyHidden>
</Toolbar.Button>
<Toolbar.Button disabled>
<s aria-hidden="true">Ü</s>
<VisuallyHidden>Üstü çizili</VisuallyHidden>
</Toolbar.Button>
</Toolbar.Group>
<Toolbar.Separator />
<DropdownMenu.Root>
<DropdownMenu.Trigger asChild>
<Toolbar.Button>Hizala: {align}</Toolbar.Button>
</DropdownMenu.Trigger>
<DropdownMenu.Content>{/* Sola, Ortaya, Sağa */}</DropdownMenu.Content>
</DropdownMenu.Root>
<Toolbar.Separator />
<Toolbar.Link href="/help/formatting">Yardım</Toolbar.Link>
</Toolbar.Root>
);
}Import
import { Toolbar } from "@meridui/react";Anatomi
<Toolbar.Root aria-label="…">
<Toolbar.Group aria-label="…">
<Toolbar.Button />
</Toolbar.Group>
<Toolbar.Separator />
<Toolbar.Link />
</Toolbar.Root>- Root,
role="toolbar"elemanıdır. Ona biraria-labelver. - Button ve Link, ok tuşlarının arasında gezdiği öğelerdir.
asChildile her eleman katılabilir, örneğin birDropdownMenu.Trigger. - Group (
role="group") ve Separator öğeleri düzenler.
Örnekler
Açılıp kapanan butonlar
Bir biçimlendirme düğmesi, aria-pressed taşıyan bir Toolbar.Button'dır; basılı state accent-soft dolgu alır. Yalnızca birinin açık olabildiği bir set için state'i kendi component'inde tut.
Toolbar içinde menüler
Yukarıdaki örnekteki gibi bir Toolbar.Button'ı DropdownMenu.Trigger asChild ile sar. Menü Enter, Space ya da ArrowDown ile açılır; kapanınca focus toolbar'a döner.
API referansı
Root
Tüm <div> attribute'larını kabul eder.
| Prop | Tip | Varsayılan | Açıklama |
|---|---|---|---|
aria-label | string | – | Erişilebilir ad; aria-labelledby vermiyorsan zorunlu. |
orientation | "horizontal" | "vertical" | "horizontal" | Yerleşim ve ok tuşu ekseni. |
loop | boolean | true | Son öğeden ilke döner. |
ref | Ref<HTMLDivElement> | – | İletilen ref. |
Button
Tüm <button> attribute'larını kabul eder.
| Prop | Tip | Varsayılan | Açıklama |
|---|---|---|---|
disabled | boolean | false | aria-disabled atar ve tıklamaları engeller; ok tuşları atlar. |
asChild | boolean | false | <button> yerine tek child elemanı render'lar. |
ref | Ref<HTMLButtonElement> | – | İletilen ref. |
Link, Group, Separator
Link tüm <a> attribute'larını ve asChild'ı kabul eder. Group ve Separator tüm <div> attribute'larını kabul eder; separator'ın aria-orientation'ı toolbar'a dik ayarlanır.
Stil verme
| Sınıf | Eleman |
|---|---|
.mrd-toolbar | Root |
.mrd-toolbar__group | Group |
.mrd-toolbar__button, .mrd-toolbar__link | Button ve Link (asChild değilse) |
.mrd-toolbar__separator | Separator |
| Attribute | Nerede | Değerler |
|---|---|---|
data-orientation | Root | horizontal, vertical |
aria-pressed | Button | true basılı stili alır |
data-disabled | Button | devre dışıyken bulunur |
Erişilebilirlik
Roving tabindex ile WAI-ARIA Toolbar desenini izler: Tab sırasında yalnızca bir öğe bulunur ve toolbar son focus alan öğeyi hatırlar. Sağ ve Sol oklar RTL'de okuma yönünü izler.
| Tuş | Ne yapar |
|---|---|
| Tab | Toolbar'a (son focus alan öğeye) girer ya da çıkar. |
| ArrowRight | Sonraki öğe; sona gelince başa döner (dikeyde ArrowDown). |
| ArrowLeft | Önceki öğe; başa gelince sona döner (dikeyde ArrowUp). |
| Home | İlk öğe. |
| End | Son öğe. |
| EnterSpace | Focus'taki butonu çalıştırır. |
Kullanım ilkeleri
Yap
Aynı şey üzerinde çalışan üç ya da daha fazla ilişkili kontrolü grupla; örneğin bir editördeki metin.
Kaçın
Bir sayfanın birbiriyle ilgisiz butonlarını görünüm için toolbar'a sarmak; her biri kendi Tab durağını kaybeder.
İlgili sayfalar
- DropdownMenu: toolbar içindeki menüler.
- SegmentedControl: birkaç görünüm arasında geçiş.