├── src ├── partials │ ├── map-widget │ │ ├── map-widget.js │ │ ├── map-widget.htm │ │ └── map-widget.css │ ├── _example.empty │ │ ├── example.css │ │ ├── example.tpl │ │ └── example.js │ ├── error │ │ ├── error.js │ │ ├── error.css │ │ └── error.htm │ ├── navigation │ │ ├── images │ │ │ └── navigation-1.png │ │ ├── navigation.js │ │ ├── navigation.tpl │ │ └── navigation.css │ ├── about-us │ │ ├── about-us.js │ │ ├── about-us.tpl │ │ └── about-us.css │ ├── portfolio │ │ ├── portfolio.js │ │ ├── portfolio.tpl │ │ └── portfolio.css │ ├── contacts │ │ ├── contacts.js │ │ ├── contacts.tpl │ │ └── contacts.css │ ├── site-footer │ │ ├── site-footer.tpl │ │ ├── site-footer.js │ │ └── site-footer.css │ ├── scripts.htm │ ├── promo │ │ ├── promo.js │ │ ├── promo.tpl │ │ └── promo.css │ ├── reviews │ │ ├── reviews.js │ │ ├── reviews.tpl │ │ └── reviews.css │ ├── head.htm │ └── app.js ├── version.yaml ├── assets │ ├── icons │ │ ├── favicon.ico │ │ ├── favicon-128.png │ │ ├── mstile-70x70.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon-96x96.png │ │ ├── mstile-144x144.png │ │ ├── mstile-150x150.png │ │ ├── mstile-310x150.png │ │ ├── mstile-310x310.png │ │ ├── favicon-196x196.png │ │ ├── apple-touch-icon-57x57.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-72x72.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon-114x114.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-144x144.png │ │ └── apple-touch-icon-152x152.png │ ├── dev │ │ ├── img │ │ │ ├── avatar │ │ │ │ ├── ava1.jpg │ │ │ │ ├── ava10.jpg │ │ │ │ ├── ava2.jpg │ │ │ │ ├── ava3.jpg │ │ │ │ ├── ava4.jpg │ │ │ │ ├── ava5.jpg │ │ │ │ ├── ava6.jpg │ │ │ │ ├── ava7.jpg │ │ │ │ ├── ava8.jpg │ │ │ │ └── ava9.jpg │ │ │ ├── images │ │ │ │ ├── img1.jpg │ │ │ │ ├── img10.jpg │ │ │ │ ├── img2.jpg │ │ │ │ ├── img3.jpg │ │ │ │ ├── img4.jpg │ │ │ │ ├── img5.jpg │ │ │ │ ├── img6.jpg │ │ │ │ ├── img7.jpg │ │ │ │ ├── img8.jpg │ │ │ │ └── img9.jpg │ │ │ └── logos │ │ │ │ ├── logo1.png │ │ │ │ ├── logo2.png │ │ │ │ ├── logo3.png │ │ │ │ ├── logo5.png │ │ │ │ ├── logo6.png │ │ │ │ ├── logo7.png │ │ │ │ ├── logo8.png │ │ │ │ └── logo9.png │ │ ├── outlines.js │ │ ├── jquery.pixlayout.config.js │ │ ├── remove-BOM.php │ │ ├── typography.md │ │ └── jquery.pixlayout.0.9.7.js │ ├── images │ │ ├── theme-preview.png │ │ ├── marketplace-banner.png │ │ ├── theme--main--laptop.jpg │ │ ├── marketplace-screenshot-1.jpg │ │ ├── marketplace-screenshot-2.jpg │ │ ├── marketplace-screenshot-3.jpg │ │ ├── marketplace-screenshot-4.jpg │ │ └── marketplace-screenshot-5.jpg │ ├── forms │ │ ├── images │ │ │ └── forms-arr.png │ │ ├── send-form.php │ │ ├── send-form.css │ │ └── send-form.js │ ├── fonts │ │ ├── Lightcase │ │ │ ├── lightcase.eot │ │ │ ├── lightcase.ttf │ │ │ ├── lightcase.woff │ │ │ └── lightcase.svg │ │ ├── OpenSansBold │ │ │ ├── OpenSansBold.eot │ │ │ ├── OpenSansBold.ttf │ │ │ └── OpenSansBold.woff │ │ ├── OpenSansLight │ │ │ ├── OpenSansLight.eot │ │ │ ├── OpenSansLight.ttf │ │ │ └── OpenSansLight.woff │ │ ├── OpenSansRegular │ │ │ ├── OpenSansRegular.eot │ │ │ ├── OpenSansRegular.ttf │ │ │ └── OpenSansRegular.woff │ │ ├── OpenSansExtraBold │ │ │ ├── OpenSansExtraBold.eot │ │ │ ├── OpenSansExtraBold.ttf │ │ │ └── OpenSansExtraBold.woff │ │ └── fonts.css │ ├── typography │ │ ├── images │ │ │ └── typography-li-icon.png │ │ ├── typography.js │ │ └── typography.css │ ├── grid │ │ ├── grid.js │ │ └── grid.css │ └── app │ │ ├── app.css │ │ └── app.js ├── pages │ ├── error.htm │ ├── 404.htm │ └── home.htm ├── layouts │ └── main.htm ├── manifest.json └── theme.yaml ├── .bowerrc ├── .gitignore ├── themes └── juicy │ ├── version.yaml │ ├── assets │ ├── icons │ │ ├── favicon.ico │ │ ├── favicon-128.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon-96x96.png │ │ ├── mstile-70x70.png │ │ ├── favicon-196x196.png │ │ ├── mstile-144x144.png │ │ ├── mstile-150x150.png │ │ ├── mstile-310x150.png │ │ ├── mstile-310x310.png │ │ ├── apple-touch-icon-57x57.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-72x72.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon-114x114.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-144x144.png │ │ └── apple-touch-icon-152x152.png │ ├── images │ │ ├── forms-arr.png │ │ ├── navigation-1.png │ │ ├── theme-preview.png │ │ ├── marketplace-banner.png │ │ ├── theme--main--laptop.jpg │ │ ├── typography-li-icon.png │ │ ├── marketplace-screenshot-1.jpg │ │ ├── marketplace-screenshot-2.jpg │ │ ├── marketplace-screenshot-3.jpg │ │ ├── marketplace-screenshot-4.jpg │ │ └── marketplace-screenshot-5.jpg │ ├── fonts │ │ ├── Lightcase │ │ │ ├── lightcase.eot │ │ │ ├── lightcase.ttf │ │ │ ├── lightcase.woff │ │ │ └── lightcase.svg │ │ ├── OpenSansBold │ │ │ ├── OpenSansBold.eot │ │ │ ├── OpenSansBold.ttf │ │ │ └── OpenSansBold.woff │ │ ├── OpenSansLight │ │ │ ├── OpenSansLight.eot │ │ │ ├── OpenSansLight.ttf │ │ │ └── OpenSansLight.woff │ │ ├── OpenSansRegular │ │ │ ├── OpenSansRegular.eot │ │ │ ├── OpenSansRegular.ttf │ │ │ └── OpenSansRegular.woff │ │ └── OpenSansExtraBold │ │ │ ├── OpenSansExtraBold.eot │ │ │ ├── OpenSansExtraBold.ttf │ │ │ └── OpenSansExtraBold.woff │ └── forms │ │ └── send-form.php │ ├── partials │ ├── map-widget │ │ └── map-widget.htm │ ├── error │ │ └── error.htm │ ├── scripts.htm │ └── head.htm │ ├── pages │ ├── error.htm │ ├── 404.htm │ └── home.htm │ ├── layouts │ └── main.htm │ ├── manifest.json │ └── theme.yaml ├── README.md ├── package.json ├── webpack.config.js ├── bower.json └── gulpfile.js /src/partials/map-widget/map-widget.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/partials/_example.empty/example.css: -------------------------------------------------------------------------------- 1 | /**/ -------------------------------------------------------------------------------- /src/partials/_example.empty/example.tpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bower_components" 3 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.zip 2 | **/*.db 3 | .spec 4 | incoming/ 5 | bower_components/* 6 | node_modules/* -------------------------------------------------------------------------------- /src/version.yaml: -------------------------------------------------------------------------------- 1 | 1.0.1: First Juicy Theme version 2 | 1.0.2: Add fullpage screenshot to readme file -------------------------------------------------------------------------------- /themes/juicy/version.yaml: -------------------------------------------------------------------------------- 1 | 1.0.1: First Juicy Theme version 2 | 1.0.2: Add fullpage screenshot to readme file -------------------------------------------------------------------------------- /src/assets/icons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/favicon.ico -------------------------------------------------------------------------------- /src/partials/error/error.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready(function ($) { 2 | 3 | // comment_text (VENDOR: vendor_name) 4 | 5 | }); -------------------------------------------------------------------------------- /src/assets/icons/favicon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/favicon-128.png -------------------------------------------------------------------------------- /src/assets/icons/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/mstile-70x70.png -------------------------------------------------------------------------------- /src/assets/dev/img/avatar/ava1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/avatar/ava1.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/avatar/ava10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/avatar/ava10.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/avatar/ava2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/avatar/ava2.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/avatar/ava3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/avatar/ava3.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/avatar/ava4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/avatar/ava4.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/avatar/ava5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/avatar/ava5.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/avatar/ava6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/avatar/ava6.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/avatar/ava7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/avatar/ava7.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/avatar/ava8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/avatar/ava8.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/avatar/ava9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/avatar/ava9.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/images/img1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/images/img1.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/images/img10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/images/img10.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/images/img2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/images/img2.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/images/img3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/images/img3.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/images/img4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/images/img4.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/images/img5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/images/img5.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/images/img6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/images/img6.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/images/img7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/images/img7.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/images/img8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/images/img8.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/images/img9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/images/img9.jpg -------------------------------------------------------------------------------- /src/assets/dev/img/logos/logo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/logos/logo1.png -------------------------------------------------------------------------------- /src/assets/dev/img/logos/logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/logos/logo2.png -------------------------------------------------------------------------------- /src/assets/dev/img/logos/logo3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/logos/logo3.png -------------------------------------------------------------------------------- /src/assets/dev/img/logos/logo5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/logos/logo5.png -------------------------------------------------------------------------------- /src/assets/dev/img/logos/logo6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/logos/logo6.png -------------------------------------------------------------------------------- /src/assets/dev/img/logos/logo7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/logos/logo7.png -------------------------------------------------------------------------------- /src/assets/dev/img/logos/logo8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/logos/logo8.png -------------------------------------------------------------------------------- /src/assets/dev/img/logos/logo9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/dev/img/logos/logo9.png -------------------------------------------------------------------------------- /src/assets/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/favicon-16x16.png -------------------------------------------------------------------------------- /src/assets/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/favicon-32x32.png -------------------------------------------------------------------------------- /src/assets/icons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/favicon-96x96.png -------------------------------------------------------------------------------- /src/assets/icons/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/mstile-144x144.png -------------------------------------------------------------------------------- /src/assets/icons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/mstile-150x150.png -------------------------------------------------------------------------------- /src/assets/icons/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/mstile-310x150.png -------------------------------------------------------------------------------- /src/assets/icons/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/mstile-310x310.png -------------------------------------------------------------------------------- /src/assets/images/theme-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/images/theme-preview.png -------------------------------------------------------------------------------- /src/assets/forms/images/forms-arr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/forms/images/forms-arr.png -------------------------------------------------------------------------------- /src/assets/icons/favicon-196x196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/favicon-196x196.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/favicon.ico -------------------------------------------------------------------------------- /src/assets/fonts/Lightcase/lightcase.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/Lightcase/lightcase.eot -------------------------------------------------------------------------------- /src/assets/fonts/Lightcase/lightcase.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/Lightcase/lightcase.ttf -------------------------------------------------------------------------------- /src/assets/images/marketplace-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/images/marketplace-banner.png -------------------------------------------------------------------------------- /themes/juicy/assets/images/forms-arr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/images/forms-arr.png -------------------------------------------------------------------------------- /src/assets/fonts/Lightcase/lightcase.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/Lightcase/lightcase.woff -------------------------------------------------------------------------------- /src/assets/icons/apple-touch-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/apple-touch-icon-57x57.png -------------------------------------------------------------------------------- /src/assets/icons/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /src/assets/icons/apple-touch-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/apple-touch-icon-72x72.png -------------------------------------------------------------------------------- /src/assets/icons/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /src/assets/images/theme--main--laptop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/images/theme--main--laptop.jpg -------------------------------------------------------------------------------- /themes/juicy/assets/icons/favicon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/favicon-128.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/favicon-16x16.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/favicon-32x32.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/favicon-96x96.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/mstile-70x70.png -------------------------------------------------------------------------------- /themes/juicy/assets/images/navigation-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/images/navigation-1.png -------------------------------------------------------------------------------- /src/assets/icons/apple-touch-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/apple-touch-icon-114x114.png -------------------------------------------------------------------------------- /src/assets/icons/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /src/assets/icons/apple-touch-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/apple-touch-icon-144x144.png -------------------------------------------------------------------------------- /src/assets/icons/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/icons/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/favicon-196x196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/favicon-196x196.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/mstile-144x144.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/mstile-150x150.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/mstile-310x150.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/mstile-310x310.png -------------------------------------------------------------------------------- /themes/juicy/assets/images/theme-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/images/theme-preview.png -------------------------------------------------------------------------------- /src/assets/fonts/OpenSansBold/OpenSansBold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/OpenSansBold/OpenSansBold.eot -------------------------------------------------------------------------------- /src/assets/fonts/OpenSansBold/OpenSansBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/OpenSansBold/OpenSansBold.ttf -------------------------------------------------------------------------------- /src/assets/fonts/OpenSansBold/OpenSansBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/OpenSansBold/OpenSansBold.woff -------------------------------------------------------------------------------- /src/assets/fonts/OpenSansLight/OpenSansLight.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/OpenSansLight/OpenSansLight.eot -------------------------------------------------------------------------------- /src/assets/fonts/OpenSansLight/OpenSansLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/OpenSansLight/OpenSansLight.ttf -------------------------------------------------------------------------------- /src/assets/images/marketplace-screenshot-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/images/marketplace-screenshot-1.jpg -------------------------------------------------------------------------------- /src/assets/images/marketplace-screenshot-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/images/marketplace-screenshot-2.jpg -------------------------------------------------------------------------------- /src/assets/images/marketplace-screenshot-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/images/marketplace-screenshot-3.jpg -------------------------------------------------------------------------------- /src/assets/images/marketplace-screenshot-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/images/marketplace-screenshot-4.jpg -------------------------------------------------------------------------------- /src/assets/images/marketplace-screenshot-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/images/marketplace-screenshot-5.jpg -------------------------------------------------------------------------------- /src/partials/_example.empty/example.js: -------------------------------------------------------------------------------- 1 | // Vue.component('00000', { 2 | // delimiters: ['[[', ']]'], 3 | // template: require('./00000/00000.tpl') 4 | // }); -------------------------------------------------------------------------------- /src/partials/navigation/images/navigation-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/partials/navigation/images/navigation-1.png -------------------------------------------------------------------------------- /src/assets/fonts/OpenSansLight/OpenSansLight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/OpenSansLight/OpenSansLight.woff -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/Lightcase/lightcase.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/Lightcase/lightcase.eot -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/Lightcase/lightcase.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/Lightcase/lightcase.ttf -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/Lightcase/lightcase.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/Lightcase/lightcase.woff -------------------------------------------------------------------------------- /themes/juicy/assets/images/marketplace-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/images/marketplace-banner.png -------------------------------------------------------------------------------- /themes/juicy/assets/images/theme--main--laptop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/images/theme--main--laptop.jpg -------------------------------------------------------------------------------- /themes/juicy/assets/images/typography-li-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/images/typography-li-icon.png -------------------------------------------------------------------------------- /src/assets/fonts/OpenSansRegular/OpenSansRegular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/OpenSansRegular/OpenSansRegular.eot -------------------------------------------------------------------------------- /src/assets/fonts/OpenSansRegular/OpenSansRegular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/OpenSansRegular/OpenSansRegular.ttf -------------------------------------------------------------------------------- /src/assets/fonts/OpenSansRegular/OpenSansRegular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/OpenSansRegular/OpenSansRegular.woff -------------------------------------------------------------------------------- /src/assets/typography/images/typography-li-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/typography/images/typography-li-icon.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/apple-touch-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/apple-touch-icon-57x57.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/apple-touch-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/apple-touch-icon-72x72.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/OpenSansBold/OpenSansBold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/OpenSansBold/OpenSansBold.eot -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/OpenSansBold/OpenSansBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/OpenSansBold/OpenSansBold.ttf -------------------------------------------------------------------------------- /themes/juicy/assets/icons/apple-touch-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/apple-touch-icon-114x114.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/apple-touch-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/apple-touch-icon-144x144.png -------------------------------------------------------------------------------- /themes/juicy/assets/icons/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/icons/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /themes/juicy/assets/images/marketplace-screenshot-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/images/marketplace-screenshot-1.jpg -------------------------------------------------------------------------------- /themes/juicy/assets/images/marketplace-screenshot-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/images/marketplace-screenshot-2.jpg -------------------------------------------------------------------------------- /themes/juicy/assets/images/marketplace-screenshot-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/images/marketplace-screenshot-3.jpg -------------------------------------------------------------------------------- /themes/juicy/assets/images/marketplace-screenshot-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/images/marketplace-screenshot-4.jpg -------------------------------------------------------------------------------- /themes/juicy/assets/images/marketplace-screenshot-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/images/marketplace-screenshot-5.jpg -------------------------------------------------------------------------------- /src/assets/fonts/OpenSansExtraBold/OpenSansExtraBold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/OpenSansExtraBold/OpenSansExtraBold.eot -------------------------------------------------------------------------------- /src/assets/fonts/OpenSansExtraBold/OpenSansExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/OpenSansExtraBold/OpenSansExtraBold.ttf -------------------------------------------------------------------------------- /src/assets/fonts/OpenSansExtraBold/OpenSansExtraBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/src/assets/fonts/OpenSansExtraBold/OpenSansExtraBold.woff -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/OpenSansBold/OpenSansBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/OpenSansBold/OpenSansBold.woff -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/OpenSansLight/OpenSansLight.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/OpenSansLight/OpenSansLight.eot -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/OpenSansLight/OpenSansLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/OpenSansLight/OpenSansLight.ttf -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/OpenSansLight/OpenSansLight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/OpenSansLight/OpenSansLight.woff -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/OpenSansRegular/OpenSansRegular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/OpenSansRegular/OpenSansRegular.eot -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/OpenSansRegular/OpenSansRegular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/OpenSansRegular/OpenSansRegular.ttf -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/OpenSansRegular/OpenSansRegular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/OpenSansRegular/OpenSansRegular.woff -------------------------------------------------------------------------------- /src/partials/error/error.css: -------------------------------------------------------------------------------- 1 | .error { 2 | position: absolute; 3 | top: 50%; 4 | left: 50%; 5 | z-index: 1; 6 | text-align: center; 7 | transform: translate(-50%, -50%); 8 | } -------------------------------------------------------------------------------- /src/partials/map-widget/map-widget.htm: -------------------------------------------------------------------------------- 1 | description = "asdsad" 2 | 3 | [viewBag] 4 | == 5 |
6 | {{ this.theme.map_widget_code | raw }} 7 |
-------------------------------------------------------------------------------- /themes/juicy/assets/fonts/OpenSansExtraBold/OpenSansExtraBold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/OpenSansExtraBold/OpenSansExtraBold.eot -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/OpenSansExtraBold/OpenSansExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/OpenSansExtraBold/OpenSansExtraBold.ttf -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/OpenSansExtraBold/OpenSansExtraBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-lit/octobercms-juicy-theme/HEAD/themes/juicy/assets/fonts/OpenSansExtraBold/OpenSansExtraBold.woff -------------------------------------------------------------------------------- /themes/juicy/partials/map-widget/map-widget.htm: -------------------------------------------------------------------------------- 1 | description = "asdsad" 2 | 3 | [viewBag] 4 | == 5 |
6 | {{ this.theme.map_widget_code | raw }} 7 |
-------------------------------------------------------------------------------- /src/pages/error.htm: -------------------------------------------------------------------------------- 1 | title = "Error page (500)" 2 | url = "/error" 3 | layout = "main" 4 | description = "Server error" 5 | is_hidden = 0 6 | == 7 | {% partial 'error' 8 | title = ':(' 9 | description = 'Server error' 10 | %} 11 | -------------------------------------------------------------------------------- /src/partials/about-us/about-us.js: -------------------------------------------------------------------------------- 1 | Vue.component('about-us', { 2 | delimiters: ['[[', ']]'], 3 | template: require('./about-us/about-us.tpl'), 4 | props: [ 5 | 'title', 6 | 'description', 7 | 'items' 8 | ] 9 | }); -------------------------------------------------------------------------------- /themes/juicy/pages/error.htm: -------------------------------------------------------------------------------- 1 | title = "Error page (500)" 2 | url = "/error" 3 | layout = "main" 4 | description = "Server error" 5 | is_hidden = 0 6 | == 7 | {% partial 'error' 8 | title = ':(' 9 | description = 'Server error' 10 | %} 11 | -------------------------------------------------------------------------------- /src/pages/404.htm: -------------------------------------------------------------------------------- 1 | title = "Page not found (404)" 2 | url = "/404" 3 | layout = "main" 4 | description = "404 - Page not found" 5 | is_hidden = 0 6 | == 7 | {% partial 'error/error' 8 | title = ':(' 9 | description = '404 - Page not found' 10 | %} 11 | -------------------------------------------------------------------------------- /themes/juicy/pages/404.htm: -------------------------------------------------------------------------------- 1 | title = "Page not found (404)" 2 | url = "/404" 3 | layout = "main" 4 | description = "404 - Page not found" 5 | is_hidden = 0 6 | == 7 | {% partial 'error/error' 8 | title = ':(' 9 | description = '404 - Page not found' 10 | %} 11 | -------------------------------------------------------------------------------- /src/partials/error/error.htm: -------------------------------------------------------------------------------- 1 | description = "Информация об ошибке" 2 | 3 | [viewBag] 4 | == 5 | 8 | == 9 |
10 | 11 |

{{ title }}

12 |

{{ description }}

13 | 14 |
15 | -------------------------------------------------------------------------------- /src/partials/portfolio/portfolio.js: -------------------------------------------------------------------------------- 1 | Vue.component('portfolio', { 2 | delimiters: ['[[', ']]'], 3 | template: require('./portfolio/portfolio.tpl'), 4 | props: [ 5 | 'title', 6 | 'description', 7 | 'images', 8 | 'color' 9 | ] 10 | }); -------------------------------------------------------------------------------- /themes/juicy/partials/error/error.htm: -------------------------------------------------------------------------------- 1 | description = "Информация об ошибке" 2 | 3 | [viewBag] 4 | == 5 | 8 | == 9 |
10 | 11 |

{{ title }}

12 |

{{ description }}

13 | 14 |
15 | -------------------------------------------------------------------------------- /src/assets/dev/outlines.js: -------------------------------------------------------------------------------- 1 | // подсветка блоков 2 | jQuery(document).ready(function ($) { 3 | var myFunction = function (a) { 4 | [].forEach.call($($("*")), function (a) { 5 | a.style.boxShadow = "inset 0 0 0 1px #" + (~~(Math.random() * (1 << 24))).toString(16) 6 | }) 7 | }; 8 | myFunction('*'); 9 | }); -------------------------------------------------------------------------------- /src/assets/dev/jquery.pixlayout.config.js: -------------------------------------------------------------------------------- 1 | // jQuery(document).ready(function($) { 2 | // $.pixlayout({ 3 | // src: "/themes/toys-store/assets/images/theme-page--home.jpg", 4 | // show: false, 5 | // top: 0, 6 | // left: -64, 7 | // opacity: 0.2 8 | // }); 9 | // }); -------------------------------------------------------------------------------- /src/partials/contacts/contacts.js: -------------------------------------------------------------------------------- 1 | Vue.component('contacts', { 2 | delimiters: ['[[', ']]'], 3 | template: require('./contacts/contacts.tpl'), 4 | props: [ 5 | 'title', 6 | 'subtitle', 7 | 'items', 8 | 'backgroundColor', 9 | 'contentBackgroundColor', 10 | ] 11 | }); -------------------------------------------------------------------------------- /src/partials/map-widget/map-widget.css: -------------------------------------------------------------------------------- 1 | .map-widget { 2 | position: relative; 3 | width: 100%; 4 | height: 32rem; 5 | background-color: #fff; 6 | @media screen and (--mobile) { 7 | height: 100vmin; 8 | } 9 | & iframe { 10 | width: 100%; 11 | height: 100%; 12 | } 13 | } -------------------------------------------------------------------------------- /src/partials/site-footer/site-footer.tpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/partials/site-footer/site-footer.js: -------------------------------------------------------------------------------- 1 | Vue.component('site-footer', { 2 | delimiters: ['[[', ']]'], 3 | template: require('./site-footer/site-footer.tpl'), 4 | props: [ 5 | 'company', 6 | 'backgroundColor' 7 | ], 8 | computed: { 9 | year: function () { 10 | currentYear = new Date().getFullYear(); 11 | return currentYear; 12 | } 13 | } 14 | }); -------------------------------------------------------------------------------- /src/partials/scripts.htm: -------------------------------------------------------------------------------- 1 | description = "Скрипты в конце шаблона" 2 | 3 | [viewBag] 4 | 5 | == 6 | 9 | == 10 | 11 | {# Scripts #} 12 | 13 | 14 | 15 | {# Framework Extras #} 16 | {#{% framework extras %}#} 17 | 18 | {# Components Scripts #} 19 | {% if scripts %}{% scripts %}{% endif %} 20 | -------------------------------------------------------------------------------- /themes/juicy/partials/scripts.htm: -------------------------------------------------------------------------------- 1 | description = "Скрипты в конце шаблона" 2 | 3 | [viewBag] 4 | 5 | == 6 | 9 | == 10 | 11 | {# Scripts #} 12 | 13 | 14 | 15 | {# Framework Extras #} 16 | {#{% framework extras %}#} 17 | 18 | {# Components Scripts #} 19 | {% if scripts %}{% scripts %}{% endif %} 20 | -------------------------------------------------------------------------------- /src/partials/site-footer/site-footer.css: -------------------------------------------------------------------------------- 1 | .site-footer { 2 | position: relative; 3 | z-index: 1; 4 | width: 100%; 5 | padding: 2rem 1rem 2rem; 6 | text-align: center; 7 | color: #fff; 8 | background-color: #1f2229; 9 | } 10 | 11 | .site-footer__content-wrap { 12 | display: flex; 13 | width: 100%; 14 | max-width: 1120px; 15 | margin: 0 auto; 16 | justify-content: center; 17 | flex-wrap: wrap; 18 | text-align: center; 19 | } 20 | .site-footer__company { 21 | 22 | } -------------------------------------------------------------------------------- /src/assets/grid/grid.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready(function ($) { 2 | 3 | // stickySidebar = function () { 4 | // if ($([data - sticky]).length) { 5 | // $('[data-sticky]').theiaStickySidebar({ 6 | // additionalMarginTop: 16 7 | // }); 8 | // }; 9 | // }; 10 | // if ($(document).width() >= 1120) { 11 | // setTimeout(stickySidebar, 0); 12 | // }; 13 | // $(window).resize(function () { 14 | // setTimeout(stickySidebar, 0); 15 | // }); 16 | 17 | }); -------------------------------------------------------------------------------- /src/partials/promo/promo.js: -------------------------------------------------------------------------------- 1 | Vue.component('promo', { 2 | delimiters: ['[[', ']]'], 3 | template: require('./promo/promo.tpl'), 4 | props: [ 5 | 'title', 6 | 'subtitle', 7 | 'buttonText', 8 | 'images' 9 | ], 10 | mounted() { 11 | var promoSlideshow = new Swiper('.promo [data-slideshow]', { 12 | paginationClickable: true, 13 | spaceBetween: 0, 14 | centeredSlides: true, 15 | autoplay: 4000, 16 | autoplayDisableOnInteraction: false, 17 | loop: true, 18 | speed: 1500, 19 | effect: 'fade' 20 | }); 21 | } 22 | }); -------------------------------------------------------------------------------- /src/partials/reviews/reviews.js: -------------------------------------------------------------------------------- 1 | Vue.component('reviews', { 2 | delimiters: ['[[', ']]'], 3 | template: require('./reviews/reviews.tpl'), 4 | props: [ 5 | 'title', 6 | 'items', 7 | 'color' 8 | ], 9 | mounted() { 10 | var vm = this; 11 | 12 | var revievsSlideshow = new Swiper('.reviews [data-slideshow]', { 13 | pagination: '.reviews [data-pagination]', 14 | paginationClickable: true, 15 | autoplay: 4000, 16 | loop: true, 17 | speed: 1500, 18 | autoplayDisableOnInteraction: false, 19 | grabCursor: true 20 | }); 21 | 22 | } 23 | }); -------------------------------------------------------------------------------- /src/partials/navigation/navigation.js: -------------------------------------------------------------------------------- 1 | Vue.component('navigation', { 2 | delimiters: ['[[', ']]'], 3 | template: require('./navigation/navigation.tpl'), 4 | props: [ 5 | 'logo', 6 | 'enabledComponents' 7 | ], 8 | methods: { 9 | fixMenu() { 10 | if ($(document).scrollTop() != 0) { 11 | $('#navigation').addClass('navigation--fixed'); 12 | } else { 13 | $('#navigation').removeClass('navigation--fixed'); 14 | } 15 | } 16 | }, 17 | mounted() { 18 | 19 | const vm = this; 20 | 21 | vm.fixMenu(); 22 | $(window).scroll(function () { 23 | vm.fixMenu(); 24 | }); 25 | } 26 | }); -------------------------------------------------------------------------------- /src/partials/portfolio/portfolio.tpl: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
[[ title ]]
5 |
6 | 7 |
8 |
12 | 13 |
22 | 23 |
24 |
-------------------------------------------------------------------------------- /src/partials/promo/promo.tpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |

[[ title ]]

4 | [[ subtitle ]] 5 | 11 |
12 |
13 |
14 | 15 |
19 | 20 |
21 |
22 |
-------------------------------------------------------------------------------- /src/partials/about-us/about-us.tpl: -------------------------------------------------------------------------------- 1 |
2 |
3 |
[[ title ]]
4 |
5 |
6 | 7 |
11 |
15 |

[[ item.title ]]

16 |
17 |
18 | 19 |
20 |
21 |
-------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | This theme demonstrates how awesome and simple to create web applications using modern frontend frameworks and the power of OctoberCMS. 4 | 5 | Theme build on Vue.js and can be configured with UI from backend. 6 | 7 | All components are fully responsive without Bootstrap dependency. You can use any of included components or make your own with vue.js or not. 8 | 9 | So, you can build something like this: 10 | 11 | ![banner](https://raw.githubusercontent.com/web2easy/OctoberCMS-Juicy-Theme/master/src/assets/images/theme--main--laptop.jpg) 12 | 13 | ## Available components 14 | 15 | - Navigation 16 | - Promo 17 | - Portfolio 18 | - About us 19 | - Reviews 20 | - Contacts 21 | - Map widget 22 | - Site footer 23 | 24 | If you are wondering how the components work or you want to make your own based on them - welcome to Github repository. -------------------------------------------------------------------------------- /src/partials/contacts/contacts.tpl: -------------------------------------------------------------------------------- 1 |
6 |
7 |
[[ title ]]
8 |

[[ subtitle ]]

9 |
13 | 14 |
19 |

[[ item.title ]]

20 |
21 |
22 | 23 |
24 |
25 |
-------------------------------------------------------------------------------- /src/layouts/main.htm: -------------------------------------------------------------------------------- 1 | description = "Шаблон главной страницы" 2 | 3 | == 4 | 5 | 6 | 20 | 21 | 22 | 23 | 24 | {% partial 'head' %} 25 | 26 | 27 | 28 | 29 |
30 | 31 | {% page %} 32 | 33 |
34 | 35 | {% partial 'scripts' %} 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/partials/navigation/navigation.tpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/juicy/layouts/main.htm: -------------------------------------------------------------------------------- 1 | description = "Шаблон главной страницы" 2 | 3 | == 4 | 5 | 6 | 20 | 21 | 22 | 23 | 24 | {% partial 'head' %} 25 | 26 | 27 | 28 | 29 |
30 | 31 | {% page %} 32 | 33 |
34 | 35 | {% partial 'scripts' %} 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/assets/typography/typography.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready(function ($) { 2 | 3 | //images padding 4 | $('.typography img').each(function () { 5 | if ($(this).css('float') == 'left') { 6 | $(this).css({ 7 | marginRight: '1em' 8 | }) 9 | } else if ($(this).css('float') == 'right') { 10 | $(this).css({ 11 | marginLeft: '1em' 12 | }) 13 | } 14 | }); 15 | 16 | //remove empty

tags 17 | $('.typography p').filter(function () { 18 | return $.trim($(this).text()) === '' && $(this).children().length == 0 19 | }).remove(); 20 | 21 | //srcollable tables 22 | function srcollableTables() { 23 | $('.typography table').each(function () { 24 | if ($(this).width() >= ($(window).width() - $('.js-sticky-sidebar').width())) { 25 | $(this).css({ 26 | display: 'block' 27 | }) 28 | } else { 29 | $(this).css({ 30 | display: 'table' 31 | }) 32 | } 33 | }); 34 | } 35 | srcollableTables(); 36 | $(window).resize(function () { 37 | srcollableTables(); 38 | }); 39 | 40 | }); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "web2easy-boilerplate", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "gulpfile.js", 6 | "dependencies": { 7 | "vue": "^2.2.6" 8 | }, 9 | "devDependencies": { 10 | "babel-preset-latest": "^6.16.0", 11 | "cssnano": "^3.6.2", 12 | "del": "^2.2.1", 13 | "gulp": "^3.9.1", 14 | "gulp-babel": "^6.1.2", 15 | "gulp-changed": "^1.3.0", 16 | "gulp-concat": "^2.6.0", 17 | "gulp-css-base64": "^1.3.4", 18 | "gulp-flatten": "^0.3.1", 19 | "gulp-imagemin": "^3.0.1", 20 | "gulp-livereload": "^3.8.1", 21 | "gulp-postcss": "^6.1.1", 22 | "gulp-rename": "^1.2.2", 23 | "gulp-sourcemaps": "^1.6.0", 24 | "gulp-uglify": "^1.5.3", 25 | "html-loader": "^0.4.5", 26 | "postcss": "^5.0.21", 27 | "postcss-cssnext": "^2.5.2", 28 | "webpack": "^2.3.2", 29 | "webpack-stream": "^3.2.0" 30 | }, 31 | "scripts": { 32 | "postinstall": "bower install" 33 | }, 34 | "author": "Alexey Litovchenko", 35 | "license": "ISC" 36 | } 37 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | //const NODE_ENV = process.env.NODE_ENV || 'development'; 4 | // const webpack = require('webpack'); 5 | 6 | module.exports = { 7 | // entry: "./src/partials/**/*.js", 8 | 9 | // output: { 10 | // path: "./dist/assets/scripts", 11 | // filename: 'app.js', 12 | // library: 'app' 13 | // }, 14 | 15 | // watch: NODE_ENV == 'development', 16 | // watchOptions: { 17 | // aggregateTimeout: 300 18 | // }, 19 | 20 | module: { 21 | 22 | // loaders: [{ 23 | // test: /\.htm$/, 24 | // loader: "html-loader" 25 | // }], 26 | rules: [{ 27 | test: /\.tpl$/, 28 | use: [{ 29 | loader: 'html-loader', 30 | options: { 31 | minimize: true, 32 | removeComments: false, 33 | collapseWhitespace: true 34 | } 35 | }], 36 | }] 37 | }, 38 | 39 | //devtool: NODE_ENV == 'development' ? 'source-map' : null, 40 | 41 | plugins: [ 42 | //new webpack.EnvironmentPlugin('NODE_ENV') 43 | ] 44 | 45 | } -------------------------------------------------------------------------------- /src/assets/grid/grid.css: -------------------------------------------------------------------------------- 1 | .grid { 2 | position: relative; 3 | width: 100%; 4 | max-width: 1120px; 5 | min-height: inherit; 6 | margin: 0 auto; 7 | padding-bottom: 2rem; 8 | display: flex; 9 | flex-wrap: wrap; 10 | justify-content: space-between; 11 | } 12 | 13 | .grid::after { 14 | display: none; 15 | } 16 | 17 | .grid__main { 18 | width: calc(75% - .5rem); 19 | float: right; 20 | background-color: #fff; 21 | margin-bottom: 2rem; 22 | margin-top: 4rem; 23 | } 24 | 25 | .grid__sidebar { 26 | margin-top: 4rem; 27 | width: calc(25% - .5rem); 28 | float: left; 29 | margin-bottom: 2rem; 30 | } 31 | 32 | @media screen and (max-width: 1120px) { 33 | .grid { 34 | padding-top: 0; 35 | padding-bottom: 1em; 36 | } 37 | .grid::after {} 38 | .grid__main { 39 | width: 100%; 40 | padding-top: 50px; 41 | order: 1; 42 | margin-top: 0; 43 | } 44 | .grid__sidebar { 45 | width: 100%; 46 | position: relative; 47 | z-index: 100; 48 | order: 2; 49 | margin-top: 0; 50 | padding: 0 1rem; 51 | } 52 | } 53 | 54 | @media screen and (max-width: 768px) { 55 | .grid {} 56 | .grid::after {} 57 | .grid__main {} 58 | .grid__sidebar {} 59 | } -------------------------------------------------------------------------------- /src/partials/reviews/reviews.tpl: -------------------------------------------------------------------------------- 1 |

6 |
7 | 8 |
[[ title ]]
9 | 10 |
11 |
12 | 13 |
17 |
21 | [[ item.name ]] 22 | [[ item.info ]] 23 |
24 |
25 | 26 |
27 | 28 |
29 | 30 |
31 |
32 |
-------------------------------------------------------------------------------- /src/assets/forms/send-form.php: -------------------------------------------------------------------------------- 1 | '. $subj .''; 16 | $msg.= '

Дата: '. date('m.d.Y H:i:s') .'

'; 17 | 18 | foreach ($data as $item) { 19 | $msg.= '

' . $item['label'] . ': ' . $item['value'] . '

'; 20 | } 21 | 22 | $msg = ' 23 | 24 | 25 | '.$subj.' 26 | 27 | 28 |
29 |
30 | ' . $msg . '
31 |
32 | 33 | '; 34 | 35 | $h = 'MIME-Version: 1.0' . "\r\n"; 36 | $h .= 'Content-type: text/html; charset=utf-8' . "\r\n"; 37 | 38 | $subj = "=?utf-8?B?" . base64_encode($subj) . "?="; 39 | $to = $_POST['to']; 40 | 41 | $status = (@mail($to, $subj, $msg, $h)) ? 1:2; 42 | 43 | echo $status; 44 | } 45 | 46 | ?> -------------------------------------------------------------------------------- /themes/juicy/assets/forms/send-form.php: -------------------------------------------------------------------------------- 1 | '. $subj .''; 16 | $msg.= '

Дата: '. date('m.d.Y H:i:s') .'

'; 17 | 18 | foreach ($data as $item) { 19 | $msg.= '

' . $item['label'] . ': ' . $item['value'] . '

'; 20 | } 21 | 22 | $msg = ' 23 | 24 | 25 | '.$subj.' 26 | 27 | 28 |
29 |
30 | ' . $msg . '
31 |
32 | 33 | '; 34 | 35 | $h = 'MIME-Version: 1.0' . "\r\n"; 36 | $h .= 'Content-type: text/html; charset=utf-8' . "\r\n"; 37 | 38 | $subj = "=?utf-8?B?" . base64_encode($subj) . "?="; 39 | $to = $_POST['to']; 40 | 41 | $status = (@mail($to, $subj, $msg, $h)) ? 1:2; 42 | 43 | echo $status; 44 | } 45 | 46 | ?> -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "web2easy-boilerplate", 3 | "description": "", 4 | "main": "", 5 | "moduleType": [], 6 | "license": "", 7 | "homepage": "https://web2easy.ru", 8 | "ignore": [ 9 | "**/.*", 10 | "bower_components", 11 | "node_modules", 12 | "test", 13 | "tests" 14 | ], 15 | "dependencies": { 16 | "Swiper": "swiper#latest", 17 | "angular": "1.4.3", 18 | "animate.css": "latest", 19 | "animsition": "latest", 20 | "bowser": "bjoska.bowser#latest", 21 | "colorifyjs": "latest", 22 | "components-font-awesome": "latest", 23 | "es5-shim": "latest", 24 | "fluidbox": "latest", 25 | "jquery": "#2.1.4", 26 | "jquery-ias.min": "https://raw.githubusercontent.com/webcreate/infinite-ajax-scroll/master/src/jquery-ias.js", 27 | "jquery.ba-throttle-debounce.min": "http://github.com/cowboy/jquery-throttle-debounce/raw/v1.1/jquery.ba-throttle-debounce.min.js", 28 | "jquery.maskedinput": "latest", 29 | "jquery_lazyload": "jquery.lazyload#latest", 30 | "legitripple": "latest", 31 | "lightcase": "latest", 32 | "normalize-css": "normalize.css#latest", 33 | "packery": "latest", 34 | "page-scroll-to-id": "latest", 35 | "remodal": "latest", 36 | "sticky-kit": "latest", 37 | "superplaceholder": "latest", 38 | "tabtab.js": "latest", 39 | "tipso": "latest", 40 | "velocity": "latest", 41 | "wow": "wow.js#latest", 42 | "isotope": "^3.0.0", 43 | "theia-sticky-sidebar": "^1.4.1", 44 | "parallax.js": "^1.4.2", 45 | "jquery-selectric": "lcdsantos/jQuery-Selectric#^1.11.0", 46 | "flickity": "^2.0.5", 47 | "jquery.accordion": "https://raw.githubusercontent.com/vctrfrnndz/jquery-accordion/master/js/jquery.accordion.js" 48 | }, 49 | "devDependencies": {} 50 | } 51 | -------------------------------------------------------------------------------- /src/partials/portfolio/portfolio.css: -------------------------------------------------------------------------------- 1 | .portfolio { 2 | position: relative; 3 | padding: 4rem 0 0; 4 | width: 100%; 5 | background-color: #fff; 6 | } 7 | 8 | .portfolio__content-wrap { 9 | margin: 0 auto; 10 | padding: 0 1rem; 11 | max-width: 1120px; 12 | width: 100%; 13 | } 14 | 15 | .portfolio__tile { 16 | margin: 0 auto; 17 | margin-bottom: 4rem; 18 | max-width: 1120px; 19 | width: 100%; 20 | color: #33373e; 21 | text-align: center; 22 | font-weight: 300; 23 | font-size: 50px; 24 | @media screen and (--mobile) { 25 | margin-bottom: 2rem; 26 | font-size: 2rem; 27 | } 28 | } 29 | 30 | .portfolio__subtitle { 31 | margin: 0 auto; 32 | margin-bottom: 4rem; 33 | max-width: 1120px; 34 | width: 100%; 35 | color: #494c52; 36 | text-align: center; 37 | font-weight: 300; 38 | font-size: 20px; 39 | line-height: 1.5; 40 | @media screen and (--mobile) { 41 | margin-bottom: 2rem; 42 | font-size: 1rem; 43 | } 44 | } 45 | 46 | .portfolio__items-wrap { 47 | display: flex; 48 | flex-wrap: wrap; 49 | clear: both; 50 | width: 100%; 51 | background-color: #1f2229; 52 | } 53 | 54 | .portfolio__item { 55 | display: block; 56 | flex-grow: 1; 57 | float: left; 58 | width: 25%; 59 | height: 25vw; 60 | background-position: center; 61 | background-size: cover; 62 | background-repeat: no-repeat; 63 | opacity: 1; 64 | cursor: pointer; 65 | transition: .3s; 66 | @media screen and (--mobile) { 67 | width: 50%; 68 | height: 50vmin; 69 | } 70 | &::after { 71 | display: none; 72 | } 73 | &:nth-child(6n), 74 | &:nth-child(6n+1) { 75 | width: 50%; 76 | } 77 | &:hover { 78 | opacity: .5; 79 | } 80 | } -------------------------------------------------------------------------------- /src/partials/contacts/contacts.css: -------------------------------------------------------------------------------- 1 | .contacts { 2 | position: relative; 3 | z-index: 2; 4 | padding: 4rem 1rem 4rem; 5 | width: 100%; 6 | background-color: #33373e; 7 | color: #fff; 8 | text-align: center; 9 | & a { 10 | color: #fff; 11 | text-decoration: underline; 12 | &:hover { 13 | color: #33373e; 14 | } 15 | } 16 | } 17 | 18 | .contacts__content-wrap { 19 | margin: 0 auto; 20 | max-width: 1120px; 21 | width: 100%; 22 | } 23 | 24 | .contacts__title { 25 | margin-bottom: 4rem; 26 | text-align: center; 27 | font-weight: 300; 28 | font-size: 50px; 29 | @media screen and (--mobile) { 30 | margin-bottom: 2rem; 31 | font-size: 2rem; 32 | } 33 | } 34 | 35 | .contacts__subtitle { 36 | margin-bottom: 4rem; 37 | text-align: center; 38 | font-weight: 300; 39 | font-size: 20px; 40 | line-height: 1.5; 41 | } 42 | 43 | .contacts__items-wrap { 44 | display: flex; 45 | flex-wrap: wrap; 46 | justify-content: space-between; 47 | padding: 2rem 0; 48 | width: 100%; 49 | border-radius: 5px; 50 | @media screen and (--mobile) { 51 | padding: 0; 52 | } 53 | } 54 | 55 | .contacts__item { 56 | flex-grow: 1; 57 | margin-bottom: 2rem; 58 | padding: 8rem 2rem 2rem; 59 | width: calc(100% / 3); 60 | background-position: center 2rem; 61 | background-size: 3rem auto; 62 | background-repeat: no-repeat; 63 | @media screen and (--tablet) { 64 | padding: 8rem 1rem 1rem; 65 | } 66 | @media screen and (--mobile) { 67 | margin-bottom: 2rem; 68 | width: 100%; 69 | } 70 | } 71 | 72 | .contacts__item-title { 73 | margin-bottom: 2rem; 74 | font-size: 2rem; 75 | @media screen and (--tablet) { 76 | font-size: 2rem; 77 | } 78 | } 79 | 80 | .contacts__caption { 81 | font-size: 1rem; 82 | line-height: 1.5; 83 | } -------------------------------------------------------------------------------- /src/partials/navigation/navigation.css: -------------------------------------------------------------------------------- 1 | .navigation { 2 | position: fixed; 3 | top: 0; 4 | left: 0; 5 | z-index: 100; 6 | padding: 0 1rem; 7 | width: 100%; 8 | background-color: transparent; 9 | transition: .3s; 10 | @media screen and (--mobile) { 11 | background-color: #1f2229; 12 | padding: 0 0 0 1rem; 13 | } 14 | &--fixed { 15 | background-color: #1f2229; 16 | } 17 | } 18 | 19 | .navigation__content-wrap { 20 | display: flex; 21 | justify-content: space-between; 22 | align-items: stretch; 23 | margin: 0 auto; 24 | max-width: 1120px; 25 | width: 100%; 26 | } 27 | 28 | .navigation__logo { 29 | position: relative; 30 | padding: .5rem 0; 31 | width: 10rem; 32 | display: block; 33 | background-position: left center; 34 | background-origin: content-box; 35 | background-size: contain; 36 | background-repeat: no-repeat; 37 | @media screen and (--mobile) { 38 | width: 6rem; 39 | } 40 | } 41 | 42 | .navigation__items-wrap { 43 | display: flex; 44 | list-style: none; 45 | overflow-x: auto; 46 | @media screen and (--mobile) { 47 | width: calc(100% - 6rem); 48 | } 49 | } 50 | 51 | .navigation__item { 52 | @media screen and (--mobile) { 53 | flex-grow: 1; 54 | } 55 | } 56 | 57 | .navigation__lnk { 58 | white-space: nowrap; 59 | @nest .navigation--fixed & { 60 | height: 3rem; 61 | } 62 | display: flex; 63 | align-items: center; 64 | padding: 0 1rem; 65 | height: 4rem; 66 | color: rgba(255, 255, 255, .8); 67 | @media screen and (--tablet) { 68 | padding: 0 .5rem; 69 | } 70 | @media screen and (--mobile) { 71 | align-items: center; 72 | justify-content: center; 73 | padding: 0 .5rem; 74 | text-align: center; 75 | font-size: 11px; 76 | } 77 | &.mPS2id-highlight, 78 | &:hover { 79 | color: #ff6858; 80 | } 81 | } -------------------------------------------------------------------------------- /src/partials/promo/promo.css: -------------------------------------------------------------------------------- 1 | .promo { 2 | position: relative; 3 | min-height: 480px; 4 | width: 100%; 5 | height: 100vh; 6 | background-color: #33373e; 7 | } 8 | 9 | .promo__title { 10 | position: relative; 11 | z-index: 1; 12 | display: flex; 13 | flex-direction: column; 14 | flex-wrap: wrap; 15 | align-items: center; 16 | justify-content: center; 17 | margin: 0 auto; 18 | padding: 1rem; 19 | max-width: 1120px; 20 | width: 100%; 21 | height: 100%; 22 | } 23 | 24 | .promo__title-accent { 25 | display: block; 26 | margin-bottom: 3rem; 27 | color: #fff; 28 | text-align: center; 29 | text-shadow: 0 0 4rem black; 30 | font-weight: 700; 31 | font-size: 60px; 32 | @media screen and (--mobile) { 33 | margin-bottom: 2rem; 34 | font-size: 2rem; 35 | } 36 | } 37 | 38 | .promo__title-desc { 39 | display: block; 40 | margin-bottom: 4rem; 41 | color: #fff; 42 | text-align: center; 43 | text-shadow: 0 0 4rem black; 44 | font-weight: 300; 45 | font-size: 25px; 46 | @media screen and (--mobile) { 47 | margin-bottom: 2rem; 48 | font-size: 1rem; 49 | } 50 | } 51 | 52 | .promo__btn { 53 | padding: 1rem 2rem; 54 | border: 2px solid #fff; 55 | border-radius: 4px; 56 | background-color: transparent; 57 | color: #fff; 58 | text-shadow: 0 0 4rem black; 59 | font-weight: 700; 60 | font-size: 20px; 61 | @media screen and (--mobile) { 62 | font-size: 1rem; 63 | } 64 | &:hover { 65 | background-color: #ff6858; 66 | box-shadow: 0 0 4rem #fc6656; 67 | } 68 | } 69 | 70 | .promo__slideshow { 71 | position: fixed; 72 | top: 0; 73 | left: 0; 74 | z-index: 0; 75 | width: 100%; 76 | opacity: .5; 77 | } 78 | 79 | .promo__slideshow-items-wrap {} 80 | 81 | .promo__slideshow-item { 82 | min-height: 480px; 83 | height: 100vh; 84 | background-position: center; 85 | background-size: cover; 86 | background-repeat: no-repeat; 87 | } -------------------------------------------------------------------------------- /src/partials/about-us/about-us.css: -------------------------------------------------------------------------------- 1 | .about-us { 2 | position: relative; 3 | padding: 4rem 1rem 4rem; 4 | width: 100%; 5 | background-color: #fff; 6 | } 7 | 8 | .about-us__content-wrap { 9 | margin: 0 auto; 10 | max-width: 1120px; 11 | width: 100%; 12 | } 13 | 14 | .about-us__tile { 15 | margin-bottom: 4rem; 16 | color: #33373e; 17 | text-align: center; 18 | font-weight: 300; 19 | font-size: 50px; 20 | @media screen and (--mobile) { 21 | margin-bottom: 2rem; 22 | font-size: 2rem; 23 | } 24 | } 25 | 26 | .about-us__subtitle { 27 | margin-bottom: 4rem; 28 | color: #494c52; 29 | text-align: center; 30 | font-weight: 300; 31 | font-size: 20px; 32 | line-height: 1.5; 33 | @media screen and (--mobile) { 34 | margin-bottom: 2rem; 35 | font-size: 1rem; 36 | } 37 | } 38 | 39 | .about-us__items-wrap { 40 | display: flex; 41 | flex-wrap: wrap; 42 | justify-content: center; 43 | clear: both; 44 | width: calc(100% + 2rem); 45 | margin-left: -1rem; 46 | } 47 | 48 | .about-us__item { 49 | margin-bottom: 2rem; 50 | width: calc((100% - 2rem)/3); 51 | @media screen and (--mobile) { 52 | width: 100%; 53 | } 54 | } 55 | 56 | .about-us__item-img { 57 | margin-right: auto; 58 | margin-bottom: 20px; 59 | margin-left: auto; 60 | width: 80px; 61 | height: 80px; 62 | border-radius: 50%; 63 | background-color: #f2f2f2; 64 | background-position: center; 65 | background-size: 50%; 66 | background-repeat: no-repeat; 67 | } 68 | 69 | .about-us__item-img--1 { 70 | background-image: url(img/colours.svg); 71 | } 72 | 73 | .about-us__item-img--2 { 74 | background-image: url(img/round-brush.svg); 75 | } 76 | 77 | .about-us__item-img--3 { 78 | background-image: url(img/tools.svg); 79 | } 80 | 81 | .about-us__item-title { 82 | margin-bottom: 20px; 83 | text-align: center; 84 | font-weight: 300; 85 | font-size: 24px; 86 | } 87 | 88 | .about-us__item-desc { 89 | text-align: center; 90 | font-size: 13px; 91 | line-height: 1.6; 92 | } -------------------------------------------------------------------------------- /src/assets/fonts/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-weight: normal; 3 | font-style: normal; 4 | font-family: 'lightcase'; 5 | src: url("../fonts/Lightcase/lightcase.eot?55356177"); 6 | src: url("../fonts/Lightcase/lightcase.eot?55356177#iefix") format("embedded-opentype"), url("../fonts/Lightcase/lightcase.woff?55356177") format("woff"), url("../fonts/Lightcase/lightcase.ttf?55356177") format("truetype"), url("../fonts/Lightcase/lightcase.svg?55356177#lightcase") format("svg"); 7 | } 8 | 9 | @font-face { 10 | font-weight: normal; 11 | font-style: normal; 12 | font-family: "OpenSansRegular"; 13 | src: url("../fonts/OpenSansRegular/OpenSansRegular.eot"); 14 | src: url("../fonts/OpenSansRegular/OpenSansRegular.eot?#iefix")format("embedded-opentype"), url("../fonts/OpenSansRegular/OpenSansRegular.woff") format("woff"), url("../fonts/OpenSansRegular/OpenSansRegular.ttf") format("truetype"); 15 | } 16 | 17 | @font-face { 18 | font-weight: normal; 19 | font-style: normal; 20 | font-family: "OpenSansLight"; 21 | src: url("../fonts/OpenSansLight/OpenSansLight.eot"); 22 | src: url("../fonts/OpenSansLight/OpenSansLight.eot?#iefix")format("embedded-opentype"), url("../fonts/OpenSansLight/OpenSansLight.woff") format("woff"), url("../fonts/OpenSansLight/OpenSansLight.ttf") format("truetype"); 23 | } 24 | 25 | @font-face { 26 | font-weight: normal; 27 | font-style: normal; 28 | font-family: "OpenSansBold"; 29 | src: url("../fonts/OpenSansBold/OpenSansBold.eot"); 30 | src: url("../fonts/OpenSansBold/OpenSansBold.eot?#iefix")format("embedded-opentype"), url("../fonts/OpenSansBold/OpenSansBold.woff") format("woff"), url("../fonts/OpenSansBold/OpenSansBold.ttf") format("truetype"); 31 | } 32 | 33 | @font-face { 34 | font-weight: normal; 35 | font-style: normal; 36 | font-family: "OpenSansExtraBold"; 37 | src: url("../fonts/OpenSansExtraBold/OpenSansExtraBold.eot"); 38 | src: url("../fonts/OpenSansExtraBold/OpenSansExtraBold.eot?#iefix")format("embedded-opentype"), url("../fonts/OpenSansExtraBold/OpenSansExtraBold.woff") format("woff"), url("../fonts/OpenSansExtraBold/OpenSansExtraBold.ttf") format("truetype"); 39 | } -------------------------------------------------------------------------------- /src/assets/dev/remove-BOM.php: -------------------------------------------------------------------------------- 1 | 14 | 15 | 16 | 17 | 18 | UTF8 BOM FINDER and REMOVER 19 | 23 | 24 | 25 | These files had UTF8 BOM, but i cleaned them:

'; 29 | foreach ($BOMBED as $utf) { echo $utf ."
\n"; } 30 | echo '

'; 31 | 32 | // Recursive finder 33 | function RecursiveFolder($sHOME) { 34 | global $BOMBED, $WIN; 35 | 36 | $win32 = ($WIN == 1) ? "\\" : "/"; 37 | 38 | $folder = dir($sHOME); 39 | 40 | $foundfolders = array(); 41 | while ($file = $folder->read()) { 42 | if($file != "." and $file != "..") { 43 | if(filetype($sHOME . $win32 . $file) == "dir"){ 44 | $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file; 45 | } else { 46 | $content = file_get_contents($sHOME . $win32 . $file); 47 | $BOM = SearchBOM($content); 48 | if ($BOM) { 49 | $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file; 50 | 51 | // Remove first three chars from the file 52 | $content = substr($content,3); 53 | // Write to file 54 | file_put_contents($sHOME . $win32 . $file, $content); 55 | } 56 | } 57 | } 58 | } 59 | $folder->close(); 60 | 61 | if(count($foundfolders) > 0) { 62 | foreach ($foundfolders as $folder) { 63 | RecursiveFolder($folder, $win32); 64 | } 65 | } 66 | } 67 | 68 | // Searching for BOM in files 69 | function SearchBOM($string) { 70 | if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true; 71 | return false; 72 | } 73 | ?> 74 | 75 | -------------------------------------------------------------------------------- /src/partials/reviews/reviews.css: -------------------------------------------------------------------------------- 1 | .reviews { 2 | position: relative; 3 | clear: both; 4 | padding: 4rem 1rem; 5 | width: 100%; 6 | background-color: #1f9df3; 7 | color: #fff; 8 | text-align: center; 9 | } 10 | 11 | .reviews__content-wrap { 12 | margin: 0 auto; 13 | max-width: 1120px; 14 | width: 100%; 15 | } 16 | 17 | .reviews__title { 18 | margin-bottom: 2rem; 19 | padding-bottom: 2rem; 20 | border-bottom: 1px solid rgba(0, 0, 0, .05); 21 | font-weight: 300; 22 | font-size: 50px; 23 | @media screen and (--mobile) { 24 | margin-bottom: 1rem; 25 | padding-bottom: 1rem; 26 | font-size: 2rem; 27 | } 28 | } 29 | 30 | .reviews__slideshow { 31 | width: 100%; 32 | } 33 | 34 | .reviews__slideshow-items-wrap { 35 | padding-bottom: 5rem; 36 | width: 100%; 37 | } 38 | 39 | .reviews__slideshow-item { 40 | padding-top: 10px; 41 | width: 100%; 42 | } 43 | 44 | .reviews__slideshow-item-img { 45 | overflow: hidden; 46 | margin: auto; 47 | margin-bottom: 1rem; 48 | padding: 2px; 49 | width: 10rem; 50 | height: 10rem; 51 | border-radius: 50%; 52 | background-position: center; 53 | background-origin: padding-box; 54 | background-size: cover; 55 | background-repeat: no-repeat; 56 | } 57 | 58 | .reviews__slideshow-item-name { 59 | display: block; 60 | margin-bottom: 1rem; 61 | font-size: 1rem; 62 | } 63 | 64 | .reviews__slideshow-item-desc { 65 | display: block; 66 | margin-bottom: 2rem; 67 | padding-bottom: 2rem; 68 | border-bottom: 1px solid rgba(0, 0, 0, .05); 69 | font-style: italic; 70 | font-size: .8rem; 71 | @media screen and (--mobile) { 72 | margin-bottom: 1rem; 73 | padding-bottom: 1rem; 74 | } 75 | } 76 | 77 | .reviews__slideshow-item-caption { 78 | font-size: 1.5rem; 79 | line-height: 1.5; 80 | @media screen and (--mobile) { 81 | font-size: 1rem; 82 | } 83 | } 84 | 85 | .reviews__slideshow-pagination { 86 | bottom: 2rem !important; 87 | & .swiper-pagination-bullet { 88 | margin: 0 .25rem; 89 | width: 1rem; 90 | height: 1rem; 91 | border: 2px solid rgba(0, 0, 0, .2); 92 | border-radius: 20px; 93 | background-color: transparent; 94 | opacity: 1; 95 | transition: .3s; 96 | &:hover { 97 | background-color: rgba(0, 0, 0, .2); 98 | } 99 | } 100 | & .swiper-pagination-bullet-active { 101 | background-color: rgba(0, 0, 0, .2); 102 | } 103 | } -------------------------------------------------------------------------------- /src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OctomerCMS Juicy Theme", 3 | "short_name": "Juicy", 4 | "start_url": "/", 5 | "background_color": "#2b3e50", 6 | "theme_color": "#2b3e50", 7 | "orientation": "portrait", 8 | "display": "standalone", 9 | "icons": [{ 10 | "src": "/assets/icons/apple-touch-icon-57x57.png", 11 | "sizes": "57x57", 12 | "type": "image/png" 13 | }, { 14 | "src": "/assets/icons/apple-touch-icon-60x60.png", 15 | "sizes": "60x60", 16 | "type": "image/png" 17 | }, { 18 | "src": "/assets/icons/apple-touch-icon-72x72.png", 19 | "sizes": "72x72", 20 | "type": "image/png" 21 | }, { 22 | "src": "/assets/icons/apple-touch-icon-76x76.png", 23 | "sizes": "76x76", 24 | "type": "image/png" 25 | }, { 26 | "src": "/assets/icons/apple-touch-icon-114x114.png", 27 | "sizes": "114x114", 28 | "type": "image/png" 29 | }, { 30 | "src": "/assets/icons/apple-touch-icon-120x120.png", 31 | "sizes": "120x120", 32 | "type": "image/png" 33 | }, { 34 | "src": "/assets/icons/apple-touch-icon-144x144.png", 35 | "sizes": "144x144", 36 | "type": "image/png" 37 | }, { 38 | "src": "/assets/icons/apple-touch-icon-152x152.png", 39 | "sizes": "152x152", 40 | "type": "image/png" 41 | }, { 42 | "src": "/assets/icons/favicon-16x16.png", 43 | "sizes": "16x16", 44 | "type": "image/png" 45 | }, { 46 | "src": "/assets/icons/favicon-32x32.png", 47 | "sizes": "32x32", 48 | "type": "image/png" 49 | }, { 50 | "src": "/assets/icons/favicon-96x96.png", 51 | "sizes": "96x96", 52 | "type": "image/png" 53 | }, { 54 | "src": "/assets/icons/favicon-128.png", 55 | "sizes": "128x128", 56 | "type": "image/png" 57 | }, { 58 | "src": "/assets/icons/favicon-196x196.png", 59 | "sizes": "196x196", 60 | "type": "image/png" 61 | }, { 62 | "src": "/assets/icons/mstile-70x70.png", 63 | "sizes": "70x70", 64 | "type": "image/png" 65 | }, { 66 | "src": "/assets/icons/mstile-144x144.png", 67 | "sizes": "144x144", 68 | "type": "image/png" 69 | }, { 70 | "src": "/assets/icons/mstile-150x150.png", 71 | "sizes": "150x150", 72 | "type": "image/png" 73 | }, { 74 | "src": "/assets/icons/mstile-310x150.png", 75 | "sizes": "310x150", 76 | "type": "image/png" 77 | }, { 78 | "src": "/assets/icons/mstile-310x310.png", 79 | "sizes": "310x310", 80 | "type": "image/png" 81 | }] 82 | } -------------------------------------------------------------------------------- /themes/juicy/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OctomerCMS Juicy Theme", 3 | "short_name": "Juicy", 4 | "start_url": "/", 5 | "background_color": "#2b3e50", 6 | "theme_color": "#2b3e50", 7 | "orientation": "portrait", 8 | "display": "standalone", 9 | "icons": [{ 10 | "src": "/assets/icons/apple-touch-icon-57x57.png", 11 | "sizes": "57x57", 12 | "type": "image/png" 13 | }, { 14 | "src": "/assets/icons/apple-touch-icon-60x60.png", 15 | "sizes": "60x60", 16 | "type": "image/png" 17 | }, { 18 | "src": "/assets/icons/apple-touch-icon-72x72.png", 19 | "sizes": "72x72", 20 | "type": "image/png" 21 | }, { 22 | "src": "/assets/icons/apple-touch-icon-76x76.png", 23 | "sizes": "76x76", 24 | "type": "image/png" 25 | }, { 26 | "src": "/assets/icons/apple-touch-icon-114x114.png", 27 | "sizes": "114x114", 28 | "type": "image/png" 29 | }, { 30 | "src": "/assets/icons/apple-touch-icon-120x120.png", 31 | "sizes": "120x120", 32 | "type": "image/png" 33 | }, { 34 | "src": "/assets/icons/apple-touch-icon-144x144.png", 35 | "sizes": "144x144", 36 | "type": "image/png" 37 | }, { 38 | "src": "/assets/icons/apple-touch-icon-152x152.png", 39 | "sizes": "152x152", 40 | "type": "image/png" 41 | }, { 42 | "src": "/assets/icons/favicon-16x16.png", 43 | "sizes": "16x16", 44 | "type": "image/png" 45 | }, { 46 | "src": "/assets/icons/favicon-32x32.png", 47 | "sizes": "32x32", 48 | "type": "image/png" 49 | }, { 50 | "src": "/assets/icons/favicon-96x96.png", 51 | "sizes": "96x96", 52 | "type": "image/png" 53 | }, { 54 | "src": "/assets/icons/favicon-128.png", 55 | "sizes": "128x128", 56 | "type": "image/png" 57 | }, { 58 | "src": "/assets/icons/favicon-196x196.png", 59 | "sizes": "196x196", 60 | "type": "image/png" 61 | }, { 62 | "src": "/assets/icons/mstile-70x70.png", 63 | "sizes": "70x70", 64 | "type": "image/png" 65 | }, { 66 | "src": "/assets/icons/mstile-144x144.png", 67 | "sizes": "144x144", 68 | "type": "image/png" 69 | }, { 70 | "src": "/assets/icons/mstile-150x150.png", 71 | "sizes": "150x150", 72 | "type": "image/png" 73 | }, { 74 | "src": "/assets/icons/mstile-310x150.png", 75 | "sizes": "310x150", 76 | "type": "image/png" 77 | }, { 78 | "src": "/assets/icons/mstile-310x310.png", 79 | "sizes": "310x310", 80 | "type": "image/png" 81 | }] 82 | } -------------------------------------------------------------------------------- /src/assets/fonts/Lightcase/lightcase.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Copyright (C) 2015 by original authors @ fontello.com 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /themes/juicy/assets/fonts/Lightcase/lightcase.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Copyright (C) 2015 by original authors @ fontello.com 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/assets/forms/send-form.css: -------------------------------------------------------------------------------- 1 | /* 2 | [data-form] { 3 | & input { 4 | padding: 0 20px; 5 | width: 100%; 6 | height: 50px; 7 | border: 1px solid #e6e6e6; 8 | background-color: #fff; 9 | color: #808080; 10 | font-weight: 400; 11 | font-size: 14px; 12 | line-height: 1.5em; 13 | &:hover {} 14 | &:focus { 15 | border-color: var(--colorPrimary); 16 | } 17 | } 18 | & textarea { 19 | padding: 20px; 20 | width: 100%; 21 | height: 110px; 22 | border: 1px solid #e6e6e6; 23 | background-color: #fff; 24 | color: #808080; 25 | font-weight: 400; 26 | font-size: 14px; 27 | line-height: 1.5em; 28 | resize: vertical; 29 | &:hover {} 30 | &:focus { 31 | border-color: var(--colorPrimary); 32 | } 33 | } 34 | & .selectric-wrapper { 35 | width: 100%; 36 | transition-duration: var(--transitionDuration); 37 | &.selectric-open { 38 | box-shadow: var( --shadowOutset); 39 | } 40 | &:hover { 41 | box-shadow: var( --shadowOutset); 42 | } 43 | & .selectric { 44 | width: 100%; 45 | border: 1px solid #e6e6e6; 46 | border-radius: 3px; 47 | background-color: #fff; 48 | & .label { 49 | display: block; 50 | margin: 0; 51 | padding: 0 70px 0 20px; 52 | height: auto; 53 | color: #808080; 54 | font-weight: 400; 55 | font-size: 14px; 56 | line-height: 50px; 57 | } 58 | & .button { 59 | width: 50px; 60 | height: 50px; 61 | background-image: url(../images/forms-arr.png); 62 | background-position: center; 63 | background-repeat: no-repeat; 64 | &::after { 65 | display: none; 66 | } 67 | } 68 | } 69 | & .selectric-items { 70 | border: none; 71 | border-radius: 3px; 72 | background-color: #ffffff; 73 | box-shadow: inset 0 0 0 1px #e6e6e6, var( --shadowOutset); 74 | & li { 75 | padding: 10px 20px; 76 | font-weight: 400; 77 | font-size: 14px; 78 | transition-duration: var(--transitionDuration); 79 | &:first-child { 80 | border-radius: 3px 3px 0 0; 81 | } 82 | &:last-child { 83 | border-radius: 0 0 3px 3px; 84 | } 85 | &:hover { 86 | background-color: var(--colorPrimary); 87 | color: #fff; 88 | } 89 | &.selected { 90 | background-color: var(--colorPrimary); 91 | color: #fff; 92 | } 93 | &.disabled { 94 | color: #808080; 95 | } 96 | } 97 | } 98 | } 99 | } 100 | 101 | [data-form-hidden-placeholder]::-webkit-input-placeholder, 102 | [data-form-hidden-placeholder]::-moz-placeholder, 103 | [data-form-hidden-placeholder]:-moz-placeholder, 104 | [data-form-hidden-placeholder]:-ms-input-placeholder { 105 | color: transparent; 106 | } 107 | 108 | [data-form-field-invalid] { 109 | border-color: #f44336 !important; 110 | } 111 | */ -------------------------------------------------------------------------------- /src/assets/typography/typography.css: -------------------------------------------------------------------------------- 1 | /* 2 | |-------------------------------------------------------------------------- 3 | | TYPOGRAPHY 4 | |-------------------------------------------------------------------------- 5 | | 6 | | Стили типографики 7 | | 8 | */ 9 | 10 | .typography { 11 | font-weight: 300; 12 | font-style: normal; 13 | line-height: 1.5em; 14 | font-size: 14px; 15 | } 16 | 17 | .typography h1 { 18 | margin-top: .5em; 19 | margin-bottom: 1.5em; 20 | font-size: 2.4em; 21 | line-height: 1.1em; 22 | } 23 | 24 | .typography h2 { 25 | margin-top: 1.44em; 26 | margin-bottom: .72em; 27 | font-size: 1.8em; 28 | line-height: 1.44em; 29 | } 30 | 31 | .typography h3 { 32 | margin-top: .94em; 33 | margin-bottom: .94em; 34 | font-size: 1.35em; 35 | line-height: 1.89em; 36 | } 37 | 38 | .typography h4, 39 | .typography h5, 40 | .typography h6 { 41 | margin-top: 1.28em; 42 | margin-bottom: 1.28em; 43 | font-size: 1em; 44 | line-height: 1.28em; 45 | } 46 | 47 | .typography p, 48 | .typography ul, 49 | .typography ol, 50 | .typography pre, 51 | .typography table, 52 | .typography blockquote { 53 | margin-top: 1.28em; 54 | margin-bottom: 1.28em; 55 | } 56 | 57 | .typography ul, 58 | .typography ol { 59 | margin-left: 2.56em; 60 | } 61 | 62 | .typography hr { 63 | margin: -1px 0; 64 | border: 1px solid; 65 | } 66 | 67 | .typography ul ul, 68 | .typography ol ol, 69 | .typography ul ol, 70 | .typography ol ul { 71 | margin-top: 0; 72 | margin-bottom: 0; 73 | } 74 | 75 | .typography b, 76 | .typography strong, 77 | .typography em, 78 | .typography small, 79 | .typography code { 80 | line-height: 1; 81 | } 82 | 83 | .typography b, 84 | .typography strong, 85 | .typography em { 86 | font-weight: 700; 87 | } 88 | 89 | .typography sup, 90 | .typography sub { 91 | position: relative; 92 | top: -.4em; 93 | vertical-align: baseline; 94 | } 95 | 96 | .typography sub { 97 | top: .4em; 98 | } 99 | 100 | .typography table { 101 | overflow-y: scroll; 102 | width: 100%; 103 | border-collapse: collapse; 104 | } 105 | 106 | .typography td, 107 | .typography th { 108 | padding: 6px; 109 | border: 1px solid #b8b8b8; 110 | } 111 | 112 | .typography th { 113 | font-weight: 700; 114 | } 115 | 116 | .typography blockquote, 117 | .typography cite { 118 | padding-left: 1.28em; 119 | border-left: 6px solid #b8b8b8; 120 | } 121 | 122 | 123 | /* Custom */ 124 | 125 | .typography h1, 126 | .typography h2, 127 | .typography h3, 128 | .typography h4, 129 | .typography h5, 130 | .typography h6 {} 131 | 132 | .typography h1:after, 133 | .typography h2:after, 134 | .typography h3:after, 135 | .typography h4:after, 136 | .typography h5:after, 137 | .typography h6:after {} 138 | 139 | .typography ul, 140 | .typography ol { 141 | /*margin-left: 2.56em;*/ 142 | list-style: none; 143 | } 144 | 145 | .typography li { 146 | padding-top: .5em; 147 | padding-right: 2em; 148 | padding-bottom: .5em; 149 | padding-left: 17px; 150 | width: 100%; 151 | background-image: url(../images/typography-li-icon.png); 152 | background-position: left 1em; 153 | background-repeat: no-repeat; 154 | } 155 | 156 | .typography strong {} 157 | 158 | .typography span { 159 | font-size: inherit; 160 | } 161 | 162 | .typography a { 163 | color: #39b9b8; 164 | } 165 | 166 | .typography a:hover { 167 | color: #39b9b8; 168 | text-decoration: underline; 169 | } 170 | 171 | .typography iframe { 172 | width: 100%; 173 | height: 400px; 174 | margin-top: 1.28em; 175 | margin-bottom: 1.28em; 176 | border: none; 177 | } 178 | 179 | .typography img { 180 | max-width: 100%; 181 | height: auto; 182 | } -------------------------------------------------------------------------------- /src/partials/head.htm: -------------------------------------------------------------------------------- 1 | description = "Section " 2 | 3 | [viewBag] 4 | == 5 | 8 | == 9 | {% set appColor = '#2b3e50' %} 10 | {% set appName = 'Juicy' %} 11 | 12 | {# Meta #} 13 | 14 | 15 | 16 | 17 | {# Manifest #} 18 | {##} 19 | 20 | {# Meta Tags #} 21 | {% if this.page.meta_title %}{{ this.page.meta_title }}{% else %}{{ this.page.title }}{% endif %} 22 | 23 | 24 | {# Open Graph #} 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | {# Styles #} 34 | 35 | 36 | 37 | {# Components Styles #} 38 | {% if styles %}{% styles %}{% endif %} 39 | 40 | {# Icons #} 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /themes/juicy/partials/head.htm: -------------------------------------------------------------------------------- 1 | description = "Section " 2 | 3 | [viewBag] 4 | == 5 | 8 | == 9 | {% set appColor = '#2b3e50' %} 10 | {% set appName = 'Juicy' %} 11 | 12 | {# Meta #} 13 | 14 | 15 | 16 | 17 | {# Manifest #} 18 | {##} 19 | 20 | {# Meta Tags #} 21 | {% if this.page.meta_title %}{{ this.page.meta_title }}{% else %}{{ this.page.title }}{% endif %} 22 | 23 | 24 | {# Open Graph #} 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | {# Styles #} 34 | 35 | 36 | 37 | {# Components Styles #} 38 | {% if styles %}{% styles %}{% endif %} 39 | 40 | {# Icons #} 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /src/assets/forms/send-form.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready(function ($) { 2 | 3 | /* 4 | |-------------------------------------------------------------------------- 5 | | SEND FORM 6 | |-------------------------------------------------------------------------- 7 | | 8 | | Валидация полей и отправка формы 9 | | 10 | */ 11 | 12 | // устанока маски на поля 13 | $('[data-form-phone-field]').mask("+7 (999) 999-99-99"); 14 | $('[data-form-time-field]').mask("99:99"); 15 | 16 | $('[data-form-btn]').click(function () { 17 | 18 | var $b = $(this); 19 | var $f = $(this).parents('[data-form]'); 20 | var $s = $f.find('[data-form-status]'); 21 | var data = {}; 22 | var bVal = $b.text(); 23 | 24 | var templateName = $f.attr('data-form-template'); 25 | var mailAddr = $f.attr('data-form-recipient'); 26 | var reachGoal = $f.attr('data-reachGoal'); 27 | 28 | var status = [ 29 | 'Пожалуйста, укажите номер телефона', 30 | 'Спасибо, сообщение отправлено', 31 | 'При отправке сообщения возникли проблемы. Пожалуйста, отправьте письмо на ящик ' + mailAddr 32 | ] 33 | 34 | // тряска формы если не проходим валидацию при отправке 35 | $f.find('*[required]').each(function () { 36 | $(this).removeAttr('data-form-field-invalid') 37 | if ($(this).val() == '' || $(this).val() == $(this).attr('placeholder')) { 38 | $(this).attr('data-form-field-invalid', '') 39 | $f.find('input[data-form-field-invalid], textarea[data-form-field-invalid]') 40 | .addClass('shake animated'); 41 | setTimeout(function () { 42 | $f.find('input[data-form-field-invalid], textarea[data-form-field-invalid]') 43 | .removeClass('shake animated'); 44 | }, 1000); 45 | } 46 | }); 47 | 48 | // если есть поля с ошибками то сообщаем об этом пользователю 49 | if ($f.find('[data-form-field-invalid]').length) { 50 | $s.html(status[0]).slideDown(500); 51 | return false; 52 | } 53 | 54 | // собираем содержимое полей 55 | $f.find('input, textarea, select') 56 | .each(function (i) { 57 | var name = $(this).attr('name'); 58 | var label = $(this).attr('placeholder') || $(this).prev().html(); 59 | label = $.trim(label.replace(/[:*]/g, '')); 60 | data[name] = { 61 | label: label, 62 | value: $(this).val() 63 | }; 64 | }); 65 | 66 | // отправка формы 67 | $.ajax({ 68 | url: '/themes/' + templateName + '/assets/forms/send-form.php', 69 | type: 'POST', 70 | data: { 71 | send: 'do', 72 | to: mailAddr, 73 | subj: $f.attr('title'), 74 | data: data 75 | }, 76 | beforeSend: function () { 77 | $b.text('Отправка...'); 78 | }, 79 | success: function (response) { 80 | var r = parseInt(response); 81 | 82 | $b.text(bVal); 83 | $s.html(status[r]).slideUp(500); 84 | 85 | if (r == 1) { 86 | $f.attr('data-form-success', ''); 87 | $f.find('input, textarea, select').val(''); 88 | 89 | // $('[data-form-success-placeholder]').css({ 90 | // opacity: '1', 91 | // zIndex: '1000', 92 | // transform: 'scale(1)' 93 | // }); 94 | // setTimeout(function() { 95 | // $s.slideUp(500); 96 | // }, 5000); 97 | } 98 | 99 | yaCounter39444945.reachGoal(reachGoal); return true; 100 | 101 | }, 102 | error: function (jqXHR, textStatus, ex) { 103 | alert(textStatus + "," + ex + "," + jqXHR.responseText); 104 | } 105 | }); 106 | return false; 107 | 108 | }); 109 | }); -------------------------------------------------------------------------------- /src/pages/home.htm: -------------------------------------------------------------------------------- 1 | title = "Main page" 2 | url = "/" 3 | layout = "main" 4 | description = "Main page template" 5 | is_hidden = 0 6 | meta_title = "OctoberCMS Juicy Theme" 7 | meta_description = "Clean, simple and responsive landing page" 8 | == 9 | 10 | {# Navigation #} 11 | {% if this.theme.navigation_enable %} 12 | 41 | {% endif %} 42 | 43 | {# Promo #} 44 | {% if this.theme.promo_enable %} 45 | 55 | {% endif %} 56 | 57 | {# Portfolio #} 58 | {% if this.theme.portfolio_enable %} 59 | 69 | {% endif %} 70 | 71 | {# About us #} 72 | {% if this.theme.about_us_enable %} 73 | 86 | {% endif %} 87 | 88 | {# Reviews #} 89 | {% if this.theme.reviews_enable %} 90 | 104 | {% endif %} 105 | 106 | {# Contacts #} 107 | {% if this.theme.contacts_enable %} 108 | 123 | {% endif %} 124 | 125 | {# Map widget #} 126 | {% if this.theme.map_widget_enable %} 127 | {% partial 'map-widget/map-widget' %} 128 | {% endif %} 129 | 130 | {# Site footer #} 131 | {% if this.theme.site_footer_enable %} 132 | 136 | {% endif %} -------------------------------------------------------------------------------- /themes/juicy/pages/home.htm: -------------------------------------------------------------------------------- 1 | title = "Main page" 2 | url = "/" 3 | layout = "main" 4 | description = "Main page template" 5 | is_hidden = 0 6 | meta_title = "OctoberCMS Juicy Theme" 7 | meta_description = "Clean, simple and responsive landing page" 8 | == 9 | 10 | {# Navigation #} 11 | {% if this.theme.navigation_enable %} 12 | 41 | {% endif %} 42 | 43 | {# Promo #} 44 | {% if this.theme.promo_enable %} 45 | 55 | {% endif %} 56 | 57 | {# Portfolio #} 58 | {% if this.theme.portfolio_enable %} 59 | 69 | {% endif %} 70 | 71 | {# About us #} 72 | {% if this.theme.about_us_enable %} 73 | 86 | {% endif %} 87 | 88 | {# Reviews #} 89 | {% if this.theme.reviews_enable %} 90 | 104 | {% endif %} 105 | 106 | {# Contacts #} 107 | {% if this.theme.contacts_enable %} 108 | 123 | {% endif %} 124 | 125 | {# Map widget #} 126 | {% if this.theme.map_widget_enable %} 127 | {% partial 'map-widget/map-widget' %} 128 | {% endif %} 129 | 130 | {# Site footer #} 131 | {% if this.theme.site_footer_enable %} 132 | 136 | {% endif %} -------------------------------------------------------------------------------- /src/assets/dev/typography.md: -------------------------------------------------------------------------------- 1 | #TYPOGRAPHY MARKUP 2 | 3 | ```html 4 |

Залоловок 1

5 | 6 |

В отличие от пылевого и ионного хвостов, Каллисто гасит близкий математический горизонт — север вверху, восток слева. Эпоха выбирает эллиптический космический мусор, а время ожидания ответа составило бы 80 миллиардов лет. Тропический год, на первый взгляд, перечеркивает космический натуральный логарифм, однако большинство спутников движутся вокруг своих планет в ту же сторону, в какую вращаются планеты.

7 | 8 |

Залоловок 2

9 | 10 |

Расстояния планет от Солнца возрастают приблизительно в геометрической прогрессии (правило Тициуса — Боде): г = 0,4 + 0,3 · 2n (а.е.), где Южный Треугольник выслеживает дип-скай объект, в таком случае эксцентриситеты и наклоны орбит возрастают. В отличие от пылевого и ионного хвостов, Каллисто гасит близкий математический горизонт — север вверху, восток слева. Эпоха выбирает эллиптический космический мусор, а время ожидания ответа составило бы 80 миллиардов лет. Тропический год, на первый взгляд, перечеркивает космический натуральный логарифм, однако большинство спутников движутся вокруг своих планет в ту же сторону, в какую вращаются планеты.

11 | 12 |

Очевидно, что угловая скорость вращения иллюстрирует вращательный натуральный логарифм (расчет Тарутия затмения точен — 23 хояка 1 г. II О. = 24.06.-771). Широта гасит астероид, хотя для имеющих глаза-телескопы туманность Андромеды показалась бы на небе величиной с треть ковша Большой Медведицы. Узел притягивает pадиотелескоп Максвелла — у таких объектов рукава столь фрагментарны и обрывочны, что их уже нельзя назвать спиральными. Эксцентриситет, в первом приближении, прочно решает болид, об интересе Галла к астрономии и затмениям Цицерон говорит также в трактате «О старости» (De senectute).

13 | 14 |

Под действием гидроксиламина альдегиды превращаются в оксимы: СН3СНО + NH2OH = CH3C(=NOH)H + H2O

15 | 16 |

Масса Земли приблизительно равна 5,98×1024 кг. Общее число атомов, составляющих Землю ≈1050.

17 | 18 | 25 | 26 |
    27 |
  1. Весеннее равноденствие непрерывно.
  2. 28 |
  3. Газопылевое облако вращает близкий эффективный диаметp
  4. 29 |
  5. выслеживая яркие, броские образования
  6. 30 |
  7. Азимут сложен
  8. 31 |
  9. Как мы уже знаем, годовой параллакс интуитивно понятен
  10. 32 |
33 | 34 |

Залоловок 3

35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 |
стоимость размещения рекламы в газете «объявления по средам», грн. без ндс и ннр
место размещенияобъем размер, мм.цена
первая страница1 модуль50 х 651650,00
первая страница1 модуль50 х 65792,00
первая страница1 модуль50 х 65550,00
первая страница1 модуль50 х 60
первая страница110,00
футерфутерьфутерфутер
86 | 87 |

Залоловок 4

88 | 89 |

Очевидно, что угловая скорость вращения иллюстрирует вращательный натуральный логарифм (расчет Тарутия затмения точен — 23 хояка 1 г. II О. = 24.06.-771). Широта гасит астероид, хотя для имеющих глаза-телескопы туманность Андромеды показалась бы на небе величиной с треть ковша Большой Медведицы. Узел притягивает pадиотелескоп Максвелла — у таких объектов рукава столь фрагментарны и обрывочны, что их уже нельзя назвать спиральными. Эксцентриситет, в первом приближении, прочно решает болид, об интересе Галла к астрономии и затмениям Цицерон говорит также в трактате «О старости» (De senectute).

90 | Лечебная база: кабинет функциональной диагностики, водолечебница, физиотерапевтическое отделение, стоматологический и массажный кабинеты. 91 | 92 |
Залоловок 5
93 | 94 |

Очевидно, что угловая скорость вращения иллюстрирует вращательный натуральный логарифм (расчет Тарутия затмения точен — 23 хояка 1 г. II О. = 24.06.-771). Широта гасит астероид, хотя для имеющих глаза-телескопы туманность Андромеды показалась бы на небе величиной с треть ковша Большой Медведицы. Узел притягивает pадиотелескоп Максвелла — у таких объектов рукава столь фрагментарны и обрывочны, что их уже нельзя назвать спиральными. Эксцентриситет, в первом приближении, прочно решает болид, об интересе Галла к астрономии и затмениям Цицерон говорит также в трактате «О старости» (De senectute).

95 | 96 |
Залоловок 6
97 | 98 |

Очевидно, что угловая скорость вращения иллюстрирует вращательный натуральный логарифм (расчет Тарутия затмения точен — 23 хояка 1 г. II О. = 24.06.-771). Широта гасит астероид, хотя для имеющих глаза-телескопы туманность Андромеды показалась бы на небе величиной с треть ковша Большой Медведицы. Узел притягивает pадиотелескоп Максвелла — у таких объектов рукава столь фрагментарны и обрывочны, что их уже нельзя назвать спиральными. Эксцентриситет, в первом приближении, прочно решает болид, об интересе Галла к астрономии и затмениям Цицерон говорит также в трактате «О старости» (De senectute).

99 | 100 |
Лечебная база: кабинет функциональной диагностики, водолечебница, физиотерапевтическое отделение, стоматологический и массажный кабинеты.
101 | 102 | ``` -------------------------------------------------------------------------------- /src/assets/app/app.css: -------------------------------------------------------------------------------- 1 | /* 2 | |-------------------------------------------------------------------------- 3 | | VARIABLES (var()) 4 | |-------------------------------------------------------------------------- 5 | | 6 | | Объявление переменных 7 | | 8 | */ 9 | 10 | :root { 11 | --colorPlaceholder: #a8a8a8; 12 | --colorPrimary: #34495e; 13 | --colorTextSelection: #f9f9f9; 14 | --colorText: #34495e; 15 | --colorOverlay: #34495e; 16 | --fontFamily: OpenSansRegular, Arial, sans-serif; 17 | --shadowOutset: 0 5px 30px rgba(35, 31, 32, 0.15); 18 | --transformScale: scale(1.1); 19 | --transitionDuration: .5s; 20 | } 21 | 22 | 23 | /* 24 | |-------------------------------------------------------------------------- 25 | | MEDIA 26 | |-------------------------------------------------------------------------- 27 | | 28 | | Объявления кастомных медиавыражений 29 | | 30 | */ 31 | 32 | :root { 33 | @custom-media --tablet (max-width: 1120px); 34 | @custom-media --mobile (max-width: 640px); 35 | } 36 | 37 | 38 | /* 39 | |-------------------------------------------------------------------------- 40 | | NATIVE ELEMENTS 41 | |-------------------------------------------------------------------------- 42 | | 43 | | Кастомизация нативных элементов браузера 44 | | 45 | */ 46 | 47 | ::-moz-selection { 48 | background-color: var(--colorPrimary); 49 | color: var(--colorTextSelection); 50 | } 51 | 52 | ::selection { 53 | background-color: var(--colorPrimary); 54 | color: var(--colorTextSelection); 55 | } 56 | 57 | -webkit-::input-placeholder { 58 | color: var(--colorPlaceholder); 59 | } 60 | 61 | ::-moz-placeholder { 62 | color: var(--colorPlaceholder); 63 | } 64 | 65 | :-moz-placeholder { 66 | color: var(--colorPlaceholder); 67 | } 68 | 69 | :-ms-input-placeholder { 70 | color: var(--colorPlaceholder); 71 | } 72 | 73 | :focus::-webkit-input-placeholder, 74 | :focus::-moz-placeholder, 75 | :focus:-moz-placeholder, 76 | :focus:-ms-input-placeholder { 77 | /*color: transparent;*/ 78 | } 79 | 80 | ::-moz-selection, 81 | ::selection { 82 | background-color: var(--colorPrimary); 83 | color: var(--colorTextSelection); 84 | } 85 | 86 | input[type=number]::-webkit-inner-spin-button, 87 | input[type=number]::-webkit-outer-spin-button { 88 | margin: 0; 89 | -webkit-appearance: none; 90 | } 91 | 92 | input[type=number] & { 93 | -moz-appearance: textfield; 94 | appearance: none; 95 | } 96 | 97 | 98 | /* 99 | |-------------------------------------------------------------------------- 100 | | RESET 101 | |-------------------------------------------------------------------------- 102 | | 103 | | Сброс стилей браузера (для нормализации используется вендор) 104 | | 105 | */ 106 | 107 | * { 108 | box-sizing: border-box; 109 | margin: 0; 110 | padding: 0; 111 | outline: none; 112 | outline-color: transparent; 113 | font-family: var(--fontFamily); 114 | } 115 | 116 | ::before, 117 | ::after { 118 | box-sizing: border-box; 119 | transition: inherit; 120 | } 121 | 122 | h1, 123 | h2, 124 | h3, 125 | h4, 126 | h5, 127 | h6, 128 | div, 129 | p, 130 | address, 131 | article, 132 | aside, 133 | details, 134 | figcaption, 135 | figure, 136 | footer, 137 | header, 138 | hgroup, 139 | main, 140 | menu, 141 | nav, 142 | section, 143 | summary { 144 | display: block; 145 | margin: 0; 146 | padding: 0; 147 | font-style: normal; 148 | } 149 | 150 | html { 151 | min-width: 320px; 152 | min-height: 100vh; 153 | width: 100%; 154 | background-color: var(--colorText); 155 | color: var(--colorText); 156 | } 157 | 158 | body { 159 | padding: 0; 160 | min-height: inherit; 161 | width: 100%; 162 | background-color: #fff; 163 | } 164 | 165 | a { 166 | text-decoration: none; 167 | cursor: pointer !important; 168 | } 169 | 170 | button { 171 | margin: 0; 172 | padding: 0; 173 | border: none; 174 | background-color: transparent; 175 | cursor: pointer !important; 176 | } 177 | 178 | a, 179 | button, 180 | input, 181 | textarea { 182 | font-family: inherit; 183 | transition: var(--transitionDuration); 184 | } 185 | 186 | fieldset { 187 | margin: 0; 188 | padding: 0; 189 | border: none; 190 | } 191 | 192 | 193 | /* 194 | |-------------------------------------------------------------------------- 195 | | VENDORS 196 | |-------------------------------------------------------------------------- 197 | | 198 | | Стилизация вендорных элементов 199 | | 200 | */ 201 | 202 | 203 | /* tipso */ 204 | 205 | .tipso_bubble, 206 | .tipso_title { 207 | padding: 0; 208 | border-radius: 0 !important; 209 | text-align: left; 210 | font-size: .8rem; 211 | line-height: 1.2em; 212 | } 213 | 214 | .tipso_title, 215 | .tipso_content { 216 | padding: .5em; 217 | } 218 | 219 | 220 | /* remodal */ 221 | 222 | .remodal { 223 | padding: 0; 224 | max-width: 360px; 225 | width: 100% !important; 226 | color: initial; 227 | } 228 | 229 | .remodal-bg { 230 | transition-duration: var(--transitionDuration); 231 | } 232 | 233 | .remodal-overlay { 234 | background-image: url(../images/global-close-na.svg), url(../images/global-overlay.jpg); 235 | background-attachment: fixed, fixed; 236 | background-position: calc(100% - 2rem) 1rem, center; 237 | background-size: auto, auto; 238 | background-repeat: no-repeat, repeat; 239 | opacity: 1; 240 | } 241 | 242 | .remodal-wrapper:after { 243 | display: inline-block; 244 | } 245 | 246 | .remodal.remodal-is-opening, 247 | .remodal.remodal-is-closing { 248 | animation-duration: .5s; 249 | } 250 | 251 | 252 | /* lightcase */ 253 | 254 | #lightcase-overlay { 255 | background-color: var(--colorOverlay); 256 | opacity: 1; 257 | } 258 | 259 | .lightcase-icon-close:before { 260 | color: #fff; 261 | } 262 | 263 | .lightcase-icon-prev:before { 264 | color: #fff; 265 | } 266 | 267 | .lightcase-icon-next:before { 268 | color: #fff; 269 | } 270 | 271 | #lightcase-case[data-lc-type=image] #lightcase-content, 272 | #lightcase-case[data-lc-type=video] #lightcase-content { 273 | box-shadow: none; 274 | background-color: transparent; 275 | } 276 | 277 | 278 | /* legitripple */ 279 | 280 | [data-ripple] & {} 281 | 282 | [data-ripple]:hover {} 283 | 284 | [data-ripple] .legitRipple-ripple { 285 | background: rgba(221, 221, 221, .4) !important; 286 | } -------------------------------------------------------------------------------- /src/assets/app/app.js: -------------------------------------------------------------------------------- 1 | const App = new Vue({ 2 | delimiters: ['[[', ']]'], 3 | el: '#app', 4 | name: 'App', 5 | data: { 6 | animateAnchors: true, 7 | animationsOnScholl: false, 8 | customFileInput: false, 9 | customSelect: false, 10 | detectBrowser: true, 11 | disableUserSelect: false, 12 | galleryLightbox: true, 13 | infiniteAjaxScroll: false, 14 | pagePreloader: true, 15 | pixelPerfect: false, 16 | rippleEffect: true, 17 | tooltips: false, 18 | }, 19 | methods: { 20 | pixlayout() { 21 | $.pixlayout({ 22 | src: "/assets/images/theme-about.png", 23 | show: false, 24 | top: 0, 25 | left: -135, 26 | opacity: 0.2 27 | }); 28 | }, 29 | bowser() { 30 | $('html').attr('data-browser', bowser.name.toLowerCase().replace(/\s/g, '-')); 31 | $('html').attr('data-browser-version', Math.floor(bowser.version)); 32 | }, 33 | mPageScroll2id() { 34 | $("a[href*='#'], button[href*='#']").mPageScroll2id({ 35 | offset: 46, 36 | scrollSpeed: 1000, 37 | scrollEasing: 'easeInOutCubic' 38 | }); 39 | }, 40 | animsition() { 41 | if ($("[data-page-preloader]").length) { 42 | $("[data-page-preloader]").animsition({ 43 | inClass: 'fade-in', 44 | outClass: 'fade-out', 45 | inDuration: 1500, 46 | outDuration: 800, 47 | linkElement: 'a:not([data-remodal-target]):not([target="_blank"]):not([href*="#"]):not([href*=":"])', 48 | loading: true, 49 | loadingParentElement: 'html', 50 | loadingClass: 'animsition-loading', 51 | loadingInner: '', 52 | timeout: false, 53 | timeoutCountdown: 5000, 54 | onLoadEvent: true, 55 | browser: ['animation-duration', '-webkit-animation-duration'], 56 | overlay: false, 57 | overlayClass: 'animsition-overlay-slide', 58 | overlayParentElement: 'body', 59 | transition: function (url) { 60 | window.location.href = url; 61 | } 62 | }); 63 | } 64 | }, 65 | lightcase() { 66 | $('[data-rel^=lightcase]').lightcase({ 67 | liveResize: true, 68 | fullScreenModeForMobile: true, 69 | showSequenceInfo: false, 70 | maxWidth: 1200, 71 | maxHeight: 1000, 72 | navigateEndless: true, 73 | overlayOpacity: 1, 74 | speedIn: 500, 75 | speedOut: 500, 76 | swipe: true, 77 | }); 78 | }, 79 | wow() { 80 | new WOW().init(); 81 | }, 82 | tipso() { 83 | if ($("[data-tooltip-text]").length) { 84 | $('[data-tooltip-text]').each(function () { 85 | $(this).tipso({ 86 | speed: 400, 87 | background: '#ededed', 88 | titleBackground: '#0f69a8', 89 | color: '#33373d', 90 | titleColor: '#F0F0F0', 91 | titleContent: $(this).attr('data-tooltip-title'), 92 | showArrow: true, 93 | position: 'top', 94 | width: 'auto', 95 | maxWidth: '', 96 | delay: 500, 97 | hideDelay: 0, 98 | animationIn: 'fadeIn', 99 | animationOut: 'fadeOut', 100 | offsetX: 0, 101 | offsetY: 0, 102 | tooltipHover: false, 103 | content: $(this).attr('data-tooltip-text'), 104 | ajaxContentUrl: null, 105 | contentElementId: null, 106 | useTitle: true, 107 | templateEngineFunc: null, 108 | onBeforeShow: null, 109 | onShow: null, 110 | onHide: null, 111 | size: 'medium' 112 | }); 113 | }); 114 | } 115 | }, 116 | ias() { 117 | let ias = $.ias({ 118 | container: '.layout-wrap', 119 | item: '.items-row', 120 | pagination: '.pagination', 121 | next: '.pagination-next a' 122 | }); 123 | ias.extension(new IASSpinnerExtension({ 124 | src: '' 125 | })); 126 | ias.extension(new IASTriggerExtension({ 127 | offset: 2, 128 | text: 'Load more items' 129 | })); 130 | ias.extension(new IASNoneLeftExtension({ 131 | text: "You reached the end" 132 | })); 133 | }, 134 | ripple() { 135 | $('[data-ripple]').ripple(); 136 | }, 137 | selectric() { 138 | $('select').selectric(); 139 | }, 140 | nicefileinput() { 141 | $('input[type=file]').nicefileinput({ 142 | label: 'Обзор' 143 | }); 144 | }, 145 | disableSelect() { 146 | document.ondragstart = noselect; 147 | document.onselectstart = noselect; 148 | document.oncontextmenu = noselect; 149 | 150 | function noselect() { 151 | return false; 152 | }; 153 | }, 154 | fixBrowsersBugs() { 155 | if ($('html[data-browser=internet-explorer]').length || $('html[data-browser=microsoft-edge]').length) { 156 | $('img[data-fix--ie--object-fit]').each(function () { 157 | $(this).css({ 158 | 'backgroundImage': 'url(' + $(this).attr('src') + ')', 159 | 'backgroundPosition': 'center center', 160 | 'backgroundRepeat': 'no-repeat', 161 | 'backgroundSize': 'cover', 162 | 'display': 'block' 163 | }) 164 | .removeAttr('src'); 165 | console.log($(this).css('objectPosition')); 166 | console.log($(this).css('objectFit')); 167 | }); 168 | }; 169 | } 170 | }, 171 | mounted() { 172 | 173 | const vm = this; 174 | 175 | if (vm.pixelPerfect === true) { 176 | vm.pixlayout(); 177 | console.info('Подключен плагин pixel-perfect верстки.'); 178 | } 179 | if (vm.detectBrowser === true) { 180 | vm.bowser(); 181 | console.info('Подключен плагин определения версии браузера.'); 182 | } 183 | if (vm.animateAnchors === true) { 184 | vm.mPageScroll2id(); 185 | console.info('Подключен плагин плавного скролла до анкоров.'); 186 | } 187 | if (vm.pagePreloader === true) { 188 | vm.animsition(); 189 | console.info('Подключен плагин прелоадера страницы.'); 190 | } 191 | if (vm.galleryLightbox === true) { 192 | vm.lightcase(); 193 | console.info('Подключен плагин лайтбокса для изображений.'); 194 | } 195 | if (vm.animationsOnScholl === true) { 196 | vm.wow(); 197 | console.info('Подключен плагин анимации при прокрутке страницы.'); 198 | } 199 | if (vm.tooltips === true) { 200 | vm.tipso(); 201 | console.info('Подключен плагин тултипов.'); 202 | } 203 | if (vm.infiniteAjaxScroll === true) { 204 | vm.ias(); 205 | console.info('Подключен плагин AJAX подгрузки элементов пагинации.'); 206 | } 207 | if (vm.rippleEffect === true) { 208 | vm.ripple(); 209 | console.info('Подключен плагин material эффекта для кнопок.'); 210 | } 211 | if (vm.customSelect === true) { 212 | vm.selectric(); 213 | console.info('Подключен плагин кастомного селекта.'); 214 | } 215 | if (vm.customFileInput === true) { 216 | vm.nicefileinput(); 217 | console.info('Подключен плагин кастомно инпута загрузки файлов.'); 218 | } 219 | if (vm.disableUserSelect === true) { 220 | vm.disableSelect(); 221 | console.info('Отключена возможность копирования контента пользователями.'); 222 | } 223 | 224 | vm.fixBrowsersBugs(); 225 | } 226 | }); -------------------------------------------------------------------------------- /src/theme.yaml: -------------------------------------------------------------------------------- 1 | name: Juicy 2 | description: Clean, simple and responsive landing page build on Vue.js with backend editing 3 | author: Alexey Litovchenko 4 | homepage: https://web2easy.ru 5 | code: Juicy 6 | #require: 7 | # - Acme.User 8 | # - Acme.Blog 9 | 10 | #-------------------------------------------------------------------------- 11 | # THEME CONFIGURATION 12 | #-------------------------------------------------------------------------- 13 | 14 | form: 15 | fields: 16 | 17 | # Site 18 | 19 | site_config_desc: 20 | label: OctoberCMS Juicy Theme Options 21 | type: section 22 | comment: Clean, simple and responsive landing page. 23 | 24 | tabs: 25 | fields: 26 | 27 | #Navigation 28 | 29 | navigation_enable: 30 | label: Display this component? 31 | type: switch 32 | default: 1 33 | tab: Navigation 34 | 35 | navigation_logo: 36 | label: Logo 37 | type: mediafinder 38 | mode: image 39 | comment: 40 | tab: Navigation 41 | 42 | #Promo 43 | 44 | promo_enable: 45 | label: Display this component? 46 | type: switch 47 | default: 1 48 | tab: Promo 49 | 50 | promo_title: 51 | label: Title 52 | type: text 53 | comment: 54 | default: 'OctoberCMS Juicy Theme' 55 | tab: Promo 56 | 57 | promo_subtitle: 58 | label: Subtitle 59 | type: text 60 | comment: 61 | default: 'Clean, simple and responsive landing page' 62 | tab: Promo 63 | 64 | promo_button_text: 65 | label: Button text 66 | type: text 67 | comment: 68 | default: 'Read more!' 69 | tab: Promo 70 | 71 | promo_items_title: 72 | label: Promo images 73 | type: section 74 | comment: 75 | tab: Promo 76 | 77 | promo_item: 78 | type: repeater 79 | prompt: Add image 80 | form: 81 | fields: 82 | promo_image: 83 | label: Image 84 | type: mediafinder 85 | mode: image 86 | tab: Promo 87 | 88 | 89 | #Portfolio 90 | 91 | portfolio_enable: 92 | label: Display this component? 93 | type: switch 94 | default: 1 95 | tab: Portfolio 96 | 97 | portfolio_title: 98 | label: Title 99 | type: text 100 | comment: 101 | default: 'Portfolio' 102 | tab: Portfolio 103 | 104 | portfolio_description: 105 | label: Desciption 106 | type: richeditor 107 | comment: 108 | default: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi, non expedita perspiciatis ex nostrum soluta neque natus veniam dignissimos consequuntur illo sed mollitia laboriosam, aspernatur eum. Alias dolorem, soluta nostrum.' 109 | tab: Portfolio 110 | 111 | portfolio_color: 112 | label: Background color 113 | type: colorpicker 114 | default: '#3498db' 115 | tab: Portfolio 116 | 117 | portfolio_items_title: 118 | label: Portfolio items 119 | type: section 120 | comment: 121 | tab: Portfolio 122 | 123 | portfolio_item: 124 | type: repeater 125 | prompt: Add image 126 | form: 127 | fields: 128 | image: 129 | label: Image 130 | type: mediafinder 131 | mode: image 132 | tab: Portfolio 133 | 134 | 135 | # About Us 136 | 137 | about_us_enable: 138 | label: Display this component? 139 | type: switch 140 | default: 1 141 | tab: About us 142 | 143 | about_us_title: 144 | label: Title 145 | type: text 146 | comment: 147 | default: About us 148 | tab: About us 149 | 150 | about_us_description: 151 | label: Description 152 | type: richeditor 153 | comment: 154 | default: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi, non expedita perspiciatis ex nostrum soluta neque natus veniam dignissimos consequuntur illo sed mollitia laboriosam, aspernatur eum. Alias dolorem, soluta nostrum.' 155 | tab: About us 156 | 157 | about_us_item: 158 | type: repeater 159 | prompt: Add item 160 | form: 161 | fields: 162 | item_icon: 163 | label: Icon 164 | type: mediafinder 165 | mode: image 166 | item_title: 167 | label: Title 168 | type: text 169 | comment: 170 | default: 'Title' 171 | item_text: 172 | label: Text 173 | type: richeditor 174 | comment: 175 | default: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.' 176 | tab: About us 177 | 178 | #Reviews 179 | 180 | reviews_enable: 181 | label: Display this component? 182 | type: switch 183 | default: 1 184 | tab: Reviews 185 | 186 | reviews_title: 187 | label: Title 188 | type: text 189 | comment: 190 | default: Reviews 191 | tab: Reviews 192 | 193 | reviews_color: 194 | label: Background color 195 | type: colorpicker 196 | default: rgb(155, 89, 182) 197 | tab: Reviews 198 | 199 | reviews_items_title: 200 | label: Reviews items 201 | type: section 202 | comment: 203 | tab: Reviews 204 | 205 | reviews_item: 206 | type: repeater 207 | prompt: Add review 208 | form: 209 | fields: 210 | avatar: 211 | label: Avatar 212 | type: mediafinder 213 | mode: image 214 | span: left 215 | name: 216 | label: Name 217 | type: text 218 | span: right 219 | info: 220 | label: Info 221 | type: text 222 | span: right 223 | text: 224 | label: Text 225 | type: richeditor 226 | span: right 227 | tab: Reviews 228 | 229 | #Contacts 230 | 231 | contacts_enable: 232 | label: Display this component? 233 | type: switch 234 | default: 1 235 | tab: Contacts 236 | 237 | contacts_title: 238 | label: Title 239 | type: text 240 | comment: 241 | default: Contacts 242 | tab: Contacts 243 | 244 | contacts_subtitle: 245 | label: Subtitle 246 | type: text 247 | comment: 248 | default: Nisi, non expedita perspiciatis ex nostrum soluta neque natus veniam dignissimos consequuntur illo sed mollitia laboriosam, aspernatur eum. Alias dolorem, soluta nostrum. 249 | tab: Contacts 250 | 251 | contacts_background_color: 252 | label: Background color 253 | type: colorpicker 254 | default: rgb(43, 62, 80) 255 | tab: Contacts 256 | 257 | contacts_content_background_color: 258 | label: Content background color 259 | type: colorpicker 260 | default: rgb(52, 152, 219) 261 | tab: Contacts 262 | 263 | contacts_items_title: 264 | label: Contacts items 265 | type: section 266 | comment: 267 | tab: Contacts 268 | 269 | contacts_item: 270 | type: repeater 271 | prompt: Add item 272 | form: 273 | fields: 274 | icon: 275 | label: Icon 276 | type: mediafinder 277 | mode: image 278 | title: 279 | label: Title 280 | type: text 281 | default: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.' 282 | text: 283 | label: Text 284 | type: richeditor 285 | tab: Contacts 286 | 287 | #Map-widget 288 | 289 | map_widget_enable: 290 | label: Display this component? 291 | type: switch 292 | default: 1 293 | tab: Map widget 294 | 295 | map_widget_code: 296 | label: Map widget code 297 | type: codeeditor 298 | mode: html 299 | comment: 300 | default: 301 | tab: Map widget 302 | 303 | #Site-footer 304 | 305 | site_footer_enable: 306 | label: Display this component? 307 | type: switch 308 | default: 1 309 | tab: Site footer 310 | 311 | site_footer_company: 312 | label: Company name 313 | type: text 314 | default: My Awesome Company 315 | comment: 316 | tab: Site footer 317 | 318 | site_footer_background_color: 319 | label: Background color 320 | type: colorpicker 321 | default: rgb(43, 62, 80) 322 | tab: Site footer 323 | 324 | #-------------------------------------------------------------------------- 325 | # FAQ 326 | #-------------------------------------------------------------------------- 327 | # 328 | # Field options 329 | # https://octobercms.com/docs/backend/forms#form-field-options 330 | # 331 | # Field types 332 | # https://octobercms.com/docs/backend/forms#field-types -------------------------------------------------------------------------------- /themes/juicy/theme.yaml: -------------------------------------------------------------------------------- 1 | name: Juicy 2 | description: Clean, simple and responsive landing page build on Vue.js with backend editing 3 | author: Alexey Litovchenko 4 | homepage: https://web2easy.ru 5 | code: Juicy 6 | #require: 7 | # - Acme.User 8 | # - Acme.Blog 9 | 10 | #-------------------------------------------------------------------------- 11 | # THEME CONFIGURATION 12 | #-------------------------------------------------------------------------- 13 | 14 | form: 15 | fields: 16 | 17 | # Site 18 | 19 | site_config_desc: 20 | label: OctoberCMS Juicy Theme Options 21 | type: section 22 | comment: Clean, simple and responsive landing page. 23 | 24 | tabs: 25 | fields: 26 | 27 | #Navigation 28 | 29 | navigation_enable: 30 | label: Display this component? 31 | type: switch 32 | default: 1 33 | tab: Navigation 34 | 35 | navigation_logo: 36 | label: Logo 37 | type: mediafinder 38 | mode: image 39 | comment: 40 | tab: Navigation 41 | 42 | #Promo 43 | 44 | promo_enable: 45 | label: Display this component? 46 | type: switch 47 | default: 1 48 | tab: Promo 49 | 50 | promo_title: 51 | label: Title 52 | type: text 53 | comment: 54 | default: 'OctoberCMS Juicy Theme' 55 | tab: Promo 56 | 57 | promo_subtitle: 58 | label: Subtitle 59 | type: text 60 | comment: 61 | default: 'Clean, simple and responsive landing page' 62 | tab: Promo 63 | 64 | promo_button_text: 65 | label: Button text 66 | type: text 67 | comment: 68 | default: 'Read more!' 69 | tab: Promo 70 | 71 | promo_items_title: 72 | label: Promo images 73 | type: section 74 | comment: 75 | tab: Promo 76 | 77 | promo_item: 78 | type: repeater 79 | prompt: Add image 80 | form: 81 | fields: 82 | promo_image: 83 | label: Image 84 | type: mediafinder 85 | mode: image 86 | tab: Promo 87 | 88 | 89 | #Portfolio 90 | 91 | portfolio_enable: 92 | label: Display this component? 93 | type: switch 94 | default: 1 95 | tab: Portfolio 96 | 97 | portfolio_title: 98 | label: Title 99 | type: text 100 | comment: 101 | default: 'Portfolio' 102 | tab: Portfolio 103 | 104 | portfolio_description: 105 | label: Desciption 106 | type: richeditor 107 | comment: 108 | default: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi, non expedita perspiciatis ex nostrum soluta neque natus veniam dignissimos consequuntur illo sed mollitia laboriosam, aspernatur eum. Alias dolorem, soluta nostrum.' 109 | tab: Portfolio 110 | 111 | portfolio_color: 112 | label: Background color 113 | type: colorpicker 114 | default: '#3498db' 115 | tab: Portfolio 116 | 117 | portfolio_items_title: 118 | label: Portfolio items 119 | type: section 120 | comment: 121 | tab: Portfolio 122 | 123 | portfolio_item: 124 | type: repeater 125 | prompt: Add image 126 | form: 127 | fields: 128 | image: 129 | label: Image 130 | type: mediafinder 131 | mode: image 132 | tab: Portfolio 133 | 134 | 135 | # About Us 136 | 137 | about_us_enable: 138 | label: Display this component? 139 | type: switch 140 | default: 1 141 | tab: About us 142 | 143 | about_us_title: 144 | label: Title 145 | type: text 146 | comment: 147 | default: About us 148 | tab: About us 149 | 150 | about_us_description: 151 | label: Description 152 | type: richeditor 153 | comment: 154 | default: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi, non expedita perspiciatis ex nostrum soluta neque natus veniam dignissimos consequuntur illo sed mollitia laboriosam, aspernatur eum. Alias dolorem, soluta nostrum.' 155 | tab: About us 156 | 157 | about_us_item: 158 | type: repeater 159 | prompt: Add item 160 | form: 161 | fields: 162 | item_icon: 163 | label: Icon 164 | type: mediafinder 165 | mode: image 166 | item_title: 167 | label: Title 168 | type: text 169 | comment: 170 | default: 'Title' 171 | item_text: 172 | label: Text 173 | type: richeditor 174 | comment: 175 | default: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.' 176 | tab: About us 177 | 178 | #Reviews 179 | 180 | reviews_enable: 181 | label: Display this component? 182 | type: switch 183 | default: 1 184 | tab: Reviews 185 | 186 | reviews_title: 187 | label: Title 188 | type: text 189 | comment: 190 | default: Reviews 191 | tab: Reviews 192 | 193 | reviews_color: 194 | label: Background color 195 | type: colorpicker 196 | default: rgb(155, 89, 182) 197 | tab: Reviews 198 | 199 | reviews_items_title: 200 | label: Reviews items 201 | type: section 202 | comment: 203 | tab: Reviews 204 | 205 | reviews_item: 206 | type: repeater 207 | prompt: Add review 208 | form: 209 | fields: 210 | avatar: 211 | label: Avatar 212 | type: mediafinder 213 | mode: image 214 | span: left 215 | name: 216 | label: Name 217 | type: text 218 | span: right 219 | info: 220 | label: Info 221 | type: text 222 | span: right 223 | text: 224 | label: Text 225 | type: richeditor 226 | span: right 227 | tab: Reviews 228 | 229 | #Contacts 230 | 231 | contacts_enable: 232 | label: Display this component? 233 | type: switch 234 | default: 1 235 | tab: Contacts 236 | 237 | contacts_title: 238 | label: Title 239 | type: text 240 | comment: 241 | default: Contacts 242 | tab: Contacts 243 | 244 | contacts_subtitle: 245 | label: Subtitle 246 | type: text 247 | comment: 248 | default: Nisi, non expedita perspiciatis ex nostrum soluta neque natus veniam dignissimos consequuntur illo sed mollitia laboriosam, aspernatur eum. Alias dolorem, soluta nostrum. 249 | tab: Contacts 250 | 251 | contacts_background_color: 252 | label: Background color 253 | type: colorpicker 254 | default: rgb(43, 62, 80) 255 | tab: Contacts 256 | 257 | contacts_content_background_color: 258 | label: Content background color 259 | type: colorpicker 260 | default: rgb(52, 152, 219) 261 | tab: Contacts 262 | 263 | contacts_items_title: 264 | label: Contacts items 265 | type: section 266 | comment: 267 | tab: Contacts 268 | 269 | contacts_item: 270 | type: repeater 271 | prompt: Add item 272 | form: 273 | fields: 274 | icon: 275 | label: Icon 276 | type: mediafinder 277 | mode: image 278 | title: 279 | label: Title 280 | type: text 281 | default: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.' 282 | text: 283 | label: Text 284 | type: richeditor 285 | tab: Contacts 286 | 287 | #Map-widget 288 | 289 | map_widget_enable: 290 | label: Display this component? 291 | type: switch 292 | default: 1 293 | tab: Map widget 294 | 295 | map_widget_code: 296 | label: Map widget code 297 | type: codeeditor 298 | mode: html 299 | comment: 300 | default: 301 | tab: Map widget 302 | 303 | #Site-footer 304 | 305 | site_footer_enable: 306 | label: Display this component? 307 | type: switch 308 | default: 1 309 | tab: Site footer 310 | 311 | site_footer_company: 312 | label: Company name 313 | type: text 314 | default: My Awesome Company 315 | comment: 316 | tab: Site footer 317 | 318 | site_footer_background_color: 319 | label: Background color 320 | type: colorpicker 321 | default: rgb(43, 62, 80) 322 | tab: Site footer 323 | 324 | #-------------------------------------------------------------------------- 325 | # FAQ 326 | #-------------------------------------------------------------------------- 327 | # 328 | # Field options 329 | # https://octobercms.com/docs/backend/forms#form-field-options 330 | # 331 | # Field types 332 | # https://octobercms.com/docs/backend/forms#field-types -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | /* 4 | |-------------------------------------------------------------------------- 5 | | INIT PLUGINS 6 | |-------------------------------------------------------------------------- 7 | */ 8 | 9 | const babel = require('gulp-babel'); 10 | const changed = require('gulp-changed'); 11 | const concat = require('gulp-concat'); 12 | const cssBase64 = require('gulp-css-base64'); 13 | const del = require('del'); 14 | const flatten = require('gulp-flatten'); 15 | const gulp = require('gulp'); 16 | const imagemin = require('gulp-imagemin'); 17 | const livereload = require('gulp-livereload'); 18 | const postcss = require('gulp-postcss'); 19 | const rename = require('gulp-rename'); 20 | const sourcemaps = require('gulp-sourcemaps'); 21 | const uglify = require('gulp-uglify'); 22 | const webpack = require('webpack'); 23 | const webpackStream = require('webpack-stream'); 24 | 25 | /* 26 | |-------------------------------------------------------------------------- 27 | | PROJECT CONFIG 28 | |-------------------------------------------------------------------------- 29 | */ 30 | 31 | var project = { 32 | path: 'themes/juicy', 33 | images: [ 34 | 'src/assets/app/images/*.*', 35 | 'src/assets/forms/images/*.*', 36 | 'src/assets/global/images/*.*', 37 | 'src/assets/grid/images/*.*', 38 | 'src/assets/images/*.*', 39 | 'src/assets/typography/images/*.*', 40 | 'src/partials/**/images/*.*' 41 | ], 42 | video: function() { 43 | var allVideos = ['src/partials/**/video/*.*']; 44 | return allVideos; 45 | }, 46 | files: function() { 47 | var allFiles = ['src/partials/**/files/*.*']; 48 | return allFiles; 49 | }, 50 | vendorCSS: function() { 51 | let vendorCSS = [ 52 | // Базовые библиотеки 53 | 'bower_components/normalize-css/normalize.css', 54 | 'bower_components/animate.css/animate.min.css', 55 | 56 | // Дополнительные библиотеки и плагины 57 | 'bower_components/animsition/dist/css/animsition.min.css', 58 | 'bower_components/lightcase/src/css/lightcase.css', 59 | 'bower_components/remodal/dist/remodal.css', 60 | 'bower_components/remodal/dist/remodal-default-theme.css', 61 | 'bower_components/tipso/src/tipso.min.css', 62 | 'bower_components/Swiper/dist/css/swiper.min.css', 63 | //'bower_components/fluidbox/dist/css/fluidbox.min.css', 64 | //'bower_components/colorifyjs/styles/colorify.css', 65 | 'bower_components/legitripple/dist/ripple.min.css', 66 | 'bower_components/flickity/dist/flickity.min.css', 67 | 'bower_components/jquery-selectric/public/selectric.css' 68 | ]; 69 | return vendorCSS; 70 | }, 71 | appCSS: function() { 72 | let appCSS = [ 73 | // Стили шаблона 74 | // Стили шаблона 75 | 'src/assets/app/**/*.css', 76 | 'src/assets/grid/**/*.css', 77 | 'src/assets/typography/**/*.css', 78 | 'src/assets/forms/**/*.css', 79 | 'src/partials/**/*.css', 80 | 'src/assets/fonts/**/*.css', 81 | '!src/**/*example*/*.css' 82 | ]; 83 | return appCSS; 84 | }, 85 | vendorJS: function() { 86 | let vendorJS = [ 87 | // Базовые библиотеки 88 | 'node_modules/vue/dist/vue.js', 89 | 'bower_components/jquery/dist/jquery.min.js', 90 | 'bower_components/jquery.bem/jquery.bem.js', 91 | 'bower_components/velocity/velocity.min.js', 92 | //'bower_components/jquery.ba-throttle-debounce.min/index.js', 93 | 94 | // Дополнительные библиотеки и плагины 95 | 'bower_components/bowser/bowser.min.js', 96 | 'bower_components/Swiper/dist/js/swiper.jquery.min.js', 97 | 'bower_components/animsition/dist/js/animsition.min.js', 98 | //'bower_components/colorifyjs/scripts/colorify.min.js', 99 | //'bower_components/fluidbox/dist/js/jquery.fluidbox.min.js', 100 | //'bower_components/jquery-ias.min/index.js', 101 | 'bower_components/jquery.maskedinput/dist/jquery.maskedinput.min.js', 102 | //'bower_components/jquery_lazyload/jquery.lazyload.js', 103 | 'bower_components/lightcase/src/js/lightcase.js', 104 | //'bower_components/packery/dist/packery.pkgd.min.js', 105 | 'bower_components/page-scroll-to-id/jquery.malihu.PageScroll2id.js', 106 | 'bower_components/remodal/dist/remodal.min.js', 107 | //'bower_components/theia-sticky-sidebar/js/theia-sticky-sidebar.js', 108 | 'bower_components/tabtab.js/dist/tabtab.min.js', 109 | 'bower_components/tipso/src/tipso.min.js', 110 | 'bower_components/wow/dist/wow.min.js', 111 | 'bower_components/legitripple/dist/ripple.min.js', 112 | 'bower_components/superplaceholder/dist/superplaceholder.min.js', 113 | //'bower_components/isotope/dist/isotope.pkgd.min.js', 114 | 'bower_components/jquery.accordion/index.js', 115 | 'bower_components/parallax.js/parallax.min.js', 116 | 'bower_components/flickity/dist/flickity.pkgd.min.js', 117 | 'bower_components/jquery-selectric/public/jquery.selectric.min.js', 118 | 119 | // Плагины для разработки 120 | 'src/assets/dev/jquery.pixlayout.0.9.7.js', 121 | 'src/assets/dev/jquery.pixlayout.config.js' 122 | ]; 123 | return vendorJS; 124 | }, 125 | appJS: function() { 126 | let appJS = [ 127 | // Скрипты шаблона 128 | 'src/assets/grid/**/*.js', 129 | 'src/assets/fonts/**/*.js', 130 | 'src/assets/typography/**/*.js', 131 | 'src/assets/forms/**/*.js', 132 | 'src/partials/**/*.js', 133 | 'src/assets/app/**/*.js', 134 | '!src/partials/app.js', 135 | '!src/**/*example*/*.js' 136 | ]; 137 | return appJS; 138 | } 139 | }; 140 | 141 | // конфигурация плагинов проекта 142 | let config = { 143 | del: { 144 | force: true 145 | }, 146 | postcss: [ 147 | require('postcss-cssnext')({ 148 | browsers: ['> 2%'] 149 | }) 150 | ], 151 | postcssBuild: [ 152 | require('postcss-cssnext')({ 153 | browsers: ['> 2%'] 154 | }), 155 | require('cssnano')({ 156 | discardComments: { 157 | removeAll: true 158 | }, 159 | safe: true, 160 | autoprefixer: false, 161 | zindex: false 162 | }) 163 | ], 164 | cssBase64: { 165 | maxWeightResource: 50000 166 | }, 167 | babel: { 168 | presets: [ 169 | [ 170 | 'latest', 171 | { 172 | es2015: { 173 | modules: false 174 | } 175 | } 176 | ] 177 | ], 178 | compact: false 179 | }, 180 | uglify: { 181 | compress: { 182 | drop_console: true 183 | } 184 | } 185 | }; 186 | 187 | // наборы gulp тасков 188 | gulp.task('default', [ 189 | 'htm', 190 | 'css--vendor', 191 | 'css--app', 192 | 'js--vendor', 193 | 'js--webpack', 194 | 'fonts', 195 | 'icons', 196 | 'images', 197 | 'video', 198 | 'files', 199 | 'root', 200 | 'watch' 201 | ]); 202 | gulp.task('build', [ 203 | 'htm', 204 | 'css--vendor', 205 | 'css--app', 206 | 'js--build--vendor', 207 | 'js--build--webpack', 208 | 'fonts', 209 | 'icons', 210 | 'video', 211 | 'files', 212 | 'root' 213 | ]); 214 | 215 | /* 216 | |-------------------------------------------------------------------------- 217 | | CSS 218 | |-------------------------------------------------------------------------- 219 | */ 220 | 221 | // собираем все стили в 1 файл 222 | gulp.task('css--vendor', function() { 223 | let srcPath = project.vendorCSS(); 224 | let projectPath = project.path + '/assets/styles/'; 225 | 226 | return gulp 227 | .src(srcPath) 228 | .pipe(sourcemaps.init()) 229 | .pipe(concat('vendor.css')) 230 | .pipe(postcss(config.postcss)) 231 | .pipe(sourcemaps.write('./')) 232 | .pipe(gulp.dest(projectPath)) 233 | .pipe(livereload()); 234 | }); 235 | 236 | gulp.task('css--app', function() { 237 | let srcPath = project.appCSS(); 238 | let projectPath = project.path + '/assets/styles/'; 239 | 240 | return gulp 241 | .src(srcPath) 242 | .pipe(sourcemaps.init()) 243 | .pipe(concat('app.css')) 244 | .pipe(postcss(config.postcss)) 245 | .pipe(sourcemaps.write('./')) 246 | .pipe(gulp.dest(projectPath)) 247 | .pipe(livereload()); 248 | }); 249 | 250 | gulp.task('css--build--vendor', function() { 251 | let srcPath = project.vendorCSS(); 252 | let projectPath = project.path + '/assets/styles/'; 253 | 254 | return gulp 255 | .src(srcPath) 256 | .pipe(concat('vendor.css')) 257 | .pipe(postcss(config.postcssBuild)) 258 | .pipe(gulp.dest(projectPath)); 259 | }); 260 | gulp.task('css--build--app', function() { 261 | let srcPath = project.appCSS(); 262 | let projectPath = project.path + '/assets/styles/'; 263 | 264 | return gulp 265 | .src(srcPath) 266 | .pipe(concat('app.css')) 267 | .pipe(postcss(config.postcssBuild)) 268 | .pipe(gulp.dest(projectPath)); 269 | }); 270 | 271 | /* 272 | |-------------------------------------------------------------------------- 273 | | HTM 274 | |-------------------------------------------------------------------------- 275 | */ 276 | 277 | // собираем элементы шаблонизатора в .html страницы 278 | gulp.task('htm', function() { 279 | var srcPath = ['src/**/*.htm', '!src/**/*example*/*.htm']; 280 | var projectPath = project.path; 281 | 282 | // подставляем данные в шаблонизатор и рендерим 283 | return gulp 284 | .src(srcPath) 285 | .pipe(gulp.dest(projectPath)) 286 | .pipe(livereload()); 287 | }); 288 | 289 | /* 290 | |-------------------------------------------------------------------------- 291 | | JS 292 | |-------------------------------------------------------------------------- 293 | */ 294 | 295 | gulp.task('js--vendor', function() { 296 | let srcPath = project.vendorJS(); 297 | var projectPath = project.path + '/assets/scripts/'; 298 | 299 | return gulp 300 | .src(srcPath) 301 | .pipe(sourcemaps.init()) 302 | .pipe(concat('vendor.js')) 303 | .pipe(sourcemaps.write('./')) 304 | .pipe(gulp.dest(projectPath)) 305 | .pipe(livereload()); 306 | }); 307 | 308 | gulp.task('js--app', function() { 309 | let srcPath = project.appJS(); 310 | let tempPath = 'src/partials/'; 311 | 312 | gulp 313 | .src(srcPath) 314 | .pipe(concat('app.js')) 315 | .pipe(babel(config.babel)) 316 | .pipe(gulp.dest(tempPath)); 317 | }); 318 | 319 | gulp.task('js--webpack', ['js--app'], function() { 320 | setTimeout(function() { 321 | let srcPath = project.appJS(); 322 | let tempPath = 'src/partials/'; 323 | let projectPath = project.path + '/assets/scripts/'; 324 | 325 | return gulp 326 | .src(tempPath + 'app.js') 327 | .pipe(sourcemaps.init()) 328 | .pipe(webpackStream(require('./webpack.config.js'), webpack)) 329 | .pipe(sourcemaps.write('./')) 330 | .pipe(rename('app.js')) 331 | .pipe(gulp.dest(projectPath)) 332 | .pipe(livereload()); 333 | }, 1000); 334 | }); 335 | 336 | gulp.task('js--build--vendor', function() { 337 | let srcPath = project.vendorJS(); 338 | let projectPath = project.path + '/assets/scripts/'; 339 | 340 | gulp 341 | .src(srcPath) 342 | .pipe(concat('vendor.js')) 343 | .pipe(uglify(config.uglify)) 344 | .pipe(gulp.dest(projectPath)); 345 | }); 346 | gulp.task('js--build--webpack', ['js--app'], function() { 347 | setTimeout(function() { 348 | let srcPath = project.appJS(); 349 | let tempPath = 'src/partials/'; 350 | let projectPath = project.path + '/assets/scripts/'; 351 | 352 | return gulp 353 | .src(tempPath + 'app.js') 354 | .pipe(webpackStream(require('./webpack.config.js'), webpack)) 355 | .pipe(rename('app.js')) 356 | .pipe(uglify(config.uglify)) 357 | .pipe(gulp.dest(projectPath)) 358 | .pipe(livereload()); 359 | }, 1000); 360 | }); 361 | 362 | /* 363 | |-------------------------------------------------------------------------- 364 | | FONTS 365 | |-------------------------------------------------------------------------- 366 | */ 367 | 368 | // перебрасываем все шрифты в директорию сборки 369 | gulp.task('fonts', function() { 370 | var srcPath = ['src/assets/fonts/**/*.*', '!src/assets/fonts/*.css']; 371 | var projectPath = project.path + '/assets/fonts/'; 372 | 373 | gulp 374 | .src(srcPath) 375 | .pipe(gulp.dest(projectPath)) 376 | .pipe(livereload()); 377 | }); 378 | 379 | /* 380 | |-------------------------------------------------------------------------- 381 | | ICONS 382 | |-------------------------------------------------------------------------- 383 | */ 384 | 385 | // перебрасываем все иконки приложения в директорию сборки 386 | gulp.task('icons', function() { 387 | var srcPath = 'src/assets/icons/*.*'; 388 | var projectPath = project.path + '/assets/icons/'; 389 | 390 | gulp 391 | .src(srcPath) 392 | .pipe(gulp.dest(projectPath)) 393 | .pipe(livereload()); 394 | }); 395 | 396 | /* 397 | |-------------------------------------------------------------------------- 398 | | IMAGES 399 | |-------------------------------------------------------------------------- 400 | */ 401 | 402 | gulp.task('images', function() { 403 | let srcPath = project.images; 404 | var projectPath = project.path + '/assets/images/'; 405 | 406 | return gulp 407 | .src(srcPath) 408 | .pipe(flatten()) 409 | .pipe(gulp.dest(projectPath)) 410 | .pipe(livereload()); 411 | }); 412 | 413 | gulp.task('images--build', function() { 414 | var srcPath = project.images; 415 | var projectPath = project.path + '/assets/images/'; 416 | 417 | return gulp 418 | .src(srcPath) 419 | .pipe(flatten()) 420 | .pipe(imagemin()) 421 | .pipe(gulp.dest(projectPath)); 422 | }); 423 | 424 | /* 425 | |-------------------------------------------------------------------------- 426 | | VIDEO 427 | |-------------------------------------------------------------------------- 428 | */ 429 | 430 | // перебрасываем все видео в директорию сборки 431 | gulp.task('video', function() { 432 | let srcPath = project.video(); 433 | var projectPath = project.path + '/assets/video/'; 434 | 435 | return gulp 436 | .src(srcPath) 437 | .pipe(flatten()) 438 | .pipe(gulp.dest(projectPath)) 439 | .pipe(livereload()); 440 | }); 441 | 442 | /* 443 | |-------------------------------------------------------------------------- 444 | | FILES 445 | |-------------------------------------------------------------------------- 446 | */ 447 | gulp.task('files', function() { 448 | let srcPath = project.files(); 449 | var projectPath = project.path + '/assets/files/'; 450 | 451 | return gulp 452 | .src(srcPath) 453 | .pipe(flatten()) 454 | .pipe(gulp.dest(projectPath)) 455 | .pipe(livereload()); 456 | }); 457 | 458 | /* 459 | |-------------------------------------------------------------------------- 460 | | ROOT 461 | |-------------------------------------------------------------------------- 462 | */ 463 | gulp.task('root', function() { 464 | let srcPath = ['!src/assets/dev/**.*', 'src/**/*.php', 'src/*.*']; 465 | var projectPath = project.path + '/'; 466 | 467 | return gulp 468 | .src(srcPath) 469 | .pipe(gulp.dest(projectPath)) 470 | .pipe(livereload()); 471 | }); 472 | 473 | /* 474 | |-------------------------------------------------------------------------- 475 | | WATCH 476 | |-------------------------------------------------------------------------- 477 | */ 478 | 479 | gulp.task('watch', function() { 480 | livereload.listen(); 481 | gulp.watch(project.appCSS(), ['css--app']); 482 | gulp.watch(['src/**/*.htm'], ['htm']); 483 | gulp.watch(['src/**/*.tpl'], ['js--webpack']); 484 | gulp.watch(project.appJS(), ['js--webpack']); 485 | gulp.watch(project.images, ['images']); 486 | gulp.watch(project.video(), ['video']); 487 | gulp.watch(project.files(), ['files']); 488 | gulp.watch('src/*.*', ['root']); 489 | }); 490 | -------------------------------------------------------------------------------- /src/partials/app.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready(function ($) { 2 | 3 | // stickySidebar = function () { 4 | // if ($([data - sticky]).length) { 5 | // $('[data-sticky]').theiaStickySidebar({ 6 | // additionalMarginTop: 16 7 | // }); 8 | // }; 9 | // }; 10 | // if ($(document).width() >= 1120) { 11 | // setTimeout(stickySidebar, 0); 12 | // }; 13 | // $(window).resize(function () { 14 | // setTimeout(stickySidebar, 0); 15 | // }); 16 | 17 | }); 18 | jQuery(document).ready(function ($) { 19 | 20 | //images padding 21 | $('.typography img').each(function () { 22 | if ($(this).css('float') == 'left') { 23 | $(this).css({ 24 | marginRight: '1em' 25 | }); 26 | } else if ($(this).css('float') == 'right') { 27 | $(this).css({ 28 | marginLeft: '1em' 29 | }); 30 | } 31 | }); 32 | 33 | //remove empty

tags 34 | $('.typography p').filter(function () { 35 | return $.trim($(this).text()) === '' && $(this).children().length == 0; 36 | }).remove(); 37 | 38 | //srcollable tables 39 | function srcollableTables() { 40 | $('.typography table').each(function () { 41 | if ($(this).width() >= $(window).width() - $('.js-sticky-sidebar').width()) { 42 | $(this).css({ 43 | display: 'block' 44 | }); 45 | } else { 46 | $(this).css({ 47 | display: 'table' 48 | }); 49 | } 50 | }); 51 | } 52 | srcollableTables(); 53 | $(window).resize(function () { 54 | srcollableTables(); 55 | }); 56 | }); 57 | jQuery(document).ready(function ($) { 58 | 59 | /* 60 | |-------------------------------------------------------------------------- 61 | | SEND FORM 62 | |-------------------------------------------------------------------------- 63 | | 64 | | Валидация полей и отправка формы 65 | | 66 | */ 67 | 68 | // устанока маски на поля 69 | $('[data-form-phone-field]').mask("+7 (999) 999-99-99"); 70 | $('[data-form-time-field]').mask("99:99"); 71 | 72 | $('[data-form-btn]').click(function () { 73 | 74 | var $b = $(this); 75 | var $f = $(this).parents('[data-form]'); 76 | var $s = $f.find('[data-form-status]'); 77 | var data = {}; 78 | var bVal = $b.text(); 79 | 80 | var templateName = $f.attr('data-form-template'); 81 | var mailAddr = $f.attr('data-form-recipient'); 82 | var reachGoal = $f.attr('data-reachGoal'); 83 | 84 | var status = ['Пожалуйста, укажите номер телефона', 'Спасибо, сообщение отправлено', 'При отправке сообщения возникли проблемы. Пожалуйста, отправьте письмо на ящик ' + mailAddr]; 85 | 86 | // тряска формы если не проходим валидацию при отправке 87 | $f.find('*[required]').each(function () { 88 | $(this).removeAttr('data-form-field-invalid'); 89 | if ($(this).val() == '' || $(this).val() == $(this).attr('placeholder')) { 90 | $(this).attr('data-form-field-invalid', ''); 91 | $f.find('input[data-form-field-invalid], textarea[data-form-field-invalid]').addClass('shake animated'); 92 | setTimeout(function () { 93 | $f.find('input[data-form-field-invalid], textarea[data-form-field-invalid]').removeClass('shake animated'); 94 | }, 1000); 95 | } 96 | }); 97 | 98 | // если есть поля с ошибками то сообщаем об этом пользователю 99 | if ($f.find('[data-form-field-invalid]').length) { 100 | $s.html(status[0]).slideDown(500); 101 | return false; 102 | } 103 | 104 | // собираем содержимое полей 105 | $f.find('input, textarea, select').each(function (i) { 106 | var name = $(this).attr('name'); 107 | var label = $(this).attr('placeholder') || $(this).prev().html(); 108 | label = $.trim(label.replace(/[:*]/g, '')); 109 | data[name] = { 110 | label: label, 111 | value: $(this).val() 112 | }; 113 | }); 114 | 115 | // отправка формы 116 | $.ajax({ 117 | url: '/themes/' + templateName + '/assets/forms/send-form.php', 118 | type: 'POST', 119 | data: { 120 | send: 'do', 121 | to: mailAddr, 122 | subj: $f.attr('title'), 123 | data: data 124 | }, 125 | beforeSend: function beforeSend() { 126 | $b.text('Отправка...'); 127 | }, 128 | success: function success(response) { 129 | var r = parseInt(response); 130 | 131 | $b.text(bVal); 132 | $s.html(status[r]).slideUp(500); 133 | 134 | if (r == 1) { 135 | $f.attr('data-form-success', ''); 136 | $f.find('input, textarea, select').val(''); 137 | 138 | // $('[data-form-success-placeholder]').css({ 139 | // opacity: '1', 140 | // zIndex: '1000', 141 | // transform: 'scale(1)' 142 | // }); 143 | // setTimeout(function() { 144 | // $s.slideUp(500); 145 | // }, 5000); 146 | } 147 | 148 | yaCounter39444945.reachGoal(reachGoal);return true; 149 | }, 150 | error: function error(jqXHR, textStatus, ex) { 151 | alert(textStatus + "," + ex + "," + jqXHR.responseText); 152 | } 153 | }); 154 | return false; 155 | }); 156 | }); 157 | Vue.component('about-us', { 158 | delimiters: ['[[', ']]'], 159 | template: require('./about-us/about-us.tpl'), 160 | props: ['title', 'description', 'items'] 161 | }); 162 | Vue.component('contacts', { 163 | delimiters: ['[[', ']]'], 164 | template: require('./contacts/contacts.tpl'), 165 | props: ['title', 'subtitle', 'items', 'backgroundColor', 'contentBackgroundColor'] 166 | }); 167 | jQuery(document).ready(function ($) { 168 | 169 | // comment_text (VENDOR: vendor_name) 170 | 171 | }); 172 | 173 | Vue.component('navigation', { 174 | delimiters: ['[[', ']]'], 175 | template: require('./navigation/navigation.tpl'), 176 | props: ['logo', 'enabledComponents'], 177 | methods: { 178 | fixMenu: function fixMenu() { 179 | if ($(document).scrollTop() != 0) { 180 | $('#navigation').addClass('navigation--fixed'); 181 | } else { 182 | $('#navigation').removeClass('navigation--fixed'); 183 | } 184 | } 185 | }, 186 | mounted: function mounted() { 187 | 188 | var vm = this; 189 | 190 | vm.fixMenu(); 191 | $(window).scroll(function () { 192 | vm.fixMenu(); 193 | }); 194 | } 195 | }); 196 | Vue.component('portfolio', { 197 | delimiters: ['[[', ']]'], 198 | template: require('./portfolio/portfolio.tpl'), 199 | props: ['title', 'description', 'images', 'color'] 200 | }); 201 | Vue.component('promo', { 202 | delimiters: ['[[', ']]'], 203 | template: require('./promo/promo.tpl'), 204 | props: ['title', 'subtitle', 'buttonText', 'images'], 205 | mounted: function mounted() { 206 | var promoSlideshow = new Swiper('.promo [data-slideshow]', { 207 | paginationClickable: true, 208 | spaceBetween: 0, 209 | centeredSlides: true, 210 | autoplay: 4000, 211 | autoplayDisableOnInteraction: false, 212 | loop: true, 213 | speed: 1500, 214 | effect: 'fade' 215 | }); 216 | } 217 | }); 218 | Vue.component('reviews', { 219 | delimiters: ['[[', ']]'], 220 | template: require('./reviews/reviews.tpl'), 221 | props: ['title', 'items', 'color'], 222 | mounted: function mounted() { 223 | var vm = this; 224 | 225 | var revievsSlideshow = new Swiper('.reviews [data-slideshow]', { 226 | pagination: '.reviews [data-pagination]', 227 | paginationClickable: true, 228 | autoplay: 4000, 229 | loop: true, 230 | speed: 1500, 231 | autoplayDisableOnInteraction: false, 232 | grabCursor: true 233 | }); 234 | } 235 | }); 236 | Vue.component('site-footer', { 237 | delimiters: ['[[', ']]'], 238 | template: require('./site-footer/site-footer.tpl'), 239 | props: ['company', 'backgroundColor'], 240 | computed: { 241 | year: function year() { 242 | currentYear = new Date().getFullYear(); 243 | return currentYear; 244 | } 245 | } 246 | }); 247 | var App = new Vue({ 248 | delimiters: ['[[', ']]'], 249 | el: '#app', 250 | name: 'App', 251 | data: { 252 | animateAnchors: true, 253 | animationsOnScholl: false, 254 | customFileInput: false, 255 | customSelect: false, 256 | detectBrowser: true, 257 | disableUserSelect: false, 258 | galleryLightbox: true, 259 | infiniteAjaxScroll: false, 260 | pagePreloader: true, 261 | pixelPerfect: false, 262 | rippleEffect: true, 263 | tooltips: false 264 | }, 265 | methods: { 266 | pixlayout: function pixlayout() { 267 | $.pixlayout({ 268 | src: "/assets/images/theme-about.png", 269 | show: false, 270 | top: 0, 271 | left: -135, 272 | opacity: 0.2 273 | }); 274 | }, 275 | bowser: function (_bowser) { 276 | function bowser() { 277 | return _bowser.apply(this, arguments); 278 | } 279 | 280 | bowser.toString = function () { 281 | return _bowser.toString(); 282 | }; 283 | 284 | return bowser; 285 | }(function () { 286 | $('html').attr('data-browser', bowser.name.toLowerCase().replace(/\s/g, '-')); 287 | $('html').attr('data-browser-version', Math.floor(bowser.version)); 288 | }), 289 | mPageScroll2id: function mPageScroll2id() { 290 | $("a[href*='#'], button[href*='#']").mPageScroll2id({ 291 | offset: 46, 292 | scrollSpeed: 1000, 293 | scrollEasing: 'easeInOutCubic' 294 | }); 295 | }, 296 | animsition: function animsition() { 297 | if ($("[data-page-preloader]").length) { 298 | $("[data-page-preloader]").animsition({ 299 | inClass: 'fade-in', 300 | outClass: 'fade-out', 301 | inDuration: 1500, 302 | outDuration: 800, 303 | linkElement: 'a:not([data-remodal-target]):not([target="_blank"]):not([href*="#"]):not([href*=":"])', 304 | loading: true, 305 | loadingParentElement: 'html', 306 | loadingClass: 'animsition-loading', 307 | loadingInner: '', 308 | timeout: false, 309 | timeoutCountdown: 5000, 310 | onLoadEvent: true, 311 | browser: ['animation-duration', '-webkit-animation-duration'], 312 | overlay: false, 313 | overlayClass: 'animsition-overlay-slide', 314 | overlayParentElement: 'body', 315 | transition: function transition(url) { 316 | window.location.href = url; 317 | } 318 | }); 319 | } 320 | }, 321 | lightcase: function lightcase() { 322 | $('[data-rel^=lightcase]').lightcase({ 323 | liveResize: true, 324 | fullScreenModeForMobile: true, 325 | showSequenceInfo: false, 326 | maxWidth: 1200, 327 | maxHeight: 1000, 328 | navigateEndless: true, 329 | overlayOpacity: 1, 330 | speedIn: 500, 331 | speedOut: 500, 332 | swipe: true 333 | }); 334 | }, 335 | wow: function wow() { 336 | new WOW().init(); 337 | }, 338 | tipso: function tipso() { 339 | if ($("[data-tooltip-text]").length) { 340 | $('[data-tooltip-text]').each(function () { 341 | $(this).tipso({ 342 | speed: 400, 343 | background: '#ededed', 344 | titleBackground: '#0f69a8', 345 | color: '#33373d', 346 | titleColor: '#F0F0F0', 347 | titleContent: $(this).attr('data-tooltip-title'), 348 | showArrow: true, 349 | position: 'top', 350 | width: 'auto', 351 | maxWidth: '', 352 | delay: 500, 353 | hideDelay: 0, 354 | animationIn: 'fadeIn', 355 | animationOut: 'fadeOut', 356 | offsetX: 0, 357 | offsetY: 0, 358 | tooltipHover: false, 359 | content: $(this).attr('data-tooltip-text'), 360 | ajaxContentUrl: null, 361 | contentElementId: null, 362 | useTitle: true, 363 | templateEngineFunc: null, 364 | onBeforeShow: null, 365 | onShow: null, 366 | onHide: null, 367 | size: 'medium' 368 | }); 369 | }); 370 | } 371 | }, 372 | ias: function ias() { 373 | var ias = $.ias({ 374 | container: '.layout-wrap', 375 | item: '.items-row', 376 | pagination: '.pagination', 377 | next: '.pagination-next a' 378 | }); 379 | ias.extension(new IASSpinnerExtension({ 380 | src: '' 381 | })); 382 | ias.extension(new IASTriggerExtension({ 383 | offset: 2, 384 | text: 'Load more items' 385 | })); 386 | ias.extension(new IASNoneLeftExtension({ 387 | text: "You reached the end" 388 | })); 389 | }, 390 | ripple: function ripple() { 391 | $('[data-ripple]').ripple(); 392 | }, 393 | selectric: function selectric() { 394 | $('select').selectric(); 395 | }, 396 | nicefileinput: function nicefileinput() { 397 | $('input[type=file]').nicefileinput({ 398 | label: 'Обзор' 399 | }); 400 | }, 401 | disableSelect: function disableSelect() { 402 | document.ondragstart = noselect; 403 | document.onselectstart = noselect; 404 | document.oncontextmenu = noselect; 405 | 406 | function noselect() { 407 | return false; 408 | }; 409 | }, 410 | fixBrowsersBugs: function fixBrowsersBugs() { 411 | if ($('html[data-browser=internet-explorer]').length || $('html[data-browser=microsoft-edge]').length) { 412 | $('img[data-fix--ie--object-fit]').each(function () { 413 | $(this).css({ 414 | 'backgroundImage': 'url(' + $(this).attr('src') + ')', 415 | 'backgroundPosition': 'center center', 416 | 'backgroundRepeat': 'no-repeat', 417 | 'backgroundSize': 'cover', 418 | 'display': 'block' 419 | }).removeAttr('src'); 420 | console.log($(this).css('objectPosition')); 421 | console.log($(this).css('objectFit')); 422 | }); 423 | }; 424 | } 425 | }, 426 | mounted: function mounted() { 427 | 428 | var vm = this; 429 | 430 | if (vm.pixelPerfect === true) { 431 | vm.pixlayout(); 432 | console.info('Подключен плагин pixel-perfect верстки.'); 433 | } 434 | if (vm.detectBrowser === true) { 435 | vm.bowser(); 436 | console.info('Подключен плагин определения версии браузера.'); 437 | } 438 | if (vm.animateAnchors === true) { 439 | vm.mPageScroll2id(); 440 | console.info('Подключен плагин плавного скролла до анкоров.'); 441 | } 442 | if (vm.pagePreloader === true) { 443 | vm.animsition(); 444 | console.info('Подключен плагин прелоадера страницы.'); 445 | } 446 | if (vm.galleryLightbox === true) { 447 | vm.lightcase(); 448 | console.info('Подключен плагин лайтбокса для изображений.'); 449 | } 450 | if (vm.animationsOnScholl === true) { 451 | vm.wow(); 452 | console.info('Подключен плагин анимации при прокрутке страницы.'); 453 | } 454 | if (vm.tooltips === true) { 455 | vm.tipso(); 456 | console.info('Подключен плагин тултипов.'); 457 | } 458 | if (vm.infiniteAjaxScroll === true) { 459 | vm.ias(); 460 | console.info('Подключен плагин AJAX подгрузки элементов пагинации.'); 461 | } 462 | if (vm.rippleEffect === true) { 463 | vm.ripple(); 464 | console.info('Подключен плагин material эффекта для кнопок.'); 465 | } 466 | if (vm.customSelect === true) { 467 | vm.selectric(); 468 | console.info('Подключен плагин кастомного селекта.'); 469 | } 470 | if (vm.customFileInput === true) { 471 | vm.nicefileinput(); 472 | console.info('Подключен плагин кастомно инпута загрузки файлов.'); 473 | } 474 | if (vm.disableUserSelect === true) { 475 | vm.disableSelect(); 476 | console.info('Отключена возможность копирования контента пользователями.'); 477 | } 478 | 479 | vm.fixBrowsersBugs(); 480 | } 481 | }); -------------------------------------------------------------------------------- /src/assets/dev/jquery.pixlayout.0.9.7.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************ 2 | * JQuery.pixLayout by Anton Karabut 3 | * http://polycreative.ru 4 | * ============================================= * 5 | * Version 0.9.7 (2012-10-11) 6 | * Copyright (c) 2012 Anton Karabut (poly@polycreative.ru) 7 | * 8 | * This library is free software; you can redistribute 9 | * it and/or modify it under the terms of the GNU 10 | * Lesser General Public License as published by the 11 | * Free Software Foundation; either version 2.1 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * This library is distributed in the hope that it will 15 | * be useful, but WITHOUT ANY WARRANTY; without even the 16 | * implied warranty of MERCHANTABILITY or FITNESS FOR A 17 | * PARTICULAR PURPOSE. See the GNU Lesser General Public 18 | * License for more details. 19 | * 20 | * You should have received a copy of the GNU Lesser 21 | * General Public License along with this library; 22 | * Inc., 59 Temple Place, Suite 330, Boston, 23 | * MA 02111-1307 USA 24 | **************************************************************/ 25 | if (jQuery){ 26 | (function ($) { 27 | $.extend({ 28 | pixlayout : function (data, context) { 29 | context = context || $("body"); 30 | var settings = { 31 | src : 'http://pixlayout.polycreative.ru/img/no.gif', 32 | opacity : 0.5, 33 | step : 1, 34 | top: 0, 35 | center: false, 36 | left: 0, 37 | right: 0, 38 | zindex: 9999, 39 | clip: false, 40 | fixed: false, 41 | mini: false, 42 | show: false, 43 | pervious: false 44 | }; 45 | if( typeof data === 'string' ){ 46 | settings.src = data; 47 | }else{ 48 | $.extend(settings, data); 49 | } 50 | var pxl = '

pixLayout
opacity
step
z-index
top
left
right
center
fixed
pervious
jquery.pixLayout* Version: 0.9.7 (2012-10-11)
Copyright (c) 2012 Anton Karabut (poly@polycreative.ru)
free for editing and distribution
options:
  1. src: [string]"path to image"
  2. opacity: [float] 0.0 - 1.0
  3. step, top, left, right, zindex: [integer] 1 - infinity
  4. clip, center, fixed, mini, show, pervious: [boolean] true or false
move:
  1. “left”, “right”, “up”, “down” buttons
  2. w,a,s,d buttons when the picture is visible
  3. blue rectangles on the sides of the navigation bar
operations:
  1. Destroy (deleting all pixLayout blocks on page) - cross in the upper right corner of the panel
  2. Clip - clip in the upper right corner of the panel
  3. About - question mark icon in the upper right corner of the panel
  4. Show / hide - central icon in the navigation bar
learn more: pixlayout.polycreative.ru
'; 51 | var clip = false; 52 | var pxl_vis = false; 53 | var drug = false; 54 | var created = false; 55 | var focused = false; 56 | var position = "absolute"; 57 | var p_events = "auto"; 58 | var temp_input = ""; 59 | var pos, realX, realY, pic_width, pic_height, pic_width_temp, pic_height_temp, curX, curY, $pxl_pic; 60 | var init = function () { 61 | $(context).append(pxl); 62 | document.onselectstart = function(){return false;}; 63 | $pxl_pic = $('.pxl_pic'); 64 | $pxl_img = $(".pxl_pic img"); 65 | for (var opt in settings){ 66 | check_options(opt); 67 | } 68 | styles(); 69 | $pxl_img.load(function(){ 70 | if (!created) { 71 | show(); 72 | move(); 73 | hat(); 74 | nav(); 75 | sett(); 76 | } 77 | }); 78 | }; 79 | // show 80 | var show = function () { 81 | $('.pxl_show').fadeIn(200).click(function () { 82 | if (!pxl_vis) { 83 | if (!created) { 84 | created = true; 85 | $pxl_pic.fadeIn(200, function(){ 86 | tuning(); 87 | if(settings.left === 0 && settings.right === 0){ 88 | settings.left = 0; 89 | set_directions("right"); 90 | }else if (settings.left !== 0 && settings.right === 0){ 91 | set_directions("right"); 92 | }else if (settings.right !== 0 && settings.left === 0) { 93 | set_directions("left"); 94 | }else{ 95 | set_directions("right"); 96 | } 97 | if(settings.center) { 98 | settings.left = ($(window).width() - $pxl_pic.width()) / 2; 99 | $(".pxl_center").addClass("true"); 100 | set_directions("right"); 101 | } 102 | }); 103 | pxl_vis = true; 104 | } else { 105 | $pxl_pic.fadeIn(200); 106 | pxl_vis = true; 107 | } 108 | } else { 109 | $('.pxl_pic').fadeOut(200); 110 | pxl_vis = false; 111 | } 112 | }); 113 | if(settings.show){ 114 | $('.pxl_show').click(); 115 | } 116 | if(settings.fixed){ 117 | position = "fixed"; 118 | $pxl_pic.css("position",position); 119 | $(".pxl_fixed").addClass("true"); 120 | } 121 | if(settings.pervious){ 122 | p_events = "none"; 123 | $pxl_pic.css("pointerEvents",p_events); 124 | $(".pxl_pervious").addClass("true"); 125 | } 126 | if(settings.clip){ 127 | $('.pxl_panel').css("right", "0px"); 128 | $('.pxl_clip_button').fadeTo(200, 1.0); 129 | clip = true; 130 | } 131 | if(settings.mini){ 132 | $('.pxl_settings').slideUp(0); 133 | $(".pxl_roll").addClass('pxl_arrow_down').removeClass('pxl_arrow_up'); 134 | } 135 | $('.pxl_panel_wrap').hover(function () { 136 | if(!clip){ 137 | $('.pxl_panel').fadeIn(350).animate({ 138 | right: "0px" 139 | }, {queue:false,duration: 200}); 140 | } 141 | }, function () { 142 | if(!clip){ 143 | $('.pxl_panel').fadeOut(150).animate({ 144 | right: "-134px" 145 | }, {queue:false,duration: 200}); 146 | } 147 | }); 148 | $(".pxl_roll").click(function(){ 149 | var s = $('.pxl_settings'); 150 | if(settings.mini){ 151 | s.slideDown(200); 152 | $(this).removeClass('pxl_arrow_down').addClass('pxl_arrow_up'); 153 | settings.mini = false; 154 | }else{ 155 | if(!settings.clip){ 156 | switch_clip(true, $('.pxl_clip_button')); 157 | } 158 | s.slideUp(200); 159 | $(this).addClass('pxl_arrow_down').removeClass('pxl_arrow_up'); 160 | settings.mini = true; 161 | } 162 | }); 163 | }; 164 | // move 165 | var move = function () { 166 | $('.pxl_pic').mousedown(function (e) { 167 | drug = true; 168 | curX = e.pageX; 169 | curY = e.pageY; 170 | pos = $pxl_pic.position(); 171 | realX = pos.left - curX; 172 | if(settings.fixed){ 173 | realY = pos.top - curY - $(window).scrollTop(); 174 | }else{ 175 | realY = pos.top - curY; 176 | } 177 | settings.center = false; 178 | $(".pxl_center").removeClass("true"); 179 | }); 180 | $('.pxl_pic').mouseup(function () { 181 | drug = false; 182 | }); 183 | $('body').mousemove(function (e) { 184 | if (drug) { 185 | settings.top = e.pageY + realY; 186 | settings.left = e.pageX + realX; 187 | set_directions("right"); 188 | tuning(); 189 | $(".pxl_right input").val(settings.right); 190 | $pxl_pic.css({ 191 | top : settings.top, 192 | left : settings.left, 193 | right: settings.right 194 | }); 195 | } 196 | }); 197 | }; 198 | // hat 199 | var hat = function () { 200 | $('.pxl_about_button').toggle(function(){ 201 | $(this).fadeTo(200, 1.0); 202 | $('.pxl_about').fadeIn(200).animate({top: "200px"}, {queue:false,duration: 200}); 203 | }, function(){ 204 | $(this).fadeTo(200, 0.8); 205 | $('.pxl_about').animate({top: "100px"}, {queue:false, duration: 200}).fadeOut(200); 206 | }); 207 | $('.pxl_clip_button').click(function(){ 208 | switch_clip(false, $(this)); 209 | }); 210 | $('.pxl_cross_button').click(function(){$('#pxl_wrap, .pxl_styles').remove();}); 211 | }; 212 | // navigantion 213 | var nav = function () { 214 | $('.pxl_nav div').not('.pxl_show').click(function () { 215 | if(created && !focused){ 216 | step = parseInt(settings.step); 217 | switch ($(this).attr('class')) { 218 | case 'pxl_tl': 219 | settings.left -= step; 220 | settings.top -= step; 221 | break; 222 | case 'pxl_t': 223 | settings.top -= step; 224 | break; 225 | case 'pxl_tr': 226 | settings.left += step; 227 | settings.top -= step; 228 | break; 229 | case 'pxl_l': 230 | settings.left -= step; 231 | break; 232 | case 'pxl_r': 233 | settings.left += step; 234 | break; 235 | case 'pxl_bl': 236 | settings.top += step; 237 | settings.left -= step; 238 | break; 239 | case 'pxl_b': 240 | settings.top += step; 241 | break; 242 | case 'pxl_br': 243 | settings.top += step; 244 | settings.left += step; 245 | break; 246 | } 247 | set_directions("right"); 248 | } 249 | }); 250 | $(window).bind('keydown', function (e) { 251 | var code = e.keyCode; 252 | if(!focused){ 253 | if(created && !e.shiftKey){ 254 | step = parseInt(settings.step); 255 | if (code === 37 || (code === 65 && pxl_vis)) { 256 | settings.left -= step; 257 | } else if (code === 38 || (code === 87 && pxl_vis)) { 258 | settings.top -= step; 259 | } else if (code === 39 || (code === 68 && pxl_vis)) { 260 | settings.left += step; 261 | } else if (code === 40 || (code === 83 && pxl_vis)) { 262 | settings.top += step; 263 | } else if (code > 48 && code < 58) { 264 | settings.step = String.fromCharCode(e.keyCode); 265 | $(".pxl_step").val(settings.step); 266 | } 267 | set_directions("right"); 268 | tuning(); 269 | }else if(e.shiftKey && code === 69){ 270 | $('.pxl_show').click(); 271 | } 272 | } 273 | }); 274 | $('.pxl_step').change(function () { 275 | settings.step = $(this).val(); 276 | }); 277 | }; 278 | // settings 279 | var sett = function () { 280 | var temp_left = settings.left; 281 | $('.pxl_center').click(function(){ 282 | if(created){ 283 | if(settings.center){ 284 | settings.center = false; 285 | settings.left = temp_left; 286 | set_directions("right"); 287 | $(this).removeClass("true"); 288 | }else{ 289 | settings.center = true; 290 | temp_left = settings.left; 291 | settings.left = ($(context).width() - $pxl_pic.width()) / 2; 292 | $(this).addClass("true"); 293 | } 294 | set_directions("right"); 295 | } 296 | }); 297 | $('.pxl_fixed').click(function(){ 298 | if(created){ 299 | if(settings.fixed){ 300 | settings.fixed = false; 301 | position = "absolute"; 302 | $(this).removeClass("true"); 303 | }else{ 304 | settings.fixed = true; 305 | position = "fixed"; 306 | $(this).addClass("true"); 307 | } 308 | $pxl_pic.css("position", position); 309 | } 310 | }); 311 | $('.pxl_pervious').click(function(){ 312 | if(created){ 313 | if(settings.pervious){ 314 | settings.pervious = false; 315 | p_events = "auto"; 316 | $(this).removeClass("true"); 317 | }else{ 318 | settings.pervious = true; 319 | p_events = "none"; 320 | $(this).addClass("true"); 321 | } 322 | $pxl_pic.css("pointerEvents",p_events); 323 | } 324 | }); 325 | $(".pxl_settings input").blur(function(){ 326 | focused = false; 327 | if(created){ 328 | var $this = $(this); 329 | var name = $this.parent().attr("class").split("_")[1]; 330 | if(name !== "src"){ 331 | settings[name] = $this.val(); 332 | check_options(name); 333 | }else{ 334 | settings.src = $this.val(); 335 | $(".pxl_pic img").attr("src", settings.src); 336 | $pxl_pic = $('.pxl_pic'); 337 | $pxl_img = $(".pxl_pic img"); 338 | } 339 | tuning(); 340 | } 341 | }).focus(function(){ 342 | focused = true; 343 | temp_input = $(this).parent().attr("class"); 344 | }).bind('mousewheel',function(event){ 345 | if(focused && ($(this).parent().attr("class") === temp_input) ){ 346 | var val = parseInt($(this).val()); 347 | var opacity = $(this).parent().hasClass("pxl_opacity"); 348 | var delta = event.originalEvent.wheelDelta > 0; 349 | if(opacity){ 350 | step = .1; 351 | val = parseFloat($(this).val()); 352 | if(delta){ 353 | $(this).val((val+0.1).toFixed(1)); 354 | }else{ 355 | $(this).val((val-0.1).toFixed(1)); 356 | } 357 | }else{ 358 | if(delta){ 359 | $(this).val(val+1); 360 | }else{ 361 | $(this).val(val-1); 362 | } 363 | } 364 | } 365 | }); 366 | 367 | $(".pxl_buttons div, .pxl_nav div").hover(function(){ 368 | $(".pxl_title").text($(this).attr("data")); 369 | },function(){ 370 | $(".pxl_title").text("pixLayout"); 371 | }); 372 | }; 373 | // switch clip 374 | var switch_clip = function(on, $button){ 375 | if(on || !clip){ 376 | $button.fadeTo(200, 1.0); 377 | clip = true; 378 | }else{ 379 | $button.fadeTo(200, 0.8); 380 | clip = false; 381 | } 382 | }; 383 | // set directions 384 | var set_directions = function(dir){ 385 | var anti = "left"; 386 | if(dir === "left"){anti = "right";} 387 | settings[dir] = $(window).width() - (settings[anti]+$pxl_pic.width()); 388 | tuning(); 389 | }; 390 | var check_options = function(name){ 391 | var val = parseFloat(settings[name]); 392 | if(isNaN(val)){ 393 | if(name === "src" || "center" || "fixed" || "clip" || "mini" || "show" ){ 394 | val = settings[name]; 395 | }else{ 396 | val = 1; 397 | } 398 | } 399 | settings[name] = val; 400 | $(".pxl_"+name+">input").val(val); 401 | }; 402 | var check_img = function () { 403 | $pxl_img.load(function(){ 404 | img_loaded = true; 405 | }); 406 | }; 407 | // tuning 408 | var tuning = function () { 409 | pic_width = $pxl_img.width(); 410 | pic_height = $pxl_img.height(); 411 | if(pic_width){ 412 | pic_width_temp = pic_width; 413 | pic_height_temp = pic_height; 414 | }else{ 415 | pic_width = pic_width_temp; 416 | pic_height = pic_height_temp; 417 | } 418 | settings.top = parseInt(settings.top); 419 | settings.left = parseInt(settings.left); 420 | settings.right = parseInt(settings.right); 421 | settings.zindex = parseInt(settings.zindex); 422 | $pxl_pic.css({ 423 | opacity : parseFloat(settings.opacity), 424 | background : 'url(' + settings.src + ') no-repeat', 425 | width : pic_width, 426 | height : pic_height, 427 | top: settings.top+"px", 428 | left: settings.left+"px", 429 | right: settings.right+"px", 430 | zIndex: settings.zindex, 431 | position: position 432 | }); 433 | $(".pxl_about, .pxl_panel_wrap, .pxl_bool").css("zIndex", settings.zindex+1); 434 | $(".pxl_left input").val(settings.left); 435 | 436 | $(".pxl_right input").val(settings.right); 437 | $(".pxl_top input").val(settings.top); 438 | return pic_width; 439 | }; 440 | // styles 441 | var styles = function () { 442 | var css = ''; 443 | $("head").append(css); 444 | }; 445 | init(); 446 | return this; 447 | } 448 | }); 449 | })(jQuery); 450 | } --------------------------------------------------------------------------------