**Responsive**, **sortable**, **filterable** and **draggable** grid layouts with [`React`](https://reactjs.org/)
[](http://npm.im/muuri-react)
[](http://npm.im/muuri-react)
[](https://app.circleci.com/pipelines/github/Paol-imi/muuri-react)
[](https://prettier.io/)
[](https://www.typescriptlang.org/)
## Design Principles π¨π»βπ«
**Muuri-React** is the React implementation of the amazing [**Muuri**](https://github.com/haltu/muuri) layout engine. This library allows you to build all kinds of layouts with [**React**](https://reactjs.org/) and make them responsive, sortable, filterable, draggable and/or animated.
All Muuri features are implemented in a **React-friendly** way, with custom **components** and **hooks**, to guarantee the simplest **developer experience**.
## Features π
- Fully customizable layout π
- Drag-and-drop (even between grids) β
- Simple, Powerful, and Intuitive API β‘οΈ
- Extremely performant π
- Custom hooks π
- Nested grids π
- Scrollable grids π±οΈ
- Filtering β
- Sorting π
- Support IE9+ _(with polyfills)_ π
- Touch support π±
- Typescript βοΈ
- Fully open source ββοΈ
## Documentation π
You can find the full documentation [**here**](https://paol-imi.github.io/muuri-react).
## Examples π‘
All [**examples**](https://paol-imi.github.io/muuri-react/showcase) have been created to explain one or more **features** of Muuri-react in an **easy** and direct way.
## Motivation π¨π»βπ«
You can build pretty amazing **layouts** without a single line of JavaScript these days. However, sometimes CSS just isn't enough, and that's where Muuri comes along. At it's very core **Muuri** is a layout engine which is limited only by your **imagination**π. You can build any kind of layout, asynchronously in web workers if you wish.
Layouts aside, you might need to sprinkle some flare (**animations**β‘) and interactivity (**filtering**, **sorting**, **drag and drop**β) on your layout. Stuff gets complex pretty fast and most of us probably reach for existing libraries to handle the complexity at that point. This is why most of these extra **features** are built into Muuri's **core**, so you don't have to go hunting for additional libraries or re-inventing the wheel for the nth time.
The long-term goal of Muuri is to provide a simple (and as low-level as possible) API for building amazing layouts with unmatched **performance**π and most of the **complexity**π¦ abstracted away.
## Help us grow β€οΈ
**Muuri-react** was born recently but is already very stable and full of features as it is based on the amazing **Muuri** layout engine. If you **like** π this project you can help us grow by **starring** β the repository.
## Contributing ποΈ
Contributions are always welcome. Before contributing, please read our [**Guidlines**](https://raw.githubusercontent.com/Paol-imi/muuri-react/master/CONTRIBUTING.md).
## Credits π€
Thanks to [**Niklas RΓ€mΓΆ**](https://github.com/niklasramo) for the amazing work with [**Muuri**](https://github.com/haltu/muuri).
## License Β©
Copyright Β© 2020 [**Paolo Longo**](https://github.com/Paol-imi) β’ [**MIT license**](LICENSE).