An open API service indexing awesome lists of open source software.

https://github.com/clauderic/dnd-kit

The modern toolkit for building drag and drop interfaces
https://github.com/clauderic/dnd-kit

drag drag-and-drop draggable droppable react sortable

Last synced: 14 days ago
JSON representation

The modern toolkit for building drag and drop interfaces

Awesome Lists containing this project

README

          



@dnd-kit – the modern toolkit for building drag & drop interfaces



A modern, lightweight, performant, accessible and extensible drag and drop toolkit for the web

## Features

- **Framework agnostic core:** The architecture is built in layers — a framework-agnostic core (`@dnd-kit/abstract`), a DOM implementation (`@dnd-kit/dom`), and thin adapters for your framework of choice.
- **Supports a wide range of use cases:** lists, grids, multiple containers, nested contexts, variable sized items, virtualized lists, 2D games, and more.
- **Built-in support for multiple input methods:** Pointer, mouse, touch and keyboard sensors.
- **Fully customizable & extensible:** Customize every detail — animations, transitions, behaviours, styles. Build your own sensors, collision detection algorithms, customize key bindings and more.
- **Accessibility:** Keyboard support, sensible default ARIA attributes, customizable screen reader instructions and live regions built-in.
- **Performance:** Built with performance in mind to support silky smooth animations.
- **Sortable:** Need to build a sortable interface? Check out `@dnd-kit/dom/sortable`, a thin layer built on top of the core.

Getting started


Choose your preferred framework to get started:




JavaScript

Vanilla

Build drag and drop interfaces using plain JavaScript



React

React

Build drag and drop interfaces using React components and hooks




Vue

Vue

Build drag and drop interfaces using Vue composables and components




Svelte

Svelte

Build drag and drop interfaces using Svelte primitives and components




SolidJS

Solid

Build drag and drop interfaces using SolidJS hooks and components


## Documentation

Visit **[dndkit.com](https://dndkit.com)** for full documentation, API reference, guides, and interactive examples.

## Packages

| Package | Version | Description |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------ | ---------------------------- |
| [`@dnd-kit/abstract`](packages/abstract) | [![npm](https://img.shields.io/npm/v/@dnd-kit/abstract.svg)](https://npm.im/@dnd-kit/abstract) | Abstract core |
| [`@dnd-kit/collision`](packages/collision) | [![npm](https://img.shields.io/npm/v/@dnd-kit/collision.svg)](https://npm.im/@dnd-kit/collision) | Collision detection |
| [`@dnd-kit/dom`](packages/dom) | [![npm](https://img.shields.io/npm/v/@dnd-kit/dom.svg)](https://npm.im/@dnd-kit/dom) | Framework-agnostic DOM layer |
| [`@dnd-kit/geometry`](packages/geometry) | [![npm](https://img.shields.io/npm/v/@dnd-kit/geometry.svg)](https://npm.im/@dnd-kit/geometry) | Geometry utilities |
| [`@dnd-kit/helpers`](packages/helpers) | [![npm](https://img.shields.io/npm/v/@dnd-kit/helpers.svg)](https://npm.im/@dnd-kit/helpers) | Helper functions |
| [`@dnd-kit/react`](packages/react) | [![npm](https://img.shields.io/npm/v/@dnd-kit/react.svg)](https://npm.im/@dnd-kit/react) | React adapter |
| [`@dnd-kit/solid`](packages/solid) | [![npm](https://img.shields.io/npm/v/@dnd-kit/solid.svg)](https://npm.im/@dnd-kit/solid) | SolidJS adapter |
| [`@dnd-kit/state`](packages/state) | [![npm](https://img.shields.io/npm/v/@dnd-kit/state.svg)](https://npm.im/@dnd-kit/state) | Reactive state management |
| [`@dnd-kit/svelte`](packages/svelte) | [![npm](https://img.shields.io/npm/v/@dnd-kit/svelte.svg)](https://npm.im/@dnd-kit/svelte) | Svelte adapter |
| [`@dnd-kit/vue`](packages/vue) | [![npm](https://img.shields.io/npm/v/@dnd-kit/vue.svg)](https://npm.im/@dnd-kit/vue) | Vue adapter |

## Contributing

This is a monorepo managed with [Turborepo](https://turbo.build/) and [bun](https://bun.sh/).

```bash
# Install dependencies
bun install

# Build all packages
bun run build

# Run dev mode
bun run dev
```

## License

[MIT](./LICENSE)