Merge pull request 'Supprime les fichiers de l'ancien site' (#9) from supprimer-hugo into main

Reviewed-on: #9
This commit is contained in:
distorsion 2025-01-24 23:27:18 +01:00
commit 12b9954891
117 changed files with 1 additions and 5751 deletions

1
.envrc
View file

@ -1 +0,0 @@
use nix

6
.gitmodules vendored
View file

@ -1,6 +0,0 @@
[submodule "themes/ananke"]
path = old-hugo-site/themes/ananke
url = https://github.com/theNewDynamic/gohugo-theme-ananke.git
[submodule "themes/osprey"]
path = old-hugo-site/themes/osprey
url = https://github.com/tomanistor/osprey.git

View file

@ -114,4 +114,4 @@ partagés.
## Ancien site ## Ancien site
Avant, on avait un site static généré avec [Hugo](https://gohugo.io). Les Avant, on avait un site static généré avec [Hugo](https://gohugo.io). Les
sources sont archivées dans [old-hugo-site](./old-hugo-site). sources sont archivées dans l'historique de git.

View file

@ -1,16 +0,0 @@
Bienvenue dans le dépôt git du site web de la distorsion.
Pour vous rajouter dans la liste des membres, placez une image de profil dans :
static/images/members/
Ensuite, éditez votre profil dans:
content/members/prénom.md
Pour tester :
```
hugo server
```
La commande retourne une url ( typiquement http://localhost:1313/ ) que l'on
peut ouvrir dans un navigateur web. Si tout est ok, on peux commiter et pusher.
Chaque push rebuild automatiquement le site et upload les fichiers dans le
bucket deuxfleurs qui nous héberge !

View file

@ -1,7 +0,0 @@
+++
title = "{{ replace .TranslationBaseName "-" " " | title }}"
date = {{ .Date }}
description = ""
image = ""
draft = true
+++

View file

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

View file

@ -1,10 +0,0 @@
+++
title = "{{ replace .TranslationBaseName "-" " " | title }}"
image = ""
alt = ""
color = ""
link = ""
description = ""
weight = 0
draft = true
+++

View file

@ -1,29 +0,0 @@
+++
title = 'À propos'
date = 2023-10-28T11:55:47+02:00
draft = false
+++
**La Distorsion: un hackerspace pour Paris-Saclay tourné vers le recyclage et le partage de savoirs**
Le territoire de Paris-Saclay regroupe une communauté inédite de passionné·e·s de sciences et de technologies. Face aux bouleversements climatiques, il nous faut repenser notre rapport aux sciences et techniques et établir des ponts entre sciences et société. Lavenir est au réemploi, à la transmission et la réappropriation des savoirs : en un mot au **hacking**. Nous proposons de créer à Paris-Saclay un lieu où lon puisse **expérimenter, construire, réemployer**, recycler, se rencontrer, apprendre et partager : un **hackerspace**.
**Nous voulons proposer** un lieu d'expérimentation culturel et technique pour **favoriser les rencontres** de la communauté Paris-Saclay avec :
- Du **matériel et des savoirs** vivants à **partager**
- Des **animations** régulières (ateliers, conférences, performances artistiques, etc...)
- Une **ressourcerie** "high tech" pour donner une **nouvelle vie** aux "déchets" techniques valorisables des facultés et laboratoires
Ouvert à toutes et tous (étudiant·e·s, scientifiques, habitants du plateau,
artistes, bricoleur·euse·s...), le hackerspace est un lieu de rencontre,
d'expérimentation et de partage des connaissances, qui cherche à dépasser les
frontières entre les disciplines et les niveaux dexpertise.
Et comme créer cest souvent redonner vie, il est fréquent dy détourner,
réparer ou réemployer des objets afin délargir ou redéfinir leurs usages
originels ou tout simplement prolonger leur durée de vie.
Etudiant·e·s ou personnels, nous arpentons le campus de Paris-Saclay depuis ses
premiers jours. Entouré·e·s de passionné·e·s de nouvelles technologies nous
aimerions contribuer à l'articulation des savoirs académiques et des enjeux
sociétaux.

View file

@ -1,13 +0,0 @@
+++
title = "Accompagnement permanance anumby"
date = 2024-01-02T22:44:12+02:00
description = ""
image = "blog/anumby.png"
draft = false
+++
Nous avons rejoins l'anumby lors de ses permanances le mardi de 18H à 21H au centre Marcel Pagnol à Bures-sur-Yvette.
Cela nous permet de nous retrouver régulièrement dans un lieu défini, et des échanges autour de la robotique et des systèmes embarqués.
[https://www.anumby.org/](anumby.org) pour en savoir plus sur l'anumby

View file

@ -1,13 +0,0 @@
+++
title = "Local au fablab upsaclay"
date = 2024-05-20T19:26:03+02:00
description = "Nouveau lieu"
image = "blog/fablab-upsaclay.png"
draft = false
+++
C'est avec plaisir que nous annoncons avoir trouvé un local: la distorsion est maintenant hébergée par le fablab upsaclay, situé au bâtiment 660 dans le quartier de Moulon à Gif-sur-Yvette.
Nous assurons régulièrement la présence le jeudi après-midi jusqu'à 20H, heure de fermeture du lieu.
[page du fablab](https://www.fablab-projet.universite-paris-saclay.fr/) pour un aperçu

View file

@ -1,10 +0,0 @@
+++
title = "Entraide informatique"
date = 2023-10-31T12:44:16+02:00
description = ""
image = "blog/pmu-session.jpg"
draft = false
+++
Vous avez des problèmes d'ordinateur ? Venez au tabac de la mairie de Bures-sur-Yvette pendant la permanence d'entraide informatique pour que l'on cherche des solutions ensemble !
{{< marquee >}}<a href="/images/flyer-entraide.png">flyer</a>{{< /marquee >}}

View file

@ -1,9 +0,0 @@
+++
title = "Réemploi du matériel professionel"
date = 2022-11-08T13:12:05+02:00
description = ""
image = "blog/recup.jpg"
draft = false
+++
Le matériel n'étant plus intéressant par le contexte professionnel a souvent d'autres utilité, et nous cherchons à le récupérer pour éduquer, expérimenter ou l'utiliser au sein de la distorsion. Depuis plus d'un an nous cherchons à sauver le matériel qui pourrait avoir une nouvelle vie.

View file

@ -1,11 +0,0 @@
+++
title = "Site web"
date = 2023-10-28T16:24:42+02:00
description = ""
image = "logo.svg"
draft = false
+++
Nous avons mis en place ce site web en utilisant le CMS (Content management system, gestion de contenu) [hugo](https://gohugo.io/). Ce dernier est un logiciel qui permet à partir de fichier décrits en [markdown](https://fr.wikipedia.org/wiki/Markdown), une syntaxe simple permettant de se concentrer sur le contenu, pour générer des pages web.
Édité depuis un dépôt git (outil permetant le travail à plusieurs et la gestion des versions), les modifications sont automatiquement mises en ligne grâce à [drone](https://www.drone.io/). On appelle ce procédé l'intégration continue (CI).

View file

@ -1,11 +0,0 @@
+++
title = "Participation aux universités d'automne de la labomedia"
date = 2023-11-07T16:24:36+02:00
description = ""
image = "blog/interhack-labomedia-2023.png"
draft = false
+++
Plusieurs membres de la distorsion ont contribué à l'organisation et aux ateliers proposés par la labomédia à Orléans.
Organisés dans la volonté de faire se rejoindre des membres de hackerspaces à travers la france dans des "Universités" conviviales où règnent la transmission de savoir et les interactions techniques. De la fonte de métaux au micro-ondes à la vulgarisation de sécurité informatique, c'est un moment convivial d'apprentissage.
Plus d'informations sur le site de la [labomedia](https://labomedia.org/du-2-au-5-novembre-2023-universites-dautomne-de-linterhack-a-la-labomedia-appel-a-participation/).

View file

@ -1,10 +0,0 @@
+++
title = "Participation aux universités d'hiver au BIB"
date = 2023-02-28T16:24:36+02:00
description = ""
image = "blog/interhack-bib-2023.png"
draft = false
+++
Les interactions de l'université des 4 saisons au hackerspace [Le BIB](https://www.lebib.org/) ont été le point d'ancrage de l'établissement de la Distorsion.
Le projet nous tenait à coeur, et les différents échanges ainsi que la forte dynamique nous ont motivé à nous regrouper et agir pour que le plateau de Saclay puisse disposer d'un lieu enclin à la réappropriation du matériel et le questionnement des usages.

View file

@ -1,10 +0,0 @@
+++
title = "Adrien"
image = "members/JJ.jpg"
alt = ""
color = ""
link = ""
description = "Administrateur systèmes et réseaux de l'UMR GQE - Le moulon. Arrivé à la ferme du moulon il y a 7 ans, aujourd'hui à l'IDEEV."
weight = 1
draft = false
+++

View file

@ -1,10 +0,0 @@
+++
title = "Armaël"
image = "members/armael.jpg"
alt = ""
color = ""
link = "http://gallium.inria.fr/~agueneau/"
description = "Chercheur en Langages de Programmation @ Inria Saclay"
weight = 3
draft = false
+++

View file

@ -1,9 +0,0 @@
+++
title = "Etienne"
image = "members/Et.jpg"
alt = ""
color = ""
description = "Ingénieur de recherche, ex-étudiant et thésard en physique à Paris-Saclay. Attaché au campus et à sa vie étudiante"
weight = 3
draft = false
+++

View file

@ -1,10 +0,0 @@
+++
title = "Alex"
image = "members/lx.png"
alt = ""
color = ""
link = "https://adnab.me/"
description = "Développeur indépendant de logiciels libres, membre du CHATON Deuxfleurs."
weight = 2
draft = false
+++

Binary file not shown.

View file

@ -1,135 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="203.16354mm"
height="66.328529mm"
viewBox="0 0 203.16354 66.328529"
version="1.1"
id="svg1022"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="logo.svg"
inkscape:export-filename="/home/varaya/Personal/distortion/static/images/distortion-logo.png"
inkscape:export-xdpi="106.45796"
inkscape:export-ydpi="106.45796"
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="namedview1024"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="1.0179639"
inkscape:cx="316.80888"
inkscape:cy="-26.032357"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="g1188" />
<defs
id="defs1019" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-7.1067797,-67.930109)">
<g
id="g1179">
<path
d="m 30.557856,95.659247 h 1.998134 v 13.022443 h 7.09683 v 1.67428 h -9.094964 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path16" />
<path
d="m 47.486956,104.81348 h -0.59937 c -1.056922,0 -1.854905,0.18767 -2.392186,0.56091 -0.531988,0.36795 -0.797983,0.91934 -0.797983,1.65383 0,0.66287 0.201083,1.17827 0.600781,1.54587 0.401108,0.36689 0.954969,0.55139 1.663347,0.55139 0.997655,0 1.78188,-0.34466 2.352322,-1.03364 0.571853,-0.69568 0.859719,-1.65347 0.866775,-2.87443 v -0.40393 z m 3.514019,-0.74824 v 6.29073 h -1.820333 v -1.63442 c -0.38735,0.65617 -0.8763,1.14123 -1.466144,1.45662 -0.584553,0.30868 -1.296812,0.4632 -2.13607,0.4632 -1.123244,0 -2.018947,-0.31574 -2.687108,-0.94545 -0.669925,-0.63676 -1.004711,-1.48696 -1.004711,-2.54917 0,-1.22661 0.410633,-2.15971 1.230489,-2.79612 0.826911,-0.63535 2.03835,-0.95356 3.632552,-0.95356 h 2.430992 v -0.2868 c -0.0071,-0.87913 -0.230011,-1.51448 -0.669572,-1.90853 -0.439914,-0.40111 -1.141236,-0.60078 -2.105731,-0.60078 -0.617361,0 -1.240366,0.0882 -1.870075,0.26599 -0.631119,0.1778 -1.244247,0.43674 -1.841147,0.77717 v -1.810807 c 0.669925,-0.256116 1.309158,-0.446263 1.919817,-0.570441 0.61595,-0.132292 1.213908,-0.197203 1.791405,-0.197203 0.912284,0 1.689453,0.133703 2.33292,0.403931 0.649111,0.268816 1.174044,0.67239 1.573741,1.21003 0.249414,0.32773 0.427214,0.73589 0.531989,1.22061 0.104775,0.47978 0.156986,1.2005 0.156986,2.165 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path18" />
<path
d="m 65.885372,108.17192 c 2.23626,0 3.87068,-0.54857 4.90573,-1.64394 1.03611,-1.10526 1.75013,-3.09528 2.14136,-5.97112 0.39547,-2.902302 0.22472,-4.901846 -0.51117,-5.998632 -0.72778,-1.103842 -2.21333,-1.656292 -4.45806,-1.656292 h -1.26223 l -2.07822,15.269984 z m 2.42782,-17.454384 c 2.99861,0 5.10011,0.799394 6.30343,2.395008 1.20297,1.595967 1.57621,4.076347 1.11725,7.444316 -0.45614,3.34998 -1.50178,5.82224 -3.14043,7.41786 -1.63583,1.5875 -3.95358,2.38125 -6.95219,2.38125 h -3.98533 l 2.67194,-19.638434 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path20" />
<path
d="m 80.094202,99.331664 h 4.6355 l -1.67675,9.616016 h 3.59234 l -0.2466,1.40829 h -8.99583 l 0.24518,-1.40829 h 3.59269 l 1.43298,-8.20879 h -2.82469 z m 3.5747,-4.2926 h 1.81046 l -0.40076,2.294466 h -1.81081 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path22" />
<path
d="m 99.886802,99.71478 -0.40922,1.77236 c -0.44768,-0.30198 -0.91758,-0.52776 -1.40829,-0.67945 -0.4893,-0.15029 -1.00753,-0.22614 -1.55152,-0.22614 -0.82021,0 -1.46508,0.13371 -1.93357,0.40394 -0.46179,0.26176 -0.7553,0.66533 -0.88054,1.20967 -0.11288,0.49213 -0.0469,0.86007 0.19827,1.10243 0.24553,0.24271 0.94262,0.47978 2.09056,0.70838 l 0.69603,0.13793 c 0.85972,0.17075 1.46085,0.51259 1.80093,1.02377 0.34889,0.51258 0.42721,1.17827 0.23848,1.99813 -0.25224,1.09008 -0.83644,1.9431 -1.75296,2.55905 -0.91475,0.61066 -2.06128,0.91652 -3.43958,0.91652 -0.54434,0 -1.10243,-0.0593 -1.67146,-0.1778 -0.57185,-0.11148 -1.17828,-0.28258 -1.82175,-0.51118 l 0.43286,-1.87007 c 0.59514,0.34713 1.18075,0.60889 1.75684,0.78669 0.57749,0.1711 1.14229,0.25647 1.69368,0.25647 0.7994,0 1.45662,-0.16122 1.97062,-0.48225 0.51541,-0.32808 0.84067,-0.78422 0.97543,-1.36842 0.19438,-0.84067 -0.47519,-1.42064 -2.00907,-1.74202 l -0.0744,-0.0205 -0.6477,-0.13794 c -0.99624,-0.20249 -1.67851,-0.54433 -2.04646,-1.02376 -0.36654,-0.48507 -0.45473,-1.1437 -0.26176,-1.97767 0.24412,-1.05692 0.78987,-1.86972 1.63583,-2.441926 0.84878,-0.577144 1.93604,-0.865364 3.26178,-0.865364 0.59126,0 1.14512,0.05539 1.66476,0.166864 0.51929,0.104775 1.01706,0.265994 1.49225,0.482247 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path24" />
<path
d="m 109.44214,96.200761 -0.9465,3.130903 h 4.1148 l -0.42581,1.407226 h -4.11339 l -1.80798,5.98453 c -0.24695,0.81315 -0.26353,1.38077 -0.0526,1.70321 0.21097,0.32138 0.70133,0.4826 1.46897,0.4826 h 2.03694 l -0.43709,1.44674 h -2.21439 c -1.3589,0 -2.23379,-0.2727 -2.62784,-0.81703 -0.39299,-0.54575 -0.38876,-1.48273 0.0138,-2.81552 l 1.8094,-5.98453 h -2.94358 l 0.42439,-1.407226 h 2.94358 l 0.94544,-3.130903 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path26" />
<path
d="m 120.83439,100.60096 c -0.91898,0 -1.72932,0.35842 -2.43346,1.0735 -0.70414,0.71508 -1.28305,1.77483 -1.73637,3.17923 -0.45191,1.39736 -0.5581,2.45675 -0.31962,3.17888 0.24095,0.71544 0.82127,1.0721 1.74025,1.0721 0.92463,0 1.7392,-0.35666 2.44334,-1.0721 0.70556,-0.72213 1.28447,-1.78152 1.73638,-3.17888 0.45331,-1.4044 0.56091,-2.46415 0.31961,-3.17923 -0.24236,-0.71508 -0.8255,-1.0735 -1.75013,-1.0735 z m 0.49601,-1.535291 c 1.52964,0 2.53717,0.494947 3.02365,1.485551 0.49319,0.99095 0.43674,2.42534 -0.16968,4.30247 -0.6089,1.88243 -1.47708,3.31964 -2.60456,4.31024 -1.12571,0.98531 -2.45533,1.47744 -3.99062,1.47744 -1.52965,0 -2.53824,-0.49213 -3.02754,-1.47744 -0.48648,-0.9906 -0.4258,-2.42781 0.18344,-4.31024 0.60608,-1.87713 1.47285,-3.31152 2.60139,-4.30247 1.12748,-0.990604 2.45568,-1.485551 3.98392,-1.485551 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path28" />
<path
d="m 137.7843,101.60567 c -0.30162,-0.30198 -0.63394,-0.52247 -0.99483,-0.6604 -0.36124,-0.13758 -0.7814,-0.20638 -1.25977,-0.20638 -1.12853,0 -2.09162,0.35384 -2.89101,1.06363 -0.79799,0.70838 -1.38748,1.73214 -1.76812,3.07022 l -1.55717,5.48323 h -1.82174 l 3.13231,-11.024306 h 1.82034 l -0.61172,2.155476 c 0.52352,-0.78141 1.15605,-1.37831 1.89759,-1.791763 0.74824,-0.420158 1.55293,-0.629708 2.413,-0.629708 0.44627,0 0.84596,0.05539 1.20156,0.166864 0.3556,0.111478 0.67804,0.285397 0.9645,0.522111 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path30" />
<path
d="m 149.61894,99.71478 -0.81844,1.77236 c -0.37924,-0.30198 -0.79516,-0.52776 -1.25131,-0.67945 -0.45473,-0.15029 -0.95497,-0.22614 -1.4993,-0.22614 -0.81986,0 -1.49649,0.13371 -2.02706,0.40394 -0.52106,0.26176 -0.90841,0.66533 -1.15888,1.20967 -0.22754,0.49213 -0.24694,0.86007 -0.0568,1.10243 0.18909,0.24271 0.83256,0.47978 1.92652,0.70838 l 0.66428,0.13793 c 0.82127,0.17075 1.34232,0.51259 1.56563,1.02377 0.2286,0.51258 0.15417,1.17827 -0.22472,1.99813 -0.50306,1.09008 -1.28305,1.9431 -2.34279,2.55905 -1.05552,0.61066 -2.27366,0.91652 -3.65161,0.91652 -0.54433,0 -1.08726,-0.0593 -1.63018,-0.1778 -0.54575,-0.11148 -1.11372,-0.28258 -1.70321,-0.51118 l 0.86395,-1.87007 c 0.51541,0.34713 1.04034,0.60889 1.57515,0.78669 0.53869,0.1711 1.08303,0.25647 1.63407,0.25647 0.8008,0 1.49542,-0.16122 2.08386,-0.48225 0.5909,-0.32808 1.02094,-0.78422 1.29116,-1.36842 0.387,-0.84067 -0.14887,-1.42064 -1.60831,-1.74202 l -0.0688,-0.0205 -0.61595,-0.13794 c -0.94968,-0.20249 -1.55328,-0.54433 -1.81081,-1.02376 -0.25506,-0.48507 -0.19015,-1.1437 0.19579,-1.97767 0.48754,-1.05692 1.22096,-1.86972 2.19922,-2.441926 0.98248,-0.577144 2.13607,-0.865364 3.46181,-0.865364 0.5909,0 1.13241,0.05539 1.62595,0.166864 0.496,0.104775 0.95638,0.265994 1.38077,0.482247 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path32" />
<path
d="m 154.44071,99.331664 h 4.63585 l -6.04132,9.616016 h 3.59234 l -0.88477,1.40829 h -8.99583 l 0.88476,-1.40829 h 3.59269 l 5.15655,-8.20879 h -2.82504 z m 5.52026,-4.2926 h 1.81081 l -1.44004,2.294466 h -1.81081 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path34" />
<path
d="m 170.75386,100.60096 c -0.91758,0 -1.84503,0.35842 -2.77954,1.0735 -0.93557,0.71508 -1.85632,1.77483 -2.76437,3.17923 -0.90381,1.39736 -1.35184,2.45675 -1.3462,3.17888 0.01,0.71544 0.47414,1.0721 1.39312,1.0721 0.92463,0 1.85491,-0.35666 2.78906,-1.0721 0.9398,-0.72213 1.86197,-1.78152 2.76437,-3.17888 0.9084,-1.4044 1.35749,-2.46415 1.34797,-3.17923 -0.0113,-0.71508 -0.47837,-1.0735 -1.40441,-1.0735 z m 0.99377,-1.535291 c 1.52824,0 2.37702,0.494947 2.54247,1.485551 0.17357,0.99095 -0.34607,2.42534 -1.55998,4.30247 -1.21709,1.88243 -2.55094,3.31964 -3.99768,4.31024 -1.44427,0.98531 -2.93264,1.47744 -4.46899,1.47744 -1.52823,0 -2.37878,-0.49213 -2.54952,-1.47744 -0.16687,-0.9906 0.35983,-2.42781 1.57656,-4.31024 1.21391,-1.87713 2.54388,-3.31152 3.99203,-4.30247 1.4471,-0.990604 2.93547,-1.485551 4.46511,-1.485551 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path36" />
<path
d="m 185.32252,103.52372 -5.17454,6.83225 h -1.82175 l 5.17455,-6.83225 c 0.75106,-0.99095 1.12853,-1.71838 1.13418,-2.18405 0.005,-0.46602 -0.36266,-0.69885 -1.10526,-0.69885 -0.84596,0 -1.7279,0.30198 -2.64442,0.90558 -0.90558,0.59655 -1.78188,1.45662 -2.63207,2.5781 l -4.71982,6.23147 h -1.81222 l 8.35237,-11.024306 h 1.81081 l -1.25272,1.653826 c 0.79799,-0.62971 1.59597,-1.106668 2.38972,-1.427696 0.80045,-0.328083 1.57762,-0.492125 2.33151,-0.492125 1.12324,0 1.67852,0.37077 1.66723,1.112311 10e-4,0.73448 -0.5648,1.85067 -1.69757,3.34574 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path38" />
</g>
<g
id="g1188"
transform="matrix(1,0,0,0.54321905,-12.243382,-29.854627)">
<g
id="g86"
transform="matrix(0.32087502,0,0,0.35277777,13.83525,9.7785562)">
<path
d="M 253.353,496.703 183.38797,494.80952 87.602,507.531 28.46,555.844 l 8.332,121.609 -11.664,61.637 38.317,56.64 133.58889,5.17246 118.55334,-12.04168 183.01465,1.83837 102.92112,30.85185 39.983,-69.969 -27.486,-55.805 23.32,-88.293 -0.833,-93.289 -171.584,-26.652 z"
style="fill:none;stroke:#000000;stroke-width:0.786401;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path88"
sodipodi:nodetypes="ccccccccccccccccc" />
</g>
<g
id="g90"
transform="matrix(0.32087502,0,0,0.35277777,13.83525,9.7785562)">
<path
d="M 257.519,490.875 194.96773,507.25229 87.602,519.195 17.634,548.348 42.62,677.453 20.133,729.926 64.278,803.227 198.07943,769.23771 341.70755,807.40574 463.257,794.063 l 130.772,34.152 55.804,-76.633 -45.811,-49.141 21.658,-89.125 14.159,-107.449 -175.749,1.664 z"
style="fill:none;stroke:#000000;stroke-width:0.786401;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path92"
sodipodi:nodetypes="ccccccccccccccccc" />
</g>
<g
id="g1165">
<g
id="g94"
transform="matrix(0.32087502,0,0,0.35277777,13.83525,9.7785562)">
<path
d="M 276.926,482.953 218.9725,508.58013 109.835,532.074 32.777,518.168 46.988,658.445 18.6,699.211 l 37.234,77.039 138.91,46.488 84.87917,-45.04372 113.6195,38.38305 49.71526,-35.79282 129.85107,19.99649 70.848,-21.711 -11.66,-79.058 0.297,-60.844 -9.019,-111.586 -142.178,-8.582 z"
style="fill:none;stroke:#000000;stroke-width:0.786401;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path96"
sodipodi:nodetypes="cccccccccccccccccc" />
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

View file

@ -1,60 +0,0 @@
baseURL = 'https://distorsion.interhacker.space'
languageCode = 'fr-FR'
title = 'La Distorsion'
theme = 'distorsion'
[Params]
tagline = ""
author = ""
description = "un hackerspace pour Paris-Saclay tourné vers le recyclage et le partage de savoirs"
logoBig = "images/distorsion-logo.png"
logoSmall = "/images/distorsion-logo.png"
favicon = "favicon.ico"
opengraphImage = "/images/distorsion-logo.png"
email = "distorsion@groupes.renater.fr"
googleTagManager = ""
customCSS = false
# Social media links in footer
#twitter = "TomaNistor"
#linkedin = "tomanistor"
#github = "tomanistor"
#facebook = ""
# Copyright and theme author credit in footer
copyright = false
credit = false
# Cache busting of static resources (additional set up required)
cacheBustCSS = true
cacheBustJS = true
# Code highlighting with highlight.js
highlightJS = true
highlightJSStyle = "" # For custom highlight.js styles, add your /path/to/styles/default.css
highlightJSScript = "" # For custom highlight.js languages config, add your /path/to/highlight.pack.js
# Choose either Formspree contact form or Basin contact form
ajaxFormspree = false
ajaxFormspreeGold = false
ajaxBasin = "https://usebasin.com/f/0eae7044d4c2"
# Lazy loading with lazysizes
lazyloading = true
[[menu.main]]
name = "À propos"
url = "/#about"
weight = 1
[[menu.main]]
name = "Blog"
url = "/#blog"
weight = 2
[[menu.main]]
name = "Membres"
url = "/#members"
weight = 3
[[menu.main]]
name = "Contact"
url = "/#contact"
weight = 4

View file

@ -1,29 +0,0 @@
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
{{ partial "head.html" . }}
<body>
{{ partial "body-top" . }}
<main>
<!-- About -->
{{ partial "about.html" . }}
<!-- Blog -->
{{ if not (eq (len (where .Site.RegularPages "Section" "blog")) 0) }}
{{ partial "blog.html" . }}
{{ end }}
<!-- Members -->
{{ if not (eq (len (where .Site.RegularPages "Section" "members")) 0) }}
{{ partial "members.html" . }}
{{ end }}
<!-- Contact -->
{{ partial "contact.html" . }}
</main>
{{ partial "body-bottom" . }}
</body>
</html>

View file

@ -1,110 +0,0 @@
<section class="gallery" id="blog">
<!--TODO: this margin top should be in the css. This is repeated in the members section-->
<div class="row center-xs" style="margin-top: 30px;">
<div class="col-xs-12">
<h1> Blog </h1>
</div>
</div>
<div class="row">
<!-- First 4 characters of each gallery page's unique ID -->
{{ range where .Site.RegularPages "Section" "blog" }}
<!-- Scratch is used to set page-scoped variable outside of this loop-->
{{ .Scratch.Set "$modalID" (slicestr .File.UniqueID 0 4) }}
{{ end }}
{{ $blogTotal := len (where .Site.RegularPages "Section" "blog") }}
{{ $blogReverse := (where .Site.RegularPages "Section" "blog") }}
<!-- If gallery is an odd total -->
{{ if not (modBool $blogTotal 2) }}
<!-- If gallery is only one item, display it fully -->
{{ if eq $blogTotal 1 }}
{{ range first 3 $blogReverse }}
<div class="gallery-item col-xs-12" onclick {{ if .Params.color }}style="background-color:{{ .Params.color }}"{{ end }}>
<div class= "gallery-img-container">
<img {{ if .Site.Params.lazyLoading }}data-src="{{ "images/" | relURL }}{{ .Params.image}}" lazyload="on"{{ else }}src="{{ "images/" | relURL }}{{ .Params.image}}"{{ end }} {{ if .Params.alt }}alt="{{ .Params.alt }}"{{ end }}>
</div>
<div class="row middle-xs center-xs overlay">
<a href="{{ .Permalink }}" class="gallery-modal-link"></a>
<h2>{{ .Title }}</h2>
</div>
</div>
{{ end }}
{{ end }}
<!-- If gallery is greater than 2 items, first 3 items display together on first row -->
{{ if gt $blogTotal 2 }}
{{ range first 3 $blogReverse }}
<div class="gallery-item col-xs-12 col-md-4" onclick {{ if .Params.color }}style="background-color:{{ .Params.color }}"{{ end }}>
<div class= "gallery-img-container">
<img {{ if .Site.Params.lazyLoading }}data-src="{{ "images/" | relURL }}{{ .Params.image}}" class="lazyload" lazyload="on"{{ else }}src="{{ "images/" | relURL }}{{ .Params.image}}"{{ end }} {{ if .Params.alt }}alt="{{ .Params.alt }}"{{ end }}>
</div>
<div class="row middle-xs center-xs overlay">
<a href="{{ .Permalink }}" data-modal="modal-{{ .Scratch.Get "$modal" }}" class="gallery-modal-link"></a>
<h2>{{ .Title }}</h2>
</div>
</div>
{{ end }}
{{ end }}
<!-- If gallery is greater than 3 items, all items after the first 3 display evenly in grid columns and rows -->
{{ if gt $blogTotal 3 }}
{{ range after 3 $blogReverse }}
<!-- If gallery items are divisible by 3, they will appear in columns of 3 -->
{{ $col := (mod $blogTotal 3) }}
<div class="gallery-item col-xs-12 col-md-6
{{- if gt $blogTotal 5 }}
{{- if eq $col 0 }} col-lg-4
{{- else }} col-lg-3
{{- end }}
{{- end }}" onclick {{ if .Params.color }}style="background-color:{{ .Params.color }}"{{ end }}>
<div class= "gallery-img-container">
<img {{ if .Site.Params.lazyLoading }}data-src="{{ "images/" | relURL }}{{ .Params.image}}" class="lazyload" lazyload="on"{{ else }}src="{{ "images/" | relURL }}{{ .Params.image}}"{{ end }} {{ if .Params.alt }}alt="{{ .Params.alt }}"{{ end }}>
</div>
<div class="row middle-xs center-xs overlay">
<a href="{{ .Permalink }}" class="gallery-modal-link"></a>
<h2>{{ .Title }}</h2>
</div>
</div>
{{ end }}
{{ end }}
{{ end }}
<!-- If gallery is an even total, all items display evenly in grid columns and rows -->
{{ if modBool $blogTotal 2 }}
{{ range $blogReverse }}
<!-- If gallery items are great than 7 and are divisible by 4, they will appear in columns of 4, else in columns of 2 or 3 -->
<div class="gallery-item col-xs-12
{{- if gt $blogTotal 1 }} col-md-6
{{- if gt $blogTotal 7 }}
{{- if modBool $blogTotal 4 }} col-lg-3
{{- else }} col-lg-4
{{- end }}
{{- end }}
{{- end }}" onclick {{ if .Params.color }}style="background-color:{{ .Params.color }}"{{ end }}>
<div class= "gallery-img-container">
<img {{ if .Site.Params.lazyLoading }}data-src="{{ "images/" | relURL }}{{ .Params.image}}" class="lazyload" lazyload="on"{{ else }}src="{{ "images/" | relURL }}{{ .Params.image}}"{{ end }} {{ if .Params.alt }}alt="{{ .Params.alt }}"{{ end }}>
</div>
<div class="row middle-xs center-xs overlay">
<a href="{{ .Permalink }}" class="gallery-modal-link"></a>
<h2>{{ .Title }}</h2>
</div>
</div>
{{ end }}
{{ end }}
</div>
<div class="container">
<div class="row center-xs">
<div class="col-xs-12"><h3><a href="{{ "blog/" | relLangURL }}">{{ i18n "viewAll" }}</a></h3></div>
</div>
</div>
</section>

View file

@ -1,113 +0,0 @@
<section class="members" id="members">
<div class="row center-xs" style="margin-top: 30px;">
<div class="col-xs-12">
<h1> Members </h1>
</div>
</div>
<div class="row">
<!-- First 4 characters of each page's unique ID -->
{{ range where .Site.RegularPages "Section" "members" }}
<!-- Scratch is used to set page-scoped variable outside of this loop-->
{{ .Scratch.Set "$modalID" (slicestr .File.UniqueID 0 4) }}
{{ end }}
{{ $membersTotal := len (where .Site.RegularPages "Section" "members") }}
{{ $membersReverse := (where .Site.RegularPages.ByWeight "Section" "members") }}
<!-- If is an odd total -->
{{ if not (modBool $membersTotal 2) }}
<!-- If is only one item, display it fully -->
{{ if eq $membersTotal 1 }}
{{ range first 3 $membersReverse }}
<div class="members-item col-xs-12" onclick {{ if .Params.color }}style="background-color:{{ .Params.color }}"{{ end }}>
<div class= "members-img-container">
<img {{ if .Site.Params.lazyLoading }}data-src="{{ "images/" | relURL }}{{ .Params.image}}" class="lazyload" lazyload="on"{{ else }}src="{{ "images/" | relURL }}{{ .Params.image}}"{{ end }} {{ if .Params.alt }}alt="{{ .Params.alt }}"{{ end }}>
</div>
<div class="middle-xs center-xs">
<h2>{{ .Title }}</h2>
{{ .Description }}
<br>
<a href="{{ .Params.Link }}" target="_blank"> {{ .Params.Link }}</a>
</div>
</div>
{{ end }}
{{ end }}
<!-- If is greater than 2 items, first 3 items display together on first row -->
{{ if gt $membersTotal 2 }}
{{ range first 3 $membersReverse }}
<div class="members-item col-xs-12 col-md-4" onclick {{ if .Params.color }}style="background-color:{{ .Params.color }}"{{ end }}>
<div class= "members-img-container">
<img {{ if .Site.Params.lazyLoading }}data-src="{{ "images/" | relURL }}{{ .Params.image}}" class="lazyload" lazyload="on"{{ else }}src="{{ "images/" | relURL }}{{ .Params.image}}"{{ end }} {{ if .Params.alt }}alt="{{ .Params.alt }}"{{ end }}>
</div>
<div class="middle-xs center-xs">
<h2>{{ .Title }}</h2>
{{ .Description }}
<br>
<a href="{{ .Params.Link }}" target="_blank"> {{ .Params.Link }}</a>
</div>
</div>
{{ end }}
{{ end }}
<!-- If members is greater than 3 items, all items after the first 3 display evenly in grid columns and rows -->
{{ if gt $membersTotal 3 }}
{{ range after 3 $membersReverse }}
<!-- If items are divisible by 3, they will appear in columns of 3 -->
{{ $col := (mod $membersTotal 3) }}
<div class="members-item col-xs-12 col-md-6
{{- if gt $membersTotal 5 }}
{{- if eq $col 0 }} col-lg-4
{{- else }} col-lg-3
{{- end }}
{{- end }}" onclick {{ if .Params.color }}style="background-color:{{ .Params.color }}"{{ end }}>
<div class= "members-img-container">
<img {{ if .Site.Params.lazyLoading }}data-src="{{ "images/" | relURL }}{{ .Params.image}}" class="lazyload" lazyload="on"{{ else }}src="{{ "images/" | relURL }}{{ .Params.image}}"{{ end }} {{ if .Params.alt }}alt="{{ .Params.alt }}"{{ end }}>
</div>
<div class="middle-xs center-xs">
<h2>{{ .Title }}</h2>
{{ .Description }}
<br>
<a href="{{ .Params.Link }}" target="_blank"> {{ .Params.Link }}</a>
</div>
</div>
{{ end }}
{{ end }}
{{ end }}
<!-- If members is an even total, all items display evenly in grid columns and rows -->
{{ if modBool $membersTotal 2 }}
{{ range $membersReverse }}
<!-- If members items are great than 7 and are divisible by 4, they will appear in columns of 4, else in columns of 2 or 3 -->
<div class="members-item col-xs-12
{{- if gt $membersTotal 1 }} col-md-6
{{- if gt $membersTotal 7 }}
{{- if modBool $membersTotal 4 }} col-lg-3
{{- else }} col-lg-4
{{- end }}
{{- end }}
{{- end }}">
<div class= "members-img-container">
<img {{ if .Site.Params.lazyLoading }}data-src="{{ "images/" | relURL }}{{ .Params.image}}" class="lazyload" lazyload="on"{{ else }}src="{{ "images/" | relURL }}{{ .Params.image}}"{{ end }} {{ if .Params.alt }}alt="{{ .Params.alt }}"{{ end }}>
</div>
<div class="middle-xs center-xs">
<h2>{{ .Title }}</h2>
{{ .Description }}
<br>
<a href="{{ .Params.Link }}" target="_blank"> {{ .Params.Link }}</a>
</div>
</div>
{{ end }}
{{ end }}
</div>
</section>

View file

@ -1,2 +0,0 @@
<!-- raw html -->
<marquee>{{.Inner}}</marquee>

View file

@ -1,6 +0,0 @@
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
packages = [
pkgs.hugo
];
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 699 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 822 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 870 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 311 KiB

View file

@ -1,132 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="203.16354mm"
height="66.328529mm"
viewBox="0 0 203.16354 66.328529"
version="1.1"
id="svg1022"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="logo.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="namedview1024"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="1.0179639"
inkscape:cx="316.80887"
inkscape:cy="288.32063"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="g1188" />
<defs
id="defs1019" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-7.1067797,-67.930109)">
<g
id="g1179">
<path
d="m 30.557856,95.659247 h 1.998134 v 13.022443 h 7.09683 v 1.67428 h -9.094964 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path16" />
<path
d="m 47.486956,104.81348 h -0.59937 c -1.056922,0 -1.854905,0.18767 -2.392186,0.56091 -0.531988,0.36795 -0.797983,0.91934 -0.797983,1.65383 0,0.66287 0.201083,1.17827 0.600781,1.54587 0.401108,0.36689 0.954969,0.55139 1.663347,0.55139 0.997655,0 1.78188,-0.34466 2.352322,-1.03364 0.571853,-0.69568 0.859719,-1.65347 0.866775,-2.87443 v -0.40393 z m 3.514019,-0.74824 v 6.29073 h -1.820333 v -1.63442 c -0.38735,0.65617 -0.8763,1.14123 -1.466144,1.45662 -0.584553,0.30868 -1.296812,0.4632 -2.13607,0.4632 -1.123244,0 -2.018947,-0.31574 -2.687108,-0.94545 -0.669925,-0.63676 -1.004711,-1.48696 -1.004711,-2.54917 0,-1.22661 0.410633,-2.15971 1.230489,-2.79612 0.826911,-0.63535 2.03835,-0.95356 3.632552,-0.95356 h 2.430992 v -0.2868 c -0.0071,-0.87913 -0.230011,-1.51448 -0.669572,-1.90853 -0.439914,-0.40111 -1.141236,-0.60078 -2.105731,-0.60078 -0.617361,0 -1.240366,0.0882 -1.870075,0.26599 -0.631119,0.1778 -1.244247,0.43674 -1.841147,0.77717 v -1.810807 c 0.669925,-0.256116 1.309158,-0.446263 1.919817,-0.570441 0.61595,-0.132292 1.213908,-0.197203 1.791405,-0.197203 0.912284,0 1.689453,0.133703 2.33292,0.403931 0.649111,0.268816 1.174044,0.67239 1.573741,1.21003 0.249414,0.32773 0.427214,0.73589 0.531989,1.22061 0.104775,0.47978 0.156986,1.2005 0.156986,2.165 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path18" />
<path
d="m 65.885372,108.17192 c 2.23626,0 3.87068,-0.54857 4.90573,-1.64394 1.03611,-1.10526 1.75013,-3.09528 2.14136,-5.97112 0.39547,-2.902302 0.22472,-4.901846 -0.51117,-5.998632 -0.72778,-1.103842 -2.21333,-1.656292 -4.45806,-1.656292 h -1.26223 l -2.07822,15.269984 z m 2.42782,-17.454384 c 2.99861,0 5.10011,0.799394 6.30343,2.395008 1.20297,1.595967 1.57621,4.076347 1.11725,7.444316 -0.45614,3.34998 -1.50178,5.82224 -3.14043,7.41786 -1.63583,1.5875 -3.95358,2.38125 -6.95219,2.38125 h -3.98533 l 2.67194,-19.638434 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path20" />
<path
d="m 80.094202,99.331664 h 4.6355 l -1.67675,9.616016 h 3.59234 l -0.2466,1.40829 h -8.99583 l 0.24518,-1.40829 h 3.59269 l 1.43298,-8.20879 h -2.82469 z m 3.5747,-4.2926 h 1.81046 l -0.40076,2.294466 h -1.81081 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path22" />
<path
d="m 99.886802,99.71478 -0.40922,1.77236 c -0.44768,-0.30198 -0.91758,-0.52776 -1.40829,-0.67945 -0.4893,-0.15029 -1.00753,-0.22614 -1.55152,-0.22614 -0.82021,0 -1.46508,0.13371 -1.93357,0.40394 -0.46179,0.26176 -0.7553,0.66533 -0.88054,1.20967 -0.11288,0.49213 -0.0469,0.86007 0.19827,1.10243 0.24553,0.24271 0.94262,0.47978 2.09056,0.70838 l 0.69603,0.13793 c 0.85972,0.17075 1.46085,0.51259 1.80093,1.02377 0.34889,0.51258 0.42721,1.17827 0.23848,1.99813 -0.25224,1.09008 -0.83644,1.9431 -1.75296,2.55905 -0.91475,0.61066 -2.06128,0.91652 -3.43958,0.91652 -0.54434,0 -1.10243,-0.0593 -1.67146,-0.1778 -0.57185,-0.11148 -1.17828,-0.28258 -1.82175,-0.51118 l 0.43286,-1.87007 c 0.59514,0.34713 1.18075,0.60889 1.75684,0.78669 0.57749,0.1711 1.14229,0.25647 1.69368,0.25647 0.7994,0 1.45662,-0.16122 1.97062,-0.48225 0.51541,-0.32808 0.84067,-0.78422 0.97543,-1.36842 0.19438,-0.84067 -0.47519,-1.42064 -2.00907,-1.74202 l -0.0744,-0.0205 -0.6477,-0.13794 c -0.99624,-0.20249 -1.67851,-0.54433 -2.04646,-1.02376 -0.36654,-0.48507 -0.45473,-1.1437 -0.26176,-1.97767 0.24412,-1.05692 0.78987,-1.86972 1.63583,-2.441926 0.84878,-0.577144 1.93604,-0.865364 3.26178,-0.865364 0.59126,0 1.14512,0.05539 1.66476,0.166864 0.51929,0.104775 1.01706,0.265994 1.49225,0.482247 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path24" />
<path
d="m 109.44214,96.200761 -0.9465,3.130903 h 4.1148 l -0.42581,1.407226 h -4.11339 l -1.80798,5.98453 c -0.24695,0.81315 -0.26353,1.38077 -0.0526,1.70321 0.21097,0.32138 0.70133,0.4826 1.46897,0.4826 h 2.03694 l -0.43709,1.44674 h -2.21439 c -1.3589,0 -2.23379,-0.2727 -2.62784,-0.81703 -0.39299,-0.54575 -0.38876,-1.48273 0.0138,-2.81552 l 1.8094,-5.98453 h -2.94358 l 0.42439,-1.407226 h 2.94358 l 0.94544,-3.130903 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path26" />
<path
d="m 120.83439,100.60096 c -0.91898,0 -1.72932,0.35842 -2.43346,1.0735 -0.70414,0.71508 -1.28305,1.77483 -1.73637,3.17923 -0.45191,1.39736 -0.5581,2.45675 -0.31962,3.17888 0.24095,0.71544 0.82127,1.0721 1.74025,1.0721 0.92463,0 1.7392,-0.35666 2.44334,-1.0721 0.70556,-0.72213 1.28447,-1.78152 1.73638,-3.17888 0.45331,-1.4044 0.56091,-2.46415 0.31961,-3.17923 -0.24236,-0.71508 -0.8255,-1.0735 -1.75013,-1.0735 z m 0.49601,-1.535291 c 1.52964,0 2.53717,0.494947 3.02365,1.485551 0.49319,0.99095 0.43674,2.42534 -0.16968,4.30247 -0.6089,1.88243 -1.47708,3.31964 -2.60456,4.31024 -1.12571,0.98531 -2.45533,1.47744 -3.99062,1.47744 -1.52965,0 -2.53824,-0.49213 -3.02754,-1.47744 -0.48648,-0.9906 -0.4258,-2.42781 0.18344,-4.31024 0.60608,-1.87713 1.47285,-3.31152 2.60139,-4.30247 1.12748,-0.990604 2.45568,-1.485551 3.98392,-1.485551 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path28" />
<path
d="m 137.7843,101.60567 c -0.30162,-0.30198 -0.63394,-0.52247 -0.99483,-0.6604 -0.36124,-0.13758 -0.7814,-0.20638 -1.25977,-0.20638 -1.12853,0 -2.09162,0.35384 -2.89101,1.06363 -0.79799,0.70838 -1.38748,1.73214 -1.76812,3.07022 l -1.55717,5.48323 h -1.82174 l 3.13231,-11.024306 h 1.82034 l -0.61172,2.155476 c 0.52352,-0.78141 1.15605,-1.37831 1.89759,-1.791763 0.74824,-0.420158 1.55293,-0.629708 2.413,-0.629708 0.44627,0 0.84596,0.05539 1.20156,0.166864 0.3556,0.111478 0.67804,0.285397 0.9645,0.522111 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path30" />
<path
d="m 149.61894,99.71478 -0.81844,1.77236 c -0.37924,-0.30198 -0.79516,-0.52776 -1.25131,-0.67945 -0.45473,-0.15029 -0.95497,-0.22614 -1.4993,-0.22614 -0.81986,0 -1.49649,0.13371 -2.02706,0.40394 -0.52106,0.26176 -0.90841,0.66533 -1.15888,1.20967 -0.22754,0.49213 -0.24694,0.86007 -0.0568,1.10243 0.18909,0.24271 0.83256,0.47978 1.92652,0.70838 l 0.66428,0.13793 c 0.82127,0.17075 1.34232,0.51259 1.56563,1.02377 0.2286,0.51258 0.15417,1.17827 -0.22472,1.99813 -0.50306,1.09008 -1.28305,1.9431 -2.34279,2.55905 -1.05552,0.61066 -2.27366,0.91652 -3.65161,0.91652 -0.54433,0 -1.08726,-0.0593 -1.63018,-0.1778 -0.54575,-0.11148 -1.11372,-0.28258 -1.70321,-0.51118 l 0.86395,-1.87007 c 0.51541,0.34713 1.04034,0.60889 1.57515,0.78669 0.53869,0.1711 1.08303,0.25647 1.63407,0.25647 0.8008,0 1.49542,-0.16122 2.08386,-0.48225 0.5909,-0.32808 1.02094,-0.78422 1.29116,-1.36842 0.387,-0.84067 -0.14887,-1.42064 -1.60831,-1.74202 l -0.0688,-0.0205 -0.61595,-0.13794 c -0.94968,-0.20249 -1.55328,-0.54433 -1.81081,-1.02376 -0.25506,-0.48507 -0.19015,-1.1437 0.19579,-1.97767 0.48754,-1.05692 1.22096,-1.86972 2.19922,-2.441926 0.98248,-0.577144 2.13607,-0.865364 3.46181,-0.865364 0.5909,0 1.13241,0.05539 1.62595,0.166864 0.496,0.104775 0.95638,0.265994 1.38077,0.482247 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path32" />
<path
d="m 154.44071,99.331664 h 4.63585 l -6.04132,9.616016 h 3.59234 l -0.88477,1.40829 h -8.99583 l 0.88476,-1.40829 h 3.59269 l 5.15655,-8.20879 h -2.82504 z m 5.52026,-4.2926 h 1.81081 l -1.44004,2.294466 h -1.81081 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path34" />
<path
d="m 170.75386,100.60096 c -0.91758,0 -1.84503,0.35842 -2.77954,1.0735 -0.93557,0.71508 -1.85632,1.77483 -2.76437,3.17923 -0.90381,1.39736 -1.35184,2.45675 -1.3462,3.17888 0.01,0.71544 0.47414,1.0721 1.39312,1.0721 0.92463,0 1.85491,-0.35666 2.78906,-1.0721 0.9398,-0.72213 1.86197,-1.78152 2.76437,-3.17888 0.9084,-1.4044 1.35749,-2.46415 1.34797,-3.17923 -0.0113,-0.71508 -0.47837,-1.0735 -1.40441,-1.0735 z m 0.99377,-1.535291 c 1.52824,0 2.37702,0.494947 2.54247,1.485551 0.17357,0.99095 -0.34607,2.42534 -1.55998,4.30247 -1.21709,1.88243 -2.55094,3.31964 -3.99768,4.31024 -1.44427,0.98531 -2.93264,1.47744 -4.46899,1.47744 -1.52823,0 -2.37878,-0.49213 -2.54952,-1.47744 -0.16687,-0.9906 0.35983,-2.42781 1.57656,-4.31024 1.21391,-1.87713 2.54388,-3.31152 3.99203,-4.30247 1.4471,-0.990604 2.93547,-1.485551 4.46511,-1.485551 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path36" />
<path
d="m 185.32252,103.52372 -5.17454,6.83225 h -1.82175 l 5.17455,-6.83225 c 0.75106,-0.99095 1.12853,-1.71838 1.13418,-2.18405 0.005,-0.46602 -0.36266,-0.69885 -1.10526,-0.69885 -0.84596,0 -1.7279,0.30198 -2.64442,0.90558 -0.90558,0.59655 -1.78188,1.45662 -2.63207,2.5781 l -4.71982,6.23147 h -1.81222 l 8.35237,-11.024306 h 1.81081 l -1.25272,1.653826 c 0.79799,-0.62971 1.59597,-1.106668 2.38972,-1.427696 0.80045,-0.328083 1.57762,-0.492125 2.33151,-0.492125 1.12324,0 1.67852,0.37077 1.66723,1.112311 10e-4,0.73448 -0.5648,1.85067 -1.69757,3.34574 z"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352778"
id="path38" />
</g>
<g
id="g1188"
transform="matrix(1,0,0,0.54321905,-12.243382,-29.854627)">
<g
id="g86"
transform="matrix(0.32087502,0,0,0.35277777,13.83525,9.7785562)">
<path
d="M 253.353,496.703 183.38797,494.80952 87.602,507.531 28.46,555.844 l 8.332,121.609 -11.664,61.637 38.317,56.64 133.58889,5.17246 118.55334,-12.04168 183.01465,1.83837 102.92112,30.85185 39.983,-69.969 -27.486,-55.805 23.32,-88.293 -0.833,-93.289 -171.584,-26.652 z"
style="fill:none;stroke:#000000;stroke-width:0.786401;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path88"
sodipodi:nodetypes="ccccccccccccccccc" />
</g>
<g
id="g90"
transform="matrix(0.32087502,0,0,0.35277777,13.83525,9.7785562)">
<path
d="M 257.519,490.875 194.96773,507.25229 87.602,519.195 17.634,548.348 42.62,677.453 20.133,729.926 64.278,803.227 198.07943,769.23771 341.70755,807.40574 463.257,794.063 l 130.772,34.152 55.804,-76.633 -45.811,-49.141 21.658,-89.125 14.159,-107.449 -175.749,1.664 z"
style="fill:none;stroke:#000000;stroke-width:0.786401;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path92"
sodipodi:nodetypes="ccccccccccccccccc" />
</g>
<g
id="g1165">
<g
id="g94"
transform="matrix(0.32087502,0,0,0.35277777,13.83525,9.7785562)">
<path
d="M 276.926,482.953 218.9725,508.58013 109.835,532.074 32.777,518.168 46.988,658.445 18.6,699.211 l 37.234,77.039 138.91,46.488 84.87917,-45.04372 113.6195,38.38305 49.71526,-35.79282 129.85107,19.99649 70.848,-21.711 -11.66,-79.058 0.297,-60.844 -9.019,-111.586 -142.178,-8.582 z"
style="fill:none;stroke:#000000;stroke-width:0.786401;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path96"
sodipodi:nodetypes="cccccccccccccccccc" />
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

View file

@ -1 +0,0 @@
static/*/*-*.min.*

View file

@ -1,201 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2018 Toma Nistor
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View file

@ -1,191 +0,0 @@
![Logo](https://github.com/tomanistor/osprey/blob/master/images/osprey-logo.png)
# Osprey
Osprey is a simple, clean, and fast one-page [Hugo](https://gohugo.io/) portfolio accompanied by a blog.
## Features
* Minimalist, clean, and uncluttered theme
* Portfolio display gallery
* [Disqus](https://disqus.com) comments
* [Formspree](https://formspree.io) AJAX contact form (with Formspree Gold)
* [Basin](https://usebasin.com/) AJAX contact form (free)
* Responsive Flexbox Grid
* [SASS](http://sass-lang.com/) styling
* Minimized/compressed CSS and JavaScript files with cachebusting hash setup
* Syntax highlighting with [Highlight.js](https://highlightjs.org/)
* SEO-friendly construction
* [Google Analytics](https://analytics.google.com) and [Google Tag Manager](https://tagmanager.google.com) integration
* [OpenGraph](http://ogp.me/) and [Twitter Cards](https://dev.twitter.com/cards/overview) integration
* Quick loading speeds
* Custom CSS option
## Screenshot
![Screenshot](https://github.com/tomanistor/osprey/blob/master/images/tn.png)
## Installation
### Option 1: Clone Repository
In the root of your Hugo site directory run:
```console
$ cd themes
$ git clone https://github.com/tomanistor/osprey.git
```
### Option 2: Create Submodule
Create a submodule linked directly to the theme's GitHub repository in order to receive updates:
```console
$ git submodule add https://github.com/tomanistor/osprey.git themes/osprey
```
Then run:
```console
$ git submodule update --init --recursive --remote
```
## Configuration
Osprey comes with several configuration options to aid in site customization. This is an example config.toml file:
```toml
title = "Osprey Example Site"
baseURL = "https://tomanistor.com"
tags = ["portfolio", "web design", "blog"]
languageCode = "en-US"
config = "config.toml"
theme = "osprey"
canonifyURLS = true
googleAnalytics = ""
disqusShortname = "tomanistor"
disableKinds = ["taxonomy", "taxonomyTerm"] # This theme does not currently use "tag" and "category" taxonomies
[Params]
tagline = "Osprey Example Site"
author = "Toma Nistor"
description = "Full-stack web developer and UI/UX enthusiast based in San Diego, CA."
logoBig = "/images/osprey-logo.png"
logoSmall = "/images/osprey-logo.png"
favicon = "favicon.ico"
opengraphImage = "/images/osprey.png"
email = ""
googleTagManager = ""
customCSS = false
# Social media links in footer
twitter = "TomaNistor"
linkedin = "tomanistor"
github = "tomanistor"
facebook = ""
# Copyright and theme author credit in footer
copyright = false
credit = false
# Cache busting of static resources (additional set up required)
cacheBustCSS = true
cacheBustJS = true
# Code highlighting with highlight.js
highlightJS = true
highlightJSStyle = "" # For custom highlight.js styles, add your /path/to/styles/default.css
highlightJSScript = "" # For custom highlight.js languages config, add your /path/to/highlight.pack.js
# Choose either Formspree contact form or Basin contact form
ajaxFormspree = false
ajaxFormspreeGold = false
ajaxBasin = "https://usebasin.com/f/0eae7044d4c2"
# Lazy loading with lazysizes
lazyloading = true
[[menu.main]]
name = "About"
url = "/#about"
weight = 1
[[menu.main]]
name = "Work"
url = "/#work"
weight = 2
[[menu.main]]
name = "Blog"
url = "/#blog"
weight = 3
[[menu.main]]
name = "Contact"
url = "/#contact"
weight = 4
```
## Using Osprey
The two main content types are blog posts and gallery images.
### About Section
To create an about section that renders on the home page, run:
```console
$ hugo new about.md
```
### Blog Posts
To create a new blog post, run:
```console
$ hugo new blog/post-title.md
```
### Gallery Images
To add a new image to your portfolio, run:
```console
$ hugo new gallery/image-title.md
```
The gallery archetype comes with its own configuration. Here is an example:
```md
+++
date = "2017-05-10T21:35:17-07:00"
title = "Image Title"
image = "image-file.png"
alt = "This is a description of the image"
color = "#7ac143"
link1 = "https://tomanistor.com"
link2 = "https://github.com/tomanistor"
+++
```
### Contact Form
Two contact forms services are offered as options: Formspree and Basin.
#### Formspree
_Update 4/15/18 - [Formspree no longer offers newly set up AJAX contact forms for free. This is now a Formspree Gold feature.](https://github.com/formspree/formspree/pull/173)_ You can either use the non-AJAX version of Formspree (which redirects to a Captcha page on form submit) by setting the config.toml parameter `ajaxFormspreeGold` to `false`, sign up for Formspree Gold and set the parameter to `true`, or sign up for Basin and use their contact form service for free.
The email address specified in the config.toml file will be the one receiving messages sent through the contact form. The contact form is operated by Formspree and requires that the form must be submitted once initially to confirm the email address being used. See instruction [here](https://formspree.io/).
#### Basin
Basin is an alternative, free AJAX contact form service. To use Basin, [sign up for a free account](https://usebasin.com/users/sign_up) and create a form. Copy and paste your form's URL endpoint to the `ajaxBasin` config.toml parameter. Select the `Submit this form via AJAX` option on your Basin dashboard.
![Basin AJAX setup](https://github.com/tomanistor/osprey/blob/master/images/basin-ajax-setup.png)
### Custom CSS
To implement custom CSS sitewide, change the config.toml parameter `customCSS` from `false` to `true` and then create a `css.html` file in your `layouts/partials/` folder like the example below:
```html
<style>
<!-- This will remove the shadow on the navbar -->
nav {
box-shadow: none;
}
</style>
```
This will render inline CSS in the head of your site and without adding an extra HTTP request.
### Cache Busting
As of `v2.1.0`, this theme uses native [Hugo Pipes](https://gohugo.io/hugo-pipes/introduction/) for cache busting of assets. Generated assets will be served from the `resources` folder and will no longer require any additional setup with Gulp.
## Contributions
If you'd like to help with the development of this theme, I encourage you to submit a pull request or create an issue if you find a bug. All help is appreciated.
## License
This theme is released under the Apache 2.0 license. For more information read the [license](https://github.com/tomanistor/osprey/blob/master/LICENSE).

View file

@ -1,6 +0,0 @@
+++
title = "{{ replace .TranslationBaseName "-" " " | title }}"
date = {{ .Date }}
description = ""
draft = true
+++

View file

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

View file

@ -1,11 +0,0 @@
+++
title = "{{ replace .TranslationBaseName "-" " " | title }}"
date = {{ .Date }}
image = ""
alt = ""
color = ""
link1 = ""
link2 = ""
projectDate = ""
draft = true
+++

View file

@ -1,67 +0,0 @@
(function() {
var $ = document.querySelector.bind(document)
$('#form-contact').addEventListener('submit', function(e) {
e.preventDefault()
// Store form field values
var name = $('input[name=name]').value,
email = $('input[name=email]').value,
subject = $('input[name=_subject]').value,
message = $('textarea[name=message]').value,
// AJAX request
request = new XMLHttpRequest(),
data = {
name: name,
_replyto: email,
email: email,
_subject: subject,
message: message
}
// Send to Formspree or Basin
request.open('POST', '{{ if .Site.Params.ajaxFormspree }}https://formspree.io/{{ .Site.Params.email }}{{ else if .Site.Params.ajaxBasin }}{{ .Site.Params.ajaxBasin }}.json{{ end }}', true)
request.setRequestHeader('Content-Type', 'application/json')
request.setRequestHeader('Accept', 'application/json')
// Call function when the state changes
request.onreadystatechange = function() {
if (request.readyState === 4 && request.status === 200) {
// Reset form
$('#form-contact').reset()
var submit = $('#form-submit'),
thanks = $('#form-thankyou')
function thankYouFadeIn() {
// Fade out submit button
submit.style.visibility = 'hidden'
submit.classList.add('hide')
submit.classList.remove('show')
// Fade in thank you message
thanks.style.visibility = 'visible'
thanks.classList.add('show')
thanks.classList.remove('hide')
setTimeout(thankYouFadeOut, 6000)
};
function thankYouFadeOut() {
// Fade out thank you message
thanks.style.visibility = 'hidden'
thanks.classList.add('hide')
thanks.classList.remove('show')
// Fade in submit button
submit.style.visibility = 'visible'
submit.classList.add('show')
submit.classList.remove('hide')
};
thankYouFadeIn()
}
}
request.send(JSON.stringify(data))
})
})()

View file

@ -1,99 +0,0 @@
(function() {
var $ = document.querySelector.bind(document),
$$ = document.querySelectorAll.bind(document),
menuActive = false
// Nav starts at bottom then is fixed to top
// Logo and hamburger menus fade in and out
window.onscroll = function() {
var scrollPosition = window.pageYOffset || document.documentElement.scrollTop,
windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight,
navHeight = $('nav').clientHeight
if (scrollPosition > windowHeight - navHeight) {
// Nav is fixed to top
$('nav').classList.add('nav-fixed')
$$('nav > .logo, nav > .nav-toggle').forEach(function(el) {
el.style.visibility = 'visible'
el.classList.add('show')
el.classList.remove('hide')
})
} else {
// Nav is not fixed
$('nav').classList.remove('nav-fixed')
$$('nav > .logo, nav > .nav-toggle').forEach(function(el) {
el.style.visibility = 'hidden'
el.classList.add('hide')
el.classList.remove('show')
})
}
}
// Full screen nav open on click
$('.nav-icon').addEventListener('click', function() {
$$('.nav-full, main').forEach(function(el) {
el.classList.toggle('active')
})
if (menuActive) {
this.querySelector('img:nth-of-type(1)').style.display = 'inline-block'
this.querySelector('img:nth-of-type(2)').style.display = 'none'
menuActive = false
} else {
this.querySelector('img:nth-of-type(1)').style.display = 'none'
this.querySelector('img:nth-of-type(2)').style.display = 'inline-block'
menuActive = true
}
})
// Full screen nav close on click
$$('.nav-full a').forEach(function(links) {
links.addEventListener('click', function() {
$$('.nav-full, main').forEach(function(el) {
el.classList.toggle('active')
})
})
})
// Fix logoBig drawing over nav when click on logoSmall while nav open
$('.logo').addEventListener('click', function() {
if ($('.nav-full').classList.contains('active')) {
$$('.nav-full, main').forEach(function(el) {
el.classList.toggle('active')
})
}
})
// Disable scroll when full screen nav is open
$('body').addEventListener('click', function() {
if ($('.nav-full').classList.contains('active')) {
$('html').style.overflowY = 'hidden'
} else {
$('html').style.overflowY = 'scroll'
}
})
// Mobile browsers viewport height bug fix
function fullMobileViewport() {
var element = this,
viewportHeight = window.innerHeight,
heightChangeTolerance = 100 // Approximate address bar height in Chrome
$(window).resize(function() {
if (Math.abs(viewportHeight - window.innerHeight) > heightChangeTolerance) {
viewportHeight = window.innerHeight
update()
}
})
function update() {
element.style.height = (viewportHeight + 'px')
}
update()
}
$$('header').forEach(function() {
fullMobileViewport
})
})()

View file

@ -1,57 +0,0 @@
(function() {
var $ = document.querySelector.bind(document),
$$ = document.querySelectorAll.bind(document),
menuActive = false
// Nav is fixed to top
$('nav').classList.add('nav-fixed')
$$('nav > .logo, nav > .nav-toggle').forEach(function(el) {
el.style.visibility = 'visible'
el.classList.add('show')
el.classList.remove('hide')
})
// Full screen nav open on click
$('.nav-icon').addEventListener('click', function() {
$$('.nav-full, main').forEach(function(el) {
el.classList.toggle('active')
})
if (menuActive) {
this.querySelector('img:nth-of-type(1)').style.display = 'inline-block'
this.querySelector('img:nth-of-type(2)').style.display = 'none'
menuActive = false
} else {
this.querySelector('img:nth-of-type(1)').style.display = 'none'
this.querySelector('img:nth-of-type(2)').style.display = 'inline-block'
menuActive = true
}
})
// Full screen nav close on click
$$('.nav-full a').forEach(function(links) {
links.addEventListener('click', function() {
$$('.nav-full, main').forEach(function(el) {
el.classList.toggle('active')
})
})
})
// Fix logoBig drawing over nav when click on logoSmall while nav open
$('.logo').addEventListener('click', function() {
if ($('.nav-full').classList.contains('active')) {
$$('.nav-full, main').forEach(function(el) {
el.classList.toggle('active')
})
}
})
// Disable scroll when full screen nav is open
$('body').addEventListener('click', function() {
if ($('.nav-full').classList.contains('active')) {
$('html').style.overflowY = 'hidden'
} else {
$('html').style.overflowY = 'scroll'
}
})
})()

View file

@ -1,68 +0,0 @@
(function() {
var $ = document.querySelector.bind(document),
$$ = document.querySelectorAll.bind(document),
modal,
modalBoxes = $$('.modal-box'),
// Link that opens modal
openLinks = $$('.gallery-modal-link'),
// Link that closes modal
closeLinks = $$('.close')
// Modal open animation
function openModal() {
modalBoxes.forEach(function(box) {
box.classList.add('scale-in-center')
box.classList.remove('scale-out-center')
})
}
// Modal close animation
function closeModal() {
modalBoxes.forEach(function(box) {
box.classList.remove('scale-in-center')
box.classList.add('scale-out-center')
// Remove active class from modal after modal-box animation is done
// box.addEventListener('animationend', function() {
// console.log('animation ended')
// modal.classList.remove('active')
// })
setTimeout(function() { modal.classList.remove('active') }, 500)
})
}
// Open modal on link click
openLinks.forEach(function(link) {
link.onclick = function(e) {
e.preventDefault()
modal = $(e.target.getAttribute('href'))
modal.classList.add('active')
openModal()
}
})
// Close modal on close link
closeLinks.forEach(function(link) {
link.onclick = function(e) {
e.preventDefault()
closeModal()
}
})
// Close modal on click outside modal
window.onclick = function(e) {
if (e.target === modal) {
closeModal()
}
}
// Close modal on ESC key press
document.onkeydown = function(e) {
if (e.key === 'Escape') {
closeModal()
}
}
})()

File diff suppressed because one or more lines are too long

View file

@ -1,27 +0,0 @@
.about {
width: 100%;
background-color: $smoke;
p {
margin-top: $vertical-rhythm;
}
a {
background-image: linear-gradient($accent, $accent);
background-repeat: repeat-x;
background-position: 0 95%;
background-size: 2px 3px;
text-decoration: none;
text-shadow: .03em 0 $white, -.03em 0 $white, 0 .03em $white, 0 -.03em $white,
.06em 0 $white, -.06em 0 $white, .09em 0 $white, -.09em 0 $white,
.12em 0 $white, -.12em 0 $white, .15em 0 $white, -.15em 0 $white,
.03em .075em $white, -.03em .075em $white, .06em .075em $white,
-.06em .075em $white, .09em .075em $white, -.09em .075em $white,
.12em .075em $white, -.12em .075em $white, .15em .075em $white,
-.15em .075em $white;
&:hover {
color: $accent;
}
}
}

View file

@ -1,46 +0,0 @@
@keyframes blink {
from,
to {
color: transparent;
}
50% {
color: $black;
}
}
@keyframes scale-in-center {
0% {
transform: scale(0);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 1;
}
}
@keyframes scale-out-center {
0% {
transform: scale(1);
opacity: 1;
}
100% {
transform: scale(0);
opacity: 1;
}
}
.cursor {
animation: 1s blink step-end infinite;
}
.scale-in-center {
animation: scale-in-center .3s cubic-bezier(.25, .46, .45, .94) both;
}
.scale-out-center {
animation: scale-out-center .5s cubic-bezier(.895, .03, .685, .22) both;
}

View file

@ -1,162 +0,0 @@
// Font styles
strong {
font-weight: 600;
}
del,
s {
text-decoration: line-through;
}
em,
dfn {
font-style: italic;
}
a {
transition: color .2s ease-out;
text-decoration: none;
img {
border: 0;
}
&:hover {
color: $accent;
}
}
// Code
pre {
margin-top: 0;
margin-bottom: $vertical-rhythm;
padding: 16px;
overflow: auto;
background-color: $smoke;
font: 12px "Consolas", "Liberation Mono", "Menlo", "Courier", monospace;
font-family: $font-code;
font-size: 85%;
line-height: 1.45;
word-wrap: normal;
& > code {
margin: 0;
padding: 0;
border: 0;
background: transparent;
font-size: 100%;
word-break: normal;
white-space: pre;
}
code {
display: inline;
margin: 0;
padding: 0;
overflow: visible;
border: 0;
background-color: transparent;
line-height: inherit;
word-wrap: normal;
&::before,
&::after {
content: normal;
}
}
}
code {
padding: 4px;
background-color: $smoke;
font-family: $font-code;
font-size: 90%;
}
.sans {
font-family: "Open Sans", "Myriad Pro", "Myriad", sans-serif;
}
.mono,
tt {
font-family: $font-code;
}
// Quotes
q {
@extend em;
&::before {
content: "\201C";
}
&::after {
content: "\201D";
}
}
%blockquote {
content: "\201C";
color: $accent;
font-family: $font-header;
font-size: 35px;
}
blockquote {
padding: 25px;
font-family: $font-header;
text-align: center;
p {
display: inline-block;
font-style: italic;
}
&::before {
@extend %blockquote;
}
&::after {
@extend %blockquote;
content: "\201D";
}
}
// Images
img {
display: inline-block;
max-width: 100%;
vertical-align: middle;
}
// Lists
ul,
ol {
margin-bottom: $vertical-rhythm;
li {
margin-left: 1.25em;
code {
font-family: $font-code;
}
}
}
ul li {
list-style-type: disc;
}
// Show or hide elements
.show {
transition: opacity 600ms;
}
.hide {
opacity: 0;
}

View file

@ -1,7 +0,0 @@
// https://coolors.co/1e1e1e-4e6b6c-f7f7f7-ffffff-da784d
$black: #212121;
$storm: #4E6B6C;
$smoke: #F7F7F7;
$accent: #DA784D;
$white: #FFFFFF;

View file

@ -1,882 +0,0 @@
//column-base selectors
//.col-xs, .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-offset-0, .col-xs-offset-1, .col-xs-offset-2, .col-xs-offset-3, .col-xs-offset-4, .col-xs-offset-5, .col-xs-offset-6, .col-xs-offset-7, .col-xs-offset-8, .col-xs-offset-9, .col-xs-offset-10, .col-xs-offset-11, .col-xs-offset-12
%column-base {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.container-fluid {
margin-right: auto;
margin-left: auto;
padding-right: 2rem;
padding-left: 2rem;
}
.container {
margin-right: auto;
margin-left: auto;
}
.row {
box-sizing: border-box;
display: flex;
flex: 0 1 auto;
flex-direction: row;
flex-wrap: wrap;
// margin-right: -0.5rem;
// margin-left: -0.5rem;
&.reverse {
flex-direction: row-reverse;
}
}
.col-xs {
@extend %column-base;
flex-grow: 1;
flex-basis: 0;
max-width: 100%;
}
.col-xs-1 {
@extend %column-base;
flex-basis: 8.33333333%;
max-width: 8.33333333%;
}
.col-xs-2 {
@extend %column-base;
flex-basis: 16.66666667%;
max-width: 16.66666667%;
}
.col-xs-3 {
@extend %column-base;
flex-basis: 25%;
max-width: 25%;
}
.col-xs-4 {
@extend %column-base;
flex-basis: 33.33333333%;
max-width: 33.33333333%;
}
.col-xs-5 {
@extend %column-base;
flex-basis: 41.66666667%;
max-width: 41.66666667%;
}
.col-xs-6 {
@extend %column-base;
flex-basis: 50%;
max-width: 50%;
}
.col-xs-7 {
@extend %column-base;
flex-basis: 58.33333333%;
max-width: 58.33333333%;
}
.col-xs-8 {
@extend %column-base;
flex-basis: 66.66666667%;
max-width: 66.66666667%;
}
.col-xs-9 {
@extend %column-base;
flex-basis: 75%;
max-width: 75%;
}
.col-xs-10 {
@extend %column-base;
flex-basis: 83.33333333%;
max-width: 83.33333333%;
}
.col-xs-11 {
@extend %column-base;
flex-basis: 91.66666667%;
max-width: 91.66666667%;
}
.col-xs-12 {
@extend %column-base;
flex-basis: 100%;
max-width: 100%;
}
.col-xs-offset-0 {
@extend %column-base;
margin-left: 0;
}
.col-xs-offset-1 {
@extend %column-base;
margin-left: 8.33333333%;
}
.col-xs-offset-2 {
@extend %column-base;
margin-left: 16.66666667%;
}
.col-xs-offset-3 {
@extend %column-base;
margin-left: 25%;
}
.col-xs-offset-4 {
@extend %column-base;
margin-left: 33.33333333%;
}
.col-xs-offset-5 {
@extend %column-base;
margin-left: 41.66666667%;
}
.col-xs-offset-6 {
@extend %column-base;
margin-left: 50%;
}
.col-xs-offset-7 {
@extend %column-base;
margin-left: 58.33333333%;
}
.col-xs-offset-8 {
@extend %column-base;
margin-left: 66.66666667%;
}
.col-xs-offset-9 {
@extend %column-base;
margin-left: 75%;
}
.col-xs-offset-10 {
@extend %column-base;
margin-left: 83.33333333%;
}
.col-xs-offset-11 {
@extend %column-base;
margin-left: 91.66666667%;
}
.col-xs-offset-12 {
@extend %column-base;
}
.start-xs {
justify-content: flex-start;
text-align: start;
}
.center-xs {
justify-content: center;
text-align: center;
}
.end-xs {
justify-content: flex-end;
text-align: end;
}
.top-xs {
align-items: flex-start;
}
.middle-xs {
align-items: center;
}
.bottom-xs {
align-items: flex-end;
}
.around-xs {
justify-content: space-around;
}
.between-xs {
justify-content: space-between;
}
.first-xs {
order: -1;
}
.last-xs {
order: 1;
}
@media only screen and(min-width: 48em) {
.container {
width: 49rem;
}
.col-sm {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-grow: 1;
flex-basis: 0;
max-width: 100%;
}
.col-sm-1 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 8.33333333%;
max-width: 10.33333333%;
}
.col-sm-2 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 16.66666667%;
max-width: 16.66666667%;
}
.col-sm-3 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 25%;
max-width: 25%;
}
.col-sm-4 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 33.33333333%;
max-width: 33.33333333%;
}
.col-sm-5 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 41.66666667%;
max-width: 41.66666667%;
}
.col-sm-6 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 50%;
max-width: 50%;
}
.col-sm-7 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 58.33333333%;
max-width: 58.33333333%;
}
.col-sm-8 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 66.66666667%;
max-width: 66.66666667%;
}
.col-sm-9 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 75%;
max-width: 75%;
}
.col-sm-10 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 83.33333333%;
max-width: 83.33333333%;
}
.col-sm-11 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 91.66666667%;
max-width: 91.66666667%;
}
.col-sm-12 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 100%;
max-width: 100%;
}
.col-sm-offset-0 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 0;
}
.col-sm-offset-1 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 8.33333333%;
}
.col-sm-offset-2 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 16.66666667%;
}
.col-sm-offset-3 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 25%;
}
.col-sm-offset-4 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 33.33333333%;
}
.col-sm-offset-5 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 41.66666667%;
}
.col-sm-offset-6 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 50%;
}
.col-sm-offset-7 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 58.33333333%;
}
.col-sm-offset-8 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 66.66666667%;
}
.col-sm-offset-9 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 75%;
}
.col-sm-offset-10 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 83.33333333%;
}
.col-sm-offset-11 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 91.66666667%;
}
.col-sm-offset-12 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.start-sm {
justify-content: flex-start;
text-align: start;
}
.center-sm {
justify-content: center;
text-align: center;
}
.end-sm {
justify-content: flex-end;
text-align: end;
}
.top-sm {
align-items: flex-start;
}
.middle-sm {
align-items: center;
}
.bottom-sm {
align-items: flex-end;
}
.around-sm {
justify-content: space-around;
}
.between-sm {
justify-content: space-between;
}
.first-sm {
order: -1;
}
.last-sm {
order: 1;
}
}
@media only screen and(min-width: 64em) {
.container {
width: 65rem;
}
.col-md {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-grow: 1;
flex-basis: 0;
max-width: 100%;
}
.col-md-1 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 8.33333333%;
max-width: 8.33333333%;
}
.col-md-2 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 16.66666667%;
max-width: 16.66666667%;
}
.col-md-3 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 25%;
max-width: 25%;
}
.col-md-4 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 33.33333333%;
max-width: 33.33333333%;
}
.col-md-5 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 41.66666667%;
max-width: 41.66666667%;
}
.col-md-6 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 50%;
max-width: 50%;
}
.col-md-7 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 58.33333333%;
max-width: 58.33333333%;
}
.col-md-8 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 66.66666667%;
max-width: 66.66666667%;
}
.col-md-9 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 75%;
max-width: 75%;
}
.col-md-10 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 83.33333333%;
max-width: 83.33333333%;
}
.col-md-11 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 91.66666667%;
max-width: 91.66666667%;
}
.col-md-12 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 100%;
max-width: 100%;
}
.col-md-offset-0 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 0;
}
.col-md-offset-1 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 8.33333333%;
}
.col-md-offset-2 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 16.66666667%;
}
.col-md-offset-3 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 25%;
}
.col-md-offset-4 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 33.33333333%;
}
.col-md-offset-5 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 41.66666667%;
}
.col-md-offset-6 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 50%;
}
.col-md-offset-7 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 58.33333333%;
}
.col-md-offset-8 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 66.66666667%;
}
.col-md-offset-9 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 75%;
}
.col-md-offset-10 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 83.33333333%;
}
.col-md-offset-11 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 91.66666667%;
}
.col-md-offset-12 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.start-md {
justify-content: flex-start;
text-align: start;
}
.center-md {
justify-content: center;
text-align: center;
}
.end-md {
justify-content: flex-end;
text-align: end;
}
.top-md {
align-items: flex-start;
}
.middle-md {
align-items: center;
}
.bottom-md {
align-items: flex-end;
}
.around-md {
justify-content: space-around;
}
.between-md {
justify-content: space-between;
}
.first-md {
order: -1;
}
.last-md {
order: 1;
}
}
@media only screen and(min-width: 75em) {
.container {
width: 76rem;
}
.col-lg {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-grow: 1;
flex-basis: 0;
max-width: 100%;
}
.col-lg-1 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 8.33333333%;
max-width: 8.33333333%;
}
.col-lg-2 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 16.66666667%;
max-width: 16.66666667%;
}
.col-lg-3 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 25%;
max-width: 25%;
}
.col-lg-4 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 33.33333333%;
max-width: 33.33333333%;
}
.col-lg-5 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 41.66666667%;
max-width: 41.66666667%;
}
.col-lg-6 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 50%;
max-width: 50%;
}
.col-lg-7 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 58.33333333%;
max-width: 58.33333333%;
}
.col-lg-8 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 66.66666667%;
max-width: 66.66666667%;
}
.col-lg-9 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 75%;
max-width: 75%;
}
.col-lg-10 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 83.33333333%;
max-width: 83.33333333%;
}
.col-lg-11 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 91.66666667%;
max-width: 91.66666667%;
}
.col-lg-12 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
flex-basis: 100%;
max-width: 100%;
}
.col-lg-offset-0 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 0;
}
.col-lg-offset-1 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 8.33333333%;
}
.col-lg-offset-2 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 16.66666667%;
}
.col-lg-offset-3 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 25%;
}
.col-lg-offset-4 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 33.33333333%;
}
.col-lg-offset-5 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 41.66666667%;
}
.col-lg-offset-6 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 50%;
}
.col-lg-offset-7 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 58.33333333%;
}
.col-lg-offset-8 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 66.66666667%;
}
.col-lg-offset-9 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 75%;
}
.col-lg-offset-10 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 83.33333333%;
}
.col-lg-offset-11 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
margin-left: 91.66666667%;
}
.col-lg-offset-12 {
box-sizing: border-box;
flex: 0 0 auto;
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.start-lg {
justify-content: flex-start;
text-align: start;
}
.center-lg {
justify-content: center;
text-align: center;
}
.end-lg {
justify-content: flex-end;
text-align: end;
}
.top-lg {
align-items: flex-start;
}
.middle-lg {
align-items: center;
}
.bottom-lg {
align-items: flex-end;
}
.around-lg {
justify-content: space-around;
}
.between-lg {
justify-content: space-between;
}
.first-lg {
order: -1;
}
.last-lg {
order: 1;
}
}
.col.reverse {
flex-direction: column-reverse;
}

View file

@ -1,74 +0,0 @@
.gallery {
.gallery-item {
position: relative;
width: 50%;
padding: 0;
&::after {
content: "";
display: block;
padding-bottom: 100%;
}
&:hover {
.overlay {
visibility: visible;
opacity: 1;
}
}
}
.overlay {
visibility: hidden;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
transition: .2s ease-out;
opacity: 0;
background-color: $black;
cursor: pointer;
a {
color: $white;
&:hover {
color: $accent;
}
}
h2 {
margin: $vertical-rhythm;
color: $white;
}
}
.gallery-img-container {
display: flex;
position: absolute;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
overflow: hidden;
}
img {
padding: $vertical-rhythm * 3;
/*TODO: This is an ugly hack. Either fix or ensure images to have a good dimension*/
width: 640px;
height: auto;
}
.gallery-modal-link {
display: flex;
position: absolute;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
}

View file

@ -1,57 +0,0 @@
* {
box-sizing: border-box;
margin: 0;
padding: 0;
border: 0;
color: $black;
font: inherit;
vertical-align: baseline;
&::before,
&::after {
box-sizing: border-box;
}
}
html {
box-sizing: inherit;
overflow-x: hidden;
}
body {
@include size(p);
display: flex;
flex-direction: column;
justify-content: space-between;
min-height: 100vh;
color: $black;
font-family: $font-body;
line-height: $base-line-height;
}
header {
height: 100vh;
background-color: $white;
div {
z-index: 101;
}
img {
max-height: $vertical-rhythm * 6;
}
h1 {
font-family: $font-body;
}
}
footer {
height: $vertical-rhythm * 6;
background-color: $black;
div,
a {
color: $white;
}
}

View file

@ -1,77 +0,0 @@
.members {
.members-item {
position: relative;
width: 50%;
padding: 0;
height: 650px;
overflow: hidden;
&::after {
content: "";
display: block;
padding-bottom: 100%;
}
&:hover {
.overlay {
visibility: visible;
opacity: 1;
}
}
}
/*.overlay {
visibility: hidden;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
transition: .2s ease-out;
opacity: 0;
background-color: $black;
cursor: pointer;
a {
color: $white;
&:hover {
color: $accent;
}
}
h2 {
margin: $vertical-rhythm;
color: $white;
}
}*/
.members-img-container {
display: flex;
/*position: absolute;*/
align-items: center;
justify-content: center;
/*width: 100%;
height: 100%;*/
}
img {
padding: $vertical-rhythm * 3;
border-radius: 50%;
width: 450px;
height: 450px;
}
.members-modal-link {
display: flex;
position: absolute;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
}

View file

@ -1,79 +0,0 @@
.modal {
display: flex;
visibility: hidden;
position: fixed;
z-index: -1000;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
overflow-x: hidden;
transition: opacity .2s ease-out;
// opacity: 0;
background-color: rgba(33, 33, 33, .75);
&.active {
visibility: visible;
z-index: 1000;
// opacity: 1;
}
}
.modal-box {
position: relative;
width: 80%;
max-width: 1000px;
max-height: 80vh;
margin: auto;
border-radius: 3px;
background-color: $smoke;
box-shadow: 0 0 50px 0 rgba(33, 33, 33, 1);
}
.modal-container {
overflow: hidden;
border-bottom-left-radius: inherit;
border-bottom-right-radius: inherit;
}
.modal-header {
height: 20vh;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.modal-header-img-container {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
padding: 40px;
img {
max-height: 100%;
}
}
.modal-content {
max-height: calc(80vh - 20vh);
padding: 30px;
overflow-y: auto;
}
.close {
position: absolute;
top: -20px;
right: -30px;
color: $smoke;
font-size: 30px;
font-weight: bold;
line-height: .5;
&:hover,
&:focus {
color: $accent;
text-decoration: none;
cursor: pointer;
}
}

View file

@ -1,58 +0,0 @@
$font-header: "Bitter", "Roboto Slab", "Cambria", Georgia, serif;
$font-body: "Rubik", "Poppins", "Hel­vetica", Arial, sans-serif;
$font-code: "Menlo", "Monaco", "Andale Mono", "lucida console", "Courier New", monospace;
// Modular font scale
// Large: http://www.modularscale.com/?1.25&em&1.333&web&text
// Medium: http://www.modularscale.com/?1.25&em&1.25&web&text
// SMall: http://www.modularscale.com/?1.1&em&1.25&web&text
$font-scale-large: (
h1: 2.961rem,
h2: 2.221rem,
h3: 1.666rem,
p: 1.3rem
);
$font-scale-medium: (
h1: 2.441rem,
h2: 1.953em,
h3: 1.563rem,
p: 1.3rem,
);
$font-scale-small: (
h1: 2.148rem,
h2: 1.719rem,
h3: 1.375rem,
p: 1.1rem
);
$base-line-height: 1.6;
$base-font-size: 1.25rem; // 20px
$vertical-rhythm: $base-line-height * $base-font-size; // 2.125em or 34px
$breakpoint-medium: 49.99em; // 768px
$breakpoint-small: 25em; // 400px
@mixin size($level) {
font-size: map-get($font-scale-large, $level);
@media (max-width: $breakpoint-medium) {
font-size: map-get($font-scale-medium, $level);
}
@media (max-width: $breakpoint-small) {
font-size: map-get($font-scale-small, $level);
}
}
h1 {
@include size(h1);
}
h2 {
@include size(h2);
}
h3 {
@include size(h3);
}

View file

@ -1,279 +0,0 @@
@import url("https://fonts.googleapis.com/css?family=Rubik|Bitter");
@import "flexboxgrid";
@import "colors";
@import "typography";
@import "animation";
@import "layout";
@import "base";
@import "modal";
@import "about";
@import "gallery";
@import "members";
@media (max-width: 47.99em) {
body .container {
padding: $vertical-rhythm * 4 $vertical-rhythm;
}
nav {
// Hide menu links between logo and hamburger menu
div:not(:first-child):not(:last-child) {
display: none;
}
div.nav-toggle a {
display: inline-block;
}
}
}
@media (max-width: 25em) {
body .container {
padding: $vertical-rhythm * 4 $vertical-rhythm;
}
nav {
div.logo,
div.nav-toggle {
max-width: 50% !important;
}
}
}
nav {
position: absolute;
z-index: 100;
bottom: 0;
width: 100%;
height: $vertical-rhythm * 2;
background-color: $white;
box-shadow: 0 2px 2px rgba(0, 0, 0, .4);
text-align: center;
h3 {
margin: 0;
font-family: $font-body;
font-weight: 600;
letter-spacing: 2px;
text-transform: uppercase;
}
img {
display: inline-block;
max-width: 10em;
max-height: 2.5em;
vertical-align: middle;
}
.logo,
.nav-toggle {
visibility: hidden;
}
.nav-toggle a {
display: none;
}
}
.nav-fixed {
position: fixed;
top: 0;
bottom: auto;
}
.nav-full {
position: fixed;
top: 0;
right: -100vw;
bottom: 0;
width: 100vw;
height: 100%;
transform: translate(0, 0);
transition: .25s ease-out;
background-color: $black;
a {
color: $white;
&:hover {
color: $accent;
}
}
}
.nav-full.active {
transform: translate(-100vw, 0);
}
main {
transition: .25s ease-in;
background-color: $white;
&.active {
transform: translate(-100vw, 0);
}
}
.container {
max-width: 62rem;
margin: auto;
padding: $vertical-rhythm * 4 0 $vertical-rhythm * 4;
}
p {
margin-bottom: $vertical-rhythm;
code {
font-family: $font-code;
}
}
h1,
h2,
h3 {
margin-bottom: $vertical-rhythm;
font-family: $font-header;
letter-spacing: 2px;
line-height: 1.45;
a {
text-decoration: none;
}
}
.home-logo {
margin-bottom: $vertical-rhythm;
}
.posts-list {
margin: 0 0 $vertical-rhythm;
}
.sub-header,
time {
@include size(p);
margin-bottom: $vertical-rhythm;
color: $storm;
}
.content {
width: 100%;
text-align: left;
time {
margin-left: 3px;
}
a {
background-image: linear-gradient($accent, $accent);
background-repeat: repeat-x;
background-position: 0 95%;
background-size: 1px 2px;
text-decoration: none;
text-shadow: .03em 0 $white, -.03em 0 $white, 0 .03em $white, 0 -.03em $white,
.06em 0 $white, -.06em 0 $white, .09em 0 $white, -.09em 0 $white,
.12em 0 $white, -.12em 0 $white, .15em 0 $white, -.15em 0 $white,
.03em .075em $white, -.03em .075em $white, .06em .075em $white,
-.06em .075em $white, .09em .075em $white, -.09em .075em $white,
.12em .075em $white, -.12em .075em $white, .15em .075em $white,
-.15em .075em $white;
&:hover {
color: $accent;
}
}
}
.highlight {
margin: 10px 0;
}
.pagination {
margin: 50px 0 0;
&:nth-child(2) {
float: right;
}
}
.full {
top: 0;
bottom: 0;
height: 100vh;
}
.blog {
display: flex;
min-height: 100vh;
h2 {
margin-bottom: 0;
}
h3 {
margin: 0 0 $vertical-rhythm * 2;
font-family: $font-body;
}
}
.contact {
width: 100%;
padding-bottom: $vertical-rhythm * 2;
background-color: $smoke;
form {
margin-top: $vertical-rhythm;
}
h3 {
font-size: 1.3rem;
word-wrap: break-word;
}
.contact-submit {
position: relative;
}
#form-submit {
display: block;
width: 50%;
margin: 0 auto;
}
#form-thankyou {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
input {
width: 100%;
margin: 8px 0;
padding: 10px;
border-width: 1px;
border-style: solid;
border-radius: 3px;
border-color: $smoke;
background-color: $white;
color: $black;
&[type="submit"] {
transition: .2s ease-out;
background-color: $storm;
color: $white;
&:hover {
background-color: $accent;
color: $white;
cursor: pointer;
}
}
}
textarea {
@extend input;
min-height: $vertical-rhythm * 4;
overflow: auto;
}

View file

@ -1,66 +0,0 @@
title = "Osprey Example Site"
baseURL = "https://tomanistor.com"
tags = ["portfolio", "web design", "blog"]
languageCode = "en-US"
config = "config.toml"
theme = "osprey"
canonifyURLS = true
googleAnalytics = ""
disqusShortname = "tomanistor"
disableKinds = ["taxonomy", "taxonomyTerm"] # This theme does not currently use "tag" and "category" taxonomies
[Params]
tagline = "Osprey Example Site"
author = "Toma Nistor"
description = "Full-stack web developer and UI/UX enthusiast based in San Diego, CA."
logoBig = "/images/osprey-logo.png"
logoSmall = "/images/osprey-logo.png"
favicon = "favicon.ico"
opengraphImage = "/images/osprey.png"
email = ""
googleTagManger = ""
customCSS = false
# Social media links in footer
twitter = "TomaNistor"
linkedin = "tomanistor"
github = "tomanistor"
facebook = ""
# Copyright and theme author credit in footer
copyright = true
credit = false
# Cache busting of static resources (additional set up required)
cacheBustCSS = false
cacheBustJS = false
# Code highlighting with highlight.js
highlightJS = true
highlightJSStyle = "" # For custom highlight.js styles, add your /path/to/styles/default.css
highlightJSScript = "" # For custom highlight.js languages config, add your /path/to/highlight.pack.js
# Choose either Formspree contact form or Basin contact form
ajaxFormspree = false
ajaxFormspreeGold = false
ajaxBasin = "https://usebasin.com/f/0eae7044d4c2"
# Lazy loading with lazysizes
lazyloading = true
[[menu.main]]
name = "About"
url = "/#about"
weight = 1
[[menu.main]]
name = "Work"
url = "/#work"
weight = 2
[[menu.main]]
name = "Blog"
url = "/#blog"
weight = 3
[[menu.main]]
name = "Contact"
url = "/#contact"
weight = 4

View file

@ -1,15 +0,0 @@
+++
title = "About"
date = "2017-06-27T17:39:21-07:00"
draft = false
+++
## Welcome to the Osprey Theme
To create an about section, generate an about.md file in your content folder by doing:
```console
$ hugo new about.md
```
Then add your own content to the markdown file. Everything in the file will be generated to show here on the home page.

View file

@ -1,343 +0,0 @@
+++
title = "(Hu)go Template Primer"
description = ""
tags = [
"go",
"golang",
"templates",
"themes",
"development",
]
date = "2014-04-02"
categories = [
"Development",
"golang",
]
+++
Hugo uses the excellent [go][] [html/template][gohtmltemplate] library for
its template engine. It is an extremely lightweight engine that provides a very
small amount of logic. In our experience that it is just the right amount of
logic to be able to create a good static website. If you have used other
template systems from different languages or frameworks you will find a lot of
similarities in go templates.
This document is a brief primer on using go templates. The [go docs][gohtmltemplate]
provide more details.
## Introduction to Go Templates
Go templates provide an extremely simple template language. It adheres to the
belief that only the most basic of logic belongs in the template or view layer.
One consequence of this simplicity is that go templates parse very quickly.
A unique characteristic of go templates is they are content aware. Variables and
content will be sanitized depending on the context of where they are used. More
details can be found in the [go docs][gohtmltemplate].
## Basic Syntax
Go lang templates are html files with the addition of variables and
functions.
**Go variables and functions are accessible within {{ }}**
Accessing a predefined variable "foo":
{{ foo }}
**Parameters are separated using spaces**
Calling the add function with input of 1, 2:
{{ add 1 2 }}
**Methods and fields are accessed via dot notation**
Accessing the Page Parameter "bar"
{{ .Params.bar }}
**Parentheses can be used to group items together**
{{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}
## Variables
Each go template has a struct (object) made available to it. In hugo each
template is passed either a page or a node struct depending on which type of
page you are rendering. More details are available on the
[variables](/layout/variables) page.
A variable is accessed by referencing the variable name.
<title>{{ .Title }}</title>
Variables can also be defined and referenced.
{{ $address := "123 Main St."}}
{{ $address }}
## Functions
Go template ship with a few functions which provide basic functionality. The go
template system also provides a mechanism for applications to extend the
available functions with their own. [Hugo template
functions](/layout/functions) provide some additional functionality we believe
are useful for building websites. Functions are called by using their name
followed by the required parameters separated by spaces. Template
functions cannot be added without recompiling hugo.
**Example:**
{{ add 1 2 }}
## Includes
When including another template you will pass to it the data it will be
able to access. To pass along the current context please remember to
include a trailing dot. The templates location will always be starting at
the /layout/ directory within Hugo.
**Example:**
{{ template "chrome/header.html" . }}
## Logic
Go templates provide the most basic iteration and conditional logic.
### Iteration
Just like in go, the go templates make heavy use of range to iterate over
a map, array or slice. The following are different examples of how to use
range.
**Example 1: Using Context**
{{ range array }}
{{ . }}
{{ end }}
**Example 2: Declaring value variable name**
{{range $element := array}}
{{ $element }}
{{ end }}
**Example 2: Declaring key and value variable name**
{{range $index, $element := array}}
{{ $index }}
{{ $element }}
{{ end }}
### Conditionals
If, else, with, or, & and provide the framework for handling conditional
logic in Go Templates. Like range, each statement is closed with `end`.
Go Templates treat the following values as false:
* false
* 0
* any array, slice, map, or string of length zero
**Example 1: If**
{{ if isset .Params "title" }}<h4>{{ index .Params "title" }}</h4>{{ end }}
**Example 2: If -> Else**
{{ if isset .Params "alt" }}
{{ index .Params "alt" }}
{{else}}
{{ index .Params "caption" }}
{{ end }}
**Example 3: And & Or**
{{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
**Example 4: With**
An alternative way of writing "if" and then referencing the same value
is to use "with" instead. With rebinds the context `.` within its scope,
and skips the block if the variable is absent.
The first example above could be simplified as:
{{ with .Params.title }}<h4>{{ . }}</h4>{{ end }}
**Example 5: If -> Else If**
{{ if isset .Params "alt" }}
{{ index .Params "alt" }}
{{ else if isset .Params "caption" }}
{{ index .Params "caption" }}
{{ end }}
## Pipes
One of the most powerful components of go templates is the ability to
stack actions one after another. This is done by using pipes. Borrowed
from unix pipes, the concept is simple, each pipeline's output becomes the
input of the following pipe.
Because of the very simple syntax of go templates, the pipe is essential
to being able to chain together function calls. One limitation of the
pipes is that they only can work with a single value and that value
becomes the last parameter of the next pipeline.
A few simple examples should help convey how to use the pipe.
**Example 1 :**
{{ if eq 1 1 }} Same {{ end }}
is the same as
{{ eq 1 1 | if }} Same {{ end }}
It does look odd to place the if at the end, but it does provide a good
illustration of how to use the pipes.
**Example 2 :**
{{ index .Params "disqus_url" | html }}
Access the page parameter called "disqus_url" and escape the HTML.
**Example 3 :**
{{ if or (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
Stuff Here
{{ end }}
Could be rewritten as
{{ isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" | if }}
Stuff Here
{{ end }}
## Context (aka. the dot)
The most easily overlooked concept to understand about go templates is that {{ . }}
always refers to the current context. In the top level of your template this
will be the data set made available to it. Inside of a iteration it will have
the value of the current item. When inside of a loop the context has changed. .
will no longer refer to the data available to the entire page. If you need to
access this from within the loop you will likely want to set it to a variable
instead of depending on the context.
**Example:**
{{ $title := .Site.Title }}
{{ range .Params.tags }}
<li> <a href="{{ $baseurl }}/tags/{{ . | urlize }}">{{ . }}</a> - {{ $title }} </li>
{{ end }}
Notice how once we have entered the loop the value of {{ . }} has changed. We
have defined a variable outside of the loop so we have access to it from within
the loop.
# Hugo Parameters
Hugo provides the option of passing values to the template language
through the site configuration (for sitewide values), or through the meta
data of each specific piece of content. You can define any values of any
type (supported by your front matter/config format) and use them however
you want to inside of your templates.
## Using Content (page) Parameters
In each piece of content you can provide variables to be used by the
templates. This happens in the [front matter](/content/front-matter).
An example of this is used in this documentation site. Most of the pages
benefit from having the table of contents provided. Sometimes the TOC just
doesn't make a lot of sense. We've defined a variable in our front matter
of some pages to turn off the TOC from being displayed.
Here is the example front matter:
```
---
title: "Permalinks"
date: "2013-11-18"
aliases:
- "/doc/permalinks/"
groups: ["extras"]
groups_weight: 30
notoc: true
---
```
Here is the corresponding code inside of the template:
{{ if not .Params.notoc }}
<div id="toc" class="well col-md-4 col-sm-6">
{{ .TableOfContents }}
</div>
{{ end }}
## Using Site (config) Parameters
In your top-level configuration file (eg, `config.yaml`) you can define site
parameters, which are values which will be available to you in chrome.
For instance, you might declare:
```yaml
params:
CopyrightHTML: "Copyright &#xA9; 2013 John Doe. All Rights Reserved."
TwitterUser: "spf13"
SidebarRecentLimit: 5
```
Within a footer layout, you might then declare a `<footer>` which is only
provided if the `CopyrightHTML` parameter is provided, and if it is given,
you would declare it to be HTML-safe, so that the HTML entity is not escaped
again. This would let you easily update just your top-level config file each
January 1st, instead of hunting through your templates.
```
{{if .Site.Params.CopyrightHTML}}<footer>
<div class="text-center">{{.Site.Params.CopyrightHTML | safeHtml}}</div>
</footer>{{end}}
```
An alternative way of writing the "if" and then referencing the same value
is to use "with" instead. With rebinds the context `.` within its scope,
and skips the block if the variable is absent:
```
{{with .Site.Params.TwitterUser}}<span class="twitter">
<a href="https://twitter.com/{{.}}" rel="author">
<img src="/images/twitter.png" width="48" height="48" title="Twitter: {{.}}"
alt="Twitter"></a>
</span>{{end}}
```
Finally, if you want to pull "magic constants" out of your layouts, you can do
so, such as in this example:
```
<nav class="recent">
<h1>Recent Posts</h1>
<ul>{{range first .Site.Params.SidebarRecentLimit .Site.Recent}}
<li><a href="{{.RelPermalink}}">{{.Title}}</a></li>
{{end}}</ul>
</nav>
```
[go]: <http://golang.org/>
[gohtmltemplate]: <http://golang.org/pkg/html/template/>

View file

@ -1,88 +0,0 @@
+++
title = "Getting Started with Hugo"
description = ""
tags = [
"go",
"golang",
"hugo",
"development",
]
date = "2014-04-02"
categories = [
"Development",
"golang",
]
+++
## Step 1. Install Hugo
Goto [hugo releases](https://github.com/spf13/hugo/releases) and download the
appropriate version for your os and architecture.
Save it somewhere specific as we will be using it in the next step.
More complete instructions are available at [installing hugo](/overview/installing/)
## Step 2. Build the Docs
Hugo has its own example site which happens to also be the documentation site
you are reading right now.
Follow the following steps:
1. Clone the [hugo repository](http://github.com/spf13/hugo)
2. Go into the repo
3. Run hugo in server mode and build the docs
4. Open your browser to http://localhost:1313
Corresponding pseudo commands:
git clone https://github.com/spf13/hugo
cd hugo
/path/to/where/you/installed/hugo server --source=./docs
> 29 pages created
> 0 tags index created
> in 27 ms
> Web Server is available at http://localhost:1313
> Press ctrl+c to stop
Once you've gotten here, follow along the rest of this page on your local build.
## Step 3. Change the docs site
Stop the Hugo process by hitting ctrl+c.
Now we are going to run hugo again, but this time with hugo in watch mode.
/path/to/hugo/from/step/1/hugo server --source=./docs --watch
> 29 pages created
> 0 tags index created
> in 27 ms
> Web Server is available at http://localhost:1313
> Watching for changes in /Users/spf13/Code/hugo/docs/content
> Press ctrl+c to stop
Open your [favorite editor](http://vim.spf13.com) and change one of the source
content pages. How about changing this very file to *fix the typo*. How about changing this very file to *fix the typo*.
Content files are found in `docs/content/`. Unless otherwise specified, files
are located at the same relative location as the url, in our case
`docs/content/overview/quickstart.md`.
Change and save this file.. Notice what happened in your terminal.
> Change detected, rebuilding site
> 29 pages created
> 0 tags index created
> in 26 ms
Refresh the browser and observe that the typo is now fixed.
Notice how quick that was. Try to refresh the site before it's finished building.. I double dare you.
Having nearly instant feedback enables you to have your creativity flow without waiting for long builds.
## Step 4. Have fun
The best way to learn something is to play with it.

View file

@ -1,153 +0,0 @@
---
date: 2014-03-10
linktitle: Migrating from Jekyll
prev: /tutorials/mathjax
title: Migrate to Hugo from Jekyll
weight: 10
---
## Move static content to `static`
Jekyll has a rule that any directory not starting with `_` will be copied as-is to the `_site` output. Hugo keeps all static content under `static`. You should therefore move it all there.
With Jekyll, something that looked like
<root>/
▾ images/
logo.png
should become
<root>/
▾ static/
▾ images/
logo.png
Additionally, you'll want any files that should reside at the root (such as `CNAME`) to be moved to `static`.
## Create your Hugo configuration file
Hugo can read your configuration as JSON, YAML or TOML. Hugo supports parameters custom configuration too. Refer to the [Hugo configuration documentation](/overview/configuration/) for details.
## Set your configuration publish folder to `_site`
The default is for Jekyll to publish to `_site` and for Hugo to publish to `public`. If, like me, you have [`_site` mapped to a git submodule on the `gh-pages` branch](http://blog.blindgaenger.net/generate_github_pages_in_a_submodule.html), you'll want to do one of two alternatives:
1. Change your submodule to point to map `gh-pages` to public instead of `_site` (recommended).
git submodule deinit _site
git rm _site
git submodule add -b gh-pages git@github.com:your-username/your-repo.git public
2. Or, change the Hugo configuration to use `_site` instead of `public`.
{
..
"publishdir": "_site",
..
}
## Convert Jekyll templates to Hugo templates
That's the bulk of the work right here. The documentation is your friend. You should refer to [Jekyll's template documentation](http://jekyllrb.com/docs/templates/) if you need to refresh your memory on how you built your blog and [Hugo's template](/layout/templates/) to learn Hugo's way.
As a single reference data point, converting my templates for [heyitsalex.net](http://heyitsalex.net/) took me no more than a few hours.
## Convert Jekyll plugins to Hugo shortcodes
Jekyll has [plugins](http://jekyllrb.com/docs/plugins/); Hugo has [shortcodes](/doc/shortcodes/). It's fairly trivial to do a port.
### Implementation
As an example, I was using a custom [`image_tag`](https://github.com/alexandre-normand/alexandre-normand/blob/74bb12036a71334fdb7dba84e073382fc06908ec/_plugins/image_tag.rb) plugin to generate figures with caption when running Jekyll. As I read about shortcodes, I found Hugo had a nice built-in shortcode that does exactly the same thing.
Jekyll's plugin:
module Jekyll
class ImageTag < Liquid::Tag
@url = nil
@caption = nil
@class = nil
@link = nil
// Patterns
IMAGE_URL_WITH_CLASS_AND_CAPTION =
IMAGE_URL_WITH_CLASS_AND_CAPTION_AND_LINK = /(\w+)(\s+)((https?:\/\/|\/)(\S+))(\s+)"(.*?)"(\s+)->((https?:\/\/|\/)(\S+))(\s*)/i
IMAGE_URL_WITH_CAPTION = /((https?:\/\/|\/)(\S+))(\s+)"(.*?)"/i
IMAGE_URL_WITH_CLASS = /(\w+)(\s+)((https?:\/\/|\/)(\S+))/i
IMAGE_URL = /((https?:\/\/|\/)(\S+))/i
def initialize(tag_name, markup, tokens)
super
if markup =~ IMAGE_URL_WITH_CLASS_AND_CAPTION_AND_LINK
@class = $1
@url = $3
@caption = $7
@link = $9
elsif markup =~ IMAGE_URL_WITH_CLASS_AND_CAPTION
@class = $1
@url = $3
@caption = $7
elsif markup =~ IMAGE_URL_WITH_CAPTION
@url = $1
@caption = $5
elsif markup =~ IMAGE_URL_WITH_CLASS
@class = $1
@url = $3
elsif markup =~ IMAGE_URL
@url = $1
end
end
def render(context)
if @class
source = "<figure class='#{@class}'>"
else
source = "<figure>"
end
if @link
source += "<a href=\"#{@link}\">"
end
source += "<img src=\"#{@url}\">"
if @link
source += "</a>"
end
source += "<figcaption>#{@caption}</figcaption>" if @caption
source += "</figure>"
source
end
end
end
Liquid::Template.register_tag('image', Jekyll::ImageTag)
is written as this Hugo shortcode:
<!-- image -->
<figure {{ with .Get "class" }}class="{{.}}"{{ end }}>
{{ with .Get "link"}}<a href="{{.}}">{{ end }}
<img src="{{ .Get "src" }}" {{ if or (.Get "alt") (.Get "caption") }}alt="{{ with .Get "alt"}}{{.}}{{else}}{{ .Get "caption" }}{{ end }}"{{ end }} />
{{ if .Get "link"}}</a>{{ end }}
{{ if or (or (.Get "title") (.Get "caption")) (.Get "attr")}}
<figcaption>{{ if isset .Params "title" }}
{{ .Get "title" }}{{ end }}
{{ if or (.Get "caption") (.Get "attr")}}<p>
{{ .Get "caption" }}
{{ with .Get "attrlink"}}<a href="{{.}}"> {{ end }}
{{ .Get "attr" }}
{{ if .Get "attrlink"}}</a> {{ end }}
</p> {{ end }}
</figcaption>
{{ end }}
</figure>
<!-- image -->
### Usage
I simply changed:
{% image full http://farm5.staticflickr.com/4136/4829260124_57712e570a_o_d.jpg "One of my favorite touristy-type photos. I secretly waited for the good light while we were "having fun" and took this. Only regret: a stupid pole in the top-left corner of the frame I had to clumsily get rid of at post-processing." ->http://www.flickr.com/photos/alexnormand/4829260124/in/set-72157624547713078/ %}
to this (this example uses a slightly extended version named `fig`, different than the built-in `figure`):
{{%/* fig class="full" src="http://farm5.staticflickr.com/4136/4829260124_57712e570a_o_d.jpg" title="One of my favorite touristy-type photos. I secretly waited for the good light while we were having fun and took this. Only regret: a stupid pole in the top-left corner of the frame I had to clumsily get rid of at post-processing." link="http://www.flickr.com/photos/alexnormand/4829260124/in/set-72157624547713078/" */%}}
As a bonus, the shortcode named parameters are, arguably, more readable.
## Finishing touches
### Fix content
Depending on the amount of customization that was done with each post with Jekyll, this step will require more or less effort. There are no hard and fast rules here except that `hugo server --watch` is your friend. Test your changes and fix errors as needed.
### Clean up
You'll want to remove the Jekyll configuration at this point. If you have anything else that isn't used, delete it.
## A practical example in a diff
[Hey, it's Alex](http://heyitsalex.net/) was migrated in less than a _father-with-kids day_ from Jekyll to Hugo. You can see all the changes (and screw-ups) by looking at this [diff](https://github.com/alexandre-normand/alexandre-normand/compare/869d69435bd2665c3fbf5b5c78d4c22759d7613a...b7f6605b1265e83b4b81495423294208cc74d610).

View file

@ -1,10 +0,0 @@
+++
date = "2017-05-15T22:25:02-07:00"
title = "Hugo"
image = "hugo.png"
alt = "Hugo - a fast and modern static website engine"
color = "#60d2d3"
link1 = "http://gohugo.io/"
link2 = "https://github.com/spf13/hugo"
+++

View file

@ -1,10 +0,0 @@
+++
date = "2017-05-15T21:57:17-07:00"
title = "Osprey"
image = "osprey.png"
alt = "Osprey - minimalist blog and portfolio Hugo theme"
color = "#F7F7F7"
link1 = "https://github.com/tomanistor/osprey"
link2 = "https://github.com/tomanistor/osprey"
+++

View file

@ -1,10 +0,0 @@
+++
date = "2017-05-15T21:52:57-07:00"
title = "Rugged Fellows Guide"
image = "rugged-fellows-guide.png"
alt = "Rugged Fellows Guide - men's lifestyle Wordpress blog"
color = "#263248"
link1 = "https://ruggedfellowsguide.com"
link2 = ""
+++

View file

@ -1,10 +0,0 @@
+++
date = "2017-05-15T22:25:16-07:00"
title = "Toma Nistor"
image = "toma-nistor.png"
alt = "Toma Nistor"
color = "#212121"
link1 = "https://tomanistor.com"
link2 = "https://github.com/tomanistor/tomanistor.com"
+++

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View file

@ -1,33 +0,0 @@
[view]
other = "Anzeigen"
[code]
other = "Code"
[viewAll]
other = "Alles anzeigen"
[letsChat]
other = "Lass uns Chatten"
[name]
other = "Name"
[email]
other = "Email"
[subject]
other = "Betreff"
[message]
other = "Nachricht"
[send]
other = "Sende"
[thanksForYourEmail]
other = "Danke für deine Email!"
[minuteRead]
one = "Eine Minute zu lesen"
other = "{{.Count}} Minuten zu lesen"
[latestPosts]
other = "Letzte Posts"
[enableJavaScript]
other = "Bitte aktiviere JavaScript um die Kommentare anzuzeigen von"
[404Message]
other = "WAS HAST DU GETAN?!"
[themeDevelopedBy]
other = "Theme entwickelt von"
[copyright]
other = "Copyright"

View file

@ -1,43 +0,0 @@
[view]
other = "View"
[code]
other = "Code"
[viewAll]
other = "View All"
[letsChat]
other = "Let's Chat"
[name]
other = "Name"
[email]
other = "Email"
[mail]
other = "distorsion@groupes.renater.fr"
[subject]
other = "Subject"
[message]
other = "Message"
[send]
other = "Send"
[thanksForYourEmail]
other = "Thanks for your email!"
[minuteRead]
one = "One minute read"
other = "{{.Count}} minutes read"
[latestPosts]
other = "Latest Posts"
[enableJavaScript]
other = "Please enable JavaScript to view comments powered by"
[404Message]
other = "WHAT DID YOU DO?!"
[themeDevelopedBy]
other = "Theme developed by"
[copyright]
other = "Copyright"
[facebook]
other = "Facebook"
[github]
other = "GitHub"
[linkedin]
other = "LinkedIn"
[twitter]
other = "Twitter"

View file

@ -1,32 +0,0 @@
[view]
other = "Visa"
[code]
other = "Kod"
[viewAll]
other = "Visa alla"
[letsChat]
other = "Låt oss prata"
[name]
other = "Namn"
[email]
other = "E-post"
[subject]
other = "Rubrik"
[message]
other = "Meddelande"
[send]
other = "Skicka"
[thanksForYourEmail]
other = "Tack för ditt mail!"
[minuteRead]
other = "minuters läsning"
[latestPosts]
other = "Senaste inläggen"
[enableJavaScript]
other = "Vänligen aktivera Javascript för att visa kommentarer med hjälp av"
[404Message]
other = "Vad hände?"
[themeDevelopedBy]
other = "Temat utvecklat av"
[copyright]
other = "upphovsrätt"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

View file

@ -1,19 +0,0 @@
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
{{ partial "head.html" . }}
<body>
{{ partial "body-top" . }}
<main>
<div class="row full center-xs middle-xs">
<div class="col-xs-12">
<h1>404!</h1>
<p>{{ i18n "404Message" }}</p>
</div>
</div>
</main>
{{ partial "footer.html" . }}
{{ partial "body-bottom" . }}
</body>
</html>

View file

@ -1,32 +0,0 @@
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
{{ partial "head.html" . }}
<body>
{{ partial "body-top" . }}
<main>
<section class="blog" id="blog">
<div class="container">
<div class="row center-xs">
<div class="col-xs-12"><h1>{{ humanize .Type }}</h1></div>
</div>
<div class="row">
<div class="col-xs-12 posts-list">
{{ range .Data.Pages }}
<article>
<h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2>
<div class=sub-header>
{{ .Date.Format (.Site.Params.dateform | default "January 2, 2006") }} · {{ i18n "minuteRead" .ReadingTime }}
</div>
</article>
{{ end }}
</div>
</div>
</div>
</section>
</main>
{{ partial "footer.html" . }}
{{ partial "body-bottom" . }}
</body>
</html>

View file

@ -1,37 +0,0 @@
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
{{ partial "head.html" . }}
<body>
{{ partial "body-top" . }}
<main>
<section class="container">
<section class="content">
<h1>{{ if .Params.heading }} {{ .Params.heading }} {{ else }} {{ .Title }} {{ end }}</h1>
<div class="sub-header">
{{ .Date.Format (.Site.Params.dateform | default "January 2, 2006") }} · {{ i18n "minuteRead" .ReadingTime }}
</div>
<article class="entry-content">
{{ .Content }}
</article>
<div class="pagination">
{{ if .PrevInSection }}
<a href="{{ .PrevInSection.Permalink }}">&laquo; {{ .PrevInSection.Title }}</a>
{{ end }}
{{ if .NextInSection }}
<a href="{{ .NextInSection.Permalink }}">{{ .NextInSection.Title }} &raquo;</a>
{{ end }}
</div>
</section>
<br>
{{ partial "disqus" . }}
</section>
</main>
{{ partial "footer.html" . }}
{{ partial "body-bottom" . }}
</body>
</html>

View file

@ -1 +0,0 @@
<meta http-equiv="refresh" content="0; url={{ .Site.BaseURL }}">

View file

@ -1 +0,0 @@
<meta http-equiv="refresh" content="0; url={{ .Site.BaseURL }}">

View file

@ -1,28 +0,0 @@
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
{{ partial "head.html" . }}
<body>
{{ partial "body-top" . }}
<main>
<!-- About -->
{{ partial "about.html" . }}
<!-- Gallery -->
{{ if not (eq (len (where .Site.RegularPages "Section" "gallery")) 0) }}
{{ partial "gallery.html" . }}
{{ end }}
<!-- Blog -->
{{ if not (eq (len (where .Site.RegularPages "Section" "blog")) 0) }}
{{ partial "blog.html" . }}
{{ end }}
<!-- Contact -->
{{ partial "contact.html" . }}
</main>
{{ partial "footer.html" . }}
{{ partial "body-bottom" . }}
</body>
</html>

View file

@ -1,20 +0,0 @@
{{ $directory := "content/" }}
{{ $filename := "about.md" }}
{{ if (where (readDir $directory) "Name" $filename) }}
<section class="about" id="about">
<div class="container middle-xs">
<div class="row center-xs">
<div class="col-xs-12">
<h1>{{ with $.Site.GetPage "page" "about" }}{{ .Title }}{{ end }}</h1>
</div>
</div>
<div class="row">
<div class="col-xs-12 middle-xs">
{{ with $.Site.GetPage "page" "about" }}
{{ .Content }}
{{ end }}
</div>
</div>
</div>
</section>
{{ end }}

Some files were not shown because too many files have changed in this diff Show more