510d7ca4ec
Primo passo della separazione sito / piattaforme decisa da Adriano il 03/09: due applicazioni autosufficienti, senza workspace di root, cosi' che ognuna resti un progetto Astro completo ed estraibile. Qui non cambia niente del codice: solo la radice. I pattern del .gitignore che avevano una barra erano ancorati alla radice e dopo lo spostamento non avrebbero piu' coperto niente (data/*.db*, uploads/*): resi validi a qualunque profondita'. Suite: 45 file, 347 test verdi prima e dopo lo spostamento. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EndnceRA5WnA6rvA5iV9WL
37 lines
1.5 KiB
Plaintext
37 lines
1.5 KiB
Plaintext
---
|
|
import Base from '../../layouts/Base.astro';
|
|
import Sidebar from '../../components/blog/Sidebar.astro';
|
|
import { getDb } from '../../lib/db';
|
|
import { getPublishedBySlug } from '../../lib/posts';
|
|
import { getUsernameById } from '../../lib/auth';
|
|
export const prerender = false;
|
|
|
|
const post = getPublishedBySlug(getDb(), Astro.params.slug!);
|
|
if (!post) return new Response(null, { status: 404 });
|
|
const fmt = new Intl.DateTimeFormat('it-IT', { dateStyle: 'long' });
|
|
const author = post.author_id ? getUsernameById(getDb(), post.author_id) : null;
|
|
const byline = author ?? 'Staff InsanityLab';
|
|
---
|
|
<Base title={post.title} description={post.excerpt}>
|
|
<section class="section">
|
|
<div class="container art">
|
|
<article>
|
|
{post.cover && <img class="art__cover" src={post.cover} alt="" />}
|
|
<p class="art__meta">{post.published_at && fmt.format(new Date(post.published_at))} · {post.category} · di {byline}</p>
|
|
<h1>{post.title}</h1>
|
|
<div class="art__body" set:html={post.body_html} />
|
|
</article>
|
|
<Sidebar />
|
|
</div>
|
|
</section>
|
|
</Base>
|
|
|
|
<style>
|
|
.art { display: grid; grid-template-columns: 2.4fr 1fr; gap: 60px; }
|
|
.art__cover { width: 100%; margin-bottom: 24px; }
|
|
.art__meta { font-size: .8rem; color: var(--c-text-light); }
|
|
.art__body :global(img) { margin-block: 20px; }
|
|
.art__body :global(blockquote) { border-left: 3px solid var(--c-accent); margin: 24px 0; padding: 6px 0 6px 20px; font-style: italic; color: var(--c-heading); }
|
|
@media (max-width: 991px) { .art { grid-template-columns: 1fr; } }
|
|
</style>
|