feat: support faceted navigation of search results
1 file changed, 60 insertions(+), 2 deletions(-)
changed files
M frontend/static/style.css → frontend/static/style.css
@@ -62,6 +62,15 @@ } form { margin: 1.5rem 0; + display: grid; + align-items: start; + grid-template-columns: 16em 1fr; + column-gap: 1rem; + row-gap: 1rem; +} + +form > search { + grid-column: 1 / 3; } fieldset {@@ -70,6 +79,12 @@ column-gap: 1ex; border: none; padding: unset; margin: unset; +} + +.facet-queries { + display: flex; + flex-direction: column; + gap: 0.5rem; } legend {@@ -131,7 +146,9 @@ a[rel="next"] { margin-left: auto; } } -section > footer { + +#results footer { + grid-column: 1 / 3; text-align: center; }@@ -167,8 +184,49 @@ dialog > h2 { margin-top: 0.5rem; } +#results { + display: contents; +} + +#results .notice { + grid-column: 1 / 3; +} + +.facets { + background-color: var(--accent-bg); + border: 1px solid var(--border); + padding: 0.25rem 0.5rem; + box-sizing: border-box; +} + +.facets h3 { + margin-top: 0 !important; + font-size: 1rem; + padding: 0.25rem 0; +} + +.facets ul { + list-style: none; + padding: 0; + margin: 0; + margin-bottom: 1ex; +} + +.facet .term { + display: flex; + justify-content: space-between; + border-bottom: 1px solid transparent; + overflow-wrap: break-word; + padding: 0.25rem 0; + margin-right: 0; +} + +.term .count { + font-variant-numeric: tabular-nums; +} + table { - margin-top: 0; + margin: 0; width: 100%; table-layout: fixed; white-space: nowrap;