PluginBench
Skill
Review
Audit score 70

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
Prerequisites
  • Mantine UI library installed
  • React 16.8+ (for hooks support)
Claude Code
Cursor
Windsurf
Cline

How to use mantine-combobox

  1. 1.Create a combobox store using useCombobox() hook with desired configuration
  2. 2.Wrap your component in <Combobox> and pass the store
  3. 3.Add <Combobox.Target> with your trigger element (InputBase, button, or custom)
  4. 4.Add <Combobox.Dropdown> containing <Combobox.Options> with mapped option items
  5. 5.Implement onOptionSubmit handler to update state and close dropdown
  6. 6.Customize target type (button, input, or split) based on your UI needs

Use cases

Good for
  • 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
Who it's for
  • 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

What's the difference between Combobox and the built-in Select component?

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.

How do I implement a searchable dropdown?

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.

How do I create a multi-select with pills?

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.

Can I customize how options are rendered?

Yes. Replace the default Combobox.Option content with custom JSX. You can render icons, descriptions, images, or any custom markup within each option.

Where can I find complete API documentation?

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

ScenarioUse
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: useCombobox options and store, all sub-component props, CSS variables, Styles API selectors
  • references/patterns.md — Code examples: searchable select, multi-select with pills, groups, custom rendering, clear button, form integration