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

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

parent 2d451525
design/
build/*
!build/readme.md
design/
src/scss/style.scss
src/pug/mixins.pug
src/scss/style.scss
src/blocks/sprite-svg/img/sprite-svg.svg
src/blocks/sprite-png/sprite-png.scss
src/blocks/sprite-png/img/sprite-*.png
faviconData.json
__MACOSX
.Saved/
_arc/
bower_components/
node_modules/
package-lock.json
.vscode/
.publish/
.DS_Store
*.log
*.sublime-*
*.rar
*.zip
.idea
.publish
ex_files
Thumbs.db
__MACOSX
// Файл перезаписывается программно при работе автоматизации
let config =
{
"notGetBlocks": [
......@@ -12,7 +13,8 @@ let config =
"logo",
"main-nav",
"burger",
"page-footer"
"page-footer",
"catalog"
],
"addStyleBefore": [
"./src/scss/functions.scss",
......
......@@ -10,6 +10,9 @@ let blocksList = [];
let oldBlocksListString = JSON.stringify(config.blocks);
// Адрес репозитория
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');
......@@ -22,25 +25,12 @@ const replace = require('gulp-replace');
const getClassesFromHtml = require('get-classes-from-html');
const jsonFormat = require('json-format');
const browserSync = require('browser-sync').create();
const htmlbeautify = require('gulp-html-beautify');
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([
dir.src + '*.pug',
dir.src + 'pages/**/*.pug',
])
.pipe(plumber())
.pipe(pug({
......@@ -60,7 +50,8 @@ function compilePug() {
config.blocks = config.blocks.filter(item => blocksList.indexOf(item) >= 0);
// Добавить в конец списка блоков те элементы, которые использованы в HTML, но отсутствуют в списке
Array.prototype.push.apply(config.blocks, getArraysDiff(blocksList, config.blocks));
// console.log(config.blocks); // Имеем список использованных сейчас на проекте блоков
// ИМЕЕМ СПИСОК ИСПОЛЬЗОВАННЫХ СЕЙЧАС НА ПРОЕКТЕ БЛОКОВ
// console.log(config.blocks);
// Если есть изменения списка блоков
if(oldBlocksListString != JSON.stringify(config.blocks)) {
// Записать новый конфиг
......@@ -73,11 +64,33 @@ function compilePug() {
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));
}
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) {
// console.log('111');
// cb();
......@@ -93,11 +106,13 @@ function clearBuildDir() {
}
exports.clearBuildDir = clearBuildDir;
function reload(done) {
browserSync.reload();
done();
}
function serve() {
browserSync.init({
server: dir.build,
......@@ -111,12 +126,21 @@ function serve() {
], series(compilePug, reload));
}
exports.default = series(compilePug, serve);;
exports.default = series(
parallel(clearBuildDir, writePugMixinsFile),
compilePug,
);
// exports.default = series(compilePug, serve);
// Функции, не являющиеся задачами Gulp ----------------------------------------
/**
* Запись конфигурационного файла
* @param {object} config Конфиг
*/
function writeConfig(config) {
var settings = { type: 'space', size: 2 }
let configText = '// Файл перезаписывается программно при работе автоматизации\nlet config =\n' + jsonFormat(config, settings) + ';\n\nmodule.exports = config;\n';
......@@ -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 Путь до файла или папки
......@@ -141,6 +181,19 @@ function fileExist(filepath){
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 Первый массив
......
......@@ -32,32 +32,36 @@
"devDependencies": {
"@babel/core": "^7.1.6",
"@babel/preset-env": "^7.1.6",
"@htmlacademy/editorconfig-cli": "^1.0.0",
"autoprefixer": "^9.3.1",
"babelify": "^10.0.0",
"browser-sync": "^2.18.8",
"browserify": "^16.2.3",
"cross-env": "^5.0.0",
"css-mqpacker": "^7.0.0",
"gulp": "^4.0.0",
"del": "^3.0.0",
"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",
"gulp": "^4.0.0",
"gulp-cheerio": "^0.6.2",
"gulp-cleancss": "^0.2.2",
"gulp-concat": "^2.6.1",
"gulp-debug": "^4.0.0",
"gulp-html-beautify": "^1.0.1",
"gulp-if": "^2.0.2",
"gulp-imagemin": "^5.0.3",
"gulp-insert": "^0.5.0",
"gulp-newer": "^1.3.0",
"gulp-notify": "^3.0.0",
"gulp-plumber": "^1.1.0",
"gulp-postcss": "^8.0.0",
"gulp-pug": "^4.0.1",
"gulp-pug-lint": "git+https://github.com/nicothin/gulp-pug-lint.git",
"gulp-rename": "^1.2.2",
"gulp-replace": "^1.0.0",
"gulp-sass": "^4.0.1",
"gulp-size": "^3.0.0",
......@@ -67,8 +71,6 @@
"gulp-uglify": "^3.0.0",
"gulp-wait": "0.0.2",
"gulp.spritesmith": "^6.3.0",
"husky": "^1.1.4",
"json-format": "^1.0.1",
"jstransformer-markdown-it": "^2.0.0",
"lint-staged": "^8.0.4",
"merge-stream": "^1.0.1",
......@@ -77,7 +79,6 @@
"postcss-inline-svg": "^3.0.0",
"postcss-object-fit-images": "^1.1.2",
"stylelint": "^9.1.1",
"through2": "^3.0.0",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0"
},
......
extends pug/layout-off-canvas.pug
extends ../pug/layout-off-canvas.pug
block meta
title Библиотека
......@@ -83,18 +83,18 @@ block content
//- Пример вызова примесей вывода блока:
+block-lib('close', 'Закрыть', false)
include:markdown-it(linkify) blocks/close/readme.md
include:markdown-it(linkify) ../blocks/close/readme.md
div
+close('Закрыть')
+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')]
+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()
pre.code
code &lt;!DOCTYPE html>
......@@ -109,7 +109,7 @@ block content
code &lt;/html>
+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')
:markdown-it()
......@@ -157,71 +157,71 @@ block content
code }
+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)
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)
include:markdown-it(html='true') blocks/page-header/readme.md
include:markdown-it(html='true') ../blocks/page-header/readme.md
+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)
include:markdown-it(html='true') blocks/page-footer/readme.md
include:markdown-it(html='true') ../blocks/page-footer/readme.md
+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)
include:markdown-it(html='true') blocks/logo/readme.md
include:markdown-it(html='true') ../blocks/logo/readme.md
+logo('/')
img(src='img/logo.svg', alt='Logo', width='64', height='15')
+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)
include:markdown-it(html='true') blocks/main-nav/readme.md
include:markdown-it(html='true') ../blocks/main-nav/readme.md
+main-nav('1')
+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)
include:markdown-it(html='true') blocks/close/readme.md
include:markdown-it(html='true') ../blocks/close/readme.md
div
+close('Закрыть')
+close('Закрыть', 'sm')
+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)
include:markdown-it(html='true') blocks/burger/readme.md
include:markdown-it(html='true') ../blocks/burger/readme.md
div
+burger('Показать пример кода', 'burger-code', 'blocks-library__code--shown')
+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)
include:markdown-it(html='true') blocks/or/readme.md
include:markdown-it(html='true') ../blocks/or/readme.md
+or()
+or('Текст взамен «или»', 'some-mod')
+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)
include:markdown-it(html='true') blocks/code/readme.md
include:markdown-it(html='true') ../blocks/code/readme.md
+code()
code &lt;div class="some">...&lt;/div>
+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)
include:markdown-it(html='true') blocks/thumb/readme.md
include:markdown-it(html='true') ../blocks/thumb/readme.md
+thumb('img/joker.jpg', 'Джокер', 300, 200)
+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)
include:markdown-it(html='true') blocks/alert/readme.md
include:markdown-it(html='true') ../blocks/alert/readme.md
+alert()
p Обычное сообщение
+close('Закрыть', 'sm')(class='alert__close', aria-label='Закрыть')
......@@ -229,10 +229,10 @@ block content
p Блок сообщения с модификаторами.
+close('Закрыть', 'sm')(class='alert__close', aria-label='Закрыть')
+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)
include:markdown-it(html='true') blocks/menu/readme.md
include:markdown-it(html='true') ../blocks/menu/readme.md
-
var myMenu = [
{
......@@ -251,24 +251,24 @@ block content
];
+menu(myMenu)
+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)
include:markdown-it(html='true') blocks/label/readme.md
include:markdown-it(html='true') ../blocks/label/readme.md
+label('Текст1')
+label('Текст2', '', 'div')
+label('Текст3', '', 'a')(href='/')
+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)
include:markdown-it(html='true') blocks/loader/readme.md
include:markdown-it(html='true') ../blocks/loader/readme.md
+loader()
+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)
include:markdown-it(html='true') blocks/table/readme.md
include:markdown-it(html='true') ../blocks/table/readme.md
+table()
caption Таблица
tr
......@@ -290,10 +290,10 @@ block content
td Пользователь
td Нижняя
+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)
include:markdown-it(html='true') blocks/table-responsive/readme.md
include:markdown-it(html='true') ../blocks/table-responsive/readme.md
+table-responsive()
caption Таблица
thead
......@@ -308,10 +308,10 @@ block content
td(data-label='Имя и фамилия') Джакомо Казанова
td(data-label='Тип мироощущения') Небольшая распущенность с лёгкой примесью леденящих душу извращений, чудовищной лжи и имитатора известного органа, обитого телячьей кожей.
+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)
include:markdown-it(html='true') blocks/pagination/readme.md
include:markdown-it(html='true') ../blocks/pagination/readme.md
+pagination()
+pagination-item('1', '/1')
+pagination-item('...')
......@@ -321,33 +321,33 @@ block content
+pagination-item('...')
+pagination-item('999', '/999')
+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)
include:markdown-it(html='true') blocks/breadcrumbs/readme.md
include:markdown-it(html='true') ../blocks/breadcrumbs/readme.md
+breadcrumbs()
+breadcrumbs-item('Главная', '/home')
+breadcrumbs-item('Услуги', '/services')
+breadcrumbs-item('Стриптиз')
+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)
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('10')(style='height:10px')
+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)
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('64')(data-size='120', data-border='59.9')
+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)
include:markdown-it(html='true') blocks/comment/readme.md
include:markdown-it(html='true') ../blocks/comment/readme.md
+comment({
username: 'Джокер',
avatarURL: 'img/joker.jpg',
......@@ -368,10 +368,10 @@ block content
content: '<p>Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты.</p>',
})
+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)
include:markdown-it(html='true') blocks/embed-responsive/readme.md
include:markdown-it(html='true') ../blocks/embed-responsive/readme.md
style.
@media (min-width: 768px) {
.embed-responsive-demo {
......@@ -398,16 +398,16 @@ block content
+embed-responsive()
iframe(src='https://www.youtube.com/embed/B0Q1rKpDNE4', frameborder='0', allowfullscreen='')
+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)
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>.')]
+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)
include:markdown-it(html='true') blocks/btn/readme.md
include:markdown-it(html='true') ../blocks/btn/readme.md
p.
#[+btn('Кнопка-ссылка')(href='/')]
#[+btn('Кнопка-input', '', true)(name='submit')]
......@@ -417,10 +417,10 @@ block content
#[+btn('Кнопка-input', '', true)(name='submit', disabled='')]
#[+btn('Кнопка-button', 'main')(disabled='')]
+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)
include:markdown-it(html='true') blocks/field-text/readme.md
include:markdown-it(html='true') ../blocks/field-text/readme.md
+field-text({
title: 'Текстовое поле',
helpText: 'Подсказка под полем',
......@@ -442,10 +442,10 @@ block content
})
+field-text()
+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)
include:markdown-it(html='true') blocks/field-checkbox/readme.md
include:markdown-it(html='true') ../blocks/field-checkbox/readme.md
+field-checkbox([
{
title: 'Чекбокс без группы',
......@@ -474,10 +474,10 @@ block content
},
], 'Общее необязательное название')
+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)
include:markdown-it(html='true') blocks/field-radio/readme.md
include:markdown-it(html='true') ../blocks/field-radio/readme.md
+field-radio([
{
title: 'Первый',
......@@ -496,10 +496,10 @@ block content
},
], 'Общее необязательное название')
+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)
include:markdown-it(html='true') blocks/field-toggler/readme.md
include:markdown-it(html='true') ../blocks/field-toggler/readme.md
+field-toggler([
{
title: 'Одиночный переключатель',
......@@ -528,10 +528,10 @@ block content
},
], 'Две радиокнопки', true)
+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)
include:markdown-it(html='true') blocks/field-file/readme.md
include:markdown-it(html='true') ../blocks/field-file/readme.md
+field-file({
title: 'Название',
helpText: 'Подсказка',
......@@ -553,10 +553,10 @@ block content
},
})
+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)
include:markdown-it(html='true') blocks/field-range/readme.md
include:markdown-it(html='true') ../blocks/field-range/readme.md
+field-range({
title: 'Название',
helpText: 'Подсказка',
......@@ -570,10 +570,10 @@ block content
}
})
+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)
include:markdown-it(html='true') blocks/field-select/readme.md
include:markdown-it(html='true') ../blocks/field-select/readme.md
+field-select(
'Название селекта',
{
......@@ -634,17 +634,17 @@ block content
''
)
+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)
include:markdown-it(html='true') blocks/field-actions/readme.md
include:markdown-it(html='true') ../blocks/field-actions/readme.md
+field-actions('* — обязательные поля')
+btn('Отправить')
+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)
include:markdown-it(html='true') blocks/fields-group/readme.md
include:markdown-it(html='true') ../blocks/fields-group/readme.md
+fields-group()
+field-text({
helpText: 'Подсказка',
......@@ -662,10 +662,10 @@ block content
+field-actions()
+btn('Отправить', 'primary')
+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)
include:markdown-it(html='true') blocks/form/readme.md
include:markdown-it(html='true') ../blocks/form/readme.md
+form()
+fieldset('Название1')
+field-text({
......@@ -696,25 +696,25 @@ block content
+field-actions()
+btn('Отправить', 'primary')
+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)
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)
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')
+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')
include:markdown-it(html='true') blocks/to-top/readme.md
include:markdown-it(html='true') ../blocks/to-top/readme.md
+to-top()
+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)
include:markdown-it(html='true') blocks/dropdown/readme.md
include:markdown-it(html='true') ../blocks/dropdown/readme.md
pre.code
code // Факт открытия
code $('#drop-demo-01').closest('.dropdown').on('shown.nth.dropdown', function () {
......@@ -737,10 +737,10 @@ block content
span.menu__item
a.menu__link(href='') Второй пункт
+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)
include:markdown-it(html='true') blocks/owl-carousel/readme.md
include:markdown-it(html='true') ../blocks/owl-carousel/readme.md
+owl-carousel('promo')
div слайд1
div слайд2
......@@ -751,10 +751,10 @@ block content
div слайд7
div слайд8
+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)
include:markdown-it(html='true') blocks/swipe/readme.md
include:markdown-it(html='true') ../blocks/swipe/readme.md
+swipe('swipe-demo')
div слайд1
div слайд2
......@@ -765,19 +765,19 @@ block content
div слайд7
div слайд8
+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)
include:markdown-it(html='true') blocks/nouislider/readme.md
include:markdown-it(html='true') ../blocks/nouislider/readme.md
+nouislider('demo-nouislider')
p(style='margin-top: 1rem;')
input#demo-nouislider-start(type='number', value='10')
input#demo-nouislider-end(type='number', value='80')
+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)
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') Показать/скрыть боковое меню]
+block-lib-code()
pre.code
......@@ -791,7 +791,7 @@ block content
code a(href='#SOME_HASH', data-toggle-native='off-canvas') Показать/скрыть боковое меню и перейти на якорь
+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') Показать модальное окно]
+modal('modal-demo-01', 'Заголовок', 'some')
.modal__body
......@@ -819,10 +819,10 @@ block content
code console.log('hidden.nth.modal');
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)
include:markdown-it(html='true') blocks/tabs/readme.md
include:markdown-it(html='true') ../blocks/tabs/readme.md
+tabs([
{
'id': 'tab00',
......@@ -851,10 +851,10 @@ block content
+tabs-item('tab03')
p Горами в стране, гласных и согласных живут рыбные тексты.3
+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)
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;')
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
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()
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')
......
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
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
title Главная
......
......@@ -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='manifest', href='/site.webmanifest')
link(rel='mask-icon', href='/img/favicon/safari-pinned-tab.svg', color='#5bbad5')
meta(name='msapplication-TileColor', content='#ffffff')
meta(name='theme-color', content='#ffffff')
meta(name='msapplication-TileColor', content='#5bbad5')
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
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