commit df62f65cc6ab01499b7ec6826a02c972ec7ee67f
Author: root <root@hub.scroll.pub> Date: 2024-12-27 14:49:53 +0000 Subject: Initial commit diff --git a/body.html b/body.html new file mode 100644 index 0000000..7c35b9a --- /dev/null +++ b/body.html @@ -0,0 +1,66 @@ +<header> + <nav> + <div class="logo">Eye Progress</div> + <div class="nav-links"> + <a href="#dashboard">Dashboard</a> + <a href="#courses">Courses</a> + <a href="#stats">Statistics</a> + </div> + </nav> +</header> + +<main> + <section id="dashboard" class="hero"> + <h1>Eye Learning Progress Tracker</h1> + <p>Track your journey in ophthalmology at Lund University</p> + </section> + + <section id="progress-cards"> + <div class="card"> + <h2>Current Course</h2> + <div class="progress-circle" data-progress="75"> + <span class="progress-text">75%</span> + </div> + <p>Advanced Eye Anatomy</p> + </div> + + <div class="card"> + <h2>Total Progress</h2> + <div class="progress-bar"> + <div class="progress" style="width: 60%"></div> + </div> + <p>18/30 Credits Completed</p> + </div> + + <div class="card"> + <h2>Next Milestone</h2> + <div class="milestone"> + <span class="milestone-icon">🎯</span> + <p>Clinical Practice</p> + </div> + </div> + </section> + + <section id="courses"> + <h2>Course Timeline</h2> + <div class="timeline"> + <div class="timeline-item completed"> + <h3>Basic Ophthalmology</h3> + <p>Completed: September 2023</p> + </div> + <div class="timeline-item active"> + <h3>Advanced Eye Anatomy</h3> + <p>In Progress: Expected December 2023</p> + </div> + <div class="timeline-item"> + <h3>Clinical Practice</h3> + <p>Upcoming: January 2024</p> + </div> + </div> + </section> +</main> + +<footer> + <p>Lund University Eye Learning Progress Tracker</p> + <p>Built with passion in Sweden</p> +</footer> diff --git a/index.scroll b/index.scroll new file mode 100644 index 0000000..417d455 --- /dev/null +++ b/index.scroll @@ -0,0 +1,8 @@ +buildHtml +baseUrl https://eye-progress.scroll.pub +metaTags +editButton /edit.html +title Eye Learning Progress | Lund University +style.css +body.html +script.js diff --git a/readme.scroll b/readme.scroll new file mode 100644 index 0000000..335680b --- /dev/null +++ b/readme.scroll @@ -0,0 +1,2 @@ +# eye-progress.scroll.pub +Website generated by Claude from prompt: A website which tracks the progress of my eye learning in Lund university \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 0000000..780ed39 --- /dev/null +++ b/script.js @@ -0,0 +1,51 @@ +document.addEventListener('DOMContentLoaded', () => { + // Smooth scroll for navigation links + document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener('click', function (e) { + e.preventDefault(); + document.querySelector(this.getAttribute('href')).scrollIntoView({ + behavior: 'smooth' + }); + }); + }); + + // Animate progress circle on scroll + const progressCircles = document.querySelectorAll('.progress-circle'); + + const animateProgress = () => { + progressCircles.forEach(circle => { + const rect = circle.getBoundingClientRect(); + if (rect.top < window.innerHeight && rect.bottom > 0) { + const progress = circle.getAttribute('data-progress'); + circle.style.background = `conic-gradient(var(--secondary) ${progress}%, #ecf0f1 0)`; + } + }); + }; + + window.addEventListener('scroll', animateProgress); + animateProgress(); // Initial check + + // Add animation class to timeline items when they come into view + const timelineItems = document.querySelectorAll('.timeline-item'); + + const animateTimeline = () => { + timelineItems.forEach(item => { + const rect = item.getBoundingClientRect(); + if (rect.top < window.innerHeight * 0.8) { + item.style.opacity = '1'; + item.style.transform = 'translateY(0)'; + } + }); + }; + + window.addEventListener('scroll', animateTimeline); + + // Initialize timeline items with starting styles + timelineItems.forEach(item => { + item.style.opacity = '0'; + item.style.transform = 'translateY(20px)'; + item.style.transition = 'all 0.5s ease-out'; + }); + + animateTimeline(); // Initial check +}); diff --git a/style.css b/style.css new file mode 100644 index 0000000..12b52d6 --- /dev/null +++ b/style.css @@ -0,0 +1,196 @@ +:root { + --primary: #2c3e50; + --secondary: #3498db; + --accent: #e74c3c; + --background: #f5f6fa; + --text: #2c3e50; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Segoe UI', system-ui, sans-serif; + line-height: 1.6; + color: var(--text); + background: var(--background); +} + +header { + background: var(--primary); + padding: 1rem; + position: fixed; + width: 100%; + top: 0; + z-index: 100; +} + +nav { + display: flex; + justify-content: space-between; + align-items: center; + max-width: 1200px; + margin: 0 auto; +} + +.logo { + color: white; + font-size: 1.5rem; + font-weight: bold; +} + +.nav-links a { + color: white; + text-decoration: none; + margin-left: 2rem; + transition: color 0.3s; +} + +.nav-links a:hover { + color: var(--secondary); +} + +main { + margin-top: 4rem; + padding: 2rem; +} + +.hero { + text-align: center; + padding: 4rem 0; +} + +.hero h1 { + font-size: 2.5rem; + margin-bottom: 1rem; + color: var(--primary); +} + +#progress-cards { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; + margin: 2rem 0; +} + +.card { + background: white; + padding: 2rem; + border-radius: 10px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + transition: transform 0.3s; +} + +.card:hover { + transform: translateY(-5px); +} + +.progress-circle { + width: 150px; + height: 150px; + border-radius: 50%; + background: conic-gradient(var(--secondary) 75%, #ecf0f1 0); + margin: 2rem auto; + display: flex; + align-items: center; + justify-content: center; + position: relative; +} + +.progress-circle::before { + content: ''; + position: absolute; + width: 120px; + height: 120px; + background: white; + border-radius: 50%; +} + +.progress-text { + position: relative; + z-index: 1; + font-size: 1.5rem; + font-weight: bold; +} + +.progress-bar { + background: #ecf0f1; + height: 20px; + border-radius: 10px; + overflow: hidden; + margin: 2rem 0; +} + +.progress { + background: var(--secondary); + height: 100%; + transition: width 0.3s; +} + +.timeline { + margin: 4rem 0; + position: relative; +} + +.timeline::before { + content: ''; + position: absolute; + left: 50%; + transform: translateX(-50%); + width: 2px; + height: 100%; + background: var(--primary); +} + +.timeline-item { + margin: 2rem 0; + position: relative; + padding: 1rem; + background: white; + border-radius: 10px; + width: calc(50% - 30px); + margin-left: auto; +} + +.timeline-item:nth-child(odd) { + margin-right: auto; + margin-left: 0; +} + +.timeline-item.completed { + border-left: 4px solid var(--secondary); +} + +.timeline-item.active { + border-left: 4px solid var(--accent); +} + +footer { + background: var(--primary); + color: white; + text-align: center; + padding: 2rem; + margin-top: 4rem; +} + +@media (max-width: 768px) { + .nav-links { + display: none; + } + + .timeline::before { + left: 0; + } + + .timeline-item { + width: calc(100% - 30px); + margin-left: 30px; + } + + .timeline-item:nth-child(odd) { + margin-left: 30px; + } +}