Add search.html (partial) and index.json (base)

This commit is contained in:
Ethan Yoo 2022-12-29 09:44:37 -05:00
parent 7d162701ed
commit 863dccbda8
Signed by: ethan
GPG Key ID: 70596474C5D20F85
2 changed files with 176 additions and 0 deletions

View File

@ -0,0 +1,15 @@
{{/* layouts/_default/index.json */}}
{{- $index := slice -}}
{{- range where .Site.RegularPages.ByDate.Reverse "Type" "not in" (slice "page" "json") -}}
{{ if .Params.dateCreated }}
{{ $.Scratch.Set "date" (.Params.dateCreated) }}
{{ else }}
{{- if isset site.Params "date_format" -}}
{{- $.Scratch.Set "date" (.Date.Format site.Params.date_format) -}}
{{- else -}}
{{- $.Scratch.Set "date" (.Date.Format "2006-01-02") -}}
{{- end -}}
{{ end }}
{{- $index = $index | append (dict "title" ( .Title | plainify ) "permalink" .Permalink "section" (i18n (.Section | title)) "tags" (apply .Params.tags "i18n" "." ) "categories" (apply .Params.categories "i18n" "." ) "summary" (.Params.summary | markdownify | htmlUnescape | plainify) "date" ($.Scratch.Get "date") ) -}}
{{- end -}}
{{- $index | jsonify -}}

View File

@ -0,0 +1,161 @@
<!-- layouts/partials/search.html -->
<form id="search-form" class="noscript" method="GET" action="https://duckduckgo.com/" data-language-prefix="{{ site.LanguagePrefix }}">
<div class="search-bar">
<input id="search-input" class="search--display" name="q" tabindex="0" autocomplete="off" {{ with site.BaseURL }}value=" site:{{ . }}"{{ end }} placeholder="{{ i18n "search" }}">
<input id="search-submit" class="icon" type="submit" value="⌕">
</div>
<ul id="search-results" class="search--display"></ul>
</form>
<!-- <script src="{{ "/scripts/fuse.js" | relURL }}"></script> -->
<script src="{{ "/scripts/fixedsearch/fixedsearch.js" | relURL }}"></script>
<style>
#search-form {
display: block;
position: fixed;
top: 0;
right: 0;
margin: 0;
padding: 0;
min-width: var(--icon-size, 1.2rem);
max-width: 15rem;
max-height: 100vh;
z-index: 1000;
}
#search-form.search--display,
#search-form[data-focus='false'] .search--display {
display: none;
}
#search-form[data-focus='true'] .search--display {
display: block;
}
#search-form .search-bar {
display: flex;
height: 1.4rem;
align-items: center;
}
#search-form .search-bar {
background: rgb(var(--page-color, '240,240,240'));
color: rgb(var(--text-color, '3,3,3'));
}
#search-form[data-focus='true'] .search-bar {
border: 2.5px solid rgb(var(--accent-color, '0,0,255'));
}
#search-form[data-focus='true'] .search-bar:not(:focus-within) {
background: rgb(var(--text-color, '3,3,3'));
color: rgb(var(--page-color, '240,240,240'));
border-color: rgb(var(--text-color, '3,3,3'));
}
#search-input {
display: block;
padding: 0.3rem;
width: 15rem;
max-width: 100vw;
height: 100%;
background: inherit;
border: none;
color: inherit;
outline: none;
text-align: left;
font-size: var(--s-2, 0.8rem);
}
#search-submit {
display: block;
margin: 0 var(--icon-pad, 0.1rem) 0 0;
padding: 0;
width: var(--icon-size, 1.2rem);
height: var(--icon-size, 1.2rem);
line-height: var(--icon-size, 1.2rem);
background: inherit;
color: inherit;
}
#search-submit:hover,
#search-submit:focus {
color: rgb(var(--accent-color, '0,0,255'));
}
#search-results {
display: block;
flex-grow: 2;
margin: 0.5px 0 0 0;
padding: 0;
max-height: calc(100vh - 1.4rem - 0.5px);
width: 100%;
overflow-x: hidden;
overflow-y: auto;
backdrop-filter: blur(var(--page-color-blur, 2px));
border: 2.5px solid;
color: rgb(var(--text-color, '3,3,3'));
font-size: var(--s-2, 0.8rem);
scrollbar-color: rgb(var(--text-color, '3,3,3')) rgb(var(--page-color, '240,240,240')) !important;
scrollbar-width: thin !important;
}
#search-results:empty {
display: none;
opacity: 0;
}
#search-results li {
margin: 0;
width: 100%;
background-color: rgba(var(--page-color, '240,240,240'), var(--page-color-transparency, 0.89));
border-top: 0.5px dashed;
list-style: none;
}
#search-results li:first-child {
border: none;
}
#search-results a {
display: block;
padding: 0.3rem;
display: block;
text-decoration: none;
}
#search-results a:hover,
#search-results a:focus {
background: rgb(var(--text-color, '3,3,3'));
color: rgb(var(--page-color, '240,240,240'));
outline: 0;
}
#search-results a:active {
background: rgb(var(--accent-color, '0,0,255'));
color: rgb(var(--page-color, '240,240,240'));
}
#search-results li span:empty {
display: none;
}
#search-results li span:not(:last-child)::after {
content: ' ';
}
#search-results li .title {
display: block;
margin-bottom: calc(var(--line-height, 1.4em)/3);
}
#search-results li .title::after {
display: none;
}
</style>