diff --git a/src/components/v-divider/index.ts b/src/components/v-divider/index.ts
new file mode 100644
index 0000000000..b462504cae
--- /dev/null
+++ b/src/components/v-divider/index.ts
@@ -0,0 +1,4 @@
+import VDivider from './v-divider.vue';
+
+export { VDivider };
+export default VDivider;
diff --git a/src/components/v-divider/readme.md b/src/components/v-divider/readme.md
new file mode 100644
index 0000000000..3463574495
--- /dev/null
+++ b/src/components/v-divider/readme.md
@@ -0,0 +1,26 @@
+# Divider
+
+Divides content. Made to be used in `v-list` or `v-tabs` components.
+
+## Usage
+
+```html
+
+```
+
+## Props
+| Prop | Description | Default |
+|------------|-----------------------------------------------------|---------|
+| `vertical` | Render the divider vertically | `false` |
+| `inset` | Insets the divider to align with the (list) content | `false` |
+
+## Events
+n/a
+
+## Slots
+n/a
+
+## CSS Variables
+| Variable | Default |
+|---------------------|-------------------------------------|
+| `--v-divider-color` | `var(--foreground-color-tertiary)` |
diff --git a/src/components/v-divider/v-divider.story.ts b/src/components/v-divider/v-divider.story.ts
new file mode 100644
index 0000000000..cc5642cd66
--- /dev/null
+++ b/src/components/v-divider/v-divider.story.ts
@@ -0,0 +1,84 @@
+import VDivider from './v-divider.vue';
+import readme from './readme.md';
+import withPadding from '../../../.storybook/decorators/with-padding';
+import { withKnobs, boolean } from '@storybook/addon-knobs';
+import { defineComponent } from '@vue/composition-api';
+import VList, {
+ VListItem,
+ VListItemContent,
+ VListItemTitle,
+ VListItemIcon,
+} from '@/components/v-list';
+import VIcon from '@/components/v-icon/';
+
+export default {
+ title: 'Components / Divider',
+ parameters: {
+ notes: readme,
+ },
+ decorators: [withPadding, withKnobs],
+};
+
+export const basic = () =>
+ defineComponent({
+ components: { VDivider },
+ props: {
+ vertical: {
+ default: boolean('Vertical', false),
+ },
+ inset: {
+ default: boolean('Inset', false),
+ },
+ },
+ template: `
+
+ `,
+ });
+
+export const inList = () =>
+ defineComponent({
+ components: {
+ VDivider,
+ VList,
+ VListItem,
+ VListItemContent,
+ VListItemIcon,
+ VListItemTitle,
+ VIcon,
+ },
+ props: {
+ inset: {
+ default: boolean('Inset', false),
+ },
+ },
+ template: `
+
+
+ {}">
+
+
+ Item {{ n }}
+
+
+
+
+
+ {}">
+
+
+ Item {{ n + 3 }}
+
+
+
+
+
+ {}">
+
+
+ Item {{ n + 4 }}
+
+
+
+
+ `,
+ });
diff --git a/src/components/v-divider/v-divider.test.ts b/src/components/v-divider/v-divider.test.ts
new file mode 100644
index 0000000000..90b3e67b08
--- /dev/null
+++ b/src/components/v-divider/v-divider.test.ts
@@ -0,0 +1,14 @@
+import { shallowMount, createLocalVue } from '@vue/test-utils';
+import VueCompositionAPI from '@vue/composition-api';
+
+import VDivider from './v-divider.vue';
+
+const localVue = createLocalVue();
+localVue.use(VueCompositionAPI);
+
+describe('Components / Divider', () => {
+ it('Renders', () => {
+ const component = shallowMount(VDivider, { localVue });
+ expect(component.isVueInstance()).toBe(true);
+ });
+});
diff --git a/src/components/v-divider/v-divider.vue b/src/components/v-divider/v-divider.vue
new file mode 100644
index 0000000000..bfd9b98ab5
--- /dev/null
+++ b/src/components/v-divider/v-divider.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+