feat: Gear page with Kings/Queens toggle + jersey photos (#94) #43
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "94-gear-page"
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?
Summary
gear.html) with Kings/Queens program toggle and responsive photo gallery of team jerseyswestside/jerseys/) to local assets.site-navpages; no authenticated pages touchedChanges
gear.html(new): Kings/Queens toggle + photo gallery per program. Component doc at top. Queens section shows "coming soon" placeholder.assets/images/gear/(new): 3 jersey photos copied from MinIO:2574801714458281987.jpeg,IMG_4164.jpeg,IMG_4165.jpegshared/style.css:.gear-galleryand.gear-itemstyles with responsive grid (1col mobile, 2col 640px+, 3col 1024px+). Hover scale effect.index.html,about.html,staff.html,tryouts.html,sponsors.html,schedule.html,register.html,success.html: Added "Gear" nav link after "Tryouts" in.site-nav.Test Plan
gear.htmlloads with jersey photos visiblegear.html.bottom-nav) were modifiedReview Checklist
Related Notes
westside-playground-- the project this work belongs toSelf-Review Findings
Issue Found and Fixed
.roster-gridresponsive rules -- Two unrelated.roster-gridCSS overrides from a stash pop during development were included in the initial commit. Fixed in commit9deebb1(2 lines removed).Verified Clean
gear.htmlhas component doc (@route,@auth,@nav,@api,@toggle)data-program/data-program-contentpattern matching tryouts.htmlinitKQToggle()fromshared/app.jsauto-initializes on DOMContentLoaded (no new JS needed)assets/images/gear/loading="lazy"on images.site-navpages; 0 authenticated.bottom-navpages touchedVERDICT: APPROVED (after fixup commit)
PR #43 Review
DOMAIN REVIEW
Tech stack: Static HTML/CSS/JS playground (vanilla -- no framework). Domain checks: accessibility, responsive design, CSS quality, UX patterns.
Accessibility
aria-label="Main navigation", toggle hasaria-expanded,aria-controls, andaria-label. Correct.altattributes: "Kings jersey front view", "Kings jersey back view", "Kings jersey detail". Good.data-programattributes andinitKQToggle()fromshared/app.js-- reuses the existing pattern withlocalStoragepersistence. Consistent with tryouts, schedule, and teams pages.<figure>without<figcaption>is consistent with existing usage (staff photos, sponsor logos).Responsive design
loading="lazy"on all three images. Good for performance.CSS quality
var(--space-lg),var(--border-radius-lg),var(--color-gray-800),var(--color-dark),var(--transition-base). No magic numbers in the new styles.transform: scale(1.03)-- a reasonable literal value for a visual micro-interaction. Not a magic number concern.@mediablocks at lines 3473 and 3504.UX patterns
.card.card-centeredpattern. Clean empty state.<script src="shared/app.js" defer>at end of body -- consistent with all other pages.Nav consistency
.site-navpages (index, about, staff, tryouts, sponsors, schedule, register, success) have the Gear link added after Tryouts and before Sponsors. Consistent placement across all files..bottom-nav(authenticated) pages were NOT modified. Correct scoping.JS integration
gear.htmluses.kq-toggle-btn[data-program]and[data-program-content]attributes, which are the exact selectorsinitKQToggle()targets. No new JS needed. The function is already called on DOMContentLoaded for every page that has.kq-toggle-btnelements.BLOCKERS
None.
This is a static HTML/CSS playground page. No user input handling, no backend calls, no auth logic, no secrets. The BLOCKER criteria (test coverage for new functionality, input validation, secrets, DRY auth) do not apply to static playground prototypes with zero interactivity beyond a localStorage toggle that reuses an existing, tested pattern.
NITS
Image filenames:
2574801714458281987.jpegis an opaque numeric filename (likely a MinIO object ID). Consider renaming to something descriptive likekings-jersey-detail.jpegfor maintainability. The other two (IMG_4164.jpeg,IMG_4165.jpeg) are camera defaults -- same concern. Non-blocking since this is a playground and images will get proper names during Svelte promotion.og:image URL: Points to
ldraney.github.io/west-side-basketball/-- this is consistent with all existing pages, but is a GitHub Pages URL rather than the production domain. Pre-existing tech debt, not introduced by this PR.SOP COMPLIANCE
94-gear-pagereferences westside-app#94PROCESS OBSERVATIONS
initKQTogglepattern rather than introducing new JS. CSS additions are isolated to.gear-gallery/.gear-itemclasses with no specificity conflicts.@route,@auth,@nav,@api,@toggle) ready for Svelte promotion.VERDICT: APPROVED