diff --git a/src/system/components/layout/Grid/Grid.vue b/src/system/components/layout/Grid/Grid.vue
new file mode 100644
index 000000000..6f2cc0c08
--- /dev/null
+++ b/src/system/components/layout/Grid/Grid.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/system/components/layout/Grid/GridItem.vue b/src/system/components/layout/Grid/GridItem.vue
new file mode 100644
index 000000000..3fc0eae2e
--- /dev/null
+++ b/src/system/components/layout/Grid/GridItem.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
diff --git a/src/system/components/layout/Grid/demo.md b/src/system/components/layout/Grid/demo.md
new file mode 100644
index 000000000..9bdbc189f
--- /dev/null
+++ b/src/system/components/layout/Grid/demo.md
@@ -0,0 +1,78 @@
+## Column Width
+
+All columns share the space in the grid evenly and grow and shrink dynamically.
+
+You can set a minimum width beyond which columns will continue to grow until there is enough space to fit another column of minimum width. (Resize the window to see the effect.)
+```
+
+ same
+ same
+ same
+ same
+
+```
+
+## Gaps
+
+You can set a gap which will be applied as a vertical and horizontal space between all grid items. Allowed values are [the common space sizes](/design-tokens/#spaceSize) and `0`. The default is `small`.
+```
+
+ same
+ same
+ same
+ same
+
+```
+
+## Grid Item Size
+
+Once the grid is defined a grid item can span several columns and/or rows. You can adjust this by setting the column span and/or row span of each item individually. The column span can also be set to `'fullWidth'`.
+```
+
+ full width
+ 2 columns, 6 rows
+ 8 rows
+ default (1 column, 4 rows)
+
+```
+
+## Row Height
+
+You can set the height of a row – but this is only recommended in combination with setting the grid item property `row-span`! With these values you can fine tune the height of grid items which will always be a multiple of the defined `row-height`.
+
+Low row height leads to a more fine-grained item height:
+```
+
+ same
+ same
+ same
+
+```
+
+High row height leads to a rougher item height:
+```
+
+ same
+ same
+ same
+
+```
+
+## Masonry Layout
+
+In a classic masonry layout items usually have the same width but different heights and are sorted from left to right then top to bottom. You can achieve this by calculating and setting the `row-span` programmatically for each grid item, depending on its contents.
+
+Some items may move slightly out of order to make sure existing rows are filled before creating new ones.
+```
+
+ first
+ second
+ third
+ fourth
+ fifth
+ sixth
+ seventh
+
+```
+
+**Hint:** Make sure to pass `numbers` with a colon (shortcut for `v-bind:`) so they are not interpreted as strings. For a more thorough explanation visit [the Vue.js docs](https://vuejs.org/v2/guide/components-props.html#Passing-a-Number).
diff --git a/src/system/components/layout/Grid/style.scss b/src/system/components/layout/Grid/style.scss
new file mode 100644
index 000000000..08069ea71
--- /dev/null
+++ b/src/system/components/layout/Grid/style.scss
@@ -0,0 +1,3 @@
+.ds-grid {
+ display: grid;
+}
diff --git a/src/system/components/layout/Placeholder/style.scss b/src/system/components/layout/Placeholder/style.scss
index 15a71232e..67cc1fefa 100644
--- a/src/system/components/layout/Placeholder/style.scss
+++ b/src/system/components/layout/Placeholder/style.scss
@@ -1,5 +1,6 @@
.ds-placeholder {
@include reset;
+ height: 100%;
padding: $space-base;
display: flex;
align-items: center;
@@ -10,4 +11,4 @@
@media #{$media-query-medium} {
padding: $space-x-large 0;
}
-}
\ No newline at end of file
+}