Home
Components
Menu
A semantic, accessible menu component built with native HTML and Tailwind CSS. Create navigation lists, sidebar menus, and dropdown options with consistent spacing and hover states. Supports icons, active states, and nested submenus for complete, zero-JavaScript navigation systems.
Menu components display organized lists of actions or navigation options. Built with semantic HTML lists and link elements, the Frutjam menu system supports vertical and horizontal layouts, nested menus, icons, and active states. Fully accessible with keyboard navigation, menus integrate seamlessly with dropdowns, sidebars, and contextual navigation patterns.
Class
Type
Description
menu Base Vertical list of navigation or action items
menu-item Modifier Individual clickable item inside the menu
menu-title Modifier Non-interactive section label
menu-horizontal Modifier Horizontal layout
menu-vertical Modifier Vertical layout (default)
menu-active Modifier Forces the active/highlighted state on an item
menu-disabled Modifier Disabled appearance for a menu item
menu-xs Size Extra small
menu-sm Size Small
menu-md Size Medium (default)
menu-lg Size Large
menu-xl Size Extra large
Basic Usage
< ul class = "menu menu-horizontal" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >< a class = "menu-item" > Item 2</ a ></ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
View Code
< ul class = "menu menu-vertical" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >< a class = "menu-item" > Item 2</ a ></ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
View Code
Menu with icon and text
< ul class = "menu menu-vertical lg:menu-horizontal" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >< a class = "menu-item" > Item 2</ a ></ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
View Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 < ul class = "menu menu-xs w-56" >
< li >< a class = "menu-item" > Xsmall 1</ a ></ li >
< li >< a class = "menu-item" > Xsmall 2</ a ></ li >
</ ul >
< ul class = "menu menu-sm w-56" >
< li >< a class = "menu-item" > Small 1</ a ></ li >
< li >< a class = "menu-item" > Small 2</ a ></ li >
</ ul >
< ul class = "menu menu-md w-56" >
< li >< a class = "menu-item" > Medium 1</ a ></ li >
< li >< a class = "menu-item" > Medium 2</ a ></ li >
</ ul >
< ul class = "menu menu-lg w-56" >
< li >< a class = "menu-item" > Large 1</ a ></ li >
< li >< a class = "menu-item" > Large 2</ a ></ li >
</ ul >
< ul class = "menu menu-xl w-56" >
< li >< a class = "menu-item" > Xlarge 1</ a ></ li >
< li >< a class = "menu-item" > Xlarge 2</ a ></ li >
</ ul >
View Code
< ul class = "menu w-56" >
< li class = "menu-title" > Title</ li >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >< a class = "menu-item" > Item 2</ a ></ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
View Code
< ul class = "menu w-56" >
< li >
< h2 class = "menu-title" > Title</ h2 >
< ul >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >< a class = "menu-item" > Item 2</ a ></ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
</ li >
</ ul >
View Code
< ul class = "menu w-56" >
< li >< a class = "menu-item" > Enabled item</ a ></ li >
< li class = "menu-disabled" >< button disabled class = "menu-item" > disabled item</ button ></ li >
< li class = "menu-disabled" >< a class = "menu-item" aria-disabled = "true" > disabled item</ a ></ li >
</ ul >
View Code
< ul class = "menu" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >< a class = "menu-item menu-active" > Item 2</ a ></ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
View Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 < ul class = "menu w-56" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >
< a class = "menu-item" > Parent</ a >
< ul >
< li >< a class = "menu-item" > Submenu 1</ a ></ li >
< li >< a class = "menu-item" > Submenu 2</ a ></ li >
< li >
< a class = "menu-item" > Parent</ a >
< ul >
< li >< a class = "menu-item" > Submenu 1</ a ></ li >
< li >< a class = "menu-item" > Submenu 2</ a ></ li >
</ ul >
</ li >
</ ul >
</ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
View Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 < ul class = "menu w-56" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >
< div class = "accordion accordion-flush" >
< details open >
< summary > Parent</ summary >
< div class = "accordion-content" >
< ul >
< li >< a class = "menu-item" > Submenu 1</ a ></ li >
< li >< a class = "menu-item" > Submenu 2</ a ></ li >
< li >
< div class = "accordion accordion-flush" >
< details open >
< summary > Parent</ summary >
< div class = "accordion-content" >
< ul >
< li >< a class = "menu-item menu-active" > Submenu 1</ a ></ li >
< li >< a class = "menu-item" > Submenu 2</ a ></ li >
</ ul >
</ div >
</ details >
</ div >
</ li >
</ ul >
</ div >
</ details >
</ div >
</ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
View Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 < ul class = "menu" >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" >
</ path >
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "m21 21-4.34-4.34" />
< circle cx = "11" cy = "11" r = "8" />
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< circle cx = "12" cy = "8" r = "5" />
< path d = "M20 21a8 8 0 0 0-16 0" />
</ svg >
</ a >
</ li >
</ ul >
View Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 < ul class = "menu menu-horizontal" >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" >
</ path >
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "m21 21-4.34-4.34" />
< circle cx = "11" cy = "11" r = "8" />
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< circle cx = "12" cy = "8" r = "5" />
< path d = "M20 21a8 8 0 0 0-16 0" />
</ svg >
</ a >
</ li >
</ ul >
View Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 < ul class = "menu" >
< li >
< a class = "menu-item tooltip tooltip-end" data-tip = "Home" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" >
</ path >
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item tooltip tooltip-end" data-tip = "Search" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "m21 21-4.34-4.34" />
< circle cx = "11" cy = "11" r = "8" />
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item tooltip tooltip-end" data-tip = "Profile" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< circle cx = "12" cy = "8" r = "5" />
< path d = "M20 21a8 8 0 0 0-16 0" />
</ svg >
</ a >
</ li >
</ ul >
View Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 < ul class = "menu menu-horizontal" >
< li >
< a class = "menu-item tooltip" data-tip = "Home" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" >
</ path >
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item tooltip" data-tip = "Search" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "m21 21-4.34-4.34" />
< circle cx = "11" cy = "11" r = "8" />
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item tooltip" data-tip = "Profile" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< circle cx = "12" cy = "8" r = "5" />
< path d = "M20 21a8 8 0 0 0-16 0" />
</ svg >
</ a >
</ li >
</ ul >
View Code
Menu with icons and badge (responsive)
File tree
< ul class = "menu menu-horizontal" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >
< a class = "menu-item" > Parent</ a >
< ul >
< li >< a class = "menu-item" > Submenu 1</ a ></ li >
< li >< a class = "menu-item" > Submenu 2</ a ></ li >
</ ul >
</ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
View Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 < ul class = "menu xl:menu-horizontal lg:min-w-max" >
< li >
< a class = "menu-item" > Solutions</ a >
< ul >
< li >< a class = "menu-item" > Design</ a ></ li >
< li >< a class = "menu-item" > Development</ a ></ li >
< li >< a class = "menu-item" > Hosting</ a ></ li >
< li >< a class = "menu-item" > Domain register</ a ></ li >
</ ul >
</ li >
< li >
< a class = "menu-item" > Enterprise</ a >
< ul >
< li >< a class = "menu-item" > CRM software</ a ></ li >
< li >< a class = "menu-item" > Marketing management</ a ></ li >
< li >< a class = "menu-item" > Security</ a ></ li >
< li >< a class = "menu-item" > Consulting</ a ></ li >
</ ul >
</ li >
< li >
< a class = "menu-item" > Products</ a >
< ul >
< li >< a class = "menu-item" > UI Kit</ a ></ li >
< li >< a class = "menu-item" > WordPress themes</ a ></ li >
< li >< a class = "menu-item" > WordPress plugins</ a ></ li >
< li >
< a class = "menu-item" > Open source</ a >
< ul >
< li >< a class = "menu-item" > Auth management system</ a ></ li >
< li >< a class = "menu-item" > VScode theme</ a ></ li >
< li >< a class = "menu-item" > Color picker app</ a ></ li >
</ ul >
</ li >
</ ul >
</ li >
< li >
< a class = "menu-item" > Company</ a >
< ul >
< li >< a class = "menu-item" > About us</ a ></ li >
< li >< a class = "menu-item" > Contact us</ a ></ li >
< li >< a class = "menu-item" > Privacy policy</ a ></ li >
< li >< a class = "menu-item" > Press kit</ a ></ li >
</ ul >
</ li >
</ ul >
View Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 < ul class = "menu lg:menu-horizontal" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >
< div class = "accordion accordion-flush" >
< details open >
< summary > Parent item</ summary >
< div class = "accordion accordion-flush" >
< ul >
< li >< a class = "menu-item" > Submenu 1</ a ></ li >
< li >< a class = "menu-item" > Submenu 2</ a ></ li >
< li >
< div class = "accordion accordion-flush" >
< details open >
< summary > Parent</ summary >
< div class = "accordion-content" >
< ul >
< li >< a class = "menu-item" > item 1</ a ></ li >
< li >< a class = "menu-item" > item 2</ a ></ li >
</ ul >
</ div >
</ details >
</ div >
</ li >
</ ul >
</ div >
</ details >
</ div >
</ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
View Code