mirror of
https://github.com/moparisthebest/mail
synced 2024-11-25 10:22:18 -05:00
commit
2828771c2b
58
Gruntfile.js
58
Gruntfile.js
@ -97,6 +97,11 @@ module.exports = function(grunt) {
|
|||||||
'src/css/read-sandbox.css': 'src/sass/read-sandbox.scss',
|
'src/css/read-sandbox.css': 'src/sass/read-sandbox.scss',
|
||||||
'src/css/all.css': 'src/sass/all.scss'
|
'src/css/all.css': 'src/sass/all.scss'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
styleguide: {
|
||||||
|
files: {
|
||||||
|
'src/css/styleguide.css': 'src/sass/styleguide.scss'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
autoprefixer: {
|
autoprefixer: {
|
||||||
@ -108,6 +113,11 @@ module.exports = function(grunt) {
|
|||||||
'src/css/read-sandbox.css': 'src/css/read-sandbox.css',
|
'src/css/read-sandbox.css': 'src/css/read-sandbox.css',
|
||||||
'src/css/all.css': 'src/css/all.css'
|
'src/css/all.css': 'src/css/all.css'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
styleguide: {
|
||||||
|
files: {
|
||||||
|
'src/css/styleguide.css': 'src/css/styleguide.css'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
csso: {
|
csso: {
|
||||||
@ -119,6 +129,11 @@ module.exports = function(grunt) {
|
|||||||
'dist/css/read-sandbox.min.css': 'src/css/read-sandbox.css',
|
'dist/css/read-sandbox.min.css': 'src/css/read-sandbox.css',
|
||||||
'dist/css/all.min.css': 'src/css/all.css'
|
'dist/css/all.min.css': 'src/css/all.css'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
styleguide: {
|
||||||
|
files: {
|
||||||
|
'dist/styleguide/css/styleguide.min.css': 'src/css/styleguide.css'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -453,6 +468,30 @@ module.exports = function(grunt) {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Styleguide
|
||||||
|
|
||||||
|
assemble: {
|
||||||
|
options: {
|
||||||
|
assets: 'dist',
|
||||||
|
layoutdir: 'src/styleguide/layouts',
|
||||||
|
layout: 'default.hbs',
|
||||||
|
partials: ['src/styleguide/blocks/**/*.hbs'],
|
||||||
|
helpers: [
|
||||||
|
'handlebars-helper-compose',
|
||||||
|
'src/styleguide/helpers/**/*.js'
|
||||||
|
],
|
||||||
|
data: [
|
||||||
|
'dist/manifest.json'
|
||||||
|
],
|
||||||
|
flatten: true
|
||||||
|
},
|
||||||
|
styleguide: {
|
||||||
|
files: [{
|
||||||
|
'dist/styleguide/': ['src/styleguide/*.hbs']
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// Development
|
// Development
|
||||||
|
|
||||||
connect: {
|
connect: {
|
||||||
@ -476,10 +515,14 @@ module.exports = function(grunt) {
|
|||||||
watch: {
|
watch: {
|
||||||
css: {
|
css: {
|
||||||
files: ['src/sass/**/*.scss'],
|
files: ['src/sass/**/*.scss'],
|
||||||
tasks: ['dist-css', 'manifest']
|
tasks: ['dist-css', 'manifest', 'dist-styleguide']
|
||||||
|
},
|
||||||
|
styleguide: {
|
||||||
|
files: ['src/styleguide/**/*.hbs', 'src/styleguide/**/*.js'],
|
||||||
|
tasks: ['dist-styleguide']
|
||||||
},
|
},
|
||||||
jsApp: {
|
jsApp: {
|
||||||
files: ['src/js/**/*.js', 'src/**/*.html'],
|
files: ['src/js/**/*.js', 'src/*.html', 'src/tpl/**/*.html'],
|
||||||
tasks: ['dist-js-app']
|
tasks: ['dist-js-app']
|
||||||
},
|
},
|
||||||
jsUnitTest: {
|
jsUnitTest: {
|
||||||
@ -492,14 +535,14 @@ module.exports = function(grunt) {
|
|||||||
},
|
},
|
||||||
icons: {
|
icons: {
|
||||||
files: ['src/index.html', 'src/img/icons/*.svg', '!src/img/icons/all.svg'],
|
files: ['src/index.html', 'src/img/icons/*.svg', '!src/img/icons/all.svg'],
|
||||||
tasks: ['svgmin', 'svgstore', 'string-replace', 'manifest']
|
tasks: ['svgmin', 'svgstore', 'string-replace', 'dist-styleguide', 'manifest']
|
||||||
},
|
},
|
||||||
lib: {
|
lib: {
|
||||||
files: ['src/lib/**/*.js'],
|
files: ['src/lib/**/*.js'],
|
||||||
tasks: ['copy:lib', 'manifest']
|
tasks: ['copy:lib', 'manifest']
|
||||||
},
|
},
|
||||||
app: {
|
app: {
|
||||||
files: ['src/*.js', 'src/**/*.html', 'src/**/*.json', 'src/manifest.*', 'src/img/**/*', 'src/font/**/*'],
|
files: ['src/*.js', 'src/*.html', 'src/tpl/**/*.html', 'src/**/*.json', 'src/manifest.*', 'src/img/**/*', 'src/font/**/*'],
|
||||||
tasks: ['copy:app', 'copy:tpl', 'copy:img', 'copy:font', 'manifest-dev', 'manifest']
|
tasks: ['copy:app', 'copy:tpl', 'copy:img', 'copy:font', 'manifest-dev', 'manifest']
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -610,9 +653,10 @@ module.exports = function(grunt) {
|
|||||||
grunt.loadNpmTasks('grunt-svgstore');
|
grunt.loadNpmTasks('grunt-svgstore');
|
||||||
grunt.loadNpmTasks('grunt-shell');
|
grunt.loadNpmTasks('grunt-shell');
|
||||||
grunt.loadNpmTasks('grunt-angular-templates');
|
grunt.loadNpmTasks('grunt-angular-templates');
|
||||||
|
grunt.loadNpmTasks('assemble');
|
||||||
|
|
||||||
// Build tasks
|
// Build tasks
|
||||||
grunt.registerTask('dist-css', ['sass', 'autoprefixer', 'csso']);
|
grunt.registerTask('dist-css', ['sass:dist', 'autoprefixer:dist', 'csso:dist']);
|
||||||
grunt.registerTask('dist-js', ['browserify', 'exorcise', 'ngtemplates', 'concat', 'uglify']);
|
grunt.registerTask('dist-js', ['browserify', 'exorcise', 'ngtemplates', 'concat', 'uglify']);
|
||||||
grunt.registerTask('dist-js-app', [
|
grunt.registerTask('dist-js-app', [
|
||||||
'browserify:app',
|
'browserify:app',
|
||||||
@ -640,7 +684,9 @@ module.exports = function(grunt) {
|
|||||||
]);
|
]);
|
||||||
grunt.registerTask('dist-copy', ['copy']);
|
grunt.registerTask('dist-copy', ['copy']);
|
||||||
grunt.registerTask('dist-assets', ['svgmin', 'svgstore', 'string-replace']);
|
grunt.registerTask('dist-assets', ['svgmin', 'svgstore', 'string-replace']);
|
||||||
grunt.registerTask('dist', ['clean:dist', 'shell', 'dist-css', 'dist-js', 'dist-assets', 'dist-copy', 'manifest']);
|
grunt.registerTask('dist-styleguide', ['sass:styleguide', 'autoprefixer:styleguide', 'csso:styleguide', 'assemble:styleguide']);
|
||||||
|
// generate styleguide after manifest to forward version number to styleguide
|
||||||
|
grunt.registerTask('dist', ['clean:dist', 'shell', 'dist-css', 'dist-js', 'dist-assets', 'dist-copy', 'manifest', 'dist-styleguide']);
|
||||||
|
|
||||||
// Test/Dev tasks
|
// Test/Dev tasks
|
||||||
grunt.registerTask('dev', ['connect:dev']);
|
grunt.registerTask('dev', ['connect:dev']);
|
||||||
|
@ -74,6 +74,8 @@
|
|||||||
"sinon": "~1.7.3",
|
"sinon": "~1.7.3",
|
||||||
"tcp-socket": "~0.5.0",
|
"tcp-socket": "~0.5.0",
|
||||||
"time-grunt": "^1.0.0",
|
"time-grunt": "^1.0.0",
|
||||||
"wo-smtpclient": "~0.6.0"
|
"wo-smtpclient": "~0.6.0",
|
||||||
|
"assemble": "~0.4.42",
|
||||||
|
"handlebars-helper-compose": "~0.2.12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
18
src/sass/styleguide.scss
Executable file
18
src/sass/styleguide.scss
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
// Third party libs
|
||||||
|
@import "lib/scut";
|
||||||
|
|
||||||
|
// Config
|
||||||
|
@import "base/config"; // Modify this for custom colors, font-sizes, etc
|
||||||
|
|
||||||
|
// Mixins
|
||||||
|
@import "mixins/responsive";
|
||||||
|
@import "mixins/scrollbar";
|
||||||
|
|
||||||
|
// Styleguide specific blocks
|
||||||
|
// Namespaced with "sg-"
|
||||||
|
// (BEM-like Naming, see http://cssguidelin.es/#bem-like-naming)
|
||||||
|
|
||||||
|
@import "styleguide/layout";
|
||||||
|
@import "styleguide/typo";
|
||||||
|
@import "styleguide/sections";
|
||||||
|
@import "styleguide/icon-list";
|
20
src/sass/styleguide/_icon-list.scss
Normal file
20
src/sass/styleguide/_icon-list.scss
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
.sg-icon-list {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
& > li {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0 10px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
color: $color-text-light;
|
||||||
|
width: 10em;
|
||||||
|
& > svg {
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto 10px;
|
||||||
|
width: 2em;
|
||||||
|
height: 2em;
|
||||||
|
fill: $color-text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
82
src/sass/styleguide/_layout.scss
Normal file
82
src/sass/styleguide/_layout.scss
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
// Styleguide layout
|
||||||
|
|
||||||
|
.sg-layout {
|
||||||
|
height: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
// allow scrolling on iOS
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
|
||||||
|
&__canvas {
|
||||||
|
min-height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background: $color-bg;
|
||||||
|
color: $color-text;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__header {
|
||||||
|
padding: 50px 20px;
|
||||||
|
background: $color-bg-dark;
|
||||||
|
border-bottom: 1px solid darken($color-bg-dark, 10%);
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 300px;
|
||||||
|
max-height: 4em;
|
||||||
|
margin: 0 auto 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__main {
|
||||||
|
flex-grow: 1;
|
||||||
|
width: 100%;
|
||||||
|
padding: 10px 20px;
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 1150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__footer {
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
font-size: $font-size-small;
|
||||||
|
color: $color-text-light;
|
||||||
|
line-height: 1.5;
|
||||||
|
padding: 10px 20px;
|
||||||
|
|
||||||
|
nav {
|
||||||
|
ul {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
display: inline;
|
||||||
|
&:after {
|
||||||
|
display: inline-block;
|
||||||
|
content: ' | ';
|
||||||
|
margin: 0 0.5em;
|
||||||
|
}
|
||||||
|
&:last-child:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@include respond-to(md) {
|
||||||
|
text-align: left;
|
||||||
|
nav {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
33
src/sass/styleguide/_sections.scss
Normal file
33
src/sass/styleguide/_sections.scss
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
.sg-section {
|
||||||
|
margin: 50px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sg-block {
|
||||||
|
margin: 20px 0;
|
||||||
|
padding-top: 20px;
|
||||||
|
border-top: 1px solid $color-border-light;
|
||||||
|
|
||||||
|
&:last-of-type {
|
||||||
|
border-bottom: 1px solid $color-border-light;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__description {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
&__example {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include respond-to(lg) {
|
||||||
|
@include scut-clearfix;
|
||||||
|
|
||||||
|
&__description {
|
||||||
|
float: left;
|
||||||
|
width: 25%;
|
||||||
|
padding-right: 30px;
|
||||||
|
}
|
||||||
|
&__example {
|
||||||
|
margin-left: 25%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
42
src/sass/styleguide/_typo.scss
Normal file
42
src/sass/styleguide/_typo.scss
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Styleguide typography
|
||||||
|
|
||||||
|
.sg-typo-title {
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: center;
|
||||||
|
font-size: $font-size-bigger;
|
||||||
|
color: $color-main;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
@include respond-to(md) {
|
||||||
|
font-size: $font-size-huge;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.sg-typo-section-title {
|
||||||
|
font-size: $font-size-bigger;
|
||||||
|
font-weight: normal;
|
||||||
|
color: $color-text;
|
||||||
|
margin: 0 0 20px;
|
||||||
|
|
||||||
|
@include respond-to(md) {
|
||||||
|
font-size: $font-size-huge;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.sg-typo-description-title {
|
||||||
|
font-size: $font-size-big;
|
||||||
|
font-weight: bold;
|
||||||
|
color: $color-text;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sg-typo-code {
|
||||||
|
font-family: monospace;
|
||||||
|
font-weight: bold;
|
||||||
|
border-radius: 0.2em;
|
||||||
|
font-size: $font-size-small;
|
||||||
|
background: $color-bg-dark;
|
||||||
|
color: $color-text;
|
||||||
|
padding: 0.1em 0.3em;
|
||||||
|
}
|
11
src/styleguide/helpers/strip-file-extension.js
Normal file
11
src/styleguide/helpers/strip-file-extension.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports.register = function(Handlebars) {
|
||||||
|
|
||||||
|
// Customize this helper
|
||||||
|
Handlebars.registerHelper('stripFileExtension', function(str) {
|
||||||
|
var content = str.replace(/\.[^\.]*$/, '');
|
||||||
|
return new Handlebars.SafeString(content);
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
66
src/styleguide/index.hbs
Normal file
66
src/styleguide/index.hbs
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
---
|
||||||
|
title: Styleguide
|
||||||
|
sections:
|
||||||
|
- title: Typography
|
||||||
|
src: src/styleguide/sections/typo/*.hbs
|
||||||
|
- title: Buttons
|
||||||
|
src: src/styleguide/sections/buttons/*.hbs
|
||||||
|
- title: Forms
|
||||||
|
src: src/styleguide/sections/form/*.hbs
|
||||||
|
- title: Labels
|
||||||
|
src: src/styleguide/sections/labels.hbs
|
||||||
|
- title: Spinners
|
||||||
|
src: src/styleguide/sections/spinner/*.hbs
|
||||||
|
- title: Attachments
|
||||||
|
src: src/styleguide/sections/attachments.hbs
|
||||||
|
- title: Dropdowns
|
||||||
|
src: src/styleguide/sections/dropdown.hbs
|
||||||
|
- title: Tooltips
|
||||||
|
src: src/styleguide/sections/Tooltip.hbs
|
||||||
|
- title: Mail addresses
|
||||||
|
src: src/styleguide/sections/mail_addresses.hbs
|
||||||
|
- title: Tags input
|
||||||
|
src: src/styleguide/sections/tags_input.hbs
|
||||||
|
- title: Toolbars
|
||||||
|
src: src/styleguide/sections/toolbars/*.hbs
|
||||||
|
---
|
||||||
|
|
||||||
|
<section class="sg-section">
|
||||||
|
<h2 class="sg-typo-section-title">Icons</h2>
|
||||||
|
<div class="sg-block">
|
||||||
|
<div class="sg-block__description">
|
||||||
|
<h3 class="sg-typo-description-title">Available icons</h3>
|
||||||
|
<p class="typo-paragraph">
|
||||||
|
All icons are available via inline svg and the <code class="sg-typo-code">xlink:href</code>
|
||||||
|
attribute of the <code class="sg-typo-code"><use></code> tag.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="sg-block__example">
|
||||||
|
<ul class="sg-icon-list">
|
||||||
|
{{#compose src="src/img/icons/[!all]*.svg"}}
|
||||||
|
<li>
|
||||||
|
<svg role="presentation"><use xlink:href="#icon-{{stripFileExtension @filename}}" /></svg>
|
||||||
|
{{@filename}}
|
||||||
|
</li>
|
||||||
|
{{/compose}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{{#each sections}}
|
||||||
|
<section class="sg-section">
|
||||||
|
<h2 class="sg-typo-section-title">{{title}}</h2>
|
||||||
|
{{#compose src=src}}
|
||||||
|
<div class="sg-block">
|
||||||
|
<div class="sg-block__description">
|
||||||
|
<h3 class="sg-typo-description-title">{{@title}}</h3>
|
||||||
|
<p class="typo-paragraph">{{{@description}}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="sg-block__example">
|
||||||
|
{{{@content}}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/compose}}
|
||||||
|
</section>
|
||||||
|
{{/each}}
|
47
src/styleguide/layouts/default.hbs
Normal file
47
src/styleguide/layouts/default.hbs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
version: foobar
|
||||||
|
currentDate: <%= new Date() %>
|
||||||
|
---
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>{{ title }} | Whiteout Mail</title>
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||||
|
|
||||||
|
<link rel="stylesheet" media="all" href="{{assets}}/css/all.min.css" type="text/css">
|
||||||
|
<link rel="stylesheet" media="all" href="{{assets}}/styleguide/css/styleguide.min.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- inline icons have to come first, hide immediately with inline styles -->
|
||||||
|
<div style="width: 0; height: 0; visibility: hidden;">
|
||||||
|
{{glob "src/img/icons/all.svg"}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="sg-layout">
|
||||||
|
<header class="sg-layout__header">
|
||||||
|
<img src="{{assets}}/img/whiteout_logo.svg" alt="whiteout.io">
|
||||||
|
<h1 class="sg-typo-title">{{ title }}</h1>
|
||||||
|
</header>
|
||||||
|
<main class="sg-layout__main">
|
||||||
|
{{> body}}
|
||||||
|
</main>
|
||||||
|
<footer class="sg-layout__footer">
|
||||||
|
<nav>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://whiteout.io/imprint.html" target="_blank">Imprint</a></li>
|
||||||
|
<li><a href="https://whiteout.io/privacy-service.html" target="_blank">Privacy</a></li>
|
||||||
|
<li><a href="https://whiteout.io/terms.html" target="_blank">Terms</a></li>
|
||||||
|
<li><a href="https://github.com/whiteout-io/mail-html5/blob/master/README.md#license" target="_blank">License</a></li>
|
||||||
|
<li>Version: {{manifest.version}}</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
© {{formatDate currentDate "%Y"}} Whiteout Networks GmbH
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
21
src/styleguide/sections/attachments.hbs
Normal file
21
src/styleguide/sections/attachments.hbs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
title: List of attachments
|
||||||
|
description: List of attached files with optional delete button.
|
||||||
|
---
|
||||||
|
|
||||||
|
<ul class="attachments">
|
||||||
|
<li>
|
||||||
|
<svg><use xlink:href="#icon-attachment" /></svg>
|
||||||
|
file1.txt
|
||||||
|
<button class="attachments__delete">
|
||||||
|
<svg><use xlink:href="#icon-close_circle" /><title>Delete</title></svg>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<svg><use xlink:href="#icon-attachment" /></svg>
|
||||||
|
file1.txt
|
||||||
|
<button class="attachments__delete">
|
||||||
|
<svg><use xlink:href="#icon-close_circle" /><title>Delete</title></svg>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
16
src/styleguide/sections/buttons/btn.hbs
Normal file
16
src/styleguide/sections/buttons/btn.hbs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
title: Regular button
|
||||||
|
description: >
|
||||||
|
There are various button types. All button types support to be disabled
|
||||||
|
via attribute <code class="sg-typo-code">disabled</code> or
|
||||||
|
<code class="sg-typo-code">aria-disabled="true"</code>.
|
||||||
|
---
|
||||||
|
|
||||||
|
<button class="btn">
|
||||||
|
<svg><use xlink:href="#icon-close" /><title>Delete</title></svg>
|
||||||
|
Regular
|
||||||
|
</button>
|
||||||
|
<button class="btn" disabled>
|
||||||
|
<svg><use xlink:href="#icon-close" /><title>Delete</title></svg>
|
||||||
|
Disabled regular
|
||||||
|
</button>
|
9
src/styleguide/sections/buttons/btn_big.hbs
Normal file
9
src/styleguide/sections/buttons/btn_big.hbs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
title: Big button
|
||||||
|
description:
|
||||||
|
---
|
||||||
|
|
||||||
|
<button class="btn btn--big">
|
||||||
|
<svg><use xlink:href="#icon-close" /><title>Delete</title></svg>
|
||||||
|
Big
|
||||||
|
</button>
|
8
src/styleguide/sections/buttons/btn_icon.hbs
Normal file
8
src/styleguide/sections/buttons/btn_icon.hbs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
title: Icon button
|
||||||
|
description:
|
||||||
|
---
|
||||||
|
|
||||||
|
<button class="btn-icon">
|
||||||
|
<svg><use xlink:href="#icon-write" /><title>New mail</title></svg>
|
||||||
|
</button>
|
8
src/styleguide/sections/buttons/btn_icon_light.hbs
Normal file
8
src/styleguide/sections/buttons/btn_icon_light.hbs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
title: Light icon button
|
||||||
|
description:
|
||||||
|
---
|
||||||
|
|
||||||
|
<button class="btn-icon-light">
|
||||||
|
<svg><use xlink:href="#icon-write" /><title>New mail</title></svg>
|
||||||
|
</button>
|
8
src/styleguide/sections/buttons/btn_icon_very_light.hbs
Normal file
8
src/styleguide/sections/buttons/btn_icon_very_light.hbs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
title: Very light icon button
|
||||||
|
description:
|
||||||
|
---
|
||||||
|
|
||||||
|
<button class="btn-icon-very-light">
|
||||||
|
<svg><use xlink:href="#icon-write" /><title>New mail</title></svg>
|
||||||
|
</button>
|
10
src/styleguide/sections/buttons/btn_invalid.hbs
Normal file
10
src/styleguide/sections/buttons/btn_invalid.hbs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
title: Invalid button
|
||||||
|
description: >
|
||||||
|
Use to show invalid state of a form.
|
||||||
|
---
|
||||||
|
|
||||||
|
<button class="btn btn--invalid">
|
||||||
|
<svg><use xlink:href="#icon-close" /><title>Delete</title></svg>
|
||||||
|
Invalid
|
||||||
|
</button>
|
9
src/styleguide/sections/buttons/btn_light.hbs
Normal file
9
src/styleguide/sections/buttons/btn_light.hbs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
title: Light button
|
||||||
|
description:
|
||||||
|
---
|
||||||
|
|
||||||
|
<button class="btn btn--light">
|
||||||
|
<svg><use xlink:href="#icon-close" /><title>Delete</title></svg>
|
||||||
|
Light
|
||||||
|
</button>
|
10
src/styleguide/sections/buttons/btn_light_dropdown.hbs
Normal file
10
src/styleguide/sections/buttons/btn_light_dropdown.hbs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
title: Light dropbown button
|
||||||
|
description: >
|
||||||
|
Use in combination with JavaScript and <code class="sg-typo-code">.dropdown</code>.
|
||||||
|
---
|
||||||
|
|
||||||
|
<button class="btn btn--light-dropdown">
|
||||||
|
Dropdown
|
||||||
|
<svg class="btn__dropdown" role="presentation"><use xlink:href="#icon-dropdown" /></svg>
|
||||||
|
</button>
|
9
src/styleguide/sections/buttons/btn_navicon.hbs
Normal file
9
src/styleguide/sections/buttons/btn_navicon.hbs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
title: Navicon button
|
||||||
|
description: >
|
||||||
|
Main menu button
|
||||||
|
---
|
||||||
|
|
||||||
|
<button class="btn-navicon">
|
||||||
|
<svg><use xlink:href="#icon-navicon" /><title>Toggle Navigation</title></svg>
|
||||||
|
</button>
|
10
src/styleguide/sections/buttons/btn_secondary.hbs
Normal file
10
src/styleguide/sections/buttons/btn_secondary.hbs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
title: Secondary button
|
||||||
|
description: >
|
||||||
|
Use in conjuction with another primary regular button.
|
||||||
|
---
|
||||||
|
|
||||||
|
<button class="btn btn--secondary">
|
||||||
|
<svg><use xlink:href="#icon-close" /><title>Delete</title></svg>
|
||||||
|
Secondary
|
||||||
|
</button>
|
10
src/styleguide/sections/dropdown.hbs
Normal file
10
src/styleguide/sections/dropdown.hbs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
title: Dropdown
|
||||||
|
description: >
|
||||||
|
The dropdown list is positioned absolutely within the application via JavaScript.
|
||||||
|
---
|
||||||
|
|
||||||
|
<ul class="dropdown dropdown--show" style="position: static;">
|
||||||
|
<li><button><svg><use xlink:href="#icon-reply_light" /></svg> Reply</button></li>
|
||||||
|
<li><button><svg><use xlink:href="#icon-reply_all_light" /></svg> Reply All</button></li>
|
||||||
|
</ul>
|
14
src/styleguide/sections/form/checkbox.hbs
Normal file
14
src/styleguide/sections/form/checkbox.hbs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
title: Checkbox
|
||||||
|
description: >
|
||||||
|
Works only in combination with JavaScript or a clickable <code class="sg-typo-code"><label></code>.
|
||||||
|
---
|
||||||
|
|
||||||
|
<span class="checkbox">
|
||||||
|
<input type="checkbox">
|
||||||
|
<span><svg role="presentation"><use xlink:href="#icon-check" /></svg></span>
|
||||||
|
</span>
|
||||||
|
<span class="checkbox">
|
||||||
|
<input type="checkbox" checked>
|
||||||
|
<span><svg role="presentation"><use xlink:href="#icon-check" /></svg></span>
|
||||||
|
</span>
|
43
src/styleguide/sections/form/form.hbs
Normal file
43
src/styleguide/sections/form/form.hbs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
---
|
||||||
|
title: Form layout
|
||||||
|
description: >
|
||||||
|
Basic form layout with multicolumn support.
|
||||||
|
---
|
||||||
|
|
||||||
|
<form class="form">
|
||||||
|
<p class="form__error-message">Error message</p>
|
||||||
|
<p class="form__password-strong-message">Password strong message</p>
|
||||||
|
<div class="form__row">
|
||||||
|
<input class="input-text" type="text">
|
||||||
|
</div>
|
||||||
|
<div class="form__row form__row--multi">
|
||||||
|
<div class="form__col">
|
||||||
|
<input class="input-text" type="text">
|
||||||
|
</div>
|
||||||
|
<div class="form__col">
|
||||||
|
<input class="input-text" type="text">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form__row form__row--multi">
|
||||||
|
<div class="form__col form__col--2">
|
||||||
|
<input class="input-text" type="text">
|
||||||
|
</div>
|
||||||
|
<div class="form__col">
|
||||||
|
<input class="input-text" type="text">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form__row form__row--multi">
|
||||||
|
<div class="form__col">
|
||||||
|
<input class="input-text" type="text">
|
||||||
|
</div>
|
||||||
|
<div class="form__col form__col--2">
|
||||||
|
<input class="input-text" type="text">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="spinner-block">
|
||||||
|
<span class="spinner spinner--big"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form__row">
|
||||||
|
<button class="btn" type="submit">Submit</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
15
src/styleguide/sections/form/form_fieldset.hbs
Normal file
15
src/styleguide/sections/form/form_fieldset.hbs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
title: Form fieldset
|
||||||
|
description: >
|
||||||
|
Use to group form inputs.
|
||||||
|
---
|
||||||
|
|
||||||
|
<fieldset class="form-fieldset">
|
||||||
|
<legend>Legend</legend>
|
||||||
|
<div class="form__row">
|
||||||
|
<input class="input-text" type="text">
|
||||||
|
</div>
|
||||||
|
<div class="form__row">
|
||||||
|
<input class="input-text" type="text">
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
10
src/styleguide/sections/form/form_input_with_button.hbs
Normal file
10
src/styleguide/sections/form/form_input_with_button.hbs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
title: Form input with button
|
||||||
|
description: >
|
||||||
|
Use to group form inputs.
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="form-input-with-button">
|
||||||
|
<input class="input-text" type="text">
|
||||||
|
<button class="btn">Button</button>
|
||||||
|
</div>
|
13
src/styleguide/sections/form/input_checkbox.hbs
Normal file
13
src/styleguide/sections/form/input_checkbox.hbs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
title: Checkbox input
|
||||||
|
description: >
|
||||||
|
Custom checkbox input constists of custom checkbox plus label.
|
||||||
|
---
|
||||||
|
|
||||||
|
<label class="input-checkbox">
|
||||||
|
<span class="checkbox">
|
||||||
|
<input type="checkbox">
|
||||||
|
<span><svg role="presentation"><use xlink:href="#icon-check" /></svg></span>
|
||||||
|
</span>
|
||||||
|
Label
|
||||||
|
</label>
|
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
title: Email input with fixed domain
|
||||||
|
description:
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="input-email-fixed-domain">
|
||||||
|
<input class="input-text" type="text">
|
||||||
|
<span>@wmail.io</span>
|
||||||
|
</div>
|
8
src/styleguide/sections/form/input_file.hbs
Normal file
8
src/styleguide/sections/form/input_file.hbs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
title: File input
|
||||||
|
description: >
|
||||||
|
Custom styled file input.
|
||||||
|
<strong>Attention:</strong> Webkit support only!
|
||||||
|
---
|
||||||
|
|
||||||
|
<input class="input-file" type="file">
|
14
src/styleguide/sections/form/input_select.hbs
Normal file
14
src/styleguide/sections/form/input_select.hbs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
title: Select input
|
||||||
|
description: >
|
||||||
|
Custom styled select input.
|
||||||
|
<strong>Attention:</strong> Webkit support only!
|
||||||
|
---
|
||||||
|
|
||||||
|
<label class="input-select">
|
||||||
|
<select>
|
||||||
|
<option>Option 1</option>
|
||||||
|
<option>Option 2</option>
|
||||||
|
<option>Option 3</option>
|
||||||
|
</select>
|
||||||
|
</label>
|
11
src/styleguide/sections/form/input_text.hbs
Normal file
11
src/styleguide/sections/form/input_text.hbs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
title: Text input
|
||||||
|
description: >
|
||||||
|
Regular text input.
|
||||||
|
---
|
||||||
|
|
||||||
|
<input class="input-text" type="text" placeholder="Text input">
|
||||||
|
|
||||||
|
<input class="input-text input-text--big" type="text" placeholder="Big text input">
|
||||||
|
|
||||||
|
<input class="input-text input-text--error" type="text" placeholder="Invalid text input">
|
15
src/styleguide/sections/form/search.hbs
Normal file
15
src/styleguide/sections/form/search.hbs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
title: Search bar
|
||||||
|
description: >
|
||||||
|
There a regular and a light search bar.
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="search">
|
||||||
|
<svg><use xlink:href="#icon-search" /><title>Search</title></svg>
|
||||||
|
<input class="input-text" type="text" placeholder="Search">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="search search--light">
|
||||||
|
<svg><use xlink:href="#icon-search" /><title>Search</title></svg>
|
||||||
|
<input class="input-text" type="text" placeholder="Search">
|
||||||
|
</div>
|
21
src/styleguide/sections/labels.hbs
Normal file
21
src/styleguide/sections/labels.hbs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
title: Labels
|
||||||
|
description: There are various types of labels.
|
||||||
|
---
|
||||||
|
|
||||||
|
<span class="label">
|
||||||
|
Regular
|
||||||
|
<svg><use xlink:href="#icon-add_contact" /></svg>
|
||||||
|
</span>
|
||||||
|
<span class="label label--invalid">
|
||||||
|
Invalid
|
||||||
|
<svg><use xlink:href="#icon-add_contact" /></svg>
|
||||||
|
</span>
|
||||||
|
<span class="label label--invalid label--invalid-clickable">
|
||||||
|
Clickable invalid
|
||||||
|
<svg><use xlink:href="#icon-add_contact" /></svg>
|
||||||
|
</span>
|
||||||
|
<span class="label label--blank">
|
||||||
|
Blank
|
||||||
|
<svg><use xlink:href="#icon-add_contact" /></svg>
|
||||||
|
</span>
|
21
src/styleguide/sections/mail_addresses.hbs
Normal file
21
src/styleguide/sections/mail_addresses.hbs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
title: List of mail addresses
|
||||||
|
description:
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="mail-addresses">
|
||||||
|
<div class="mail-addresses__more">
|
||||||
|
<button>Button1</button>
|
||||||
|
<button>Button2</button>
|
||||||
|
</div>
|
||||||
|
<label>Label:</label>
|
||||||
|
<span class="label">
|
||||||
|
mail@example.com
|
||||||
|
<svg><use xlink:href="#icon-add_contact" /></svg>
|
||||||
|
</span>
|
||||||
|
<span class="label">
|
||||||
|
mail@example.com
|
||||||
|
<svg><use xlink:href="#icon-add_contact" /></svg>
|
||||||
|
</span>
|
||||||
|
<span class="mail-addresses__stripped"></span>
|
||||||
|
</div>
|
6
src/styleguide/sections/spinner/spinner.hbs
Normal file
6
src/styleguide/sections/spinner/spinner.hbs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
title: Spinner
|
||||||
|
description: Animated spinner with CSS only.
|
||||||
|
---
|
||||||
|
|
||||||
|
<span class="spinner"></span>
|
6
src/styleguide/sections/spinner/spinner_big.hbs
Normal file
6
src/styleguide/sections/spinner/spinner_big.hbs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
title: Big spinner
|
||||||
|
description:
|
||||||
|
---
|
||||||
|
|
||||||
|
<span class="spinner spinner--big"></span>
|
8
src/styleguide/sections/spinner/spinner_block.hbs
Normal file
8
src/styleguide/sections/spinner/spinner_block.hbs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
title: Spinner block
|
||||||
|
description: Full width spinner block with additional margin.
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="spinner-block">
|
||||||
|
<span class="spinner"></span>
|
||||||
|
</div>
|
22
src/styleguide/sections/tags_input.hbs
Normal file
22
src/styleguide/sections/tags_input.hbs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
title: Tags input
|
||||||
|
description: Markup is generated via Angular directive ngTagsInput.
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="tags-input">
|
||||||
|
<div class="host">
|
||||||
|
<div class="tags">
|
||||||
|
<ul class="tag-list">
|
||||||
|
<li class="tag-item label">
|
||||||
|
mail@example.com
|
||||||
|
<a class="remove-button">×</a>
|
||||||
|
</li>
|
||||||
|
<li class="tag-item label label--invalid">
|
||||||
|
mail@example.com
|
||||||
|
<a class="remove-button">×</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<input class="input" type="email" placeholder="add recipient" style="width: 163px;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
24
src/styleguide/sections/toolbars/toolbar_actions.hbs
Normal file
24
src/styleguide/sections/toolbars/toolbar_actions.hbs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
title: Toolbar with actions
|
||||||
|
description: List of buttons.
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="toolbar">
|
||||||
|
<ul class="toolbar__actions">
|
||||||
|
<li>
|
||||||
|
<button class="btn-icon-light">
|
||||||
|
<svg><use xlink:href="#icon-folder" /><title>Move mail</title></svg>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<button class="btn-icon-light">
|
||||||
|
<svg><use xlink:href="#icon-folder" /><title>Move mail</title></svg>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<button class="btn-icon-light">
|
||||||
|
<svg><use xlink:href="#icon-folder" /><title>Move mail</title></svg>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
11
src/styleguide/sections/toolbars/toolbar_label.hbs
Normal file
11
src/styleguide/sections/toolbars/toolbar_label.hbs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
title: Toolbar with label
|
||||||
|
description: Use as headline with integrated back button.
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="toolbar">
|
||||||
|
<a class="toolbar__label" href="#">
|
||||||
|
<svg><use xlink:href="#icon-back" /><title>Back</title></svg>
|
||||||
|
Label
|
||||||
|
</a>
|
||||||
|
</div>
|
16
src/styleguide/sections/tooltip.hbs
Normal file
16
src/styleguide/sections/tooltip.hbs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
title: Tooltip
|
||||||
|
description: >
|
||||||
|
The tooltip is positioned absolutely within the application via JavaScript.
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="tooltip tooltip--show" style="position: static;">
|
||||||
|
<div class="tooltip__arrow"></div>
|
||||||
|
<div class="tooltip__content">Content</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tooltip tooltip--show" style="position: static;">
|
||||||
|
<div class="tooltip__arrow"></div>
|
||||||
|
<h5 class="tooltip__title">Optional title</h5>
|
||||||
|
<div class="tooltip__content">Multi-line<br>Content</div>
|
||||||
|
</div>
|
6
src/styleguide/sections/typo/typo_code.hbs
Normal file
6
src/styleguide/sections/typo/typo_code.hbs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
title: Code
|
||||||
|
description: Inline code style.
|
||||||
|
---
|
||||||
|
|
||||||
|
<code class="typo-code">1234-1234-1234-1234</code>
|
14
src/styleguide/sections/typo/typo_paragraph.hbs
Normal file
14
src/styleguide/sections/typo/typo_paragraph.hbs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
title: Paragraph
|
||||||
|
description: >
|
||||||
|
Paragraph with margin bottom and additional styles for
|
||||||
|
<code class="sg-typo-code">strong</code>, <code class="sg-typo-code">em</code>,
|
||||||
|
and <code class="sg-typo-code">a</code>.
|
||||||
|
---
|
||||||
|
|
||||||
|
<p class="typo-paragraph">
|
||||||
|
Lorem ipsum dolor sit amet, <strong>consectetur</strong> adipisicing elit.
|
||||||
|
<em>Accusamus possimus</em> officiis quia perferendis quo assumenda,
|
||||||
|
recusandae repellat? Iusto vero, temporibus debitis eveniet
|
||||||
|
qui libero excepturi, <a href="#">architecto laborum</a> assumenda, modi aperiam.
|
||||||
|
</p>
|
6
src/styleguide/sections/typo/typo_title.hbs
Normal file
6
src/styleguide/sections/typo/typo_title.hbs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
title: Title
|
||||||
|
description: Use as main page title.
|
||||||
|
---
|
||||||
|
|
||||||
|
<h1 class="typo-title">Title</h1>
|
Loading…
Reference in New Issue
Block a user