Notifications
Notice
Communicates feedback to users about actions, states, or errors.status?: 'info' | 'success' | 'warning' | 'error'- Notice type (default: ‘info’)isDismissible?: boolean- Show close button (default: true)onRemove?: () => void- Called when dismissedonDismiss?: () => void- Additional dismiss callbackactions?: Array<NoticeAction>- Action buttonspoliteness?: 'polite' | 'assertive'- Screen reader announcement priorityspokenMessage?: string | ReactNode- Custom screen reader message
Snackbar / SnackbarList
Temporary, unobtrusive notifications that auto-dismiss.notices: Array<Notice>- Array of notice objectsonRemove: (id) => void- Remove notice handlerclassName?: string- Additional CSS class
id: string- Unique identifiercontent: string | ReactNode- Notice contentstatus?: 'info' | 'success' | 'warning' | 'error'actions?: Array<NoticeAction>- Action buttons
Modals & Dialogs
Modal
Overlay dialog for focused interactions.title: string- Modal titleonRequestClose: () => void- Close handlerisDismissible?: boolean- Show close button (default: true)shouldCloseOnClickOutside?: boolean- Close on backdrop click (default: true)shouldCloseOnEsc?: boolean- Close on Escape key (default: true)size?: 'small' | 'medium' | 'large'- Modal sizeicon?: IconType- Title iconheaderActions?: ReactNode- Custom header actions
- Traps focus within the modal
- Prevents body scrolling
- Accessible with ARIA labels
- Supports keyboard navigation
- Animated entrance/exit
ConfirmDialog
Simple confirmation dialog built on Modal.isOpen: boolean- Dialog visibilityonConfirm: () => void- Confirm action handleronCancel: () => void- Cancel action handlerconfirmButtonText?: string- Confirm button label (default: ‘OK’)cancelButtonText?: string- Cancel button label (default: ‘Cancel’)isDestructive?: boolean- Style confirm button as destructivechildren: ReactNode- Dialog message
ConfirmDialog uses the experimental
@ariakit/react Dialog component. The API may change in future releases.Popovers & Tooltips
Popover
Floating content container positioned relative to a target.position?: string- Placement (e.g., ‘top’, ‘bottom center’, ‘left’)onClose?: () => void- Close handleronFocusOutside?: (event) => void- Focus outside handlernoArrow?: boolean- Hide arrow pointer (default: true)anchor?: Element- Anchor element for positioningplacement?: Placement- Modern placement APIfocusOnMount?: boolean | 'firstElement'- Focus behaviorexpandOnMobile?: boolean- Full-width on mobileheaderTitle?: string- Mobile header titleanimate?: boolean- Enable animations (default: true)
Tooltip
Small text hint shown on hover.text: string- Tooltip content (required)shortcut?: string- Keyboard shortcut to displayplacement?: Placement- Tooltip positiondelay?: number- Show delay in millisecondschildren: ReactElement- Single child element
Dropdown Menus
DropdownMenu
Menu with multiple actions triggered from a button.icon?: IconType- Toggle button iconlabel?: string- Accessibility labelcontrols: Array<Control | Array<Control>>- Menu items (arrays create groups)className?: string- Additional CSS class
title: string- Menu item labelicon?: IconType- Item icononClick: () => void- Click handlerisActive?: boolean- Active stateisDisabled?: boolean- Disabled stateisDestructive?: boolean- Destructive styling
Dropdown
Lower-level dropdown component for custom popover content.renderToggle: (props) => ReactElement- Toggle button rendererrenderContent: (props) => ReactElement- Dropdown content rendererposition?: string- Popover positionclassName?: string- Additional CSS classcontentClassName?: string- Content container classpopoverProps?: object- Additional Popover props
Disclosure Components
Disclosure
Accessible show/hide toggle using the disclosure pattern.Slot Fill System
For advanced plugin integration, use the SlotFill pattern to inject content into predefined areas:Accessibility
All feedback components follow accessibility best practices:- Notice: Announces status changes to screen readers with configurable politeness
- Modal: Traps focus, prevents body scroll, supports keyboard navigation
- Tooltip: Uses
aria-labeland respects user preferences for reduced motion - Popover: Manages focus properly and supports Escape key dismissal
- DropdownMenu: Full keyboard navigation with arrow keys and Enter
Best Practices
When to Use Each Component
- Notice: Important, persistent messages that require user attention
- Snackbar: Brief, temporary confirmations of actions
- Modal: Complex interactions requiring focus and confirmation
- ConfirmDialog: Simple yes/no confirmations for destructive actions
- Tooltip: Supplementary information on hover (not critical info)
- Popover: Contextual content and temporary controls
- DropdownMenu: Multiple related actions
Usage Guidelines
- Use appropriate
statusvalues for semantic meaning - Provide clear, actionable button labels
- Don’t nest modals within modals
- Keep snackbar messages concise (2-3 words)
- Use destructive styling for irreversible actions
- Ensure tooltips don’t hide critical information