WIP: feat: revamp navbar to add accessability, darkmode view-transition, popover api, and other features. #6
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
bug
documentation
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ironriders/4180-WebsiteV2!6
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "new-navbar"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Please summarize your changes here in the description.
Pull request overview
This PR revamps the site navigation to a component-based header/nav system using the Popover API, adds a skip link + motion/print styling, and reworks dark mode handling (including view transitions) while removing legacy dropdown/mobile-menu scripts/components.
Changes:
src/components/nav/*header/nav components driven byData.ts.init.js+ cookie utilities.Reviewed changes
Copilot reviewed 29 out of 29 changed files in this pull request and generated 13 comments.
Show a summary per file
print.css).<Header />and adds the new init script reference.aria-currentsupport.Data.ts.astro:assets.Data.ts.Comments suppressed due to low confidence (1)
src/layouts/Layout.astro:41
#main-content, and several styles targetmain#main-content, but this<main>element has noid. Addid="main-content"so the skip link works and print/header offsets apply correctly.💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
@ -0,0 +18,4 @@},{label: "Contact",href: "/contact"Several nav hrefs point to routes that don't exist in
src/pages(e.g.,/contactinmobileCTA). This will ship broken links in the global navigation unless the corresponding pages are added.@ -0,0 +71,4 @@{label: "Mentorship",href: "/join-mentor"},navigationDataincludes hrefs like/mentors,/chat,/github, and/join-mentor, but there are no matching pages/routes insrc/pages(existing routes include/discord,/digital-resources, etc.). Update these hrefs to valid internal routes or use external URLs where appropriate to avoid 404s from the main navbar.@ -0,0 +8,4 @@id="header-branding-link"><Imagesrc="data:image/webp;base64,UklGRloNAABXRUJQVlA4WAoAAAAQAAAAYwAAYwAAQUxQSK8EAAABoEVr2xnJekunVT22bdu2bdu2bdu2bXumx7bNtqo778WfrqSS/9xHxATA6MVP3P960wE5+5QbsaWAsJIkM0nqKck9wi6hjKR+kwz1A3BaaC6bZGN6CfdJsgmAAGGAXDItC2NsPgCHhe0AXguzAZRfuHBhUzl8IMk9AJYLQd7Ab2ELYHlI8pwczgix+YHRAuvBGiOcAyoyrpG9nSZrLnAP0E5lI5JR/OmLfXG1IH9PjW+SFAun+wJeP4XY/KikEr32pgoDZrriSP+PJFuZo853crMFmCtwP2qraH+Z0n6JYiZTNFdIsieQUxH4IFQnxnyh+AGAo56X0ZpSjCwOXFbx+EbAeZzPKhnMckngh6TYZIz5SBFAUpliLOR3Cfx0TjEGj76jOMM4DTekBbBYxeiRqQ3T2cXvZYGEP8ywHoBPSSP0UkhG9QCmmKEYUOO1MtXiubtUXVX5mRm259pBkpv+81jJUBWTD/QYakaZ70tyz6FlrNlcFeBRS/dmNgCDzDYGnu1FPmhgQUGTKUmAPIsb6VY0kiRv9nhgMh5qdkZheFG9llKqn1LolPGjVFhPJ2T/JpO50D3vL3lss+qHIiGyuOgFfWu1z2EFrshiG2DNWUFbahf579RuRRbK2pN/qeTXNJAy3qjpmpQiU2tZJiVXGS2Wtn/l87IEtKc9JRlllRN6ekfK5Q60J8nobylLuUblcDqdXm75/WFsiEsyqr/s7lSmtHO5M15eLdxZLa+p7iReECmpmyXcAdKtVeQTe6g8NF+Vz1Botz+Sz1SrhiRNV7ylhH9uap7IjTShlHaof1yFKfF0/wu54srkkljhuJCj+/rnElJe7J/S3OaGuEc+86HjOvmM0GRrdJHyDd9cyepW3XeU9NtC7hymtGu7s0xe6d0ZIq1AiztlY5Twz+GyefvmW/BBuJ0kvg1FJfPOCsDinpgwWi7XBe21nlGyNytqS3uM8lWO5tMyiVKOTqAhX6yUrkDrbik11ZTXxffb9kvDtfBMBPnBoQmZUwOWJ7JYC/hWn9UA+uYKlMWvYtC/8E9KM7iqbsUDKdHIZnotp1RjOumUKVAqXKwTminkqwlXzTa32VPhjq9eGL2jmhW1TfbLDnuXT/ydER61XTIZ5wDwHVgGnh1Jsytt4fm8UaZjeDHP1aWqYo5gFX5O6TFMIhnSMuFFM/Tx26vC9Z7DJL7IA4wygSsJrLMUkn8LGABF/AHnVxNwFoCu0QwpCaOOpxlDUwKo8qIyDPtb5d3OGGOETbwvcCEMPjqG5K1k2GqMDkj/Q4hIazBU/spjTmCPMZYAFaJJcqXRkKypA0CAyhdFr4gAlV8OoI8Q7TSa+g9hAWro9CWt9YnAOgDWkoGdYUpLCMkAL/grwt/he1SiatePEt4A7VR2APC+dDwdTFpkY+i/LIBXtDAYSVS+AueFcDsc74Sw+AAsMHG8xACsYSR/O+GlCK+BoQKTA70FdoAUr5EcD8AlPARyqRQBfL8L2+Vgy1qngzeAQOE6gLdCAwAjyW+TU8oh7q/CWQBLhD4A4m9s4QXJvhIOA6gpzIScHwg7AfiEkFwtqavCegDIUqJEicSS6vHwzZfAkYKhAQBWUDgghAgAAPAoAJ0BKmQAZAA+bS6TRyQiIaEr1VtYgA2JbAYoAQnlK/03spqE9O/Jf+h+75T/6d+KP6byzkzebZ4r+ef77+y9Q/zAP1L/W7rF/0P/D+oD9i/1i9nP9Y/cX+yPsAfzn+9f/X2WP8p7AH7Z+wB+uHqrf7X9nPgh/rf/F/cf4DP12/+/7v9oBwsH9V/DP9QPKn/H9HT5M9m+Va8v92sUbJH1D56H4jzM7jjiBqAHkt/4n7Jec36i9gf9c/S59fHos/t20qSLOkuJle5ZJjuoB5qV4hQWgnkzp8dHh/pHAOH27v+e1lur8b5IpO/wjXXteCly9zFSTjzdREY8JLqxS8mrOTgrrC3nHe/zUG6zknVM8pJ8W6RjRSuRIjbMDaiyKwlDQnvqeBUlynPOg7uHqQX/k7JZEZv57uHHGKhPOPut8i8pIoCF8NWHqESPF33mAAD+/gbwgjEAmZmX2UkjogFIxQqFOZ91M1Ti5qQw+f8/8djmDAwYvgxPcxMgNSvqzWdaU7RbOpc7+BAeRATT/hjG3Hd3LM0ti7+Bi6Xpb9mAg5QQupkLz7shKb721t95KOgrYgUKsepHckDWRBh4LlDKs9vEJ0A+UfftNzi14DQ7NjJ1DhnCyqmB4H/P366YRm7xh+7tjFQjpZniDDPYB7k0Opz3VUCPeWpUIF4YrAlTSb9RiKhnlraxLR8y6Vt8GQGVGUZ74Zel4c86eA/VZ4Kl7xCv5gdq/AVqAce71q6u3PWcxR4uCnLxqSiT9QZM4RkBcHOirn0bye/r+36z2Rf4xLf+Zl3IZ+lt3J/K6kilW8yA7/dpHFz3rgUfdD10o/W76ykUMUvXmcHybcwJ6vQnhoicJewsxkbMRZodF9n72u2b9h2FWSr4alchIwpeY/9eFgtIVrGdIG8L41IH0FTew+/ACj9lQOB7n5dQ6v1hkMzkXOOqLMSFUu72BRtZL8z5bgXYMYeXumyfI6k8AFIIgDHKfL4DfNTb/hGO/vSbLmsJzzFt4vs/Fq8UPURdk8yY0YFKV3qk7EhketVjLDJSndbPFuQNjDgZFPQv3hGk5UdkttxrZGlVIf1H+QCszrjz0cpoVepro9bdcWOeil1671zCatz5V6JyXGkoSxYeUGPE36Ca/gx6VKd4ppvfc69aRdkYaHQ3ns2xx5FLGJ/+4GDKyuM7K4lIZPJI3uv1otMNnvGbAFnB925PegJWj9u6DKlYHrfjD8w8PuSEQLbKqBMhY2bT5ESWy9Kz3LnJS0S2vO/JB/B8HEeBGKuutcuL4FfYJcTCOU/laF+4VSPlVasao2AQADNTOl0s3djUkiGYD4/1ERdD6ANiE3+dPqZMmgeFfMsiyjswTVdoxXdjrXMhrQqW7XsJCDU6M/qM4q+vMACqfrADkeqNGZJq/14fIf5fyymBlYovfnQgv0xHVptBtYBvjJih+357v3ZzYy7xDDCFcAk43nBJKUDnF6/YwDIzvH/fw7oT2J305ONmKqQdxPgFp70/5Vu9VKvfTvDGgubxClmTguuQVhNV5EuzzdHJ+z0ifDMS2REdB3d8VenLPmPKi9MLVFy8bqu9U0ckg6CWouZLHkXiBeFeQW3YOF8v94xRGQLBFA1dvnKMOm08OHW9mEO2RHSEWsjowCvGIxtlXIsewPdXJg91ZYgMfGwXwYM4KyQn/+RKU2FPuJuh6fKzpfjLV5o1vzbHyATAly/EjQVz9g+yYxw905cNYh5b/F8W289DZEp/FYZrap/BKQaz7S4AZHsTvkdOS/KyBHDCO+lY+q7w0yaPWAyj/Tp++Mj/jAzMtuW2NhfbAFSvadrHPCIKkmSr800Mn+ZuonZQYX6VoVknmUovMQ34oH0NOb93sWlwDpzj1O20phrH+tIJH2eipjavkk6kbR5eV+sCv0H0HHwDXFt3ZZyGLuPaiNpLJfkzXdMdDMEx6rj1xnqRY+g4jN4oW1Da753yfZYYJ9VGnDk8r9Lfwlsxb53P1p+UAWaZ5HWmBKKZqmuwKBKeuFmTEkOoDSPuF+oQu96d12NbrANGBayG4DZh3Oj44Ip1Ym/nFBh+9V/Imo5Rs/TMrj0CJtuvb5U/CtkkkBdU2HUo3aIRX12k+nvDaFr+ch3M542jZdthwKqT5FQN18tK+KtajKNe+o3GN/J9RoNouX2GjPGMtjRcqvYwknxTA3hE+9bBvi4wftzfoZrfL/HlPD4jk4sezO/mNr228xvaAlx4Dw++rq97OA4jSqGPtYZggcSGUZsju9dLhvgkQq2AfPn9XTS9jgh90ul8YCBnSvqw9JoZYk08MIbEliYAAZS2L8FhBkyGHv7dEdNMBUU21g4f5nqIhX+dyjdoU+wRomrzB1OCnqvn0pUfxzV3U+u6KvT2wN9LTJRPDO53/l4i+J1vcNilX47iydvRIzRK2qJWd/1sr4NQt0WXiAidzxOiE5YZ+6Znadnvf8xHtf9lqFF/8BXSMXJ/nmJkz86TgQz3v8ybaY9WHPwIEV6hA2gJrghl7aGvE7RTd+B6O82q/tsOw3z6sUTB3f5cS7GySWNM0u0PjmrBlz0WXwfvX1rm7d/5reS7i5thffJtMCNZlCScCyGu5dGAQQuBmieorOqmNuTNvbyrZhyQANHzI8roOvZPQm1ONmPHUzyL+7ew8oul1sRPyLRDmXbho4QTJY0PkG5D7/s7trwfrCkwQ+fXtcmiSqMZCMib+m7wNt6jkfeowRoUS3/reXW9bYfPTvSDoXBkpXbn4WDoctX52PB7mgFXWDVAALwl//3YHQfy9vnroO/y9vnrl8L++nyBuzPohfE1690ykPK3dqm89Hs/xyt/yjeVGivzAFKPLZxO0r6uHEr01oLSbxr4HDsRox8ma+mtdiYqoM7lJ7P+aEOq4Fz6BxswJAAAAAAA"Logois imported but never used, and the<Image>srcis a huge inlined data URL string. This increases HTML size and bypasses Astro's asset pipeline. Prefer usingsrc={Logo}(with a real image file) and remove the hard-coded base64 string and any unused import.@ -0,0 +1,30 @@---import '../../styles/components/theme-mobile-toggle.css'This CSS import path does not exist (
src/styles/components/theme-mobile-toggle.css), while the file added in this PR is undersrc/styles/components/header/theme-mobile-toggle.css. Fix the import path so the mobile toggle styles are actually included and the build doesn't fail with a missing file.@ -37,3 +13,1 @@}})();</script><script src="../scripts/init.js"></script> <!-- Handles darkmode & space-to-click for accessibility -->Import path uses
../components/Nav/Header.astro, but the directory in this repo issrc/components/nav/(lowercase). This will fail on case-sensitive filesystems (Linux CI/production). Update the import to match the actual path casing.init.jsis loaded as a classic script, but it contains an ES moduleimportstatement. Withouttype="module"(and a bundler-resolved URL), this will throw in the browser and prevent initialization. Load it as a module and ensure the path is emitted by Astro/Vite (e.g., import the script URL in frontmatter or move it underpublic/).@ -73,4 +73,4 @@class="p-6 rounded-lg bg-light-100 hover:bg-light-0 dark:bg-dark-600 dark:hover:bg-dark-400 border border-light-300 dark:border-dark-400transition-colors duration-200"><span class="font-mono font-medium text-light-1000 dark:text-dark-0">Contact Us</span>This changes the CTA link to
/contact, but there is nosrc/pages/contact.astro(or other route) in the repository, so it will 404. Either add the contact page/route, or point this back to an existing page (e.g.,/digital-resourcesas before).@ -0,0 +1 @@data:image/webp;base64,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 file is named
.png, but its contents are a textdata:image/webp;base64,...URL. That won't be treated as a valid PNG asset and is likely to break if imported/served as an image. Store the actual binary image file here (or rename to.txt/move the data URL into code if that's intentional).@ -0,0 +8,4 @@var cookiestring = RegExp("" + cookiename + "[^;]+").exec(document.cookie);return decodeURIComponent(!!cookiestring ? cookiestring.toString().replace(/^[^=]+./, "") : "");getCookieuses a regex that can match partial cookie names (e.g., searching forthemecan matchtheme2) and doesn't handle the;delimiter reliably. Use a stricter pattern like(?:^|;\s*)<name>=([^;]*)(with proper escaping) to avoid incorrect theme detection.@ -0,0 +43,4 @@window.matchMedia("(prefers-reduced-motion: reduce)").matches) {changeTheme(toDark);return;The theme toggle handler calls
e.preventDefault()on the checkbox click, which prevents the checkbox from toggling. SincetoDarkis read frome.target.checked, the value will never change and the theme toggle can become a no-op. Use achangelistener (preferred) or avoidpreventDefaultand read the updated checked state.@ -0,0 +43,4 @@#mobile-site-nav {display: none !important;}:is(a, summary):is(hover, focus) {Selector
:is(a, summary):is(hover, focus)is invalid becausehover/focusneed to be pseudo-classes (:hover,:focus). As written, the rule is ignored. Replace with:is(a, summary):is(:hover, :focus)(or remove if not needed for print).@ -0,0 +46,4 @@:is(a, summary):is(hover, focus) {anchor-name: --hovered-item;}}src/styles/print.cssandsrc/styles/components/header/print-header.csscontain the same@media printrules. Duplicating these will make future changes easy to miss and can lead to drift. Consider keeping a single print stylesheet and importing it from the needed layer(s).@ -0,0 +43,4 @@#mobile-site-nav {display: none !important;}:is(a, summary):is(hover, focus) {Selector
:is(a, summary):is(hover, focus)is invalid becausehover/focusneed to be pseudo-classes (:hover,:focus). As written, the whole rule is ignored. Replace with:is(a, summary):is(:hover, :focus)(or remove if not needed for print).This is what it will be compiled to
85ba82b8cdto558339dd72View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.