Add more content to site and redesign it.
This commit is contained in:
Родитель
b104405330
Коммит
b99d2b08d5
|
@ -1,5 +1,4 @@
|
|||
|
||||
# API analytics
|
||||
# Recipe: API analytics
|
||||
## Use case
|
||||
As a web app developer, I want to add API tracking capabilities to my web application trying to not modify client code nor server code at all.
|
||||
|
||||
|
|
207
gulpfile.js
207
gulpfile.js
|
@ -1,23 +1,120 @@
|
|||
var gulp = require('gulp');
|
||||
var fs = require('fs');
|
||||
var plugins = require('gulp-load-plugins')();
|
||||
var del = require('del');
|
||||
var glob = require('glob');
|
||||
var path = require('path');
|
||||
var marked = require('marked');
|
||||
var swig = require('swig');
|
||||
var through2 = require('through2');
|
||||
var promisify = require('es6-promisify');
|
||||
var assert = require('assert');
|
||||
var mergeStream = require('merge-stream');
|
||||
var renderFile = promisify(swig.renderFile);
|
||||
var fsWriteFile = promisify(fs.writeFile);
|
||||
var fsReadFile = promisify(fs.readFile);
|
||||
|
||||
var ignore = ['!./dist', '!./dist/**', '!./node_modules', '!./node_modules/**'];
|
||||
var recipes = glob.sync('./!(dist|node_modules)/').map(function toBase(dir) {
|
||||
var ignore = ['!./dist', '!./dist', '!./dist/**', '!./node_modules', '!./node_modules/**'];
|
||||
var recipeSlugs = glob.sync('./!(dist|node_modules|src)/').map(function toBase(dir) {
|
||||
return path.basename(dir);
|
||||
});
|
||||
var srcRecipes = recipes.map(function makePath(name) {
|
||||
var srcRecipes = recipeSlugs.map(function makePath(name) {
|
||||
return './' + name + '/**';
|
||||
});
|
||||
var srcFiles = recipes.map(function makeSourceFile(name) {
|
||||
return './' + name + '/*.js';
|
||||
});
|
||||
|
||||
var recipes = (function() {
|
||||
var cache;
|
||||
return function() {
|
||||
if (cache) {
|
||||
return cache;
|
||||
}
|
||||
cache = [];
|
||||
recipeSlugs.forEach(function(recipe) {
|
||||
var tokens = marked.lexer(fs.readFileSync(recipe + '/README.md', 'utf8'));
|
||||
if (!tokens.length) {
|
||||
console.warn(recipe + ': is missing title');
|
||||
}
|
||||
var name = tokens[0].text;
|
||||
if (!name.startsWith('Recipe: ')) {
|
||||
console.warn('Recipe should start with "Recipe: "');
|
||||
} else {
|
||||
name = name.substr(8);
|
||||
}
|
||||
var srcs = glob.sync('*.js', { cwd: recipe }).map(function(src) {
|
||||
assert(src.endsWith('.js'));
|
||||
var srcName = src.substr(0, src.length - 3);
|
||||
return {
|
||||
filename: src,
|
||||
name: srcName,
|
||||
ref: recipe + '_' + srcName + '_doc.html'
|
||||
};
|
||||
});
|
||||
cache.push({
|
||||
name: name,
|
||||
slug: recipe,
|
||||
srcs: srcs,
|
||||
demo_ref: recipe + '_demo.html',
|
||||
intro_ref: recipe + '.html',
|
||||
});
|
||||
});
|
||||
return cache;
|
||||
};
|
||||
})();
|
||||
|
||||
var template = (function() {
|
||||
function renderContent(content, options) {
|
||||
var newOptions = options || {};
|
||||
return renderFile('./src/tpl/layout.html', {
|
||||
content: content,
|
||||
package: require('./package.json'),
|
||||
recipes: recipes(),
|
||||
ghBase: 'https://github.com/digitarald/serviceworker-cookbook/blob/master/',
|
||||
currentRecipe: newOptions.currentRecipe,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Write content into the layout file.
|
||||
* @param {string} outputFile - filename
|
||||
* @param {string} content - put in the main body, NOT ESCAPED
|
||||
* @param {Object} options -
|
||||
* 'currentRecipe' - if the page needs the recipe's header
|
||||
* @returns {Promise}
|
||||
*/
|
||||
function writeFile(outputFile, content, options) {
|
||||
return renderContent(content, options)
|
||||
.then(function(output) {
|
||||
return fsWriteFile(outputFile, output);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Same as writeFile but works with streams
|
||||
* @returns Stream transform.
|
||||
*/
|
||||
function transform(options) {
|
||||
return through2.obj(function(file, enc, next) {
|
||||
var self = this;
|
||||
renderContent(file.contents.toString('utf8'), options)
|
||||
.then(function(output) {
|
||||
file.contents = new Buffer(output);
|
||||
self.push(file);
|
||||
next();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
transform: transform,
|
||||
writeFile: writeFile
|
||||
};
|
||||
})();
|
||||
|
||||
gulp.task('clean', function clean(done) {
|
||||
del(['./dist']).then(function delThen() {
|
||||
done();
|
||||
fs.mkdir('./dist', function() {
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -30,25 +127,69 @@ gulp.task('lint', function lint() {
|
|||
});
|
||||
|
||||
gulp.task('build:docs', ['clean'], function buildDocs() {
|
||||
return gulp
|
||||
.src(srcFiles, {
|
||||
var streams = recipes().map(function(recipe) {
|
||||
return gulp
|
||||
.src(recipe.srcs.map(function(src) {
|
||||
return recipe.slug + '/' + src.filename;
|
||||
}), {
|
||||
base: './'
|
||||
})
|
||||
.pipe(plugins.docco())
|
||||
.pipe(gulp.dest('./dist/docs'));
|
||||
.pipe(plugins.docco({
|
||||
template: './src/tpl/docco/docco.jst'
|
||||
}))
|
||||
.pipe(template.transform({ currentRecipe: recipe }))
|
||||
.pipe(plugins.rename(function(renamePath) {
|
||||
renamePath.dirname = '';
|
||||
renamePath.basename = recipe.slug + '_' + renamePath.basename + '_doc';
|
||||
}))
|
||||
.pipe(gulp.dest('./dist/'));
|
||||
});
|
||||
|
||||
return mergeStream.apply(null, streams);
|
||||
});
|
||||
|
||||
gulp.task('build:index', ['clean'], function buildIndex() {
|
||||
return gulp
|
||||
.src('index.html')
|
||||
.pipe(plugins.swig({
|
||||
data: {
|
||||
package: require('./package.json'),
|
||||
recipes: recipes,
|
||||
ghBase: 'https://github.com/digitarald/serviceworker-cookbook/blob/master/'
|
||||
}
|
||||
}))
|
||||
.pipe(gulp.dest('./dist'));
|
||||
var intros = [];
|
||||
recipeSlugs.forEach(function(recipe) {
|
||||
var tokens = marked.lexer(fs.readFileSync(recipe + '/README.md', 'utf8'));
|
||||
if (tokens.length < 2 || tokens[0].type !== 'heading' || tokens[1].type !== 'paragraph') {
|
||||
console.error('Recipe: ' + recipe + ' must have title and summary');
|
||||
return;
|
||||
}
|
||||
var title = tokens[0].text.substr(8);
|
||||
var summary = [tokens[1]];
|
||||
summary.links = tokens.links;
|
||||
intros.push({
|
||||
slug: recipe,
|
||||
title: title,
|
||||
summary: marked.parser(summary),
|
||||
});
|
||||
});
|
||||
return renderFile('./src/tpl/index.html', { recipes: intros })
|
||||
.then(function(output) {
|
||||
return template.writeFile('./dist/index.html', output);
|
||||
});
|
||||
});
|
||||
|
||||
gulp.task('build:intros', ['clean'], function buildRecipes() {
|
||||
return Promise.all(recipes().map(function(recipe) {
|
||||
return fsReadFile(recipe.slug + '/README.md', 'utf8')
|
||||
.then(function(readme) {
|
||||
return renderFile('./src/tpl/intro.html', { markdown: marked(readme) });
|
||||
})
|
||||
.then(function(content) {
|
||||
return template.writeFile('./dist/' + recipe.slug + '.html', content, { currentRecipe: recipe });
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
gulp.task('build:demos', ['clean'], function buildRecipes() {
|
||||
return Promise.all(recipes().map(function(recipe) {
|
||||
return renderFile('./src/tpl/demo.html', { recipe: recipe })
|
||||
.then(function(output) {
|
||||
return template.writeFile('./dist/' + recipe.slug + '_demo.html', output, { currentRecipe: recipe });
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
||||
gulp.task('build:recipes', ['clean'], function buildRecipes() {
|
||||
|
@ -59,6 +200,26 @@ gulp.task('build:recipes', ['clean'], function buildRecipes() {
|
|||
.pipe(gulp.dest('./dist'));
|
||||
});
|
||||
|
||||
gulp.task('build:css', ['clean'], function buildRecipes() {
|
||||
return gulp
|
||||
.src([
|
||||
'src/css/foundation.normalize.css',
|
||||
'src/css/foundation.css',
|
||||
'src/css/foundation-icons.css',
|
||||
'src/css/style.css',
|
||||
'src/css/docco.css'
|
||||
])
|
||||
.pipe(plugins.concat('bundle.css'))
|
||||
.pipe(gulp.dest('./dist'));
|
||||
});
|
||||
|
||||
gulp.task('build:js', ['clean'], function buildRecipes() {
|
||||
return gulp
|
||||
.src('src/js/*.js')
|
||||
.pipe(plugins.concat('bundle.js'))
|
||||
.pipe(gulp.dest('./dist'));
|
||||
});
|
||||
|
||||
// Start express server after building site
|
||||
gulp.task('start-server', ['build'], function startServer(cb) {
|
||||
require('./server.js').ready.then(cb);
|
||||
|
@ -72,7 +233,7 @@ gulp.task('watch', ['start-server'], function serve() {
|
|||
files: './*/*.js',
|
||||
open: false
|
||||
});
|
||||
gulp.watch(['./*/*'].concat(ignore), ['build-dev'], browserSync.reload);
|
||||
return gulp.watch(['./*/*'].concat(ignore), ['build-dev'], browserSync.reload);
|
||||
});
|
||||
|
||||
gulp.task('test', ['lint']);
|
||||
|
@ -81,4 +242,4 @@ gulp.task('test', ['lint']);
|
|||
gulp.task('build-dev', ['build:recipes', 'test']);
|
||||
|
||||
// Full build for publishing
|
||||
gulp.task('build', ['build:index', 'build:recipes', 'build:docs']);
|
||||
gulp.task('build', ['build:index', 'build:intros', 'build:demos', 'build:recipes', 'build:docs', 'build:css', 'build:js']);
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
# Recipe: Immediate Claim
|
25
index.html
25
index.html
|
@ -1,25 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>ServiceWorker Cookbook</title>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/foundation/5.5.2/css/normalize.min.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/foundation/5.5.2/css/foundation.min.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="row">
|
||||
<div class="small-9 small-centered columns">
|
||||
<header class="hero">
|
||||
<h1>ServiceWorker Cookbook <small>{{ package.version }}</small></h1>
|
||||
<h2 class="subheader">{{ package.description }}</h2>
|
||||
</header>
|
||||
<article>
|
||||
<h3>Recipes</h3>
|
||||
{% for recipe in recipes %}
|
||||
<h4><em></em> <a href="./{{ recipe }}/">{{ recipe }}</a> <a class="label" href="{{ ghBase }}{{ recipe }}/">Source</a><h4>
|
||||
{% endfor %}
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1 @@
|
|||
# Recipe: Message Relay
|
11
package.json
11
package.json
|
@ -27,12 +27,19 @@
|
|||
"@alrra/travis-scripts": "^1.1.1",
|
||||
"browser-sync": "^2.9.6",
|
||||
"eslint-config-airbnb": "^0.1.0",
|
||||
"gulp-eslint": "^1.0.0"
|
||||
"glob": "^5.0.15",
|
||||
"gulp-concat": "^2.6.0",
|
||||
"gulp-eslint": "^1.0.0",
|
||||
"gulp-rename": "^1.2.2",
|
||||
"marked": "^0.3.5",
|
||||
"merge-stream": "^1.0.0",
|
||||
"rename": "^1.0.3",
|
||||
"through2": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"body-parser": "^1.14.1",
|
||||
"del": "^2.0.2",
|
||||
"docco": "^0.7.0",
|
||||
"es6-promisify": "^3.0.0",
|
||||
"express": "^4.13.3",
|
||||
"glob": "^5.0.14",
|
||||
"gulp": "^3.9.0",
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
# Recipe: Push Clients
|
|
@ -0,0 +1 @@
|
|||
# Recipe: Push Payload
|
|
@ -0,0 +1 @@
|
|||
# Recipe: Push Rich
|
|
@ -0,0 +1 @@
|
|||
# Recipe: Push Simple
|
|
@ -1,4 +1,4 @@
|
|||
https://github.com/mozilla/serviceworker-cookbook/issues/44
|
||||
# Recipe: Push Subscription
|
||||
|
||||
Recipe: Push notifications with subscription management
|
||||
=======================================================
|
||||
|
|
|
@ -0,0 +1,443 @@
|
|||
#docco_container { min-height: 100%; }
|
||||
|
||||
|
||||
#docco_container p {
|
||||
margin: 15px 0 0px;
|
||||
}
|
||||
.annotation ul, .annotation ol {
|
||||
margin: 25px 0;
|
||||
}
|
||||
.annotation ul li, .annotation ol li {
|
||||
font-size: 14px;
|
||||
line-height: 18px;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
pre, tt, code {
|
||||
font-size: 12px; line-height: 16px;
|
||||
font-family: Menlo, Monaco, Consolas, "Lucida Console", monospace;
|
||||
margin: 0; padding: 0;
|
||||
}
|
||||
.annotation pre {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 7px 10px;
|
||||
background: #fcfcfc;
|
||||
-moz-box-shadow: inset 0 0 10px rgba(0,0,0,0.1);
|
||||
-webkit-box-shadow: inset 0 0 10px rgba(0,0,0,0.1);
|
||||
box-shadow: inset 0 0 10px rgba(0,0,0,0.1);
|
||||
overflow-x: auto;
|
||||
}
|
||||
.annotation pre code {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: 5px solid #ccc;
|
||||
margin: 0;
|
||||
padding: 1px 0 1px 1em;
|
||||
}
|
||||
|
||||
.sections blockquote p {
|
||||
font-family: Menlo, Consolas, Monaco, monospace;
|
||||
font-size: 12px; line-height: 16px;
|
||||
color: #999;
|
||||
margin: 10px 0 0;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
ul.sections {
|
||||
list-style: none;
|
||||
padding:0 0 5px 0;;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
/*
|
||||
Force border-box so that % widths fit the parent
|
||||
container without overlap because of margin/padding.
|
||||
|
||||
More Info : http://www.quirksmode.org/css/box.html
|
||||
*/
|
||||
ul.sections > li > div {
|
||||
-moz-box-sizing: border-box; /* firefox */
|
||||
-ms-box-sizing: border-box; /* ie */
|
||||
-webkit-box-sizing: border-box; /* webkit */
|
||||
-khtml-box-sizing: border-box; /* konqueror */
|
||||
box-sizing: border-box; /* css3 */
|
||||
}
|
||||
|
||||
|
||||
/*---------------------- Jump Page -----------------------------*/
|
||||
#jump_to, #jump_page {
|
||||
margin: 0;
|
||||
background: white;
|
||||
-webkit-box-shadow: 0 0 25px #777; -moz-box-shadow: 0 0 25px #777;
|
||||
-webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px;
|
||||
font: 16px Arial;
|
||||
cursor: pointer;
|
||||
text-align: right;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
#jump_to a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#jump_to a.large {
|
||||
display: none;
|
||||
}
|
||||
#jump_to a.small {
|
||||
font-size: 22px;
|
||||
font-weight: bold;
|
||||
color: #676767;
|
||||
}
|
||||
|
||||
#jump_to, #jump_wrapper {
|
||||
position: fixed;
|
||||
right: 0; top: 0;
|
||||
padding: 10px 15px;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
#jump_wrapper {
|
||||
display: none;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
#jump_to:hover #jump_wrapper {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#jump_page_wrapper{
|
||||
position: fixed;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
#jump_page {
|
||||
padding: 5px 0 3px;
|
||||
margin: 0 0 25px 25px;
|
||||
max-height: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#jump_page .source {
|
||||
display: block;
|
||||
padding: 15px;
|
||||
text-decoration: none;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
#jump_page .source:hover {
|
||||
background: #f5f5ff;
|
||||
}
|
||||
|
||||
#jump_page .source:first-child {
|
||||
}
|
||||
|
||||
/*---------------------- Low resolutions (> 320px) ---------------------*/
|
||||
@media only screen and (min-width: 320px) {
|
||||
.pilwrap { display: none; }
|
||||
|
||||
ul.sections > li > div {
|
||||
display: block;
|
||||
padding:5px 10px 0 10px;
|
||||
}
|
||||
|
||||
ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
ul.sections > li > div.content {
|
||||
overflow-x:auto;
|
||||
-webkit-box-shadow: inset 0 0 5px #e5e5ee;
|
||||
box-shadow: inset 0 0 5px #e5e5ee;
|
||||
border: 1px solid #dedede;
|
||||
margin:5px 10px 5px 10px;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
ul.sections > li > div.annotation pre {
|
||||
margin: 7px 0 7px;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
ul.sections > li > div.annotation p tt, .annotation code {
|
||||
background: #f8f8ff;
|
||||
border: 1px solid #dedede;
|
||||
font-size: 12px;
|
||||
padding: 0 0.2em;
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------- (> 481px) ---------------------*/
|
||||
@media only screen and (min-width: 481px) {
|
||||
#docco_container {
|
||||
position: relative;
|
||||
font-size: 15px;
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
pre, tt, code {
|
||||
line-height: 18px;
|
||||
}
|
||||
p, ul, ol {
|
||||
margin: 0 0 15px;
|
||||
}
|
||||
|
||||
|
||||
#jump_to {
|
||||
padding: 5px 10px;
|
||||
}
|
||||
#jump_wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
#jump_to, #jump_page {
|
||||
font: 10px Arial;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
#jump_page .source {
|
||||
padding: 5px 10px;
|
||||
}
|
||||
#jump_to a.large {
|
||||
display: inline-block;
|
||||
}
|
||||
#jump_to a.small {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#background {
|
||||
position: absolute;
|
||||
top: 0; bottom: 0;
|
||||
width: 350px;
|
||||
background: #fff;
|
||||
border-right: 1px solid #e5e5ee;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol {
|
||||
padding-left: 40px;
|
||||
}
|
||||
|
||||
ul.sections > li {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
ul.sections > li > div {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
ul.sections > li > div.annotation {
|
||||
max-width: 350px;
|
||||
min-width: 350px;
|
||||
min-height: 5px;
|
||||
padding: 13px;
|
||||
overflow-x: hidden;
|
||||
white-space: normal;
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
}
|
||||
ul.sections > li > div.annotation pre {
|
||||
margin: 15px 0 15px;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
ul.sections > li > div.content {
|
||||
padding: 13px;
|
||||
vertical-align: top;
|
||||
border: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.pilwrap {
|
||||
position: relative;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.pilcrow {
|
||||
font: 12px Arial;
|
||||
text-decoration: none;
|
||||
color: #454545;
|
||||
position: absolute;
|
||||
top: 3px; left: -20px;
|
||||
padding: 1px 2px;
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.2s linear;
|
||||
}
|
||||
.for-h1 .pilcrow {
|
||||
top: 47px;
|
||||
}
|
||||
.for-h2 .pilcrow, .for-h3 .pilcrow, .for-h4 .pilcrow {
|
||||
top: 35px;
|
||||
}
|
||||
|
||||
ul.sections > li > div.annotation:hover .pilcrow {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------- (> 1025px) ---------------------*/
|
||||
@media only screen and (min-width: 1025px) {
|
||||
|
||||
#docco_container {
|
||||
font-size: 16px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
#background {
|
||||
width: 525px;
|
||||
}
|
||||
ul.sections > li > div.annotation {
|
||||
max-width: 525px;
|
||||
min-width: 525px;
|
||||
padding: 10px 25px 1px 0;
|
||||
}
|
||||
ul.sections > li > div.content {
|
||||
padding: 9px 15px 16px 25px;
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------- Syntax Highlighting -----------------------------*/
|
||||
|
||||
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
|
||||
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
|
||||
/*
|
||||
|
||||
github.com style (c) Vasily Polovnyov <vast@whiteants.net>
|
||||
|
||||
*/
|
||||
|
||||
pre code {
|
||||
display: block; padding: 0.5em;
|
||||
color: #000;
|
||||
background: #f8f8ff
|
||||
}
|
||||
|
||||
pre .hljs-comment,
|
||||
pre .hljs-template_comment,
|
||||
pre .hljs-diff .hljs-header,
|
||||
pre .hljs-javadoc {
|
||||
color: #408080;
|
||||
font-style: italic
|
||||
}
|
||||
|
||||
pre .hljs-keyword,
|
||||
pre .hljs-assignment,
|
||||
pre .hljs-literal,
|
||||
pre .hljs-css .hljs-rule .hljs-keyword,
|
||||
pre .hljs-winutils,
|
||||
pre .hljs-javascript .hljs-title,
|
||||
pre .hljs-lisp .hljs-title,
|
||||
pre .hljs-subst {
|
||||
color: #954121;
|
||||
/*font-weight: bold*/
|
||||
}
|
||||
|
||||
pre .hljs-number,
|
||||
pre .hljs-hexcolor {
|
||||
color: #40a070
|
||||
}
|
||||
|
||||
pre .hljs-string,
|
||||
pre .hljs-tag .hljs-value,
|
||||
pre .hljs-phpdoc,
|
||||
pre .hljs-tex .hljs-formula {
|
||||
color: #219161;
|
||||
}
|
||||
|
||||
pre .hljs-title,
|
||||
pre .hljs-id {
|
||||
color: #19469D;
|
||||
}
|
||||
pre .hljs-params {
|
||||
color: #00F;
|
||||
}
|
||||
|
||||
pre .hljs-javascript .hljs-title,
|
||||
pre .hljs-lisp .hljs-title,
|
||||
pre .hljs-subst {
|
||||
font-weight: normal
|
||||
}
|
||||
|
||||
pre .hljs-class .hljs-title,
|
||||
pre .hljs-haskell .hljs-label,
|
||||
pre .hljs-tex .hljs-command {
|
||||
color: #458;
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
pre .hljs-tag,
|
||||
pre .hljs-tag .hljs-title,
|
||||
pre .hljs-rules .hljs-property,
|
||||
pre .hljs-django .hljs-tag .hljs-keyword {
|
||||
color: #000080;
|
||||
font-weight: normal
|
||||
}
|
||||
|
||||
pre .hljs-attribute,
|
||||
pre .hljs-variable,
|
||||
pre .hljs-instancevar,
|
||||
pre .hljs-lisp .hljs-body {
|
||||
color: #008080
|
||||
}
|
||||
|
||||
pre .hljs-regexp {
|
||||
color: #B68
|
||||
}
|
||||
|
||||
pre .hljs-class {
|
||||
color: #458;
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
pre .hljs-symbol,
|
||||
pre .hljs-ruby .hljs-symbol .hljs-string,
|
||||
pre .hljs-ruby .hljs-symbol .hljs-keyword,
|
||||
pre .hljs-ruby .hljs-symbol .hljs-keymethods,
|
||||
pre .hljs-lisp .hljs-keyword,
|
||||
pre .hljs-tex .hljs-special,
|
||||
pre .hljs-input_number {
|
||||
color: #990073
|
||||
}
|
||||
|
||||
pre .hljs-builtin,
|
||||
pre .hljs-constructor,
|
||||
pre .hljs-built_in,
|
||||
pre .hljs-lisp .hljs-title {
|
||||
color: #0086b3
|
||||
}
|
||||
|
||||
pre .hljs-preprocessor,
|
||||
pre .hljs-pi,
|
||||
pre .hljs-doctype,
|
||||
pre .hljs-shebang,
|
||||
pre .hljs-cdata {
|
||||
color: #999;
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
pre .hljs-deletion {
|
||||
background: #fdd
|
||||
}
|
||||
|
||||
pre .hljs-addition {
|
||||
background: #dfd
|
||||
}
|
||||
|
||||
pre .hljs-diff .hljs-change {
|
||||
background: #0086b3
|
||||
}
|
||||
|
||||
pre .hljs-chunk {
|
||||
color: #aaa
|
||||
}
|
||||
|
||||
pre .hljs-tex .hljs-formula {
|
||||
opacity: 0.5;
|
||||
}
|
|
@ -0,0 +1,594 @@
|
|||
/*
|
||||
* Foundation Icons v 3.0
|
||||
* Made by ZURB 2013 http://zurb.com/playground/foundation-icon-fonts-3
|
||||
* MIT License
|
||||
*/
|
||||
|
||||
@font-face {
|
||||
font-family: "foundation-icons";
|
||||
src: url("https://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.eot");
|
||||
src: url("https://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.eot?#iefix") format("embedded-opentype"),
|
||||
url("https://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.woff") format("woff"),
|
||||
url("https://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.ttf") format("truetype"),
|
||||
url("https://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.svg#fontcustom") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.fi-address-book:before,
|
||||
.fi-alert:before,
|
||||
.fi-align-center:before,
|
||||
.fi-align-justify:before,
|
||||
.fi-align-left:before,
|
||||
.fi-align-right:before,
|
||||
.fi-anchor:before,
|
||||
.fi-annotate:before,
|
||||
.fi-archive:before,
|
||||
.fi-arrow-down:before,
|
||||
.fi-arrow-left:before,
|
||||
.fi-arrow-right:before,
|
||||
.fi-arrow-up:before,
|
||||
.fi-arrows-compress:before,
|
||||
.fi-arrows-expand:before,
|
||||
.fi-arrows-in:before,
|
||||
.fi-arrows-out:before,
|
||||
.fi-asl:before,
|
||||
.fi-asterisk:before,
|
||||
.fi-at-sign:before,
|
||||
.fi-background-color:before,
|
||||
.fi-battery-empty:before,
|
||||
.fi-battery-full:before,
|
||||
.fi-battery-half:before,
|
||||
.fi-bitcoin-circle:before,
|
||||
.fi-bitcoin:before,
|
||||
.fi-blind:before,
|
||||
.fi-bluetooth:before,
|
||||
.fi-bold:before,
|
||||
.fi-book-bookmark:before,
|
||||
.fi-book:before,
|
||||
.fi-bookmark:before,
|
||||
.fi-braille:before,
|
||||
.fi-burst-new:before,
|
||||
.fi-burst-sale:before,
|
||||
.fi-burst:before,
|
||||
.fi-calendar:before,
|
||||
.fi-camera:before,
|
||||
.fi-check:before,
|
||||
.fi-checkbox:before,
|
||||
.fi-clipboard-notes:before,
|
||||
.fi-clipboard-pencil:before,
|
||||
.fi-clipboard:before,
|
||||
.fi-clock:before,
|
||||
.fi-closed-caption:before,
|
||||
.fi-cloud:before,
|
||||
.fi-comment-minus:before,
|
||||
.fi-comment-quotes:before,
|
||||
.fi-comment-video:before,
|
||||
.fi-comment:before,
|
||||
.fi-comments:before,
|
||||
.fi-compass:before,
|
||||
.fi-contrast:before,
|
||||
.fi-credit-card:before,
|
||||
.fi-crop:before,
|
||||
.fi-crown:before,
|
||||
.fi-css3:before,
|
||||
.fi-database:before,
|
||||
.fi-die-five:before,
|
||||
.fi-die-four:before,
|
||||
.fi-die-one:before,
|
||||
.fi-die-six:before,
|
||||
.fi-die-three:before,
|
||||
.fi-die-two:before,
|
||||
.fi-dislike:before,
|
||||
.fi-dollar-bill:before,
|
||||
.fi-dollar:before,
|
||||
.fi-download:before,
|
||||
.fi-eject:before,
|
||||
.fi-elevator:before,
|
||||
.fi-euro:before,
|
||||
.fi-eye:before,
|
||||
.fi-fast-forward:before,
|
||||
.fi-female-symbol:before,
|
||||
.fi-female:before,
|
||||
.fi-filter:before,
|
||||
.fi-first-aid:before,
|
||||
.fi-flag:before,
|
||||
.fi-folder-add:before,
|
||||
.fi-folder-lock:before,
|
||||
.fi-folder:before,
|
||||
.fi-foot:before,
|
||||
.fi-foundation:before,
|
||||
.fi-graph-bar:before,
|
||||
.fi-graph-horizontal:before,
|
||||
.fi-graph-pie:before,
|
||||
.fi-graph-trend:before,
|
||||
.fi-guide-dog:before,
|
||||
.fi-hearing-aid:before,
|
||||
.fi-heart:before,
|
||||
.fi-home:before,
|
||||
.fi-html5:before,
|
||||
.fi-indent-less:before,
|
||||
.fi-indent-more:before,
|
||||
.fi-info:before,
|
||||
.fi-italic:before,
|
||||
.fi-key:before,
|
||||
.fi-laptop:before,
|
||||
.fi-layout:before,
|
||||
.fi-lightbulb:before,
|
||||
.fi-like:before,
|
||||
.fi-link:before,
|
||||
.fi-list-bullet:before,
|
||||
.fi-list-number:before,
|
||||
.fi-list-thumbnails:before,
|
||||
.fi-list:before,
|
||||
.fi-lock:before,
|
||||
.fi-loop:before,
|
||||
.fi-magnifying-glass:before,
|
||||
.fi-mail:before,
|
||||
.fi-male-female:before,
|
||||
.fi-male-symbol:before,
|
||||
.fi-male:before,
|
||||
.fi-map:before,
|
||||
.fi-marker:before,
|
||||
.fi-megaphone:before,
|
||||
.fi-microphone:before,
|
||||
.fi-minus-circle:before,
|
||||
.fi-minus:before,
|
||||
.fi-mobile-signal:before,
|
||||
.fi-mobile:before,
|
||||
.fi-monitor:before,
|
||||
.fi-mountains:before,
|
||||
.fi-music:before,
|
||||
.fi-next:before,
|
||||
.fi-no-dogs:before,
|
||||
.fi-no-smoking:before,
|
||||
.fi-page-add:before,
|
||||
.fi-page-copy:before,
|
||||
.fi-page-csv:before,
|
||||
.fi-page-delete:before,
|
||||
.fi-page-doc:before,
|
||||
.fi-page-edit:before,
|
||||
.fi-page-export-csv:before,
|
||||
.fi-page-export-doc:before,
|
||||
.fi-page-export-pdf:before,
|
||||
.fi-page-export:before,
|
||||
.fi-page-filled:before,
|
||||
.fi-page-multiple:before,
|
||||
.fi-page-pdf:before,
|
||||
.fi-page-remove:before,
|
||||
.fi-page-search:before,
|
||||
.fi-page:before,
|
||||
.fi-paint-bucket:before,
|
||||
.fi-paperclip:before,
|
||||
.fi-pause:before,
|
||||
.fi-paw:before,
|
||||
.fi-paypal:before,
|
||||
.fi-pencil:before,
|
||||
.fi-photo:before,
|
||||
.fi-play-circle:before,
|
||||
.fi-play-video:before,
|
||||
.fi-play:before,
|
||||
.fi-plus:before,
|
||||
.fi-pound:before,
|
||||
.fi-power:before,
|
||||
.fi-previous:before,
|
||||
.fi-price-tag:before,
|
||||
.fi-pricetag-multiple:before,
|
||||
.fi-print:before,
|
||||
.fi-prohibited:before,
|
||||
.fi-projection-screen:before,
|
||||
.fi-puzzle:before,
|
||||
.fi-quote:before,
|
||||
.fi-record:before,
|
||||
.fi-refresh:before,
|
||||
.fi-results-demographics:before,
|
||||
.fi-results:before,
|
||||
.fi-rewind-ten:before,
|
||||
.fi-rewind:before,
|
||||
.fi-rss:before,
|
||||
.fi-safety-cone:before,
|
||||
.fi-save:before,
|
||||
.fi-share:before,
|
||||
.fi-sheriff-badge:before,
|
||||
.fi-shield:before,
|
||||
.fi-shopping-bag:before,
|
||||
.fi-shopping-cart:before,
|
||||
.fi-shuffle:before,
|
||||
.fi-skull:before,
|
||||
.fi-social-500px:before,
|
||||
.fi-social-adobe:before,
|
||||
.fi-social-amazon:before,
|
||||
.fi-social-android:before,
|
||||
.fi-social-apple:before,
|
||||
.fi-social-behance:before,
|
||||
.fi-social-bing:before,
|
||||
.fi-social-blogger:before,
|
||||
.fi-social-delicious:before,
|
||||
.fi-social-designer-news:before,
|
||||
.fi-social-deviant-art:before,
|
||||
.fi-social-digg:before,
|
||||
.fi-social-dribbble:before,
|
||||
.fi-social-drive:before,
|
||||
.fi-social-dropbox:before,
|
||||
.fi-social-evernote:before,
|
||||
.fi-social-facebook:before,
|
||||
.fi-social-flickr:before,
|
||||
.fi-social-forrst:before,
|
||||
.fi-social-foursquare:before,
|
||||
.fi-social-game-center:before,
|
||||
.fi-social-github:before,
|
||||
.fi-social-google-plus:before,
|
||||
.fi-social-hacker-news:before,
|
||||
.fi-social-hi5:before,
|
||||
.fi-social-instagram:before,
|
||||
.fi-social-joomla:before,
|
||||
.fi-social-lastfm:before,
|
||||
.fi-social-linkedin:before,
|
||||
.fi-social-medium:before,
|
||||
.fi-social-myspace:before,
|
||||
.fi-social-orkut:before,
|
||||
.fi-social-path:before,
|
||||
.fi-social-picasa:before,
|
||||
.fi-social-pinterest:before,
|
||||
.fi-social-rdio:before,
|
||||
.fi-social-reddit:before,
|
||||
.fi-social-skillshare:before,
|
||||
.fi-social-skype:before,
|
||||
.fi-social-smashing-mag:before,
|
||||
.fi-social-snapchat:before,
|
||||
.fi-social-spotify:before,
|
||||
.fi-social-squidoo:before,
|
||||
.fi-social-stack-overflow:before,
|
||||
.fi-social-steam:before,
|
||||
.fi-social-stumbleupon:before,
|
||||
.fi-social-treehouse:before,
|
||||
.fi-social-tumblr:before,
|
||||
.fi-social-twitter:before,
|
||||
.fi-social-vimeo:before,
|
||||
.fi-social-windows:before,
|
||||
.fi-social-xbox:before,
|
||||
.fi-social-yahoo:before,
|
||||
.fi-social-yelp:before,
|
||||
.fi-social-youtube:before,
|
||||
.fi-social-zerply:before,
|
||||
.fi-social-zurb:before,
|
||||
.fi-sound:before,
|
||||
.fi-star:before,
|
||||
.fi-stop:before,
|
||||
.fi-strikethrough:before,
|
||||
.fi-subscript:before,
|
||||
.fi-superscript:before,
|
||||
.fi-tablet-landscape:before,
|
||||
.fi-tablet-portrait:before,
|
||||
.fi-target-two:before,
|
||||
.fi-target:before,
|
||||
.fi-telephone-accessible:before,
|
||||
.fi-telephone:before,
|
||||
.fi-text-color:before,
|
||||
.fi-thumbnails:before,
|
||||
.fi-ticket:before,
|
||||
.fi-torso-business:before,
|
||||
.fi-torso-female:before,
|
||||
.fi-torso:before,
|
||||
.fi-torsos-all-female:before,
|
||||
.fi-torsos-all:before,
|
||||
.fi-torsos-female-male:before,
|
||||
.fi-torsos-male-female:before,
|
||||
.fi-torsos:before,
|
||||
.fi-trash:before,
|
||||
.fi-trees:before,
|
||||
.fi-trophy:before,
|
||||
.fi-underline:before,
|
||||
.fi-universal-access:before,
|
||||
.fi-unlink:before,
|
||||
.fi-unlock:before,
|
||||
.fi-upload-cloud:before,
|
||||
.fi-upload:before,
|
||||
.fi-usb:before,
|
||||
.fi-video:before,
|
||||
.fi-volume-none:before,
|
||||
.fi-volume-strike:before,
|
||||
.fi-volume:before,
|
||||
.fi-web:before,
|
||||
.fi-wheelchair:before,
|
||||
.fi-widget:before,
|
||||
.fi-wrench:before,
|
||||
.fi-x-circle:before,
|
||||
.fi-x:before,
|
||||
.fi-yen:before,
|
||||
.fi-zoom-in:before,
|
||||
.fi-zoom-out:before {
|
||||
font-family: "foundation-icons";
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
display: inline-block;
|
||||
text-decoration: inherit;
|
||||
}
|
||||
|
||||
.fi-address-book:before { content: "\f100"; }
|
||||
.fi-alert:before { content: "\f101"; }
|
||||
.fi-align-center:before { content: "\f102"; }
|
||||
.fi-align-justify:before { content: "\f103"; }
|
||||
.fi-align-left:before { content: "\f104"; }
|
||||
.fi-align-right:before { content: "\f105"; }
|
||||
.fi-anchor:before { content: "\f106"; }
|
||||
.fi-annotate:before { content: "\f107"; }
|
||||
.fi-archive:before { content: "\f108"; }
|
||||
.fi-arrow-down:before { content: "\f109"; }
|
||||
.fi-arrow-left:before { content: "\f10a"; }
|
||||
.fi-arrow-right:before { content: "\f10b"; }
|
||||
.fi-arrow-up:before { content: "\f10c"; }
|
||||
.fi-arrows-compress:before { content: "\f10d"; }
|
||||
.fi-arrows-expand:before { content: "\f10e"; }
|
||||
.fi-arrows-in:before { content: "\f10f"; }
|
||||
.fi-arrows-out:before { content: "\f110"; }
|
||||
.fi-asl:before { content: "\f111"; }
|
||||
.fi-asterisk:before { content: "\f112"; }
|
||||
.fi-at-sign:before { content: "\f113"; }
|
||||
.fi-background-color:before { content: "\f114"; }
|
||||
.fi-battery-empty:before { content: "\f115"; }
|
||||
.fi-battery-full:before { content: "\f116"; }
|
||||
.fi-battery-half:before { content: "\f117"; }
|
||||
.fi-bitcoin-circle:before { content: "\f118"; }
|
||||
.fi-bitcoin:before { content: "\f119"; }
|
||||
.fi-blind:before { content: "\f11a"; }
|
||||
.fi-bluetooth:before { content: "\f11b"; }
|
||||
.fi-bold:before { content: "\f11c"; }
|
||||
.fi-book-bookmark:before { content: "\f11d"; }
|
||||
.fi-book:before { content: "\f11e"; }
|
||||
.fi-bookmark:before { content: "\f11f"; }
|
||||
.fi-braille:before { content: "\f120"; }
|
||||
.fi-burst-new:before { content: "\f121"; }
|
||||
.fi-burst-sale:before { content: "\f122"; }
|
||||
.fi-burst:before { content: "\f123"; }
|
||||
.fi-calendar:before { content: "\f124"; }
|
||||
.fi-camera:before { content: "\f125"; }
|
||||
.fi-check:before { content: "\f126"; }
|
||||
.fi-checkbox:before { content: "\f127"; }
|
||||
.fi-clipboard-notes:before { content: "\f128"; }
|
||||
.fi-clipboard-pencil:before { content: "\f129"; }
|
||||
.fi-clipboard:before { content: "\f12a"; }
|
||||
.fi-clock:before { content: "\f12b"; }
|
||||
.fi-closed-caption:before { content: "\f12c"; }
|
||||
.fi-cloud:before { content: "\f12d"; }
|
||||
.fi-comment-minus:before { content: "\f12e"; }
|
||||
.fi-comment-quotes:before { content: "\f12f"; }
|
||||
.fi-comment-video:before { content: "\f130"; }
|
||||
.fi-comment:before { content: "\f131"; }
|
||||
.fi-comments:before { content: "\f132"; }
|
||||
.fi-compass:before { content: "\f133"; }
|
||||
.fi-contrast:before { content: "\f134"; }
|
||||
.fi-credit-card:before { content: "\f135"; }
|
||||
.fi-crop:before { content: "\f136"; }
|
||||
.fi-crown:before { content: "\f137"; }
|
||||
.fi-css3:before { content: "\f138"; }
|
||||
.fi-database:before { content: "\f139"; }
|
||||
.fi-die-five:before { content: "\f13a"; }
|
||||
.fi-die-four:before { content: "\f13b"; }
|
||||
.fi-die-one:before { content: "\f13c"; }
|
||||
.fi-die-six:before { content: "\f13d"; }
|
||||
.fi-die-three:before { content: "\f13e"; }
|
||||
.fi-die-two:before { content: "\f13f"; }
|
||||
.fi-dislike:before { content: "\f140"; }
|
||||
.fi-dollar-bill:before { content: "\f141"; }
|
||||
.fi-dollar:before { content: "\f142"; }
|
||||
.fi-download:before { content: "\f143"; }
|
||||
.fi-eject:before { content: "\f144"; }
|
||||
.fi-elevator:before { content: "\f145"; }
|
||||
.fi-euro:before { content: "\f146"; }
|
||||
.fi-eye:before { content: "\f147"; }
|
||||
.fi-fast-forward:before { content: "\f148"; }
|
||||
.fi-female-symbol:before { content: "\f149"; }
|
||||
.fi-female:before { content: "\f14a"; }
|
||||
.fi-filter:before { content: "\f14b"; }
|
||||
.fi-first-aid:before { content: "\f14c"; }
|
||||
.fi-flag:before { content: "\f14d"; }
|
||||
.fi-folder-add:before { content: "\f14e"; }
|
||||
.fi-folder-lock:before { content: "\f14f"; }
|
||||
.fi-folder:before { content: "\f150"; }
|
||||
.fi-foot:before { content: "\f151"; }
|
||||
.fi-foundation:before { content: "\f152"; }
|
||||
.fi-graph-bar:before { content: "\f153"; }
|
||||
.fi-graph-horizontal:before { content: "\f154"; }
|
||||
.fi-graph-pie:before { content: "\f155"; }
|
||||
.fi-graph-trend:before { content: "\f156"; }
|
||||
.fi-guide-dog:before { content: "\f157"; }
|
||||
.fi-hearing-aid:before { content: "\f158"; }
|
||||
.fi-heart:before { content: "\f159"; }
|
||||
.fi-home:before { content: "\f15a"; }
|
||||
.fi-html5:before { content: "\f15b"; }
|
||||
.fi-indent-less:before { content: "\f15c"; }
|
||||
.fi-indent-more:before { content: "\f15d"; }
|
||||
.fi-info:before { content: "\f15e"; }
|
||||
.fi-italic:before { content: "\f15f"; }
|
||||
.fi-key:before { content: "\f160"; }
|
||||
.fi-laptop:before { content: "\f161"; }
|
||||
.fi-layout:before { content: "\f162"; }
|
||||
.fi-lightbulb:before { content: "\f163"; }
|
||||
.fi-like:before { content: "\f164"; }
|
||||
.fi-link:before { content: "\f165"; }
|
||||
.fi-list-bullet:before { content: "\f166"; }
|
||||
.fi-list-number:before { content: "\f167"; }
|
||||
.fi-list-thumbnails:before { content: "\f168"; }
|
||||
.fi-list:before { content: "\f169"; }
|
||||
.fi-lock:before { content: "\f16a"; }
|
||||
.fi-loop:before { content: "\f16b"; }
|
||||
.fi-magnifying-glass:before { content: "\f16c"; }
|
||||
.fi-mail:before { content: "\f16d"; }
|
||||
.fi-male-female:before { content: "\f16e"; }
|
||||
.fi-male-symbol:before { content: "\f16f"; }
|
||||
.fi-male:before { content: "\f170"; }
|
||||
.fi-map:before { content: "\f171"; }
|
||||
.fi-marker:before { content: "\f172"; }
|
||||
.fi-megaphone:before { content: "\f173"; }
|
||||
.fi-microphone:before { content: "\f174"; }
|
||||
.fi-minus-circle:before { content: "\f175"; }
|
||||
.fi-minus:before { content: "\f176"; }
|
||||
.fi-mobile-signal:before { content: "\f177"; }
|
||||
.fi-mobile:before { content: "\f178"; }
|
||||
.fi-monitor:before { content: "\f179"; }
|
||||
.fi-mountains:before { content: "\f17a"; }
|
||||
.fi-music:before { content: "\f17b"; }
|
||||
.fi-next:before { content: "\f17c"; }
|
||||
.fi-no-dogs:before { content: "\f17d"; }
|
||||
.fi-no-smoking:before { content: "\f17e"; }
|
||||
.fi-page-add:before { content: "\f17f"; }
|
||||
.fi-page-copy:before { content: "\f180"; }
|
||||
.fi-page-csv:before { content: "\f181"; }
|
||||
.fi-page-delete:before { content: "\f182"; }
|
||||
.fi-page-doc:before { content: "\f183"; }
|
||||
.fi-page-edit:before { content: "\f184"; }
|
||||
.fi-page-export-csv:before { content: "\f185"; }
|
||||
.fi-page-export-doc:before { content: "\f186"; }
|
||||
.fi-page-export-pdf:before { content: "\f187"; }
|
||||
.fi-page-export:before { content: "\f188"; }
|
||||
.fi-page-filled:before { content: "\f189"; }
|
||||
.fi-page-multiple:before { content: "\f18a"; }
|
||||
.fi-page-pdf:before { content: "\f18b"; }
|
||||
.fi-page-remove:before { content: "\f18c"; }
|
||||
.fi-page-search:before { content: "\f18d"; }
|
||||
.fi-page:before { content: "\f18e"; }
|
||||
.fi-paint-bucket:before { content: "\f18f"; }
|
||||
.fi-paperclip:before { content: "\f190"; }
|
||||
.fi-pause:before { content: "\f191"; }
|
||||
.fi-paw:before { content: "\f192"; }
|
||||
.fi-paypal:before { content: "\f193"; }
|
||||
.fi-pencil:before { content: "\f194"; }
|
||||
.fi-photo:before { content: "\f195"; }
|
||||
.fi-play-circle:before { content: "\f196"; }
|
||||
.fi-play-video:before { content: "\f197"; }
|
||||
.fi-play:before { content: "\f198"; }
|
||||
.fi-plus:before { content: "\f199"; }
|
||||
.fi-pound:before { content: "\f19a"; }
|
||||
.fi-power:before { content: "\f19b"; }
|
||||
.fi-previous:before { content: "\f19c"; }
|
||||
.fi-price-tag:before { content: "\f19d"; }
|
||||
.fi-pricetag-multiple:before { content: "\f19e"; }
|
||||
.fi-print:before { content: "\f19f"; }
|
||||
.fi-prohibited:before { content: "\f1a0"; }
|
||||
.fi-projection-screen:before { content: "\f1a1"; }
|
||||
.fi-puzzle:before { content: "\f1a2"; }
|
||||
.fi-quote:before { content: "\f1a3"; }
|
||||
.fi-record:before { content: "\f1a4"; }
|
||||
.fi-refresh:before { content: "\f1a5"; }
|
||||
.fi-results-demographics:before { content: "\f1a6"; }
|
||||
.fi-results:before { content: "\f1a7"; }
|
||||
.fi-rewind-ten:before { content: "\f1a8"; }
|
||||
.fi-rewind:before { content: "\f1a9"; }
|
||||
.fi-rss:before { content: "\f1aa"; }
|
||||
.fi-safety-cone:before { content: "\f1ab"; }
|
||||
.fi-save:before { content: "\f1ac"; }
|
||||
.fi-share:before { content: "\f1ad"; }
|
||||
.fi-sheriff-badge:before { content: "\f1ae"; }
|
||||
.fi-shield:before { content: "\f1af"; }
|
||||
.fi-shopping-bag:before { content: "\f1b0"; }
|
||||
.fi-shopping-cart:before { content: "\f1b1"; }
|
||||
.fi-shuffle:before { content: "\f1b2"; }
|
||||
.fi-skull:before { content: "\f1b3"; }
|
||||
.fi-social-500px:before { content: "\f1b4"; }
|
||||
.fi-social-adobe:before { content: "\f1b5"; }
|
||||
.fi-social-amazon:before { content: "\f1b6"; }
|
||||
.fi-social-android:before { content: "\f1b7"; }
|
||||
.fi-social-apple:before { content: "\f1b8"; }
|
||||
.fi-social-behance:before { content: "\f1b9"; }
|
||||
.fi-social-bing:before { content: "\f1ba"; }
|
||||
.fi-social-blogger:before { content: "\f1bb"; }
|
||||
.fi-social-delicious:before { content: "\f1bc"; }
|
||||
.fi-social-designer-news:before { content: "\f1bd"; }
|
||||
.fi-social-deviant-art:before { content: "\f1be"; }
|
||||
.fi-social-digg:before { content: "\f1bf"; }
|
||||
.fi-social-dribbble:before { content: "\f1c0"; }
|
||||
.fi-social-drive:before { content: "\f1c1"; }
|
||||
.fi-social-dropbox:before { content: "\f1c2"; }
|
||||
.fi-social-evernote:before { content: "\f1c3"; }
|
||||
.fi-social-facebook:before { content: "\f1c4"; }
|
||||
.fi-social-flickr:before { content: "\f1c5"; }
|
||||
.fi-social-forrst:before { content: "\f1c6"; }
|
||||
.fi-social-foursquare:before { content: "\f1c7"; }
|
||||
.fi-social-game-center:before { content: "\f1c8"; }
|
||||
.fi-social-github:before { content: "\f1c9"; }
|
||||
.fi-social-google-plus:before { content: "\f1ca"; }
|
||||
.fi-social-hacker-news:before { content: "\f1cb"; }
|
||||
.fi-social-hi5:before { content: "\f1cc"; }
|
||||
.fi-social-instagram:before { content: "\f1cd"; }
|
||||
.fi-social-joomla:before { content: "\f1ce"; }
|
||||
.fi-social-lastfm:before { content: "\f1cf"; }
|
||||
.fi-social-linkedin:before { content: "\f1d0"; }
|
||||
.fi-social-medium:before { content: "\f1d1"; }
|
||||
.fi-social-myspace:before { content: "\f1d2"; }
|
||||
.fi-social-orkut:before { content: "\f1d3"; }
|
||||
.fi-social-path:before { content: "\f1d4"; }
|
||||
.fi-social-picasa:before { content: "\f1d5"; }
|
||||
.fi-social-pinterest:before { content: "\f1d6"; }
|
||||
.fi-social-rdio:before { content: "\f1d7"; }
|
||||
.fi-social-reddit:before { content: "\f1d8"; }
|
||||
.fi-social-skillshare:before { content: "\f1d9"; }
|
||||
.fi-social-skype:before { content: "\f1da"; }
|
||||
.fi-social-smashing-mag:before { content: "\f1db"; }
|
||||
.fi-social-snapchat:before { content: "\f1dc"; }
|
||||
.fi-social-spotify:before { content: "\f1dd"; }
|
||||
.fi-social-squidoo:before { content: "\f1de"; }
|
||||
.fi-social-stack-overflow:before { content: "\f1df"; }
|
||||
.fi-social-steam:before { content: "\f1e0"; }
|
||||
.fi-social-stumbleupon:before { content: "\f1e1"; }
|
||||
.fi-social-treehouse:before { content: "\f1e2"; }
|
||||
.fi-social-tumblr:before { content: "\f1e3"; }
|
||||
.fi-social-twitter:before { content: "\f1e4"; }
|
||||
.fi-social-vimeo:before { content: "\f1e5"; }
|
||||
.fi-social-windows:before { content: "\f1e6"; }
|
||||
.fi-social-xbox:before { content: "\f1e7"; }
|
||||
.fi-social-yahoo:before { content: "\f1e8"; }
|
||||
.fi-social-yelp:before { content: "\f1e9"; }
|
||||
.fi-social-youtube:before { content: "\f1ea"; }
|
||||
.fi-social-zerply:before { content: "\f1eb"; }
|
||||
.fi-social-zurb:before { content: "\f1ec"; }
|
||||
.fi-sound:before { content: "\f1ed"; }
|
||||
.fi-star:before { content: "\f1ee"; }
|
||||
.fi-stop:before { content: "\f1ef"; }
|
||||
.fi-strikethrough:before { content: "\f1f0"; }
|
||||
.fi-subscript:before { content: "\f1f1"; }
|
||||
.fi-superscript:before { content: "\f1f2"; }
|
||||
.fi-tablet-landscape:before { content: "\f1f3"; }
|
||||
.fi-tablet-portrait:before { content: "\f1f4"; }
|
||||
.fi-target-two:before { content: "\f1f5"; }
|
||||
.fi-target:before { content: "\f1f6"; }
|
||||
.fi-telephone-accessible:before { content: "\f1f7"; }
|
||||
.fi-telephone:before { content: "\f1f8"; }
|
||||
.fi-text-color:before { content: "\f1f9"; }
|
||||
.fi-thumbnails:before { content: "\f1fa"; }
|
||||
.fi-ticket:before { content: "\f1fb"; }
|
||||
.fi-torso-business:before { content: "\f1fc"; }
|
||||
.fi-torso-female:before { content: "\f1fd"; }
|
||||
.fi-torso:before { content: "\f1fe"; }
|
||||
.fi-torsos-all-female:before { content: "\f1ff"; }
|
||||
.fi-torsos-all:before { content: "\f200"; }
|
||||
.fi-torsos-female-male:before { content: "\f201"; }
|
||||
.fi-torsos-male-female:before { content: "\f202"; }
|
||||
.fi-torsos:before { content: "\f203"; }
|
||||
.fi-trash:before { content: "\f204"; }
|
||||
.fi-trees:before { content: "\f205"; }
|
||||
.fi-trophy:before { content: "\f206"; }
|
||||
.fi-underline:before { content: "\f207"; }
|
||||
.fi-universal-access:before { content: "\f208"; }
|
||||
.fi-unlink:before { content: "\f209"; }
|
||||
.fi-unlock:before { content: "\f20a"; }
|
||||
.fi-upload-cloud:before { content: "\f20b"; }
|
||||
.fi-upload:before { content: "\f20c"; }
|
||||
.fi-usb:before { content: "\f20d"; }
|
||||
.fi-video:before { content: "\f20e"; }
|
||||
.fi-volume-none:before { content: "\f20f"; }
|
||||
.fi-volume-strike:before { content: "\f210"; }
|
||||
.fi-volume:before { content: "\f211"; }
|
||||
.fi-web:before { content: "\f212"; }
|
||||
.fi-wheelchair:before { content: "\f213"; }
|
||||
.fi-widget:before { content: "\f214"; }
|
||||
.fi-wrench:before { content: "\f215"; }
|
||||
.fi-x-circle:before { content: "\f216"; }
|
||||
.fi-x:before { content: "\f217"; }
|
||||
.fi-yen:before { content: "\f218"; }
|
||||
.fi-zoom-in:before { content: "\f219"; }
|
||||
.fi-zoom-out:before { content: "\f21a"; }
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,424 @@
|
|||
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
|
||||
|
||||
/**
|
||||
* 1. Set default font family to sans-serif.
|
||||
* 2. Prevent iOS and IE text size adjust after device orientation change,
|
||||
* without disabling user zoom.
|
||||
*/
|
||||
|
||||
html {
|
||||
font-family: sans-serif; /* 1 */
|
||||
-ms-text-size-adjust: 100%; /* 2 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove default margin.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* HTML5 display definitions
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Correct `block` display not defined for any HTML5 element in IE 8/9.
|
||||
* Correct `block` display not defined for `details` or `summary` in IE 10/11
|
||||
* and Firefox.
|
||||
* Correct `block` display not defined for `main` in IE 11.
|
||||
*/
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
menu,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct `inline-block` display not defined in IE 8/9.
|
||||
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
progress,
|
||||
video {
|
||||
display: inline-block; /* 1 */
|
||||
vertical-align: baseline; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent modern browsers from displaying `audio` without controls.
|
||||
* Remove excess height in iOS 5 devices.
|
||||
*/
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `[hidden]` styling not present in IE 8/9/10.
|
||||
* Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
|
||||
*/
|
||||
|
||||
[hidden],
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Links
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the gray background color from active links in IE 10.
|
||||
*/
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Improve readability of focused elements when they are also in an
|
||||
* active/hover state.
|
||||
*/
|
||||
|
||||
a:active,
|
||||
a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in Safari and Chrome.
|
||||
*/
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address variable `h1` font-size and margin within `section` and `article`
|
||||
* contexts in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9.
|
||||
*/
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent and variable font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove border when inside `a` element in IE 8/9/10.
|
||||
*/
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct overflow not hidden in IE 9/10/11.
|
||||
*/
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address margin not present in IE 8/9 and Safari.
|
||||
*/
|
||||
|
||||
figure {
|
||||
margin: 1em 40px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address differences between Firefox and other browsers.
|
||||
*/
|
||||
|
||||
hr {
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contain overflow in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address odd `em`-unit font size rendering in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Known limitation: by default, Chrome and Safari on OS X allow very limited
|
||||
* styling of `select`, unless a `border` property is set.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 1. Correct color not being inherited.
|
||||
* Known issue: affects color of disabled elements.
|
||||
* 2. Correct font properties not being inherited.
|
||||
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
color: inherit; /* 1 */
|
||||
font: inherit; /* 2 */
|
||||
margin: 0; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `overflow` set to `hidden` in IE 8/9/10/11.
|
||||
*/
|
||||
|
||||
button {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||
* All other form control elements do not inherit `text-transform` values.
|
||||
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
|
||||
* Correct `select` style inheritance in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||
* and `video` controls.
|
||||
* 2. Correct inability to style clickable `input` types in iOS.
|
||||
* 3. Improve usability and consistency of cursor style between image-type
|
||||
* `input` and others.
|
||||
*/
|
||||
|
||||
button,
|
||||
html input[type="button"], /* 1 */
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button; /* 2 */
|
||||
cursor: pointer; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-set default cursor for disabled elements.
|
||||
*/
|
||||
|
||||
button[disabled],
|
||||
html input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and border in Firefox 4+.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
||||
* the UA stylesheet.
|
||||
*/
|
||||
|
||||
input {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
/**
|
||||
* It's recommended that you don't attempt to style these elements.
|
||||
* Firefox's implementation doesn't respect box-sizing, padding, or width.
|
||||
*
|
||||
* 1. Address box sizing set to `content-box` in IE 8/9/10.
|
||||
* 2. Remove excess padding in IE 8/9/10.
|
||||
*/
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
|
||||
* `font-size` values of the `input`, it causes the cursor style of the
|
||||
* decrement button to change from `default` to `text`.
|
||||
*/
|
||||
|
||||
input[type="number"]::-webkit-inner-spin-button,
|
||||
input[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
|
||||
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
|
||||
*/
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
box-sizing: content-box; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
|
||||
* Safari (but not Chrome) clips the cancel button when the search input has
|
||||
* padding (and `textfield` appearance).
|
||||
*/
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define consistent border, margin, and padding.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #c0c0c0;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct `color` not being inherited in IE 8/9/10/11.
|
||||
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
||||
*/
|
||||
|
||||
legend {
|
||||
border: 0; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove default vertical scrollbar in IE 8/9/10/11.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Don't inherit the `font-weight` (applied by a rule above).
|
||||
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
|
||||
*/
|
||||
|
||||
optgroup {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Tables
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove most spacing between table cells.
|
||||
*/
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
padding: 0;
|
||||
}
|
|
@ -0,0 +1,184 @@
|
|||
/*--------------------- Typography ----------------------------*/
|
||||
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('https://mozorg.cdn.mozilla.net/media/fonts/OpenSans-Light-webfont.woff') format('woff');
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('https://mozorg.cdn.mozilla.net/media/fonts/OpenSans-Semibold-webfont.woff') format('woff');
|
||||
font-weight: 600;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('https://mozorg.cdn.mozilla.net/media/fonts/OpenSans-LightItalic-webfont.woff') format('woff');
|
||||
font-weight: 300;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('https://mozorg.cdn.mozilla.net/media/fonts/OpenSans-Regular-webfont.woff') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('https://mozorg.cdn.mozilla.net/media/fonts/OpenSans-Bold-webfont.woff') format('woff');
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('https://mozorg.cdn.mozilla.net/media/fonts/OpenSans-Italic-webfont.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/*--------------------- Layout ----------------------------*/
|
||||
html {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Open Sans","Clear Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
|
||||
font-size: 14px;
|
||||
line-height: 18px;
|
||||
color: #30404f;
|
||||
margin: 0; padding: 0;
|
||||
height:100%;
|
||||
}
|
||||
|
||||
.book {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.book nav {
|
||||
font-family: "Open Sans","Clear Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: -300px;
|
||||
bottom: 0;
|
||||
z-index: 1;
|
||||
width: 300px;
|
||||
color: #364149;
|
||||
background: #fafafa;
|
||||
border-right: 1px solid rgba(0,0,0,0.07);
|
||||
}
|
||||
|
||||
@media (min-width: 600px) {
|
||||
.book.with-nav main {
|
||||
left: 300px;
|
||||
}
|
||||
.book main {
|
||||
transition: left 250ms ease;
|
||||
}
|
||||
.book nav {
|
||||
transition: left 250ms ease;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.book nav {
|
||||
width: calc(100% - 60px);
|
||||
left: -100%;
|
||||
transition: left 250ms ease;
|
||||
}
|
||||
.book.with-nav main {
|
||||
transform: translate(calc(100% - 60px),0px);
|
||||
}
|
||||
.book main {
|
||||
transition: transform 250ms ease;
|
||||
}
|
||||
}
|
||||
|
||||
.book.with-nav nav {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.book nav ul.recipes li a {
|
||||
display: block;
|
||||
padding: 6px 12px;
|
||||
}
|
||||
|
||||
nav ul.recipes {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
overflow-y: auto;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
nav ul.recipes li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.book main {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
overflow-y: auto;
|
||||
color: #000;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.book main .main-inner {
|
||||
padding: 0 40px;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.book main .text-page {
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
#navToggle {
|
||||
color: #999;
|
||||
background-color: #fff;
|
||||
border-color: #fff;
|
||||
padding: 1.25rem;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#navToggle:hover {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.nav-top {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.nav-top .item {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.nav-top a {
|
||||
padding: .8rem;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.nav-top .active, .nav-top a:hover {
|
||||
border-bottom: 2px solid #364149;
|
||||
color: inherit;
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
'use strict';
|
||||
|
||||
function resizeIframe(obj) {
|
||||
obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
|
||||
}
|
||||
|
||||
(function() {
|
||||
|
||||
document.getElementById('navToggle').addEventListener('click', function() {
|
||||
document.querySelector('.book').classList.toggle('with-nav');
|
||||
});
|
||||
|
||||
// This is a hacky way to highlight the current active tab. This should
|
||||
// probably be done in the template generation, but this is way easier.
|
||||
var pathname = window.location.pathname;
|
||||
var file = pathname.substr(pathname.lastIndexOf('/') + 1);
|
||||
var navItem = document.querySelector('.nav-top .item a[href="' + file + '"]');
|
||||
if (navItem) {
|
||||
navItem.classList.add('active');
|
||||
}
|
||||
|
||||
})();
|
|
@ -0,0 +1,2 @@
|
|||
<h1>{{ recipe.name }} Demo</h1>
|
||||
<iframe src="{{ recipe.slug }}/index.html" style="width: 100%;" scrolling="no" onload="resizeIframe(this);"></iframe>
|
|
@ -0,0 +1,46 @@
|
|||
<div id="container">
|
||||
<div id="background"></div>
|
||||
<% if (sources.length > 1) { %>
|
||||
<ul id="jump_to">
|
||||
<li>
|
||||
<a class="large" href="javascript:void(0);">Jump To …</a>
|
||||
<a class="small" href="javascript:void(0);">+</a>
|
||||
<div id="jump_wrapper">
|
||||
<div id="jump_page_wrapper">
|
||||
<div id="jump_page">
|
||||
<% for (var i=0, l=sources.length; i<l; i++) { %>
|
||||
<% var source = sources[i]; %>
|
||||
<a class="source" href="<%= path.basename(destination(source)) %>">
|
||||
<%= path.basename(source) %>
|
||||
</a>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<% } %>
|
||||
<ul class="sections">
|
||||
<% if (!hasTitle) { %>
|
||||
<li id="title">
|
||||
<div class="annotation">
|
||||
<h1><%= title %></h1>
|
||||
</div>
|
||||
</li>
|
||||
<% } %>
|
||||
<% for (var i=0, l=sections.length; i<l; i++) { %>
|
||||
<% var section = sections[i]; %>
|
||||
<li id="section-<%= i + 1 %>">
|
||||
<div class="annotation">
|
||||
<% heading = section.docsHtml.match(/^\s*<(h\d)>/) %>
|
||||
<div class="pilwrap <%= heading ? 'for-' + heading[1] : '' %>">
|
||||
<a class="pilcrow" href="#section-<%= i + 1 %>">¶</a>
|
||||
</div>
|
||||
<%= section.docsHtml %>
|
||||
</div>
|
||||
<% if (section.codeText.replace(/\s/gm, '') != '') { %>
|
||||
<div class="content"><%= section.codeHtml %></div>
|
||||
<% } %>
|
||||
</li>
|
||||
<% } %>
|
||||
</ul>
|
||||
</div>
|
|
@ -0,0 +1,9 @@
|
|||
<div class="text-page">
|
||||
<h1>Introduction</h1>
|
||||
<p>blagh</p>
|
||||
<h2>Recipes</h2>
|
||||
{% for recipe in recipes %}
|
||||
<h3><a href="{{ recipe.slug }}.html">{{ recipe.title }}</a></h3>
|
||||
<div>{% autoescape false %}{{ recipe.summary }}{% endautoescape %}</div>
|
||||
{% endfor %}
|
||||
</div>
|
|
@ -0,0 +1,3 @@
|
|||
<div class="text-page">
|
||||
{% autoescape false %}{{ markdown }}{% endautoescape %}
|
||||
</div>
|
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>ServiceWorker Cookbook</title>
|
||||
<link rel="stylesheet" href="bundle.css">
|
||||
<script type="text/javascript" src="bundle.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="book with-nav">
|
||||
<nav>
|
||||
<ul class="recipes">
|
||||
<li><a href="index.html">Introduction</a></li>
|
||||
{% for recipe in recipes %}
|
||||
<li>
|
||||
<a href="{{ recipe.intro_ref }}">{{ loop.index }}. {{ recipe.name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</nav>
|
||||
<main>
|
||||
<header>
|
||||
<div class="nav-top">
|
||||
<div class="item">
|
||||
<button id="navToggle" class="fi-list large"></button>
|
||||
</div>
|
||||
{% if currentRecipe %}
|
||||
<div class="item"><a href="{{ currentRecipe.intro_ref }}">Readme</a></div>
|
||||
<div class="item"><a href="{{ currentRecipe.demo_ref }}">Demo</a></div>
|
||||
<div class="item" style="flex-grow: 1;"></div>
|
||||
{% for src in currentRecipe.srcs %}
|
||||
<div class="item"><a href="{{ src.ref }}">{{ src.name }}.js</a></div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</header>
|
||||
<div class="main-inner">
|
||||
{% autoescape false %}{{ content }}{% endautoescape %}
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче