Add toast component documentation

- Add documentation that describes when and how to use a toast message
with code snippets
- Add an informational toast method in the BVToastMixin
- Add BVToastMixin to enhaceApp to register mixin globally.

Signed-off-by: Derick Montague <derick.montague@ibm.com>
Change-Id: I89bf2aa8b3fdb9294354a80c98ccf692b6e3615a
diff --git a/docs/.vuepress/components/BmcToasts.vue b/docs/.vuepress/components/BmcToasts.vue
new file mode 100644
index 0000000..15a480f
--- /dev/null
+++ b/docs/.vuepress/components/BmcToasts.vue
@@ -0,0 +1,36 @@
+<template>
+    <div>
+        <b-button variant="success" @click="makeSuccessToast()">Show Success</b-button>
+        <b-button variant="danger" @click="makeErrorToast()">Show Error</b-button>
+        <b-button variant="warning" @click="makeWarningToast()">Show Warning</b-button>
+        <b-button variant="info" @click="makeInfoToast()">Show Info</b-button>
+    </div>
+</template>
+
+<script>
+import BVToastMixin from '../../../src/components/Mixins/BVToastMixin';
+export default {
+    name: 'BmcToasts',
+    mixins: [BVToastMixin],
+    methods: {
+        makeSuccessToast() {
+            this.successToast('This is a success toast and will be dismissed after 10 seconds.');
+        },
+        makeErrorToast() {
+            this.errorToast('This is an error toast and must be dismissed by the user.');
+        },
+        makeWarningToast() {
+            this.warningToast('This is a warning toast and must be dismissed by the user.');
+        },
+        makeInfoToast() {
+            this.infoToast('This is an info toast and must be dismissed by the user.');
+        },
+    }
+}
+</script>
+<style scoped>
+    button {
+        margin-right: .5rem;
+        margin-bottom: 1rem;
+    }
+</style>
\ No newline at end of file
diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js
index 2be074e..680c98e 100644
--- a/docs/.vuepress/config.js
+++ b/docs/.vuepress/config.js
@@ -45,6 +45,7 @@
             children: [
             "/guide/components/",
             "/guide/components/button",
+            "/guide/components/toast",
           ]
           }
         ],
diff --git a/docs/.vuepress/enhanceApp.js b/docs/.vuepress/enhanceApp.js
index 59c1f92..799cf20 100644
--- a/docs/.vuepress/enhanceApp.js
+++ b/docs/.vuepress/enhanceApp.js
@@ -1,10 +1,19 @@
 
+// OpenBMC Imports
 import "../../src/assets/styles/_obmc-custom.scss";
+import BVToastMixin from "../../src/components/Mixins/BVToastMixin";
+
+// Bootstrap-vue Plugin imports
 import {
-    ButtonPlugin
+    ButtonPlugin,
+    ToastPlugin
   } from 'bootstrap-vue';
 
 
 export default ({ Vue }) => {
       Vue.use(ButtonPlugin);
+      Vue.use(ToastPlugin);
+
+      // BMC Components and Mixins
+      Vue.mixin('BVToastMixin', BVToastMixin);
 }
\ No newline at end of file
diff --git a/docs/guide/components/toast.md b/docs/guide/components/toast.md
new file mode 100644
index 0000000..5dc2e0e
--- /dev/null
+++ b/docs/guide/components/toast.md
@@ -0,0 +1,32 @@
+# Toasts
+Use a toast message to indicate the status of a user action. For example, a user saves a form successfully, a toast message with the `success` variant is displayed.  If the user action was not successful, a toast message with the `danger` variant is displayed.
+
+There are different transitions for the toast messages. The `success` toast message will auto-hide after 10 seconds. The user must manually dismiss the `informational`, `warning`, and `error` toast messages.  The `BVToastMixin` provides a simple API that generates a toast message that meets the transition guidelines.
+
+<BmcToasts />
+
+```js{5}
+// Sample method from Reboot BMC page
+rebootBmc() {
+  this.$store
+  .dispatch('controls/rebootBmc')
+  .then(message => this.successToast(message))
+  .catch(({ message }) => this.errorToast(message));
+}
+
+// Methods used in this example
+methods: {
+  makeSuccessToast() {
+    this.successToast('This is a success toast and will be dismissed after 10 seconds.');
+  },
+  makeErrorToast() {
+    this.errorToast('This is an error toast and must be dismissed by the user.');
+  },
+  makeWarningToast() {
+    this.warningToast('This is a warning toast and must be dismissed by the user.');
+  },
+  makeInfoToast() {
+    this.infoToast('This is an info toast and must be dismissed by the user.');
+  },
+}
+```
\ No newline at end of file
diff --git a/src/assets/styles/_toast.scss b/src/assets/styles/_toast.scss
index 538f996..9295b17 100644
--- a/src/assets/styles/_toast.scss
+++ b/src/assets/styles/_toast.scss
@@ -4,7 +4,7 @@
 
 .toast {
   padding: $spacer/2 $spacer/2 $spacer/2 $spacer;
-  border-width: 0 0 0 5px;
+  border-width: 0 0 0 3px;
   .close {
     font-weight: 300;
     opacity: 1;
@@ -25,12 +25,20 @@
 
 .b-toast-success .toast {
   border-left-color: $success!important;
+  background-color: $success-light;
+}
+
+.b-toast-info .toast {
+  border-left-color: $info!important;
+  background-color: $info-light;
 }
 
 .b-toast-danger .toast {
   border-left-color: $danger!important;
+  background-color: $danger-light;
 }
 
 .b-toast-warning .toast {
   border-left-color: $warning!important;
+  background-color: $warning-light;
 }
\ No newline at end of file
diff --git a/src/components/Mixins/BVToastMixin.js b/src/components/Mixins/BVToastMixin.js
index 4fedc9a..538bb93 100644
--- a/src/components/Mixins/BVToastMixin.js
+++ b/src/components/Mixins/BVToastMixin.js
@@ -28,6 +28,15 @@
         isStatus: true,
         solid: true
       });
+    },
+    infoToast(message, title = i18n.t('global.status.informational')) {
+      this.$root.$bvToast.toast(message, {
+        title,
+        variant: 'info',
+        noAutoHide: true,
+        isStatus: true,
+        solid: true
+      });
     }
   }
 };
diff --git a/src/locales/en-US.json b/src/locales/en-US.json
index 0bf4051..1e676ee 100644
--- a/src/locales/en-US.json
+++ b/src/locales/en-US.json
@@ -28,7 +28,8 @@
       "off": "Off",
       "on": "On",
       "success": "Success",
-      "warning": "Warning"
+      "warning": "Warning",
+      "informational": "Informational"
     }
   },
   "appHeader": {