← Back to Portfolio

Custom Dropdown

A generic, reusable React dropdown component with built-in search, async filtering, and full keyboard accessibility.

Overview

A fully-featured custom dropdown built with React 19 and TypeScript. The component is generic — it works with plain strings, objects, or any custom shape via renderOption/renderSelected props. Supports debounced local search, async onSearch override, multi-dropdown coordination through custom DOM events, outside-click detection, and complete ARIA markup.

Technologies Used

ReactTypeScriptViteCSS Modules

Key Features

  • Generic <T> API — works with strings, objects, or any custom shape
  • Built-in debounced search with async onSearch override
  • Multi-dropdown coordination without shared state or context
  • Keyboard accessible — Enter to select, Escape to close
  • Full ARIA support: role="listbox", aria-expanded, aria-selected

Screenshots

Custom Dropdown screenshot 1
Custom Dropdown screenshot 2
Custom Dropdown screenshot 3
Custom Dropdown screenshot 4