From 78aa49c0f3caf8e989c5c600c2c16b4209f50a66 Mon Sep 17 00:00:00 2001 From: Andrew Simonson Date: Sun, 23 Aug 2026 00:42:42 -0500 Subject: [PATCH] local review resolutions, no content change --- src/app.py | 2 -- src/static/css/App.css | 25 +++++++++++++ src/static/js/responsive.js | 8 +++++ src/static/json/pages.json | 18 ++++------ src/templates/about.html | 14 ++++---- src/templates/books.html | 18 +++++----- src/templates/header.html | 54 +++++++++++++++++++++-------- src/templates/partials/skills.html | 4 +-- src/templates/partials/socials.html | 16 ++++++--- src/templates/projects.html | 1 - src/templates/status.html | 32 ++++++++--------- 11 files changed, 125 insertions(+), 67 deletions(-) diff --git a/src/app.py b/src/app.py index 45928df..29b8e6d 100755 --- a/src/app.py +++ b/src/app.py @@ -62,7 +62,6 @@ def load_json(path): projects = load_json("./static/json/projects.json") books = load_json("./static/json/books.json") skills = load_json("./static/json/skills.json") -timeline = load_json("./static/json/timeline.json") pages = load_json("./static/json/pages.json") pages['projects']['skillList'] = skills @@ -70,7 +69,6 @@ pages['projects']['projects'] = projects pages['home']['books'] = books pages['books']['books'] = books pages['status']['services'] = SERVICES -pages['about']['timeline'] = timeline # ── Error rendering ────────────────────────────────────────────────── diff --git a/src/static/css/App.css b/src/static/css/App.css index cb34bc8..37cc795 100755 --- a/src/static/css/App.css +++ b/src/static/css/App.css @@ -2008,3 +2008,28 @@ tr { from { background-position: 200% 0; } to { background-position: -200% 0; } } + +/* Skip-to-content link (accessible navigation) */ +.skip-link { + position: fixed; + top: -100%; + left: 50%; + transform: translateX(-50%); + z-index: 10000; + background: #000; + color: #fff; + padding: 0.75rem 1.5rem; + font-size: 0.95rem; + font-weight: 600; + text-decoration: none; + border: 2px solid currentColor; + border-radius: 0 0 4px 4px; + white-space: nowrap; + transition: top 0.15s ease; +} + +.skip-link:focus { + top: 0; + outline: 2px solid #4E9A26; + outline-offset: 0; +} diff --git a/src/static/js/responsive.js b/src/static/js/responsive.js index a4d9b32..cdc5f4c 100755 --- a/src/static/js/responsive.js +++ b/src/static/js/responsive.js @@ -2,13 +2,17 @@ function toggleMenu(collapse) { if (window.innerWidth < 1400) { const menu = document.querySelector(".navControl"); const bar = document.querySelector(".header"); + const btn = document.getElementById("menu"); const isCollapsed = !menu.style.maxHeight || menu.style.maxHeight === "0px"; + if (isCollapsed && !collapse) { menu.style.maxHeight = `${menu.scrollHeight + 10}px`; bar.style.borderBottomWidth = "0px"; + if (btn) btn.setAttribute("aria-expanded", "true"); } else { menu.style.maxHeight = "0px"; bar.style.borderBottomWidth = "3px"; + if (btn) btn.setAttribute("aria-expanded", "false"); } } } @@ -98,10 +102,14 @@ function activeSkill(obj) { let skill = obj.closest(".skill"); if (skill.classList.contains("activeSkill")) { skill.classList.remove("activeSkill"); + const btn = obj.closest('.skillname') || obj.querySelector?.('.skillname') || obj; + if (btn && btn.setAttribute) btn.setAttribute("aria-expanded", "false"); return; } while (skill) { skill.classList.add("activeSkill"); + const nameEl = skill.querySelector?.(':scope > .skillname') || skill.querySelector('.skillname'); + if (nameEl) nameEl.setAttribute("aria-expanded", "true"); skill = skill.parentElement.closest(".skill"); } } diff --git a/src/static/json/pages.json b/src/static/json/pages.json index 3e42ce6..93d75a3 100755 --- a/src/static/json/pages.json +++ b/src/static/json/pages.json @@ -1,16 +1,10 @@ { "home": { "template": "home.html", - "title": "Andrew Simonson - Portfolio Home", - "description": "Andrew Simonson's Digital Portfolio home", + "title": "Andrew Simonson - Data Scientist & Researcher", + "description": "Andrew Simonson - Data Scientist at Ecolab, graduate student at RIT. Projects, research papers, and more.", "canonical": "/" }, - "about": { - "template": "about.html", - "title": "Andrew Simonson - About", - "description": "About Andrew Simonson — career and education timeline", - "canonical": "/about" - }, "status": { "template": "status.html", "title":"Andrew Simonson - Status Page", @@ -19,8 +13,8 @@ }, "projects": { "template": "projects.html", - "title": "Andrew Simonson - Projects", - "description": "Recent projects by Andrew Simonson on his lovely portfolio website :)", + "title": "Projects & Research - Andrew Simonson", + "description": "Data science projects, geospatial analysis, research papers, and software experiments by Andrew Simonson.", "canonical": "/projects" }, "books": { @@ -37,8 +31,8 @@ }, "certificates": { "template": "certs.html", - "title": "Certificates and Awards", - "description": "Certificates and Awards Listing", + "title": "Certifications & Awards - Andrew Simonson", + "description": "Data science, DevOps, and entrepreneurship certifications earned by Andrew Simonson.", "canonical": "/certs" } } diff --git a/src/templates/about.html b/src/templates/about.html index 28744ff..b2a0f2d 100644 --- a/src/templates/about.html +++ b/src/templates/about.html @@ -7,18 +7,17 @@

My story, in order

-

Career & Education Timeline

-
- - - - +
@@ -55,8 +54,9 @@ document.addEventListener('DOMContentLoaded', function() { buttons.forEach(function(btn) { btn.addEventListener('click', function() { var filter = this.getAttribute('data-filter'); - buttons.forEach(function(b) { b.classList.remove('active'); }); + buttons.forEach(function(b) { b.classList.remove('active'); b.setAttribute('aria-pressed', 'false'); }); this.classList.add('active'); + this.setAttribute('aria-pressed', 'true'); items.forEach(function(item) { var cats = item.getAttribute('data-categories') || ''; diff --git a/src/templates/books.html b/src/templates/books.html index 55edcc5..10cc9d4 100755 --- a/src/templates/books.html +++ b/src/templates/books.html @@ -3,14 +3,15 @@

"You can't judge a book by its cover but you can judge a person by their bookshelf" - Me, today.

My Favorites

-
+
{% for i in var.books.selection %} -
- + @@ -18,16 +19,17 @@

All Reviews

Hover to reveal review
Read to reveal KNOWLEDGE

-
+
{% for i in var.books.books %} -
+
{{i}} cover
@@ -36,7 +38,7 @@

{{ i }}

{{ var.books.books[i].review }}

-

Book Source

+ Book Source
diff --git a/src/templates/header.html b/src/templates/header.html index fedab4d..bbc5e63 100755 --- a/src/templates/header.html +++ b/src/templates/header.html @@ -14,7 +14,7 @@ - + + + +