initial commit

This commit is contained in:
Matthieu Bessat 2022-12-10 11:37:36 +01:00
commit b55f54eb6d
68 changed files with 1761 additions and 0 deletions

13
.gitignore vendored Normal file
View file

@ -0,0 +1,13 @@
# Generated files by hugo
/public/
/resources/_gen/
/assets/jsconfig.json
hugo_stats.json
# Executable may be added to repository
hugo.exe
hugo.darwin
hugo.linux
# Temporary lock file while building
/.hugo_build.lock

20
README.md Normal file
View file

@ -0,0 +1,20 @@
# Etoile de bethleem - site web
## Comment installer
- git clone etoiledebethleem/website website
- cd website
## Comment développer
- hugo server -D
## Comment build
- hugo
## Idées
- gallerie avec un scroll : https://staticbattery.com/ (on sera toujours obligé de faire de la navigation)

BIN
Teko.zip Normal file

Binary file not shown.

6
archetypes/default.md Normal file
View file

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

BIN
assets/cover/cover.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
assets/images/full_logo.jpg Normal file

Binary file not shown.

View file

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="380"
height="169"
viewBox="0 0 100.54173 44.714586"
version="1.1"
id="svg24876"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14, custom)"
sodipodi:docname="drawing.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview24878"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.0973349"
inkscape:cx="176.33632"
inkscape:cy="51.488384"
inkscape:window-width="958"
inkscape:window-height="1038"
inkscape:window-x="960"
inkscape:window-y="20"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs24873" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g24838"
style="display:inline;fill:none;fill-opacity:0.740741;stroke:#fff;stroke-opacity:1;stroke-width:0.4px"
transform="matrix(0.60631117,0,0,0.60631117,-14.51726,-4.2269977)"
inkscape:label="g24838">
<path
d="m 26.720591,79.239101 159.710859,0.0048"
id="path6002" />
<path
d="M 93.621425,79.240009 50.526021,60.053219"
id="path6004" />
<path
d="m 47.940693,70.803549 59.781797,3.259842"
id="path6117"
sodipodi:nodetypes="cc" />
<path
d="M 60.493936,41.956018 99.106552,79.219009"
id="path6119" />
<path
d="M 98.243548,79.263427 111.92888,69.224545 151.59243,40.129329"
id="path6121"
sodipodi:nodetypes="ccc" />
<path
d="m 166.16688,78.103486 -58.4498,-4.047385"
id="path8301"
sodipodi:nodetypes="cc" />
<path
d="M 162.25307,57.784105 89.193146,79.122318"
id="path8303"
sodipodi:nodetypes="cc" />
<path
d="M 76.058405,28.355186 100.90557,79.260411"
id="path8305" />
<path
d="M 100.60935,79.250226 135.5288,27.155765"
id="path8307"
sodipodi:nodetypes="cc" />
<path
d="m 54.380325,51.195686 65.446655,28.02692"
id="path8309"
sodipodi:nodetypes="cc" />
<path
d="M 114.38097,79.204235 67.147638,34.947182"
id="path8311"
sodipodi:nodetypes="cc" />
<path
d="M 101.49849,79.250343 95.324154,20.914635"
id="path8313" />
<path
d="M 84.692685,24.035454 112.66878,79.216071"
id="path8315"
sodipodi:nodetypes="cc" />
<path
d="M 101.4735,79.258452 115.97908,20.518044"
id="path8319"
sodipodi:nodetypes="cc" />
<path
d="m 104.93647,19.850453 7.09014,59.347338"
id="path8321"
sodipodi:nodetypes="cc" />
<path
d="M 112.16833,79.230298 125.36373,22.79313"
id="path8491" />
<path
d="M 113.06324,79.259633 143.55448,32.559939"
id="path8493" />
<path
d="M 115.53123,79.277667 157.29608,47.955403"
id="path9221" />
<path
d="M 124.93766,79.268258 164.9318,67.110612"
id="path9223" />
<path
d="m 176.54693,79.152226 c 0,-11.976445 -3.1228,-23.521671 -8.6227,-33.476273 -7.01234,-12.692075 -17.84519,-22.896727 -30.52331,-29.176667 -6.57238,-3.255542 -13.51568,-5.603 -20.89596,-6.375633 C 104.48044,8.86482 97.335393,9.1527008 85.187021,12.912324 64.84609,19.207343 44.144926,37.515568 38.429157,65.138645 c -0.912054,4.40776 -1.42647,9.208934 -1.40059,14.087355"
id="path15833"
sodipodi:nodetypes="csssssc" />
<path
d="m 169.46231,79.113168 c 0,-10.763617 -2.80717,-21.139681 -7.75118,-30.086203 -6.30356,-11.406775 -15.02024,-19.710744 -27.28272,-26.124839 -4.94921,-2.588763 -11.55614,-4.549012 -18.67527,-5.754833 -5.76233,-0.976008 -13.25289,-0.636761 -17.535971,-0.09097 -3.266452,0.416243 -6.842775,1.275576 -10.880628,2.524923 -18.284987,5.657533 -36.893793,22.111728 -42.031845,46.937475 -0.819867,3.961396 -1.282291,8.276364 -1.259027,12.660758"
id="path15833-6"
sodipodi:nodetypes="cssssssc" />
<path
d="m 166.16434,79.174005 c 0,-10.196336 -2.65997,-20.025548 -7.3447,-28.500555 -5.97301,-10.8056 -15.01988,-19.619725 -25.99935,-24.840018 -5.45522,-2.593736 -10.26408,-4.3356 -16.88928,-5.342488 -8.26088,-1.255477 -16.872836,-1.021417 -27.407811,2.165284 -9.034241,2.732748 -19.144737,8.846149 -27.014507,18.025006 -6.13697,7.157817 -10.858033,16.258101 -12.991187,26.562086 -0.776875,3.752616 -1.215048,7.840172 -1.193002,11.993493"
id="path15833-3"
sodipodi:nodetypes="cssssssc" />
<path
d="m 170.9542,79.173392 c -0.0462,-2.618946 -0.2437,-9.4018 -2.33033,-16.858009 -2.04826,-7.319094 -5.55252,-15.03443 -11.14672,-22.334432 -3.72627,-4.86249 -7.85438,-8.596774 -12.13048,-11.95744"
id="path18186"
sodipodi:nodetypes="cssc" />
<path
d="m 172.08755,79.272764 c -0.0462,-2.618949 0.0421,-8.056623 -2.36522,-17.120268 -2.68428,-10.218945 -7.35663,-18.00569 -11.85493,-23.541985"
id="path18186-7"
sodipodi:nodetypes="ccc" />
<path
d="M 41.322082,79.252563 C 40.950677,65.2193 46.490924,51.763365 51.026828,44.903305 53.573704,41.051432 60.162248,31.0805 72.671228,23.48493 81.33176,18.226174 92.947609,13.878173 108.28307,14.089929"
id="path21855"
sodipodi:nodetypes="cssc" />
<path
d="m 42.429996,79.248618 c 0.115612,-5.176361 0.24113,-17.66706 8.686898,-32.242438 3.27236,-5.647313 7.34512,-10.401359 11.404443,-14.314182 8.451458,-8.146448 19.744679,-13.790035 29.683928,-15.909176 6.432025,-1.371367 11.933575,-1.64594 14.205265,-1.582445"
id="path21857"
sodipodi:nodetypes="csssc" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

15
assets/sass/article.scss Normal file
View file

@ -0,0 +1,15 @@
.article__date {
font-style: italic;
}
.article__featured-image {
max-width: 100%;
img {
max-width: 100%;
}
}
.article {
line-height: 1.8rem;
}

3
assets/sass/card.scss Normal file
View file

@ -0,0 +1,3 @@
.card {
}

3
assets/sass/contact.scss Normal file
View file

@ -0,0 +1,3 @@
.contact-card {
}

34
assets/sass/footer.scss Normal file
View file

@ -0,0 +1,34 @@
html {
height: 100%;
}
body {
min-height: 100%;
display: flex;
flex-direction: column;
}
.footer-push {
flex-grow: 1;
}
.site-footer {
border-top: .5rem solid $primary;
margin-top: 1rem;
padding-top: 2rem;
padding-bottom: 4rem;
background-color: $background;
color: white;
a {
color: white;
text-decoration: none;
}
a:hover {
opacity: 0.8;
text-decoration: underline;
}
}
.site-footer__content {
}

78
assets/sass/gallery.scss Normal file
View file

@ -0,0 +1,78 @@
.gallery {
// display: flex;
// flex-wrap: wrap;
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-column-gap: 1rem;
}
.gallery__side {
grid-column-start: 1;
grid-column-end: 3;
}
.gallery__side {
margin-bottom: .5rem;
}
.gallery-tags__title {
}
.gallery__items-container {
grid-column-start: 3;
grid-column-end: 13;
}
.gallery__items {
display: grid;
grid-template-columns: repeat(4, minmax(13rem, 1fr));
grid-gap: 1rem;
}
.gallery__item {
aspect-ratio: 1;
// $size: 25rem;
// width: $size;
// height: $size;
img {
width: 0;
height: 0;
min-height: 100%;
min-width: 100%;
display: block;
object-fit: cover;
}
}
.gallery__nextprev {
display: flex;
justify-content: space-between;
}
@media (max-width: $lg-breakpoint) {
// .gallery__items {
// grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr))
// }
}
@media (max-width: $md-breakpoint) {
.gallery {
display: block;
}
.gallery__items {
grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr));
}
.gallery__side {
margin-bottom: 1rem;
}
}
@media (max-width: $xs-breakpoint) {
.gallery__items {
grid-template-columns: 1fr;
}
}

59
assets/sass/general.scss Normal file
View file

@ -0,0 +1,59 @@
body {
// font-family: 'Trebuchet MS', Tahoma,sans-serif;
// font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
font-family: "Open Sans",Helvetica,Arial,sans-serif;
margin: 0;
background: $background-dark;
color: white;
}
* {
box-sizing: border-box;
}
article {
font-size: 1.1rem;
}
h1, h2, h3 {
font-family: "Teko Light",Helvetica,Arial,sans-serif;
}
h1 {
font-size: 1.75rem;
color: $secondary;
}
h2 {
font-size: 1.4rem;
color: $primary;
margin-top: 1.5rem;
margin-bottom: .5rem;
}
h3 {
margin-top: .5em;
margin-bottom: .5em;
}
a {
color: $primary;
}
a:hover {
opacity: 0.8;
}
.maplibre-map {
width: 100%;
min-height: 25rem;
}
.columns-two {
display: grid;
grid-template-columns: 1fr 1fr;
}
.half-wheel-logo {
color: white;
}

47
assets/sass/header.scss Normal file
View file

@ -0,0 +1,47 @@
$header-height: 6.5rem;
.site-header {
background: $background;
margin-bottom: 1rem;
color: white;
height: $header-height;
}
.site-header__content {
height: 100%;
display: flex;
justify-content: space-between;
align-items: center;
}
.site-header__nav {
a {
color: white;
text-decoration: none;
}
a:hover {
opacity: 0.8;
text-decoration: underline;
}
}
.site-header__title {
height: 100%;
}
.site-header__logo {
width: $header-height;
height: 100%;
}
@media (max-width: $md-breakpoint) {
.site-header .page-container {
width: 100% !important;
}
.site-header__title {
padding-right: 1rem;
}
.site-header__nav {
line-height: 2rem;
}
}

39
assets/sass/landing.scss Normal file
View file

@ -0,0 +1,39 @@
.full-logo {
width: 100%;
}
.landing {
}
.landing-brand {
border: 1px solid rgba(0, 0, 0, 0.4);
padding: 1rem;
text-align: center;
display: flex;
flex-direction: column;
}
.brand__name {
text-transform: uppercase;
font-size: 3rem;
margin: 0;
}
.brand__role1-container {
.text {
margin: 0;
}
margin-bottom: 1rem;
}
.brand__role2 {
}
.brand__logo {
svg {
stroke: white;
}
}

48
assets/sass/main.scss Normal file
View file

@ -0,0 +1,48 @@
$xl-breakpoint: 1800px;
$lg-breakpoint: 1600px;
$md-breakpoint: 1100px;
$sm-breakpoint: 900px;
$xs-breakpoint: 400px;
$background-dark: #1f1f1e;
$background: #303131;
$primary: #db8d42;
$secondary: #f15a24;
@font-face {
font-family: "Teko";
size-adjust: 140%;
src: url("../Teko-Regular.ttf");
}
@font-face {
font-family: "Teko Light";
size-adjust: 140%;
src: url("../Teko-Light.ttf");
}
.pagination-nav {
margin-top: 1em;
display: flex;
justify-content: space-between;
}
@import 'general.scss';
@import 'page_container.scss';
@import 'header.scss';
@import 'news.scss';
@import 'article.scss';
@import 'gallery.scss';
@import 'single_image.scss';
@import 'footer.scss';
// components
@import 'tags.scss';
@import 'prices.scss';
@import 'landing.scss';
// @import 'about.scss';
@import 'card.scss';
@import 'contact.scss';

52
assets/sass/news.scss Normal file
View file

@ -0,0 +1,52 @@
.news-list {
list-style-type: none;
padding: 0;
}
.news-item {
border-bottom: 1px solid $background;
padding: 1rem 0rem;
margin-bottom: 1rem;
display: grid;
grid-template-columns: 33% 1fr;
grid-column-gap: 2rem;
}
.news-item__image {
width: 100%;
figure {
margin: 0;
height: 100%;
}
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
.news-item__title {
margin-top: 0;
}
.news-item__date {
opacity: 0.8;
font-style: italic;
}
.news-item__summary {
font-size: .9rem;
}
@media (max-width: $md-breakpoint) {
.news-item {
display: flex;
flex-direction: column;
padding-top: 0;
}
.news-item__content {
margin-top: 1rem;
}
}

View file

@ -0,0 +1,47 @@
.large-container {
width: 90%;
margin: 0 auto;
}
.page-container {
width: 80%;
margin: 0 auto;
}
.page-full {
padding: 0 2rem;
}
@media (min-width: $xl-breakpoint) {
.page-container {
width: 60% !important;
}
}
@media (min-width: $lg-breakpoint) {
.page-container {
width: 70%;
}
}
@media (min-width: $md-breakpoint) {
.page-container {
width: 70%;
}
}
@media (max-width: $md-breakpoint) {
.page-container {
width: 75%;
}
}
@media (max-width: $sm-breakpoint) {
.page-container {
width: 100%;
padding: 0 .8rem;
}
.page-full {
padding: 0 .8rem;
}
}

46
assets/sass/prices.scss Normal file
View file

@ -0,0 +1,46 @@
.pricing-layout {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
}
.operations-container {
grid-column: 2/5;
}
.operations-mosaic {
// display: grid;
// grid-template-columns: 1fr 1fr;
// grid-gap: 1rem;
columns: 2;
}
.operations-category {
display: flex;
flex-direction: column;
}
.operations-table {
border: 1px solid black;
border-radius: 5px;
width: 100%;
padding: .5rem;
border-collapse: separate;
background: lighten($background-dark, 8%);
th {
opacity: 0.6;
text-align: left;
padding-bottom: .5rem;
margin-bottom: 1rem;
border-bottom: 1px solid gray;
}
tr {
td {
}
}
.operation-price {
text-align: right;
}
td.operation-price {
color: $primary;
}
}

View file

@ -0,0 +1,71 @@
.single-image {
background: #ecf0f1;
display: grid;
grid-template-columns: 1fr 1fr;
grid-column-gap: 1rem;
.single-image__side {
padding: 2rem 1rem 2rem 2rem;
}
.single-image__image-container {
background: #95a5a6;
min-width: 70vh;
min-height: 50vh;
max-height: 80vh;
display: flex;
align-items: center;
justify-content: center;
}
.single-image__image {
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
}
.single-image__property {
display: flex;
align-items: center;
margin-bottom: .2rem;
min-height: 2rem;
div:first-of-type {
margin-right: 1rem;
}
.icon {
margin-right: .5rem;
}
pre {
margin: 0;
}
}
.single-image__tags {
}
}
@media (max-width: $md-breakpoint) {
.single-image {
display: block;
.single-image__image-container {
min-width: initial;
max-height: initial;
width: 100%;
}
}
}
@media (max-width: $sm-breakpoint) {
.single-image {
.single-image__property {
display: block;
}
}
}

19
assets/sass/tags.scss Normal file
View file

@ -0,0 +1,19 @@
.tags-list {
margin: 0;
list-style-type: none;
display: flex;
align-items: center;
flex-wrap: wrap;
padding: 0;
.tags-list__item {
border: 1px solid black;
border-radius: 3px;
margin-right: .3rem;
padding: .3rem;
font-size: .9rem;
margin-bottom: .4rem;
}
.tags-list__item:last-of-type {
margin-right: 0;
}
}

30
config.toml Normal file
View file

@ -0,0 +1,30 @@
baseURL = '/'
languageCode = 'fr'
defaultContentLanguage = 'fr'
title = "Bicycl'Eure"
summaryLength = 50
# THIS IS UNACCEPTALBE, I REALLY THOUGH THIS WAS THE DEFAULT IN HUGO!!
assetDir = "assets"
[sitemap]
changefreq = 'weekly'
[params]
dateFmt = "02.01.2006 15:04"
[params.defaultImage]
local = true
src = "cover/cover.jpg"
[taxonomies]
imtag = 'imtags'
# theme = "custom"
# [markup]
# [markup.goldmark]
# [markup.goldmark.renderer]
# unsafe = true

20
content/_index.md Normal file
View file

@ -0,0 +1,20 @@
---
title: Accueil
---
Bicycl'Eure est un atelier mobile de réparation et d'entretien de VÉLOS. Sur simple rendez-vous et après un diagnostic gratuit, Laurent, technicien cycle qualifié, redonnera vie à votre monture !
Éco-Responsable et Économique !
## L' Histoire de Bicycl'Eure
Sensible aux questions denvironnement et de surconsommation, Bicycl'Eure, situé dans le Val-d'Hazey à Aubevoye, vous propose des services d'entretien et de réparation de vos vélos ( quelque soit le modèle ) afin de leur donner une 2ème vie et déviter quils terminent inutilement en déchetterie. 
Titulaire du CQP Technicicien / Mecanicien Cycles obtenu au CNPC de Paris, j'ai décidé de créer un Atelier Mobile dans le but de recréer un service de proximité aussi bien rural quurbain.  
## Comment ça marche ?
Lors d'un RDV pris avec Bicycl'Eure, vous amenez votre vélo à l'atelier ou Bicycl'Eure se déplace pour réparer votre vélo devant chez vous.
BicyclEure travaille dans le respect des gestes barrières.

View file

@ -0,0 +1,6 @@
# A propos de ce site
## Technologies
Pour les curieux, ce site est réalisé avec [Hugo](https://gohugo.io/)

View file

@ -0,0 +1,6 @@
---
title: Les dernières nouvelles
---
Ici vous trouverez des billets de blog rapportant les (bonnes !) dernières nouvelles de l'association et de son action autour de la chapelle de bethléem.

View file

@ -0,0 +1,40 @@
---
title: Annonce d'une assemblée générale constitutive d'une association autour de la Chapelle de Bethléem
date: 2022-09-10
---
Depuis la création du groupe Facebook dédié à la Chapelle de Bethléem, vous n'avez cessé d'être de plus en plus nombreux à témoigner votre intérêt.🙏
Cet intérêt s'est traduit par le souhait croissant de constituer une association de sauvegarde et de valorisation du site.
Nous avions à cet égard sondé vos intentions au printemps.
## ⭐ Le moment est venu de prendre rendez-vous.
Nous vous convions donc le samedi 24 septembre 2022 à 14 h 30, en la salle fête de Saint-Aubin sur Gaillon.
Nous vous y présenterons le projet d'association, auquel vous pourrez vous joindre comme membres fondateurs.
<!-- Nous vous remercions de bien vouloir nous indiquer par cet évènement si vous souhaitez assister à cette réunion de lancement. -->
## Le Projet d'association
Cette association culturelle et patrimoniale aura à cœur de préserver, promouvoir et valoriser sous tous ses aspects un patrimoine unique.
À cet égard, il sera notamment demandé aux membres fondateurs d'approuver les statuts de LEtoile de Bethléem - Association des Amis de la Chapelle de Bethléem dAubevoye, dont le projet d'article 2 propose l'objet social comme suit :
> LAssociation a pour objet de :
> - Contribuer à la sauvegarde et à la restauration de la Chapelle de Bethléem sise à Aubevoye, dans la commune administrative du Val dHazey (Eure) en Normandie ;
> - Promouvoir ce monument, particulièrement sa crypte unique, en approfondissant sa connaissance, en défendant son image et en assurant sa communication ;
> - Valoriser le site par des actions concourant à lentretien, à la promotion et à l'animation de ce patrimoine historique, culturel, religieux et naturel et de tout ce qui le constitue, qu'elle entend mieux faire connaître, apprécier et protéger.
>
> A cet égard, lAssociation reconnaît et sattache à préserver le caractère chrétien du monument, légué par son histoire, depuis sa fondation par le Cardinal Charles 1er de Bourbon.
## 👉 L'ordre du jour
- Présentation du projet,
- Adoption des statuts,
- Constitution des instances,
- Détermination du montant de la cotisation.
La chapelle compte sur vous ⛪

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 KiB

View file

@ -0,0 +1,21 @@
---
title: "Ils se sont rencontrés !"
date: 2022-09-28T20:00:00+02:00
featured_image:
src: ensemble.jpg
---
L'association existe ! ╰(*°▽°*)╯
Ce 24 septembre 2022, grâce au bienveillant accueil de l'association T'es pas cap ? et tout particulièrement de sa très active présidente, madame Jessica Jehan, assistée du soutien non moins précieux de madame Isabelle Roussel, l'Assemblée générale constitutive de l'Association des Amis de la chapelle de Bethléem a pu se tenir en ouverture du Salon du petit patrimoine local, dans la salle des fêtes de Saint-Aubin-sur-Gaillon 🎊
Une petite quarantaine de personne est venue suivre la réunion, au cours de laquelle a tout d'abord été brièvement rappelée l'histoire mouvementée de la chapelle, plusieurs fois malmenée, plusieurs fois restaurée depuis 1582, date de sa fondation par Charles 1er, cardinal de Bourbon. Aux noms des familles Mignot et Vilain qui conduisirent les deux dernières restaurations, respectivement dans les années 1890 et 1950, vient s'ajouter désormais celui de la famille Blondel, nouvelle protectrice du site que l'association a l'ambition de soutenir.
😴🤗 Si la rébarbative, mais nécessaire présentation des projets de statuts à reçu un accueil patient, compréhensif et approbateur, c'est néanmoins la nature du projet qui a bien sûr retenue toute l'attention de l'auditoire : apporter une assistance, fédérer les énergies, rechercher des financement pour sauvegarder, animer et promouvoir le site. Des actions de sécurisation des lieux et de mise hors d'eau sont nécessaires. Des actions plus symboliques sont également envisagées, comme la restauration de l'Etoile d'autel de la crypte. ⭐
C'est d'ailleurs en raison de la forte symbolique des deux étoiles, celles brisée et éparpillée de la crypte résumant l'état actuel de la chapelle, celle encore fièrement dressée au faîte du campanile, qui semble appeler au relèvement, que l'association se dénommera "L'étoile De Bethléem, association des amis de la chapelle de Bethléem d'Aubevoye."
🥳 Le public à manifesté à cet égard ses attentes et sa hâte de passer à l'action. C'est à la fois un encouragement et un rude défi pour le tout nouveau Conseil d'administration qui vous sera prochainement présenté.
Celui-ci aura en tous cas à cœur de faire tout son possible pour redonner son lustre au site, tout autant que pour donner corps à l'espérance bien vivace exprimée au cours de cette belle journée, placée sous le signe des étoiles. 🤩

View file

@ -0,0 +1,37 @@
---
title: Noël 2021
date: 2021-12-24
---
À la suite de notre article sur le rafraîchissement anonyme cet été de Notre Dame d'Aubevoye, nous espérions des réponses à différentes questions concernant la statue.
[Le récent article de l'Impartial](https://actu.fr/normandie/le-val-d-hazey_27022/eure-mais-qui-a-maquille-la-vierge-noire-d-aubevoye_47325455.html) qui lui a été consacré relève, hélas, de la rubrique des faits divers. Ce n'était pas l'une des réponses attendues.
Des actes regrettables y ont été commis, sans doute plus par désœuvrement et manque de repères que par réelle méchanceté.
Mais dans ce cas, comme dans le cas, nettement plus grave, du saccage de la chapelle de Bethléem à l'orée des années 2000, que d'énergies inutilement dépensées.
Nous le déplorons.
Nous pouvons rappeler que toute dégradation, tout acte de vandalisme est pénalement répréhensible.
Mais à la veille de fêter Noël, nous préférons croire en la véracité :
- qui de la phrase d'Hölderlin : « Là où croît le péril croît aussi ce qui sauve »,
- qui de la phrase de l'Evangile : « là où le pêché abonde, la grâce surabonde »
Nous préférons espérer que les énergies se canalisent de façon plus constructives, pour œuvrer à faire le bien, magnifier le beau, poursuivre le vrai.
Mieux même, nous souhaitons donner corps et vie à cette Esperance en appelant à contribuer, chacun avec nos talents, à relever la chapelle de Bethléem.
Ces dernières années, une communauté virtuelle s'est créée autour de la Chapelle. Celle-ci peut prendre la réalité d'une magnifique équipe pour œuvrer en lien avec les propriétaires a ce que le souvenir ne soit pas une nostalgie, mais une inspiration.
À l'heure des vœux, tel est le nôtre et il ne saurait que rester pieux s'il ne s'accompagne pas d'une volonté.
Que pouvons nous faire pour la chapelle de Bethléem ? Quel talent pouvons nous mettre à son service ?
Telle est la question à laquelle chacun se doit de répondre en son for interne.
Telle est la question à laquelle nous vous invitons à nous répondre pour envisager ce projet...
« Ce n'est pas parce les choses sont difficiles que nous n'osons pas, c'est parce que nous n'osons pas qu'elles sont difficiles. »
Bonnes fêtes de Noël !

View file

@ -0,0 +1,7 @@
---
title: Présent au super salon
---
Lorem ipsum dolor sit amet, *consectetur* adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

View file

@ -0,0 +1,4 @@
---
title: Informations de contact
---

3
content/tarifs/_index.md Normal file
View file

@ -0,0 +1,3 @@
# Grille tarifaire
Tarifs atelier 2021 (hors pièces éventuelles). Diagnostic Gratuit.

20
data/contact.yaml Normal file
View file

@ -0,0 +1,20 @@
name: "Laurent Gringoire"
phone: "+33 06 52 64 05 37"
email: "bicycleure@laposte.net"
website: "https://www.bicycleure.fr"
facebook:
name: "Bicycl'Eure"
url: https://www.facebook.com/profile.php?id=100064205644693
siret: "537577 785 00018"
# https://www.openstreetmap.org/node/9526690022
# 49.1755136, 1.3343608
address:
house_number: 30
street_name: Résidence des Trois Moulins
postal_code: 27940
quarter: Aubevoye
city: Le Val d'Hazey
location:
lat: 49.1755136
lng: 1.3343608

131
data/pricing.yaml Normal file
View file

@ -0,0 +1,131 @@
# Basé sur la plaquette 2021
# "Tarifs atelier 2021 (hors pièces éventuelles), Diagnostic Gratuit"
move:
- min: 0
max: 5
price: 0
- min: 5
max: 10
price: 10
- min: 10
max: 25
price: 15
forfait:
- name: "Forfait révision"
price: 35
components:
- name: "Serrage cintre, potence et poste de pilotage"
- name: "Serrage selle et tige de selle"
- name: "Pression des pneus"
- name: "Réglage freins"
- name: "Régalge dérailleurs avant et arrière"
- name: "Vérification pièces d'usure"
description: "Chaine, casette, plateaux, pneus, patins ou plaquettes de freins"
- name: "Lubrification de la transmission"
- name: "Dévoilage"
standalone:
- name: "Roues"
components:
- name: "Changement de pneu ou chambre à air"
variant: "Roue classique"
price: 7
- name: "Changement de pneu ou chambre à air"
variant: "Roue spéciale (avec moteur etc.)"
price: 19
- name: "Dévoilage roue"
price: 9
- name: "Réglage jeu de moyeu"
price: 7
- name: "Graissage moyeu et réglage du jeu"
price: 14
- name: "Changement de rayon et dévoilage (jusqu'a 3 rayons)"
price: 18
- name: "Direction"
components:
- name: "Réglage jeu de direction standard"
price: 6
- name: "Réglage jeu de direction Aheadset"
price: 9
- name: "Nettoyage et graissage jeu de direction"
price: 25
- name: "Changement jeu de direction"
price: 25
- name: "Changement cintre VTT, VTC, BMX"
price: 12
- name: "Changement cintre Route"
price: 12
- name: "Changement potence"
price: 12
- name: "Changement guidoline"
price: 9
- name: "Changement de grip"
price: 6
- name: "Changement de fourche"
price: 29
- name: "Transmission"
components:
- name: "Changement chaine"
price: 9
- name: "Changement casette et roue libre"
price: 9
- name: "Changement ou graissage boitier de pédalier"
price: 25
- name: "Changement pédales"
price: 6
- name: "Changement de pédalier"
price: 15
- name: "Changement et réglage manette dérailleur VTT/VTC"
price: 19
- name: "Guidoline Route"
price: 26
- name: "Changement et réglage dérailleur"
price: 19
- name: "Réglage 1 dérailleur"
price: 9
- name: "Réglage 2 dérailleurs"
price: 15
- name: "Changement de galet"
price: 12
- name: "Réglage 1 frein"
price: 9
- name: "Réglage 2 freins"
price: 15
- name: "Changement et réglage patins ou plaquettes"
price: 10
- name: "Changement disque"
price: 10
- name: "Changement levier de frein VTT/VTC"
price: 12
- name: "Changement d'étrier de frein"
price: 15
- name: "Changement de frein hydraulique VTT/VTC"
price: 15
- name: "Changement de frein hydraulique Route"
price: 26
- name: "Purge frein hydraulique"
price: 20
- name: "Changement ou nettoyage plaquettes"
price: 9
- name: "Divers"
components:
- name: "Changement de selle ou tige de selle"
price: 6
- name: "Pose d'un porte bagage"
price: 8
- name: "Pose d'une béquille"
price: 6
- name: "Pose d'un compteur"
price: 9
- name: "Pose d'un panier"
price: 6
- name: "Pose garde-boue"
price: 10
- name: "Forfait nettoyage"
price: 10

1
data/site.yaml Normal file
View file

@ -0,0 +1 @@

3
layouts/404.html Normal file
View file

@ -0,0 +1,3 @@
{{ define "main" }}
<h1>Page non trouvé</h1>
{{ end }}

View file

@ -0,0 +1,11 @@
{{ if .Title }}
<figure>
<img src="{{ .Destination | safeURL }}" alt="{{ .Text }}" />
<figcaption>{{ .Title }}</figcaption>
</figure>
{{ else }}
<figure>
<img src="{{ .Destination | safeURL }}" alt="{{ .Text }}" />
</figure>
{{ end }}

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
<head>
{{ partial "head.html" . }}
{{- block "head" . -}}{{ end }}
</head>
<body>
<div class="footer-push">
{{ partial "header" . }}
{{ block "main" . }}{{ end }}
</div>
{{ partial "footer" . }}
</body>
</html>

View file

@ -0,0 +1,26 @@
{{ define "main" }}
<main class="page-container">
{{ $listtitle := .Title }}
{{ if or .Title .Content }}
<div>
{{ with .Title }}<h1>{{ . }}</h1>{{ end }}
{{ with .Content }}<div>{{ . }}</div>{{ end }}
</div>
{{ end }}
<ul>
{{ range .Paginator.Pages }}
<li>
<div class="post-title">
{{ if eq $listtitle "Posts" }}
{{ .Date.Format "2006-01-02" }} <a href="{{ .RelPermalink }}">{{.Title }}</a>
{{ else }}
<a href="{{ .RelPermalink }}">{{.Title }}</a>
{{ end }}
</div>
</li>
{{ end }}
</ul>
{{ partial "pagination.html" . }}
</main>
{{ end }}

View file

@ -0,0 +1,32 @@
{{ define "main" }}
<main class="page-container">
<article class="article">
<h1>{{ .Title }}</h1>
{{ with .Date }}
<div>Publié le <b><time>{{ . | time.Format ":date_full" }}</time></b></div>
{{ end }}
{{ if .Params.featured_image }}
{{ $featuredImage := .Resources.GetMatch (.Params.featured_image.src | safeURL) }}
{{ if $featuredImage }}
{{ $featuredImage = $featuredImage.Resize "600x" }}
<figure>
<img alt="" src="{{ $featuredImage.RelPermalink }}" />
{{ with .Params.featured_image.caption }}
<figcaption>{{ . }}</figcaption>
{{ end }}
</figure>
{{ end }}
{{ end }}
{{ range .Params.tags }}
<a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">{{ . }}</a>
{{ end }}
<div>
{{ .Content }}
</div>
</article>
</main>
{{ end }}

View file

@ -0,0 +1,13 @@
<article>
<h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
<b><time>{{ .Date.Format (default "2006-01-02 15:04:05" .Site.Params.dateFmt) }}</time></b>
{{ range .Params.tags }}
<a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">{{ . }}</a>
{{ end }}
<div>
{{ .Summary }}
{{ if .Truncated }}
<a href="{{ .Permalink }}">Read more...</a>
{{ end }}
</div>
</article>

View file

@ -0,0 +1,53 @@
{{ define "main" }}
<main class="page-container">
{{ $listtitle := .Title }}
{{ if or .Title .Content }}
<div>
{{ with .Title }}<h1>{{ . }}</h1>{{ end }}
{{ with .Content }}<div>{{ . }}</div>{{ end }}
</div>
{{ end }}
<ul class="news-list">
{{ range .Paginator.Pages }}
<li class="news-item">
<a href="{{ .RelPermalink }}" class="news-item__image">
{{ $featuredImage := (resources.Get (printf "%s" ("cover/cover.jpg" | safeURL))) }}
{{ if .Params.featured_image }}
{{ $featuredImage = .Resources.GetMatch (.Params.featured_image.src | safeURL) }}
{{ end }}
{{ $featuredImage := $featuredImage.Resize "450x" }}
<figure>
<img alt="" src="{{ $featuredImage.RelPermalink }}" />
{{ with .Params.featured_image.caption }}
<figcaption>{{ . }}</figcaption>
{{ end }}
</figure>
</a>
<div class="news-item__content">
<h2
class="news-item__title"
>
<a
href="{{ .RelPermalink }}"
>
{{.Title }}
</a>
</h2>
<p class="news-item__date">
{{ $date := .Date.Format "2006-01-02" }}
<time datetime="{{ $date }}">
{{ time.Format "2 January 2006" $date }}
</time>
</p>
<div class="news-item__summary">
{{ .Summary }}...
</div>
</div>
</li>
{{ end }}
</ul>
{{ partial "pagination.html" . }}
</main>
{{ end }}

View file

@ -0,0 +1,36 @@
{{ define "main" }}
<main class="page-container">
<article class="article">
<h1>{{ .Title }}</h1>
{{ if .Date }}
<div class="article__date">
Publié le
{{ $date := .Date.Format "2006-01-02" }}
<time date="{{ $date }}">{{ time.Format "2 January 2006" $date }}</time>
</div>
{{ end }}
{{ if .Params.featured_image }}
{{ $featuredImage := .Resources.GetMatch (.Params.featured_image.src | safeURL) }}
{{ if $featuredImage }}
{{ $featuredImage = $featuredImage.Resize "600x" }}
<figure class="article__featured-image">
<img alt="" src="{{ $featuredImage.RelPermalink }}" />
{{ with .Params.featured_image.caption }}
<figcaption>{{ . }}</figcaption>
{{ end }}
</figure>
{{ end }}
{{ end }}
{{ range .Params.tags }}
<a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">{{ . }}</a>
{{ end }}
<div>
{{ .Content }}
</div>
</article>
</main>
{{ end }}

View file

@ -0,0 +1,16 @@
{{ define "main" }}
<main class="page-container">
<h1>Informations de contact</h2>
<div class="columns-two">
<div>
{{ partial "contact-card" }}
</div>
<div>
<!-- https://www.openstreetmap.org/node/9526690022 -->
<!-- 49,1755136, 1,3343608 -->
{{ partial "slippy-map" (dict "lat" 49.175513 "lng" 1.33436 "zoom" 15) }}
</div>
</div>
</main>
{{ end }}

53
layouts/index.html Normal file
View file

@ -0,0 +1,53 @@
{{ define "main" }}
<main class="page-container">
<div class="landing">
<div class="landing-one">
<div class="landing-brand">
<!-- <img class="half-wheel-logo" src="/half_wheel_logo.svg" alt="Demi Roue" /> -->
<div class="brand__logo landing-half-wheel-logo">
{{ partial "svg" "half_wheel_logo" }}
</div>
<h1 class="brand__name">Bicycl'Eure</h1>
<div class="brand__role1-container">
<h2 class="text">Atelier mobile</h2>
</div>
<div class="brand__role2">Réparation &amp; Entretien - Toutes marques</div>
<!-- <img class="full-logo" src="/full_logo.jpg" alt="Logo complet" /> -->
</div>
<div class="landing-description">
<!-- <p> -->
<!-- Bicycl'Eure est un atelier mobile de réparation et d'entretien de VÉLOS. Sur simple rendez-vous et après un diagnostic gratuit, Laurent, technicien cycle qualifié, redonnera vie à votre monture ! -->
<!-- </p> -->
<!-- <p>Éco-Responsable et Économique !</p> -->
{{ .Content }}
</div>
</div>
<!-- <div class="contact-card-container"> -->
<!-- <div class="contact-card"> -->
<!-- <div class="address"> -->
<!-- <div> -->
<!-- 30 Résidence des Trois Moulins -->
<!-- </div> -->
<!-- <div> -->
<!-- 27940 Aubevoye Le Val d'Hazey -->
<!-- </div> -->
<!-- </div> -->
<!-- <div class="legal-id"> -->
<!-- SIRET 537577 785 00018 -->
<!-- </div> -->
<!-- <div class="phone"> -->
<!-- 06 52 64 05 37 -->
<!-- </div> -->
<!-- </div> -->
<!-- </div> -->
</div>
{{/*
{{ $paginator := .Paginate (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) }}
{{ range $paginator.Pages }}
{{ .Render "summary" }}
{{ end }}
{{ partial "pagination.html" . }}
*/}}
</main>
{{ end }}

View file

@ -0,0 +1,37 @@
<dl class="card contact-card">
<dt>
Nom
</dt>
<dd>
{{ site.Data.contact.name }}
</dd>
<dt>Téléphone</dt>
<dd>
<a href="tel:{{ site.Data.contact.phone }}">{{ site.Data.contact.phone }}</a>
</dd>
<dt>Adresse électronique</dt>
<dd>
<a href="mailto:{{ site.Data.contact.email }}">{{ site.Data.contact.email }}</a>
</dd>
<dt>Facebook</dt>
<dd>
<a href="{{ site.Data.contact.facebook.url }}">{{ site.Data.contact.facebook.name }}</a>
</dd>
<dt>Adresse</dt>
<dd>
{{ site.Data.contact.address.house_number }}
{{ site.Data.contact.address.street_name }}<br>
{{ site.Data.contact.address.postal_code }}
{{ site.Data.contact.address.quarter }}
{{ site.Data.contact.address.city }}
</dd>
<dt>SIRET</dt>
<dd>
{{ site.Data.contact.siret }}
</dd>
</dl>

View file

@ -0,0 +1,13 @@
<!-- Use site subtitle by default -->
{{ $description := .Site.Params.sidebar.subtitle }}
{{ if .Description }}
<!-- Page description exists -->
{{ $description = .Description }}
{{ else if .IsPage }}
<!-- Use page summary -->
{{ $description = .Summary }}
{{ end }}
{{ return ($description | plainify)}}

View file

@ -0,0 +1,39 @@
{{- $title := .Title -}}
{{- $siteTitle := .Site.Title -}}
{{- if .IsHome -}}
<!-- Homepage, and it's pagination -->
<!-- Build paginator -->
{{ $pages := where .Site.RegularPages "Section" "in" .Site.Params.mainSections }}
{{ $notHidden := where .Site.RegularPages "Params.hidden" "!=" true }}
{{ $filtered := ($pages | intersect $notHidden) }}
{{ $pag := .Paginate ($filtered) }}
{{ if .Paginator.HasPrev }}
<!-- Paginated. Append page number to title -->
{{ $title = printf "%s - %s" .Paginator $siteTitle }}
{{ else }}
{{ $title = $siteTitle}}
{{ end }}
{{- else if eq .Kind "term" -}}
<!-- Taxonomy page -->
<!-- Build paginator -->
{{ $notHidden := where .Pages "Params.hidden" "!=" true }}
{{ $pag := .Paginate ($notHidden) }}
<!-- {TAXONOMY_TYPE}: {TAXONOMY_TERM} -->
{{ $title = slice (title .Data.Singular) ": " $title }}
{{ if .Paginator.HasPrev }}
<!-- Add page number-->
{{ $title = $title | append " - " .Paginator }}
{{ end }}
{{ $title = $title | append " - " $siteTitle }}
{{ $title = delimit $title "" }}
{{- end -}}
{{ return $title }}

View file

@ -0,0 +1,7 @@
<footer class="site-footer">
<div class="site-footer__content page-container">
<a href="/"><b>{{ .Site.Title }}</b></a>.
<a href="/a-propos-du-site">A propos de ce site</a>.
<a href="/contact">Nous contacter</a>.
</div>
</footer>

View file

@ -0,0 +1,29 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
{{- $description := partialCached "data/description" . .RelPermalink -}}
<meta name="description" content="{{ $description }}">
{{- with .Site.Params.author -}}
<meta name="author" content="{{ . }}">
{{ end }}
{{- $title := partialCached "data/title" . .RelPermalink -}}
<title>{{ $title }}</title>
<link rel="canonical" href="{{ .Permalink }}">
{{ partial "opengraph/include.html" . }}
{{ range .AlternativeOutputFormats }}
<link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
{{ end }}
{{ with .Site.Params.favicon }}
<link rel="shortcut icon" href="{{ . }}" />
{{ end }}
<!-- Note: j'ai galérer à rajouter du scss car en fait y'avait déja une variable $style de définit plus haut... -->
{{ $style := resources.Get "sass/main.scss" | resources.ToCSS | resources.Fingerprint }}
<link rel="stylesheet" href="{{ $style.Permalink }}" integrity="{{ $style.Data.Integrity }}">

View file

@ -0,0 +1,20 @@
<header class="site-header">
<div class="site-header__content page-container">
<a class="site-header__title" href="/">
<img
class="site-header__logo"
src=""
alt="Logo Bicycleure"
/>
</a>
<nav class="site-header__nav">
<a href="/tarifs">Tarifs</a>.
<a href="/contact">Contact</a>.
<a href="/actualites">Actualités</a>.
<a href="/avis">Avis</a>.
{{ range .Site.Menus.main }}
<a href="{{ .URL | relURL }}"><b>{{ .Name }}</b></a>.
{{ end }}
</nav>
</div>
</header>

View file

@ -0,0 +1,63 @@
<!-- Modified to have the featured image field as a dict (being able to specify meta data and display option for image) -->
{{ $result := dict "exists" false "permalink" nil "resource" nil "isDefault" false }}
{{ $imageField := "featured_image" }}
{{ $imageValue := index .Context.Params $imageField }}
{{ printf "%#v" "hello debu" }}
{{ if $imageValue }}
{{ $imageValue := index $imageValue "src" }}
<!-- If page has `image` field set -->
{{ $result = merge $result (dict "exists" true) }}
{{ $url := urls.Parse $imageValue }}
{{ if or (eq $url.Scheme "http") (eq $url.Scheme "https") }}
<!-- Is an external image -->
{{ $result = merge $result (dict "permalink" $imageValue) }}
{{ else }}
{{ $pageResourceImage := .Context.Resources.GetMatch (printf "%s" ($imageValue | safeURL)) }}
{{ if $pageResourceImage }}
<!-- If image is found under page bundle -->
{{ $result = merge $result (dict "permalink" $pageResourceImage.RelPermalink) }}
<!-- Disable SVG image processing, not supported by Hugo -->
{{ if ne (path.Ext $imageValue) ".svg" }}
{{ $result = merge $result (dict "resource" $pageResourceImage) }}
{{ end }}
{{ else }}
<!-- Can not find the image under page bundle. Could be a relative linked image -->
{{ $result = merge $result (dict "permalink" (relURL $imageValue)) }}
{{ end }}
{{ end }}
{{ else }}
<!-- Type arg is set, check for defaultImage setting -->
{{ $defaultImageSetting := .Context.Site.Params.defaultImage }}
{{ $result = merge $result (dict "isDefault" true) }}
{{ $result = merge $result (dict "exists" true) }}
{{ if $defaultImageSetting.local }}
{{ $siteResourceImage := resources.GetMatch (printf "%s" ($defaultImageSetting.src | safeURL)) }}
{{ if $siteResourceImage }}
<!-- Try search image under site's assets folder -->
{{ $result = merge $result (dict "permalink" $siteResourceImage.RelPermalink) }}
{{ $result = merge $result (dict "resource" $siteResourceImage) }}
{{ else }}
<!-- Can not find the image -->
{{ errorf "Failed loading image: %q" $defaultImageSetting.src }}
{{ $result = merge $result (dict "exists" false) }}
{{ end }}
{{ else }}
<!-- External image -->
{{ $result = merge $result (dict "permalink" (relURL $defaultImageSetting.src)) }}
{{ end }}
{{ end }}
{{ return $result }}

View file

@ -0,0 +1,54 @@
<div class="gallery">
<div class="gallery__side">
{{ $listtitle := .Title }}
{{ if or .Title .Content }}
<div>
{{ with .Title }}<h1>{{ . }}</h1>{{ end }}
{{ with .Content }}<div>{{ . }}</div>{{ end }}
</div>
{{ end }}
<p class="gallery-tags__title">Filtrer par étiquettes :</p>
<ul class="gallery-tags__list tags-list">
{{- if eq (.Scratch.Get "image_list_context") "imtags" -}}
<li class="gallery-tags__item tags-list__item">
<a href="/images">Tout</a>
</li>
{{- end -}}
{{- range .Site.Taxonomies.imtags -}}
<li class="gallery-tags__item tags-list__item">
<a href="{{ .Page.RelPermalink }}">{{ .Page.Title }}</a>
</li>
{{- end -}}
</ul>
</div>
<div class="gallery__items-container">
<div class="gallery__items">
{{ range $item := (.Paginator 8).Pages }}
<a class="gallery__item" href="{{ .RelPermalink }}">
{{ $image := .Resources.GetMatch "original.jpg" }}
{{ $image := $image.Resize "x350" }}
{{ with $image }}
<img
class="gallery__image"
title="{{ $item.Title }}"
src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}"
/>
{{ end }}
{{/*
<div class="post-title">
{{ if eq $listtitle "Posts" }}
{{ .Date.Format "2006-01-02" }} <a href="{{ .RelPermalink }}">{{.Title }}</a>
{{ else }}
<a href="{{ .RelPermalink }}">{{.Title }}</a>
{{ end }}
</div>
*/}}
</a>
{{ end }}
</div>
{{ partial "pagination.html" . }}
</div>
</div>

View file

@ -0,0 +1,42 @@
{{- $title := partialCached "data/title" . .RelPermalink -}}
{{- $description := partialCached "data/description" . .RelPermalink -}}
<meta property='og:title' content='{{ $title }}'>
<meta property='og:description' content='{{ $description }}'>
<meta property='og:url' content='{{ .Permalink }}'>
<meta property='og:site_name' content='{{ .Site.Title }}'>
<meta property='og:type' content='
{{- if .IsPage -}}
article
{{- else -}}
website
{{- end -}}
'>
<meta property='og:locale' content='{{ .Site.LanguageCode }}'>
{{- if .IsPage -}}
<meta property='article:section' content='{{ .Section | title }}' />
{{- range .Params.tags -}}
<meta property='article:tag' content='{{ . }}' />
{{- end -}}
{{- end -}}
{{- if .IsPage -}}
{{- if not .Date.IsZero -}}
<meta property='article:published_time' content='{{ .Date.Format "2006-01-02T15:04:05-07:00" | safeHTML }}'/>
{{- end -}}
{{- if not .Lastmod.IsZero -}}
<meta property='article:modified_time' content='{{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }}'/>
{{- end -}}
{{- else -}}
{{- if not .Site.LastChange.IsZero -}}
<meta property='og:updated_time' content='{{ .Site.LastChange.Format " 2006-01-02T15:04:05-07:00 " | safeHTML }}'/>
{{- end -}}
{{- end -}}
{{ $image := partialCached "helpers/image" (dict "Context" . "Type" "opengraph") .RelPermalink "opengraph" }}
{{- if $image.exists -}}
<meta property='og:image' content='{{ absURL $image.permalink }}' />
{{- end -}}

View file

@ -0,0 +1,19 @@
<div class="pagination-nav">
<div>
{{ if .Paginator.HasPrev }}
<a class="pagination-nav__prev" href="{{ .Paginator.Prev.URL }}">
Page précédente
</a>
{{ end }}
</div>
<div class="pagination-nav__page">
{{ .Paginator.PageNumber }} de {{ .Paginator.TotalPages }}
</div>
<div>
{{ if .Paginator.HasNext }}
<a class="pagination-nav__next" href="{{ .Paginator.Next.URL }}">
Page suivante
</a>
{{ end }}
</div>
</div>

View file

@ -0,0 +1,14 @@
<aside>
<div>
<div>
<h3>LATEST POSTS</h3>
</div>
<div>
<ul>
{{ range first 5 (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) }}
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
{{ end }}
</ul>
</div>
</div>
</aside>

View file

@ -0,0 +1,16 @@
<div class="maplibre-map" id="short-code-slippy-map"></div>
<script src="https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.js"></script>
<link href="https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.css" rel="stylesheet" />
<script>
var map = new maplibregl.Map({
container: 'short-code-slippy-map',
style:
'https://api.maptiler.com/maps/streets/style.json?key=get_your_own_OpIi9ZULNHzrESv6T2vL',
center: [{{ .lng}}, {{ .lat }}],
zoom: {{ .zoom }}
});
var marker = new maplibregl.Marker()
.setLngLat([{{ .lng }}, {{ .lat }}])
.addTo(map);
</script>

View file

@ -0,0 +1,7 @@
{{ $svg := . }}
{{ $class := print $svg "-icon" }}
{{ $match := "<svg (.*)?>(.*)</svg>" }}
{{ $replaceWith := printf `<svg class="%s" ${1}>${2}</svg>` $class }}
{{ return (replaceRE $match $replaceWith (printf "/assets/images/%s.svg" $svg | readFile) | safeHTML) }}

View file

@ -0,0 +1,16 @@
<div class="maplibre-map" id="short-code-slippy-map"></div>
<script src="https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.js"></script>
<link href="https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.css" rel="stylesheet" />
<script>
var map = new maplibregl.Map({
container: 'short-code-slippy-map',
style:
'https://api.maptiler.com/maps/streets/style.json?key=get_your_own_OpIi9ZULNHzrESv6T2vL',
center: [{{ .Get "lng" }}, {{ .Get "lat" }}],
zoom: {{ .Get "zoom" }}
});
var marker = new maplibregl.Marker()
.setLngLat([{{ .Get "lng" }}, {{ .Get "lat" }}])
.addTo(map);
</script>

View file

@ -0,0 +1,57 @@
{{ define "main" }}
<main class="large-container">
{{ .Content }}
<div class="pricing-layout">
<div>
<div class="moves">
<h2>Forfait déplacement</h2>
<ul>
{{ range $.Site.Data.pricing.move }}
<li class="move-item">
De {{ .min }} à {{ .max }} km : {{ if eq .price 0 }}Gratuit{{ else }}{{ .price }} €{{ end }}
</li>
{{ end }}
</ul>
</div>
<div class="forfaits">
{{ range $.Site.Data.pricing.forfait }}
<div class="forfait">
<h2>{{ .name }}</h2>
<div class="forfait-price">{{ .price }} €</div>
<ul>
{{ range .components }}
<li>{{ .name }}</li>
{{ end }}
</ul>
</div>
{{ end }}
</div>
</div>
<div class="operations-container">
<h2>Liste des opérations</h2>
<div class="operations-mosaic">
{{ range $.Site.Data.pricing.standalone }}
<div class="operations-category">
<h3>{{ .name }}</h3>
<table class="operations-table">
<tr>
<th>Opération</th>
<th class="operation-price">Prix</th>
</tr>
{{ range .components }}
<tr>
<td>{{ .name }}</td>
<td class="operation-price">{{ .price }} €</td>
</tr>
{{ end }}
</table>
</div>
{{ end }}
</div>
</div>
</div>
</main>
{{ end }}

BIN
static/Teko-Bold.ttf Normal file

Binary file not shown.

BIN
static/Teko-Light.ttf Normal file

Binary file not shown.

BIN
static/Teko-Medium.ttf Normal file

Binary file not shown.

BIN
static/Teko-Regular.ttf Normal file

Binary file not shown.

BIN
static/Teko-SemiBold.ttf Normal file

Binary file not shown.