@m13v/seo-components 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@m13v/seo-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "39 animated React components for programmatic SEO pages. Remotion video, Magic UI style animations, trust signals, JSON-LD helpers. Teal/cyan brand, light-theme only.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.ts",
|
|
@@ -27,7 +27,7 @@ export function ArticleMeta({
|
|
|
27
27
|
}: ArticleMetaProps) {
|
|
28
28
|
const showUpdated = dateModified && dateModified !== datePublished;
|
|
29
29
|
return (
|
|
30
|
-
<div className={`flex flex-wrap items-center gap-x-3 gap-y-2 text-sm text-zinc-500 ${className}`}>
|
|
30
|
+
<div className={`flex flex-wrap items-center gap-x-3 gap-y-2 text-sm text-zinc-500 max-w-4xl mx-auto px-6 ${className}`}>
|
|
31
31
|
<div className="flex items-center gap-2">
|
|
32
32
|
<div className="w-7 h-7 rounded-full bg-gradient-to-br from-teal-500/40 to-teal-500/10 flex items-center justify-center text-xs font-semibold text-white">
|
|
33
33
|
{author.charAt(0)}
|
|
@@ -15,7 +15,7 @@ interface BreadcrumbsProps {
|
|
|
15
15
|
export function Breadcrumbs({ items, className = "", align = "start" }: BreadcrumbsProps) {
|
|
16
16
|
const justify = align === "center" ? "justify-center" : "justify-start";
|
|
17
17
|
return (
|
|
18
|
-
<nav aria-label="Breadcrumb" className={className}>
|
|
18
|
+
<nav aria-label="Breadcrumb" className={`max-w-4xl mx-auto px-6 ${className}`}>
|
|
19
19
|
<ol className={`flex flex-wrap items-center ${justify} gap-2 text-sm text-zinc-500`}>
|
|
20
20
|
{items.map((item, i) => {
|
|
21
21
|
const isLast = i === items.length - 1;
|
|
@@ -12,7 +12,7 @@ export function FaqSection({
|
|
|
12
12
|
className = "",
|
|
13
13
|
}: FaqSectionProps) {
|
|
14
14
|
return (
|
|
15
|
-
<section className={className}>
|
|
15
|
+
<section className={`max-w-4xl mx-auto px-6 my-16 ${className}`}>
|
|
16
16
|
<h2 className="text-3xl sm:text-4xl font-bold text-zinc-900 mb-8">{heading}</h2>
|
|
17
17
|
<div className="space-y-4">
|
|
18
18
|
{items.map((faq) => (
|
|
@@ -15,9 +15,9 @@ export function ProofBand({
|
|
|
15
15
|
const hasHalf = rating - fullStars >= 0.3;
|
|
16
16
|
|
|
17
17
|
return (
|
|
18
|
-
<div className={`text-sm text-zinc-500 mb-8 w-
|
|
18
|
+
<div className={`text-sm text-zinc-500 mb-8 max-w-4xl mx-auto px-6 ${className}`}>
|
|
19
19
|
{/* Stars + rating on its own line */}
|
|
20
|
-
<div className="flex items-center gap-2 mb-2
|
|
20
|
+
<div className="flex items-center gap-2 mb-2">
|
|
21
21
|
<div className="flex items-center gap-0.5" aria-label={`${rating} out of 5`}>
|
|
22
22
|
{Array.from({ length: 5 }, (_, i) => (
|
|
23
23
|
<svg
|
|
@@ -43,7 +43,7 @@ export function ProofBand({
|
|
|
43
43
|
|
|
44
44
|
{/* Highlights as a clean vertical list */}
|
|
45
45
|
{highlights.length > 0 && (
|
|
46
|
-
<div className="flex flex-col gap-1
|
|
46
|
+
<div className="flex flex-col gap-1">
|
|
47
47
|
{highlights.map((h, i) => (
|
|
48
48
|
<div key={i} className="flex items-center gap-2">
|
|
49
49
|
<svg
|