mantine-combobox
mantinedev/skills
Build custom dropdown, select, autocomplete, and multi-select components with Mantine's low-level Combobox primitives.
What is mantine-combobox?
Mantine Combobox provides low-level primitives for constructing any select-like UI component. Use this skill when building custom dropdowns, searchable selects, multi-selects, tags inputs, or implementing custom filtering and option rendering logic.
- Create custom select-like components with full control over rendering and behavior
- Build searchable dropdowns with filtering logic
- Implement multi-select and tags input variants
- Customize option rendering and styling
- Handle dropdown open/close and selection state management
- Support different target types (button, input, or split input+pills)
How to install mantine-combobox
npx skills add https://github.com/mantinedev/skills --skill mantine-combobox- Mantine UI library installed
- React 16.8+ (for hooks support)
How to use mantine-combobox
- 1.Create a combobox store using useCombobox() hook with desired configuration
- 2.Wrap your component in <Combobox> and pass the store
- 3.Add <Combobox.Target> with your trigger element (InputBase, button, or custom)
- 4.Add <Combobox.Dropdown> containing <Combobox.Options> with mapped option items
- 5.Implement onOptionSubmit handler to update state and close dropdown
- 6.Customize target type (button, input, or split) based on your UI needs
Use cases
- Building a searchable dropdown with custom filtering for a form
- Creating a multi-select component with pill display and separate input field
- Implementing an autocomplete field with custom option rendering
- Building a tags input component with custom validation
- Creating a button-triggered dropdown menu with custom options
- React developers building custom form components
- Teams extending Mantine UI with specialized select variants
- Developers needing fine-grained control over dropdown behavior and styling
mantine-combobox FAQ
Combobox provides low-level primitives for maximum customization. Select, Autocomplete, and TagsInput are pre-built components on top of Combobox. Use Combobox when you need custom behavior or rendering that built-in components don't support.
Use the Combobox primitives with a controlled input in your Target. Filter the options array based on input value and pass filtered results to Combobox.Options. See references/patterns.md for a complete searchable select example.
Use <Combobox.DropdownTarget> for the dropdown trigger and <Combobox.EventsTarget> for the input field. Render selected items as pills above the input, and manage an array of values instead of a single value.
Yes. Replace the default Combobox.Option content with custom JSX. You can render icons, descriptions, images, or any custom markup within each option.
See references/api.md for full useCombobox options, store methods, and all sub-component props. See references/patterns.md for code examples of common patterns.
Full instructions (SKILL.md)
Source of truth, from mantinedev/skills.
name: mantine-combobox description: > Build custom dropdown/select/autocomplete/multiselect components using Mantine's Combobox primitives. Use this skill when: (1) creating a new custom select-like component with Combobox primitives, (2) building a searchable dropdown, (3) implementing a multi-select or tags input variant, (4) customizing option rendering, (5) adding custom filtering logic, or (6) any task involving useCombobox, Combobox.Target, Combobox.Option, or Combobox.Dropdown.
Mantine Combobox Skill
Overview
Combobox provides low-level primitives for building any select-like UI. The built-in
Select, Autocomplete, and TagsInput components are all built on top of it.
Core Workflow
1. Create the store
const combobox = useCombobox({
onDropdownClose: () => combobox.resetSelectedOption(),
onDropdownOpen: () => combobox.selectFirstOption(),
});
2. Render structure
<Combobox store={combobox} onOptionSubmit={handleSubmit}>
<Combobox.Target>
<InputBase
component="button"
pointer
rightSection={<Combobox.Chevron />}
onClick={() => combobox.toggleDropdown()}
>
{value || <Input.Placeholder>Pick value</Input.Placeholder>}
</InputBase>
</Combobox.Target>
<Combobox.Dropdown>
<Combobox.Options>
{options.map((item) => (
<Combobox.Option value={item} key={item}>{item}</Combobox.Option>
))}
</Combobox.Options>
</Combobox.Dropdown>
</Combobox>
3. Handle submit
const handleSubmit = (val: string) => {
setValue(val);
combobox.closeDropdown();
};
Target Types
| Scenario | Use |
|---|---|
| Button trigger (no text input) | <Combobox.Target targetType="button"> |
| Input trigger | <Combobox.Target> (default) |
| Pills + separate input (multi-select) | <Combobox.DropdownTarget> + <Combobox.EventsTarget> |
References
references/api.md— Full API:useComboboxoptions and store, all sub-component props, CSS variables, Styles API selectorsreferences/patterns.md— Code examples: searchable select, multi-select with pills, groups, custom rendering, clear button, form integration
Related skills
More from mantinedev/skills and the wider catalog.

mantine-custom-components
Build custom Mantine components with full theming, Styles API, and factory integration.

mantine-form
Build validated forms with @mantine/form using controlled or uncontrolled modes.

docker-compose-orchestration
Orchestrate multi-container applications with Docker Compose for development and production deployment

golang-backend-development
Complete guide for Go backend development including concurrency patterns, web servers, database integration, microservices, and production deployment

jest-react-testing
Comprehensive React component testing with Jest and React Testing Library covering configuration, mocking strategies, async testing patterns, hooks testing, and integration testing best practices

playwright-visual-testing
Browser automation, visual testing, and screenshot validation using Playwright MCP server for accelerated web development. Master visual regression testing, automated UI testing, and cross-browser validation.