Fix SEO/UX audit gaps: canonical tags, org schema, nav, header claims
Add canonical URLs and a sitewide Organization JSON-LD (linked via @id to page-specific LocalBusiness/Service/Article schemas), move FAQ and Reviews into the top nav, attach the 24/7 support claim to a tooltip on the header badge instead of leaving it unexplained, drop the unverifiable incidents_resolved stat from the hero terminal animation, and clean up the empty-reviews state instead of showing a thin placeholder. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013otXCiTZsxdZ4SJKZ9wUky
This commit is contained in:
1 parent
130c5382cd
commit
30e1aea20b
16 files changed
+72
-11
No files matched your search
@@ -4,7 +4,7 @@ import { useEffect, useState } from 'react';
|
||||
import Link from 'next/link';
|
||||
import { ArrowRight } from 'lucide-react';
|
||||
|
||||
const LINES = ['$ status --infra', 'uptime: 99.98%', 'incidents_resolved: 1240+', 'avg_response_time: 15m'];
|
||||
const LINES = ['$ status --infra', 'uptime: 99.98%', 'team_size: 20+', 'avg_response_time: 15m'];
|
||||
|
||||
function cx(...args) {
|
||||
return args.filter(Boolean).join(' ');
|
||||
|
||||
@@ -11,6 +11,27 @@ function cx(...args) {
|
||||
export default function Reviews({ reviews, limit, moreHref, showForm = true }) {
|
||||
const list = limit ? reviews.slice(0, limit) : reviews;
|
||||
|
||||
// Пустая витрина отзывов на тизере (главная) выглядит слабо - лучше не показывать
|
||||
// секцию вовсе, чем пустой список без формы для его заполнения.
|
||||
if (list.length === 0 && !showForm) return null;
|
||||
|
||||
if (list.length === 0) {
|
||||
return (
|
||||
<section id="reviews" className="py-20 bg-slate-100/60 dark:bg-slate-950/40">
|
||||
<div className="max-w-2xl mx-auto px-5 sm:px-8">
|
||||
<SectionHeading
|
||||
eyebrow="reviews --approved"
|
||||
title="Отзывы клиентов"
|
||||
desc="Отзывов пока нет - будьте первым, кто расскажет о работе с нами. Публикуется после проверки менеджером."
|
||||
/>
|
||||
<Reveal>
|
||||
<ReviewForm />
|
||||
</Reveal>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<section id="reviews" className="py-20 bg-slate-100/60 dark:bg-slate-950/40">
|
||||
<div className="max-w-6xl mx-auto px-5 sm:px-8">
|
||||
@@ -22,7 +43,6 @@ export default function Reviews({ reviews, limit, moreHref, showForm = true }) {
|
||||
<div className={cx('grid gap-10', showForm && 'md:grid-cols-2')}>
|
||||
<Reveal>
|
||||
<div className="space-y-4">
|
||||
{list.length === 0 && <p className="text-sm text-slate-400">Пока нет опубликованных отзывов. Будьте первым!</p>}
|
||||
{list.map((r) => (
|
||||
<div key={r.id} className="rounded-lg border p-5 bg-white border-slate-200 dark:bg-slate-900 dark:border-slate-800">
|
||||
<div className="flex items-center gap-1 mb-2">
|
||||
|
||||
Reference in new issue
Block a user