Files
kmtnflower/src/app/footer/footer.component.html
T
Hermes Agent bea1c97e88
CI Pipeline / backend-test (pull_request) Successful in 4m20s
CI Pipeline / frontend-test (pull_request) Successful in 27s
CI Pipeline / frontend-build (pull_request) Failing after 29s
CI Pipeline / backend-lint (pull_request) Successful in 8s
CI Pipeline / quality-gate (push) Successful in 2s
CI Pipeline / backend-test (push) Successful in 4m22s
CI Pipeline / frontend-test (push) Successful in 26s
CI Pipeline / frontend-build (push) Failing after 28s
CI Pipeline / backend-lint (push) Successful in 8s
CI Pipeline / quality-gate (pull_request) Successful in 1s
fix(seo): comprehensive SEO improvements per expert audit
- Add public/robots.txt (allow all, disallow /admin and /login, reference sitemap)
- Add public/sitemap.xml (5 public routes with change frequencies and priorities)
- Fix heading hierarchy: h2 -> h1 on about, schedule, events, contact pages
- Remove dead footer href="#" links:
  - Volunteer/Corporate Giving/Planned Giving -> routerLink to /contact with subject query param
  - Social media links -> conditional on config().social_* fields (hidden when empty)
- Fix logo ARIA: add aria-hidden="true" to decorative logo in about page divider
- Add social_facebook, social_twitter, social_instagram, social_youtube to:
  - StationConfig DB model + startup migration
  - StationConfigResponse and StationConfigUpdate schemas
  - Frontend StationConfig TypeScript interface
- Fix events "Learn More" dead link -> routerLink to /contact
2026-08-04 10:19:24 +00:00

71 lines
3.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<footer class="footer">
<div class="container">
<div class="footer-top">
<div class="footer-brand">
<img [src]="resolveImageUrl(config().logo_url)" alt="" class="footer-flower" aria-hidden="true">
<h3>
<span class="brand-m">{{ config().name_primary | slice:0:1 }}</span>{{ config().name_primary | slice:1 }}
<span class="brand-a">{{ config().name_secondary }}</span>
</h3>
<p class="footer-tagline">
Community-powered nonprofit public radio — free to stream, funded by you.
</p>
<p class="footer-legal">
{{ config().name_primary }} {{ config().name_secondary }} is a {{ config().nonprofit_type }} nonprofit organization.<br>
EIN: {{ config().ein }}. All donations are tax-deductible.
</p>
</div>
<div class="footer-links">
<div class="footer-col">
<h4>Quick Links</h4>
<ul>
<li><a routerLink="/about">About Us</a></li>
<li><a routerLink="/schedule">Schedule</a></li>
<li><a routerLink="/events">Events</a></li>
@if (config().donation_url) {
<li><a [href]="config().donation_url" target="_blank" rel="noopener noreferrer">Donate</a></li>
}
<li><a routerLink="/contact">Contact</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Support</h4>
<ul>
@if (config().donation_url) {
<li><a [href]="config().donation_url" target="_blank" rel="noopener noreferrer">Become a Member</a></li>
}
<li><a routerLink="/contact" [queryParams]="{subject: 'volunteer'}">Volunteer</a></li>
<li><a routerLink="/contact" [queryParams]="{subject: 'advertising'}">Corporate Giving</a></li>
<li><a routerLink="/contact" [queryParams]="{subject: 'general'}">Planned Giving</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Follow Us</h4>
<div class="social-links">
@if (config().social_facebook) {
<a [href]="config().social_facebook" target="_blank" rel="noopener noreferrer" aria-label="Facebook" class="social-link">📘</a>
}
@if (config().social_twitter) {
<a [href]="config().social_twitter" target="_blank" rel="noopener noreferrer" aria-label="Twitter" class="social-link">🐦</a>
}
@if (config().social_instagram) {
<a [href]="config().social_instagram" target="_blank" rel="noopener noreferrer" aria-label="Instagram" class="social-link">📷</a>
}
@if (config().social_youtube) {
<a [href]="config().social_youtube" target="_blank" rel="noopener noreferrer" aria-label="YouTube" class="social-link">📺</a>
}
</div>
</div>
</div>
</div>
<div class="footer-bottom">
<p>&copy; {{ config().founded_year }}–{{ currentYear() }} {{ config().name_primary }} {{ config().name_secondary }}. All rights reserved.</p>
<p class="footer-made">
Made with 🧡 in the mountains
</p>
</div>
</div>
</footer>