Menubar
A visually persistent menu common in desktop applications that provides quick access to a consistent set of commands.
Loading preview…
1<script lang="ts">
2 import * as Menubar from './index.js';
3
4 let bookmarks = $state(false);
5 let fullUrls = $state(true);
6 let profileRadioValue = $state('benoit');
7</script>
8
9<Menubar.Root>
10 <Menubar.Menu>
11 <Menubar.Trigger>File</Menubar.Trigger>
12 <Menubar.Content>
13 <Menubar.Item>
14 New Tab <Menubar.Shortcut>⌘T</Menubar.Shortcut>
15 </Menubar.Item>
16 <Menubar.Item>
17 New Window <Menubar.Shortcut>⌘N</Menubar.Shortcut>
18 </Menubar.Item>
19 <Menubar.Item>New Incognito Window</Menubar.Item>
20 <Menubar.Separator />
21 <Menubar.Sub>
22 <Menubar.SubTrigger>Share</Menubar.SubTrigger>
23 <Menubar.SubContent>
24 <Menubar.Item>Email link</Menubar.Item>
25 <Menubar.Item>Messages</Menubar.Item>
26 <Menubar.Item>Notes</Menubar.Item>
27 </Menubar.SubContent>
28 </Menubar.Sub>
29 <Menubar.Separator />
30 <Menubar.Item>
31 Print... <Menubar.Shortcut>⌘P</Menubar.Shortcut>
32 </Menubar.Item>
33 </Menubar.Content>
34 </Menubar.Menu>
35 <Menubar.Menu>
36 <Menubar.Trigger>Edit</Menubar.Trigger>
37 <Menubar.Content>
38 <Menubar.Item>
39 Undo <Menubar.Shortcut>⌘Z</Menubar.Shortcut>
40 </Menubar.Item>
41 <Menubar.Item>
42 Redo <Menubar.Shortcut>⇧⌘Z</Menubar.Shortcut>
43 </Menubar.Item>
44 <Menubar.Separator />
45 <Menubar.Sub>
46 <Menubar.SubTrigger>Find</Menubar.SubTrigger>
47 <Menubar.SubContent>
48 <Menubar.Item>Search the web</Menubar.Item>
49 <Menubar.Separator />
50 <Menubar.Item>Find...</Menubar.Item>
51 <Menubar.Item>Find Next</Menubar.Item>
52 <Menubar.Item>Find Previous</Menubar.Item>
53 </Menubar.SubContent>
54 </Menubar.Sub>
55 <Menubar.Separator />
56 <Menubar.Item>Cut</Menubar.Item>
57 <Menubar.Item>Copy</Menubar.Item>
58 <Menubar.Item>Paste</Menubar.Item>
59 </Menubar.Content>
60 </Menubar.Menu>
61 <Menubar.Menu>
62 <Menubar.Trigger>View</Menubar.Trigger>
63 <Menubar.Content>
64 <Menubar.CheckboxItem bind:checked={bookmarks}>Always Show Bookmarks Bar</Menubar.CheckboxItem
65 >
66 <Menubar.CheckboxItem bind:checked={fullUrls}>Always Show Full URLs</Menubar.CheckboxItem>
67 <Menubar.Separator />
68 <Menubar.Item inset>
69 Reload <Menubar.Shortcut>⌘R</Menubar.Shortcut>
70 </Menubar.Item>
71 <Menubar.Item inset>
72 Force Reload <Menubar.Shortcut>⇧⌘R</Menubar.Shortcut>
73 </Menubar.Item>
74 <Menubar.Separator />
75 <Menubar.Item inset>Toggle Fullscreen</Menubar.Item>
76 <Menubar.Separator />
77 <Menubar.Item inset>Hide Sidebar</Menubar.Item>
78 </Menubar.Content>
79 </Menubar.Menu>
80 <Menubar.Menu>
81 <Menubar.Trigger>Profiles</Menubar.Trigger>
82 <Menubar.Content>
83 <Menubar.RadioGroup bind:value={profileRadioValue}>
84 <Menubar.RadioItem value="andy">Andy</Menubar.RadioItem>
85 <Menubar.RadioItem value="benoit">Benoit</Menubar.RadioItem>
86 <Menubar.RadioItem value="Luis">Luis</Menubar.RadioItem>
87 </Menubar.RadioGroup>
88 <Menubar.Separator />
89 <Menubar.Item inset>Edit...</Menubar.Item>
90 <Menubar.Separator />
91 <Menubar.Item inset>Add Profile...</Menubar.Item>
92 </Menubar.Content>
93 </Menubar.Menu>
94</Menubar.Root>
95Installation
1. Install dependencies
2. Copy these files into your project
- ~/components/menubar/index.ts
- ~/components/menubar/menubar.svelte
- ~/components/menubar/menubar-menu.svelte
- ~/components/menubar/menubar-trigger.svelte
- ~/components/menubar/menubar-portal.svelte
- ~/components/menubar/menubar-content.svelte
- ~/components/menubar/menubar-item.svelte
- ~/components/menubar/menubar-checkbox-item.svelte
- ~/components/menubar/menubar-radio-group.svelte
- ~/components/menubar/menubar-radio-item.svelte
- ~/components/menubar/menubar-label.svelte
- ~/components/menubar/menubar-separator.svelte
- ~/components/menubar/menubar-shortcut.svelte
- ~/components/menubar/menubar-group.svelte
- ~/components/menubar/menubar-group-heading.svelte
- ~/components/menubar/menubar-sub.svelte
- ~/components/menubar/menubar-sub-trigger.svelte
- ~/components/menubar/menubar-sub-content.svelte
Usage
Use menubar for persistent top-level app menus. Compose Menu + Trigger + Content with items,
checkboxes, radios, shortcuts, and nested Sub menus.
1<script lang="ts">
2 import * as Menubar from '~/components/menubar';
3</script>
4
5<Menubar.Root>
6 <Menubar.Menu>
7 <Menubar.Trigger>File</Menubar.Trigger>
8 <Menubar.Content>
9 <Menubar.Item>
10 New Tab
11 <Menubar.Shortcut>⌘T</Menubar.Shortcut>
12 </Menubar.Item>
13 <Menubar.Item>New Window</Menubar.Item>
14 <Menubar.Separator />
15 <Menubar.Item>Share</Menubar.Item>
16 <Menubar.Separator />
17 <Menubar.Item>Print</Menubar.Item>
18 </Menubar.Content>
19 </Menubar.Menu>
20</Menubar.Root>