Overhaul the web UI with CSS custom property-based theming and dark mode support. Extract reusable template partials (location search, scan input) and web components (photo-capture, searchable-select). Add version and commit info to page footer. - Replace hardcoded amber palette with semantic theme tokens - Add dark mode with localStorage persistence and system preference detection - Extract <brew-photo-capture> and <searchable-select> web components - Extract location_search and scan_input Askama macros - Add sun/moon, timeline, database, map icons - Display version and git commit in footer - Improve timeline coordinate rounding and map link formatting - Add roast_name, roaster_name, remaining to BagOptionView
24 lines
1 KiB
HTML
24 lines
1 KiB
HTML
{% import "partials/icons.html" as icons %}
|
|
|
|
{% macro scan_input(form_id, image_input_id, extracting_signal, error_signal, placeholder, spinner_text) %}
|
|
<input type="hidden" name="image" id="{{ image_input_id }}" />
|
|
<div data-show="!{{ extracting_signal }}" class="flex items-center gap-2">
|
|
<brew-photo-capture target-input="{{ image_input_id }}" target-form="{{ form_id }}"
|
|
class="shrink-0 inline-flex items-center justify-center rounded-md border p-2.5 text-accent transition hover:bg-surface-alt cursor-pointer"
|
|
aria-label="Take Photo"
|
|
>
|
|
{% call icons::camera("h-5 w-5") %}
|
|
</brew-photo-capture>
|
|
<input
|
|
type="text"
|
|
name="prompt"
|
|
class="input-field w-full text-sm"
|
|
placeholder="{{ placeholder }}"
|
|
/>
|
|
</div>
|
|
<div data-show="{{ extracting_signal }}" style="display:none" class="flex items-center gap-3 text-sm text-accent">
|
|
{% call icons::spinner("h-5 w-5") %}
|
|
{{ spinner_text }}
|
|
</div>
|
|
<p data-show="{{ error_signal }}" data-text="{{ error_signal }}" style="display:none" class="mt-2 text-sm text-red-600"></p>
|
|
{% endmacro %}
|