forked from Fediversity/Fediversity
dark mode changes
This commit is contained in:
parent
ad8a244881
commit
e3d6fc655a
BIN
assets/.DS_Store
vendored
Normal file
BIN
assets/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
assets/images/logo-archive.png
Normal file
BIN
assets/images/logo-archive.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.6 KiB |
BIN
assets/images/logo-darkmode-archive.png
Normal file
BIN
assets/images/logo-darkmode-archive.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3 KiB |
Binary file not shown.
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 19 KiB |
Binary file not shown.
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 19 KiB |
36
assets/js/main.js
Executable file
36
assets/js/main.js
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
// main script
|
||||||
|
(function () {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// Dropdown Menu Toggler For Mobile
|
||||||
|
// ----------------------------------------
|
||||||
|
const dropdownMenuToggler = document.querySelectorAll(
|
||||||
|
".nav-dropdown > .nav-link",
|
||||||
|
);
|
||||||
|
|
||||||
|
dropdownMenuToggler.forEach((toggler) => {
|
||||||
|
toggler?.addEventListener("click", (e) => {
|
||||||
|
e.target.closest(".nav-item").classList.toggle("active");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Testimonial Slider
|
||||||
|
// ----------------------------------------
|
||||||
|
new Swiper(".testimonial-slider", {
|
||||||
|
spaceBetween: 24,
|
||||||
|
loop: true,
|
||||||
|
pagination: {
|
||||||
|
el: ".testimonial-slider-pagination",
|
||||||
|
type: "bullets",
|
||||||
|
clickable: true,
|
||||||
|
},
|
||||||
|
breakpoints: {
|
||||||
|
768: {
|
||||||
|
slidesPerView: 2,
|
||||||
|
},
|
||||||
|
992: {
|
||||||
|
slidesPerView: 3,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
})();
|
179
assets/plugins/maps/google-map.js
Normal file
179
assets/plugins/maps/google-map.js
Normal file
|
@ -0,0 +1,179 @@
|
||||||
|
/*!***************************************************
|
||||||
|
* Google Map
|
||||||
|
*****************************************************/
|
||||||
|
|
||||||
|
window.marker = null;
|
||||||
|
|
||||||
|
function initialize() {
|
||||||
|
var map,
|
||||||
|
mapId = document.getElementById("map");
|
||||||
|
var latitude = mapId.getAttribute("data-latitude");
|
||||||
|
var longitude = mapId.getAttribute("data-longitude");
|
||||||
|
var mapMarker = mapId.getAttribute("data-marker");
|
||||||
|
var mapMarkerName = mapId.getAttribute("data-marker-name");
|
||||||
|
var nottingham = new google.maps.LatLng(latitude, longitude);
|
||||||
|
var style = [
|
||||||
|
{
|
||||||
|
featureType: "administrative",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
saturation: "-100",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "administrative.province",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
visibility: "off",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "landscape",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
saturation: -100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
lightness: 65,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
visibility: "on",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "poi",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
saturation: -100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
lightness: "50",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
visibility: "simplified",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "road",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
saturation: "-100",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "road.highway",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
visibility: "simplified",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "road.arterial",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
lightness: "30",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "road.local",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
lightness: "40",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "transit",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
saturation: -100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
visibility: "simplified",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "water",
|
||||||
|
elementType: "geometry",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
hue: "#ffff00",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
lightness: -25,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
saturation: -97,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "water",
|
||||||
|
elementType: "labels",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
lightness: -25,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
saturation: -100,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
var mapOptions = {
|
||||||
|
center: nottingham,
|
||||||
|
mapTypeId: google.maps.MapTypeId.ROADMAP,
|
||||||
|
backgroundColor: "#000",
|
||||||
|
zoom: 15,
|
||||||
|
panControl: !1,
|
||||||
|
zoomControl: !0,
|
||||||
|
mapTypeControl: !1,
|
||||||
|
scaleControl: !1,
|
||||||
|
streetViewControl: !1,
|
||||||
|
overviewMapControl: !1,
|
||||||
|
zoomControlOptions: {
|
||||||
|
style: google.maps.ZoomControlStyle.LARGE,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
map = new google.maps.Map(document.getElementById("map"), mapOptions);
|
||||||
|
var mapType = new google.maps.StyledMapType(style, {
|
||||||
|
name: "Grayscale",
|
||||||
|
});
|
||||||
|
map.mapTypes.set("grey", mapType);
|
||||||
|
map.setMapTypeId("grey");
|
||||||
|
var marker_image = mapMarker;
|
||||||
|
var pinIcon = new google.maps.MarkerImage(
|
||||||
|
marker_image,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
new google.maps.Size(30, 50),
|
||||||
|
);
|
||||||
|
marker = new google.maps.Marker({
|
||||||
|
position: nottingham,
|
||||||
|
map: map,
|
||||||
|
icon: pinIcon,
|
||||||
|
title: mapMarkerName,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
var map = document.getElementById("map");
|
||||||
|
if (map != null) {
|
||||||
|
google.maps.event.addDomListener(window, "load", initialize);
|
||||||
|
}
|
667
assets/plugins/swiper/swiper-bundle.css
Normal file
667
assets/plugins/swiper/swiper-bundle.css
Normal file
|
@ -0,0 +1,667 @@
|
||||||
|
/**
|
||||||
|
* Swiper 8.0.7
|
||||||
|
* Most modern mobile touch slider and framework with hardware accelerated transitions
|
||||||
|
* https://swiperjs.com
|
||||||
|
*
|
||||||
|
* Copyright 2014-2022 Vladimir Kharlampidi
|
||||||
|
*
|
||||||
|
* Released under the MIT License
|
||||||
|
*
|
||||||
|
* Released on: March 4, 2022
|
||||||
|
*/
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "swiper-icons";
|
||||||
|
src: url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA");
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--swiper-theme-color: #007aff;
|
||||||
|
}
|
||||||
|
.swiper {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
/* Fix of Webkit flickering */
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.swiper-vertical > .swiper-wrapper {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.swiper-wrapper {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 1;
|
||||||
|
display: flex;
|
||||||
|
transition-property: transform;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
.swiper-android .swiper-slide,
|
||||||
|
.swiper-wrapper {
|
||||||
|
transform: translate3d(0px, 0, 0);
|
||||||
|
}
|
||||||
|
.swiper-pointer-events {
|
||||||
|
touch-action: pan-y;
|
||||||
|
}
|
||||||
|
.swiper-pointer-events.swiper-vertical {
|
||||||
|
touch-action: pan-x;
|
||||||
|
}
|
||||||
|
.swiper-slide {
|
||||||
|
flex-shrink: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: relative;
|
||||||
|
transition-property: transform;
|
||||||
|
}
|
||||||
|
.swiper-slide-invisible-blank {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
/* Auto Height */
|
||||||
|
.swiper-autoheight,
|
||||||
|
.swiper-autoheight .swiper-slide {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
.swiper-autoheight .swiper-wrapper {
|
||||||
|
align-items: flex-start;
|
||||||
|
transition-property: transform, height;
|
||||||
|
}
|
||||||
|
.swiper-backface-hidden .swiper-slide {
|
||||||
|
transform: translateZ(0);
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
}
|
||||||
|
/* 3D Effects */
|
||||||
|
.swiper-3d,
|
||||||
|
.swiper-3d.swiper-css-mode .swiper-wrapper {
|
||||||
|
perspective: 1200px;
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-wrapper,
|
||||||
|
.swiper-3d .swiper-slide,
|
||||||
|
.swiper-3d .swiper-slide-shadow,
|
||||||
|
.swiper-3d .swiper-slide-shadow-left,
|
||||||
|
.swiper-3d .swiper-slide-shadow-right,
|
||||||
|
.swiper-3d .swiper-slide-shadow-top,
|
||||||
|
.swiper-3d .swiper-slide-shadow-bottom,
|
||||||
|
.swiper-3d .swiper-cube-shadow {
|
||||||
|
transform-style: preserve-3d;
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-slide-shadow,
|
||||||
|
.swiper-3d .swiper-slide-shadow-left,
|
||||||
|
.swiper-3d .swiper-slide-shadow-right,
|
||||||
|
.swiper-3d .swiper-slide-shadow-top,
|
||||||
|
.swiper-3d .swiper-slide-shadow-bottom {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-slide-shadow {
|
||||||
|
background: rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-slide-shadow-left {
|
||||||
|
background-image: linear-gradient(
|
||||||
|
to left,
|
||||||
|
rgba(0, 0, 0, 0.5),
|
||||||
|
rgba(0, 0, 0, 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-slide-shadow-right {
|
||||||
|
background-image: linear-gradient(
|
||||||
|
to right,
|
||||||
|
rgba(0, 0, 0, 0.5),
|
||||||
|
rgba(0, 0, 0, 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-slide-shadow-top {
|
||||||
|
background-image: linear-gradient(
|
||||||
|
to top,
|
||||||
|
rgba(0, 0, 0, 0.5),
|
||||||
|
rgba(0, 0, 0, 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-slide-shadow-bottom {
|
||||||
|
background-image: linear-gradient(
|
||||||
|
to bottom,
|
||||||
|
rgba(0, 0, 0, 0.5),
|
||||||
|
rgba(0, 0, 0, 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
/* CSS Mode */
|
||||||
|
.swiper-css-mode > .swiper-wrapper {
|
||||||
|
overflow: auto;
|
||||||
|
scrollbar-width: none;
|
||||||
|
/* For Firefox */
|
||||||
|
-ms-overflow-style: none;
|
||||||
|
/* For Internet Explorer and Edge */
|
||||||
|
}
|
||||||
|
.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.swiper-css-mode > .swiper-wrapper > .swiper-slide {
|
||||||
|
scroll-snap-align: start start;
|
||||||
|
}
|
||||||
|
.swiper-horizontal.swiper-css-mode > .swiper-wrapper {
|
||||||
|
scroll-snap-type: x mandatory;
|
||||||
|
}
|
||||||
|
.swiper-vertical.swiper-css-mode > .swiper-wrapper {
|
||||||
|
scroll-snap-type: y mandatory;
|
||||||
|
}
|
||||||
|
.swiper-centered > .swiper-wrapper::before {
|
||||||
|
content: "";
|
||||||
|
flex-shrink: 0;
|
||||||
|
order: 9999;
|
||||||
|
}
|
||||||
|
.swiper-centered.swiper-horizontal
|
||||||
|
> .swiper-wrapper
|
||||||
|
> .swiper-slide:first-child {
|
||||||
|
margin-inline-start: var(--swiper-centered-offset-before);
|
||||||
|
}
|
||||||
|
.swiper-centered.swiper-horizontal > .swiper-wrapper::before {
|
||||||
|
height: 100%;
|
||||||
|
min-height: 1px;
|
||||||
|
width: var(--swiper-centered-offset-after);
|
||||||
|
}
|
||||||
|
.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {
|
||||||
|
margin-block-start: var(--swiper-centered-offset-before);
|
||||||
|
}
|
||||||
|
.swiper-centered.swiper-vertical > .swiper-wrapper::before {
|
||||||
|
width: 100%;
|
||||||
|
min-width: 1px;
|
||||||
|
height: var(--swiper-centered-offset-after);
|
||||||
|
}
|
||||||
|
.swiper-centered > .swiper-wrapper > .swiper-slide {
|
||||||
|
scroll-snap-align: center center;
|
||||||
|
}
|
||||||
|
.swiper-virtual .swiper-slide {
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
transform: translateZ(0);
|
||||||
|
}
|
||||||
|
.swiper-virtual.swiper-css-mode .swiper-wrapper::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after {
|
||||||
|
height: 1px;
|
||||||
|
width: var(--swiper-virtual-size);
|
||||||
|
}
|
||||||
|
.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after {
|
||||||
|
width: 1px;
|
||||||
|
height: var(--swiper-virtual-size);
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--swiper-navigation-size: 44px;
|
||||||
|
/*
|
||||||
|
--swiper-navigation-color: var(--swiper-theme-color);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.swiper-button-prev,
|
||||||
|
.swiper-button-next {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
width: calc(var(--swiper-navigation-size) / 44 * 27);
|
||||||
|
height: var(--swiper-navigation-size);
|
||||||
|
margin-top: calc(0px - (var(--swiper-navigation-size) / 2));
|
||||||
|
z-index: 10;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
color: var(--swiper-navigation-color, var(--swiper-theme-color));
|
||||||
|
}
|
||||||
|
.swiper-button-prev.swiper-button-disabled,
|
||||||
|
.swiper-button-next.swiper-button-disabled {
|
||||||
|
opacity: 0.35;
|
||||||
|
cursor: auto;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.swiper-button-prev:after,
|
||||||
|
.swiper-button-next:after {
|
||||||
|
font-family: swiper-icons;
|
||||||
|
font-size: var(--swiper-navigation-size);
|
||||||
|
text-transform: none !important;
|
||||||
|
letter-spacing: 0;
|
||||||
|
text-transform: none;
|
||||||
|
font-variant: initial;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.swiper-button-prev,
|
||||||
|
.swiper-rtl .swiper-button-next {
|
||||||
|
left: 10px;
|
||||||
|
right: auto;
|
||||||
|
}
|
||||||
|
.swiper-button-prev:after,
|
||||||
|
.swiper-rtl .swiper-button-next:after {
|
||||||
|
content: "prev";
|
||||||
|
}
|
||||||
|
.swiper-button-next,
|
||||||
|
.swiper-rtl .swiper-button-prev {
|
||||||
|
right: 10px;
|
||||||
|
left: auto;
|
||||||
|
}
|
||||||
|
.swiper-button-next:after,
|
||||||
|
.swiper-rtl .swiper-button-prev:after {
|
||||||
|
content: "next";
|
||||||
|
}
|
||||||
|
.swiper-button-lock {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
/*
|
||||||
|
--swiper-pagination-color: var(--swiper-theme-color);
|
||||||
|
--swiper-pagination-bullet-size: 8px;
|
||||||
|
--swiper-pagination-bullet-width: 8px;
|
||||||
|
--swiper-pagination-bullet-height: 8px;
|
||||||
|
--swiper-pagination-bullet-inactive-color: #000;
|
||||||
|
--swiper-pagination-bullet-inactive-opacity: 0.2;
|
||||||
|
--swiper-pagination-bullet-opacity: 1;
|
||||||
|
--swiper-pagination-bullet-horizontal-gap: 4px;
|
||||||
|
--swiper-pagination-bullet-vertical-gap: 6px;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.swiper-pagination {
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
transition: 300ms opacity;
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
.swiper-pagination.swiper-pagination-hidden {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
/* Common Styles */
|
||||||
|
.swiper-pagination-fraction,
|
||||||
|
.swiper-pagination-custom,
|
||||||
|
.swiper-horizontal > .swiper-pagination-bullets,
|
||||||
|
.swiper-pagination-bullets.swiper-pagination-horizontal {
|
||||||
|
bottom: 10px;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
/* Bullets */
|
||||||
|
.swiper-pagination-bullets-dynamic {
|
||||||
|
overflow: hidden;
|
||||||
|
font-size: 0;
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
|
||||||
|
transform: scale(0.33);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {
|
||||||
|
transform: scale(0.66);
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {
|
||||||
|
transform: scale(0.33);
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {
|
||||||
|
transform: scale(0.66);
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {
|
||||||
|
transform: scale(0.33);
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
width: var(
|
||||||
|
--swiper-pagination-bullet-width,
|
||||||
|
var(--swiper-pagination-bullet-size, 8px)
|
||||||
|
);
|
||||||
|
height: var(
|
||||||
|
--swiper-pagination-bullet-height,
|
||||||
|
var(--swiper-pagination-bullet-size, 8px)
|
||||||
|
);
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: var(--swiper-pagination-bullet-inactive-color, #000);
|
||||||
|
opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);
|
||||||
|
}
|
||||||
|
button.swiper-pagination-bullet {
|
||||||
|
border: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
.swiper-pagination-clickable .swiper-pagination-bullet {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullet:only-child {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullet-active {
|
||||||
|
opacity: var(--swiper-pagination-bullet-opacity, 1);
|
||||||
|
background: var(--swiper-pagination-color, var(--swiper-theme-color));
|
||||||
|
}
|
||||||
|
.swiper-vertical > .swiper-pagination-bullets,
|
||||||
|
.swiper-pagination-vertical.swiper-pagination-bullets {
|
||||||
|
right: 10px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate3d(0px, -50%, 0);
|
||||||
|
}
|
||||||
|
.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,
|
||||||
|
.swiper-pagination-vertical.swiper-pagination-bullets
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,
|
||||||
|
.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
width: 8px;
|
||||||
|
}
|
||||||
|
.swiper-vertical
|
||||||
|
> .swiper-pagination-bullets.swiper-pagination-bullets-dynamic
|
||||||
|
.swiper-pagination-bullet,
|
||||||
|
.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
display: inline-block;
|
||||||
|
transition:
|
||||||
|
200ms transform,
|
||||||
|
200ms top;
|
||||||
|
}
|
||||||
|
.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,
|
||||||
|
.swiper-pagination-horizontal.swiper-pagination-bullets
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);
|
||||||
|
}
|
||||||
|
.swiper-horizontal
|
||||||
|
> .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,
|
||||||
|
.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.swiper-horizontal
|
||||||
|
> .swiper-pagination-bullets.swiper-pagination-bullets-dynamic
|
||||||
|
.swiper-pagination-bullet,
|
||||||
|
.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
transition:
|
||||||
|
200ms transform,
|
||||||
|
200ms left;
|
||||||
|
}
|
||||||
|
.swiper-horizontal.swiper-rtl
|
||||||
|
> .swiper-pagination-bullets-dynamic
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
transition:
|
||||||
|
200ms transform,
|
||||||
|
200ms right;
|
||||||
|
}
|
||||||
|
/* Progress */
|
||||||
|
.swiper-pagination-progressbar {
|
||||||
|
background: rgba(0, 0, 0, 0.25);
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
|
||||||
|
background: var(--swiper-pagination-color, var(--swiper-theme-color));
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
transform: scale(0);
|
||||||
|
transform-origin: left top;
|
||||||
|
}
|
||||||
|
.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
|
||||||
|
transform-origin: right top;
|
||||||
|
}
|
||||||
|
.swiper-horizontal > .swiper-pagination-progressbar,
|
||||||
|
.swiper-pagination-progressbar.swiper-pagination-horizontal,
|
||||||
|
.swiper-vertical
|
||||||
|
> .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,
|
||||||
|
.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {
|
||||||
|
width: 100%;
|
||||||
|
height: 4px;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.swiper-vertical > .swiper-pagination-progressbar,
|
||||||
|
.swiper-pagination-progressbar.swiper-pagination-vertical,
|
||||||
|
.swiper-horizontal
|
||||||
|
> .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,
|
||||||
|
.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {
|
||||||
|
width: 4px;
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.swiper-pagination-lock {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
/* Scrollbar */
|
||||||
|
.swiper-scrollbar {
|
||||||
|
border-radius: 10px;
|
||||||
|
position: relative;
|
||||||
|
-ms-touch-action: none;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.swiper-horizontal > .swiper-scrollbar {
|
||||||
|
position: absolute;
|
||||||
|
left: 1%;
|
||||||
|
bottom: 3px;
|
||||||
|
z-index: 50;
|
||||||
|
height: 5px;
|
||||||
|
width: 98%;
|
||||||
|
}
|
||||||
|
.swiper-vertical > .swiper-scrollbar {
|
||||||
|
position: absolute;
|
||||||
|
right: 3px;
|
||||||
|
top: 1%;
|
||||||
|
z-index: 50;
|
||||||
|
width: 5px;
|
||||||
|
height: 98%;
|
||||||
|
}
|
||||||
|
.swiper-scrollbar-drag {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
border-radius: 10px;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.swiper-scrollbar-cursor-drag {
|
||||||
|
cursor: move;
|
||||||
|
}
|
||||||
|
.swiper-scrollbar-lock {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.swiper-zoom-container {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.swiper-zoom-container > img,
|
||||||
|
.swiper-zoom-container > svg,
|
||||||
|
.swiper-zoom-container > canvas {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
.swiper-slide-zoomed {
|
||||||
|
cursor: move;
|
||||||
|
}
|
||||||
|
/* Preloader */
|
||||||
|
:root {
|
||||||
|
/*
|
||||||
|
--swiper-preloader-color: var(--swiper-theme-color);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.swiper-lazy-preloader {
|
||||||
|
width: 42px;
|
||||||
|
height: 42px;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
margin-left: -21px;
|
||||||
|
margin-top: -21px;
|
||||||
|
z-index: 10;
|
||||||
|
transform-origin: 50%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
|
||||||
|
border-radius: 50%;
|
||||||
|
border-top-color: transparent;
|
||||||
|
}
|
||||||
|
.swiper-slide-visible .swiper-lazy-preloader {
|
||||||
|
animation: swiper-preloader-spin 1s infinite linear;
|
||||||
|
}
|
||||||
|
.swiper-lazy-preloader-white {
|
||||||
|
--swiper-preloader-color: #fff;
|
||||||
|
}
|
||||||
|
.swiper-lazy-preloader-black {
|
||||||
|
--swiper-preloader-color: #000;
|
||||||
|
}
|
||||||
|
@keyframes swiper-preloader-spin {
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* a11y */
|
||||||
|
.swiper .swiper-notification {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: 0;
|
||||||
|
z-index: -1000;
|
||||||
|
}
|
||||||
|
.swiper-free-mode > .swiper-wrapper {
|
||||||
|
transition-timing-function: ease-out;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.swiper-grid > .swiper-wrapper {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
.swiper-grid-column > .swiper-wrapper {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.swiper-fade.swiper-free-mode .swiper-slide {
|
||||||
|
transition-timing-function: ease-out;
|
||||||
|
}
|
||||||
|
.swiper-fade .swiper-slide {
|
||||||
|
pointer-events: none;
|
||||||
|
transition-property: opacity;
|
||||||
|
}
|
||||||
|
.swiper-fade .swiper-slide .swiper-slide {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.swiper-fade .swiper-slide-active,
|
||||||
|
.swiper-fade .swiper-slide-active .swiper-slide-active {
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
.swiper-cube {
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-slide {
|
||||||
|
pointer-events: none;
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
z-index: 1;
|
||||||
|
visibility: hidden;
|
||||||
|
transform-origin: 0 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-slide .swiper-slide {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.swiper-cube.swiper-rtl .swiper-slide {
|
||||||
|
transform-origin: 100% 0;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-slide-active,
|
||||||
|
.swiper-cube .swiper-slide-active .swiper-slide-active {
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-slide-active,
|
||||||
|
.swiper-cube .swiper-slide-next,
|
||||||
|
.swiper-cube .swiper-slide-prev,
|
||||||
|
.swiper-cube .swiper-slide-next + .swiper-slide {
|
||||||
|
pointer-events: auto;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-slide-shadow-top,
|
||||||
|
.swiper-cube .swiper-slide-shadow-bottom,
|
||||||
|
.swiper-cube .swiper-slide-shadow-left,
|
||||||
|
.swiper-cube .swiper-slide-shadow-right {
|
||||||
|
z-index: 0;
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-cube-shadow {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
opacity: 0.6;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-cube-shadow:before {
|
||||||
|
content: "";
|
||||||
|
background: #000;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
filter: blur(50px);
|
||||||
|
}
|
||||||
|
.swiper-flip {
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
.swiper-flip .swiper-slide {
|
||||||
|
pointer-events: none;
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.swiper-flip .swiper-slide .swiper-slide {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.swiper-flip .swiper-slide-active,
|
||||||
|
.swiper-flip .swiper-slide-active .swiper-slide-active {
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
.swiper-flip .swiper-slide-shadow-top,
|
||||||
|
.swiper-flip .swiper-slide-shadow-bottom,
|
||||||
|
.swiper-flip .swiper-slide-shadow-left,
|
||||||
|
.swiper-flip .swiper-slide-shadow-right {
|
||||||
|
z-index: 0;
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
}
|
||||||
|
.swiper-creative .swiper-slide {
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
overflow: hidden;
|
||||||
|
transition-property: transform, opacity, height;
|
||||||
|
}
|
||||||
|
.swiper-cards {
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
.swiper-cards .swiper-slide {
|
||||||
|
transform-origin: center bottom;
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
11852
assets/plugins/swiper/swiper-bundle.js
Normal file
11852
assets/plugins/swiper/swiper-bundle.js
Normal file
File diff suppressed because it is too large
Load diff
59
assets/scss/base.scss
Executable file
59
assets/scss/base.scss
Executable file
|
@ -0,0 +1,59 @@
|
||||||
|
html {
|
||||||
|
@apply text-base-sm md:text-base;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
@apply bg-body font-primary font-normal leading-relaxed text-text;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
@apply font-secondary font-bold leading-tight text-dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
.h1 {
|
||||||
|
@apply text-h1-sm md:text-h1;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2,
|
||||||
|
.h2 {
|
||||||
|
@apply text-h2-sm md:text-h2;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3,
|
||||||
|
.h3 {
|
||||||
|
@apply text-h3-sm md:text-h3;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4,
|
||||||
|
.h4 {
|
||||||
|
@apply text-h4;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5,
|
||||||
|
.h5 {
|
||||||
|
@apply text-h5;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6,
|
||||||
|
.h6 {
|
||||||
|
@apply text-h6;
|
||||||
|
}
|
||||||
|
|
||||||
|
b,
|
||||||
|
strong {
|
||||||
|
@apply font-semibold;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
@apply after:border-none;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote > p {
|
||||||
|
@apply my-0 #{!important};
|
||||||
|
}
|
15
assets/scss/buttons.scss
Executable file
15
assets/scss/buttons.scss
Executable file
|
@ -0,0 +1,15 @@
|
||||||
|
.btn {
|
||||||
|
@apply inline-block rounded border border-transparent px-5 py-2 font-semibold capitalize transition;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sm {
|
||||||
|
@apply rounded-sm px-4 py-1.5 text-sm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-primary {
|
||||||
|
@apply border-primary bg-primary text-white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-outline-primary {
|
||||||
|
@apply border-dark text-dark hover:bg-dark bg-transparent hover:text-white;
|
||||||
|
}
|
74
assets/scss/components.scss
Executable file
74
assets/scss/components.scss
Executable file
|
@ -0,0 +1,74 @@
|
||||||
|
main {
|
||||||
|
min-height: 70vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
// section style
|
||||||
|
.section {
|
||||||
|
@apply py-24 xl:py-28;
|
||||||
|
&-sm {
|
||||||
|
@apply py-16 xl:py-20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// container
|
||||||
|
.container {
|
||||||
|
@apply mx-auto px-4 2xl:max-w-[1320px];
|
||||||
|
}
|
||||||
|
|
||||||
|
// form style
|
||||||
|
.form-input {
|
||||||
|
@apply bg-theme-light text-dark placeholder:text-light focus:border-primary w-full rounded border-transparent px-6 py-4 focus:ring-transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-label {
|
||||||
|
@apply font-secondary text-dark mb-4 block text-xl font-normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
// social icons
|
||||||
|
.social-icons {
|
||||||
|
@apply space-x-4;
|
||||||
|
li {
|
||||||
|
@apply inline-block;
|
||||||
|
a {
|
||||||
|
@apply bg-primary flex h-9 w-9 items-center justify-center rounded text-center leading-9 text-white;
|
||||||
|
svg {
|
||||||
|
@apply h-5 w-5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// swiper pagination
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
@apply bg-theme-light h-2.5 w-2.5 opacity-100 mx-1.5 #{!important};
|
||||||
|
|
||||||
|
&-active {
|
||||||
|
@apply bg-primary h-4 w-4 #{!important};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// content style
|
||||||
|
.content {
|
||||||
|
@apply prose max-w-none;
|
||||||
|
@apply prose-headings:mb-[.3em] prose-headings:mt-[.6em] prose-headings:text-dark;
|
||||||
|
@apply prose-h1:text-h1-sm md:prose-h1:text-h1;
|
||||||
|
@apply prose-h2:text-h2-sm md:prose-h2:text-h2;
|
||||||
|
@apply prose-h3:text-h3-sm md:prose-h3:text-h3;
|
||||||
|
@apply prose-img:max-w-full prose-img:rounded;
|
||||||
|
@apply prose-hr:border-border;
|
||||||
|
@apply prose-p:text-base prose-p:text-text;
|
||||||
|
@apply prose-blockquote:rounded-lg prose-blockquote:border prose-blockquote:border-l-[10px] prose-blockquote:border-primary prose-blockquote:bg-theme-light prose-blockquote:px-8 prose-blockquote:py-10 prose-blockquote:font-secondary prose-blockquote:text-2xl prose-blockquote:not-italic prose-blockquote:text-dark;
|
||||||
|
@apply prose-pre:rounded-lg prose-pre:bg-theme-light;
|
||||||
|
@apply prose-code:px-1;
|
||||||
|
@apply prose-strong:text-dark;
|
||||||
|
@apply prose-a:text-text prose-a:underline hover:prose-a:text-primary;
|
||||||
|
@apply prose-li:text-text;
|
||||||
|
@apply prose-table:relative prose-table:overflow-hidden prose-table:rounded-lg prose-table:before:absolute prose-table:before:left-0 prose-table:before:top-0 prose-table:before:h-full prose-table:before:w-full prose-table:before:rounded-[inherit] prose-table:before:border prose-table:before:content-[""];
|
||||||
|
@apply prose-thead:border-border prose-thead:bg-theme-light;
|
||||||
|
@apply prose-th:relative prose-th:z-10 prose-th:px-4 prose-th:py-[18px] prose-th:text-dark;
|
||||||
|
@apply prose-tr:border-border;
|
||||||
|
@apply prose-td:relative prose-td:z-10 prose-td:px-3 prose-td:py-[18px];
|
||||||
|
.btn {
|
||||||
|
@apply no-underline hover:text-white #{!important};
|
||||||
|
}
|
||||||
|
}
|
30
assets/scss/main.scss
Executable file
30
assets/scss/main.scss
Executable file
|
@ -0,0 +1,30 @@
|
||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
||||||
|
|
||||||
|
@layer base {
|
||||||
|
@import "base";
|
||||||
|
}
|
||||||
|
|
||||||
|
@layer components {
|
||||||
|
@import "components";
|
||||||
|
@import "navigation";
|
||||||
|
@import "buttons";
|
||||||
|
}
|
||||||
|
|
||||||
|
@layer utilities {
|
||||||
|
@import "utilities";
|
||||||
|
}
|
||||||
|
|
||||||
|
@import "search";
|
||||||
|
@import "social-share";
|
||||||
|
@import "gallery-slider";
|
||||||
|
@import "images";
|
||||||
|
@import "toc";
|
||||||
|
@import "tab";
|
||||||
|
@import "accordion";
|
||||||
|
@import "modal";
|
||||||
|
@import "notice";
|
||||||
|
|
||||||
|
@import "module-overrides";
|
||||||
|
@import "custom";
|
57
assets/scss/module-overrides.scss
Normal file
57
assets/scss/module-overrides.scss
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
// table of contents
|
||||||
|
.table-of-content {
|
||||||
|
@apply overflow-hidden rounded;
|
||||||
|
}
|
||||||
|
|
||||||
|
// share icons
|
||||||
|
.share-icons {
|
||||||
|
.share-link {
|
||||||
|
@apply h-9 w-9 rounded leading-9;
|
||||||
|
@apply bg-primary hover:bg-primary;
|
||||||
|
}
|
||||||
|
.share-icon svg {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// notice
|
||||||
|
.notice {
|
||||||
|
@apply rounded-lg;
|
||||||
|
}
|
||||||
|
|
||||||
|
// tab
|
||||||
|
.tab {
|
||||||
|
@apply border-border overflow-hidden rounded-lg border;
|
||||||
|
&-nav {
|
||||||
|
@apply border-border bg-theme-light pl-4;
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
@apply text-dark px-8 text-lg #{!important};
|
||||||
|
&.active {
|
||||||
|
@apply border-dark;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-content {
|
||||||
|
&-panel {
|
||||||
|
@apply px-4 pt-0 #{!important};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// accordion
|
||||||
|
.accordion {
|
||||||
|
@apply border-border bg-theme-light mb-6 overflow-hidden rounded-lg border;
|
||||||
|
&-header {
|
||||||
|
@apply text-dark;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// cookie consent
|
||||||
|
.cookie-box {
|
||||||
|
@apply rounded-lg #{!important};
|
||||||
|
}
|
||||||
|
|
||||||
|
// slider
|
||||||
|
.gallery-slider {
|
||||||
|
@apply ml-0 #{!important};
|
||||||
|
}
|
87
assets/scss/navigation.scss
Executable file
87
assets/scss/navigation.scss
Executable file
|
@ -0,0 +1,87 @@
|
||||||
|
// navbar toggler
|
||||||
|
input#nav-toggle:checked + label #show-button {
|
||||||
|
@apply hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
input#nav-toggle:checked + label #hide-button {
|
||||||
|
@apply block;
|
||||||
|
}
|
||||||
|
|
||||||
|
input#nav-toggle:checked ~ #nav-menu {
|
||||||
|
@apply block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
@apply bg-body py-6;
|
||||||
|
}
|
||||||
|
|
||||||
|
// navbar items
|
||||||
|
.navbar {
|
||||||
|
@apply relative flex flex-wrap items-center justify-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-brand {
|
||||||
|
@apply text-dark text-xl font-semibold;
|
||||||
|
image {
|
||||||
|
@apply max-h-full max-w-full;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-nav {
|
||||||
|
@apply text-center lg:text-left;
|
||||||
|
}
|
||||||
|
|
||||||
|
// .nav-item {
|
||||||
|
// @apply mx-3;
|
||||||
|
// }
|
||||||
|
|
||||||
|
.nav-link {
|
||||||
|
@apply text-dark hover:text-primary block p-3 cursor-pointer font-semibold transition lg:px-2 lg:py-3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-dropdown {
|
||||||
|
@apply mr-0;
|
||||||
|
& > svg {
|
||||||
|
@apply pointer-events-none;
|
||||||
|
}
|
||||||
|
&.active {
|
||||||
|
.nav-dropdown-list {
|
||||||
|
@apply block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-dropdown-list {
|
||||||
|
@apply bg-body z-10 min-w-[180px] rounded p-4 shadow hidden lg:invisible lg:absolute lg:block lg:opacity-0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-dropdown-item {
|
||||||
|
@apply [&:not(:last-child)]:mb-2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-dropdown-link {
|
||||||
|
@apply text-dark hover:text-primary block py-1 font-semibold transition;
|
||||||
|
}
|
||||||
|
|
||||||
|
//theme-switcher
|
||||||
|
.theme-switcher {
|
||||||
|
@apply inline-flex;
|
||||||
|
|
||||||
|
label {
|
||||||
|
@apply bg-border relative inline-block h-4 w-6 cursor-pointer rounded-2xl lg:w-10;
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
@apply absolute opacity-0;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
@apply bg-dark absolute -top-1 left-0 flex h-6 w-6 items-center justify-center rounded-full transition-all duration-300;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:checked + label {
|
||||||
|
span {
|
||||||
|
@apply lg:left-4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
20
assets/scss/utilities.scss
Executable file
20
assets/scss/utilities.scss
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
.bg-gradient {
|
||||||
|
@apply bg-gradient-to-b from-[rgba(249,249,249,1)] from-[0.53%] to-white to-[83.28%];
|
||||||
|
}
|
||||||
|
|
||||||
|
.rounded-sm {
|
||||||
|
@apply rounded-[4px];
|
||||||
|
}
|
||||||
|
.rounded {
|
||||||
|
@apply rounded-[6px];
|
||||||
|
}
|
||||||
|
.rounded-lg {
|
||||||
|
@apply rounded-[12px];
|
||||||
|
}
|
||||||
|
.rounded-xl {
|
||||||
|
@apply rounded-[16px];
|
||||||
|
}
|
||||||
|
|
||||||
|
.shadow {
|
||||||
|
box-shadow: 0px 4px 40px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
|
@ -8,4 +8,4 @@ description: "The organisations behind the Fediversity Project"
|
||||||
draft: false
|
draft: false
|
||||||
---
|
---
|
||||||
|
|
||||||
Information about the project. TODO.
|
Information about the project. TODO.
|
||||||
|
|
|
@ -14,4 +14,4 @@ As part of the NGI Funding, the Fediversity Project also offers grants to develo
|
||||||
|
|
||||||
If you are a developer of fediverse software, and would like to get your platform also offered for easy hosting as part of the Fediversity Project, please reach out to us. You can contact us HERE.
|
If you are a developer of fediverse software, and would like to get your platform also offered for easy hosting as part of the Fediversity Project, please reach out to us. You can contact us HERE.
|
||||||
|
|
||||||
As the project is based upon NixOS, we are actively supporting making fediverse projects available as nix packages. If your project is on the fence about this, please reach out. Nix packages make updating and maintaining fediverse projects a breeze!
|
As the project is based upon NixOS, we are actively supporting making fediverse projects available as nix packages. If your project is on the fence about this, please reach out. Nix packages make updating and maintaining fediverse projects a breeze!
|
||||||
|
|
|
@ -8,6 +8,6 @@ description: "Information about the Fediversity Project for the grant providers.
|
||||||
draft: false
|
draft: false
|
||||||
---
|
---
|
||||||
|
|
||||||
The Fediversity project implements the visions outlined by the Next Generation Internet (NGI) initiative for an open internet in several ways. Most importantly, it helps with decentralisation of the internet, a core principle of the NGI, by making it easier for people to participate in the Open Social Web on their own terms. NGI's goal of empowering individuals in the digital sphere is helped by making it easy for them to set up their own servers and platforms. While a variety of Fediverse software exist, there are still barriers of entry for people. In order for people to be truly empowered, joining the fediverse needs to be as weasy as possible. Additionally, the Fediverse emphasises interoperability and openness, which are key concerns addressed by the NGI.
|
The Fediversity project implements the visions outlined by the Next Generation Internet (NGI) initiative for an open internet in several ways. Most importantly, it helps with decentralisation of the internet, a core principle of the NGI, by making it easier for people to participate in the Open Social Web on their own terms. NGI's goal of empowering individuals in the digital sphere is helped by making it easy for them to set up their own servers and platforms. While a variety of Fediverse software exist, there are still barriers of entry for people. In order for people to be truly empowered, joining the fediverse needs to be as weasy as possible. Additionally, the Fediverse emphasises interoperability and openness, which are key concerns addressed by the NGI.
|
||||||
|
|
||||||
Part of the values of openness and transparency of is that the Fediversity project is that all the deliverables of the projects are have a 'Public' Dissemination level. On this page an overview of all deliverables of the Fediversity project can be found.
|
Part of the values of openness and transparency of is that the Fediversity project is that all the deliverables of the projects are have a 'Public' Dissemination level. On this page an overview of all deliverables of the Fediversity project can be found.
|
||||||
|
|
|
@ -14,4 +14,4 @@ One such “complex” deployment scenario is running state-of-the-art services
|
||||||
|
|
||||||
Fediversity is a pilot funded by the European Commission, building on many projects funding through the Next Generation Internet initiative. The results of the project should greatly simplify the creation and delivery of robust and secure services, on the web and beyond.
|
Fediversity is a pilot funded by the European Commission, building on many projects funding through the Next Generation Internet initiative. The results of the project should greatly simplify the creation and delivery of robust and secure services, on the web and beyond.
|
||||||
|
|
||||||
Fediversity will deliver an ambitious development effort, but this is a vast domain with many more challenges than what any preconceived effort could tackle by itself. This is why we invite your contribution to help us reshape the state of play, and together create an open, trustworthy and reliable internet for all.
|
Fediversity will deliver an ambitious development effort, but this is a vast domain with many more challenges than what any preconceived effort could tackle by itself. This is why we invite your contribution to help us reshape the state of play, and together create an open, trustworthy and reliable internet for all.
|
||||||
|
|
|
@ -14,4 +14,4 @@ This is your opportunity to make a real difference. You tell us how your project
|
||||||
|
|
||||||
Noteworthy fact: many projects which are to be deployed inside Fediversity were themselves bootstrapped on precisely such a grant from NGI, and now it is your turn.
|
Noteworthy fact: many projects which are to be deployed inside Fediversity were themselves bootstrapped on precisely such a grant from NGI, and now it is your turn.
|
||||||
|
|
||||||
For more information on how to apply, check the NLnet website.
|
For more information on how to apply, check the NLnet website.
|
||||||
|
|
|
@ -9,9 +9,10 @@ draft: false
|
||||||
---
|
---
|
||||||
|
|
||||||
The fediverse shows great potential in fundamentally rethinking how we approach the internet. It is a new way of thinking about how the internet can be a social web, and solves for the problems that the current Big Tech platforms have, while at the same time enabling a new wave of innovation and new ideas on the social web.
|
The fediverse shows great potential in fundamentally rethinking how we approach the internet. It is a new way of thinking about how the internet can be a social web, and solves for the problems that the current Big Tech platforms have, while at the same time enabling a new wave of innovation and new ideas on the social web.
|
||||||
|
|
||||||
- Giving people control of their data and social connections, allowing them to choose whatever platform and product they want.
|
- Giving people control of their data and social connections, allowing them to choose whatever platform and product they want.
|
||||||
- Giving people control of their privacy and their feeds, without black-box algorithms that decide for them what they get to see.
|
- Giving people control of their privacy and their feeds, without black-box algorithms that decide for them what they get to see.
|
||||||
|
|
||||||
The Fediversity project is working on making it easier for people to join the fediverse, and taking full control on their own online social presence. We make it easier for you to join the fediverse, giving you an easy way to select what you need. With one click, you can select whether you need photo sharing, microblogging, video sharing, blogging or simply email. You can get a domain name as well, so you can be up and running with a professional social presence on the new internet in without any effort.
|
The Fediversity project is working on making it easier for people to join the fediverse, and taking full control on their own online social presence. We make it easier for you to join the fediverse, giving you an easy way to select what you need. With one click, you can select whether you need photo sharing, microblogging, video sharing, blogging or simply email. You can get a domain name as well, so you can be up and running with a professional social presence on the new internet in without any effort.
|
||||||
|
|
||||||
Fediversity is currently in development, and you can follow us on Mastodon for all the latest information.
|
Fediversity is currently in development, and you can follow us on Mastodon for all the latest information.
|
||||||
|
|
|
@ -10,4 +10,4 @@ draft: false
|
||||||
|
|
||||||
The NLnet Foundation supports organisations and people who contribute to an open internet for all. NLnet funds projects that help fix the internet through open hardware, open software, open standards, open science and open data. After its historical contribution to the early internet in Europe in the 1980’s, NLnet has been financially supporting the open internet since 1997.
|
The NLnet Foundation supports organisations and people who contribute to an open internet for all. NLnet funds projects that help fix the internet through open hardware, open software, open standards, open science and open data. After its historical contribution to the early internet in Europe in the 1980’s, NLnet has been financially supporting the open internet since 1997.
|
||||||
|
|
||||||
NLnet provides grants to free and open source projects between 5.000 and 50.000 euro with the possibility to scale up. Funding is open to anyone: organisations of any type and individuals. Within NGI Fediversity, NLnet facilitates the open calls for third-party funding and contributes to outreach and dissemination.
|
NLnet provides grants to free and open source projects between 5.000 and 50.000 euro with the possibility to scale up. Funding is open to anyone: organisations of any type and individuals. Within NGI Fediversity, NLnet facilitates the open calls for third-party funding and contributes to outreach and dissemination.
|
||||||
|
|
|
@ -10,4 +10,4 @@ draft: false
|
||||||
|
|
||||||
NORDUnet is a collaboration of the National Research and Education Networks of the Nordic countries connecting universities and research institutions across Denmark, Finland, Iceland, Norway, and Sweden. It enables collaboration, data sharing, and access to online resources for academic and research purposes.
|
NORDUnet is a collaboration of the National Research and Education Networks of the Nordic countries connecting universities and research institutions across Denmark, Finland, Iceland, Norway, and Sweden. It enables collaboration, data sharing, and access to online resources for academic and research purposes.
|
||||||
|
|
||||||
Fun fact: the website of NORDUnet, nordu.net is the oldest still active domain on the internet.
|
Fun fact: the website of NORDUnet, nordu.net is the oldest still active domain on the internet.
|
||||||
|
|
|
@ -17,4 +17,4 @@ Building sustainably. The OID Foundation believes that the internet is crucial i
|
||||||
Transparancy. The OID Foundation takes the commitment to openness seriously, and strives to use open software in all aspects.
|
Transparancy. The OID Foundation takes the commitment to openness seriously, and strives to use open software in all aspects.
|
||||||
In order to realise our vision, we need a healthy, functional and open internet. This is where OID comes in, working on the infrastructure that powers the internet in a way that promotes it’s values.
|
In order to realise our vision, we need a healthy, functional and open internet. This is where OID comes in, working on the infrastructure that powers the internet in a way that promotes it’s values.
|
||||||
|
|
||||||
OID Foundation is rooted in constructive optimism, believing in tackling challenges head-on with a positive outlook, viewing each obstacle as an opportunity for improvement. As a practical example of the long-term vision is the work on NixOS that the OID is doing, where the reproducibility and long-term maintainability of NixOS’s package management help with an open and sustainable internet.
|
OID Foundation is rooted in constructive optimism, believing in tackling challenges head-on with a positive outlook, viewing each obstacle as an opportunity for improvement. As a practical example of the long-term vision is the work on NixOS that the OID is doing, where the reproducibility and long-term maintainability of NixOS’s package management help with an open and sustainable internet.
|
||||||
|
|
|
@ -8,4 +8,4 @@ description: "The Tweag organisation."
|
||||||
draft: false
|
draft: false
|
||||||
---
|
---
|
||||||
|
|
||||||
Tweag is the open source program office (OSPO) of Modus Create, a global digital consulting firm that helps enterprises build competitive advantage through digital innovation. Tweagers are leading contributors to several open source projects — from functional programming languages to cross-platform frameworks. Tweag has extensive experience working with Nix, and many people at the forefront of the Nix community are Tweagers.
|
Tweag is the open source program office (OSPO) of Modus Create, a global digital consulting firm that helps enterprises build competitive advantage through digital innovation. Tweagers are leading contributors to several open source projects — from functional programming languages to cross-platform frameworks. Tweag has extensive experience working with Nix, and many people at the forefront of the Nix community are Tweagers.
|
||||||
|
|
|
@ -93,23 +93,6 @@
|
||||||
"container",
|
"container",
|
||||||
"content",
|
"content",
|
||||||
"cursor-pointer",
|
"cursor-pointer",
|
||||||
"dark:bg-darkmode-body",
|
|
||||||
"dark:bg-darkmode-primary",
|
|
||||||
"dark:bg-darkmode-theme-light",
|
|
||||||
"dark:border-darkmode-border",
|
|
||||||
"dark:from-darkmode-body",
|
|
||||||
"dark:hover:bg-darkmode-primary",
|
|
||||||
"dark:hover:bg-darkmode-theme-light",
|
|
||||||
"dark:hover:text-dark",
|
|
||||||
"dark:hover:text-darkmode-primary",
|
|
||||||
"dark:opacity-0",
|
|
||||||
"dark:opacity-100",
|
|
||||||
"dark:text-dark",
|
|
||||||
"dark:text-darkmode-dark",
|
|
||||||
"dark:text-darkmode-light",
|
|
||||||
"dark:text-darkmode-primary",
|
|
||||||
"dark:text-white",
|
|
||||||
"dark:to-darkmode-theme-light",
|
|
||||||
"dsq-brlink",
|
"dsq-brlink",
|
||||||
"fa",
|
"fa",
|
||||||
"fa-arrow-right",
|
"fa-arrow-right",
|
||||||
|
|
21
layouts/404.html
Executable file
21
layouts/404.html
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
<section class="section-sm text-center">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-center">
|
||||||
|
<div class="sm:col-10 md:col-8 lg:col-6">
|
||||||
|
<span class="text-[8rem] block font-bold text-dark"> 404 </span>
|
||||||
|
<h1 class="h2 mb-4">Page not found</h1>
|
||||||
|
<div class="content">
|
||||||
|
<p>
|
||||||
|
The page you are looking for might have been removed, had its name
|
||||||
|
changed, or is temporarily unavailable.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<a href="{{ site.BaseURL | relLangURL }}" class="btn btn-primary mt-8">
|
||||||
|
Back to home
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
39
layouts/_default/baseof.html
Executable file
39
layouts/_default/baseof.html
Executable file
|
@ -0,0 +1,39 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html
|
||||||
|
itemscope
|
||||||
|
class="{{- if not site.Params.theme_switcher -}}
|
||||||
|
{{- site.Params.theme_default -}}
|
||||||
|
{{- end -}}"
|
||||||
|
lang="{{ site.LanguageCode | default `en-US` }}"
|
||||||
|
itemtype="http://schema.org/WebPage"
|
||||||
|
>
|
||||||
|
<head>
|
||||||
|
<!-- head (don't cache it) -->
|
||||||
|
{{ partial "essentials/head.html" . }}
|
||||||
|
|
||||||
|
<!-- style (always cache it) -->
|
||||||
|
{{ partialCached "essentials/style.html" . }}
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- cache partial only in production -->
|
||||||
|
{{ if hugo.IsProduction }} {{ partialCached "preloader.html" . }} {{
|
||||||
|
partialCached "gtm-noscript.html" . }} {{ else }} {{ partial
|
||||||
|
"preloader.html" . }}
|
||||||
|
|
||||||
|
<!-- tailwind size indicator -->
|
||||||
|
{{ partial "components/tw-size-indicator.html" . }} {{ end }}
|
||||||
|
|
||||||
|
<!-- header (don't cache it) -->
|
||||||
|
{{ partial "essentials/header.html" . }} {{ partial "search-modal.html"
|
||||||
|
(dict "Context" . ) }}
|
||||||
|
|
||||||
|
<main>{{ block "main" . }}{{ end }}</main>
|
||||||
|
|
||||||
|
<!-- footer -->
|
||||||
|
{{ partial "essentials/footer.html" . }}
|
||||||
|
|
||||||
|
<!-- script (always cache it) -->
|
||||||
|
{{ partialCached "essentials/script.html" . }}
|
||||||
|
</body>
|
||||||
|
</html>
|
16
layouts/_default/list.html
Executable file
16
layouts/_default/list.html
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<div class="container">
|
||||||
|
<ul class="text-center">
|
||||||
|
{{ range .RegularPages }}
|
||||||
|
<li class="m-3">
|
||||||
|
<a href="{{ .Permalink }}" class="text-dark block text-xl">
|
||||||
|
{{ .Title }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
12
layouts/_default/single.html
Executable file
12
layouts/_default/single.html
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
|
|
||||||
|
<section class="section-sm">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-center">
|
||||||
|
<div class="lg:col-10">
|
||||||
|
<div class="content">{{ .Content }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
19
layouts/_default/taxonomy.html
Executable file
19
layouts/_default/taxonomy.html
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row gx-5">
|
||||||
|
<!-- blog posts -->
|
||||||
|
<div class="lg:col-8">
|
||||||
|
<div class="row">
|
||||||
|
{{ range .Data.Pages }}
|
||||||
|
<div class="md:col-6 mb-14">
|
||||||
|
{{ partial "components/blog-card" . }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
32
layouts/_default/terms.html
Executable file
32
layouts/_default/terms.html
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<div class="container">
|
||||||
|
<ul class="text-center">
|
||||||
|
{{/* categories */}} {{ if eq .Permalink (`categories/` | absLangURL) }}
|
||||||
|
{{ range site.Taxonomies.categories.ByCount }}
|
||||||
|
<li class="m-3 inline-block">
|
||||||
|
<a
|
||||||
|
href="{{ .Page.Permalink }}"
|
||||||
|
class="bg-theme-light text-dark block rounded px-4 py-2 text-xl"
|
||||||
|
>
|
||||||
|
{{ .Page.Title }}
|
||||||
|
<span class="bg-body ml-2 rounded px-2"> {{ .Count }} </span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }} {{ end }} {{/* tags */}} {{ if eq .Permalink (`tags/` |
|
||||||
|
absLangURL) }} {{ range site.Taxonomies.tags.ByCount }}
|
||||||
|
<li class="m-3 inline-block">
|
||||||
|
<a
|
||||||
|
href="{{ .Page.Permalink }}"
|
||||||
|
class="bg-theme-light text-dark block rounded px-4 py-2 text-xl"
|
||||||
|
>
|
||||||
|
{{ .Page.Title }}
|
||||||
|
<span class="bg-body ml-2 rounded px-2"> {{ .Count }} </span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }} {{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
14
layouts/about/list.html
Normal file
14
layouts/about/list.html
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
<section class="section-sm">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-center">
|
||||||
|
<div class="md:col-10 lg:col-7 text-center">
|
||||||
|
{{ partial "image" (dict "Src" .Params.image "Alt" .Title "Class"
|
||||||
|
"mx-auto mb-6" "Size" "200x200") }}
|
||||||
|
<h2 class="h3 mb-6">{{ .Title }}</h2>
|
||||||
|
<div class="content">{{ .Content }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
14
layouts/authors/list.html
Normal file
14
layouts/authors/list.html
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
{{ range .RegularPages }}
|
||||||
|
<div class="md:col-6 lg:col-4 mb-14">
|
||||||
|
{{ partial "components/author-card" . }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
46
layouts/authors/single.html
Executable file
46
layouts/authors/single.html
Executable file
|
@ -0,0 +1,46 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
<section class="section-sm pb-0">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row border-border justify-center border-b pb-14">
|
||||||
|
<div class="lg:col-4 text-center">
|
||||||
|
{{ $image:= .Params.image }} {{ if $image }} {{ partial "image" (dict
|
||||||
|
"Src" $image "Alt" .Title "Class" "mx-auto" "Size" "200x200") }} {{ else
|
||||||
|
if .Params.Email }}
|
||||||
|
<img
|
||||||
|
class="mx-auto"
|
||||||
|
alt="{{ .Title }}"
|
||||||
|
height="200"
|
||||||
|
width="200"
|
||||||
|
src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=128&pg&d=identicon"
|
||||||
|
/>
|
||||||
|
{{ end }}
|
||||||
|
<h1 class="h3 mt-10">{{ .Title }}</h1>
|
||||||
|
<div class="content mt-6">{{ .Content }}</div>
|
||||||
|
<ul class="social-icons ml-4 mt-10 text-center">
|
||||||
|
{{ range .Params.social }}
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
href="{{ .link | safeURL }}"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener nofollow"
|
||||||
|
>
|
||||||
|
<span class="sr-only">{{ .title }}</span>
|
||||||
|
<i class="{{ .icon }}"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row pb-16 pt-14">
|
||||||
|
{{ $filterByAuthor := where site.RegularPages "Params.author" "==" .Title
|
||||||
|
}} {{ range $filterByAuthor }}
|
||||||
|
<div class="md:col-6 lg:col-4 mb-12">
|
||||||
|
{{ partial "components/blog-card" . }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
27
layouts/blog/list.html
Normal file
27
layouts/blog/list.html
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row gx-5">
|
||||||
|
<!-- blog posts -->
|
||||||
|
<div class="lg:col-8">
|
||||||
|
<div class="row">
|
||||||
|
{{ $paginator:= .Paginate .RegularPages }} {{ range $paginator.Pages
|
||||||
|
}}
|
||||||
|
<div class="md:col-6 mb-14">
|
||||||
|
{{ partial "components/blog-card" . }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{ partial "components/pagination.html" . }}
|
||||||
|
</div>
|
||||||
|
<!-- sidebar -->
|
||||||
|
<div class="lg:col-4">
|
||||||
|
<!-- widget -->
|
||||||
|
{{ $widget:= site.Params.widgets.sidebar }} {{ partialCached
|
||||||
|
"widgets/widget-wrapper" ( dict "Widgets" $widget "Scope" . ) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
86
layouts/blog/single.html
Normal file
86
layouts/blog/single.html
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
<section class="section pt-7">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-center">
|
||||||
|
<article class="lg:col-10">
|
||||||
|
{{ $image:= .Params.image }} {{ if $image }}
|
||||||
|
<div class="mb-10">
|
||||||
|
{{ partial "image" (dict "Src" $image "Alt" .Title "Class" "w-full rounded") }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
<h1 class="h2 mb-4">{{ .Title }}</h1>
|
||||||
|
<ul class="mb-4">
|
||||||
|
<li class="mr-4 inline-block">
|
||||||
|
<a
|
||||||
|
href="{{ `authors/` | relLangURL }}{{ .Params.Author | urlize }}/"
|
||||||
|
>
|
||||||
|
<i class="fa-regular fa-circle-user mr-2"></i>{{ .Params.author }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ $categories:= .Params.categories }} {{ if $categories }}
|
||||||
|
<li class="mr-4 inline-block">
|
||||||
|
<i class="fa-regular fa-folder mr-2"></i>
|
||||||
|
{{ range $i,$p:= $categories }}
|
||||||
|
<a
|
||||||
|
href="{{ `categories/` | relLangURL }}{{ . | urlize | lower }}/"
|
||||||
|
class=""
|
||||||
|
>{{ . | humanize }}{{ if ne $i (sub (len $categories) 1) }} {{ ","
|
||||||
|
}} {{ end }}
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
<li class="mr-4 inline-block">
|
||||||
|
<i class="fa-regular fa-clock mr-2"></i>
|
||||||
|
{{ time.Format ":date_long" .PublishDate }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="content mb-10">{{ .Content }}</div>
|
||||||
|
<div class="row items-start justify-between">
|
||||||
|
{{ $tags:= .Params.tags }} {{ if $tags }}
|
||||||
|
<div class="lg:col-5 mb-10 flex items-center lg:mb-0">
|
||||||
|
<h5 class="mr-3">{{ i18n "tags" }} :</h5>
|
||||||
|
<ul>
|
||||||
|
{{ range $i,$p:= $tags }}
|
||||||
|
<li class="inline-block">
|
||||||
|
<a
|
||||||
|
class="bg-theme-light hover:bg-primary m-1 block rounded px-3 py-1 hover:text-white"
|
||||||
|
href="{{ `tags/` | relLangURL }}{{ . | urlize | lower }}/"
|
||||||
|
>
|
||||||
|
{{ . | humanize }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
<div class="lg:col-4 flex items-center">
|
||||||
|
{{ partial "social-share" (dict "Context" . "Class" "share-icons"
|
||||||
|
"Title" (i18n "share") "Whatsapp" false "Telegram" false "Linkedin"
|
||||||
|
false "Pinterest" false "Tumblr" false "Vk" false) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- comments -->
|
||||||
|
{{ if site.Config.Services.Disqus.Shortname }}
|
||||||
|
<div class="mt-20">{{ template "_internal/disqus.html" . }}</div>
|
||||||
|
{{ end }}
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Related posts -->
|
||||||
|
{{ $related := (where site.RegularPages "Section" "in"
|
||||||
|
site.Params.mainSections) | intersect (where site.RegularPages ".Title" "!="
|
||||||
|
.Title) | union (site.RegularPages.Related . ) }} {{ $related = $related |
|
||||||
|
shuffle | first 3 }} {{ with $related }}
|
||||||
|
<div class="section pb-0">
|
||||||
|
<h2 class="h3 mb-12">{{ i18n "related_posts" }}</h2>
|
||||||
|
<div class="row">
|
||||||
|
{{ range . }}
|
||||||
|
<div class="lg:col-4">{{ partial "components/blog-card" . }}</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
114
layouts/contact/list.html
Executable file
114
layouts/contact/list.html
Executable file
|
@ -0,0 +1,114 @@
|
||||||
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
|
|
||||||
|
<section class="section-sm">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="md:col-10 lg:col-6 mx-auto">
|
||||||
|
<form action="{{ site.Params.contact_form_action }}" method="POST">
|
||||||
|
<div class="mb-6">
|
||||||
|
<label for="name" class="form-label">
|
||||||
|
Full Name <span class="text-red-500">*</span>
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
id="name"
|
||||||
|
name="name"
|
||||||
|
class="form-input"
|
||||||
|
placeholder="John Doe"
|
||||||
|
type="text"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="mb-6">
|
||||||
|
<label for="email" class="form-label">
|
||||||
|
Working Mail <span class="text-red-500">*</span>
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
id="email"
|
||||||
|
name="email"
|
||||||
|
class="form-input"
|
||||||
|
placeholder="john.doe@email.com"
|
||||||
|
type="email"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="mb-6">
|
||||||
|
<label for="message" class="form-label">
|
||||||
|
Anything else? <span class="text-red-500">*</span>
|
||||||
|
</label>
|
||||||
|
<textarea
|
||||||
|
id="message"
|
||||||
|
name="message"
|
||||||
|
class="form-input"
|
||||||
|
placeholder="Message goes here..."
|
||||||
|
rows="8"
|
||||||
|
></textarea>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn-primary">Submit</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- google map -->
|
||||||
|
{{ with site.Params.google_map }} {{ if .enable }}
|
||||||
|
<div
|
||||||
|
id="map"
|
||||||
|
style="height: 400px"
|
||||||
|
data-latitude="{{ .map_latitude }}"
|
||||||
|
data-longitude="{{ .map_longitude }}"
|
||||||
|
data-marker="{{ .map_marker | relURL }}"
|
||||||
|
data-marker-name="{{ site.Title }}"
|
||||||
|
></div>
|
||||||
|
{{ end }} {{ end }} {{ with site.Params.subscription }} {{ if .enable }}
|
||||||
|
<!-- subscription form -->
|
||||||
|
<form
|
||||||
|
action="{{ .mailchimp_form_action | safeURL }}"
|
||||||
|
method="post"
|
||||||
|
id="mc-embedded-subscribe-form"
|
||||||
|
novalidate="novalidate"
|
||||||
|
>
|
||||||
|
<div class="input-group w-75 mx-auto mb-3">
|
||||||
|
<input
|
||||||
|
type="email"
|
||||||
|
name="EMAIL"
|
||||||
|
placeholder="Email"
|
||||||
|
class="form-control required email mce_inline_error"
|
||||||
|
id="mce-EMAIL"
|
||||||
|
aria-required="true"
|
||||||
|
autocomplete="off"
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
<button
|
||||||
|
class="input-group-text"
|
||||||
|
name="subscribe"
|
||||||
|
id="mc-embedded-subscribe"
|
||||||
|
>
|
||||||
|
{{ .button_label }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="EMAILTYPE" id="mce-EMAILTYPE-0" value="html" />
|
||||||
|
<div style="position: absolute; left: -5000px" aria-hidden="true">
|
||||||
|
<input type="text" name="{{ .name }}" tabindex="-1" />
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<div id="mce-responses" class="clear">
|
||||||
|
<div
|
||||||
|
class="response text-white"
|
||||||
|
id="mce-error-response"
|
||||||
|
style="display: none"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
class="response text-white"
|
||||||
|
id="mce-success-response"
|
||||||
|
style="display: none"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
<script
|
||||||
|
type="text/javascript"
|
||||||
|
src="//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js"
|
||||||
|
></script>
|
||||||
|
<!-- /subscription form -->
|
||||||
|
{{ end }} {{ end }} {{ if site.Params.google_map.enable }} {{ $gmap:=
|
||||||
|
resources.Get "plugins/maps/google-map.js" }}
|
||||||
|
<script defer src="{{ $gmap.RelPermalink }}"></script>
|
||||||
|
<script src="https://maps.googleapis.com/maps/api/js?key={{ site.Params.google_map.map_api_key }}&libraries=places"></script>
|
||||||
|
{{ end }} {{ end }}
|
138
layouts/index.html
Executable file
138
layouts/index.html
Executable file
|
@ -0,0 +1,138 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
<!-- Banner -->
|
||||||
|
{{ with .Params.banner }}
|
||||||
|
<section class="section pt-14">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-center">
|
||||||
|
<div class="lg:col-7 md:col-9 mb-8 text-center">
|
||||||
|
<h1 class="mb-4 text-h3 lg:text-h1">{{ .title | markdownify }}</h1>
|
||||||
|
<p class="mb-8">{{ .content | markdownify }}</p>
|
||||||
|
{{ with .button }} {{ if .enable }}
|
||||||
|
<a
|
||||||
|
class="btn btn-primary"
|
||||||
|
href="{{ .link | absURL }}"
|
||||||
|
{{
|
||||||
|
if
|
||||||
|
strings.HasPrefix
|
||||||
|
.link
|
||||||
|
`http`
|
||||||
|
}}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener"
|
||||||
|
{{
|
||||||
|
end
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{{ .label }}
|
||||||
|
<i class="fa fa-arrow-right pl-2"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }} {{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="col-12">
|
||||||
|
{{ partial "image" (dict "Src" .image "Alt" "Banner image" "Loading"
|
||||||
|
"eager" "Class" "mx-auto lg:!max-w-[800px]" "DisplayXL" "800x" ) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
||||||
|
<!-- /Banner -->
|
||||||
|
|
||||||
|
<!-- Features -->
|
||||||
|
{{ range $i, $e:= .Params.features }}
|
||||||
|
<section class="section-sm {{ if (modBool $i 2) }}bg-gradient{{ end }}">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row items-center justify-between">
|
||||||
|
<div
|
||||||
|
class="mb:md-0 {{ if not (modBool $i 2) }}
|
||||||
|
md:order-2
|
||||||
|
{{ end }} md:col-5 mb-6"
|
||||||
|
>
|
||||||
|
{{ partial "image" (dict "Src" .image "Alt" "feature image" "DisplayXL"
|
||||||
|
"520x" "DisplayLG" "425x" "DisplayMD" "360x") }}
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="{{ if not (modBool $i 2) }}
|
||||||
|
md:order-1
|
||||||
|
{{ end }} md:col-7 lg:col-6"
|
||||||
|
>
|
||||||
|
<h2 class="mb-4">{{ .title | markdownify }}</h2>
|
||||||
|
<p class="mb-8 text-lg">{{ .content | markdownify }}</p>
|
||||||
|
<ul>
|
||||||
|
{{ range .bulletpoints }}
|
||||||
|
<li class="relative mb-4 pl-6">
|
||||||
|
<i class="fa fa-check absolute left-0 top-1.5"></i>
|
||||||
|
{{ . | markdownify }}
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
{{ with .button }} {{ if .enable }}
|
||||||
|
<a class="btn btn-primary mt-6" href="{{ .link | absURL }}">
|
||||||
|
{{ .label }}
|
||||||
|
<i class="fa fa-arrow-right pl-2"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }} {{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
||||||
|
<!-- /Features -->
|
||||||
|
|
||||||
|
<!-- Testimonials -->
|
||||||
|
{{ with site.GetPage "sections/testimonial" }} {{ if .Params.enable }}
|
||||||
|
<section class="section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="md:col-10 lg:col-8 xl:col-6 mx-auto mb-12 text-center">
|
||||||
|
<h2 class="mb-4">{{ .Title | markdownify }}</h2>
|
||||||
|
<p>{{ .Params.description | markdownify }}</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="swiper testimonial-slider">
|
||||||
|
<div class="swiper-wrapper">
|
||||||
|
{{ range .Params.testimonials }}
|
||||||
|
<div class="swiper-slide">
|
||||||
|
<div class="bg-theme-light rounded-lg px-7 py-10">
|
||||||
|
<div class="text-dark">
|
||||||
|
<svg
|
||||||
|
width="33"
|
||||||
|
height="20"
|
||||||
|
viewBox="0 0 33 20"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M1.28375 19.41L0.79375 18.64C1.21375 17.0067 1.75042 15.07 2.40375 12.83C3.05708 10.5433 3.75708 8.28 4.50375 6.04C5.29708 3.75333 6.06708 1.77 6.81375 0.0899959H15.3538C14.9338 2.09666 14.4904 4.26667 14.0238 6.6C13.5571 8.88666 13.1371 11.15 12.7638 13.39C12.4371 15.5833 12.1571 17.59 11.9238 19.41H1.28375ZM31.69 0.0899959L32.18 0.859998C31.76 2.54 31.2233 4.5 30.57 6.74C29.9167 8.98 29.2167 11.2433 28.47 13.53C27.7233 15.77 26.9533 17.73 26.16 19.41H17.69C18.0167 17.9167 18.3433 16.33 18.67 14.65C18.9967 12.9233 19.3 11.22 19.58 9.54C19.9067 7.81333 20.1867 6.15667 20.42 4.57C20.7 2.93666 20.91 1.44333 21.05 0.0899959H31.69Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<blockquote class="mt-8">
|
||||||
|
{{ .content | markdownify }}
|
||||||
|
</blockquote>
|
||||||
|
<div class="mt-11 flex items-center">
|
||||||
|
<div class="text-dark">
|
||||||
|
{{ partial "image" (dict "Src" .avatar "Size" "50x50"
|
||||||
|
"Class" "rounded-full" "Alt" .name) }}
|
||||||
|
</div>
|
||||||
|
<div class="ml-4">
|
||||||
|
<h3 class="h5 font-primary font-semibold">{{ .name }}</h3>
|
||||||
|
<p class="text-dark">{{ .designation | markdownify }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="testimonial-slider-pagination mt-9 flex items-center justify-center text-center"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }} {{ end }}
|
||||||
|
<!-- /Testimonials -->
|
||||||
|
{{ end }}
|
25
layouts/partials/call-to-action.html
Normal file
25
layouts/partials/call-to-action.html
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<!-- Call to actions -->
|
||||||
|
{{ with site.GetPage "sections/call-to-action" }} {{ if .Params.enable }}
|
||||||
|
<section class="mb-28">
|
||||||
|
<div class="container">
|
||||||
|
<div class="bg-theme-light rounded-xl px-4 py-16 xl:p-20">
|
||||||
|
<div class="row items-center justify-between">
|
||||||
|
<div class="md:col-5 lg:col-4 mb-10 md:order-2 md:mb-0">
|
||||||
|
{{ partial "image" (dict "Src" .image "Alt" "call to action" "Class"
|
||||||
|
"w-full") }}
|
||||||
|
</div>
|
||||||
|
<div class="md:col-7 md:order-1">
|
||||||
|
<h2 class="mb-2">{{ .Title | markdownify }}</h2>
|
||||||
|
<p class="mb-6">{{ .Params.description | markdownify }}</p>
|
||||||
|
{{ with .Params.button }} {{ if .enable }}
|
||||||
|
<a class="btn btn-primary" href="{{ .link | absURL }}">
|
||||||
|
{{ .label }}
|
||||||
|
</a>
|
||||||
|
{{ end }} {{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }} {{ end }}
|
||||||
|
<!-- /Call to actions -->
|
27
layouts/partials/components/author-card.html
Executable file
27
layouts/partials/components/author-card.html
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
<div class="bg-theme-light rounded p-8 text-center">
|
||||||
|
{{ $image:= .Params.image }} {{ if $image }} {{ partial "image" (dict "Src"
|
||||||
|
$image "Alt" .Title "Class" "mx-auto mb-6 rounded" "size" "120x120") }} {{
|
||||||
|
else if .Params.Email }}
|
||||||
|
<img
|
||||||
|
class="mx-auto mb-6 rounded"
|
||||||
|
alt="{{ .Title }}"
|
||||||
|
height="120"
|
||||||
|
width="120"
|
||||||
|
src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=128&pg&d=identicon"
|
||||||
|
/>
|
||||||
|
{{ end }}
|
||||||
|
<h4 class="mb-3">
|
||||||
|
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
|
||||||
|
</h4>
|
||||||
|
<p class="mb-4">{{ .Summary }}</p>
|
||||||
|
<ul class="social-icons">
|
||||||
|
{{ range .Params.social }}
|
||||||
|
<li>
|
||||||
|
<a href="{{ .link | safeURL }}" target="_blank" rel="noopener nofollow">
|
||||||
|
<span class="sr-only">{{ .title }}</span>
|
||||||
|
<i class="{{ .icon }}"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
31
layouts/partials/components/blog-card.html
Normal file
31
layouts/partials/components/blog-card.html
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
<div class="bg-body">
|
||||||
|
{{ $image:= .Params.image }} {{ if $image }} {{ partial "image" (dict "Src"
|
||||||
|
$image "Alt" .Title "Class" "mb-6 w-full rounded") }} {{ end }}
|
||||||
|
<h4 class="mb-3">
|
||||||
|
<a href="{{ .RelPermalink }}"> {{ .Title }} </a>
|
||||||
|
</h4>
|
||||||
|
{{ $categories:= .Params.categories }} {{ if $categories }}
|
||||||
|
<ul class="mb-4">
|
||||||
|
<li class="mr-4 inline-block">
|
||||||
|
<a href="{{ `authors/` | relLangURL }}{{ .Params.Author | urlize }}/">
|
||||||
|
<i class="fa-regular fa-circle-user mr-2"></i>{{ .Params.author }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="mr-4 inline-block">
|
||||||
|
<i class="fa-regular fa-folder mr-1"></i>
|
||||||
|
{{ range $i,$p:= $categories }}
|
||||||
|
<a
|
||||||
|
href="{{ `categories/` | relLangURL }}{{ . | urlize | lower }}/"
|
||||||
|
class="ms-1"
|
||||||
|
>{{ . | humanize }}{{ if ne $i (sub (len $categories) 1) }} {{ "," }} {{
|
||||||
|
end }}
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{{ end }}
|
||||||
|
<p class="mb-6">{{ .Summary }}</p>
|
||||||
|
<a class="btn btn-outline-primary btn-sm" href="{{ .RelPermalink }}">
|
||||||
|
{{ i18n "read_more" }}
|
||||||
|
</a>
|
||||||
|
</div>
|
25
layouts/partials/components/breadcrumb.html
Normal file
25
layouts/partials/components/breadcrumb.html
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{{ $context := .Context }} {{ $class := .Class }} {{ $base :=
|
||||||
|
site.Home.Permalink }}
|
||||||
|
|
||||||
|
<ul class="{{ $class }} inline-flex space-x-1 capitalize">
|
||||||
|
<li>
|
||||||
|
<a class="text-primary" href="{{ $base }}">
|
||||||
|
{{ i18n "home" | default "Home" }}
|
||||||
|
</a>
|
||||||
|
<span class="inlin-block mr-1">/</span>
|
||||||
|
</li>
|
||||||
|
{{ range $i, $e:= $context.Ancestors.Reverse }} {{ if and (not .IsHome) (ne
|
||||||
|
.Title "Pages") }}
|
||||||
|
<li>
|
||||||
|
<a class="text-primary" href="{{ .RelPermalink }}">
|
||||||
|
{{ i18n (printf "%s" (lower .Title)) | default .Title }}
|
||||||
|
</a>
|
||||||
|
<span class="inlin-block mr-1">/</span>
|
||||||
|
</li>
|
||||||
|
{{ end }} {{ end }}
|
||||||
|
<li>
|
||||||
|
<span class="text-primary">
|
||||||
|
{{ i18n (printf "%s" (lower $context.Title)) | default $context.Title }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
25
layouts/partials/components/language-switcher.html
Normal file
25
layouts/partials/components/language-switcher.html
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<!-- Language List -->
|
||||||
|
{{ $class := .Class }} {{ $context := .Context }} {{ $pageLang := $context.Lang
|
||||||
|
}} {{ $base:= urls.Parse site.Home.Permalink }} {{ $siteLanguages :=
|
||||||
|
site.Home.AllTranslations }} {{ $pageLink := replace (replace
|
||||||
|
$context.RelPermalink (add $pageLang "/") "") $base.Path "/" }} {{ if
|
||||||
|
$context.IsTranslated }}
|
||||||
|
<select class="{{ $class }}" onchange="location = this.value">
|
||||||
|
{{ range $siteLanguages }} {{ if eq (string $pageLang) (string .Language) }}
|
||||||
|
<option
|
||||||
|
id="{{ .Language }}"
|
||||||
|
value="{{ replace (add .RelPermalink $pageLink) `//` `/` }}"
|
||||||
|
selected
|
||||||
|
>
|
||||||
|
{{ .Language.LanguageName }}
|
||||||
|
</option>
|
||||||
|
{{ else }}
|
||||||
|
<option
|
||||||
|
id="{{ .Language }}"
|
||||||
|
value="{{ replace (add .RelPermalink $pageLink) `//` `/` }}"
|
||||||
|
>
|
||||||
|
{{ .Language.LanguageName }}
|
||||||
|
</option>
|
||||||
|
{{ end }} {{ end }}
|
||||||
|
</select>
|
||||||
|
{{ end }}
|
133
layouts/partials/components/pagination.html
Executable file
133
layouts/partials/components/pagination.html
Executable file
|
@ -0,0 +1,133 @@
|
||||||
|
{{ $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="flex items-center justify-center space-x-3" aria-label="Pagination">
|
||||||
|
<!-- Previous page. -->
|
||||||
|
{{ if $paginator.HasPrev }}
|
||||||
|
<a
|
||||||
|
class="text-dark hover:bg-theme-light rounded px-2 py-1.5"
|
||||||
|
href="{{ $paginator.Prev.URL }}"
|
||||||
|
aria-label="Pagination Arrow"
|
||||||
|
>
|
||||||
|
<span class="sr-only">Previous</span>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 20 20"
|
||||||
|
fill="currentColor"
|
||||||
|
aria-hidden="true"
|
||||||
|
height="30"
|
||||||
|
width="30"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
{{ else }}
|
||||||
|
<span class="text-light rounded px-2 py-1.5">
|
||||||
|
<span class="sr-only">Previous</span>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 20 20"
|
||||||
|
fill="currentColor"
|
||||||
|
aria-hidden="true"
|
||||||
|
height="30"
|
||||||
|
width="30"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
{{ 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 }} {{ if eq . $paginator }}
|
||||||
|
<span aria-current="page" class="bg-primary rounded px-4 py-2 text-white">
|
||||||
|
{{ .PageNumber }}
|
||||||
|
</span>
|
||||||
|
{{ else }}
|
||||||
|
<a
|
||||||
|
href="{{ .URL }}"
|
||||||
|
aria-current="page"
|
||||||
|
class="text-dark hover:bg-theme-light rounded px-4 py-2"
|
||||||
|
>
|
||||||
|
{{ .PageNumber }}
|
||||||
|
</a>
|
||||||
|
{{ end }} {{ end }} {{ end }}
|
||||||
|
|
||||||
|
<!-- Next page. -->
|
||||||
|
{{ if $paginator.HasNext }}
|
||||||
|
<a
|
||||||
|
class="text-dark hover:bg-theme-light rounded px-2 py-1.5"
|
||||||
|
href="{{ $paginator.Next.URL }}"
|
||||||
|
aria-label="Pagination Arrow"
|
||||||
|
>
|
||||||
|
<span class="sr-only">Next</span>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 20 20"
|
||||||
|
fill="currentColor"
|
||||||
|
aria-hidden="true"
|
||||||
|
height="30"
|
||||||
|
width="30"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
{{ else }}
|
||||||
|
<span class="text-light rounded px-2 py-1.5">
|
||||||
|
<span class="sr-only">Next</span>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 20 20"
|
||||||
|
fill="currentColor"
|
||||||
|
aria-hidden="true"
|
||||||
|
height="30"
|
||||||
|
width="30"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
|
</nav>
|
||||||
|
{{ end }}
|
65
layouts/partials/components/theme-switcher.html
Normal file
65
layouts/partials/components/theme-switcher.html
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
<!-- theme switcher -->
|
||||||
|
{{ $class := .Class }} {{ if site.Params.theme_switcher }}
|
||||||
|
<div class="theme-switcher {{ $class }}">
|
||||||
|
<input id="theme-switcher" data-theme-switcher type="checkbox" />
|
||||||
|
<label for="theme-switcher">
|
||||||
|
<span class="sr-only">theme switcher</span>
|
||||||
|
<span>
|
||||||
|
<!-- sun -->
|
||||||
|
<svg
|
||||||
|
class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-10 opacity-100"
|
||||||
|
viewBox="0 0 56 56"
|
||||||
|
fill="#fff"
|
||||||
|
height="16"
|
||||||
|
width="16"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M30 4.6c0-1-.9-2-2-2a2 2 0 0 0-2 2v5c0 1 .9 2 2 2s2-1 2-2Zm9.6 9a2 2 0 0 0 0 2.8c.8.8 2 .8 2.9 0L46 13a2 2 0 0 0 0-2.9 2 2 0 0 0-3 0Zm-26 2.8c.7.8 2 .8 2.8 0 .8-.7.8-2 0-2.9L13 10c-.7-.7-2-.8-2.9 0-.7.8-.7 2.1 0 3ZM28 16a12 12 0 0 0-12 12 12 12 0 0 0 12 12 12 12 0 0 0 12-12 12 12 0 0 0-12-12Zm23.3 14c1.1 0 2-.9 2-2s-.9-2-2-2h-4.9a2 2 0 0 0-2 2c0 1.1 1 2 2 2ZM4.7 26a2 2 0 0 0-2 2c0 1.1.9 2 2 2h4.9c1 0 2-.9 2-2s-1-2-2-2Zm37.8 13.6a2 2 0 0 0-3 0 2 2 0 0 0 0 2.9l3.6 3.5a2 2 0 0 0 2.9 0c.8-.8.8-2.1 0-3ZM10 43.1a2 2 0 0 0 0 2.9c.8.7 2.1.8 3 0l3.4-3.5c.8-.8.8-2.1 0-2.9-.8-.8-2-.8-2.9 0Zm20 3.4c0-1.1-.9-2-2-2a2 2 0 0 0-2 2v4.9c0 1 .9 2 2 2s2-1 2-2Z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
<!-- moon -->
|
||||||
|
<svg
|
||||||
|
class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-10 opacity-0"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
height="16"
|
||||||
|
width="16"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill="#000"
|
||||||
|
fill-rule="evenodd"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
d="M8.2 2.2c1-.4 2 .6 1.6 1.5-1 3-.4 6.4 1.8 8.7a8.4 8.4 0 0 0 8.7 1.8c1-.3 2 .5 1.5 1.5v.1a10.3 10.3 0 0 1-9.4 6.2A10.3 10.3 0 0 1 3.2 6.7c1-2 2.9-3.5 4.9-4.4Z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- theme switcher -->
|
||||||
|
<script>
|
||||||
|
var darkMode = {{if eq site.Params.theme_default "dark"}}true{{else}}false{{end}};
|
||||||
|
|
||||||
|
{{ if eq site.Params.theme_default "system" }}
|
||||||
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches){darkMode = true}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
if (localStorage.getItem("theme") === "dark"){darkMode = true}
|
||||||
|
else if (localStorage.getItem("theme") === "light"){darkMode = false}
|
||||||
|
if (darkMode){document.documentElement.classList.toggle("dark")}
|
||||||
|
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
||||||
|
|
||||||
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
|
[].forEach.call(themeSwitch, function (ts) {
|
||||||
|
ts.checked = darkMode ? true : false;
|
||||||
|
ts.addEventListener("click", () => {
|
||||||
|
document.documentElement.classList.toggle("dark");
|
||||||
|
localStorage.setItem(
|
||||||
|
"theme",
|
||||||
|
document.documentElement.classList.contains("dark") ? "dark" : "light"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{{ end }}
|
10
layouts/partials/components/tw-size-indicator.html
Normal file
10
layouts/partials/components/tw-size-indicator.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<div
|
||||||
|
class="fixed left-0 top-0 z-50 flex w-[30px] items-center justify-center bg-gray-200 py-[2.5px] text-[12px] uppercase text-black sm:bg-red-200 md:bg-yellow-200 lg:bg-green-200 xl:bg-blue-200 2xl:bg-pink-200"
|
||||||
|
>
|
||||||
|
<span class="block sm:hidden">all</span>
|
||||||
|
<span class="hidden sm:block md:hidden">sm</span>
|
||||||
|
<span class="hidden md:block lg:hidden">md</span>
|
||||||
|
<span class="hidden lg:block xl:hidden">lg</span>
|
||||||
|
<span class="hidden xl:block 2xl:hidden">xl</span>
|
||||||
|
<span class="hidden 2xl:block">2xl</span>
|
||||||
|
</div>
|
65
layouts/partials/essentials/footer.html
Executable file
65
layouts/partials/essentials/footer.html
Executable file
|
@ -0,0 +1,65 @@
|
||||||
|
<footer class="bg-theme-light">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row items-center py-10">
|
||||||
|
<div class="lg:col-3 mb-8 text-center lg:mb-0 lg:text-left">
|
||||||
|
<!-- navbar brand/logo -->
|
||||||
|
<a
|
||||||
|
class="navbar-brand inline-block"
|
||||||
|
href="{{ site.Home.RelPermalink }}"
|
||||||
|
>
|
||||||
|
{{ partial "logo" }}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="lg:col-6 mb-8 text-center lg:mb-0">
|
||||||
|
<ul>
|
||||||
|
{{ range site.Menus.footer }}
|
||||||
|
<li class="m-3 inline-block">
|
||||||
|
<a
|
||||||
|
{{
|
||||||
|
if
|
||||||
|
findRE
|
||||||
|
`^http`
|
||||||
|
.URL
|
||||||
|
}}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener"
|
||||||
|
{{
|
||||||
|
end
|
||||||
|
}}
|
||||||
|
href="{{ if findRE `^#` .URL }}
|
||||||
|
{{ if not $.IsHome }}
|
||||||
|
{{ site.Home.RelPermalink }}
|
||||||
|
{{ end }}{{ .URL }}
|
||||||
|
{{ else }}
|
||||||
|
{{ .URL | relLangURL }}
|
||||||
|
{{ end }}"
|
||||||
|
>{{ .Name }}</a
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="lg:col-3 mb-8 text-center lg:mb-0 lg:mt-0 lg:text-right">
|
||||||
|
<ul class="social-icons">
|
||||||
|
{{ range site.Data.social.main }}
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
target="_blank"
|
||||||
|
aria-label="{{ .name }}"
|
||||||
|
rel="nofollow noopener"
|
||||||
|
href="{{ .link | safeURL }}"
|
||||||
|
>
|
||||||
|
<i class="{{ .icon }}"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="border-border border-t py-7">
|
||||||
|
<div class="text-light container text-center">
|
||||||
|
<p>{{ site.Params.copyright | markdownify }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
51
layouts/partials/essentials/head.html
Executable file
51
layouts/partials/essentials/head.html
Executable file
|
@ -0,0 +1,51 @@
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
|
||||||
|
<!-- responsive meta -->
|
||||||
|
<meta
|
||||||
|
name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1, maximum-scale=5"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- theme meta -->
|
||||||
|
<meta name="theme-name" content="hugoplate" />
|
||||||
|
|
||||||
|
<!-- favicon -->
|
||||||
|
{{ partialCached "favicon" . }}
|
||||||
|
|
||||||
|
<!-- manifest -->
|
||||||
|
{{ partialCached "manifest" . }}
|
||||||
|
|
||||||
|
<!-- site verifications -->
|
||||||
|
{{ partialCached "site-verifications.html" . }}
|
||||||
|
|
||||||
|
<!-- opengraph and twitter card -->
|
||||||
|
{{ partial "basic-seo.html" . }}
|
||||||
|
|
||||||
|
<!-- custom script -->
|
||||||
|
{{ partialCached "custom-script.html" . }}
|
||||||
|
|
||||||
|
<!-- google analytics -->
|
||||||
|
{{ if and site.Config.Services.GoogleAnalytics.ID (ne
|
||||||
|
site.Config.Services.GoogleAnalytics.ID "G-MEASUREMENT_ID") }} {{ template
|
||||||
|
"_internal/google_analytics.html" . }} {{ end }}
|
||||||
|
|
||||||
|
<!-- google tag manager -->
|
||||||
|
{{ partialCached "gtm.html" . }}
|
||||||
|
|
||||||
|
<!-- search index -->
|
||||||
|
{{ partial "search-index.html" . }}
|
||||||
|
|
||||||
|
<!-- matomo analytics -->
|
||||||
|
{{/* {{ partialCached "matomo-analytics.html" . }} */}}
|
||||||
|
|
||||||
|
<!-- Baidu analytics -->
|
||||||
|
{{/* {{ partialCached "baidu-analytics.html" . }} */}}
|
||||||
|
|
||||||
|
<!-- Plausible Analytics -->
|
||||||
|
{{/* {{ partialCached "plausible-analytics.html" . }} */}}
|
||||||
|
|
||||||
|
<!-- Counter Analytics -->
|
||||||
|
{{/* {{ partialCached "counter-analytics.html" . }} */}}
|
||||||
|
|
||||||
|
<!-- Crisp Chat -->
|
||||||
|
{{/* {{ partialCached "crisp-chat.html" . }} */}}
|
152
layouts/partials/essentials/header.html
Executable file
152
layouts/partials/essentials/header.html
Executable file
|
@ -0,0 +1,152 @@
|
||||||
|
<header
|
||||||
|
class="header {{ if site.Params.navbar_fixed }}sticky top-0{{ end }} z-30"
|
||||||
|
>
|
||||||
|
<nav class="navbar container">
|
||||||
|
<!-- logo -->
|
||||||
|
<div class="order-0">
|
||||||
|
<!-- navbar brand/logo -->
|
||||||
|
<a class="navbar-brand block" href="{{ site.Home.RelPermalink }}">
|
||||||
|
{{ partial "logo" }}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<!-- navbar toggler -->
|
||||||
|
<input id="nav-toggle" type="checkbox" class="hidden" />
|
||||||
|
<label
|
||||||
|
for="nav-toggle"
|
||||||
|
class="order-3 cursor-pointer flex items-center lg:hidden text-dark lg:order-1"
|
||||||
|
>
|
||||||
|
<svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20">
|
||||||
|
<title>Menu Open</title>
|
||||||
|
<path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path>
|
||||||
|
</svg>
|
||||||
|
<svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20">
|
||||||
|
<title>Menu Close</title>
|
||||||
|
<polygon
|
||||||
|
points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2"
|
||||||
|
transform="rotate(45 10 10)"
|
||||||
|
></polygon>
|
||||||
|
</svg>
|
||||||
|
</label>
|
||||||
|
<!-- /navbar toggler -->
|
||||||
|
|
||||||
|
<!-- main navbar -->
|
||||||
|
<ul
|
||||||
|
id="nav-menu"
|
||||||
|
class="navbar-nav order-3 hidden lg:flex w-full pb-6 lg:order-1 lg:w-auto lg:space-x-2 lg:pb-0 xl:space-x-8"
|
||||||
|
>
|
||||||
|
{{ $currentPage := . }} {{ range site.Menus.main }} {{ $menuURL := .URL |
|
||||||
|
absLangURL }} {{ $pageURL:= $currentPage.Permalink | absLangURL }} {{
|
||||||
|
$active := eq $menuURL $pageURL }} {{ if .HasChildren }}
|
||||||
|
<li class="nav-item nav-dropdown group relative">
|
||||||
|
<span
|
||||||
|
class="nav-link {{ range .Children }}
|
||||||
|
{{ $childURL := .URL | absLangURL }}
|
||||||
|
{{ $active := eq $childURL $pageURL }}
|
||||||
|
{{ if $active }}active{{ end }}
|
||||||
|
{{ end }} inline-flex items-center"
|
||||||
|
>
|
||||||
|
{{ .Name }}
|
||||||
|
<svg class="h-4 w-4 fill-current" viewBox="0 0 20 20">
|
||||||
|
<path
|
||||||
|
d="M9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828 5.757 6.586 4.343 8z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
<ul
|
||||||
|
class="nav-dropdown-list lg:group-hover:visible lg:group-hover:opacity-100"
|
||||||
|
>
|
||||||
|
{{ range .Children }} {{ $childURL := .URL | absLangURL }} {{ $active
|
||||||
|
:= eq $childURL $pageURL }}
|
||||||
|
<li class="nav-dropdown-item">
|
||||||
|
<a
|
||||||
|
class="nav-dropdown-link {{ if $active }}
|
||||||
|
active
|
||||||
|
{{- end -}}"
|
||||||
|
{{
|
||||||
|
if
|
||||||
|
findRE
|
||||||
|
`^http`
|
||||||
|
.URL
|
||||||
|
}}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener"
|
||||||
|
{{
|
||||||
|
end
|
||||||
|
}}
|
||||||
|
href="{{- if findRE `^#` .URL -}}
|
||||||
|
{{- if not $.IsHome -}}
|
||||||
|
{{- site.Home.RelPermalink -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- .URL -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- .URL | relLangURL -}}
|
||||||
|
{{- end -}}"
|
||||||
|
>
|
||||||
|
{{ .Name }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
{{ else }}
|
||||||
|
<li class="nav-item">
|
||||||
|
<a
|
||||||
|
class="nav-link {{ if $active }}active{{- end -}}"
|
||||||
|
{{
|
||||||
|
if
|
||||||
|
findRE
|
||||||
|
`^http`
|
||||||
|
.URL
|
||||||
|
}}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener"
|
||||||
|
{{
|
||||||
|
end
|
||||||
|
}}
|
||||||
|
href="{{- if findRE `^#` .URL -}}
|
||||||
|
{{- if not $.IsHome -}}
|
||||||
|
{{- site.Home.RelPermalink -}}
|
||||||
|
{{- end }}{{- .URL -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- .URL | relLangURL -}}
|
||||||
|
{{- end -}}"
|
||||||
|
>{{ .Name }}</a
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
{{ end }} {{ end }} {{ if site.Params.navigation_button.enable }}
|
||||||
|
<li class="mt-4 inline-block lg:hidden">
|
||||||
|
<a
|
||||||
|
class="btn btn-outline-primary btn-sm"
|
||||||
|
href="{{ site.Params.navigation_button.link | relLangURL }}"
|
||||||
|
>
|
||||||
|
{{ site.Params.navigation_button.label }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0">
|
||||||
|
{{ with site.Params.search }} {{ if .enable }}
|
||||||
|
<button
|
||||||
|
aria-label="search"
|
||||||
|
class="border-border text-dark hover:text-primary mr-5 inline-block border-r pr-5 text-xl"
|
||||||
|
data-target="search-modal"
|
||||||
|
>
|
||||||
|
<i class="fa-solid fa-search"></i>
|
||||||
|
</button>
|
||||||
|
{{ end }} {{ end }} {{ partial "components/language-switcher" (dict
|
||||||
|
"Context" . "Class" "mr-5 pl-2 py-1 rounded") }} {{ partial
|
||||||
|
"components/theme-switcher" (dict "Class" "mr-5") }}
|
||||||
|
|
||||||
|
<!-- navigation btn -->
|
||||||
|
{{ if site.Params.navigation_button.enable }}
|
||||||
|
<a
|
||||||
|
href="{{ site.Params.navigation_button.link | relLangURL }}"
|
||||||
|
class="btn btn-outline-primary btn-sm hidden lg:inline-block"
|
||||||
|
>
|
||||||
|
{{ site.Params.navigation_button.label }}
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</header>
|
45
layouts/partials/essentials/script.html
Executable file
45
layouts/partials/essentials/script.html
Executable file
|
@ -0,0 +1,45 @@
|
||||||
|
<!-- JS Plugins + Main script -->
|
||||||
|
{{ $scripts := slice }} {{ $scriptsLazy := slice }} {{ range
|
||||||
|
site.Params.plugins.js }} {{ if findRE "^http" .link }}
|
||||||
|
<script
|
||||||
|
src="{{ .link | relURL }}"
|
||||||
|
type="application/javascript"
|
||||||
|
{{
|
||||||
|
.attributes
|
||||||
|
|
|
||||||
|
safeHTMLAttr
|
||||||
|
}}
|
||||||
|
></script>
|
||||||
|
{{ else }} {{ if not .lazy }} {{ $scripts = $scripts | append (resources.Get
|
||||||
|
.link) }} {{ else }} {{ $scriptsLazy = $scriptsLazy | append (resources.Get
|
||||||
|
.link) }} {{ end }} {{ end }} {{ end }}
|
||||||
|
|
||||||
|
<!-- main script -->
|
||||||
|
{{ $scripts = $scripts | append (resources.Get "js/main.js") }} {{ $scripts =
|
||||||
|
$scripts | resources.Concat "js/script.js" }} {{ $scriptsLazy = $scriptsLazy |
|
||||||
|
resources.Concat "js/script-lazy.js" }} {{ if hugo.IsProduction }} {{ $scripts =
|
||||||
|
$scripts | minify | fingerprint }} {{ $scriptsLazy = $scriptsLazy | minify |
|
||||||
|
fingerprint }} {{ end }} {{/* scripts */}}
|
||||||
|
<script
|
||||||
|
crossorigin="anonymous"
|
||||||
|
integrity="{{ $scripts.Data.Integrity }}"
|
||||||
|
src="{{ $scripts.RelPermalink }}"
|
||||||
|
></script>
|
||||||
|
|
||||||
|
{{/* scripts lazy */}}
|
||||||
|
<script
|
||||||
|
defer
|
||||||
|
async
|
||||||
|
crossorigin="anonymous"
|
||||||
|
integrity="{{ $scriptsLazy.Data.Integrity }}"
|
||||||
|
src="{{ $scriptsLazy.RelPermalink }}"
|
||||||
|
></script>
|
||||||
|
|
||||||
|
<!-- progressive web app -->
|
||||||
|
{{ partialCached "pwa.html" . }}
|
||||||
|
|
||||||
|
<!-- cookie consent -->
|
||||||
|
{{ partialCached "cookie-consent.html" . }}
|
||||||
|
|
||||||
|
<!-- google adsense -->
|
||||||
|
{{ partialCached "adsense-script.html" . }}
|
75
layouts/partials/essentials/style.html
Executable file
75
layouts/partials/essentials/style.html
Executable file
|
@ -0,0 +1,75 @@
|
||||||
|
<!-- DNS preconnect -->
|
||||||
|
<meta http-equiv="x-dns-prefetch-control" content="on" />
|
||||||
|
<link rel="preconnect" href="https://use.fontawesome.com" crossorigin />
|
||||||
|
<link rel="preconnect" href="//cdnjs.cloudflare.com" />
|
||||||
|
<link rel="preconnect" href="//www.googletagmanager.com" />
|
||||||
|
<link rel="preconnect" href="//www.google-analytics.com" />
|
||||||
|
<link rel="dns-prefetch" href="https://use.fontawesome.com" />
|
||||||
|
<link rel="dns-prefetch" href="//ajax.googleapis.com" />
|
||||||
|
<link rel="dns-prefetch" href="//cdnjs.cloudflare.com" />
|
||||||
|
<link rel="dns-prefetch" href="//www.googletagmanager.com" />
|
||||||
|
<link rel="dns-prefetch" href="//www.google-analytics.com" />
|
||||||
|
<link rel="dns-prefetch" href="//fonts.googleapis.com" />
|
||||||
|
<link rel="dns-prefetch" href="//connect.facebook.net" />
|
||||||
|
<link rel="dns-prefetch" href="//platform.linkedin.com" />
|
||||||
|
<link rel="dns-prefetch" href="//platform.twitter.com" />
|
||||||
|
|
||||||
|
<!-- google fonts -->
|
||||||
|
{{ $pf:= site.Data.theme.fonts.font_family.primary }} {{ $sf:=
|
||||||
|
site.Data.theme.fonts.font_family.secondary }}
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
const googleFont = document.createElement("link");
|
||||||
|
googleFont.href =
|
||||||
|
"https://fonts.googleapis.com/css2?family={{$pf | safeURL}}{{with $sf}}&family={{. | safeURL}}{{end}}&display=swap";
|
||||||
|
googleFont.type = "text/css";
|
||||||
|
googleFont.rel = "stylesheet";
|
||||||
|
document.head.appendChild(googleFont);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- plugins + stylesheet -->
|
||||||
|
{{ $styles := slice }} {{ $stylesLazy := slice }} {{ range
|
||||||
|
site.Params.plugins.css }} {{ if findRE "^http" .link }}
|
||||||
|
<link
|
||||||
|
crossorigin="anonymous"
|
||||||
|
media="all"
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ .link | relURL }}"
|
||||||
|
{{
|
||||||
|
.attributes
|
||||||
|
|
|
||||||
|
safeHTMLAttr
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
{{ else }} {{ if not .lazy }} {{ $styles = $styles | append (resources.Get
|
||||||
|
.link) }} {{ else }} {{ $stylesLazy = $stylesLazy | append (resources.Get .link)
|
||||||
|
}} {{ end }} {{ end }} {{ end }} {{/* main style */}} {{ $styles = $styles |
|
||||||
|
append (resources.Get "scss/main.scss" | toCSS) }} {{ $styles = $styles |
|
||||||
|
resources.Concat "css/style.css" }} {{ $styles = $styles | resources.PostCSS }}
|
||||||
|
{{ $stylesLazy = $stylesLazy | resources.Concat "css/style-lazy.css" }} {{
|
||||||
|
$stylesLazy = $stylesLazy | resources.PostCSS }} {{ if hugo.IsProduction }} {{
|
||||||
|
$styles = $styles | resources.ExecuteAsTemplate "css/style.css" . | minify |
|
||||||
|
fingerprint | resources.PostProcess }} {{ $stylesLazy = $stylesLazy |
|
||||||
|
resources.ExecuteAsTemplate "css/style-lazy.css" . | minify | fingerprint |
|
||||||
|
resources.PostProcess }} {{ else }} {{ $styles = $styles |
|
||||||
|
resources.ExecuteAsTemplate "css/style.css" . }} {{ $stylesLazy = $stylesLazy |
|
||||||
|
resources.ExecuteAsTemplate "css/style-lazy.css" . }} {{ end }} {{/* styles */}}
|
||||||
|
<link
|
||||||
|
href="{{ $styles.RelPermalink }}"
|
||||||
|
integrity="{{ $styles.Data.Integrity }}"
|
||||||
|
rel="stylesheet"
|
||||||
|
/>
|
||||||
|
|
||||||
|
{{/* styles lazy */}}
|
||||||
|
<link
|
||||||
|
defer
|
||||||
|
async
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ $stylesLazy.RelPermalink }}"
|
||||||
|
integrity="{{ $stylesLazy.Data.Integrity }}"
|
||||||
|
media="print"
|
||||||
|
onload="this.media='all'; this.onload=null;"
|
||||||
|
/>
|
10
layouts/partials/page-header.html
Executable file
10
layouts/partials/page-header.html
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
<section>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div
|
||||||
|
class="from-body to-theme-light rounded-2xl bg-gradient-to-b px-8 py-14"
|
||||||
|
>
|
||||||
|
<h1>{{ i18n (printf "%s" (lower .Title)) | default .Title | title }}</h1>
|
||||||
|
{{ partial "components/breadcrumb" (dict "Context" . "Class" "mt-6") }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
23
layouts/partials/widgets/categories.html
Executable file
23
layouts/partials/widgets/categories.html
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
<!-- categories -->
|
||||||
|
{{ if isset site.Taxonomies "categories" }} {{ if not (eq (len
|
||||||
|
site.Taxonomies.categories) 0) }}
|
||||||
|
<div class="mb-8">
|
||||||
|
<h5 class="mb-6">{{ i18n "categories" }}</h5>
|
||||||
|
<div class="bg-theme-light rounded p-8">
|
||||||
|
<ul class="space-y-4">
|
||||||
|
{{ range $name, $items := site.Taxonomies.categories }}
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
class="hover:text-primary {{ if (and (eq $.Page.Kind `term`) (eq $.Page.Type `categories`) (eq $.Page.Title .Page.Title)) }}
|
||||||
|
active
|
||||||
|
{{ end }} flex justify-between"
|
||||||
|
href="{{ .Page.RelPermalink }}"
|
||||||
|
>
|
||||||
|
{{ .Page.Title }} <span>( {{ len $items }} )</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end }} {{ end }}
|
23
layouts/partials/widgets/tags.html
Executable file
23
layouts/partials/widgets/tags.html
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
<!-- tags -->
|
||||||
|
{{ if isset site.Taxonomies "tags" }} {{ if not (eq (len site.Taxonomies.tags)
|
||||||
|
0) }}
|
||||||
|
<div class="mb-8">
|
||||||
|
<h5 class="mb-6">{{ i18n "tags" }}</h5>
|
||||||
|
<div class="bg-theme-light rounded p-6">
|
||||||
|
<ul>
|
||||||
|
{{ range $name, $items := site.Taxonomies.tags }}
|
||||||
|
<li class="inline-block">
|
||||||
|
<a
|
||||||
|
class="hover:bg-primary {{ if (and (eq $.Page.Kind `term`) (eq $.Page.Type `tags`) (eq $.Page.Title .Page.Title)) }}
|
||||||
|
active
|
||||||
|
{{ end }} m-1 block rounded bg-white px-3 py-1 hover:text-white"
|
||||||
|
href="{{ .Page.RelPermalink }}"
|
||||||
|
>
|
||||||
|
{{ .Page.Title }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end }} {{ end }}
|
1
layouts/partials/widgets/widget-wrapper.html
Executable file
1
layouts/partials/widgets/widget-wrapper.html
Executable file
|
@ -0,0 +1 @@
|
||||||
|
{{ range .Widgets }} {{ partial ( print "widgets/" . ) $.Scope }} {{ end }}
|
|
@ -226,11 +226,11 @@ Copyright (c) 2023 - Present, Designed & Developed by [Zeon Studio](https://zeon
|
||||||
|
|
||||||
## 🖼️ Showcase
|
## 🖼️ Showcase
|
||||||
|
|
||||||
List of some projects people are building with **Hugoplate**!
|
List of some projects people are building with **Hugoplate**!
|
||||||
|
|
||||||
| [![Open Neuromorphic](https://tinyurl.com/hp7avtje)](https://open-neuromorphic.org/) | [![AI Models](https://tinyurl.com/mu4p7dhb)](https://aimodels.org/) | [![Hugobricks](https://tinyurl.com/4x3uwhm9)](https://www.hugobricks.preview.usecue.com/) | [![ONO LLC](https://tinyurl.com/yxnu6whn)](https://ono.day/)
|
| [![Open Neuromorphic](https://tinyurl.com/hp7avtje)](https://open-neuromorphic.org/) | [![AI Models](https://tinyurl.com/mu4p7dhb)](https://aimodels.org/) | [![Hugobricks](https://tinyurl.com/4x3uwhm9)](https://www.hugobricks.preview.usecue.com/) | [![ONO LLC](https://tinyurl.com/yxnu6whn)](https://ono.day/) |
|
||||||
|:---:|:---:|:---:|:---:|
|
| :----------------------------------------------------------------------------------: | :-----------------------------------------------------------------: | :---------------------------------------------------------------------------------------: | :----------------------------------------------------------: |
|
||||||
| **Open Neuromorphic** | **AI Models** | **Hugobricks** | **ONO LLC** |
|
| **Open Neuromorphic** | **AI Models** | **Hugobricks** | **ONO LLC** |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
dropdownMenuToggler.forEach((toggler) => {
|
dropdownMenuToggler.forEach((toggler) => {
|
||||||
toggler?.addEventListener("click", (e) => {
|
toggler?.addEventListener("click", (e) => {
|
||||||
e.target.closest('.nav-item').classList.toggle("active");
|
e.target.closest(".nav-item").classList.toggle("active");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -14,10 +14,10 @@
|
||||||
typeof exports === "object" && typeof module !== "undefined"
|
typeof exports === "object" && typeof module !== "undefined"
|
||||||
? (module.exports = factory())
|
? (module.exports = factory())
|
||||||
: typeof define === "function" && define.amd
|
: typeof define === "function" && define.amd
|
||||||
? define(factory)
|
? define(factory)
|
||||||
: ((global =
|
: ((global =
|
||||||
typeof globalThis !== "undefined" ? globalThis : global || self),
|
typeof globalThis !== "undefined" ? globalThis : global || self),
|
||||||
(global.Swiper = factory()));
|
(global.Swiper = factory()));
|
||||||
})(this, function () {
|
})(this, function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
@ -9083,9 +9083,8 @@
|
||||||
getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
|
getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
|
||||||
// but it did not work out
|
// but it did not work out
|
||||||
|
|
||||||
controlledTranslate = -swiper.controller.spline.interpolate(
|
controlledTranslate =
|
||||||
-translate,
|
-swiper.controller.spline.interpolate(-translate);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
|
|
@ -1,26 +1,25 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<section class="section-sm text-center">
|
<section class="section-sm text-center">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-center">
|
<div class="row justify-center">
|
||||||
<div class="sm:col-10 md:col-8 lg:col-6">
|
<div class="sm:col-10 md:col-8 lg:col-6">
|
||||||
<span
|
<span
|
||||||
class="text-[8rem] block font-bold text-dark dark:text-darkmode-dark">
|
class="text-[8rem] block font-bold text-dark dark:text-darkmode-dark"
|
||||||
404
|
>
|
||||||
</span>
|
404
|
||||||
<h1 class="h2 mb-4">Page not found</h1>
|
</span>
|
||||||
<div class="content">
|
<h1 class="h2 mb-4">Page not found</h1>
|
||||||
<p>
|
<div class="content">
|
||||||
The page you are looking for might have been removed, had its name
|
<p>
|
||||||
changed, or is temporarily unavailable.
|
The page you are looking for might have been removed, had its name
|
||||||
</p>
|
changed, or is temporarily unavailable.
|
||||||
</div>
|
</p>
|
||||||
<a
|
|
||||||
href="{{ site.BaseURL | relLangURL }}"
|
|
||||||
class="btn btn-primary mt-8">
|
|
||||||
Back to home
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
<a href="{{ site.BaseURL | relLangURL }}" class="btn btn-primary mt-8">
|
||||||
|
Back to home
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</div>
|
||||||
|
</section>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -5,43 +5,34 @@
|
||||||
{{- site.Params.theme_default -}}
|
{{- site.Params.theme_default -}}
|
||||||
{{- end -}}"
|
{{- end -}}"
|
||||||
lang="{{ site.LanguageCode | default `en-US` }}"
|
lang="{{ site.LanguageCode | default `en-US` }}"
|
||||||
itemtype="http://schema.org/WebPage">
|
itemtype="http://schema.org/WebPage"
|
||||||
|
>
|
||||||
<head>
|
<head>
|
||||||
<!-- head (don't cache it) -->
|
<!-- head (don't cache it) -->
|
||||||
{{ partial "essentials/head.html" . }}
|
{{ partial "essentials/head.html" . }}
|
||||||
|
|
||||||
|
|
||||||
<!-- style (always cache it) -->
|
<!-- style (always cache it) -->
|
||||||
{{ partialCached "essentials/style.html" . }}
|
{{ partialCached "essentials/style.html" . }}
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<!-- cache partial only in production -->
|
<!-- cache partial only in production -->
|
||||||
{{ if hugo.IsProduction }}
|
{{ if hugo.IsProduction }} {{ partialCached "preloader.html" . }} {{
|
||||||
{{ partialCached "preloader.html" . }}
|
partialCached "gtm-noscript.html" . }} {{ else }} {{ partial
|
||||||
{{ partialCached "gtm-noscript.html" . }}
|
"preloader.html" . }}
|
||||||
{{ else }}
|
|
||||||
{{ partial "preloader.html" . }}
|
|
||||||
|
|
||||||
|
|
||||||
<!-- tailwind size indicator -->
|
|
||||||
{{ partial "components/tw-size-indicator.html" . }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
|
<!-- tailwind size indicator -->
|
||||||
|
{{ partial "components/tw-size-indicator.html" . }} {{ end }}
|
||||||
|
|
||||||
<!-- header (don't cache it) -->
|
<!-- header (don't cache it) -->
|
||||||
{{ partial "essentials/header.html" . }}
|
{{ partial "essentials/header.html" . }} {{ partial "search-modal.html"
|
||||||
{{ partial "search-modal.html" (dict "Context" . ) }}
|
(dict "Context" . ) }}
|
||||||
|
|
||||||
|
<main>{{ block "main" . }}{{ end }}</main>
|
||||||
<main>
|
|
||||||
{{ block "main" . }}{{ end }}
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<!-- footer -->
|
<!-- footer -->
|
||||||
{{ partial "essentials/footer.html" . }}
|
{{ partial "essentials/footer.html" . }}
|
||||||
|
|
||||||
|
|
||||||
<!-- script (always cache it) -->
|
<!-- script (always cache it) -->
|
||||||
{{ partialCached "essentials/script.html" . }}
|
{{ partialCached "essentials/script.html" . }}
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -1,20 +1,19 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
{{ partial "page-header" . }}
|
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
<section class="section">
|
<div class="container">
|
||||||
<div class="container">
|
<ul class="text-center">
|
||||||
<ul class="text-center">
|
{{ range .RegularPages }}
|
||||||
{{ range .RegularPages }}
|
<li class="m-3">
|
||||||
<li class="m-3">
|
<a
|
||||||
<a
|
href="{{ .Permalink }}"
|
||||||
href="{{ .Permalink }}"
|
class="text-dark dark:text-darkmode-dark block text-xl"
|
||||||
class="text-dark dark:text-darkmode-dark block text-xl">
|
>
|
||||||
{{ .Title }}
|
{{ .Title }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,16 +1,12 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
{{ partial "page-header" . }}
|
|
||||||
|
|
||||||
|
<section class="section-sm">
|
||||||
<section class="section-sm">
|
<div class="container">
|
||||||
<div class="container">
|
<div class="row justify-center">
|
||||||
<div class="row justify-center">
|
<div class="lg:col-10">
|
||||||
<div class="lg:col-10">
|
<div class="content">{{ .Content }}</div>
|
||||||
<div class="content">
|
|
||||||
{{ .Content }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</div>
|
||||||
|
</section>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,21 +1,19 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
{{ partial "page-header" . }}
|
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
<section class="section">
|
<div class="container">
|
||||||
<div class="container">
|
<div class="row gx-5">
|
||||||
<div class="row gx-5">
|
<!-- blog posts -->
|
||||||
<!-- blog posts -->
|
<div class="lg:col-8">
|
||||||
<div class="lg:col-8">
|
<div class="row">
|
||||||
<div class="row">
|
{{ range .Data.Pages }}
|
||||||
{{ range .Data.Pages }}
|
<div class="md:col-6 mb-14">
|
||||||
<div class="md:col-6 mb-14">
|
{{ partial "components/blog-card" . }}
|
||||||
{{ partial "components/blog-card" . }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
</div>
|
||||||
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</div>
|
||||||
|
</section>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,41 +1,36 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
{{ partial "page-header" . }}
|
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
<section class="section">
|
<div class="container">
|
||||||
<div class="container">
|
<ul class="text-center">
|
||||||
<ul class="text-center">
|
{{/* categories */}} {{ if eq .Permalink (`categories/` | absLangURL) }}
|
||||||
{{/* categories */}}
|
{{ range site.Taxonomies.categories.ByCount }}
|
||||||
{{ if eq .Permalink (`categories/` | absLangURL) }}
|
<li class="m-3 inline-block">
|
||||||
{{ range site.Taxonomies.categories.ByCount }}
|
<a
|
||||||
<li class="m-3 inline-block">
|
href="{{ .Page.Permalink }}"
|
||||||
<a
|
class="bg-theme-light text-dark dark:bg-darkmode-theme-light dark:text-darkmode-dark block rounded px-4 py-2 text-xl"
|
||||||
href="{{ .Page.Permalink }}"
|
>
|
||||||
class="bg-theme-light text-dark dark:bg-darkmode-theme-light dark:text-darkmode-dark block rounded px-4 py-2 text-xl">
|
{{ .Page.Title }}
|
||||||
{{ .Page.Title }}
|
<span class="bg-body dark:bg-darkmode-body ml-2 rounded px-2">
|
||||||
<span class="bg-body dark:bg-darkmode-body ml-2 rounded px-2">
|
{{ .Count }}
|
||||||
{{ .Count }}
|
</span>
|
||||||
</span>
|
</a>
|
||||||
</a>
|
</li>
|
||||||
</li>
|
{{ end }} {{ end }} {{/* tags */}} {{ if eq .Permalink (`tags/` |
|
||||||
{{ end }}
|
absLangURL) }} {{ range site.Taxonomies.tags.ByCount }}
|
||||||
{{ end }}
|
<li class="m-3 inline-block">
|
||||||
{{/* tags */}}
|
<a
|
||||||
{{ if eq .Permalink (`tags/` | absLangURL) }}
|
href="{{ .Page.Permalink }}"
|
||||||
{{ range site.Taxonomies.tags.ByCount }}
|
class="bg-theme-light text-dark dark:bg-darkmode-theme-light dark:text-darkmode-dark block rounded px-4 py-2 text-xl"
|
||||||
<li class="m-3 inline-block">
|
>
|
||||||
<a
|
{{ .Page.Title }}
|
||||||
href="{{ .Page.Permalink }}"
|
<span class="bg-body dark:bg-darkmode-body ml-2 rounded px-2">
|
||||||
class="bg-theme-light text-dark dark:bg-darkmode-theme-light dark:text-darkmode-dark block rounded px-4 py-2 text-xl">
|
{{ .Count }}
|
||||||
{{ .Page.Title }}
|
</span>
|
||||||
<span class="bg-body dark:bg-darkmode-body ml-2 rounded px-2">
|
</a>
|
||||||
{{ .Count }}
|
</li>
|
||||||
</span>
|
{{ end }} {{ end }}
|
||||||
</a>
|
</ul>
|
||||||
</li>
|
</div>
|
||||||
{{ end }}
|
</section>
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<section class="section-sm">
|
<section class="section-sm">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-center">
|
<div class="row justify-center">
|
||||||
<div class="md:col-10 lg:col-7 text-center">
|
<div class="md:col-10 lg:col-7 text-center">
|
||||||
{{ partial "image" (dict "Src" .Params.image "Alt" .Title "Class" "mx-auto mb-6" "Size" "200x200") }}
|
{{ partial "image" (dict "Src" .Params.image "Alt" .Title "Class"
|
||||||
<h2 class="h3 mb-6">{{ .Title }}</h2>
|
"mx-auto mb-6" "Size" "200x200") }}
|
||||||
<div class="content">{{ .Content }}</div>
|
<h2 class="h3 mb-6">{{ .Title }}</h2>
|
||||||
</div>
|
<div class="content">{{ .Content }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</div>
|
||||||
|
</section>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,16 +1,14 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
{{ partial "page-header" . }}
|
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
<section class="section">
|
<div class="container">
|
||||||
<div class="container">
|
<div class="row">
|
||||||
<div class="row">
|
{{ range .RegularPages }}
|
||||||
{{ range .RegularPages }}
|
<div class="md:col-6 lg:col-4 mb-14">
|
||||||
<div class="md:col-6 lg:col-4 mb-14">
|
{{ partial "components/author-card" . }}
|
||||||
{{ partial "components/author-card" . }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
</div>
|
||||||
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</div>
|
||||||
|
</section>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,48 +1,48 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<section class="section-sm pb-0">
|
<section class="section-sm pb-0">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div
|
<div
|
||||||
class="row border-border dark:border-darkmode-border justify-center border-b pb-14">
|
class="row border-border dark:border-darkmode-border justify-center border-b pb-14"
|
||||||
<div class="lg:col-4 text-center">
|
>
|
||||||
{{ $image:= .Params.image }}
|
<div class="lg:col-4 text-center">
|
||||||
{{ if $image }}
|
{{ $image:= .Params.image }} {{ if $image }} {{ partial "image" (dict
|
||||||
{{ partial "image" (dict "Src" $image "Alt" .Title "Class" "mx-auto" "Size" "200x200") }}
|
"Src" $image "Alt" .Title "Class" "mx-auto" "Size" "200x200") }} {{ else
|
||||||
{{ else if .Params.Email }}
|
if .Params.Email }}
|
||||||
<img
|
<img
|
||||||
class="mx-auto"
|
class="mx-auto"
|
||||||
alt="{{ .Title }}"
|
alt="{{ .Title }}"
|
||||||
height="200"
|
height="200"
|
||||||
width="200"
|
width="200"
|
||||||
src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=128&pg&d=identicon" />
|
src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=128&pg&d=identicon"
|
||||||
{{ end }}
|
/>
|
||||||
<h1 class="h3 mt-10">{{ .Title }}</h1>
|
|
||||||
<div class="content mt-6">
|
|
||||||
{{ .Content }}
|
|
||||||
</div>
|
|
||||||
<ul class="social-icons ml-4 mt-10 text-center">
|
|
||||||
{{ range .Params.social }}
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="{{ .link | safeURL }}"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener nofollow">
|
|
||||||
<span class="sr-only">{{ .title }}</span>
|
|
||||||
<i class="{{ .icon }}"></i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row pb-16 pt-14">
|
|
||||||
{{ $filterByAuthor := where site.RegularPages "Params.author" "==" .Title }}
|
|
||||||
{{ range $filterByAuthor }}
|
|
||||||
<div class="md:col-6 lg:col-4 mb-12">
|
|
||||||
{{ partial "components/blog-card" . }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
<h1 class="h3 mt-10">{{ .Title }}</h1>
|
||||||
|
<div class="content mt-6">{{ .Content }}</div>
|
||||||
|
<ul class="social-icons ml-4 mt-10 text-center">
|
||||||
|
{{ range .Params.social }}
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
href="{{ .link | safeURL }}"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener nofollow"
|
||||||
|
>
|
||||||
|
<span class="sr-only">{{ .title }}</span>
|
||||||
|
<i class="{{ .icon }}"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
|
||||||
|
<div class="row pb-16 pt-14">
|
||||||
|
{{ $filterByAuthor := where site.RegularPages "Params.author" "==" .Title
|
||||||
|
}} {{ range $filterByAuthor }}
|
||||||
|
<div class="md:col-6 lg:col-4 mb-12">
|
||||||
|
{{ partial "components/blog-card" . }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,29 +1,27 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
{{ partial "page-header" . }}
|
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
<section class="section">
|
<div class="container">
|
||||||
<div class="container">
|
<div class="row gx-5">
|
||||||
<div class="row gx-5">
|
<!-- blog posts -->
|
||||||
<!-- blog posts -->
|
<div class="lg:col-8">
|
||||||
<div class="lg:col-8">
|
<div class="row">
|
||||||
<div class="row">
|
{{ $paginator:= .Paginate .RegularPages }} {{ range $paginator.Pages
|
||||||
{{ $paginator:= .Paginate .RegularPages }}
|
}}
|
||||||
{{ range $paginator.Pages }}
|
<div class="md:col-6 mb-14">
|
||||||
<div class="md:col-6 mb-14">
|
{{ partial "components/blog-card" . }}
|
||||||
{{ partial "components/blog-card" . }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
</div>
|
||||||
{{ partial "components/pagination.html" . }}
|
{{ end }}
|
||||||
</div>
|
|
||||||
<!-- sidebar -->
|
|
||||||
<div class="lg:col-4">
|
|
||||||
<!-- widget -->
|
|
||||||
{{ $widget:= site.Params.widgets.sidebar }}
|
|
||||||
{{ partialCached "widgets/widget-wrapper" ( dict "Widgets" $widget "Scope" . ) }}
|
|
||||||
</div>
|
</div>
|
||||||
|
{{ partial "components/pagination.html" . }}
|
||||||
|
</div>
|
||||||
|
<!-- sidebar -->
|
||||||
|
<div class="lg:col-4">
|
||||||
|
<!-- widget -->
|
||||||
|
{{ $widget:= site.Params.widgets.sidebar }} {{ partialCached
|
||||||
|
"widgets/widget-wrapper" ( dict "Widgets" $widget "Scope" . ) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</div>
|
||||||
|
</section>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,94 +1,87 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<section class="section pt-7">
|
<section class="section pt-7">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-center">
|
<div class="row justify-center">
|
||||||
<article class="lg:col-10">
|
<article class="lg:col-10">
|
||||||
{{ $image:= .Params.image }}
|
{{ $image:= .Params.image }} {{ if $image }}
|
||||||
{{ if $image }}
|
<div class="mb-10">
|
||||||
<div class="mb-10">
|
{{ partial "image" (dict "Src" $image "Alt" .Title "Class" "w-full
|
||||||
{{ partial "image" (dict "Src" $image "Alt" .Title "Class" "w-full rounded") }}
|
rounded") }}
|
||||||
</div>
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
<h1 class="h2 mb-4">{{ .Title }}</h1>
|
||||||
|
<ul class="mb-4">
|
||||||
|
<li class="mr-4 inline-block">
|
||||||
|
<a
|
||||||
|
href="{{ `authors/` | relLangURL }}{{ .Params.Author | urlize }}/"
|
||||||
|
>
|
||||||
|
<i class="fa-regular fa-circle-user mr-2"></i>{{ .Params.author }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ $categories:= .Params.categories }} {{ if $categories }}
|
||||||
|
<li class="mr-4 inline-block">
|
||||||
|
<i class="fa-regular fa-folder mr-2"></i>
|
||||||
|
{{ range $i,$p:= $categories }}
|
||||||
|
<a
|
||||||
|
href="{{ `categories/` | relLangURL }}{{ . | urlize | lower }}/"
|
||||||
|
class=""
|
||||||
|
>{{ . | humanize }}{{ if ne $i (sub (len $categories) 1) }} {{ ","
|
||||||
|
}} {{ end }}
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<h1 class="h2 mb-4">
|
<li class="mr-4 inline-block">
|
||||||
{{ .Title }}
|
<i class="fa-regular fa-clock mr-2"></i>
|
||||||
</h1>
|
{{ time.Format ":date_long" .PublishDate }}
|
||||||
<ul class="mb-4">
|
</li>
|
||||||
<li class="mr-4 inline-block">
|
</ul>
|
||||||
<a
|
<div class="content mb-10">{{ .Content }}</div>
|
||||||
href="{{ `authors/` | relLangURL }}{{ .Params.Author | urlize }}/">
|
<div class="row items-start justify-between">
|
||||||
<i class="fa-regular fa-circle-user mr-2"></i
|
{{ $tags:= .Params.tags }} {{ if $tags }}
|
||||||
>{{ .Params.author }}
|
<div class="lg:col-5 mb-10 flex items-center lg:mb-0">
|
||||||
</a>
|
<h5 class="mr-3">{{ i18n "tags" }} :</h5>
|
||||||
</li>
|
<ul>
|
||||||
{{ $categories:= .Params.categories }}
|
{{ range $i,$p:= $tags }}
|
||||||
{{ if $categories }}
|
<li class="inline-block">
|
||||||
<li class="mr-4 inline-block">
|
<a
|
||||||
<i class="fa-regular fa-folder mr-2"></i>
|
class="bg-theme-light hover:bg-primary dark:bg-darkmode-theme-light dark:hover:bg-darkmode-primary dark:hover:text-dark m-1 block rounded px-3 py-1 hover:text-white"
|
||||||
{{ range $i,$p:= $categories }}
|
href="{{ `tags/` | relLangURL }}{{ . | urlize | lower }}/"
|
||||||
<a
|
>
|
||||||
href="{{ `categories/` | relLangURL }}{{ . | urlize | lower }}/"
|
{{ . | humanize }}
|
||||||
class=""
|
</a>
|
||||||
>{{ . | humanize }}{{ if ne $i (sub (len $categories) 1) }}
|
|
||||||
{{ "," }}
|
|
||||||
{{ end }}
|
|
||||||
</a>
|
|
||||||
{{ end }}
|
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<li class="mr-4 inline-block">
|
</ul>
|
||||||
<i class="fa-regular fa-clock mr-2"></i>
|
|
||||||
{{ time.Format ":date_long" .PublishDate }}
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<div class="content mb-10">
|
|
||||||
{{ .Content }}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row items-start justify-between">
|
|
||||||
{{ $tags:= .Params.tags }}
|
|
||||||
{{ if $tags }}
|
|
||||||
<div class="lg:col-5 mb-10 flex items-center lg:mb-0">
|
|
||||||
<h5 class="mr-3">{{ i18n "tags" }} :</h5>
|
|
||||||
<ul>
|
|
||||||
{{ range $i,$p:= $tags }}
|
|
||||||
<li class="inline-block">
|
|
||||||
<a
|
|
||||||
class="bg-theme-light hover:bg-primary dark:bg-darkmode-theme-light dark:hover:bg-darkmode-primary dark:hover:text-dark m-1 block rounded px-3 py-1 hover:text-white"
|
|
||||||
href="{{ `tags/` | relLangURL }}{{ . | urlize | lower }}/">
|
|
||||||
{{ . | humanize }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
<div class="lg:col-4 flex items-center">
|
|
||||||
{{ partial "social-share" (dict "Context" . "Class" "share-icons" "Title" (i18n "share") "Whatsapp" false "Telegram" false "Linkedin" false "Pinterest" false "Tumblr" false "Vk" false) }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- comments -->
|
|
||||||
{{ if site.Config.Services.Disqus.Shortname }}
|
|
||||||
<div class="mt-20">
|
|
||||||
{{ template "_internal/disqus.html" . }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</article>
|
<div class="lg:col-4 flex items-center">
|
||||||
</div>
|
{{ partial "social-share" (dict "Context" . "Class" "share-icons"
|
||||||
|
"Title" (i18n "share") "Whatsapp" false "Telegram" false "Linkedin"
|
||||||
<!-- Related posts -->
|
false "Pinterest" false "Tumblr" false "Vk" false) }}
|
||||||
{{ $related := (where site.RegularPages "Section" "in" site.Params.mainSections) | intersect (where site.RegularPages ".Title" "!=" .Title) | union (site.RegularPages.Related . ) }}
|
|
||||||
{{ $related = $related | shuffle | first 3 }}
|
|
||||||
{{ with $related }}
|
|
||||||
<div class="section pb-0">
|
|
||||||
<h2 class="h3 mb-12">{{ i18n "related_posts" }}</h2>
|
|
||||||
<div class="row">
|
|
||||||
{{ range . }}
|
|
||||||
<div class="lg:col-4">
|
|
||||||
{{ partial "components/blog-card" . }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
<!-- comments -->
|
||||||
|
{{ if site.Config.Services.Disqus.Shortname }}
|
||||||
|
<div class="mt-20">{{ template "_internal/disqus.html" . }}</div>
|
||||||
|
{{ end }}
|
||||||
|
</article>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
|
||||||
|
<!-- Related posts -->
|
||||||
|
{{ $related := (where site.RegularPages "Section" "in"
|
||||||
|
site.Params.mainSections) | intersect (where site.RegularPages ".Title" "!="
|
||||||
|
.Title) | union (site.RegularPages.Related . ) }} {{ $related = $related |
|
||||||
|
shuffle | first 3 }} {{ with $related }}
|
||||||
|
<div class="section pb-0">
|
||||||
|
<h2 class="h3 mb-12">{{ i18n "related_posts" }}</h2>
|
||||||
|
<div class="row">
|
||||||
|
{{ range . }}
|
||||||
|
<div class="lg:col-4">{{ partial "components/blog-card" . }}</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,120 +1,114 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }} {{ partial "page-header" . }}
|
||||||
{{ partial "page-header" . }}
|
|
||||||
|
|
||||||
|
<section class="section-sm">
|
||||||
<section class="section-sm">
|
<div class="container">
|
||||||
<div class="container">
|
<div class="row">
|
||||||
<div class="row">
|
<div class="md:col-10 lg:col-6 mx-auto">
|
||||||
<div class="md:col-10 lg:col-6 mx-auto">
|
<form action="{{ site.Params.contact_form_action }}" method="POST">
|
||||||
<form action="{{ site.Params.contact_form_action }}" method="POST">
|
<div class="mb-6">
|
||||||
<div class="mb-6">
|
<label for="name" class="form-label">
|
||||||
<label for="name" class="form-label">
|
Full Name <span class="text-red-500">*</span>
|
||||||
Full Name <span class="text-red-500">*</span>
|
</label>
|
||||||
</label>
|
<input
|
||||||
<input
|
id="name"
|
||||||
id="name"
|
name="name"
|
||||||
name="name"
|
class="form-input"
|
||||||
class="form-input"
|
placeholder="John Doe"
|
||||||
placeholder="John Doe"
|
type="text"
|
||||||
type="text" />
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-6">
|
<div class="mb-6">
|
||||||
<label for="email" class="form-label">
|
<label for="email" class="form-label">
|
||||||
Working Mail <span class="text-red-500">*</span>
|
Working Mail <span class="text-red-500">*</span>
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
id="email"
|
id="email"
|
||||||
name="email"
|
name="email"
|
||||||
class="form-input"
|
class="form-input"
|
||||||
placeholder="john.doe@email.com"
|
placeholder="john.doe@email.com"
|
||||||
type="email" />
|
type="email"
|
||||||
</div>
|
/>
|
||||||
<div class="mb-6">
|
</div>
|
||||||
<label for="message" class="form-label">
|
<div class="mb-6">
|
||||||
Anything else? <span class="text-red-500">*</span>
|
<label for="message" class="form-label">
|
||||||
</label>
|
Anything else? <span class="text-red-500">*</span>
|
||||||
<textarea
|
</label>
|
||||||
id="message"
|
<textarea
|
||||||
name="message"
|
id="message"
|
||||||
class="form-input"
|
name="message"
|
||||||
placeholder="Message goes here..."
|
class="form-input"
|
||||||
rows="8"></textarea>
|
placeholder="Message goes here..."
|
||||||
</div>
|
rows="8"
|
||||||
<button type="submit" class="btn btn-primary">Submit</button>
|
></textarea>
|
||||||
</form>
|
</div>
|
||||||
</div>
|
<button type="submit" class="btn btn-primary">Submit</button>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<!-- google map -->
|
<!-- google map -->
|
||||||
{{ with site.Params.google_map }}
|
{{ with site.Params.google_map }} {{ if .enable }}
|
||||||
{{ if .enable }}
|
<div
|
||||||
<div
|
id="map"
|
||||||
id="map"
|
style="height: 400px"
|
||||||
style="height: 400px;"
|
data-latitude="{{ .map_latitude }}"
|
||||||
data-latitude="{{ .map_latitude }}"
|
data-longitude="{{ .map_longitude }}"
|
||||||
data-longitude="{{ .map_longitude }}"
|
data-marker="{{ .map_marker | relURL }}"
|
||||||
data-marker="{{ .map_marker | relURL }}"
|
data-marker-name="{{ site.Title }}"
|
||||||
data-marker-name="{{ site.Title }}"></div>
|
></div>
|
||||||
{{ end }}
|
{{ end }} {{ end }} {{ with site.Params.subscription }} {{ if .enable }}
|
||||||
{{ end }}
|
<!-- subscription form -->
|
||||||
|
<form
|
||||||
{{ with site.Params.subscription }}
|
action="{{ .mailchimp_form_action | safeURL }}"
|
||||||
{{ if .enable }}
|
method="post"
|
||||||
<!-- subscription form -->
|
id="mc-embedded-subscribe-form"
|
||||||
<form
|
novalidate="novalidate"
|
||||||
action="{{ .mailchimp_form_action | safeURL }}"
|
>
|
||||||
method="post"
|
<div class="input-group w-75 mx-auto mb-3">
|
||||||
id="mc-embedded-subscribe-form"
|
<input
|
||||||
novalidate="novalidate">
|
type="email"
|
||||||
<div class="input-group w-75 mx-auto mb-3">
|
name="EMAIL"
|
||||||
<input
|
placeholder="Email"
|
||||||
type="email"
|
class="form-control required email mce_inline_error"
|
||||||
name="EMAIL"
|
id="mce-EMAIL"
|
||||||
placeholder="Email"
|
aria-required="true"
|
||||||
class="form-control required email mce_inline_error"
|
autocomplete="off"
|
||||||
id="mce-EMAIL"
|
required
|
||||||
aria-required="true"
|
/>
|
||||||
autocomplete="off"
|
<button
|
||||||
required />
|
class="input-group-text"
|
||||||
<button
|
name="subscribe"
|
||||||
class="input-group-text"
|
id="mc-embedded-subscribe"
|
||||||
name="subscribe"
|
>
|
||||||
id="mc-embedded-subscribe">
|
{{ .button_label }}
|
||||||
{{ .button_label }}
|
</button>
|
||||||
</button>
|
</div>
|
||||||
</div>
|
<input type="hidden" name="EMAILTYPE" id="mce-EMAILTYPE-0" value="html" />
|
||||||
<input
|
<div style="position: absolute; left: -5000px" aria-hidden="true">
|
||||||
type="hidden"
|
<input type="text" name="{{ .name }}" tabindex="-1" />
|
||||||
name="EMAILTYPE"
|
</div>
|
||||||
id="mce-EMAILTYPE-0"
|
</form>
|
||||||
value="html" />
|
<div id="mce-responses" class="clear">
|
||||||
<div style="position:absolute;left:-5000px" aria-hidden="true">
|
<div
|
||||||
<input type="text" name="{{ .name }}" tabindex="-1" />
|
class="response text-white"
|
||||||
</div>
|
id="mce-error-response"
|
||||||
</form>
|
style="display: none"
|
||||||
<div id="mce-responses" class="clear">
|
></div>
|
||||||
<div
|
<div
|
||||||
class="response text-white"
|
class="response text-white"
|
||||||
id="mce-error-response"
|
id="mce-success-response"
|
||||||
style="display:none"></div>
|
style="display: none"
|
||||||
<div
|
></div>
|
||||||
class="response text-white"
|
</div>
|
||||||
id="mce-success-response"
|
<script
|
||||||
style="display:none"></div>
|
type="text/javascript"
|
||||||
</div>
|
src="//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js"
|
||||||
<script
|
></script>
|
||||||
type="text/javascript"
|
<!-- /subscription form -->
|
||||||
src="//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js"></script>
|
{{ end }} {{ end }} {{ if site.Params.google_map.enable }} {{ $gmap:=
|
||||||
<!-- /subscription form -->
|
resources.Get "plugins/maps/google-map.js" }}
|
||||||
{{ end }}
|
<script defer src="{{ $gmap.RelPermalink }}"></script>
|
||||||
{{ end }}
|
<script src="https://maps.googleapis.com/maps/api/js?key={{ site.Params.google_map.map_api_key }}&libraries=places"></script>
|
||||||
|
{{ end }} {{ end }}
|
||||||
{{ if site.Params.google_map.enable }}
|
|
||||||
{{ $gmap:= resources.Get "plugins/maps/google-map.js" }}
|
|
||||||
<script defer src="{{ $gmap.RelPermalink }}"></script>
|
|
||||||
<script src="https://maps.googleapis.com/maps/api/js?key={{ site.Params.google_map.map_api_key }}&libraries=places"></script>
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ end }}
|
|
||||||
|
|
|
@ -1,144 +1,142 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<!-- Banner -->
|
<!-- Banner -->
|
||||||
{{ with .Params.banner }}
|
{{ with .Params.banner }}
|
||||||
<section class="section pt-14">
|
<section class="section pt-14">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-center">
|
<div class="row justify-center">
|
||||||
<div class="lg:col-7 md:col-9 mb-8 text-center">
|
<div class="lg:col-7 md:col-9 mb-8 text-center">
|
||||||
<h1 class="mb-4 text-h3 lg:text-h1">
|
<h1 class="mb-4 text-h3 lg:text-h1">{{ .title | markdownify }}</h1>
|
||||||
{{ .title | markdownify }}
|
<p class="mb-8">{{ .content | markdownify }}</p>
|
||||||
</h1>
|
{{ with .button }} {{ if .enable }}
|
||||||
<p class="mb-8">
|
<a
|
||||||
{{ .content | markdownify }}
|
class="btn btn-primary"
|
||||||
</p>
|
href="{{ .link | absURL }}"
|
||||||
{{ with .button }}
|
{{
|
||||||
{{ if .enable }}
|
if
|
||||||
<a
|
strings.HasPrefix
|
||||||
class="btn btn-primary"
|
.link
|
||||||
href="{{ .link | absURL }}"
|
`http`
|
||||||
{{ if strings.HasPrefix .link `http` }}
|
}}
|
||||||
target="_blank" rel="noopener"
|
target="_blank"
|
||||||
{{ end }}>
|
rel="noopener"
|
||||||
{{ .label }}
|
{{
|
||||||
<i class="fa fa-arrow-right pl-2"></i>
|
end
|
||||||
</a>
|
}}
|
||||||
{{ end }}
|
>
|
||||||
{{ end }}
|
{{ .label }}
|
||||||
</div>
|
<i class="fa fa-arrow-right pl-2"></i>
|
||||||
<div class="col-12">
|
</a>
|
||||||
{{ partial "image" (dict "Src" .image "Alt" "Banner image" "Loading" "eager" "Class" "mx-auto lg:!max-w-[800px]" "DisplayXL" "800x" ) }}
|
{{ end }} {{ end }}
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
<div class="col-12">
|
||||||
{{ end }}
|
{{ partial "image" (dict "Src" .image "Alt" "Banner image" "Loading"
|
||||||
<!-- /Banner -->
|
"eager" "Class" "mx-auto lg:!max-w-[800px]" "DisplayXL" "800x" ) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
||||||
|
<!-- /Banner -->
|
||||||
|
|
||||||
<!-- Features -->
|
<!-- Features -->
|
||||||
{{ range $i, $e:= .Params.features }}
|
{{ range $i, $e:= .Params.features }}
|
||||||
<section class="section-sm {{ if (modBool $i 2) }}bg-gradient{{ end }}">
|
<section class="section-sm {{ if (modBool $i 2) }}bg-gradient{{ end }}">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row items-center justify-between">
|
<div class="row items-center justify-between">
|
||||||
<div
|
<div
|
||||||
class="mb:md-0 {{ if not (modBool $i 2) }}
|
class="mb:md-0 {{ if not (modBool $i 2) }}
|
||||||
md:order-2
|
md:order-2
|
||||||
{{ end }} md:col-5 mb-6">
|
{{ end }} md:col-5 mb-6"
|
||||||
{{ partial "image" (dict "Src" .image "Alt" "feature image" "DisplayXL" "520x" "DisplayLG" "425x" "DisplayMD" "360x") }}
|
>
|
||||||
</div>
|
{{ partial "image" (dict "Src" .image "Alt" "feature image" "DisplayXL"
|
||||||
<div
|
"520x" "DisplayLG" "425x" "DisplayMD" "360x") }}
|
||||||
class="{{ if not (modBool $i 2) }}
|
|
||||||
md:order-1
|
|
||||||
{{ end }} md:col-7 lg:col-6">
|
|
||||||
<h2 class="mb-4">
|
|
||||||
{{ .title | markdownify }}
|
|
||||||
</h2>
|
|
||||||
<p class="mb-8 text-lg">
|
|
||||||
{{ .content | markdownify }}
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
{{ range .bulletpoints }}
|
|
||||||
<li class="relative mb-4 pl-6">
|
|
||||||
<i class="fa fa-check absolute left-0 top-1.5"></i>
|
|
||||||
{{ . | markdownify }}
|
|
||||||
</li>
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
{{ with .button }}
|
|
||||||
{{ if .enable }}
|
|
||||||
<a class="btn btn-primary mt-6" href="{{ .link | absURL }}">
|
|
||||||
{{ .label }}
|
|
||||||
<i class="fa fa-arrow-right pl-2"></i>
|
|
||||||
</a>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
<div
|
||||||
{{ end }}
|
class="{{ if not (modBool $i 2) }}
|
||||||
<!-- /Features -->
|
md:order-1
|
||||||
|
{{ end }} md:col-7 lg:col-6"
|
||||||
|
>
|
||||||
|
<h2 class="mb-4">{{ .title | markdownify }}</h2>
|
||||||
|
<p class="mb-8 text-lg">{{ .content | markdownify }}</p>
|
||||||
|
<ul>
|
||||||
|
{{ range .bulletpoints }}
|
||||||
|
<li class="relative mb-4 pl-6">
|
||||||
|
<i class="fa fa-check absolute left-0 top-1.5"></i>
|
||||||
|
{{ . | markdownify }}
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
{{ with .button }} {{ if .enable }}
|
||||||
|
<a class="btn btn-primary mt-6" href="{{ .link | absURL }}">
|
||||||
|
{{ .label }}
|
||||||
|
<i class="fa fa-arrow-right pl-2"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }} {{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
||||||
|
<!-- /Features -->
|
||||||
|
|
||||||
<!-- Testimonials -->
|
<!-- Testimonials -->
|
||||||
{{ with site.GetPage "sections/testimonial" }}
|
{{ with site.GetPage "sections/testimonial" }} {{ if .Params.enable }}
|
||||||
{{ if .Params.enable }}
|
<section class="section">
|
||||||
<section class="section">
|
<div class="container">
|
||||||
<div class="container">
|
<div class="row">
|
||||||
<div class="row">
|
<div class="md:col-10 lg:col-8 xl:col-6 mx-auto mb-12 text-center">
|
||||||
<div class="md:col-10 lg:col-8 xl:col-6 mx-auto mb-12 text-center">
|
<h2 class="mb-4">{{ .Title | markdownify }}</h2>
|
||||||
<h2 class="mb-4">
|
<p>{{ .Params.description | markdownify }}</p>
|
||||||
{{ .Title | markdownify }}
|
</div>
|
||||||
</h2>
|
<div class="col-12">
|
||||||
<p>
|
<div class="swiper testimonial-slider">
|
||||||
{{ .Params.description | markdownify }}
|
<div class="swiper-wrapper">
|
||||||
</p>
|
{{ range .Params.testimonials }}
|
||||||
</div>
|
<div class="swiper-slide">
|
||||||
<div class="col-12">
|
<div
|
||||||
<div class="swiper testimonial-slider">
|
class="bg-theme-light dark:bg-darkmode-theme-light rounded-lg px-7 py-10"
|
||||||
<div class="swiper-wrapper">
|
>
|
||||||
{{ range .Params.testimonials }}
|
<div class="text-dark dark:text-white">
|
||||||
<div class="swiper-slide">
|
<svg
|
||||||
<div
|
width="33"
|
||||||
class="bg-theme-light dark:bg-darkmode-theme-light rounded-lg px-7 py-10">
|
height="20"
|
||||||
<div class="text-dark dark:text-white">
|
viewBox="0 0 33 20"
|
||||||
<svg
|
fill="none"
|
||||||
width="33"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
height="20"
|
>
|
||||||
viewBox="0 0 33 20"
|
<path
|
||||||
fill="none"
|
d="M1.28375 19.41L0.79375 18.64C1.21375 17.0067 1.75042 15.07 2.40375 12.83C3.05708 10.5433 3.75708 8.28 4.50375 6.04C5.29708 3.75333 6.06708 1.77 6.81375 0.0899959H15.3538C14.9338 2.09666 14.4904 4.26667 14.0238 6.6C13.5571 8.88666 13.1371 11.15 12.7638 13.39C12.4371 15.5833 12.1571 17.59 11.9238 19.41H1.28375ZM31.69 0.0899959L32.18 0.859998C31.76 2.54 31.2233 4.5 30.57 6.74C29.9167 8.98 29.2167 11.2433 28.47 13.53C27.7233 15.77 26.9533 17.73 26.16 19.41H17.69C18.0167 17.9167 18.3433 16.33 18.67 14.65C18.9967 12.9233 19.3 11.22 19.58 9.54C19.9067 7.81333 20.1867 6.15667 20.42 4.57C20.7 2.93666 20.91 1.44333 21.05 0.0899959H31.69Z"
|
||||||
xmlns="http://www.w3.org/2000/svg">
|
fill="currentColor"
|
||||||
<path
|
/>
|
||||||
d="M1.28375 19.41L0.79375 18.64C1.21375 17.0067 1.75042 15.07 2.40375 12.83C3.05708 10.5433 3.75708 8.28 4.50375 6.04C5.29708 3.75333 6.06708 1.77 6.81375 0.0899959H15.3538C14.9338 2.09666 14.4904 4.26667 14.0238 6.6C13.5571 8.88666 13.1371 11.15 12.7638 13.39C12.4371 15.5833 12.1571 17.59 11.9238 19.41H1.28375ZM31.69 0.0899959L32.18 0.859998C31.76 2.54 31.2233 4.5 30.57 6.74C29.9167 8.98 29.2167 11.2433 28.47 13.53C27.7233 15.77 26.9533 17.73 26.16 19.41H17.69C18.0167 17.9167 18.3433 16.33 18.67 14.65C18.9967 12.9233 19.3 11.22 19.58 9.54C19.9067 7.81333 20.1867 6.15667 20.42 4.57C20.7 2.93666 20.91 1.44333 21.05 0.0899959H31.69Z"
|
</svg>
|
||||||
fill="currentColor" />
|
</div>
|
||||||
</svg>
|
<blockquote class="mt-8">
|
||||||
</div>
|
{{ .content | markdownify }}
|
||||||
<blockquote class="mt-8">
|
</blockquote>
|
||||||
{{ .content | markdownify }}
|
<div class="mt-11 flex items-center">
|
||||||
</blockquote>
|
<div class="text-dark dark:text-white">
|
||||||
<div class="mt-11 flex items-center">
|
{{ partial "image" (dict "Src" .avatar "Size" "50x50"
|
||||||
<div class="text-dark dark:text-white">
|
"Class" "rounded-full" "Alt" .name) }}
|
||||||
{{ partial "image" (dict "Src" .avatar "Size" "50x50" "Class" "rounded-full" "Alt" .name) }}
|
</div>
|
||||||
</div>
|
<div class="ml-4">
|
||||||
<div class="ml-4">
|
<h3 class="h5 font-primary font-semibold">{{ .name }}</h3>
|
||||||
<h3 class="h5 font-primary font-semibold">
|
<p class="text-dark dark:text-white">
|
||||||
{{ .name }}
|
{{ .designation | markdownify }}
|
||||||
</h3>
|
</p>
|
||||||
<p class="text-dark dark:text-white">
|
</div>
|
||||||
{{ .designation | markdownify }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
class="testimonial-slider-pagination mt-9 flex items-center justify-center text-center"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
class="testimonial-slider-pagination mt-9 flex items-center justify-center text-center"
|
||||||
|
></div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</div>
|
||||||
{{ end }}
|
</div>
|
||||||
{{ end }}
|
</div>
|
||||||
<!-- /Testimonials -->
|
</section>
|
||||||
|
{{ end }} {{ end }}
|
||||||
|
<!-- /Testimonials -->
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,33 +1,27 @@
|
||||||
<!-- Call to actions -->
|
<!-- Call to actions -->
|
||||||
{{ with site.GetPage "sections/call-to-action" }}
|
{{ with site.GetPage "sections/call-to-action" }} {{ if .Params.enable }}
|
||||||
{{ if .Params.enable }}
|
<section class="mb-28">
|
||||||
<section class="mb-28">
|
<div class="container">
|
||||||
<div class="container">
|
<div
|
||||||
<div
|
class="bg-theme-light dark:bg-darkmode-theme-light rounded-xl px-4 py-16 xl:p-20"
|
||||||
class="bg-theme-light dark:bg-darkmode-theme-light rounded-xl px-4 py-16 xl:p-20">
|
>
|
||||||
<div class="row items-center justify-between">
|
<div class="row items-center justify-between">
|
||||||
<div class="md:col-5 lg:col-4 mb-10 md:order-2 md:mb-0">
|
<div class="md:col-5 lg:col-4 mb-10 md:order-2 md:mb-0">
|
||||||
{{ partial "image" (dict "Src" .image "Alt" "call to action" "Class" "w-full") }}
|
{{ partial "image" (dict "Src" .image "Alt" "call to action" "Class"
|
||||||
</div>
|
"w-full") }}
|
||||||
<div class="md:col-7 md:order-1">
|
</div>
|
||||||
<h2 class="mb-2">
|
<div class="md:col-7 md:order-1">
|
||||||
{{ .Title | markdownify }}
|
<h2 class="mb-2">{{ .Title | markdownify }}</h2>
|
||||||
</h2>
|
<p class="mb-6">{{ .Params.description | markdownify }}</p>
|
||||||
<p class="mb-6">
|
{{ with .Params.button }} {{ if .enable }}
|
||||||
{{ .Params.description | markdownify }}
|
<a class="btn btn-primary" href="{{ .link | absURL }}">
|
||||||
</p>
|
{{ .label }}
|
||||||
{{ with .Params.button }}
|
</a>
|
||||||
{{ if .enable }}
|
{{ end }} {{ end }}
|
||||||
<a class="btn btn-primary" href="{{ .link | absURL }}">
|
|
||||||
{{ .label }}
|
|
||||||
</a>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</div>
|
||||||
{{ end }}
|
</div>
|
||||||
{{ end }}
|
</section>
|
||||||
|
{{ end }} {{ end }}
|
||||||
<!-- /Call to actions -->
|
<!-- /Call to actions -->
|
||||||
|
|
|
@ -1,30 +1,29 @@
|
||||||
<div
|
<div
|
||||||
class="bg-theme-light dark:bg-darkmode-theme-light rounded p-8 text-center">
|
class="bg-theme-light dark:bg-darkmode-theme-light rounded p-8 text-center"
|
||||||
{{ $image:= .Params.image }}
|
>
|
||||||
{{ if $image }}
|
{{ $image:= .Params.image }} {{ if $image }} {{ partial "image" (dict "Src"
|
||||||
{{ partial "image" (dict "Src" $image "Alt" .Title "Class" "mx-auto mb-6 rounded" "size" "120x120") }}
|
$image "Alt" .Title "Class" "mx-auto mb-6 rounded" "size" "120x120") }} {{
|
||||||
{{ else if .Params.Email }}
|
else if .Params.Email }}
|
||||||
<img
|
<img
|
||||||
class="mx-auto mb-6 rounded"
|
class="mx-auto mb-6 rounded"
|
||||||
alt="{{ .Title }}"
|
alt="{{ .Title }}"
|
||||||
height="120"
|
height="120"
|
||||||
width="120"
|
width="120"
|
||||||
src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=128&pg&d=identicon" />
|
src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=128&pg&d=identicon"
|
||||||
|
/>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<h4 class="mb-3">
|
<h4 class="mb-3">
|
||||||
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
|
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<p class="mb-4">
|
<p class="mb-4">{{ .Summary }}</p>
|
||||||
{{ .Summary }}
|
|
||||||
</p>
|
|
||||||
<ul class="social-icons">
|
<ul class="social-icons">
|
||||||
{{ range .Params.social }}
|
{{ range .Params.social }}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ .link | safeURL }}" target="_blank" rel="noopener nofollow">
|
<a href="{{ .link | safeURL }}" target="_blank" rel="noopener nofollow">
|
||||||
<span class="sr-only">{{ .title }}</span>
|
<span class="sr-only">{{ .title }}</span>
|
||||||
<i class="{{ .icon }}"></i>
|
<i class="{{ .icon }}"></i>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,34 +1,28 @@
|
||||||
<div class="bg-body dark:bg-darkmode-body">
|
<div class="bg-body dark:bg-darkmode-body">
|
||||||
{{ $image:= .Params.image }}
|
{{ $image:= .Params.image }} {{ if $image }} {{ partial "image" (dict "Src"
|
||||||
{{ if $image }}
|
$image "Alt" .Title "Class" "mb-6 w-full rounded") }} {{ end }}
|
||||||
{{ partial "image" (dict "Src" $image "Alt" .Title "Class" "mb-6 w-full rounded") }}
|
|
||||||
{{ end }}
|
|
||||||
<h4 class="mb-3">
|
<h4 class="mb-3">
|
||||||
<a href="{{ .RelPermalink }}">
|
<a href="{{ .RelPermalink }}"> {{ .Title }} </a>
|
||||||
{{ .Title }}
|
|
||||||
</a>
|
|
||||||
</h4>
|
</h4>
|
||||||
{{ $categories:= .Params.categories }}
|
{{ $categories:= .Params.categories }} {{ if $categories }}
|
||||||
{{ if $categories }}
|
<ul class="mb-4">
|
||||||
<ul class="mb-4">
|
<li class="mr-4 inline-block">
|
||||||
<li class="mr-4 inline-block">
|
<a href="{{ `authors/` | relLangURL }}{{ .Params.Author | urlize }}/">
|
||||||
<a href="{{ `authors/` | relLangURL }}{{ .Params.Author | urlize }}/">
|
<i class="fa-regular fa-circle-user mr-2"></i>{{ .Params.author }}
|
||||||
<i class="fa-regular fa-circle-user mr-2"></i>{{ .Params.author }}
|
</a>
|
||||||
</a>
|
</li>
|
||||||
</li>
|
<li class="mr-4 inline-block">
|
||||||
<li class="mr-4 inline-block">
|
<i class="fa-regular fa-folder mr-1"></i>
|
||||||
<i class="fa-regular fa-folder mr-1"></i>
|
{{ range $i,$p:= $categories }}
|
||||||
{{ range $i,$p:= $categories }}
|
<a
|
||||||
<a
|
href="{{ `categories/` | relLangURL }}{{ . | urlize | lower }}/"
|
||||||
href="{{ `categories/` | relLangURL }}{{ . | urlize | lower }}/"
|
class="ms-1"
|
||||||
class="ms-1"
|
>{{ . | humanize }}{{ if ne $i (sub (len $categories) 1) }} {{ "," }} {{
|
||||||
>{{ . | humanize }}{{ if ne $i (sub (len $categories) 1) }}
|
end }}
|
||||||
{{ "," }}
|
</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</a>
|
</li>
|
||||||
{{ end }}
|
</ul>
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<p class="mb-6">{{ .Summary }}</p>
|
<p class="mb-6">{{ .Summary }}</p>
|
||||||
<a class="btn btn-outline-primary btn-sm" href="{{ .RelPermalink }}">
|
<a class="btn btn-outline-primary btn-sm" href="{{ .RelPermalink }}">
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
{{ $context := .Context }}
|
{{ $context := .Context }} {{ $class := .Class }} {{ $base :=
|
||||||
{{ $class := .Class }}
|
site.Home.Permalink }}
|
||||||
{{ $base := site.Home.Permalink }}
|
|
||||||
|
|
||||||
|
|
||||||
<ul class="{{ $class }} inline-flex space-x-1 capitalize">
|
<ul class="{{ $class }} inline-flex space-x-1 capitalize">
|
||||||
<li>
|
<li>
|
||||||
|
@ -10,18 +8,18 @@
|
||||||
</a>
|
</a>
|
||||||
<span class="inlin-block mr-1">/</span>
|
<span class="inlin-block mr-1">/</span>
|
||||||
</li>
|
</li>
|
||||||
{{ range $i, $e:= $context.Ancestors.Reverse }}
|
{{ range $i, $e:= $context.Ancestors.Reverse }} {{ if and (not .IsHome) (ne
|
||||||
{{ if and (not .IsHome) (ne .Title "Pages") }}
|
.Title "Pages") }}
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
class="text-primary dark:text-darkmode-primary"
|
class="text-primary dark:text-darkmode-primary"
|
||||||
href="{{ .RelPermalink }}">
|
href="{{ .RelPermalink }}"
|
||||||
{{ i18n (printf "%s" (lower .Title)) | default .Title }}
|
>
|
||||||
</a>
|
{{ i18n (printf "%s" (lower .Title)) | default .Title }}
|
||||||
<span class="inlin-block mr-1">/</span>
|
</a>
|
||||||
</li>
|
<span class="inlin-block mr-1">/</span>
|
||||||
{{ end }}
|
</li>
|
||||||
{{ end }}
|
{{ end }} {{ end }}
|
||||||
<li>
|
<li>
|
||||||
<span class="text-primary dark:text-darkmode-primary">
|
<span class="text-primary dark:text-darkmode-primary">
|
||||||
{{ i18n (printf "%s" (lower $context.Title)) | default $context.Title }}
|
{{ i18n (printf "%s" (lower $context.Title)) | default $context.Title }}
|
||||||
|
|
|
@ -1,28 +1,25 @@
|
||||||
<!-- Language List -->
|
<!-- Language List -->
|
||||||
{{ $class := .Class }}
|
{{ $class := .Class }} {{ $context := .Context }} {{ $pageLang := $context.Lang
|
||||||
{{ $context := .Context }}
|
}} {{ $base:= urls.Parse site.Home.Permalink }} {{ $siteLanguages :=
|
||||||
{{ $pageLang := $context.Lang }}
|
site.Home.AllTranslations }} {{ $pageLink := replace (replace
|
||||||
{{ $base:= urls.Parse site.Home.Permalink }}
|
$context.RelPermalink (add $pageLang "/") "") $base.Path "/" }} {{ if
|
||||||
{{ $siteLanguages := site.Home.AllTranslations }}
|
$context.IsTranslated }}
|
||||||
{{ $pageLink := replace (replace $context.RelPermalink (add $pageLang "/") "") $base.Path "/" }}
|
<select class="{{ $class }}" onchange="location = this.value">
|
||||||
|
{{ range $siteLanguages }} {{ if eq (string $pageLang) (string .Language) }}
|
||||||
{{ if $context.IsTranslated }}
|
<option
|
||||||
<select class="{{ $class }}" onchange="location = this.value">
|
id="{{ .Language }}"
|
||||||
{{ range $siteLanguages }}
|
value="{{ replace (add .RelPermalink $pageLink) `//` `/` }}"
|
||||||
{{ if eq (string $pageLang) (string .Language) }}
|
selected
|
||||||
<option
|
>
|
||||||
id="{{ .Language }}"
|
{{ .Language.LanguageName }}
|
||||||
value="{{ replace (add .RelPermalink $pageLink) `//` `/` }}"
|
</option>
|
||||||
selected>
|
{{ else }}
|
||||||
{{ .Language.LanguageName }}
|
<option
|
||||||
</option>
|
id="{{ .Language }}"
|
||||||
{{ else }}
|
value="{{ replace (add .RelPermalink $pageLink) `//` `/` }}"
|
||||||
<option
|
>
|
||||||
id="{{ .Language }}"
|
{{ .Language.LanguageName }}
|
||||||
value="{{ replace (add .RelPermalink $pageLink) `//` `/` }}">
|
</option>
|
||||||
{{ .Language.LanguageName }}
|
{{ end }} {{ end }}
|
||||||
</option>
|
</select>
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
</select>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -9,130 +9,128 @@
|
||||||
{{ $upper_limit := (sub $paginator.TotalPages $adjacent_links) }}
|
{{ $upper_limit := (sub $paginator.TotalPages $adjacent_links) }}
|
||||||
<!-- If there's more than one page. -->
|
<!-- If there's more than one page. -->
|
||||||
{{ if gt $paginator.TotalPages 1 }}
|
{{ if gt $paginator.TotalPages 1 }}
|
||||||
<nav
|
<nav class="flex items-center justify-center space-x-3" aria-label="Pagination">
|
||||||
class="flex items-center justify-center space-x-3"
|
<!-- Previous page. -->
|
||||||
aria-label="Pagination">
|
{{ if $paginator.HasPrev }}
|
||||||
<!-- Previous page. -->
|
<a
|
||||||
{{ if $paginator.HasPrev }}
|
class="text-dark hover:bg-theme-light dark:text-darkmode-dark dark:hover:bg-darkmode-theme-light rounded px-2 py-1.5"
|
||||||
<a
|
href="{{ $paginator.Prev.URL }}"
|
||||||
class="text-dark hover:bg-theme-light dark:text-darkmode-dark dark:hover:bg-darkmode-theme-light rounded px-2 py-1.5"
|
aria-label="Pagination Arrow"
|
||||||
href="{{ $paginator.Prev.URL }}"
|
>
|
||||||
aria-label="Pagination Arrow">
|
<span class="sr-only">Previous</span>
|
||||||
<span class="sr-only">Previous</span>
|
<svg
|
||||||
<svg
|
viewBox="0 0 20 20"
|
||||||
viewBox="0 0 20 20"
|
fill="currentColor"
|
||||||
fill="currentColor"
|
aria-hidden="true"
|
||||||
aria-hidden="true"
|
height="30"
|
||||||
height="30"
|
width="30"
|
||||||
width="30">
|
>
|
||||||
<path
|
<path
|
||||||
fill-rule="evenodd"
|
fill-rule="evenodd"
|
||||||
d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"
|
d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"
|
||||||
clip-rule="evenodd" />
|
clip-rule="evenodd"
|
||||||
</svg>
|
/>
|
||||||
</a>
|
</svg>
|
||||||
{{ else }}
|
</a>
|
||||||
<span class="text-light rounded px-2 py-1.5">
|
{{ else }}
|
||||||
<span class="sr-only">Previous</span>
|
<span class="text-light rounded px-2 py-1.5">
|
||||||
<svg
|
<span class="sr-only">Previous</span>
|
||||||
viewBox="0 0 20 20"
|
<svg
|
||||||
fill="currentColor"
|
viewBox="0 0 20 20"
|
||||||
aria-hidden="true"
|
fill="currentColor"
|
||||||
height="30"
|
aria-hidden="true"
|
||||||
width="30">
|
height="30"
|
||||||
<path
|
width="30"
|
||||||
fill-rule="evenodd"
|
>
|
||||||
d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"
|
<path
|
||||||
clip-rule="evenodd" />
|
fill-rule="evenodd"
|
||||||
</svg>
|
d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"
|
||||||
</span>
|
clip-rule="evenodd"
|
||||||
{{ end }}
|
/>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
{{ 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 }} {{ if eq . $paginator }}
|
||||||
|
<span
|
||||||
|
aria-current="page"
|
||||||
|
class="bg-primary dark:bg-darkmode-primary dark:text-dark rounded px-4 py-2 text-white"
|
||||||
|
>
|
||||||
|
{{ .PageNumber }}
|
||||||
|
</span>
|
||||||
|
{{ else }}
|
||||||
|
<a
|
||||||
|
href="{{ .URL }}"
|
||||||
|
aria-current="page"
|
||||||
|
class="text-dark hover:bg-theme-light dark:text-darkmode-dark dark:hover:bg-darkmode-theme-light rounded px-4 py-2"
|
||||||
|
>
|
||||||
|
{{ .PageNumber }}
|
||||||
|
</a>
|
||||||
|
{{ end }} {{ end }} {{ end }}
|
||||||
|
|
||||||
<!-- Page numbers -->
|
<!-- Next page. -->
|
||||||
{{ range $paginator.Pagers }}
|
{{ if $paginator.HasNext }}
|
||||||
{{ $.Scratch.Set "page_number_flag" false }}
|
<a
|
||||||
<!-- Advanced page numbers. -->
|
class="text-dark hover:bg-theme-light dark:text-darkmode-dark dark:hover:bg-darkmode-theme-light rounded px-2 py-1.5"
|
||||||
{{ if gt $paginator.TotalPages $max_links }}
|
href="{{ $paginator.Next.URL }}"
|
||||||
<!-- Lower limit pages. -->
|
aria-label="Pagination Arrow"
|
||||||
<!-- If the user is on a page which is in the lower limit. -->
|
>
|
||||||
{{ if le $paginator.PageNumber $lower_limit }}
|
<span class="sr-only">Next</span>
|
||||||
<!-- If the current loop page is less than max_links. -->
|
<svg
|
||||||
{{ if le .PageNumber $max_links }}
|
viewBox="0 0 20 20"
|
||||||
{{ $.Scratch.Set "page_number_flag" true }}
|
fill="currentColor"
|
||||||
{{ end }}
|
aria-hidden="true"
|
||||||
<!-- Upper limit pages. -->
|
height="30"
|
||||||
<!-- If the user is on a page which is in the upper limit. -->
|
width="30"
|
||||||
{{ else if ge $paginator.PageNumber $upper_limit }}
|
>
|
||||||
<!-- If the current loop page is greater than total pages minus $max_links -->
|
<path
|
||||||
{{ if gt .PageNumber (sub $paginator.TotalPages $max_links) }}
|
fill-rule="evenodd"
|
||||||
{{ $.Scratch.Set "page_number_flag" true }}
|
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
||||||
{{ end }}
|
clip-rule="evenodd"
|
||||||
<!-- Middle pages. -->
|
/>
|
||||||
{{ else }}
|
</svg>
|
||||||
{{ if and ( ge .PageNumber (sub $paginator.PageNumber $adjacent_links) ) ( le .PageNumber (add $paginator.PageNumber $adjacent_links) ) }}
|
</a>
|
||||||
{{ $.Scratch.Set "page_number_flag" true }}
|
{{ else }}
|
||||||
{{ end }}
|
<span class="text-light rounded px-2 py-1.5">
|
||||||
{{ end }}
|
<span class="sr-only">Next</span>
|
||||||
<!-- Simple page numbers. -->
|
<svg
|
||||||
{{ else }}
|
viewBox="0 0 20 20"
|
||||||
{{ $.Scratch.Set "page_number_flag" true }}
|
fill="currentColor"
|
||||||
{{ end }}
|
aria-hidden="true"
|
||||||
<!-- Output page numbers. -->
|
height="30"
|
||||||
{{ if eq ($.Scratch.Get "page_number_flag") true }}
|
width="30"
|
||||||
|
>
|
||||||
{{ if eq . $paginator }}
|
<path
|
||||||
<span
|
fill-rule="evenodd"
|
||||||
aria-current="page"
|
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
||||||
class="bg-primary dark:bg-darkmode-primary dark:text-dark rounded px-4 py-2 text-white">
|
clip-rule="evenodd"
|
||||||
{{ .PageNumber }}
|
/>
|
||||||
</span>
|
</svg>
|
||||||
{{ else }}
|
</span>
|
||||||
<a
|
{{ end }}
|
||||||
href="{{ .URL }}"
|
</nav>
|
||||||
aria-current="page"
|
|
||||||
class="text-dark hover:bg-theme-light dark:text-darkmode-dark dark:hover:bg-darkmode-theme-light rounded px-4 py-2">
|
|
||||||
{{ .PageNumber }}
|
|
||||||
</a>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Next page. -->
|
|
||||||
{{ if $paginator.HasNext }}
|
|
||||||
<a
|
|
||||||
class="text-dark hover:bg-theme-light dark:text-darkmode-dark dark:hover:bg-darkmode-theme-light rounded px-2 py-1.5"
|
|
||||||
href="{{ $paginator.Next.URL }}"
|
|
||||||
aria-label="Pagination Arrow">
|
|
||||||
<span class="sr-only">Next</span>
|
|
||||||
<svg
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
fill="currentColor"
|
|
||||||
aria-hidden="true"
|
|
||||||
height="30"
|
|
||||||
width="30">
|
|
||||||
<path
|
|
||||||
fill-rule="evenodd"
|
|
||||||
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
|
||||||
clip-rule="evenodd" />
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
{{ else }}
|
|
||||||
<span class="text-light rounded px-2 py-1.5">
|
|
||||||
<span class="sr-only">Next</span>
|
|
||||||
<svg
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
fill="currentColor"
|
|
||||||
aria-hidden="true"
|
|
||||||
height="30"
|
|
||||||
width="30">
|
|
||||||
<path
|
|
||||||
fill-rule="evenodd"
|
|
||||||
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
|
||||||
clip-rule="evenodd" />
|
|
||||||
</svg>
|
|
||||||
</span>
|
|
||||||
{{ end }}
|
|
||||||
</nav>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,62 +1,65 @@
|
||||||
<!-- theme switcher -->
|
<!-- theme switcher -->
|
||||||
{{ $class := .Class }}
|
{{ $class := .Class }} {{ if site.Params.theme_switcher }}
|
||||||
{{ if site.Params.theme_switcher }}
|
<div class="theme-switcher {{ $class }}">
|
||||||
<div class="theme-switcher {{ $class }}">
|
<input id="theme-switcher" data-theme-switcher type="checkbox" />
|
||||||
<input id="theme-switcher" data-theme-switcher type="checkbox" />
|
<label for="theme-switcher">
|
||||||
<label for="theme-switcher">
|
<span class="sr-only">theme switcher</span>
|
||||||
<span class="sr-only">theme switcher</span>
|
<span>
|
||||||
<span>
|
<!-- sun -->
|
||||||
<!-- sun -->
|
<svg
|
||||||
<svg
|
class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-10 opacity-100 dark:opacity-0"
|
||||||
class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-10 opacity-100 dark:opacity-0"
|
viewBox="0 0 56 56"
|
||||||
viewBox="0 0 56 56"
|
fill="#fff"
|
||||||
fill="#fff"
|
height="16"
|
||||||
height="16"
|
width="16"
|
||||||
width="16">
|
>
|
||||||
<path
|
<path
|
||||||
d="M30 4.6c0-1-.9-2-2-2a2 2 0 0 0-2 2v5c0 1 .9 2 2 2s2-1 2-2Zm9.6 9a2 2 0 0 0 0 2.8c.8.8 2 .8 2.9 0L46 13a2 2 0 0 0 0-2.9 2 2 0 0 0-3 0Zm-26 2.8c.7.8 2 .8 2.8 0 .8-.7.8-2 0-2.9L13 10c-.7-.7-2-.8-2.9 0-.7.8-.7 2.1 0 3ZM28 16a12 12 0 0 0-12 12 12 12 0 0 0 12 12 12 12 0 0 0 12-12 12 12 0 0 0-12-12Zm23.3 14c1.1 0 2-.9 2-2s-.9-2-2-2h-4.9a2 2 0 0 0-2 2c0 1.1 1 2 2 2ZM4.7 26a2 2 0 0 0-2 2c0 1.1.9 2 2 2h4.9c1 0 2-.9 2-2s-1-2-2-2Zm37.8 13.6a2 2 0 0 0-3 0 2 2 0 0 0 0 2.9l3.6 3.5a2 2 0 0 0 2.9 0c.8-.8.8-2.1 0-3ZM10 43.1a2 2 0 0 0 0 2.9c.8.7 2.1.8 3 0l3.4-3.5c.8-.8.8-2.1 0-2.9-.8-.8-2-.8-2.9 0Zm20 3.4c0-1.1-.9-2-2-2a2 2 0 0 0-2 2v4.9c0 1 .9 2 2 2s2-1 2-2Z" />
|
d="M30 4.6c0-1-.9-2-2-2a2 2 0 0 0-2 2v5c0 1 .9 2 2 2s2-1 2-2Zm9.6 9a2 2 0 0 0 0 2.8c.8.8 2 .8 2.9 0L46 13a2 2 0 0 0 0-2.9 2 2 0 0 0-3 0Zm-26 2.8c.7.8 2 .8 2.8 0 .8-.7.8-2 0-2.9L13 10c-.7-.7-2-.8-2.9 0-.7.8-.7 2.1 0 3ZM28 16a12 12 0 0 0-12 12 12 12 0 0 0 12 12 12 12 0 0 0 12-12 12 12 0 0 0-12-12Zm23.3 14c1.1 0 2-.9 2-2s-.9-2-2-2h-4.9a2 2 0 0 0-2 2c0 1.1 1 2 2 2ZM4.7 26a2 2 0 0 0-2 2c0 1.1.9 2 2 2h4.9c1 0 2-.9 2-2s-1-2-2-2Zm37.8 13.6a2 2 0 0 0-3 0 2 2 0 0 0 0 2.9l3.6 3.5a2 2 0 0 0 2.9 0c.8-.8.8-2.1 0-3ZM10 43.1a2 2 0 0 0 0 2.9c.8.7 2.1.8 3 0l3.4-3.5c.8-.8.8-2.1 0-2.9-.8-.8-2-.8-2.9 0Zm20 3.4c0-1.1-.9-2-2-2a2 2 0 0 0-2 2v4.9c0 1 .9 2 2 2s2-1 2-2Z"
|
||||||
</svg>
|
/>
|
||||||
<!-- moon -->
|
</svg>
|
||||||
<svg
|
<!-- moon -->
|
||||||
class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-10 opacity-0 dark:opacity-100"
|
<svg
|
||||||
viewBox="0 0 24 24"
|
class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-10 opacity-0 dark:opacity-100"
|
||||||
fill="none"
|
viewBox="0 0 24 24"
|
||||||
height="16"
|
fill="none"
|
||||||
width="16">
|
height="16"
|
||||||
<path
|
width="16"
|
||||||
fill="#000"
|
>
|
||||||
fill-rule="evenodd"
|
<path
|
||||||
clip-rule="evenodd"
|
fill="#000"
|
||||||
d="M8.2 2.2c1-.4 2 .6 1.6 1.5-1 3-.4 6.4 1.8 8.7a8.4 8.4 0 0 0 8.7 1.8c1-.3 2 .5 1.5 1.5v.1a10.3 10.3 0 0 1-9.4 6.2A10.3 10.3 0 0 1 3.2 6.7c1-2 2.9-3.5 4.9-4.4Z" />
|
fill-rule="evenodd"
|
||||||
</svg>
|
clip-rule="evenodd"
|
||||||
</span>
|
d="M8.2 2.2c1-.4 2 .6 1.6 1.5-1 3-.4 6.4 1.8 8.7a8.4 8.4 0 0 0 8.7 1.8c1-.3 2 .5 1.5 1.5v.1a10.3 10.3 0 0 1-9.4 6.2A10.3 10.3 0 0 1 3.2 6.7c1-2 2.9-3.5 4.9-4.4Z"
|
||||||
</label>
|
/>
|
||||||
</div>
|
</svg>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- theme switcher -->
|
<!-- theme switcher -->
|
||||||
<script>
|
<script>
|
||||||
var darkMode = {{if eq site.Params.theme_default "dark"}}true{{else}}false{{end}};
|
var darkMode = {{if eq site.Params.theme_default "dark"}}true{{else}}false{{end}};
|
||||||
|
|
||||||
{{ if eq site.Params.theme_default "system" }}
|
{{ if eq site.Params.theme_default "system" }}
|
||||||
if (window.matchMedia("(prefers-color-scheme: dark)").matches){darkMode = true}
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches){darkMode = true}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
if (localStorage.getItem("theme") === "dark"){darkMode = true}
|
if (localStorage.getItem("theme") === "dark"){darkMode = true}
|
||||||
else if (localStorage.getItem("theme") === "light"){darkMode = false}
|
else if (localStorage.getItem("theme") === "light"){darkMode = false}
|
||||||
if (darkMode){document.documentElement.classList.toggle("dark")}
|
if (darkMode){document.documentElement.classList.toggle("dark")}
|
||||||
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
var themeSwitch = document.querySelectorAll("[data-theme-switcher]");
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
[].forEach.call(themeSwitch, function (ts) {
|
[].forEach.call(themeSwitch, function (ts) {
|
||||||
ts.checked = darkMode ? true : false;
|
ts.checked = darkMode ? true : false;
|
||||||
ts.addEventListener("click", () => {
|
ts.addEventListener("click", () => {
|
||||||
document.documentElement.classList.toggle("dark");
|
document.documentElement.classList.toggle("dark");
|
||||||
localStorage.setItem(
|
localStorage.setItem(
|
||||||
"theme",
|
"theme",
|
||||||
document.documentElement.classList.contains("dark") ? "dark" : "light"
|
document.documentElement.classList.contains("dark") ? "dark" : "light"
|
||||||
);
|
);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
});
|
||||||
|
</script>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<div
|
<div
|
||||||
class="fixed left-0 top-0 z-50 flex w-[30px] items-center justify-center bg-gray-200 py-[2.5px] text-[12px] uppercase text-black sm:bg-red-200 md:bg-yellow-200 lg:bg-green-200 xl:bg-blue-200 2xl:bg-pink-200">
|
class="fixed left-0 top-0 z-50 flex w-[30px] items-center justify-center bg-gray-200 py-[2.5px] text-[12px] uppercase text-black sm:bg-red-200 md:bg-yellow-200 lg:bg-green-200 xl:bg-blue-200 2xl:bg-pink-200"
|
||||||
|
>
|
||||||
<span class="block sm:hidden">all</span>
|
<span class="block sm:hidden">all</span>
|
||||||
<span class="hidden sm:block md:hidden">sm</span>
|
<span class="hidden sm:block md:hidden">sm</span>
|
||||||
<span class="hidden md:block lg:hidden">md</span>
|
<span class="hidden md:block lg:hidden">md</span>
|
||||||
|
|
|
@ -5,43 +5,53 @@
|
||||||
<!-- navbar brand/logo -->
|
<!-- navbar brand/logo -->
|
||||||
<a
|
<a
|
||||||
class="navbar-brand inline-block"
|
class="navbar-brand inline-block"
|
||||||
href="{{ site.Home.RelPermalink }}">
|
href="{{ site.Home.RelPermalink }}"
|
||||||
|
>
|
||||||
{{ partial "logo" }}
|
{{ partial "logo" }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="lg:col-6 mb-8 text-center lg:mb-0">
|
<div class="lg:col-6 mb-8 text-center lg:mb-0">
|
||||||
<ul>
|
<ul>
|
||||||
{{ range site.Menus.footer }}
|
{{ range site.Menus.footer }}
|
||||||
<li class="m-3 inline-block">
|
<li class="m-3 inline-block">
|
||||||
<a
|
<a
|
||||||
{{ if findRE `^http` .URL }}
|
{{
|
||||||
target="_blank" rel="noopener"
|
if
|
||||||
{{ end }}
|
findRE
|
||||||
href="{{ if findRE `^#` .URL }}
|
`^http`
|
||||||
|
.URL
|
||||||
|
}}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener"
|
||||||
|
{{
|
||||||
|
end
|
||||||
|
}}
|
||||||
|
href="{{ if findRE `^#` .URL }}
|
||||||
{{ if not $.IsHome }}
|
{{ if not $.IsHome }}
|
||||||
{{ site.Home.RelPermalink }}
|
{{ site.Home.RelPermalink }}
|
||||||
{{ end }}{{ .URL }}
|
{{ end }}{{ .URL }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ .URL | relLangURL }}
|
{{ .URL | relLangURL }}
|
||||||
{{ end }}"
|
{{ end }}"
|
||||||
>{{ .Name }}</a
|
>{{ .Name }}</a
|
||||||
>
|
>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="lg:col-3 mb-8 text-center lg:mb-0 lg:mt-0 lg:text-right">
|
<div class="lg:col-3 mb-8 text-center lg:mb-0 lg:mt-0 lg:text-right">
|
||||||
<ul class="social-icons">
|
<ul class="social-icons">
|
||||||
{{ range site.Data.social.main }}
|
{{ range site.Data.social.main }}
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
target="_blank"
|
target="_blank"
|
||||||
aria-label="{{ .name }}"
|
aria-label="{{ .name }}"
|
||||||
rel="nofollow noopener"
|
rel="nofollow noopener"
|
||||||
href="{{ .link | safeURL }}">
|
href="{{ .link | safeURL }}"
|
||||||
<i class="{{ .icon }}"></i>
|
>
|
||||||
</a>
|
<i class="{{ .icon }}"></i>
|
||||||
</li>
|
</a>
|
||||||
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -49,9 +59,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="border-border dark:border-darkmode-border border-t py-7">
|
<div class="border-border dark:border-darkmode-border border-t py-7">
|
||||||
<div class="text-light dark:text-darkmode-light container text-center">
|
<div class="text-light dark:text-darkmode-light container text-center">
|
||||||
<p>
|
<p>{{ site.Params.copyright | markdownify }}</p>
|
||||||
{{ site.Params.copyright | markdownify }}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
<!-- responsive meta -->
|
<!-- responsive meta -->
|
||||||
<meta
|
<meta
|
||||||
name="viewport"
|
name="viewport"
|
||||||
content="width=device-width, initial-scale=1, maximum-scale=5" />
|
content="width=device-width, initial-scale=1, maximum-scale=5"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- theme meta -->
|
<!-- theme meta -->
|
||||||
<meta name="theme-name" content="hugoplate" />
|
<meta name="theme-name" content="hugoplate" />
|
||||||
|
@ -11,37 +12,29 @@
|
||||||
<!-- favicon -->
|
<!-- favicon -->
|
||||||
{{ partialCached "favicon" . }}
|
{{ partialCached "favicon" . }}
|
||||||
|
|
||||||
|
|
||||||
<!-- manifest -->
|
<!-- manifest -->
|
||||||
{{ partialCached "manifest" . }}
|
{{ partialCached "manifest" . }}
|
||||||
|
|
||||||
|
|
||||||
<!-- site verifications -->
|
<!-- site verifications -->
|
||||||
{{ partialCached "site-verifications.html" . }}
|
{{ partialCached "site-verifications.html" . }}
|
||||||
|
|
||||||
|
|
||||||
<!-- opengraph and twitter card -->
|
<!-- opengraph and twitter card -->
|
||||||
{{ partial "basic-seo.html" . }}
|
{{ partial "basic-seo.html" . }}
|
||||||
|
|
||||||
|
|
||||||
<!-- custom script -->
|
<!-- custom script -->
|
||||||
{{ partialCached "custom-script.html" . }}
|
{{ partialCached "custom-script.html" . }}
|
||||||
|
|
||||||
|
|
||||||
<!-- google analytics -->
|
<!-- google analytics -->
|
||||||
{{ if and site.Config.Services.GoogleAnalytics.ID (ne site.Config.Services.GoogleAnalytics.ID "G-MEASUREMENT_ID") }}
|
{{ if and site.Config.Services.GoogleAnalytics.ID (ne
|
||||||
{{ template "_internal/google_analytics.html" . }}
|
site.Config.Services.GoogleAnalytics.ID "G-MEASUREMENT_ID") }} {{ template
|
||||||
{{ end }}
|
"_internal/google_analytics.html" . }} {{ end }}
|
||||||
|
|
||||||
|
|
||||||
<!-- google tag manager -->
|
<!-- google tag manager -->
|
||||||
{{ partialCached "gtm.html" . }}
|
{{ partialCached "gtm.html" . }}
|
||||||
|
|
||||||
|
|
||||||
<!-- search index -->
|
<!-- search index -->
|
||||||
{{ partial "search-index.html" . }}
|
{{ partial "search-index.html" . }}
|
||||||
|
|
||||||
|
|
||||||
<!-- matomo analytics -->
|
<!-- matomo analytics -->
|
||||||
{{/* {{ partialCached "matomo-analytics.html" . }} */}}
|
{{/* {{ partialCached "matomo-analytics.html" . }} */}}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<header
|
<header
|
||||||
class="header {{ if site.Params.navbar_fixed }}sticky top-0{{ end }} z-30">
|
class="header {{ if site.Params.navbar_fixed }}sticky top-0{{ end }} z-30"
|
||||||
|
>
|
||||||
<nav class="navbar container">
|
<nav class="navbar container">
|
||||||
<!-- logo -->
|
<!-- logo -->
|
||||||
<div class="order-0">
|
<div class="order-0">
|
||||||
|
@ -12,7 +13,8 @@
|
||||||
<input id="nav-toggle" type="checkbox" class="hidden" />
|
<input id="nav-toggle" type="checkbox" class="hidden" />
|
||||||
<label
|
<label
|
||||||
for="nav-toggle"
|
for="nav-toggle"
|
||||||
class="order-3 cursor-pointer flex items-center lg:hidden text-dark dark:text-white lg:order-1">
|
class="order-3 cursor-pointer flex items-center lg:hidden text-dark dark:text-white lg:order-1"
|
||||||
|
>
|
||||||
<svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20">
|
<svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20">
|
||||||
<title>Menu Open</title>
|
<title>Menu Open</title>
|
||||||
<path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path>
|
<path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path>
|
||||||
|
@ -21,7 +23,8 @@
|
||||||
<title>Menu Close</title>
|
<title>Menu Close</title>
|
||||||
<polygon
|
<polygon
|
||||||
points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2"
|
points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2"
|
||||||
transform="rotate(45 10 10)"></polygon>
|
transform="rotate(45 10 10)"
|
||||||
|
></polygon>
|
||||||
</svg>
|
</svg>
|
||||||
</label>
|
</label>
|
||||||
<!-- /navbar toggler -->
|
<!-- /navbar toggler -->
|
||||||
|
@ -29,106 +32,120 @@
|
||||||
<!-- main navbar -->
|
<!-- main navbar -->
|
||||||
<ul
|
<ul
|
||||||
id="nav-menu"
|
id="nav-menu"
|
||||||
class="navbar-nav order-3 hidden lg:flex w-full pb-6 lg:order-1 lg:w-auto lg:space-x-2 lg:pb-0 xl:space-x-8">
|
class="navbar-nav order-3 hidden lg:flex w-full pb-6 lg:order-1 lg:w-auto lg:space-x-2 lg:pb-0 xl:space-x-8"
|
||||||
{{ $currentPage := . }}
|
>
|
||||||
{{ range site.Menus.main }}
|
{{ $currentPage := . }} {{ range site.Menus.main }} {{ $menuURL := .URL |
|
||||||
{{ $menuURL := .URL | absLangURL }}
|
absLangURL }} {{ $pageURL:= $currentPage.Permalink | absLangURL }} {{
|
||||||
{{ $pageURL:= $currentPage.Permalink | absLangURL }}
|
$active := eq $menuURL $pageURL }} {{ if .HasChildren }}
|
||||||
{{ $active := eq $menuURL $pageURL }}
|
<li class="nav-item nav-dropdown group relative">
|
||||||
{{ if .HasChildren }}
|
<span
|
||||||
<li class="nav-item nav-dropdown group relative">
|
class="nav-link {{ range .Children }}
|
||||||
<span
|
|
||||||
class="nav-link {{ range .Children }}
|
|
||||||
{{ $childURL := .URL | absLangURL }}
|
{{ $childURL := .URL | absLangURL }}
|
||||||
{{ $active := eq $childURL $pageURL }}
|
{{ $active := eq $childURL $pageURL }}
|
||||||
{{ if $active }}active{{ end }}
|
{{ if $active }}active{{ end }}
|
||||||
{{ end }} inline-flex items-center">
|
{{ end }} inline-flex items-center"
|
||||||
{{ .Name }}
|
>
|
||||||
<svg class="h-4 w-4 fill-current" viewBox="0 0 20 20">
|
{{ .Name }}
|
||||||
<path
|
<svg class="h-4 w-4 fill-current" viewBox="0 0 20 20">
|
||||||
d="M9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828 5.757 6.586 4.343 8z" />
|
<path
|
||||||
</svg>
|
d="M9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828 5.757 6.586 4.343 8z"
|
||||||
</span>
|
/>
|
||||||
<ul
|
</svg>
|
||||||
class="nav-dropdown-list lg:group-hover:visible lg:group-hover:opacity-100">
|
</span>
|
||||||
{{ range .Children }}
|
<ul
|
||||||
{{ $childURL := .URL | absLangURL }}
|
class="nav-dropdown-list lg:group-hover:visible lg:group-hover:opacity-100"
|
||||||
{{ $active := eq $childURL $pageURL }}
|
>
|
||||||
<li class="nav-dropdown-item">
|
{{ range .Children }} {{ $childURL := .URL | absLangURL }} {{ $active
|
||||||
<a
|
:= eq $childURL $pageURL }}
|
||||||
class="nav-dropdown-link {{ if $active }}
|
<li class="nav-dropdown-item">
|
||||||
|
<a
|
||||||
|
class="nav-dropdown-link {{ if $active }}
|
||||||
active
|
active
|
||||||
{{- end -}}"
|
{{- end -}}"
|
||||||
{{ if findRE `^http` .URL }}
|
{{
|
||||||
target="_blank" rel="noopener"
|
if
|
||||||
{{ end }}
|
findRE
|
||||||
href="{{- if findRE `^#` .URL -}}
|
`^http`
|
||||||
|
.URL
|
||||||
|
}}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener"
|
||||||
|
{{
|
||||||
|
end
|
||||||
|
}}
|
||||||
|
href="{{- if findRE `^#` .URL -}}
|
||||||
{{- if not $.IsHome -}}
|
{{- if not $.IsHome -}}
|
||||||
{{- site.Home.RelPermalink -}}
|
{{- site.Home.RelPermalink -}}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- .URL -}}
|
{{- .URL -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- .URL | relLangURL -}}
|
{{- .URL | relLangURL -}}
|
||||||
{{- end -}}">
|
{{- end -}}"
|
||||||
{{ .Name }}
|
>
|
||||||
</a>
|
{{ .Name }}
|
||||||
</li>
|
</a>
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
</li>
|
</li>
|
||||||
{{ else }}
|
{{ end }}
|
||||||
<li class="nav-item">
|
</ul>
|
||||||
<a
|
</li>
|
||||||
class="nav-link {{ if $active }}active{{- end -}}"
|
{{ else }}
|
||||||
{{ if findRE `^http` .URL }}
|
<li class="nav-item">
|
||||||
target="_blank" rel="noopener"
|
<a
|
||||||
{{ end }}
|
class="nav-link {{ if $active }}active{{- end -}}"
|
||||||
href="{{- if findRE `^#` .URL -}}
|
{{
|
||||||
|
if
|
||||||
|
findRE
|
||||||
|
`^http`
|
||||||
|
.URL
|
||||||
|
}}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener"
|
||||||
|
{{
|
||||||
|
end
|
||||||
|
}}
|
||||||
|
href="{{- if findRE `^#` .URL -}}
|
||||||
{{- if not $.IsHome -}}
|
{{- if not $.IsHome -}}
|
||||||
{{- site.Home.RelPermalink -}}
|
{{- site.Home.RelPermalink -}}
|
||||||
{{- end }}{{- .URL -}}
|
{{- end }}{{- .URL -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- .URL | relLangURL -}}
|
{{- .URL | relLangURL -}}
|
||||||
{{- end -}}"
|
{{- end -}}"
|
||||||
>{{ .Name }}</a
|
>{{ .Name }}</a
|
||||||
>
|
>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }} {{ end }} {{ if site.Params.navigation_button.enable }}
|
||||||
{{ end }}
|
<li class="mt-4 inline-block lg:hidden">
|
||||||
{{ if site.Params.navigation_button.enable }}
|
<a
|
||||||
<li class="mt-4 inline-block lg:hidden">
|
class="btn btn-outline-primary btn-sm"
|
||||||
<a
|
href="{{ site.Params.navigation_button.link | relLangURL }}"
|
||||||
class="btn btn-outline-primary btn-sm"
|
>
|
||||||
href="{{ site.Params.navigation_button.link | relLangURL }}">
|
{{ site.Params.navigation_button.label }}
|
||||||
{{ site.Params.navigation_button.label }}
|
</a>
|
||||||
</a>
|
</li>
|
||||||
</li>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0">
|
<div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0">
|
||||||
{{ with site.Params.search }}
|
{{ with site.Params.search }} {{ if .enable }}
|
||||||
{{ if .enable }}
|
<button
|
||||||
<button
|
aria-label="search"
|
||||||
aria-label="search"
|
class="border-border text-dark hover:text-primary dark:border-darkmode-border mr-5 inline-block border-r pr-5 text-xl dark:text-white dark:hover:text-darkmode-primary"
|
||||||
class="border-border text-dark hover:text-primary dark:border-darkmode-border mr-5 inline-block border-r pr-5 text-xl dark:text-white dark:hover:text-darkmode-primary"
|
data-target="search-modal"
|
||||||
data-target="search-modal">
|
>
|
||||||
<i class="fa-solid fa-search"></i>
|
<i class="fa-solid fa-search"></i>
|
||||||
</button>
|
</button>
|
||||||
{{ end }}
|
{{ end }} {{ end }} {{ partial "components/language-switcher" (dict
|
||||||
{{ end }}
|
"Context" . "Class" "mr-5 pl-2 py-1 dark:bg-darkmode-theme-light rounded")
|
||||||
|
}} {{ partial "components/theme-switcher" (dict "Class" "mr-5") }}
|
||||||
{{ partial "components/language-switcher" (dict "Context" . "Class" "mr-5 pl-2 py-1 dark:bg-darkmode-theme-light rounded") }}
|
|
||||||
{{ partial "components/theme-switcher" (dict "Class" "mr-5") }}
|
|
||||||
|
|
||||||
|
|
||||||
<!-- navigation btn -->
|
<!-- navigation btn -->
|
||||||
{{ if site.Params.navigation_button.enable }}
|
{{ if site.Params.navigation_button.enable }}
|
||||||
<a
|
<a
|
||||||
href="{{ site.Params.navigation_button.link | relLangURL }}"
|
href="{{ site.Params.navigation_button.link | relLangURL }}"
|
||||||
class="btn btn-outline-primary btn-sm hidden lg:inline-block">
|
class="btn btn-outline-primary btn-sm hidden lg:inline-block"
|
||||||
{{ site.Params.navigation_button.label }}
|
>
|
||||||
</a>
|
{{ site.Params.navigation_button.label }}
|
||||||
|
</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
@ -1,38 +1,30 @@
|
||||||
<!-- JS Plugins + Main script -->
|
<!-- JS Plugins + Main script -->
|
||||||
{{ $scripts := slice }}
|
{{ $scripts := slice }} {{ $scriptsLazy := slice }} {{ range
|
||||||
{{ $scriptsLazy := slice }}
|
site.Params.plugins.js }} {{ if findRE "^http" .link }}
|
||||||
{{ range site.Params.plugins.js }}
|
<script
|
||||||
{{ if findRE "^http" .link }}
|
src="{{ .link | relURL }}"
|
||||||
<script
|
type="application/javascript"
|
||||||
src="{{ .link | relURL }}"
|
{{
|
||||||
type="application/javascript"
|
.attributes
|
||||||
{{ .attributes | safeHTMLAttr }}></script>
|
|
|
||||||
{{ else }}
|
safeHTMLAttr
|
||||||
{{ if not .lazy }}
|
}}
|
||||||
{{ $scripts = $scripts | append (resources.Get .link) }}
|
></script>
|
||||||
{{ else }}
|
{{ else }} {{ if not .lazy }} {{ $scripts = $scripts | append (resources.Get
|
||||||
{{ $scriptsLazy = $scriptsLazy | append (resources.Get .link) }}
|
.link) }} {{ else }} {{ $scriptsLazy = $scriptsLazy | append (resources.Get
|
||||||
{{ end }}
|
.link) }} {{ end }} {{ end }} {{ end }}
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
|
|
||||||
<!-- main script -->
|
<!-- main script -->
|
||||||
{{ $scripts = $scripts | append (resources.Get "js/main.js") }}
|
{{ $scripts = $scripts | append (resources.Get "js/main.js") }} {{ $scripts =
|
||||||
{{ $scripts = $scripts | resources.Concat "js/script.js" }}
|
$scripts | resources.Concat "js/script.js" }} {{ $scriptsLazy = $scriptsLazy |
|
||||||
|
resources.Concat "js/script-lazy.js" }} {{ if hugo.IsProduction }} {{ $scripts =
|
||||||
{{ $scriptsLazy = $scriptsLazy | resources.Concat "js/script-lazy.js" }}
|
$scripts | minify | fingerprint }} {{ $scriptsLazy = $scriptsLazy | minify |
|
||||||
|
fingerprint }} {{ end }} {{/* scripts */}}
|
||||||
{{ if hugo.IsProduction }}
|
|
||||||
{{ $scripts = $scripts | minify | fingerprint }}
|
|
||||||
{{ $scriptsLazy = $scriptsLazy | minify | fingerprint }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{/* scripts */}}
|
|
||||||
<script
|
<script
|
||||||
crossorigin="anonymous"
|
crossorigin="anonymous"
|
||||||
integrity="{{ $scripts.Data.Integrity }}"
|
integrity="{{ $scripts.Data.Integrity }}"
|
||||||
src="{{ $scripts.RelPermalink }}"></script>
|
src="{{ $scripts.RelPermalink }}"
|
||||||
|
></script>
|
||||||
|
|
||||||
{{/* scripts lazy */}}
|
{{/* scripts lazy */}}
|
||||||
<script
|
<script
|
||||||
|
@ -40,15 +32,14 @@
|
||||||
async
|
async
|
||||||
crossorigin="anonymous"
|
crossorigin="anonymous"
|
||||||
integrity="{{ $scriptsLazy.Data.Integrity }}"
|
integrity="{{ $scriptsLazy.Data.Integrity }}"
|
||||||
src="{{ $scriptsLazy.RelPermalink }}"></script>
|
src="{{ $scriptsLazy.RelPermalink }}"
|
||||||
|
></script>
|
||||||
|
|
||||||
<!-- progressive web app -->
|
<!-- progressive web app -->
|
||||||
{{ partialCached "pwa.html" . }}
|
{{ partialCached "pwa.html" . }}
|
||||||
|
|
||||||
|
|
||||||
<!-- cookie consent -->
|
<!-- cookie consent -->
|
||||||
{{ partialCached "cookie-consent.html" . }}
|
{{ partialCached "cookie-consent.html" . }}
|
||||||
|
|
||||||
|
|
||||||
<!-- google adsense -->
|
<!-- google adsense -->
|
||||||
{{ partialCached "adsense-script.html" . }}
|
{{ partialCached "adsense-script.html" . }}
|
||||||
|
|
|
@ -15,14 +15,15 @@
|
||||||
<link rel="dns-prefetch" href="//platform.twitter.com" />
|
<link rel="dns-prefetch" href="//platform.twitter.com" />
|
||||||
|
|
||||||
<!-- google fonts -->
|
<!-- google fonts -->
|
||||||
{{ $pf:= site.Data.theme.fonts.font_family.primary }}
|
{{ $pf:= site.Data.theme.fonts.font_family.primary }} {{ $sf:=
|
||||||
{{ $sf:= site.Data.theme.fonts.font_family.secondary }}
|
site.Data.theme.fonts.font_family.secondary }}
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||||
<script>
|
<script>
|
||||||
(function () {
|
(function () {
|
||||||
const googleFont = document.createElement("link");
|
const googleFont = document.createElement("link");
|
||||||
googleFont.href = "https://fonts.googleapis.com/css2?family={{$pf | safeURL}}{{with $sf}}&family={{. | safeURL}}{{end}}&display=swap";
|
googleFont.href =
|
||||||
|
"https://fonts.googleapis.com/css2?family={{$pf | safeURL}}{{with $sf}}&family={{. | safeURL}}{{end}}&display=swap";
|
||||||
googleFont.type = "text/css";
|
googleFont.type = "text/css";
|
||||||
googleFont.rel = "stylesheet";
|
googleFont.rel = "stylesheet";
|
||||||
document.head.appendChild(googleFont);
|
document.head.appendChild(googleFont);
|
||||||
|
@ -30,46 +31,37 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- plugins + stylesheet -->
|
<!-- plugins + stylesheet -->
|
||||||
{{ $styles := slice }}
|
{{ $styles := slice }} {{ $stylesLazy := slice }} {{ range
|
||||||
{{ $stylesLazy := slice }}
|
site.Params.plugins.css }} {{ if findRE "^http" .link }}
|
||||||
{{ range site.Params.plugins.css }}
|
<link
|
||||||
{{ if findRE "^http" .link }}
|
crossorigin="anonymous"
|
||||||
<link
|
media="all"
|
||||||
crossorigin="anonymous"
|
rel="stylesheet"
|
||||||
media="all"
|
href="{{ .link | relURL }}"
|
||||||
rel="stylesheet"
|
{{
|
||||||
href="{{ .link | relURL }}"
|
.attributes
|
||||||
{{ .attributes | safeHTMLAttr }} />
|
|
|
||||||
{{ else }}
|
safeHTMLAttr
|
||||||
{{ if not .lazy }}
|
}}
|
||||||
{{ $styles = $styles | append (resources.Get .link) }}
|
/>
|
||||||
{{ else }}
|
{{ else }} {{ if not .lazy }} {{ $styles = $styles | append (resources.Get
|
||||||
{{ $stylesLazy = $stylesLazy | append (resources.Get .link) }}
|
.link) }} {{ else }} {{ $stylesLazy = $stylesLazy | append (resources.Get .link)
|
||||||
{{ end }}
|
}} {{ end }} {{ end }} {{ end }} {{/* main style */}} {{ $styles = $styles |
|
||||||
{{ end }}
|
append (resources.Get "scss/main.scss" | toCSS) }} {{ $styles = $styles |
|
||||||
{{ end }}
|
resources.Concat "css/style.css" }} {{ $styles = $styles | resources.PostCSS }}
|
||||||
|
{{ $stylesLazy = $stylesLazy | resources.Concat "css/style-lazy.css" }} {{
|
||||||
{{/* main style */}}
|
$stylesLazy = $stylesLazy | resources.PostCSS }} {{ if hugo.IsProduction }} {{
|
||||||
{{ $styles = $styles | append (resources.Get "scss/main.scss" | toCSS) }}
|
$styles = $styles | resources.ExecuteAsTemplate "css/style.css" . | minify |
|
||||||
{{ $styles = $styles | resources.Concat "css/style.css" }}
|
fingerprint | resources.PostProcess }} {{ $stylesLazy = $stylesLazy |
|
||||||
{{ $styles = $styles | resources.PostCSS }}
|
resources.ExecuteAsTemplate "css/style-lazy.css" . | minify | fingerprint |
|
||||||
|
resources.PostProcess }} {{ else }} {{ $styles = $styles |
|
||||||
{{ $stylesLazy = $stylesLazy | resources.Concat "css/style-lazy.css" }}
|
resources.ExecuteAsTemplate "css/style.css" . }} {{ $stylesLazy = $stylesLazy |
|
||||||
{{ $stylesLazy = $stylesLazy | resources.PostCSS }}
|
resources.ExecuteAsTemplate "css/style-lazy.css" . }} {{ end }} {{/* styles */}}
|
||||||
|
|
||||||
{{ if hugo.IsProduction }}
|
|
||||||
{{ $styles = $styles | resources.ExecuteAsTemplate "css/style.css" . | minify | fingerprint | resources.PostProcess }}
|
|
||||||
{{ $stylesLazy = $stylesLazy | resources.ExecuteAsTemplate "css/style-lazy.css" . | minify | fingerprint | resources.PostProcess }}
|
|
||||||
{{ else }}
|
|
||||||
{{ $styles = $styles | resources.ExecuteAsTemplate "css/style.css" . }}
|
|
||||||
{{ $stylesLazy = $stylesLazy | resources.ExecuteAsTemplate "css/style-lazy.css" . }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{/* styles */}}
|
|
||||||
<link
|
<link
|
||||||
href="{{ $styles.RelPermalink }}"
|
href="{{ $styles.RelPermalink }}"
|
||||||
integrity="{{ $styles.Data.Integrity }}"
|
integrity="{{ $styles.Data.Integrity }}"
|
||||||
rel="stylesheet" />
|
rel="stylesheet"
|
||||||
|
/>
|
||||||
|
|
||||||
{{/* styles lazy */}}
|
{{/* styles lazy */}}
|
||||||
<link
|
<link
|
||||||
|
@ -79,4 +71,5 @@
|
||||||
href="{{ $stylesLazy.RelPermalink }}"
|
href="{{ $stylesLazy.RelPermalink }}"
|
||||||
integrity="{{ $stylesLazy.Data.Integrity }}"
|
integrity="{{ $stylesLazy.Data.Integrity }}"
|
||||||
media="print"
|
media="print"
|
||||||
onload="this.media='all'; this.onload=null;" />
|
onload="this.media='all'; this.onload=null;"
|
||||||
|
/>
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<section>
|
<section>
|
||||||
<div class="container text-center">
|
<div class="container text-center">
|
||||||
<div
|
<div
|
||||||
class="from-body to-theme-light dark:from-darkmode-body dark:to-darkmode-theme-light rounded-2xl bg-gradient-to-b px-8 py-14">
|
class="from-body to-theme-light dark:from-darkmode-body dark:to-darkmode-theme-light rounded-2xl bg-gradient-to-b px-8 py-14"
|
||||||
|
>
|
||||||
<h1>{{ i18n (printf "%s" (lower .Title)) | default .Title | title }}</h1>
|
<h1>{{ i18n (printf "%s" (lower .Title)) | default .Title | title }}</h1>
|
||||||
{{ partial "components/breadcrumb" (dict "Context" . "Class" "mt-6") }}
|
{{ partial "components/breadcrumb" (dict "Context" . "Class" "mt-6") }}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
<!-- categories -->
|
<!-- categories -->
|
||||||
{{ if isset site.Taxonomies "categories" }}
|
{{ if isset site.Taxonomies "categories" }} {{ if not (eq (len
|
||||||
{{ if not (eq (len site.Taxonomies.categories) 0) }}
|
site.Taxonomies.categories) 0) }}
|
||||||
<div class="mb-8">
|
<div class="mb-8">
|
||||||
<h5 class="mb-6">{{ i18n "categories" }}</h5>
|
<h5 class="mb-6">{{ i18n "categories" }}</h5>
|
||||||
<div class="bg-theme-light dark:bg-darkmode-theme-light rounded p-8">
|
<div class="bg-theme-light dark:bg-darkmode-theme-light rounded p-8">
|
||||||
<ul class="space-y-4">
|
<ul class="space-y-4">
|
||||||
{{ range $name, $items := site.Taxonomies.categories }}
|
{{ range $name, $items := site.Taxonomies.categories }}
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
class="hover:text-primary dark:hover:text-darkmode-primary {{ if (and (eq $.Page.Kind `term`) (eq $.Page.Type `categories`) (eq $.Page.Title .Page.Title)) }}
|
class="hover:text-primary dark:hover:text-darkmode-primary {{ if (and (eq $.Page.Kind `term`) (eq $.Page.Type `categories`) (eq $.Page.Title .Page.Title)) }}
|
||||||
active
|
active
|
||||||
{{ end }} flex justify-between"
|
{{ end }} flex justify-between"
|
||||||
href="{{ .Page.RelPermalink }}">
|
href="{{ .Page.RelPermalink }}"
|
||||||
{{ .Page.Title }} <span>( {{ len $items }} )</span>
|
>
|
||||||
</a>
|
{{ .Page.Title }} <span>( {{ len $items }} )</span>
|
||||||
</li>
|
</a>
|
||||||
{{ end }}
|
</li>
|
||||||
</ul>
|
{{ end }}
|
||||||
</div>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
</div>
|
||||||
{{ end }}
|
{{ end }} {{ end }}
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
<!-- tags -->
|
<!-- tags -->
|
||||||
{{ if isset site.Taxonomies "tags" }}
|
{{ if isset site.Taxonomies "tags" }} {{ if not (eq (len site.Taxonomies.tags)
|
||||||
{{ if not (eq (len site.Taxonomies.tags) 0) }}
|
0) }}
|
||||||
<div class="mb-8">
|
<div class="mb-8">
|
||||||
<h5 class="mb-6">{{ i18n "tags" }}</h5>
|
<h5 class="mb-6">{{ i18n "tags" }}</h5>
|
||||||
<div class="bg-theme-light dark:bg-darkmode-theme-light rounded p-6">
|
<div class="bg-theme-light dark:bg-darkmode-theme-light rounded p-6">
|
||||||
<ul>
|
<ul>
|
||||||
{{ range $name, $items := site.Taxonomies.tags }}
|
{{ range $name, $items := site.Taxonomies.tags }}
|
||||||
<li class="inline-block">
|
<li class="inline-block">
|
||||||
<a
|
<a
|
||||||
class="hover:bg-primary dark:bg-darkmode-body dark:hover:bg-darkmode-primary dark:hover:text-dark {{ if (and (eq $.Page.Kind `term`) (eq $.Page.Type `tags`) (eq $.Page.Title .Page.Title)) }}
|
class="hover:bg-primary dark:bg-darkmode-body dark:hover:bg-darkmode-primary dark:hover:text-dark {{ if (and (eq $.Page.Kind `term`) (eq $.Page.Type `tags`) (eq $.Page.Title .Page.Title)) }}
|
||||||
active
|
active
|
||||||
{{ end }} m-1 block rounded bg-white px-3 py-1 hover:text-white"
|
{{ end }} m-1 block rounded bg-white px-3 py-1 hover:text-white"
|
||||||
href="{{ .Page.RelPermalink }}">
|
href="{{ .Page.RelPermalink }}"
|
||||||
{{ .Page.Title }}
|
>
|
||||||
</a>
|
{{ .Page.Title }}
|
||||||
</li>
|
</a>
|
||||||
{{ end }}
|
</li>
|
||||||
</ul>
|
{{ end }}
|
||||||
</div>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
</div>
|
||||||
{{ end }}
|
{{ end }} {{ end }}
|
||||||
|
|
|
@ -1,3 +1 @@
|
||||||
{{ range .Widgets }}
|
{{ range .Widgets }} {{ partial ( print "widgets/" . ) $.Scope }} {{ end }}
|
||||||
{{ partial ( print "widgets/" . ) $.Scope }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
Loading…
Reference in a new issue