Standardize file indentation

This commit is contained in:
nemunaire 2026-05-17 18:04:50 +08:00
commit bad7e8e689
14 changed files with 734 additions and 492 deletions

View file

@ -1,6 +1,6 @@
<nav aria-label="breadcrumb" style="background-color: #e9ecef">
<ol class="breadcrumb container">
<li class="breadcrumb-item"><a href="../">{{ i18n "home" }}</a></li>
<li class="breadcrumb-item active" aria-current="page">{{ .Title }}</li>
</ol>
<ol class="breadcrumb container">
<li class="breadcrumb-item"><a href="../">{{ i18n "home" }}</a></li>
<li class="breadcrumb-item active" aria-current="page">{{ .Title }}</li>
</ol>
</nav>

View file

@ -1,14 +1,24 @@
{{ if isset .Site.Params "carousel" }}
{{ if gt (len .Site.Params.carousel) 0 }}
<section id="screenshots" class="carousel text-light p-4 pt-5 d-flex flex-nowrap align-items-center" style="gap: 1em 1em; overflow-x: scroll">
{{ range sort .Site.Params.carousel "weight" }}
<figure class="my-5 mr-5 text-center" style="min-width: 65vw">
<a href="{{ .image }}">
<img class="rounded img-thumbnail" src="{{ .image }}" alt="{{ .title }}" loading="lazy" style="max-height: 80vh;">
</a>
<figcaption class="mt-2 text-center">{{ .description | markdownify }}</figcaption>
</figure>
{{ end }}
{{ if isset .Site.Params "carousel" }} {{ if gt (len .Site.Params.carousel) 0 }}
<section
id="screenshots"
class="carousel text-light p-4 pt-5 d-flex flex-nowrap align-items-center"
style="gap: 1em 1em; overflow-x: scroll"
>
{{ range sort .Site.Params.carousel "weight" }}
<figure class="my-5 mr-5 text-center" style="min-width: 65vw">
<a href="{{ .image }}">
<img
class="rounded img-thumbnail"
src="{{ .image }}"
alt="{{ .title }}"
loading="lazy"
style="max-height: 80vh"
/>
</a>
<figcaption class="mt-2 text-center">
{{ .description | markdownify }}
</figcaption>
</figure>
{{ end }}
</section>
{{ end }}
{{ end }}
{{ end }} {{ end }}

View file

@ -1,56 +1,40 @@
<div class="container mt-5 mb-4 pb-5" id="community" style="gap: 2em 0;">
<div class="d-flex flex-wrap">
<div class="py-4 px-5">
<h3 class="display-4 text-center mb-5">
🙌 <br>{{ i18n "community-contribute" }}
</h3>
<div class="container mt-5 mb-4 pb-5" id="community" style="gap: 2em 0">
<div class="d-flex flex-wrap">
<div class="py-4 px-5">
<h3 class="display-4 text-center mb-5">
🙌 <br />{{ i18n "community-contribute" }}
</h3>
<h4>
🧰
{{ i18n "community-bugs" }}
</h4>
<p class="mb-4 text-justify">
{{ i18n "community-bugs-text" | markdownify }}
</p>
<h4>🧰 {{ i18n "community-bugs" }}</h4>
<p class="mb-4 text-justify">
{{ i18n "community-bugs-text" | markdownify }}
</p>
<h4>
🧳
{{ i18n "community-translation" }}
</h4>
<p class="mb-4 text-justify">
{{ i18n "community-translation-text" | markdownify }}
</p>
<h4>🧳 {{ i18n "community-translation" }}</h4>
<p class="mb-4 text-justify">
{{ i18n "community-translation-text" | markdownify }}
</p>
<h4>
💻
{{ i18n "community-code" }}
</h4>
<p class="mb-4 text-justify">
{{ i18n "community-code-text" | markdownify }}
</p>
<h4>💻 {{ i18n "community-code" }}</h4>
<p class="mb-4 text-justify">
{{ i18n "community-code-text" | markdownify }}
</p>
</div>
<div class="py-4 px-5">
<h3 class="display-4 text-center mb-5">
✉️ <br />{{ i18n "community-discuss" }}
</h3>
<h4>💬 {{ i18n "community-chat" }}</h4>
<p class="mb-4 text-justify">
{{ i18n "community-chat-text" | markdownify }}
</p>
<h4>✍🏼 {{ i18n "community-contact" }}</h4>
<p class="mb-4 text-justify">
{{ i18n "community-contact-text" | markdownify }}
</p>
</div>
</div>
<div class="py-4 px-5">
<h3 class="display-4 text-center mb-5">
✉️ <br>{{ i18n "community-discuss" }}
</h3>
<h4>
💬
{{ i18n "community-chat" }}
</h4>
<p class="mb-4 text-justify">
{{ i18n "community-chat-text" | markdownify }}
</p>
<h4>
✍🏼
{{ i18n "community-contact" }}
</h4>
<p class="mb-4 text-justify">
{{ i18n "community-contact-text" | markdownify }}
</p>
</div>
</div>
</div>

View file

@ -1,14 +1,24 @@
<!-- Call to Action Section -->
<section id="cta">
<div class="container">
<div class="cta-content">
<h2 class="display-5 font-weight-bold mb-4">{{ i18n "cta-account-title" }}</h2>
<div class="row mb-4">
<p class="offset-sm-1 col-sm-10 offset-md-2 col-md-8 lead text-light">
{{ i18n "cta-account-text" }}
</p>
</div>
<a href="/register" class="btn btn-lg btn-light px-4" style="border-radius: 2em" data-umami-event="cta-join">{{ i18n "cta-account-button" }}</a>
<div class="container">
<div class="cta-content">
<h2 class="display-5 font-weight-bold mb-4">
{{ i18n "cta-account-title" }}
</h2>
<div class="row mb-4">
<p
class="offset-sm-1 col-sm-10 offset-md-2 col-md-8 lead text-light"
>
{{ i18n "cta-account-text" }}
</p>
</div>
<a
href="/register"
class="btn btn-lg btn-light px-4"
style="border-radius: 2em"
data-umami-event="cta-join"
>{{ i18n "cta-account-button" }}</a
>
</div>
</div>
</div>
</section>

View file

@ -1,34 +1,61 @@
<div class="bg-light">
<div class="container pb-5">
<div class="card bg-secondary text-light" style="border-radius: 1rem; box-shadow: 3px 3px 5px #999">
<div class="card-body p-5">
<div class="row">
<div class="col-lg-7 d-flex flex-column justify-content-center">
<h2 class="font-weight-bold">
{{ i18n "cta-newsletter-title" }}
</h2>
<p class="lead mb-0">
{{ i18n "cta-newsletter-text" }}
</p>
</div>
<form
class="offset-xl-1 col-xl-4 col-lg-5 d-flex flex-column justify-content-center"
method="post"
action="https://lists.happydomain.org/subscription/form"
>
<input type="hidden" name="nonce" />
<input type="hidden" name="l" value="b3297dce-4f02-42a5-9918-54499804323e" />
<input type="hidden" name="lang" value="{{ site.LanguageCode }}" />
<input type="email" name="email" required placeholder="j.postel@isi.edu" class="form-control my-3">
<div class="my-2 mx-auto h-captcha" data-sitekey="12a1e811-7f34-44ca-9e7c-fb1e9ade6b00"></div>
<button type="submit" class="btn btn-lg btn-primary py-2" data-umami-event="cta-newsletter-join">
{{ i18n "cta-newsletter-button1" }}
</button>
<small class="form-text text-justify my-2">
{{ i18n "cta-newsletter-no-spam" }}
</small>
</form>
<div class="container pb-5">
<div
class="card bg-secondary text-light"
style="border-radius: 1rem; box-shadow: 3px 3px 5px #999"
>
<div class="card-body p-5">
<div class="row">
<div
class="col-lg-7 d-flex flex-column justify-content-center"
>
<h2 class="font-weight-bold">
{{ i18n "cta-newsletter-title" }}
</h2>
<p class="lead mb-0">
{{ i18n "cta-newsletter-text" }}
</p>
</div>
<form
class="offset-xl-1 col-xl-4 col-lg-5 d-flex flex-column justify-content-center"
method="post"
action="https://lists.happydomain.org/subscription/form"
>
<input type="hidden" name="nonce" />
<input
type="hidden"
name="l"
value="b3297dce-4f02-42a5-9918-54499804323e"
/>
<input
type="hidden"
name="lang"
value="{{ site.LanguageCode }}"
/>
<input
type="email"
name="email"
required
placeholder="j.postel@isi.edu"
class="form-control my-3"
/>
<div
class="my-2 mx-auto h-captcha"
data-sitekey="12a1e811-7f34-44ca-9e7c-fb1e9ade6b00"
></div>
<button
type="submit"
class="btn btn-lg btn-primary py-2"
data-umami-event="cta-newsletter-join"
>
{{ i18n "cta-newsletter-button1" }}
</button>
<small class="form-text text-justify my-2">
{{ i18n "cta-newsletter-no-spam" }}
</small>
</form>
</div>
</div>
</div>
</div>
</div>
</div>

View file

@ -1,68 +1,68 @@
<section id="discover" class="py-5" style="background: linear-gradient(to right, var(--secondary-ultralight) 0%, white 100%)">
<div class="container">
<div class="section-title text-center mb-5">
<h2 class="mb-3 display-4">
{{ i18n "discover-title" }}
</h2>
<div class="row">
<p class="offset-sm-1 col-sm-10 offset-md-2 col-md-8 text-muted" style="font-size: 1.15rem;">
{{ i18n "discover-lead" }}
</p>
</div>
</div>
<div class="container">
<div class="section-title text-center mb-5">
<h2 class="mb-3 display-4">
{{ i18n "discover-title" }}
</h2>
<div class="row">
<p class="offset-sm-1 col-sm-10 offset-md-2 col-md-8 text-muted" style="font-size: 1.15rem;">
{{ i18n "discover-lead" }}
</p>
</div>
</div>
<div class="steps">
<div class="step">
<div class="step-number">1</div>
<h3>{{ i18n "discover-1-title" }}</h3>
<p>{{ i18n "discover-1-text" }}</p>
</div>
<div class="step">
<div class="step-number">2</div>
<h3>{{ i18n "discover-2-title" }}</h3>
<p>{{ i18n "discover-2-text" }}</p>
</div>
<div class="step">
<div class="step-number">3</div>
<h3>{{ i18n "discover-3-title" }}</h3>
<p>{{ i18n "discover-3-text" }}</p>
</div>
</div>
<div class="steps">
<div class="step">
<div class="step-number">1</div>
<h3>{{ i18n "discover-1-title" }}</h3>
<p>{{ i18n "discover-1-text" }}</p>
</div>
<div class="step">
<div class="step-number">2</div>
<h3>{{ i18n "discover-2-title" }}</h3>
<p>{{ i18n "discover-2-text" }}</p>
</div>
<div class="step">
<div class="step-number">3</div>
<h3>{{ i18n "discover-3-title" }}</h3>
<p>{{ i18n "discover-3-text" }}</p>
</div>
</div>
<h3 class="text-center my-5">
{{ i18n "learnhow" }} happy<strong>Domain</strong> {{ i18n "canhelpyou" }}
</h3>
<div class="row row-cols-2 row-cols-sm-3 row-cols-md-4 row-cols-lg-5 justify-content-center">
<div class="col mb-4">
<a href="{{ ref . "/use-happyDomain/freelance" }}" class="card h-100" data-umami-event="learnmore-freelance">
<img src="/img/screenshots/users/freelance.webp" alt="{{ i18n "freelance" }}" class="img-top flex-grow-1">
<h3 class="text-center mt-1">{{ i18n "freelance" }}</h3>
</a>
</div>
<div class="col mb-4">
<a href="{{ ref . "/use-happyDomain/sysadmin" }}" class="card h-100" data-umami-event="learnmore-sysadmin">
<img src="/img/screenshots/users/sysadmin.webp" alt="{{ i18n "sysadmin" }}" class="img-top flex-grow-1">
<h3 class="text-center mt-1">{{ i18n "sysadmin" }}</h3>
</a>
</div>
<div class="col mb-4">
<a href="{{ ref . "/use-happyDomain/devops" }}" class="card h-100" data-umami-event="learnmore-devops">
<img src="/img/screenshots/users/devops.webp" alt="{{ i18n "devops" }}" class="img-top flex-grow-1">
<h3 class="text-center mt-1">{{ i18n "devops" }}</h3>
</a>
</div>
<div class="col mb-4">
<a href="{{ ref . "/use-happyDomain/cio" }}" class="card h-100" data-umami-event="learnmore-cio">
<img src="/img/screenshots/users/cio.webp" alt="{{ i18n "cio" }}" class="img-top flex-grow-1">
<h3 class="text-center mt-1">{{ i18n "cio" }}</h3>
</a>
</div>
<div class="col mb-4">
<a href="{{ ref . "/use-happyDomain/geek" }}" class="card h-100" data-umami-event="learnmore-geek">
<img src="/img/screenshots/users/geek.webp" alt="{{ i18n "geek" }}" class="img-top flex-grow-1">
<h3 class="text-center mt-1">{{ i18n "geek" }}</h3>
</a>
</div>
<h3 class="text-center my-5">
{{ i18n "learnhow" }} happy<strong>Domain</strong> {{ i18n "canhelpyou" }}
</h3>
<div class="row row-cols-2 row-cols-sm-3 row-cols-md-4 row-cols-lg-5 justify-content-center">
<div class="col mb-4">
<a href="{{ ref . "/use-happyDomain/freelance" }}" class="card h-100" data-umami-event="learnmore-freelance">
<img src="/img/screenshots/users/freelance.webp" alt="{{ i18n "freelance" }}" class="img-top flex-grow-1">
<h3 class="text-center mt-1">{{ i18n "freelance" }}</h3>
</a>
</div>
<div class="col mb-4">
<a href="{{ ref . "/use-happyDomain/sysadmin" }}" class="card h-100" data-umami-event="learnmore-sysadmin">
<img src="/img/screenshots/users/sysadmin.webp" alt="{{ i18n "sysadmin" }}" class="img-top flex-grow-1">
<h3 class="text-center mt-1">{{ i18n "sysadmin" }}</h3>
</a>
</div>
<div class="col mb-4">
<a href="{{ ref . "/use-happyDomain/devops" }}" class="card h-100" data-umami-event="learnmore-devops">
<img src="/img/screenshots/users/devops.webp" alt="{{ i18n "devops" }}" class="img-top flex-grow-1">
<h3 class="text-center mt-1">{{ i18n "devops" }}</h3>
</a>
</div>
<div class="col mb-4">
<a href="{{ ref . "/use-happyDomain/cio" }}" class="card h-100" data-umami-event="learnmore-cio">
<img src="/img/screenshots/users/cio.webp" alt="{{ i18n "cio" }}" class="img-top flex-grow-1">
<h3 class="text-center mt-1">{{ i18n "cio" }}</h3>
</a>
</div>
<div class="col mb-4">
<a href="{{ ref . "/use-happyDomain/geek" }}" class="card h-100" data-umami-event="learnmore-geek">
<img src="/img/screenshots/users/geek.webp" alt="{{ i18n "geek" }}" class="img-top flex-grow-1">
<h3 class="text-center mt-1">{{ i18n "geek" }}</h3>
</a>
</div>
</div>
</div>
</div>
</section>

View file

@ -1,43 +1,68 @@
<div id="downloads" class="py-5" style="scroll-margin-top: 2em;">
<div class="container">
<div class="row">
<div class="col-3 d-none d-md-flex flex-column justify-content-center">
<img src="/img/screenshots/users/download.webp" alt="Download section" id="download-house" class="position-relative">
</div>
<div class="col">
<h3 class="font-weight-bolder">
{{ i18n "downloads-title" }}
<span class="text-muted">
{{ i18n "downloads-subtitle" }}
</span>
</h3>
<div class="row row-cols-1 row-cols-sm-3 my-4 align-items-center">
<div id="downloads" class="py-5" style="scroll-margin-top: 2em">
<div class="container">
<div class="row">
<div
class="col-3 d-none d-md-flex flex-column justify-content-center"
>
<img
src="/img/screenshots/users/download.webp"
alt="Download section"
id="download-house"
class="position-relative"
/>
</div>
<div class="col">
<h3 class="font-weight-bolder">
{{ i18n "downloads-title" }}
<span class="text-muted">
{{ i18n "downloads-subtitle" }}
</span>
</h3>
<div
class="row row-cols-1 row-cols-sm-3 my-4 align-items-center"
>
<div class="col text-center my-2">
<a
href="https://hub.docker.com/r/happydomain/happydomain/"
class="h-100 btn btn-lg btn-success"
target="_blank"
rel="noopener"
data-umami-event="download-docker"
>
<i class="bi bi-box"></i>
{{ i18n "downloads-docker" }}
</a>
</div>
<div class="col text-center my-2">
<a href="https://hub.docker.com/r/happydomain/happydomain/" class="h-100 btn btn-lg btn-success" target="_blank" rel="noopener" data-umami-event="download-docker">
<i class="bi bi-box"></i>
{{ i18n "downloads-docker" }}
</a>
</div>
<div class="col text-center my-2">
<a
href="https://get.happydomain.org/master/"
class="h-100 btn btn-lg btn-success"
target="_blank"
rel="noopener"
data-umami-event="download-binaries"
>
<i class="bi bi-download"></i>
{{ i18n "downloads-binaries" }}
</a>
</div>
<div class="col text-center my-2">
<a href="https://get.happydomain.org/master/" class="h-100 btn btn-lg btn-success" target="_blank" rel="noopener" data-umami-event="download-binaries">
<i class="bi bi-download"></i>
{{ i18n "downloads-binaries" }}
</a>
</div>
<div class="col text-center my-2">
<a href="https://git.happydomain.org/" class="h-100 btn btn-lg btn-success" target="_blank" rel="noopener" data-umami-event="download-sources">
<i class="bi bi-git"></i>
{{ i18n "downloads-source" }}
</a>
</div>
<div class="col text-center my-2">
<a
href="https://git.happydomain.org/"
class="h-100 btn btn-lg btn-success"
target="_blank"
rel="noopener"
data-umami-event="download-sources"
>
<i class="bi bi-git"></i>
{{ i18n "downloads-source" }}
</a>
</div>
</div>
{{ i18n "downloads-text" | markdownify }}
</div>
</div>
{{ i18n "downloads-text" | markdownify }}
</div>
</div>
</div>
</div>

View file

@ -1,56 +1,90 @@
<section id="features" class="bg-light" style="scroll-margin-top: 2em;">
<div class="container py-4">
<div class="section-title text-center mt-5 mb-5">
<h2 class="mb-3 display-4">
{{ i18n "features-title" }}
</h2>
<div class="row">
<p class="offset-sm-1 col-sm-10 offset-md-2 col-md-8 text-muted" style="font-size: 1.15rem;">
{{ i18n "features-lead" }}
</p>
</div>
</div>
<div class="alert alert-warning my-5 d-flex">
<div class="display-2">🏗️</div>
<div class="ml-2 flex-fill">
<p class="lead">
{{ i18n "features-wip-lead" }}
</p>
<p>
{{ i18n "features-wip-p1-start" }}
<strong>{{ i18n "features-wip-p1-strong" }} <a href="https://github.com/happyDomain/happydomain/" target="_blank" rel="noopener" data-umami-event="goto-issue">{{ i18n "features-wip-p1-link" }}</a>.</strong> {{ i18n "features-wip-p1-end" }}
</p>
<p>
<a href="https://feedback.happydomain.org" target="_blank" rel="noopener" data-umami-event="goto-feedback">{{ i18n "features-wip-p2-feedback" }}</a> {{ i18n "features-wip-p2-start" }} <u>{{ i18n "features-wip-p2-emph" }}</u>{{ i18n "features-wip-p2-end" }}
</p>
</div>
</div>
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3">
{{ range $index, $element := $.Site.Data.features.features }}
{{ if index .title $.Language.Lang }}
<div class="col mb-5">
<div class="h-100 card" id="feature-{{ .id }}">
{{ if and .img .img.src }}
<img src="{{ .img.src }}" class="card-img-top" alt="{{ index .img.alt $.Language.Lang }}">
{{ end }}
<div class="card-body align-items-center">
<div class="d-flex flex-column justify-content-center">
<h4 class="card-title font-weight-bolder">{{ index .title $.Language.Lang }}</h4>
<p class="card-text text-justify">{{ index .content $.Language.Lang }}</p>
{{ if and .link .link.link }}
<a href="{{ .link.link }}" class="card-link" data-umami-event="features-{{ .id }}">{{ index .link $.Language.Lang }}</a>
{{ end }}
{{ if and .link2 .link2.link }}
<br><a href="{{ .link2.link }}" class="card-link mt-2" data-umami-event="features-{{ .id }}-2">{{ index .link2 $.Language.Lang }}</a>
{{ end }}
</div>
</div>
<section id="features" class="bg-light" style="scroll-margin-top: 2em">
<div class="container py-4">
<div class="section-title text-center mt-5 mb-5">
<h2 class="mb-3 display-4">{{ i18n "features-title" }}</h2>
<div class="row">
<p
class="offset-sm-1 col-sm-10 offset-md-2 col-md-8 text-muted"
style="font-size: 1.15rem"
>
{{ i18n "features-lead" }}
</p>
</div>
</div>
{{ end }}
{{ end }}
</div>
<div class="alert alert-warning my-5 d-flex">
<div class="display-2">🏗️</div>
<div class="ml-2 flex-fill">
<p class="lead">{{ i18n "features-wip-lead" }}</p>
<p>
{{ i18n "features-wip-p1-start" }}
<strong
>{{ i18n "features-wip-p1-strong" }}
<a
href="https://github.com/happyDomain/happydomain/"
target="_blank"
rel="noopener"
data-umami-event="goto-issue"
>{{ i18n "features-wip-p1-link" }}</a
>.</strong
>
{{ i18n "features-wip-p1-end" }}
</p>
<p>
<a
href="https://feedback.happydomain.org"
target="_blank"
rel="noopener"
data-umami-event="goto-feedback"
>{{ i18n "features-wip-p2-feedback" }}</a
>
{{ i18n "features-wip-p2-start" }}
<u>{{ i18n "features-wip-p2-emph" }}</u>{{ i18n
"features-wip-p2-end" }}
</p>
</div>
</div>
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3">
{{ range $index, $element := $.Site.Data.features.features }} {{ if
index .title $.Language.Lang }}
<div class="col mb-5">
<div class="h-100 card" id="feature-{{ .id }}">
{{ if and .img .img.src }}
<img
src="{{ .img.src }}"
class="card-img-top"
alt="{{ index .img.alt $.Language.Lang }}"
/>
{{ end }}
<div class="card-body align-items-center">
<div class="d-flex flex-column justify-content-center">
<h4 class="card-title font-weight-bolder">
{{ index .title $.Language.Lang }}
</h4>
<p class="card-text text-justify">
{{ index .content $.Language.Lang }}
</p>
{{ if and .link .link.link }}
<a
href="{{ .link.link }}"
class="card-link"
data-umami-event="features-{{ .id }}"
>{{ index .link $.Language.Lang }}</a
>
{{ end }} {{ if and .link2 .link2.link }}
<br /><a
href="{{ .link2.link }}"
class="card-link mt-2"
data-umami-event="features-{{ .id }}-2"
>{{ index .link2 $.Language.Lang }}</a
>
{{ end }}
</div>
</div>
</div>
</div>
{{ end }} {{ end }}
</div>
</div>
</div>
</section>

View file

@ -1,140 +1,140 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta name="robots" content="all,follow">
<meta name="googlebot" content="index,follow,snippet,archive">
<title>{{ .Title }}</title>
<meta name="author" content="{{ .Site.Params.author.name }}" />
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta name="robots" content="all,follow">
<meta name="googlebot" content="index,follow,snippet,archive">
<title>{{ .Title }}</title>
<meta name="author" content="{{ .Site.Params.author.name }}" />
{{ if .Keywords }}
<meta name="keywords" content="{{ delimit .Keywords ", " }}">
{{ else if .Site.Params.DefaultKeywords }}
<meta name="keywords" content="{{ delimit .Site.Params.DefaultKeywords ", " }}">
{{ end }}
{{ if .Keywords }}
<meta name="keywords" content="{{ delimit .Keywords ", " }}">
{{ else if .Site.Params.DefaultKeywords }}
<meta name="keywords" content="{{ delimit .Site.Params.DefaultKeywords ", " }}">
{{ end }}
{{ if .Description }}
<meta name="description" content="{{ .Description }}">
{{ else if .Site.Params.DefaultDescription }}
<meta name="description" content="{{ .Site.Params.DefaultDescription }}">
{{ end }}
{{ if .Description }}
<meta name="description" content="{{ .Description }}">
{{ else if .Site.Params.DefaultDescription }}
<meta name="description" content="{{ .Site.Params.DefaultDescription }}">
{{ end }}
{{- $title := .Title | default "happyDomain" }}
{{- $description := .Description | default .Site.Params.DefaultDescription }}
{{- $image := .Params.og_image | default (printf "%simg/og.webp" .Site.BaseURL) }}
{{- $pageURL := .Permalink | default .Site.BaseURL }}
{{- $title := .Title | default "happyDomain" }}
{{- $description := .Description | default .Site.Params.DefaultDescription }}
{{- $image := .Params.og_image | default (printf "%simg/og.webp" .Site.BaseURL) }}
{{- $pageURL := .Permalink | default .Site.BaseURL }}
<!-- Canonical URL -->
<link rel="canonical" href="{{ $pageURL }}">
<!-- Canonical URL -->
<link rel="canonical" href="{{ $pageURL }}">
<!-- Facebook Meta Tags -->
<meta property="og:url" content="{{ $pageURL }}">
<meta property="og:type" content="{{ if .IsHome }}website{{ else }}article{{ end }}">
<meta property="og:title" content="{{ $title }}">
<meta property="og:description" content="{{ $description }}">
<meta property="og:image" content="{{ $image }}">
<meta property="og:locale" content="{{ .Lang }}">
{{ range .Translations }}
<meta property="og:locale:alternate" content="{{ .Lang }}">
{{ end }}
<!-- Facebook Meta Tags -->
<meta property="og:url" content="{{ $pageURL }}">
<meta property="og:type" content="{{ if .IsHome }}website{{ else }}article{{ end }}">
<meta property="og:title" content="{{ $title }}">
<meta property="og:description" content="{{ $description }}">
<meta property="og:image" content="{{ $image }}">
<meta property="og:locale" content="{{ .Lang }}">
{{ range .Translations }}
<meta property="og:locale:alternate" content="{{ .Lang }}">
{{ end }}
<!-- Twitter Meta Tags -->
<meta name="twitter:card" content="summary_large_image">
<meta property="twitter:domain" content="happydomain.org">
<meta property="twitter:url" content="{{ $pageURL }}">
<meta name="twitter:title" content="{{ $title }}">
<meta name="twitter:description" content="{{ $description }}">
<meta name="twitter:image" content="{{ $image }}">
<!-- Twitter Meta Tags -->
<meta name="twitter:card" content="summary_large_image">
<meta property="twitter:domain" content="happydomain.org">
<meta property="twitter:url" content="{{ $pageURL }}">
<meta name="twitter:title" content="{{ $title }}">
<meta name="twitter:description" content="{{ $description }}">
<meta name="twitter:image" content="{{ $image }}">
<!-- Mastodon proof -->
<link rel="me" href="https://floss.social/@happyDomain">
<!-- Mastodon proof -->
<link rel="me" href="https://floss.social/@happyDomain">
<link rel="stylesheet" href="/css/bootstrap.min.css">
<link rel="stylesheet" href="/icons/font/bootstrap-icons.min.css">
<link rel="stylesheet" href="/css/bootstrap.min.css">
<link rel="stylesheet" href="/icons/font/bootstrap-icons.min.css">
<!-- Theme stylesheet, if possible do not edit this stylesheet -->
{{ if and (isset .Site.Params "style") .Site.Params.style }}
<!-- Theme stylesheet, if possible do not edit this stylesheet -->
{{ if and (isset .Site.Params "style") .Site.Params.style }}
<link href="{{ .Site.BaseURL }}css/style.{{ .Site.Params.style }}.css" rel="stylesheet" id="theme-stylesheet">
{{ else }}
{{ else }}
<link href="{{ .Site.BaseURL }}css/style.default.css" rel="stylesheet" id="theme-stylesheet">
{{ end }}
{{ end }}
<!-- Custom stylesheet - for your changes -->
<link href="{{ .Site.BaseURL }}css/custom.css" rel="stylesheet">
<!-- Custom stylesheet - for your changes -->
<link href="{{ .Site.BaseURL }}css/custom.css" rel="stylesheet">
<!-- Responsivity for older IE -->
{{ `
<!-- Responsivity for older IE -->
{{ `
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
` | safeHTML }}
` | safeHTML }}
<!-- Favicon and apple touch icons-->
<link rel="shortcut icon" href="{{ .Site.BaseURL }}img/favicon.ico" type="image/x-icon" />
<link rel="apple-touch-icon" href="{{ .Site.BaseURL }}img/apple-touch-icon.png" />
<!-- Favicon and apple touch icons-->
<link rel="shortcut icon" href="{{ .Site.BaseURL }}img/favicon.ico" type="image/x-icon" />
<link rel="apple-touch-icon" href="{{ .Site.BaseURL }}img/apple-touch-icon.png" />
<link rel="alternate" href="{{ "/index.xml" | absURL }}" type="application/rss+xml" title="{{ .Site.Title }}">
<link rel="alternate" href="{{ "/index.xml" | absURL }}" type="application/rss+xml" title="{{ .Site.Title }}">
<!-- Structured Data (JSON-LD) -->
{{ if .IsHome }}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "{{ .Site.BaseURL }}#organization",
"name": "happyDomain",
"url": "{{ .Site.BaseURL }}",
"logo": {
"@type": "ImageObject",
"url": "{{ .Site.BaseURL }}img/happydomain.png"
},
"sameAs": [
"https://floss.social/@happyDomain",
"https://github.com/happyDomain/happydomain",
"https://framagit.org/happyDomain/happydomain"
]
},
{
"@type": "WebSite",
"@id": "{{ .Site.BaseURL }}#website",
"name": "happyDomain",
"url": "{{ .Site.BaseURL }}",
"description": "{{ $description }}",
"inLanguage": ["en", "fr"],
"publisher": {
"@id": "{{ .Site.BaseURL }}#organization"
<!-- Structured Data (JSON-LD) -->
{{ if .IsHome }}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "{{ .Site.BaseURL }}#organization",
"name": "happyDomain",
"url": "{{ .Site.BaseURL }}",
"logo": {
"@type": "ImageObject",
"url": "{{ .Site.BaseURL }}img/happydomain.png"
},
"sameAs": [
"https://floss.social/@happyDomain",
"https://github.com/happyDomain/happydomain",
"https://framagit.org/happyDomain/happydomain"
]
},
{
"@type": "WebSite",
"@id": "{{ .Site.BaseURL }}#website",
"name": "happyDomain",
"url": "{{ .Site.BaseURL }}",
"description": "{{ $description }}",
"inLanguage": ["en", "fr"],
"publisher": {
"@id": "{{ .Site.BaseURL }}#organization"
}
},
{
"@type": "SoftwareApplication",
"@id": "{{ .Site.BaseURL }}#software",
"name": "happyDomain",
"url": "{{ .Site.BaseURL }}",
"description": "{{ $description }}",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Linux, Windows, macOS, Docker",
"license": "https://www.gnu.org/licenses/agpl-3.0.html",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"screenshot": "{{ .Site.BaseURL }}img/og.webp",
"softwareHelp": {
"@type": "WebPage",
"url": "https://help.happydomain.org/"
},
"author": {
"@id": "{{ .Site.BaseURL }}#organization"
}
}
]
}
},
{
"@type": "SoftwareApplication",
"@id": "{{ .Site.BaseURL }}#software",
"name": "happyDomain",
"url": "{{ .Site.BaseURL }}",
"description": "{{ $description }}",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Linux, Windows, macOS, Docker",
"license": "https://www.gnu.org/licenses/agpl-3.0.html",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"screenshot": "{{ .Site.BaseURL }}img/og.webp",
"softwareHelp": {
"@type": "WebPage",
"url": "https://help.happydomain.org/"
},
"author": {
"@id": "{{ .Site.BaseURL }}#organization"
}
}
]
}
</script>
{{ end }}
</script>
{{ end }}
<script async defer data-website-id="a10b2ee8-ed13-4acb-a017-0b9a661f31c3" src="https://pythagore.p0m.fr/pythagore.js"></script>
<script async defer data-website-id="a10b2ee8-ed13-4acb-a017-0b9a661f31c3" src="https://pythagore.p0m.fr/pythagore.js"></script>
</head>

View file

@ -1,31 +1,74 @@
<section class="jumbotron mt-n1 mb-0" style="background: linear-gradient(135deg, var(--primary-ultralight) 0%, white 100%)">
<div class="container-fluid">
<div class="row">
<div class="col-md-3 d-flex flex-column mb-5 align-items-center">
<img src="/img/screenshots/happydomain-rounded.webp" alt="happyDomain logo" style="width: 100%; max-width: 40vw">
</div>
<div class="col">
<section
class="jumbotron mt-n1 mb-0"
style="
background: linear-gradient(
135deg,
var(--primary-ultralight) 0%,
white 100%
);
"
>
<div class="container-fluid">
<div class="row">
<div class="col col-sm-8 offset-sm-2 col-md-10 offset-md-1 col-xl-8 offset-xl-2">
<h2 class="display-4 text-center text-dark font-weight-bold">
{{ i18n "slogan" | safeHTML }}
</h2>
</div>
</div>
<p class="mt-5 lead text-center text-muted">
happy<strong>Domain</strong>
{{ i18n "lead" | markdownify }}
</p>
<div class="mt-5 py-2 d-none d-md-flex justify-content-center">
<a class="btn btn-lg btn-primary px-4 mr-3" data-umami-event="jumbo-tryit" href="{{ .Site.Params.tryit }}?lang={{ .Language }}" style="border-radius: 2em">{{ i18n "tryit" }} &#187;</a>
<a class="btn btn-lg btn-outline-secondary px-4 ml-3" data-umami-event="jumbo-downloads" href="#downloads" style="border-radius: 2em">{{ i18n "downloadit" }}</a>
</div>
<div class="container mt-5 py-2 d-flex d-md-none flex-column justify-content-center">
<a class="btn btn-lg btn-primary px-4 mb-3" data-umami-event="jumbo-tryit" href="{{ .Site.Params.tryit }}?lang={{ .Language }}" style="border-radius: 2em">{{ i18n "tryit" }} &#187;</a>
<a class="btn btn-lg btn-outline-secondary px-4" data-umami-event="jumbo-downloads" href="#downloads" style="border-radius: 2em">{{ i18n "downloadit" }}</a>
</div>
<div class="col-md-3 d-flex flex-column mb-5 align-items-center">
<img
src="/img/screenshots/happydomain-rounded.webp"
alt="happyDomain logo"
style="width: 100%; max-width: 40vw"
/>
</div>
<div class="col">
<div class="row">
<div
class="col col-sm-8 offset-sm-2 col-md-10 offset-md-1 col-xl-8 offset-xl-2"
>
<h2
class="display-4 text-center text-dark font-weight-bold"
>
{{ i18n "slogan" | safeHTML }}
</h2>
</div>
</div>
<p class="mt-5 lead text-center text-muted">
happy<strong>Domain</strong>
{{ i18n "lead" | markdownify }}
</p>
<div class="mt-5 py-2 d-none d-md-flex justify-content-center">
<a
class="btn btn-lg btn-primary px-4 mr-3"
data-umami-event="jumbo-tryit"
href="{{ .Site.Params.tryit }}?lang={{ .Language }}"
style="border-radius: 2em"
>{{ i18n "tryit" }} &#187;</a
>
<a
class="btn btn-lg btn-outline-secondary px-4 ml-3"
data-umami-event="jumbo-downloads"
href="#downloads"
style="border-radius: 2em"
>{{ i18n "downloadit" }}</a
>
</div>
<div
class="container mt-5 py-2 d-flex d-md-none flex-column justify-content-center"
>
<a
class="btn btn-lg btn-primary px-4 mb-3"
data-umami-event="jumbo-tryit"
href="{{ .Site.Params.tryit }}?lang={{ .Language }}"
style="border-radius: 2em"
>{{ i18n "tryit" }} &#187;</a
>
<a
class="btn btn-lg btn-outline-secondary px-4"
data-umami-event="jumbo-downloads"
href="#downloads"
style="border-radius: 2em"
>{{ i18n "downloadit" }}</a
>
</div>
<!--div class="mt-5 card bg-secondary text-light flex-row align-items-center" style="border-radius: .3rem">
<!--div class="mt-5 card bg-secondary text-light flex-row align-items-center" style="border-radius: .3rem">
<div class="card-body">
<h3>{{ i18n "conf-fosdem24-title" }}</h3>
<p class="card-text">
@ -36,8 +79,7 @@
</div>
<img src="/img/assets/FOSDEM24_logo.png" alt="FOSDEM 2024" style="height: 10em">
</div-->
</div>
</div>
</div>
</div>
</div>
</section>

View file

@ -1,57 +1,144 @@
<nav class="navbar navbar-expand-md sticky-top navbar-light bg-light" id="mainnav">
<div class="container">
<a class="h1 navbar-brand mb-0" href="/{{ .Site.Language.Lang }}/">
<svg version="1.1" viewBox="7 5 100 15" aria-labelledby="title" height="25">
<title>happyDomain</title>
<g fill="#000" stroke="#000" stroke-width=".4" aria-label="happy"><path d="m7.1613 5.7392h0.28939v4.2106q2.59-0.96945 3.9791-0.96945 0.77412 0 1.172 0.30386 0.709 0.53537 0.709 2.0257v4.8907h-0.28939v-4.8907q0-1.3457-0.59325-1.7942-0.36174-0.27492-1.0563-0.27492-0.57878 0-1.3746 0.1881-0.88264 0.20981-2.5466 0.83199v5.9397h-0.28939z" /><path d="m21.175 12.721h-2.7781q-1.1214 0-1.6929 0.24598-0.82476 0.36174-0.82476 1.3095 0 0.79582 0.5209 1.2299 0.49196 0.41238 1.3022 0.41238h0.0217q0.83923 0 1.8231-0.60772 0.34003-0.20981 0.83923-0.57878 0.709-0.52813 0.78858-0.57878zm2.496 3.0748q-0.3762 0.44132-1.0852 0.44132-0.67283 0-1.0418-0.39068-0.36897-0.39067-0.36897-1.0635v-0.28215q-1.3674 0.99116-1.6206 1.1431-0.96222 0.56431-1.8304 0.56431h-0.0217q-0.93328 0-1.5048-0.49196-0.60772-0.52813-0.60772-1.4397 0-1.0852 0.90434-1.5265 0.65836-0.31833 1.9027-0.31833h2.7781v-1.0635q0-1.0056-0.29662-1.3529-0.67283-0.78858-2.3875-0.78858-0.78135 0-1.3963 0.29662-0.74518 0.34727-0.94051 1.0129l-0.27492-0.07958q0.22428-0.76688 1.0346-1.172 0.69453-0.34727 1.5772-0.34727 1.8449 0 2.6117 0.88987 0.3545 0.42685 0.3545 1.541v3.4148q0.0072 1.1648 1.1286 1.1648 0.57878 0 0.86817-0.34003z" /><path d="m25.27 14.935q0.98392 1.0129 2.7998 1.0129h0.0217q1.5555 0 2.3875-0.8971 0.82476-0.88264 0.82476-2.4598 0-1.3891-0.61495-2.2862-0.709-1.0346-2.0257-1.0346-1.3746 0-3.3931 0.95498zm0-5.9325v0.90434q1.9606-0.92604 3.3931-0.92604 1.4469 0 2.2355 1.1141 0.69453 0.98392 0.69453 2.496 0 1.7002-0.91157 2.6624-0.92604 0.98392-2.6117 0.98392-1.7291 0-2.7998-0.91157v4.2106h-0.28939v-10.534z" /><path d="m34.241 14.935q0.98392 1.0129 2.7998 1.0129h0.0217q1.5555 0 2.3875-0.8971 0.82476-0.88264 0.82476-2.4598 0-1.3891-0.61495-2.2862-0.709-1.0346-2.0257-1.0346-1.3746 0-3.3931 0.95498zm0-5.9325v0.90434q1.9606-0.92604 3.3931-0.92604 1.4469 0 2.2355 1.1141 0.69453 0.98392 0.69453 2.496 0 1.7002-0.91157 2.6624-0.92604 0.98392-2.6117 0.98392-1.7291 0-2.7998-0.91157v4.2106h-0.28939v-10.534z" /><path d="m49 16.627q-0.1881 1.3891-1.0707 2.1559-0.91157 0.78858-2.4092 0.78858-1.1141-0.0072-2.033-0.42685-1.0635-0.49196-1.4759-1.3963l0.26045-0.12299q0.37621 0.83199 1.3746 1.2733 0.8537 0.38344 1.8738 0.38344 1.3818 0 2.2066-0.709 0.80305-0.6873 0.97669-1.9534 0.05064-0.32556 0.05064-0.88264v-0.49196q-1.7074 0.62942-2.6551 0.83923-0.709 0.15193-1.2588 0.15193-0.80305 0-1.2444-0.3328-0.70177-0.52813-0.70177-2.0257v-4.8762h0.28215v4.8762q0 1.3529 0.59325 1.7942 0.36174 0.27492 1.0563 0.27492 0.57878 0 1.3818-0.1881 0.88264-0.20257 2.5466-0.82476v-5.9325h0.28215v6.6921q0 0.60048-0.03617 0.93328z" /></g>
<g fill="#000" aria-label="Domain"><path d="m 53.228042,15.362291 h 1.938901 q 1.960602,0 2.966225,-0.940511 0.983919,-0.911573 0.983919,-2.684074 0,-1.786971 -0.991153,-2.749186 -1.020093,-0.991154 -2.987931,-0.991154 h -1.909961 z m 1.909961,-8.949325 q 2.626196,0 4.10931,1.439706 1.47588,1.425236 1.47588,3.885034 0,2.452563 -1.49035,3.841626 -1.475878,1.367358 -4.09484,1.367358 h -3.516064 v -10.533724 z" /><path d="m 62.228011,13.125048 q 0,-1.779737 1.070734,-2.814299 1.085204,-1.056266 2.973461,-1.056266 1.888258,0.0072 2.966228,1.056266 1.077971,1.041797 1.077971,2.814299 0,1.772501 -1.077971,2.807063 -1.07797,1.049032 -2.966228,1.049032 -1.88102,0 -2.973461,-1.041797 -1.070734,-1.049031 -1.070734,-2.814298 z m 1.598866,0 q 0,1.099674 0.593246,1.671215 0.622184,0.60048 1.852083,0.60048 1.2299,0 1.84485,-0.60048 0.593246,-0.571541 0.593246,-1.671215 0,-1.10691 -0.593246,-1.685686 -0.61495,-0.593245 -1.852083,-0.60048 -1.222666,0 -1.84485,0.60048 -0.593246,0.578776 -0.593246,1.685686 z" /><path d="m 73.66607,16.957892 h -1.606103 v -7.668782 h 1.606103 v 0.83199 q 0.687297,-0.535368 1.606105,-0.72347 0.708999,-0.144694 1.273307,-0.144694 0.947746,0 1.519285,0.426847 0.470258,0.340031 0.61495,0.600481 0.904338,-0.658358 1.786972,-0.853695 0.788583,-0.173633 1.396297,-0.173633 0.954981,0 1.526521,0.419613 0.918808,0.665592 0.918808,2.315104 v 4.970239 h -1.606103 v -4.970239 q 0,-0.84646 -0.267684,-1.041797 -0.144695,-0.10852 -0.557072,-0.10852 -0.470255,0 -1.172023,0.166398 -0.998386,0.340031 -1.729091,0.933276 v 5.020882 h -1.613339 v -4.970239 q 0,-0.84646 -0.260448,-1.041797 -0.151929,-0.115755 -0.557073,-0.115755 -0.448553,0 -1.09244,0.151929 -0.759643,0.173632 -1.786972,0.824756 z" /><path d="m 91.051057,14.051772 -1.996779,-0.166398 q -0.954979,0 -1.381828,0.166398 -0.376203,0.151929 -0.376203,0.535368 0,0.368969 0.24598,0.549837 0.289388,0.23151 0.839224,0.23151 h 0.0217 q 0.62942,0 1.425236,-0.405143 0.376206,-0.224275 1.222666,-0.651123 z m 3.935677,2.286165 q -0.752409,0.593246 -1.917197,0.636654 -0.911572,0 -1.46141,-0.528133 -0.245978,-0.238745 -0.383437,-0.542603 -0.477491,0.325562 -0.745175,0.470256 -1.070737,0.578776 -2.07636,0.578776 h -0.0217 q -1.121378,0 -1.852083,-0.578776 -0.839224,-0.665593 -0.839224,-1.786971 0,-1.389063 1.266071,-1.953369 0.759645,-0.332797 2.098063,-0.332797 l 1.996779,0.311092 v -0.643888 q 0,-1.157552 -1.700157,-1.157552 -1.418,0 -2.604492,0.911572 l -0.860928,-1.215429 q 0.549836,-0.499195 1.46141,-0.918807 0.80305,-0.36897 1.794206,-0.36897 2.061887,0 2.995165,0.998389 0.520899,0.571541 0.520899,1.808675 v 3.002401 q 0.0072,0.361734 0.419613,0.434082 h 0.07958 q 0.535365,0 1.157552,-0.405144 z" /><path d="m 96.448142,6.566922 q 0.368969,0 0.636653,0.24598 0.289388,0.267684 0.289388,0.658358 0,0.390674 -0.289388,0.658358 -0.267684,0.245979 -0.636653,0.245979 -0.347266,0 -0.629418,-0.238745 -0.303858,-0.274918 -0.303858,-0.665592 0,-0.390674 0.303858,-0.672827 0.282152,-0.231511 0.629418,-0.231511 z m -0.80305,10.38903 v -7.668782 h 1.598869 v 7.668782 z" /><path d="m 100.803432,16.957892 h -1.598869 v -7.668782 h 1.598869 v 0.774113 q 0.803053,-0.477491 1.758032,-0.665593 0.752409,-0.144694 1.345655,-0.144694 0.969449,0 1.562695,0.405143 0.969446,0.672828 0.969446,2.329574 v 4.970239 h -1.6061 v -4.970239 q 0,-0.831991 -0.289388,-1.034562 -0.173632,-0.12299 -0.636653,-0.12299 -0.477491,0 -1.179256,0.151929 -0.810287,0.180867 -1.924431,0.759643 z" /></g>
</svg>
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse justify-content-between" id="navbarCollapse">
<ul class="navbar-nav">
{{ range .Site.Menus.main }}
{{ if .HasChildren }}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{ .Name }}
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
{{ range .Children }}
<a href="{{ .URL }}" class="dropdown-item">{{ .Name }}</a>
{{ end }}
</div>
{{ else }}
<li class="nav-item">
<a href="{{ .URL }}" class="nav-link">{{ .Name }}</a>
{{ end }}
</li>
{{ end }}
</ul>
<div class="d-flex">
<div class="nav-item nav-ext-links">
{{ if .Site.Params.others_links }}
{{ range .Site.Params.others_links }}
<a href="{{ .href }}" title="{{ .text }}" class="nav-icon-link {{ .class }}" data-umami-event="nav-{{ .id }}">
<i class="bi {{ .icon }}"></i>
{{ .text }}
</a>
{{ end }}
{{ end }}
<nav
class="navbar navbar-expand-md sticky-top navbar-light bg-light"
id="mainnav"
>
<div class="container">
<a class="h1 navbar-brand mb-0" href="/{{ .Site.Language.Lang }}/">
<svg
version="1.1"
viewBox="7 5 100 15"
aria-labelledby="title"
height="25"
>
<title>happyDomain</title>
<g
fill="#000"
stroke="#000"
stroke-width=".4"
aria-label="happy"
>
<path
d="m7.1613 5.7392h0.28939v4.2106q2.59-0.96945 3.9791-0.96945 0.77412 0 1.172 0.30386 0.709 0.53537 0.709 2.0257v4.8907h-0.28939v-4.8907q0-1.3457-0.59325-1.7942-0.36174-0.27492-1.0563-0.27492-0.57878 0-1.3746 0.1881-0.88264 0.20981-2.5466 0.83199v5.9397h-0.28939z"
/>
<path
d="m21.175 12.721h-2.7781q-1.1214 0-1.6929 0.24598-0.82476 0.36174-0.82476 1.3095 0 0.79582 0.5209 1.2299 0.49196 0.41238 1.3022 0.41238h0.0217q0.83923 0 1.8231-0.60772 0.34003-0.20981 0.83923-0.57878 0.709-0.52813 0.78858-0.57878zm2.496 3.0748q-0.3762 0.44132-1.0852 0.44132-0.67283 0-1.0418-0.39068-0.36897-0.39067-0.36897-1.0635v-0.28215q-1.3674 0.99116-1.6206 1.1431-0.96222 0.56431-1.8304 0.56431h-0.0217q-0.93328 0-1.5048-0.49196-0.60772-0.52813-0.60772-1.4397 0-1.0852 0.90434-1.5265 0.65836-0.31833 1.9027-0.31833h2.7781v-1.0635q0-1.0056-0.29662-1.3529-0.67283-0.78858-2.3875-0.78858-0.78135 0-1.3963 0.29662-0.74518 0.34727-0.94051 1.0129l-0.27492-0.07958q0.22428-0.76688 1.0346-1.172 0.69453-0.34727 1.5772-0.34727 1.8449 0 2.6117 0.88987 0.3545 0.42685 0.3545 1.541v3.4148q0.0072 1.1648 1.1286 1.1648 0.57878 0 0.86817-0.34003z"
/>
<path
d="m25.27 14.935q0.98392 1.0129 2.7998 1.0129h0.0217q1.5555 0 2.3875-0.8971 0.82476-0.88264 0.82476-2.4598 0-1.3891-0.61495-2.2862-0.709-1.0346-2.0257-1.0346-1.3746 0-3.3931 0.95498zm0-5.9325v0.90434q1.9606-0.92604 3.3931-0.92604 1.4469 0 2.2355 1.1141 0.69453 0.98392 0.69453 2.496 0 1.7002-0.91157 2.6624-0.92604 0.98392-2.6117 0.98392-1.7291 0-2.7998-0.91157v4.2106h-0.28939v-10.534z"
/>
<path
d="m34.241 14.935q0.98392 1.0129 2.7998 1.0129h0.0217q1.5555 0 2.3875-0.8971 0.82476-0.88264 0.82476-2.4598 0-1.3891-0.61495-2.2862-0.709-1.0346-2.0257-1.0346-1.3746 0-3.3931 0.95498zm0-5.9325v0.90434q1.9606-0.92604 3.3931-0.92604 1.4469 0 2.2355 1.1141 0.69453 0.98392 0.69453 2.496 0 1.7002-0.91157 2.6624-0.92604 0.98392-2.6117 0.98392-1.7291 0-2.7998-0.91157v4.2106h-0.28939v-10.534z"
/>
<path
d="m49 16.627q-0.1881 1.3891-1.0707 2.1559-0.91157 0.78858-2.4092 0.78858-1.1141-0.0072-2.033-0.42685-1.0635-0.49196-1.4759-1.3963l0.26045-0.12299q0.37621 0.83199 1.3746 1.2733 0.8537 0.38344 1.8738 0.38344 1.3818 0 2.2066-0.709 0.80305-0.6873 0.97669-1.9534 0.05064-0.32556 0.05064-0.88264v-0.49196q-1.7074 0.62942-2.6551 0.83923-0.709 0.15193-1.2588 0.15193-0.80305 0-1.2444-0.3328-0.70177-0.52813-0.70177-2.0257v-4.8762h0.28215v4.8762q0 1.3529 0.59325 1.7942 0.36174 0.27492 1.0563 0.27492 0.57878 0 1.3818-0.1881 0.88264-0.20257 2.5466-0.82476v-5.9325h0.28215v6.6921q0 0.60048-0.03617 0.93328z"
/>
</g>
<g fill="#000" aria-label="Domain">
<path
d="m 53.228042,15.362291 h 1.938901 q 1.960602,0 2.966225,-0.940511 0.983919,-0.911573 0.983919,-2.684074 0,-1.786971 -0.991153,-2.749186 -1.020093,-0.991154 -2.987931,-0.991154 h -1.909961 z m 1.909961,-8.949325 q 2.626196,0 4.10931,1.439706 1.47588,1.425236 1.47588,3.885034 0,2.452563 -1.49035,3.841626 -1.475878,1.367358 -4.09484,1.367358 h -3.516064 v -10.533724 z"
/>
<path
d="m 62.228011,13.125048 q 0,-1.779737 1.070734,-2.814299 1.085204,-1.056266 2.973461,-1.056266 1.888258,0.0072 2.966228,1.056266 1.077971,1.041797 1.077971,2.814299 0,1.772501 -1.077971,2.807063 -1.07797,1.049032 -2.966228,1.049032 -1.88102,0 -2.973461,-1.041797 -1.070734,-1.049031 -1.070734,-2.814298 z m 1.598866,0 q 0,1.099674 0.593246,1.671215 0.622184,0.60048 1.852083,0.60048 1.2299,0 1.84485,-0.60048 0.593246,-0.571541 0.593246,-1.671215 0,-1.10691 -0.593246,-1.685686 -0.61495,-0.593245 -1.852083,-0.60048 -1.222666,0 -1.84485,0.60048 -0.593246,0.578776 -0.593246,1.685686 z"
/>
<path
d="m 73.66607,16.957892 h -1.606103 v -7.668782 h 1.606103 v 0.83199 q 0.687297,-0.535368 1.606105,-0.72347 0.708999,-0.144694 1.273307,-0.144694 0.947746,0 1.519285,0.426847 0.470258,0.340031 0.61495,0.600481 0.904338,-0.658358 1.786972,-0.853695 0.788583,-0.173633 1.396297,-0.173633 0.954981,0 1.526521,0.419613 0.918808,0.665592 0.918808,2.315104 v 4.970239 h -1.606103 v -4.970239 q 0,-0.84646 -0.267684,-1.041797 -0.144695,-0.10852 -0.557072,-0.10852 -0.470255,0 -1.172023,0.166398 -0.998386,0.340031 -1.729091,0.933276 v 5.020882 h -1.613339 v -4.970239 q 0,-0.84646 -0.260448,-1.041797 -0.151929,-0.115755 -0.557073,-0.115755 -0.448553,0 -1.09244,0.151929 -0.759643,0.173632 -1.786972,0.824756 z"
/>
<path
d="m 91.051057,14.051772 -1.996779,-0.166398 q -0.954979,0 -1.381828,0.166398 -0.376203,0.151929 -0.376203,0.535368 0,0.368969 0.24598,0.549837 0.289388,0.23151 0.839224,0.23151 h 0.0217 q 0.62942,0 1.425236,-0.405143 0.376206,-0.224275 1.222666,-0.651123 z m 3.935677,2.286165 q -0.752409,0.593246 -1.917197,0.636654 -0.911572,0 -1.46141,-0.528133 -0.245978,-0.238745 -0.383437,-0.542603 -0.477491,0.325562 -0.745175,0.470256 -1.070737,0.578776 -2.07636,0.578776 h -0.0217 q -1.121378,0 -1.852083,-0.578776 -0.839224,-0.665593 -0.839224,-1.786971 0,-1.389063 1.266071,-1.953369 0.759645,-0.332797 2.098063,-0.332797 l 1.996779,0.311092 v -0.643888 q 0,-1.157552 -1.700157,-1.157552 -1.418,0 -2.604492,0.911572 l -0.860928,-1.215429 q 0.549836,-0.499195 1.46141,-0.918807 0.80305,-0.36897 1.794206,-0.36897 2.061887,0 2.995165,0.998389 0.520899,0.571541 0.520899,1.808675 v 3.002401 q 0.0072,0.361734 0.419613,0.434082 h 0.07958 q 0.535365,0 1.157552,-0.405144 z"
/>
<path
d="m 96.448142,6.566922 q 0.368969,0 0.636653,0.24598 0.289388,0.267684 0.289388,0.658358 0,0.390674 -0.289388,0.658358 -0.267684,0.245979 -0.636653,0.245979 -0.347266,0 -0.629418,-0.238745 -0.303858,-0.274918 -0.303858,-0.665592 0,-0.390674 0.303858,-0.672827 0.282152,-0.231511 0.629418,-0.231511 z m -0.80305,10.38903 v -7.668782 h 1.598869 v 7.668782 z"
/>
<path
d="m 100.803432,16.957892 h -1.598869 v -7.668782 h 1.598869 v 0.774113 q 0.803053,-0.477491 1.758032,-0.665593 0.752409,-0.144694 1.345655,-0.144694 0.969449,0 1.562695,0.405143 0.969446,0.672828 0.969446,2.329574 v 4.970239 h -1.6061 v -4.970239 q 0,-0.831991 -0.289388,-1.034562 -0.173632,-0.12299 -0.636653,-0.12299 -0.477491,0 -1.179256,0.151929 -0.810287,0.180867 -1.924431,0.759643 z"
/>
</g>
</svg>
</a>
<button
class="navbar-toggler"
type="button"
data-toggle="collapse"
data-target="#navbarCollapse"
aria-controls="navbarCollapse"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<div
class="collapse navbar-collapse justify-content-between"
id="navbarCollapse"
>
<ul class="navbar-nav">
{{ range .Site.Menus.main }} {{ if .HasChildren }}
<li class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
href="#"
id="navbarDropdown"
role="button"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
>
{{ .Name }}
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
{{ range .Children }}
<a href="{{ .URL }}" class="dropdown-item"
>{{ .Name }}</a
>
{{ end }}
</div>
{{ else }}
</li>
<li class="nav-item">
<a href="{{ .URL }}" class="nav-link">{{ .Name }}</a>
{{ end }}
</li>
{{ end }}
</ul>
<div class="d-flex">
<div class="nav-item nav-ext-links">
{{ if .Site.Params.others_links }} {{ range
.Site.Params.others_links }}
<a
href="{{ .href }}"
title="{{ .text }}"
class="nav-icon-link {{ .class }}"
data-umami-event="nav-{{ .id }}"
>
<i class="bi {{ .icon }}"></i>
{{ .text }}
</a>
{{ end }} {{ end }}
</div>
<div class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
href="#"
id="navbarDropdown"
role="button"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
>
{{ .Language }}
</a>
<div
class="dropdown-menu dropdown-menu-right"
aria-labelledby="navbarDropdown"
>
{{ range .Site.Home.AllTranslations }}
<a href="{{ .Permalink }}" class="dropdown-item"
>{{ .Language }}</a
>
{{ end }}
</div>
</div>
</div>
</div>
<div class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{ .Language }}
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
{{ range .Site.Home.AllTranslations }}
<a href="{{ .Permalink }}" class="dropdown-item">{{ .Language }}</a>
{{ end }}
</div>
</div>
</div>
</div>
</div>
</nav>

View file

@ -2,12 +2,12 @@
<script src="/js/bootstrap.min.js"></script>
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
<script>
window.addEventListener("scroll", function() {
if (window.scrollY > 100) {
document.getElementById('mainnav').classList.add("scrolled");
} else {
document.getElementById('mainnav').classList.remove("scrolled");
}
});
document.getElementById('mainnav').classList.add("beginscroll");
window.addEventListener("scroll", function () {
if (window.scrollY > 100) {
document.getElementById("mainnav").classList.add("scrolled");
} else {
document.getElementById("mainnav").classList.remove("scrolled");
}
});
document.getElementById("mainnav").classList.add("beginscroll");
</script>

View file

@ -1,21 +1,38 @@
<div id="voxppl">
<a href="{{ .Site.Params.survey }}" class="d-flex p-3 text-light row" data-umami-event="survey" target="_blank" rel="noopener">
<h1 class="col-auto align-self-center m-0 p-0">
<div class="circle-head" style="background-color: #430c59; font-size: 1.1em;">
<i class="bi bi-megaphone-fill"></i>
</div>
</h1>
<div class="col align-self-center font-weigth-bolder">
<button type="button" class="close float-right" aria-label="Close" onclick="document.getElementById('voxppl').style.display = 'none'; return false">
<span aria-hidden="true">&times;</span>
</button>
<strong>{{ i18n "survey-title" | markdownify }}</strong><br>
{{ i18n "survey-text" | markdownify }}
</div>
</a>
<a
href="{{ .Site.Params.survey }}"
class="d-flex p-3 text-light row"
data-umami-event="survey"
target="_blank"
rel="noopener"
>
<h1 class="col-auto align-self-center m-0 p-0">
<div
class="circle-head"
style="background-color: #430c59; font-size: 1.1em"
>
<i class="bi bi-megaphone-fill"></i>
</div>
</h1>
<div class="col align-self-center font-weigth-bolder">
<button
type="button"
class="close float-right"
aria-label="Close"
onclick="
document.getElementById('voxppl').style.display = 'none';
return false;
"
>
<span aria-hidden="true">&times;</span>
</button>
<strong>{{ i18n "survey-title" | markdownify }}</strong><br />
{{ i18n "survey-text" | markdownify }}
</div>
</a>
</div>
<script>
setTimeout(function() {
document.getElementById('voxppl').style.display = 'block'
}, 4500)
setTimeout(function () {
document.getElementById("voxppl").style.display = "block";
}, 4500);
</script>

View file

@ -1,18 +1,24 @@
{{ if .Site.Params.topbar.enable }}
<div id="top">
<div class="container">
<div class="row">
<div class="col-xs-5">
{{ .Site.Params.topbar.text | safeHTML }}
</div>
<div class="col-xs-7">
<div class="social">
{{ range .Site.Menus.topbar.ByWeight }}
<a href="{{ .URL }}" target="_blank" rel="noopener" style="opacity: 1;">{{ .Pre }}</a>
{{ end }}
<div class="container">
<div class="row">
<div class="col-xs-5">
{{ .Site.Params.topbar.text | safeHTML }}
</div>
<div class="col-xs-7">
<div class="social">
{{ range .Site.Menus.topbar.ByWeight }}
<a
href="{{ .URL }}"
target="_blank"
rel="noopener"
style="opacity: 1"
>{{ .Pre }}</a
>
{{ end }}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{ end }}