🎉 Hello world
This commit is contained in:
commit
2e5d981f1b
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
npm-debug.log
|
||||
bower_components
|
||||
dist
|
||||
.sass-cache
|
||||
.awspublish*
|
||||
config.json
|
22
LICENSE
Normal file
22
LICENSE
Normal file
@ -0,0 +1,22 @@
|
||||
Copyright (c) 2013-2017 ZURB, inc.
|
||||
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
130
README.md
Normal file
130
README.md
Normal file
@ -0,0 +1,130 @@
|
||||
# Foundation for Emails Template
|
||||
|
||||
[![devDependency Status](https://david-dm.org/zurb/foundation-emails-template/dev-status.svg)](https://david-dm.org/zurb/foundation-emails-template#info=devDependencies)
|
||||
|
||||
**Please open all issues with this template on the main [Foundation for Emails](http://github.com/zurb/foundation-emails/issues) repo.**
|
||||
|
||||
This is the official starter project for [Foundation for Emails](http://foundation.zurb.com/emails), a framework for creating responsive HTML devices that work in any email client. It has a Gulp-powered build system with these features:
|
||||
|
||||
- Handlebars HTML templates with [Panini](http://github.com/zurb/panini)
|
||||
- Simplified HTML email syntax with [Inky](http://github.com/zurb/inky)
|
||||
- Sass compilation
|
||||
- Image compression
|
||||
- Built-in BrowserSync server
|
||||
- Full email inlining process
|
||||
|
||||
## Installation
|
||||
|
||||
To use this template, your computer needs [Node.js](https://nodejs.org/en/) 0.12 or greater. The template can be installed with the Foundation CLI, or downloaded and set up manually.
|
||||
|
||||
### Using the CLI
|
||||
|
||||
Install the Foundation CLI with this command:
|
||||
|
||||
```bash
|
||||
npm install foundation-cli --global
|
||||
```
|
||||
|
||||
Use this command to set up a blank Foundation for Emails project:
|
||||
|
||||
```bash
|
||||
foundation new --framework emails
|
||||
```
|
||||
|
||||
The CLI will prompt you to give your project a name. The template will be downloaded into a folder with this name.
|
||||
|
||||
### Manual Setup
|
||||
|
||||
To manually set up the template, first download it with Git:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/zurb/foundation-emails-template projectname
|
||||
```
|
||||
|
||||
Then open the folder in your command line, and install the needed dependencies:
|
||||
|
||||
```bash
|
||||
cd projectname
|
||||
npm install
|
||||
```
|
||||
|
||||
## Build Commands
|
||||
|
||||
Run `npm start` to kick off the build process. A new browser tab will open with a server pointing to your project files.
|
||||
|
||||
Run `npm run build` to inline your CSS into your HTML along with the rest of the build process.
|
||||
|
||||
Run `npm run litmus` to build as above, then submit to litmus for testing. *AWS S3 Account details required (config.json)*
|
||||
|
||||
Run `npm run mail` to build as above, then send to specified email address for testing. *SMTP server details required (config.json)*
|
||||
|
||||
Run `npm run zip` to build as above, then zip HTML and images for easy deployment to email marketing services.
|
||||
|
||||
### Speeding Up Your Build
|
||||
|
||||
If you create a lot of emails, your build can start to slow down, as each build rebuilds all of the emails in the
|
||||
repository. A simple way to keep it fast is to archive emails you no longer need by moving the pages into `src/pages/archive`.
|
||||
You can also move images that are no longer needed into `src/assets/img/archive`. The build will ignore pages and images that
|
||||
are inside the archive folder.
|
||||
|
||||
## Litmus Tests (config.json)
|
||||
|
||||
Testing in Litmus requires the images to be hosted publicly. The provided gulp task handles this by automating hosting to an AWS S3 account. Provide your Litmus and AWS S3 account details in the `example.config.json` and then rename to `config.json`. Litmus config, and `aws.url` are required, however if you follow the [aws-sdk suggestions](http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html) you don't need to supply the AWS credentials into this JSON.
|
||||
|
||||
```json
|
||||
{
|
||||
"aws": {
|
||||
"region": "us-east-1",
|
||||
"accessKeyId": "YOUR_ACCOUNT_KEY",
|
||||
"secretAccessKey": "YOUR_ACCOUNT_SECRET",
|
||||
"params": {
|
||||
"Bucket": "elasticbeanstalk-us-east-1-THIS_IS_JUST_AN_EXAMPLE"
|
||||
},
|
||||
"url": "https://s3.amazonaws.com/elasticbeanstalk-us-east-1-THIS_IS_JUST_AN_EXAMPLE"
|
||||
},
|
||||
"litmus": {
|
||||
"username": "YOUR_LITMUS@EMAIL.com",
|
||||
"password": "YOUR_ACCOUNT_PASSWORD",
|
||||
"url": "https://YOUR_ACCOUNT.litmus.com",
|
||||
"applications": ["ol2003","ol2007","ol2010","ol2011","ol2013","chromegmailnew","chromeyahoo","appmail9","iphone5s","ipad","android4","androidgmailapp"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Manual email tests (config.json)
|
||||
|
||||
Similar to the Litmus tests, you can have the emails sent to a specified email address. Just like with the Litmus tests, you will need to provide AWS S3 account details in `config.json`. You will also need to specify to details of an SMTP server. The email address to send to emails to can either by configured in the `package.json` file or added as a parameter like so: `npm run mail -- --to="example.com"`
|
||||
|
||||
```json
|
||||
{
|
||||
"aws": {
|
||||
"region": "us-east-1",
|
||||
"accessKeyId": "YOUR_ACCOUNT_KEY",
|
||||
"secretAccessKey": "YOUR_ACCOUNT_SECRET",
|
||||
"params": {
|
||||
"Bucket": "elasticbeanstalk-us-east-1-THIS_IS_JUST_AN_EXAMPLE"
|
||||
},
|
||||
"url": "https://s3.amazonaws.com/elasticbeanstalk-us-east-1-THIS_IS_JUST_AN_EXAMPLE"
|
||||
},
|
||||
"mail": {
|
||||
"to": [
|
||||
"example@domain.com"
|
||||
],
|
||||
"from": "Company name <info@company.com",
|
||||
"smtp": {
|
||||
"auth": {
|
||||
"user": "example@domain.com",
|
||||
"pass": "12345678"
|
||||
},
|
||||
"host": "smtp.domain.com",
|
||||
"secureConnection": true,
|
||||
"port": 465
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
For a full list of Litmus' supported test clients(applications) see their [client list](https://litmus.com/emails/clients.xml).
|
||||
|
||||
**Caution:** AWS Service Fees will result, however, are usually very low do to minimal traffic. Use at your own discretion.
|
||||
|
32
example.config.json
Normal file
32
example.config.json
Normal file
@ -0,0 +1,32 @@
|
||||
{
|
||||
"aws": {
|
||||
"region": "us-east-1",
|
||||
"accessKeyId": "YOUR_ACCOUNT_KEY",
|
||||
"secretAccessKey": "YOUR_ACCOUNT_SECRET",
|
||||
"params": {
|
||||
"Bucket": "elasticbeanstalk-us-east-1-THIS_IS_JUST_AN_EXAMPLE"
|
||||
},
|
||||
"url": "https://s3.amazonaws.com/elasticbeanstalk-us-east-1-THIS_IS_JUST_AN_EXAMPLE"
|
||||
},
|
||||
"litmus": {
|
||||
"username": "YOUR_LITMUS@EMAIL.com",
|
||||
"password": "YOUR_ACCOUNT_PASSWORD",
|
||||
"url": "https://YOUR_ACCOUNT.litmus.com",
|
||||
"applications": ["ol2003","ol2007","ol2010","ol2011","ol2013","chromegmailnew","chromeyahoo","appmail9","iphone5s","ipad","android4","androidgmailapp"]
|
||||
},
|
||||
"mail": {
|
||||
"to": [
|
||||
"example@domain.com"
|
||||
],
|
||||
"from": "Company name <info@company.com",
|
||||
"smtp": {
|
||||
"auth": {
|
||||
"user": "example@domain.com",
|
||||
"pass": "12345678"
|
||||
},
|
||||
"host": "smtp.domain.com",
|
||||
"secureConnection": true,
|
||||
"port": 465
|
||||
}
|
||||
}
|
||||
}
|
232
gulpfile.babel.js
Normal file
232
gulpfile.babel.js
Normal file
@ -0,0 +1,232 @@
|
||||
import gulp from 'gulp';
|
||||
import plugins from 'gulp-load-plugins';
|
||||
import browser from 'browser-sync';
|
||||
import rimraf from 'rimraf';
|
||||
import panini from 'panini';
|
||||
import yargs from 'yargs';
|
||||
import lazypipe from 'lazypipe';
|
||||
import inky from 'inky';
|
||||
import fs from 'fs';
|
||||
import siphon from 'siphon-media-query';
|
||||
import path from 'path';
|
||||
import merge from 'merge-stream';
|
||||
import beep from 'beepbeep';
|
||||
import colors from 'colors';
|
||||
|
||||
const $ = plugins();
|
||||
|
||||
// Look for the --production flag
|
||||
const PRODUCTION = !!(yargs.argv.production);
|
||||
const EMAIL = yargs.argv.to;
|
||||
|
||||
// Declar var so that both AWS and Litmus task can use it.
|
||||
var CONFIG;
|
||||
|
||||
// Build the "dist" folder by running all of the below tasks
|
||||
gulp.task('build',
|
||||
gulp.series(clean, pages, sass, images, inline));
|
||||
|
||||
// Build emails, run the server, and watch for file changes
|
||||
gulp.task('default',
|
||||
gulp.series('build', server, watch));
|
||||
|
||||
// Build emails, then send to litmus
|
||||
gulp.task('litmus',
|
||||
gulp.series('build', creds, aws, litmus));
|
||||
|
||||
// Build emails, then send to EMAIL
|
||||
gulp.task('mail',
|
||||
gulp.series('build', creds, aws, mail));
|
||||
|
||||
// Build emails, then zip
|
||||
gulp.task('zip',
|
||||
gulp.series('build', zip));
|
||||
|
||||
// Delete the "dist" folder
|
||||
// This happens every time a build starts
|
||||
function clean(done) {
|
||||
rimraf('dist', done);
|
||||
}
|
||||
|
||||
// Compile layouts, pages, and partials into flat HTML files
|
||||
// Then parse using Inky templates
|
||||
function pages() {
|
||||
return gulp.src(['src/pages/**/*.html', '!src/pages/archive/**/*.html'])
|
||||
.pipe(panini({
|
||||
root: 'src/pages',
|
||||
layouts: 'src/layouts',
|
||||
partials: 'src/partials',
|
||||
helpers: 'src/helpers'
|
||||
}))
|
||||
.pipe(inky())
|
||||
.pipe(gulp.dest('dist'));
|
||||
}
|
||||
|
||||
// Reset Panini's cache of layouts and partials
|
||||
function resetPages(done) {
|
||||
panini.refresh();
|
||||
done();
|
||||
}
|
||||
|
||||
// Compile Sass into CSS
|
||||
function sass() {
|
||||
return gulp.src('src/assets/scss/app.scss')
|
||||
.pipe($.if(!PRODUCTION, $.sourcemaps.init()))
|
||||
.pipe($.sass({
|
||||
includePaths: ['node_modules/foundation-emails/scss']
|
||||
}).on('error', $.sass.logError))
|
||||
.pipe($.if(PRODUCTION, $.uncss(
|
||||
{
|
||||
html: ['dist/**/*.html']
|
||||
})))
|
||||
.pipe($.if(!PRODUCTION, $.sourcemaps.write()))
|
||||
.pipe(gulp.dest('dist/css'));
|
||||
}
|
||||
|
||||
// Copy and compress images
|
||||
function images() {
|
||||
return gulp.src(['src/assets/img/**/*', '!src/assets/img/archive/**/*'])
|
||||
.pipe($.imagemin())
|
||||
.pipe(gulp.dest('./dist/assets/img'));
|
||||
}
|
||||
|
||||
// Inline CSS and minify HTML
|
||||
function inline() {
|
||||
return gulp.src('dist/**/*.html')
|
||||
.pipe($.if(PRODUCTION, inliner('dist/css/app.css')))
|
||||
.pipe(gulp.dest('dist'));
|
||||
}
|
||||
|
||||
// Start a server with LiveReload to preview the site in
|
||||
function server(done) {
|
||||
browser.init({
|
||||
server: 'dist'
|
||||
});
|
||||
done();
|
||||
}
|
||||
|
||||
// Watch for file changes
|
||||
function watch() {
|
||||
gulp.watch('src/pages/**/*.html').on('all', gulp.series(pages, inline, browser.reload));
|
||||
gulp.watch(['src/layouts/**/*', 'src/partials/**/*']).on('all', gulp.series(resetPages, pages, inline, browser.reload));
|
||||
gulp.watch(['../scss/**/*.scss', 'src/assets/scss/**/*.scss']).on('all', gulp.series(resetPages, sass, pages, inline, browser.reload));
|
||||
gulp.watch('src/assets/img/**/*').on('all', gulp.series(images, browser.reload));
|
||||
}
|
||||
|
||||
// Inlines CSS into HTML, adds media query CSS into the <style> tag of the email, and compresses the HTML
|
||||
function inliner(css) {
|
||||
var css = fs.readFileSync(css).toString();
|
||||
var mqCss = siphon(css);
|
||||
|
||||
var pipe = lazypipe()
|
||||
.pipe($.inlineCss, {
|
||||
applyStyleTags: false,
|
||||
removeStyleTags: true,
|
||||
preserveMediaQueries: true,
|
||||
removeLinkTags: false
|
||||
})
|
||||
.pipe($.replace, '<!-- <style> -->', `<style>${mqCss}</style>`)
|
||||
.pipe($.replace, '<link rel="stylesheet" type="text/css" href="css/app.css">', '')
|
||||
.pipe($.htmlmin, {
|
||||
collapseWhitespace: true,
|
||||
minifyCSS: true
|
||||
});
|
||||
|
||||
return pipe();
|
||||
}
|
||||
|
||||
// Ensure creds for Litmus are at least there.
|
||||
function creds(done) {
|
||||
var configPath = './config.json';
|
||||
try { CONFIG = JSON.parse(fs.readFileSync(configPath)); }
|
||||
catch(e) {
|
||||
beep();
|
||||
console.log('[AWS]'.bold.red + ' Sorry, there was an issue locating your config.json. Please see README.md');
|
||||
process.exit();
|
||||
}
|
||||
done();
|
||||
}
|
||||
|
||||
// Post images to AWS S3 so they are accessible to Litmus and manual test
|
||||
function aws() {
|
||||
var publisher = !!CONFIG.aws ? $.awspublish.create(CONFIG.aws) : $.awspublish.create();
|
||||
var headers = {
|
||||
'Cache-Control': 'max-age=315360000, no-transform, public'
|
||||
};
|
||||
|
||||
return gulp.src('./dist/assets/img/*')
|
||||
// publisher will add Content-Length, Content-Type and headers specified above
|
||||
// If not specified it will set x-amz-acl to public-read by default
|
||||
.pipe(publisher.publish(headers))
|
||||
|
||||
// create a cache file to speed up consecutive uploads
|
||||
//.pipe(publisher.cache())
|
||||
|
||||
// print upload updates to console
|
||||
.pipe($.awspublish.reporter());
|
||||
}
|
||||
|
||||
// Send email to Litmus for testing. If no AWS creds then do not replace img urls.
|
||||
function litmus() {
|
||||
var awsURL = !!CONFIG && !!CONFIG.aws && !!CONFIG.aws.url ? CONFIG.aws.url : false;
|
||||
|
||||
return gulp.src('dist/**/*.html')
|
||||
.pipe($.if(!!awsURL, $.replace(/=('|")(\/?assets\/img)/g, "=$1"+ awsURL)))
|
||||
.pipe($.litmus(CONFIG.litmus))
|
||||
.pipe(gulp.dest('dist'));
|
||||
}
|
||||
|
||||
// Send email to specified email for testing. If no AWS creds then do not replace img urls.
|
||||
function mail() {
|
||||
var awsURL = !!CONFIG && !!CONFIG.aws && !!CONFIG.aws.url ? CONFIG.aws.url : false;
|
||||
|
||||
if (EMAIL) {
|
||||
CONFIG.mail.to = [EMAIL];
|
||||
}
|
||||
|
||||
return gulp.src('dist/**/*.html')
|
||||
.pipe($.if(!!awsURL, $.replace(/=('|")(\/?assets\/img)/g, "=$1"+ awsURL)))
|
||||
.pipe($.mail(CONFIG.mail))
|
||||
.pipe(gulp.dest('dist'));
|
||||
}
|
||||
|
||||
// Copy and compress into Zip
|
||||
function zip() {
|
||||
var dist = 'dist';
|
||||
var ext = '.html';
|
||||
|
||||
function getHtmlFiles(dir) {
|
||||
return fs.readdirSync(dir)
|
||||
.filter(function(file) {
|
||||
var fileExt = path.join(dir, file);
|
||||
var isHtml = path.extname(fileExt) == ext;
|
||||
return fs.statSync(fileExt).isFile() && isHtml;
|
||||
});
|
||||
}
|
||||
|
||||
var htmlFiles = getHtmlFiles(dist);
|
||||
|
||||
var moveTasks = htmlFiles.map(function(file){
|
||||
var sourcePath = path.join(dist, file);
|
||||
var fileName = path.basename(sourcePath, ext);
|
||||
|
||||
var moveHTML = gulp.src(sourcePath)
|
||||
.pipe($.rename(function (path) {
|
||||
path.dirname = fileName;
|
||||
return path;
|
||||
}));
|
||||
|
||||
var moveImages = gulp.src(sourcePath)
|
||||
.pipe($.htmlSrc({ selector: 'img'}))
|
||||
.pipe($.rename(function (currentpath) {
|
||||
currentpath.dirname = path.join(fileName, currentpath.dirname.replace('dist', ''));
|
||||
return currentpath;
|
||||
}));
|
||||
|
||||
return merge(moveHTML, moveImages)
|
||||
.pipe($.zip(fileName+ '.zip'))
|
||||
.pipe(gulp.dest('dist'));
|
||||
});
|
||||
|
||||
return merge(moveTasks);
|
||||
}
|
56
package.json
Normal file
56
package.json
Normal file
@ -0,0 +1,56 @@
|
||||
{
|
||||
"name": "foundation-emails-template",
|
||||
"version": "1.0.0",
|
||||
"description": "Basic template for a Foundation for Emails project.",
|
||||
"repository": "zurb/foundation-emails-template",
|
||||
"main": "gulpfile.babel.js",
|
||||
"scripts": {
|
||||
"start": "gulp",
|
||||
"build": "gulp --production",
|
||||
"zip": "gulp zip --production",
|
||||
"litmus": "gulp litmus --production",
|
||||
"mail": "gulp mail --production"
|
||||
},
|
||||
"author": "ZURB <foundation@zurb.com>",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"foundation-emails": "^2.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-core": "^6.3.26",
|
||||
"babel-preset-es2015": "^6.3.13",
|
||||
"babel-register": "^6.7.2",
|
||||
"beepbeep": "^1.2.0",
|
||||
"browser-sync": "^2.11.0",
|
||||
"colors": "^1.1.2",
|
||||
"gulp": "^4.0.0",
|
||||
"gulp-awspublish": "^3.0.1",
|
||||
"gulp-cli": "^1.1.0",
|
||||
"gulp-html-src": "^1.0.0",
|
||||
"gulp-htmlmin": "^1.1.1",
|
||||
"gulp-if": "^2.0.0",
|
||||
"gulp-imagemin": "^2.4.0",
|
||||
"gulp-inline-css": "^3.0.0",
|
||||
"gulp-litmus": "0.0.7",
|
||||
"gulp-load-plugins": "^1.1.0",
|
||||
"gulp-mail": "^0.1.1",
|
||||
"gulp-rename": "^1.2.2",
|
||||
"gulp-replace": "^0.5.4",
|
||||
"gulp-sass": "^3.1.0",
|
||||
"gulp-sourcemaps": "^1.6.0",
|
||||
"gulp-uncss": "^1.0.1",
|
||||
"gulp-zip": "^3.2.0",
|
||||
"inky": "^1.3.6",
|
||||
"lazypipe": "^1.0.1",
|
||||
"merge-stream": "^1.0.0",
|
||||
"panini": "^1.3.0",
|
||||
"rimraf": "^2.3.3",
|
||||
"siphon-media-query": "^1.0.0",
|
||||
"yargs": "^4.1.0"
|
||||
},
|
||||
"babel": {
|
||||
"presets": [
|
||||
"es2015"
|
||||
]
|
||||
}
|
||||
}
|
1
src/assets/img/.gitkeep
Normal file
1
src/assets/img/.gitkeep
Normal file
@ -0,0 +1 @@
|
||||
# You can delete this file. It's just here to make Git happy.
|
0
src/assets/img/archive/.gitkeep
Normal file
0
src/assets/img/archive/.gitkeep
Normal file
147
src/assets/scss/_settings.scss
Normal file
147
src/assets/scss/_settings.scss
Normal file
@ -0,0 +1,147 @@
|
||||
// Foundation for Emails Settings
|
||||
// ------------------------------
|
||||
//
|
||||
// Table of Contents:
|
||||
//
|
||||
// 1. Global
|
||||
// 2. Grid
|
||||
// 3. Block Grid
|
||||
// 4. Typography
|
||||
// 5. Button
|
||||
// 6. Callout
|
||||
// 7. Menu
|
||||
// 8. Thumbnail
|
||||
|
||||
|
||||
// 1. Global
|
||||
// ---------
|
||||
|
||||
$primary-color: #2199e8;
|
||||
$secondary-color: #777777;
|
||||
$success-color: #414141;
|
||||
$warning-color: #ffae00;
|
||||
$alert-color: #ec5840;
|
||||
$light-gray: #f3f3f3;
|
||||
$medium-gray: #cacaca;
|
||||
$dark-gray: #8a8a8a;
|
||||
$black: #0a0a0a;
|
||||
$white: #fefefe;
|
||||
$pre-color: #ff6908;
|
||||
$global-width: 580px;
|
||||
$global-width-small: 95%;
|
||||
$global-gutter: 16px;
|
||||
$body-background: $light-gray;
|
||||
$container-background: $white;
|
||||
$global-padding: 16px;
|
||||
$global-margin: 16px;
|
||||
$global-radius: 3px;
|
||||
$global-rounded: 500px;
|
||||
$global-breakpoint: $global-width + $global-gutter;
|
||||
|
||||
// 2. Grid
|
||||
// -------
|
||||
|
||||
$grid-column-count: 12;
|
||||
$column-padding-bottom: $global-padding;
|
||||
$container-radius: 0;
|
||||
|
||||
// 3. Block Grid
|
||||
// -------------
|
||||
|
||||
$block-grid-max: 8;
|
||||
$block-grid-gutter: $global-gutter;
|
||||
|
||||
// 4. Typography
|
||||
// -------------
|
||||
|
||||
$global-font-color: $black;
|
||||
$body-font-family: Helvetica, Arial, sans-serif;
|
||||
$global-font-weight: normal;
|
||||
$header-color: inherit;
|
||||
$global-line-height: 1.3;
|
||||
$global-font-size: 16px;
|
||||
$body-line-height: $global-line-height;
|
||||
$header-font-family: $body-font-family;
|
||||
$header-font-weight: $global-font-weight;
|
||||
$h1-font-size: 34px;
|
||||
$h2-font-size: 30px;
|
||||
$h3-font-size: 28px;
|
||||
$h4-font-size: 24px;
|
||||
$h5-font-size: 20px;
|
||||
$h6-font-size: 18px;
|
||||
$header-margin-bottom: 10px;
|
||||
$paragraph-margin-bottom: 10px;
|
||||
$small-font-size: 80%;
|
||||
$small-font-color: $medium-gray;
|
||||
$lead-font-size: $global-font-size * 1.25;
|
||||
$lead-line-height: 1.6;
|
||||
$text-padding: 10px;
|
||||
$subheader-lineheight: 1.4;
|
||||
$subheader-color: $dark-gray;
|
||||
$subheader-font-weight: $global-font-weight;
|
||||
$subheader-margin-top: 4px;
|
||||
$subheader-margin-bottom: 8px;
|
||||
$hr-width: $global-width;
|
||||
$hr-border: 1px solid $black;
|
||||
$hr-margin: 20px auto;
|
||||
$anchor-text-decoration: none;
|
||||
$anchor-color: $primary-color;
|
||||
$anchor-color-visited: $anchor-color;
|
||||
$anchor-color-hover: darken($primary-color, 10%);
|
||||
$anchor-color-active: $anchor-color-hover;
|
||||
$stat-font-size: 40px;
|
||||
|
||||
// 5. Button
|
||||
// ---------
|
||||
|
||||
$button-padding: (
|
||||
tiny: 4px 8px 4px 8px,
|
||||
small: 5px 10px 5px 10px,
|
||||
default: 8px 16px 8px 16px,
|
||||
large: 10px 20px 10px 20px,
|
||||
);
|
||||
$button-font-size: (
|
||||
tiny: 10px,
|
||||
small: 12px,
|
||||
default: 16px,
|
||||
large: 20px,
|
||||
);
|
||||
$button-color: $white;
|
||||
$button-color-alt: $medium-gray;
|
||||
$button-font-weight: bold;
|
||||
$button-margin: 0 0 $global-margin 0;
|
||||
$button-background: $primary-color;
|
||||
$button-border: 2px solid $button-background;
|
||||
$button-radius: $global-radius;
|
||||
$button-rounded: $global-rounded;
|
||||
|
||||
// 6. Callout
|
||||
// ----------
|
||||
|
||||
$callout-background: $white;
|
||||
$callout-background-fade: 85%;
|
||||
$callout-padding: 10px;
|
||||
$callout-margin-bottom: $global-margin;
|
||||
$callout-border: 1px solid darken($callout-background, 20%);
|
||||
$callout-border-secondary: 1px solid darken($secondary-color, 20%);
|
||||
$callout-border-success: 1px solid darken($success-color, 20%);
|
||||
$callout-border-warning: 1px solid darken($warning-color, 20%);
|
||||
$callout-border-alert: 1px solid darken($alert-color, 20%);
|
||||
|
||||
// 7. Menu
|
||||
// -------
|
||||
|
||||
$menu-item-padding: 10px;
|
||||
$menu-item-gutter: 10px;
|
||||
$menu-item-color: $primary-color;
|
||||
|
||||
// 8. Thumbnail
|
||||
// ------------
|
||||
|
||||
$thumbnail-border: solid 4px $white;
|
||||
$thumbnail-margin-bottom: $global-margin;
|
||||
$thumbnail-shadow: 0 0 0 1px rgba($black, 0.2);
|
||||
$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5);
|
||||
$thumbnail-transition: box-shadow 200ms ease-out;
|
||||
$thumbnail-radius: $global-radius;
|
||||
|
4
src/assets/scss/app.scss
Normal file
4
src/assets/scss/app.scss
Normal file
@ -0,0 +1,4 @@
|
||||
@import 'settings';
|
||||
@import 'foundation-emails';
|
||||
|
||||
@import 'template/template';
|
59
src/assets/scss/template/_template.scss
Normal file
59
src/assets/scss/template/_template.scss
Normal file
@ -0,0 +1,59 @@
|
||||
// These are the styles to make some of the templates look extra nice.
|
||||
// Feel free to remove these styles for production!
|
||||
|
||||
// Body Styles
|
||||
body,
|
||||
html,
|
||||
.body {
|
||||
background: #f3f3f3 !important;
|
||||
}
|
||||
|
||||
.container.header {
|
||||
background: #f3f3f3;
|
||||
}
|
||||
|
||||
.body-drip {
|
||||
border-top: 4px solid #F45E43;
|
||||
}
|
||||
|
||||
// Full Width Headers
|
||||
.header {
|
||||
background: #8a8a8a;
|
||||
}
|
||||
|
||||
.header .columns {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.header p {
|
||||
color: #fff;
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.header .wrapper-inner {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.header .container {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
// Social Media
|
||||
table.button.facebook table td {
|
||||
background: #3B5998 !important;
|
||||
border-color: #3B5998;
|
||||
}
|
||||
|
||||
table.button.twitter table td {
|
||||
background: #1daced !important;
|
||||
border-color: #1daced;
|
||||
}
|
||||
|
||||
table.button.google table td {
|
||||
background: #DB4A39 !important;
|
||||
border-color: #DB4A39;
|
||||
}
|
||||
|
||||
.wrapper.secondary {
|
||||
background: #f3f3f3;
|
||||
}
|
10
src/helpers/raw.js
Normal file
10
src/helpers/raw.js
Normal file
@ -0,0 +1,10 @@
|
||||
/**
|
||||
* Any code used inside this helper is ignored by Handlebars. Use it if your email service provider uses a Handlebars-like syntax.
|
||||
* @example
|
||||
* {{{{raw}}}}
|
||||
* {{ this }} code won't be parsed.
|
||||
* {{{{/raw}}}}
|
||||
*/
|
||||
module.exports = function(content) {
|
||||
return content.fn();
|
||||
}
|
30
src/layouts/default.html
Normal file
30
src/layouts/default.html
Normal file
@ -0,0 +1,30 @@
|
||||
{{!-- This is the base layout for your project, and will be used on every page. --}}
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="{{root}}css/app.css">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<title>{{subject}}</title>
|
||||
<!-- <style> -->
|
||||
</head>
|
||||
<body>
|
||||
<span class="preheader">{{description}}</span>
|
||||
<table class="body">
|
||||
<tr>
|
||||
<td class="center" align="center" valign="top">
|
||||
<center>
|
||||
{{!-- Pages you create in the src/pages/ folder are inserted here when the flattened emails are created. --}}
|
||||
{{> body}}
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- prevent Gmail on iOS font size manipulation -->
|
||||
<div style="display:none; white-space:nowrap; font:15px courier; line-height:0;"> </div>
|
||||
</body>
|
||||
</html>
|
||||
|
31
src/layouts/index-layout.html
Normal file
31
src/layouts/index-layout.html
Normal file
@ -0,0 +1,31 @@
|
||||
{{!-- This is the base layout for your project, and will be used on every page. --}}
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="{{root}}css/app.css">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<title>{{subject}}</title>
|
||||
<!-- <style> -->
|
||||
</head>
|
||||
<body>
|
||||
<span class="preheader">{{description}}</span>
|
||||
<table class="body">
|
||||
<tr>
|
||||
<td class="center" align="center" valign="top">
|
||||
<center>
|
||||
|
||||
{{> body}}
|
||||
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- prevent Gmail on iOS font size manipulation -->
|
||||
<div style="display:none; white-space:nowrap; font:15px courier; line-height:0;"> </div>
|
||||
</body>
|
||||
</html>
|
||||
|
0
src/pages/archive/.gitkeep
Normal file
0
src/pages/archive/.gitkeep
Normal file
51
src/pages/basic.html
Normal file
51
src/pages/basic.html
Normal file
@ -0,0 +1,51 @@
|
||||
---
|
||||
subject: My Basic Email Template Subject
|
||||
---
|
||||
|
||||
<wrapper class="header">
|
||||
<container>
|
||||
<row class="collapse">
|
||||
<columns small="6">
|
||||
<img src="http://placehold.it/200x50/663399">
|
||||
</columns>
|
||||
<columns small="6">
|
||||
<p class="text-right">BASIC</p>
|
||||
</columns>
|
||||
</row>
|
||||
</container>
|
||||
</wrapper>
|
||||
|
||||
<container>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<row>
|
||||
<columns small="12">
|
||||
|
||||
<h1>Hi, Susan Calvin</h1>
|
||||
<p class="lead">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magni, iste, amet consequatur a veniam.</p>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut optio nulla et, fugiat. Maiores accusantium nostrum asperiores provident, quam modi ex inventore dolores id aspernatur architecto odio minima perferendis, explicabo. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima quos quasi itaque beatae natus fugit provident delectus, magnam laudantium odio corrupti sit quam. Optio aut ut repudiandae velit distinctio asperiores?</p>
|
||||
<callout class="primary">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit repellendus natus, sint ea optio dignissimos asperiores inventore a molestiae dolorum placeat repellat excepturi mollitia ducimus unde doloremque ad, alias eos!</p>
|
||||
</callout>
|
||||
</columns>
|
||||
</row>
|
||||
<wrapper class="secondary">
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<row>
|
||||
<columns large="6">
|
||||
<h5>Connect With Us:</h5>
|
||||
<button class="facebook expand" href="http://zurb.com">Facebook</button>
|
||||
<button class="twitter expand" href="http://zurb.com">Twitter</button>
|
||||
<button class="google expand" href="http://zurb.com">Google+</button>
|
||||
</columns>
|
||||
<columns large="6">
|
||||
<h5>Contact Info:</h5>
|
||||
<p>Phone: 408-341-0600</p>
|
||||
<p>Email: <a href="mailto:foundation@zurb.com">foundation@zurb.com</a></p>
|
||||
</columns>
|
||||
</row>
|
||||
</wrapper>
|
||||
</container>
|
60
src/pages/drip.html
Normal file
60
src/pages/drip.html
Normal file
@ -0,0 +1,60 @@
|
||||
---
|
||||
subject: My Drip Email Template Subject
|
||||
---
|
||||
|
||||
<container class="header">
|
||||
<row class="collapse">
|
||||
<columns>
|
||||
<img src="http://placehold.it/150x30/663399" alt="">
|
||||
</columns>
|
||||
</row>
|
||||
</container>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<container class="body-drip">
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<center>
|
||||
<img src="http://placehold.it/120/663399" alt="">
|
||||
</center>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<row>
|
||||
<columns>
|
||||
<h4 class="text-center">Responsive Emails</h4>
|
||||
<p class="text-center">15 sections | 567 Min</p>
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
<hr/>
|
||||
|
||||
<row>
|
||||
<columns>
|
||||
<p class="text-center">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras egestas ullamcorper tristique. Aenean pharetra, ipsum eu varius elementum, odio ex malesuada neque, eget tempus ipsum neque ut ante. Vivamus volutpat faucibus metus quis ultrices. Fusce hendrerit purus in elit tincidunt sollicitudin. Duis ultrices odio id faucibus sagittis. Sed nulla leo, gravida non massa vitae, bibendum interdum sapien. Pellentesque rutrum sem bibendum tellus volutpat congue.</p>
|
||||
<center>
|
||||
<button href="#" class="success">Get smarter now ↣</button>
|
||||
</center>
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
<row class="collapsed footer">
|
||||
<columns>
|
||||
<spacer size="16"></spacer>
|
||||
<p class="text-center">@copywrite nobody<br/>
|
||||
<a href="#">hello@nocopywrite.com</a> | <a href="#">Manage Email Notifications</a> | <a href="#">Unsubscribe</a></p>
|
||||
<center>
|
||||
<menu>
|
||||
<item><img src="http://placehold.it/25/663399" alt=""></item>
|
||||
<item><img src="http://placehold.it/25/663399" alt=""></item>
|
||||
<item><img src="http://placehold.it/25/663399" alt=""></item>
|
||||
<item><img src="http://placehold.it/25/663399" alt=""></item>
|
||||
<item><img src="http://placehold.it/25/663399" alt=""></item>
|
||||
</menu>
|
||||
</center>
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
</container>
|
65
src/pages/hero.html
Normal file
65
src/pages/hero.html
Normal file
@ -0,0 +1,65 @@
|
||||
---
|
||||
subject: My Hero Email Template Subject
|
||||
---
|
||||
|
||||
<wrapper class="header">
|
||||
<container>
|
||||
<row class="collapse">
|
||||
<columns small="6">
|
||||
<img src="http://placehold.it/200x50/663399">
|
||||
</columns>
|
||||
<columns small="6">
|
||||
<p class="text-right">HERO</p>
|
||||
</columns>
|
||||
</row>
|
||||
</container>
|
||||
</wrapper>
|
||||
|
||||
<container>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<row>
|
||||
<columns small="12">
|
||||
<h1>Hi, Elijah Baily</h1>
|
||||
<p class="lead">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi impedit sapiente delectus molestias quia.</p>
|
||||
<img src="http://placehold.it/580x300" alt="">
|
||||
<callout class="primary">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Veniam assumenda, praesentium qui vitae voluptate dolores. <a href="#">Click it!</a></p>
|
||||
</callout>
|
||||
<h2>Title Ipsum <small>This is a note.</small></h2>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi repellat, harum. Quas nobis id aut, aspernatur, sequi tempora laborum corporis cum debitis, ullam, dolorem dolore quisquam aperiam! Accusantium, ullam, nesciunt. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ducimus consequuntur commodi, aut sed, quas quam optio accusantium recusandae nesciunt, architecto veritatis. Voluptatibus sunt esse dolor ipsum voluptates, assumenda quisquam.</p>
|
||||
|
||||
<button class="large secondary" href="#">Click Me!</button>
|
||||
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
<wrapper class="secondary">
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<row>
|
||||
<columns large="6">
|
||||
<h5>Connect With Us:</h5>
|
||||
<button class="facebook expand" href="#">Facebook</button>
|
||||
<button class="twitter expand" href="#">Twitter</button>
|
||||
<button class="google expand" href="#">Google+</button>
|
||||
</columns>
|
||||
<columns large="6">
|
||||
<h5>Contact Info:</h5>
|
||||
<p>Phone: 408-341-0600</p>
|
||||
<p>Email: <a href="mailto:foundation@zurb.com">foundation@zurb.com</a></p>
|
||||
</columns>
|
||||
</row>
|
||||
</wrapper>
|
||||
|
||||
<center>
|
||||
<menu>
|
||||
<item href="#">Terms</item>
|
||||
<item href="#">Privacy</item>
|
||||
<item href="#">Unsubscribe</item>
|
||||
</menu>
|
||||
</center>
|
||||
|
||||
</container>
|
55
src/pages/index.html
Normal file
55
src/pages/index.html
Normal file
@ -0,0 +1,55 @@
|
||||
---
|
||||
layout: index-layout
|
||||
subject: My Email Templates
|
||||
---
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<container>
|
||||
|
||||
<spacer size="24"></spacer>
|
||||
|
||||
<row>
|
||||
<columns small="12">
|
||||
|
||||
<p class="lead">Hi there!</p>
|
||||
<p style="color: #484848; line-height: 1.5;">Thanks for downloading <a href="https://get.foundation/emails/docs/">Foundation for Emails!</a> Your days of coding up painful HTML emails are officially over. You’ll soon be cranking out some slick, responsive emails in no time! To help get you up and running, we've put together 11 templates for the most common email use cases including newsletters, transactional emails, and marketing blasts. Feel free to customize them to your hearts content.</p>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<center>
|
||||
<menu class="vertical">
|
||||
<item href="{{root}}basic.html" target="_blank">Basic Template</item>
|
||||
<item href="{{root}}drip.html" target="_blank">Drip Template</item>
|
||||
<item href="{{root}}hero.html" target="_blank">Hero Template</item>
|
||||
<item href="{{root}}marketing.html" target="_blank">Marketing Template</item>
|
||||
<item href="{{root}}newsletter.html" target="_blank">Newsletter Template</item>
|
||||
<item href="{{root}}newsletter-2.html" target="_blank">Newsletter 2 Template</item>
|
||||
<item href="{{root}}order.html" target="_blank">Order Template</item>
|
||||
<item href="{{root}}password.html" target="_blank">Password Template</item>
|
||||
<item href="{{root}}sidebar.html" target="_blank">Sidebar Template</item>
|
||||
<item href="{{root}}sidebar-hero.html" target="_blank">Sidebar Hero Template</item>
|
||||
<item href="{{root}}welcome.html" target="_blank">Welcome Template</item>
|
||||
</menu>
|
||||
</center>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<p>Happy Coding,</p>
|
||||
<p>The Foundation Team</p>
|
||||
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
</columns>
|
||||
</row>
|
||||
</container>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<center>
|
||||
<small>Keep on keepin' on. <3 <a style="color: #cacaca; text-decoration: underline;" href="https://zurb.com/">ZURB</a> </small>
|
||||
</center>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
81
src/pages/marketing.html
Normal file
81
src/pages/marketing.html
Normal file
@ -0,0 +1,81 @@
|
||||
---
|
||||
subject: My Marketing Email Template Subject
|
||||
---
|
||||
|
||||
<container>
|
||||
<row>
|
||||
<columns large="4">
|
||||
<center>
|
||||
<img src="http://placehold.it/125x200">
|
||||
</center>
|
||||
</columns>
|
||||
<columns large="8">
|
||||
<h1>Do Something Radical With This App.</h1>
|
||||
<button class="large" href="#">Sign Up</button>
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<row>
|
||||
<columns>
|
||||
<h3 class="text-center">It's Never Been Easier to Do Things.</h3>
|
||||
<p class="text-center">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequatur pariatur unde magni repudiandae totam, accusamus facere eligendi. Ad nobis eius porro saepe et ab, aliquid, sed mollitia cumque suscipit aperiam.</p>
|
||||
</columns>
|
||||
</row>
|
||||
<row>
|
||||
<columns large="4">
|
||||
<center>
|
||||
<img src="http://placehold.it/50x50">
|
||||
</center>
|
||||
<h5 class="text-center">Feature One</h5>
|
||||
<p class="text-center">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum, quod quam unde earum.</p>
|
||||
</columns>
|
||||
<columns large="4">
|
||||
<center>
|
||||
<img src="http://placehold.it/50x50">
|
||||
</center>
|
||||
<h5 class="text-center">Feature Two</h5>
|
||||
<p class="text-center">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum, quod quam unde earum.</p>
|
||||
</columns>
|
||||
<columns large="4">
|
||||
<center>
|
||||
<img src="http://placehold.it/50x50">
|
||||
</center>
|
||||
<h5 class="text-center">Feature Three</h5>
|
||||
<p class="text-center">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum, quod quam unde earum.</p>
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<row>
|
||||
<columns>
|
||||
<h3 class="text-center">What Are You Waiting For? Get Started Today.</h3>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<button class="large expand" href="#">Sign Up</button>
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
<row class="collapsed footer">
|
||||
<columns>
|
||||
<spacer size="16"></spacer>
|
||||
<p class="text-center">© copyright nobody<br/>
|
||||
<a href="#">hello@nocopyright.com</a> | <a href="#">Manage Email Notifications</a> | <a href="#">Unsubscribe</a></p>
|
||||
<center>
|
||||
<menu>
|
||||
<item><img src="http://placehold.it/25" alt=""></item>
|
||||
<item><img src="http://placehold.it/25" alt=""></item>
|
||||
<item><img src="http://placehold.it/25" alt=""></item>
|
||||
<item><img src="http://placehold.it/25" alt=""></item>
|
||||
<item><img src="http://placehold.it/25" alt=""></item>
|
||||
</menu>
|
||||
</center>
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
</container>
|
43
src/pages/newsletter-2.html
Normal file
43
src/pages/newsletter-2.html
Normal file
@ -0,0 +1,43 @@
|
||||
---
|
||||
subject: My Other Newsletter Email Template Subject
|
||||
---
|
||||
|
||||
<container>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<row>
|
||||
<columns>
|
||||
<center>
|
||||
<img src="http://placehold.it/548x200">
|
||||
</center>
|
||||
</columns>
|
||||
</row>
|
||||
<row>
|
||||
<columns large="8">
|
||||
<h2>This is a title</h2>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quam at, nihil quas harum mollitia dolores odio. Inventore delectus nihil soluta quos, magni doloribus, voluptas aspernatur explicabo atque perspiciatis possimus voluptates.</p>
|
||||
<p><a href="#">Learn more</a></p>
|
||||
</columns>
|
||||
<columns large="4">
|
||||
<img class="small-float-center" src="http://placehold.it/170x129" alt="">
|
||||
</columns>
|
||||
</row>
|
||||
<row>
|
||||
<columns large="6">
|
||||
<h4>Sub Section Title</h4>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod eum eius numquam sint dolore voluptatibus beatae ab ad, dignissimos fugiat? Nisi odio commodi debitis eveniet tenetur provident aliquid tempora placeat.</p>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod eum eius numquam sint dolore voluptatibus beatae ab ad, dignissimos fugiat? Nisi odio commodi debitis eveniet tenetur provident aliquid tempora placeat.</p>
|
||||
</columns>
|
||||
<columns large="6">
|
||||
<h4>Sub Section Title</h4>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod eum eius numquam sint dolore voluptatibus beatae ab ad, dignissimos fugiat? Nisi odio commodi debitis eveniet tenetur provident aliquid tempora placeat.</p>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod eum eius numquam sint dolore voluptatibus beatae ab ad, dignissimos fugiat? Nisi odio commodi debitis eveniet tenetur provident aliquid tempora placeat.</p>
|
||||
</columns>
|
||||
</row>
|
||||
<row>
|
||||
<columns>
|
||||
<p>You received this email because you're signed up to receive updates from us. <a href="#">Click here to unsubscribe.</a></p>
|
||||
</columns>
|
||||
</row>
|
||||
</container>
|
44
src/pages/newsletter.html
Normal file
44
src/pages/newsletter.html
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
subject: My Newsletter Email Template Subject
|
||||
---
|
||||
|
||||
<container>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<row>
|
||||
<columns>
|
||||
<h1 class="text-center">The Insider</h1>
|
||||
<center>
|
||||
<img src="http://placehold.it/500x200">
|
||||
</center>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<p class="lead">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa itaque illo doloribus soluta expedita dolores commodi fuga odit.</p>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto reiciendis eos magni deleniti accusamus tempore, consectetur! Maxime amet, exercitationem nihil fugit eius esse voluptatum ab incidunt minima, saepe reiciendis ipsum.</p>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto reiciendis eos magni deleniti accusamus tempore, consectetur! Maxime amet, exercitationem nihil fugit eius esse voluptatum ab incidunt minima, saepe reiciendis ipsum.</p>
|
||||
|
||||
<row>
|
||||
<columns large="6">
|
||||
<h4>More Reading:</h4>
|
||||
<ul>
|
||||
<li><a href="#">Lorem Ipsum Dolor Sit Amet</a></li>
|
||||
<li><a href="#">Lorem Ipsum Dolor Sit Amet</a></li>
|
||||
<li><a href="#">Lorem Ipsum Dolor Sit Amet</a></li>
|
||||
</ul>
|
||||
</columns>
|
||||
<columns>
|
||||
<h4>Get Involved:</h4>
|
||||
<ul>
|
||||
<li><a href="#">Facebook</a></li>
|
||||
<li><a href="#">Twitter</a></li>
|
||||
<li><a href="#">Instagram</a></li>
|
||||
</ul>
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
<p><small>You received this email because you're signed up to get updates from us. <a href="#">Click here to unsubscribe.</a></small></p>
|
||||
</columns>
|
||||
</row>
|
||||
</container>
|
86
src/pages/order.html
Normal file
86
src/pages/order.html
Normal file
@ -0,0 +1,86 @@
|
||||
<style type="text/css">
|
||||
body,
|
||||
html,
|
||||
.body {
|
||||
background: #f3f3f3 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<container>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<row>
|
||||
<columns>
|
||||
<h1>Thanks for your order.</h1>
|
||||
<p>Thanks for shopping with us! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad earum ducimus, non, eveniet neque dolores voluptas architecto sed, voluptatibus aut dolorem odio. Cupiditate a recusandae, illum cum voluptatum modi nostrum.</p>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<callout class="secondary">
|
||||
<row>
|
||||
<columns large="6">
|
||||
<p>
|
||||
<strong>Payment Method</strong><br/>
|
||||
Dubloons
|
||||
</p>
|
||||
<p>
|
||||
<strong>Email Address</strong><br/>
|
||||
thecapn@pirates.org
|
||||
</p>
|
||||
<p>
|
||||
<strong>Order ID</strong><br/>
|
||||
239235983749636
|
||||
</p>
|
||||
</columns>
|
||||
<columns large="6">
|
||||
<p>
|
||||
<strong>Shipping Method</strong><br/>
|
||||
Boat (1–2 weeks)<br/>
|
||||
<strong>Shipping Address</strong><br/>
|
||||
Captain Price<br/>
|
||||
123 Maple Rd<br/>
|
||||
Campbell, CA 95112
|
||||
</p>
|
||||
</columns>
|
||||
</row>
|
||||
</callout>
|
||||
|
||||
<h4>Order Details</h4>
|
||||
|
||||
<table>
|
||||
<tr><th>Item</th><th>#</th><th>Price</th></tr>
|
||||
<tr><td>Ship's Cannon</td><td>2</td><td>$100</td></tr>
|
||||
<tr><td>Ship's Cannon</td><td>2</td><td>$100</td></tr>
|
||||
<tr><td>Ship's Cannon</td><td>2</td><td>$100</td></tr>
|
||||
<tr>
|
||||
<td colspan="2"><b>Subtotal:</b></td>
|
||||
<td>$600</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr/>
|
||||
|
||||
<h4>What's Next?</h4>
|
||||
|
||||
<p>Our carrier raven will prepare your order for delivery. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Modi necessitatibus itaque debitis laudantium doloribus quasi nostrum distinctio suscipit, magni soluta eius animi voluptatem qui velit eligendi quam praesentium provident culpa?</p>
|
||||
</columns>
|
||||
</row>
|
||||
<row class="footer text-center">
|
||||
<columns large="3">
|
||||
<img src="http://placehold.it/170x30" alt="">
|
||||
</columns>
|
||||
<columns large="3">
|
||||
<p>
|
||||
Call us at 800.555.1923<br/>
|
||||
Email us at support@discount.boat
|
||||
</p>
|
||||
</columns>
|
||||
<columns large="3">
|
||||
<p>
|
||||
123 Maple Rd<br/>
|
||||
Campbell, CA 95112
|
||||
</p>
|
||||
</columns>
|
||||
</row>
|
||||
</container>
|
40
src/pages/password.html
Normal file
40
src/pages/password.html
Normal file
@ -0,0 +1,40 @@
|
||||
---
|
||||
subject: My Password Email Template Subject
|
||||
---
|
||||
|
||||
<container>
|
||||
|
||||
<row class="header">
|
||||
<columns>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<h4 class="text-center">Pirate Retirement Services</h4>
|
||||
</columns>
|
||||
</row>
|
||||
<row>
|
||||
<columns>
|
||||
|
||||
<spacer size="32"></spacer>
|
||||
|
||||
<center>
|
||||
<img src="http://placehold.it/250x250">
|
||||
</center>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<h1 class="text-center">Forgot Your Password?</h1>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<p class="text-center">It happens. Click the link below to reset your password.</p>
|
||||
<button class="large expand" href="#">Reset Password</button>
|
||||
|
||||
<hr/>
|
||||
|
||||
<p><small>You're getting this email because you've signed up for email updates. If you want to opt-out of future emails, <a href="#">unsubscribe here</a>.</small></p>
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
</container>
|
56
src/pages/readlater.html
Normal file
56
src/pages/readlater.html
Normal file
@ -0,0 +1,56 @@
|
||||
---
|
||||
subject: ReadLaterByEmail link
|
||||
---
|
||||
|
||||
<container class="header">
|
||||
<row class="collapse">
|
||||
<columns>
|
||||
<img src="https://app.readlater.shikiryu.com/images/logo.png" alt="">
|
||||
</columns>
|
||||
</row>
|
||||
</container>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<container class="body-drip">
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<row>
|
||||
<columns large="6" style="vertical-align: middle">
|
||||
<h5 class="text-center">Responsive Emails</h5>
|
||||
</columns>
|
||||
<columns large="6">
|
||||
<img src="http://placehold.it/120/663399" alt="" class="text-center">
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
<hr/>
|
||||
|
||||
<row>
|
||||
<columns>
|
||||
<p class="text-center">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras egestas ullamcorper tristique. Aenean pharetra, ipsum eu varius elementum, odio ex malesuada neque, eget tempus ipsum neque ut ante. Vivamus volutpat faucibus metus quis ultrices. Fusce hendrerit purus in elit tincidunt sollicitudin. Duis ultrices odio id faucibus sagittis. Sed nulla leo, gravida non massa vitae, bibendum interdum sapien. Pellentesque rutrum sem bibendum tellus volutpat congue.</p>
|
||||
<center>
|
||||
<button href="#" class="success">Link →</button>
|
||||
</center>
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
<row class="collapsed footer body-drip">
|
||||
<columns>
|
||||
<spacer size="16"></spacer>
|
||||
<p class="text-center">@ <a href="https://shikiryu.com">Shikiryu</a><br/>
|
||||
<!--<a href="#">hello@nocopywrite.com</a> | <a href="#">Manage Email Notifications</a> | <a href="#">Unsubscribe</a></p>
|
||||
<center>
|
||||
<menu>
|
||||
<item><img src="http://placehold.it/25/663399" alt=""></item>
|
||||
<item><img src="http://placehold.it/25/663399" alt=""></item>
|
||||
<item><img src="http://placehold.it/25/663399" alt=""></item>
|
||||
<item><img src="http://placehold.it/25/663399" alt=""></item>
|
||||
<item><img src="http://placehold.it/25/663399" alt=""></item>
|
||||
</menu>
|
||||
</center>-->
|
||||
</columns>
|
||||
</row>
|
||||
|
||||
</container>
|
80
src/pages/sidebar-hero.html
Normal file
80
src/pages/sidebar-hero.html
Normal file
@ -0,0 +1,80 @@
|
||||
---
|
||||
subject: My Sidebar Hero Email Template Subject
|
||||
---
|
||||
|
||||
<wrapper class="header">
|
||||
<container>
|
||||
<row class="collapse">
|
||||
<columns small="6">
|
||||
<img src="http://placehold.it/200x50/663399">
|
||||
</columns>
|
||||
<columns small="6">
|
||||
<p class="text-right">SIDEBAR HERO</p>
|
||||
</columns>
|
||||
</row>
|
||||
</container>
|
||||
</wrapper>
|
||||
|
||||
<container>
|
||||
|
||||
<spacer size="16"></spacer>
|
||||
|
||||
<row>
|
||||
<columns>
|
||||
<h1>Hi, Elijah Baily</h1>
|
||||
<p class="lead">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi impedit sapiente delectus molestias quia.</p>
|
||||
<center>
|
||||
<img src="http://placehold.it/570x300" alt="">
|
||||
</center>
|
||||
<callout class="primary">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Veniam assumenda, praesentium qui vitae voluptate dolores. <a href="#">Click it!</a></p>
|
||||
</callout>
|
||||
</columns>
|
||||
</row>
|
||||
<row>
|
||||
<columns large="7">
|
||||
<h3>Hello, Han Fastolfe</h3>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laboriosam nobis velit, aliquid pariatur at fugit. Omnis at quae, libero iusto quisquam animi blanditiis neque, alias minima corporis, ab in explicabo?</p>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Maxime dignissimos voluptas minus, cupiditate voluptatem, voluptatum iste molestiae consectetur temporibus quae dolore nam possimus reprehenderit blanditiis laborum iusto sit. Perspiciatis, dolor.</p>
|
||||
<callout class="secondary">
|
||||
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa quas optio totam quidem, placeat sunt, sit iusto fugit. Harum omnis deleniti enim nihil iure, quis laudantium veniam velit animi debitis. <a href="#">Click It!</a>
|
||||
</callout>
|
||||