diff --git a/l10n/messages.pot b/l10n/messages.pot
index f2d6ca996a..51525ac442 100644
--- a/l10n/messages.pot
+++ b/l10n/messages.pot
@@ -62,9 +62,15 @@ msgstr ""
msgid "Go back to the list"
msgstr ""
+msgid "items"
+msgstr ""
+
msgid "Message limit of {count} characters reached"
msgstr ""
+msgid "More {what} …"
+msgstr ""
+
msgid "Next"
msgstr ""
diff --git a/src/components/DashboardWidget/DashboardWidget.vue b/src/components/DashboardWidget/DashboardWidget.vue
new file mode 100644
index 0000000000..d3471b7d6e
--- /dev/null
+++ b/src/components/DashboardWidget/DashboardWidget.vue
@@ -0,0 +1,387 @@
+
+
+
+## Usage
+
+### Simplest example with custom item
+```vue
+
+
+
+ {{ item.title }}
+
+
+
+
+
+```
+
+### Complete example using DashboardWidgetItem
+
+```vue
+
+
+
+
+ Nothing to display
+
+
+
+
+
+```
+
+
+
+
+
+
+
+
+ {{ halfEmptyContentString }}
+
+
+
+
+
+
+
+
+
+
+ {{ emptyContentMessage }}
+
+
+
+
+
+ {{ showMoreLabel }}
+
+
+
+
+
+
+
diff --git a/src/components/DashboardWidget/index.js b/src/components/DashboardWidget/index.js
new file mode 100644
index 0000000000..6a75be14aa
--- /dev/null
+++ b/src/components/DashboardWidget/index.js
@@ -0,0 +1,3 @@
+import DashboardWidget from './DashboardWidget.vue'
+
+export default DashboardWidget
diff --git a/src/components/DashboardWidgetItem/DashboardWidgetItem.vue b/src/components/DashboardWidgetItem/DashboardWidgetItem.vue
new file mode 100644
index 0000000000..c33849b45b
--- /dev/null
+++ b/src/components/DashboardWidgetItem/DashboardWidgetItem.vue
@@ -0,0 +1,270 @@
+
+
+
+
+### General description
+
+This component is meant to be used inside a DashboardWidget component.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ mainText }}
+
+
+ {{ subText }}
+
+
+
+
+ {{ m.text }}
+
+
+
+
+
+
+
+
+
diff --git a/src/components/DashboardWidgetItem/index.js b/src/components/DashboardWidgetItem/index.js
new file mode 100644
index 0000000000..570f67ffc3
--- /dev/null
+++ b/src/components/DashboardWidgetItem/index.js
@@ -0,0 +1,3 @@
+import DashboardWidgetItem from './DashboardWidgetItem.vue'
+
+export default DashboardWidgetItem
diff --git a/src/components/index.js b/src/components/index.js
index 67f281d86c..afe68f190a 100644
--- a/src/components/index.js
+++ b/src/components/index.js
@@ -55,6 +55,8 @@ export { default as CheckboxRadioSwitch } from './CheckboxRadioSwitch/index.js'
export { default as ColorPicker } from './ColorPicker/index.js'
export { default as Content } from './Content/index.js'
export { default as CounterBubble } from './CounterBubble/index.js'
+export { default as DashboardWidget } from './DashboardWidget/index.js'
+export { default as DashboardWidgetItem } from './DashboardWidgetItem/index.js'
export { default as DatetimePicker } from './DatetimePicker/index.js'
export { default as EmptyContent } from './EmptyContent/index.js'
export { default as ListItem } from './ListItem/index.js'
diff --git a/styleguide.config.js b/styleguide.config.js
index 1aa48c6b75..4742a85f35 100644
--- a/styleguide.config.js
+++ b/styleguide.config.js
@@ -69,6 +69,7 @@ module.exports = {
'src/components/AppSidebar*/*.vue',
'src/components/Breadcrumb*/*.vue',
'src/components/Content/*.vue',
+ 'src/components/Dashboard*/*.vue',
'src/components/Multiselect*/*.vue',
'src/components/PopoverMenu/!(PopoverMenu).vue',
'src/components/ListItem*/*.vue',
@@ -125,6 +126,12 @@ module.exports = {
'src/components/Breadcrumb*/*.vue',
],
},
+ {
+ name: 'Dashboard',
+ components: [
+ 'src/components/Dashboard*/*.vue',
+ ],
+ },
{
name: 'List items',
components: [