Files
kmtnflower/src/app/contact/contact.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

65 lines
2.7 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.
<section class="contact">
<div class="container">
<div class="contact-header">
<img src="svg/small-flower.svg" alt="" class="contact-flower" aria-hidden="true">
<h1>Get in <span class="text-accent">Touch</span></h1>
<p class="section-intro">
Have a song request, want to volunteer, or just want to say hello?
We'd love to hear from you.
</p>
</div>
<div class="contact-grid">
<!-- Contact form -->
<div class="contact-form-wrapper">
<form class="contact-form" (ngSubmit)="onSubmit()" #contactForm="ngForm">
<div class="form-group">
<label for="name">Your Name</label>
<input id="name" type="text" ngModel name="name" required placeholder="Jane Doe">
</div>
<div class="form-group">
<label for="email">Email Address</label>
<input id="email" type="email" ngModel name="email" required placeholder="jane@example.com">
</div>
<div class="form-group">
<label for="subject">Subject</label>
<select id="subject" ngModel name="subject" required>
<option value="" disabled selected>Choose a topic</option>
<option value="general">General Inquiry</option>
<option value="volunteer">Volunteer</option>
<option value="advertising">Community Announcement</option>
<option value="song">Song Request</option>
<option value="technical">Technical Support</option>
</select>
</div>
<div class="form-group">
<label for="message">Message</label>
<textarea id="message" rows="5" ngModel name="message" required placeholder="Your message..."></textarea>
</div>
<button type="submit" class="btn btn-form">Send Message</button>
</form>
</div>
<!-- Station info -->
<div class="contact-info">
<div class="info-card">
<h4><span aria-hidden="true">📍</span> Studio Location</h4>
<p [innerHTML]="config().address"></p>
</div>
<div class="info-card">
<h4><span aria-hidden="true">📞</span> Phone</h4>
<p>{{ config().phone }}<br>Mon–Fri 8 AM – 6 MT</p>
</div>
<div class="info-card">
<h4><span aria-hidden="true">✉️</span> Email</h4>
<p><a [href]="'mailto:' + config().email">{{ config().email }}</a></p>
</div>
<div class="info-card">
<h4><span aria-hidden="true">📡</span> Frequencies</h4>
<p>{{ config().frequency }} — Mountain Region<br>Stream: {{ config().website }}/live</p>
</div>
</div>
</div>
</div>
</section>