ZYVOPMulti-Platform Sync
SeriesAI NewsWhy ZyVOPJoin Discord
LoginGet Started
ZYVOPMulti-Platform Sync

The Developer Publishing Hub. Write once, publish everywhere, and make your work citation-ready with built-in SEO, AEO, and GEO discovery support. Zero reader paywalls.

Content

  • Categories
  • Tags
  • Badges
  • Leaderboard
  • Write Article
  • Newsletter

Company

  • About Us
  • Why ZyVOP
  • Developer API & CLI
  • Write for Us
  • Contact

Connect

  • Privacy Policy
  • Terms of Service
  • Cookie Policy
  • DMCA Policy
  • Code of Conduct

© 2026 ZyVOP. Developer Publishing Hub.

Zero paywalls · Full content ownership
All systems operational
HomeMantine SelectStepper: A Modern Alternative to Traditional Dropdowns

Mantine SelectStepper: A Modern Alternative to Traditional Dropdowns

Giovambattista Fazioli
Giovambattista Fazioli
Senior Full-stack Engineer, Lead DeveloperSupport
September 4, 2026
4 min read
Mantine SelectStepper: A Modern Alternative to Traditional Dropdowns
#react#nextjs#mantineui#TypeScript

In the world of modern web development, choosing the right UI component can make or break the user experience. Today, we're excited to introduce you to Mantine SelectStepper, a React component that revolutionizes how users interact with predefined option lists. Built on top of the powerful Mantine UI library, this component offers an elegant, intuitive alternative to traditional dropdown selects.

What is Mantine SelectStepper?

The Mantine SelectStepper is a Mantine-based React component that allows users to navigate through a list of options using increment and decrement buttons. Instead of clicking to open a dropdown menu, users can simply click left or right arrows to cycle through predefined values. This approach is particularly effective for:

  • Configuration panels with sequential options

  • Forms where users need to select from an ordered list

  • Mobile interfaces where dropdowns can be cumbersome

  • Applications requiring keyboard-friendly navigation

Mantine Select Stepper

Getting Started: Incredibly Simple

One of the most impressive aspects of SelectStepper is its simplicity. Getting started requires just a few lines of code:

yarn add @gfazioli/mantine-select-stepper
# or
npm install @gfazioli/mantine-select-stepper

Enter fullscreen mode Exit fullscreen mode

After installation, import the styles at the root of your application:

import '@gfazioli/mantine-select-stepper/styles.css';

Enter fullscreen mode Exit fullscreen mode

And you're ready to use it:

import { SelectStepper } from '@gfazioli/mantine-select-stepper';

function Demo() {return <SelectStepper data={['React', 'Vue', 'Angular']} />;}

Enter fullscreen mode Exit fullscreen mode

That's it! With just three lines of code, you have a fully functional, beautifully styled stepper component.

Key Features That Set It Apart

1. Infinite Loop Navigation

Enable seamless cycling through options with the loop prop. When users reach the end of the list, they automatically wrap back to the beginning—perfect for circular selections like months, days, or priority levels.

<SelectStepper data={['January', 'February', 'March']} loop />

Enter fullscreen mode Exit fullscreen mode

2. Controlled Component Pattern

SelectStepper supports both controlled and uncontrolled modes, giving you complete flexibility in state management:

import { useState } from 'react';import { SelectStepper } from '@gfazioli/mantine-select-stepper';

function Demo() {const [value, setValue] = useState('react');

  return (
    <SelectStepper
      data={['React', 'Vue', 'Angular']}
      value={value}
      onChange={(newValue) => setValue(newValue)}
    />);}

Enter fullscreen mode Exit fullscreen mode

3. Disabled Items Support

Need to restrict certain options? Simply mark them as disabled in your data array:

const data = [{ value: 'react', label: 'React' },{ value: 'vue', label: 'Vue', disabled: true },{ value: 'angular', label: 'Angular' },];

<SelectStepper data={data} />

Enter fullscreen mode Exit fullscreen mode

The stepper will intelligently skip disabled items during navigation.

4. Custom Icons

Personalize your stepper with custom icons using the leftIcon and rightIcon props:

import { IconChevronLeft, IconChevronRight } from '@tabler/icons-react';

<SelectStepperdata={['Small', 'Medium', 'Large']}leftIcon={<IconChevronLeft />}rightIcon={<IconChevronRight />}/>

Enter fullscreen mode Exit fullscreen mode

5. Custom Rendering

Mantine Select Stepper

Take full control over how options are displayed with the renderOption prop:

<SelectStepperdata={frameworks}renderOption={(item) => (
    <Group gap="xs">
      <Badge color={item.color}>{item.label}</Badge>
      <span>v{item.version}</span>
    </Group>)}/>

Enter fullscreen mode Exit fullscreen mode

6. Extended Data Properties

Need to store additional metadata with your options? Simply extend the ComboboxItem interface:

interface ComplexItem extends ComboboxItem {version?: string;color?: string;}

const data: ComplexItem[] = [{ value: 'react', label: 'React', version: '18.2.0', color: 'blue' },{ value: 'vue', label: 'Vue.js', version: '3.2.37', color: 'green' },];

function Demo() {const [value, setValue] = useState<ComplexItem | null>(null);

  return (
    <SelectStepper
      data={data}
      value={value?.value}
      onChange={(_val, option) => setValue(option as ComplexItem)}
    />);}

Enter fullscreen mode Exit fullscreen mode

The onChange handler provides the complete option object with all your custom properties.

7. Smooth Animations

Control animation behavior with dedicated props:

<SelectStepperdata={['Option 1', 'Option 2', 'Option 3']}animate={true}animationDuration={300}animationTimingFunction="ease-in-out"/>

Enter fullscreen mode Exit fullscreen mode

Or disable animations entirely for a snappier feel.

8. Keyboard Navigation

Built-in keyboard support makes the component accessible and efficient:

  • ArrowLeft or ArrowDown - Move to previous item

  • ArrowRight or ArrowUp - Move to next item

9. Mantine Styles API Integration

Mantine Styles API Integration

Fully integrated with Mantine's Styles API, SelectStepper allows you to customize every inner element:

<SelectStepperdata={['React', 'Vue', 'Angular']}classNames={{
    root: 'custom-root',
    view: 'custom-view',
    action: 'custom-action',}}/>

Enter fullscreen mode Exit fullscreen mode

10. Perfect for Forms

Form Example

SelectStepper integrates seamlessly with other Mantine form components:

<Stack><TextInput label="Name" placeholder="Your name" />

  <SelectStepper 
    data={['React', 'Vue', 'Angular']} 
    withBorder 
    placeholder="Select framework"/>

  <Group grow>
    <SelectStepper 
      data={['Junior', 'Mid', 'Senior']} 
      withBorder 
      placeholder="Experience level"
    />
    <TextInput label="Years of experience" /></Group></Stack>

Enter fullscreen mode Exit fullscreen mode

Creative Use Cases

Boolean Stepper Pattern

Boolean Stepper Pattern

One clever pattern is using SelectStepper as an enhanced boolean toggle:

const [enabled, setEnabled] = useState(false);

<SelectStepperdata={[
    { value: 'false', label: 'Disabled' },
    { value: 'true', label: 'Enabled' },]}value={enabled ? 'true' : 'false'}onChange={(val) => setEnabled(val === 'true')}leftIcon={enabled ? <IconToggleRight /> : <IconToggleLeft />}renderOption={(item) => (
    <Badge color={item.value === 'true' ? 'green' : 'red'}>
      {item.label}
    </Badge>)}/>

Enter fullscreen mode Exit fullscreen mode

Why Choose SelectStepper?

  1. Simplicity: Minimal setup, maximum functionality

  2. TypeScript: Full type safety with TypeScript support

  3. Accessibility: Built-in keyboard navigation

  4. Customization: Extensive styling options through Mantine's Styles API

  5. Performance: Smooth animations and optimized rendering

  6. Flexibility: Works in controlled and uncontrolled modes

  7. Modern: Built on React 18/19 with modern best practices

Part of the Mantine Extensions Ecosystem

SelectStepper is part of a growing collection of high-quality Mantine components. If you're looking for more extensions to enhance your Mantine UI applications, check out Mantine Extensions for additional components that integrate seamlessly with your existing Mantine setup.

Documentation and Demos

For comprehensive documentation, live demos, and interactive examples, visit the official SelectStepper documentation. The documentation includes:

  • Interactive configurator to experiment with all props

  • Complete API reference

  • Real-world usage examples

  • Styles API documentation

  • TypeScript type definitions

Conclusion

Mantine SelectStepper proves that sometimes the best solutions are the simplest ones. By rethinking how users interact with option lists, it provides a refreshing alternative to traditional dropdowns that's both elegant and highly functional. Whether you're building a configuration panel, a multi-step form, or any interface requiring option selection, SelectStepper offers the perfect blend of simplicity, flexibility, and user experience.

Give it a try in your next project, and experience how a thoughtfully designed component can elevate your user interface!


Resources:

  • 📦 npm package

  • 📖 Documentation & Demos

  • 🐛 GitHub Repository

  • 🎨 Mantine UI

  • 🔌 More Mantine Extensions

Comments (0)

Login to post a comment.

Giovambattista Fazioli
Giovambattista Fazioli

Senior Full-stack Engineer, Lead Developer

Italian Senior Full-stack Engineer and Lead Developer on the Cloud team at Namecheap. I build developer tools, React/Mantine UI components and native macOS apps — mostly open source. I work across TypeScript, Next.js, Go and SwiftUI, and I've been coding since the Commodore/Assembly days. Creator of WP Bones and 25+ Mantine extensions, and maintainer of the Undolog open-source studio.

Support
Subscribe to Giovambattista Fazioli's Newsletter

More from Giovambattista Fazioli

View profile

FinderGit 0.29.0 — open a commit like a folder

There’s a moment, reading a commit list, where you want to know one small thing: which files did that one touch?

3 minSep 4

Netfox 0.18.0 — is it my connection, or the internet?

There is a question that comes up every time something feels slow, and until now Netfox could not...

3 minSep 4

Mantine Book — Grab Any Edge, Turn Any Page

A realistic iBooks-style book for React built on Mantine: stack two-sided pages and turn them by...

5 minSep 4

Netfox — The macOS app that never loses track of your network

I built Netfox because every existing answer to "what's actually on my network?" annoyed me. The...

5 minSep 4

Audio That Sees Itself

A Mantine-native audio player for React with waveform visualisation and a live spectrum analyser,...

5 minSep 4