fix(seo): comprehensive SEO improvements per expert audit #4
No files matched your search
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,6 @@
|
|||||||
import { Component, inject } from '@angular/core';
|
import { Component, inject } from '@angular/core';
|
||||||
import { AsyncPipe, DatePipe, NgFor } from '@angular/common';
|
import { AsyncPipe, DatePipe, NgFor } from '@angular/common';
|
||||||
|
import { RouterLinkWithHref } from '@angular/router';
|
||||||
import { map, Observable, startWith } from 'rxjs';
|
import { map, Observable, startWith } from 'rxjs';
|
||||||
|
|
||||||
import { EventService } from '../services/event.service';
|
import { EventService } from '../services/event.service';
|
||||||
@@ -14,7 +15,7 @@ interface EventsState {
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'app-events',
|
selector: 'app-events',
|
||||||
standalone: true,
|
standalone: true,
|
||||||
imports: [AsyncPipe, DatePipe, NgFor],
|
imports: [AsyncPipe, DatePipe, NgFor, RouterLinkWithHref],
|
||||||
templateUrl: './events.component.html',
|
templateUrl: './events.component.html',
|
||||||
styleUrl: './events.component.scss',
|
styleUrl: './events.component.scss',
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Component, inject, computed } from '@angular/core';
|
import { Component, inject, computed } from '@angular/core';
|
||||||
import { SlicePipe } from '@angular/common';
|
import { SlicePipe } from '@angular/common';
|
||||||
import { RouterLink } from '@angular/router';
|
import { RouterLinkWithHref } from '@angular/router';
|
||||||
|
|
||||||
import { StationConfigService } from '../services/station-config.service';
|
import { StationConfigService } from '../services/station-config.service';
|
||||||
import { resolveImageUrl } from '../services/app-config.service';
|
import { resolveImageUrl } from '../services/app-config.service';
|
||||||
@@ -8,7 +8,7 @@ import { resolveImageUrl } from '../services/app-config.service';
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'app-footer',
|
selector: 'app-footer',
|
||||||
standalone: true,
|
standalone: true,
|
||||||
imports: [RouterLink, SlicePipe],
|
imports: [RouterLinkWithHref, SlicePipe],
|
||||||
templateUrl: './footer.component.html',
|
templateUrl: './footer.component.html',
|
||||||
styleUrl: './footer.component.scss',
|
styleUrl: './footer.component.scss',
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -32,6 +32,11 @@ const DEFAULT_CONFIG: StationConfig = {
|
|||||||
play_store_icon_url: '',
|
play_store_icon_url: '',
|
||||||
play_store_url: '',
|
play_store_url: '',
|
||||||
app_store_embed_html: '',
|
app_store_embed_html: '',
|
||||||
|
// Social media
|
||||||
|
social_facebook: '',
|
||||||
|
social_twitter: '',
|
||||||
|
social_instagram: '',
|
||||||
|
social_youtube: '',
|
||||||
// Page content
|
// Page content
|
||||||
hero_subtitle: 'Your community-powered, nonprofit radio station — bringing music, stories, and connection to the mountain towns and beyond since 1987.',
|
hero_subtitle: 'Your community-powered, nonprofit radio station — bringing music, stories, and connection to the mountain towns and beyond since 1987.',
|
||||||
about_intro: 'For nearly four decades, KMountain Flower Radio has been the voice of our community — a nonprofit, listener-supported radio station dedicated to music, local news, and the stories that bind mountain towns together.',
|
about_intro: 'For nearly four decades, KMountain Flower Radio has been the voice of our community — a nonprofit, listener-supported radio station dedicated to music, local news, and the stories that bind mountain towns together.',
|
||||||
|
|||||||
Reference in new issue
Block a user