init commit
0
.hugo_build.lock
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2023 - Present, Zeon Studio
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
29
amplify.yml
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
version: 1
|
||||||
|
frontend:
|
||||||
|
phases:
|
||||||
|
preBuild:
|
||||||
|
commands:
|
||||||
|
- yum install -y curl
|
||||||
|
- curl -LO "https://github.com/gohugoio/hugo/releases/download/v0.121.2/hugo_extended_0.121.2_Linux-64bit.tar.gz"
|
||||||
|
- tar -xvf hugo_extended_0.121.2_Linux-64bit.tar.gz
|
||||||
|
- mv hugo /usr/local/bin/
|
||||||
|
- rm hugo_extended_0.121.2_Linux-64bit.tar.gz
|
||||||
|
- echo "HUGO 0.121.2 INSTALLED"
|
||||||
|
- curl -LO "https://dl.google.com/go/go1.20.5.linux-amd64.tar.gz"
|
||||||
|
- tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz
|
||||||
|
- export PATH=$PATH:/usr/local/go/bin
|
||||||
|
- rm go1.20.5.linux-amd64.tar.gz
|
||||||
|
- echo "GO 1.20.5 INSTALLED"
|
||||||
|
- npm install
|
||||||
|
build:
|
||||||
|
commands:
|
||||||
|
- npm run project-setup
|
||||||
|
- npm run build
|
||||||
|
artifacts:
|
||||||
|
# IMPORTANT - Please verify your build output directory
|
||||||
|
baseDirectory: /public
|
||||||
|
files:
|
||||||
|
- "**/*"
|
||||||
|
cache:
|
||||||
|
paths:
|
||||||
|
- node_modules/**/*
|
BIN
assets/images/avatar-sm.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
assets/images/avatar.png
Executable file
After Width: | Height: | Size: 2.2 KiB |
BIN
assets/images/banner.png
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
assets/images/call-to-action.png
Executable file
After Width: | Height: | Size: 19 KiB |
BIN
assets/images/favicon.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
assets/images/image-placeholder.png
Executable file
After Width: | Height: | Size: 4.8 KiB |
BIN
assets/images/logo-darkmode.png
Normal file
After Width: | Height: | Size: 3 KiB |
BIN
assets/images/logo.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
assets/images/no-search-found.png
Executable file
After Width: | Height: | Size: 8.1 KiB |
BIN
assets/images/og-image.png
Normal file
After Width: | Height: | Size: 105 KiB |
BIN
assets/images/service-1.png
Executable file
After Width: | Height: | Size: 11 KiB |
BIN
assets/images/service-2.png
Executable file
After Width: | Height: | Size: 19 KiB |
BIN
assets/images/service-3.png
Executable file
After Width: | Height: | Size: 16 KiB |
1
assets/scss/custom.scss
Executable file
|
@ -0,0 +1 @@
|
||||||
|
// Add your own custom styles here
|
6
config/_default/languages.toml
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
################ English language ##################
|
||||||
|
[en]
|
||||||
|
languageName = "En"
|
||||||
|
languageCode = "en-us"
|
||||||
|
contentDir = "content/english"
|
||||||
|
weight = 1
|
64
config/_default/menus.en.toml
Executable file
|
@ -0,0 +1,64 @@
|
||||||
|
############# English navigation ##############
|
||||||
|
|
||||||
|
# main menu
|
||||||
|
[[main]]
|
||||||
|
name = "Home"
|
||||||
|
pageRef = "/"
|
||||||
|
weight = 1
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "About"
|
||||||
|
pageRef = "/about"
|
||||||
|
weight = 2
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
name = "Elements"
|
||||||
|
pageRef = "/elements"
|
||||||
|
weight = 3
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
weight = 4
|
||||||
|
name = "Pages"
|
||||||
|
hasChildren = true
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
parent = "Pages"
|
||||||
|
name = "Blog"
|
||||||
|
pageRef = "/blog"
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
parent = "Pages"
|
||||||
|
name = "Contact"
|
||||||
|
pageRef = "/contact"
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
parent = "Pages"
|
||||||
|
name = "Authors"
|
||||||
|
pageRef = "/authors"
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
parent = "Pages"
|
||||||
|
name = "Categories"
|
||||||
|
pageRef = "/categories"
|
||||||
|
|
||||||
|
[[main]]
|
||||||
|
parent = "Pages"
|
||||||
|
name = "404 Page"
|
||||||
|
pageRef = "/404"
|
||||||
|
|
||||||
|
|
||||||
|
# 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
|
93
config/_default/module.toml
Normal 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"
|
101
config/_default/params.toml
Executable 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 = "get a quote"
|
||||||
|
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&id=a0a2c6d074" # replace this url with yours
|
||||||
|
mailchimp_form_name = "b_463ee871f45d2d93748e77cad_a0a2c6d074"
|
53
content/english/_index.md
Executable 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: ""
|
||||||
|
---
|
9
content/english/about/_index.md
Normal 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.
|
3
content/english/authors/_index.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
title: "Authors"
|
||||||
|
---
|
12
content/english/authors/john-doe.md
Normal 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.
|
5
content/english/blog/_index.md
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: "Blog Posts"
|
||||||
|
meta_title: ""
|
||||||
|
description: "this is meta description"
|
||||||
|
---
|
23
content/english/blog/post-1.md
Executable 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!
|
23
content/english/blog/post-2.md
Executable 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!
|
23
content/english/blog/post-3.md
Executable 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!
|
23
content/english/blog/post-4.md
Executable 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!
|
6
content/english/contact/_index.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
title: "Contact"
|
||||||
|
meta_title: ""
|
||||||
|
description: "this is meta description"
|
||||||
|
draft: false
|
||||||
|
---
|
11
content/english/pages/Consortium.md
Executable 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.
|
13
content/english/pages/NLnet.md
Executable 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 1980’s, NLnet has been financially supporting the open internet since 1997.
|
||||||
|
|
||||||
|
NLnet provides grants to free and open source projects between 5.000 and 50.000 euro with the possibility to scale up. Funding is open to anyone: organisations of any type and individuals. Within NGI Fediversity, NLnet facilitates the open calls for third-party funding and contributes to outreach and dissemination.
|
13
content/english/pages/NORDUnet.md
Executable 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.
|
11
content/english/pages/OID.md
Executable 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.
|
11
content/english/pages/Tweag.md
Executable 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.
|
239
content/english/pages/elements.md
Executable 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 you’re 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" >}}
|
33
content/english/pages/privacy-policy.md
Normal 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.
|
14
content/english/sections/call-to-action.md
Normal 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"
|
||||||
|
---
|
31
content/english/sections/testimonial.md
Normal 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"
|
||||||
|
---
|
24
data/social.json
Normal 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/"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
44
data/theme.json
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
{
|
||||||
|
"colors": {
|
||||||
|
"default": {
|
||||||
|
"theme_color": {
|
||||||
|
"primary": "#121212",
|
||||||
|
"body": "#fff",
|
||||||
|
"border": "#eaeaea",
|
||||||
|
"theme_light": "#f6f6f6",
|
||||||
|
"theme_dark": ""
|
||||||
|
},
|
||||||
|
"text_color": {
|
||||||
|
"default": "#444444",
|
||||||
|
"dark": "#040404",
|
||||||
|
"light": "#717171"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"darkmode": {
|
||||||
|
"theme_color": {
|
||||||
|
"primary": "#fff",
|
||||||
|
"body": "#1c1c1c",
|
||||||
|
"border": "#3E3E3E",
|
||||||
|
"theme_light": "#222222",
|
||||||
|
"theme_dark": ""
|
||||||
|
},
|
||||||
|
"text_color": {
|
||||||
|
"default": "#B4AFB6",
|
||||||
|
"dark": "#fff",
|
||||||
|
"light": "#B4AFB6"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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
go.mod
Normal 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
|
||||||
|
)
|
46
go.sum
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
github.com/gethugothemes/hugo-modules/accordion v0.0.0-20240215103202-c030d4222242 h1:gFxGalBg26zJumCS5e//j95FgZlYRpNJ3jIXi4OIl1c=
|
||||||
|
github.com/gethugothemes/hugo-modules/accordion v0.0.0-20240215103202-c030d4222242/go.mod h1:D4DpauKPDcUHI9CVKYmJeO6bkSJIhUN864TyXZ2o0VI=
|
||||||
|
github.com/gethugothemes/hugo-modules/adsense v0.0.0-20240215103202-c030d4222242 h1:H4qw71Pv1RmCio3r/D4N8MXHVks1SBpMcVmZCnz3wlg=
|
||||||
|
github.com/gethugothemes/hugo-modules/adsense v0.0.0-20240215103202-c030d4222242/go.mod h1:8p/gG/cyyu20z4q5cFN/JGE5TOFA55Xsp+aIP9KCsqo=
|
||||||
|
github.com/gethugothemes/hugo-modules/components/cookie-consent v0.0.0-20240215103202-c030d4222242 h1:d4SGLNv5mmwnMAG78t40ce0CSnhQwZJAi2FTmmx9kgg=
|
||||||
|
github.com/gethugothemes/hugo-modules/components/cookie-consent v0.0.0-20240215103202-c030d4222242/go.mod h1:511ERLpGe3ZTfV2z/NAtUSR5NqKF26h9z5lU/zYV4YQ=
|
||||||
|
github.com/gethugothemes/hugo-modules/components/custom-script v0.0.0-20240215103202-c030d4222242 h1:+ShMfcdSHAgg8eFF7ZVvEaWl+/JkLLfpaWgqJZnsm0I=
|
||||||
|
github.com/gethugothemes/hugo-modules/components/custom-script v0.0.0-20240215103202-c030d4222242/go.mod h1:RuDHq4WnK8sNEzAIJr4BZQ7oXhzcct/EKaAxc2Xvi9E=
|
||||||
|
github.com/gethugothemes/hugo-modules/components/preloader v0.0.0-20240215103202-c030d4222242 h1:Wnijrj8VjI2GclhDHsH0zRcYO1Wq/t9u5LtGpDFbc7w=
|
||||||
|
github.com/gethugothemes/hugo-modules/components/preloader v0.0.0-20240215103202-c030d4222242/go.mod h1:FP0iQ3tMOesuWFZhLst2KEvUEYPb5Jk1GW+QBP9lrwg=
|
||||||
|
github.com/gethugothemes/hugo-modules/components/render-link v0.0.0-20240215103202-c030d4222242 h1:1aTJ9rWGFka6yaEDrCR3uouz4BsA5H00S1iQzlTT7Cg=
|
||||||
|
github.com/gethugothemes/hugo-modules/components/render-link v0.0.0-20240215103202-c030d4222242/go.mod h1:z3YcIeEBUonAoRDY1/Jv1ojNVkZ5ud35a0Nn8L4Inx0=
|
||||||
|
github.com/gethugothemes/hugo-modules/components/social-share v0.0.0-20240215103202-c030d4222242 h1:phq6SxYmB8A22LlMUu2p75sI0qrWrizQVbptk0YznSU=
|
||||||
|
github.com/gethugothemes/hugo-modules/components/social-share v0.0.0-20240215103202-c030d4222242/go.mod h1:Gcj4RM/EBECsJMZnPeWjfy/1roRYGqzV9GYNmeHkvFA=
|
||||||
|
github.com/gethugothemes/hugo-modules/gallery-slider v0.0.0-20240215103202-c030d4222242 h1:imsu5wNduLXax4FjofQ7bOBpTtqgyyBcM15s0kNzHzM=
|
||||||
|
github.com/gethugothemes/hugo-modules/gallery-slider v0.0.0-20240215103202-c030d4222242/go.mod h1:MvQ2js/ofZ22CTX5wuvE+dC0rMe6C5HAWL2fEOu/yzE=
|
||||||
|
github.com/gethugothemes/hugo-modules/gzip-caching v0.0.0-20240215103202-c030d4222242 h1:qP8v2MMeqRQ658Vw/o4jsNKq/BUFVLfGkVz0dy8cDEo=
|
||||||
|
github.com/gethugothemes/hugo-modules/gzip-caching v0.0.0-20240215103202-c030d4222242/go.mod h1:0ZMjTZVG4XLZU2/icc8Saqo4mmgMpfRTrUZU2Aa2Pwg=
|
||||||
|
github.com/gethugothemes/hugo-modules/icons/font-awesome v0.0.0-20240215103202-c030d4222242 h1:xZm3fwubmIb3xpkmsrX9zDp7m0lfg5yptQKQT0dxxI0=
|
||||||
|
github.com/gethugothemes/hugo-modules/icons/font-awesome v0.0.0-20240215103202-c030d4222242/go.mod h1:d3gy1vQyfasPmGpau7HpQLrXbOv23PfXclSnjyOBxeU=
|
||||||
|
github.com/gethugothemes/hugo-modules/images v0.0.0-20240215103202-c030d4222242 h1:r1h0s39pTIW0PJVbDzKrePX3RNlHnHiTzldnXuDZeXU=
|
||||||
|
github.com/gethugothemes/hugo-modules/images v0.0.0-20240215103202-c030d4222242/go.mod h1:FKliP3qOW9diIcQeLtyZ0Hdhg3PL8bdAkC/6O+XtU90=
|
||||||
|
github.com/gethugothemes/hugo-modules/modal v0.0.0-20240215103202-c030d4222242 h1:8oP1m06Ko+q7dQichAmywtzMsGuckoG3rW6UVboa7d0=
|
||||||
|
github.com/gethugothemes/hugo-modules/modal v0.0.0-20240215103202-c030d4222242/go.mod h1:Eb9v7oV6biymfvjcBhQdvgn0gUGYhUtfCMeOBLFpFsk=
|
||||||
|
github.com/gethugothemes/hugo-modules/pwa v0.0.0-20240215103202-c030d4222242 h1:82WUFZMkOqSt5wWQ1uxkS7pP648+MfitjJbETOM8Hl0=
|
||||||
|
github.com/gethugothemes/hugo-modules/pwa v0.0.0-20240215103202-c030d4222242/go.mod h1:TRv7iszdfo37O1PbBEE+S8X/enAdpRIxK5DGrp13Qbo=
|
||||||
|
github.com/gethugothemes/hugo-modules/search v0.0.0-20240215103202-c030d4222242 h1:Uj5yTctxnxU3Rqc0hVT4KJ8bRY3rn6bwhSDhhsrWQLQ=
|
||||||
|
github.com/gethugothemes/hugo-modules/search v0.0.0-20240215103202-c030d4222242/go.mod h1:tmDvLaZCM+QDvS/WLZXNjY1QTdWh7/68D2wIToECbyA=
|
||||||
|
github.com/gethugothemes/hugo-modules/seo-tools/basic-seo v0.0.0-20240215103202-c030d4222242 h1:FCUJq2eYZmYVgTWnTno4lnez+0pCRHqBX0EREqiAzjA=
|
||||||
|
github.com/gethugothemes/hugo-modules/seo-tools/basic-seo v0.0.0-20240215103202-c030d4222242/go.mod h1:Q8dPgjamV7pxwKSQyWV21Xwh5CGi23/k+M8HPTphYbs=
|
||||||
|
github.com/gethugothemes/hugo-modules/seo-tools/google-tag-manager v0.0.0-20240215103202-c030d4222242 h1:XFI2k5XL/hIzr+MoRq2VAMQyHd4namMjqZLfOgeLiHI=
|
||||||
|
github.com/gethugothemes/hugo-modules/seo-tools/google-tag-manager v0.0.0-20240215103202-c030d4222242/go.mod h1:cCq50yd55eFTrpqOfeyOK5X0hU5E7qxsqOD7IzTsgLA=
|
||||||
|
github.com/gethugothemes/hugo-modules/seo-tools/site-verifications v0.0.0-20240215103202-c030d4222242 h1:zgttA3KBEABQGqVVMBuEcFO8OszjSwGGnCYFVxboiDo=
|
||||||
|
github.com/gethugothemes/hugo-modules/seo-tools/site-verifications v0.0.0-20240215103202-c030d4222242/go.mod h1:iXielaya126qJscz7Bc2G2WB91moloQOoWru6UoBUyE=
|
||||||
|
github.com/gethugothemes/hugo-modules/shortcodes/button v0.0.0-20240215103202-c030d4222242 h1:ZZPGIQ8uP/yBwelIGhLAx9fqOE18QyItitSTF0WD4B0=
|
||||||
|
github.com/gethugothemes/hugo-modules/shortcodes/button v0.0.0-20240215103202-c030d4222242/go.mod h1:MSvxGvjvcGUKTs6YMATU/9kYFrzW+VSVdy4CCOQLdsY=
|
||||||
|
github.com/gethugothemes/hugo-modules/shortcodes/notice v0.0.0-20240215103202-c030d4222242 h1:X10cLYuM8bT2EGul85TZZZ2/ih8jlax8/gLqynCDQIc=
|
||||||
|
github.com/gethugothemes/hugo-modules/shortcodes/notice v0.0.0-20240215103202-c030d4222242/go.mod h1:ljWyMJx82WA+6SlKjbGFhEdxcriyvUTCjXkJHDa4lho=
|
||||||
|
github.com/gethugothemes/hugo-modules/tab v0.0.0-20240215103202-c030d4222242 h1:gOucOrcZsEL++YUGnrTqFa91o9lRdNEepbnERNSmS3A=
|
||||||
|
github.com/gethugothemes/hugo-modules/tab v0.0.0-20240215103202-c030d4222242/go.mod h1:h3UxlxrFoU19JldxWLPBKaTZFe3AJtABrqo1wfxr+Ng=
|
||||||
|
github.com/gethugothemes/hugo-modules/table-of-contents v0.0.0-20240215103202-c030d4222242 h1:pgmjy/uwvUsAPTDl+gKz7GF3kTi6mcbFQBm4W8asDws=
|
||||||
|
github.com/gethugothemes/hugo-modules/table-of-contents v0.0.0-20240215103202-c030d4222242/go.mod h1:bEDw4veccQQQYEdVrfu13ATRUWfW8ptDIjJZuhYh4Tw=
|
||||||
|
github.com/gethugothemes/hugo-modules/videos v0.0.0-20240215103202-c030d4222242 h1:nLyYQIaJXGnMs8RlfRpmqRVR02T9OVzCEiekh5aU7Qw=
|
||||||
|
github.com/gethugothemes/hugo-modules/videos v0.0.0-20240215103202-c030d4222242/go.mod h1:P722lLWdnNhdZVq6gvMrOLqECUwrAYQWaOWlChta5H0=
|
||||||
|
github.com/zeon-studio/hugoplate v0.0.0-20240215094431-cf2ee3b68eaf h1:WOgVJoGR0gDPORswcdzZRN2zw2Ap4H58Zy5pYLwcmIQ=
|
||||||
|
github.com/zeon-studio/hugoplate v0.0.0-20240215094431-cf2ee3b68eaf/go.mod h1:YlRIwdTWidquf1dhtx+mDfu0I3KVrVQB4wi4UmHlK3E=
|
172
hugo.toml
Executable 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
|
406
hugo_stats.json
Normal file
|
@ -0,0 +1,406 @@
|
||||||
|
{
|
||||||
|
"htmlElements": {
|
||||||
|
"tags": [
|
||||||
|
"a",
|
||||||
|
"article",
|
||||||
|
"base",
|
||||||
|
"blockquote",
|
||||||
|
"body",
|
||||||
|
"button",
|
||||||
|
"code",
|
||||||
|
"del",
|
||||||
|
"details",
|
||||||
|
"div",
|
||||||
|
"em",
|
||||||
|
"footer",
|
||||||
|
"form",
|
||||||
|
"h1",
|
||||||
|
"h2",
|
||||||
|
"h3",
|
||||||
|
"h4",
|
||||||
|
"h5",
|
||||||
|
"h6",
|
||||||
|
"head",
|
||||||
|
"header",
|
||||||
|
"hr",
|
||||||
|
"html",
|
||||||
|
"i",
|
||||||
|
"iframe",
|
||||||
|
"img",
|
||||||
|
"input",
|
||||||
|
"kbd",
|
||||||
|
"label",
|
||||||
|
"li",
|
||||||
|
"link",
|
||||||
|
"main",
|
||||||
|
"meta",
|
||||||
|
"nav",
|
||||||
|
"noscript",
|
||||||
|
"ol",
|
||||||
|
"p",
|
||||||
|
"path",
|
||||||
|
"picture",
|
||||||
|
"polygon",
|
||||||
|
"pre",
|
||||||
|
"script",
|
||||||
|
"section",
|
||||||
|
"source",
|
||||||
|
"span",
|
||||||
|
"strong",
|
||||||
|
"summary",
|
||||||
|
"svg",
|
||||||
|
"table",
|
||||||
|
"tbody",
|
||||||
|
"td",
|
||||||
|
"textarea",
|
||||||
|
"th",
|
||||||
|
"thead",
|
||||||
|
"title",
|
||||||
|
"tr",
|
||||||
|
"ul",
|
||||||
|
"video"
|
||||||
|
],
|
||||||
|
"classes": [
|
||||||
|
"-translate-x-1/2",
|
||||||
|
"-translate-y-1/2",
|
||||||
|
"2xl:bg-pink-200",
|
||||||
|
"2xl:block",
|
||||||
|
"2xl:hidden",
|
||||||
|
"absolute",
|
||||||
|
"accordion",
|
||||||
|
"accordion-content",
|
||||||
|
"accordion-header",
|
||||||
|
"accordion-icon",
|
||||||
|
"active",
|
||||||
|
"bg-body",
|
||||||
|
"bg-gradient",
|
||||||
|
"bg-gradient-to-b",
|
||||||
|
"bg-gray-200",
|
||||||
|
"bg-primary",
|
||||||
|
"bg-theme-light",
|
||||||
|
"bg-white",
|
||||||
|
"block",
|
||||||
|
"border-b",
|
||||||
|
"border-border",
|
||||||
|
"border-r",
|
||||||
|
"border-t",
|
||||||
|
"btn",
|
||||||
|
"btn-outline-primary",
|
||||||
|
"btn-primary",
|
||||||
|
"btn-sm",
|
||||||
|
"capitalize",
|
||||||
|
"col-12",
|
||||||
|
"container",
|
||||||
|
"content",
|
||||||
|
"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",
|
||||||
|
"fa",
|
||||||
|
"fa-arrow-right",
|
||||||
|
"fa-brands",
|
||||||
|
"fa-check",
|
||||||
|
"fa-circle-user",
|
||||||
|
"fa-clock",
|
||||||
|
"fa-facebook",
|
||||||
|
"fa-folder",
|
||||||
|
"fa-github",
|
||||||
|
"fa-linkedin",
|
||||||
|
"fa-regular",
|
||||||
|
"fa-search",
|
||||||
|
"fa-solid",
|
||||||
|
"fa-twitter",
|
||||||
|
"fab",
|
||||||
|
"fill-current",
|
||||||
|
"fixed",
|
||||||
|
"flex",
|
||||||
|
"font-bold",
|
||||||
|
"font-primary",
|
||||||
|
"font-semibold",
|
||||||
|
"form-input",
|
||||||
|
"form-label",
|
||||||
|
"from-body",
|
||||||
|
"gallery",
|
||||||
|
"gallery-item",
|
||||||
|
"gallery-slider",
|
||||||
|
"glightbox",
|
||||||
|
"group",
|
||||||
|
"gx-5",
|
||||||
|
"h-4",
|
||||||
|
"h-6",
|
||||||
|
"h2",
|
||||||
|
"h3",
|
||||||
|
"h5",
|
||||||
|
"header",
|
||||||
|
"hidden",
|
||||||
|
"highlight",
|
||||||
|
"hover:bg-primary",
|
||||||
|
"hover:bg-theme-light",
|
||||||
|
"hover:text-primary",
|
||||||
|
"hover:text-white",
|
||||||
|
"img",
|
||||||
|
"img-center",
|
||||||
|
"img-fluid",
|
||||||
|
"info",
|
||||||
|
"inlin-block",
|
||||||
|
"inline-block",
|
||||||
|
"inline-flex",
|
||||||
|
"items-center",
|
||||||
|
"items-start",
|
||||||
|
"justify-between",
|
||||||
|
"justify-center",
|
||||||
|
"left-0",
|
||||||
|
"left-1/2",
|
||||||
|
"lg:!max-w-[800px]",
|
||||||
|
"lg:bg-green-200",
|
||||||
|
"lg:block",
|
||||||
|
"lg:col-10",
|
||||||
|
"lg:col-3",
|
||||||
|
"lg:col-4",
|
||||||
|
"lg:col-5",
|
||||||
|
"lg:col-6",
|
||||||
|
"lg:col-7",
|
||||||
|
"lg:col-8",
|
||||||
|
"lg:flex",
|
||||||
|
"lg:group-hover:opacity-100",
|
||||||
|
"lg:group-hover:visible",
|
||||||
|
"lg:hidden",
|
||||||
|
"lg:inline-block",
|
||||||
|
"lg:mb-0",
|
||||||
|
"lg:ml-0",
|
||||||
|
"lg:mt-0",
|
||||||
|
"lg:order-1",
|
||||||
|
"lg:pb-0",
|
||||||
|
"lg:space-x-2",
|
||||||
|
"lg:text-h1",
|
||||||
|
"lg:text-left",
|
||||||
|
"lg:text-right",
|
||||||
|
"lg:w-auto",
|
||||||
|
"logo-dark",
|
||||||
|
"logo-disqus",
|
||||||
|
"logo-light",
|
||||||
|
"m-1",
|
||||||
|
"m-3",
|
||||||
|
"max-w-[600px]",
|
||||||
|
"mb-10",
|
||||||
|
"mb-12",
|
||||||
|
"mb-14",
|
||||||
|
"mb-3",
|
||||||
|
"mb-4",
|
||||||
|
"mb-6",
|
||||||
|
"mb-8",
|
||||||
|
"mb:md-0",
|
||||||
|
"md:bg-yellow-200",
|
||||||
|
"md:block",
|
||||||
|
"md:col-10",
|
||||||
|
"md:col-5",
|
||||||
|
"md:col-6",
|
||||||
|
"md:col-7",
|
||||||
|
"md:col-8",
|
||||||
|
"md:col-9",
|
||||||
|
"md:hidden",
|
||||||
|
"md:order-1",
|
||||||
|
"md:order-2",
|
||||||
|
"ml-0",
|
||||||
|
"ml-2",
|
||||||
|
"ml-4",
|
||||||
|
"ml-auto",
|
||||||
|
"mr-1",
|
||||||
|
"mr-2",
|
||||||
|
"mr-3",
|
||||||
|
"mr-4",
|
||||||
|
"mr-5",
|
||||||
|
"ms-1",
|
||||||
|
"mt-10",
|
||||||
|
"mt-11",
|
||||||
|
"mt-20",
|
||||||
|
"mt-4",
|
||||||
|
"mt-6",
|
||||||
|
"mt-8",
|
||||||
|
"mt-9",
|
||||||
|
"mx-auto",
|
||||||
|
"nav-dropdown",
|
||||||
|
"nav-dropdown-item",
|
||||||
|
"nav-dropdown-link",
|
||||||
|
"nav-dropdown-list",
|
||||||
|
"nav-item",
|
||||||
|
"nav-link",
|
||||||
|
"navbar",
|
||||||
|
"navbar-brand",
|
||||||
|
"navbar-nav",
|
||||||
|
"note",
|
||||||
|
"notice",
|
||||||
|
"notice-body",
|
||||||
|
"notice-head",
|
||||||
|
"opacity-0",
|
||||||
|
"opacity-100",
|
||||||
|
"order-0",
|
||||||
|
"order-1",
|
||||||
|
"order-3",
|
||||||
|
"p-6",
|
||||||
|
"p-8",
|
||||||
|
"pb-0",
|
||||||
|
"pb-14",
|
||||||
|
"pb-16",
|
||||||
|
"pb-6",
|
||||||
|
"pl-2",
|
||||||
|
"pl-6",
|
||||||
|
"pr-5",
|
||||||
|
"pt-14",
|
||||||
|
"pt-7",
|
||||||
|
"px-2",
|
||||||
|
"px-3",
|
||||||
|
"px-4",
|
||||||
|
"px-7",
|
||||||
|
"px-8",
|
||||||
|
"py-1",
|
||||||
|
"py-1.5",
|
||||||
|
"py-10",
|
||||||
|
"py-14",
|
||||||
|
"py-2",
|
||||||
|
"py-7",
|
||||||
|
"py-[2.5px]",
|
||||||
|
"relative",
|
||||||
|
"rounded",
|
||||||
|
"rounded-2xl",
|
||||||
|
"rounded-full",
|
||||||
|
"rounded-lg",
|
||||||
|
"row",
|
||||||
|
"search-icon",
|
||||||
|
"search-modal",
|
||||||
|
"search-modal-overlay",
|
||||||
|
"search-reset",
|
||||||
|
"search-result",
|
||||||
|
"search-result-empty",
|
||||||
|
"search-result-info",
|
||||||
|
"search-wrapper",
|
||||||
|
"search-wrapper-body",
|
||||||
|
"search-wrapper-footer",
|
||||||
|
"search-wrapper-header",
|
||||||
|
"section",
|
||||||
|
"section-sm",
|
||||||
|
"share-email",
|
||||||
|
"share-facebook",
|
||||||
|
"share-icon",
|
||||||
|
"share-icons",
|
||||||
|
"share-link",
|
||||||
|
"share-reddit",
|
||||||
|
"share-title",
|
||||||
|
"share-twitter",
|
||||||
|
"sm:bg-red-200",
|
||||||
|
"sm:block",
|
||||||
|
"sm:col-10",
|
||||||
|
"sm:hidden",
|
||||||
|
"social-icons",
|
||||||
|
"space-x-1",
|
||||||
|
"space-x-3",
|
||||||
|
"space-y-4",
|
||||||
|
"sr-only",
|
||||||
|
"sticky",
|
||||||
|
"swiper",
|
||||||
|
"swiper-button-next",
|
||||||
|
"swiper-button-prev",
|
||||||
|
"swiper-slide",
|
||||||
|
"swiper-wrapper",
|
||||||
|
"tab",
|
||||||
|
"tab-content",
|
||||||
|
"tab-content-panel",
|
||||||
|
"tab-nav",
|
||||||
|
"tab-nav-item",
|
||||||
|
"table-of-content",
|
||||||
|
"testimonial-slider",
|
||||||
|
"testimonial-slider-pagination",
|
||||||
|
"text-[12px]",
|
||||||
|
"text-[8rem]",
|
||||||
|
"text-black",
|
||||||
|
"text-center",
|
||||||
|
"text-dark",
|
||||||
|
"text-h3",
|
||||||
|
"text-lg",
|
||||||
|
"text-light",
|
||||||
|
"text-primary",
|
||||||
|
"text-red-500",
|
||||||
|
"text-white",
|
||||||
|
"text-xl",
|
||||||
|
"theme-switcher",
|
||||||
|
"tip",
|
||||||
|
"to-theme-light",
|
||||||
|
"top-0",
|
||||||
|
"top-1.5",
|
||||||
|
"top-1/2",
|
||||||
|
"uppercase",
|
||||||
|
"w-4",
|
||||||
|
"w-[30px]",
|
||||||
|
"w-full",
|
||||||
|
"warning",
|
||||||
|
"xl:bg-blue-200",
|
||||||
|
"xl:block",
|
||||||
|
"xl:col-6",
|
||||||
|
"xl:hidden",
|
||||||
|
"xl:space-x-8",
|
||||||
|
"z-10",
|
||||||
|
"z-30",
|
||||||
|
"z-50",
|
||||||
|
"zoomable"
|
||||||
|
],
|
||||||
|
"ids": [
|
||||||
|
"TableOfContents",
|
||||||
|
"accordions",
|
||||||
|
"blockquote",
|
||||||
|
"button",
|
||||||
|
"code-and-syntax-highlighting",
|
||||||
|
"creative-design",
|
||||||
|
"custom-video",
|
||||||
|
"disqus_thread",
|
||||||
|
"email",
|
||||||
|
"emphasis",
|
||||||
|
"gallery",
|
||||||
|
"gathering-of-personal-information",
|
||||||
|
"heading-1",
|
||||||
|
"heading-2",
|
||||||
|
"heading-3",
|
||||||
|
"heading-4",
|
||||||
|
"heading-5",
|
||||||
|
"heading-6",
|
||||||
|
"hey-there-i-am-a-tab",
|
||||||
|
"hide-button",
|
||||||
|
"i-wanna-talk-about-the-assassination-attempt",
|
||||||
|
"image",
|
||||||
|
"link",
|
||||||
|
"message",
|
||||||
|
"name",
|
||||||
|
"nav-menu",
|
||||||
|
"nav-toggle",
|
||||||
|
"notice",
|
||||||
|
"ordered-list",
|
||||||
|
"paragraph",
|
||||||
|
"privacy-policy-changes",
|
||||||
|
"protection-of-personal--information",
|
||||||
|
"responsibility-of-contributors",
|
||||||
|
"search-modal-input",
|
||||||
|
"show-button",
|
||||||
|
"slider",
|
||||||
|
"tab",
|
||||||
|
"tables",
|
||||||
|
"theme-switcher",
|
||||||
|
"unordered-list",
|
||||||
|
"we-know-youre-dealing-in-stolen-ore",
|
||||||
|
"youtube-video"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
32
i18n/en.yaml
Executable 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..
|
BIN
images/screenshot.png
Normal file
After Width: | Height: | Size: 220 KiB |
BIN
images/tn.png
Normal file
After Width: | Height: | Size: 248 KiB |
7
netlify.toml
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
[build]
|
||||||
|
publish = "public"
|
||||||
|
command = "yarn project-setup; yarn build"
|
||||||
|
|
||||||
|
[build.environment]
|
||||||
|
HUGO_VERSION = "0.121.2"
|
||||||
|
GO_VERSION = "1.20.5"
|
2209
package-lock.json
generated
Normal file
34
package.json
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"name": "hugoplate",
|
||||||
|
"description": "hugo tailwindcss boilerplate",
|
||||||
|
"version": "1.13.1",
|
||||||
|
"license": "MIT",
|
||||||
|
"author": "zeon.studio",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "hugo server",
|
||||||
|
"build": "hugo --gc --minify --templateMetrics --templateMetricsHints --forceSyncStatic",
|
||||||
|
"preview": "hugo server --disableFastRender --navigateToChanged --templateMetrics --templateMetricsHints --watch --forceSyncStatic -e production --minify",
|
||||||
|
"dev:example": "cd exampleSite; hugo server",
|
||||||
|
"build:example": "cd exampleSite; hugo --gc --minify --templateMetrics --templateMetricsHints --forceSyncStatic",
|
||||||
|
"preview:example": "cd exampleSite; hugo server --disableFastRender --navigateToChanged --templateMetrics --templateMetricsHints --watch --forceSyncStatic -e production --minify",
|
||||||
|
"update-modules": "node ./scripts/clearModules.js && hugo mod clean --all && hugo mod get -u ./... && hugo mod tidy",
|
||||||
|
"remove-darkmode": "node ./scripts/removeDarkmode.js && yarn format",
|
||||||
|
"project-setup": "node ./scripts/projectSetup.js",
|
||||||
|
"theme-setup": "node ./scripts/themeSetup.js",
|
||||||
|
"update-theme": "node ./scripts/themeUpdate.js",
|
||||||
|
"format": "prettier -w ."
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@fullhuman/postcss-purgecss": "^5.0.0",
|
||||||
|
"@tailwindcss/forms": "^0.5.7",
|
||||||
|
"@tailwindcss/typography": "^0.5.10",
|
||||||
|
"autoprefixer": "^10.4.18",
|
||||||
|
"postcss": "^8.4.36",
|
||||||
|
"postcss-cli": "^11.0.0",
|
||||||
|
"prettier": "^3.2.5",
|
||||||
|
"prettier-plugin-go-template": "0.0.15",
|
||||||
|
"prettier-plugin-tailwindcss": "^0.5.12",
|
||||||
|
"tailwind-bootstrap-grid": "^5.1.0",
|
||||||
|
"tailwindcss": "^3.4.1"
|
||||||
|
}
|
||||||
|
}
|
45
postcss.config.js
Normal 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,
|
||||||
|
},
|
||||||
|
};
|
239
readme.md
Executable file
|
@ -0,0 +1,239 @@
|
||||||
|
<h1 align="center">Hugo + Tailwind CSS Starter and Boilerplate</h1>
|
||||||
|
|
||||||
|
<p align="center">Hugoplate is a free starter template built with Hugo, and TailwindCSS, providing everything you need to jumpstart your Hugo project and save valuable time.</p>
|
||||||
|
|
||||||
|
<p align="center">Made with ♥ by <a href="https://zeon.studio/"> Zeon Studio</a></p>
|
||||||
|
<p align=center> If you find this project useful, please give it a ⭐ to show your support.</p>
|
||||||
|
|
||||||
|
<h2 align="center"> <a target="_blank" href="https://hugoplate.netlify.app/" rel="nofollow">👀 Demo</a> | <a target="_blank" href="https://pagespeed.web.dev/analysis/https-hugoplate-netlify-app/6lyxjw6t4r?form_factor=desktop">Page Speed (95+)🚀</a>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://github.com/gohugoio/hugo/releases/tag/v0.121.2" alt="Contributors">
|
||||||
|
<img src="https://img.shields.io/static/v1?label=min-HUGO-version&message=0.121.2&color=f00&logo=hugo" />
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="https://github.com/zeon-studio/hugoplate/blob/main/LICENSE">
|
||||||
|
<img src="https://img.shields.io/github/license/zeon-studio/hugoplate" alt="license">
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="https://github.com/zeon-studio/hugoplate">
|
||||||
|
<img src="https://img.shields.io/github/languages/code-size/zeon-studio/hugoplate" alt="code size">
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="https://github.com/zeon-studio/hugoplate/graphs/contributors">
|
||||||
|
<img src="https://img.shields.io/github/contributors/zeon-studio/hugoplate" alt="contributors">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
## 🎁 What's Included
|
||||||
|
|
||||||
|
We have included almost everything you need to start your Hugo project. Let's see what's included in this template:
|
||||||
|
|
||||||
|
### 📌 Key Features
|
||||||
|
|
||||||
|
- 👥 Multi-Authors
|
||||||
|
- 🎯 Similar Posts Suggestion
|
||||||
|
- 🔍 Search Functionality
|
||||||
|
- 🌑 Dark Mode
|
||||||
|
- 🏷️ Tags & Categories
|
||||||
|
- 🔗 Netlify setting pre-configured
|
||||||
|
- 📞 Support contact form
|
||||||
|
- 📱 Fully responsive
|
||||||
|
- 📝 Write and update content in Markdown
|
||||||
|
- 💬 Disqus Comment
|
||||||
|
- 🔳 Syntax Highlighting
|
||||||
|
|
||||||
|
### 📄 15+ Pre-designed Pages
|
||||||
|
|
||||||
|
- 🏠 Homepage
|
||||||
|
- 👤 About
|
||||||
|
- 📞 Contact
|
||||||
|
- 👥 Authors
|
||||||
|
- 👤 Author Single
|
||||||
|
- 📝 Blog
|
||||||
|
- 📝 Blog Single
|
||||||
|
- 🚫 Custom 404
|
||||||
|
- 💡 Elements
|
||||||
|
- 📄 Privacy Policy
|
||||||
|
- 🏷️ Tags
|
||||||
|
- 🏷️ Tag Single
|
||||||
|
- 🗂️ Categories
|
||||||
|
- 🗂️ Category Single
|
||||||
|
- 🔍 Search
|
||||||
|
|
||||||
|
### 📦 Tech Stack
|
||||||
|
|
||||||
|
- [Hugo](https://gohugo.io/)
|
||||||
|
- [Tailwind CSS](https://tailwindcss.com/)
|
||||||
|
- [PostCSS](https://postcss.org/)
|
||||||
|
- [PurgeCSS](https://purgecss.com/)
|
||||||
|
- [AutoPrefixer](https://autoprefixer.github.io/)
|
||||||
|
- [Hugo Modules](https://gohugo.io/hugo-modules/) by [Gethugothemes](https://gethugothemes.com/hugo-modules)
|
||||||
|
- [Markdown](https://markdownguide.org/)
|
||||||
|
- [Prettier](https://prettier.io/)
|
||||||
|
- [Jshint](https://jshint.com/)
|
||||||
|
- [Netlify](https://www.netlify.com/)
|
||||||
|
- [Vercel](https://vercel.com/)
|
||||||
|
- [Github Actions](https://github.com/features/actions)
|
||||||
|
- [Gitlab Ci](https://docs.gitlab.com/ee/ci/)
|
||||||
|
- [AWS Amplify](https://aws.amazon.com/amplify/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Getting Started
|
||||||
|
|
||||||
|
First you need to [clone](https://github.com/zeon-studio/hugoplate) or [download](https://github.com/zeon-studio/hugoplate/archive/refs/heads/main.zip) the template repository, and then let's get started with the following process:
|
||||||
|
|
||||||
|
### ⚙️ Prerequisites
|
||||||
|
|
||||||
|
To start using this template, you need to have some prerequisites installed on your machine.
|
||||||
|
|
||||||
|
- [Hugo Extended v0.115+](https://gohugo.io/installation/)
|
||||||
|
- [Node v18+](https://nodejs.org/en/download/)
|
||||||
|
- [Go v1.20+](https://go.dev/doc/install)
|
||||||
|
|
||||||
|
### 👉 Project Setup
|
||||||
|
|
||||||
|
We build this custom script to make your project setup easier. It will create a new Hugo theme folder, and clone the Hugoplate theme into it. Then move the exampleSite folder into the root directory. So that you can start your Hugo server without going into the exampleSite folder. Use the following command to setup your project.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run project-setup
|
||||||
|
```
|
||||||
|
|
||||||
|
### 👉 Install Dependencies
|
||||||
|
|
||||||
|
Install all the dependencies using the following command.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### 👉 Development Command
|
||||||
|
|
||||||
|
Start the development server using the following command.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🎬 Still Confused? Watch a Quick Video
|
||||||
|
|
||||||
|
https://github.com/zeon-studio/hugoplate/assets/58769763/c260c0ae-91be-42ce-b8db-aa7f11f777bd
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Customization
|
||||||
|
|
||||||
|
This template has been designed with a lot of customization options in mind. You can customize almost anything you want, including:
|
||||||
|
|
||||||
|
### 👉 Site Config
|
||||||
|
|
||||||
|
You can change the site title, base URL, language, theme, plugins, and more from the `hugo.toml` file.
|
||||||
|
|
||||||
|
### 👉 Site Params
|
||||||
|
|
||||||
|
You can customize all the parameters from the `config/_default/params.toml` file. This includes the logo, favicon, search, SEO metadata, and more.
|
||||||
|
|
||||||
|
### 👉 Colors and Fonts
|
||||||
|
|
||||||
|
You can change the colors and fonts from the `data/theme.json` file. This includes the primary color, secondary color, font family, and font size.
|
||||||
|
|
||||||
|
### 👉 Social Links
|
||||||
|
|
||||||
|
You can change the social links from the `data/social.json` file. Add your social links here, and they will automatically be displayed on the site.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠 Advanced Usage
|
||||||
|
|
||||||
|
We have added some custom scripts to make your life easier. You can use these scripts to help you with your development.
|
||||||
|
|
||||||
|
### 👉 Update Theme
|
||||||
|
|
||||||
|
If you want to update the theme, then you can use the following command. It will update the theme to the latest version.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run update-theme
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Note:** This command will work after running `project-setup` script.
|
||||||
|
|
||||||
|
### 👉 Update Modules
|
||||||
|
|
||||||
|
We have added a lot of modules to this template. You can update all the modules using the following command.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run update-modules
|
||||||
|
```
|
||||||
|
|
||||||
|
### 👉 Remove Dark Mode
|
||||||
|
|
||||||
|
If you want to remove dark mode from your project, you can use the following command to remove dark mode from your project.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run remove-darkmode
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Note:** This command will work before running `project-setup` script. If you already run the `project-setup` command, then you have to run `npm run theme-setup` first, and then you can run this command. afterward, you can run `npm run project-setup` again.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Build And Deploy
|
||||||
|
|
||||||
|
After you finish your development, you can build or deploy your project almost everywhere. Let's see the process:
|
||||||
|
|
||||||
|
### 👉 Build Command
|
||||||
|
|
||||||
|
To build your project locally, you can use the following command. It will purge all the unused CSS and minify all the files.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
### 👉 Deploy Site
|
||||||
|
|
||||||
|
We have provided 5 different deploy platform configurations with this template, so you can deploy easily.
|
||||||
|
|
||||||
|
- [Netlify](https://www.netlify.com/)
|
||||||
|
- [Vercel](https://vercel.com/)
|
||||||
|
- [Github Actions](https://github.com/features/actions)
|
||||||
|
- [Gitlab Ci](https://docs.gitlab.com/ee/ci/)
|
||||||
|
- [AWS Amplify](https://aws.amazon.com/amplify/)
|
||||||
|
|
||||||
|
And if you want to Host some other hosting platforms. then you can build your project, and you will get a `public` folder. that you can copy and paste on your hosting platform.
|
||||||
|
|
||||||
|
> **Note:** You must change the `baseURL` in the `hugo.toml` file. Otherwise, your site will not work properly.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔒 Guide to Staying Compliant
|
||||||
|
|
||||||
|
### 🐞 Reporting Issues
|
||||||
|
|
||||||
|
We use GitHub Issues as the official bug tracker for this Template. Please Search [existing issues](https://github.com/zeon-studio/hugoplate/issues). It’s possible someone has already reported the same problem.
|
||||||
|
If your problem or idea has not been addressed yet, feel free to [open a new issue](https://github.com/zeon-studio/hugoplate/issues).
|
||||||
|
|
||||||
|
### 📝 License
|
||||||
|
|
||||||
|
Copyright (c) 2023 - Present, Designed & Developed by [Zeon Studio](https://zeon.studio/)
|
||||||
|
|
||||||
|
**Code License:** Released under the [MIT](https://github.com/zeon-studio/hugoplate/blob/main/LICENSE) license.
|
||||||
|
|
||||||
|
**Image license:** The images are only for demonstration purposes. They have their license, we don't have permission to share those images.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🖼️ Showcase
|
||||||
|
|
||||||
|
List of some projects people are building with **Hugoplate**!
|
||||||
|
|
||||||
|
| [![Open Neuromorphic](https://tinyurl.com/hp7avtje)](https://open-neuromorphic.org/) | [![AI Models](https://tinyurl.com/mu4p7dhb)](https://aimodels.org/) | [![Hugobricks](https://tinyurl.com/4x3uwhm9)](https://www.hugobricks.preview.usecue.com/) | [![ONO LLC](https://tinyurl.com/yxnu6whn)](https://ono.day/)
|
||||||
|
|:---:|:---:|:---:|:---:|
|
||||||
|
| **Open Neuromorphic** | **AI Models** | **Hugobricks** | **ONO LLC** |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💻 Need Customization?
|
||||||
|
|
||||||
|
If you need a custom theme, theme customization, or complete website development services from scratch you can [Hire Us](https://zeon.studio/estimate-project).
|
14
scripts/clearModules.js
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
|
const clearModules = (filePath) => {
|
||||||
|
if (fs.existsSync(filePath)) {
|
||||||
|
let fileContent = fs.readFileSync(filePath, "utf8");
|
||||||
|
fileContent = fileContent.replace(/require\s*\([\s\S]*?\)/, "");
|
||||||
|
fs.writeFileSync(filePath, fileContent, "utf8");
|
||||||
|
} else {
|
||||||
|
console.log("File does not exist.");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
clearModules("go.mod");
|
||||||
|
clearModules("exampleSite/go.mod");
|
116
scripts/projectSetup.js
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
|
||||||
|
const toggleComment = ({ filepath, regex }) => {
|
||||||
|
let updatedContent = fs.readFileSync(filepath, "utf8");
|
||||||
|
const match = updatedContent.match(regex);
|
||||||
|
|
||||||
|
if (match) {
|
||||||
|
const matchedContent = match[0];
|
||||||
|
const hasComment = matchedContent.startsWith("# ");
|
||||||
|
if (hasComment) {
|
||||||
|
updatedContent = updatedContent.replace(
|
||||||
|
regex,
|
||||||
|
matchedContent.replace("# ", ""),
|
||||||
|
);
|
||||||
|
fs.writeFileSync(filepath, updatedContent, "utf8");
|
||||||
|
} else {
|
||||||
|
const hasBreakline = matchedContent.includes("\n");
|
||||||
|
if (hasBreakline) {
|
||||||
|
const content = matchedContent
|
||||||
|
.split("\n")
|
||||||
|
.map((line) => "# " + line)
|
||||||
|
.join("\n");
|
||||||
|
updatedContent = updatedContent.replace(regex, content);
|
||||||
|
fs.writeFileSync(filepath, updatedContent, "utf8");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const getFolderName = (rootfolder) => {
|
||||||
|
const configPath = path.join(rootfolder, "exampleSite/hugo.toml");
|
||||||
|
const getConfig = fs.readFileSync(configPath, "utf8");
|
||||||
|
const match = getConfig.match(/theme\s*=\s*\[?"([^"\]]+)"\]?/);
|
||||||
|
let selectedTheme = null;
|
||||||
|
if (match && match[1]) {
|
||||||
|
selectedTheme = match[1];
|
||||||
|
}
|
||||||
|
return selectedTheme;
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteFolder = (folderPath) => {
|
||||||
|
if (fs.existsSync(folderPath)) {
|
||||||
|
fs.rmSync(folderPath, { recursive: true, force: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const createNewfolder = (rootfolder, folderName) => {
|
||||||
|
const newFolder = path.join(rootfolder, folderName);
|
||||||
|
fs.mkdirSync(newFolder, { recursive: true });
|
||||||
|
return newFolder;
|
||||||
|
};
|
||||||
|
|
||||||
|
const iterateFilesAndFolders = (rootFolder, { destinationRoot }) => {
|
||||||
|
const directory = path.join(rootFolder);
|
||||||
|
const items = fs.readdirSync(directory, { withFileTypes: true });
|
||||||
|
items.forEach((item) => {
|
||||||
|
if (item.isDirectory()) {
|
||||||
|
createNewfolder(destinationRoot, item.name);
|
||||||
|
iterateFilesAndFolders(path.join(directory, item.name), {
|
||||||
|
currentFolder: item.name,
|
||||||
|
destinationRoot: path.join(destinationRoot, item.name),
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
const sourceFile = path.join(directory, item.name);
|
||||||
|
const destinationFile = path.join(destinationRoot, item.name);
|
||||||
|
fs.renameSync(sourceFile, destinationFile);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const setupProject = () => {
|
||||||
|
const rootfolder = path.join(__dirname, "../");
|
||||||
|
if (!fs.existsSync(path.join(rootfolder, "themes"))) {
|
||||||
|
// remove this part if you don't using theme demo as a module
|
||||||
|
[
|
||||||
|
{
|
||||||
|
filepath: path.join(rootfolder, "exampleSite/hugo.toml"),
|
||||||
|
regex: /^.*theme\s*=\s*("[^"\]]+"|\S+)/m,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filepath: path.join(
|
||||||
|
rootfolder,
|
||||||
|
"exampleSite/config/_default/module.toml",
|
||||||
|
),
|
||||||
|
regex: /\[\[imports\]\]\s*\r?\npath = "([^"]+)"/,
|
||||||
|
},
|
||||||
|
].forEach(toggleComment);
|
||||||
|
|
||||||
|
const folderList = ["layouts", "assets", "static"];
|
||||||
|
const folderName = getFolderName(rootfolder);
|
||||||
|
const newfolderName = createNewfolder(
|
||||||
|
path.join(rootfolder, "themes"),
|
||||||
|
folderName,
|
||||||
|
);
|
||||||
|
|
||||||
|
folderList.forEach((folder) => {
|
||||||
|
const source = path.join(rootfolder, folder);
|
||||||
|
const destination = path.join(newfolderName, folder);
|
||||||
|
if (fs.existsSync(source)) {
|
||||||
|
fs.mkdirSync(destination, { recursive: true });
|
||||||
|
iterateFilesAndFolders(source, {
|
||||||
|
currentFolder: folder,
|
||||||
|
destinationRoot: destination,
|
||||||
|
});
|
||||||
|
deleteFolder(source);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const exampleSite = path.join(rootfolder, "exampleSite");
|
||||||
|
iterateFilesAndFolders(exampleSite, { destinationRoot: rootfolder });
|
||||||
|
deleteFolder(exampleSite);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
setupProject();
|
69
scripts/removeDarkmode.js
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
|
||||||
|
const rootDirs = ["assets/scss", "layouts"];
|
||||||
|
const configFiles = [
|
||||||
|
{
|
||||||
|
filePath: "exampleSite/tailwind.config.js",
|
||||||
|
patterns: ["darkmode:\\s*{[^}]*},", 'darkMode:\\s*"class",'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filePath: "exampleSite/data/theme.json",
|
||||||
|
patterns: ["colors.darkmode"],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
rootDirs.forEach(removeDarkModeFromPages);
|
||||||
|
configFiles.forEach(removeDarkMode);
|
||||||
|
|
||||||
|
function removeDarkModeFromFiles(filePath, regexPatterns) {
|
||||||
|
const fileContent = fs.readFileSync(filePath, "utf8");
|
||||||
|
let updatedContent = fileContent;
|
||||||
|
regexPatterns.forEach((pattern) => {
|
||||||
|
const regex = new RegExp(pattern, "g");
|
||||||
|
updatedContent = updatedContent.replace(regex, "");
|
||||||
|
});
|
||||||
|
fs.writeFileSync(filePath, updatedContent, "utf8");
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeDarkModeFromPages(directoryPath) {
|
||||||
|
const files = fs.readdirSync(directoryPath);
|
||||||
|
|
||||||
|
files.forEach((file) => {
|
||||||
|
const filePath = path.join(directoryPath, file);
|
||||||
|
const stats = fs.statSync(filePath);
|
||||||
|
if (stats.isDirectory()) {
|
||||||
|
removeDarkModeFromPages(filePath);
|
||||||
|
} else if (stats.isFile()) {
|
||||||
|
removeDarkModeFromFiles(filePath, [
|
||||||
|
'(?:(?!["])\\S)*dark:(?:(?![,;"])\\S)*',
|
||||||
|
"@apply?(\\s)*;",
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeDarkMode(configFile) {
|
||||||
|
const { filePath, patterns } = configFile;
|
||||||
|
if (filePath === "exampleSite/tailwind.config.js") {
|
||||||
|
removeDarkModeFromFiles(filePath, patterns);
|
||||||
|
} else {
|
||||||
|
const contentFile = JSON.parse(fs.readFileSync(filePath, "utf8"));
|
||||||
|
patterns.forEach((pattern) => deleteNestedProperty(contentFile, pattern));
|
||||||
|
fs.writeFileSync(filePath, JSON.stringify(contentFile));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteNestedProperty(obj, propertyPath) {
|
||||||
|
const properties = propertyPath.split(".");
|
||||||
|
let currentObj = obj;
|
||||||
|
for (let i = 0; i < properties.length - 1; i++) {
|
||||||
|
const property = properties[i];
|
||||||
|
if (currentObj.hasOwnProperty(property)) {
|
||||||
|
currentObj = currentObj[property];
|
||||||
|
} else {
|
||||||
|
return; // Property not found, no need to continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete currentObj[properties[properties.length - 1]];
|
||||||
|
}
|
125
scripts/themeSetup.js
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
|
||||||
|
const toggleComment = ({ filepath, regex }) => {
|
||||||
|
let updatedContent = fs.readFileSync(filepath, "utf8");
|
||||||
|
const match = updatedContent.match(regex);
|
||||||
|
|
||||||
|
if (match) {
|
||||||
|
const matchedContent = match[0];
|
||||||
|
const hasComment = matchedContent.startsWith("# ");
|
||||||
|
if (hasComment) {
|
||||||
|
const hasBreakline = matchedContent.includes("\n");
|
||||||
|
if (hasBreakline) {
|
||||||
|
updatedContent = updatedContent.replace(
|
||||||
|
regex,
|
||||||
|
matchedContent.replace(/# /gm, ""),
|
||||||
|
);
|
||||||
|
fs.writeFileSync(filepath, updatedContent, "utf8");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
updatedContent = updatedContent.replace(regex, "# " + matchedContent);
|
||||||
|
fs.writeFileSync(filepath, updatedContent, "utf8");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const createNewfolder = (rootfolder, folderName) => {
|
||||||
|
const newFolder = path.join(rootfolder, folderName);
|
||||||
|
fs.mkdirSync(newFolder, { recursive: true });
|
||||||
|
return newFolder;
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteFolder = (folderPath) => {
|
||||||
|
if (fs.existsSync(folderPath)) {
|
||||||
|
fs.rmSync(folderPath, { recursive: true, force: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const getFolderName = (rootfolder) => {
|
||||||
|
const configPath = path.join(rootfolder, "exampleSite/hugo.toml");
|
||||||
|
const getConfig = fs.readFileSync(configPath, "utf8");
|
||||||
|
const match = getConfig.match(/theme\s*=\s*\[?"([^"\]]+)"\]?/);
|
||||||
|
let selectedTheme = null;
|
||||||
|
if (match && match[1]) {
|
||||||
|
selectedTheme = match[1];
|
||||||
|
}
|
||||||
|
return selectedTheme;
|
||||||
|
};
|
||||||
|
|
||||||
|
const iterateFilesAndFolders = (rootFolder, { destinationRoot }) => {
|
||||||
|
const directory = path.join(rootFolder);
|
||||||
|
const items = fs.readdirSync(directory, { withFileTypes: true });
|
||||||
|
items.forEach((item) => {
|
||||||
|
if (item.isDirectory()) {
|
||||||
|
createNewfolder(destinationRoot, item.name);
|
||||||
|
iterateFilesAndFolders(path.join(directory, item.name), {
|
||||||
|
currentFolder: item.name,
|
||||||
|
destinationRoot: path.join(destinationRoot, item.name),
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
const sourceFile = path.join(directory, item.name);
|
||||||
|
const destinationFile = path.join(destinationRoot, item.name);
|
||||||
|
fs.renameSync(sourceFile, destinationFile);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const setupTheme = () => {
|
||||||
|
const rootFolder = path.join(__dirname, "../");
|
||||||
|
|
||||||
|
if (!fs.existsSync(path.join(rootFolder, "exampleSite"))) {
|
||||||
|
// remove this part if you don't using theme demo as a module
|
||||||
|
[
|
||||||
|
{
|
||||||
|
filepath: path.join(rootFolder, "config/_default/module.toml"),
|
||||||
|
regex: /# \[\[imports\]\]\s*\r?\n# path = "([^"]+)"/,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filepath: path.join(rootFolder, "hugo.toml"),
|
||||||
|
regex: /^.*theme\s*=\s*("[^"\]]+"|\S+)/m,
|
||||||
|
},
|
||||||
|
].forEach(toggleComment);
|
||||||
|
|
||||||
|
const includesFiles = [
|
||||||
|
"tailwind.config.js",
|
||||||
|
"postcss.config.js",
|
||||||
|
"go.mod",
|
||||||
|
"hugo.toml",
|
||||||
|
"assets",
|
||||||
|
"config",
|
||||||
|
"data",
|
||||||
|
"content",
|
||||||
|
"i18n",
|
||||||
|
"static",
|
||||||
|
];
|
||||||
|
|
||||||
|
const folder = createNewfolder(rootFolder, "exampleSite");
|
||||||
|
|
||||||
|
fs.readdirSync(rootFolder, { withFileTypes: true }).forEach((file) => {
|
||||||
|
if (includesFiles.includes(file.name)) {
|
||||||
|
if (file.isDirectory()) {
|
||||||
|
const destination = path.join(rootFolder, "exampleSite", file.name);
|
||||||
|
fs.mkdirSync(destination, { recursive: true });
|
||||||
|
iterateFilesAndFolders(path.join(rootFolder, file.name), {
|
||||||
|
destinationRoot: destination,
|
||||||
|
});
|
||||||
|
deleteFolder(path.join(rootFolder, file.name));
|
||||||
|
} else {
|
||||||
|
fs.renameSync(
|
||||||
|
path.join(rootFolder, file.name),
|
||||||
|
path.join(folder, file.name),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const themes = path.join(rootFolder, "themes");
|
||||||
|
iterateFilesAndFolders(path.join(themes, getFolderName(rootFolder)), {
|
||||||
|
destinationRoot: rootFolder,
|
||||||
|
});
|
||||||
|
deleteFolder(themes);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
setupTheme();
|
19
scripts/themeUpdate.js
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
const { exec } = require("child_process");
|
||||||
|
|
||||||
|
const repositoryUrl = "https://github.com/zeon-studio/hugoplate";
|
||||||
|
const localDirectory = "./themes/hugoplate";
|
||||||
|
const foldersToFetch = ["assets", "layouts"];
|
||||||
|
const foldersToSkip = ["exampleSite"];
|
||||||
|
|
||||||
|
const fetchFolder = (folder) => {
|
||||||
|
exec(
|
||||||
|
`curl -L ${repositoryUrl}/tarball/main | tar -xz --strip-components=1 --directory=${localDirectory} --exclude=$(curl -sL ${repositoryUrl}/tarball/main | tar -tz | grep -E "/(${foldersToSkip.join(
|
||||||
|
"|",
|
||||||
|
)})/") */${folder}`,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Fetch each specified folder
|
||||||
|
foldersToFetch.forEach((folder) => {
|
||||||
|
fetchFolder(folder);
|
||||||
|
});
|
103
tailwind.config.js
Executable file
|
@ -0,0 +1,103 @@
|
||||||
|
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-/ }],
|
||||||
|
darkMode: "class",
|
||||||
|
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,
|
||||||
|
darkmode: {
|
||||||
|
text: theme.colors.darkmode.text_color.default,
|
||||||
|
light: theme.colors.darkmode.text_color.light,
|
||||||
|
dark: theme.colors.darkmode.text_color.dark,
|
||||||
|
primary: theme.colors.darkmode.theme_color.primary,
|
||||||
|
secondary: theme.colors.darkmode.theme_color.secondary,
|
||||||
|
body: theme.colors.darkmode.theme_color.body,
|
||||||
|
border: theme.colors.darkmode.theme_color.border,
|
||||||
|
"theme-light": theme.colors.darkmode.theme_color.theme_light,
|
||||||
|
"theme-dark": theme.colors.darkmode.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",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
};
|
38
theme.toml
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
name = "Hugoplate"
|
||||||
|
license = "MIT"
|
||||||
|
licenselink = "https://github.com/zeon-studio/hugoplate/blob/main/LICENSE"
|
||||||
|
description = "Hugoplate is a free starter template built with Hugo, and TailwindCSS, providing everything you need to jumpstart your Hugo project and save valuable time."
|
||||||
|
homepage = "https://github.com/zeon-studio/hugoplate"
|
||||||
|
demosite = "https://zeon.studio/preview?project=hugoplate"
|
||||||
|
min_version = "0.121.2"
|
||||||
|
|
||||||
|
tags = [
|
||||||
|
"blog",
|
||||||
|
"responsive",
|
||||||
|
"minimal",
|
||||||
|
"personal",
|
||||||
|
"light",
|
||||||
|
"dark",
|
||||||
|
"multilingual",
|
||||||
|
"landing",
|
||||||
|
"contact",
|
||||||
|
"dark mode",
|
||||||
|
"tailwindcss",
|
||||||
|
]
|
||||||
|
|
||||||
|
features = [
|
||||||
|
"Multi-Authors",
|
||||||
|
"Search",
|
||||||
|
"Multilingual",
|
||||||
|
"Dark Mode",
|
||||||
|
"Taxonomies",
|
||||||
|
]
|
||||||
|
|
||||||
|
[author]
|
||||||
|
name = "Zeon Studio"
|
||||||
|
homepage = "https://zeon.studio"
|
||||||
|
|
||||||
|
[original]
|
||||||
|
author = "Zeon Studio"
|
||||||
|
homepage = "https://zeon.studio"
|
||||||
|
repo = "https://github.com/zeon-studio/themeplate"
|
36
themes/hugoplate/assets/js/main.js
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
// main script
|
||||||
|
(function () {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// Dropdown Menu Toggler For Mobile
|
||||||
|
// ----------------------------------------
|
||||||
|
const dropdownMenuToggler = document.querySelectorAll(
|
||||||
|
".nav-dropdown > .nav-link",
|
||||||
|
);
|
||||||
|
|
||||||
|
dropdownMenuToggler.forEach((toggler) => {
|
||||||
|
toggler?.addEventListener("click", (e) => {
|
||||||
|
e.target.closest('.nav-item').classList.toggle("active");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Testimonial Slider
|
||||||
|
// ----------------------------------------
|
||||||
|
new Swiper(".testimonial-slider", {
|
||||||
|
spaceBetween: 24,
|
||||||
|
loop: true,
|
||||||
|
pagination: {
|
||||||
|
el: ".testimonial-slider-pagination",
|
||||||
|
type: "bullets",
|
||||||
|
clickable: true,
|
||||||
|
},
|
||||||
|
breakpoints: {
|
||||||
|
768: {
|
||||||
|
slidesPerView: 2,
|
||||||
|
},
|
||||||
|
992: {
|
||||||
|
slidesPerView: 3,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
})();
|
179
themes/hugoplate/assets/plugins/maps/google-map.js
Normal file
|
@ -0,0 +1,179 @@
|
||||||
|
/*!***************************************************
|
||||||
|
* Google Map
|
||||||
|
*****************************************************/
|
||||||
|
|
||||||
|
window.marker = null;
|
||||||
|
|
||||||
|
function initialize() {
|
||||||
|
var map,
|
||||||
|
mapId = document.getElementById("map");
|
||||||
|
var latitude = mapId.getAttribute("data-latitude");
|
||||||
|
var longitude = mapId.getAttribute("data-longitude");
|
||||||
|
var mapMarker = mapId.getAttribute("data-marker");
|
||||||
|
var mapMarkerName = mapId.getAttribute("data-marker-name");
|
||||||
|
var nottingham = new google.maps.LatLng(latitude, longitude);
|
||||||
|
var style = [
|
||||||
|
{
|
||||||
|
featureType: "administrative",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
saturation: "-100",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "administrative.province",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
visibility: "off",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "landscape",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
saturation: -100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
lightness: 65,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
visibility: "on",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "poi",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
saturation: -100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
lightness: "50",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
visibility: "simplified",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "road",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
saturation: "-100",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "road.highway",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
visibility: "simplified",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "road.arterial",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
lightness: "30",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "road.local",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
lightness: "40",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "transit",
|
||||||
|
elementType: "all",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
saturation: -100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
visibility: "simplified",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "water",
|
||||||
|
elementType: "geometry",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
hue: "#ffff00",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
lightness: -25,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
saturation: -97,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
featureType: "water",
|
||||||
|
elementType: "labels",
|
||||||
|
stylers: [
|
||||||
|
{
|
||||||
|
lightness: -25,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
saturation: -100,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
var mapOptions = {
|
||||||
|
center: nottingham,
|
||||||
|
mapTypeId: google.maps.MapTypeId.ROADMAP,
|
||||||
|
backgroundColor: "#000",
|
||||||
|
zoom: 15,
|
||||||
|
panControl: !1,
|
||||||
|
zoomControl: !0,
|
||||||
|
mapTypeControl: !1,
|
||||||
|
scaleControl: !1,
|
||||||
|
streetViewControl: !1,
|
||||||
|
overviewMapControl: !1,
|
||||||
|
zoomControlOptions: {
|
||||||
|
style: google.maps.ZoomControlStyle.LARGE,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
map = new google.maps.Map(document.getElementById("map"), mapOptions);
|
||||||
|
var mapType = new google.maps.StyledMapType(style, {
|
||||||
|
name: "Grayscale",
|
||||||
|
});
|
||||||
|
map.mapTypes.set("grey", mapType);
|
||||||
|
map.setMapTypeId("grey");
|
||||||
|
var marker_image = mapMarker;
|
||||||
|
var pinIcon = new google.maps.MarkerImage(
|
||||||
|
marker_image,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
new google.maps.Size(30, 50),
|
||||||
|
);
|
||||||
|
marker = new google.maps.Marker({
|
||||||
|
position: nottingham,
|
||||||
|
map: map,
|
||||||
|
icon: pinIcon,
|
||||||
|
title: mapMarkerName,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
var map = document.getElementById("map");
|
||||||
|
if (map != null) {
|
||||||
|
google.maps.event.addDomListener(window, "load", initialize);
|
||||||
|
}
|
667
themes/hugoplate/assets/plugins/swiper/swiper-bundle.css
Normal file
|
@ -0,0 +1,667 @@
|
||||||
|
/**
|
||||||
|
* Swiper 8.0.7
|
||||||
|
* Most modern mobile touch slider and framework with hardware accelerated transitions
|
||||||
|
* https://swiperjs.com
|
||||||
|
*
|
||||||
|
* Copyright 2014-2022 Vladimir Kharlampidi
|
||||||
|
*
|
||||||
|
* Released under the MIT License
|
||||||
|
*
|
||||||
|
* Released on: March 4, 2022
|
||||||
|
*/
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "swiper-icons";
|
||||||
|
src: url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA");
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--swiper-theme-color: #007aff;
|
||||||
|
}
|
||||||
|
.swiper {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
/* Fix of Webkit flickering */
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.swiper-vertical > .swiper-wrapper {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.swiper-wrapper {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 1;
|
||||||
|
display: flex;
|
||||||
|
transition-property: transform;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
.swiper-android .swiper-slide,
|
||||||
|
.swiper-wrapper {
|
||||||
|
transform: translate3d(0px, 0, 0);
|
||||||
|
}
|
||||||
|
.swiper-pointer-events {
|
||||||
|
touch-action: pan-y;
|
||||||
|
}
|
||||||
|
.swiper-pointer-events.swiper-vertical {
|
||||||
|
touch-action: pan-x;
|
||||||
|
}
|
||||||
|
.swiper-slide {
|
||||||
|
flex-shrink: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: relative;
|
||||||
|
transition-property: transform;
|
||||||
|
}
|
||||||
|
.swiper-slide-invisible-blank {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
/* Auto Height */
|
||||||
|
.swiper-autoheight,
|
||||||
|
.swiper-autoheight .swiper-slide {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
.swiper-autoheight .swiper-wrapper {
|
||||||
|
align-items: flex-start;
|
||||||
|
transition-property: transform, height;
|
||||||
|
}
|
||||||
|
.swiper-backface-hidden .swiper-slide {
|
||||||
|
transform: translateZ(0);
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
}
|
||||||
|
/* 3D Effects */
|
||||||
|
.swiper-3d,
|
||||||
|
.swiper-3d.swiper-css-mode .swiper-wrapper {
|
||||||
|
perspective: 1200px;
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-wrapper,
|
||||||
|
.swiper-3d .swiper-slide,
|
||||||
|
.swiper-3d .swiper-slide-shadow,
|
||||||
|
.swiper-3d .swiper-slide-shadow-left,
|
||||||
|
.swiper-3d .swiper-slide-shadow-right,
|
||||||
|
.swiper-3d .swiper-slide-shadow-top,
|
||||||
|
.swiper-3d .swiper-slide-shadow-bottom,
|
||||||
|
.swiper-3d .swiper-cube-shadow {
|
||||||
|
transform-style: preserve-3d;
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-slide-shadow,
|
||||||
|
.swiper-3d .swiper-slide-shadow-left,
|
||||||
|
.swiper-3d .swiper-slide-shadow-right,
|
||||||
|
.swiper-3d .swiper-slide-shadow-top,
|
||||||
|
.swiper-3d .swiper-slide-shadow-bottom {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-slide-shadow {
|
||||||
|
background: rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-slide-shadow-left {
|
||||||
|
background-image: linear-gradient(
|
||||||
|
to left,
|
||||||
|
rgba(0, 0, 0, 0.5),
|
||||||
|
rgba(0, 0, 0, 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-slide-shadow-right {
|
||||||
|
background-image: linear-gradient(
|
||||||
|
to right,
|
||||||
|
rgba(0, 0, 0, 0.5),
|
||||||
|
rgba(0, 0, 0, 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-slide-shadow-top {
|
||||||
|
background-image: linear-gradient(
|
||||||
|
to top,
|
||||||
|
rgba(0, 0, 0, 0.5),
|
||||||
|
rgba(0, 0, 0, 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
.swiper-3d .swiper-slide-shadow-bottom {
|
||||||
|
background-image: linear-gradient(
|
||||||
|
to bottom,
|
||||||
|
rgba(0, 0, 0, 0.5),
|
||||||
|
rgba(0, 0, 0, 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
/* CSS Mode */
|
||||||
|
.swiper-css-mode > .swiper-wrapper {
|
||||||
|
overflow: auto;
|
||||||
|
scrollbar-width: none;
|
||||||
|
/* For Firefox */
|
||||||
|
-ms-overflow-style: none;
|
||||||
|
/* For Internet Explorer and Edge */
|
||||||
|
}
|
||||||
|
.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.swiper-css-mode > .swiper-wrapper > .swiper-slide {
|
||||||
|
scroll-snap-align: start start;
|
||||||
|
}
|
||||||
|
.swiper-horizontal.swiper-css-mode > .swiper-wrapper {
|
||||||
|
scroll-snap-type: x mandatory;
|
||||||
|
}
|
||||||
|
.swiper-vertical.swiper-css-mode > .swiper-wrapper {
|
||||||
|
scroll-snap-type: y mandatory;
|
||||||
|
}
|
||||||
|
.swiper-centered > .swiper-wrapper::before {
|
||||||
|
content: "";
|
||||||
|
flex-shrink: 0;
|
||||||
|
order: 9999;
|
||||||
|
}
|
||||||
|
.swiper-centered.swiper-horizontal
|
||||||
|
> .swiper-wrapper
|
||||||
|
> .swiper-slide:first-child {
|
||||||
|
margin-inline-start: var(--swiper-centered-offset-before);
|
||||||
|
}
|
||||||
|
.swiper-centered.swiper-horizontal > .swiper-wrapper::before {
|
||||||
|
height: 100%;
|
||||||
|
min-height: 1px;
|
||||||
|
width: var(--swiper-centered-offset-after);
|
||||||
|
}
|
||||||
|
.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {
|
||||||
|
margin-block-start: var(--swiper-centered-offset-before);
|
||||||
|
}
|
||||||
|
.swiper-centered.swiper-vertical > .swiper-wrapper::before {
|
||||||
|
width: 100%;
|
||||||
|
min-width: 1px;
|
||||||
|
height: var(--swiper-centered-offset-after);
|
||||||
|
}
|
||||||
|
.swiper-centered > .swiper-wrapper > .swiper-slide {
|
||||||
|
scroll-snap-align: center center;
|
||||||
|
}
|
||||||
|
.swiper-virtual .swiper-slide {
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
transform: translateZ(0);
|
||||||
|
}
|
||||||
|
.swiper-virtual.swiper-css-mode .swiper-wrapper::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after {
|
||||||
|
height: 1px;
|
||||||
|
width: var(--swiper-virtual-size);
|
||||||
|
}
|
||||||
|
.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after {
|
||||||
|
width: 1px;
|
||||||
|
height: var(--swiper-virtual-size);
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--swiper-navigation-size: 44px;
|
||||||
|
/*
|
||||||
|
--swiper-navigation-color: var(--swiper-theme-color);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.swiper-button-prev,
|
||||||
|
.swiper-button-next {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
width: calc(var(--swiper-navigation-size) / 44 * 27);
|
||||||
|
height: var(--swiper-navigation-size);
|
||||||
|
margin-top: calc(0px - (var(--swiper-navigation-size) / 2));
|
||||||
|
z-index: 10;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
color: var(--swiper-navigation-color, var(--swiper-theme-color));
|
||||||
|
}
|
||||||
|
.swiper-button-prev.swiper-button-disabled,
|
||||||
|
.swiper-button-next.swiper-button-disabled {
|
||||||
|
opacity: 0.35;
|
||||||
|
cursor: auto;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.swiper-button-prev:after,
|
||||||
|
.swiper-button-next:after {
|
||||||
|
font-family: swiper-icons;
|
||||||
|
font-size: var(--swiper-navigation-size);
|
||||||
|
text-transform: none !important;
|
||||||
|
letter-spacing: 0;
|
||||||
|
text-transform: none;
|
||||||
|
font-variant: initial;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.swiper-button-prev,
|
||||||
|
.swiper-rtl .swiper-button-next {
|
||||||
|
left: 10px;
|
||||||
|
right: auto;
|
||||||
|
}
|
||||||
|
.swiper-button-prev:after,
|
||||||
|
.swiper-rtl .swiper-button-next:after {
|
||||||
|
content: "prev";
|
||||||
|
}
|
||||||
|
.swiper-button-next,
|
||||||
|
.swiper-rtl .swiper-button-prev {
|
||||||
|
right: 10px;
|
||||||
|
left: auto;
|
||||||
|
}
|
||||||
|
.swiper-button-next:after,
|
||||||
|
.swiper-rtl .swiper-button-prev:after {
|
||||||
|
content: "next";
|
||||||
|
}
|
||||||
|
.swiper-button-lock {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
/*
|
||||||
|
--swiper-pagination-color: var(--swiper-theme-color);
|
||||||
|
--swiper-pagination-bullet-size: 8px;
|
||||||
|
--swiper-pagination-bullet-width: 8px;
|
||||||
|
--swiper-pagination-bullet-height: 8px;
|
||||||
|
--swiper-pagination-bullet-inactive-color: #000;
|
||||||
|
--swiper-pagination-bullet-inactive-opacity: 0.2;
|
||||||
|
--swiper-pagination-bullet-opacity: 1;
|
||||||
|
--swiper-pagination-bullet-horizontal-gap: 4px;
|
||||||
|
--swiper-pagination-bullet-vertical-gap: 6px;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.swiper-pagination {
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
transition: 300ms opacity;
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
.swiper-pagination.swiper-pagination-hidden {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
/* Common Styles */
|
||||||
|
.swiper-pagination-fraction,
|
||||||
|
.swiper-pagination-custom,
|
||||||
|
.swiper-horizontal > .swiper-pagination-bullets,
|
||||||
|
.swiper-pagination-bullets.swiper-pagination-horizontal {
|
||||||
|
bottom: 10px;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
/* Bullets */
|
||||||
|
.swiper-pagination-bullets-dynamic {
|
||||||
|
overflow: hidden;
|
||||||
|
font-size: 0;
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
|
||||||
|
transform: scale(0.33);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {
|
||||||
|
transform: scale(0.66);
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {
|
||||||
|
transform: scale(0.33);
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {
|
||||||
|
transform: scale(0.66);
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {
|
||||||
|
transform: scale(0.33);
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
width: var(
|
||||||
|
--swiper-pagination-bullet-width,
|
||||||
|
var(--swiper-pagination-bullet-size, 8px)
|
||||||
|
);
|
||||||
|
height: var(
|
||||||
|
--swiper-pagination-bullet-height,
|
||||||
|
var(--swiper-pagination-bullet-size, 8px)
|
||||||
|
);
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: var(--swiper-pagination-bullet-inactive-color, #000);
|
||||||
|
opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);
|
||||||
|
}
|
||||||
|
button.swiper-pagination-bullet {
|
||||||
|
border: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
.swiper-pagination-clickable .swiper-pagination-bullet {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullet:only-child {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
.swiper-pagination-bullet-active {
|
||||||
|
opacity: var(--swiper-pagination-bullet-opacity, 1);
|
||||||
|
background: var(--swiper-pagination-color, var(--swiper-theme-color));
|
||||||
|
}
|
||||||
|
.swiper-vertical > .swiper-pagination-bullets,
|
||||||
|
.swiper-pagination-vertical.swiper-pagination-bullets {
|
||||||
|
right: 10px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate3d(0px, -50%, 0);
|
||||||
|
}
|
||||||
|
.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,
|
||||||
|
.swiper-pagination-vertical.swiper-pagination-bullets
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,
|
||||||
|
.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
width: 8px;
|
||||||
|
}
|
||||||
|
.swiper-vertical
|
||||||
|
> .swiper-pagination-bullets.swiper-pagination-bullets-dynamic
|
||||||
|
.swiper-pagination-bullet,
|
||||||
|
.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
display: inline-block;
|
||||||
|
transition:
|
||||||
|
200ms transform,
|
||||||
|
200ms top;
|
||||||
|
}
|
||||||
|
.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,
|
||||||
|
.swiper-pagination-horizontal.swiper-pagination-bullets
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);
|
||||||
|
}
|
||||||
|
.swiper-horizontal
|
||||||
|
> .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,
|
||||||
|
.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.swiper-horizontal
|
||||||
|
> .swiper-pagination-bullets.swiper-pagination-bullets-dynamic
|
||||||
|
.swiper-pagination-bullet,
|
||||||
|
.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
transition:
|
||||||
|
200ms transform,
|
||||||
|
200ms left;
|
||||||
|
}
|
||||||
|
.swiper-horizontal.swiper-rtl
|
||||||
|
> .swiper-pagination-bullets-dynamic
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
transition:
|
||||||
|
200ms transform,
|
||||||
|
200ms right;
|
||||||
|
}
|
||||||
|
/* Progress */
|
||||||
|
.swiper-pagination-progressbar {
|
||||||
|
background: rgba(0, 0, 0, 0.25);
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
|
||||||
|
background: var(--swiper-pagination-color, var(--swiper-theme-color));
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
transform: scale(0);
|
||||||
|
transform-origin: left top;
|
||||||
|
}
|
||||||
|
.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
|
||||||
|
transform-origin: right top;
|
||||||
|
}
|
||||||
|
.swiper-horizontal > .swiper-pagination-progressbar,
|
||||||
|
.swiper-pagination-progressbar.swiper-pagination-horizontal,
|
||||||
|
.swiper-vertical
|
||||||
|
> .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,
|
||||||
|
.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {
|
||||||
|
width: 100%;
|
||||||
|
height: 4px;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.swiper-vertical > .swiper-pagination-progressbar,
|
||||||
|
.swiper-pagination-progressbar.swiper-pagination-vertical,
|
||||||
|
.swiper-horizontal
|
||||||
|
> .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,
|
||||||
|
.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {
|
||||||
|
width: 4px;
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.swiper-pagination-lock {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
/* Scrollbar */
|
||||||
|
.swiper-scrollbar {
|
||||||
|
border-radius: 10px;
|
||||||
|
position: relative;
|
||||||
|
-ms-touch-action: none;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.swiper-horizontal > .swiper-scrollbar {
|
||||||
|
position: absolute;
|
||||||
|
left: 1%;
|
||||||
|
bottom: 3px;
|
||||||
|
z-index: 50;
|
||||||
|
height: 5px;
|
||||||
|
width: 98%;
|
||||||
|
}
|
||||||
|
.swiper-vertical > .swiper-scrollbar {
|
||||||
|
position: absolute;
|
||||||
|
right: 3px;
|
||||||
|
top: 1%;
|
||||||
|
z-index: 50;
|
||||||
|
width: 5px;
|
||||||
|
height: 98%;
|
||||||
|
}
|
||||||
|
.swiper-scrollbar-drag {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
border-radius: 10px;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.swiper-scrollbar-cursor-drag {
|
||||||
|
cursor: move;
|
||||||
|
}
|
||||||
|
.swiper-scrollbar-lock {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.swiper-zoom-container {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.swiper-zoom-container > img,
|
||||||
|
.swiper-zoom-container > svg,
|
||||||
|
.swiper-zoom-container > canvas {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
.swiper-slide-zoomed {
|
||||||
|
cursor: move;
|
||||||
|
}
|
||||||
|
/* Preloader */
|
||||||
|
:root {
|
||||||
|
/*
|
||||||
|
--swiper-preloader-color: var(--swiper-theme-color);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
.swiper-lazy-preloader {
|
||||||
|
width: 42px;
|
||||||
|
height: 42px;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
margin-left: -21px;
|
||||||
|
margin-top: -21px;
|
||||||
|
z-index: 10;
|
||||||
|
transform-origin: 50%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
|
||||||
|
border-radius: 50%;
|
||||||
|
border-top-color: transparent;
|
||||||
|
}
|
||||||
|
.swiper-slide-visible .swiper-lazy-preloader {
|
||||||
|
animation: swiper-preloader-spin 1s infinite linear;
|
||||||
|
}
|
||||||
|
.swiper-lazy-preloader-white {
|
||||||
|
--swiper-preloader-color: #fff;
|
||||||
|
}
|
||||||
|
.swiper-lazy-preloader-black {
|
||||||
|
--swiper-preloader-color: #000;
|
||||||
|
}
|
||||||
|
@keyframes swiper-preloader-spin {
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* a11y */
|
||||||
|
.swiper .swiper-notification {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: 0;
|
||||||
|
z-index: -1000;
|
||||||
|
}
|
||||||
|
.swiper-free-mode > .swiper-wrapper {
|
||||||
|
transition-timing-function: ease-out;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.swiper-grid > .swiper-wrapper {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
.swiper-grid-column > .swiper-wrapper {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.swiper-fade.swiper-free-mode .swiper-slide {
|
||||||
|
transition-timing-function: ease-out;
|
||||||
|
}
|
||||||
|
.swiper-fade .swiper-slide {
|
||||||
|
pointer-events: none;
|
||||||
|
transition-property: opacity;
|
||||||
|
}
|
||||||
|
.swiper-fade .swiper-slide .swiper-slide {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.swiper-fade .swiper-slide-active,
|
||||||
|
.swiper-fade .swiper-slide-active .swiper-slide-active {
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
.swiper-cube {
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-slide {
|
||||||
|
pointer-events: none;
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
z-index: 1;
|
||||||
|
visibility: hidden;
|
||||||
|
transform-origin: 0 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-slide .swiper-slide {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.swiper-cube.swiper-rtl .swiper-slide {
|
||||||
|
transform-origin: 100% 0;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-slide-active,
|
||||||
|
.swiper-cube .swiper-slide-active .swiper-slide-active {
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-slide-active,
|
||||||
|
.swiper-cube .swiper-slide-next,
|
||||||
|
.swiper-cube .swiper-slide-prev,
|
||||||
|
.swiper-cube .swiper-slide-next + .swiper-slide {
|
||||||
|
pointer-events: auto;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-slide-shadow-top,
|
||||||
|
.swiper-cube .swiper-slide-shadow-bottom,
|
||||||
|
.swiper-cube .swiper-slide-shadow-left,
|
||||||
|
.swiper-cube .swiper-slide-shadow-right {
|
||||||
|
z-index: 0;
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-cube-shadow {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
opacity: 0.6;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
.swiper-cube .swiper-cube-shadow:before {
|
||||||
|
content: "";
|
||||||
|
background: #000;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
filter: blur(50px);
|
||||||
|
}
|
||||||
|
.swiper-flip {
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
.swiper-flip .swiper-slide {
|
||||||
|
pointer-events: none;
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.swiper-flip .swiper-slide .swiper-slide {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.swiper-flip .swiper-slide-active,
|
||||||
|
.swiper-flip .swiper-slide-active .swiper-slide-active {
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
.swiper-flip .swiper-slide-shadow-top,
|
||||||
|
.swiper-flip .swiper-slide-shadow-bottom,
|
||||||
|
.swiper-flip .swiper-slide-shadow-left,
|
||||||
|
.swiper-flip .swiper-slide-shadow-right {
|
||||||
|
z-index: 0;
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
}
|
||||||
|
.swiper-creative .swiper-slide {
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
overflow: hidden;
|
||||||
|
transition-property: transform, opacity, height;
|
||||||
|
}
|
||||||
|
.swiper-cards {
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
.swiper-cards .swiper-slide {
|
||||||
|
transform-origin: center bottom;
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
11853
themes/hugoplate/assets/plugins/swiper/swiper-bundle.js
Normal file
59
themes/hugoplate/assets/scss/base.scss
Executable file
|
@ -0,0 +1,59 @@
|
||||||
|
html {
|
||||||
|
@apply text-base-sm md:text-base;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
@apply bg-body dark:bg-darkmode-body font-primary font-normal leading-relaxed text-text dark:text-darkmode-text;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
@apply font-secondary font-bold leading-tight text-dark dark:text-darkmode-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
themes/hugoplate/assets/scss/buttons.scss
Executable file
|
@ -0,0 +1,15 @@
|
||||||
|
.btn {
|
||||||
|
@apply inline-block rounded border border-transparent px-5 py-2 font-semibold capitalize transition;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sm {
|
||||||
|
@apply rounded-sm px-4 py-1.5 text-sm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-primary {
|
||||||
|
@apply border-primary bg-primary dark:border-darkmode-primary dark:text-dark text-white dark:bg-white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-outline-primary {
|
||||||
|
@apply border-dark text-dark hover:bg-dark dark:hover:text-dark bg-transparent hover:text-white dark:border-white dark:text-white dark:hover:bg-white;
|
||||||
|
}
|
74
themes/hugoplate/assets/scss/components.scss
Executable file
|
@ -0,0 +1,74 @@
|
||||||
|
main {
|
||||||
|
min-height: 70vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
// section style
|
||||||
|
.section {
|
||||||
|
@apply py-24 xl:py-28;
|
||||||
|
&-sm {
|
||||||
|
@apply py-16 xl:py-20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// container
|
||||||
|
.container {
|
||||||
|
@apply mx-auto px-4 2xl:max-w-[1320px];
|
||||||
|
}
|
||||||
|
|
||||||
|
// form style
|
||||||
|
.form-input {
|
||||||
|
@apply bg-theme-light text-dark placeholder:text-light focus:border-primary dark:border-darkmode-border dark:bg-darkmode-theme-light dark:text-darkmode-light w-full rounded border-transparent px-6 py-4 focus:ring-transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-label {
|
||||||
|
@apply font-secondary text-dark dark:text-darkmode-light mb-4 block text-xl font-normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
// social icons
|
||||||
|
.social-icons {
|
||||||
|
@apply space-x-4;
|
||||||
|
li {
|
||||||
|
@apply inline-block;
|
||||||
|
a {
|
||||||
|
@apply bg-primary dark:bg-darkmode-primary dark:text-dark 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 dark:bg-darkmode-theme-light h-2.5 w-2.5 opacity-100 mx-1.5 #{!important};
|
||||||
|
|
||||||
|
&-active {
|
||||||
|
@apply bg-primary dark:bg-darkmode-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 prose-headings:dark:text-darkmode-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 prose-hr:dark:border-darkmode-border;
|
||||||
|
@apply prose-p:text-base prose-p:text-text prose-p:dark:text-darkmode-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 prose-blockquote:dark:border-darkmode-primary prose-blockquote:dark:bg-darkmode-theme-light prose-blockquote:dark:text-darkmode-light;
|
||||||
|
@apply prose-pre:rounded-lg prose-pre:bg-theme-light prose-pre:dark:bg-darkmode-theme-light;
|
||||||
|
@apply prose-code:px-1 prose-code:dark:text-darkmode-light;
|
||||||
|
@apply prose-strong:text-dark prose-strong:dark:text-darkmode-text;
|
||||||
|
@apply prose-a:text-text prose-a:underline hover:prose-a:text-primary prose-a:dark:text-darkmode-text hover:prose-a:dark:text-darkmode-primary;
|
||||||
|
@apply prose-li:text-text prose-li:dark:text-darkmode-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-[""] prose-table:before:dark:border-darkmode-border;
|
||||||
|
@apply prose-thead:border-border prose-thead:bg-theme-light prose-thead:dark:border-darkmode-border prose-thead:dark:bg-darkmode-theme-light;
|
||||||
|
@apply prose-th:relative prose-th:z-10 prose-th:px-4 prose-th:py-[18px] prose-th:text-dark prose-th:dark:text-darkmode-text;
|
||||||
|
@apply prose-tr:border-border prose-tr:dark:border-darkmode-border;
|
||||||
|
@apply prose-td:relative prose-td:z-10 prose-td:px-3 prose-td:py-[18px] prose-td:dark:text-darkmode-text;
|
||||||
|
.btn {
|
||||||
|
@apply dark:hover:text-dark no-underline hover:text-white #{!important};
|
||||||
|
}
|
||||||
|
}
|
2
themes/hugoplate/assets/scss/custom.scss
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
// DO NOT WRITE ANY STYLE IN THIS FILE
|
||||||
|
// If you want to add your own styles, please write it in the `./assets/scss/custom.scss` file.
|
30
themes/hugoplate/assets/scss/main.scss
Executable file
|
@ -0,0 +1,30 @@
|
||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
||||||
|
|
||||||
|
@layer base {
|
||||||
|
@import "base";
|
||||||
|
}
|
||||||
|
|
||||||
|
@layer components {
|
||||||
|
@import "components";
|
||||||
|
@import "navigation";
|
||||||
|
@import "buttons";
|
||||||
|
}
|
||||||
|
|
||||||
|
@layer utilities {
|
||||||
|
@import "utilities";
|
||||||
|
}
|
||||||
|
|
||||||
|
@import "search";
|
||||||
|
@import "social-share";
|
||||||
|
@import "gallery-slider";
|
||||||
|
@import "images";
|
||||||
|
@import "toc";
|
||||||
|
@import "tab";
|
||||||
|
@import "accordion";
|
||||||
|
@import "modal";
|
||||||
|
@import "notice";
|
||||||
|
|
||||||
|
@import "module-overrides";
|
||||||
|
@import "custom";
|
58
themes/hugoplate/assets/scss/module-overrides.scss
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
// 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 dark:bg-darkmode-primary dark:hover:bg-darkmode-primary;
|
||||||
|
}
|
||||||
|
.share-icon svg {
|
||||||
|
@apply dark:fill-dark;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// notice
|
||||||
|
.notice {
|
||||||
|
@apply rounded-lg;
|
||||||
|
}
|
||||||
|
|
||||||
|
// tab
|
||||||
|
.tab {
|
||||||
|
@apply border-border dark:border-darkmode-border overflow-hidden rounded-lg border;
|
||||||
|
&-nav {
|
||||||
|
@apply border-border bg-theme-light dark:border-darkmode-border dark:bg-darkmode-theme-light pl-4;
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
@apply text-dark dark:text-darkmode-dark px-8 text-lg #{!important};
|
||||||
|
&.active {
|
||||||
|
@apply border-dark dark:border-darkmode-primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-content {
|
||||||
|
&-panel {
|
||||||
|
@apply px-4 pt-0 #{!important};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// accordion
|
||||||
|
.accordion {
|
||||||
|
@apply border-border bg-theme-light dark:border-darkmode-border dark:bg-darkmode-theme-light mb-6 overflow-hidden rounded-lg border;
|
||||||
|
&-header {
|
||||||
|
@apply text-dark dark:text-darkmode-dark;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// cookie consent
|
||||||
|
.cookie-box {
|
||||||
|
@apply rounded-lg #{!important};
|
||||||
|
}
|
||||||
|
|
||||||
|
// slider
|
||||||
|
.gallery-slider {
|
||||||
|
@apply ml-0 #{!important};
|
||||||
|
}
|
87
themes/hugoplate/assets/scss/navigation.scss
Executable file
|
@ -0,0 +1,87 @@
|
||||||
|
// navbar toggler
|
||||||
|
input#nav-toggle:checked + label #show-button {
|
||||||
|
@apply hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
input#nav-toggle:checked + label #hide-button {
|
||||||
|
@apply block;
|
||||||
|
}
|
||||||
|
|
||||||
|
input#nav-toggle:checked ~ #nav-menu {
|
||||||
|
@apply block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
@apply bg-body dark:bg-darkmode-body py-6;
|
||||||
|
}
|
||||||
|
|
||||||
|
// navbar items
|
||||||
|
.navbar {
|
||||||
|
@apply relative flex flex-wrap items-center justify-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-brand {
|
||||||
|
@apply text-dark dark:text-darkmode-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 dark:text-darkmode-dark dark:hover:text-darkmode-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 dark:bg-darkmode-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 dark:text-darkmode-text dark:hover:text-darkmode-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 dark:bg-white;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:checked + label {
|
||||||
|
span {
|
||||||
|
@apply lg:left-4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
20
themes/hugoplate/assets/scss/utilities.scss
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
.bg-gradient {
|
||||||
|
@apply dark:from-darkmode-theme-light dark:to-darkmode-body 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);
|
||||||
|
}
|
26
themes/hugoplate/layouts/404.html
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
{{ 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 dark:text-darkmode-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 }}
|
48
themes/hugoplate/layouts/_default/baseof.html
Executable file
|
@ -0,0 +1,48 @@
|
||||||
|
<!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>
|
20
themes/hugoplate/layouts/_default/list.html
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
{{ 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 dark:text-darkmode-dark block text-xl">
|
||||||
|
{{ .Title }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
16
themes/hugoplate/layouts/_default/single.html
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
{{ 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 }}
|
21
themes/hugoplate/layouts/_default/taxonomy.html
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
{{ 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 }}
|
41
themes/hugoplate/layouts/_default/terms.html
Executable file
|
@ -0,0 +1,41 @@
|
||||||
|
{{ 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 dark:bg-darkmode-theme-light dark:text-darkmode-dark block rounded px-4 py-2 text-xl">
|
||||||
|
{{ .Page.Title }}
|
||||||
|
<span class="bg-body dark:bg-darkmode-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 dark:bg-darkmode-theme-light dark:text-darkmode-dark block rounded px-4 py-2 text-xl">
|
||||||
|
{{ .Page.Title }}
|
||||||
|
<span class="bg-body dark:bg-darkmode-body ml-2 rounded px-2">
|
||||||
|
{{ .Count }}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
13
themes/hugoplate/layouts/about/list.html
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{{ 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 }}
|
16
themes/hugoplate/layouts/authors/list.html
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{{ 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 }}
|
48
themes/hugoplate/layouts/authors/single.html
Executable file
|
@ -0,0 +1,48 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
<section class="section-sm pb-0">
|
||||||
|
<div class="container">
|
||||||
|
<div
|
||||||
|
class="row border-border dark:border-darkmode-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 }}
|
29
themes/hugoplate/layouts/blog/list.html
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{{ 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 }}
|
94
themes/hugoplate/layouts/blog/single.html
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
{{ 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 dark:bg-darkmode-theme-light dark:hover:bg-darkmode-primary dark:hover:text-dark m-1 block rounded px-3 py-1 hover:text-white"
|
||||||
|
href="{{ `tags/` | relLangURL }}{{ . | urlize | lower }}/">
|
||||||
|
{{ . | humanize }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
<div class="lg:col-4 flex items-center">
|
||||||
|
{{ partial "social-share" (dict "Context" . "Class" "share-icons" "Title" (i18n "share") "Whatsapp" false "Telegram" false "Linkedin" false "Pinterest" false "Tumblr" false "Vk" false) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- comments -->
|
||||||
|
{{ if site.Config.Services.Disqus.Shortname }}
|
||||||
|
<div class="mt-20">
|
||||||
|
{{ template "_internal/disqus.html" . }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</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 }}
|
120
themes/hugoplate/layouts/contact/list.html
Executable file
|
@ -0,0 +1,120 @@
|
||||||
|
{{ 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 }}
|
144
themes/hugoplate/layouts/index.html
Executable file
|
@ -0,0 +1,144 @@
|
||||||
|
{{ 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 dark:bg-darkmode-theme-light rounded-lg px-7 py-10">
|
||||||
|
<div class="text-dark dark:text-white">
|
||||||
|
<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 dark:text-white">
|
||||||
|
{{ 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 dark:text-white">
|
||||||
|
{{ .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 }}
|
33
themes/hugoplate/layouts/partials/call-to-action.html
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
<!-- 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 dark:bg-darkmode-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 -->
|
30
themes/hugoplate/layouts/partials/components/author-card.html
Executable file
|
@ -0,0 +1,30 @@
|
||||||
|
<div
|
||||||
|
class="bg-theme-light dark:bg-darkmode-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>
|
37
themes/hugoplate/layouts/partials/components/blog-card.html
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
<div class="bg-body dark:bg-darkmode-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>
|
30
themes/hugoplate/layouts/partials/components/breadcrumb.html
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{{ $context := .Context }}
|
||||||
|
{{ $class := .Class }}
|
||||||
|
{{ $base := site.Home.Permalink }}
|
||||||
|
|
||||||
|
|
||||||
|
<ul class="{{ $class }} inline-flex space-x-1 capitalize">
|
||||||
|
<li>
|
||||||
|
<a class="text-primary dark:text-darkmode-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 dark:text-darkmode-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 dark:text-darkmode-primary">
|
||||||
|
{{ i18n (printf "%s" (lower $context.Title)) | default $context.Title }}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
|
@ -0,0 +1,28 @@
|
||||||
|
<!-- 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 }}
|
138
themes/hugoplate/layouts/partials/components/pagination.html
Executable file
|
@ -0,0 +1,138 @@
|
||||||
|
{{ $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 dark:text-darkmode-dark dark:hover:bg-darkmode-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 dark:bg-darkmode-primary dark:text-dark rounded px-4 py-2 text-white">
|
||||||
|
{{ .PageNumber }}
|
||||||
|
</span>
|
||||||
|
{{ else }}
|
||||||
|
<a
|
||||||
|
href="{{ .URL }}"
|
||||||
|
aria-current="page"
|
||||||
|
class="text-dark hover:bg-theme-light dark:text-darkmode-dark dark:hover:bg-darkmode-theme-light rounded px-4 py-2">
|
||||||
|
{{ .PageNumber }}
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Next page. -->
|
||||||
|
{{ if $paginator.HasNext }}
|
||||||
|
<a
|
||||||
|
class="text-dark hover:bg-theme-light dark:text-darkmode-dark dark:hover:bg-darkmode-theme-light rounded px-2 py-1.5"
|
||||||
|
href="{{ $paginator.Next.URL }}"
|
||||||
|
aria-label="Pagination Arrow">
|
||||||
|
<span class="sr-only">Next</span>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 20 20"
|
||||||
|
fill="currentColor"
|
||||||
|
aria-hidden="true"
|
||||||
|
height="30"
|
||||||
|
width="30">
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
||||||
|
clip-rule="evenodd" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
{{ else }}
|
||||||
|
<span class="text-light rounded px-2 py-1.5">
|
||||||
|
<span class="sr-only">Next</span>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 20 20"
|
||||||
|
fill="currentColor"
|
||||||
|
aria-hidden="true"
|
||||||
|
height="30"
|
||||||
|
width="30">
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
||||||
|
clip-rule="evenodd" />
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
|
</nav>
|
||||||
|
{{ end }}
|
|
@ -0,0 +1,62 @@
|
||||||
|
<!-- 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 dark:opacity-0"
|
||||||
|
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 dark:opacity-100"
|
||||||
|
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 }}
|
|
@ -0,0 +1,9 @@
|
||||||
|
<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>
|
57
themes/hugoplate/layouts/partials/essentials/footer.html
Executable file
|
@ -0,0 +1,57 @@
|
||||||
|
<footer class="bg-theme-light dark:bg-darkmode-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 dark:border-darkmode-border border-t py-7">
|
||||||
|
<div class="text-light dark:text-darkmode-light container text-center">
|
||||||
|
<p>
|
||||||
|
{{ site.Params.copyright | markdownify }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
58
themes/hugoplate/layouts/partials/essentials/head.html
Executable file
|
@ -0,0 +1,58 @@
|
||||||
|
<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" . }} */}}
|
135
themes/hugoplate/layouts/partials/essentials/header.html
Executable file
|
@ -0,0 +1,135 @@
|
||||||
|
<header
|
||||||
|
class="header {{ if site.Params.navbar_fixed }}sticky top-0{{ end }} z-30">
|
||||||
|
<nav class="navbar container">
|
||||||
|
<!-- logo -->
|
||||||
|
<div class="order-0">
|
||||||
|
<!-- navbar brand/logo -->
|
||||||
|
<a class="navbar-brand block" href="{{ site.Home.RelPermalink }}">
|
||||||
|
{{ partial "logo" }}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<!-- navbar toggler -->
|
||||||
|
<input id="nav-toggle" type="checkbox" class="hidden" />
|
||||||
|
<label
|
||||||
|
for="nav-toggle"
|
||||||
|
class="order-3 cursor-pointer flex items-center lg:hidden text-dark dark:text-white lg:order-1">
|
||||||
|
<svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20">
|
||||||
|
<title>Menu Open</title>
|
||||||
|
<path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path>
|
||||||
|
</svg>
|
||||||
|
<svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20">
|
||||||
|
<title>Menu Close</title>
|
||||||
|
<polygon
|
||||||
|
points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2"
|
||||||
|
transform="rotate(45 10 10)"></polygon>
|
||||||
|
</svg>
|
||||||
|
</label>
|
||||||
|
<!-- /navbar toggler -->
|
||||||
|
|
||||||
|
<!-- main navbar -->
|
||||||
|
<ul
|
||||||
|
id="nav-menu"
|
||||||
|
class="navbar-nav order-3 hidden lg:flex w-full pb-6 lg:order-1 lg:w-auto lg:space-x-2 lg:pb-0 xl:space-x-8">
|
||||||
|
{{ $currentPage := . }}
|
||||||
|
{{ range site.Menus.main }}
|
||||||
|
{{ $menuURL := .URL | absLangURL }}
|
||||||
|
{{ $pageURL:= $currentPage.Permalink | absLangURL }}
|
||||||
|
{{ $active := eq $menuURL $pageURL }}
|
||||||
|
{{ if .HasChildren }}
|
||||||
|
<li class="nav-item nav-dropdown group relative">
|
||||||
|
<span
|
||||||
|
class="nav-link {{ range .Children }}
|
||||||
|
{{ $childURL := .URL | absLangURL }}
|
||||||
|
{{ $active := eq $childURL $pageURL }}
|
||||||
|
{{ if $active }}active{{ end }}
|
||||||
|
{{ end }} inline-flex items-center">
|
||||||
|
{{ .Name }}
|
||||||
|
<svg class="h-4 w-4 fill-current" viewBox="0 0 20 20">
|
||||||
|
<path
|
||||||
|
d="M9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828 5.757 6.586 4.343 8z" />
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
<ul
|
||||||
|
class="nav-dropdown-list lg:group-hover:visible lg:group-hover:opacity-100">
|
||||||
|
{{ range .Children }}
|
||||||
|
{{ $childURL := .URL | absLangURL }}
|
||||||
|
{{ $active := eq $childURL $pageURL }}
|
||||||
|
<li class="nav-dropdown-item">
|
||||||
|
<a
|
||||||
|
class="nav-dropdown-link {{ if $active }}
|
||||||
|
active
|
||||||
|
{{- end -}}"
|
||||||
|
{{ if findRE `^http` .URL }}
|
||||||
|
target="_blank" rel="noopener"
|
||||||
|
{{ end }}
|
||||||
|
href="{{- if findRE `^#` .URL -}}
|
||||||
|
{{- if not $.IsHome -}}
|
||||||
|
{{- site.Home.RelPermalink -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- .URL -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- .URL | relLangURL -}}
|
||||||
|
{{- end -}}">
|
||||||
|
{{ .Name }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
{{ else }}
|
||||||
|
<li class="nav-item">
|
||||||
|
<a
|
||||||
|
class="nav-link {{ if $active }}active{{- end -}}"
|
||||||
|
{{ if findRE `^http` .URL }}
|
||||||
|
target="_blank" rel="noopener"
|
||||||
|
{{ end }}
|
||||||
|
href="{{- if findRE `^#` .URL -}}
|
||||||
|
{{- if not $.IsHome -}}
|
||||||
|
{{- site.Home.RelPermalink -}}
|
||||||
|
{{- end }}{{- .URL -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- .URL | relLangURL -}}
|
||||||
|
{{- end -}}"
|
||||||
|
>{{ .Name }}</a
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if site.Params.navigation_button.enable }}
|
||||||
|
<li class="mt-4 inline-block lg:hidden">
|
||||||
|
<a
|
||||||
|
class="btn btn-outline-primary btn-sm"
|
||||||
|
href="{{ site.Params.navigation_button.link | relLangURL }}">
|
||||||
|
{{ site.Params.navigation_button.label }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0">
|
||||||
|
{{ with site.Params.search }}
|
||||||
|
{{ if .enable }}
|
||||||
|
<button
|
||||||
|
aria-label="search"
|
||||||
|
class="border-border text-dark hover:text-primary dark:border-darkmode-border mr-5 inline-block border-r pr-5 text-xl dark:text-white dark:hover:text-darkmode-primary"
|
||||||
|
data-target="search-modal">
|
||||||
|
<i class="fa-solid fa-search"></i>
|
||||||
|
</button>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ partial "components/language-switcher" (dict "Context" . "Class" "mr-5 pl-2 py-1 dark:bg-darkmode-theme-light rounded") }}
|
||||||
|
{{ partial "components/theme-switcher" (dict "Class" "mr-5") }}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- navigation btn -->
|
||||||
|
{{ if site.Params.navigation_button.enable }}
|
||||||
|
<a
|
||||||
|
href="{{ site.Params.navigation_button.link | relLangURL }}"
|
||||||
|
class="btn btn-outline-primary btn-sm hidden lg:inline-block">
|
||||||
|
{{ site.Params.navigation_button.label }}
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</header>
|
54
themes/hugoplate/layouts/partials/essentials/script.html
Executable file
|
@ -0,0 +1,54 @@
|
||||||
|
<!-- JS Plugins + Main script -->
|
||||||
|
{{ $scripts := slice }}
|
||||||
|
{{ $scriptsLazy := slice }}
|
||||||
|
{{ range site.Params.plugins.js }}
|
||||||
|
{{ if findRE "^http" .link }}
|
||||||
|
<script
|
||||||
|
src="{{ .link | relURL }}"
|
||||||
|
type="application/javascript"
|
||||||
|
{{ .attributes | safeHTMLAttr }}></script>
|
||||||
|
{{ else }}
|
||||||
|
{{ if not .lazy }}
|
||||||
|
{{ $scripts = $scripts | append (resources.Get .link) }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $scriptsLazy = $scriptsLazy | append (resources.Get .link) }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- main script -->
|
||||||
|
{{ $scripts = $scripts | append (resources.Get "js/main.js") }}
|
||||||
|
{{ $scripts = $scripts | resources.Concat "js/script.js" }}
|
||||||
|
|
||||||
|
{{ $scriptsLazy = $scriptsLazy | resources.Concat "js/script-lazy.js" }}
|
||||||
|
|
||||||
|
{{ if hugo.IsProduction }}
|
||||||
|
{{ $scripts = $scripts | minify | fingerprint }}
|
||||||
|
{{ $scriptsLazy = $scriptsLazy | minify | fingerprint }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* scripts */}}
|
||||||
|
<script
|
||||||
|
crossorigin="anonymous"
|
||||||
|
integrity="{{ $scripts.Data.Integrity }}"
|
||||||
|
src="{{ $scripts.RelPermalink }}"></script>
|
||||||
|
|
||||||
|
{{/* scripts lazy */}}
|
||||||
|
<script
|
||||||
|
defer
|
||||||
|
async
|
||||||
|
crossorigin="anonymous"
|
||||||
|
integrity="{{ $scriptsLazy.Data.Integrity }}"
|
||||||
|
src="{{ $scriptsLazy.RelPermalink }}"></script>
|
||||||
|
|
||||||
|
<!-- progressive web app -->
|
||||||
|
{{ partialCached "pwa.html" . }}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- cookie consent -->
|
||||||
|
{{ partialCached "cookie-consent.html" . }}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- google adsense -->
|
||||||
|
{{ partialCached "adsense-script.html" . }}
|
82
themes/hugoplate/layouts/partials/essentials/style.html
Executable file
|
@ -0,0 +1,82 @@
|
||||||
|
<!-- DNS preconnect -->
|
||||||
|
<meta http-equiv="x-dns-prefetch-control" content="on" />
|
||||||
|
<link rel="preconnect" href="https://use.fontawesome.com" crossorigin />
|
||||||
|
<link rel="preconnect" href="//cdnjs.cloudflare.com" />
|
||||||
|
<link rel="preconnect" href="//www.googletagmanager.com" />
|
||||||
|
<link rel="preconnect" href="//www.google-analytics.com" />
|
||||||
|
<link rel="dns-prefetch" href="https://use.fontawesome.com" />
|
||||||
|
<link rel="dns-prefetch" href="//ajax.googleapis.com" />
|
||||||
|
<link rel="dns-prefetch" href="//cdnjs.cloudflare.com" />
|
||||||
|
<link rel="dns-prefetch" href="//www.googletagmanager.com" />
|
||||||
|
<link rel="dns-prefetch" href="//www.google-analytics.com" />
|
||||||
|
<link rel="dns-prefetch" href="//fonts.googleapis.com" />
|
||||||
|
<link rel="dns-prefetch" href="//connect.facebook.net" />
|
||||||
|
<link rel="dns-prefetch" href="//platform.linkedin.com" />
|
||||||
|
<link rel="dns-prefetch" href="//platform.twitter.com" />
|
||||||
|
|
||||||
|
<!-- google fonts -->
|
||||||
|
{{ $pf:= site.Data.theme.fonts.font_family.primary }}
|
||||||
|
{{ $sf:= site.Data.theme.fonts.font_family.secondary }}
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
const googleFont = document.createElement("link");
|
||||||
|
googleFont.href = "https://fonts.googleapis.com/css2?family={{$pf | safeURL}}{{with $sf}}&family={{. | safeURL}}{{end}}&display=swap";
|
||||||
|
googleFont.type = "text/css";
|
||||||
|
googleFont.rel = "stylesheet";
|
||||||
|
document.head.appendChild(googleFont);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- plugins + stylesheet -->
|
||||||
|
{{ $styles := slice }}
|
||||||
|
{{ $stylesLazy := slice }}
|
||||||
|
{{ range site.Params.plugins.css }}
|
||||||
|
{{ if findRE "^http" .link }}
|
||||||
|
<link
|
||||||
|
crossorigin="anonymous"
|
||||||
|
media="all"
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ .link | relURL }}"
|
||||||
|
{{ .attributes | safeHTMLAttr }} />
|
||||||
|
{{ else }}
|
||||||
|
{{ if not .lazy }}
|
||||||
|
{{ $styles = $styles | append (resources.Get .link) }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $stylesLazy = $stylesLazy | append (resources.Get .link) }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* main style */}}
|
||||||
|
{{ $styles = $styles | append (resources.Get "scss/main.scss" | toCSS) }}
|
||||||
|
{{ $styles = $styles | resources.Concat "css/style.css" }}
|
||||||
|
{{ $styles = $styles | resources.PostCSS }}
|
||||||
|
|
||||||
|
{{ $stylesLazy = $stylesLazy | resources.Concat "css/style-lazy.css" }}
|
||||||
|
{{ $stylesLazy = $stylesLazy | resources.PostCSS }}
|
||||||
|
|
||||||
|
{{ if hugo.IsProduction }}
|
||||||
|
{{ $styles = $styles | resources.ExecuteAsTemplate "css/style.css" . | minify | fingerprint | resources.PostProcess }}
|
||||||
|
{{ $stylesLazy = $stylesLazy | resources.ExecuteAsTemplate "css/style-lazy.css" . | minify | fingerprint | resources.PostProcess }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $styles = $styles | resources.ExecuteAsTemplate "css/style.css" . }}
|
||||||
|
{{ $stylesLazy = $stylesLazy | resources.ExecuteAsTemplate "css/style-lazy.css" . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* styles */}}
|
||||||
|
<link
|
||||||
|
href="{{ $styles.RelPermalink }}"
|
||||||
|
integrity="{{ $styles.Data.Integrity }}"
|
||||||
|
rel="stylesheet" />
|
||||||
|
|
||||||
|
{{/* styles lazy */}}
|
||||||
|
<link
|
||||||
|
defer
|
||||||
|
async
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ $stylesLazy.RelPermalink }}"
|
||||||
|
integrity="{{ $stylesLazy.Data.Integrity }}"
|
||||||
|
media="print"
|
||||||
|
onload="this.media='all'; this.onload=null;" />
|
9
themes/hugoplate/layouts/partials/page-header.html
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
<section>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div
|
||||||
|
class="from-body to-theme-light dark:from-darkmode-body dark:to-darkmode-theme-light rounded-2xl bg-gradient-to-b px-8 py-14">
|
||||||
|
<h1>{{ i18n (printf "%s" (lower .Title)) | default .Title | title }}</h1>
|
||||||
|
{{ partial "components/breadcrumb" (dict "Context" . "Class" "mt-6") }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|