dark mode changes

This commit is contained in:
Laurens 2024-03-27 12:24:18 +01:00
parent a0d0726c74
commit 90392674bd
160 changed files with 16900 additions and 1452 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

BIN
assets/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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
View 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,
},
},
});
})();

View 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);
}

View 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;
}

File diff suppressed because it is too large Load diff

59
assets/scss/base.scss Executable file
View 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
View 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
View 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
View 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";

View 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
View 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
View 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);
}

View file

@ -9,6 +9,7 @@ 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.

BIN
exampleSite/assets/.DS_Store vendored Normal file

Binary file not shown.

BIN
exampleSite/assets/images/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1 @@
// Add your own custom styles here

View file

@ -0,0 +1,6 @@
################ English language ##################
[en]
languageName = "En"
languageCode = "en-us"
contentDir = "content/english"
weight = 1

View file

@ -0,0 +1,85 @@
############# English navigation ##############
# main menu
[[main]]
name = "For You"
weight = 1
hasChildren = true
[[main]]
parent = "For You"
name = "Individuals"
pageRef = "/Individuals"
[[main]]
parent = "For You"
name = "Developers"
pageRef = "/Developers"
[[main]]
parent = "For You"
name = "European Commission"
pageRef = "/EC"
[[main]]
weight = 2
name = "Consortium"
hasChildren = true
[[main]]
parent = "Consortium"
name = "Open Internet Discourse"
pageRef = "/OID"
[[main]]
parent = "Consortium"
name = "NLnet"
pageRef = "/NLnet"
[[main]]
parent = "Consortium"
name = "Tweag"
pageRef = "/Tweag"
[[main]]
parent = "Consortium"
name = "NORDUnet"
pageRef = "/NORDUnet"
[[main]]
weight = 3
name = "Fediversity"
pageRef = "Fediversity"
[[main]]
weight = 4
name = "Grants"
pageRef = "Grants"
[[main]]
weight = 5
name = "Events"
pageRef = "Events"
[[main]]
weight = 6
name = "News"
pageRef = "News"
# footer menu
[[footer]]
name = "About"
pageRef = "/about"
weight = 1
[[footer]]
name = "Elements"
pageRef = "/elements"
weight = 2
[[footer]]
name = "Privacy Policy"
pageRef = "/privacy-policy"
weight = 3

View file

@ -0,0 +1,93 @@
[hugoVersion]
extended = true
min = "0.115.2"
[[imports]]
path = "github.com/zeon-studio/hugoplate"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/search"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/pwa"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/images"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/videos"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/icons/font-awesome"
# [[imports]]
# path = "github.com/gethugothemes/hugo-modules/icons/themify-icons"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/gzip-caching"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/adsense"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/accordion"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/table-of-contents"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/tab"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/modal"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/gallery-slider"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/components/preloader"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/components/social-share"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/components/cookie-consent"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/components/custom-script"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/components/render-link"
# [[imports]]
# path = "github.com/gethugothemes/hugo-modules/components/valine-comment"
# [[imports]]
# path = "github.com/gethugothemes/hugo-modules/components/crisp-chat"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/shortcodes/button"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/shortcodes/notice"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/seo-tools/basic-seo"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/seo-tools/site-verifications"
[[imports]]
path = "github.com/gethugothemes/hugo-modules/seo-tools/google-tag-manager"
# [[imports]]
# path = "github.com/gethugothemes/hugo-modules/seo-tools/baidu-analytics"
# [[imports]]
# path = "github.com/gethugothemes/hugo-modules/seo-tools/matomo-analytics"
# [[imports]]
# path = "github.com/gethugothemes/hugo-modules/seo-tools/plausible-analytics"
# [[imports]]
# path = "github.com/gethugothemes/hugo-modules/seo-tools/counter-analytics"

View file

@ -0,0 +1,101 @@
#################### default parameters ################################
# favicon module: https://github.com/gethugothemes/hugo-modules/tree/master/images#favicon-implementation
favicon = "images/favicon.png"
# logo module: https://github.com/gethugothemes/hugo-modules/tree/master/images#logo-implementation
logo = "images/logo.png"
logo_darkmode = "images/logo-darkmode.png"
# use `px` or `x` with logo_width, example: "100px".
# Note: logo_width is not work with .svg file
logo_width = "160px"
logo_height = "32px"
# if logo_webp set false, will not generate WEBP version of logo | default is true
logo_webp = true
# logo text will only show when logo is missing.
logo_text = "Hugoplate"
# navbar fixed to top
navbar_fixed = true
# theme-mode
theme_switcher = true
theme_default = "system" # available options [light/dark/system]
# Main Sections
mainSections = ["blog"]
# contact form action
contact_form_action = "#" # contact form works with [https://airform.io/] or [https://formspree.io]
# google tag manager, see https://developers.google.com/tag-manager/
google_tag_manager = "" # example: G-XXXXXXXXXX
google_adsense = "" # example: ca-pub-xxxxxxxxxxxxxxxx
# custom script on header, example: custom_script= "<script>console.log(\"Hello World\")</script>"
custom_script = ""
# copyright
copyright = "Designed & Developed by [Zeon Studio](https://zeon.studio)"
# Preloader
# preloader module: https://github.com/gethugothemes/hugo-modules/tree/master/components/preloader
[preloader]
enable = false
preloader = "" # use jpg, png, svg or gif format.
# Navigation button
[navigation_button]
enable = true
label = "Contact"
link = "contact"
# search
# search module: https://github.com/gethugothemes/hugo-modules/tree/master/search
[search]
enable = true
primary_color = "#121212"
include_sections = ["blog"]
show_image = true
show_description = true
show_tags = true
show_categories = true
# seo meta data for OpenGraph / Twitter Card
# seo module: https://github.com/gethugothemes/hugo-modules/tree/master/seo-tools/basic-seo
[metadata]
keywords = ["Boilerplate", "Hugo"]
description = "Hugo & Tailwindcss Starter"
author = "zeon.studio"
image = "images/og-image.png"
# site verifications
# verification module: https://github.com/gethugothemes/hugo-modules/tree/master/seo-tools/site-verifications
[site_verification]
google = "" # Your verification code
bing = "" # Your verification code
baidu = "" # Your verification code
facebook = "" # Your verification code
mastodon = "" # Your verification code
# cookies
# cookies module: https://github.com/gethugothemes/hugo-modules/tree/master/components/cookie-consent
[cookies]
enable = false
expire_days = 60
content = "This site uses cookies. By continuing to use this website, you agree to their use."
button = "I Accept"
######################## sidebar widgets #########################
[widgets]
sidebar = ["categories", "tags"]
# google map
[google_map]
enable = false
map_api_key = "AIzaSyCcABaamniA6OL5YvYSpB3pFMNrXwXnLwU"
map_latitude = "51.5223477"
map_longitude = "-0.1622023"
map_marker = "images/marker.png"
# Subscription
[subscription]
enable = false
# mailchimp subsciption
mailchimp_form_action = "https://gmail.us4.list-manage.com/subscribe/post?u=463ee871f45d2d93748e77cad&amp;id=a0a2c6d074" # replace this url with yours
mailchimp_form_name = "b_463ee871f45d2d93748e77cad_a0a2c6d074"

View file

@ -0,0 +1,53 @@
---
# Banner
banner:
title: "The Ultimate Starter Template You Need To Start Your Hugo Project"
content: "Hugoplate is a free starter template built with Hugo and TailwindCSS, providing everything you need to jumpstart your Hugo project and save valuable time."
image: "/images/banner.png"
button:
enable: true
label: "Get Started For Free"
link: "https://github.com/zeon-studio/hugoplate"
# Features
features:
- title: "What's Included in Hugoplate"
image: "/images/service-1.png"
content: "Hugoplate is a comprehensive starter template that includes everything you need to get started with your Hugo project. What's Included in Hugoplate"
bulletpoints:
- "10+ Pre-build pages"
- "95+ Google Pagespeed Score"
- "Build with Hugo and TailwindCSS for easy and customizable styling"
- "Fully responsive on all devices"
- "SEO-optimized for better search engine rankings"
- "**Open-source and free** for personal and commercial use"
button:
enable: false
label: "Get Started Now"
link: "#"
- title: "Discover the Key Features Of Hugo"
image: "/images/service-2.png"
content: "Hugo is an all-in-one web framework for building fast, content-focused websites. It offers a range of exciting features for developers and website creators. Some of the key features are:"
bulletpoints:
- "Zero JS, by default: No JavaScript runtime overhead to slow you down."
- "Customizable: Tailwind, MDX, and 100+ other integrations to choose from."
- "UI-agnostic: Supports React, Preact, Svelte, Vue, Solid, Lit and more."
button:
enable: true
label: "Get Started Now"
link: "https://github.com/zeon-studio/hugoplate"
- title: "The Top Reasons to Choose Hugo for Your Hugo Project"
image: "/images/service-3.png"
content: "With Hugo, you can build modern and content-focused websites without sacrificing performance or ease of use."
bulletpoints:
- "Instantly load static sites for better user experience and SEO."
- "Intuitive syntax and support for popular frameworks make learning and using Hugo a breeze."
- "Use any front-end library or framework, or build custom components, for any project size."
- "Built on cutting-edge technology to keep your projects up-to-date with the latest web standards."
button:
enable: false
label: ""
link: ""
---

View file

@ -0,0 +1,9 @@
---
title: "Hey, I am John Doe!"
meta_title: "About"
description: "this is meta description"
image: "/images/avatar.png"
draft: false
---
Lorem ipsum dolor sit amet consectetur adipisicing elit. Corporis illum nesciunt commodi vel nisi ut alias excepturi ipsum, totam, labore tempora, odit ex iste tempore sed. Fugit voluptatibus perspiciatis assumenda nulla ad nihil, omnis vel, doloremque sit quam autem optio maiores, illum eius facilis et quo consectetur provident dolor similique! Enim voluptatem dicta expedita veritatis repellat dolorum impedit, provident quasi at.

View file

@ -0,0 +1,3 @@
---
title: "Authors"
---

View file

@ -0,0 +1,12 @@
---
title: Laurens Hof
email: laurens@procolix.com
image: "/images/avatar.png"
description: storyteller
social:
- name: github
icon: fa-brands fa-github
link: https://github.com
---
Story teller for the Fediversity Project.

View file

@ -0,0 +1,5 @@
---
title: "Blog Posts"
meta_title: ""
description: "this is meta description"
---

View file

@ -0,0 +1,23 @@
---
title: "How to build an Application with modern Technology"
meta_title: ""
description: "this is meta description"
date: 2022-04-04T05:00:00Z
image: "/images/image-placeholder.png"
categories: ["Application", "Data"]
author: "John Doe"
tags: ["nextjs", "tailwind"]
draft: false
---
Nemo vel ad consectetur namut rutrum ex, venenatis sollicitudin urna. Aliquam erat volutpat. Integer eu ipsum sem. Ut bibendum lacus vestibulum maximus suscipit. Quisque vitae nibh iaculis neque blandit euismod.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo vel ad consectetur ut aperiam. Itaque eligendi natus aperiam? Excepturi repellendus consequatur quibusdam optio expedita praesentium est adipisci dolorem ut eius!
## Creative Design
Nam ut rutrum ex, venenatis sollicitudin urna. Aliquam erat volutpat. Integer eu ipsum sem. Ut bibendum lacus vestibulum maximus suscipit. Quisque vitae nibh iaculis neque blandit euismod.
> Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo vel ad consectetur ut aperiam. Itaque eligendi natus aperiam? Excepturi repellendus consequatur quibusdam optio expedita praesentium est adipisci dolorem ut eius!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo vel ad consectetur ut aperiam. Itaque eligendi natus aperiam? Excepturi repellendus consequatur quibusdam optio expedita praesentium est adipisci dolorem ut eius!

View file

@ -0,0 +1,23 @@
---
title: "How to build an Application with modern Technology"
meta_title: ""
description: "this is meta description"
date: 2022-04-04T05:00:00Z
image: "/images/image-placeholder.png"
categories: ["Technology", "Data"]
author: "Sam Wilson"
tags: ["technology", "tailwind"]
draft: false
---
Nemo vel ad consectetur namut rutrum ex, venenatis sollicitudin urna. Aliquam erat volutpat. Integer eu ipsum sem. Ut bibendum lacus vestibulum maximus suscipit. Quisque vitae nibh iaculis neque blandit euismod.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo vel ad consectetur ut aperiam. Itaque eligendi natus aperiam? Excepturi repellendus consequatur quibusdam optio expedita praesentium est adipisci dolorem ut eius!
## Creative Design
Nam ut rutrum ex, venenatis sollicitudin urna. Aliquam erat volutpat. Integer eu ipsum sem. Ut bibendum lacus vestibulum maximus suscipit. Quisque vitae nibh iaculis neque blandit euismod.
> Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo vel ad consectetur ut aperiam. Itaque eligendi natus aperiam? Excepturi repellendus consequatur quibusdam optio expedita praesentium est adipisci dolorem ut eius!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo vel ad consectetur ut aperiam. Itaque eligendi natus aperiam? Excepturi repellendus consequatur quibusdam optio expedita praesentium est adipisci dolorem ut eius!

View file

@ -0,0 +1,23 @@
---
title: "How to build an Application with modern Technology"
meta_title: ""
description: "this is meta description"
date: 2022-04-04T05:00:00Z
image: "/images/image-placeholder.png"
categories: ["Software"]
author: "John Doe"
tags: ["software", "tailwind"]
draft: false
---
Nemo vel ad consectetur namut rutrum ex, venenatis sollicitudin urna. Aliquam erat volutpat. Integer eu ipsum sem. Ut bibendum lacus vestibulum maximus suscipit. Quisque vitae nibh iaculis neque blandit euismod.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo vel ad consectetur ut aperiam. Itaque eligendi natus aperiam? Excepturi repellendus consequatur quibusdam optio expedita praesentium est adipisci dolorem ut eius!
## Creative Design
Nam ut rutrum ex, venenatis sollicitudin urna. Aliquam erat volutpat. Integer eu ipsum sem. Ut bibendum lacus vestibulum maximus suscipit. Quisque vitae nibh iaculis neque blandit euismod.
> Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo vel ad consectetur ut aperiam. Itaque eligendi natus aperiam? Excepturi repellendus consequatur quibusdam optio expedita praesentium est adipisci dolorem ut eius!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo vel ad consectetur ut aperiam. Itaque eligendi natus aperiam? Excepturi repellendus consequatur quibusdam optio expedita praesentium est adipisci dolorem ut eius!

View file

@ -0,0 +1,23 @@
---
title: "How to build an Application with modern Technology"
meta_title: ""
description: "this is meta description"
date: 2022-04-04T05:00:00Z
image: "/images/image-placeholder.png"
categories: ["Architecture"]
author: "John Doe"
tags: ["silicon", "technology"]
draft: false
---
Nemo vel ad consectetur namut rutrum ex, venenatis sollicitudin urna. Aliquam erat volutpat. Integer eu ipsum sem. Ut bibendum lacus vestibulum maximus suscipit. Quisque vitae nibh iaculis neque blandit euismod.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo vel ad consectetur ut aperiam. Itaque eligendi natus aperiam? Excepturi repellendus consequatur quibusdam optio expedita praesentium est adipisci dolorem ut eius!
## Creative Design
Nam ut rutrum ex, venenatis sollicitudin urna. Aliquam erat volutpat. Integer eu ipsum sem. Ut bibendum lacus vestibulum maximus suscipit. Quisque vitae nibh iaculis neque blandit euismod.
> Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo vel ad consectetur ut aperiam. Itaque eligendi natus aperiam? Excepturi repellendus consequatur quibusdam optio expedita praesentium est adipisci dolorem ut eius!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo vel ad consectetur ut aperiam. Itaque eligendi natus aperiam? Excepturi repellendus consequatur quibusdam optio expedita praesentium est adipisci dolorem ut eius!

View file

@ -0,0 +1,6 @@
---
title: "Contact"
meta_title: ""
description: "this is meta description"
draft: false
---

View file

@ -0,0 +1,11 @@
---
title: "Consortium"
# meta title
meta_title: "Consortium"
# meta description
description: "The organisations behind the Fediversity Project"
# save as draft
draft: false
---
Information about the project. TODO.

View file

@ -0,0 +1,17 @@
---
title: "Developers"
# meta title
meta_title: "Developers"
# meta description
description: "Information for developers about the Fediversity Project."
# save as draft
draft: false
---
The Fediversity Project enables easy hosting for a wide variety of fediverse platforms, all based on NixOS. At the start, the project will support Mastodon, PixelFed,PeerTube, Matrix and Nexcloud, and the project is actively working to expand this offering. Other services that are offered are email (based on Stalwart) and domain registry.
As part of the NGI Funding, the Fediversity Project also offers grants to developers to expand the ecosystem. The NLNet website has more information on how you as a developer can apply to grants, ranging from 5.000 to 50.000 euro's.
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!

View file

@ -0,0 +1,13 @@
---
title: "European Commission"
# meta title
meta_title: "European Commission"
# meta description
description: "Information about the Fediversity Project for the grant providers."
# save as draft
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.
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.

View file

@ -0,0 +1,17 @@
---
title: "Fediversity"
# meta title
meta_title: "Fediversity"
# meta description
description: "More information about the Fediversity Project"
# save as draft
draft: false
---
Fediversity is a comprehensive effort to bring easy-to-use, hosted cloud services with service portability and personal freedom at their core to everyone. It wants to provide everyone with high-quality, secure IT systems for everyday use. Without tracking, without exploitation, in a way that runs everywhere and scales effortlessly. Fediversity is based on NixOS, a disruptive Linux distribution with a unique approach to package and configuration management. Built on top of the Nix package manager, NixOS is completely declarative, makes upgrading systems reliable, and has many other advantages. Because it is reproducible, it is ideally suited for complex deployment scenarios where consistent behaviour, stability and configurability matter.
One such “complex” deployment scenario is running state-of-the-art services for the Fediverse, like PeerTube, Mastodon, Owncast or Lemmy — especially if you want to for instance add services like live chat or transcoding. But even running more traditional services like modern e-mail servers with possible whistles and bells can be daunting. The same holds for deploying a VPN, private cloud storage, wiki, etc. Fediversity will enable all of these use cases, and more — finally bringing these to the market in a way that is as conveient as using a hosted service.
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.

View file

@ -0,0 +1,17 @@
---
title: "Grants"
# meta title
meta_title: "Grants"
# meta description
description: "How to apply for grants as part of the Fediversity Project."
# save as draft
draft: false
---
Fediversity invites other people to join this ambitious development effort. It 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.
This is your opportunity to make a real difference. You tell us how your project can help Fediversity go harder, better, faster, stronger. In order to enable you to make such contributions, NLnet will award 450 000 euro in small to medium-size R&D grants towards solutions that bring the next generation of mobile solutions closer. NLnet is seeking project proposals between 5.000 and 50.000 euros — which should get you on your way.
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.

View file

@ -0,0 +1,18 @@
---
title: "Individuals"
# meta title
meta_title: "Individuals"
# meta description
description: "Information about the project for regular people."
# save as draft
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.
- 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.
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.

View file

@ -0,0 +1,13 @@
---
title: "NLnet"
# meta title
meta_title: "NLnet"
# meta description
description: "The NLnet organisation"
# save as draft
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 1980s, 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.

View file

@ -0,0 +1,13 @@
---
title: "NORDUnet"
# meta title
meta_title: "NORDUnet"
# meta description
description: "The NORDUnet organisation."
# save as draft
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.
Fun fact: the website of NORDUnet, nordu.net is the oldest still active domain on the internet.

View file

@ -0,0 +1,20 @@
---
title: "Consortium"
# meta title
meta_title: "Consortium"
# meta description
description: "The organisations behind the Fediversity Project"
# save as draft
draft: false
---
The Open Internet Discourse Foundation (OID) is founded on the belief that everyone deserves the freedom to express themselves and use the internet without constraints, and is committed to help build a better internet where individuals can truly be who they are.
The three pillars that are at the core of the OID Foundation:
OID believes in the fundamental right of individuals to privacy, self-determination, and freedom of expression.
Building sustainably. The OID Foundation believes that the internet is crucial infrastructure for society, and as such, should be build from the perspective that software projects can exist and be maintained for a long time; decades, not years.
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 its 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 NixOSs package management help with an open and sustainable internet.

View file

@ -0,0 +1,11 @@
---
title: "Tweag"
# meta title
meta_title: "Tweag"
# meta description
description: "The Tweag organisation."
# save as draft
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.

View file

@ -0,0 +1,239 @@
---
title: "Elements"
# meta title
meta_title: ""
# meta description
description: "This is meta description"
# save as draft
draft: false
---
{{< toc >}}
Here is an example of headings. You can use this heading by the following markdown rules. For example: use `#` for heading 1 and use `######` for heading 6.
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6
<hr>
### Emphasis
The emphasis, aka italics, with _asterisks_ or _underscores_.
Strong emphasis, aka bold, with **asterisks** or **underscores**.
The combined emphasis with **asterisks and _underscores_**.
Strike through uses two tildes. ~~Scratch this.~~
<hr>
### Button
{{< button label="Button" link="/" style="solid" >}}
<hr>
### Link
[I'm an inline-style link](https://www.google.com)
[I'm an inline-style link with title](https://www.google.com "Google's Homepage")
[I'm a reference-style link][Arbitrary case-insensitive reference text]
[I'm a relative reference to a repository file](../blob/master/LICENSE)
[You can use numbers for reference-style link definitions][1]
Or leave it empty and use the [link text itself].
URLs and URLs in angle brackets will automatically get turned into links.
<http://www.example.com> or <http://www.example.com> and sometimes
example.com (but not on Github, for example).
Some text to show that the reference links can follow later.
[arbitrary case-insensitive reference text]: https://www.themefisher.com
[1]: https://gethugothemes.com
[link text itself]: https://www.getjekyllthemes.com
<hr>
### Paragraph
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quam nihil enim maxime corporis cumque totam aliquid nam sint inventore optio modi neque laborum officiis necessitatibus, facilis placeat pariatur! Voluptatem, sed harum pariatur adipisci voluptates voluptatum cumque, porro sint minima similique magni perferendis fuga! Optio vel ipsum excepturi tempore reiciendis id quidem? Vel in, doloribus debitis nesciunt fugit sequi magnam accusantium modi neque quis, vitae velit, pariatur harum autem a! Velit impedit atque maiores animi possimus asperiores natus repellendus excepturi sint architecto eligendi non, omnis nihil. Facilis, doloremque illum. Fugit optio laborum minus debitis natus illo perspiciatis corporis voluptatum rerum laboriosam.
<hr>
### Ordered List
1. List item
2. List item
3. List item
4. List item
5. List item
<hr>
### Unordered List
- List item
- List item
- List item
- List item
- List item
<hr>
### Notice
{{< notice "note" >}}
This is a simple note.
{{< /notice >}}
{{< notice "tip" >}}
This is a simple tip.
{{< /notice >}}
{{< notice "info" >}}
This is a simple info.
{{< /notice >}}
{{< notice "warning" >}}
This is a simple warning.
{{< /notice >}}
<hr>
### Tab
{{< tabs >}}
{{< tab "Tab 1" >}}
#### Hey There, I am a tab
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
{{< /tab >}}
{{< tab "Tab 2" >}}
#### I wanna talk about the assassination attempt
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
{{< /tab >}}
{{< tab "Tab 3" >}}
#### We know youre dealing in stolen ore
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo
{{< /tab >}}
{{< /tabs >}}
<hr>
### Accordions
{{< accordion "Why should you need to do this?" >}}
- Lorem ipsum dolor sit amet consectetur adipisicing elit.
- Lorem ipsum dolor sit amet consectetur adipisicing elit.
- Lorem ipsum dolor sit amet consectetur
{{< /accordion >}}
{{< accordion "How can I adjust Horizontal centering" >}}
- Lorem ipsum dolor sit amet consectetur adipisicing elit.
- Lorem ipsum dolor sit amet consectetur adipisicing elit.
- Lorem ipsum dolor sit amet consectetur
{{< /accordion >}}
{{< accordion "Should you use Negative margin?" >}}
- Lorem ipsum dolor sit amet consectetur adipisicing elit.
- Lorem ipsum dolor sit amet consectetur adipisicing elit.
- Lorem ipsum dolor sit amet consectetur
{{< /accordion >}}
<hr>
### Code and Syntax Highlighting
This is an `Inline code` sample.
```javascript
var s = "JavaScript syntax highlighting";
alert(s);
```
```python
s = "Python syntax highlighting"
print s
```
<hr>
### Blockquote
> Did you come here for something in particular or just general Riker-bashing? And blowing into maximum warp speed, you appeared for an instant to be in two places at once.
<hr>
### Tables
| Tables | Are | Cool |
| ------------- | :-----------: | ----: |
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
<hr>
### Image
{{< image src="images/image-placeholder.png" caption="" alt="alter-text" height="" width="" position="center" command="fill" option="q100" class="img-fluid" title="image title" webp="false" >}}
<hr>
### Gallery
{{< gallery dir="images/gallery" class="" height="400" width="400" webp="true" command="Fit" option="" zoomable="true" >}}
<hr>
### Slider
{{< slider dir="images/gallery" class="max-w-[600px] ml-0" height="400" width="400" webp="true" command="Fit" option="" zoomable="true" >}}
<hr>
### Youtube video
{{< youtube ResipmZmpDU >}}
<hr>
### Custom video
{{< video src="https://www.w3schools.com/html/mov_bbb.mp4" width="100%" height="auto" autoplay="false" loop="false" muted="false" controls="true" class="rounded-lg" >}}

View file

@ -0,0 +1,33 @@
---
title: "Privacy"
# meta title
meta_title: ""
# meta description
description: "This is meta description"
# save as draft
draft: false
---
#### Responsibility of Contributors
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Purus, donec nunc eros, ullamcorper id feugiat quisque aliquam sagittis. Sem turpis sed viverra massa gravida pharetra. Non dui dolor potenti eu dignissim fusce. Ultrices amet, in curabitur a arcu a lectus morbi id. Iaculis erat sagittis in tortor cursus. Molestie urna eu tortor, erat scelerisque eget. Nunc hendrerit sed interdum lacus. Lorem quis viverra sed
pretium, aliquam sit. Praesent elementum magna amet, tincidunt eros, nibh in leo. Malesuada purus, lacus, at aliquam suspendisse tempus. Quis tempus amet, velit nascetur sollicitudin. At sollicitudin eget amet in. Eu velit nascetur sollicitudin erhdfvssfvrgss eget viverra nec elementum. Lacus, facilisis tristique lectus in.
#### Gathering of Personal Information
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Purus, donec nunc eros, ullamcorper id feugiat quisque aliquam sagittis. Sem turpis sed viverra massa gravida pharetra. Non dui dolor potenti eu dignissim fusce. Ultrices amet, in curabitur a arcu a lectus morbi id. Iaculis erat sagittis in tortor cursus. Molestie urna eu tortor, erat scelerisque eget. Nunc hendrerit sed interdum lacus. Lorem quis viverra sed
#### Protection of Personal- Information
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Purus, donec nunc eros, ullamcorper id feugiat quisque aliquam sagittis. Sem turpis sed viverra massa gravida pharetra. Non dui dolor potenti eu dignissim fusce. Ultrices amet, in curabitur a arcu a lectus morbi id. Iaculis erat sagittis in tortor cursus.
Molestie urna eu tortor, erat scelerisque eget. Nunc hendrerit sed interdum lacus. Lorem quis viverra sed
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Purus, donec nunc eros, ullamcorper id feugiat
#### Privacy Policy Changes
1. Sll the Themefisher items are designed to be with the latest , We check all
2. comments that threaten or harm the reputation of any person or organization
3. personal information including, but limited to, email addresses, telephone numbers
4. Any Update come in The technology Customer will get automatic Notification.

View file

@ -0,0 +1,14 @@
---
enable: true
title: "Ready to build your next project with Hugo?"
image: "/images/call-to-action.png"
description: "Experience the future of web development with Hugoplate and Hugo. Build lightning-fast static sites with ease and flexibility."
button:
enable: true
label: "Get Started Now"
link: "https://github.com/zeon-studio/hugoplate"
# don't create a separate page
_build:
render: "never"
---

View file

@ -0,0 +1,31 @@
---
enable: true
title: "What Users Are Saying About Hugoplate"
description: "Don't just take our word for it - hear from some of our satisfied users! Check out some of our testimonials below to see what others are saying about Hugoplate."
# Testimonials
testimonials:
- name: "Marvin McKinney"
designation: "Web Designer"
avatar: "/images/avatar-sm.png"
content: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui iusto illo molestias, assumenda expedita commodi inventore non itaque molestiae voluptatum dolore, facilis sapiente, repellat veniam."
- name: "Marvin McKinney"
designation: "Web Designer"
avatar: "/images/avatar-sm.png"
content: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui iusto illo molestias, assumenda expedita commodi inventore non itaque molestiae voluptatum dolore, facilis sapiente, repellat veniam."
- name: "Marvin McKinney"
designation: "Web Designer"
avatar: "/images/avatar-sm.png"
content: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui iusto illo molestias, assumenda expedita commodi inventore non itaque molestiae voluptatum dolore, facilis sapiente, repellat veniam."
- name: "Marvin McKinney"
designation: "Web Designer"
avatar: "/images/avatar-sm.png"
content: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui iusto illo molestias, assumenda expedita commodi inventore non itaque molestiae voluptatum dolore, facilis sapiente, repellat veniam."
# don't create a separate page
_build:
render: "never"
---

View file

@ -0,0 +1,24 @@
{
"main": [
{
"name": "facebook",
"icon": "fab fa-facebook",
"link": "https://www.facebook.com/"
},
{
"name": "twitter",
"icon": "fab fa-twitter",
"link": "https://twitter.com/"
},
{
"name": "github",
"icon": "fab fa-github",
"link": "https://www.github.com/"
},
{
"name": "linkedin",
"icon": "fab fa-linkedin",
"link": "https://www.linkedin.com/"
}
]
}

View file

@ -0,0 +1,27 @@
{
"colors": {
"default": {
"theme_color": {
"primary": "#121212",
"body": "#fff",
"border": "#eaeaea",
"theme_light": "#f6f6f6",
"theme_dark": ""
},
"text_color": {
"default": "#444444",
"dark": "#040404",
"light": "#717171"
}
}
},
"fonts": {
"font_family": {
"primary": "Heebo:wght@400;600",
"primary_type": "sans-serif",
"secondary": "Signika:wght@500;700",
"secondary_type": "sans-serif"
},
"font_size": { "base": "16", "scale": "1.2" }
}
}

29
exampleSite/go.mod Normal file
View file

@ -0,0 +1,29 @@
module hugoplate.netlify.app
go 1.20
require (
github.com/gethugothemes/hugo-modules/accordion v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/adsense v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/components/cookie-consent v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/components/custom-script v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/components/preloader v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/components/render-link v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/components/social-share v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/gallery-slider v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/gzip-caching v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/icons/font-awesome v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/images v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/modal v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/pwa v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/search v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/seo-tools/basic-seo v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/seo-tools/google-tag-manager v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/seo-tools/site-verifications v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/shortcodes/button v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/shortcodes/notice v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/tab v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/table-of-contents v0.0.0-20240215103202-c030d4222242 // indirect
github.com/gethugothemes/hugo-modules/videos v0.0.0-20240215103202-c030d4222242 // indirect
github.com/zeon-studio/hugoplate v0.0.0-20240215094431-cf2ee3b68eaf // indirect
)

172
exampleSite/hugo.toml Executable file
View file

@ -0,0 +1,172 @@
######################## default configuration ####################
# The base URL of your site (required). This will be prepended to all relative URLs.
baseURL = "/"
# Title of your website (required).
title = "Hugoplate"
# Your theme name
# theme = "hugoplate"
# Default time zone for time stamps; use any valid tz database name: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
timeZone = "America/New_York"
# post pagination
paginate = 2 # see https://gohugo.io/extras/pagination/
# post excerpt
summaryLength = 10 # see https://gohugo.io/content-management/excerpts/
# disable language
disableLanguages = [
] # example: ["fr"] for disable french language. see https://gohugo.io/content-management/multilingual/
hasCJKLanguage = false # If hasCJKLanguage true, auto-detect Chinese/Japanese/Korean Languages in the content. see: https://gohugo.io/getting-started/configuration/#hascjklanguage
# default language
defaultContentLanguage = 'en'
defaultContentLanguageInSubdir = false
########################### Services #############################
[services]
[services.googleAnalytics]
ID = 'G-MEASUREMENT_ID' # see https://gohugo.io/templates/internal/#configure-google-analytics
[services.disqus]
shortname = 'themefisher-template' # we use disqus to show comments in blog posts . To install disqus please follow this tutorial https://portfolio.peter-baumgartner.net/2017/09/10/how-to-install-disqus-on-hugo/
########################## Permalinks ############################
[permalinks.page]
"pages" = "/:slugorfilename/"
############################# Modules ############################
[module]
[[module.mounts]]
source = "assets"
target = "assets"
[[module.mounts]]
source = "hugo_stats.json"
target = "assets/watching/hugo_stats.json"
############################# Build ##############################
[build]
noJSConfigInAssets = false
useResourceCacheWhen = 'fallback'
[build.buildStats]
enable = true
[[build.cachebusters]]
source = 'assets/watching/hugo_stats\.json'
target = 'style\.css'
[[build.cachebusters]]
source = '(postcss|tailwind)\.config\.js'
target = 'css'
[[build.cachebusters]]
source = 'assets/.*\.(js|ts|jsx|tsx)'
target = 'js'
[[build.cachebusters]]
source = 'assets/.*\.(css|scss|sass)'
target = 'css'
[[build.cachebusters]]
source = 'data/.*\.(.*)$'
target = 'css'
[[build.cachebusters]]
source = 'assets/.*\.(.*)$'
target = '$1'
############################# Outputs ############################
[outputs]
home = ["HTML", "RSS", "WebAppManifest", "SearchIndex"]
############################# Imaging ############################
[imaging]
# See https://github.com/disintegration/imaging
# Default JPEG or WebP quality setting. Default is 75.
quality = 80
resampleFilter = "Lanczos"
############################ Caches ##############################
[caches]
[caches.images]
dir = ":resourceDir/_gen"
maxAge = "720h"
[caches.assets]
dir = ":resourceDir/_gen"
maxAge = "720h"
############################ Markup ##############################
[markup]
[markup.goldmark.renderer]
unsafe = true
[markup.highlight]
style = 'monokai' # see https://xyproto.github.io/splash/docs/all.html
[markup.tableOfContents]
startLevel = 2
endLevel = 5
ordered = true
########################### Media types ###########################
[mediaTypes]
[mediaTypes."application/manifest+json"]
suffixes = ["webmanifest"]
########################### Output Format ##########################
[outputFormats]
[outputFormats.WebAppManifest]
mediaType = "application/manifest+json"
rel = "manifest"
[outputFormats.SearchIndex]
mediaType = "application/json"
baseName = "searchindex"
isPlainText = true
notAlternative = true
############################# Plugins ##############################
# CSS Plugins
[[params.plugins.css]]
link = "plugins/swiper/swiper-bundle.css"
lazy = true
[[params.plugins.css]]
link = "plugins/glightbox/glightbox.css"
lazy = true
[[params.plugins.css]]
link = "plugins/font-awesome/v6/brands.css"
lazy = true
[[params.plugins.css]]
link = "plugins/font-awesome/v6/solid.css"
lazy = true
[[params.plugins.css]]
link = "plugins/font-awesome/v6/icons.css"
lazy = true
# JS Plugins
[[params.plugins.js]]
link = "js/search.js"
lazy = false
[[params.plugins.js]]
link = "plugins/swiper/swiper-bundle.js"
lazy = false
[[params.plugins.js]]
link = "plugins/cookie.js"
lazy = false
[[params.plugins.js]]
link = "plugins/glightbox/glightbox.js"
lazy = true
[[params.plugins.js]]
link = "js/gallery-slider.js"
lazy = true
[[params.plugins.js]]
link = "js/accordion.js"
lazy = true
[[params.plugins.js]]
link = "js/tab.js"
lazy = true
[[params.plugins.js]]
link = "js/modal.js"
lazy = true
[[params.plugins.js]]
link = "plugins/youtube-lite.js"
lazy = true

32
exampleSite/i18n/en.yaml Executable file
View file

@ -0,0 +1,32 @@
- id: home
translation: Home
- id: read_more
translation: Read More
- id: send
translation: Send
- id: related_posts
translation: Related Posts
- id: categories
translation: Categories
- id: tags
translation: Tags
- id: toc
translation: Table of Contents
- id: share
translation: Share
- id: search_input_placeholder
translation: Search Post ...
- id: no_results_for
translation: No results for
- id: empty_search_results_placeholder
translation: Type something to search..

View file

@ -0,0 +1,45 @@
const purgecss = {
content: ["./hugo_stats.json"],
defaultExtractor: (content) => {
const elements = JSON.parse(content).htmlElements;
return [
...(elements.tags || []),
...(elements.classes || []),
...(elements.ids || []),
];
},
safelist: [
/^swiper-/,
/^lb-/,
/^gl/,
/^go/,
/^gc/,
/^gs/,
/^gi/,
/^gz/,
/^gprev/,
/^gnext/,
/^desc/,
/^zoom/,
/^search/,
/^:is/,
/dark/,
/show/,
/dragging/,
/fullscreen/,
/loaded/,
/visible/,
/current/,
/active/,
/mark/,
],
};
module.exports = {
plugins: {
tailwindcss: {},
"@fullhuman/postcss-purgecss":
process.env.HUGO_ENVIRONMENT === "production" ? purgecss : false,
autoprefixer: process.env.HUGO_ENVIRONMENT === "production" ? {} : false,
},
};

92
exampleSite/tailwind.config.js Executable file
View file

@ -0,0 +1,92 @@
const fs = require("fs");
const path = require("path");
const themePath = path.join(__dirname, "data/theme.json");
const themeRead = fs.readFileSync(themePath, "utf8");
const theme = JSON.parse(themeRead);
let font_base = Number(theme.fonts.font_size.base.replace("px", ""));
let font_scale = Number(theme.fonts.font_size.scale);
let h6 = font_scale;
let h5 = h6 * font_scale;
let h4 = h5 * font_scale;
let h3 = h4 * font_scale;
let h2 = h3 * font_scale;
let h1 = h2 * font_scale;
let fontPrimary, fontPrimaryType, fontSecondary, fontSecondaryType;
if (theme.fonts.font_family.primary) {
fontPrimary = theme.fonts.font_family.primary
.replace(/\+/g, " ")
.replace(/:[ital,]*[ital@]*[wght@]*[0-9,;]+/gi, "");
fontPrimaryType = theme.fonts.font_family.primary_type;
}
if (theme.fonts.font_family.secondary) {
fontSecondary = theme.fonts.font_family.secondary
.replace(/\+/g, " ")
.replace(/:[ital,]*[ital@]*[wght@]*[0-9,;]+/gi, "");
fontSecondaryType = theme.fonts.font_family.secondary_type;
}
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./hugo_stats.json"],
safelist: [{ pattern: /^swiper-/ }],
theme: {
screens: {
sm: "540px",
md: "768px",
lg: "1024px",
xl: "1280px",
"2xl": "1536px",
},
container: {
center: true,
padding: "2rem",
},
extend: {
colors: {
text: theme.colors.default.text_color.default,
light: theme.colors.default.text_color.light,
dark: theme.colors.default.text_color.dark,
primary: theme.colors.default.theme_color.primary,
secondary: theme.colors.default.theme_color.secondary,
body: theme.colors.default.theme_color.body,
border: theme.colors.default.theme_color.border,
"theme-light": theme.colors.default.theme_color.theme_light,
"theme-dark": theme.colors.default.theme_color.theme_dark,
},
fontSize: {
base: font_base + "px",
"base-sm": font_base * 0.8 + "px",
h1: h1 + "rem",
"h1-sm": h1 * 0.9 + "rem",
h2: h2 + "rem",
"h2-sm": h2 * 0.9 + "rem",
h3: h3 + "rem",
"h3-sm": h3 * 0.9 + "rem",
h4: h4 + "rem",
h5: h5 + "rem",
h6: h6 + "rem",
},
fontFamily: {
primary: [fontPrimary, fontPrimaryType],
secondary: [fontSecondary, fontSecondaryType],
},
},
},
plugins: [
require("@tailwindcss/typography"),
require("@tailwindcss/forms"),
require("tailwind-bootstrap-grid")({
generateContainer: false,
gridGutterWidth: "2rem",
gridGutters: {
1: "0.25rem",
2: "0.5rem",
3: "1rem",
4: "1.5rem",
5: "3rem",
},
}),
],
};

View file

@ -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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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 }}

View 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 -->

View 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>

View 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>

View 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>

View 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 }}

View 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 }}

View 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 }}

View 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>

View 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>

View 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" . }} */}}

Some files were not shown because too many files have changed in this diff Show more