+ );
+};
+
+export default Sidebar;
diff --git a/examples/DragNDrop/dnd.css b/examples/DragNDrop/dnd.css
new file mode 100644
index 00000000..6ff6d489
--- /dev/null
+++ b/examples/DragNDrop/dnd.css
@@ -0,0 +1,37 @@
+.dndflow {
+ flex-direction: column;
+ display: flex;
+ height: 100%;
+}
+
+.dndflow aside {
+ border-right: 1px solid #eee;
+ padding: 15px 10px;
+ font-size: 12px;
+ background: #fcfcfc;
+}
+
+.dndflow aside > * {
+ margin-bottom: 10px;
+ cursor: grab;
+}
+
+.dndflow aside .description {
+ margin-bottom: 10px;
+}
+
+.dndflow .revueflow-wrapper {
+ flex-grow: 1;
+ height: 100%;
+}
+
+@media screen and (min-width: 768px) {
+ .dndflow {
+ flex-direction: row;
+ }
+
+ .dndflow aside {
+ width: 20%;
+ max-width: 180px;
+ }
+}
diff --git a/examples/DragNDrop/index.tsx b/examples/DragNDrop/index.tsx
new file mode 100644
index 00000000..e8921b20
--- /dev/null
+++ b/examples/DragNDrop/index.tsx
@@ -0,0 +1,77 @@
+import RevueFlow, {
+ addEdge,
+ removeElements,
+ Controls,
+ OnLoadParams,
+ Elements,
+ Connection,
+ Edge,
+ ElementId,
+ Node
+} from '../../src';
+import Sidebar from './Sidebar';
+
+import './dnd.css';
+import { defineComponent, ref } from 'vue';
+
+const initialElements = [{ id: '1', type: 'input', data: { label: 'input node' }, position: { x: 250, y: 5 } }];
+
+const onDragOver = (event: DragEvent) => {
+ event.preventDefault();
+ if (event.dataTransfer) {
+ event.dataTransfer.dropEffect = 'move';
+ }
+};
+
+let id = 0;
+const getId = (): ElementId => `dndnode_${id++}`;
+
+const DnDFlow = defineComponent({
+ setup() {
+ const revueFlowInstance = ref