feat: complete UI redesign with DaisyUI + Tailwind CSS v4
Design system overhaul using DaisyUI v5 on Tailwind CSS v4: - Custom 'ohmstream' dark theme with orange primary (#FF9F1C), magenta secondary, gold accent matching existing palette - Tailwind CSS-first config (input.css source, style.css built output) - DaisyUI components: navbar, drawer, cards, badges, alerts, tables, progress bars, tabs, toggles, stats, form controls, tooltips - Mobile-first responsive layout with drawer navigation - Eliminated ~500+ lines of embedded CSS across 15+ template files - Removed all inline style spam from admin_panel and settings_section - Preserved all HTMX triggers, Alpine.js state, and Jinja2 logic - Updated auth-ui.js for DaisyUI tab-active class compatibility Build: npm run build:css (minified) / npm run watch:css (dev)
This commit is contained in:
@@ -1,18 +1,26 @@
|
||||
{% macro anime_card(anime, in_watchlist=False, lang='vostfr') %}
|
||||
<div class="hc" id="anime-{{ anime.url | hash }}"
|
||||
<div class="card card-compact bg-base-200 shadow-lg hover:shadow-xl transition-all cursor-pointer w-40 shrink-0 group"
|
||||
id="anime-{{ anime.url | hash }}"
|
||||
@click="activeTab = 'anime'; window.dispatchEvent(new CustomEvent('set-tab', { detail: { tab: 'anime' } })); $nextTick(() => { const input = document.getElementById('animeSearchInput'); if (input) { input.value = '{{ anime.title | e }}'; htmx.trigger(input, 'keyup'); } });">
|
||||
<div class="hc-poster">
|
||||
<figure class="relative overflow-hidden rounded-t-lg aspect-[2/3]">
|
||||
{% set poster = anime.cover_image or (anime.metadata.poster_image if anime.metadata else None) or 'https://placehold.co/400x600/e6e8e6/f15025?text=No+Image' %}
|
||||
<img src="{{ poster }}" alt="{{ anime.title }}" loading="lazy" referrerpolicy="no-referrer"
|
||||
class="w-full h-full object-cover"
|
||||
onerror="this.src='https://placehold.co/400x600/e6e8e6/f15025?text=Error'; this.onerror=null;">
|
||||
{% if anime.metadata and anime.metadata.rating %}
|
||||
<span class="hc-rating"><i class="fas fa-star"></i> {{ anime.metadata.rating }}</span>
|
||||
<span class="badge badge-warning badge-sm absolute top-2 left-2 gap-1">
|
||||
<i class="fa-solid fa-star text-[10px]"></i> {{ anime.metadata.rating }}
|
||||
</span>
|
||||
{% endif %}
|
||||
<span class="hc-play"><i class="fas fa-search"></i></span>
|
||||
</div>
|
||||
<div class="hc-info">
|
||||
<span class="hc-src">{{ anime.provider_id or 'Anime' }}</span>
|
||||
<span class="hc-title">{{ anime.title }}</span>
|
||||
<div class="absolute inset-0 bg-primary/20 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center">
|
||||
<div class="btn btn-circle btn-sm bg-primary/80 border-primary text-primary-content">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
</div>
|
||||
</div>
|
||||
</figure>
|
||||
<div class="card-body p-3">
|
||||
<span class="badge badge-outline badge-xs">{{ anime.provider_id or 'Anime' }}</span>
|
||||
<p class="text-xs font-semibold truncate mt-1">{{ anime.title }}</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endmacro %}
|
||||
|
||||
Reference in New Issue
Block a user