Commit 9060339a authored by Nikolay Gromov's avatar Nikolay Gromov

Запилил обработку pug полностью

parent 2d451525
design/
build/* build/*
!build/readme.md !build/readme.md
design/
src/scss/style.scss
src/pug/mixins.pug src/pug/mixins.pug
src/scss/style.scss
src/blocks/sprite-svg/img/sprite-svg.svg src/blocks/sprite-svg/img/sprite-svg.svg
src/blocks/sprite-png/sprite-png.scss src/blocks/sprite-png/sprite-png.scss
src/blocks/sprite-png/img/sprite-*.png src/blocks/sprite-png/img/sprite-*.png
faviconData.json faviconData.json
__MACOSX
.Saved/ .Saved/
_arc/ _arc/
bower_components/ bower_components/
node_modules/ node_modules/
package-lock.json package-lock.json
.vscode/ .vscode/
.publish/
.DS_Store .DS_Store
*.log *.log
*.sublime-* *.sublime-*
*.rar *.rar
*.zip *.zip
.idea .idea
.publish
ex_files ex_files
Thumbs.db Thumbs.db
__MACOSX
// Файл перезаписывается программно при работе автоматизации
let config = let config =
{ {
"notGetBlocks": [ "notGetBlocks": [
...@@ -12,7 +13,8 @@ let config = ...@@ -12,7 +13,8 @@ let config =
"logo", "logo",
"main-nav", "main-nav",
"burger", "burger",
"page-footer" "page-footer",
"catalog"
], ],
"addStyleBefore": [ "addStyleBefore": [
"./src/scss/functions.scss", "./src/scss/functions.scss",
......
...@@ -10,6 +10,9 @@ let blocksList = []; ...@@ -10,6 +10,9 @@ let blocksList = [];
let oldBlocksListString = JSON.stringify(config.blocks); let oldBlocksListString = JSON.stringify(config.blocks);
// Адрес репозитория // Адрес репозитория
let repoUrl = require('./package.json').repository.url.replace(/\.git$/g, ''); let repoUrl = require('./package.json').repository.url.replace(/\.git$/g, '');
// Определение: разработка это или финальная сборка
// NODE_ENV=production npm start [задача]` приведет к сборке без sourcemaps
const isDev = !process.env.NODE_ENV || process.env.NODE_ENV == 'dev';
// Пакеты, использующиеся при обработке // Пакеты, использующиеся при обработке
const { series, parallel, src, dest, watch } = require('gulp'); const { series, parallel, src, dest, watch } = require('gulp');
...@@ -22,25 +25,12 @@ const replace = require('gulp-replace'); ...@@ -22,25 +25,12 @@ const replace = require('gulp-replace');
const getClassesFromHtml = require('get-classes-from-html'); const getClassesFromHtml = require('get-classes-from-html');
const jsonFormat = require('json-format'); const jsonFormat = require('json-format');
const browserSync = require('browser-sync').create(); const browserSync = require('browser-sync').create();
const htmlbeautify = require('gulp-html-beautify');
function compilePug() { function compilePug() {
// Pug-фильтр, выводящий содержимое pug-файла в виде форматированного текста
const filterShowCode = function (text, options) {
var lines = text.split('\n');
var result = '<pre class="code">\n';
if (typeof(options['first-line']) !== 'undefined') result = result + '<code>' + options['first-line'] + '</code>\n';
for (var i = 0; i < (lines.length - 1); i++) { // (lines.length - 1) для срезания последней строки (пустая)
result = result + '<code>' + lines[i] + '</code>\n';
}
result = result + '</pre>\n';
result = result.replace(/<code><\/code>/g, '<code>&nbsp;</code>');
return result;
}
return src([ return src([
dir.src + '*.pug', dir.src + 'pages/**/*.pug',
]) ])
.pipe(plumber()) .pipe(plumber())
.pipe(pug({ .pipe(pug({
...@@ -60,7 +50,8 @@ function compilePug() { ...@@ -60,7 +50,8 @@ function compilePug() {
config.blocks = config.blocks.filter(item => blocksList.indexOf(item) >= 0); config.blocks = config.blocks.filter(item => blocksList.indexOf(item) >= 0);
// Добавить в конец списка блоков те элементы, которые использованы в HTML, но отсутствуют в списке // Добавить в конец списка блоков те элементы, которые использованы в HTML, но отсутствуют в списке
Array.prototype.push.apply(config.blocks, getArraysDiff(blocksList, config.blocks)); Array.prototype.push.apply(config.blocks, getArraysDiff(blocksList, config.blocks));
// console.log(config.blocks); // Имеем список использованных сейчас на проекте блоков // ИМЕЕМ СПИСОК ИСПОЛЬЗОВАННЫХ СЕЙЧАС НА ПРОЕКТЕ БЛОКОВ
// console.log(config.blocks);
// Если есть изменения списка блоков // Если есть изменения списка блоков
if(oldBlocksListString != JSON.stringify(config.blocks)) { if(oldBlocksListString != JSON.stringify(config.blocks)) {
// Записать новый конфиг // Записать новый конфиг
...@@ -73,11 +64,33 @@ function compilePug() { ...@@ -73,11 +64,33 @@ function compilePug() {
console.log('---------- В проекте нет блоков. Сурово. По-челябински.'); console.log('---------- В проекте нет блоков. Сурово. По-челябински.');
} }
}) })
.pipe(htmlbeautify())
// и... привет бьютификатору!
.pipe(replace(/^(\s*)(<header.+?>)(.*)(<\/header>)/gm, '$1$2\n$1 $3\n$1$4'))
.pipe(replace(/^(\s*)(<footer.+?>)(.*)(<\/footer>)/gm, '$1$2\n$1 $3\n$1$4'))
.pipe(replace(/^\s*<section.+>/gm, '\n$&'))
.pipe(replace(/^\s*<\/section>/gm, '$&\n'))
.pipe(replace(/^\s*<article.+>/gm, '\n$&'))
.pipe(replace(/^\s*<\/article>/gm, '$&\n'))
.pipe(replace(/\n\n\n/gm, '\n\n'))
.pipe(dest(dir.build)); .pipe(dest(dir.build));
} }
exports.compilePug = compilePug; exports.compilePug = compilePug;
function writePugMixinsFile(cb) {
const regExp = dir.blocks.replace('./','');
let allBlocksWithPugFiles = getDirectories(dir.blocks, 'pug');
// console.log(allBlocksWithPugFiles);
let pugMixins = '//- ВНИМАНИЕ! Этот файл генерируется автоматически. Не пишите сюда ничего вручную!\n//- Читайте ./README.md для понимания.\n\n';
allBlocksWithPugFiles.forEach(function(blockName) {
pugMixins += 'include ' + dir.blocks.replace(dir.src,'../') + blockName + '/' + blockName + '.pug\n';
});
fs.writeFileSync(dir.src + 'pug/mixins.pug', pugMixins);
cb();
}
// function writeMainStyleFile(cb) { // function writeMainStyleFile(cb) {
// console.log('111'); // console.log('111');
// cb(); // cb();
...@@ -93,11 +106,13 @@ function clearBuildDir() { ...@@ -93,11 +106,13 @@ function clearBuildDir() {
} }
exports.clearBuildDir = clearBuildDir; exports.clearBuildDir = clearBuildDir;
function reload(done) { function reload(done) {
browserSync.reload(); browserSync.reload();
done(); done();
} }
function serve() { function serve() {
browserSync.init({ browserSync.init({
server: dir.build, server: dir.build,
...@@ -111,12 +126,21 @@ function serve() { ...@@ -111,12 +126,21 @@ function serve() {
], series(compilePug, reload)); ], series(compilePug, reload));
} }
exports.default = series(compilePug, serve);;
exports.default = series(
parallel(clearBuildDir, writePugMixinsFile),
compilePug,
);
// exports.default = series(compilePug, serve);
// Функции, не являющиеся задачами Gulp ---------------------------------------- // Функции, не являющиеся задачами Gulp ----------------------------------------
/**
* Запись конфигурационного файла
* @param {object} config Конфиг
*/
function writeConfig(config) { function writeConfig(config) {
var settings = { type: 'space', size: 2 } var settings = { type: 'space', size: 2 }
let configText = '// Файл перезаписывается программно при работе автоматизации\nlet config =\n' + jsonFormat(config, settings) + ';\n\nmodule.exports = config;\n'; let configText = '// Файл перезаписывается программно при работе автоматизации\nlet config =\n' + jsonFormat(config, settings) + ';\n\nmodule.exports = config;\n';
...@@ -126,6 +150,22 @@ function writeConfig(config) { ...@@ -126,6 +150,22 @@ function writeConfig(config) {
}); });
} }
//
/**
* Pug-фильтр, выводящий содержимое pug-файла в виде форматированного текста
*/
function filterShowCode(text, options) {
var lines = text.split('\n');
var result = '<pre class="code">\n';
if (typeof(options['first-line']) !== 'undefined') result = result + '<code>' + options['first-line'] + '</code>\n';
for (var i = 0; i < (lines.length - 1); i++) { // (lines.length - 1) для срезания последней строки (пустая)
result = result + '<code>' + lines[i] + '</code>\n';
}
result = result + '</pre>\n';
result = result.replace(/<code><\/code>/g, '<code>&nbsp;</code>');
return result;
}
/** /**
* Проверка существования файла или папки * Проверка существования файла или папки
* @param {string} path Путь до файла или папки * @param {string} path Путь до файла или папки
...@@ -141,6 +181,19 @@ function fileExist(filepath){ ...@@ -141,6 +181,19 @@ function fileExist(filepath){
return flag; return flag;
} }
/**
* Получение всех названий поддиректорий, содержащих файл указанного расширения, совпадающий по имени с поддиректорией
* @param {string} source Путь к папке всех блоков.
* @param {string} ext Расширение файлов, которое проверяется
* @return {array} Массив из имён блоков
*/
function getDirectories(source, ext) {
let res = fs.readdirSync(source)
.filter(item => fs.lstatSync(source + item).isDirectory())
.filter(item => fileExist(source + item + '/' + item + '.' + ext));
return res;
}
/** /**
* Получение разницы между двумя массивами. * Получение разницы между двумя массивами.
* @param {array} a1 Первый массив * @param {array} a1 Первый массив
......
...@@ -32,32 +32,36 @@ ...@@ -32,32 +32,36 @@
"devDependencies": { "devDependencies": {
"@babel/core": "^7.1.6", "@babel/core": "^7.1.6",
"@babel/preset-env": "^7.1.6", "@babel/preset-env": "^7.1.6",
"@htmlacademy/editorconfig-cli": "^1.0.0",
"autoprefixer": "^9.3.1",
"babelify": "^10.0.0", "babelify": "^10.0.0",
"browser-sync": "^2.18.8", "browser-sync": "^2.18.8",
"browserify": "^16.2.3", "browserify": "^16.2.3",
"cross-env": "^5.0.0", "cross-env": "^5.0.0",
"css-mqpacker": "^7.0.0", "gulp": "^4.0.0",
"del": "^3.0.0", "del": "^3.0.0",
"get-classes-from-html": "^1.0.1", "get-classes-from-html": "^1.0.1",
"gulp-pug": "^4.0.1",
"gulp-html-beautify": "^1.0.1",
"gulp-plumber": "^1.1.0",
"gulp-rename": "^1.2.2",
"through2": "^3.0.0",
"json-format": "^1.0.1",
"husky": "^1.1.4",
"autoprefixer": "^9.3.1",
"css-mqpacker": "^7.0.0",
"@htmlacademy/editorconfig-cli": "^1.0.0",
"gh-pages": "^2.0.1", "gh-pages": "^2.0.1",
"gulp": "^4.0.0",
"gulp-cheerio": "^0.6.2", "gulp-cheerio": "^0.6.2",
"gulp-cleancss": "^0.2.2", "gulp-cleancss": "^0.2.2",
"gulp-concat": "^2.6.1", "gulp-concat": "^2.6.1",
"gulp-debug": "^4.0.0", "gulp-debug": "^4.0.0",
"gulp-html-beautify": "^1.0.1",
"gulp-if": "^2.0.2", "gulp-if": "^2.0.2",
"gulp-imagemin": "^5.0.3", "gulp-imagemin": "^5.0.3",
"gulp-insert": "^0.5.0", "gulp-insert": "^0.5.0",
"gulp-newer": "^1.3.0", "gulp-newer": "^1.3.0",
"gulp-notify": "^3.0.0", "gulp-notify": "^3.0.0",
"gulp-plumber": "^1.1.0",
"gulp-postcss": "^8.0.0", "gulp-postcss": "^8.0.0",
"gulp-pug": "^4.0.1",
"gulp-pug-lint": "git+https://github.com/nicothin/gulp-pug-lint.git", "gulp-pug-lint": "git+https://github.com/nicothin/gulp-pug-lint.git",
"gulp-rename": "^1.2.2",
"gulp-replace": "^1.0.0", "gulp-replace": "^1.0.0",
"gulp-sass": "^4.0.1", "gulp-sass": "^4.0.1",
"gulp-size": "^3.0.0", "gulp-size": "^3.0.0",
...@@ -67,8 +71,6 @@ ...@@ -67,8 +71,6 @@
"gulp-uglify": "^3.0.0", "gulp-uglify": "^3.0.0",
"gulp-wait": "0.0.2", "gulp-wait": "0.0.2",
"gulp.spritesmith": "^6.3.0", "gulp.spritesmith": "^6.3.0",
"husky": "^1.1.4",
"json-format": "^1.0.1",
"jstransformer-markdown-it": "^2.0.0", "jstransformer-markdown-it": "^2.0.0",
"lint-staged": "^8.0.4", "lint-staged": "^8.0.4",
"merge-stream": "^1.0.1", "merge-stream": "^1.0.1",
...@@ -77,7 +79,6 @@ ...@@ -77,7 +79,6 @@
"postcss-inline-svg": "^3.0.0", "postcss-inline-svg": "^3.0.0",
"postcss-object-fit-images": "^1.1.2", "postcss-object-fit-images": "^1.1.2",
"stylelint": "^9.1.1", "stylelint": "^9.1.1",
"through2": "^3.0.0",
"vinyl-buffer": "^1.0.1", "vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0" "vinyl-source-stream": "^2.0.0"
}, },
......
extends pug/layout-off-canvas.pug extends ../pug/layout-off-canvas.pug
block meta block meta
title Библиотека title Библиотека
...@@ -83,18 +83,18 @@ block content ...@@ -83,18 +83,18 @@ block content
//- Пример вызова примесей вывода блока: //- Пример вызова примесей вывода блока:
+block-lib('close', 'Закрыть', false) +block-lib('close', 'Закрыть', false)
include:markdown-it(linkify) blocks/close/readme.md include:markdown-it(linkify) ../blocks/close/readme.md
div div
+close('Закрыть') +close('Закрыть')
+block-lib-code() +block-lib-code()
include:show-code() blocks/close/close.pug include:show-code() ../blocks/close/close.pug
h1.blocks-library__title Блоки стартового репозитория #[a(href='index.html')] h1.blocks-library__title Блоки стартового репозитория #[a(href='index.html')]
+block-lib('page', 'Страница', false) +block-lib('page', 'Страница', false)
include:markdown-it(html='true') blocks/page/readme.md include:markdown-it(html='true') ../blocks/page/readme.md
+block-lib-code() +block-lib-code()
pre.code pre.code
code &lt;!DOCTYPE html> code &lt;!DOCTYPE html>
...@@ -109,7 +109,7 @@ block content ...@@ -109,7 +109,7 @@ block content
code &lt;/html> code &lt;/html>
+block-lib('typo', 'Текст, теги', false) +block-lib('typo', 'Текст, теги', false)
include:markdown-it(html='true') blocks/typo/readme.md include:markdown-it(html='true') ../blocks/typo/readme.md
+block-lib('grid-mixins', 'Примеси-генераторы модульной сетки', false, 'grid') +block-lib('grid-mixins', 'Примеси-генераторы модульной сетки', false, 'grid')
:markdown-it() :markdown-it()
...@@ -157,71 +157,71 @@ block content ...@@ -157,71 +157,71 @@ block content
code } code }
+block-lib('sprite-svg', 'SVG-спрайт c <a href="https://github.com/w0rm/gulp-svgstore">gulp-svgstore</a>', false) +block-lib('sprite-svg', 'SVG-спрайт c <a href="https://github.com/w0rm/gulp-svgstore">gulp-svgstore</a>', false)
include:markdown-it(html='true') blocks/sprite-svg/readme.md include:markdown-it(html='true') ../blocks/sprite-svg/readme.md
+block-lib('sprite-png', 'PNG-спрайт с <a href="https://github.com/Ensighten/spritesmith">spritesmith</a>', true) +block-lib('sprite-png', 'PNG-спрайт с <a href="https://github.com/Ensighten/spritesmith">spritesmith</a>', true)
include:markdown-it(html='true') blocks/sprite-png/readme.md include:markdown-it(html='true') ../blocks/sprite-png/readme.md
+block-lib('page-header', '«Шапка» страницы', false) +block-lib('page-header', '«Шапка» страницы', false)
include:markdown-it(html='true') blocks/page-header/readme.md include:markdown-it(html='true') ../blocks/page-header/readme.md
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/page-header/page-header.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/page-header/page-header.pug
+block-lib('page-footer', '«Подвал» страницы', false) +block-lib('page-footer', '«Подвал» страницы', false)
include:markdown-it(html='true') blocks/page-footer/readme.md include:markdown-it(html='true') ../blocks/page-footer/readme.md
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/page-footer/page-footer.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/page-footer/page-footer.pug
+block-lib('logo', 'Логотип', false) +block-lib('logo', 'Логотип', false)
include:markdown-it(html='true') blocks/logo/readme.md include:markdown-it(html='true') ../blocks/logo/readme.md
+logo('/') +logo('/')
img(src='img/logo.svg', alt='Logo', width='64', height='15') img(src='img/logo.svg', alt='Logo', width='64', height='15')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/logo/logo.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/logo/logo.pug
+block-lib('main-nav', 'Главная навигация', false) +block-lib('main-nav', 'Главная навигация', false)
include:markdown-it(html='true') blocks/main-nav/readme.md include:markdown-it(html='true') ../blocks/main-nav/readme.md
+main-nav('1') +main-nav('1')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/main-nav/main-nav.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/main-nav/main-nav.pug
+block-lib('close', 'Закрыть', false) +block-lib('close', 'Закрыть', false)
include:markdown-it(html='true') blocks/close/readme.md include:markdown-it(html='true') ../blocks/close/readme.md
div div
+close('Закрыть') +close('Закрыть')
+close('Закрыть', 'sm') +close('Закрыть', 'sm')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/close/close.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/close/close.pug
+block-lib('burger', 'Бургер', false) +block-lib('burger', 'Бургер', false)
include:markdown-it(html='true') blocks/burger/readme.md include:markdown-it(html='true') ../blocks/burger/readme.md
div div
+burger('Показать пример кода', 'burger-code', 'blocks-library__code--shown') +burger('Показать пример кода', 'burger-code', 'blocks-library__code--shown')
+block-lib-code('burger-code', true) +block-lib-code('burger-code', true)
include:show-code(first-line='//- Pug-файл этого блока:') blocks/burger/burger.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/burger/burger.pug
+block-lib('or', 'Разеделитель «или»', false) +block-lib('or', 'Разеделитель «или»', false)
include:markdown-it(html='true') blocks/or/readme.md include:markdown-it(html='true') ../blocks/or/readme.md
+or() +or()
+or('Текст взамен «или»', 'some-mod') +or('Текст взамен «или»', 'some-mod')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/or/or.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/or/or.pug
+block-lib('code', 'Код', false) +block-lib('code', 'Код', false)
include:markdown-it(html='true') blocks/code/readme.md include:markdown-it(html='true') ../blocks/code/readme.md
+code() +code()
code &lt;div class="some">...&lt;/div> code &lt;div class="some">...&lt;/div>
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/code/code.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/code/code.pug
+block-lib('thumb', 'Картинки-миниатюры', false) +block-lib('thumb', 'Картинки-миниатюры', false)
include:markdown-it(html='true') blocks/thumb/readme.md include:markdown-it(html='true') ../blocks/thumb/readme.md
+thumb('img/joker.jpg', 'Джокер', 300, 200) +thumb('img/joker.jpg', 'Джокер', 300, 200)
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/thumb/thumb.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/thumb/thumb.pug
+block-lib('alert', 'Сообщения', false) +block-lib('alert', 'Сообщения', false)
include:markdown-it(html='true') blocks/alert/readme.md include:markdown-it(html='true') ../blocks/alert/readme.md
+alert() +alert()
p Обычное сообщение p Обычное сообщение
+close('Закрыть', 'sm')(class='alert__close', aria-label='Закрыть') +close('Закрыть', 'sm')(class='alert__close', aria-label='Закрыть')
...@@ -229,10 +229,10 @@ block content ...@@ -229,10 +229,10 @@ block content
p Блок сообщения с модификаторами. p Блок сообщения с модификаторами.
+close('Закрыть', 'sm')(class='alert__close', aria-label='Закрыть') +close('Закрыть', 'sm')(class='alert__close', aria-label='Закрыть')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/alert/alert.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/alert/alert.pug
+block-lib('menu', 'Меню', false) +block-lib('menu', 'Меню', false)
include:markdown-it(html='true') blocks/menu/readme.md include:markdown-it(html='true') ../blocks/menu/readme.md
- -
var myMenu = [ var myMenu = [
{ {
...@@ -251,24 +251,24 @@ block content ...@@ -251,24 +251,24 @@ block content
]; ];
+menu(myMenu) +menu(myMenu)
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/menu/menu.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/menu/menu.pug
+block-lib('label', 'Лейбл', false) +block-lib('label', 'Лейбл', false)
include:markdown-it(html='true') blocks/label/readme.md include:markdown-it(html='true') ../blocks/label/readme.md
+label('Текст1') +label('Текст1')
+label('Текст2', '', 'div') +label('Текст2', '', 'div')
+label('Текст3', '', 'a')(href='/') +label('Текст3', '', 'a')(href='/')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/label/label.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/label/label.pug
+block-lib('loader', 'Загрузчик', false) +block-lib('loader', 'Загрузчик', false)
include:markdown-it(html='true') blocks/loader/readme.md include:markdown-it(html='true') ../blocks/loader/readme.md
+loader() +loader()
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/loader/loader.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/loader/loader.pug
+block-lib('table', 'Таблица', false) +block-lib('table', 'Таблица', false)
include:markdown-it(html='true') blocks/table/readme.md include:markdown-it(html='true') ../blocks/table/readme.md
+table() +table()
caption Таблица caption Таблица
tr tr
...@@ -290,10 +290,10 @@ block content ...@@ -290,10 +290,10 @@ block content
td Пользователь td Пользователь
td Нижняя td Нижняя
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/table/table.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/table/table.pug
+block-lib('table-responsive', 'Адаптивная таблица', false) +block-lib('table-responsive', 'Адаптивная таблица', false)
include:markdown-it(html='true') blocks/table-responsive/readme.md include:markdown-it(html='true') ../blocks/table-responsive/readme.md
+table-responsive() +table-responsive()
caption Таблица caption Таблица
thead thead
...@@ -308,10 +308,10 @@ block content ...@@ -308,10 +308,10 @@ block content
td(data-label='Имя и фамилия') Джакомо Казанова td(data-label='Имя и фамилия') Джакомо Казанова
td(data-label='Тип мироощущения') Небольшая распущенность с лёгкой примесью леденящих душу извращений, чудовищной лжи и имитатора известного органа, обитого телячьей кожей. td(data-label='Тип мироощущения') Небольшая распущенность с лёгкой примесью леденящих душу извращений, чудовищной лжи и имитатора известного органа, обитого телячьей кожей.
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/table-responsive/table-responsive.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/table-responsive/table-responsive.pug
+block-lib('pagination', 'Пагинация', false) +block-lib('pagination', 'Пагинация', false)
include:markdown-it(html='true') blocks/pagination/readme.md include:markdown-it(html='true') ../blocks/pagination/readme.md
+pagination() +pagination()
+pagination-item('1', '/1') +pagination-item('1', '/1')
+pagination-item('...') +pagination-item('...')
...@@ -321,33 +321,33 @@ block content ...@@ -321,33 +321,33 @@ block content
+pagination-item('...') +pagination-item('...')
+pagination-item('999', '/999') +pagination-item('999', '/999')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/pagination/pagination.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/pagination/pagination.pug
+block-lib('breadcrumbs', 'Хлебные крошки', false) +block-lib('breadcrumbs', 'Хлебные крошки', false)
include:markdown-it(html='true') blocks/breadcrumbs/readme.md include:markdown-it(html='true') ../blocks/breadcrumbs/readme.md
+breadcrumbs() +breadcrumbs()
+breadcrumbs-item('Главная', '/home') +breadcrumbs-item('Главная', '/home')
+breadcrumbs-item('Услуги', '/services') +breadcrumbs-item('Услуги', '/services')
+breadcrumbs-item('Стриптиз') +breadcrumbs-item('Стриптиз')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/breadcrumbs/breadcrumbs.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/breadcrumbs/breadcrumbs.pug
+block-lib('progress', 'Прогресс', false) +block-lib('progress', 'Прогресс', false)
include:markdown-it(html='true') blocks/progress/readme.md include:markdown-it(html='true') ../blocks/progress/readme.md
+progress('30', '30% (без копеек)', 'success')(aria-valuemin='0', aria-valuemax='100') +progress('30', '30% (без копеек)', 'success')(aria-valuemin='0', aria-valuemax='100')
+progress('10')(style='height:10px') +progress('10')(style='height:10px')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/progress/progress.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/progress/progress.pug
+block-lib('pie-chart', 'Круговые и секторные диаграммы', false) +block-lib('pie-chart', 'Круговые и секторные диаграммы', false)
include:markdown-it(html='true') blocks/pie-chart/readme.md include:markdown-it(html='true') ../blocks/pie-chart/readme.md
+pie-chart('30') +pie-chart('30')
+pie-chart('64')(data-size='120', data-border='59.9') +pie-chart('64')(data-size='120', data-border='59.9')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/pie-chart/pie-chart.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/pie-chart/pie-chart.pug
+block-lib('comment', 'Комментарий', false) +block-lib('comment', 'Комментарий', false)
include:markdown-it(html='true') blocks/comment/readme.md include:markdown-it(html='true') ../blocks/comment/readme.md
+comment({ +comment({
username: 'Джокер', username: 'Джокер',
avatarURL: 'img/joker.jpg', avatarURL: 'img/joker.jpg',
...@@ -368,10 +368,10 @@ block content ...@@ -368,10 +368,10 @@ block content
content: '<p>Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты.</p>', content: '<p>Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты.</p>',
}) })
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/comment/comment.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/comment/comment.pug
+block-lib('embed-responsive', 'Адаптирующийся медиаконтент', false) +block-lib('embed-responsive', 'Адаптирующийся медиаконтент', false)
include:markdown-it(html='true') blocks/embed-responsive/readme.md include:markdown-it(html='true') ../blocks/embed-responsive/readme.md
style. style.
@media (min-width: 768px) { @media (min-width: 768px) {
.embed-responsive-demo { .embed-responsive-demo {
...@@ -398,16 +398,16 @@ block content ...@@ -398,16 +398,16 @@ block content
+embed-responsive() +embed-responsive()
iframe(src='https://www.youtube.com/embed/B0Q1rKpDNE4', frameborder='0', allowfullscreen='') iframe(src='https://www.youtube.com/embed/B0Q1rKpDNE4', frameborder='0', allowfullscreen='')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/embed-responsive/embed-responsive.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/embed-responsive/embed-responsive.pug
+block-lib('tooltip', 'Подсказки', true) +block-lib('tooltip', 'Подсказки', true)
include:markdown-it(html='true') blocks/tooltip/readme.md include:markdown-it(html='true') ../blocks/tooltip/readme.md
p Текст и подсказка: #[+tooltip('Текст подсказки может быть длинным. Хочется, чтобы <em>внутри</em> <small>можно было</small> <i>использовать</i> <b>разметку</b>.')] p Текст и подсказка: #[+tooltip('Текст подсказки может быть длинным. Хочется, чтобы <em>внутри</em> <small>можно было</small> <i>использовать</i> <b>разметку</b>.')]
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/tooltip/tooltip.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/tooltip/tooltip.pug
+block-lib('btn', 'Кнопка', false) +block-lib('btn', 'Кнопка', false)
include:markdown-it(html='true') blocks/btn/readme.md include:markdown-it(html='true') ../blocks/btn/readme.md
p. p.
#[+btn('Кнопка-ссылка')(href='/')] #[+btn('Кнопка-ссылка')(href='/')]
#[+btn('Кнопка-input', '', true)(name='submit')] #[+btn('Кнопка-input', '', true)(name='submit')]
...@@ -417,10 +417,10 @@ block content ...@@ -417,10 +417,10 @@ block content
#[+btn('Кнопка-input', '', true)(name='submit', disabled='')] #[+btn('Кнопка-input', '', true)(name='submit', disabled='')]
#[+btn('Кнопка-button', 'main')(disabled='')] #[+btn('Кнопка-button', 'main')(disabled='')]
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/btn/btn.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/btn/btn.pug
+block-lib('field-text', 'Текстовое поле', false) +block-lib('field-text', 'Текстовое поле', false)
include:markdown-it(html='true') blocks/field-text/readme.md include:markdown-it(html='true') ../blocks/field-text/readme.md
+field-text({ +field-text({
title: 'Текстовое поле', title: 'Текстовое поле',
helpText: 'Подсказка под полем', helpText: 'Подсказка под полем',
...@@ -442,10 +442,10 @@ block content ...@@ -442,10 +442,10 @@ block content
}) })
+field-text() +field-text()
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/field-text/field-text.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/field-text/field-text.pug
+block-lib('field-checkbox', 'Флажок/чекбокс', false) +block-lib('field-checkbox', 'Флажок/чекбокс', false)
include:markdown-it(html='true') blocks/field-checkbox/readme.md include:markdown-it(html='true') ../blocks/field-checkbox/readme.md
+field-checkbox([ +field-checkbox([
{ {
title: 'Чекбокс без группы', title: 'Чекбокс без группы',
...@@ -474,10 +474,10 @@ block content ...@@ -474,10 +474,10 @@ block content
}, },
], 'Общее необязательное название') ], 'Общее необязательное название')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/field-checkbox/field-checkbox.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/field-checkbox/field-checkbox.pug
+block-lib('field-radio', 'Радиокнопки', false) +block-lib('field-radio', 'Радиокнопки', false)
include:markdown-it(html='true') blocks/field-radio/readme.md include:markdown-it(html='true') ../blocks/field-radio/readme.md
+field-radio([ +field-radio([
{ {
title: 'Первый', title: 'Первый',
...@@ -496,10 +496,10 @@ block content ...@@ -496,10 +496,10 @@ block content
}, },
], 'Общее необязательное название') ], 'Общее необязательное название')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/field-radio/field-radio.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/field-radio/field-radio.pug
+block-lib('field-toggler', 'Переключатель', false) +block-lib('field-toggler', 'Переключатель', false)
include:markdown-it(html='true') blocks/field-toggler/readme.md include:markdown-it(html='true') ../blocks/field-toggler/readme.md
+field-toggler([ +field-toggler([
{ {
title: 'Одиночный переключатель', title: 'Одиночный переключатель',
...@@ -528,10 +528,10 @@ block content ...@@ -528,10 +528,10 @@ block content
}, },
], 'Две радиокнопки', true) ], 'Две радиокнопки', true)
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/field-toggler/field-toggler.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/field-toggler/field-toggler.pug
+block-lib('field-file', 'Файл', false) +block-lib('field-file', 'Файл', false)
include:markdown-it(html='true') blocks/field-file/readme.md include:markdown-it(html='true') ../blocks/field-file/readme.md
+field-file({ +field-file({
title: 'Название', title: 'Название',
helpText: 'Подсказка', helpText: 'Подсказка',
...@@ -553,10 +553,10 @@ block content ...@@ -553,10 +553,10 @@ block content
}, },
}) })
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/field-file/field-file.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/field-file/field-file.pug
+block-lib('field-range', 'Ползунок', false) +block-lib('field-range', 'Ползунок', false)
include:markdown-it(html='true') blocks/field-range/readme.md include:markdown-it(html='true') ../blocks/field-range/readme.md
+field-range({ +field-range({
title: 'Название', title: 'Название',
helpText: 'Подсказка', helpText: 'Подсказка',
...@@ -570,10 +570,10 @@ block content ...@@ -570,10 +570,10 @@ block content
} }
}) })
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/field-range/field-range.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/field-range/field-range.pug
+block-lib('field-select', 'Селекты', false) +block-lib('field-select', 'Селекты', false)
include:markdown-it(html='true') blocks/field-select/readme.md include:markdown-it(html='true') ../blocks/field-select/readme.md
+field-select( +field-select(
'Название селекта', 'Название селекта',
{ {
...@@ -634,17 +634,17 @@ block content ...@@ -634,17 +634,17 @@ block content
'' ''
) )
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/field-select/field-select.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/field-select/field-select.pug
+block-lib('field-actions', 'Кнопки формы', false) +block-lib('field-actions', 'Кнопки формы', false)
include:markdown-it(html='true') blocks/field-actions/readme.md include:markdown-it(html='true') ../blocks/field-actions/readme.md
+field-actions('* — обязательные поля') +field-actions('* — обязательные поля')
+btn('Отправить') +btn('Отправить')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/field-actions/field-actions.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/field-actions/field-actions.pug
+block-lib('fields-group', 'Группа полей', false) +block-lib('fields-group', 'Группа полей', false)
include:markdown-it(html='true') blocks/fields-group/readme.md include:markdown-it(html='true') ../blocks/fields-group/readme.md
+fields-group() +fields-group()
+field-text({ +field-text({
helpText: 'Подсказка', helpText: 'Подсказка',
...@@ -662,10 +662,10 @@ block content ...@@ -662,10 +662,10 @@ block content
+field-actions() +field-actions()
+btn('Отправить', 'primary') +btn('Отправить', 'primary')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/fields-group/fields-group.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/fields-group/fields-group.pug
+block-lib('form', 'Форма', true) +block-lib('form', 'Форма', true)
include:markdown-it(html='true') blocks/form/readme.md include:markdown-it(html='true') ../blocks/form/readme.md
+form() +form()
+fieldset('Название1') +fieldset('Название1')
+field-text({ +field-text({
...@@ -696,25 +696,25 @@ block content ...@@ -696,25 +696,25 @@ block content
+field-actions() +field-actions()
+btn('Отправить', 'primary') +btn('Отправить', 'primary')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/form/form.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/form/form.pug
+block-lib('is-mobile', 'Определение мобильного устройства', false) +block-lib('is-mobile', 'Определение мобильного устройства', false)
include:markdown-it(html='true') blocks/is-mobile/readme.md include:markdown-it(html='true') ../blocks/is-mobile/readme.md
+block-lib('scroll-link', 'Ссылки на якоря страницы', false) +block-lib('scroll-link', 'Ссылки на якоря страницы', false)
include:markdown-it(html='true') blocks/scroll-link/readme.md include:markdown-it(html='true') ../blocks/scroll-link/readme.md
+scroll-link('Описание блока <code>page</code>', '#page') +scroll-link('Описание блока <code>page</code>', '#page')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/scroll-link/scroll-link.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/scroll-link/scroll-link.pug
+block-lib('to-top-block', 'Ссылка «вверх»', false, 'to-top') +block-lib('to-top-block', 'Ссылка «вверх»', false, 'to-top')
include:markdown-it(html='true') blocks/to-top/readme.md include:markdown-it(html='true') ../blocks/to-top/readme.md
+to-top() +to-top()
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/to-top/to-top.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/to-top/to-top.pug
+block-lib('dropdown', 'Выпадающий элемент', false) +block-lib('dropdown', 'Выпадающий элемент', false)
include:markdown-it(html='true') blocks/dropdown/readme.md include:markdown-it(html='true') ../blocks/dropdown/readme.md
pre.code pre.code
code // Факт открытия code // Факт открытия
code $('#drop-demo-01').closest('.dropdown').on('shown.nth.dropdown', function () { code $('#drop-demo-01').closest('.dropdown').on('shown.nth.dropdown', function () {
...@@ -737,10 +737,10 @@ block content ...@@ -737,10 +737,10 @@ block content
span.menu__item span.menu__item
a.menu__link(href='') Второй пункт a.menu__link(href='') Второй пункт
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/dropdown/dropdown.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/dropdown/dropdown.pug
+block-lib('owl-carousel', 'Карусель с <a href="http://owlcarousel2.github.io/OwlCarousel2/">owl-carousel</a>', false) +block-lib('owl-carousel', 'Карусель с <a href="http://owlcarousel2.github.io/OwlCarousel2/">owl-carousel</a>', false)
include:markdown-it(html='true') blocks/owl-carousel/readme.md include:markdown-it(html='true') ../blocks/owl-carousel/readme.md
+owl-carousel('promo') +owl-carousel('promo')
div слайд1 div слайд1
div слайд2 div слайд2
...@@ -751,10 +751,10 @@ block content ...@@ -751,10 +751,10 @@ block content
div слайд7 div слайд7
div слайд8 div слайд8
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/owl-carousel/owl-carousel.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/owl-carousel/owl-carousel.pug
+block-lib('swipe', 'Карусель с <a href="https://github.com/lyfeyaj/swipe">swipe</a>', false) +block-lib('swipe', 'Карусель с <a href="https://github.com/lyfeyaj/swipe">swipe</a>', false)
include:markdown-it(html='true') blocks/swipe/readme.md include:markdown-it(html='true') ../blocks/swipe/readme.md
+swipe('swipe-demo') +swipe('swipe-demo')
div слайд1 div слайд1
div слайд2 div слайд2
...@@ -765,19 +765,19 @@ block content ...@@ -765,19 +765,19 @@ block content
div слайд7 div слайд7
div слайд8 div слайд8
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/swipe/swipe.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/swipe/swipe.pug
+block-lib('nouislider', 'Выбор диапазона с <a href="https://refreshless.com/nouislider/">noUiSlider</a>', false) +block-lib('nouislider', 'Выбор диапазона с <a href="https://refreshless.com/nouislider/">noUiSlider</a>', false)
include:markdown-it(html='true') blocks/nouislider/readme.md include:markdown-it(html='true') ../blocks/nouislider/readme.md
+nouislider('demo-nouislider') +nouislider('demo-nouislider')
p(style='margin-top: 1rem;') p(style='margin-top: 1rem;')
input#demo-nouislider-start(type='number', value='10') input#demo-nouislider-start(type='number', value='10')
input#demo-nouislider-end(type='number', value='80') input#demo-nouislider-end(type='number', value='80')
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/nouislider/nouislider.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/nouislider/nouislider.pug
+block-lib('off-canvas', 'Боковое меню страницы', false) +block-lib('off-canvas', 'Боковое меню страницы', false)
include:markdown-it(html='true') blocks/off-canvas/readme.md include:markdown-it(html='true') ../blocks/off-canvas/readme.md
p #[button.btn(type='button', data-toggle='off-canvas') Показать/скрыть боковое меню] p #[button.btn(type='button', data-toggle='off-canvas') Показать/скрыть боковое меню]
+block-lib-code() +block-lib-code()
pre.code pre.code
...@@ -791,7 +791,7 @@ block content ...@@ -791,7 +791,7 @@ block content
code a(href='#SOME_HASH', data-toggle-native='off-canvas') Показать/скрыть боковое меню и перейти на якорь code a(href='#SOME_HASH', data-toggle-native='off-canvas') Показать/скрыть боковое меню и перейти на якорь
+block-lib('modal', 'Модальное окно', false) +block-lib('modal', 'Модальное окно', false)
include:markdown-it(html='true') blocks/modal/readme.md include:markdown-it(html='true') ../blocks/modal/readme.md
p Одно и то же модальное окно, в консоль выводятся события. #[button.btn(type='button', data-toggle='modal', data-target='#modal-demo-01') Показать модальное окно] #[a(href='#modal-demo-01', data-toggle='modal') Показать модальное окно] #[span(data-toggle='modal', data-target='#modal-demo-01') Показать модальное окно] p Одно и то же модальное окно, в консоль выводятся события. #[button.btn(type='button', data-toggle='modal', data-target='#modal-demo-01') Показать модальное окно] #[a(href='#modal-demo-01', data-toggle='modal') Показать модальное окно] #[span(data-toggle='modal', data-target='#modal-demo-01') Показать модальное окно]
+modal('modal-demo-01', 'Заголовок', 'some') +modal('modal-demo-01', 'Заголовок', 'some')
.modal__body .modal__body
...@@ -819,10 +819,10 @@ block content ...@@ -819,10 +819,10 @@ block content
code console.log('hidden.nth.modal'); code console.log('hidden.nth.modal');
code }); code });
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/modal/modal.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/modal/modal.pug
+block-lib('tabs', 'Табы', false) +block-lib('tabs', 'Табы', false)
include:markdown-it(html='true') blocks/tabs/readme.md include:markdown-it(html='true') ../blocks/tabs/readme.md
+tabs([ +tabs([
{ {
'id': 'tab00', 'id': 'tab00',
...@@ -851,10 +851,10 @@ block content ...@@ -851,10 +851,10 @@ block content
+tabs-item('tab03') +tabs-item('tab03')
p Горами в стране, гласных и согласных живут рыбные тексты.3 p Горами в стране, гласных и согласных живут рыбные тексты.3
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/tabs/tabs.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/tabs/tabs.pug
+block-lib('baron', 'Кастомный скролл с <a href="https://www.npmjs.com/package/baron">baron</a>', false) +block-lib('baron', 'Кастомный скролл с <a href="https://www.npmjs.com/package/baron">baron</a>', false)
include:markdown-it(html='true') blocks/baron/readme.md include:markdown-it(html='true') ../blocks/baron/readme.md
+baron('baron-demo', 'mods')(style='height: 100px; border: 1px solid #E6E6E6; margin-bottom: 1rem;') +baron('baron-demo', 'mods')(style='height: 100px; border: 1px solid #E6E6E6; margin-bottom: 1rem;')
p Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dicta aliquid nemo, sit possimus, eveniet tempore minus, doloremque incidunt, nihil quos aperiam ab iure quia. Ipsa sit porro incidunt, sed! p Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dicta aliquid nemo, sit possimus, eveniet tempore minus, doloremque incidunt, nihil quos aperiam ab iure quia. Ipsa sit porro incidunt, sed!
p Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dicta aliquid nemo, sit possimus, eveniet tempore minus, doloremque incidunt, nihil quos aperiam ab iure quia. Ipsa sit porro incidunt, sed! p Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dicta aliquid nemo, sit possimus, eveniet tempore minus, doloremque incidunt, nihil quos aperiam ab iure quia. Ipsa sit porro incidunt, sed!
...@@ -862,7 +862,7 @@ block content ...@@ -862,7 +862,7 @@ block content
p Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dicta aliquid nemo, sit possimus, eveniet tempore minus, doloremque incidunt, nihil quos aperiam ab iure quia. Ipsa sit porro incidunt, sed! p Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dicta aliquid nemo, sit possimus, eveniet tempore minus, doloremque incidunt, nihil quos aperiam ab iure quia. Ipsa sit porro incidunt, sed!
p Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dicta aliquid nemo, sit possimus, eveniet tempore minus, doloremque incidunt, nihil quos aperiam ab iure quia. Ipsa sit porro incidunt, sed! p Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dicta aliquid nemo, sit possimus, eveniet tempore minus, doloremque incidunt, nihil quos aperiam ab iure quia. Ipsa sit porro incidunt, sed!
+block-lib-code() +block-lib-code()
include:show-code(first-line='//- Pug-файл этого блока:') blocks/baron/baron.pug include:show-code(first-line='//- Pug-файл этого блока:') ../blocks/baron/baron.pug
.burger.blocks-library__menu-toggler(data-toggle='off-canvas') .burger.blocks-library__menu-toggler(data-toggle='off-canvas')
......
extends ../../pug/layout.pug
block meta
title Каталог
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип в каталоге
+main-nav('10')
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
.catalog Каталог, сученька!
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends pug/layout.pug extends ../pug/layout.pug
block meta block meta
title Главная title Главная
......
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends ../pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
extends pug/layout.pug extends ../pug/layout.pug
block meta block meta
title Главная title Главная
......
...@@ -20,8 +20,10 @@ html(class='no-js page', lang='ru') ...@@ -20,8 +20,10 @@ html(class='no-js page', lang='ru')
link(rel='icon', type='image/png', sizes='16x16', href='/img/favicon/favicon-16x16.png') link(rel='icon', type='image/png', sizes='16x16', href='/img/favicon/favicon-16x16.png')
link(rel='manifest', href='/site.webmanifest') link(rel='manifest', href='/site.webmanifest')
link(rel='mask-icon', href='/img/favicon/safari-pinned-tab.svg', color='#5bbad5') link(rel='mask-icon', href='/img/favicon/safari-pinned-tab.svg', color='#5bbad5')
meta(name='msapplication-TileColor', content='#ffffff') meta(name='msapplication-TileColor', content='#5bbad5')
meta(name='theme-color', content='#ffffff') meta(name='theme-color', content='#000')
meta(name='msapplication-navbutton-color', content='#000')
meta(name='apple-mobile-web-app-status-bar-style', content='#000')
block meta block meta
title Home title Home
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment