Skip to content

Commit cc76854

Browse files
committed
Add screenshot carousel to GitHub Pages hero section
1 parent 8153c7c commit cc76854

2 files changed

Lines changed: 149 additions & 6 deletions

File tree

docs/index.html

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,25 @@ <h1>Practice radiology reporting with your own cases</h1>
4343
<a href="#how-it-works" class="btn btn-secondary">Learn More</a>
4444
</div>
4545
<div class="hero-image">
46-
<div class="screenshot-placeholder">
47-
<span>Screenshots coming soon</span>
46+
<div class="carousel" id="carousel">
47+
<div class="carousel-track">
48+
<div class="carousel-slide active"><img src="screenshots/1. muninn-admin-home.png" alt="Home"></div>
49+
<div class="carousel-slide"><img src="screenshots/2.1 muninn-admin-organizer.png" alt="DICOM Organizer"></div>
50+
<div class="carousel-slide"><img src="screenshots/2.2 muninn-admin-organizer-2.png" alt="DICOM Organizer"></div>
51+
<div class="carousel-slide"><img src="screenshots/3. muninn-admin database.png" alt="Case Database"></div>
52+
<div class="carousel-slide"><img src="screenshots/3.1 muninn-admin database analytics.png" alt="Database Analytics"></div>
53+
<div class="carousel-slide"><img src="screenshots/4.0 muninn-admin playlist.png" alt="Playlist Builder"></div>
54+
<div class="carousel-slide"><img src="screenshots/5 muninn-admin exam-builder.png" alt="Exam Builder"></div>
55+
<div class="carousel-slide"><img src="screenshots/6.0 muninn-admin exam marker.png" alt="Exam Marker"></div>
56+
<div class="carousel-slide"><img src="screenshots/7.0 muninn-admin dashboard registry.png" alt="Trainee Registry"></div>
57+
<div class="carousel-slide"><img src="screenshots/7.1 muninn-admin dashboard overview.png" alt="Dashboard Overview"></div>
58+
<div class="carousel-slide"><img src="screenshots/7.2 muninn-admin trainee-analytics.png" alt="Trainee Analytics"></div>
59+
<div class="carousel-slide"><img src="screenshots/8.0 muninn-admin SQL database.png" alt="SQL Database"></div>
60+
</div>
61+
<button class="carousel-btn carousel-prev" aria-label="Previous">&#8592;</button>
62+
<button class="carousel-btn carousel-next" aria-label="Next">&#8594;</button>
63+
<div class="carousel-caption"></div>
64+
<div class="carousel-dots"></div>
4865
</div>
4966
</div>
5067
</div>
@@ -347,6 +364,48 @@ <h2>Licensing</h2>
347364
</div>
348365
</footer>
349366
<script>
367+
(function() {
368+
var carousel = document.getElementById('carousel');
369+
if (!carousel) return;
370+
var slides = carousel.querySelectorAll('.carousel-slide');
371+
var captionEl = carousel.querySelector('.carousel-caption');
372+
var dotsEl = carousel.querySelector('.carousel-dots');
373+
var current = 0;
374+
var timer;
375+
376+
// Build dots
377+
slides.forEach(function(slide, i) {
378+
var dot = document.createElement('button');
379+
dot.className = 'carousel-dot' + (i === 0 ? ' active' : '');
380+
dot.setAttribute('aria-label', 'Go to slide ' + (i + 1));
381+
dot.addEventListener('click', function() { goTo(i); resetTimer(); });
382+
dotsEl.appendChild(dot);
383+
});
384+
385+
function goTo(n) {
386+
slides[current].classList.remove('active');
387+
dotsEl.children[current].classList.remove('active');
388+
current = (n + slides.length) % slides.length;
389+
slides[current].classList.add('active');
390+
dotsEl.children[current].classList.add('active');
391+
captionEl.textContent = slides[current].querySelector('img').alt;
392+
}
393+
394+
function resetTimer() {
395+
clearInterval(timer);
396+
timer = setInterval(function() { goTo(current + 1); }, 4000);
397+
}
398+
399+
carousel.querySelector('.carousel-prev').addEventListener('click', function() { goTo(current - 1); resetTimer(); });
400+
carousel.querySelector('.carousel-next').addEventListener('click', function() { goTo(current + 1); resetTimer(); });
401+
carousel.addEventListener('mouseenter', function() { clearInterval(timer); });
402+
carousel.addEventListener('mouseleave', resetTimer);
403+
404+
goTo(0);
405+
resetTimer();
406+
})();
407+
</script>
408+
<script>
350409
(function() {
351410
var toggle = document.querySelector('.theme-toggle');
352411
if (!toggle) return;

docs/style.css

Lines changed: 88 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -269,13 +269,97 @@ body.theme-transition *::after {
269269
margin: 0 auto;
270270
}
271271

272-
.screenshot-placeholder {
272+
.carousel {
273+
position: relative;
274+
border-radius: var(--radius);
275+
overflow: hidden;
276+
box-shadow: var(--shadow-lg);
273277
background: var(--color-bg-alt);
274-
border: 2px dashed var(--color-border);
278+
user-select: none;
279+
}
280+
281+
.carousel-track {
282+
position: relative;
283+
}
284+
285+
.carousel-slide {
286+
display: none;
287+
}
288+
289+
.carousel-slide.active {
290+
display: block;
291+
}
292+
293+
.carousel-slide img {
294+
width: 100%;
295+
height: auto;
296+
display: block;
275297
border-radius: var(--radius);
276-
padding: var(--spacing-xl);
277-
color: var(--color-text-light);
298+
}
299+
300+
.carousel-btn {
301+
position: absolute;
302+
top: 50%;
303+
transform: translateY(-50%);
304+
background: rgba(0, 0, 0, 0.45);
305+
color: white;
306+
border: none;
307+
width: 40px;
308+
height: 40px;
309+
border-radius: 50%;
278310
font-size: 1.1rem;
311+
cursor: pointer;
312+
z-index: 10;
313+
transition: background 0.2s;
314+
display: flex;
315+
align-items: center;
316+
justify-content: center;
317+
}
318+
319+
.carousel-btn:hover {
320+
background: rgba(0, 0, 0, 0.7);
321+
}
322+
323+
.carousel-prev { left: 12px; }
324+
.carousel-next { right: 12px; }
325+
326+
.carousel-caption {
327+
position: absolute;
328+
bottom: 36px;
329+
left: 50%;
330+
transform: translateX(-50%);
331+
background: rgba(0, 0, 0, 0.5);
332+
color: white;
333+
padding: 0.2rem 0.75rem;
334+
border-radius: 20px;
335+
font-size: 0.8rem;
336+
white-space: nowrap;
337+
pointer-events: none;
338+
}
339+
340+
.carousel-dots {
341+
position: absolute;
342+
bottom: 10px;
343+
left: 50%;
344+
transform: translateX(-50%);
345+
display: flex;
346+
gap: 6px;
347+
}
348+
349+
.carousel-dot {
350+
width: 7px;
351+
height: 7px;
352+
border-radius: 50%;
353+
background: rgba(255, 255, 255, 0.45);
354+
cursor: pointer;
355+
border: none;
356+
padding: 0;
357+
transition: background 0.2s, transform 0.2s;
358+
}
359+
360+
.carousel-dot.active {
361+
background: white;
362+
transform: scale(1.3);
279363
}
280364

281365
/* Problem Section */

0 commit comments

Comments
 (0)