add answer container

This commit is contained in:
Gnkalk 2025-01-07 02:47:51 +03:30
parent 9f18d4a2a1
commit 00e2faacb3
7 changed files with 260 additions and 0 deletions

View file

@ -359,6 +359,7 @@ main:has(.not-found) .button {
margin: 0 auto;
padding: 0 1rem;
display: grid;
overflow: auto;
}
@media (width >= 992px) {
@ -384,6 +385,64 @@ main:has(.not-found) .button {
grid-area: footer;
}
#results:has(#filter:checked) .results-container {
margin-top: 2rem;
}
#results .results-container {
grid-area: results;
}
#results .results-container .answer-container {
background-color: var(--background-color);
border-radius: 2rem;
padding: 1.5rem;
}
#results .results-container .answer-container .title {
align-items: center;
gap: .5rem;
font-size: 1.5rem;
font-weight: 700;
display: flex;
}
#results .results-container .answer-container .title svg {
fill: var(--primary-color);
}
#results .results-container .answer-container .message-box {
border-radius: 1rem;
margin-top: 1rem;
}
#results .results-container .answer-container .message-box .message {
background-color: var(--secondary-background-color);
border-radius: 1.5rem 1.5rem 1.5rem .5rem;
width: 80%;
max-width: 800px;
margin-bottom: 1rem;
padding: 1rem;
}
#results .results-container .answer-container .message-box .reference {
color: var(--text-color);
font-size: .8rem;
}
#results .results-container .answer-container .message-box .reference a {
background-color: var(--secondary-background-color);
padding: 0 .5rem;
display: inline-block;
}
#results .results-container .result-group {
background-color: var(--background-color);
border-radius: 2rem;
margin-top: 1rem;
padding: 1rem;
}
body:has(.sidebar_btn[open]) {
background-color: var(--background-color);
gap: .5rem;

View file

@ -359,6 +359,7 @@ main:has(.not-found) .button {
margin: 0 auto;
padding: 0 1rem;
display: grid;
overflow: auto;
}
@media (width >= 992px) {
@ -384,6 +385,64 @@ main:has(.not-found) .button {
grid-area: footer;
}
#results:has(#filter:checked) .results-container {
margin-top: 2rem;
}
#results .results-container {
grid-area: results;
}
#results .results-container .answer-container {
background-color: var(--background-color);
border-radius: 2rem;
padding: 1.5rem;
}
#results .results-container .answer-container .title {
align-items: center;
gap: .5rem;
font-size: 1.5rem;
font-weight: 700;
display: flex;
}
#results .results-container .answer-container .title svg {
fill: var(--primary-color);
}
#results .results-container .answer-container .message-box {
border-radius: 1rem;
margin-top: 1rem;
}
#results .results-container .answer-container .message-box .message {
background-color: var(--secondary-background-color);
border-radius: 1.5rem 1.5rem 1.5rem .5rem;
width: 80%;
max-width: 800px;
margin-bottom: 1rem;
padding: 1rem;
}
#results .results-container .answer-container .message-box .reference {
color: var(--text-color);
font-size: .8rem;
}
#results .results-container .answer-container .message-box .reference a {
background-color: var(--secondary-background-color);
padding: 0 .5rem;
display: inline-block;
}
#results .results-container .result-group {
background-color: var(--background-color);
border-radius: 2rem;
margin-top: 1rem;
padding: 1rem;
}
body:has(.sidebar_btn[open]) {
background-color: var(--background-color);
gap: .5rem;

View file

@ -8,6 +8,7 @@ const svgList = {
music: "node_modules/remixicon/icons/Media/music-2-fill.svg",
search: "node_modules/remixicon/icons/System/search-line.svg",
close: "node_modules/remixicon/icons/System/close-line.svg",
plugin: "node_modules/remixicon/icons/Development/puzzle-2-fill.svg",
};
const ejs = require("ejs"),

View file

@ -184,6 +184,7 @@ main:has(.not-found) {
margin: 0 auto;
padding: 0 1rem;
max-width: 1800px;
overflow: auto;
@include mixin.screens($screen-lg) {
padding: 0 4rem;
@ -206,6 +207,64 @@ main:has(.not-found) {
footer {
grid-area: footer;
}
&:has(#filter:checked) .results-container {
margin-top: 2rem;
}
.results-container {
grid-area: results;
.answer-container {
background-color: var(--background-color);
padding: 1.5rem;
@include mixin.rounded(lg);
.title {
display: flex;
align-items: center;
font-weight: 700;
gap: .5rem;
font-size: 1.5rem;
svg {
fill: var(--primary-color);
}
}
.message-box {
margin-top: 1rem;
@include mixin.rounded();
.message {
background-color: var(--secondary-background-color);
margin-bottom: 1rem;
padding: 1rem;
border-radius: 1.5rem 1.5rem 1.5rem .5rem;
width: 80%;
max-width: 800px;
}
.reference {
font-size: .8rem;
color: var(--text-color);
a {
display: inline-block;
background-color: var(--secondary-background-color);
padding: 0 .5rem;
}
}
}
}
.result-group {
margin-top: 1rem;
padding: 1rem;
@include mixin.rounded(lg);
background-color: var(--background-color);
}
}
}
body:has(.sidebar_btn[open]) {

View file

@ -9,6 +9,7 @@
'music':'<svg viewBox="0 0 24 24" fill="currentColor" class="icon" aria-hidden="true"><path d="M20 3V17C20 19.2091 18.2091 21 16 21C13.7909 21 12 19.2091 12 17C12 14.7909 13.7909 13 16 13C16.7286 13 17.4117 13.1948 18 13.5351V6H9V17C9 19.2091 7.20914 21 5 21C2.79086 21 1 19.2091 1 17C1 14.7909 2.79086 13 5 13C5.72857 13 6.41165 13.1948 7 13.5351V3H20Z"/></svg>',
'search':'<svg viewBox="0 0 24 24" fill="currentColor" class="icon" aria-hidden="true"><path d="M18.031 16.6168L22.3137 20.8995L20.8995 22.3137L16.6168 18.031C15.0769 19.263 13.124 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2C15.968 2 20 6.032 20 11C20 13.124 19.263 15.0769 18.031 16.6168ZM16.0247 15.8748C17.2475 14.6146 18 12.8956 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18C12.8956 18 14.6146 17.2475 15.8748 16.0247L16.0247 15.8748Z"/></svg>',
'close':'<svg viewBox="0 0 24 24" fill="currentColor" class="icon" aria-hidden="true"><path d="M11.9997 10.5865L16.9495 5.63672L18.3637 7.05093L13.4139 12.0007L18.3637 16.9504L16.9495 18.3646L11.9997 13.4149L7.04996 18.3646L5.63574 16.9504L10.5855 12.0007L5.63574 7.05093L7.04996 5.63672L11.9997 10.5865Z"/></svg>',
'plugin':'<svg viewBox="0 0 24 24" fill="currentColor" class="icon" aria-hidden="true"><path d="M8 4C8 2.34315 9.34315 1 11 1C12.6569 1 14 2.34315 14 4C14 4.35064 13.9398 4.68722 13.8293 5H20C20.5523 5 21 5.44772 21 6V9.12602C21 9.43517 20.857 9.72694 20.6127 9.91635C20.3683 10.1058 20.0501 10.1715 19.7507 10.0945C19.5119 10.033 19.2605 10 19 10C17.3431 10 16 11.3431 16 13C16 14.6569 17.3431 16 19 16C19.2605 16 19.5119 15.967 19.7507 15.9055C20.0501 15.8285 20.3683 15.8942 20.6127 16.0836C20.857 16.2731 21 16.5648 21 16.874V20C21 20.5523 20.5523 21 20 21H4C3.44772 21 3 20.5523 3 20V6C3 5.44772 3.44772 5 4 5H8.17071C8.06015 4.68722 8 4.35064 8 4Z"/></svg>',
}
-%}

View file

@ -0,0 +1,33 @@
{# just for testing purpose #} {% from 'simple/macros.html' import
result_header, result_sub_header, result_sub_footer, result_footer with context
%} {{ result_header(result, favicons, image_proxify) -}} {{-
result_sub_header(result) -}} {% if result.iframe_src -%}
<p class="altlink">
<a
class="btn-collapse collapsed media-loader disabled_if_nojs"
data-target="#result-media-{{ index }}"
data-btn-text-collapsed="{{ _('show media') }}"
data-btn-text-not-collapsed="{{ _('hide media') }}"
>{{ icon('music-note') }} {{ _('show media') }}</a
>
</p>
{%- endif %} {%- if result.content %}
<p class="content">{{ result.content|safe }}</p>
{%- else %}
<p class="content empty_element">
{{ _('This site did not provide any description.')|safe }}
</p>
{% endif -%} {{- result_sub_footer(result, proxify) -}} {% if result.iframe_src
-%}
<div id="result-media-{{ index }}" class="embedded-content invisible">
<iframe
data-src="{{result.iframe_src}}"
frameborder="0"
allowfullscreen
></iframe>
</div>
{%- endif %} {% if result.audio_src -%}
<div id="result-media-{{ index }}" class="audio-control">
<audio controls><source src="{{result.audio_src}}" /></audio>
</div>
{%- endif %} {{- result_footer(result) }}

View file

@ -4,4 +4,52 @@
<a href="" class="link">{{icon_small('donate')}}</a>
{% include 'smart/madules/sidebar_btn.html' %}
</div>
{% if results and results|map(attribute='template')|unique|list|count and
'images' in results|map(attribute='template')|unique|list %} {% set
is_image_page = 'only_template_images' %} {% endif %}
<div class="results-container {{ 'image-page' if is_image_page else '' }}">
{% if answers %}
<div class="answer-container">
<div class="title">
{{ icon_small('plugin') }}
<h3>{{ _('Answers by Plugins and Engines') }}</h3>
</div>
{%- for answer in answers.values() -%}
<div class="message-box">
<p class="message">{{ answer.answer }}</p>
{%- if answer.url -%}
<div class="reference">
Based on
<a
href="{{ answer.url }}"
{%-
if
results_on_new_tab
%}target="_blank"
rel="noopener noreferrer"
{%-
else
-%}rel="noreferrer"
{%-
endif
-%}
>{{ urlparse(answer.url).hostname }}</a
>
</div>
{% endif %}
</div>
{%- endfor -%}
</div>
{% endif %} {% for result in results %} {% if result.open_group and not
is_image_page %}
<div
class="{{ result['template']|replace('.html', '') }}_group result-group"
>
{% endif %} {% set template = get_result_template('smart',
result['template']) if 'smart' in get_result_template('smart',
result['template']) else get_result_template('smart', 'default.html') %}
{% include template %} {% if result.close_group and not is_image_page %}
</div>
{% endif %} {% endfor %}
</div>
{% include 'smart/footer.html' %} {% endblock %}