init
This commit is contained in:
17
themes/editor-hugo/.gitignore
vendored
Executable file
17
themes/editor-hugo/.gitignore
vendored
Executable file
@@ -0,0 +1,17 @@
|
||||
Thumbs.db
|
||||
.DS_Store
|
||||
.dist
|
||||
.tmp
|
||||
.lock
|
||||
.sass-cache
|
||||
npm-debug.log
|
||||
node_modules
|
||||
builds
|
||||
package-lock.json
|
||||
public
|
||||
resources
|
||||
.hugo_build.lock
|
||||
jsconfig.json
|
||||
hugo_stats.json
|
||||
go.sum
|
||||
yarn.lock
|
||||
5
themes/editor-hugo/.markdownlint.json
Executable file
5
themes/editor-hugo/.markdownlint.json
Executable file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"MD033": false,
|
||||
"MD034": false,
|
||||
"MD013": false
|
||||
}
|
||||
12
themes/editor-hugo/.prettierrc
Executable file
12
themes/editor-hugo/.prettierrc
Executable file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"overrides": [
|
||||
{
|
||||
"files": ["*.html"],
|
||||
"options": {
|
||||
"parser": "go-template",
|
||||
"goTemplateBracketSpacing": true,
|
||||
"bracketSameLine": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
7
themes/editor-hugo/archetypes/default.md
Normal file
7
themes/editor-hugo/archetypes/default.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
date: {{ .Date }}
|
||||
draft: true
|
||||
# description
|
||||
description: "This is meta description"
|
||||
---
|
||||
90
themes/editor-hugo/assets/js/script.js
Normal file
90
themes/editor-hugo/assets/js/script.js
Normal file
@@ -0,0 +1,90 @@
|
||||
(function ($) {
|
||||
'use strict';
|
||||
|
||||
// prelaoder
|
||||
$('.preloader').delay(100).fadeOut(10);
|
||||
|
||||
// sidenav-menu
|
||||
function sidenav() {
|
||||
$('[data-toggle="sidenav-menu"]').on('click', function () {
|
||||
$('.sidenav-menu, .sidenav-overlay').toggleClass('show');
|
||||
});
|
||||
}
|
||||
sidenav();
|
||||
|
||||
// search-popup
|
||||
function searchPopup() {
|
||||
$('[data-toggle="search"]').on('click', function () {
|
||||
$('.search-block').fadeIn(200);
|
||||
setTimeout(function () {
|
||||
$('.search-block').addClass('is-visible');
|
||||
var value = $('#search-field').val();
|
||||
$('#search-field').focus().val('').val(value);
|
||||
}, 250);
|
||||
});
|
||||
$('[data-toggle="search-close"]').on('click', function () {
|
||||
$('.search-block').fadeOut(200).removeClass('is-visible');
|
||||
});
|
||||
}
|
||||
searchPopup();
|
||||
|
||||
// menuHumBurger icon toggle Init
|
||||
function menuHumBurgerIcon() {
|
||||
$('.navbar-toggler').on('click', function () {
|
||||
$('i').toggleClass('d-inline d-none');
|
||||
});
|
||||
}
|
||||
menuHumBurgerIcon();
|
||||
|
||||
|
||||
// tab
|
||||
$('.tab-content').find('.tab-pane').each(function (idx, item) {
|
||||
var navTabs = $(this).closest('.code-tabs').find('.nav-tabs'),
|
||||
title = $(this).attr('title');
|
||||
navTabs.append('<li class="nav-item"><a class="nav-link" href="#">' + title + '</a></li>');
|
||||
});
|
||||
|
||||
$('.code-tabs ul.nav-tabs').each(function () {
|
||||
$(this).find("li:first").addClass('active');
|
||||
})
|
||||
|
||||
$('.code-tabs .tab-content').each(function () {
|
||||
$(this).find("div:first").addClass('active');
|
||||
});
|
||||
|
||||
$('.nav-tabs a').click(function (e) {
|
||||
e.preventDefault();
|
||||
var tab = $(this).parent(),
|
||||
tabIndex = tab.index(),
|
||||
tabPanel = $(this).closest('.code-tabs'),
|
||||
tabPane = tabPanel.find('.tab-pane').eq(tabIndex);
|
||||
tabPanel.find('.active').removeClass('active');
|
||||
tab.addClass('active');
|
||||
tabPane.addClass('active');
|
||||
});
|
||||
|
||||
|
||||
// Accordions
|
||||
$('.collapse').on('shown.bs.collapse', function () {
|
||||
$(this).parent().find('.fas fa-plus').removeClass('fas fa-plus').addClass('fas fa-minus');
|
||||
}).on('hidden.bs.collapse', function () {
|
||||
$(this).parent().find('.fas fa-minus').removeClass('fas fa-minus').addClass('fas fa-plus');
|
||||
});
|
||||
|
||||
|
||||
//post slider
|
||||
$('.post-slider').slick({
|
||||
slidesToShow: 1,
|
||||
slidesToScroll: 1,
|
||||
autoplay: true,
|
||||
autoplaySpeed: 1500,
|
||||
fade: true,
|
||||
cssEase: 'linear',
|
||||
dots: false,
|
||||
arrows: true,
|
||||
prevArrow: '<button type=\'button\' class=\'prevArrow\'><i class=\'fas fa-angle-left\'></i></button>',
|
||||
nextArrow: '<button type=\'button\' class=\'nextArrow\'><i class=\'fas fa-angle-right\'></i></button>'
|
||||
});
|
||||
|
||||
|
||||
})(jQuery);
|
||||
7
themes/editor-hugo/assets/plugins/bootstrap/bootstrap.min.css
vendored
Normal file
7
themes/editor-hugo/assets/plugins/bootstrap/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
7
themes/editor-hugo/assets/plugins/bootstrap/bootstrap.min.js
vendored
Normal file
7
themes/editor-hugo/assets/plugins/bootstrap/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
themes/editor-hugo/assets/plugins/jquery/jquery.min.js
vendored
Normal file
2
themes/editor-hugo/assets/plugins/jquery/jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
9
themes/editor-hugo/assets/plugins/search/fuse.min.js
vendored
Normal file
9
themes/editor-hugo/assets/plugins/search/fuse.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
themes/editor-hugo/assets/plugins/search/mark.js
Normal file
7
themes/editor-hugo/assets/plugins/search/mark.js
Normal file
File diff suppressed because one or more lines are too long
101
themes/editor-hugo/assets/plugins/search/search.js
Normal file
101
themes/editor-hugo/assets/plugins/search/search.js
Normal file
@@ -0,0 +1,101 @@
|
||||
summaryInclude=60;
|
||||
var fuseOptions = {
|
||||
shouldSort: true,
|
||||
includeMatches: true,
|
||||
threshold: 0.0,
|
||||
tokenize:true,
|
||||
location: 0,
|
||||
distance: 100,
|
||||
maxPatternLength: 32,
|
||||
minMatchCharLength: 1,
|
||||
keys: [
|
||||
{name:"title",weight:0.8},
|
||||
{name:"contents",weight:0.5},
|
||||
{name:"tags",weight:0.3},
|
||||
{name:"categories",weight:0.3}
|
||||
]
|
||||
};
|
||||
|
||||
var searchQuery = param("s");
|
||||
if(searchQuery){
|
||||
$("#search-query").val(searchQuery);
|
||||
executeSearch(searchQuery);
|
||||
}
|
||||
|
||||
function executeSearch(searchQuery){
|
||||
$.getJSON( indexURL, function( data ) {
|
||||
var pages = data;
|
||||
var fuse = new Fuse(pages, fuseOptions);
|
||||
var result = fuse.search(searchQuery);
|
||||
console.log({"matches":result});
|
||||
if(result.length > 0){
|
||||
populateResults(result);
|
||||
}else{
|
||||
$('#search-results').append("<div class=\"text-center mx-auto\"><img class=\"img-fluid mb-5\" src=\"https://user-images.githubusercontent.com/17677384/110205559-d77c9580-7ea2-11eb-82b4-f1334db99530.png\"><h3 class=\"mb-5\">No Search Found</h3></div>");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function populateResults(result){
|
||||
$.each(result,function(key,value){
|
||||
var contents= value.item.contents;
|
||||
var snippet = "";
|
||||
var snippetHighlights=[];
|
||||
var tags =[];
|
||||
if( fuseOptions.tokenize ){
|
||||
snippetHighlights.push(searchQuery);
|
||||
}else{
|
||||
$.each(value.matches,function(matchKey,mvalue){
|
||||
if(mvalue.key == "tags" || mvalue.key == "categories" ){
|
||||
snippetHighlights.push(mvalue.value);
|
||||
}else if(mvalue.key == "contents"){
|
||||
start = mvalue.indices[0][0]-summaryInclude>0?mvalue.indices[0][0]-summaryInclude:0;
|
||||
end = mvalue.indices[0][1]+summaryInclude<contents.length?mvalue.indices[0][1]+summaryInclude:contents.length;
|
||||
snippet += contents.substring(start,end);
|
||||
snippetHighlights.push(mvalue.value.substring(mvalue.indices[0][0],mvalue.indices[0][1]-mvalue.indices[0][0]+1));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if(snippet.length<1){
|
||||
snippet += contents.substring(0,summaryInclude*2);
|
||||
}
|
||||
//pull template from hugo templarte definition
|
||||
var templateDefinition = $('#search-result-template').html();
|
||||
var output = render(templateDefinition,{key:key,title:value.item.title,image:value.item.image,date:value.item.date,month:value.item.month,link:value.item.permalink,tags:value.item.tags,categories:value.item.categories,snippet:snippet});
|
||||
$('#search-results').append(output);
|
||||
|
||||
$.each(snippetHighlights,function(snipkey,snipvalue){
|
||||
$("#summary-"+key).mark(snipvalue);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function param(name) {
|
||||
return decodeURIComponent((location.search.split(name + '=')[1] || '').split('&')[0]).replace(/\+/g, ' ');
|
||||
}
|
||||
|
||||
function render(templateString, data) {
|
||||
var conditionalMatches,conditionalPattern,copy;
|
||||
conditionalPattern = /\$\{\s*isset ([a-zA-Z]*) \s*\}(.*)\$\{\s*end\s*}/g;
|
||||
//since loop below depends on re.lastInxdex, we use a copy to capture any manipulations whilst inside the loop
|
||||
copy = templateString;
|
||||
while ((conditionalMatches = conditionalPattern.exec(templateString)) !== null) {
|
||||
if(data[conditionalMatches[1]]){
|
||||
//valid key, remove conditionals, leave contents.
|
||||
copy = copy.replace(conditionalMatches[0],conditionalMatches[2]);
|
||||
}else{
|
||||
//not valid, remove entire section
|
||||
copy = copy.replace(conditionalMatches[0],'');
|
||||
}
|
||||
}
|
||||
templateString = copy;
|
||||
//now any conditionals removed we can do simple substitution
|
||||
var key, find, re;
|
||||
for (key in data) {
|
||||
find = '\\$\\{\\s*' + key + '\\s*\\}';
|
||||
re = new RegExp(find, 'g');
|
||||
templateString = templateString.replace(re, data[key]);
|
||||
}
|
||||
return templateString;
|
||||
}
|
||||
BIN
themes/editor-hugo/assets/plugins/slick/ajax-loader.gif
Normal file
BIN
themes/editor-hugo/assets/plugins/slick/ajax-loader.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.1 KiB |
BIN
themes/editor-hugo/assets/plugins/slick/fonts/slick.eot
Normal file
BIN
themes/editor-hugo/assets/plugins/slick/fonts/slick.eot
Normal file
Binary file not shown.
14
themes/editor-hugo/assets/plugins/slick/fonts/slick.svg
Normal file
14
themes/editor-hugo/assets/plugins/slick/fonts/slick.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Generated by Fontastic.me</metadata>
|
||||
<defs>
|
||||
<font id="slick" horiz-adv-x="512">
|
||||
<font-face font-family="slick" units-per-em="512" ascent="480" descent="-32"/>
|
||||
<missing-glyph horiz-adv-x="512" />
|
||||
|
||||
<glyph unicode="→" d="M241 113l130 130c4 4 6 8 6 13 0 5-2 9-6 13l-130 130c-3 3-7 5-12 5-5 0-10-2-13-5l-29-30c-4-3-6-7-6-12 0-5 2-10 6-13l87-88-87-88c-4-3-6-8-6-13 0-5 2-9 6-12l29-30c3-3 8-5 13-5 5 0 9 2 12 5z m234 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
||||
<glyph unicode="←" d="M296 113l29 30c4 3 6 7 6 12 0 5-2 10-6 13l-87 88 87 88c4 3 6 8 6 13 0 5-2 9-6 12l-29 30c-3 3-8 5-13 5-5 0-9-2-12-5l-130-130c-4-4-6-8-6-13 0-5 2-9 6-13l130-130c3-3 7-5 12-5 5 0 10 2 13 5z m179 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
||||
<glyph unicode="•" d="M475 256c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
||||
<glyph unicode="a" d="M475 439l0-128c0-5-1-9-5-13-4-4-8-5-13-5l-128 0c-8 0-13 3-17 11-3 7-2 14 4 20l40 39c-28 26-62 39-100 39-20 0-39-4-57-11-18-8-33-18-46-32-14-13-24-28-32-46-7-18-11-37-11-57 0-20 4-39 11-57 8-18 18-33 32-46 13-14 28-24 46-32 18-7 37-11 57-11 23 0 44 5 64 15 20 9 38 23 51 42 2 1 4 3 7 3 3 0 5-1 7-3l39-39c2-2 3-3 3-6 0-2-1-4-2-6-21-25-46-45-76-59-29-14-60-20-93-20-30 0-58 5-85 17-27 12-51 27-70 47-20 19-35 43-47 70-12 27-17 55-17 85 0 30 5 58 17 85 12 27 27 51 47 70 19 20 43 35 70 47 27 12 55 17 85 17 28 0 55-5 81-15 26-11 50-26 70-45l37 37c6 6 12 7 20 4 8-4 11-9 11-17z"/>
|
||||
</font></defs></svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
BIN
themes/editor-hugo/assets/plugins/slick/fonts/slick.ttf
Normal file
BIN
themes/editor-hugo/assets/plugins/slick/fonts/slick.ttf
Normal file
Binary file not shown.
BIN
themes/editor-hugo/assets/plugins/slick/fonts/slick.woff
Normal file
BIN
themes/editor-hugo/assets/plugins/slick/fonts/slick.woff
Normal file
Binary file not shown.
1
themes/editor-hugo/assets/plugins/slick/slick.css
Normal file
1
themes/editor-hugo/assets/plugins/slick/slick.css
Normal file
@@ -0,0 +1 @@
|
||||
.slick-list,.slick-slider,.slick-track{position:relative;display:block}.slick-loading .slick-slide,.slick-loading .slick-track{visibility:hidden}.slick-slider{box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:0}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{top:0;left:0;margin-left:auto;margin-right:auto}.slick-track:after,.slick-track:before{display:table;content:''}.slick-track:after{clear:both}.slick-slide{display:none;float:left;height:100%;min-height:1px}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}
|
||||
1
themes/editor-hugo/assets/plugins/slick/slick.min.js
vendored
Normal file
1
themes/editor-hugo/assets/plugins/slick/slick.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
63
themes/editor-hugo/assets/scss/_buttons.scss
Normal file
63
themes/editor-hugo/assets/scss/_buttons.scss
Normal file
@@ -0,0 +1,63 @@
|
||||
// button style
|
||||
.btn {
|
||||
font-size: 14px;
|
||||
padding: 15px 24px;
|
||||
color: $white;
|
||||
border-radius: 0;
|
||||
transition: .2s ease-out;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
overflow: hidden;
|
||||
border: 0;
|
||||
|
||||
&:active,
|
||||
&:focus {
|
||||
border: 0;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
&.btn-lg {
|
||||
font-size: 16px;
|
||||
padding: 12px 28px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
box-shadow: 0px 10px 25px rgba($black, 0.1);
|
||||
}
|
||||
|
||||
&.btn-primary {
|
||||
background-color: $primary-color !important;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:focus {
|
||||
color: $white;
|
||||
background-color: $dark !important;
|
||||
}
|
||||
}
|
||||
|
||||
&.btn-outline-primary {
|
||||
color: $primary-color;
|
||||
border: 1px solid $primary-color;
|
||||
background-color: transparent !important;
|
||||
|
||||
&::after {
|
||||
background-color: $primary-color !important;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:focus {
|
||||
color: $white;
|
||||
background-color: $primary-color !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.text-underline {
|
||||
text-decoration: underline;
|
||||
}
|
||||
a.text-underline:hover {
|
||||
color: $primary-color;
|
||||
text-decoration: underline;
|
||||
}
|
||||
478
themes/editor-hugo/assets/scss/_common.scss
Normal file
478
themes/editor-hugo/assets/scss/_common.scss
Normal file
@@ -0,0 +1,478 @@
|
||||
body {
|
||||
color: $gray;
|
||||
background-color: $white;
|
||||
font-family: $secondary-font;
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
line-height: 1.65;
|
||||
&::-webkit-scrollbar {
|
||||
width: 10px;
|
||||
@extend .bg-primary-light;
|
||||
}
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background-color: rgba($primary-color, .5);
|
||||
}
|
||||
}
|
||||
|
||||
::selection {
|
||||
color: $white;
|
||||
background-color: darken($primary-color, 5);
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
mark,
|
||||
.mark {
|
||||
padding: 0;
|
||||
}
|
||||
.page-header {
|
||||
mark,
|
||||
.mark {
|
||||
padding: 3px 5px;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
.title {
|
||||
font-weight: bold;
|
||||
color: $dark;
|
||||
position: relative;
|
||||
padding-left: 20px;
|
||||
margin-bottom: 0;
|
||||
&::before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
height: 100%;
|
||||
width: 7px;
|
||||
border-radius: 50px;
|
||||
background-color: $primary-color;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------
|
||||
# default styles
|
||||
-------------------------------------------------------------------*/
|
||||
.section {
|
||||
padding: 24px 0;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
h1 {
|
||||
font-size: $h1-lg;
|
||||
text-transform: capitalize;
|
||||
margin-bottom: 20px;
|
||||
position: relative;
|
||||
padding-top: 25px;
|
||||
|
||||
@include desktop-xl {
|
||||
font-size: 42px;
|
||||
}
|
||||
@include tablet {
|
||||
font-size: 34px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// social-links
|
||||
.social-links {
|
||||
a {
|
||||
font-size: 15px;
|
||||
padding: 7px;
|
||||
color: rgba($black, .8);
|
||||
&:hover {
|
||||
color: $primary-color;
|
||||
}
|
||||
}
|
||||
&.is-circled {
|
||||
a {
|
||||
padding: 7px 9px;
|
||||
color: $white;
|
||||
&:hover {
|
||||
opacity: .7;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.is-circled {
|
||||
a {
|
||||
display: block;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
color: $dark;
|
||||
.icon {
|
||||
display: block;
|
||||
height: 42px;
|
||||
width: 42px;
|
||||
padding: 13px;
|
||||
border: 1px solid $dark;
|
||||
border-radius: 50%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-bottom: 8px;
|
||||
font-size: 16px;
|
||||
transition: .3s;
|
||||
color: $dark;
|
||||
}
|
||||
&:hover svg {
|
||||
border-color: $primary-color;
|
||||
background-color: $primary-color;
|
||||
color: $white;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// preloader
|
||||
.preloader {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background-color: $white;
|
||||
z-index: 999889898;
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
border: 0;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
// card style
|
||||
.card.post-card {
|
||||
border-radius: 0px;
|
||||
border: 0;
|
||||
text-align: center;
|
||||
.card-body {
|
||||
padding: 0;
|
||||
padding-top: 20px;
|
||||
}
|
||||
.card-footer {
|
||||
margin-bottom: 50px;
|
||||
background-color: transparent;
|
||||
padding: 0;
|
||||
padding-top: 10px;
|
||||
}
|
||||
}
|
||||
.post-title {
|
||||
font-weight: 600;
|
||||
color: $dark;
|
||||
font-family: $primary-font;
|
||||
display: inline-block;
|
||||
line-height: 1.3;
|
||||
}
|
||||
a.post-title:hover,
|
||||
.post-title:hover a {
|
||||
color: $primary-color;
|
||||
}
|
||||
|
||||
.card-meta-tag {
|
||||
text-transform: uppercase;
|
||||
.list-inline-item:not(:last-child) {
|
||||
margin-right: .5rem;
|
||||
}
|
||||
|
||||
a {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: $primary-color;
|
||||
&:hover {color: $dark}
|
||||
}
|
||||
}
|
||||
|
||||
.card-meta {
|
||||
font-size: 12px;
|
||||
|
||||
.list-inline-item:not(:last-child) {
|
||||
margin-right: 1.2rem;
|
||||
}
|
||||
|
||||
.card-meta-author {
|
||||
display: inline-block;
|
||||
&:hover {
|
||||
color: $primary-color;
|
||||
}
|
||||
}
|
||||
.card-meta-author,
|
||||
.card-meta-date {
|
||||
color: #9598a2;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// content
|
||||
.content {
|
||||
font-family: $secondary-font;
|
||||
font-size: 17px;
|
||||
p {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
img {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: $secondary-font;
|
||||
color: $dark;
|
||||
font-weight: 600;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
ol, ul {
|
||||
margin-bottom: 25px;
|
||||
padding-left: 0;
|
||||
li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 35px;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
padding: 20px 30px;
|
||||
padding-left: 70px;
|
||||
border: 1px solid rgba($primary-color, .2);
|
||||
font-family: $primary-font;
|
||||
color: $dark;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
margin: 30px 0;
|
||||
position: relative;
|
||||
p {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
&::before {
|
||||
content: "\f10d";
|
||||
font-weight: 900;
|
||||
}
|
||||
svg {
|
||||
position: absolute;
|
||||
font-size: 28px;
|
||||
left: 20px;
|
||||
top: 25px;
|
||||
opacity: .5;
|
||||
color: $primary-color;
|
||||
}
|
||||
cite {
|
||||
opacity: .7;
|
||||
font-style: normal;
|
||||
text-transform: uppercase;
|
||||
font-size: 13px;
|
||||
position: relative;
|
||||
&::before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
height: 1px;
|
||||
width: 20px;
|
||||
left: -30px;
|
||||
top: 50%;
|
||||
background-color: $dark;
|
||||
opacity: .5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table {
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
margin-bottom: 1rem;
|
||||
border: 1px solid #dee2e6;
|
||||
th,
|
||||
td {
|
||||
padding: .75rem;
|
||||
vertical-align: top;
|
||||
border: 1px solid #dee2e6
|
||||
}
|
||||
thead {
|
||||
background: darken(#f7f7f7, 2);
|
||||
}
|
||||
tbody {
|
||||
background: #f7f7f7;
|
||||
}
|
||||
}
|
||||
|
||||
a.collapse-head {
|
||||
border-bottom: 1px solid #dee2e6;
|
||||
}
|
||||
.notices {
|
||||
margin: 2rem 0;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.notices p {
|
||||
padding: 10px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.notices.note p {
|
||||
border-top: 30px solid #6ab0de;
|
||||
background: #f7f7f7;
|
||||
}
|
||||
.notices.note p::after {
|
||||
content: 'Note';
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
color: $white;
|
||||
left: 2rem;
|
||||
}
|
||||
.notices.tip p {
|
||||
border-top: 30px solid #78C578;
|
||||
background: #f7f7f7;
|
||||
}
|
||||
.notices.tip p::after {
|
||||
content: 'Tip';
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
color: $white;
|
||||
left: 2rem;
|
||||
}
|
||||
.notices.info p {
|
||||
border-top: 30px solid #F0B37E;
|
||||
background: #f7f7f7;
|
||||
}
|
||||
.notices.info p::after {
|
||||
content: 'Info';
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
color: $white;
|
||||
left: 2rem;
|
||||
}
|
||||
.notices.warning p {
|
||||
border-top: 30px solid #E06F6C;
|
||||
background: $light;
|
||||
}
|
||||
.notices.warning p::after {
|
||||
content: 'Warning';
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
color: #fff;
|
||||
left: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
// code-tab
|
||||
.code-tabs {
|
||||
border: 1px solid #ddd;
|
||||
overflow: hidden;
|
||||
margin-bottom: 20px;
|
||||
.nav-tabs {
|
||||
margin-bottom: 0;
|
||||
padding: 0;
|
||||
.nav-item {
|
||||
padding-left: 0;
|
||||
border-right: 1px solid #ddd;
|
||||
.nav-link {
|
||||
text-decoration: none;
|
||||
font-weight: 500;
|
||||
border: 0;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
&::before {
|
||||
display: none;
|
||||
}
|
||||
&.active {
|
||||
background: $primary-color;
|
||||
.nav-link {
|
||||
color: $white;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.tab-content {
|
||||
padding: 20px 15px;
|
||||
}
|
||||
}
|
||||
|
||||
// pagination
|
||||
.pagination {
|
||||
.page-link {
|
||||
padding: 0;
|
||||
margin-left: 0;
|
||||
color: $dark;
|
||||
border: 0;
|
||||
height: 48px;
|
||||
width: 48px;
|
||||
line-height: 48px;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
border-radius: 0 !important;
|
||||
&.active,
|
||||
&:focus,
|
||||
&:hover {
|
||||
box-shadow: none;
|
||||
color: $white;
|
||||
background-color: $primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// form-control
|
||||
.form-control {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
border-bottom: 1px solid #999;
|
||||
border-radius: 0 !important;
|
||||
height: 56px;
|
||||
font-size: 17px;
|
||||
font-weight: 500;
|
||||
transition: .3s ease;
|
||||
&:focus {
|
||||
box-shadow: none;
|
||||
color: $dark;
|
||||
border-bottom-color: $dark;
|
||||
~ .input-group-append {
|
||||
.input-group-text {
|
||||
border-bottom-color: $dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.input-group-text {
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
border-bottom: 1px solid #999;
|
||||
border-radius: 0 !important;
|
||||
transition: .3s ease;
|
||||
padding-right: 0;
|
||||
.icon {
|
||||
font-size: 22px;
|
||||
}
|
||||
}
|
||||
button.input-group-text {
|
||||
&:hover {
|
||||
color: $primary-color;
|
||||
}
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------
|
||||
# helper classes
|
||||
-------------------------------------------------------------------*/
|
||||
.font-primary {font-family: $primary-font}
|
||||
.font-secondary {font-family: $secondary-font}
|
||||
.font-weight-500 {font-weight: 500}
|
||||
.font-weight-600 {font-weight: 600}
|
||||
|
||||
.text-primary {color: $primary-color !important}
|
||||
a.text-primary:hover {color: darken($primary-color, 10) !important}
|
||||
.bg-primary {background-color: $primary-color !important}
|
||||
.bg-primary-light {background-color: rgba($primary-color, .1)}
|
||||
|
||||
.text-dark {color: $dark}
|
||||
.text-light {color: #a8aab2 !important}
|
||||
a.text-dark:hover, a.text-light:hover {
|
||||
color: $primary-color !important
|
||||
}
|
||||
|
||||
.bg-light {background-color: $light !important}
|
||||
.bg-dark {background-color: $dark !important}
|
||||
34
themes/editor-hugo/assets/scss/_mixins.scss
Normal file
34
themes/editor-hugo/assets/scss/_mixins.scss
Normal file
@@ -0,0 +1,34 @@
|
||||
@mixin mobile-xs{
|
||||
@media(max-width:400px){
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@mixin mobile{
|
||||
@media(max-width:575px){
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@mixin tablet{
|
||||
@media(max-width:767px){
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@mixin desktop{
|
||||
@media(max-width:991px){
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@mixin desktop-lg{
|
||||
@media(max-width:1200px){
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@mixin desktop-xl {
|
||||
@media(max-width:1466px) {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin size($size){
|
||||
width: $size; height: $size;
|
||||
}
|
||||
47
themes/editor-hugo/assets/scss/_typography.scss
Normal file
47
themes/editor-hugo/assets/scss/_typography.scss
Normal file
@@ -0,0 +1,47 @@
|
||||
h1, .h1 {
|
||||
font-size: $h1;
|
||||
@include desktop-xl {
|
||||
font-size: $h1-lg;
|
||||
}
|
||||
@include desktop {
|
||||
font-size: $h1-md;
|
||||
}
|
||||
}
|
||||
h2, .h2 {
|
||||
font-size: $h2;
|
||||
@include desktop {
|
||||
font-size: $h2-md;
|
||||
}
|
||||
}
|
||||
h3, .h3 {
|
||||
font-size: $h3;
|
||||
@include desktop {
|
||||
font-size: $h3-md;
|
||||
}
|
||||
}
|
||||
h4, .h4 {
|
||||
font-size: $h4;
|
||||
}
|
||||
h5, .h5 {
|
||||
font-size: $h5;
|
||||
}
|
||||
h6, .h6 {
|
||||
font-size: $h6;
|
||||
}
|
||||
a:focus,
|
||||
button:focus {
|
||||
outline: 0;
|
||||
}
|
||||
a {
|
||||
color: $gray;
|
||||
transition: all .3s;
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
color: #222;
|
||||
}
|
||||
}
|
||||
ul, li {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style-position: inside;
|
||||
}
|
||||
0
themes/editor-hugo/assets/scss/custom.scss
Normal file
0
themes/editor-hugo/assets/scss/custom.scss
Normal file
34
themes/editor-hugo/assets/scss/style.scss
Normal file
34
themes/editor-hugo/assets/scss/style.scss
Normal file
@@ -0,0 +1,34 @@
|
||||
// Color Variables
|
||||
{{ with site.Params.variables }}
|
||||
$primary-color: {{.primary_color}};
|
||||
$secondary-color: {{.secondary_color}};
|
||||
$white: {{.white}};
|
||||
$black: {{.black}};
|
||||
$dark: {{.dark}};
|
||||
$gray: {{.gray}};
|
||||
$light: {{.light}};
|
||||
|
||||
$h1: {{.h1}};
|
||||
$h1_lg: {{.h1_lg}};
|
||||
$h1_md: {{.h1_md}};
|
||||
$h2: {{.h2}};
|
||||
$h2_md: {{.h2_md}};
|
||||
$h3: {{.h3}};
|
||||
$h3_md: {{.h3_md}};
|
||||
$h4: {{.h4}};
|
||||
$h5: {{.h5}};
|
||||
$h6: {{.h6}};
|
||||
|
||||
// Font Variables
|
||||
$primary-font: '{{ replaceRE ":[ital,]*wght@[0-9,;]+" "" .primary_font }}', sans-serif;
|
||||
$secondary-font: '{{ replaceRE ":[ital,]*wght@[0-9,;]+" "" .secondary_font }}', sans-serif;
|
||||
$icon-font: '{{.icon_font}}';
|
||||
{{ end }}
|
||||
|
||||
@import 'mixins';
|
||||
@import 'typography';
|
||||
@import 'buttons';
|
||||
@import 'common';
|
||||
@import 'templates/navigation.scss';
|
||||
@import 'templates/main.scss';
|
||||
@import 'custom.scss';
|
||||
280
themes/editor-hugo/assets/scss/templates/_main.scss
Normal file
280
themes/editor-hugo/assets/scss/templates/_main.scss
Normal file
@@ -0,0 +1,280 @@
|
||||
// page-content
|
||||
.page-content {
|
||||
margin-left: 110px;
|
||||
@include tablet {
|
||||
margin-left: 0;
|
||||
margin-top: 56px;
|
||||
}
|
||||
}
|
||||
|
||||
// author-banner
|
||||
.author-banner {
|
||||
padding: 30px 35px;
|
||||
height: 100%;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
overflow-y: auto;
|
||||
width: calc(25% - 60px);
|
||||
max-width: 100%;
|
||||
@include desktop-lg {
|
||||
width: calc(33.333333% - 70px);
|
||||
}
|
||||
@include desktop {
|
||||
position: static;
|
||||
width: initial;
|
||||
margin-top: 15px;
|
||||
padding: 60px 35px;
|
||||
height: auto;
|
||||
}
|
||||
@include tablet {
|
||||
margin-top: 40px;
|
||||
}
|
||||
@media screen and (max-height: 470px) {
|
||||
display: block !important;
|
||||
}
|
||||
&::-webkit-scrollbar {
|
||||
width: 12px;
|
||||
}
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background-color: rgba($primary-color, .2);
|
||||
}
|
||||
}
|
||||
|
||||
// partner-logos
|
||||
.partner-logos {
|
||||
li {
|
||||
background-color: $white;
|
||||
padding: 15px 20px;
|
||||
border: 1px solid #eee;
|
||||
margin-top: 14px;
|
||||
img {
|
||||
max-height: 25px;
|
||||
max-width: 130px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// newsletter-block
|
||||
.newsletter-block {
|
||||
color: $dark;
|
||||
padding: 80px 60px;
|
||||
@include tablet {
|
||||
padding: 80px 30px;
|
||||
}
|
||||
.input-group-text,
|
||||
.form-control {
|
||||
background-color: transparent;
|
||||
color: $dark;
|
||||
}
|
||||
.form-control {
|
||||
&:focus {
|
||||
border-bottom-color: $dark;
|
||||
~ .input-group-append {
|
||||
.input-group-text {
|
||||
border-bottom-color: $dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
::-webkit-input-placeholder {
|
||||
color: rgba($dark, .7);
|
||||
}
|
||||
:-ms-input-placeholder {
|
||||
color: rgba($dark, .7);
|
||||
}
|
||||
::placeholder {
|
||||
color: rgba($dark, .7);
|
||||
}
|
||||
button.input-group-text {
|
||||
color: rgba($dark, .7);
|
||||
&:hover {
|
||||
color: $dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
footer .newsletter-block{
|
||||
padding: 15px;
|
||||
.input-group {
|
||||
max-width: 350px;
|
||||
margin: auto;
|
||||
}
|
||||
}
|
||||
|
||||
// blog post
|
||||
.single-post-meta,
|
||||
.single-post-similer {
|
||||
margin-top: 70px;
|
||||
}
|
||||
.single-post-author {
|
||||
margin-top: 50px;
|
||||
}
|
||||
.post-meta-tags {
|
||||
a {
|
||||
display: inline-block;
|
||||
background-color: #f7f8fa;
|
||||
color: $dark;
|
||||
padding: 6px 13px;
|
||||
font-weight: 500;
|
||||
font-size: 15px;
|
||||
&:hover {
|
||||
background-color: transparent;
|
||||
color: $primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.widget {
|
||||
margin-bottom: 45px;
|
||||
.widget-title {
|
||||
width: calc(100% - 8px);
|
||||
height: calc(100% - 8px);
|
||||
background: rgba(#f9f3ef, .5);
|
||||
display: block;
|
||||
margin: 4px;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
outline: 1px solid #f9f3ef;
|
||||
border: 1px solid #f9f3ef;
|
||||
outline-offset: 4px;
|
||||
padding-top: 2px;
|
||||
margin-bottom: 35px;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-recent-post {
|
||||
counter-reset: rc-counter;
|
||||
.recent-post-item {
|
||||
margin-top: 35px;
|
||||
padding: 0 10px;
|
||||
a {
|
||||
display: inline-block;
|
||||
&:hover {
|
||||
color: $primary-color;
|
||||
}
|
||||
}
|
||||
.recent-post-image {
|
||||
height: 80px;
|
||||
width: 80px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
img {
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
&::after {
|
||||
counter-increment: rc-counter;
|
||||
content: counter(rc-counter);
|
||||
position: absolute;
|
||||
background-color: $primary-color;
|
||||
border: 2px solid $white;
|
||||
top: -3px;
|
||||
right: -3px;
|
||||
z-index: 222;
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
color: $white;
|
||||
border-radius: 50px;
|
||||
line-height: 26px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-post-categories li {
|
||||
a {
|
||||
border-top: 1px dotted #ddd;
|
||||
padding: 8px 0;
|
||||
display: block;
|
||||
font-size: 15px;
|
||||
span {
|
||||
float: right;
|
||||
background-color: #ddd;
|
||||
font-size: 12px;
|
||||
padding: 5px 8px;
|
||||
line-height: 1;
|
||||
border-radius: 50px;
|
||||
color: black;
|
||||
}
|
||||
&:hover {
|
||||
color: $primary-color;
|
||||
span {
|
||||
background-color: $primary-color;
|
||||
color: $white;
|
||||
}
|
||||
}
|
||||
}
|
||||
&:last-child a {
|
||||
border-bottom: 1px dotted #ddd;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-post-tags li a {
|
||||
border: 1px dotted #ddd;
|
||||
padding: 4px 10px;
|
||||
display: block;
|
||||
font-size: 15px;
|
||||
margin-bottom: 10px;
|
||||
&:hover {
|
||||
border-color: $primary-color;
|
||||
color: $primary-color;
|
||||
}
|
||||
}
|
||||
|
||||
// slick slider style
|
||||
.slick-slide {
|
||||
outline: 0;
|
||||
}
|
||||
.post-slider {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
&:hover {
|
||||
.prevArrow {
|
||||
left: 20px;
|
||||
}
|
||||
.nextArrow {
|
||||
right: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.slider-sm {
|
||||
.slick-arrow {
|
||||
height: 38px;
|
||||
width: 38px;
|
||||
line-height: 38px;
|
||||
}
|
||||
}
|
||||
.slick-arrow {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
z-index: 9;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
line-height: 50px;
|
||||
border-radius: 50%;
|
||||
background: rgba($primary-color, .5);
|
||||
color: $white;
|
||||
border: 0;
|
||||
transition: 0.3s;
|
||||
@include mobile {
|
||||
display: none;
|
||||
}
|
||||
&:focus {
|
||||
outline: 0;
|
||||
}
|
||||
&:hover {
|
||||
background: $primary-color;
|
||||
}
|
||||
}
|
||||
.prevArrow {
|
||||
left: -60px;
|
||||
}
|
||||
.nextArrow {
|
||||
right: -60px;
|
||||
}
|
||||
245
themes/editor-hugo/assets/scss/templates/_navigation.scss
Normal file
245
themes/editor-hugo/assets/scss/templates/_navigation.scss
Normal file
@@ -0,0 +1,245 @@
|
||||
// start header style
|
||||
header.sidenav {
|
||||
position: fixed;
|
||||
width: 110px;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 1000;
|
||||
background-color: $white;
|
||||
transition: .25s ease;
|
||||
padding-top: 15px;
|
||||
padding-bottom: 40px;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
|
||||
@include tablet {
|
||||
width: 100%;
|
||||
height: 80px;
|
||||
background-color: lighten(desaturate(adjust-hue($primary-color, 4), 2.87), 36.67);
|
||||
padding: 0;
|
||||
flex-direction: row;
|
||||
|
||||
.is-top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
padding-left: 25px;
|
||||
> div {
|
||||
order: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.navbar-brand {
|
||||
order: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidenav-toggler {
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
margin-bottom: 55px;
|
||||
|
||||
&.logo-plain {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
@include tablet {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.toggler-icon {
|
||||
cursor: pointer;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
transition: transform 400ms;
|
||||
user-select: none;
|
||||
.line {
|
||||
fill:none;
|
||||
transition: stroke-dasharray 400ms, stroke-dashoffset 400ms;
|
||||
stroke: $dark;
|
||||
stroke-width:3;
|
||||
stroke-linecap:round;
|
||||
}
|
||||
.top {
|
||||
stroke-dasharray: 40 139;
|
||||
}
|
||||
.bottom {
|
||||
stroke-dasharray: 40 180;
|
||||
}
|
||||
&.active {
|
||||
transform: rotate(45deg);
|
||||
.top {
|
||||
stroke-dashoffset: -98px;
|
||||
}
|
||||
.bottom {
|
||||
stroke-dashoffset: -138px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
transform: rotate(-90deg);
|
||||
display: inline-flex;
|
||||
padding: 0;
|
||||
&.plain {
|
||||
transform: rotate(0);
|
||||
}
|
||||
|
||||
@include tablet {
|
||||
transform: rotate(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidenav-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba($primary-color, 0.2);
|
||||
z-index: 15;
|
||||
-webkit-backdrop-filter: blur(2px);
|
||||
backdrop-filter: blur(2px);
|
||||
cursor: pointer;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
transition: .3s ease;
|
||||
&.show {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// sidenav-menu
|
||||
nav.sidenav-menu {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 110px;
|
||||
z-index: 99;
|
||||
background: darken($white, 1);
|
||||
height: 100%;
|
||||
width: 280px;
|
||||
display: flex;
|
||||
overflow-y: auto;
|
||||
padding: 15px 30px 44px 30px;
|
||||
transform: translate3d(-100%, 0, 0);
|
||||
transition: .2s ease;
|
||||
|
||||
&.show {
|
||||
transform: translate3d(0, 0, 0);
|
||||
transition: .3s ease;
|
||||
}
|
||||
|
||||
@include tablet {
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 99992;
|
||||
}
|
||||
|
||||
.nav-item {
|
||||
display: block;
|
||||
|
||||
&.active .nav-link {
|
||||
color: $primary-color !important;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
margin-top: 8px;
|
||||
}
|
||||
&:last-child {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
font-weight: 500;
|
||||
color: $dark;
|
||||
position: relative;
|
||||
padding: 10px;
|
||||
|
||||
&:hover {
|
||||
color: $primary-color;
|
||||
}
|
||||
|
||||
&[data-toggle="collapse"]::after {
|
||||
content: "+";
|
||||
float: right;
|
||||
font-size: 24px;
|
||||
line-height: 1;
|
||||
}
|
||||
&[aria-expanded="true"]::after {
|
||||
content: "_";
|
||||
line-height: 0.3;
|
||||
font-size: 22px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.nav-item ul li {
|
||||
a {
|
||||
font-size: 15px;
|
||||
padding: 7px 18px;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// search block style
|
||||
.search-toggle {
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
transition: .3s ease;
|
||||
padding: 10px;
|
||||
font-size: 22px;
|
||||
&:hover {
|
||||
color: $primary-color;
|
||||
}
|
||||
}
|
||||
.search-block {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
background-color: $white;
|
||||
z-index: 9999988999889;
|
||||
padding: 0 50px;
|
||||
display: none;
|
||||
form {
|
||||
position: relative;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
text-align: center;
|
||||
}
|
||||
input {
|
||||
border: 0;
|
||||
border-bottom: 1px solid #ddd;
|
||||
font-size: 22px;
|
||||
width: 500px;
|
||||
max-width: 100%;
|
||||
padding: 15px 0;
|
||||
margin: auto;
|
||||
letter-spacing: -1px;
|
||||
transition: .3s ease;
|
||||
}
|
||||
&.is-visible {
|
||||
input {
|
||||
border-bottom-color: $primary-color;
|
||||
}
|
||||
}
|
||||
[data-toggle="search-close"] {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
right: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
// end header style
|
||||
0
themes/editor-hugo/layouts/404.html
Normal file
0
themes/editor-hugo/layouts/404.html
Normal file
38
themes/editor-hugo/layouts/_default/about.html
Normal file
38
themes/editor-hugo/layouts/_default/about.html
Normal file
@@ -0,0 +1,38 @@
|
||||
{{ define "main" }}
|
||||
|
||||
<div class="col-lg-12 my-5">
|
||||
<div class="row align-items-end mb-4 mb-lg-5">
|
||||
{{ if .Params.image }}
|
||||
<div class="col-xl-3 col-lg-4">
|
||||
<div class="pr-3">
|
||||
<img loading="lazy" class="img-fluid" style="max-width:250px" src="{{ .Params.image | absURL }}" alt="Author">
|
||||
</div>
|
||||
</div>
|
||||
{{ else if .Params.email }}
|
||||
<div class="col-xl-3 col-lg-4">
|
||||
<img loading="lazy" class="img-fluid" style="max-width:250px" src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=250&pg&d=identicon">
|
||||
</div>
|
||||
{{ end }}
|
||||
<div class="col-lg-7 mt-5 mt-lg-0">
|
||||
<p class="h5 mb-3">{{ i18n `about_me` }}</p>
|
||||
<h3 class="font-primary text-dark mb-0" style="line-height:1.5">{{ .Params.summary }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content mb-5 pb-1">{{ .Content }}</div>
|
||||
|
||||
{{ if .Params.partners.enable }}
|
||||
{{ with .Params.partners }}
|
||||
<p class="h4 mb-3 text-dark">{{ .title | markdownify}}</p>
|
||||
|
||||
<ul class="list-inline partner-logos">
|
||||
{{ range .partner_logos }}
|
||||
<li class="list-inline-item"><img loading="lazy" src="{{. | absURL}}"></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
37
themes/editor-hugo/layouts/_default/article.html
Normal file
37
themes/editor-hugo/layouts/_default/article.html
Normal file
@@ -0,0 +1,37 @@
|
||||
<article class="card post-card">
|
||||
{{ with .Params.images }}
|
||||
<div class="post-slider slider-sm">
|
||||
{{ range . }}
|
||||
<div><img loading="lazy" class="w-100 post" src="{{ . | absURL }}" alt=""></div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<div class="card-body mb-3">
|
||||
{{ with .Params.tags }}
|
||||
<ul class="card-meta-tag list-inline mb-1">
|
||||
{{ range . }}
|
||||
<li class="list-inline-item"><a href="{{site.BaseURL}}tags/{{.| urlize}}/">{{.}}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
<h3 class="h4 mb-2">
|
||||
<a class="post-title" href="{{ .Permalink }}" title="{{ .Title }}">{{ .Title }}</a>
|
||||
</h3>
|
||||
|
||||
<p class="mb-0">{{ .Plain | truncate 70 }}</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<ul class="card-meta list-inline mb-0">
|
||||
{{ with site.GetPage "/about" }}
|
||||
<li class="list-inline-item">
|
||||
<span class="text-light">by:</span>
|
||||
<a href="{{ .Permalink }}" class="card-meta-author">{{ with .Params.name }}{{ index (split . " ") 0 }}{{ end }}</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
<li class="list-inline-item">
|
||||
<span class="card-meta-date">{{.PublishDate.Format "Jan 02, 2006"}}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
51
themes/editor-hugo/layouts/_default/baseof.html
Normal file
51
themes/editor-hugo/layouts/_default/baseof.html
Normal file
@@ -0,0 +1,51 @@
|
||||
<!--
|
||||
|
||||
PROJECT: Editor Hugo
|
||||
VERSION: 1.0.0
|
||||
AUTHOR: Gethugothemes
|
||||
AUTHOR WEBSITE: https://gethugothemes.com
|
||||
|
||||
-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ site.LanguageCode | default `en-US` }}">
|
||||
|
||||
<head>
|
||||
{{ partial "head.html" . }}
|
||||
{{ partialCached "style.html" . }}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{{ partialCached "preloader.html" . }}
|
||||
{{ partial "header.html" . }}
|
||||
|
||||
{{ if .IsHome }}
|
||||
<section class="page-content">
|
||||
<div class="container-fluid pl-3 pl-md-0 pr-3 pr-lg-4">
|
||||
<div class="row no-gutters">
|
||||
{{ block "main" . }}{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{{ else }}
|
||||
|
||||
<section class="page-content section" style="border-left:1px solid #eee">
|
||||
<div class="container px-3 px-lg-4">
|
||||
<div class="row justify-content-center">
|
||||
{{ block "main" . }}{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="container-fluid px-3 px-lg-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-12 mt-4 pt-2">
|
||||
{{ partial "footer.html" . }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{{ end }}
|
||||
|
||||
{{ partialCached "script.html" . }}
|
||||
</body>
|
||||
</html>
|
||||
34
themes/editor-hugo/layouts/_default/contact.html
Normal file
34
themes/editor-hugo/layouts/_default/contact.html
Normal file
@@ -0,0 +1,34 @@
|
||||
{{ define "main" }}
|
||||
|
||||
{{ partial "page-header.html" . }}
|
||||
|
||||
<div class="col-12 mb-5">
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="pr-0 pr-lg-4">
|
||||
<div class="content mb-5">
|
||||
{{.Content | markdownify}}
|
||||
</div>
|
||||
<h4 class="mb-3"><a class="text-underline text-primary" href="mailto:{{site.Params.email}}">{{site.Params.email}}</a></h4>
|
||||
<p class="mb-2">{{site.Params.address}}</p>
|
||||
<p class="mb-2"><a href="tel:{{site.Params.mobile}}">{{site.Params.mobile}}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 mt-5 mt-lg-0">
|
||||
<form method="POST" action="{{ site.Params.contact_form_action | safeURL}}" class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
<iframe src="https://ai.odoo4projects.com/form/b5260d99-f566-41b0-88e9-4ace58115b3e"
|
||||
width="100%"
|
||||
height="600"
|
||||
frameborder="0"
|
||||
style="border: none;"
|
||||
/>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
14
themes/editor-hugo/layouts/_default/index.json
Normal file
14
themes/editor-hugo/layouts/_default/index.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{{- $.Scratch.Add "index" slice -}}
|
||||
{{- range where site.RegularPages "Type" "in" site.Params.mainSections -}}
|
||||
|
||||
{{ with .Params.images }}
|
||||
{{ range first 1 . }}
|
||||
{{ $.Scratch.Set "image" (. | absURL) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $image:= $.Scratch.Get "image" }}
|
||||
|
||||
{{- $.Scratch.Add "index" (dict "title" .Title "tags" .Params.tags "image" $image "categories" .Params.categories "contents" .Plain "permalink" .Permalink) -}}
|
||||
|
||||
{{- end -}}
|
||||
{{- $.Scratch.Get "index" | jsonify -}}
|
||||
123
themes/editor-hugo/layouts/_default/list.html
Normal file
123
themes/editor-hugo/layouts/_default/list.html
Normal file
@@ -0,0 +1,123 @@
|
||||
{{ define "main" }}
|
||||
|
||||
<!-- checking blog -->
|
||||
{{ if or (eq .Section "post") (eq .Section "posts") (eq .Section "blog") (eq .Section "blogs") (eq .Section "news") }}
|
||||
{{ partial "page-header.html" . }}
|
||||
|
||||
<div class="col-12">
|
||||
<div class="row">
|
||||
{{ $paginator := .Paginate (where site.RegularPages "Type" "in" site.Params.mainSections) }}
|
||||
{{ range $paginator.Pages }}
|
||||
<div class="col-lg-4 col-md-4 col-sm-6">
|
||||
{{ .Render "article" }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<div class="row mb-4">
|
||||
<div class="col-12">
|
||||
{{"<!-- pagination -->" | safeHTML }}
|
||||
{{ $paginator := .Paginator }}
|
||||
<!-- Number of links either side of the current page. -->
|
||||
{{ $adjacent_links := 2 }}
|
||||
<!-- $max_links = ($adjacent_links * 2) + 1 -->
|
||||
{{ $max_links := (add (mul $adjacent_links 2) 1) }}
|
||||
<!-- $lower_limit = $adjacent_links + 1 -->
|
||||
{{ $lower_limit := (add $adjacent_links 1) }}
|
||||
<!-- $upper_limit = $paginator.TotalPages - $adjacent_links -->
|
||||
{{ $upper_limit := (sub $paginator.TotalPages $adjacent_links) }}
|
||||
<!-- If there's more than one page. -->
|
||||
{{ if gt $paginator.TotalPages 1 }}
|
||||
<nav class="mb-3">
|
||||
<ul class="pagination justify-content-center">
|
||||
<!-- Previous page. -->
|
||||
{{ if $paginator.HasPrev }}
|
||||
<li class="page-item"><a class="page-link arrow" href="{{ $paginator.Prev.URL }}" aria-label="Pagination Arrow">
|
||||
<i class="fas fa-angle-left"></i>
|
||||
</a></li>
|
||||
{{ end }}
|
||||
<!-- Page numbers. -->
|
||||
{{ range $paginator.Pagers }}
|
||||
{{ $.Scratch.Set "page_number_flag" false }}
|
||||
<!-- Advanced page numbers. -->
|
||||
{{ if gt $paginator.TotalPages $max_links }}
|
||||
<!-- Lower limit pages. -->
|
||||
<!-- If the user is on a page which is in the lower limit. -->
|
||||
{{ if le $paginator.PageNumber $lower_limit }}
|
||||
<!-- If the current loop page is less than max_links. -->
|
||||
{{ if le .PageNumber $max_links }}
|
||||
{{ $.Scratch.Set "page_number_flag" true }}
|
||||
{{ end }}
|
||||
<!-- Upper limit pages. -->
|
||||
<!-- If the user is on a page which is in the upper limit. -->
|
||||
{{ else if ge $paginator.PageNumber $upper_limit }}
|
||||
<!-- If the current loop page is greater than total pages minus $max_links -->
|
||||
{{ if gt .PageNumber (sub $paginator.TotalPages $max_links) }}
|
||||
{{ $.Scratch.Set "page_number_flag" true }}
|
||||
{{ end }}
|
||||
<!-- Middle pages. -->
|
||||
{{ else }}
|
||||
{{ if and ( ge .PageNumber (sub $paginator.PageNumber $adjacent_links) ) ( le .PageNumber (add $paginator.PageNumber $adjacent_links) ) }}
|
||||
{{ $.Scratch.Set "page_number_flag" true }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
<!-- Simple page numbers. -->
|
||||
{{ else }}
|
||||
{{ $.Scratch.Set "page_number_flag" true }}
|
||||
{{ end }}
|
||||
<!-- Output page numbers. -->
|
||||
{{ if eq ($.Scratch.Get "page_number_flag") true }}
|
||||
<li class="page-item">
|
||||
<a href="{{ .URL }}" class="page-link{{ if eq . $paginator }} active {{ end }}">
|
||||
{{ .PageNumber }}
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
<!-- Next page. -->
|
||||
{{ if $paginator.HasNext }}
|
||||
<li class="page-item"><a class="page-link arrow" href="{{ $paginator.Next.URL }}" aria-label="Pagination Arrow">
|
||||
<i class="fas fa-angle-right"></i>
|
||||
</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- taxonomie page -->
|
||||
{{ else if or (eq .Section "categories") (eq .Section "tags")}}
|
||||
{{ partial "page-header.html" . }}
|
||||
|
||||
<div class="col-12">
|
||||
<div class="row">
|
||||
{{ range .Data.Pages }}
|
||||
<div class="col-lg-4 col-md-4 col-sm-6">
|
||||
{{ .Render "article" }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- regular page -->
|
||||
{{ else }}
|
||||
|
||||
{{ partial "page-header.html" . }}
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-10 mx-auto">
|
||||
<div class="content">
|
||||
{{.Content}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{{ end }}
|
||||
<!-- /regular page -->
|
||||
|
||||
{{ end }}
|
||||
51
themes/editor-hugo/layouts/_default/search.html
Normal file
51
themes/editor-hugo/layouts/_default/search.html
Normal file
@@ -0,0 +1,51 @@
|
||||
{{ define "main" }}
|
||||
|
||||
<div class="col-lg-12">
|
||||
<section class="page-header">
|
||||
<div class="my-4 py-5">
|
||||
<h4 class="title">{{ i18n "search_result_for" }}
|
||||
<span class="mark">
|
||||
<script>
|
||||
var keyword = (window.location.search).substr(3);
|
||||
var result = keyword.replace("+", " ");
|
||||
document.write(result);
|
||||
</script>
|
||||
</span>
|
||||
</h4>
|
||||
</div>
|
||||
</section>
|
||||
<div class="row" id="search-results"></div>
|
||||
<script id="search-result-template" type="text/x-js-template">
|
||||
<div class="col-lg-4 col-md-4 col-sm-6">
|
||||
<article class="card post-card" id="summary-${key}">
|
||||
<a href="${link}">
|
||||
${ isset image }<img loading="lazy" class="w-100" src="${image}" alt="${title}">${end}
|
||||
</a>
|
||||
<div class="card-body mb-3">
|
||||
<h3 class="h4 mb-2">
|
||||
<a class="post-title" href="${link}" title="${title}">${title}</a>
|
||||
</h3>
|
||||
|
||||
<p class="mb-0">${snippet}</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<ul class="card-meta list-inline mb-0">
|
||||
<li class="list-inline-item">
|
||||
<span class="card-meta-date">{{ i18n "category" }}: ${categories}</span>
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<span class="card-meta-date">{{ i18n "tag" }}: ${tags}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</script>
|
||||
</div>
|
||||
|
||||
{{ "<!-- Search index -->" | safeHTML }}
|
||||
<script>
|
||||
var indexURL = {{"index.json" | absLangURL}}
|
||||
</script>
|
||||
|
||||
{{ end }}
|
||||
78
themes/editor-hugo/layouts/_default/single.html
Normal file
78
themes/editor-hugo/layouts/_default/single.html
Normal file
@@ -0,0 +1,78 @@
|
||||
{{ define "main" }}
|
||||
|
||||
<!-- checking blog -->
|
||||
{{ if or (eq .Section "post") (eq .Section "posts") (eq .Section "blog") (eq .Section "blogs") (eq .Section "news") (eq .Section "categories") (eq .Section "tags") }}
|
||||
|
||||
<div class="col-lg-8">
|
||||
<div class="mb-4 mt-4 mt-md-0">
|
||||
{{ with .Params.images }}
|
||||
<div class="post-slider">
|
||||
{{ range . }}
|
||||
<div><img loading="lazy" class="w-100" src="{{ . | absURL }}" alt=""></div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ with .Params.tags }}
|
||||
<ul class="card-meta-tag list-inline mt-3">
|
||||
{{ range . }}
|
||||
<li class="list-inline-item"><a href="{{site.BaseURL}}tags/{{.| urlize}}/">{{.}}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
|
||||
<h2 class="h3 mt-2 mb-3 post-title">{{ .Title }}</h2>
|
||||
|
||||
<ul class="card-meta list-inline mb-0">
|
||||
{{ with site.GetPage "/about" }}
|
||||
<li class="list-inline-item">
|
||||
<span class="text-light">by:</span>
|
||||
<a href="{{ .Permalink }}" class="card-meta-author">{{ .Params.name }}</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
<li class="list-inline-item">
|
||||
<span class="card-meta-date">{{.PublishDate.Format "Jan 02, 2006"}}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-lg-4 mt-5 mt-lg-0">
|
||||
<div class="pl-0 pl-lg-3">
|
||||
{{ $widget:= site.Params.widgets.sidebar }}
|
||||
{{- partial "widgets/widget-wrapper" ( dict "Widgets" $widget "Scope" . ) -}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="single-post-similer">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h3 class="text-dark font-weight-bold mb-4 pb-2">{{i18n "you_may_also_like"}}</h3>
|
||||
</div>
|
||||
{{ $related := ( where site.RegularPages "Type" "in" site.Params.mainSections ) | intersect (where site.Pages ".Title" "!=" .Title) | union (site.RegularPages.RelatedIndices . "tags" ) }}
|
||||
{{ range first 3 $related }}
|
||||
<div class="col-lg-4 col-md-4 col-sm-6">
|
||||
{{ .Render "article" }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- regular page -->
|
||||
{{ else }}
|
||||
<div class="col-lg-12">
|
||||
<div class="row">{{ partial "page-header.html" . }}</div>
|
||||
<div class="content">
|
||||
{{.Content}}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
<!-- /regular page -->
|
||||
|
||||
{{ end }}
|
||||
2
themes/editor-hugo/layouts/_default/terms.html
Normal file
2
themes/editor-hugo/layouts/_default/terms.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<!-- Redirect to homepage -->
|
||||
<script>window.location.replace("{{ site.BaseURL | relLangURL }}");</script>
|
||||
149
themes/editor-hugo/layouts/index.html
Normal file
149
themes/editor-hugo/layouts/index.html
Normal file
@@ -0,0 +1,149 @@
|
||||
{{ define "main" }}
|
||||
|
||||
<div class="col-lg-4 col-xl-3">
|
||||
|
||||
<div class="author-banner bg-primary-light text-center d-flex flex-column align-items-center justify-content-center">
|
||||
|
||||
<h1 class="h5">Odoo Community Hosting Tips, Tutorials & Best Practices </h1>
|
||||
|
||||
{{ with site.GetPage "/about" }}
|
||||
{{ if .Params.image }}
|
||||
<img class="mb-4 rounded-circle w-100" style="max-width:280px" src="{{ .Params.image | absURL }}" alt="Author">
|
||||
{{ else if .Params.email }}
|
||||
<img class="mb-4 rounded-circle w-100" style="max-width:280px" src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=220&pg&d=identicon">
|
||||
{{ end }}
|
||||
<p class="text-uppercase small mb-2">{{ i18n `my_name_is` }}</p>
|
||||
<h2 class="h3 text-primary font-primary mb-3">{{ .Params.name }}</h2>
|
||||
<div class="mb-0 mx-auto" style="max-width:460px">{{ .Params.summary }} <a href="{{ .Permalink }}" aria-label="About me" class="text-underline d-inline-block">{{ i18n `read_more` }}</a></div>
|
||||
{{ end }}
|
||||
<ul class="social-links is-circled list-unstyled list-inline font-weight-500">
|
||||
{{ range .Site.Params.social }}
|
||||
<li class="list-inline-item"><a href="{{.link}}" title="{{.title}}">
|
||||
<i class="icon {{.icon}}"></i> {{.title}}
|
||||
</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-8 col-xl-9">
|
||||
<div class="section">
|
||||
<div class="row">
|
||||
{{ $paginator := .Paginate (where site.RegularPages "Type" "in" site.Params.mainSections) }}
|
||||
{{ range $paginator.Pages }}
|
||||
<div class="col-xl-4 col-sm-6">
|
||||
{{ .Render "article" }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
{{"<!-- pagination -->" | safeHTML }}
|
||||
{{ $paginator := .Paginator }}
|
||||
<!-- Number of links either side of the current page. -->
|
||||
{{ $adjacent_links := 2 }}
|
||||
<!-- $max_links = ($adjacent_links * 2) + 1 -->
|
||||
{{ $max_links := (add (mul $adjacent_links 2) 1) }}
|
||||
<!-- $lower_limit = $adjacent_links + 1 -->
|
||||
{{ $lower_limit := (add $adjacent_links 1) }}
|
||||
<!-- $upper_limit = $paginator.TotalPages - $adjacent_links -->
|
||||
{{ $upper_limit := (sub $paginator.TotalPages $adjacent_links) }}
|
||||
<!-- If there's more than one page. -->
|
||||
{{ if gt $paginator.TotalPages 1 }}
|
||||
<nav class="mb-3">
|
||||
<ul class="pagination justify-content-center">
|
||||
<!-- Previous page. -->
|
||||
{{ if $paginator.HasPrev }}
|
||||
<li class="page-item"><a class="page-link arrow" href="{{ $paginator.Prev.URL }}" aria-label="Pagination Arrow">
|
||||
<i class="fas fa-angle-left"></i>
|
||||
</a></li>
|
||||
{{ end }}
|
||||
<!-- Page numbers. -->
|
||||
{{ range $paginator.Pagers }}
|
||||
{{ $.Scratch.Set "page_number_flag" false }}
|
||||
<!-- Advanced page numbers. -->
|
||||
{{ if gt $paginator.TotalPages $max_links }}
|
||||
<!-- Lower limit pages. -->
|
||||
<!-- If the user is on a page which is in the lower limit. -->
|
||||
{{ if le $paginator.PageNumber $lower_limit }}
|
||||
<!-- If the current loop page is less than max_links. -->
|
||||
{{ if le .PageNumber $max_links }}
|
||||
{{ $.Scratch.Set "page_number_flag" true }}
|
||||
{{ end }}
|
||||
<!-- Upper limit pages. -->
|
||||
<!-- If the user is on a page which is in the upper limit. -->
|
||||
{{ else if ge $paginator.PageNumber $upper_limit }}
|
||||
<!-- If the current loop page is greater than total pages minus $max_links -->
|
||||
{{ if gt .PageNumber (sub $paginator.TotalPages $max_links) }}
|
||||
{{ $.Scratch.Set "page_number_flag" true }}
|
||||
{{ end }}
|
||||
<!-- Middle pages. -->
|
||||
{{ else }}
|
||||
{{ if and ( ge .PageNumber (sub $paginator.PageNumber $adjacent_links) ) ( le .PageNumber (add $paginator.PageNumber $adjacent_links) ) }}
|
||||
{{ $.Scratch.Set "page_number_flag" true }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
<!-- Simple page numbers. -->
|
||||
{{ else }}
|
||||
{{ $.Scratch.Set "page_number_flag" true }}
|
||||
{{ end }}
|
||||
<!-- Output page numbers. -->
|
||||
{{ if eq ($.Scratch.Get "page_number_flag") true }}
|
||||
<li class="page-item">
|
||||
<a href="{{ .URL }}" class="page-link{{ if eq . $paginator }} active {{ end }}">
|
||||
{{ .PageNumber }}
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
<!-- Next page. -->
|
||||
{{ if $paginator.HasNext }}
|
||||
<li class="page-item"><a class="page-link arrow" href="{{ $paginator.Next.URL }}" aria-label="Pagination Arrow">
|
||||
<i class="fas fa-angle-right"></i>
|
||||
</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{ if site.Params.subscription.enable }}
|
||||
{{ with site.Params.subscription }}
|
||||
<div class="section pb-0">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="newsletter-block bg-primary-light font-primary">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-12">
|
||||
<h3 class="mb-0">{{ i18n `subscribe_title` }}</h3>
|
||||
</div>
|
||||
<div class="col-12 mt-4">
|
||||
<form action="{{ .mailchimp_form_action }}" name="{{ .mailchimp_form_name }}" method="post">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control pl-3" placeholder="{{ i18n `enter_your_email`}}" aria-label="{{ i18n `enter_your_email`}}" required>
|
||||
<div class="input-group-append">
|
||||
<button type="submit" class="input-group-text pr-3" aria-label="News-letter"><i class="far fa-paper-plane"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<div class="mt-4 pt-1">
|
||||
{{ partial "footer.html" . }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
55
themes/editor-hugo/layouts/partials/footer.html
Normal file
55
themes/editor-hugo/layouts/partials/footer.html
Normal file
@@ -0,0 +1,55 @@
|
||||
<footer class="bg-primary-light py-5">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
{{ with site.Params.social }}
|
||||
<div class="col-12 text-center mb-5">
|
||||
<ul class="social-links is-circled list-unstyled list-inline font-weight-500">
|
||||
{{ range . }}
|
||||
<li class="list-inline-item"><a href="{{.link}}" title="{{.title}}">
|
||||
<i class="icon {{.icon}}"></i> {{.title}}
|
||||
</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
|
||||
|
||||
<p>Discover the best Odoo Community Hosting Tips, Tutorials & Best Practices to optimize your Odoo experience. Whether you're a beginner or an advanced user, our blog provides expert guidance on setting up and managing your Odoo instance. Learn essential tips for choosing the right hosting environment, improving system performance, and ensuring seamless updates.</p>
|
||||
|
||||
<p>Our tutorials cover everything from basic configurations to advanced customization, helping you make the most of Odoo’s powerful features. Stay up-to-date with the latest Odoo Community trends and implement best practices for security, scalability, and data integrity.</p>
|
||||
|
||||
<p>With our practical insights, you can enhance your Odoo hosting setup, troubleshoot common issues, and take your business to the next level. Whether you're hosting Odoo on-premise or in the cloud, our resources will guide you every step of the way. Dive into the world of Odoo and unlock its full potential today!</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
|
||||
{{ if not .IsHome }}
|
||||
{{ if site.Params.subscription.enable }}
|
||||
{{ with site.Params.subscription }}
|
||||
<!-- subscription form -->
|
||||
<form class="newsletter-block mx-auto mb-5" action="{{ .mailchimp_form_action }}" method="post" name="mc-embedded-subscribe-form" target="_blank">
|
||||
<h5 class="h4 mb-3 text-center font-primary">{{ i18n `subscribe_title` }}</h5>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control bg-transparent pl-3" placeholder="{{ i18n `enter_your_email`}}" aria-label="{{ i18n `enter_your_email`}}" required>
|
||||
<div class="input-group-append">
|
||||
<button type="submit" class="input-group-text pr-3" aria-label="News-letter"><i class="far fa-paper-plane"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div style="position: absolute; left: -5000px;" aria-hidden="true">
|
||||
<input type="text" name="{{ .mailchimp_form_name }}" tabindex="-1">
|
||||
</div>
|
||||
</form>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<div class="col-12 text-center">
|
||||
<p class="mb-0 font-weight-500">{{site.Params.copyright | markdownify}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
31
themes/editor-hugo/layouts/partials/head.html
Normal file
31
themes/editor-hugo/layouts/partials/head.html
Normal file
@@ -0,0 +1,31 @@
|
||||
<meta charset="utf-8">
|
||||
<title>{{ .Title }}</title>
|
||||
|
||||
<!-- mobile responsive meta -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
|
||||
<meta name="description" content="{{ with .Params.Description }}{{ . }}{{ else }}{{ with site.Params.description }}{{ . }}{{ end }}{{ end }}">
|
||||
{{ with site.Params.author }}
|
||||
<meta name="author" content="{{ . }}">{{ end }}
|
||||
|
||||
<meta name="theme-name" content="editor-hugo" />
|
||||
|
||||
<!--Favicon-->
|
||||
<link rel="shortcut icon" href="{{ site.Params.favicon | absURL }}" type="image/x-icon">
|
||||
<link rel="icon" href="{{ site.Params.favicon | absURL }}" type="image/x-icon">
|
||||
|
||||
<!-- multilingual SEO optimizations -->
|
||||
{{ if .IsTranslated }}
|
||||
{{ range .Page.AllTranslations }}
|
||||
<link rel="alternate" title="{{.Title}}" hreflang="{{.Lang}}" href="{{.RelPermalink}}">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ with .Params.image }}
|
||||
<meta property="og:image" content="{{ . | absURL }}" />
|
||||
{{ end }}
|
||||
{{ template "_internal/opengraph.html" . }}
|
||||
{{ template "_internal/google_analytics.html" . }}
|
||||
{{ site.Params.custom_script | safeHTML }}
|
||||
|
||||
|
||||
<script defer data-domain="blog.odoo4projects.com" src="https://plausible.odoo4projects.com/js/script.js"></script>
|
||||
137
themes/editor-hugo/layouts/partials/header.html
Normal file
137
themes/editor-hugo/layouts/partials/header.html
Normal file
@@ -0,0 +1,137 @@
|
||||
<header class="sidenav">
|
||||
<div class="is-top">
|
||||
<div>
|
||||
<!-- Language List -->
|
||||
{{ if .IsTranslated }}
|
||||
<span class="d-inline-block d-md-none mr-1"><select style="cursor:pointer;background:transparent" class="m-2 border-0 text-uppercase" id="select-language" onchange="location = this.value;">
|
||||
{{ $siteLanguages := site.Languages}}
|
||||
{{ $pageLang := .Page.Lang}}
|
||||
{{ range .Page.AllTranslations }}
|
||||
{{ $translation := .}}
|
||||
{{ range $siteLanguages }}
|
||||
{{ if eq $translation.Lang .Lang }}
|
||||
{{ $selected := false }}
|
||||
{{ if eq $pageLang .Lang}}
|
||||
<option id="{{ $translation.Language }}" value="{{ $translation.Permalink }}" selected>{{ .LanguageName }}
|
||||
</option>
|
||||
{{ else }}
|
||||
<option id="{{ $translation.Language }}" value="{{ $translation.Permalink }}">{{ .LanguageName }}</option>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</select></span>
|
||||
{{ end }}
|
||||
|
||||
{{ if site.Params.search }}
|
||||
<button class="search-toggle d-inline-block d-md-none" data-toggle="search">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/></svg>
|
||||
</button>
|
||||
{{ end }}
|
||||
<button class="sidenav-toggler d-inline-block {{if eq site.Params.logo_rotate false}}logo-plain{{end}}" data-toggle="sidenav-menu">
|
||||
<svg id="toggler-icon" class="toggler-icon" viewBox="0 0 100 100" width="60" onclick="this.classList.toggle('active')"><path class="line top" d="m 30,33 h 40 c 0,0 9.044436,-0.654587 9.044436,-8.508902 0,-7.854315 -8.024349,-11.958003 -14.89975,-10.85914 -6.875401,1.098863 -13.637059,4.171617 -13.637059,16.368042 v 40" /><path class="line middle" d="m 30,50 h 40" /><path class="line bottom" d="m 30,67 h 40 c 12.796276,0 15.357889,-11.717785 15.357889,-26.851538 0,-15.133752 -4.786586,-27.274118 -16.667516,-27.274118 -11.88093,0 -18.499247,6.994427 -18.435284,17.125656 l 0.252538,40" /></svg>
|
||||
</button>
|
||||
</div>
|
||||
{{ if site.Params.logo_rotate }}
|
||||
<a class="navbar-brand mr-0" href="https://ODOO4projects.com">
|
||||
{{ if site.Params.logo }}
|
||||
<img height="{{site.Params.logo_height}}" src="{{ site.Params.logo | absURL}}"
|
||||
alt="{{site.Params.logo_text}}">
|
||||
{{ else }}
|
||||
<span class="h3">{{site.Params.logo_text | markdownify}} <span class="text-primary">.</span></span>
|
||||
{{ end }}
|
||||
</a>
|
||||
{{ else }}
|
||||
<a class="navbar-brand plain mr-0" href="{{ site.BaseURL | relLangURL }}">
|
||||
{{ if site.Params.logo }}
|
||||
<img height="{{site.Params.logo_height}}" src="{{ site.Params.logo | absURL}}"
|
||||
alt="{{site.Params.logo_text}}">
|
||||
{{ else }}
|
||||
<span class="h3">{{site.Params.logo_text | markdownify}} <span class="text-primary">.</span></span>
|
||||
{{ end }}
|
||||
</a>
|
||||
{{ end }}
|
||||
|
||||
</div>
|
||||
<div class="d-none d-md-block">
|
||||
<ul class="social-links list-unstyled">
|
||||
{{ if site.Params.search }}
|
||||
<li class="mb-3">
|
||||
<button class="search-toggle" data-toggle="search">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/></svg>
|
||||
</button>
|
||||
</li>
|
||||
{{ end }}
|
||||
<li>
|
||||
<a href="mailto:{{ site.Params.email }}">
|
||||
<svg width="1.15em" height="1.15em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2zm13 2.383l-4.758 2.855L15 11.114v-5.73zm-.034 6.878L9.271 8.82 8 9.583 6.728 8.82l-5.694 3.44A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.739zM1 11.114l4.758-2.876L1 5.383v5.73z"/></svg>
|
||||
</a>
|
||||
</li>
|
||||
<!-- Language List -->
|
||||
{{ if .IsTranslated }}
|
||||
<li class="mt-3 pt-2"><select style="cursor:pointer" class="m-2 border-0 text-uppercase" id="select-language" onchange="location = this.value;">
|
||||
{{ $siteLanguages := site.Languages}}
|
||||
{{ $pageLang := .Page.Lang}}
|
||||
{{ range .Page.AllTranslations }}
|
||||
{{ $translation := .}}
|
||||
{{ range $siteLanguages }}
|
||||
{{ if eq $translation.Lang .Lang }}
|
||||
{{ $selected := false }}
|
||||
{{ if eq $pageLang .Lang}}
|
||||
<option id="{{ $translation.Language }}" value="{{ $translation.Permalink }}" selected>{{ .LanguageName }}
|
||||
</option>
|
||||
{{ else }}
|
||||
<option id="{{ $translation.Language }}" value="{{ $translation.Permalink }}">{{ .LanguageName }}</option>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</select></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="sidenav-overlay" data-toggle="sidenav-menu" onclick="document.getElementById('toggler-icon').classList.remove('active')"></div>
|
||||
|
||||
<nav class="sidenav-menu flex-column justify-content-between">
|
||||
<ul class="w-100 accordion" id="accordionMenu">
|
||||
{{ range site.Menus.main }}
|
||||
{{ if .HasChildren }}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#" type="button" data-toggle="collapse" data-target="#dropdown-menu-02">{{ .Name }}</a>
|
||||
<ul id="dropdown-menu-02" class="collapse list-unstyled" data-parent="#accordionMenu">
|
||||
{{ range .Children }}
|
||||
<li><a href="{{if .Pre}}{{if not $.IsHome}}{{site.BaseURL | relLangURL}}{{end}}{{.Pre}}{{ .URL }}{{else}}{{.URL | relLangURL}}{{end}}">{{ .Name }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</li>
|
||||
{{ else }}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{if .Pre}}{{if not $.IsHome}}{{site.BaseURL | relLangURL}}{{end}}{{.Pre}}{{ .URL }}{{else}}{{.URL | relLangURL}}{{end}}">{{ .Name }}</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
|
||||
{{ with site.Params.social }}
|
||||
<ul class="social-links list-unstyled list-inline mt-5">
|
||||
{{ range . }}
|
||||
<li class="list-inline-item"><a href="{{.link}}" title="{{.title}}">
|
||||
<i class="{{.icon}}"></i>
|
||||
</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
</nav>
|
||||
|
||||
{{ if site.Params.search }}
|
||||
<div class="search-block">
|
||||
<div data-toggle="search-close">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" fill="currentColor" class="text-primary" viewBox="0 0 16 16"><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"/></svg>
|
||||
</div>
|
||||
<form action="{{ `search`| relLangURL }}" method="GET">
|
||||
<input id="search-field" name="s" type="search" placeholder="{{ i18n `search_placeholder`}}" class="text-center" aria-label="search-query">
|
||||
</form>
|
||||
</div>
|
||||
{{ end }}
|
||||
19
themes/editor-hugo/layouts/partials/page-header.html
Normal file
19
themes/editor-hugo/layouts/partials/page-header.html
Normal file
@@ -0,0 +1,19 @@
|
||||
<section class="col-12 page-header">
|
||||
<div class="section my-4 py-5">
|
||||
|
||||
{{ if or (eq .Section "tags") (eq .Section "categories") }}
|
||||
|
||||
{{ if eq .Section "tags" }}
|
||||
<h2 class="h4 title">{{ i18n "showing_posts_from" }} <mark>{{.Title | markdownify}}</mark> {{ i18n "tag" }}</h2>
|
||||
|
||||
{{ else if eq .Section "categories" }}
|
||||
|
||||
<h2 class="h4 title">{{ i18n "showing_posts_from" }} <mark>{{.Title | markdownify}}</mark> {{ i18n "category" }}</h2>
|
||||
{{ end }}
|
||||
|
||||
{{ else }}
|
||||
<h2 class="h4 title">{{.Title | markdownify}}</h2>
|
||||
{{ end }}
|
||||
|
||||
</div>
|
||||
</section>
|
||||
7
themes/editor-hugo/layouts/partials/preloader.html
Normal file
7
themes/editor-hugo/layouts/partials/preloader.html
Normal file
@@ -0,0 +1,7 @@
|
||||
{{ if site.Params.preloader.enable }}
|
||||
<div class="preloader">
|
||||
{{ with site.Params.preloader.preloader }}
|
||||
<img src="{{ . | absURL }}" alt="preloader">
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
72
themes/editor-hugo/layouts/partials/script.html
Normal file
72
themes/editor-hugo/layouts/partials/script.html
Normal file
@@ -0,0 +1,72 @@
|
||||
<!-- font family -->
|
||||
<script src="https://cdn.jsdelivr.net/gh/theprojectsomething/webfontloader@feature/google-fonts-v2/webfontloader.js"></script>
|
||||
{{$pf:= site.Params.variables.primary_font}}
|
||||
{{$sf:= site.Params.variables.secondary_font}}
|
||||
<script>
|
||||
WebFont.load({
|
||||
google: {
|
||||
families: [
|
||||
'Fira Sans:ital,wght@0,400;0,500;0,600;1,500;1,600'
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<!-- JS Plugins + Main script -->
|
||||
{{ $scripts := slice }}
|
||||
{{ range site.Params.plugins.js}}
|
||||
{{ if findRE "^http" .link }}
|
||||
<script src="{{ .link | absURL }}" type="application/javascript" {{.attributes | safeHTMLAttr}}></script>
|
||||
{{ else }}
|
||||
{{ $scripts = $scripts | append (resources.Get .link) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $scripts := $scripts | append (resources.Get "js/script.js" | minify) }}
|
||||
{{ $scripts := $scripts | resources.Concat "/js/script.js" | minify | fingerprint "sha512" }}
|
||||
<script crossorigin="anonymous" defer="defer" data-turbolinks-suppress-warning integrity="{{ $scripts.Data.Integrity }}" type="application/javascript">{{$scripts.Content | safeJS}}</script>
|
||||
|
||||
<!-- cookie -->
|
||||
{{ if site.Params.cookies.enable }}
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/2.2.1/js.cookie.min.js"></script>
|
||||
<div id="js-cookie-box" class="cookie-box cookie-box-hide">
|
||||
This site uses cookies. By continuing to use this website, you agree to their use. <span id="js-cookie-button" class="btn btn-sm btn-outline-primary ml-2">I Accept</span>
|
||||
</div>
|
||||
<script>
|
||||
(function ($) {
|
||||
const cookieBox = document.getElementById('js-cookie-box');
|
||||
const cookieButton = document.getElementById('js-cookie-button');
|
||||
if (!Cookies.get('cookie-box')) {
|
||||
cookieBox.classList.remove('cookie-box-hide');
|
||||
cookieButton.onclick = function () {
|
||||
Cookies.set('cookie-box', true, {
|
||||
expires: {{ site.Params.cookies.expire_days }}
|
||||
});
|
||||
cookieBox.classList.add('cookie-box-hide');
|
||||
};
|
||||
}
|
||||
})(jQuery);
|
||||
</script>
|
||||
|
||||
<!-- cookie style -->
|
||||
<style>
|
||||
.cookie-box {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
text-align: center;
|
||||
z-index: 9999;
|
||||
padding: 1rem 2rem;
|
||||
background: rgb(71, 71, 71);
|
||||
transition: all .75s cubic-bezier(.19, 1, .22, 1);
|
||||
color: #fdfdfd;
|
||||
}
|
||||
|
||||
.cookie-box-hide {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
{{ end }}
|
||||
53
themes/editor-hugo/layouts/partials/style.html
Normal file
53
themes/editor-hugo/layouts/partials/style.html
Normal file
@@ -0,0 +1,53 @@
|
||||
<!-- plugins + stylesheet -->
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
{{ $styles := slice }}
|
||||
{{ range site.Params.plugins.css }}
|
||||
{{ if findRE "^http" .link }}
|
||||
<link crossorigin="anonymous" media="all" rel="stylesheet" href="{{ .link | absURL }}" {{.attributes | safeHTMLAttr}} >
|
||||
{{ else }}
|
||||
{{ $styles = $styles | append (resources.Get .link) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $styles := $styles | append (resources.Get "scss/style.scss" | resources.ExecuteAsTemplate "style.scss" . | toCSS) }}
|
||||
{{ $styles := $styles | resources.Concat "/css/style.css" | minify | fingerprint "sha512"}}
|
||||
<style crossorigin="anonymous" media="all" type="text/css" integrity="{{ $styles.Data.Integrity }}">{{$styles.Content | safeCSS}}</style>
|
||||
|
||||
<style>
|
||||
blockquote::before {
|
||||
display: none;
|
||||
font-family: "{{ with site.Params.variables }} {{.icon_font}} {{ end }}";
|
||||
}
|
||||
|
||||
.content ul li:not(.nav-item) {
|
||||
position: relative;
|
||||
margin-bottom: 5px;
|
||||
list-style-type: none;
|
||||
}
|
||||
.content ul li:not(.nav-item) svg {
|
||||
margin-right: 6px;
|
||||
transform: scale(0.8);
|
||||
color: {{ with site.Params.variables }} {{.primary_color}} {{ end }};
|
||||
}
|
||||
.content ul li:not(.nav-item)::before {
|
||||
font-size: 14px;
|
||||
font-family: "{{ with site.Params.variables }} {{.icon_font}} {{ end }}";
|
||||
font-weight: 900;
|
||||
content: "\f069";
|
||||
display: none;
|
||||
}
|
||||
.notices p::before {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
font-family: "{{ with site.Params.variables }} {{.icon_font}} {{ end }}";
|
||||
font-weight: 900;
|
||||
content: "\f05a";
|
||||
left: 10px;
|
||||
display: none;
|
||||
}
|
||||
.notices p svg {
|
||||
position: absolute;
|
||||
top: 7px;
|
||||
left: 10px;
|
||||
color: {{ with site.Params.variables }} {{.white}} {{ end }};
|
||||
}
|
||||
</style>
|
||||
17
themes/editor-hugo/layouts/partials/widgets/about-me.html
Normal file
17
themes/editor-hugo/layouts/partials/widgets/about-me.html
Normal file
@@ -0,0 +1,17 @@
|
||||
{{ "<!-- about me -->" | safeHTML }}
|
||||
<div class="widget text-center">
|
||||
{{ with site.GetPage "/about" }}
|
||||
<span class="widget-title">{{ i18n `about_me` }}</span>
|
||||
{{ if .Params.image }}
|
||||
<img loading="lazy" class="mb-4 rounded-circle w-100" style="max-width:150px" src="{{ .Params.image | absURL }}" alt="Author">
|
||||
{{ else if .Params.email }}
|
||||
<img loading="lazy" class="mb-4 rounded-circle w-100" style="max-width:150px" src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=150&pg&d=identicon">
|
||||
{{ end }}
|
||||
<p class="text-uppercase small mb-2">{{ i18n `my_name_is` }}</p>
|
||||
<h1 class="h4 text-primary font-primary mb-3">{{ .Params.name }}</h1>
|
||||
<div class="mb-0 mx-auto" style="max-width:460px">{{ .Summary }} <a href="{{ .Permalink }}" aria-label="About me" class="text-underline d-inline-block">{{ i18n `read_more` }}</a></div>
|
||||
|
||||
{{ end }}
|
||||
|
||||
|
||||
</div>
|
||||
14
themes/editor-hugo/layouts/partials/widgets/categories.html
Normal file
14
themes/editor-hugo/layouts/partials/widgets/categories.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{{ "<!-- categories -->" | safeHTML }}
|
||||
<div class="widget">
|
||||
<span class="widget-title">{{ i18n "categories" }}</span>
|
||||
|
||||
{{ if isset site.Taxonomies "categories" }}
|
||||
{{ if not (eq (len site.Taxonomies.categories) 0) }}
|
||||
<ul class="sidebar-post-categories list-unstyled">
|
||||
{{ range $name, $items := site.Taxonomies.categories }}
|
||||
<li><a href="{{ `categories/` | absLangURL }}{{ $name | urlize | lower }}/">{{ $name | humanize }} <span>{{ len $items }}</span></a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
25
themes/editor-hugo/layouts/partials/widgets/recent-post.html
Normal file
25
themes/editor-hugo/layouts/partials/widgets/recent-post.html
Normal file
@@ -0,0 +1,25 @@
|
||||
{{ "<!-- latest post -->" | safeHTML }}
|
||||
<div class="widget">
|
||||
<span class="widget-title">{{ i18n `recent_post` }}</span>
|
||||
|
||||
<ul class="sidebar-recent-post list-unstyled">
|
||||
{{ $related := ( where site.RegularPages "Type" "in" site.Params.mainSections ) | intersect (where site.Pages ".Title" "!=" .Title) | union (site.RegularPages.Related . ) }}
|
||||
{{ range first 3 $related }}
|
||||
<li class="recent-post-item">
|
||||
<div class="media">
|
||||
<div class="media-body mr-2">
|
||||
<h5><a href="{{ .Permalink }}">{{ .Title }}</a></h5>
|
||||
<span class="card-meta">
|
||||
<span class="card-meta-date">{{.PublishDate.Format "Jan 02, 2006"}}</span>
|
||||
</span>
|
||||
</div>
|
||||
<a href="{{ .Permalink }}" class="recent-post-image">
|
||||
{{ range first 1 .Params.Images }}
|
||||
<img loading="lazy" class="img-fluid rounded-circle" src="{{ . | absURL }}">
|
||||
{{ end }}
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
10
themes/editor-hugo/layouts/partials/widgets/search.html
Normal file
10
themes/editor-hugo/layouts/partials/widgets/search.html
Normal file
@@ -0,0 +1,10 @@
|
||||
{{ "<!-- Search -->" | safeHTML }}
|
||||
{{ if site.Params.search }}
|
||||
<div class="widget">
|
||||
<h5 class="widget-title"><span>{{ i18n "search" }}</span></h5>
|
||||
<form action="{{ `search`| relLangURL }}" class="widget-search">
|
||||
<input id="search-query" name="s" type="search" placeholder="{{ i18n `search_placeholder`}}">
|
||||
<button type="submit"><i class="ti-search"></i></button>
|
||||
</form>
|
||||
</div>
|
||||
{{ end }}
|
||||
13
themes/editor-hugo/layouts/partials/widgets/tags.html
Normal file
13
themes/editor-hugo/layouts/partials/widgets/tags.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{{ "<!-- tags -->" | safeHTML }}
|
||||
<div class="widget">
|
||||
<span class="widget-title">{{ i18n "tags" }}</span>
|
||||
{{ if isset site.Taxonomies "tags" }}
|
||||
{{ if not (eq (len site.Taxonomies.tags) 0) }}
|
||||
<ul class="sidebar-post-tags list-unstyled list-inline">
|
||||
{{ range $name, $items := site.Taxonomies.tags }}
|
||||
<li class="list-inline-item"><a href="{{ `tags/` | absLangURL }}{{ $name | urlize | lower }}/">{{ $name | humanize }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
@@ -0,0 +1,3 @@
|
||||
{{- range .Widgets -}}
|
||||
{{- partial ( print "widgets/" . ) $.Scope -}}
|
||||
{{- end -}}
|
||||
8
themes/editor-hugo/layouts/shortcodes/collapse.html
Normal file
8
themes/editor-hugo/layouts/shortcodes/collapse.html
Normal file
@@ -0,0 +1,8 @@
|
||||
{{ $_hugo_config := `{ "version": 1 }` }}
|
||||
|
||||
<div class="border border-default collapse-wrapper">
|
||||
<a class="d-flex p-2 collapse-head" data-toggle="collapse" href="#{{ .Get 0 | urlize }}" role="button">
|
||||
{{ .Get 0 | markdownify }} <i class="fas fa-plus ml-auto pt-1 mt-1"></i>
|
||||
</a>
|
||||
<div class="collapse" id="{{ .Get 0 | urlize }}"><div class="p-2">{{ .Inner | markdownify }}</div></div>
|
||||
</div>
|
||||
3
themes/editor-hugo/layouts/shortcodes/notice.html
Normal file
3
themes/editor-hugo/layouts/shortcodes/notice.html
Normal file
@@ -0,0 +1,3 @@
|
||||
{{ $_hugo_config := `{ "version": 1 }` }}
|
||||
|
||||
<div class="notices {{ .Get 0 }}" {{ if len .Params | eq 2 }} id="{{ .Get 1 }}" {{ end }}><p>{{ .Inner | markdownify }}</p></div>
|
||||
11
themes/editor-hugo/layouts/shortcodes/quote.html
Normal file
11
themes/editor-hugo/layouts/shortcodes/quote.html
Normal file
@@ -0,0 +1,11 @@
|
||||
{{ $_hugo_config := `{ "version": 1 }` }}
|
||||
|
||||
<div class="quote">
|
||||
<i class="ti-quote-left"></i>
|
||||
<div>
|
||||
<p>{{ .Inner | markdownify }}</p>
|
||||
{{ with .Get "by"}}
|
||||
<span class="quote-by"> -{{ . }}</span>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
5
themes/editor-hugo/layouts/shortcodes/tab.html
Normal file
5
themes/editor-hugo/layouts/shortcodes/tab.html
Normal file
@@ -0,0 +1,5 @@
|
||||
{{ $_hugo_config := `{ "version": 1 }` }}
|
||||
|
||||
<div class="tab-pane" title="{{ .Get 0 }}">
|
||||
{{ .Inner }}
|
||||
</div>
|
||||
6
themes/editor-hugo/layouts/shortcodes/tabs.html
Normal file
6
themes/editor-hugo/layouts/shortcodes/tabs.html
Normal file
@@ -0,0 +1,6 @@
|
||||
{{ $_hugo_config := `{ "version": 1 }` }}
|
||||
|
||||
<div class="code-tabs">
|
||||
<ul class="nav nav-tabs"></ul>
|
||||
<div class="tab-content">{{ .Inner }}</div>
|
||||
</div>
|
||||
8
themes/editor-hugo/netlify.toml
Executable file
8
themes/editor-hugo/netlify.toml
Executable file
@@ -0,0 +1,8 @@
|
||||
[build]
|
||||
publish = "public"
|
||||
command = "yarn project-setup && yarn build"
|
||||
|
||||
[build.environment]
|
||||
HUGO_VERSION = "0.115.1"
|
||||
GO_VERSION = "1.20.5"
|
||||
HUGO_BASEURL = "/"
|
||||
77
themes/editor-hugo/scripts/projectSetup.js
Normal file
77
themes/editor-hugo/scripts/projectSetup.js
Normal file
@@ -0,0 +1,77 @@
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const getFolderName = (rootfolder) => {
|
||||
const configPath = path.join(
|
||||
rootfolder,
|
||||
"exampleSite/hugo.toml"
|
||||
);
|
||||
const getConfig = fs.readFileSync(configPath, "utf8");
|
||||
const match = getConfig.match(/theme\s*=\s*\[?"([^"\]]+)"\]?/);
|
||||
let selectedTheme = null;
|
||||
if (match && match[1]) {
|
||||
selectedTheme = match[1];
|
||||
}
|
||||
return selectedTheme;
|
||||
};
|
||||
|
||||
const deleteFolder = (folderPath) => {
|
||||
if (fs.existsSync(folderPath)) {
|
||||
fs.rmSync(folderPath, { recursive: true, force: true });
|
||||
}
|
||||
};
|
||||
|
||||
const createNewfolder = (rootfolder, folderName) => {
|
||||
const newFolder = path.join(rootfolder, folderName);
|
||||
fs.mkdirSync(newFolder, { recursive: true });
|
||||
return newFolder;
|
||||
};
|
||||
|
||||
const iterateFilesAndFolders = (rootFolder, { destinationRoot }) => {
|
||||
const directory = path.join(rootFolder);
|
||||
const items = fs.readdirSync(directory, { withFileTypes: true });
|
||||
items.forEach((item) => {
|
||||
if (item.isDirectory()) {
|
||||
createNewfolder(destinationRoot, item.name);
|
||||
iterateFilesAndFolders(path.join(directory, item.name), {
|
||||
currentFolder: item.name,
|
||||
destinationRoot: path.join(destinationRoot, item.name),
|
||||
});
|
||||
} else {
|
||||
const sourceFile = path.join(directory, item.name);
|
||||
const destinationFile = path.join(destinationRoot, item.name);
|
||||
fs.renameSync(sourceFile, destinationFile);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const setupProject = () => {
|
||||
const rootfolder = path.join(__dirname, "../");
|
||||
if (!fs.existsSync(path.join(rootfolder, "themes"))) {
|
||||
const folderList = ["layouts", "assets", "static"];
|
||||
const folderName = getFolderName(rootfolder);
|
||||
const newfolderName = createNewfolder(
|
||||
path.join(rootfolder, "themes"),
|
||||
folderName
|
||||
);
|
||||
|
||||
folderList.forEach((folder) => {
|
||||
const source = path.join(rootfolder, folder);
|
||||
const destination = path.join(newfolderName, folder);
|
||||
if (fs.existsSync(source)) {
|
||||
fs.mkdirSync(destination, { recursive: true });
|
||||
iterateFilesAndFolders(source, {
|
||||
currentFolder: folder,
|
||||
destinationRoot: destination,
|
||||
});
|
||||
deleteFolder(source);
|
||||
}
|
||||
});
|
||||
|
||||
const exampleSite = path.join(rootfolder, "exampleSite");
|
||||
iterateFilesAndFolders(exampleSite, { destinationRoot: rootfolder });
|
||||
deleteFolder(exampleSite);
|
||||
}
|
||||
};
|
||||
|
||||
setupProject();
|
||||
90
themes/editor-hugo/scripts/themeSetup.js
Normal file
90
themes/editor-hugo/scripts/themeSetup.js
Normal file
@@ -0,0 +1,90 @@
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const createNewfolder = (rootfolder, folderName) => {
|
||||
const newFolder = path.join(rootfolder, folderName);
|
||||
fs.mkdirSync(newFolder, { recursive: true });
|
||||
return newFolder;
|
||||
};
|
||||
|
||||
const deleteFolder = (folderPath) => {
|
||||
if (fs.existsSync(folderPath)) {
|
||||
fs.rmSync(folderPath, { recursive: true, force: true });
|
||||
}
|
||||
};
|
||||
|
||||
const getFolderName = (rootfolder) => {
|
||||
const configPath = path.join(
|
||||
rootfolder,
|
||||
"exampleSite/hugo.toml"
|
||||
);
|
||||
const getConfig = fs.readFileSync(configPath, "utf8");
|
||||
const match = getConfig.match(/theme\s*=\s*\[?"([^"\]]+)"\]?/);
|
||||
let selectedTheme = null;
|
||||
if (match && match[1]) {
|
||||
selectedTheme = match[1];
|
||||
}
|
||||
return selectedTheme;
|
||||
};
|
||||
|
||||
const iterateFilesAndFolders = (rootFolder, { destinationRoot }) => {
|
||||
const directory = path.join(rootFolder);
|
||||
const items = fs.readdirSync(directory, { withFileTypes: true });
|
||||
items.forEach((item) => {
|
||||
if (item.isDirectory()) {
|
||||
createNewfolder(destinationRoot, item.name);
|
||||
iterateFilesAndFolders(path.join(directory, item.name), {
|
||||
currentFolder: item.name,
|
||||
destinationRoot: path.join(destinationRoot, item.name),
|
||||
});
|
||||
} else {
|
||||
const sourceFile = path.join(directory, item.name);
|
||||
const destinationFile = path.join(destinationRoot, item.name);
|
||||
fs.renameSync(sourceFile, destinationFile);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const setupTheme = () => {
|
||||
const rootFolder = path.join(__dirname, "../");
|
||||
|
||||
if (!fs.existsSync(path.join(rootFolder, "exampleSite"))) {
|
||||
const includesFiles = [
|
||||
"hugo.toml",
|
||||
"assets",
|
||||
"config",
|
||||
"data",
|
||||
"content",
|
||||
"i18n",
|
||||
"static",
|
||||
];
|
||||
|
||||
const folder = createNewfolder(rootFolder, "exampleSite");
|
||||
|
||||
fs.readdirSync(rootFolder, { withFileTypes: true }).forEach((file) => {
|
||||
if (includesFiles.includes(file.name)) {
|
||||
if (file.isDirectory()) {
|
||||
const destination = path.join(rootFolder, "exampleSite", file.name);
|
||||
fs.mkdirSync(destination, { recursive: true });
|
||||
iterateFilesAndFolders(path.join(rootFolder, file.name), {
|
||||
destinationRoot: destination,
|
||||
});
|
||||
deleteFolder(path.join(rootFolder, file.name));
|
||||
} else {
|
||||
fs.renameSync(
|
||||
path.join(rootFolder, file.name),
|
||||
path.join(folder, file.name)
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const themes = path.join(rootFolder, "themes");
|
||||
iterateFilesAndFolders(path.join(themes, getFolderName(rootFolder)), {
|
||||
destinationRoot: rootFolder,
|
||||
});
|
||||
deleteFolder(themes);
|
||||
}
|
||||
};
|
||||
|
||||
setupTheme();
|
||||
43
themes/editor-hugo/vercel-build.sh
Executable file
43
themes/editor-hugo/vercel-build.sh
Executable file
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
|
||||
# default versions
|
||||
NODE_VERSION='18.16.1';
|
||||
GO_VERSION='1.20.5';
|
||||
HUGO_VERSION='0.115.1';
|
||||
|
||||
# install Node.js
|
||||
# echo "Installing Node.js $NODE_VERSION..."
|
||||
# curl -sSOL https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}.tar.gz
|
||||
# tar -xzf node-v${NODE_VERSION}.tar.gz
|
||||
# export PATH=$PATH:/usr/local/bin
|
||||
# rm -rf node-v${NODE_VERSION}.tar.gz
|
||||
|
||||
echo "USING NODE VERSION: $(node -v)"
|
||||
|
||||
# install Go
|
||||
echo "Installing Go $GO_VERSION..."
|
||||
curl -sSOL https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz
|
||||
tar -C /usr/local -xzf go${GO_VERSION}.linux-amd64.tar.gz
|
||||
export PATH=$PATH:/usr/local/go/bin
|
||||
rm -rf go${GO_VERSION}.linux-amd64.tar.gz
|
||||
go version
|
||||
|
||||
# install Hugo
|
||||
echo "Installing Hugo $HUGO_VERSION..."
|
||||
curl -sSOL https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_Linux-64bit.tar.gz
|
||||
tar -xzf hugo_extended_${HUGO_VERSION}_Linux-64bit.tar.gz
|
||||
mv hugo /usr/local/bin/
|
||||
rm -rf hugo_extended_${HUGO_VERSION}_Linux-64bit.tar.gz
|
||||
hugo version
|
||||
|
||||
# project setup
|
||||
echo "Project setting up..."
|
||||
npm run project-setup
|
||||
|
||||
# install dependencies
|
||||
echo "Installing project dependencies..."
|
||||
npm install
|
||||
|
||||
# run the build command
|
||||
echo "Running the build command..."
|
||||
npm run build
|
||||
11
themes/editor-hugo/vercel.json
Executable file
11
themes/editor-hugo/vercel.json
Executable file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"builds": [
|
||||
{
|
||||
"src": "vercel-build.sh",
|
||||
"use": "@vercel/static-build",
|
||||
"config": {
|
||||
"distDir": "public"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user