├── .gitattributes
├── .gitignore
├── .npmignore
├── .travis.yml
├── README.md
├── assets
├── favicons
│ └── favicon-32x32.png
└── js
│ └── cl.js
├── demo
├── assets
│ ├── project.css
│ └── project.js
├── gulpfile.js
├── public
│ └── index.html
└── src
│ ├── layout.html
│ └── templates
│ ├── 0.intro.html
│ ├── 1.foundation
│ ├── 1.Colors
│ │ ├── 1.palette.html
│ │ ├── 3.color-classes.html
│ │ └── 4.background-utilities.html
│ ├── 2.Grid
│ │ └── simple-grid.html
│ ├── Addresses.html
│ ├── Alerts.html
│ ├── Badges.html
│ ├── Buttons
│ │ ├── 1.basic.html
│ │ ├── button-groups.html
│ │ ├── justified.html
│ │ ├── vertical.html
│ │ └── with-dropdowns.html
│ ├── Definition Lists
│ │ ├── 1.vertical.html
│ │ └── 2.horizontal.html
│ ├── Dropdowns.html
│ ├── Forms
│ │ ├── 1.basic-example.html
│ │ ├── 2.inline-form.html
│ │ └── 3.horizontal-form.html
│ ├── Images.html
│ ├── Labels.html
│ ├── Tables.html
│ ├── Typography
│ │ ├── 1.blockquote.html
│ │ ├── 2.blockquote-reverse.html
│ │ ├── Emphasis
│ │ │ ├── bold-text.html
│ │ │ ├── italics-text.html
│ │ │ └── small-text.html
│ │ ├── Lists
│ │ │ ├── list-inline.html
│ │ │ ├── list-ordered.html
│ │ │ ├── list-unordered.html
│ │ │ └── list-unstyled.html
│ │ ├── body-copy.html
│ │ ├── headings.html
│ │ ├── lead-copy.html
│ │ ├── links.html
│ │ └── text-alignment.html
│ ├── Well.html
│ └── icons.html
│ └── 2.components
│ ├── Media Objects
│ ├── default.html
│ └── list.html
│ ├── Navigation
│ ├── 1.Navbar.html
│ ├── 2.Tabs.html
│ ├── 3.Justified-Tabs.html
│ ├── 4.Pills.html
│ ├── 5.Stacked-Pills.html
│ └── 6.Dropdown-Tabs.html
│ ├── Pagination
│ ├── 1.default.html
│ ├── 2.large.html
│ └── 3.small.html
│ ├── breadcrumbs.html
│ ├── list-groups.html
│ ├── pager.html
│ ├── progress-bars.html
│ └── thumbnails.html
├── package.json
├── sass
├── _components.scss
├── _init.scss
├── _tree.scss
├── bootstrap
│ ├── _theme.scss
│ └── _variables.scss
├── cl.scss
└── components
│ ├── _icon-list.scss
│ └── _palette.scss
└── src
├── assemblers
├── __tests__
│ ├── assets.test.js
│ ├── assets
│ │ └── input
│ │ │ ├── folder
│ │ │ └── another-asset.txt
│ │ │ └── test-asset.txt
│ ├── sass.test.js
│ ├── sass
│ │ └── input
│ │ │ ├── bad.scss
│ │ │ └── good.scss
│ ├── templates.test.js
│ └── templates
│ │ └── input
│ │ ├── 1.atoms
│ │ ├── 1.Colors
│ │ │ ├── 1.palette.html
│ │ │ ├── 3.color-classes.html
│ │ │ └── 4.background-utilities.html
│ │ └── alerts.html
│ │ ├── 2.molecules
│ │ ├── breadcrumbs.html
│ │ └── pagination
│ │ │ ├── 1.default.html
│ │ │ ├── 2.large.html
│ │ │ └── 3.small.html
│ │ └── 3.organisms.html
├── assets.js
├── sass.js
├── templates.js
└── views
│ ├── content.njk
│ ├── css.njk
│ ├── js.njk
│ ├── layout.njk
│ ├── macro
│ ├── element-tree.njk
│ ├── navigation.njk
│ └── search-tree.njk
│ └── navigation.njk
└── index.js
/.gitattributes:
--------------------------------------------------------------------------------
1 | demo/* linguist-vendored
2 | *.njk linguist-language=Javascript
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /.idea
2 | /demo/public/component-library
3 | /node_modules
4 | /.DS_Store
5 | /npm-debug.log
6 | /dist
7 | _tmp
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | /.idea
2 | /.gitattributes
3 | /demo
4 | /src
5 | __tests__
6 | *.test.js
7 | .travis.yml
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 | language: node_js
3 | cache:
4 | directories:
5 | - node_modules
6 | notifications:
7 | email: false
8 | node_js:
9 | - '4'
10 | before_install:
11 | - npm i -g npm@^2.0.0
12 | before_script:
13 | - npm prune
14 | script:
15 | - npm run test
16 | - npm run build
17 | after_success:
18 | - npm run semantic-release
19 | branches:
20 | except:
21 | - /^v\d+\.\d+\.\d+$/
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | An easy way to create HTML styleguide for a web project.
2 |
3 | Demo: http://sneas.github.io/component-library/index.html
4 |
5 | [](https://travis-ci.org/sneas/component-library)
6 | [](http://npm.im/component-library)
7 | [](http://opensource.org/licenses/MIT)
8 | [](https://github.com/semantic-release/semantic-release)
9 |
10 |
11 | ## Motivation
12 |
13 | Most web projects consist of components. They could be simple basic components like texts, icons, buttons, and form inputs. Or complex components like video player, sophisticated inputs (i.e., typeahead), menus, popovers, etc. Any large project reaches a point when it's hard to remember and control all the pages and their components.
14 |
15 | A component library is a special place to store and manage all the HTML components of a website in one place.
16 |
17 | Features:
18 | * easy to install
19 | * easy to manage
20 | * easy to integrate with existing project
21 | * absence of conflicts with existing JS and CSS
22 |
23 | ## Installation
24 |
25 | ```bash
26 | npm install component-library
27 | ```
28 |
29 | ## Integration with project
30 |
31 | ### List of components
32 |
33 | Create an empty folder in your projects's file system and fill it with HTML files (components). One HTML file per one component.
34 |
35 | See [demo/src/templates](demo/src/templates) as an example.
36 |
37 | ### Integration with build process
38 |
39 | As a reference I've used Gulp but it's easy to add components library into any build system. All you need is to require component library, point it to your newly created components folder and give it links to your projects's CSS and JS files.
40 |
41 | ```javascript
42 | var gulp = require('gulp'),
43 | componentLibrary = require('component-library');
44 |
45 | gulp.task('cl', function(cb) {
46 | componentLibrary(
47 | '/project/templates/dir',
48 | '/project/public/component-library',
49 | {
50 | baseUrl: '/component-library/',
51 | favicon: {
52 | href: '/project/favicon.ico',
53 | rel: 'shortcut icon',
54 | type: 'image/x-icon'
55 | },
56 | js: [
57 | //List of your project's JS files goes here
58 | '/project/js/file.js'
59 | ],
60 | css: [
61 | //List of your project's CSS files goes here
62 | '/project/css/file.css'
63 | ]
64 | }
65 | ).then(function() {
66 | cb();
67 | }).catch(function(er) {
68 | cb(er);
69 | });
70 | });
71 |
72 | gulp.task('cl:watch', ['cl'], function() {
73 | gulp.watch(['/project/templates/dir'], ['cl']);
74 | });
75 | ```
76 |
77 | ## FAQ
78 | ### What if my project has a custom initialization logic in layout?
79 | Create you own layout file by copying minimum HTML required:
80 |
81 | ```html
82 |
83 |
84 |
85 |
86 | {{ content }}
87 |
88 |
89 | ```
90 |
91 | Add your custom code to it. **NB:** You can add only the required code. All the CSS links and JS scripts will be added automatically.
92 | Add the `layout` param to the configuration object. Example:
93 | ```javascript
94 | var componentLibrary = require('component-library');
95 |
96 | componentLibrary(
97 | '/project/component-library/templates/dir',
98 | '/project/public/component-library',
99 | {
100 | layout: '/project/component-library/your-layout.html',
101 | baseUrl: '/component-library/',
102 | favicon: {
103 | href: '/project/favicon.ico',
104 | rel: 'shortcut icon',
105 | type: 'image/x-icon'
106 | },
107 | js: [
108 | //List of your project's JS files goes here
109 | '/project/js/file.js'
110 | ],
111 | css: [
112 | //List of your project's CSS files goes here
113 | '/project/css/file.css'
114 | ]
115 | }
116 | );
117 | ```
118 |
119 | See [demo/src/layout.html](demo/src/layout.html) as an example.
120 |
121 | ## License
122 |
123 | (MIT License)
124 |
125 | Copyright (c) 2016 Dima Snisarenko snisarenkodima@gmail.com
126 |
127 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
128 |
129 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
130 |
131 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
132 |
--------------------------------------------------------------------------------
/assets/favicons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sneas/component-library/7288be445f7d09612a1801fed563b9e3e4aae861/assets/favicons/favicon-32x32.png
--------------------------------------------------------------------------------
/assets/js/cl.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | /**
4 | * Navigation menu
5 | */
6 | (function($) {
7 | var collapsible = $('.cl-navigation-collapse');
8 |
9 | function toggle() {
10 | collapsible.slideToggle('fast', function() {
11 | collapsible.toggleClass('cl-bs-in');
12 | });
13 | }
14 |
15 | $('.cl-navigation-toggle').click(function() {
16 | toggle();
17 | });
18 |
19 | $('.cl-navigation-collapse a').click(function(e) {
20 | if (!collapsible.is(':visible')) {
21 | return;
22 | }
23 |
24 | if ($(e.target).is('.cl-bs-navbar-toggle')) {
25 | return;
26 | }
27 |
28 | if ($(this).is('.cl-bs-has-submenu.cl-bs-highlighted') || !$(this).is('cl-bs-.has-submenu')) {
29 | toggle();
30 | }
31 | });
32 | })(jQuery);
33 |
34 |
35 | /**
36 | * Instant search
37 | */
38 | (function($) {
39 | var input = $('#cl-search');
40 | var wrapper = input.parents('.cl-bs-dropdown:first');
41 | var dropdown = wrapper.find('.cl-bs-dropdown-menu');
42 | var likelyIn = 0;
43 | var outTimeout = false;
44 | var upStrikesOnFirstItem = 0;
45 |
46 | wrapper.focusout(function() {
47 | likelyIn = likelyIn - 1;
48 |
49 | if (outTimeout) {
50 | clearTimeout(outTimeout);
51 | }
52 |
53 | outTimeout = setTimeout(function() {
54 | outTimeout = false;
55 | if (likelyIn <= 0) {
56 | wrapper.removeClass('cl-bs-open');
57 | likelyIn = 0;
58 | } else {
59 | showWhenNeeded();
60 | }
61 | }, 0);
62 | });
63 |
64 | wrapper.focusin(function() {
65 | likelyIn = likelyIn + 1;
66 | showWhenNeeded();
67 | });
68 |
69 | input.keyup(function(event) {
70 | // Arrow down pressed
71 | if (event.keyCode === 40) {
72 | dropdown.find('li:not(.cl-bs-hidden):first a').focus();
73 | upStrikesOnFirstItem = 1;
74 | return;
75 | }
76 |
77 | var searchString = input.val().toLowerCase();
78 | dropdown.find('li').each(function() {
79 | $(this).toggleClass('cl-bs-hidden', $(this).find('.cl-js-search-in')
80 | .text().toLowerCase().indexOf(searchString) === -1);
81 | });
82 |
83 | showWhenNeeded();
84 | });
85 |
86 | dropdown.keyup(function(event) {
87 | // Arrow up pressed
88 | if (event.keyCode === 38) {
89 | if (dropdown.find('a:focus').parent()[0] === dropdown.find('li:visible:first')[0]) {
90 | if (++upStrikesOnFirstItem === 2) {
91 | input.focus();
92 | upStrikesOnFirstItem = 0;
93 | }
94 | }
95 | } else {
96 | upStrikesOnFirstItem = 0;
97 | }
98 | });
99 |
100 | dropdown.keydown(function(event) {
101 | if (event.keyCode === 13) {
102 | input.val('');
103 | }
104 | });
105 |
106 | function showWhenNeeded() {
107 | if (input.val().length === 0 || dropdown.find('li:not(.cl-bs-hidden)').length === 0) {
108 | wrapper.removeClass('cl-bs-open');
109 | } else {
110 | wrapper.addClass('cl-bs-open');
111 | }
112 | }
113 | })(jQuery);
114 |
115 |
116 | /**
117 | * Show/hide code
118 | */
119 | (function($) {
120 | $('.cl-js-template-code-toggle').click(function() {
121 | $(this).parent().find('.cl-js-template-code-content').slideToggle('fast');
122 | });
123 | })(jQuery);
124 |
--------------------------------------------------------------------------------
/demo/assets/project.css:
--------------------------------------------------------------------------------
1 | textarea {
2 | background-color: #d8ffff;
3 | }
--------------------------------------------------------------------------------
/demo/assets/project.js:
--------------------------------------------------------------------------------
1 | //"use strict";
2 | (function(document){
3 | Array.prototype.forEach.call(document.getElementsByTagName('textarea'), function(element) {
4 | element.onclick = function() {
5 | alert('Element is clicked!');
6 | }
7 | });
8 | })(document);
--------------------------------------------------------------------------------
/demo/gulpfile.js:
--------------------------------------------------------------------------------
1 | var gulp = require('gulp'),
2 | path = require('path'),
3 | clean = require('gulp-clean'),
4 | //componentLibrary = require('component-library')
5 | componentLibrary = require('../dist/index.js');
6 |
7 | var publicDir = path.join(__dirname, 'public/component-library');
8 |
9 | gulp.task('clean', function() {
10 | return gulp.src(publicDir, {read: false})
11 | .pipe(clean({force: true}));
12 | });
13 |
14 | gulp.task('assets', ['clean'], function() {
15 | gulp.src([
16 | __dirname + '/assets/**/*'
17 | ])
18 | .pipe(gulp.dest(publicDir));
19 | });
20 |
21 | gulp.task('compile', ['assets'], function(cb) {
22 | var templatesDir = path.join(__dirname, 'src/templates');
23 | componentLibrary(templatesDir, publicDir, {
24 | baseUrl: '/component-library/',
25 | layout: path.join(__dirname, 'src/layout.html'),
26 | js: [
27 | 'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js',
28 | 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js',
29 | '/component-library/project.js'
30 | ],
31 | css: [
32 | 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css',
33 | 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css',
34 | 'https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css',
35 | '/component-library/project.css'
36 | ]
37 | }).then(function() {
38 | cb();
39 | }).catch(function(err) {
40 | cb(err);
41 | });
42 | });
43 |
44 | gulp.task('watch', ['compile'], function() {
45 | gulp.watch(['src/**/*', 'assets/**/*', '../dist/assemblers/views/**/*', '../sass/**/*', '../assets/**/*'], ['compile']);
46 | });
--------------------------------------------------------------------------------
/demo/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/demo/src/layout.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{ content }}
7 |
8 |
9 |
--------------------------------------------------------------------------------
/demo/src/templates/0.intro.html:
--------------------------------------------------------------------------------
1 |
2 | Demo library based on Bootstrap CSS framework.
3 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/1.Colors/1.palette.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Primary
4 | #428BCA
5 | #3874A9
6 |
7 |
8 | Success
9 | #5CB85C
10 | #4D984D
11 |
12 |
13 | Info
14 | #5BC0DE
15 | #59A4C4
16 |
17 |
18 | Warning
19 | #F0AD4E
20 | #BA8540
21 |
22 |
23 | Danger
24 | #D9534F
25 | #B04341
26 |
27 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/1.Colors/3.color-classes.html:
--------------------------------------------------------------------------------
1 | Muted text
2 | Primary text
3 | Info text
4 | Success text
5 | Danger text
6 | Warning text
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/1.Colors/4.background-utilities.html:
--------------------------------------------------------------------------------
1 | Primary Background
2 | Info Background
3 | Success Background
4 | Danger Background
5 | Warning Background
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/2.Grid/simple-grid.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
.col-md-1
4 |
.col-md-1
5 |
.col-md-1
6 |
.col-md-1
7 |
.col-md-1
8 |
.col-md-1
9 |
.col-md-1
10 |
.col-md-1
11 |
.col-md-1
12 |
.col-md-1
13 |
.col-md-1
14 |
.col-md-1
15 |
16 |
17 |
18 |
.col-md-8
19 |
.col-md-4
20 |
21 |
22 |
23 |
.col-md-4
24 |
.col-md-4
25 |
.col-md-4
26 |
27 |
28 |
29 |
.col-md-6
30 |
.col-md-6
31 |
32 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Addresses.html:
--------------------------------------------------------------------------------
1 |
2 | Twitter, Inc.
3 | 795 Folsom Ave, Suite 600
4 | San Francisco, CA 94107
5 | P: (123) 456-7890
6 |
7 |
8 | Full Name
9 | first.last@example.com
10 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Alerts.html:
--------------------------------------------------------------------------------
1 |
2 | Warning Message! Lorem ipsum dolor sit amet, consectetur adipisicing elit.
3 |
4 |
5 | Error Message! Numquam quos fuga quam suscipit sapiente perferendis magnam.
6 |
7 |
8 | Success Message! Totam officiis dolorum voluptatibus maxime molestiae iste.
9 |
10 |
11 | Info Message! Consequatur facere deleniti cumque ducimus maiores nemo.
12 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Badges.html:
--------------------------------------------------------------------------------
1 |
6 |
7 |
22 |
23 |
24 | Messages 4
25 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Buttons/1.basic.html:
--------------------------------------------------------------------------------
1 |
2 | Default
3 | Primary
4 | Success
5 | Info
6 | Warning
7 | Danger
8 | Link
9 |
10 |
11 | Default
12 | Primary
13 | Success
14 | Info
15 | Warning
16 | Danger
17 | Link
18 |
19 |
20 | Large
21 | Disabled
22 | Default
23 | Small
24 | Extra Small
25 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Buttons/button-groups.html:
--------------------------------------------------------------------------------
1 |
8 |
19 |
30 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Buttons/justified.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Left
4 |
5 |
6 | Middle
7 |
8 |
9 | Right
10 |
11 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Buttons/vertical.html:
--------------------------------------------------------------------------------
1 |
2 |
Button
3 |
Button
4 |
5 | Dropdown
7 |
8 |
12 |
13 |
Button
14 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Buttons/with-dropdowns.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
1
5 |
2
6 |
7 | Dropdown
8 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | Default
21 |
27 |
28 |
29 |
30 | Primary
31 |
37 |
38 |
39 |
40 | Success
41 |
47 |
48 |
49 |
50 | Info
51 |
57 |
58 |
59 |
60 | Warning
61 |
67 |
68 |
69 |
70 | Danger
71 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | Default
84 |
85 |
86 | Toggle Dropdown
87 |
88 |
94 |
95 |
96 |
97 | Primary
98 | Toggle Dropdown
100 |
106 |
107 |
108 |
109 | Success
110 | Toggle Dropdown
112 |
118 |
119 |
120 |
121 | Info
122 | Toggle Dropdown
124 |
130 |
131 |
132 |
133 | Warning
134 | Toggle Dropdown
136 |
142 |
143 |
144 |
145 | Danger
146 | Toggle Dropdown
148 |
154 |
155 |
156 |
157 |
158 |
159 |
160 | Large button
161 |
162 |
165 |
166 |
167 |
168 | Small button
169 |
170 |
173 |
174 |
175 |
176 | Extra small
177 | button
178 |
179 |
182 |
183 |
184 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Definition Lists/1.vertical.html:
--------------------------------------------------------------------------------
1 |
2 | Description lists
3 | A description list is perfect for defining terms.
4 | Euismod
5 | Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
6 | Donec id elit non mi porta gravida at eget metus.
7 | Malesuada porta
8 | Etiam porta sem malesuada magna mollis euismod.
9 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Definition Lists/2.horizontal.html:
--------------------------------------------------------------------------------
1 |
2 | Description lists
3 | A description list is perfect for defining terms.
4 | Euismod
5 | Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
6 | Donec id elit non mi porta gravida at eget metus.
7 | Malesuada porta
8 | Etiam porta sem malesuada magna mollis euismod.
9 | Felis euismod semper eget lacinia
10 | Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet
11 | risus.
12 |
13 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Dropdowns.html:
--------------------------------------------------------------------------------
1 |
2 |
6 |
15 |
16 |
17 |
18 |
34 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Forms/1.basic-example.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Forms/2.inline-form.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Forms/3.horizontal-form.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Images.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Labels.html:
--------------------------------------------------------------------------------
1 |
Example heading New
2 | Example heading New
3 | Example heading New
4 | Example heading New
5 | Example heading New
6 | Example heading New
7 | Default
8 | Primary
9 | Success
10 | Info
11 | Warning
12 | Danger
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Tables.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #
5 | First Name
6 | Tables
7 |
8 |
9 |
10 |
11 | 1
12 | Michael
13 | Are formatted like this
14 |
15 |
16 | 2
17 | Lucille
18 | Do you like them?
19 |
20 |
21 | 3
22 | Success
23 |
24 |
25 |
26 | 4
27 | Danger
28 |
29 |
30 |
31 | 5
32 | Warning
33 |
34 |
35 |
36 | 6
37 | Active
38 |
39 |
40 |
41 |
42 | Striped & condensed table with alternating backgrounds
43 |
44 |
45 |
46 | #
47 | First Name
48 | Tables
49 |
50 |
51 |
52 |
53 | 1
54 | Michael
55 | This one is bordered and condensed
56 |
57 |
58 | 2
59 | Lucille
60 | Do you still like it?
61 |
62 |
63 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/1.blockquote.html:
--------------------------------------------------------------------------------
1 |
2 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.
3 | Someone famous in Source Title
4 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/2.blockquote-reverse.html:
--------------------------------------------------------------------------------
1 |
2 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.
3 | Someone famous in Source Title
4 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/Emphasis/bold-text.html:
--------------------------------------------------------------------------------
1 | Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/Emphasis/italics-text.html:
--------------------------------------------------------------------------------
1 | Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/Emphasis/small-text.html:
--------------------------------------------------------------------------------
1 | Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/Lists/list-inline.html:
--------------------------------------------------------------------------------
1 |
2 | List Item 1
3 | List Item 2
4 | List Item 3
5 | List Item 4
6 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/Lists/list-ordered.html:
--------------------------------------------------------------------------------
1 |
2 | List Item 1
3 | List Item 2
4 | List Item 3
5 |
6 | List Item 3.1
7 | List Item 3.2
8 | List Item 3.3
9 | List Item 3.4
10 |
11 |
12 | List Item 4
13 |
14 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/Lists/list-unordered.html:
--------------------------------------------------------------------------------
1 |
2 | List Item 1
3 | List Item 2
4 | List Item 3
5 |
6 | List Item 3.1
7 | List Item 3.2
8 | List Item 3.3
9 | List Item 3.4
10 |
11 |
12 | List Item 4
13 |
14 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/Lists/list-unstyled.html:
--------------------------------------------------------------------------------
1 |
2 | List Item 1
3 | List Item 2
4 | List Item 3
5 | List Item 4
6 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/body-copy.html:
--------------------------------------------------------------------------------
1 | Lead paragraph: vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est
2 | non commodo luctus.
3 | Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis
4 | parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.
5 |
6 | This line of text is meant to be treated as fine print.
7 |
8 | The following snippet of text is rendered as bold text .
9 | The following snippet of text is rendered as italicized text .
10 | An abbreviation of the word attribute is attr .
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/headings.html:
--------------------------------------------------------------------------------
1 | Heading 1
2 | Heading 2
3 | Heading 3
4 | Heading 4
5 | Heading 5
6 | Heading 6
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/lead-copy.html:
--------------------------------------------------------------------------------
1 | This is an example of a lead paragraph. WinShape Camps offers day and overnight summer camp experiences for boys and girls of all ages.
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/links.html:
--------------------------------------------------------------------------------
1 | Default link
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Typography/text-alignment.html:
--------------------------------------------------------------------------------
1 | Left Alignment
2 | Center Alignment
3 | Right Alignment
4 | Justified Text
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/Well.html:
--------------------------------------------------------------------------------
1 |
2 | Look, I'm in a well!
3 |
4 |
5 | Small Well
6 |
7 |
8 | Large Padding Well
9 |
10 |
--------------------------------------------------------------------------------
/demo/src/templates/1.foundation/icons.html:
--------------------------------------------------------------------------------
1 |
2 | All icons are listed below and can only be used using the fa
class.
3 |
4 |
5 |
6 |
7 |
8 |
9 | glass
10 |
11 |
12 |
13 | music
14 |
15 |
16 |
17 | search
18 |
19 |
20 |
21 | envelope-o
22 |
23 |
24 |
25 | heart
26 |
27 |
28 |
29 | star
30 |
31 |
32 |
33 | star-o
34 |
35 |
36 |
37 | user
38 |
39 |
40 |
41 | film
42 |
43 |
44 |
45 | th-large
46 |
47 |
48 |
49 | th
50 |
51 |
52 |
53 | th-list
54 |
55 |
56 |
57 | check
58 |
59 |
60 |
61 | remove
62 |
63 |
64 |
65 | close
66 |
67 |
68 |
69 | times
70 |
71 |
72 |
73 | search-plus
74 |
75 |
76 |
77 | search-minus
78 |
79 |
80 |
81 | power-off
82 |
83 |
84 |
85 | signal
86 |
87 |
88 |
89 | gear
90 |
91 |
92 |
93 | cog
94 |
95 |
96 |
97 | trash-o
98 |
99 |
100 |
101 | home
102 |
103 |
104 |
105 | file-o
106 |
107 |
108 |
109 | clock-o
110 |
111 |
112 |
113 | road
114 |
115 |
116 |
117 | download
118 |
119 |
120 |
121 | arrow-circle-o-down
122 |
123 |
124 |
125 | arrow-circle-o-up
126 |
127 |
128 |
129 | inbox
130 |
131 |
132 |
133 | play-circle-o
134 |
135 |
136 |
137 | rotate-right
138 |
139 |
140 |
141 | repeat
142 |
143 |
144 |
145 | refresh
146 |
147 |
148 |
149 | list-alt
150 |
151 |
152 |
153 | lock
154 |
155 |
156 |
157 | flag
158 |
159 |
160 |
161 | headphones
162 |
163 |
164 |
165 | volume-off
166 |
167 |
168 |
169 | volume-down
170 |
171 |
172 |
173 | volume-up
174 |
175 |
176 |
177 | qrcode
178 |
179 |
180 |
181 | barcode
182 |
183 |
184 |
185 | tag
186 |
187 |
188 |
189 | tags
190 |
191 |
192 |
193 | book
194 |
195 |
196 |
197 | bookmark
198 |
199 |
200 |
201 | print
202 |
203 |
204 |
205 | camera
206 |
207 |
208 |
209 | font
210 |
211 |
212 |
213 | bold
214 |
215 |
216 |
217 | italic
218 |
219 |
220 |
221 | text-height
222 |
223 |
224 |
225 | text-width
226 |
227 |
228 |
229 | align-left
230 |
231 |
232 |
233 | align-center
234 |
235 |
236 |
237 | align-right
238 |
239 |
240 |
241 | align-justify
242 |
243 |
244 |
245 | list
246 |
247 |
248 |
249 | dedent
250 |
251 |
252 |
253 | outdent
254 |
255 |
256 |
257 | indent
258 |
259 |
260 |
261 | video-camera
262 |
263 |
264 |
265 | photo
266 |
267 |
268 |
269 | image
270 |
271 |
272 |
273 | picture-o
274 |
275 |
276 |
277 | pencil
278 |
279 |
280 |
281 | map-marker
282 |
283 |
284 |
285 | adjust
286 |
287 |
288 |
289 | tint
290 |
291 |
292 |
293 | edit
294 |
295 |
296 |
297 | pencil-square-o
298 |
299 |
300 |
301 | share-square-o
302 |
303 |
304 |
305 | check-square-o
306 |
307 |
308 |
309 | arrows
310 |
311 |
312 |
313 | step-backward
314 |
315 |
316 |
317 | fast-backward
318 |
319 |
320 |
321 | backward
322 |
323 |
324 |
325 | play
326 |
327 |
328 |
329 | pause
330 |
331 |
332 |
333 | stop
334 |
335 |
336 |
337 | forward
338 |
339 |
340 |
341 | fast-forward
342 |
343 |
344 |
345 | step-forward
346 |
347 |
348 |
349 | eject
350 |
351 |
352 |
353 | chevron-left
354 |
355 |
356 |
357 | chevron-right
358 |
359 |
360 |
361 | plus-circle
362 |
363 |
364 |
365 | minus-circle
366 |
367 |
368 |
369 | times-circle
370 |
371 |
372 |
373 | check-circle
374 |
375 |
376 |
377 | question-circle
378 |
379 |
380 |
381 | info-circle
382 |
383 |
384 |
385 | crosshairs
386 |
387 |
388 |
389 | times-circle-o
390 |
391 |
392 |
393 | check-circle-o
394 |
395 |
396 |
397 | ban
398 |
399 |
400 |
401 | arrow-left
402 |
403 |
404 |
405 | arrow-right
406 |
407 |
408 |
409 | arrow-up
410 |
411 |
412 |
413 | arrow-down
414 |
415 |
416 |
417 | mail-forward
418 |
419 |
420 |
421 | share
422 |
423 |
424 |
425 | expand
426 |
427 |
428 |
429 | compress
430 |
431 |
432 |
433 | plus
434 |
435 |
436 |
437 | minus
438 |
439 |
440 |
441 | asterisk
442 |
443 |
444 |
445 | exclamation-circle
446 |
447 |
448 |
449 | gift
450 |
451 |
452 |
453 | leaf
454 |
455 |
456 |
457 | fire
458 |
459 |
460 |
461 | eye
462 |
463 |
464 |
465 | eye-slash
466 |
467 |
468 |
469 | warning
470 |
471 |
472 |
473 | exclamation-triangle
474 |
475 |
476 |
477 | plane
478 |
479 |
480 |
481 | calendar
482 |
483 |
484 |
485 | random
486 |
487 |
488 |
489 | comment
490 |
491 |
492 |
493 | magnet
494 |
495 |
496 |
497 | chevron-up
498 |
499 |
500 |
501 | chevron-down
502 |
503 |
504 |
505 | retweet
506 |
507 |
508 |
509 | shopping-cart
510 |
511 |
512 |
513 | folder
514 |
515 |
516 |
517 | folder-open
518 |
519 |
520 |
521 | arrows-v
522 |
523 |
524 |
525 | arrows-h
526 |
527 |
528 |
529 | bar-chart-o
530 |
531 |
532 |
533 | bar-chart
534 |
535 |
536 |
537 | twitter-square
538 |
539 |
540 |
541 | facebook-square
542 |
543 |
544 |
545 | camera-retro
546 |
547 |
548 |
549 | key
550 |
551 |
552 |
553 | gears
554 |
555 |
556 |
557 | cogs
558 |
559 |
560 |
561 | comments
562 |
563 |
564 |
565 | thumbs-o-up
566 |
567 |
568 |
569 | thumbs-o-down
570 |
571 |
572 |
573 | star-half
574 |
575 |
576 |
577 | heart-o
578 |
579 |
580 |
581 | sign-out
582 |
583 |
584 |
585 | linkedin-square
586 |
587 |
588 |
589 | thumb-tack
590 |
591 |
592 |
593 | external-link
594 |
595 |
596 |
597 | sign-in
598 |
599 |
600 |
601 | trophy
602 |
603 |
604 |
605 | github-square
606 |
607 |
608 |
609 | upload
610 |
611 |
612 |
613 | lemon-o
614 |
615 |
616 |
617 | phone
618 |
619 |
620 |
621 | square-o
622 |
623 |
624 |
625 | bookmark-o
626 |
627 |
628 |
629 | phone-square
630 |
631 |
632 |
633 | twitter
634 |
635 |
636 |
637 | facebook-f
638 |
639 |
640 |
641 | facebook
642 |
643 |
644 |
645 | github
646 |
647 |
648 |
649 | unlock
650 |
651 |
652 |
653 | credit-card
654 |
655 |
656 |
657 | feed
658 |
659 |
660 |
661 | rss
662 |
663 |
664 |
665 | hdd-o
666 |
667 |
668 |
669 | bullhorn
670 |
671 |
672 |
673 | bell
674 |
675 |
676 |
677 | certificate
678 |
679 |
680 |
681 | hand-o-right
682 |
683 |
684 |
685 | hand-o-left
686 |
687 |
688 |
689 | hand-o-up
690 |
691 |
692 |
693 | hand-o-down
694 |
695 |
696 |
697 | arrow-circle-left
698 |
699 |
700 |
701 | arrow-circle-right
702 |
703 |
704 |
705 | arrow-circle-up
706 |
707 |
708 |
709 | arrow-circle-down
710 |
711 |
712 |
713 | globe
714 |
715 |
716 |
717 | wrench
718 |
719 |
720 |
721 | tasks
722 |
723 |
724 |
725 | filter
726 |
727 |
728 |
729 | briefcase
730 |
731 |
732 |
733 | arrows-alt
734 |
735 |
736 |
737 | group
738 |
739 |
740 |
741 | users
742 |
743 |
744 |
745 | chain
746 |
747 |
748 |
749 | link
750 |
751 |
752 |
753 | cloud
754 |
755 |
756 |
757 | flask
758 |
759 |
760 |
761 | cut
762 |
763 |
764 |
765 | scissors
766 |
767 |
768 |
769 | copy
770 |
771 |
772 |
773 | files-o
774 |
775 |
776 |
777 | paperclip
778 |
779 |
780 |
781 | save
782 |
783 |
784 |
785 | floppy-o
786 |
787 |
788 |
789 | square
790 |
791 |
792 |
793 | navicon
794 |
795 |
796 |
797 | reorder
798 |
799 |
800 |
801 | bars
802 |
803 |
804 |
805 | list-ul
806 |
807 |
808 |
809 | list-ol
810 |
811 |
812 |
813 | strikethrough
814 |
815 |
816 |
817 | underline
818 |
819 |
820 |
821 | table
822 |
823 |
824 |
825 | magic
826 |
827 |
828 |
829 | truck
830 |
831 |
832 |
833 | pinterest
834 |
835 |
836 |
837 | pinterest-square
838 |
839 |
840 |
841 | google-plus-square
842 |
843 |
844 |
845 | google-plus
846 |
847 |
848 |
849 | money
850 |
851 |
852 |
853 | caret-down
854 |
855 |
856 |
857 | caret-up
858 |
859 |
860 |
861 | caret-left
862 |
863 |
864 |
865 | caret-right
866 |
867 |
868 |
869 | columns
870 |
871 |
872 |
873 | unsorted
874 |
875 |
876 |
877 | sort
878 |
879 |
880 |
881 | sort-down
882 |
883 |
884 |
885 | sort-desc
886 |
887 |
888 |
889 | sort-up
890 |
891 |
892 |
893 | sort-asc
894 |
895 |
896 |
897 | envelope
898 |
899 |
900 |
901 | linkedin
902 |
903 |
904 |
905 | rotate-left
906 |
907 |
908 |
909 | undo
910 |
911 |
912 |
913 | legal
914 |
915 |
916 |
917 | gavel
918 |
919 |
920 |
921 | dashboard
922 |
923 |
924 |
925 | tachometer
926 |
927 |
928 |
929 | comment-o
930 |
931 |
932 |
933 | comments-o
934 |
935 |
936 |
937 | flash
938 |
939 |
940 |
941 | bolt
942 |
943 |
944 |
945 | sitemap
946 |
947 |
948 |
949 | umbrella
950 |
951 |
952 |
953 | paste
954 |
955 |
956 |
957 | clipboard
958 |
959 |
960 |
961 | lightbulb-o
962 |
963 |
964 |
965 | exchange
966 |
967 |
968 |
969 | cloud-download
970 |
971 |
972 |
973 | cloud-upload
974 |
975 |
976 |
977 | user-md
978 |
979 |
980 |
981 | stethoscope
982 |
983 |
984 |
985 | suitcase
986 |
987 |
988 |
989 | bell-o
990 |
991 |
992 |
993 | coffee
994 |
995 |
996 |
997 | cutlery
998 |
999 |
1000 |
1001 | file-text-o
1002 |
1003 |
1004 |
1005 | building-o
1006 |
1007 |
1008 |
1009 | hospital-o
1010 |
1011 |
1012 |
1013 | ambulance
1014 |
1015 |
1016 |
1017 | medkit
1018 |
1019 |
1020 |
1021 | fighter-jet
1022 |
1023 |
1024 |
1025 | beer
1026 |
1027 |
1028 |
1029 | h-square
1030 |
1031 |
1032 |
1033 | plus-square
1034 |
1035 |
1036 |
1037 | angle-double-left
1038 |
1039 |
1040 |
1041 | angle-double-right
1042 |
1043 |
1044 |
1045 | angle-double-up
1046 |
1047 |
1048 |
1049 | angle-double-down
1050 |
1051 |
1052 |
1053 | angle-left
1054 |
1055 |
1056 |
1057 | angle-right
1058 |
1059 |
1060 |
1061 | angle-up
1062 |
1063 |
1064 |
1065 | angle-down
1066 |
1067 |
1068 |
1069 | desktop
1070 |
1071 |
1072 |
1073 | laptop
1074 |
1075 |
1076 |
1077 | tablet
1078 |
1079 |
1080 |
1081 | mobile-phone
1082 |
1083 |
1084 |
1085 | mobile
1086 |
1087 |
1088 |
1089 | circle-o
1090 |
1091 |
1092 |
1093 | quote-left
1094 |
1095 |
1096 |
1097 | quote-right
1098 |
1099 |
1100 |
1101 | spinner
1102 |
1103 |
1104 |
1105 | circle
1106 |
1107 |
1108 |
1109 | mail-reply
1110 |
1111 |
1112 |
1113 | reply
1114 |
1115 |
1116 |
1117 | github-alt
1118 |
1119 |
1120 |
1121 | folder-o
1122 |
1123 |
1124 |
1125 | folder-open-o
1126 |
1127 |
1128 |
1129 | smile-o
1130 |
1131 |
1132 |
1133 | frown-o
1134 |
1135 |
1136 |
1137 | meh-o
1138 |
1139 |
1140 |
1141 | gamepad
1142 |
1143 |
1144 |
1145 | keyboard-o
1146 |
1147 |
1148 |
1149 | flag-o
1150 |
1151 |
1152 |
1153 | flag-checkered
1154 |
1155 |
1156 |
1157 | terminal
1158 |
1159 |
1160 |
1161 | code
1162 |
1163 |
1164 |
1165 | mail-reply-all
1166 |
1167 |
1168 |
1169 | reply-all
1170 |
1171 |
1172 |
1173 | star-half-empty
1174 |
1175 |
1176 |
1177 | star-half-full
1178 |
1179 |
1180 |
1181 | star-half-o
1182 |
1183 |
1184 |
1185 | location-arrow
1186 |
1187 |
1188 |
1189 | crop
1190 |
1191 |
1192 |
1193 | code-fork
1194 |
1195 |
1196 |
1197 | unlink
1198 |
1199 |
1200 |
1201 | chain-broken
1202 |
1203 |
1204 |
1205 | question
1206 |
1207 |
1208 |
1209 | info
1210 |
1211 |
1212 |
1213 | exclamation
1214 |
1215 |
1216 |
1217 | superscript
1218 |
1219 |
1220 |
1221 | subscript
1222 |
1223 |
1224 |
1225 | eraser
1226 |
1227 |
1228 |
1229 | puzzle-piece
1230 |
1231 |
1232 |
1233 | microphone
1234 |
1235 |
1236 |
1237 | microphone-slash
1238 |
1239 |
1240 |
1241 | shield
1242 |
1243 |
1244 |
1245 | calendar-o
1246 |
1247 |
1248 |
1249 | fire-extinguisher
1250 |
1251 |
1252 |
1253 | rocket
1254 |
1255 |
1256 |
1257 | maxcdn
1258 |
1259 |
1260 |
1261 | chevron-circle-left
1262 |
1263 |
1264 |
1265 | chevron-circle-right
1266 |
1267 |
1268 |
1269 | chevron-circle-up
1270 |
1271 |
1272 |
1273 | chevron-circle-down
1274 |
1275 |
1276 |
1277 | html5
1278 |
1279 |
1280 |
1281 | css3
1282 |
1283 |
1284 |
1285 | anchor
1286 |
1287 |
1288 |
1289 | unlock-alt
1290 |
1291 |
1292 |
1293 | bullseye
1294 |
1295 |
1296 |
1297 | ellipsis-h
1298 |
1299 |
1300 |
1301 | ellipsis-v
1302 |
1303 |
1304 |
1305 | rss-square
1306 |
1307 |
1308 |
1309 | play-circle
1310 |
1311 |
1312 |
1313 | ticket
1314 |
1315 |
1316 |
1317 | minus-square
1318 |
1319 |
1320 |
1321 | minus-square-o
1322 |
1323 |
1324 |
1325 | level-up
1326 |
1327 |
1328 |
1329 | level-down
1330 |
1331 |
1332 |
1333 | check-square
1334 |
1335 |
1336 |
1337 | pencil-square
1338 |
1339 |
1340 |
1341 | external-link-square
1342 |
1343 |
1344 |
1345 | share-square
1346 |
1347 |
1348 |
1349 | compass
1350 |
1351 |
1352 |
1353 | toggle-down
1354 |
1355 |
1356 |
1357 | caret-square-o-down
1358 |
1359 |
1360 |
1361 | toggle-up
1362 |
1363 |
1364 |
1365 | caret-square-o-up
1366 |
1367 |
1368 |
1369 | toggle-right
1370 |
1371 |
1372 |
1373 | caret-square-o-right
1374 |
1375 |
1376 |
1377 | euro
1378 |
1379 |
1380 |
1381 | eur
1382 |
1383 |
1384 |
1385 | gbp
1386 |
1387 |
1388 |
1389 | dollar
1390 |
1391 |
1392 |
1393 | usd
1394 |
1395 |
1396 |
1397 | rupee
1398 |
1399 |
1400 |
1401 | inr
1402 |
1403 |
1404 |
1405 | cny
1406 |
1407 |
1408 |
1409 | rmb
1410 |
1411 |
1412 |
1413 | yen
1414 |
1415 |
1416 |
1417 | jpy
1418 |
1419 |
1420 |
1421 | ruble
1422 |
1423 |
1424 |
1425 | rouble
1426 |
1427 |
1428 |
1429 | rub
1430 |
1431 |
1432 |
1433 | won
1434 |
1435 |
1436 |
1437 | krw
1438 |
1439 |
1440 |
1441 | bitcoin
1442 |
1443 |
1444 |
1445 | btc
1446 |
1447 |
1448 |
1449 | file
1450 |
1451 |
1452 |
1453 | file-text
1454 |
1455 |
1456 |
1457 | sort-alpha-asc
1458 |
1459 |
1460 |
1461 | sort-alpha-desc
1462 |
1463 |
1464 |
1465 | sort-amount-asc
1466 |
1467 |
1468 |
1469 | sort-amount-desc
1470 |
1471 |
1472 |
1473 | sort-numeric-asc
1474 |
1475 |
1476 |
1477 | sort-numeric-desc
1478 |
1479 |
1480 |
1481 | thumbs-up
1482 |
1483 |
1484 |
1485 | thumbs-down
1486 |
1487 |
1488 |
1489 | youtube-square
1490 |
1491 |
1492 |
1493 | youtube
1494 |
1495 |
1496 |
1497 | xing
1498 |
1499 |
1500 |
1501 | xing-square
1502 |
1503 |
1504 |
1505 | youtube-play
1506 |
1507 |
1508 |
1509 | dropbox
1510 |
1511 |
1512 |
1513 | stack-overflow
1514 |
1515 |
1516 |
1517 | instagram
1518 |
1519 |
1520 |
1521 | flickr
1522 |
1523 |
1524 |
1525 | adn
1526 |
1527 |
1528 |
1529 | bitbucket
1530 |
1531 |
1532 |
1533 | bitbucket-square
1534 |
1535 |
1536 |
1537 | tumblr
1538 |
1539 |
1540 |
1541 | tumblr-square
1542 |
1543 |
1544 |
1545 | long-arrow-down
1546 |
1547 |
1548 |
1549 | long-arrow-up
1550 |
1551 |
1552 |
1553 | long-arrow-left
1554 |
1555 |
1556 |
1557 | long-arrow-right
1558 |
1559 |
1560 |
1561 | apple
1562 |
1563 |
1564 |
1565 | windows
1566 |
1567 |
1568 |
1569 | android
1570 |
1571 |
1572 |
1573 | linux
1574 |
1575 |
1576 |
1577 | dribbble
1578 |
1579 |
1580 |
1581 | skype
1582 |
1583 |
1584 |
1585 | foursquare
1586 |
1587 |
1588 |
1589 | trello
1590 |
1591 |
1592 |
1593 | female
1594 |
1595 |
1596 |
1597 | male
1598 |
1599 |
1600 |
1601 | gittip
1602 |
1603 |
1604 |
1605 | gratipay
1606 |
1607 |
1608 |
1609 | sun-o
1610 |
1611 |
1612 |
1613 | moon-o
1614 |
1615 |
1616 |
1617 | archive
1618 |
1619 |
1620 |
1621 | bug
1622 |
1623 |
1624 |
1625 | vk
1626 |
1627 |
1628 |
1629 | weibo
1630 |
1631 |
1632 |
1633 | renren
1634 |
1635 |
1636 |
1637 | pagelines
1638 |
1639 |
1640 |
1641 | stack-exchange
1642 |
1643 |
1644 |
1645 | arrow-circle-o-right
1646 |
1647 |
1648 |
1649 | arrow-circle-o-left
1650 |
1651 |
1652 |
1653 | toggle-left
1654 |
1655 |
1656 |
1657 | caret-square-o-left
1658 |
1659 |
1660 |
1661 | dot-circle-o
1662 |
1663 |
1664 |
1665 | wheelchair
1666 |
1667 |
1668 |
1669 | vimeo-square
1670 |
1671 |
1672 |
1673 | turkish-lira
1674 |
1675 |
1676 |
1677 | try
1678 |
1679 |
1680 |
1681 | plus-square-o
1682 |
1683 |
1684 |
1685 | space-shuttle
1686 |
1687 |
1688 |
1689 | slack
1690 |
1691 |
1692 |
1693 | envelope-square
1694 |
1695 |
1696 |
1697 | wordpress
1698 |
1699 |
1700 |
1701 | openid
1702 |
1703 |
1704 |
1705 | institution
1706 |
1707 |
1708 |
1709 | bank
1710 |
1711 |
1712 |
1713 | university
1714 |
1715 |
1716 |
1717 | mortar-board
1718 |
1719 |
1720 |
1721 | graduation-cap
1722 |
1723 |
1724 |
1725 | yahoo
1726 |
1727 |
1728 |
1729 | google
1730 |
1731 |
1732 |
1733 | reddit
1734 |
1735 |
1736 |
1737 | reddit-square
1738 |
1739 |
1740 |
1741 | stumbleupon-circle
1742 |
1743 |
1744 |
1745 | stumbleupon
1746 |
1747 |
1748 |
1749 | delicious
1750 |
1751 |
1752 |
1753 | digg
1754 |
1755 |
1756 |
1757 | pied-piper-pp
1758 |
1759 |
1760 |
1761 | pied-piper-alt
1762 |
1763 |
1764 |
1765 | drupal
1766 |
1767 |
1768 |
1769 | joomla
1770 |
1771 |
1772 |
1773 | language
1774 |
1775 |
1776 |
1777 | fax
1778 |
1779 |
1780 |
1781 | building
1782 |
1783 |
1784 |
1785 | child
1786 |
1787 |
1788 |
1789 | paw
1790 |
1791 |
1792 |
1793 | spoon
1794 |
1795 |
1796 |
1797 | cube
1798 |
1799 |
1800 |
1801 | cubes
1802 |
1803 |
1804 |
1805 | behance
1806 |
1807 |
1808 |
1809 | behance-square
1810 |
1811 |
1812 |
1813 | steam
1814 |
1815 |
1816 |
1817 | steam-square
1818 |
1819 |
1820 |
1821 | recycle
1822 |
1823 |
1824 |
1825 | automobile
1826 |
1827 |
1828 |
1829 | car
1830 |
1831 |
1832 |
1833 | cab
1834 |
1835 |
1836 |
1837 | taxi
1838 |
1839 |
1840 |
1841 | tree
1842 |
1843 |
1844 |
1845 | spotify
1846 |
1847 |
1848 |
1849 | deviantart
1850 |
1851 |
1852 |
1853 | soundcloud
1854 |
1855 |
1856 |
1857 | database
1858 |
1859 |
1860 |
1861 | file-pdf-o
1862 |
1863 |
1864 |
1865 | file-word-o
1866 |
1867 |
1868 |
1869 | file-excel-o
1870 |
1871 |
1872 |
1873 | file-powerpoint-o
1874 |
1875 |
1876 |
1877 | file-photo-o
1878 |
1879 |
1880 |
1881 | file-picture-o
1882 |
1883 |
1884 |
1885 | file-image-o
1886 |
1887 |
1888 |
1889 | file-zip-o
1890 |
1891 |
1892 |
1893 | file-archive-o
1894 |
1895 |
1896 |
1897 | file-sound-o
1898 |
1899 |
1900 |
1901 | file-audio-o
1902 |
1903 |
1904 |
1905 | file-movie-o
1906 |
1907 |
1908 |
1909 | file-video-o
1910 |
1911 |
1912 |
1913 | file-code-o
1914 |
1915 |
1916 |
1917 | vine
1918 |
1919 |
1920 |
1921 | codepen
1922 |
1923 |
1924 |
1925 | jsfiddle
1926 |
1927 |
1928 |
1929 | life-bouy
1930 |
1931 |
1932 |
1933 | life-buoy
1934 |
1935 |
1936 |
1937 | life-saver
1938 |
1939 |
1940 |
1941 | support
1942 |
1943 |
1944 |
1945 | life-ring
1946 |
1947 |
1948 |
1949 | circle-o-notch
1950 |
1951 |
1952 |
1953 | ra
1954 |
1955 |
1956 |
1957 | resistance
1958 |
1959 |
1960 |
1961 | rebel
1962 |
1963 |
1964 |
1965 | ge
1966 |
1967 |
1968 |
1969 | empire
1970 |
1971 |
1972 |
1973 | git-square
1974 |
1975 |
1976 |
1977 | git
1978 |
1979 |
1980 |
1981 | y-combinator-square
1982 |
1983 |
1984 |
1985 | yc-square
1986 |
1987 |
1988 |
1989 | hacker-news
1990 |
1991 |
1992 |
1993 | tencent-weibo
1994 |
1995 |
1996 |
1997 | qq
1998 |
1999 |
2000 |
2001 | wechat
2002 |
2003 |
2004 |
2005 | weixin
2006 |
2007 |
2008 |
2009 | send
2010 |
2011 |
2012 |
2013 | paper-plane
2014 |
2015 |
2016 |
2017 | send-o
2018 |
2019 |
2020 |
2021 | paper-plane-o
2022 |
2023 |
2024 |
2025 | history
2026 |
2027 |
2028 |
2029 | circle-thin
2030 |
2031 |
2032 |
2033 | header
2034 |
2035 |
2036 |
2037 | paragraph
2038 |
2039 |
2040 |
2041 | sliders
2042 |
2043 |
2044 |
2045 | share-alt
2046 |
2047 |
2048 |
2049 | share-alt-square
2050 |
2051 |
2052 |
2053 | bomb
2054 |
2055 |
2056 |
2057 | soccer-ball-o
2058 |
2059 |
2060 |
2061 | futbol-o
2062 |
2063 |
2064 |
2065 | tty
2066 |
2067 |
2068 |
2069 | binoculars
2070 |
2071 |
2072 |
2073 | plug
2074 |
2075 |
2076 |
2077 | slideshare
2078 |
2079 |
2080 |
2081 | twitch
2082 |
2083 |
2084 |
2085 | yelp
2086 |
2087 |
2088 |
2089 | newspaper-o
2090 |
2091 |
2092 |
2093 | wifi
2094 |
2095 |
2096 |
2097 | calculator
2098 |
2099 |
2100 |
2101 | paypal
2102 |
2103 |
2104 |
2105 | google-wallet
2106 |
2107 |
2108 |
2109 | cc-visa
2110 |
2111 |
2112 |
2113 | cc-mastercard
2114 |
2115 |
2116 |
2117 | cc-discover
2118 |
2119 |
2120 |
2121 | cc-amex
2122 |
2123 |
2124 |
2125 | cc-paypal
2126 |
2127 |
2128 |
2129 | cc-stripe
2130 |
2131 |
2132 |
2133 | bell-slash
2134 |
2135 |
2136 |
2137 | bell-slash-o
2138 |
2139 |
2140 |
2141 | trash
2142 |
2143 |
2144 |
2145 | copyright
2146 |
2147 |
2148 |
2149 | at
2150 |
2151 |
2152 |
2153 | eyedropper
2154 |
2155 |
2156 |
2157 | paint-brush
2158 |
2159 |
2160 |
2161 | birthday-cake
2162 |
2163 |
2164 |
2165 | area-chart
2166 |
2167 |
2168 |
2169 | pie-chart
2170 |
2171 |
2172 |
2173 | line-chart
2174 |
2175 |
2176 |
2177 | lastfm
2178 |
2179 |
2180 |
2181 | lastfm-square
2182 |
2183 |
2184 |
2185 | toggle-off
2186 |
2187 |
2188 |
2189 | toggle-on
2190 |
2191 |
2192 |
2193 | bicycle
2194 |
2195 |
2196 |
2197 | bus
2198 |
2199 |
2200 |
2201 | ioxhost
2202 |
2203 |
2204 |
2205 | angellist
2206 |
2207 |
2208 |
2209 | cc
2210 |
2211 |
2212 |
2213 | shekel
2214 |
2215 |
2216 |
2217 | sheqel
2218 |
2219 |
2220 |
2221 | ils
2222 |
2223 |
2224 |
2225 | meanpath
2226 |
2227 |
2228 |
2229 | buysellads
2230 |
2231 |
2232 |
2233 | connectdevelop
2234 |
2235 |
2236 |
2237 | dashcube
2238 |
2239 |
2240 |
2241 | forumbee
2242 |
2243 |
2244 |
2245 | leanpub
2246 |
2247 |
2248 |
2249 | sellsy
2250 |
2251 |
2252 |
2253 | shirtsinbulk
2254 |
2255 |
2256 |
2257 | simplybuilt
2258 |
2259 |
2260 |
2261 | skyatlas
2262 |
2263 |
2264 |
2265 | cart-plus
2266 |
2267 |
2268 |
2269 | cart-arrow-down
2270 |
2271 |
2272 |
2273 | diamond
2274 |
2275 |
2276 |
2277 | ship
2278 |
2279 |
2280 |
2281 | user-secret
2282 |
2283 |
2284 |
2285 | motorcycle
2286 |
2287 |
2288 |
2289 | street-view
2290 |
2291 |
2292 |
2293 | heartbeat
2294 |
2295 |
2296 |
2297 | venus
2298 |
2299 |
2300 |
2301 | mars
2302 |
2303 |
2304 |
2305 | mercury
2306 |
2307 |
2308 |
2309 | intersex
2310 |
2311 |
2312 |
2313 | transgender
2314 |
2315 |
2316 |
2317 | transgender-alt
2318 |
2319 |
2320 |
2321 | venus-double
2322 |
2323 |
2324 |
2325 | mars-double
2326 |
2327 |
2328 |
2329 | venus-mars
2330 |
2331 |
2332 |
2333 | mars-stroke
2334 |
2335 |
2336 |
2337 | mars-stroke-v
2338 |
2339 |
2340 |
2341 | mars-stroke-h
2342 |
2343 |
2344 |
2345 | neuter
2346 |
2347 |
2348 |
2349 | genderless
2350 |
2351 |
2352 |
2353 | facebook-official
2354 |
2355 |
2356 |
2357 | pinterest-p
2358 |
2359 |
2360 |
2361 | whatsapp
2362 |
2363 |
2364 |
2365 | server
2366 |
2367 |
2368 |
2369 | user-plus
2370 |
2371 |
2372 |
2373 | user-times
2374 |
2375 |
2376 |
2377 | hotel
2378 |
2379 |
2380 |
2381 | bed
2382 |
2383 |
2384 |
2385 | viacoin
2386 |
2387 |
2388 |
2389 | train
2390 |
2391 |
2392 |
2393 | subway
2394 |
2395 |
2396 |
2397 | medium
2398 |
2399 |
2400 |
2401 | yc
2402 |
2403 |
2404 |
2405 | y-combinator
2406 |
2407 |
2408 |
2409 | optin-monster
2410 |
2411 |
2412 |
2413 | opencart
2414 |
2415 |
2416 |
2417 | expeditedssl
2418 |
2419 |
2420 |
2421 | battery-4
2422 |
2423 |
2424 |
2425 | battery-full
2426 |
2427 |
2428 |
2429 | battery-3
2430 |
2431 |
2432 |
2433 | battery-three-quarters
2434 |
2435 |
2436 |
2437 | battery-2
2438 |
2439 |
2440 |
2441 | battery-half
2442 |
2443 |
2444 |
2445 | battery-1
2446 |
2447 |
2448 |
2449 | battery-quarter
2450 |
2451 |
2452 |
2453 | battery-0
2454 |
2455 |
2456 |
2457 | battery-empty
2458 |
2459 |
2460 |
2461 | mouse-pointer
2462 |
2463 |
2464 |
2465 | i-cursor
2466 |
2467 |
2468 |
2469 | object-group
2470 |
2471 |
2472 |
2473 | object-ungroup
2474 |
2475 |
2476 |
2477 | sticky-note
2478 |
2479 |
2480 |
2481 | sticky-note-o
2482 |
2483 |
2484 |
2485 | cc-jcb
2486 |
2487 |
2488 |
2489 | cc-diners-club
2490 |
2491 |
2492 |
2493 | clone
2494 |
2495 |
2496 |
2497 | balance-scale
2498 |
2499 |
2500 |
2501 | hourglass-o
2502 |
2503 |
2504 |
2505 | hourglass-1
2506 |
2507 |
2508 |
2509 | hourglass-start
2510 |
2511 |
2512 |
2513 | hourglass-2
2514 |
2515 |
2516 |
2517 | hourglass-half
2518 |
2519 |
2520 |
2521 | hourglass-3
2522 |
2523 |
2524 |
2525 | hourglass-end
2526 |
2527 |
2528 |
2529 | hourglass
2530 |
2531 |
2532 |
2533 | hand-grab-o
2534 |
2535 |
2536 |
2537 | hand-rock-o
2538 |
2539 |
2540 |
2541 | hand-stop-o
2542 |
2543 |
2544 |
2545 | hand-paper-o
2546 |
2547 |
2548 |
2549 | hand-scissors-o
2550 |
2551 |
2552 |
2553 | hand-lizard-o
2554 |
2555 |
2556 |
2557 | hand-spock-o
2558 |
2559 |
2560 |
2561 | hand-pointer-o
2562 |
2563 |
2564 |
2565 | hand-peace-o
2566 |
2567 |
2568 |
2569 | trademark
2570 |
2571 |
2572 |
2573 | registered
2574 |
2575 |
2576 |
2577 | creative-commons
2578 |
2579 |
2580 |
2581 | gg
2582 |
2583 |
2584 |
2585 | gg-circle
2586 |
2587 |
2588 |
2589 | tripadvisor
2590 |
2591 |
2592 |
2593 | odnoklassniki
2594 |
2595 |
2596 |
2597 | odnoklassniki-square
2598 |
2599 |
2600 |
2601 | get-pocket
2602 |
2603 |
2604 |
2605 | wikipedia-w
2606 |
2607 |
2608 |
2609 | safari
2610 |
2611 |
2612 |
2613 | chrome
2614 |
2615 |
2616 |
2617 | firefox
2618 |
2619 |
2620 |
2621 | opera
2622 |
2623 |
2624 |
2625 | internet-explorer
2626 |
2627 |
2628 |
2629 | tv
2630 |
2631 |
2632 |
2633 | television
2634 |
2635 |
2636 |
2637 | contao
2638 |
2639 |
2640 |
2641 | 500px
2642 |
2643 |
2644 |
2645 | amazon
2646 |
2647 |
2648 |
2649 | calendar-plus-o
2650 |
2651 |
2652 |
2653 | calendar-minus-o
2654 |
2655 |
2656 |
2657 | calendar-times-o
2658 |
2659 |
2660 |
2661 | calendar-check-o
2662 |
2663 |
2664 |
2665 | industry
2666 |
2667 |
2668 |
2669 | map-pin
2670 |
2671 |
2672 |
2673 | map-signs
2674 |
2675 |
2676 |
2677 | map-o
2678 |
2679 |
2680 |
2681 | map
2682 |
2683 |
2684 |
2685 | commenting
2686 |
2687 |
2688 |
2689 | commenting-o
2690 |
2691 |
2692 |
2693 | houzz
2694 |
2695 |
2696 |
2697 | vimeo
2698 |
2699 |
2700 |
2701 | black-tie
2702 |
2703 |
2704 |
2705 | fonticons
2706 |
2707 |
2708 |
2709 | reddit-alien
2710 |
2711 |
2712 |
2713 | edge
2714 |
2715 |
2716 |
2717 | credit-card-alt
2718 |
2719 |
2720 |
2721 | codiepie
2722 |
2723 |
2724 |
2725 | modx
2726 |
2727 |
2728 |
2729 | fort-awesome
2730 |
2731 |
2732 |
2733 | usb
2734 |
2735 |
2736 |
2737 | product-hunt
2738 |
2739 |
2740 |
2741 | mixcloud
2742 |
2743 |
2744 |
2745 | scribd
2746 |
2747 |
2748 |
2749 | pause-circle
2750 |
2751 |
2752 |
2753 | pause-circle-o
2754 |
2755 |
2756 |
2757 | stop-circle
2758 |
2759 |
2760 |
2761 | stop-circle-o
2762 |
2763 |
2764 |
2765 | shopping-bag
2766 |
2767 |
2768 |
2769 | shopping-basket
2770 |
2771 |
2772 |
2773 | hashtag
2774 |
2775 |
2776 |
2777 | bluetooth
2778 |
2779 |
2780 |
2781 | bluetooth-b
2782 |
2783 |
2784 |
2785 | percent
2786 |
2787 |
2788 |
2789 | gitlab
2790 |
2791 |
2792 |
2793 | wpbeginner
2794 |
2795 |
2796 |
2797 | wpforms
2798 |
2799 |
2800 |
2801 | envira
2802 |
2803 |
2804 |
2805 | universal-access
2806 |
2807 |
2808 |
2809 | wheelchair-alt
2810 |
2811 |
2812 |
2813 | question-circle-o
2814 |
2815 |
2816 |
2817 | blind
2818 |
2819 |
2820 |
2821 | audio-description
2822 |
2823 |
2824 |
2825 | volume-control-phone
2826 |
2827 |
2828 |
2829 | braille
2830 |
2831 |
2832 |
2833 | assistive-listening-systems
2834 |
2835 |
2836 |
2837 | asl-interpreting
2838 |
2839 |
2840 |
2841 | american-sign-language-interpreting
2842 |
2843 |
2844 |
2845 | deafness
2846 |
2847 |
2848 |
2849 | hard-of-hearing
2850 |
2851 |
2852 |
2853 | deaf
2854 |
2855 |
2856 |
2857 | glide
2858 |
2859 |
2860 |
2861 | glide-g
2862 |
2863 |
2864 |
2865 | signing
2866 |
2867 |
2868 |
2869 | sign-language
2870 |
2871 |
2872 |
2873 | low-vision
2874 |
2875 |
2876 |
2877 | viadeo
2878 |
2879 |
2880 |
2881 | viadeo-square
2882 |
2883 |
2884 |
2885 | snapchat
2886 |
2887 |
2888 |
2889 | snapchat-ghost
2890 |
2891 |
2892 |
2893 | snapchat-square
2894 |
2895 |
2896 |
2897 | pied-piper
2898 |
2899 |
2900 |
2901 | first-order
2902 |
2903 |
2904 |
2905 | yoast
2906 |
2907 |
2908 |
2909 | themeisle
2910 |
2911 |
2912 |
2913 | google-plus-circle
2914 |
2915 |
2916 |
2917 | google-plus-official
2918 |
2919 |
2920 |
2921 | fa
2922 |
2923 |
2924 |
2925 | font-awesome
2926 |
2927 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/Media Objects/default.html:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/Media Objects/list.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/Navigation/1.Navbar.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
15 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/Navigation/2.Tabs.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/Navigation/3.Justified-Tabs.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/Navigation/4.Pills.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/Navigation/5.Stacked-Pills.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/Navigation/6.Dropdown-Tabs.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/Pagination/1.default.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/Pagination/2.large.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/Pagination/3.small.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/breadcrumbs.html:
--------------------------------------------------------------------------------
1 |
2 | Home
3 | Library
4 | Data
5 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/list-groups.html:
--------------------------------------------------------------------------------
1 |
2 | Simple item
3 | Item with badge 5
4 | Active item
5 | Success
6 | Info
7 | Warning
8 | Danger
9 |
10 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/pager.html:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/progress-bars.html:
--------------------------------------------------------------------------------
1 | Basic
2 |
3 |
5 | 60% Complete
6 |
7 |
8 |
14 | Contextual Alternatives
15 |
16 |
18 | 40% Complete (success)
19 |
20 |
21 |
22 |
24 | 20% Complete
25 |
26 |
27 |
28 |
30 | 60% Complete (warning)
31 |
32 |
33 |
34 |
36 | 80% Complete
37 |
38 |
39 | Striped
40 |
41 |
43 | 40% Complete (success)
44 |
45 |
46 |
47 |
49 | 20% Complete
50 |
51 |
52 |
53 |
55 | 60% Complete (warning)
56 |
57 |
58 |
59 |
61 | 80% Complete (danger)
62 |
63 |
64 | Animated
65 |
66 |
68 | 45% Complete
69 |
70 |
71 | Stacked
72 |
73 |
74 | 35% Complete (success)
75 |
76 |
77 | 20% Complete (warning)
78 |
79 |
80 | 10% Complete (danger)
81 |
82 |
--------------------------------------------------------------------------------
/demo/src/templates/2.components/thumbnails.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "component-library",
3 | "description": "An easy way to create HTML styleguide for your project.",
4 | "author": "Dima Snisarenko ",
5 | "license": "MIT",
6 | "repository": {
7 | "type": "git",
8 | "url": "https://github.com/sneas/component-library.git"
9 | },
10 | "keywords": [
11 | "ui",
12 | "component-library",
13 | "styleguide"
14 | ],
15 | "main": "dist/index.js",
16 | "scripts": {
17 | "commit": "git-cz",
18 | "test": "mocha src/**/*.test.js --compilers js:babel-register",
19 | "posttest": "rimraf **/_tmp",
20 | "prebuild": "rimraf dist",
21 | "build": "babel --out-dir dist --ignore __tests__,*.test.js src --copy-files",
22 | "build:watch": "watch 'npm run build' src sass",
23 | "precompile-demo": "npm run build",
24 | "compile-demo": "gulp --gulpfile demo/gulpfile.js compile",
25 | "predemo": "npm run compile-demo",
26 | "demo": "ws -d ./demo/public -c",
27 | "semantic-release": "semantic-release pre && npm publish && semantic-release post",
28 | "prepublish-demo": "npm run compile-demo",
29 | "publish-demo": "gh-pages -d demo/public/component-library"
30 | },
31 | "dependencies": {
32 | "bootstrap-sass-namespace": "3.3.7-alpha.6",
33 | "cheerio": "^0.22.0",
34 | "copy-dir": "0.3.0",
35 | "directory-tree": "^1.0.0",
36 | "font-awesome": "^4.6.3",
37 | "highlight.js": "9.9.0",
38 | "jquery": "^3.2.1",
39 | "lodash": "^4.13.1",
40 | "node-modules-resolve": "^1.3.0",
41 | "npm-sass": "^1.3.0",
42 | "nunjucks": "3.0.0",
43 | "smartmenus-namespace": "1.0.1-alpha.5",
44 | "writefile": "^0.2.8"
45 | },
46 | "devDependencies": {
47 | "babel-cli": "6.18.0",
48 | "babel-core": "6.18.2",
49 | "babel-preset-es2015": "6.18.0",
50 | "babel-preset-stage-2": "6.18.0",
51 | "babel-register": "6.18.0",
52 | "chai": "3.5.0",
53 | "chai-fs": "1.0.0",
54 | "cheerio": "0.22.0",
55 | "commitizen": "2.8.6",
56 | "cz-conventional-changelog": "1.2.0",
57 | "gh-pages": "0.12.0",
58 | "ghooks": "1.3.2",
59 | "gulp": "^3.9.1",
60 | "gulp-clean": "^0.3.2",
61 | "local-web-server": "^1.2.6",
62 | "mocha": "3.1.2",
63 | "rimraf": "2.5.4",
64 | "semantic-release": "^6.3.2",
65 | "watch": "1.0.1"
66 | },
67 | "config": {
68 | "ghooks": {
69 | "pre-commit": "npm run test"
70 | },
71 | "commitizen": {
72 | "path": "node_modules/cz-conventional-changelog"
73 | }
74 | },
75 | "babel": {
76 | "presets": [
77 | "es2015",
78 | "stage-2"
79 | ]
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/sass/_components.scss:
--------------------------------------------------------------------------------
1 | @import "components/palette";
2 | @import "components/icon-list";
--------------------------------------------------------------------------------
/sass/_init.scss:
--------------------------------------------------------------------------------
1 | // Initialize Bootstrap
2 | @import "bootstrap/variables";
3 | @import "bootstrap-sass-namespace/assets/stylesheets/_bootstrap.scss";
4 | @import "bootstrap/theme";
5 |
6 | // Initialize highlight.js
7 | .cl {
8 | @import "highlight.js/styles/github";
9 | }
10 |
11 | // Initialize Smartmenus
12 | @import "smartmenus-namespace/dist/addons/bootstrap/jquery.smartmenus.bootstrap";
13 |
14 | // Initialize Font Awesome
15 | $fa-font-path: "../fonts" !default;
16 | $fa-css-prefix: cl-fa !default;
17 | @import "font-awesome/scss/font-awesome";
--------------------------------------------------------------------------------
/sass/_tree.scss:
--------------------------------------------------------------------------------
1 | .cl-node {
2 | $anchor-offset: $navbar-height + 50px;
3 |
4 | padding-top:$anchor-offset;
5 | margin-top:-$anchor-offset;
6 | }
7 |
8 | .cl-node-level-1 {
9 | .cl-node-subtree {
10 | padding: 10px;
11 | border-top: 1px dotted #eaeaea;
12 | border-left: 2px solid transparent;
13 |
14 | &:hover {
15 | border-left: 2px solid #eaeaea;
16 | }
17 | }
18 | }
19 |
20 | .cl-node-temaplate-code {
21 | margin-top: 10px;
22 |
23 | .cl-node-template-code-content {
24 | margin-top: 10px;
25 | display: none;
26 |
27 | &[cl-visible] {
28 | display: block;
29 | }
30 | }
31 | }
32 |
33 | .cl-node-header {
34 | .cl-node-header-link {
35 | margin-left: 0.5em;
36 | color: $headings-color !important;
37 | font-weight: normal !important;
38 | visibility: hidden;
39 | }
40 |
41 | &:hover {
42 | .cl-node-header-link {
43 | visibility: visible;
44 | }
45 | }
46 | }
--------------------------------------------------------------------------------
/sass/bootstrap/_theme.scss:
--------------------------------------------------------------------------------
1 | .#{$class-prefix}-navbar-inverse {
2 | background-image: none;
3 | }
4 |
5 | .#{$class-prefix}-dropdown-menu > .#{$class-prefix}-html-li > .#{$class-prefix}-html-a:hover,
6 | .#{$class-prefix}-dropdown-menu > .#{$class-prefix}-html-li > .#{$class-prefix}-html-a:focus {
7 | background-image: none;
8 | outline: none;
9 | }
10 |
11 | .#{$class-prefix}-navbar-toggle {
12 | @include navbar-vertical-align(30px);
13 | margin-top: 0;
14 | margin-bottom: 0;
15 | }
16 |
17 | .#{$class-prefix}-navbar-nav {
18 | @media (min-width: $grid-float-breakpoint) {
19 | margin-left: -30px;
20 | }
21 | }
22 |
23 | .#{$class-prefix}-navbar-form {
24 | padding-right: 0px;
25 | }
26 |
27 | .#{$class-prefix}-nav .#{$class-prefix}-open > .#{$class-prefix}-html-a,
28 | .#{$class-prefix}-nav .#{$class-prefix}-open > .#{$class-prefix}-html-a:hover,
29 | .#{$class-prefix}-nav .#{$class-prefix}-open > .#{$class-prefix}-html-a:focus {
30 | @media (max-width: $grid-float-breakpoint) {
31 | background-color: transparent;
32 | border-color: transparent;
33 | }
34 | }
35 |
36 | .cl-navbar-placeholder {
37 | min-height: $navbar-height;
38 | }
39 |
40 | .cl-search-menu {
41 | left: auto;
42 | right: 0;
43 | }
--------------------------------------------------------------------------------
/sass/bootstrap/_variables.scss:
--------------------------------------------------------------------------------
1 | $border-radius-base: 0px;
2 | $navbar-inverse-bg: #333333;
3 | $padding-base-vertical: 0px;
4 | $navbar-padding-vertical: 5px;
5 | $navbar-height: 30px;
6 | $class-prefix: cl-bs;
7 | @import "bootstrap-sass-namespace/assets/stylesheets/bootstrap/_variables.scss";
--------------------------------------------------------------------------------
/sass/cl.scss:
--------------------------------------------------------------------------------
1 | @import "init";
2 | @import "tree";
3 | @import "components";
--------------------------------------------------------------------------------
/sass/components/_icon-list.scss:
--------------------------------------------------------------------------------
1 | .cl-icon-list {
2 | list-style: none;
3 | padding: 0;
4 | @include clearfix;
5 |
6 |
7 | >li {
8 | float: left;
9 | width: 25%;
10 | height: 115px;
11 | padding: 10px;
12 | font-size: 10px;
13 | line-height: 1.4;
14 | text-align: center;
15 | background-color: #f9f9f9;
16 | border: 1px solid #fff;
17 |
18 | @media (min-width: $screen-sm-min) {
19 | width: 12.5%;
20 | font-size: 12px;
21 | }
22 |
23 | >span:first-child {
24 | font-size: 24px;
25 | margin-bottom: 10px;
26 | }
27 |
28 | >span:last-child {
29 | display: block;
30 | word-wrap: break-word;
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/sass/components/_palette.scss:
--------------------------------------------------------------------------------
1 | $color-border-radius: 5px !default;
2 |
3 | .cl-palette {
4 | @extend .cl;
5 |
6 | $media-screen-padding: 5px;
7 |
8 | padding: 0;
9 | list-style: none;
10 | text-align: center;
11 |
12 | @media (min-width: $screen-md-min) {
13 | margin-left: -$media-screen-padding;
14 | margin-right: -$media-screen-padding;
15 | li {
16 | display: table-cell;
17 | vertical-align: top;
18 | width: 1%;
19 | padding: 0 $media-screen-padding;
20 | }
21 | }
22 |
23 | li {
24 | color: #fff;
25 | }
26 |
27 | h3 {
28 | color: #333;
29 | font-size: 14px;
30 | font-weight: 600;
31 | margin: 20px 0 10px 0;
32 | }
33 |
34 | .color {
35 | height: 120px;
36 | padding-top: 1.5em;
37 |
38 | &:first-of-type {
39 | border-top-left-radius: $color-border-radius;
40 | border-top-right-radius: $color-border-radius;
41 | }
42 |
43 | &:last-of-type {
44 | border-bottom-right-radius: $color-border-radius;
45 | border-bottom-left-radius: $color-border-radius;
46 | }
47 | }
48 | }
--------------------------------------------------------------------------------
/src/assemblers/__tests__/assets.test.js:
--------------------------------------------------------------------------------
1 | import chai, {expect} from 'chai';
2 | import chaiFs from 'chai-fs';
3 | import assembleAssets from '../assets.js';
4 | import path from 'path';
5 |
6 | chai.use(chaiFs);
7 |
8 | describe('assets assembler', function() {
9 | it('should assemble assets', function(done) {
10 | const outputDir = path.join(__dirname, 'assets/_tmp/asserts');
11 | assembleAssets(path.join(__dirname, 'assets/input'),
12 | path.join(__dirname, 'assets/_tmp/asserts'))
13 | .then(function() {
14 | expect(outputDir).to.be.directory('Assets output directory has been created');
15 | expect(path.join(outputDir, 'test-asset.txt')).to.be.file('Root file has been created');
16 | expect(path.join(outputDir, 'folder/another-asset.txt')).to.be.file('Dir file has been created');
17 |
18 | done();
19 | });
20 | });
21 | });
--------------------------------------------------------------------------------
/src/assemblers/__tests__/assets/input/folder/another-asset.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sneas/component-library/7288be445f7d09612a1801fed563b9e3e4aae861/src/assemblers/__tests__/assets/input/folder/another-asset.txt
--------------------------------------------------------------------------------
/src/assemblers/__tests__/assets/input/test-asset.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sneas/component-library/7288be445f7d09612a1801fed563b9e3e4aae861/src/assemblers/__tests__/assets/input/test-asset.txt
--------------------------------------------------------------------------------
/src/assemblers/__tests__/sass.test.js:
--------------------------------------------------------------------------------
1 | import chai, {expect} from 'chai';
2 | import chaiFs from 'chai-fs';
3 | import assembleSass from '../sass.js';
4 | import path from 'path';
5 |
6 | chai.use(chaiFs);
7 |
8 | describe('sass assembler', function() {
9 | it('should successfully assemble sass', function(done) {
10 | const output = path.resolve(__dirname, 'sass/_tmp/good.scss');
11 | assembleSass(path.resolve(__dirname, 'sass/input/good.scss'), output)
12 | .then(function() {
13 | expect(output).to.be.file('Valid SCSS file has been compile');
14 | done();
15 | });
16 | });
17 |
18 | it('should not assemble sass', function(done) {
19 | const output = path.resolve(__dirname, 'sass/_tmp/bad.scss');
20 | assembleSass(path.resolve(__dirname, 'sass/input/bad.scss'), output)
21 | .catch(function() {
22 | expect(output).to.not.be.a.path('Erroneous SCSS file has not been compiled. Promise rejected');
23 | done();
24 | });
25 | });
26 | });
--------------------------------------------------------------------------------
/src/assemblers/__tests__/sass/input/bad.scss:
--------------------------------------------------------------------------------
1 | // With this bad SCSS file we're testing failed CSS generation
2 |
3 | @import 'unexisting';
--------------------------------------------------------------------------------
/src/assemblers/__tests__/sass/input/good.scss:
--------------------------------------------------------------------------------
1 | // With this good SCSS file we're testing successful CSS generation
2 |
3 | html {
4 | a {
5 | color: Red;
6 | }
7 | }
--------------------------------------------------------------------------------
/src/assemblers/__tests__/templates.test.js:
--------------------------------------------------------------------------------
1 | import chai, {expect} from 'chai';
2 | import chaiFs from 'chai-fs';
3 | import assembleTemplates from '../templates.js';
4 | import path from 'path';
5 | import cheerio from 'cheerio';
6 | import fs from 'fs';
7 |
8 | chai.use(chaiFs);
9 |
10 | describe('templates assembler', function() {
11 | it('should successfully assemble templates', function(done) {
12 | const inputDir = path.join(__dirname, 'templates/input');
13 | const outputDir = path.join(__dirname, 'templates/_tmp/output');
14 | assembleTemplates(inputDir, outputDir).then(function() {
15 | const overviewFile = path.join(outputDir, 'index.html');
16 | expect(outputDir).to.be.directory('Output templates dir has been created');
17 | expect(overviewFile).to.be.file('Overview file has been generated');
18 |
19 | const $ = cheerio.load(fs.readFileSync(overviewFile, 'utf8'), {
20 | normalizeWhitespace: true
21 | });
22 | expect($('.cl-node-header.cl-bs-html-h1').text().trim()).to.be.equal('Overview');
23 | done();
24 | });
25 | });
26 |
27 | it('should set custom overview lable', function(done) {
28 | const inputDir = path.join(__dirname, 'templates/input');
29 | const outputDir = path.join(__dirname, 'templates/_tmp/output');
30 | assembleTemplates(inputDir, outputDir, {
31 | overview: 'Outline'
32 | }).then(function() {
33 | const overviewFile = path.join(outputDir, 'index.html');
34 | const $ = cheerio.load(fs.readFileSync(overviewFile, 'utf8'), {
35 | normalizeWhitespace: true
36 | });
37 | expect($('.cl-node-header.cl-bs-html-h1').text().trim()).to.be.equal('Outline');
38 | expect($('#cl-search').attr('placeholder')).to.be.equal('Search');
39 | done();
40 | });
41 | });
42 |
43 | it('should set custom search placeholder', function(done) {
44 | const inputDir = path.join(__dirname, 'templates/input');
45 | const outputDir = path.join(__dirname, 'templates/_tmp/output');
46 | assembleTemplates(inputDir, outputDir, {
47 | search: 'Find'
48 | }).then(function() {
49 | const overviewFile = path.join(outputDir, 'index.html');
50 | const $ = cheerio.load(fs.readFileSync(overviewFile, 'utf8'), {
51 | normalizeWhitespace: true
52 | });
53 | expect($('#cl-search').attr('placeholder')).to.be.equal('Find');
54 | done();
55 | });
56 | });
57 |
58 | it('should create search menu', function(done) {
59 | const inputDir = path.join(__dirname, 'templates/input');
60 | const outputDir = path.join(__dirname, 'templates/_tmp/output');
61 | assembleTemplates(inputDir, outputDir).then(function() {
62 | const overviewFile = path.join(outputDir, 'index.html');
63 | const $ = cheerio.load(fs.readFileSync(overviewFile, 'utf8'), {
64 | normalizeWhitespace: true
65 | });
66 | expect($('.cl-search-menu').find('li:nth-child(1) .cl-js-not-search-in').text().trim()).to.be.equal('');
67 | expect($('.cl-search-menu').find('li:nth-child(1) .cl-js-search-in').text().trim()).to.be.equal('Overview');
68 |
69 | expect($('.cl-search-menu').find('li:nth-child(2) .cl-js-not-search-in').text().trim()).to.be.equal('');
70 | expect($('.cl-search-menu').find('li:nth-child(2) .cl-js-search-in').text().trim()).to.be.equal('Atoms');
71 |
72 | expect($('.cl-search-menu').find('li:nth-child(3) .cl-js-not-search-in').text().trim()).to.be.equal('Atoms →');
73 | expect($('.cl-search-menu').find('li:nth-child(3) .cl-js-search-in').text().trim()).to.be.equal('Colors');
74 |
75 | expect($('.cl-search-menu').find('li:nth-child(4) .cl-js-not-search-in').text().trim()).to.be.equal('Atoms → Colors →');
76 | expect($('.cl-search-menu').find('li:nth-child(4) .cl-js-search-in').text().trim()).to.be.equal('Palette');
77 |
78 | expect($('.cl-search-menu').find('li:nth-child(5) .cl-js-not-search-in').text().trim()).to.be.equal('Atoms → Colors →');
79 | expect($('.cl-search-menu').find('li:nth-child(5) .cl-js-search-in').text().trim()).to.be.equal('Color classes');
80 |
81 | expect($('.cl-search-menu').find('li:nth-child(6) .cl-js-not-search-in').text().trim()).to.be.equal('Atoms → Colors →');
82 | expect($('.cl-search-menu').find('li:nth-child(6) .cl-js-search-in').text().trim()).to.be.equal('Background utilities');
83 |
84 | expect($('.cl-search-menu').find('li:nth-child(7) .cl-js-not-search-in').text().trim()).to.be.equal('Atoms →');
85 | expect($('.cl-search-menu').find('li:nth-child(7) .cl-js-search-in').text().trim()).to.be.equal('Alerts');
86 |
87 | expect($('.cl-search-menu').find('li:nth-child(8) .cl-js-not-search-in').text().trim()).to.be.equal('');
88 | expect($('.cl-search-menu').find('li:nth-child(8) .cl-js-search-in').text().trim()).to.be.equal('Molecules');
89 |
90 | expect($('.cl-search-menu').find('li:nth-child(9) .cl-js-not-search-in').text().trim()).to.be.equal('Molecules →');
91 | expect($('.cl-search-menu').find('li:nth-child(9) .cl-js-search-in').text().trim()).to.be.equal('Breadcrumbs');
92 |
93 | done();
94 | });
95 | });
96 | });
--------------------------------------------------------------------------------
/src/assemblers/__tests__/templates/input/1.atoms/1.Colors/1.palette.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Primary
4 | #428BCA
5 | #3874A9
6 |
7 |
8 | Success
9 | #5CB85C
10 | #4D984D
11 |
12 |
13 | Info
14 | #5BC0DE
15 | #59A4C4
16 |
17 |
18 | Warning
19 | #F0AD4E
20 | #BA8540
21 |
22 |
23 | Danger
24 | #D9534F
25 | #B04341
26 |
27 |
--------------------------------------------------------------------------------
/src/assemblers/__tests__/templates/input/1.atoms/1.Colors/3.color-classes.html:
--------------------------------------------------------------------------------
1 | Muted text
2 | Primary text
3 | Info text
4 | Success text
5 | Danger text
6 | Warning text
--------------------------------------------------------------------------------
/src/assemblers/__tests__/templates/input/1.atoms/1.Colors/4.background-utilities.html:
--------------------------------------------------------------------------------
1 | Primary Background
2 | Info Background
3 | Success Background
4 | Danger Background
5 | Warning Background
--------------------------------------------------------------------------------
/src/assemblers/__tests__/templates/input/1.atoms/alerts.html:
--------------------------------------------------------------------------------
1 |
2 | Warning Message! Lorem ipsum dolor sit amet, consectetur adipisicing elit.
3 |
4 |
5 | Error Message! Numquam quos fuga quam suscipit sapiente perferendis magnam.
6 |
7 |
8 | Success Message! Totam officiis dolorum voluptatibus maxime molestiae iste.
9 |
10 |
11 | Info Message! Consequatur facere deleniti cumque ducimus maiores nemo.
12 |
--------------------------------------------------------------------------------
/src/assemblers/__tests__/templates/input/2.molecules/breadcrumbs.html:
--------------------------------------------------------------------------------
1 |
2 | Home
3 | Library
4 | Data
5 |
--------------------------------------------------------------------------------
/src/assemblers/__tests__/templates/input/2.molecules/pagination/1.default.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assemblers/__tests__/templates/input/2.molecules/pagination/2.large.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assemblers/__tests__/templates/input/2.molecules/pagination/3.small.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assemblers/__tests__/templates/input/3.organisms.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Home
4 | Library
5 | Data
6 |
7 |
8 |
Data
9 |
10 |
11 | Lorem ipsum dolor sit amet.
12 |
13 |
--------------------------------------------------------------------------------
/src/assemblers/assets.js:
--------------------------------------------------------------------------------
1 | import copyDir from 'copy-dir';
2 |
3 | export default function(inputDir, outputDir) {
4 | return new Promise(function(resolve) {
5 | copyDir(inputDir, outputDir, function(err) {
6 | if (err) {
7 | throw err;
8 | }
9 |
10 | resolve();
11 | });
12 | });
13 | }
--------------------------------------------------------------------------------
/src/assemblers/sass.js:
--------------------------------------------------------------------------------
1 | import sass from 'npm-sass';
2 | import writefile from 'writefile';
3 |
4 | export default function(input, output) {
5 | return new Promise(function(resolve, reject) {
6 | sass(input, function (err, result) {
7 | if (err) {
8 | reject(err);
9 | } else {
10 | writefile(output, result.css, function() {
11 | resolve();
12 | });
13 | }
14 | })
15 | });
16 | }
--------------------------------------------------------------------------------
/src/assemblers/templates.js:
--------------------------------------------------------------------------------
1 | import _ from 'lodash';
2 | import fs from 'fs';
3 | import dirTree from 'directory-tree';
4 | import path from 'path';
5 | import writefile from 'writefile';
6 | import nunjucks from 'nunjucks';
7 | import hljs from 'highlight.js';
8 | import cheerio from 'cheerio';
9 |
10 | let nunjucksEnv;
11 |
12 | function refineTree(item, rootDir) {
13 | //Remove firsts numbers and extensions
14 | var prettyName = item.name.replace(/^\d+\./, '').split('.').shift().replace('-', ' ');
15 | item.name = _.capitalize(prettyName);
16 | item.relativePath = path.relative(rootDir, item.path);
17 |
18 | if (item.children) {
19 | item.relativePath += (item.relativePath ? '/' : '') + 'index.html';
20 | }
21 |
22 | _.each(item.children, function(child) {
23 | refineTree(child, rootDir)
24 | });
25 | }
26 |
27 | function compileTree(item, outputDir, tree, options = {}) {
28 | var outputPath = path.resolve(outputDir, item.relativePath);
29 |
30 | const renderers = [];
31 |
32 | if (item.children) {
33 | _.each(item.children, function(child) {
34 | renderers.push(compileTree(child, outputDir, tree, options));
35 | });
36 | }
37 |
38 | renderers.push(
39 | new Promise(function(resolve, reject) {
40 | const params = _.extend({}, options, {
41 | tree: tree,
42 | current: item
43 | });
44 |
45 | const navigationHtml = nunjucksEnv.render('navigation.njk', params);
46 | const contentHtml = nunjucksEnv.render('content.njk', params);
47 | nunjucksEnv.opts.autoescape = false;
48 | const layoutHtml = nunjucksEnv.render(options.layout, {content: contentHtml});
49 | nunjucksEnv.opts.autoescape = true;
50 |
51 | const $ = cheerio.load(layoutHtml, {
52 | decodeEntities: false
53 | });
54 | const head = $('head');
55 | const body = $('body');
56 |
57 | head.prepend(nunjucksEnv.render('css.njk', params));
58 |
59 | if (head.find('title').length === 0) {
60 | head.prepend($(' ').text(options.title));
61 | }
62 |
63 | _.forEach(options.css, function(cssLink) {
64 | head.append($(' ').attr('href', cssLink));
65 | });
66 |
67 | if (head.find('meta[charset]').length === 0) {
68 | head.prepend(' ');
69 | }
70 |
71 | if (head.find('link[rel=icon]').length === 0) {
72 | head.append($(' ').attr('href', options.favicon.href)
73 | .attr('rel', options.favicon.rel)
74 | .attr('type', options.favicon.type));
75 | }
76 |
77 | body.prepend(navigationHtml);
78 | body.append(nunjucks.render('js.njk', params));
79 |
80 | _.forEach(options.js, function(jsLink) {
81 | body.append($('').attr('src', jsLink));
82 | });
83 |
84 | writefile(outputPath, $.html(), function() {
85 | resolve();
86 | });
87 | })
88 | );
89 |
90 | return Promise.all(renderers);
91 | }
92 |
93 | export default function(inputDir, outputDir, options = {}) {
94 | options = _.defaults({}, options, {
95 | baseUrl: '/',
96 | title: 'Component Library',
97 | overview: 'Overview',
98 | search: 'Search',
99 | js: [],
100 | css: [],
101 | layout: path.join(__dirname, 'views/layout.njk'),
102 | favicon: {
103 | href: options.baseUrl + 'assets_/assets/favicons/favicon-32x32.png',
104 | rel: 'icon',
105 | type: 'image/component-library/favicons/png'
106 | }
107 | });
108 |
109 | nunjucksEnv = (new nunjucks.configure([path.join(__dirname, 'views'), '']))
110 | .addFilter('template', path => fs.readFileSync(path).toString())
111 | .addFilter('highlight', code => hljs.highlight('htmlbars', code, true, false).value);
112 |
113 | const patternsTree = dirTree(inputDir);
114 | patternsTree.name = options.overview;
115 | refineTree(patternsTree, inputDir);
116 |
117 | return compileTree(patternsTree, outputDir, patternsTree, options);
118 | }
--------------------------------------------------------------------------------
/src/assemblers/views/content.njk:
--------------------------------------------------------------------------------
1 | {% from 'macro/element-tree.njk' import elementTree %}
2 | {{ elementTree(current, 1, baseUrl) }}
--------------------------------------------------------------------------------
/src/assemblers/views/css.njk:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assemblers/views/js.njk:
--------------------------------------------------------------------------------
1 |
14 |
15 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/assemblers/views/layout.njk:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ content }}
6 |
7 |
--------------------------------------------------------------------------------
/src/assemblers/views/macro/element-tree.njk:
--------------------------------------------------------------------------------
1 | {% macro elementTree(element, depth, baseUrl) %}
2 |
3 |
13 | {% if element.children %}
14 |
15 | {% for child in element.children %}
16 | {{ elementTree(child, depth + 1, baseUrl) }}
17 | {% endfor %}
18 |
19 | {% else %}
20 |
21 | {{ element.path | template | safe }}
22 |
23 |
24 |
25 |
26 |
{{ element.path | template | highlight | safe }}
27 |
28 |
29 |
30 |
31 |
32 |
33 | {% endif %}
34 |
35 | {% endmacro %}
--------------------------------------------------------------------------------
/src/assemblers/views/macro/navigation.njk:
--------------------------------------------------------------------------------
1 | {% macro navigation(tree, baseUrl, current) %}
2 |
3 |
4 | {{ tree.name }}
5 |
6 | {% if tree.children %}
7 |
8 | {% endif %}
9 |
10 | {% if tree.children %}
11 |
16 | {% endif %}
17 |
18 | {% endmacro %}
--------------------------------------------------------------------------------
/src/assemblers/views/macro/search-tree.njk:
--------------------------------------------------------------------------------
1 | {% macro searchTree(tree, baseUrl, parent, level) %}
2 |
3 |
4 | {{ parent }} {{ tree.name }}
5 |
6 |
7 |
8 | {% if tree.children %}
9 | {% if level > 0 %}
10 | {% set parent = parent ~ tree.name ~ ' → ' %}
11 | {% endif %}
12 | {% for child in tree.children %}
13 | {{ searchTree(child, baseUrl, parent, level + 1) }}
14 | {% endfor %}
15 | {% endif %}
16 | {% endmacro %}
--------------------------------------------------------------------------------
/src/assemblers/views/navigation.njk:
--------------------------------------------------------------------------------
1 | {% from 'macro/navigation.njk' import navigation %}
2 | {% from 'macro/search-tree.njk' import searchTree %}
3 |
4 |
5 |
6 |
7 |
15 |
16 |
17 | {% for child in tree.children %}
18 | {{ navigation(child, baseUrl, current) }}
19 | {% endfor %}
20 |
21 |
22 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import assembleTemplates from './assemblers/templates.js';
2 | import assembleSass from './assemblers/sass.js';
3 | import assembleAssets from './assemblers/assets.js';
4 | import path from 'path';
5 | import nmResolve from 'node-modules-resolve';
6 |
7 | module.exports = function(templatesDir, outputDir, options = {}) {
8 | return Promise.all([
9 | assembleTemplates(templatesDir, outputDir, options),
10 | assembleSass(path.resolve(__dirname, '../sass/cl.scss'), path.join(outputDir, 'assets_/css/cl.css')),
11 | assembleAssets(path.resolve(__dirname, '../assets'), path.join(outputDir, 'assets_/assets')),
12 | assembleAssets(path.resolve(nmResolve('jquery'), 'dist'), path.join(outputDir, 'assets_/jquery')),
13 | assembleAssets(path.resolve(nmResolve('bootstrap-sass-namespace'), 'assets/javascripts/bootstrap'), path.join(outputDir, 'assets_/bootstrap-namespace')),
14 | assembleAssets(path.resolve(nmResolve('smartmenus-namespace'), 'dist'), path.join(outputDir, 'assets_/smartmenus-namespace')),
15 | assembleAssets(path.resolve(nmResolve('font-awesome'), 'fonts'), path.join(outputDir, 'assets_/fonts'))
16 | ]);
17 | };
18 |
--------------------------------------------------------------------------------