Initial commit: Hugo setup met Bootstrap

This commit is contained in:
2026-02-21 11:15:13 +01:00
commit a16546a971
30 changed files with 806 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
public/
resources/_gen/
.hugo_build.lock
node_modules/

5
archetypes/default.md Normal file
View File

@@ -0,0 +1,5 @@
+++
date = '{{ .Date }}'
draft = true
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
+++

7
assets/js/bootstrap.bundle.min.js vendored Normal file

File diff suppressed because one or more lines are too long

192
assets/scss/main.scss Normal file
View File

@@ -0,0 +1,192 @@
// Imports
@import "node_modules/bootstrap/scss/bootstrap";
// Fonts
@font-face {
font-family: 'Mukta';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('/fonts/mukta-400.woff2') format('woff2');
}
@font-face {
font-family: 'Mukta';
font-style: normal;
font-weight: 600;
font-display: swap;
src: url('/fonts/mukta-600.woff2') format('woff2');
}
@font-face {
font-family: 'Mukta';
font-style: normal;
font-weight: 800;
font-display: swap;
src: url('/fonts/mukta-800.woff2') format('woff2');
}
@font-face {
font-family: 'Kantumruy Pro';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('/fonts/kantumruy-400.woff2') format('woff2');
}
@font-face {
font-family: 'Kantumruy Pro';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url('/fonts/kantumruy-500.woff2') format('woff2');
}
@font-face {
font-family: 'Kantumruy Pro';
font-style: normal;
font-weight: 600;
font-display: swap;
src: url('/fonts/kantumruy-600.woff2') format('woff2');
}
// Defaults
$van-emous-blue: #A8BBD5;
$van-emous-orange: #b95913;
$nav-link-color: #212121;
$primary: $van-emous-orange;
$mukta-font: 'Mukta', system-ui, -apple-system, sans-serif;
$kantumruy-font: 'Kantumruy Pro', sans-serif;
$font-family-base: $mukta-font;
$headings-font-family: $kantumruy-font;
$headings-font-weight: 500;
$headings-color: #212121;
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6,
[class^="display-"] {
font-family: $headings-font-family;
font-weight: $headings-font-weight;
color: $headings-color;
}
h1, .display-3 {
line-height: 1.1;
margin-bottom: 1.5rem;
letter-spacing: -0.01em;
}
h2, .h2 {
font-size: 2.5rem;
margin-bottom: 1.25rem;
}
p {
font-family: $mukta-font;
font-size: 18px;
line-height: 30px;
font-weight: normal;
margin-block-start: 0;
margin-block-end: 0;
padding-bottom: 20px;
}
.lead {
font-weight: 400;
}
.btn-cta {
background-color: $van-emous-orange;
color: #fff;
border-radius: 50px;
padding: .8rem 2rem;
font-family: $mukta-font;
font-weight: 600;
transition: transform 0.2s ease;
&:hover {
background-color: darken($van-emous-orange, 10%);
color: #fff;
transform: translateY(-2px);
}
}
// Menu
.top-bar {
background-color: $van-emous-blue;
font-size: 0.9rem;
color: white;
a { color: white; text-decoration: none; }
}
.navbar-nav .nav-link {
color: $nav-link-color;
font-weight: 500;
&:hover { color: $van-emous-orange; }
}
.navbar {
transition: all 0.3s ease-in-out;
backface-visibility: hidden;
}
.navbar.sticky-top {
position: -webkit-sticky !important; // Voor Safari
position: sticky !important;
top: 0 !important;
z-index: 1030 !important; // Net iets hoger dan de standaard
background-color: #ffffff !important; // Voorkom transparantie bij scrollen
}
.btn-cta {
background-color: $van-emous-orange;
color: white;
border-radius: 50px;
padding: 0.8rem 2rem;
&:hover { background-color: darken($van-emous-orange, 10%); color: white; }
}
.hero-section {
padding-top: 5rem;
padding-bottom: 5rem;
h1 {
color: #222;
line-height: 1.1;
letter-spacing: -1px;
}
.lead {
font-size: 1.1rem;
line-height: 1.6;
// Optioneel: de border-start kleur aanpassen aan je huisstijl
border-color: $van-emous-orange !important;
border-width: 3px !important;
}
}
.btn-cta {
background-color: $van-emous-orange;
color: white;
border: none;
border-radius: 50px; // De ovale vorm uit je screenshot
padding: 0.75rem 2rem;
font-weight: 600;
transition: transform 0.2s ease-in-out, background-color 0.2s;
display: inline-flex;
align-items: center;
gap: 10px;
&:hover {
background-color: darken($van-emous-orange, 10%);
color: white;
transform: translateY(-2px);
}
i {
font-size: 0.8rem; // Pijltje iets kleiner
}
}

8
content/_index.md Normal file
View File

@@ -0,0 +1,8 @@
---
title: "Home"
hero:
title: "Zorgzame woonoplossingen met comfort en maatwerk"
subtitle: "Van Emous Mantelzorgwoningen begeleidt u persoonlijk bij het realiseren van een mantelzorgwoning, van kennismaking tot oplevering."
cta_text: "Adviesgesprek aanvragen"
cta_link: "/contact"
---

70
hugo.toml Normal file
View File

@@ -0,0 +1,70 @@
baseURL = 'https://vanemous.start-it.nl/'
languageCode = 'nl-nl'
title = 'Van Emous Mantelzorgwoningen'
[build]
writeStats = true
[module]
[[module.mounts]]
source = 'assets'
target = 'assets'
[[module.mounts]]
source = 'node_modules'
target = 'assets/node_modules'
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
## MENU
[[menus.main]]
name = ""
pre = "<i class='bi bi-house-door-fill'></i>"
url = "/"
weight = 10
[[menus.main]]
name = "Mantelzorgwoningen"
identifier = "mantelzorgwoningen"
url = "/mantelzorgwoningen/"
weight = 20
[[menus.main]]
parent = "mantelzorgwoningen"
name = "Type A"
url = "/mantelzorgwoningen/type-a/"
weight = 1
[[menus.main]]
name = "Over Ons"
url = "/over-ons/"
weight = 30
[[menus.main]]
name = "Projecten"
url = "/projecten/"
weight = 40
[[menus.main]]
name = "Contact"
url = "/contact/"
weight = 50
## Params
[params]
description = "Van Emous bouwt hoogwaardige mantelzorgwoningen op maat."
telefoon = "+31 6 15116762"
email = "info@vanemousmantelzorgwoningen.nl"
google_rating = 5
logo = "img/logo.svg"
favicon = "favicon.ico"
og_image = "img/og-image.jpg"
[params.social]
facebook = "https://facebook.com/vanemous"
instagram = "https://instagram.com/vanemous"
[params.seo]
og_image = "img/og-share-image.jpg"

93
hugo_stats.json Normal file
View File

@@ -0,0 +1,93 @@
{
"htmlElements": {
"tags": [
"a",
"body",
"button",
"div",
"h1",
"head",
"header",
"html",
"i",
"img",
"li",
"link",
"main",
"meta",
"nav",
"p",
"script",
"section",
"span",
"title",
"ul"
],
"classes": [
"align-items-center",
"align-items-end",
"bg-white",
"bi",
"bi-chevron-right",
"bi-envelope",
"bi-house-door-fill",
"bi-telephone",
"btn",
"btn-cta",
"col-lg-4",
"col-lg-7",
"collapse",
"contact-info",
"container",
"content",
"d-flex",
"d-md-block",
"d-none",
"display-3",
"dropdown",
"dropdown-item",
"dropdown-menu",
"dropdown-toggle",
"fw-bold",
"google-reviews",
"hero-section",
"justify-content-between",
"lead",
"mb-2",
"mb-5",
"me-2",
"me-3",
"ms-2",
"ms-auto",
"ms-lg-3",
"my-5",
"my-lg-5",
"nav-item",
"nav-link",
"navbar",
"navbar-brand",
"navbar-collapse",
"navbar-expand-lg",
"navbar-light",
"navbar-nav",
"navbar-toggler",
"navbar-toggler-icon",
"offset-lg-1",
"px-3",
"py-2",
"py-3",
"py-5",
"row",
"shadow-sm",
"sticky-top",
"text-decoration-none",
"text-warning",
"text-white",
"top-bar"
],
"ids": [
"navbarDropdownmantelzorgwoningen",
"navbarNav"
]
}
}

View File

@@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="nl">
<head>
{{ partial "head.html" . }}
</head>
<body>
{{ partial "header.html" . }}
<main class="my-5">
{{ block "main" . }}{{ end }}
</main>
{{ partial "footer.html" . }}
</body>
</html>

View File

@@ -0,0 +1,6 @@
{{ define "main" }}
<h1>{{ .Title }}</h1>
<div class="content">
{{ .Content }}
</div>
{{ end }}

View File

@@ -0,0 +1,8 @@
{{ define "main" }}
<article class="py-5">
<h1 class="display-4 fw-bold">{{ .Title }}</h1>
<div class="content mt-4">
{{ .Content }}
</div>
</article>
{{ end }}

9
layouts/index.html Normal file
View File

@@ -0,0 +1,9 @@
{{ define "main" }}
{{ partial "hero.html" . }}
<div class="container my-5">
{{ .Content }}
</div>
{{ end }}

View File

@@ -0,0 +1,5 @@
{{ $js := resources.Get "node_modules/bootstrap/dist/js/bootstrap.bundle.js" }} {{/* Gebruik de NIET-minified versie als bron */}}
{{ if $js }}
{{ $js = $js | resources.Minify | resources.Fingerprint }}
<script src="{{ $js.RelPermalink }}" integrity="{{ $js.Data.Integrity }}"></script>
{{ end }}

View File

@@ -0,0 +1,23 @@
<link rel="icon" href="/img/favicon.ico" sizes="any">
<link rel="apple-touch-icon" href="/img/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ block "title" . }}{{ .Title }} | {{ .Site.Title }}{{ end }}</title>
{{ $opts := dict "transpiler" "libsass" "targetPath" "css/main.css" "enableSourceMap" true }}
{{ $style := resources.Get "scss/main.scss" | css.Sass $opts | resources.Minify | resources.Fingerprint }}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.0/font/bootstrap-icons.css">
<link rel="stylesheet" href="{{ $style.RelPermalink }}" integrity="{{ $style.Data.Integrity }}">
<meta property="og:type" content="website">
<meta property="og:url" content="{{ .Permalink }}">
<meta property="og:title" content="{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} | {{ .Site.Title }}{{ end }}">
<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{ .Site.Params.description }}{{ end }}">
<meta property="og:image" content="{{ .Site.Params.seo.og_image | absURL }}">
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="{{ .Permalink }}">
<meta property="twitter:title" content="{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} | {{ .Site.Title }}{{ end }}">
<meta property="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{ .Site.Params.description }}{{ end }}">
<meta property="twitter:image" content="{{ .Site.Params.seo.og_image | absURL }}">

View File

@@ -0,0 +1,85 @@
<header>
<div class="top-bar py-2">
<div class="container d-flex justify-content-between align-items-center">
<nav class="contact-info" aria-label="Contactinformatie">
{{ if .Site.Params.telefoon }}
<a href="tel:{{ .Site.Params.telefoon | urlize }}" class="me-3 text-white text-decoration-none" aria-label="Bel ons op {{ .Site.Params.telefoon }}">
<i class="bi bi-telephone" aria-hidden="true"></i> {{ .Site.Params.telefoon }}
</a>
{{ end }}
{{ if .Site.Params.email }}
<a href="mailto:{{ .Site.Params.email }}" class="text-white text-decoration-none" aria-label="Stuur een e-mail naar {{ .Site.Params.email }}">
<i class="bi bi-envelope" aria-hidden="true"></i> {{ .Site.Params.email }}
</a>
{{ end }}
</nav>
{{ if .Site.Params.google_rating }}
<div class="google-reviews d-none d-md-block" aria-label="Google beoordeling: {{ .Site.Params.google_rating }} van de 5 sterren">
<span class="fw-bold" aria-hidden="true">G {{ .Site.Params.google_rating }}</span>
<span class="text-warning" aria-hidden="true">
{{ range (seq (int .Site.Params.google_rating)) }}★{{ end }}
</span>
</div>
{{ end }}
</div>
</div>
</header>
<nav class="navbar navbar-expand-lg navbar-light bg-white py-3 shadow-sm sticky-top" aria-label="Hoofdmenu">
<div class="container">
<a class="navbar-brand d-flex align-items-center" href="/" aria-label="Van Emous Mantelzorgwoningen Home">
{{ if .Site.Params.logo }}
<img src="{{ .Site.Params.logo | relURL }}" alt="Van Emous Logo" height="60" class="me-2">
{{ end }}
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Wissel navigatiemenu">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto align-items-center">
{{ $currentPage := . }}
{{ range .Site.Menus.main }}
{{ if .HasChildren }}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle px-3 {{ if $currentPage.IsMenuCurrent "main" . }}active{{ end }}"
href="#" id="navbarDropdown{{ .Identifier }}" role="button" data-bs-toggle="dropdown"
aria-expanded="false" aria-haspopup="true">
{{ .Pre | safeHTML }} {{ .Name }}
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown{{ .Identifier }}">
{{ range .Children }}
<li>
<a class="dropdown-item {{ if $currentPage.IsMenuCurrent "main" . }}active{{ end }}"
href="{{ .URL | relURL }}"
{{ if $currentPage.IsMenuCurrent "main" . }}aria-current="page"{{ end }}>
{{ .Name }}
</a>
</li>
{{ end }}
</ul>
</li>
{{ else }}
<li class="nav-item">
<a class="nav-link px-3 {{ if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }}active{{ end }}"
href="{{ .URL | relURL }}"
{{ if $currentPage.IsMenuCurrent "main" . }}aria-current="page"{{ end }}>
{{ .Pre | safeHTML }} {{ .Name }}
</a>
</li>
{{ end }}
{{ end }}
<li class="nav-item ms-lg-3">
<a href="/brochure" class="btn btn-cta" role="button">
Gratis brochure aanvragen <i class="bi bi-chevron-right" aria-hidden="true"></i>
</a>
</li>
</ul>
</div>
</div>
</nav>

View File

@@ -0,0 +1,18 @@
<section class="hero-section py-5 my-lg-5">
<div class="container">
<div class="row align-items-end">
<div class="col-lg-7">
<h1 class="display-3 mb-5">{{ .Params.hero.title }}</h1>
<a href="{{ .Params.hero.cta_link }}" class="btn btn-cta">
{{ .Params.hero.cta_text }} <i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<div class="col-lg-4 offset-lg-1">
<p class="lead mb-2">
{{ .Params.hero.subtitle }}
</p>
</div>
</div>
</div>
</section>

46
package-lock.json generated Normal file
View File

@@ -0,0 +1,46 @@
{
"name": "vanemous.start-it.nl",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "vanemous.start-it.nl",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"@popperjs/core": "^2.11.8",
"bootstrap": "^5.3.8"
}
},
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/bootstrap": {
"version": "5.3.8",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz",
"integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/twbs"
},
{
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
}
],
"license": "MIT",
"peerDependencies": {
"@popperjs/core": "^2.11.8"
}
}
}
}

19
package.json Normal file
View File

@@ -0,0 +1,19 @@
{
"name": "vanemous.start-it.nl",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "hugo server -D",
"build": "hugo --gc --minify"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "commonjs",
"dependencies": {
"@popperjs/core": "^2.11.8",
"bootstrap": "^5.3.8"
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
static/img/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
static/img/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

34
static/img/favicon.svg Normal file
View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="135.46667mm"
height="135.46666mm"
viewBox="0 0 135.46667 135.46666"
version="1.1"
id="svg1"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<g
id="layer1"
transform="translate(-45.982235,-31.659901)">
<g
id="g3"
transform="scale(0.26458333)">
<rect
style="font-variation-settings:'wght' 300;fill:none;fill-opacity:0.501961;stroke:none;stroke-width:2;stroke-opacity:0.501961;paint-order:stroke markers fill"
id="rect1"
width="512"
height="512"
x="173.79112"
y="119.65946" />
<path
d="m 380.5591,616.54664 c -28.9748,-5.46341 -56.71181,-16.15739 -81.85561,-31.5574 -50.05187,-30.59904 -87.48577,-78.11693 -105.51773,-133.94146 -1.40029,-4.34736 -2.69666,-8.80176 -3.8543,-13.22674 l -0.49348,-0.0907 0.37093,-0.39217 c 0,-0.0245 -0.0163,-0.0572 -0.0245,-0.0825 l 0.17076,-0.0817 31.57872,-33.3238 163.9328,-169.37644 116.35755,114.82973 v -86.12944 h 45.85689 L 546.50757,396.3875 500.07959,416.49355 384.29558,301.0723 242.68075,446.93572 c 0.55803,1.43877 1.13362,2.86937 1.72579,4.2918 10.51955,25.28923 26.18272,48.11432 45.99464,67.0267 19.81192,18.91238 43.34047,33.49782 69.09049,42.83146 28.68231,10.29037 59.35978,13.78803 89.62139,10.21766 30.26242,-3.57038 59.28379,-14.11076 84.78299,-30.79349 25.4992,-16.68355 46.78175,-39.05356 62.17359,-65.35181 15.39185,-26.29824 24.47384,-55.80901 26.53273,-86.21114 2.05889,-30.40214 -2.96251,-60.868 -14.66878,-89.00127 -11.70708,-28.13327 -29.77874,-53.1684 -52.79665,-73.13637 -23.01791,-19.96756 -50.35295,-34.32449 -79.858,-41.94156 -29.50423,-7.61708 -60.3737,-8.28679 -90.18023,-1.95652 -26.00248,5.5559 -50.59887,16.35649 -72.28503,31.74164 -10.6711,7.5558 -20.57012,16.14677 -29.55489,25.64626 l -35.16062,-32.84029 c 22.45351,-23.85061 49.45766,-42.96194 79.41778,-56.20641 15.24478,-6.72489 31.13991,-11.86517 47.43619,-15.33988 33.09667,-7.01518 67.28242,-7.1441 100.43056,-0.37909 31.30413,6.42439 61.03386,18.95715 87.48978,36.88143 39.35014,26.62227 70.142,64.07987 88.64669,107.83865 6.25674,14.82809 11.0314,30.23954 14.25373,46.00885 6.62848,32.59747 6.62848,66.19578 0,98.79325 -6.40381,31.3458 -18.91075,61.12536 -36.80921,87.64338 -26.53518,39.39426 -63.931,70.24331 -107.65138,88.80437 -14.80032,6.26736 -30.18481,11.05265 -45.92961,14.28396 -31.26327,6.37603 -63.46694,6.6293 -94.82662,0.74676 z"
fill="#b95913"
id="path2"
style="stroke-width:8.1702" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

50
static/img/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 28 KiB

BIN
static/img/og-image.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
static/img/og-image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 KiB

106
static/img/og-image.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 777 KiB