- {disableButton}
{refreshFullButton}
diff --git a/client/src/components/Toasts/Toast.css b/client/src/components/Toasts/Toast.css
new file mode 100644
index 00000000..ff3269b7
--- /dev/null
+++ b/client/src/components/Toasts/Toast.css
@@ -0,0 +1,60 @@
+.toasts {
+ position: fixed;
+ right: 24px;
+ bottom: 24px;
+ z-index: 10;
+ width: 345px;
+}
+
+.toast {
+ display: flex;
+ align-items: flex-start;
+ margin-bottom: 12px;
+ padding: 16px;
+ font-weight: 600;
+ color: #ffffff;
+ border-radius: 4px;
+ background-color: rgba(236, 53, 53, 0.75);
+}
+
+.toast--success {
+ background-color: rgba(90, 173, 99, 0.75);
+}
+
+.toast:last-child {
+ margin-bottom: 0;
+}
+
+.toast__content {
+ flex: 1 1 auto;
+ margin: 0 12px 0 0;
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+
+.toast__dismiss {
+ display: block;
+ flex: 0 0 auto;
+ padding: 0;
+ background: transparent;
+ border: 0;
+ cursor: pointer;
+}
+
+.toast-enter {
+ opacity: 0.01;
+}
+
+.toast-enter-active {
+ opacity: 1;
+ transition: all 0.3s ease-out;
+}
+
+.toast-exit {
+ opacity: 1;
+}
+
+.toast-exit-active {
+ opacity: 0.01;
+ transition: all 0.3s ease-out;
+}
diff --git a/client/src/components/Toasts/Toast.js b/client/src/components/Toasts/Toast.js
new file mode 100644
index 00000000..9d85f048
--- /dev/null
+++ b/client/src/components/Toasts/Toast.js
@@ -0,0 +1,38 @@
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
+
+class Toast extends Component {
+ componentDidMount() {
+ const timeout = this.props.type === 'error' ? 30000 : 5000;
+
+ setTimeout(() => {
+ this.props.removeToast(this.props.id);
+ }, timeout);
+ }
+
+ shouldComponentUpdate() {
+ return false;
+ }
+
+ render() {
+ return (
+