diff --git a/overview/README.md b/overview/README.md
index 3f81f01..bf002e1 100644
--- a/overview/README.md
+++ b/overview/README.md
@@ -20,4 +20,6 @@
## Layout components
-[](../ui/list.reel)
\ No newline at end of file
+[](../ui/list.reel)
+[](../ui/alert.reel)
+[](../ui/confirm.reel)
\ No newline at end of file
diff --git a/overview/ui/main.reel/main.css b/overview/ui/main.reel/main.css
index 58be560..9b8fe18 100644
--- a/overview/ui/main.reel/main.css
+++ b/overview/ui/main.reel/main.css
@@ -87,9 +87,6 @@ td:nth-child(2) { background: hsl(0,0%,90%); }
td:nth-child(3) { background: hsl(0,0%,96%); }
td:nth-child(4) { background: hsl(0,0%,24%); }
-.layout td:nth-child(3) { background: hsl(0,0%,70%); }
-.layout td:nth-child(4) { background: hsl(0,0%,40%); }
-
.modal td:nth-child(2) {
background: hsla(0,0%,0%,.1);
}
@@ -100,3 +97,13 @@ td:nth-child(4) { background: hsl(0,0%,24%); }
.layout td:nth-child(4) {
background: hsl(0,0%,40%);
}
+
+.test-alert {
+ display: inline-block !important;
+}
+
+.test-alert .montage-Overlay {
+ position: relative !important;
+ display: inline-block !important;
+ margin: 0px;
+}
\ No newline at end of file
diff --git a/overview/ui/main.reel/main.html b/overview/ui/main.reel/main.html
index 619aa2a..d976ae6 100644
--- a/overview/ui/main.reel/main.html
+++ b/overview/ui/main.reel/main.html
@@ -168,6 +168,20 @@
+```
+
+
+
+## Available properties
+
+* `title` - The text to appear in the title bar.
+* `message` - The text to appear in the body.
+* `okLabel` - The text to appear in the button to dismiss the alert.
+
+
+
+## Customizing with CSS
+
+* `.digit-Alert` - The container element
+* `.digit-Alert-header` - The header element
+* `.digit-Alert-content` - The main content element
+* `.digit-Alert-footer` - The footer element
+
+```css
+.digit-Alert-header {
+ background: red;
+}
+```
diff --git a/ui/alert.reel/alert.css b/ui/alert.reel/alert.css
new file mode 100644
index 0000000..591909b
--- /dev/null
+++ b/ui/alert.reel/alert.css
@@ -0,0 +1,113 @@
+.digit-Alert-Overlay {
+ margin: 20px auto;
+ max-width: 300px;
+ min-width: 200px;
+ font-size: 16px;
+ border-radius: 6px;
+ background-color: hsl(0,0%,96%);
+}
+
+.digit-Alert--show {
+ opacity: 1;
+ transform: scale(1);
+ -moz-transform: scale(1);
+ -webkit-transform: scale(1);
+ transition-timing-function: cubic-bezier(0.23,0.21,0.00,1.00);
+ -moz-transition-timing-function: cubic-bezier(0.23,0.21,0.00,1.00);
+ -webkit-transition-timing-function: cubic-bezier(0.23,0.21,0.00,1.00);
+}
+
+.digit-Alert-content {
+ padding: 10px;
+ text-align: center;
+}
+
+
+.digit-Alert-header,
+.digit-Alert-footer {
+ padding: 10px;
+ background-color: hsl(0,0%,90%);
+}
+
+.digit-Alert-header {
+ text-align: center;
+ font-size: 1.2em;
+ font-weight: bold;
+ border-bottom: 1px solid hsla(0,0%,0%,.06);
+ border-top-left-radius: inherit;
+ border-top-right-radius: inherit;
+}
+
+.digit-Alert-footer {
+ text-align: right;
+ border-top: 1px solid hsla(0,0%,0%,.06);
+ border-bottom-left-radius: inherit;
+ border-bottom-right-radius: inherit;
+}
+
+.digit-Button.digit-Alert-button--cancel {
+ color: hsl(0,0%,60%);
+ border-color: hsl(0,0%,80%);
+ background-color: transparent;
+}
+
+
+/* Light ------------------------------------ */
+
+
+[data-montage-skin="light"] .digit-Alert {
+ color: hsl(0,0%,40%);
+ text-shadow: 0 1px 0 hsla(0,0%,100%,.4);
+ background: hsl(0,0%,90%);
+}
+
+[data-montage-skin="light"] .digit-Alert-header,
+[data-montage-skin="light"] .digit-Alert-footer {
+ background-image: linear-gradient(top, hsl(0,0%,96%), hsl(0,0%,92%));
+ background-image: -moz-linear-gradient(top, hsl(0,0%,96%), hsl(0,0%,92%));
+ background-image: -webkit-linear-gradient(top, hsl(0,0%,96%), hsl(0,0%,92%));
+}
+
+[data-montage-skin="light"] .digit-Alert-header {
+ border-bottom: 1px solid hsla(0,0%,0%,.12);
+}
+
+[data-montage-skin="light"] .digit-Button.digit-Alert-button--cancel {
+ color: hsl(0,0%,60%);
+ border-color: hsl(0,0%,86%);
+ background: transparent;
+ box-shadow: inset 0 1px 1px hsla(0,0%,100%,.2), inset 0 -1px 1px hsla(0,0%,0%,.04), 0 1px 0 hsla(0,0%,100%,.6);
+}
+
+
+/* Dark ------------------------------------ */
+
+[data-montage-skin="dark"] .digit-Alert {
+ background: hsl(0,0%,20%);
+}
+
+[data-montage-skin="dark"] .digit-Alert-content {
+ color: hsl(0,0%,40%);
+ text-shadow: 0 1px 0 hsla(0,0%,100%,.4);
+ background: hsl(0,0%,90%);
+}
+
+[data-montage-skin="dark"] .digit-Alert-header,
+[data-montage-skin="dark"] .digit-Alert-footer {
+ background-image: linear-gradient(top, hsl(0,0%,26%), hsl(0,0%,20%) );
+ background-image: -moz-linear-gradient(top, hsl(0,0%,26%), hsl(0,0%,20%) );
+ background-image: -webkit-linear-gradient(top, hsl(0,0%,26%), hsl(0,0%,20%) );
+}
+
+[data-montage-skin="dark"] .digit-Alert-header {
+ color: hsl(0,0%,70%);
+ text-shadow: none;
+ border-bottom: 1px solid hsla(0,0%,100%,.9);
+}
+
+[data-montage-skin="dark"] .digit-Button.digit-Alert-button--cancel {
+ color: hsl(0,0%,50%);
+ border-color: hsl(0,0%,16%);
+ background: transparent;
+ box-shadow: inset 0 1px 0 hsla(0,0%,100%,.06), inset 0 -1px 1px hsla(0,0%,0%,.04), 0 1px 0 hsla(0,0%,100%,.1);
+}
\ No newline at end of file
diff --git a/ui/alert.reel/alert.html b/ui/alert.reel/alert.html
new file mode 100644
index 0000000..94b572b
--- /dev/null
+++ b/ui/alert.reel/alert.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ui/alert.reel/alert.js b/ui/alert.reel/alert.js
new file mode 100644
index 0000000..dab46cd
--- /dev/null
+++ b/ui/alert.reel/alert.js
@@ -0,0 +1,23 @@
+/**
+ * @module ui/alert.reel
+ */
+var AbstractAlert = require("montage/ui/base/abstract-alert").AbstractAlert;
+
+/**
+ * @class Alert
+ * @extends AbstractAlert
+ */
+exports.Alert = AbstractAlert.specialize(/** @lends Alert# */ {
+ constructor: {
+ value: function Alert() {
+ this.super();
+ }
+ },
+
+ templateDidLoad: {
+ value: function() {
+ this._overlay = this.templateObjects.modalOverlay;
+ this._okButton = this.templateObjects.okButton;
+ }
+ }
+});
diff --git a/ui/alert.reel/alert.meta b/ui/alert.reel/alert.meta
new file mode 100644
index 0000000..97f3aac
--- /dev/null
+++ b/ui/alert.reel/alert.meta
@@ -0,0 +1,22 @@
+{
+ "blueprint_parent": {
+ "prototype": "montage/core/meta/blueprint-reference",
+ "properties": {
+ "valueReference": {
+ "blueprintName": "AbstractAlert",
+ "blueprintModuleId": "montage/ui/base/abstract-alert.meta",
+ "prototypeName": "AbstractAlert"
+ }
+ }
+ },
+
+ "root": {
+ "prototype": "montage/core/meta/blueprint",
+ "properties": {
+ "name": "Alert",
+ "blueprintModuleId": "ui/alert.reel/alert.meta",
+ "prototypeName": "Alert",
+ "parent": {"@": "blueprint_parent"}
+ }
+ }
+}
diff --git a/ui/alert.reel/screenshot.png b/ui/alert.reel/screenshot.png
new file mode 100644
index 0000000..237e2fd
Binary files /dev/null and b/ui/alert.reel/screenshot.png differ
diff --git a/ui/confirm.reel/README.md b/ui/confirm.reel/README.md
new file mode 100644
index 0000000..754aa80
--- /dev/null
+++ b/ui/confirm.reel/README.md
@@ -0,0 +1,48 @@
+# Confirm
+
+
+
+The confirm asks the user to accept or reject a message.
+
+## How to use
+
+```json
+"confirm": {
+ "prototype": "ui/confirm.reel",
+ "properties": {
+ "element": {"#": "confirm"},
+ "title": "Warning",
+ "message": "Are you sure you want to do this?",
+ "okLabel": "Ok",
+ "cancelLabel": "Nope!"
+ }
+}
+```
+
+```html
+
+```
+
+
+
+## Available properties
+
+* `title` - The text to appear in the title bar.
+* `message` - The text to appear in the body.
+* `okLabel` - The text to appear in the button to accept.
+* 'cancelLabel' - The text to appear in the button to cancel.
+
+
+
+## Customizing with CSS
+
+* `.digit-Confirm` - The container element
+* `.digit-Confirm-header` - The header element
+* `.digit-Confirm-content` - The main content element
+* `.digit-Confirm-footer` - The footer element
+
+```css
+.digit-Confirm-header {
+ background: red;
+}
+```
diff --git a/ui/confirm.reel/confirm.html b/ui/confirm.reel/confirm.html
new file mode 100644
index 0000000..68b04e0
--- /dev/null
+++ b/ui/confirm.reel/confirm.html
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ui/confirm.reel/confirm.js b/ui/confirm.reel/confirm.js
new file mode 100644
index 0000000..9706479
--- /dev/null
+++ b/ui/confirm.reel/confirm.js
@@ -0,0 +1,24 @@
+/**
+ * @module ui/confirm.reel
+ */
+var AbstractConfirm = require("montage/ui/base/abstract-confirm").AbstractConfirm;
+
+/**
+ * @class Confirm
+ * @extends AbstractConfirm
+ */
+exports.Confirm = AbstractConfirm.specialize(/** @lends Confirm# */ {
+ constructor: {
+ value: function Confirm() {
+ this.super();
+ }
+ },
+
+ templateDidLoad: {
+ value: function() {
+ this._overlay = this.templateObjects.modalOverlay;
+ this._okButton = this.templateObjects.okButton;
+ this._cancelButton = this.templateObjects.cancelButton;
+ }
+ }
+});
diff --git a/ui/confirm.reel/confirm.meta b/ui/confirm.reel/confirm.meta
new file mode 100644
index 0000000..dd1a758
--- /dev/null
+++ b/ui/confirm.reel/confirm.meta
@@ -0,0 +1,22 @@
+{
+ "blueprint_parent": {
+ "prototype": "montage/core/meta/blueprint-reference",
+ "properties": {
+ "valueReference": {
+ "blueprintName": "AbstractConfirm",
+ "blueprintModuleId": "montage/ui/base/abstract-confirm.meta",
+ "prototypeName": "AbstractConfirm"
+ }
+ }
+ },
+
+ "root": {
+ "prototype": "montage/core/meta/blueprint",
+ "properties": {
+ "name": "Confirm",
+ "blueprintModuleId": "ui/confirm.reel/confirm.meta",
+ "prototypeName": "Confirm",
+ "parent": {"@": "blueprint_parent"}
+ }
+ }
+}
diff --git a/ui/confirm.reel/screenshot.png b/ui/confirm.reel/screenshot.png
new file mode 100644
index 0000000..f0637bd
Binary files /dev/null and b/ui/confirm.reel/screenshot.png differ