@m13v/seo-components 0.2.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.2.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",
@@ -1,5 +1,5 @@
1
1
  interface ArticleMetaProps {
2
- author: string;
2
+ author?: string;
3
3
  authorRole?: string;
4
4
  datePublished: string;
5
5
  dateModified?: string;
@@ -18,7 +18,7 @@ function formatDate(value: string) {
18
18
  }
19
19
 
20
20
  export function ArticleMeta({
21
- author,
21
+ author = "Matthew Diakonov",
22
22
  authorRole,
23
23
  datePublished,
24
24
  dateModified,
@@ -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) => (
@@ -32,7 +32,7 @@ export function FlowDiagram({ title, steps }: FlowDiagramProps) {
32
32
  <p className="text-xs font-mono uppercase tracking-widest text-emerald-500 mb-5">
33
33
  {title}
34
34
  </p>
35
- <div className="flex items-start gap-0 min-w-max">
35
+ <div className="flex items-start justify-between w-full">
36
36
  {steps.map((step, i) => (
37
37
  <motion.div
38
38
  key={i}
@@ -46,7 +46,7 @@ export function FlowDiagram({ title, steps }: FlowDiagramProps) {
46
46
  delay: i * 0.08,
47
47
  }}
48
48
  >
49
- <div className="flex flex-col items-center w-28 shrink-0">
49
+ <div className="flex flex-col items-center flex-1 min-w-0 max-w-[180px]">
50
50
  <div className="w-11 h-11 rounded-xl bg-white border border-zinc-200 flex items-center justify-center text-lg mb-2">
51
51
  {step.icon ? icons[step.icon] || "\u2022" : `${i + 1}`}
52
52
  </div>
@@ -17,7 +17,7 @@ export function InlineCta({
17
17
  }: InlineCtaProps) {
18
18
  return (
19
19
  <motion.div
20
- className="my-12 p-6 rounded-2xl border border-accent/20 bg-accent-surface"
20
+ className="my-12 mx-auto max-w-2xl p-6 rounded-2xl border border-teal-100 bg-teal-50/30"
21
21
  initial={{ opacity: 0, y: 16 }}
22
22
  whileInView={{ opacity: 1, y: 0 }}
23
23
  viewport={{ once: true }}
@@ -15,7 +15,7 @@ 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 ${className}`}>
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
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`}>