Compare commits
1 Commits
39bbd9e925
..
ela
| Author | SHA1 | Date | |
|---|---|---|---|
| 0bd27dd7ef |
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
date: 2026-05-09
|
||||||
|
summary: A second placeholder — layout smoke test.
|
||||||
|
tags:
|
||||||
|
- intro
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
# Second placeholder
|
||||||
|
|
||||||
|
A second placeholder so the salon-hang layout has room to breathe with more than one plate. Remove or replace from `/admin`.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
> "The painter constructs, the photographer discloses." — Susan Sontag
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
date: 2026-05-09
|
||||||
|
summary: Opening note for the gallery — what's on the walls, why these pieces.
|
||||||
|
tags:
|
||||||
|
- intro
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
# Welcome to the gallery
|
||||||
|
|
||||||
|
This room collects work made on paper, canvas, and elsewhere — finished pieces alongside the studies that didn't make it.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Replace this entry with your first real work, or remove it from the catalogue via the admin dashboard.
|
||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
name: narlblog
|
name: elas-atelier
|
||||||
|
|
||||||
services:
|
services:
|
||||||
backend:
|
backend:
|
||||||
container_name: narlblog-backend
|
container_name: elas-atelier-backend
|
||||||
build:
|
build:
|
||||||
context: ./backend
|
context: ./backend
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
@@ -20,7 +20,7 @@ services:
|
|||||||
- RUST_LOG=${RUST_LOG:-info}
|
- RUST_LOG=${RUST_LOG:-info}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
- internal_net
|
- atelier_net
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "curl", "-fsS", "http://localhost:3000/healthz"]
|
test: ["CMD", "curl", "-fsS", "http://localhost:3000/healthz"]
|
||||||
interval: 15s
|
interval: 15s
|
||||||
@@ -34,12 +34,12 @@ services:
|
|||||||
max-file: "3"
|
max-file: "3"
|
||||||
|
|
||||||
frontend:
|
frontend:
|
||||||
container_name: narlblog-frontend
|
container_name: elas-atelier-frontend
|
||||||
build:
|
build:
|
||||||
context: ./frontend
|
context: ./frontend
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
ports:
|
ports:
|
||||||
- "4321"
|
- "4322:4321"
|
||||||
environment:
|
environment:
|
||||||
- PUBLIC_API_URL=${PUBLIC_API_URL:-}
|
- PUBLIC_API_URL=${PUBLIC_API_URL:-}
|
||||||
- SITE_MODE=${SITE_MODE:-atelier}
|
- SITE_MODE=${SITE_MODE:-atelier}
|
||||||
@@ -48,7 +48,7 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
- internal_net
|
- atelier_net
|
||||||
logging:
|
logging:
|
||||||
driver: json-file
|
driver: json-file
|
||||||
options:
|
options:
|
||||||
@@ -56,6 +56,6 @@ services:
|
|||||||
max-file: "3"
|
max-file: "3"
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
internal_net:
|
atelier_net:
|
||||||
name: narlblog-net
|
name: elas-atelier-net
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 655 B |
@@ -78,7 +78,7 @@ const displayTitle = post ? (post.title || formatSlug(post.slug)) : 'Work';
|
|||||||
image={post?.cover_image?.url}
|
image={post?.cover_image?.url}
|
||||||
type="article"
|
type="article"
|
||||||
>
|
>
|
||||||
{post?.cover_image?.url && (
|
{!isBlog && post?.cover_image?.url && (
|
||||||
<Fragment slot="head">
|
<Fragment slot="head">
|
||||||
<link rel="preload" as="image" href={post.cover_image.url} fetchpriority="high" />
|
<link rel="preload" as="image" href={post.cover_image.url} fetchpriority="high" />
|
||||||
</Fragment>
|
</Fragment>
|
||||||
@@ -113,20 +113,6 @@ const displayTitle = post ? (post.title || formatSlug(post.slug)) : 'Work';
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Blog mode: cover rides above the plaque as a lead image. In atelier
|
|
||||||
the cover is the index plate's job, not the post page's. */}
|
|
||||||
{isBlog && post.cover_image?.url && (
|
|
||||||
<div class="post-lead">
|
|
||||||
<img
|
|
||||||
src={post.cover_image.url}
|
|
||||||
alt={post.cover_image.alt || displayTitle}
|
|
||||||
width={post.cover_image.w}
|
|
||||||
height={post.cover_image.h}
|
|
||||||
fetchpriority="high"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{/* Plaque header */}
|
{/* Plaque header */}
|
||||||
<header class="max-w-3xl mx-auto text-center mb-12 md:mb-16">
|
<header class="max-w-3xl mx-auto text-center mb-12 md:mb-16">
|
||||||
<h1 class="font-display italic font-semibold text-[var(--text)] text-4xl md:text-6xl lg:text-7xl leading-[1.08] tracking-tight mb-6">
|
<h1 class="font-display italic font-semibold text-[var(--text)] text-4xl md:text-6xl lg:text-7xl leading-[1.08] tracking-tight mb-6">
|
||||||
@@ -174,7 +160,11 @@ const displayTitle = post ? (post.title || formatSlug(post.slug)) : 'Work';
|
|||||||
{/* Body — works on paper */}
|
{/* Body — works on paper */}
|
||||||
<div id="post-content" class="prose" set:html={html} />
|
<div id="post-content" class="prose" set:html={html} />
|
||||||
|
|
||||||
{(neighbors.prev || neighbors.next) && (
|
{isBlog ? (
|
||||||
|
<div class="max-w-3xl mx-auto mt-20 md:mt-28 text-center">
|
||||||
|
<a href="/" class="btn btn--ghost">← {c.backHome}</a>
|
||||||
|
</div>
|
||||||
|
) : (neighbors.prev || neighbors.next) && (
|
||||||
<nav class="post-nav max-w-3xl mx-auto mt-20 md:mt-28 grid grid-cols-1 md:grid-cols-2 gap-6" aria-label="Post navigation">
|
<nav class="post-nav max-w-3xl mx-auto mt-20 md:mt-28 grid grid-cols-1 md:grid-cols-2 gap-6" aria-label="Post navigation">
|
||||||
{neighbors.prev && (
|
{neighbors.prev && (
|
||||||
<a href={`/posts/${encodeURIComponent(neighbors.prev.slug)}`} class="group glass p-6 hover:border-[var(--mauve)] transition-colors text-left">
|
<a href={`/posts/${encodeURIComponent(neighbors.prev.slug)}`} class="group glass p-6 hover:border-[var(--mauve)] transition-colors text-left">
|
||||||
|
|||||||
@@ -174,35 +174,3 @@ html.mode-blog .post-row-draft {
|
|||||||
aspect-ratio: 16 / 9;
|
aspect-ratio: 16 / 9;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Post page (blog mode): cover as a lead image above the plaque ── */
|
|
||||||
html.mode-blog .post-lead {
|
|
||||||
position: relative;
|
|
||||||
max-width: 48rem;
|
|
||||||
margin: 0 auto 2.5rem;
|
|
||||||
overflow: hidden;
|
|
||||||
background: var(--mantle);
|
|
||||||
border: 1px solid var(--surface2);
|
|
||||||
border-radius: 2px;
|
|
||||||
box-shadow:
|
|
||||||
inset 0 0 0 1px color-mix(in srgb, var(--surface1) 50%, transparent),
|
|
||||||
0 26px 50px -30px rgba(20, 16, 12, 0.55);
|
|
||||||
}
|
|
||||||
html.salon-noir.mode-blog .post-lead,
|
|
||||||
html.gothic.mode-blog .post-lead {
|
|
||||||
box-shadow:
|
|
||||||
inset 0 0 0 1px color-mix(in srgb, var(--surface1) 50%, transparent),
|
|
||||||
0 26px 50px -30px rgba(0, 0, 0, 0.8);
|
|
||||||
}
|
|
||||||
html.breakcore.mode-blog .post-lead {
|
|
||||||
border-color: color-mix(in srgb, var(--mauve) 40%, var(--surface2));
|
|
||||||
box-shadow:
|
|
||||||
inset 0 0 0 1px color-mix(in srgb, var(--mauve) 28%, transparent),
|
|
||||||
0 0 34px -12px color-mix(in srgb, var(--mauve) 45%, transparent);
|
|
||||||
}
|
|
||||||
html.mode-blog .post-lead img {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
height: auto;
|
|
||||||
filter: saturate(0.95) contrast(1.02);
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user