Skip to content

Mini Menu

Updated
A collection of quick actions displayed when a user hovers over an element.

Usage

The <MiniMenu> component displays a menu of options in a small, compact format. To use it, add <MiniMenuButton> inside the <MiniMenu>.

import { MiniMenu, MiniMenuButton } from "stylus-ui/MiniMenu";
import {
faEdit,
faTrash,
faEllipsis,
} from "@fortawesome/pro-regular-svg-icons";
export default () => (
<MiniMenu>
<MiniMenuButton icon={faEdit} label="Edit" />
<MiniMenuButton icon={faTrash} label="Delete" variant="danger" />
<MiniMenuButton icon={faEllipsis} label="More" />
</MiniMenu>
);

Variants

Pass variant="danger" to MiniMenuButton to display a red icon on hover.

import { MiniMenu, MiniMenuButton } from "stylus-ui/MiniMenu";
import { faTrash } from "@fortawesome/pro-regular-svg-icons";
export default () => (
<MiniMenu>
<MiniMenuButton icon={faTrash} label="Delete" variant="danger" />
</MiniMenu>
);

Toggle groups

To add toggle-able groups of items, group MiniMenuToggleItem within MiniMenuToggleGroup.

import {
MiniMenu,
MiniMenuToggleGroup,
MiniMenuToggleItem,
} from "stylus-ui/MiniMenu";
import {
faAlignLeft,
faAlignCenter,
faAlignRight,
} from "@fortawesome/pro-regular-svg-icons";
import {
faAlignLeft as faAlignLeftSolid,
faAlignCenter as faAlignCenterSolid,
faAlignRight as faAlignRightSolid,
} from "@fortawesome/pro-solid-svg-icons";
export default () => (
<MiniMenu>
<MiniMenuToggleGroup type="single" defaultValue="left">
<MiniMenuToggleItem
value="left"
icon={faAlignLeft}
iconToggled={faAlignLeftSolid}
label="Left"
/>
<MiniMenuToggleItem
value="center"
icon={faAlignCenter}
iconToggled={faAlignCenterSolid}
label="Center"
/>
<MiniMenuToggleItem
value="right"
icon={faAlignRight}
iconToggled={faAlignRightSolid}
label="Right"
/>
</MiniMenuToggleGroup>
</MiniMenu>
);

Multiple select

You can also set type="multiple" to enable toggling on and off multiple items in a group.

import {
MiniMenu,
MiniMenuButton,
MiniMenuToggleGroup,
MiniMenuToggleItem,
} from "stylus-ui/MiniMenu";
import {
faBold,
faItalic,
faUnderline,
faEllipsis,
} from "@fortawesome/pro-regular-svg-icons";
import {
faBold as faBoldSolid,
faItalic as faItalicSolid,
faUnderline as faUnderlineSolid,
} from "@fortawesome/pro-solid-svg-icons";
export default () => (
<MiniMenu>
<MiniMenuToggleGroup type="multiple" defaultValue={[]}>
<MiniMenuToggleItem
value="bold"
icon={faBold}
iconToggled={faBoldSolid}
label="Bold"
/>
<MiniMenuToggleItem
value="italic"
icon={faItalic}
iconToggled={faItalicSolid}
label="Italic"
/>
<MiniMenuToggleItem
value="underline"
icon={faUnderline}
iconToggled={faUnderlineSolid}
label="Underline"
/>
</MiniMenuToggleGroup>
<MiniMenuButton icon={faEllipsis} label="More" disabled />
</MiniMenu>
);

Different toggled icon

You can customize the appearance of the toggled item by providing a different iconToggled for the selected state.

import {
MiniMenu,
MiniMenuToggleGroup,
MiniMenuToggleItem,
} from "stylus-ui/MiniMenu";
import { faBookmark as faBookmarkRegular } from "@fortawesome/pro-regular-svg-icons";
import { faBookmark as faBookmarkSolid } from "@fortawesome/pro-solid-svg-icons";
export default () => (
<MiniMenu>
<MiniMenuToggleGroup type="single" defaultValue="bookmark">
<MiniMenuToggleItem
value="bookmark"
icon={faBookmarkRegular}
iconToggled={faBookmarkSolid}
label="Bookmark"
/>
</MiniMenuToggleGroup>
</MiniMenu>
);

API Reference

MiniMenu

Inherits properties from HTMLElement

Prop
Type
Default
asChild boolean false
loop boolean true

MiniMenuButton

Inherits properties from HTMLButtonElement

Prop
Type
Default
iconRequired IconDefinition
labelRequired string
asChild boolean false
disabled boolean false
value string
variant "default""danger" "default"

MiniMenuToggleItem

Inherits properties from HTMLButtonElement

Prop
Type
Default
iconRequired IconDefinition
labelRequired string
asChild boolean false
disabled boolean false
iconToggled IconDefinition
value string

MiniMenuToggleGroup

Inherits properties from HTMLElement

Prop
Type
Default
typeRequired "single""multiple"
defaultValue string
disabled boolean false
onValueChange (value: string) => void
value string