diff --git a/lib/common/components/Zippy/zippy.html b/lib/common/components/Zippy/zippy.html
new file mode 100644
index 00000000..67a784d2
--- /dev/null
+++ b/lib/common/components/Zippy/zippy.html
@@ -0,0 +1,9 @@
+
+
+ {{title}}
+ {{ visible ? '▾' : '▸' }}
+
+
+
+
+
diff --git a/lib/common/components/Zippy/zippy.js b/lib/common/components/Zippy/zippy.js
new file mode 100644
index 00000000..c542d11f
--- /dev/null
+++ b/lib/common/components/Zippy/zippy.js
@@ -0,0 +1,28 @@
+'use strict';
+
+import {Component, View, EventEmitter, CORE_DIRECTIVES} from 'angular2/angular2';
+
+@Component({
+ selector: 'zippy',
+ events: ['open', 'close'],
+ inputs: ['title', 'visible', 'type', 'empty']
+})
+@View({
+ templateUrl: './lib/common/components/Zippy/zippy.html',
+ styleUrls: ['./lib/common/components/Zippy/zippy.css'],
+ directives: [CORE_DIRECTIVES]
+})
+export class Zippy {
+
+ constructor() {
+ this.type = 'general';
+ this.visible = false;
+ this.open = new EventEmitter();
+ this.close = new EventEmitter();
+ }
+
+ toggle() {
+ this.visible = !this.visible;
+ (this.visible) ? this.open.next() : this.close.next();
+ }
+}
diff --git a/lib/common/components/Zippy/zippy.scss b/lib/common/components/Zippy/zippy.scss
new file mode 100644
index 00000000..81412796
--- /dev/null
+++ b/lib/common/components/Zippy/zippy.scss
@@ -0,0 +1,57 @@
+$zippy-success-bg-color: #E1F5E3;
+$zippy-success-color: #09AC1C;
+
+$zippy-error-bg-color: #FBE7E7;
+$zippy-error-color: #E54541;
+
+$zippy-info-bg-color: #E1EFF5;
+$zippy-info-color: #096DAC;
+
+$zippy-redirect-bg-color: #F5F0E1;
+$zippy-redirect-color: #AC7C09;
+
+.zippy-title {
+ padding: 10px;
+ margin: 2px 0;
+ background-color: #f2f2f2;
+ cursor: pointer;
+
+ .zippy-success > & {
+ color: $zippy-success-color;
+ background-color: $zippy-success-bg-color;
+ }
+
+ .zippy-error > & {
+ color: $zippy-error-color;
+ background-color: $zippy-error-bg-color;
+ }
+
+ .zippy-redirect > & {
+ color: $zippy-redirect-color;
+ background-color: $zippy-redirect-bg-color;
+ }
+
+ .zippy-info > & {
+ color: $zippy-info-color;
+ background-color: $zippy-info-bg-color;
+ }
+}
+
+span.zippy-indicator {
+ float: right;
+ font-size: 1.2em;
+}
+
+.zippy-content {
+ padding: 15px 0;
+}
+
+.zippy-empty {
+ .zippy-indicator {
+ display: none;
+ }
+
+ .zippy-content {
+ display: none;
+ }
+}