diff --git a/config.toml b/config.toml
index b83ea11..772550a 100644
--- a/config.toml
+++ b/config.toml
@@ -16,5 +16,8 @@ copyright = ""
category = "categories"
tag = "tags"
+[outputs]
+ home = ["html", "rss", "json"]
+
[params]
logo = "/images/logo.png"
diff --git a/content/search.md b/content/search.md
new file mode 100644
index 0000000..75b4983
--- /dev/null
+++ b/content/search.md
@@ -0,0 +1,4 @@
+---
+title: "Search Results"
+layout: "search"
+---
diff --git a/themes/hugo-recettes/assets/js/search.js b/themes/hugo-recettes/assets/js/search.js
new file mode 100644
index 0000000..1c7f4bb
--- /dev/null
+++ b/themes/hugo-recettes/assets/js/search.js
@@ -0,0 +1,71 @@
+var searchFunction = function(event) {
+ var searchQuery = $('#search-query').val();
+
+ if (searchQuery.length <= 3) {
+ $('#search-results').html("
Aucun résultat trouvé
");
+ return;
+ }
+
+ var lunrResults = lunrIdx.search(searchQuery);
+ if (lunrResults.length > 0) {
+ populateLunrResults(searchQuery, lunrResults);
+ }else{
+ $('#search-results').html("Aucun résultat trouvé
");
+ }
+}
+
+var templateDefinition = `
+
+`;
+var template = Handlebars.compile(templateDefinition);
+
+var populateLunrResults = function(searchQuery, results) {
+ var resultDiv = $('#search-results');
+ resultDiv.html('');
+ $.each(results,function(rIdx,result){
+ var resultPage = jsonData.filter(function(page) {
+ return page.permalink === result.ref;
+ })[0];
+ console.info(result);
+ console.info(resultPage);
+
+ var output = template({
+ key: rIdx,
+ title: resultPage.title,
+ content: resultPage.contents,
+ categories: resultPage.categories,
+ link: result.ref
+ });
+ resultDiv.append(output);
+
+ $("#summary-" + rIdx).mark(searchQuery.replace(/[+-]/g, ''));
+ });
+}
+
+var lunrIdx;
+var jsonData;
+$('#search-query').prop('disabled', true);
+$.getJSON( "../index.json", function( pages ) {
+ jsonData = pages;
+
+ lunrIdx = lunr(function() {
+ this.field("title", { boost: 10 });
+ this.field("categories", { boost: 5 });
+ this.field("contents");
+ this.ref("permalink");
+
+ jsonData.forEach(function (page) {
+ this.add(page)
+ }, this)
+ });
+
+ $('#search-query').prop('disabled', false);
+ searchFunction();
+});
+
+var formField = $('#search-query');
+formField.change(searchFunction);
+formField.keyup(searchFunction);
diff --git a/themes/hugo-recettes/layouts/_default/index.json b/themes/hugo-recettes/layouts/_default/index.json
new file mode 100644
index 0000000..9af8bf6
--- /dev/null
+++ b/themes/hugo-recettes/layouts/_default/index.json
@@ -0,0 +1,21 @@
+{{- $allRecettes := newScratch -}}
+{{- $allRecettes.Add "index" slice -}}
+{{- range .Site.RegularPages -}}
+ {{ $recette := (dict "title" .Title "permalink" .Permalink "categories" .CurrentSection.Title) }}
+
+ {{- $ingredients := newScratch -}}
+ {{- $ingredients.Add "ingredients" slice -}}
+ {{- range .Params.steps -}}
+ {{- range .ingredients -}}
+ {{- $ingredients.Add "ingredients" .name -}}
+ {{- end -}}
+ {{- end -}}
+
+
+ {{- $ingredientsArray := $ingredients.Get "ingredients" -}}
+ {{- $ingredientsContent := delimit $ingredientsArray ", " -}}
+ {{- $recette := merge $recette (dict "ingredients" $ingredientsArray) -}}
+ {{- $recette := merge $recette (dict "contents" $ingredientsContent) -}}
+ {{- $allRecettes.Add "index" $recette -}}
+{{- end -}}
+{{- $allRecettes.Get "index" | jsonify -}}
diff --git a/themes/hugo-recettes/layouts/_default/search.html b/themes/hugo-recettes/layouts/_default/search.html
new file mode 100644
index 0000000..d593fd7
--- /dev/null
+++ b/themes/hugo-recettes/layouts/_default/search.html
@@ -0,0 +1,31 @@
+{{ partial "header.html" . }}
+
+{{ $searchJS := resources.Get "js/search.js" }}
+{{ $searchJSMin := $searchJS | minify | resources.Fingerprint "sha512" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{{ partial "footer.html" . }}
diff --git a/themes/hugo-recettes/layouts/partials/header.html b/themes/hugo-recettes/layouts/partials/header.html
index 1a0099e..7cccb37 100644
--- a/themes/hugo-recettes/layouts/partials/header.html
+++ b/themes/hugo-recettes/layouts/partials/header.html
@@ -9,6 +9,9 @@
{{ $cssBundle := slice $bootstrapCSS $customCSS | resources.Concat "css/bundle.css" }}
{{ $cssBundleMin := $cssBundle | resources.Minify | resources.Fingerprint "sha512" }}
+{{ $indexUrl := "index.html" | absURL }}
+{{ $searchUrl := "search" | absURL }}
+
@@ -23,16 +26,16 @@
-