Add themes folder

This commit is contained in:
Markus 2025-06-07 23:02:15 +02:00
parent 78eab7dcac
commit 077da5b941
108 changed files with 6225 additions and 0 deletions

View file

@ -0,0 +1,15 @@
{{ define "main" }}
<section class="page-404">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>404</h1>
<h2 class="text-muted">{{ i18n "404_message" | markdownify }}</h2>
<a href="{{site.BaseURL | relLangURL}}" class="btn btn-main">{{ i18n "go_home" | markdownify }}</a>
</div>
</div>
</div>
</section>
{{ end }}

View file

@ -0,0 +1,125 @@
{{ define "main" }}
{{ partial "page-title.html" . }}
{{ with .Params.about }}
{{ if .enable }}
<section class="about section">
<div class="container">
<div class="row">
<div class="col-md-6">
<div class="about-img">
<img class="img-responsive" src="{{ .image | relURL }}">
</div>
</div>
<div class="col-md-6">
{{ with .title }}<h2 class="mt-40">{{ . | markdownify }}</h2>{{ end }}
{{ with .content }}{{ . | $.Page.RenderString (dict "display" "block") }}{{ end }}
{{ with .button }}
{{ if .enable }}
<a href="{{ .link | relURL }}" class="btn btn-small mt-20">{{ .label }}</a>
{{ end }}
{{ end }}
</div>
</div>
<div class="row counter-box text-center mt-50">
{{ range .funfacts }}
<div class="col-md-2">
<div class="counter-item">
{{ with .icon }}<i class="{{ . }}"></i>{{ end }}
{{ with .count }}<h4 class="count" data-count="{{ . }}">0</h4>{{ end }}
{{ with .name }}<span>{{ . }}</span>{{ end }}
</div>
</div>
{{ end }}
</div>
</div>
</section>
{{ end }}
{{ end }}
{{ with .Params.features }}
{{ if .enable }}
<section class="about-feature bg-dark section dark-service">
<div class="container">
{{ with .title }}
<div class="row">
<div class="col-md-12">
<div class="title">
<h2>{{ . | markdownify }}</h2>
</div>
</div>
</div>
{{ end }}
<div class="row">
{{ range .feature_item }}
<div class="col-md-4">
<div class="service-item">
{{ with .icon }}<i class="{{ . }}"></i>{{ end }}
{{ with .name }}<h4>{{ . | markdownify }}</h4>{{ end }}
{{ with .content }}{{ . | $.Page.RenderString (dict "display" "block") }}{{ end }}
</div>
</div>
{{ end }}
</div>
</div>
</section>
{{ end }}
{{ end }}
<section class="testimonial section-sm">
<div class="container">
<div class="row">
{{ if .Params.testimonial.enable }}
{{ with .GetPage "/" }}
<div class="col-md-6">
<div class="testimonial-carousel text-center">
<div class="testimonial-slider owl-carousel">
{{ range .Params.funfacts.testimonial_slider }}
<div>
<i class="fas fa-quote-left"></i>
{{ with .content }}<p>"{{ . | markdownify }}"</p>{{ end }}
<div class="user">
{{ with .image }}<img src="{{ . | relURL }}" alt="client">{{ end }}
<p><span>{{ .name | markdownify }}</span> {{ .designation | markdownify }}</p>
</div>
</div>
{{ end }}
</div>
</div>
</div>
{{ end }}
{{ end }}
{{ with .Params.mission_vision }}
{{ if .enable }}
<div class="col-md-6">
<div class="tabCommon">
<ul class="nav nav-tabs">
{{ range $index, $elements := .tabs }}
<li {{ if eq $index 0 }} class="active" {{ end }}><a href="#{{ .name | urlize }}"
data-toggle="tab">{{ .name }}</a></li>
{{ end }}
</ul>
<div class="tab-content">
{{ range $index, $elements := .tabs }}
<div id="{{ .name | urlize }}" class="tab-pane fade {{ if eq $index 0 }} active in {{ end }}">
{{ .content | $.Page.RenderString (dict "display" "block") }}
</div>
{{ end }}
</div>
</div>
</div>
{{ end }}
{{ end }}
</div>
</div>
</section>
<!-- Call to action -->
{{ if .Params.cta.enable }}
{{ partial "cta.html" . }}
{{ end }}
<!-- /Call to action -->
{{ end }}

View file

@ -0,0 +1,22 @@
{{ define "main" }}
{{ partial "page-title.html" . }}
<section class="page-wrapper">
<div class="container">
<div class="row">
<div class="col-md-4 sticky-top">
<h2>{{ .Title }}</h2>
{{ with .Params.subtitle }}{{ . | $.Page.RenderString (dict "display" "block") }}{{ end }}
<p>{{ i18n "last_update" }}: {{ time.Format ":date_long" .Lastmod }}</p>
<h3>{{ i18n "faq_toc_title" }}</h3>
{{ .TableOfContents }}
</div>
<div class="col-md-8">
{{ .Content }}
</div>
</div>
</div>
</section>
{{ end }}

View file

@ -0,0 +1,52 @@
<!--
PROJECT: Startup Hugo
VERSION: 1.0.0
AUTHOR: Gethugothemes
AUTHOR WEBSITE: https://gethugothemes.com
-->
<!DOCTYPE html>
<html lang="{{ site.LanguageCode | default `en-US` }}" itemscope itemtype="http://schema.org/WebPage">
<head>
{{ partial "head.html" . }}
<!-- cache partial only in production -->
{{ if hugo.IsProduction }}
{{ partialCached "style.html" . }}
{{ else }}
{{ partial "style.html" . }}
{{ end }}
</head>
<body>
<!-- cache partial only in production -->
{{ partial "header.html" . }}
{{ if hugo.IsProduction }}
{{ partialCached "preloader.html" . }}
{{ else }}
{{ partial "preloader.html" . }}
{{ end }}
<!-- Google Tag Manager (noscript) -->
{{ with site.Params.google_tag_manager }}
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id={{ . }}" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
{{ end }}
<main>
{{ block "main" . }}{{ end }}
</main>
<!-- cache partial only in production -->
{{ if hugo.IsProduction }}
{{ partialCached "footer.html" . }}
{{ partialCached "script.html" . }}
{{ else }}
{{ partial "footer.html" . }}
{{ partial "script.html" . }}
{{ end }}
</body>
</html>

View file

@ -0,0 +1,80 @@
{{ define "main" }}
{{ partial "page-title.html" . }}
<section class="contact-form">
<div class="container">
{{ with site.Params.contact.form }}{{ if .enable -}}
<div class="row">
<form method="POST" {{ if .use_netlify }}name="{{ printf "contact_%s" $.Language.Lang }}" action="{{ "/message_sent" | relLangURL }}" netlify netlify-honeypot="nhp"{{ else }}name="contact" action="{{ .action | safeURL }}"{{ end }}>
<div class="col-md-6 col-sm-12">
<div class="block">
<div class="form-group">
<label for="name" hidden>{{ i18n "contact_form_name" }}</label>
<input id="name" name="name" type="text" class="form-control" placeholder="{{ i18n "contact_form_name" }}" required>
</div>
<div class="form-group">
<label for="email" hidden>{{ i18n "contact_form_email" }}</label>
<input id="email" name="email" type="email" autocomplete="email" class="form-control" placeholder="{{ i18n "contact_form_email" }}" required>
</div>
<div class="form-group">
<label for="subject" hidden>{{ i18n "contact_form_subject" }}</label>
<input id="subject" name="subject" type="text" class="form-control" placeholder="{{ i18n "contact_form_subject" }}" required>
</div>
{{ if .use_netlify -}}
<div class="form-group-h">
<input name="nhp" type="text" class="form-control" placeholder="Are you made of flesh and bone?">
</div>
{{- end }}
{{ if .use_recaptcha -}}
<div class="form-group-h">
<input type="hidden" id="captchaResponse" name="g-recaptcha-response">
</div>
{{- end }}
</div>
</div>
<div class="col-md-6 col-sm-12">
<div class="block">
<div class="form-group-2">
<label for="message" hidden>{{ i18n "contact_form_message" }}</label>
<textarea id="message" name="message" class="form-control" rows="4" placeholder="{{ i18n "contact_form_message" }}" required></textarea>
</div>
<button class="btn btn-default" type="submit">{{ i18n "submit" }}</button>
</div>
</div>
</form>
</div>
{{- end }}{{ end }}
<div class="contact-box row">
{{ with site.Params.contact -}}
<div class="col-md-6 col-sm-12">
<div class="block">
<h2>{{ i18n "address_title" }}</h2>
<ul class="address-block">
{{ $add_address_descriptors := .address_descriptors }}
{{ with site.Params.location }}<li><i class="fas fa-map-marker-alt"></i>{{ if $add_address_descriptors }}{{ i18n "location" | printf "%s: " }}{{ end }}<div>{{ . | markdownify }}</div></li>{{ end }}
{{ with site.Params.email }}<li><i class="fas fa-envelope"></i>{{ if $add_address_descriptors }}{{ i18n "email" | printf "%s: " }}{{ end }}{{ partial "cloak_email" . }}</li>{{ end }}
{{ with site.Params.phone }}<li><i class="fas fa-tty"></i>{{ if $add_address_descriptors }}{{ i18n "phone" | printf "%s: " }}{{ end }}{{ . }}</li>{{ end }}
</ul>
<ul class="social-icons">
{{ range site.Params.social -}}
<li><a href="{{ .link | safeURL }}"><i class="{{ .icon }}"></i></a></li>
{{- end }}
</ul>
</div>
</div>
{{- end }}
{{ if site.Params.gmap.enable -}}
<div class="col-md-6 col-sm-12">
<div class="block">
<div class="google-map">
<div class="map" id="map" data-latitude="{{ site.Params.gmap.map_latitude }}" data-longitude="{{ site.Params.gmap.map_longitude }}" data-marker="{{ site.Params.gmap.map_marker | relURL }}" data-marker-name="{{ site.Title }}"></div>
</div>
</div>
</div>
{{- end }}
</div>
</div>
</section>
{{ end }}

View file

@ -0,0 +1,22 @@
{{ define "main" }}
{{ partial "page-title.html" . }}
<section class="page-wrapper">
<div class="container">
<div class="row">
<div class="col-md-4 sticky-top">
<h2>{{ .Title }}</h2>
{{ with .Params.subtitle }}{{ . | $.Page.RenderString (dict "display" "block") }}{{ end }}
<p>{{ i18n "last_update" }}: {{ time.Format ":date_long" .Lastmod }}</p>
<h3>{{ i18n "faq_toc_title" }}</h3>
{{ .TableOfContents }}
</div>
<div class="col-md-8">
{{ .Content }}
</div>
</div>
</div>
</section>
{{ end }}

View file

@ -0,0 +1,54 @@
{
"name": "{{site.Title}}",
"short_name": "{{site.Title}}",
"lang": "{{ site.LanguageCode | default `en-us` }}",
{{ with site.Params.variables.color_primary }}"theme_color": "{{.}}",{{ end }}
{{ with site.Params.variables.body_color }}"background_color": "{{.}}",{{ end }}
{{ $icon:= site.Params.favicon }}
{{ if $icon }}
{{ if fileExists (add `assets/` $icon) }}
{{ $icon:= resources.Get $icon }}
{{ $icon_48:= $icon.Resize "48x48 png" }}
{{ $icon_72:= $icon.Resize "72x72 png" }}
{{ $icon_96:= $icon.Resize "96x96 png" }}
{{ $icon_144:= $icon.Resize "144x144 png" }}
{{ $icon_192:= $icon.Resize "192x192 png" }}
{{ $icon_512:= $icon.Resize "512x512 png" }}
"icons": [
{
"src": "{{$icon_48.RelPermalink}}",
"sizes": "48x48",
"type": "image/png"
},
{
"src": "{{$icon_72.RelPermalink}}",
"sizes": "72x72",
"type": "image/png"
},
{
"src": "{{$icon_96.RelPermalink}}",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "{{$icon_144.RelPermalink}}",
"sizes": "144x144",
"type": "image/png"
},
{
"src": "{{$icon_192.RelPermalink}}",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "{{$icon_512.RelPermalink}}",
"sizes": "512x512",
"type": "image/png"
}
],
{{ end }}
{{ end }}
"display": "standalone",
"start_url": "{{ site.BaseURL | relLangURL }}?utm_source=web_app_manifest"
}

View file

@ -0,0 +1,119 @@
{{ define "main" }}
{{ partial "page-title.html" . }}
<!-- checking blog -->
{{ if or (eq .Section "post") (eq .Section "posts") (eq .Section "blog") (eq .Section "blogs") (eq .Section "news") (eq .Section "categories") (eq .Section "tags") }}
<div class="page-wrapper">
<div class="container">
<div class="row">
<div class="col-md-8">
{{ $paginator := .Paginate .Data.Pages -}}
{{ range $paginator.Pages -}}
<div class="post">
<div class="post-media post-thumb">
{{ if isset .Params "image" -}}
<a href="{{ .RelPermalink }}">
<img src="{{ .Params.image | relURL }}" alt="{{ .Title }}">
</a>
{{- end }}
</div>
<h3 class="post-title"><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
<div class="post-meta">
<ul>
<li><i class="fas fa-calendar-week"></i> {{ time.Format ":date_long" .PublishDate }}</li>
<li><i class="fas fa-user"></i>
{{ i18n "posted_by" }}
{{ $authors := slice }}{{ if reflect.IsSlice .Params.author }}{{ $authors = .Params.author }}{{ else }}{{ $authors = (slice .Params.author) }}{{ end -}}
{{ range $index, $elements := $authors }}{{ if ne $index 0 }}, {{ end }}<a class="text-primary" href="{{ `author/` | relLangURL }}{{ . | urlize }}">{{ . }}</a>{{ end }}
</li>
<li><i class="fas fa-tags"></i>
{{ range $index, $elements:= .Params.tags }}{{ if ne $index 0 }}, {{ end }}<a href="{{ `tags/` | relLangURL }}{{ . | urlize }}">{{ . }}</a>{{ end }}
</li>
</ul>
</div>
<div class="post-content">
<p>{{ .Summary }}</p>
<a href="{{ .RelPermalink }}" class="btn btn-main">{{ i18n "read_more" }}</a>
</div>
</div>
{{- end }}
<!-- pagination -->
{{ $paginator := .Paginator -}}
{{ $adjacent_links := 2 -}}
{{ $max_links := (add (mul $adjacent_links 2) 1) -}}
{{ $lower_limit := (add $adjacent_links 1) -}}
{{ $upper_limit := (sub $paginator.TotalPages $adjacent_links) -}}
{{ if gt $paginator.TotalPages 1 -}}
<nav class="text-center">
<ul class="pagination post-pagination">
<!-- Previous page. -->
{{ if $paginator.HasPrev -}}
<li>
<a href="{{ $paginator.Prev.URL }}" class="page-link">{{ i18n "page_prev" }}</a>
</li>
{{- end }}
<!-- Page numbers. -->
{{ range $paginator.Pagers -}}
{{ $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 -}}
{{ $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) -}}
{{ $page_number_flag = true -}}
{{ end -}}
<!-- Middle pages. -->
{{ else -}}
{{ if and (ge .PageNumber (sub $paginator.PageNumber $adjacent_links)) (le .PageNumber (add $paginator.PageNumber $adjacent_links)) -}}
{{ $page_number_flag = true -}}
{{ end -}}
{{ end -}}
<!-- Simple page numbers. -->
{{ else -}}
{{ $page_number_flag = true -}}
{{ end -}}
<!-- Output page numbers. -->
{{ if eq $page_number_flag true -}}
<li class="{{ if eq . $paginator }} active {{ end }}">
<a href="{{ .URL }}">
{{ .PageNumber }}
</a>
</li>
{{- end }}
{{- end }}
<!-- Next page. -->
{{ if $paginator.HasNext -}}
<li>
<a href="{{ $paginator.Next.URL }}">{{ i18n "page_next" }}</a>
</li>
{{- end }}
</ul>
</nav>
{{- end }}
</div>
<div class="col-md-4">
{{ partial "blog-sidebar.html" . }}
</div>
</div>
</div>
</div>
<!-- regular page -->
{{ else -}}
{{ .Render "default" }}
{{- end }}
<!-- /regular page -->
{{ end }}

View file

@ -0,0 +1,16 @@
{{ define "main" }}
<section class="page-message-sent">
<div class="container">
<div class="row">
<div class="col-md-12">
<img src="{{ site.Params.contact.form.success_image | relURL }}" alt="Paper plane">
<h1>{{ i18n "form_submitted" | markdownify }}</h1>
<h2 class="text-muted">{{ i18n "form_respond" | markdownify }}</h2>
<a href="{{ "/" | relLangURL }}" class="btn btn-main"><i class="tf-ion-android-arrow-back"></i> {{ i18n "go_home" | markdownify }}</a>
</div>
</div>
</div>
</section>
{{ end }}

View file

@ -0,0 +1,41 @@
{{ define "main" }}
{{ partial "page-title.html" . }}
{{ with .Params.pricing }}
{{ if .enable }}
<section class="pricing-table section bg-gray">
<div class="container">
<div class="row">
<!-- single pricing table -->
{{ range .pricing_table }}
<div class="col-md-4 col-sm-6 col-xs-12">
<div class="pricing-item text-center">
<div class="price-title">
{{ with .name }}<h3>{{ . | markdownify }}</h3>{{ end }}
{{ with .price }}<strong class="value">{{ . }}</strong>{{ end }}
{{ with .content }}{{ . | $.Page.RenderString (dict "display" "block") }}{{ end }}
</div>
<ul>
{{ range .services }}
<li>{{ . | markdownify }}</li>
{{ end }}
</ul>
<a class="btn btn-small" href="{{ .link | safeURL }}">{{ i18n "buy_now" }}</a>
</div>
</div>
{{ end }}
<!-- end single pricing table -->
</div>
</div>
</section>
{{ end }}
{{ end }}
<!-- Call to action -->
{{ if .Params.cta.enable }}
{{ partial "cta.html" . }}
{{ end }}
<!-- /Call to action -->
{{ end }}

View file

@ -0,0 +1,57 @@
{{ define "main" }}
{{ partial "page-title.html" . }}
{{ with .Params.about }}
{{ if .enable }}
<section class="service-about section">
<div class="container">
<div class="row">
<div class="col-md-6">
{{ with .title }}<h2>{{ . | markdownify }}</h2>{{ end }}
{{ with .content }}<div class="mt-30">{{ . | $.Page.RenderString (dict "display" "block") }}</div>{{ end }}
</div>
{{ with .image -}}
<div class="col-md-6">
<img class="img-responsive" src="{{ . | relURL }}">
</div>
{{- end }}
</div>
</div>
</section>
{{ end }}
{{ end }}
{{ with .Params.featured_service }}
{{ if .enable }}
<section class="service-arrow">
<div class="container-fluid">
<div class="row">
{{ range .service_item }}
<div class="col-md-4 bg-primary bg-{{ .color }} no-float">
<div class="block">
<i class="{{ .icon }}"></i>
{{ with .name }}<h3>{{ . | markdownify }}</h3>{{ end }}
{{ with .content }}{{ . | $.Page.RenderString (dict "display" "block") }}{{ end }}
</div>
</div>
{{ end }}
</div>
</div>
</section>
{{ end }}
{{ end }}
<!-- Service -->
{{ if .Params.service.enable }}
{{ partial "service.html" . }}
{{ end }}
<!-- /service -->
<!-- Call to action -->
{{ if .Params.cta.enable }}
{{ partial "cta.html" . }}
{{ end }}
<!-- /Call to action -->
{{ end }}

View file

@ -0,0 +1,55 @@
{{ define "main" }}
{{ partial "page-title.html" . }}
<!-- checking blog -->
{{ if or (eq .Section "post") (eq .Section "posts") (eq .Section "blog") (eq .Section "blogs") (eq .Section "news") (eq .Section "categories") (eq .Section "tags") }}
<section class="page-wrapper">
<div class="container">
<div class="row">
<div class="col-md-8">
<div class="post post-single">
<h2 class="post-title">{{ .Title }}</h2>
<div class="post-meta">
<ul>
<li><i class="ion-calendar"></i> {{ time.Format ":date_long" .PublishDate }}</li>
<li><i class="ion-android-people"></i>
{{ i18n "posted_by" }}
{{ $authors := slice }}{{ if reflect.IsSlice .Params.author }}{{ $authors = .Params.author }}{{ else }}{{ $authors = (slice .Params.author) }}{{ end -}}
{{ range $index, $elements := $authors }}{{ if ne $index 0 }}, {{ end }}<a class="text-primary" href="{{ `author/` | relLangURL }}{{ . | urlize }}">{{ . }}</a>{{ end }}
</li>
<li><i class="ion-pricetags"></i>
{{ range $index, $elements:= .Params.tags }}{{ if ne $index 0 }}, {{ end }}<a href="{{ `tags/` | relLangURL }}{{ . | urlize }}">{{ . }}</a>{{ end }}
</li>
</ul>
</div>
<div class="post-thumb">
{{ with .Params.image -}}
<img class="img-responsive" src="{{ . | relURL }}" alt="{{ $.Title }}">
{{- end }}
</div>
<div class="post-content post-excerpt">
{{ .Content }}
</div>
{{ with site.Params.DisqusShortname -}}
<div class="post-comments">
{{ template "_internal/disqus.html" . }}
</div>
{{- end }}
</div>
</div>
<div class="col-md-4">
{{ partial "blog-sidebar.html" . }}
</div>
</div>
</div>
</section>
<!-- regular page -->
{{ else -}}
{{ .Render "default" }}
{{- end }}
<!-- /regular page -->
{{ end }}

View file

@ -0,0 +1,2 @@
<!-- Redirect to homepage -->
<script>window.location.replace("{{ site.BaseURL | relLangURL }}");</script>

View file

@ -0,0 +1,80 @@
{{ define "main" }}
{{ partial "page-title.html" . }}
<section class="section" style="background: #f5f5f5;">
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="text-center">
<figure>
{{ if .Params.photo -}}
<img style="border-radius: 50%;" class="img-fluid" src="{{ .Params.photo }}">
{{ else if .Params.email -}}
<img style="border-radius: 50%;" class="img-fluid"
src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=128&pg&d=identicon">
{{- end }}
<figcaption>
<h5 class="font-weight-bold">
{{ .Params.name }}
</h5>
</figcaption>
</figure>
<hr>
{{ .Content }}
<hr>
<ul class="list-inline">
{{ range .Params.social -}}
<li class="list-inline-item"><a class="share-icon bg-secondary" href="{{ .link | safeURL }}"><i class="{{ .icon }}"></i></a></li>
{{- end }}
</ul>
</div>
</div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="section-title text-center">
<h2>{{ i18n "posted_by" }} {{ .Title }}</h2>
</div>
</div>
{{ range (union (where site.RegularPages "Params.author" "intersect" (slice .Title)) (where site.RegularPages "Params.author" .Title)) -}}
<div class="col-md-6">
<div class="post">
<div class="post-thumb">
{{ if isset .Params "image" -}}
<a href="{{ .RelPermalink }}">
<img class="img-responsive" src="{{ .Params.image | relURL }}" alt="{{ .Title }}">
</a>
{{- end }}
</div>
<h3 class="post-title"><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
<div class="post-meta">
<ul>
<li><i class="fas fa-calendar-week"></i> {{ time.Format ":date_long" .PublishDate }}</li>
<li><i class="fas fa-user"></i>
{{ i18n "posted_by" }}
{{ $authors := slice }}{{ if reflect.IsSlice .Params.author }}{{ $authors = .Params.author }}{{ else }}{{ $authors = (slice .Params.author) }}{{ end -}}
{{ range $index, $elements := $authors }}{{ if ne $index 0 }}, {{ end }}<a class="text-primary" href="{{ `author/` | relLangURL }}{{ . | urlize }}">{{ . }}</a>{{ end }}
</li>
<li><i class="fas fa-tags"></i>
{{ range $index, $elements:= .Params.tags }}{{ if ne $index 0 }}, {{ end }}<a href="{{ `tags/` | relLangURL }}{{ . | urlize }}">{{ . }}</a>{{ end }}
</li>
</ul>
</div>
<div class="post-content">
<p>{{ .Summary }}</p>
<a href="{{ .RelPermalink }}" class="btn btn-main">{{ i18n "read_more" }}</a>
</div>
</div>
</div>
{{- end }}
</div>
</div>
</section>
{{ end }}

View file

@ -0,0 +1,136 @@
{{ define "main" }}
<!-- banner -->
{{ with .Params.banner }}
{{ if .enable }}
<section class="slider {{ if .bg_overlay }}overly{{ end }}" style="background-image: url('{{ .bg_image | relURL }}');">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="block">
{{ with .title }}<h1>{{ . | markdownify }}</h1>{{ end }}
{{ with .content }}{{ . | $.Page.RenderString (dict "display" "block") }}{{ end }}
{{ with .button }}
{{ if .enable }}
<a href="{{ .link | relLangURL }}" class="btn btn-main animated fadeInUp">{{ .label }}</a>
{{ end }}
{{ end }}
</div>
</div>
</div>
</div>
</section>
{{ end }}
{{ end }}
<!-- /banner -->
<!-- about -->
{{ with .Params.about }}
{{ if .enable }}
<section class="about section">
<div class="container">
<div class="row">
<div class="col-md-7 col-sm-12">
<div class="block">
<div class="section-title">
{{ with .title }}<h2>{{ . | markdownify }}</h2>{{ end }}
{{ with .description }}{{ . | $.Page.RenderString (dict "display" "block") }}{{ end }}
</div>
{{ with .content }}{{ . | $.Page.RenderString (dict "display" "block") }}{{ end }}
</div>
</div>
<div class="col-md-5 col-sm-12">
<div class="block">
<img src="{{ .image | relURL }}" class="img-responsive" alt="Img">
</div>
</div>
</div>
</div>
</section>
{{ end }}
{{ end }}
<!-- /about -->
<!-- portfolio -->
{{ with .Params.portfolio }}
{{ if .enable }}
<section class="feature bg-2" style="background-image: url('{{ .bg_image | relURL }}')">
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-6">
{{ with .title }}<h2 class="section-subtitle">{{ . | markdownify }}</h2>{{ end }}
{{ with .content }}{{ . | $.Page.RenderString (dict "display" "block") }}{{ end }}
{{ with .button }}
{{ if .enable }}
<a href="{{ .link | relLangURL }}" class="btn btn-view-works">{{ .label }}</a>
{{ end }}
{{ end }}
</div>
</div>
</div>
</section>
{{ end }}
{{ end }}
<!-- /portfolio -->
<!-- service -->
{{ if .Params.service.enable }}
{{ partial "service.html" . }}
{{ end }}
<!-- /service -->
<!-- call to action -->
{{ if .Params.cta.enable }}
{{ partial "cta.html" . }}
{{ end }}
<!-- /call to action -->
<!-- funfacts -->
{{ with .Params.funfacts }}
{{ if .enable }}
<section class="testimonial">
<div class="container">
<div class="row">
<div class="section-title text-center">
{{ with .title }}<h2>{{ . | markdownify }}</h2>{{ end }}
{{ with .description }}{{ . | $.Page.RenderString (dict "display" "block") }}{{ end }}
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="block">
<ul class="counter-box clearfix">
{{ range .funfact_item }}
<li class="counter-item">
<i class="{{ .icon }}"></i>
<h4 class="count" data-count="{{ .count }}">0</h4>
<span>{{ .name | markdownify }}</span>
</li>
{{ end }}
</ul>
</div>
</div>
<div class="col-md-5 col-md-offset-1">
<div class="testimonial-carousel text-center">
<div class="testimonial-slider owl-carousel">
{{ range .testimonial_slider }}
<div>
<i class="fas fa-quote-left"></i>
{{ with .content }}{{ . | $.Page.RenderString (dict "display" "block") }}{{ end }}
<div class="user">
<img src="{{ .image | relURL }}" alt="client">
<p><span>{{ .name | markdownify }}</span> {{ .designation | markdownify }}</p>
</div>
</div>
{{ end }}
</div>
</div>
</div>
</div>
</div>
</section>
{{ end }}
{{ end }}
<!-- /funfacts -->
{{ end }}

View file

@ -0,0 +1,4 @@
{{- $sidebarWidgets := site.Params.widgets.sidebar -}}
<aside class="sidebar">
{{- partial "widgets/widget_area" ( dict "Widgets" $sidebarWidgets "Scope" . ) -}}
</aside>

View file

@ -0,0 +1,10 @@
{{/* Cloak an e-mail address (first argument) */ -}}
{{- $address_parts := split . "@" -}}
{{- if (eq (len $address_parts) 2) -}}
{{- $user := index $address_parts 0 -}}
{{- $domain := index $address_parts 1 -}}
<span class="cloaked-e-mail" data-user="{{ range $index := seq (sub (len $user) 1) 0 }}{{ substr $user $index 1 }}{{ end }}" data-domain="{{ range $index := seq (sub (len $domain) 1) 0 }}{{ substr $domain $index 1 }}{{ end }}"></span>
{{- else -}}
<span>INVALID E-MAIL ADDRESS</span>
{{- end -}}
{{- /* Dummy comment to strip trailing newline */ -}}

View file

@ -0,0 +1,21 @@
{{ with site.GetPage "/" }}
{{ with .Params.cta }}
<section class="call-to-action bg-1 section-sm overly" style="background-image: url('{{ .bg_image | relURL }}');">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="block">
{{ with .title }}<h2>{{ . | markdownify }}</h2>{{ end }}
{{ with .content }}<p>{{ . | markdownify }}</p>{{ end }}
{{ with .button }}
{{ if .enable }}
<a class="btn btn-main btn-solid-border" href="{{ .link | relLangURL }}">{{ .label }}</a>
{{ end }}
{{ end }}
</div>
</div>
</div>
</div>
</section>
{{ end }}
{{ end }}

View file

@ -0,0 +1,16 @@
<footer class="footer">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="footer-menu">
<ul>
{{ range site.Menus.footer }}
<li><a href="{{ .URL | relLangURL }}">{{ .Name }}</a></li>
{{ end }}
</ul>
</div>
<p class="copyright">{{ site.Params.copyright | markdownify }}</p>
</div>
</div>
</div>
</footer>

View file

@ -0,0 +1,194 @@
<meta charset="utf-8">
<title>{{.Title | default site.Title}}</title>
<!-- base url -->
{{ if or (eq site.BaseURL "/") (eq site.BaseURL "http://localhost:1313/") (eq site.BaseURL "http://examplesite.org/") (eq site.BaseURL "https://examplesite.org/") (eq site.BaseURL "http://examplesite.com/") (eq site.BaseURL "https://examplesite.com/")}}{{else}}
<base href="{{ .Permalink }}">
{{ end }}
<!-- multilingual SEO optimizations -->
{{ if .IsTranslated }}
{{ range .AllTranslations }}
<link rel="alternate" hreflang="{{.Lang}}" href="{{ .RelPermalink | absLangURL }}">
{{ end }}
<link rel="alternate" hreflang="x-default" href="{{ .RelPermalink | absLangURL }}">
{{ end }}
<!-- mobile responsive meta -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
<meta name="description" content="{{ .Params.Description | default site.Params.description }}">
{{ with site.Params.author }}
<meta name="author" content="{{ . }}">{{ end }}
{{ hugo.Generator }}
<!-- theme meta -->
<meta name="theme-name" content="airspace-hugo" />
<!-- theme meta -->
<meta name="theme-name" content="airspace-hugo" />
<!-- google site verification -->
{{ with site.Params.site_verification.google }}
<meta name="google-site-verification" content="{{ . }}" />
{{ end }}
<!-- bing site verification -->
{{ with site.Params.site_verification.bing }}
<meta name="msvalidate.01" content="{{ . }}" />
{{ end }}
<!-- baidu site verification -->
{{ with site.Params.site_verification.baidu }}
<meta name="baidu-site-verification" content="{{ . }}" />
{{ end }}
<!-- favicon -->
{{ $favicon:= site.Params.favicon }}
{{ if $favicon }}
{{ if fileExists (add `assets/` $favicon) }}
{{ $favicon:= resources.Get $favicon }}
{{ $favicon_16:= $favicon.Resize "16x png"}}
{{ $favicon_32:= $favicon.Resize "32x png"}}
{{ $favicon_180:= $favicon.Resize "180x png"}}
<link rel="shortcut icon" href="{{$favicon_32.RelPermalink}}" type="image/x-icon">
<link rel="icon" href="{{$favicon_32.RelPermalink}}" type="image/x-icon">
<link rel="icon" type="image/png" sizes="16x16" href="{{$favicon_16.RelPermalink}}">
<link rel="icon" type="image/png" sizes="32x32" href="{{$favicon_32.RelPermalink}}">
<link rel="apple-touch-icon" sizes="180x180" href="{{$favicon_180.RelPermalink}}">
{{ end }}
{{ end }}
<link rel="manifest" href="{{`manifest.webmanifest` | relLangURL }}">
<meta name="msapplication-TileColor" content="{{site.Params.variables.color_primary | default `#da532c`}}">
<meta name="theme-color" content="{{site.Params.variables.body_color | default `#ffffff` }}">
<!-- Open Graph image and Twitter Card meta-data -->
{{ $image_path := .Params.image | default site.Params.image }}
{{ $image_path_local := printf "assets/%s" $image_path }}
{{ $image_ext := trim (path.Ext $image_path | lower) "." }}
{{ if fileExists $image_path_local }}
<meta property="og:image" content="{{ $image_path | absURL }}" />
<!-- If not SVG, read image aspect ratio and define Twitter Card and Open Graph width and height -->
{{ if ne $image_ext "svg" }}
{{ with (imageConfig $image_path_local) }}
{{ if (and (gt .Width 144) (gt .Height 144)) }}
<meta name="twitter:image" content="{{ $image_path | absURL }}" />
<meta name="twitter:card"
content="summary{{ if (and (gt .Width 300) (gt .Height 157) (not (eq .Width .Height))) }}_large_image{{ end }}">
{{ end }}
<meta property="og:image:width" content="{{ .Width }}">
<meta property="og:image:height" content="{{ .Height }}">
{{ end }}
{{ end }}
<meta property="og:image:type"
content="image/{{ if eq $image_ext `svg` }}svg+xml{{ else }}{{ replaceRE `^jpg$` `jpeg` $image_ext }}{{ end }}">
{{ end }}
<meta name="twitter:title" content="{{ with .Title }}{{ . }}{{ else }}{{ site.Title }}{{ end }}" />
<meta name="twitter:description"
content="{{ with .Description }}{{ . }}{{ else }}{{ if .IsPage }}{{ .Summary }}{{ else }}{{ with site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" />
{{ with Site.Params.Social.twitter }}
<meta name="twitter:site" content="@{{ . }}" />{{ end }}
{{ range Site.Params.Author }}
{{ with .twitter }}
<meta name="twitter:creator" content="@{{ . }}" />{{ end }}
{{ end }}
{{ template "_internal/opengraph.html" . }}
<!-- google analytics -->
{{ template "_internal/google_analytics.html" . }}
<!-- google tag manager -->
{{ with site.Params.google_tag_manager }}
<script>
var dataLayer = window.dataLayer = window.dataLayer || [];
dataLayer.push({
page: '{{ .Title }}',
categories: 'only examples about your dataLayer'
});
</script>
<script>
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', '{{ . }}');
</script>
{{ end }}
<!-- matomo analytics -->
{{ with site.Params.matomo }}
{{ if .enable }}
<script type="text/javascript">
var _paq = window._paq = window._paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function () {
var u = "{{.url|safeURL}}";
_paq.push(['setTrackerUrl', u + 'matomo.php']);
_paq.push(['setSiteId', '{{.id}}']);
var d = document,
g = d.createElement('script'),
s = d.getElementsByTagName('script')[0];
g.type = 'text/javascript';
g.async = true;
g.src = u + 'matomo.js';
s.parentNode.insertBefore(g, s);
})();
</script>
{{ end }}
{{ end }}
<!-- Baidu analytics -->
{{ if site.Params.baidu.enable }}
{{ with site.Params.baidu.analytics_id }}
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?{{ . }}";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
{{ end }}
{{ end }}
<!-- Plausible Analytics -->
{{ with site.Params.plausible }}
{{ if .enable }}
{{ with .domain }}
<script defer data-domain="{{ . }}" src="https://plausible.io/js/plausible.js"></script>
{{ end }}
{{ end }}
{{ end }}
<!-- Counter Analytics -->
{{ with site.Params.counter }}
{{ if .enable }}
{{ with .id }}
<script src="https://cdn.counter.dev/script.js" data-id="{{ . }}" data-utcoffset="{{ site.Params.counter.utc_offset | default "0" }}"></script>
{{ end }}
{{ end }}
{{ end }}
<!-- Google reCaptcha -->
{{ if site.Params.contact.form.use_recaptcha }}
<script src="https://www.google.com/recaptcha/api.js?render={{ site.Params.recaptcha_site_key }}"></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('{{ site.Params.recaptcha_site_key }}', {action: 'homepage'})
.then(function(token) {
document.getElementById('captchaResponse').value = token;
});
});
</script>
{{ end }}

View file

@ -0,0 +1,83 @@
<!-- navigation -->
<header class="{{if site.Params.navbar_fixed}}sticky-top{{end}} navigation">
<div class="container-fluid">
<!-- navbar -->
<nav class="navbar">
<div class="navbar-header">
<!-- navbar toggler -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navigation" aria-expanded="true">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<!-- navbar brand/logo -->
<a class="navbar-brand" href="{{ site.BaseURL | relLangURL }}">
{{ partial "logo.html" . }}
</a>
</div>
<div class="collapse navbar-collapse" id="navigation">
<ul class="nav navbar-nav navbar-right">
<!-- menu active -->
{{ $currentPage := . }}
{{ range site.Menus.main }}
{{ $menuURL := .URL | absLangURL }}
{{ $pageURL:= $currentPage.Permalink | absLangURL }}
{{ $active := eq $menuURL $pageURL }}
{{ if .HasChildren }}
<li class="nav-item dropdown
{{ range .Children }}
{{ $childURL := .URL | absLangURL }}
{{ $active := eq $childURL $pageURL }}
{{ if $active }}current{{ end }}
{{ end }}">
<a class="dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
{{ .Name }} <span class="fas fa-angle-down"></span>
</a>
<ul class="dropdown-menu">
{{ range .Children }}
{{ $childURL := .URL | absLangURL }}
{{ $active := eq $childURL $pageURL }}
<li><a class="dropdown-item {{ if $active }}current{{ end }}" {{if findRE `^http` .URL}}target="_blank" rel="noopener" {{end}}
href="{{if findRE `^#` .URL}}{{if not $.IsHome}}{{site.BaseURL | relLangURL}}{{end}}{{.URL}}{{else}}{{.URL | relLangURL}}{{end}}">{{ .Name }}</a></li>
{{ end }}
</ul>
</li>
{{ else }}
<li class="nav-item">
<a class="nav-link {{ if $active }}current{{ end }}" {{if findRE `^http` .URL}}target="_blank" rel="noopener" {{end}}
href="{{if findRE `^#` .URL}}{{if not $.IsHome}}{{site.BaseURL | relLangURL}}{{end}}{{.URL}}{{else}}{{.URL | relLangURL}}{{end}}">{{.Name}}</a>
</li>
{{ end }}
{{ end }}
<li>
<!-- Language List -->
{{ if .IsTranslated }}
<select class="m-2 border-0" id="select-language" onchange="location = this.value;">
{{ $siteLanguages := site.Languages}}
{{ $pageLang := .Page.Lang}}
{{ range .Page.AllTranslations }}
{{ $translation := .}}
{{ range $siteLanguages }}
{{ if eq $translation.Lang .Lang }}
{{ $selected := false }}
{{ if eq $pageLang .Lang}}
<option id="{{ $translation.Language }}" value="{{ $translation.RelPermalink }}" selected>{{ .LanguageName }}
</option>
{{ else }}
<option id="{{ $translation.Language }}" value="{{ $translation.RelPermalink }}">{{ .LanguageName }}</option>
{{ end }}
{{ end }}
{{ end }}
{{ end }}
</select>
{{ end }}
</li>
</ul>
</div>
</nav>
</div>
</header>
<!-- /navigation -->

View file

@ -0,0 +1,50 @@
{{ $logoPath:= site.Params.logo }}
{{ $logoWidth:= replace site.Params.logo_width "px" "x" }}
<!-- checking logo existance -->
{{ if $logoPath }}
{{ if fileExists (add `assets/` $logoPath) }}
{{ $logo:= resources.Get $logoPath }}
<!-- logo extention -->
{{ $logoExt := path.Ext $logo }}
<!-- logo height, width (if not svg) -->
{{ if eq $logoExt `.svg` }}
{{ .Scratch.Set "logo-width" "" }}
{{ .Scratch.Set "logo-height" "" }}
{{ else }}
{{ .Scratch.Set "logo-width" $logo.Width }}
{{ .Scratch.Set "logo-height" $logo.Height }}
{{ end }}
{{ $logoDefaultWidth:= .Scratch.Get "logo-width" }}
{{ $logoDefaultHeight:= .Scratch.Get "logo-height" }}
<!-- checking gif -->
{{ if eq $logoExt ".gif" }}
{{ .Scratch.Set "logo" ($logo.Resize $logoWidth).RelPermalink }}
<!-- checking svg -->
{{ else if eq $logoExt ".svg"}}
{{ .Scratch.Set "logo" $logo.RelPermalink }}
<!-- logo processing to webp -->
{{ else }}
{{ $logoDefaultWidth:= add (string $logoDefaultWidth) "x"}}
{{ $logoWidth:= $logoWidth | default $logoDefaultWidth }}
{{ $options := add (string $logoWidth) " webp" }}
{{ .Scratch.Set "logo" ($logo.Resize $options).RelPermalink }}
<!-- logo fallback -->
{{ .Scratch.Set "logo_fallback" ($logo.Resize $logoWidth).RelPermalink }}
{{ end }}
<img loading="prelaod" decoding="async" class="img-fluid" width="{{replace $logoWidth `x` `` | default $logoDefaultWidth}}" height="{{$logoDefaultHeight}}" src="{{.Scratch.Get `logo`}}" alt="{{ site.Title }}" onerror="this.onerror=null;this.src='{{.Scratch.Get `logo_fallback`}}'">
{{ else }}
<strong class="text-danger">`{{$logoPath}}` doesn't exist</strong>
{{ end }}
<!-- / checking logo existance -->
<!-- logo text -->
{{ else if site.Params.logo_text }}
{{ site.Params.logo_text | markdownify }}
<!-- logo title -->
{{ else }}
{{ site.Title | markdownify }}
{{ end }}

View file

@ -0,0 +1,12 @@
<section class="page-title bg-2" style="background-image: url('{{ .Params.bg_image | relURL }}');">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="block">
<h1>{{ .Title }}</h1>
<p>{{ .Params.description }}</p>
</div>
</div>
</div>
</div>
</section>

View file

@ -0,0 +1,38 @@
{{ if site.Params.preloader.enable }}
<div class="preloader">
<!-- get image path -->
{{ $preloaderPath:= site.Params.preloader.preloader }}
{{ if $preloaderPath }}
<!-- check image existence -->
{{ if fileExists (add `assets/` $preloaderPath) }}
{{ $preloader:= resources.Get $preloaderPath }}
<!-- image extension -->
{{ $preloader_ext := path.Ext $preloader }}
<!-- image width -->
{{ $preloader_width := $preloader.Width }}
<!-- not gif -->
{{ if ne $preloader_ext ".gif" }}
<!-- webp image -->
{{ $option_webp := add (add (string $preloader_width) "x") " webp" }}
{{ .Scratch.Set "preloader" ($preloader.Resize $option_webp).RelPermalink }}
<!-- fallback image -->
{{ $option := add (string $preloader_width) "x" }}
{{ .Scratch.Set "preloader_fallback" ($preloader.Resize $option).RelPermalink }}
<!-- gif image -->
{{ else }}
{{ .Scratch.Set "preloader" $preloader.RelPermalink }}
{{ end }}
<img class="img-fluid" loading="preload" decoding="async" src="{{.Scratch.Get `preloader`}}" aria-label="preloader" title="preloader"
onerror="this.onerror=null;this.src='{{.Scratch.Get `preloader_fallback`}}'" alt="preloader">
{{ end }}
{{ end }}
<!-- /check image existence -->
</div>
{{ end }}

View file

@ -0,0 +1,15 @@
<!-- JS Plugins + Main script -->
{{ $scripts := slice }}
{{ range site.Params.plugins.js}}
{{ if findRE "^http" .link }}
<script src="{{ .link | relURL }}" type="application/javascript" {{.attributes | safeHTMLAttr}}></script>
{{ else }}
{{ $scripts = $scripts | append (resources.Get .link) }}
{{ end }}
{{ end }}
{{ $scripts := $scripts | append (resources.Get "js/script.js" | minify) }}
{{ $scripts := $scripts | resources.Concat "js/script.js" | minify | fingerprint "sha512" }}
<script crossorigin="anonymous" defer="defer" integrity="{{ $scripts.Data.Integrity }}" type="application/javascript">{{$scripts.Content | safeJS}}</script>

View file

@ -0,0 +1,25 @@
{{ with site.GetPage "/service" }}
{{ with .Params.service }}
<section class="service">
<div class="container">
<div class="row">
<div class="section-title">
{{ with .title }}<h2>{{ . | markdownify }}</h2>{{ end }}
{{ with .description }}<p>{{ . | markdownify }}</p>{{ end }}
</div>
</div>
<div class="row">
{{ range .service_item }}
<div class="col-sm-6 col-md-3">
<div class="service-item">
<i class="{{ .icon }}"></i>
<h4>{{ .name | markdownify }}</h4>
<p>{{ .content | markdownify }}</p>
</div>
</div>
{{ end }}
</div>
</div>
</section>
{{ end }}
{{ end }}

View file

@ -0,0 +1,31 @@
<!-- DNS preconnect -->
<meta http-equiv="x-dns-prefetch-control" content="on">
<link rel="preconnect" href="//ajax.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous">
<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://fonts.gstatic.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">
<!-- plugins + stylesheet -->
{{ $styles := slice }}
{{ range site.Params.plugins.css }}
{{ if findRE "^http" .link }}
<link crossorigin="anonymous" media="all" rel="stylesheet" href="{{ .link | relURL }}" {{.attributes | safeHTMLAttr}} >
{{ else }}
{{ $styles = $styles | append (resources.Get .link) }}
{{ end }}
{{ end }}
{{ $styles := $styles | append (resources.Get "scss/style.scss" | resources.ExecuteAsTemplate "style.scss" . | toCSS) }}
{{ $styles := $styles | resources.Concat "/css/style.css" | minify | fingerprint "sha512"}}
<style type="text/css">{{$styles.Content | safeCSS}}</style>

View file

@ -0,0 +1,16 @@
<div class="widget widget-latest-post">
<h4 class="widget-title">{{ i18n "latest_posts" }}</h4>
{{ range first 4 (where site.Pages "Type" "post") }}
<div class="media">
<a class="pull-left" href="{{ .RelPermalink }}">
{{ if isset .Params "image" }}
<img class="media-object" src="{{ .Params.image | relURL }}" alt="{{ .Title }}">
{{ end }}
</a>
<div class="media-body">
<h4 class="media-heading"><a href="{{ .RelPermalink }}">{{ .Title }}</a></h4>
<p>{{ .Summary | truncate 50 }}</p>
</div>
</div>
{{ end }}
</div>

View file

@ -0,0 +1,12 @@
<div class="widget widget-category">
<h4 class="widget-title">{{ i18n "categories" }}</h4>
{{- if isset site.Taxonomies "categories" }}
{{- if not (eq (len site.Taxonomies.categories) 0) }}
<ul class="widget-category-list">
{{- range site.Taxonomies.categories }}
<li><a href="{{ .Page.RelPermalink }}"{{ if (and (eq $.Page.Kind "term") (eq $.Page.Type "categories") (eq $.Page.Title .Page.Title)) }} class="current"{{ end }}>{{ .Page.Title }}</a></li>
{{- end }}
</ul>
{{- end }}
{{- end }}
</div>

View file

@ -0,0 +1,12 @@
<div class="widget widget-tag">
<h4 class="widget-title">{{ i18n "tags" }}</h4>
{{- if isset site.Taxonomies "tags" }}
{{- if not (eq (len site.Taxonomies.tags) 0) }}
<ul class="widget-tag-list">
{{- range site.Taxonomies.tags }}
<li><a href="{{ .Page.RelPermalink }}"{{ if (and (eq $.Page.Kind "term") (eq $.Page.Type "tags") (eq $.Page.Title .Page.Title)) }} class="current"{{ end }}>{{ .Page.Title }}</a></li>
{{- end }}
</ul>
{{- end }}
{{- end }}
</div>

View file

@ -0,0 +1,3 @@
{{- range .Widgets -}}
{{- partial ( print "widgets/" . ) $.Scope -}}
{{- end -}}

View file

@ -0,0 +1,53 @@
{{ define "main" }}
{{ partial "page-title.html" . }}
{{ $data := index site.Data site.Language.Lang }}
<!-- Portfolio Start -->
<section class="portfolio-work">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="block">
<div class="portfolio-menu">
<div class="btn-group btn-group-toggle justify-content-center" data-toggle="buttons">
<label class="btn btn-sm btn-primary active">
<input type="radio" name="shuffle-filter" value="all" checked="checked">{{ i18n "all" }}
</label>
{{ $categories := slice -}}
{{ range .Data.Pages -}}
{{ $categories = $categories | append .Params.category -}}
{{ end -}}
{{ range ( $categories | uniq ) -}}
<label class="btn btn-sm btn-primary">
<input type="radio" name="shuffle-filter" value="{{ . | urlize }}">{{ . }}
</label>
{{- end }}
</div>
</div>
<div class="row shuffle-wrapper">
{{ range .Data.Pages -}}
{{ $cats := .Params.category -}}
{{ if not (reflect.IsSlice $cats) }}{{ $cats = slice ($cats) }}{{ end -}}
{{ $cats = apply $cats "urlize" "." | jsonify -}}
<div class="col-md-4 portfolio-item shuffle-item" data-groups="{{ $cats }}">
{{ if isset .Params "image" -}}
<img src="{{ .Params.image | relURL }}" alt="{{ .Title }}">
{{- end }}
<div class="portfolio-hover">
<div class="portfolio-content">
<a class="h3" href="{{ .RelPermalink }}">{{ .Title }}</a>
<p>{{ .Params.description }}</p>
</div>
</div>
</div>
{{- end }}
</div>
</div>
</div>
</div>
</div>
</section>
{{ end }}

View file

@ -0,0 +1,36 @@
{{ define "main" }}
{{ partial "page-title.html" . }}
{{ $data := index site.Data site.Language.Lang }}
<section class="portfolio-single-page section-sm">
<div class="container">
<div class="row">
<div class="col-md-8">
{{ with .Params.image }}
<img class="img-responsive w-100" src="{{ . | relURL }}" alt="">
{{ end }}
</div>
<div class="col-md-4">
<div class="project-details">
<h4>Project Details</h4>
<ul>
{{ range .Params.information }}
<li><span>{{ .label }} :</span> <strong>{{ .info | markdownify }}</strong></li>
{{ end }}
</ul>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="project-content mt-50">
{{ .Content }}
</div>
</div>
</div>
</div>
</section>
{{ end }}

View file

@ -0,0 +1 @@
<a href="{{.Get 1 | absLangURL}}" class="btn btn-primary text-white" {{ if strings.HasPrefix (.Get 1) `http` }} target="_blank" rel="noopener"{{ end }} >{{.Get 0}}</a>

View file

@ -0,0 +1,10 @@
<!-- {{/*
Cloak an e-mail address
Usage: {{< cloak_email EMAIL >}}
*/}} -->
{{- $address_parts := split (.Get 0) "@" -}}
{{- $user := index $address_parts 0 -}}
{{- $domain := index $address_parts 1 -}}
<span class="cloaked-e-mail" data-user="{{ range $index := seq (sub (len $user) 1) 0 }}{{ substr $user $index 1 }}{{ end }}" data-domain="{{ range $index := seq (sub (len $domain) 1) 0 }}{{ substr $domain $index 1 }}{{ end }}"></span>
{{- /* Dummy comment to strip trailing newline */ -}}

View file

@ -0,0 +1,8 @@
<div class="codepen" data-height="400" data-theme-id="light" data-default-tab="html,result" data-user="codepen" data-slug-hash="{{.Get 0}}"></div>
<!-- codepen plugin, use it in config.toml -->
<!--
[[params.plugins.js]]
link = "https://cpwebassets.codepen.io/assets/embed/ei.js"
attributes = "async"
-->

View file

@ -0,0 +1,12 @@
<div class="accordion accordion-flush border">
<div class="accordion-item">
<h2 class="accordion-header my-0" id="title-{{.Get 0 | urlize}}">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#{{ .Get 0 | urlize}}" aria-expanded="false" aria-controls="{{ .Get 0 | urlize}}">
{{ .Get 0 | markdownify }}
</button>
</h2>
<div id="{{.Get 0 | urlize}}" class="accordion-collapse collapse" aria-labelledby="title-{{.Get 0 | urlize}}">
<div class="accordion-body">{{ .Inner | markdownify }}</div>
</div>
</div>
</div>

View file

@ -0,0 +1,9 @@
<!-- {{/*
Localize a date string like "2006-01-02" based on the current language; returns e.g. "January 2, 2006" if current language is English
Usage: {{< date_l10n INPUT [LAYOUT] >}}
*/}} -->
{{ $layout := ":date_long" -}}
{{ with .Get 1 }}{{ $layout = . }}{{ end -}}
{{ time.Format $layout (.Get 0) -}}
{{/* Dummy comment to strip trailing newline */ -}}

View file

@ -0,0 +1,116 @@
<!-- get value from params -->
{{ $imagePath:= .Get "src" }}
{{ $caption:= .Get "caption" }}
{{ $position:= .Get "position" }}
{{ $class:= .Get "class" }}
{{ $height:= replace (replace (.Get "height") "px" "") "x" "" }}
{{ $width:= replace (replace (.Get "width") "px" "") "x" "" }}
{{ $alt:= .Get "alt" }}
{{ $title:= .Get "title" }}
{{ $command:= .Get "command" | humanize }}
{{ $option:= .Get "option" }}
<!-- image position -->
{{ if eq $position `center` }}
{{ .Scratch.Set "position" "img-center" }}
{{ else if eq $position `left` }}
{{ .Scratch.Set "position" "img-left" }}
{{ else if eq $position `right` }}
{{ .Scratch.Set "position" "img-right" }}
{{ else if eq $position `float-left` }}
{{ .Scratch.Set "position" "img-float-left" }}
{{ else if eq $position `float-right` }}
{{ .Scratch.Set "position" "img-float-right" }}
{{ end }}
<!-- check cdn image -->
{{ if or (hasPrefix $imagePath "http") (fileExists (add `static/` $imagePath)) }}
<!-- cdn image figure -->
{{ if $caption }}
<figure class="{{.Scratch.Get `position`}}" role="group" aria-describedby="caption-{{ $caption | markdownify }}">
<img title="{{$title}}" loading="lazy" decoding="async" src="{{ $imagePath | absURL }}" alt="{{ $alt }}" class="{{$class}}" width="{{$width}}" height="{{$height}}">
<figcaption id="caption-{{ $caption | markdownify }}">{{$caption | markdownify}}</figcaption>
</figure>
{{ else }}
<!-- cdn image tag -->
<img title="{{$title}}" loading="lazy" decoding="async" src="{{ $imagePath | absURL }}" alt="{{ $alt }}" class="{{$class}} {{.Scratch.Get `position`}}" width="{{$width}}" height="{{$height}}">
{{ end }}
<!-- /cdn image -->
{{ else }}
<!-- content and assets image path variable -->
{{ $contentImage:= .Page.Resources.GetMatch (printf "*%s*" $imagePath) }}
{{ $assetImage:= fileExists (add `assets/` $imagePath) }}
<!-- check image existence -->
{{ if or $contentImage $assetImage }}
<!-- content or assets folder detection -->
{{ if $contentImage }}
{{ .Scratch.Set "image-exists" $contentImage }}
{{ else if $assetImage }}
{{ .Scratch.Set "image-exists" (resources.Get $imagePath) }}
{{ end }}
{{ $image:= .Scratch.Get "image-exists" }}
<!-- image extension -->
{{ $imageExt := path.Ext $image }}
<!-- image height, width (if not svg) -->
{{ if eq $imageExt `.svg` }}
{{ .Scratch.Set "image-height" "" }}
{{ .Scratch.Set "image-width" "" }}
{{ else }}
{{ .Scratch.Set "image-height" $image.Height }}
{{ .Scratch.Set "image-width" $image.Width }}
{{ end }}
{{ $imageHeight:= .Scratch.Get "image-height" }}
{{ $imageWidth:= .Scratch.Get "image-width" }}
<!-- checking gif/svg image -->
{{ if or (eq $imageExt `.gif`) (eq $imageExt `.svg`) }}
{{ .Scratch.Set `image` $image.RelPermalink }}
{{ else }}
<!-- image processing -->
{{ $options:= add (add (add (add (string ($width | default $imageWidth)) "x") (string ($height | default $imageHeight))) " webp ") (string $option) }}
<!-- image Fit -->
{{ if eq $command `Fit` }}
{{ .Scratch.Set `image` ($image.Fit $options).RelPermalink }}
{{ .Scratch.Set `fallback` ($image.Fit (replace $options `webp` ``)).RelPermalink }}
<!-- image Fill -->
{{ else if eq $command `Fill` }}
{{ .Scratch.Set `image` ($image.Fill $options).RelPermalink }}
{{ .Scratch.Set `fallback` ($image.Fill (replace $options `webp` ``)).RelPermalink }}
<!-- image Resize -->
{{ else }}
{{ .Scratch.Set `image` ($image.Resize $options).RelPermalink }}
{{ .Scratch.Set `fallback` ($image.Resize (replace $options `webp` ``)).RelPermalink }}
{{ end }}
{{ end }}
<!-- /checking gif/svg image -->
<!-- image figure -->
{{ if $caption }}
<figure class="{{.Scratch.Get `position`}}" role="group" aria-describedby="caption-{{ $caption | markdownify }}">
<img title="{{$title}}" loading="lazy" decoding="async" class="{{$class}}" width="{{$width | default $imageWidth }}" height="{{$height | default $imageHeight}}" src="{{.Scratch.Get `image`}}" alt="{{$alt}}" onerror="this.onerror='null';this.src='{{.Scratch.Get `fallback`}}'">
<figcaption id="caption-{{ $caption | markdownify }}">{{$caption | markdownify}}</figcaption>
</figure>
{{ else }}
<!-- image tag -->
<img title="{{$title}}" loading="lazy" decoding="async" class="{{$class}} {{.Scratch.Get `position`}}" width="{{$width | default $imageWidth }}" height="{{$height | default $imageHeight}}" src="{{.Scratch.Get `image`}}" alt="{{$alt}}" onerror="this.onerror='null';this.src='{{.Scratch.Get `fallback`}}'">
{{ end }}
{{ else }}
<!-- image not found -->
<strong class="text-danger mb-3 d-inline-block">{{site.BaseURL}}{{$imagePath}} does not exist</strong>
{{ end }}
<!-- /check image existance -->
{{ end }}
<!-- /check cdn image -->

View file

@ -0,0 +1,3 @@
<div class="tab-pane" title="{{ .Get 0 }}">
{{ .Inner | markdownify}}
</div>

View file

@ -0,0 +1,4 @@
<div class="code-tabs">
<ul class="nav nav-tabs"></ul>
<div class="tab-content">{{ .Inner }}</div>
</div>