Phase 1: technical SEO foundations
- Per-page titles, descriptions, canonicals, Open Graph/Twitter tags via a shared pageMetadata() helper; metadataBase on the root layout - Sitemap generated from a route list on the canonical non-www host; robots.txt points to it; /services removed - One H1 per page; decorative images get empty alt text - JSON-LD: site-wide ComputerRepairService, FAQPage on the homepage, Service on each service page - FAQ answers are now server-rendered (forceMount) so the schema matches the HTML; fixed the nested payment FAQ item - Drop web design (page, nav link, homepage card and FAQs); 301 the old URL - Remove GA, Facebook Pixel and Vercel Analytics/Speed Insights - Fix tel: links (+640211... -> +64211...) - Add og-image.png and logo.png Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
0478ab65e5
commit
c085e2b031
23 files changed
+375
-386
No files matched your search
@@ -52,9 +52,12 @@ function AccordionContent({
|
||||
...props
|
||||
}) {
|
||||
return (
|
||||
// forceMount keeps closed answers in the server-rendered HTML (needed for
|
||||
// FAQPage schema); data-[state=closed]:hidden keeps them visually collapsed.
|
||||
<AccordionPrimitive.Content
|
||||
data-slot="accordion-content"
|
||||
className="data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm"
|
||||
forceMount
|
||||
className="data-[state=closed]:hidden data-[state=open]:animate-accordion-down overflow-hidden text-sm"
|
||||
{...props}>
|
||||
<div className={cn("pt-0 pb-4", className)}>{children}</div>
|
||||
</AccordionPrimitive.Content>
|
||||
|
||||
Reference in new issue
Block a user