diff --git a/code/espurna/data/favicon.ico b/code/espurna/data/favicon.ico deleted file mode 100644 index ee8bae72..00000000 Binary files a/code/espurna/data/favicon.ico and /dev/null differ diff --git a/code/espurna/data/images/check.png b/code/espurna/data/images/check.png deleted file mode 100644 index 45edff57..00000000 Binary files a/code/espurna/data/images/check.png and /dev/null differ diff --git a/code/espurna/data/index.html.gz b/code/espurna/data/index.html.gz index 3999dd53..165a47ba 100644 Binary files a/code/espurna/data/index.html.gz and b/code/espurna/data/index.html.gz differ diff --git a/code/gulpfile.js b/code/gulpfile.js index a890410c..26f08893 100644 --- a/code/gulpfile.js +++ b/code/gulpfile.js @@ -33,6 +33,8 @@ const del = require('del'); const useref = require('gulp-useref'); const gulpif = require('gulp-if'); const inline = require('gulp-inline'); +const inlineImages = require('gulp-css-base64'); +const favicon = require('gulp-base64-favicon'); const destination = 'espurna/data/'; @@ -51,10 +53,18 @@ gulp.task('files', function() { .pipe(gulp.dest(destination)); }); +gulp.task('inline_images', function() { + return gulp.src(['html/src/checkboxes.css']) + .pipe(inlineImages({ + baseDir: "../" + })) + .pipe(gulp.dest('html/')); +}); -/* Process HTML, CSS, JS --- INLINE --- */ +/* Process HTML, CSS, JS, IMAGES and FAVICON --- INLINE --- */ gulp.task('inline', function() { return gulp.src('html/*.html') + .pipe(favicon()) .pipe(inline({ base: 'html/', js: uglify, @@ -90,5 +100,5 @@ gulp.task('html', function() { /* Build file system */ gulp.task('buildfs_split', ['clean', 'files', 'html']); -gulp.task('buildfs_inline', ['clean', 'files', 'inline']); +gulp.task('buildfs_inline', ['clean', 'inline_images', 'inline']); gulp.task('default', ['buildfs_inline']); diff --git a/code/html/checkboxes.css b/code/html/checkboxes.css index 59ebbfb5..0b4c7143 100644 --- a/code/html/checkboxes.css +++ b/code/html/checkboxes.css @@ -46,16 +46,14 @@ div.iPhoneCheckBorderOn { left: 0; width: 4px; height: 100%; - background-image: url('images/check.png'); + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAbCAYAAABbcS4wAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QIRFR85CxvmEAAAAPhJREFUGNM1jjtOA1EUQ8+1PW9GgIiIkChooGITtBSwF3YAVLRIlKyGkoLFIGgSPhqF4iWlLdvHBXB2fX8KPAGXdX7zcAG8jQdHy7a/ILIep8Pj5Xh4ghxi+WpanJBxn3IjshYZD3Cb8DARy7hNpO2hjMQ2ScNDQ8PUDWXADqUgx0jeCiHblIQkVEZxUIGqkKpXqKKKbiRBJVSiUKc0G8V4MEnCOIjEONvEFJNm3Nw3yp3g2lJchQsi+g8L7N0PG6sn7F3FRVR4l0h1kZ0hbbAhtUGWv8SM2FACyXqdf1eImWJGlu/mv/XH9+qT+WdNAdy+vJ8Cz8DlP5OVH/+5ZpfdAAAAAElFTkSuQmCC'); background-repeat: no-repeat; - background-position: 0px 0px; } label.iPhoneCheckLabelOn { color: white; - background-image: url('images/check.png'); + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAbCAYAAABbcS4wAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QIRFSAYH6zccgAAALhJREFUGNNdkM1VBDEMgz85yrALHHg0sBRAIxRFm5TAiRLYJw4O7Ay5OZasH728vYfd8/PllQBCIPA8P4F6G8A+PyIVC4Z99wCqtQd7uweBJAh4zO0mEXCN+TcLcJU4+CgVWX8KWFUUaQ39UtJOA7gQUXNKwdODvYxPc5C97GkbRx8ukdAnJVwSVIAO6FG3YCDssWtH4FFC0PbDf0SwV1kdUE3JQkhgcqUkIlCCuX6vTtfRr8+PQ2M/SZ8sUjiJqjYAAAAASUVORK5CYII='); background-repeat: repeat-x; - background-position: 0px -27px; text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.6); left: 0; padding-top: 5px; @@ -69,9 +67,8 @@ label.iPhoneCheckLabelOn span { label.iPhoneCheckLabelOff { color: #8b8b8b; - background-image: url('images/check.png'); + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAbCAYAAABbcS4wAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QIRFSAnqcrxTwAAAK9JREFUGNNVkEt2wzAMAwcU6ubjNhfyHXzg5mh5RheWnUhLiBiQ0Lqu4eN5WRYG4ffxAIIQAfwzz+PEPN8JoD7n+60L2iVfLtf+HZDw9D1xegDbHqGfQgA3N+CNsctERyy4teI4RoC/pgkIyR7jqkI618B2283sIEsN1DdTcKsipMcIV6sO2G2uUq9HJMFVbbylqkahVZEOhMOiQEQEDhvZ3gX49do4K1Pw8/k3QP8BlXw2dG+s/nEAAAAASUVORK5CYII='); background-repeat: repeat-x; - background-position: 0px -54px; text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.6); text-align: right; margin-right: 4px; @@ -87,9 +84,8 @@ div.iPhoneCheckBorderOff { position: absolute; width: 4px; height: 100%; - background-image: url('images/check.png'); + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAbCAYAAABbcS4wAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QIRFSEDjNIk3wAAAQxJREFUGNNNkTtOA0EQRF939Sz+jBzg2EchJLaPgsQBnHAhx6TEPsSKNUgGIhJsdodg1sid9VNVV0lt6/X6FXgBHne7XWfb7bYcjx+8vR2+gLtYLpcsFgsmk5vbtm2fPOdMzpnVaoWk+5jnzOn0g+RIyjGfzUgKDEMSMZ1OcTeGMhARRNM0lFLo+xGklBiGgfP5XEFE0Pc9kRIRgSuEFIRUQShqpI/AvS6Sk1IimtTQDz36jfGGnPBAHqSUcEXUhuFVYeaYGYZVhcsxGeajQma4OX4BdhX7D1yO2cXijruuLOa4G2Y2VjfqFJD07YVCGQY+Po9Iera2bUvXHTgcuvqX/X7/DrxIethsNt0fBBNKg/wAUGwAAAAASUVORK5CYII='); background-repeat: no-repeat; - background-position: 0px -81px; } .iPhoneCheckHandle { @@ -100,9 +96,8 @@ div.iPhoneCheckBorderOff { top: 0; left: 0; width: 0; - background-image: url('images/check.png'); + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAbCAYAAABbcS4wAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QIRFSEzqgsUcwAAANZJREFUGNNVkD1qw0AUhL+Z3T5gNRY+QECFTuA2t0rpNpAzbKNbpEypXq0OEAjEcRGZTbH6c7EsDDPzvvcEkFI6AW/AWSmlZ+CzaZpDXddE4NK27aGqKn6uVwy81Mcjv7cb5EyU9BRiRAASsfwqD4qAhC3yIgiQvDkkYRmAuOatx1J7dsydJaK8lPoxUsYGIC+lFI68H2uRs/foAa+lswO8oa8cC6kl0G5byZuw7rKtXwRlYeB7uk9YBd+SPsZxJISAZAy89n3/NQwD0/RXjt113Ql4B87/SLstv7YcoHkAAAAASUVORK5CYII='); background-repeat: no-repeat; - background-position: 0px -108px; padding-left: 4px; } @@ -110,9 +105,8 @@ div.iPhoneCheckBorderOff { position: absolute; width: 100%; height: 100%; - background-image: url('images/check.png'); + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAbCAYAAABbcS4wAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QIRFSILqST/LgAAAJVJREFUGNNVkcsVxSAIRO8g/ReRbUrzpYZ5CzAaN3pgPgzqui5zHM05jQEMEvl7nt0FMtRP15VS7DaQklAD8FFoABkRnKoZsQQFuEW1CN4UY0QUxWiLKgJZSAaLDEV7arnEGbYLNpbQsq3RK10NBqiduvCJP3pbNf5GcOzjXZB7UgC1dcaLaJeiqBkmxxjfb7jv+5PlD4a+KFo56aIvAAAAAElFTkSuQmCC'); background-repeat: repeat-x; - background-position: 0px -135px; } .iPhoneCheckHandleRight { @@ -120,7 +114,6 @@ div.iPhoneCheckBorderOff { height: 100%; width: 4px; right: 0px; - background-image: url('images/check.png'); + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAbCAYAAABbcS4wAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QIRFSIm7PujWwAAANdJREFUGNNlkTFuhDAQRd8fU6ZKA7fgBFvmEDScIVKukJNwBNq0uQESLUIKItVW62y1mRRrDNEW1thf/z/PaNR13RfwCby1bbtoWRZf15VxHM/AyeIlUpYldV0/A+/mONefK1VVAbwUkgAIISDpKQtbLcyEu3ZBMtI9CWboELFghqR8iuMjQe0eVmYIXIjNIQOBPUYSdHPs0GDgfuxU2Q5gdmgsfys34AHKPj7Of6hLu0O6j3+7/QJczMwIITDPM5I+FGP0aZoYhuEMnIq+77/T5l6bpln+AEtTOnfJ0VScAAAAAElFTkSuQmCC'); background-repeat: no-repeat; - background-position: 0px -162px; } diff --git a/code/html/images/border-off.png b/code/html/images/border-off.png new file mode 100644 index 00000000..6bfa573b Binary files /dev/null and b/code/html/images/border-off.png differ diff --git a/code/html/images/border-on.png b/code/html/images/border-on.png new file mode 100644 index 00000000..4b9596ee Binary files /dev/null and b/code/html/images/border-on.png differ diff --git a/code/html/images/handle-center.png b/code/html/images/handle-center.png new file mode 100644 index 00000000..d280d61f Binary files /dev/null and b/code/html/images/handle-center.png differ diff --git a/code/html/images/handle-left.png b/code/html/images/handle-left.png new file mode 100644 index 00000000..8eacd8d2 Binary files /dev/null and b/code/html/images/handle-left.png differ diff --git a/code/html/images/handle-right.png b/code/html/images/handle-right.png new file mode 100644 index 00000000..2eaf8b2c Binary files /dev/null and b/code/html/images/handle-right.png differ diff --git a/code/html/images/label-off.png b/code/html/images/label-off.png new file mode 100644 index 00000000..1e2faaea Binary files /dev/null and b/code/html/images/label-off.png differ diff --git a/code/html/images/label-on.png b/code/html/images/label-on.png new file mode 100644 index 00000000..888a11b6 Binary files /dev/null and b/code/html/images/label-on.png differ diff --git a/code/html/index.html b/code/html/index.html index f8b7dd78..6cca2b25 100644 --- a/code/html/index.html +++ b/code/html/index.html @@ -4,7 +4,7 @@ ESPurna 0.0.0 - + diff --git a/code/html/src/checkboxes.css b/code/html/src/checkboxes.css new file mode 100644 index 00000000..38099a45 --- /dev/null +++ b/code/html/src/checkboxes.css @@ -0,0 +1,119 @@ +.iPhoneCheckContainer { + -webkit-transform:translate3d(0,0,0); + position: relative; + height: 27px; + cursor: pointer; + overflow: hidden; +} + +.iPhoneCheckContainer input { + position: absolute; + top: 5px; + left: 30px; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; +} + +.iPhoneCheckContainer label { + white-space: nowrap; + font-size: 17px; + line-height: 17px; + font-weight: bold; + font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; + cursor: pointer; + display: block; + height: 27px; + position: absolute; + width: auto; + top: 0; + padding-top: 5px; + overflow: hidden; +} + +.iPhoneCheckContainer, .iPhoneCheckContainer label { + user-select: none; + -moz-user-select: none; + -khtml-user-select: none; +} + +.iPhoneCheckDisabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +div.iPhoneCheckBorderOn { + position: absolute; + left: 0; + width: 4px; + height: 100%; + background-image: url('images/border-on.png'); + background-repeat: no-repeat; +} + +label.iPhoneCheckLabelOn { + color: white; + background-image: url('images/label-on.png'); + background-repeat: repeat-x; + text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.6); + left: 0; + padding-top: 5px; + margin-left: 4px; + margin-top: 0px; +} + +label.iPhoneCheckLabelOn span { + padding-left: 4px; +} + +label.iPhoneCheckLabelOff { + color: #8b8b8b; + background-image: url('images/label-off.png'); + background-repeat: repeat-x; + text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.6); + text-align: right; + margin-right: 4px; + margin-top: 0px; + right: 0; +} + +label.iPhoneCheckLabelOff span { + padding-right: 4px; +} + +div.iPhoneCheckBorderOff { + position: absolute; + width: 4px; + height: 100%; + background-image: url('images/border-off.png'); + background-repeat: no-repeat; +} + +.iPhoneCheckHandle { + display: block; + height: 27px; + cursor: pointer; + position: absolute; + top: 0; + left: 0; + width: 0; + background-image: url('images/handle-left.png'); + background-repeat: no-repeat; + padding-left: 4px; +} + +.iPhoneCheckHandleCenter { + position: absolute; + width: 100%; + height: 100%; + background-image: url('images/handle-center.png'); + background-repeat: repeat-x; +} + +.iPhoneCheckHandleRight { + position: absolute; + height: 100%; + width: 4px; + right: 0px; + background-image: url('images/handle-right.png'); + background-repeat: no-repeat; +} diff --git a/code/package.json b/code/package.json index 2e8bff34..3bcf590c 100644 --- a/code/package.json +++ b/code/package.json @@ -8,7 +8,9 @@ "devDependencies": { "del": "^2.2.1", "gulp": "^3.9.1", + "gulp-base64-favicon": "^1.0.2", "gulp-clean-css": "^2.0.10", + "gulp-css-base64": "^1.3.4", "gulp-gzip": "^1.4.0", "gulp-htmlmin": "^2.0.0", "gulp-if": "^2.0.1",