Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
ancoleman avatar

Implementing Drag Drop

  • 283 installs
  • 426 repo stars
  • Updated December 11, 2025
  • ancoleman/ai-design-components

implementing-drag-drop is a Claude Code skill that implements accessible drag-and-drop and sortable React/TypeScript interfaces such as kanban boards, sortable lists, and file dropzones using dnd-kit.

About

This skill implements drag-and-drop and sortable interfaces in React and TypeScript using the dnd-kit library. Developers use it when building kanban boards, sortable lists, file upload dropzones, or reorderable grids. It emphasizes keyboard accessibility, touch support, and performance optimization such as virtual scrolling for lists over 100 items.

  • React/TypeScript drag-and-drop built on dnd-kit with accessibility and touch support
  • Covers kanban boards, sortable lists, file dropzones, and reorderable grids
  • Includes keyboard navigation, screen-reader announcements, and performance patterns for large lists

Implementing Drag Drop by the numbers

  • 283 all-time installs (skills.sh)
  • Ranked #763 of 2,245 Frontend Development skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

implementing-drag-drop capabilities & compatibility

Capabilities
kanban board · sortable list · file dropzone · grid reorder
Use cases
frontend · ui design
Pricing
Free
From the docs

What implementing-drag-drop says it does

Implements drag-and-drop and sortable interfaces with React/TypeScript including kanban boards, sortable lists, file uploads, and reorderable grids.
SKILL.md
Zero dependencies (~10KB core)
SKILL.md
npx skills add https://github.com/ancoleman/ai-design-components --skill implementing-drag-drop

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs283
repo stars426
Last updatedDecember 11, 2025
Repositoryancoleman/ai-design-components

What it does

Building accessible drag-and-drop UIs like kanban boards, sortable lists, and file dropzones in React.

Who is it for?

React/TypeScript projects needing accessible kanban, sortable, or file-drop UIs.

Skip if: Non-React stacks or simple static layouts with no reordering.

When should I use this skill?

You are building interactive UIs requiring direct manipulation, spatial organization, or touch-friendly reordering.

What you get

Accessible, touch-capable drag-and-drop components with keyboard navigation and screen-reader support.

  • Sortable list component
  • Kanban board component
  • File dropzone component

By the numbers

  • 6-step implementation workflow
  • 44px minimum touch hit areas
  • 300ms not applicable; virtual scrolling recommended above 100 items

Files

SKILL.mdMarkdownGitHub ↗

Drag-and-Drop & Sortable Interfaces

Purpose

This skill helps implement drag-and-drop interactions and sortable interfaces using modern React/TypeScript libraries. It covers accessibility-first approaches, touch support, and performance optimization for creating intuitive direct manipulation UIs.

When to Use

Invoke this skill when:

  • Building Trello-style kanban boards with draggable cards between columns
  • Creating sortable lists with drag handles for priority ordering
  • Implementing file upload zones with visual drag-and-drop feedback
  • Building reorderable grids for dashboard widgets or galleries
  • Creating visual builders with node-based interfaces
  • Implementing any UI requiring spatial reorganization through direct manipulation

Core Patterns

Sortable Lists

Reference references/dnd-patterns.md for:

  • Vertical lists with drag handles
  • Horizontal lists for tab/carousel reordering
  • Grid layouts with 2D dragging
  • Auto-scrolling near edges

Kanban Boards

Reference references/kanban-implementation.md for:

  • Multi-column boards with cards
  • WIP limits and swimlanes
  • Card preview on hover
  • Column management (add/remove/collapse)

File Upload Zones

Reference references/file-dropzone.md for:

  • Visual feedback states
  • File type validation
  • Multi-file handling
  • Progress indicators

Accessibility

Reference references/accessibility-dnd.md for:

  • Keyboard navigation patterns
  • Screen reader announcements
  • Alternative UI approaches
  • ARIA attributes

Library Selection

Primary: dnd-kit

Modern, accessible, and performant drag-and-drop for React.

Reference references/library-guide.md for:

  • Library comparison (dnd-kit vs alternatives)
  • Installation and setup
  • Core concepts and API
  • Migration from react-beautiful-dnd

Key Features

  • Built-in accessibility support
  • Touch, mouse, and keyboard input
  • Zero dependencies (~10KB core)
  • Highly customizable
  • TypeScript native

Implementation Workflow

Step 1: Analyze Requirements

Determine the drag-and-drop pattern needed:

  • Simple list reordering → Sortable list pattern
  • Multi-container movement → Kanban pattern
  • File handling → Dropzone pattern
  • Complex interactions → Visual builder pattern

Step 2: Set Up Library

Install required packages:

npm install @dnd-kit/core @dnd-kit/sortable @dnd-kit/utilities

Step 3: Implement Core Functionality

Use examples as starting points:

  • examples/sortable-list.tsx for basic lists
  • examples/kanban-board.tsx for multi-column boards
  • examples/file-dropzone.tsx for file uploads
  • examples/grid-reorder.tsx for grid layouts

Step 4: Add Accessibility

Reference references/accessibility-dnd.md to:

  • Implement keyboard navigation
  • Add screen reader announcements
  • Provide alternative controls
  • Test with assistive technologies

Run scripts/validate_accessibility.js to check implementation.

Step 5: Optimize Performance

For lists with >100 items:

  • Reference references/performance-optimization.md
  • Implement virtual scrolling
  • Use scripts/calculate_drop_position.js for efficient calculations

Step 6: Style with Design Tokens

Apply theming using the design-tokens skill:

  • Reference design token variables
  • Implement drag states (hovering, dragging, dropping)
  • Add visual feedback and animations

Mobile & Touch Support

Reference references/touch-support.md for:

  • Long press to initiate drag
  • Preventing scroll during drag
  • Touch-friendly hit areas (44px minimum)
  • Gesture conflict resolution

State Management

Reference references/state-management.md for:

  • Managing drag state in React
  • Optimistic updates
  • Undo/redo functionality
  • Persisting order changes

Scripts

Calculate Drop Position

Run scripts/calculate_drop_position.js to:

  • Determine valid drop zones
  • Calculate insertion indices
  • Handle edge cases

Generate Configuration

Run scripts/generate_dnd_config.js to:

  • Create dnd-kit configuration
  • Set up sensors and modifiers
  • Configure animations

Validate Accessibility

Run scripts/validate_accessibility.js to:

  • Check keyboard navigation
  • Verify ARIA attributes
  • Test screen reader compatibility

Examples

Each example includes complete TypeScript code with accessibility:

Sortable List

examples/sortable-list.tsx

  • Vertical list with drag handles
  • Keyboard navigation (Space/Enter to grab, arrows to move)
  • Screen reader announcements

Kanban Board

examples/kanban-board.tsx

  • Multiple columns with draggable cards
  • Card movement between columns
  • Column management features
  • WIP limits

File Dropzone

examples/file-dropzone.tsx

  • Drag files to upload
  • Visual feedback states
  • File type validation
  • Upload progress

Grid Reorder

examples/grid-reorder.tsx

  • 2D grid dragging
  • Auto-layout on drop
  • Responsive breakpoints

Assets

TypeScript Types

assets/drag-state-types.ts provides:

  • Type definitions for drag state
  • Event handler types
  • Configuration interfaces

Configuration Schema

assets/dnd-config-schema.json defines:

  • Valid configuration options
  • Sensor settings
  • Animation parameters

Best Practices

Visual Feedback

  • Show drag handles (⋮⋮) to indicate draggability
  • Change cursor (grab → grabbing)
  • Display drop zone placeholders
  • Make dragged items semi-transparent
  • Highlight valid drop targets

Performance

  • Use CSS transforms, not position properties
  • Apply will-change: transform for animations
  • Throttle drag events for large lists
  • Implement virtual scrolling when needed

Accessibility First

  • Always provide keyboard alternatives
  • Include screen reader announcements
  • Test with NVDA/JAWS/VoiceOver
  • Provide non-drag alternatives (buttons/forms)

Error Handling

  • Show invalid drop feedback
  • Implement undo functionality
  • Auto-save after successful drops
  • Handle network failures gracefully

Common Pitfalls

Avoid These Issues

  • Forgetting keyboard navigation
  • Missing touch support
  • Not preventing scroll during drag
  • Ignoring accessibility
  • Poor performance with large lists

Solutions

Reference the appropriate guide for each issue:

  • Accessibility → references/accessibility-dnd.md
  • Touch → references/touch-support.md
  • Performance → references/performance-optimization.md
  • State → references/state-management.md

Testing Checklist

Before deployment, verify:

  • [ ] Keyboard navigation works completely
  • [ ] Screen readers announce all actions
  • [ ] Touch devices can drag smoothly
  • [ ] Performance acceptable with expected data volume
  • [ ] Visual feedback clear and responsive
  • [ ] Undo/redo functionality works
  • [ ] Alternative UI provided for accessibility
  • [ ] Works across all target browsers

Next Steps

After implementing basic drag-and-drop: 1. Add advanced features (auto-scroll, multi-select) 2. Implement gesture support for mobile 3. Add animation polish with Framer Motion 4. Create custom drag preview components 5. Build complex interactions (nested dragging)

Related skills

How it compares

Use implementing-drag-drop for accessible React reordering with dnd-kit; consider HTML5 drag APIs only for trivial cases without sortable lists or touch requirements.

FAQ

Which drag-and-drop library does this skill use?

It uses dnd-kit as the primary library, described as modern, accessible, and performant with a ~10KB core and zero dependencies.

Does it support keyboard and screen-reader accessibility?

Yes. It provides keyboard navigation (Space/Enter to grab, arrows to move) and screen-reader announcements, with a validate_accessibility.js script.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.