Rocky_Mountain_Vending/app/blog/best-vending-machine-supplier-in-salt-lake-city-utah/page.tsx

131 lines
4 KiB
TypeScript

import { notFound } from "next/navigation"
import { loadImageMapping } from "@/lib/wordpress-content"
import { buildAbsoluteUrl } from "@/lib/seo-registry"
import { generateSEOMetadata, generateStructuredData } from "@/lib/seo"
import { getPageBySlug } from "@/lib/wordpress-data-loader"
import { cleanWordPressContent } from "@/lib/clean-wordPress-content"
import { Breadcrumbs } from "@/components/breadcrumbs"
import { PublicPageHeader, PublicSurface } from "@/components/public-surface"
import type { Metadata } from "next"
const WORDPRESS_SLUG = "best-vending-machine-supplier-in-salt-lake-city-utah"
const DISPLAY_TITLE =
"The Best Vending Machine Supplier in Salt Lake City, Utah"
const DISPLAY_DESCRIPTION =
"A closer look at how Rocky Mountain Vending supports Utah businesses with free placement, machine sales, repairs, manuals, and responsive local service."
function stripLeadingH1(html: string) {
return html.replace(/<h1[^>]*>[\s\S]*?<\/h1>/i, "")
}
export async function generateMetadata(): Promise<Metadata> {
const page = getPageBySlug(WORDPRESS_SLUG)
if (!page) {
return {
title: "Page Not Found | Rocky Mountain Vending",
}
}
return generateSEOMetadata({
title: DISPLAY_TITLE,
description: DISPLAY_DESCRIPTION,
excerpt: page.excerpt,
date: page.date,
modified: page.modified,
image: page.images?.[0]?.localPath,
path: "/blog/best-vending-machine-supplier-in-salt-lake-city-utah",
})
}
export default async function BestVendingMachineSupplierPage() {
try {
const page = getPageBySlug(WORDPRESS_SLUG)
if (!page) {
notFound()
}
let imageMapping: any = {}
try {
imageMapping = loadImageMapping()
} catch (e) {
imageMapping = {}
}
const content = page.content ? (
<div className="max-w-none">
{cleanWordPressContent(stripLeadingH1(String(page.content)), {
imageMapping,
pageTitle: DISPLAY_TITLE,
prioritizeFirstImage: true,
})}
</div>
) : (
<p className="text-muted-foreground">No content available.</p>
)
let structuredData
try {
structuredData = generateStructuredData({
title: DISPLAY_TITLE,
description: DISPLAY_DESCRIPTION,
url: buildAbsoluteUrl(
"/blog/best-vending-machine-supplier-in-salt-lake-city-utah"
),
datePublished: page.date,
dateModified: page.modified || page.date,
type: "WebPage",
})
} catch (e) {
structuredData = {
"@context": "https://schema.org",
"@type": "WebPage",
headline: DISPLAY_TITLE,
description: DISPLAY_DESCRIPTION,
url: buildAbsoluteUrl(
"/blog/best-vending-machine-supplier-in-salt-lake-city-utah"
),
}
}
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(structuredData) }}
/>
<Breadcrumbs
className="container mx-auto max-w-6xl px-4 pt-6"
items={[
{ label: "Blog", href: "/blog" },
{
label: DISPLAY_TITLE,
href: "/blog/best-vending-machine-supplier-in-salt-lake-city-utah",
},
]}
/>
<article className="container mx-auto max-w-6xl px-4 py-8 md:py-12">
<PublicSurface className="space-y-8 md:space-y-10">
<PublicPageHeader
eyebrow="Rocky Journal"
title={DISPLAY_TITLE}
description={DISPLAY_DESCRIPTION}
/>
<div className="prose prose-stone max-w-none prose-headings:font-semibold prose-headings:text-foreground prose-p:text-muted-foreground prose-li:text-muted-foreground">
{content}
</div>
</PublicSurface>
</article>
</>
)
} catch (error) {
if (process.env.NODE_ENV === "development") {
console.error(
"Error rendering Best Vending Machine Supplier page:",
error
)
}
notFound()
}
}