diff --git a/gulpfile.js b/gulpfile.js
index 9d5a4785e5..4b2678e2c5 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -366,6 +366,26 @@ gulp.task('sass', function() {
.pipe(gulp.dest('dist/bundles/'));
});
+gulp.task('sass.themes', function() {
+ var sass = require('gulp-sass');
+ var autoprefixer = require('gulp-autoprefixer');
+
+ function buildTheme(mode) {
+ gulp.src([
+ 'scripts/e2e/ionic.' + mode + '.dark.scss'
+ ])
+ .pipe(sass({
+ includePaths: [__dirname + '/node_modules/ionicons/dist/scss/'],
+ }).on('error', sass.logError)
+ )
+ .pipe(autoprefixer(buildConfig.autoprefixer))
+ .pipe(gulp.dest('dist/bundles/'));
+ }
+
+ buildTheme('ios');
+ buildTheme('md');
+});
+
gulp.task('fonts', function() {
gulp.src([
'ionic/fonts/*.+(ttf|woff|woff2)',
diff --git a/ionic/components.core.scss b/ionic/components.core.scss
index 9d1f1e497a..b34aa092cd 100644
--- a/ionic/components.core.scss
+++ b/ionic/components.core.scss
@@ -1,4 +1,8 @@
+// Core Globals
+@import "globals.core";
+
+
// Core App
@import
"components/app/normalize",
@@ -19,9 +23,7 @@
"components/slides/slides";
-// Ionicons
-// soon to be replaced with SVGs
-$font-path: "../fonts" !default;
+// Ionicons (to be replaced with SVGs)
$ionicons: true !default;
@if ($ionicons) {
@import "fonts/ionicons";
diff --git a/ionic/components.ios.scss b/ionic/components.ios.scss
index 297cb7a14c..c75859bb2d 100644
--- a/ionic/components.ios.scss
+++ b/ionic/components.ios.scss
@@ -1,6 +1,6 @@
-// iOS Theme
-@import "themes/default.ios";
+// iOS Globals
+@import "globals.ios";
// iOS Components
diff --git a/ionic/components.md.scss b/ionic/components.md.scss
index 2deade485b..d823c4e28f 100644
--- a/ionic/components.md.scss
+++ b/ionic/components.md.scss
@@ -1,6 +1,6 @@
-// Material Design Theme
-@import "themes/default.md";
+// Material Design Globals
+@import "globals.md";
// Material Design Components
diff --git a/ionic/globals.core.scss b/ionic/globals.core.scss
index 584ef953ae..cd12d564fd 100644
--- a/ionic/globals.core.scss
+++ b/ionic/globals.core.scss
@@ -9,3 +9,7 @@
// Global include-rtl
$include-rtl: true !default;
+
+
+// Global font path
+$font-path: "../fonts" !default;
diff --git a/ionic/themes/dark.ios.scss b/ionic/themes/dark.ios.scss
new file mode 100644
index 0000000000..2ab19c6645
--- /dev/null
+++ b/ionic/themes/dark.ios.scss
@@ -0,0 +1,68 @@
+@import "./dark";
+
+// iOS Dark Theme
+// ----------------------------------
+
+$colors-ios: map-merge($colors, ()) !default;
+
+$text-ios-color: $text-color !default;
+$paragraph-ios-color: $paragraph-color !default;
+$link-ios-color: map-get($colors-ios, primary) !default;
+$background-ios-color: $background-color !default;
+$subdued-text-ios-color: $subdued-text-color !default;
+
+$font-family-ios-base: $font-family-base !default;
+$font-size-ios-base: $font-size-base !default;
+
+
+// iOS Toolbar
+// --------------------------------------------------
+
+$toolbar-ios-background: $toolbar-background !default;
+$toolbar-ios-border-color: $toolbar-border-color !default;
+$toolbar-ios-text-color: $toolbar-text-color !default;
+$toolbar-ios-active-color: $toolbar-active-color !default;
+$toolbar-ios-inactive-color: $toolbar-inactive-color !default;
+
+
+// iOS List
+// --------------------------------------------------
+
+$list-ios-text-color: $list-text-color !default;
+$list-ios-border-color: $list-border-color !default;
+$list-ios-background-color: $list-background-color !default;
+$list-ios-activated-background-color: #d9d9d9 !default;
+
+
+// iOS Item
+// --------------------------------------------------
+
+$item-ios-padding-top: 12px !default;
+$item-ios-padding-right: 16px !default;
+$item-ios-padding-bottom: 13px !default;
+$item-ios-padding-left: 16px !default;
+$item-ios-padding-media-top: 10px !default;
+$item-ios-padding-media-bottom: 10px !default;
+$item-ios-padding-icon-top: 10px !default;
+$item-ios-padding-icon-bottom: 9px !default;
+
+
+// iOS Icon
+// --------------------------------------------------
+
+$icon-detail-push-background-svg: "" !default;
+
+@mixin ios-detail-push-icon($fg-color) {
+ $svg: str-replace($icon-detail-push-background-svg, 'fg-color', $fg-color);
+ @include svg-background-image($svg);
+}
+
+
+// iOS Body
+// --------------------------------------------------
+
+@mixin ios-body() {
+ font-family: $font-family-ios-base;
+ font-size: $font-size-ios-base;
+ background-color: $background-ios-color;
+}
diff --git a/ionic/themes/dark.md.scss b/ionic/themes/dark.md.scss
new file mode 100644
index 0000000000..c3ed5285b5
--- /dev/null
+++ b/ionic/themes/dark.md.scss
@@ -0,0 +1,73 @@
+@import "./dark";
+
+// Material Design Dark Theme
+// ----------------------------------
+
+$colors-md: map-merge($colors, ()) !default;
+
+
+$text-md-color: $text-color !default;
+$paragraph-md-color: $paragraph-color !default;
+$link-md-color: map-get($colors-md, primary) !default;
+$background-md-color: $background-color !default;
+$subdued-text-md-color: $subdued-text-color !default;
+
+$font-family-md-base: "Roboto", "Helvetica Neue", sans-serif !default;
+$font-size-md-base: $font-size-base !default;
+
+
+// Material Design Toolbar
+// --------------------------------------------------
+
+$toolbar-md-background: $toolbar-background !default;
+$toolbar-md-border-color: $toolbar-border-color !default;
+$toolbar-md-text-color: #424242 !default;
+$toolbar-md-active-color: $toolbar-active-color !default;
+$toolbar-md-inactive-color: $toolbar-inactive-color !default;
+$toolbar-md-button-color: #424242 !default;
+
+
+// Material Design List
+// --------------------------------------------------
+
+$list-md-text-color: $list-text-color !default;
+$list-md-border-color: #dedede !default;
+$list-md-background-color: $list-background-color !default;
+$list-md-activated-background-color: #f1f1f1 !default;
+
+
+// Material Design Item
+// --------------------------------------------------
+
+$item-md-padding-top: 13px !default;
+$item-md-padding-right: 16px !default;
+$item-md-padding-bottom: 13px !default;
+$item-md-padding-left: 16px !default;
+$item-md-padding-media-top: 9px !default;
+$item-md-padding-media-bottom: 9px !default;
+$item-md-padding-icon-top: 11px !default;
+$item-md-padding-icon-bottom: 10px !default;
+
+
+// Ripple Color
+// --------------------------------------------------
+
+@function ripple-background-color($button-color) {
+ @return rgba( red($button-color), green($button-color), blue($button-color), 0.1);
+}
+
+
+// Material Design Body
+// --------------------------------------------------
+
+@mixin md-body() {
+ font-family: $font-family-md-base;
+ font-size: $font-size-md-base;
+ background-color: $background-md-color;
+}
+
+
+// Roboto Font
+@at-root {
+ @import "../fonts/roboto";
+}
diff --git a/ionic/themes/dark.scss b/ionic/themes/dark.scss
new file mode 100644
index 0000000000..303631251c
--- /dev/null
+++ b/ionic/themes/dark.scss
@@ -0,0 +1,35 @@
+@import '../globals.core';
+
+
+// Dark Theme
+// ----------------------------------
+
+$colors: (
+
+ primary: #327eff,
+ secondary: #32db64,
+ danger: #f53d3d,
+ light: #f4f4f4,
+ dark: #222,
+
+) !default;
+
+
+$text-color: #fff !default;
+$paragraph-color: $text-color !default;
+$link-color: map-get($colors, primary) !default;
+$background-color: #000 !default;
+$subdued-text-color: #666 !default;
+
+$font-family-base: -apple-system, "Helvetica Neue", "Roboto", sans-serif !default;
+$font-size-base: 1.4rem !default; // 1.4rem == 14px
+
+$toolbar-background: #000 !default;
+$toolbar-border-color: #b2b2b2 !default;
+$toolbar-text-color: $text-color !default;
+$toolbar-active-color: $link-color !default;
+$toolbar-inactive-color: #8c8c8c !default;
+
+$list-text-color: $text-color !default;
+$list-background-color: $background-color !default;
+$list-border-color: #c8c7cc !default;
diff --git a/ionic/themes/default.scss b/ionic/themes/default.scss
index 005835e87b..b356430b69 100644
--- a/ionic/themes/default.scss
+++ b/ionic/themes/default.scss
@@ -1,3 +1,5 @@
+@import '../globals.core';
+
// Default Theme
// ----------------------------------
diff --git a/scripts/e2e/e2e.template.html b/scripts/e2e/e2e.template.html
index a76b7ca603..3af4d59d52 100644
--- a/scripts/e2e/e2e.template.html
+++ b/scripts/e2e/e2e.template.html
@@ -6,29 +6,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+