- Increase card padding and gaps for better visual hierarchy - Add hover lift effect to cards with smooth transitions - Improve typography with larger headings and better line-height - Darken meta text colors for better readability - Add checkbox styling with accent color - Make tags interactive with hover effects - Add mobile responsive styles for forms and footer - Replace Unicode arrows with SVG icons - Improve focus styles for accessibility - Increase badge padding and font-weight - Add subtle shadow to cards by default
62 lines
2.9 KiB
HTML
62 lines
2.9 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}{{ post.title }} - Blog{% endblock %}
|
|
{% block meta_description %}{{ post.content.value[:160] }}{% endblock %}
|
|
|
|
{% block content %}
|
|
<article class="post-detail" data-testid="post-detail">
|
|
<header class="post-detail-header" data-testid="post-detail-header">
|
|
<h1 class="post-detail-title" data-testid="post-detail-title">{{ post.title }}</h1>
|
|
|
|
<div class="post-detail-meta" data-testid="post-detail-meta">
|
|
<span class="post-card-meta-item" data-testid="post-detail-author">
|
|
<span class="avatar avatar-sm" data-testid="post-detail-author-avatar">{{ post.author_id[0]|upper }}</span>
|
|
<span data-testid="post-detail-author-name">{{ post.author_id }}</span>
|
|
</span>
|
|
<span class="post-card-meta-item" data-testid="post-detail-date">
|
|
{{ post.created_at.strftime('%B %d, %Y') }}
|
|
</span>
|
|
{% if post.published %}
|
|
<span class="badge badge-success" data-testid="post-detail-status">Published</span>
|
|
{% else %}
|
|
<span class="badge" data-testid="post-detail-status">Draft</span>
|
|
{% endif %}
|
|
</div>
|
|
</header>
|
|
|
|
<div class="post-detail-content" data-testid="post-detail-content">
|
|
{{ post.content.value|nl2br }}
|
|
</div>
|
|
|
|
<footer class="post-detail-footer" data-testid="post-detail-footer">
|
|
<div class="post-detail-tags" data-testid="post-detail-tags">
|
|
{% for tag in post.tags %}
|
|
<span class="tag" data-testid="post-detail-tag-{{ loop.index }}">{{ tag }}</span>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<div class="divider" data-testid="post-detail-divider"></div>
|
|
|
|
<div class="flex justify-between items-center" data-testid="post-detail-actions">
|
|
<a href="/" class="btn" data-testid="btn-back-to-posts">
|
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin-right: 0.5rem;">
|
|
<path d="M10 12L6 8L10 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
</svg>
|
|
Back to posts
|
|
</a>
|
|
|
|
<div class="flex gap-2" data-testid="post-detail-edit-actions">
|
|
<a href="/posts/{{ post.id }}/edit" class="btn" data-testid="btn-edit-post">
|
|
Edit
|
|
</a>
|
|
<form action="/posts/{{ post.id }}/delete" method="POST" style="display: inline;" data-testid="form-delete-post">
|
|
<button type="submit" class="btn btn-danger" data-testid="btn-delete-post" onclick="return confirm('Are you sure you want to delete this post?');">
|
|
Delete
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
</article>
|
|
{% endblock %}
|