- The public blog theme now has a post lightbox slideshow.

Changed:
[themes/neon/assets/app.js](/Users/tyemeclifford/Documents/GH/blog/themes/neon/assets/app.js)
Scans each single post’s .markdown content.
Collects images, native videos, shortcode/video iframes, and direct 
image/video links.
Opens media in a lightbox with Previous/Next, count, caption, Escape 
close, and arrow-key navigation.
Clicking a displayed image advances to the next item.

[themes/neon/assets/style.css](/Users/tyemeclifford/Documents/GH/blog/themes/neon/assets/style.css)
Added clickable media styling, embed “View” buttons, and responsive 
lightbox layout.
Works in dark and light modes.

[CHANGELOG.md](/Users/tyemeclifford/Documents/GH/blog/CHANGELOG.md)
Added the feature note.
This commit is contained in:
Ty Clifford
2026-07-05 18:43:51 -04:00
parent d0496c93f3
commit 3e7cea4491
3 changed files with 490 additions and 0 deletions
+198
View File
@@ -346,6 +346,23 @@ h2 {
border: 1px solid var(--line);
}
.markdown video {
max-width: 100%;
border-radius: var(--radius);
border: 1px solid var(--line);
background: #020403;
}
.tcms-lightboxable {
cursor: zoom-in;
}
.tcms-lightboxable:focus-visible,
.tcms-lightbox-trigger:focus-visible {
outline: 3px solid color-mix(in srgb, var(--accent) 70%, white);
outline-offset: 4px;
}
.markdown pre {
overflow: auto;
padding: 1rem;
@@ -499,6 +516,151 @@ h2 {
border: 0;
}
.tcms-lightbox-host {
position: relative;
}
.tcms-lightbox-trigger {
min-height: 0;
margin: 0.45rem 0 1rem;
padding: 0.42rem 0.7rem;
border-color: color-mix(in srgb, var(--accent) 45%, var(--line));
color: var(--text);
background: color-mix(in srgb, var(--bg) 84%, transparent);
box-shadow: 0 10px 28px rgba(0, 0, 0, 0.24);
backdrop-filter: blur(10px);
}
.tcms-lightbox-host .tcms-lightbox-trigger {
position: absolute;
top: 0.7rem;
right: 0.7rem;
z-index: 2;
margin: 0;
}
body.tcms-lightbox-open {
overflow: hidden;
}
.tcms-lightbox[hidden] {
display: none;
}
.tcms-lightbox {
position: fixed;
inset: 0;
z-index: 1000;
display: grid;
place-items: center;
padding: clamp(0.75rem, 3vw, 2rem);
}
.tcms-lightbox__backdrop {
position: absolute;
inset: 0;
width: 100%;
min-height: 0;
padding: 0;
border: 0;
border-radius: 0;
background: rgba(0, 0, 0, 0.82);
cursor: zoom-out;
}
.tcms-lightbox__dialog {
position: relative;
z-index: 1;
display: grid;
grid-template-rows: auto minmax(0, 1fr) auto;
gap: 0.75rem;
width: min(1120px, 100%);
max-height: min(860px, 96vh);
border: 1px solid color-mix(in srgb, var(--accent) 36%, var(--line));
border-radius: var(--radius);
padding: 0.8rem;
background: color-mix(in srgb, var(--bg) 94%, black);
box-shadow: 0 28px 90px rgba(0, 0, 0, 0.56);
}
:root[data-mode="light"] .tcms-lightbox__dialog {
background: color-mix(in srgb, var(--surface) 96%, white);
}
.tcms-lightbox__bar {
display: grid;
grid-template-columns: minmax(0, 1fr) auto auto;
gap: 0.7rem;
align-items: center;
color: var(--muted);
}
.tcms-lightbox__title {
overflow: hidden;
color: var(--text);
text-overflow: ellipsis;
white-space: nowrap;
}
.tcms-lightbox__count {
white-space: nowrap;
}
.tcms-lightbox__close,
.tcms-lightbox__nav {
min-height: 38px;
padding: 0.48rem 0.72rem;
}
.tcms-lightbox__stage {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
gap: 0.75rem;
align-items: center;
min-height: 0;
}
.tcms-lightbox__media {
display: grid;
place-items: center;
min-width: 0;
min-height: min(62vh, 620px);
overflow: hidden;
border: 1px solid var(--line);
border-radius: var(--radius);
background: #020403;
}
.tcms-lightbox__media img,
.tcms-lightbox__media video {
display: block;
max-width: 100%;
max-height: min(72vh, 680px);
width: auto;
height: auto;
}
.tcms-lightbox__media img {
cursor: pointer;
}
.tcms-lightbox__media video {
width: 100%;
}
.tcms-lightbox__media iframe {
display: block;
width: min(100%, 1040px);
height: min(68vh, 585px);
border: 0;
}
.tcms-lightbox__caption {
margin: 0;
color: var(--muted);
text-align: center;
}
.side-rail {
display: grid;
align-content: start;
@@ -596,4 +758,40 @@ h2 {
.article__header h1 {
font-size: 2.25rem;
}
.tcms-lightbox__dialog {
padding: 0.6rem;
}
.tcms-lightbox__bar {
grid-template-columns: 1fr auto;
}
.tcms-lightbox__count {
grid-column: 1 / -1;
order: 3;
}
.tcms-lightbox__stage {
grid-template-columns: 1fr 1fr;
}
.tcms-lightbox__media {
grid-column: 1 / -1;
grid-row: 1;
min-height: 50vh;
}
.tcms-lightbox__nav {
grid-row: 2;
width: 100%;
}
.tcms-lightbox__nav--previous {
grid-column: 1;
}
.tcms-lightbox__nav--next {
grid-column: 2;
}
}