No content blocks assigned to this page.
diff --git a/plugin.mod b/plugin.mod index 6e31ae4..e36fe8c 100644 --- a/plugin.mod +++ b/plugin.mod @@ -7,3 +7,4 @@ description = "Detective and true-crime dossier theme: case-file cards, typewrit kind = "theme" categories = ["templates"] tags = ["noir", "detective", "true-crime", "dossier", "typewriter", "monochrome", "editorial", "dark"] +required_icon_packs = ["lucide", "simple-icons"] diff --git a/presets.json b/presets.json index 0138cfd..d7290b4 100644 --- a/presets.json +++ b/presets.json @@ -17,7 +17,7 @@ "secondary": "40 8% 90%", "secondaryForeground": "24 12% 14%", "muted": "40 8% 91%", - "mutedForeground": "28 6% 38%", + "mutedForeground": "28 9% 30%", "accent": "0 60% 48%", "accentForeground": "40 20% 97%", "destructive": "0 74% 40%", @@ -67,7 +67,7 @@ "secondary": "20 8% 90%", "secondaryForeground": "0 8% 12%", "muted": "20 8% 92%", - "mutedForeground": "12 6% 36%", + "mutedForeground": "12 9% 29%", "accent": "8 68% 50%", "accentForeground": "20 12% 98%", "destructive": "358 78% 42%", @@ -117,7 +117,7 @@ "secondary": "38 16% 88%", "secondaryForeground": "30 18% 14%", "muted": "38 14% 90%", - "mutedForeground": "32 12% 38%", + "mutedForeground": "32 14% 30%", "accent": "26 70% 48%", "accentForeground": "38 30% 97%", "destructive": "0 70% 44%", @@ -167,7 +167,7 @@ "secondary": "210 14% 89%", "secondaryForeground": "215 22% 14%", "muted": "210 12% 91%", - "mutedForeground": "214 10% 38%", + "mutedForeground": "214 13% 30%", "accent": "8 62% 48%", "accentForeground": "210 20% 97%", "destructive": "0 72% 44%", @@ -217,7 +217,7 @@ "secondary": "0 0% 92%", "secondaryForeground": "0 0% 12%", "muted": "0 0% 93%", - "mutedForeground": "0 0% 36%", + "mutedForeground": "0 0% 28%", "accent": "0 0% 12%", "accentForeground": "0 0% 98%", "destructive": "0 70% 42%", diff --git a/seed/media/foggy-night.jpg b/seed/media/foggy-night.jpg new file mode 100644 index 0000000..4be189e Binary files /dev/null and b/seed/media/foggy-night.jpg differ diff --git a/seed/media/foggy-street.jpg b/seed/media/foggy-street.jpg new file mode 100644 index 0000000..821da23 Binary files /dev/null and b/seed/media/foggy-street.jpg differ diff --git a/seed/media/harbour-night.jpg b/seed/media/harbour-night.jpg new file mode 100644 index 0000000..542bbd9 Binary files /dev/null and b/seed/media/harbour-night.jpg differ diff --git a/seed/media/streetlamp.jpg b/seed/media/streetlamp.jpg new file mode 100644 index 0000000..8715971 Binary files /dev/null and b/seed/media/streetlamp.jpg differ diff --git a/seed/media/typewriter-keys.jpg b/seed/media/typewriter-keys.jpg new file mode 100644 index 0000000..c485566 Binary files /dev/null and b/seed/media/typewriter-keys.jpg differ diff --git a/seed/media/typewriter.jpg b/seed/media/typewriter.jpg new file mode 100644 index 0000000..2178f26 Binary files /dev/null and b/seed/media/typewriter.jpg differ diff --git a/seed/seed.json b/seed/seed.json index 53941f0..c5eb7d3 100644 --- a/seed/seed.json +++ b/seed/seed.json @@ -6,6 +6,14 @@ "tagline": "Cases that were never closed." } }, + "media": [ + { "id": "7a1c0001-0000-4000-8000-000000000001", "file": "media/harbour-night.jpg", "alt": "A working harbour at night under sodium light", "folder": "noir" }, + { "id": "7a1c0001-0000-4000-8000-000000000002", "file": "media/foggy-night.jpg", "alt": "A deserted street lost in night fog", "folder": "noir" }, + { "id": "7a1c0001-0000-4000-8000-000000000003", "file": "media/typewriter.jpg", "alt": "An old typewriter on a desk", "folder": "noir" }, + { "id": "7a1c0001-0000-4000-8000-000000000004", "file": "media/streetlamp.jpg", "alt": "A single streetlamp in the dark", "folder": "noir" }, + { "id": "7a1c0001-0000-4000-8000-000000000005", "file": "media/foggy-street.jpg", "alt": "A wet street under fog and lamplight", "folder": "noir" }, + { "id": "7a1c0001-0000-4000-8000-000000000006", "file": "media/typewriter-keys.jpg", "alt": "Close detail of typewriter keys", "folder": "noir" } + ], "data_tables": [ { "key": "case_tips", @@ -32,6 +40,9 @@ "sort_order": 1, "content": { "template": "centered", + "backgroundImage": "7a1c0001-0000-4000-8000-000000000001", + "overlayColor": "dark", + "overlayOpacity": 55, "eyebrow": "A true-crime file", "headline": "The Cold File", "subheadline": "Cases that were never closed.", @@ -113,8 +124,9 @@ "blocks": [ { "block_key": "heading", "title": "Heading", "slot": "main", "sort_order": 1, "content": { "text": "About the File", "level": 1 } }, { "block_key": "rich-text", "title": "Story", "slot": "main", "sort_order": 2, "content": { "html": "
The Cold File is a true-crime publication. We take one unsolved case at a time and set it out plainly, from the record up.
We do not name the guilty. We do not sell a theory. We show what is known, mark what is not, and leave the reader to weigh it. When new facts arrive, the file is updated in the open.
" } }, - { "block_key": "divider", "title": "Divider", "slot": "main", "sort_order": 3, "content": { "variant": "line", "weight": "thick", "width": "narrow" } }, - { "block_key": "quote", "title": "Quote", "slot": "main", "sort_order": 4, "content": { "style": "pull", "align": "center", "quote": "A cold case is not a closed one. It is a file waiting for one more fact.", "attribution": "The Cold File" } } + { "block_key": "image", "title": "The desk", "slot": "main", "sort_order": 3, "content": { "src": "7a1c0001-0000-4000-8000-000000000003", "alt": "The desk where the files are read", "caption": "The desk. Every file starts here.", "aspectRatio": "video", "size": "full", "objectFit": "cover" } }, + { "block_key": "divider", "title": "Divider", "slot": "main", "sort_order": 4, "content": { "variant": "line", "weight": "thick", "width": "narrow" } }, + { "block_key": "quote", "title": "Quote", "slot": "main", "sort_order": 5, "content": { "style": "pull", "align": "center", "quote": "A cold case is not a closed one. It is a file waiting for one more fact.", "attribution": "The Cold File" } } ] }, { @@ -134,7 +146,10 @@ "parent_slug": "/blog", "blocks": [ { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 1, "content": { "text": "The Harbour Light", "level": 1 } }, - { "block_key": "rich-text", "title": "Body", "slot": "main", "sort_order": 2, "content": { "html": "The watchman made his last radio check at four minutes past two. He was due at the gate by half past. He never signed out.
The lamp on Pier 9 was still lit at dawn. The tide had turned twice. No boat was reported missing. No body was found. The file was opened, worked for a season, and set aside.
We walked the pier at the same hour. The record and the place do not agree on one point. We are still checking which one is wrong.
" } } + { "block_key": "image", "title": "The pier", "slot": "main", "sort_order": 2, "content": { "src": "7a1c0001-0000-4000-8000-000000000002", "alt": "The East Dock lost in night fog", "caption": "Pier 9, East Dock — the same hour we walked it.", "aspectRatio": "video", "size": "full", "objectFit": "cover" } }, + { "block_key": "rich-text", "title": "Body", "slot": "main", "sort_order": 3, "content": { "html": "The watchman made his last radio check at four minutes past two. He was due at the gate by half past. He never signed out.
The lamp on Pier 9 was still lit at dawn. The tide had turned twice. No boat was reported missing. No body was found. The file was opened, worked for a season, and set aside.
We pulled the harbour master's log and the tide tables for that week. The two do not agree on when the water turned. One of them was written up after the fact, and we think we know which.
We walked the pier at the same hour. The lamp throws light about forty feet. The gate is ninety. For six of those steps a man is in the dark. We are still checking what stands in them.
" } }, + { "block_key": "heading", "title": "Rail heading", "slot": "aside", "sort_order": 1, "content": { "text": "Case File", "level": 3 } }, + { "block_key": "text", "title": "Case metadata", "slot": "aside", "sort_order": 2, "content": { "text": "The guest signed the register in a hand that did not match the name. He paid a week in advance and asked for the quiet end of the hall.
On the fourth night the room went dark and stayed that way. The suitcase was still there. The bed was made. The window was latched from the inside.
The file lists three people who saw him arrive and none who saw him leave. We are trying to reconcile that.
" } } + { "block_key": "image", "title": "The hall", "slot": "main", "sort_order": 2, "content": { "src": "7a1c0001-0000-4000-8000-000000000004", "alt": "A single lamp at the quiet end of the hall", "caption": "The quiet end of the hall. One lamp, kept lit.", "aspectRatio": "video", "size": "full", "objectFit": "cover" } }, + { "block_key": "rich-text", "title": "Body", "slot": "main", "sort_order": 3, "content": { "html": "The guest signed the register in a hand that did not match the name. He paid a week in advance and asked for the quiet end of the hall.
On the fourth night the room went dark and stayed that way. The suitcase was still there. The bed was made. The window was latched from the inside.
The file lists three people who saw him arrive and none who saw him leave. The night porter swears the corridor was watched the whole shift. The register says otherwise, in the same hand that signed the wrong name.
We are trying to reconcile that. So far the only thing everyone agrees on is the smell of a struck match, and no one who admits to lighting one.
" } }, + { "block_key": "heading", "title": "Rail heading", "slot": "aside", "sort_order": 1, "content": { "text": "Case File", "level": 3 } }, + { "block_key": "text", "title": "Case metadata", "slot": "aside", "sort_order": 2, "content": { "text": "The driver logged the final stop on schedule. Twelve minutes later the bus rolled into the depot. It was empty and the doors were locked from inside.
The fare box held the right count for a full run. The seats were cold. The last passenger on the ticket record never reached home.
We have the route, the timing, and the log. What we do not have is the twelve minutes.
" } } + { "block_key": "image", "title": "The route", "slot": "main", "sort_order": 2, "content": { "src": "7a1c0001-0000-4000-8000-000000000005", "alt": "A wet street under lamplight on the last route", "caption": "The last route, run again at the same hour.", "aspectRatio": "video", "size": "full", "objectFit": "cover" } }, + { "block_key": "rich-text", "title": "Body", "slot": "main", "sort_order": 3, "content": { "html": "The driver logged the final stop on schedule. Twelve minutes later the bus rolled into the depot. It was empty and the doors were locked from inside.
The fare box held the right count for a full run. The seats were cold. The last passenger on the ticket record never reached home.
We drove the route ourselves at the same hour and clocked every stop. Between the second-last and the depot there is a stretch with no lights and no camera. It takes about twelve minutes.
We have the route, the timing, and the log. What we do not have is what happened in those twelve minutes, or why the doors were locked from the inside.
" } }, + { "block_key": "heading", "title": "Rail heading", "slot": "aside", "sort_order": 1, "content": { "text": "Case File", "level": 3 } }, + { "block_key": "text", "title": "Case metadata", "slot": "aside", "sort_order": 2, "content": { "text": "No content blocks assigned to this page.