the lead photograph, and names for the subject blocks

`collection-cover` draws the FIRST photograph in the gallery, large, beside the words — the shape the
client's sitemap draws. Not a second way to choose one: a gallery is ordered and reordering it is how
the lead changes, which is the rule everywhere else here.

The five subject blocks are places-only, like the contact form and the partner row. They hold nothing
at all — what they draw is the collection the URL names.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-04 14:58:54 +01:00
co-authored by Claude Opus 5
parent 331e615c7c
commit 671f049fb3
2 changed files with 19 additions and 1 deletions
+3
View File
@@ -30,6 +30,7 @@ export type ComponentKind =
| 'contact-form'
| 'partners'
| 'collections'
| 'collection-cover'
| 'collection-title'
| 'collection-description'
| 'collection-specs'
@@ -42,6 +43,7 @@ export type ComponentKind =
block: one that is available, adds cleanly, and silently does nothing.
*/
export const SUBJECT_KINDS: ComponentKind[] = [
'collection-cover',
'collection-title',
'collection-description',
'collection-specs',
@@ -96,6 +98,7 @@ export const CHOICES: Choice[] = [
They hold nothing — not even a reference. The subject is the URL, so one block draws a different
collection on every request, and that is what lets one arrangement serve all of them.
*/
{ kind: 'collection-cover', label: 'Its lead photograph', hint: 'The first in its gallery, large', Icon: Image },
{ kind: 'collection-title', label: 'Its name', hint: 'The collection this page is about', Icon: Heading },
{ kind: 'collection-description', label: 'Its description', hint: 'What was written about it', Icon: Type },
{ kind: 'collection-specs', label: 'Its specs', hint: 'Measurement, material, colours, delivery', Icon: Ruler },
+16 -1
View File
@@ -23,6 +23,11 @@ const LABELS: Record<string, string> = {
'contact-form': 'Contact form',
partners: 'Partners',
collections: 'Collections',
'collection-cover': 'Lead photograph',
'collection-title': 'Name',
'collection-description': 'Description',
'collection-specs': 'Specs',
'collection-gallery': 'Photographs',
};
/*
@@ -31,7 +36,17 @@ const LABELS: Record<string, string> = {
Both the picker and the canvas ask the same question — one to decide whether to open an editor, the
other whether to draw an Edit button — and two lists would drift into a button that opens nothing.
*/
const PLACES_ONLY: string[] = ['contact-form', 'partners', 'collections'];
const PLACES_ONLY: string[] = [
'contact-form',
'partners',
'collections',
// The subject blocks hold nothing either: what they draw is the collection the URL names.
'collection-cover',
'collection-title',
'collection-description',
'collection-specs',
'collection-gallery',
];
import { AddSectionDialog, type SectionLayout } from './AddSectionDialog';
import { FreeTextEditor } from './FreeTextEditor';
import { SpacingEditor, type Padding } from './SpacingEditor';