diff --git a/README.md b/README.md
index cbe057d..d24cc79 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@ overridden by your own styles.
The menu disappears when you expect by utilizing `vue-clickaway` and it also optionally disappears when clicked on.
-
+
## Getting Started
diff --git a/docs/api/_index.md b/docs/api/_index.md
new file mode 100644
index 0000000..cafe067
--- /dev/null
+++ b/docs/api/_index.md
@@ -0,0 +1,4 @@
+---
+title: Api
+sort: 3
+---
diff --git a/docs/api/api.md b/docs/api/api.md
new file mode 100644
index 0000000..a2dbe21
--- /dev/null
+++ b/docs/api/api.md
@@ -0,0 +1,35 @@
+---
+title: Vue-Context
+sort: 1
+---
+
+## Slots
+
+| Slot | Description |
+| --- | --- |
+| default | The default slot also serves as a scoped slot which receives any data passed to the menu |
+
+## Props
+
+| Prop | Type | Default | Description |
+| --- | --- | --- | --- |
+| `closeOnClick` | Boolean | `true` | If set to `false`, context menu will not automatically close when clicked on |
+| `closeOnScroll` | Boolean | `true` | If set to `true`, context menu will automatically close on window scroll |
+| `lazy` | Boolean | `false` | If set to `true`, context menu will be rendered with a `v-if` instead of `v-show` |
+| `itemSelector` | Array, String | `['.v-context-item', '.v-context > li > a']` | The selector of the menu items the menu will use to look for to set accessibility attributes and for keyboard navigation. |
+| `role` | String | `menu` | Used for the `role` attribute on the context menu |
+| `subMenuOffset` | Number | `10` | Specify the offset in pixels of the submenus |
+| `tag` | String | `ul` | Used as the root element of the context menu |
+| `heightOffset` | Number | `25` | Specify distance from the menu to top/bottom of screen |
+| `widthOffset` | Number | `25` | Specify distance from menu to left of screen |
+| `useScrollHeight` | Boolean | `false` | Use the menu's scroll height instead of offset height to calculate positioning |
+| `useScrollWidth` | Boolean | `false` | Use the menu's scroll width instead of offset width to calculate positioning |
+
+## Events
+
+| Event | Arguments | Description |
+| --- | --- | --- |
+| `close` | none | Emits when the context menu is closed |
+| `open` | `event`, `data`, `top`, `left` | Emits when the menu is opened. the event, context menu data, top and left position are all sent through as parameters |
+
+[View source](https://github.com/rawilk/vue-context/blob/master/src/js/vue-context.vue)
diff --git a/docs/changelog.md b/docs/changelog.md
new file mode 100644
index 0000000..007ce7c
--- /dev/null
+++ b/docs/changelog.md
@@ -0,0 +1,6 @@
+---
+title: Changelog
+sort: 4
+---
+
+All notable changes for laravel-breadcrumbs are documented [on Github](https://github.com/rawilk/vue-context/blob/master/CHANGELOG.md).
diff --git a/docs/demos/_index.md b/docs/demos/_index.md
new file mode 100644
index 0000000..45a3a8f
--- /dev/null
+++ b/docs/demos/_index.md
@@ -0,0 +1,4 @@
+---
+title: Demos
+sort: 2
+---
diff --git a/docs/demos/basic.md b/docs/demos/basic.md
new file mode 100644
index 0000000..1d20b12
--- /dev/null
+++ b/docs/demos/basic.md
@@ -0,0 +1,4 @@
+---
+title: Basic Usage
+sort: 1
+---
diff --git a/screenshot.jpg b/docs/images/screenshot.jpg
similarity index 100%
rename from screenshot.jpg
rename to docs/images/screenshot.jpg
diff --git a/docs/installation.md b/docs/installation.md
new file mode 100644
index 0000000..b56fed5
--- /dev/null
+++ b/docs/installation.md
@@ -0,0 +1,75 @@
+---
+title: Quickstart
+sort: 2
+---
+
+## Installation
+
+vue-context can be installed via npm:
+
+```bash
+npm i vue-context
+```
+
+## Usage
+
+Import the component and use it in your app.
+
+```js
+import Vue from 'vue';
+import VueContext from 'vue-context';
+
+new Vue({
+ components: {
+ VueContext,
+ },
+
+ methods: {
+ onClick(text) {
+ alert(`You clicked ${text}!`);
+ }
+ }
+}).$mount('#app');
+```
+
+For styling, you will need to import the component's styles into your own stylesheets, or into your JavaScript.
+It's recommended to import into a stylesheet, however. If you are using sass, you can do the following:
+
+```css
+@import '~vue-context/src/sass/vue-context';
+
+// Or
+// @import '~vue-context/dist/css/vue-context.css';
+```
+
+Now add an element to the page that will trigger the context menu to appear, and also add the context menu to the page.
+
+```html
+
+```
+
+`@contextmenu.prevent` is the event listener needed to open the context menu. It is using `.prevent` as a modifier
+to prevent the default behavior. In this example, the context menu has a ref of `menu`, which is what `$refs.menu` is
+referring to. When each item is clicked on, the text of the item is sent to the `onClick` method on the Vue instance,
+which is then shown via an alert.
+
+{.tip}
+> The context menu defaults to a `` tag. For best results, make each menu item an `` tag wrapped inside
+> of an `- ` tag.
diff --git a/docs/introduction.md b/docs/introduction.md
new file mode 100644
index 0000000..e7c1cb9
--- /dev/null
+++ b/docs/introduction.md
@@ -0,0 +1,21 @@
+---
+title: Introduction
+sort: 1
+---
+
+## Introduction
+
+`vue-context` provides a simple yet flexible context menu for Vue. It is styled for the standard `
` tag, but any menu
+template can be used. The menu is lightweight with its only dependency being `vue-clickaway`. The menu has some basic
+styles applied to it, but they can be easily overridden by your own styles.
+
+The menu disappears when you expect by utilizing `vue-clickaway` and it also optionally disappears when clicked on.
+
+
+
+By default, the menu is set up to use a `` tag for the menu, which is given the attribute `role="menu"` automatically.
+The component will also automatically apply the attribute `role="menuitem"` to each menu item when the context menu is opened.
+
+## License
+
+`vue-context` uses the MIT License (MIT). Please see the [license file](https://github.com/rawilk/vue-context/blob/master/LICENSE) for more information.
diff --git a/docs/questions-and-issues.md b/docs/questions-and-issues.md
new file mode 100644
index 0000000..b5a115f
--- /dev/null
+++ b/docs/questions-and-issues.md
@@ -0,0 +1,9 @@
+---
+title: Questions & Issues
+sort: 3
+---
+
+Find yourself stuck using the package? Found a bug? Do you have general questions or suggestions for improving the package?
+Feel free to [create an issue on Github](https://github.com/rawilk/vue-context/issues) and I'll try to address it as soon as possible.
+
+If you've found a bug regarding security please email [randall@randallwilk.dev](mailto:randall@randallwilk.dev) instead of using the issue tracker.
diff --git a/docs/usage/_index.md b/docs/usage/_index.md
new file mode 100644
index 0000000..bc6256b
--- /dev/null
+++ b/docs/usage/_index.md
@@ -0,0 +1,4 @@
+---
+title: Usage
+sort: 1
+---
diff --git a/docs/usage/advanced-usage.md b/docs/usage/advanced-usage.md
new file mode 100644
index 0000000..86f3116
--- /dev/null
+++ b/docs/usage/advanced-usage.md
@@ -0,0 +1,255 @@
+---
+title: Advanced Usage
+sort: 2
+---
+
+## Scoped Slot
+
+To pass any data from the `contextmenu` event to your template, you can pass it as the second parameter of the `open` event
+and access it within a [scoped slot](https://vuejs.org/v2/guide/components.html#Scoped-Slots) under the `data` property. `$event` **must be passed as the first parameter**,
+otherwise the context menu will not function properly.
+
+```html
+
+
+
+
+
+```
+
+## Props
+
+There are six props available on the context menu:
+
+- `closeOnClick`
+- `closeOnScroll`
+- `lazy`
+- `itemSelector`
+- `role`
+- `tag`
+
+All props are optional. It is **not recommended** to use anything other than `ul` as a value for the tag property. If
+you do choose a different tag, be sure to update the `itemSelector` prop accordingly to ensure proper keyboard navigation
+can be used and the accessiblity attributes can be added to each menu item.
+
+```html
+
+
+
+
+
+```
+
+## Events
+
+There are two events emitted by the context menu:
+
+- `close`
+- `open`
+
+The `close` event receives no parameters and is emitted when the context menu is closed.
+
+The `open` event is emitted when the context menu is shown and receives the following parameters:
+
+- `event`: The event that triggered the menu opening
+- `data`: Any data passed to the menu from the trigger element.
+- `top`: The top (y) position of the menu.
+- `left`: The left (x) position of the menu.
+
+```html
+
+
+
+
+
+```
+
+## Left Click
+
+If you want to use a _left_ click to open the menu instead, just replace `@contextmenu.prevent` with `@click.prevent`
+as your event listener. If you have issues with the menu closing right after you click on your target element, you
+probably just need to append the `stop` modifier onto the click event. See [issue #14](https://github.com/rawilk/vue-context/issues/14) for more information.
+
+```html
+
+
+
+
+
+```
+
+## Nested Menus
+
+Nested context menus are possible by adding the class `v-context__sub` to a child `- ` element in the menu.
+Inside the `v-context__sub` element a new container (e.g. a `
` element) with the class `v-context` must be created.
+The nested `v-context` container will be opened and positioned after the `v-context__sub` element is hovered or
+the menu element is expanded by keyboard right click.
+
+There is no limit on how far you can nest the menus, the only requirement is to use the proper classes on each nested menu.
+
+```html
+
+
+
+
+
+```
diff --git a/docs/usage/basic-usage.md b/docs/usage/basic-usage.md
new file mode 100644
index 0000000..cac19ae
--- /dev/null
+++ b/docs/usage/basic-usage.md
@@ -0,0 +1,47 @@
+---
+title: Basic Usage
+sort: 1
+---
+
+Using the menu requires very little setup as shown below.
+
+To use the context menu, you need to import it into your component and then create a trigger element to open the
+context menu on.
+
+```html
+
+
+
+
+
+```