Add themes folder
This commit is contained in:
parent
78eab7dcac
commit
077da5b941
108 changed files with 6225 additions and 0 deletions
15
themes/airspace-hugo/layouts/404.html
Normal file
15
themes/airspace-hugo/layouts/404.html
Normal 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 }}
|
||||
125
themes/airspace-hugo/layouts/_default/about.html
Normal file
125
themes/airspace-hugo/layouts/_default/about.html
Normal 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 }}
|
||||
22
themes/airspace-hugo/layouts/_default/agb.html
Normal file
22
themes/airspace-hugo/layouts/_default/agb.html
Normal 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 }}
|
||||
52
themes/airspace-hugo/layouts/_default/baseof.html
Normal file
52
themes/airspace-hugo/layouts/_default/baseof.html
Normal 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>
|
||||
80
themes/airspace-hugo/layouts/_default/contact.html
Normal file
80
themes/airspace-hugo/layouts/_default/contact.html
Normal 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 }}
|
||||
22
themes/airspace-hugo/layouts/_default/faq.html
Normal file
22
themes/airspace-hugo/layouts/_default/faq.html
Normal 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 }}
|
||||
54
themes/airspace-hugo/layouts/_default/index.webmanifest
Normal file
54
themes/airspace-hugo/layouts/_default/index.webmanifest
Normal 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"
|
||||
}
|
||||
119
themes/airspace-hugo/layouts/_default/list.html
Normal file
119
themes/airspace-hugo/layouts/_default/list.html
Normal 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 }}
|
||||
16
themes/airspace-hugo/layouts/_default/message_sent.html
Normal file
16
themes/airspace-hugo/layouts/_default/message_sent.html
Normal 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 }}
|
||||
41
themes/airspace-hugo/layouts/_default/pricing.html
Normal file
41
themes/airspace-hugo/layouts/_default/pricing.html
Normal 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 }}
|
||||
57
themes/airspace-hugo/layouts/_default/service.html
Normal file
57
themes/airspace-hugo/layouts/_default/service.html
Normal 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 }}
|
||||
55
themes/airspace-hugo/layouts/_default/single.html
Normal file
55
themes/airspace-hugo/layouts/_default/single.html
Normal 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 }}
|
||||
2
themes/airspace-hugo/layouts/_default/terms.html
Normal file
2
themes/airspace-hugo/layouts/_default/terms.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!-- Redirect to homepage -->
|
||||
<script>window.location.replace("{{ site.BaseURL | relLangURL }}");</script>
|
||||
80
themes/airspace-hugo/layouts/author/single.html
Normal file
80
themes/airspace-hugo/layouts/author/single.html
Normal 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 }}
|
||||
136
themes/airspace-hugo/layouts/index.html
Normal file
136
themes/airspace-hugo/layouts/index.html
Normal 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 }}
|
||||
4
themes/airspace-hugo/layouts/partials/blog-sidebar.html
Normal file
4
themes/airspace-hugo/layouts/partials/blog-sidebar.html
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{{- $sidebarWidgets := site.Params.widgets.sidebar -}}
|
||||
<aside class="sidebar">
|
||||
{{- partial "widgets/widget_area" ( dict "Widgets" $sidebarWidgets "Scope" . ) -}}
|
||||
</aside>
|
||||
10
themes/airspace-hugo/layouts/partials/cloak_email.html
Normal file
10
themes/airspace-hugo/layouts/partials/cloak_email.html
Normal 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 */ -}}
|
||||
21
themes/airspace-hugo/layouts/partials/cta.html
Normal file
21
themes/airspace-hugo/layouts/partials/cta.html
Normal 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 }}
|
||||
16
themes/airspace-hugo/layouts/partials/footer.html
Normal file
16
themes/airspace-hugo/layouts/partials/footer.html
Normal 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>
|
||||
194
themes/airspace-hugo/layouts/partials/head.html
Normal file
194
themes/airspace-hugo/layouts/partials/head.html
Normal 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 }}
|
||||
83
themes/airspace-hugo/layouts/partials/header.html
Normal file
83
themes/airspace-hugo/layouts/partials/header.html
Normal 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 -->
|
||||
50
themes/airspace-hugo/layouts/partials/logo.html
Normal file
50
themes/airspace-hugo/layouts/partials/logo.html
Normal 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 }}
|
||||
12
themes/airspace-hugo/layouts/partials/page-title.html
Normal file
12
themes/airspace-hugo/layouts/partials/page-title.html
Normal 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>
|
||||
38
themes/airspace-hugo/layouts/partials/preloader.html
Normal file
38
themes/airspace-hugo/layouts/partials/preloader.html
Normal 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 }}
|
||||
15
themes/airspace-hugo/layouts/partials/script.html
Normal file
15
themes/airspace-hugo/layouts/partials/script.html
Normal 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>
|
||||
|
||||
25
themes/airspace-hugo/layouts/partials/service.html
Normal file
25
themes/airspace-hugo/layouts/partials/service.html
Normal 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 }}
|
||||
31
themes/airspace-hugo/layouts/partials/style.html
Normal file
31
themes/airspace-hugo/layouts/partials/style.html
Normal 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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
{{- range .Widgets -}}
|
||||
{{- partial ( print "widgets/" . ) $.Scope -}}
|
||||
{{- end -}}
|
||||
53
themes/airspace-hugo/layouts/project/list.html
Normal file
53
themes/airspace-hugo/layouts/project/list.html
Normal 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 }}
|
||||
36
themes/airspace-hugo/layouts/project/single.html
Normal file
36
themes/airspace-hugo/layouts/project/single.html
Normal 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 }}
|
||||
1
themes/airspace-hugo/layouts/shortcodes/button.html
Normal file
1
themes/airspace-hugo/layouts/shortcodes/button.html
Normal 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>
|
||||
10
themes/airspace-hugo/layouts/shortcodes/cloak_email.html
Normal file
10
themes/airspace-hugo/layouts/shortcodes/cloak_email.html
Normal 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 */ -}}
|
||||
8
themes/airspace-hugo/layouts/shortcodes/codepen.html
Normal file
8
themes/airspace-hugo/layouts/shortcodes/codepen.html
Normal 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"
|
||||
-->
|
||||
12
themes/airspace-hugo/layouts/shortcodes/collapse.html
Normal file
12
themes/airspace-hugo/layouts/shortcodes/collapse.html
Normal 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>
|
||||
9
themes/airspace-hugo/layouts/shortcodes/date_l10n.html
Normal file
9
themes/airspace-hugo/layouts/shortcodes/date_l10n.html
Normal 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 */ -}}
|
||||
116
themes/airspace-hugo/layouts/shortcodes/image.html
Normal file
116
themes/airspace-hugo/layouts/shortcodes/image.html
Normal 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 -->
|
||||
3
themes/airspace-hugo/layouts/shortcodes/tab.html
Normal file
3
themes/airspace-hugo/layouts/shortcodes/tab.html
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<div class="tab-pane" title="{{ .Get 0 }}">
|
||||
{{ .Inner | markdownify}}
|
||||
</div>
|
||||
4
themes/airspace-hugo/layouts/shortcodes/tabs.html
Normal file
4
themes/airspace-hugo/layouts/shortcodes/tabs.html
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<div class="code-tabs">
|
||||
<ul class="nav nav-tabs"></ul>
|
||||
<div class="tab-content">{{ .Inner }}</div>
|
||||
</div>
|
||||
Loading…
Add table
Add a link
Reference in a new issue