The layout was capped at 1200px and listed links in a single column. Drop the cap and lay the cards out in a grid: three per row on wide screens, two from 1000px, one below that. To make the narrower cards work, shorten the edit action to an icon button so the title and URL keep their room, and let the edit form's field and button rows wrap. Also fixes pre-existing horizontal overflow on phone widths by stacking the sidebar above the content and letting the add-link form wrap. Grid tracks use minmax(0, 1fr) so cards can shrink below their content's intrinsic width instead of pushing the page wider. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
58 lines
2.3 KiB
HTML
58 lines
2.3 KiB
HTML
<div class="panel link-card" id="link-{{ link.id }}">
|
|
<form hx-put="/links/{{ link.id }}" hx-target="#link-{{ link.id }}" hx-swap="outerHTML"
|
|
hx-disabled-elt="button">
|
|
<div class="muted" style="font-size:.8rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;">
|
|
{{ link.url }}
|
|
</div>
|
|
<div class="muted" style="font-size:.75rem; margin:3px 0 10px;">
|
|
🕓 hinzugefügt am {{ link.created_at | datum }}
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label>Titel</label>
|
|
<input type="text" name="title" value="{{ link.title }}">
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label>Zusammenfassung</label>
|
|
<textarea name="summary" rows="3" style="width:100%; background:var(--panel2); border:1px solid var(--border); color:var(--text); border-radius:8px; padding:10px 12px; font-size:.95rem; font-family:inherit;">{{ link.summary }}</textarea>
|
|
</div>
|
|
|
|
<div style="display:flex; gap:12px; flex-wrap:wrap;">
|
|
<div class="field" style="flex:1 1 160px;">
|
|
<label>Kategorie</label>
|
|
<input type="text" name="category" value="{{ link.category }}">
|
|
</div>
|
|
<div class="field" style="flex:1 1 160px;">
|
|
<label>Hersteller / Quelle</label>
|
|
<input type="text" name="manufacturer" value="{{ link.manufacturer }}">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label>Tags (mit Komma getrennt)</label>
|
|
<input type="text" name="tags" value="{{ link.tag_list | join(', ') }}">
|
|
</div>
|
|
|
|
<div style="display:flex; justify-content:space-between; gap:8px; margin-top:4px; flex-wrap:wrap;">
|
|
<div style="display:flex; gap:8px;">
|
|
<button type="submit">Speichern</button>
|
|
<button type="button" class="ghost"
|
|
hx-get="/links/{{ link.id }}/view"
|
|
hx-target="#link-{{ link.id }}"
|
|
hx-swap="outerHTML">Abbrechen</button>
|
|
</div>
|
|
{% if ai_enabled %}
|
|
<button type="button" class="ghost"
|
|
hx-post="/links/{{ link.id }}/reanalyze"
|
|
hx-target="#link-{{ link.id }}"
|
|
hx-swap="outerHTML"
|
|
hx-disabled-elt="this"
|
|
hx-confirm="Link erneut laden und von der KI neu beschreiben lassen? Bestehende Angaben werden dabei ersetzt.">
|
|
<span class="htmx-indicator">⏳</span> 🤖 KI neu beschreiben lassen
|
|
</button>
|
|
{% endif %}
|
|
</div>
|
|
</form>
|
|
</div>
|