Skip to content

add: Tech Donor section — circular icons with hover tooltips on donat…#49

Merged
kiyarose merged 1 commit into
kr/assetlabfrom
main
Apr 2, 2026
Merged

add: Tech Donor section — circular icons with hover tooltips on donat…#49
kiyarose merged 1 commit into
kr/assetlabfrom
main

Conversation

@kiyarose
Copy link
Copy Markdown
Member

@kiyarose kiyarose commented Apr 2, 2026

…e page and homepage strip (#45)

  • Initial plan

  • add: tech donor icons, homepage strip, and donate page footer

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/8db83a4c-68fa-4c6c-ba53-eaa79825e487

  • Placeholder: plan noted

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/f2a723b5-4eca-4be3-9bc3-f59fa035bf96

  • fix: logo cropping and homepage tooltip overflow clipping

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/f2a723b5-4eca-4be3-9bc3-f59fa035bf96

  • fix: add JSDoc and initialize top on declaration (DeepSource JS-D1001, JS-0119)

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/c4790ea8-3c18-4fc1-b602-40a36133d1d6


…e page and homepage strip (#45)

* Initial plan

* add: tech donor icons, homepage strip, and donate page footer

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/8db83a4c-68fa-4c6c-ba53-eaa79825e487

Co-authored-by: kiyarose <75678535+kiyarose@users.noreply.github.com>

* Placeholder: plan noted

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/f2a723b5-4eca-4be3-9bc3-f59fa035bf96

Co-authored-by: kiyarose <75678535+kiyarose@users.noreply.github.com>

* fix: logo cropping and homepage tooltip overflow clipping

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/f2a723b5-4eca-4be3-9bc3-f59fa035bf96

Co-authored-by: kiyarose <75678535+kiyarose@users.noreply.github.com>

* fix: add JSDoc and initialize top on declaration (DeepSource JS-D1001, JS-0119)

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/c4790ea8-3c18-4fc1-b602-40a36133d1d6

Co-authored-by: kiyarose <75678535+kiyarose@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: kiyarose <75678535+kiyarose@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 2, 2026 05:34
@kiyarose kiyarose merged commit cd2b767 into kr/assetlab Apr 2, 2026
8 of 11 checks passed
@deepsource-io
Copy link
Copy Markdown
Contributor

deepsource-io Bot commented Apr 2, 2026

DeepSource Code Review

We reviewed changes in 75ffcf6...6836055 on this pull request. Below is the summary for the review, and you can see the individual issues we found as inline review comments.

See full review on DeepSource ↗

PR Report Card

Overall Grade   Security  

Reliability  

Complexity  

Hygiene  

Code Review Summary

Analyzer Status Updated (UTC) Details
Secrets Apr 2, 2026 5:34a.m. Review ↗
Shell Apr 2, 2026 5:34a.m. Review ↗
JavaScript Apr 2, 2026 5:34a.m. Review ↗

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a “Tech Donors / Technology Partners” feature to the static site, rendering circular donor icons with JS-positioned hover tooltips on both the homepage and donation page.

Changes:

  • Introduces tech-donors.json as the data source for donor name/logo/contribution/link.
  • Adds donors.js + donors.css to render and style circular donor icons and a floating tooltip.
  • Integrates a compact “With help from” donor strip on index.html and a “Technology Partners” section on donate.html.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
tech-donors.json Adds initial donor dataset consumed by the renderer.
donors.js Implements donor icon rendering + floating tooltip behavior.
donors.css Provides styles for icons, tooltip, and the homepage strip layout.
index.html Loads donors assets and renders the homepage “With help from” strip.
donate.html Loads donors assets and renders the donation-page “Technology Partners” section + adds a footer.

Comment thread donors.js
Comment on lines +88 to +110
const iconRect = wrap.getBoundingClientRect();
const ttHeight = tt.offsetHeight;
const scrollY = window.scrollY || document.documentElement.scrollTop;

const centerX = iconRect.left + iconRect.width / 2;
const spaceAbove = iconRect.top;
const placeBelow = spaceAbove < ttHeight + 16;

const top = placeBelow
? iconRect.bottom + scrollY + 12
: iconRect.top + scrollY - ttHeight - 12;

if (placeBelow) {
tt.classList.add("donor-tooltip--below");
} else {
tt.classList.remove("donor-tooltip--below");
}

tt.style.position = "absolute";
tt.style.top = `${top}px`;
tt.style.left = `${centerX}px`;
tt.style.transform = "translateX(-50%)";
tt.style.visibility = "";
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tooltip positioning uses centerX = iconRect.left + ... and sets tt.style.left without accounting for horizontal page scroll (scrollX) or constraining the tooltip within the viewport. This can place the tooltip off-screen on narrow viewports or if the page is horizontally scrolled. Consider adding scrollX to the computed left and clamping the final left value using tt.offsetWidth and a small margin so the tooltip stays fully visible.

Copilot uses AI. Check for mistakes.
Comment thread donors.js
Comment on lines +148 to +174
const wrap = document.createElement("div");
wrap.className = "donor-icon-wrap";

// ── Icon ────────────────────────────────────────────────────────────────
const iconEl = document.createElement("div");
iconEl.className = "donor-icon";

const img = document.createElement("img");
img.src = donor.logo || "";
img.alt = donor.name || "";

// Fall back to a text initial when the logo cannot be loaded
img.addEventListener("error", () => {
if (img.parentNode) img.parentNode.removeChild(img);
const letter = document.createElement("span");
letter.className = "donor-icon-letter";
letter.textContent = (donor.name || "?")[0].toUpperCase();
iconEl.appendChild(letter);
});

iconEl.appendChild(img);
wrap.appendChild(iconEl);

// ── Tooltip: JS-driven floating (appended to body, bypasses overflow) ───
wrap.addEventListener("mouseenter", () => showTooltip(wrap, donor));
wrap.addEventListener("mouseleave", scheduleHide);

Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Donor icons are rendered as non-focusable <div>s and the tooltip is only triggered via mouseenter/mouseleave. This makes the donor details/link inaccessible to keyboard and most touch users. Consider rendering each donor icon as a focusable element (e.g., <a> when donor.url exists or add tabindex="0"/role="button"), show/hide the tooltip on focus/blur (and optionally keydown Escape), and provide an accessible name (e.g., via aria-label).

Copilot uses AI. Check for mistakes.
Comment thread donors.css
Comment on lines +12 to +26
.donor-icon {
width: 48px;
height: 48px;
border-radius: 50%;
overflow: hidden;
background: #fff;
border: 2px solid var(--border-color);
display: flex;
align-items: center;
justify-content: center;
transition:
transform 0.18s ease,
box-shadow 0.18s ease;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.donor-icon uses a hardcoded background: #fff and hardcoded RGBA shadows. Since the site’s theming is driven by CSS variables in base.css (e.g., --card-bg, --shadow), this will look inconsistent in dark theme and is harder to tune globally. Consider switching the icon background/shadow to theme variables (or introducing a dedicated --donor-icon-bg variable if the intent is to keep icons white in both themes).

Copilot uses AI. Check for mistakes.
Comment thread donors.css
Comment on lines +9 to +11
cursor: default;
}

Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.donor-icon-wrap sets cursor: default, but the element is interactive (hover-triggered tooltip and potentially a link inside the tooltip). This is a UX/accessibility mismatch and also provides no keyboard focus affordance. Consider using cursor: pointer for interactive icons and adding a visible :focus-visible style if the icons are made focusable (recommended).

Suggested change
cursor: default;
}
cursor: pointer;
}
.donor-icon-wrap:focus-visible .donor-icon {
outline: 2px solid var(--border-color);
outline-offset: 3px;
}

Copilot uses AI. Check for mistakes.
Comment thread donate.html
Comment on lines +279 to +290
<footer class="site-footer">
<div class="footer-inner">
<a href="brand.html">Brand guidelines</a>
<div class="footer-copyright">
&copy; 2026 SillyLittleTech.<br />
Fiscally sponsored by The Hack Foundation (d.b.a. Hack Club), a
501(c)(3) nonprofit (EIN: 81-2908499).<br />
All charitable donations are tax-deductible to the fullest extent of
the law.
</div>
</div>
</footer>
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The footer markup here duplicates the shared footer content in includes/footer.html but diverges (extra donation/tax text). This will be harder to keep consistent if the global footer changes. Consider reusing the shared include (or the same fetching mechanism used on index.html) and appending any donate-specific copy as an additional element so only the delta is maintained in this file.

Copilot uses AI. Check for mistakes.
kiyarose added a commit that referenced this pull request Apr 2, 2026
* Reorganize Assets

* add: Tech Donor section — circular icons with hover tooltips on donate page and homepage strip (#45) (#49)

* Initial plan

* add: tech donor icons, homepage strip, and donate page footer

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/8db83a4c-68fa-4c6c-ba53-eaa79825e487



* Placeholder: plan noted

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/f2a723b5-4eca-4be3-9bc3-f59fa035bf96



* fix: logo cropping and homepage tooltip overflow clipping

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/f2a723b5-4eca-4be3-9bc3-f59fa035bf96



* fix: add JSDoc and initialize top on declaration (DeepSource JS-D1001, JS-0119)

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/c4790ea8-3c18-4fc1-b602-40a36133d1d6



---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>

* hotfix: Switch donor buttons to locally hosted partner images (#50)

* Initial plan

* hotfix: switch donor buttons to locally hosted partner images

Agent-Logs-Url: https://github.com/SillyLittleTech/lander/sessions/2803f66f-5ce8-4a16-aa80-823059ba8919

Co-authored-by: kiyarose <75678535+kiyarose@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: kiyarose <75678535+kiyarose@users.noreply.github.com>

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants