kofi-stack-template-generator 2.1.48 → 2.1.50
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/.turbo/turbo-build.log +5 -5
- package/dist/index.js +105 -725
- package/package.json +2 -2
- package/src/templates.generated.ts +24 -20
- package/templates/marketing/payload/public/favicon.ico +0 -0
- package/templates/marketing/payload/public/favicon.svg +6 -0
- package/templates/marketing/payload/public/logo-light.svg +6 -0
- package/templates/marketing/payload/public/logo.svg +6 -0
- package/templates/marketing/payload/src/Footer/Component.client.tsx +1 -1
- package/templates/marketing/payload/src/Footer/config.ts +1 -1
- package/templates/marketing/payload/src/Header/Component.client.tsx +1 -1
- package/templates/marketing/payload/src/Header/MobileMenu/index.tsx +1 -1
- package/templates/marketing/payload/src/app/(docs)/docs/[[...slug]]/page.tsx +6 -6
- package/templates/marketing/payload/src/app/(docs)/docs/layout.tsx +1 -1
- package/templates/marketing/payload/src/app/(docs)/layout.tsx +3 -3
- package/templates/marketing/payload/src/app/(frontend)/api/newsletter/route.ts +15 -15
- package/templates/marketing/payload/src/app/(frontend)/layout.tsx +17 -17
- package/templates/marketing/payload/src/app/(frontend)/posts/[slug]/BlogPostContent.tsx +5 -5
- package/templates/marketing/payload/src/app/(frontend)/posts/page.tsx +2 -2
- package/templates/marketing/payload/src/components/JsonLd/index.tsx +19 -19
- package/templates/marketing/payload/src/components/Logo/Logo.tsx +1 -1
- package/templates/marketing/payload/src/components/TableOfContents/index.tsx +3 -3
- package/templates/marketing/payload/src/endpoints/seed/home-static.ts +100 -600
- package/templates/marketing/payload/src/heros/ProductShowcase/AnimatedMockup.tsx +3 -3
- package/templates/marketing/payload/src/utilities/generateMeta.ts +16 -16
- package/templates/marketing/payload/src/utilities/mergeOpenGraph.ts +4 -4
|
Binary file
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="32" height="32" rx="6" fill="#0F1F3D"/>
|
|
3
|
+
<path d="M16 6C11.029 6 7 10.029 7 15C7 16.5 7.4 17.9 8.1 19.1L16 26L23.9 19.1C24.6 17.9 25 16.5 25 15C25 10.029 20.971 6 16 6Z" fill="#3DA9A3"/>
|
|
4
|
+
<path d="M16 9C12.686 9 10 11.686 10 15C10 16.1 10.3 17.1 10.8 18L16 23L21.2 18C21.7 17.1 22 16.1 22 15C22 11.686 19.314 9 16 9Z" fill="#0F1F3D"/>
|
|
5
|
+
<text x="16" y="18" font-family="system-ui, -apple-system, sans-serif" font-size="10" font-weight="700" fill="white" text-anchor="middle">S</text>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="34" height="34" rx="8" fill="#3DA9A3"/>
|
|
3
|
+
<path d="M17 7C12.029 7 8 11.029 8 16C8 17.5 8.4 18.9 9.1 20.1L17 27L24.9 20.1C25.6 18.9 26 17.5 26 16C26 11.029 21.971 7 17 7Z" fill="white"/>
|
|
4
|
+
<path d="M17 10C13.686 10 11 12.686 11 16C11 17.1 11.3 18.1 11.8 19L17 24L22.2 19C22.7 18.1 23 17.1 23 16C23 12.686 20.314 10 17 10Z" fill="#3DA9A3"/>
|
|
5
|
+
<text x="17" y="19" font-family="system-ui, -apple-system, sans-serif" font-size="10" font-weight="700" fill="#0F1F3D" text-anchor="middle">S</text>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="34" height="34" rx="8" fill="#0F1F3D"/>
|
|
3
|
+
<path d="M17 7C12.029 7 8 11.029 8 16C8 17.5 8.4 18.9 9.1 20.1L17 27L24.9 20.1C25.6 18.9 26 17.5 26 16C26 11.029 21.971 7 17 7Z" fill="#3DA9A3"/>
|
|
4
|
+
<path d="M17 10C13.686 10 11 12.686 11 16C11 17.1 11.3 18.1 11.8 19L17 24L22.2 19C22.7 18.1 23 17.1 23 16C23 12.686 20.314 10 17 10Z" fill="#0F1F3D"/>
|
|
5
|
+
<text x="17" y="19" font-family="system-ui, -apple-system, sans-serif" font-size="10" font-weight="700" fill="white" text-anchor="middle">S</text>
|
|
6
|
+
</svg>
|
|
@@ -277,7 +277,7 @@ export const FooterClient: React.FC<FooterClientProps> = ({ data }) => {
|
|
|
277
277
|
<Logo variant="auto" className="h-6 w-6" />
|
|
278
278
|
</Link>
|
|
279
279
|
<p className="text-sm text-muted-foreground">
|
|
280
|
-
© {currentYear} {copyrightText || "
|
|
280
|
+
© {currentYear} {copyrightText || "SaaSify"}
|
|
281
281
|
</p>
|
|
282
282
|
</div>
|
|
283
283
|
|
|
@@ -151,7 +151,7 @@ export const Footer: GlobalConfig = {
|
|
|
151
151
|
name: "copyrightText",
|
|
152
152
|
type: "text",
|
|
153
153
|
label: "Copyright Text",
|
|
154
|
-
defaultValue: "
|
|
154
|
+
defaultValue: "SaaSify",
|
|
155
155
|
admin: {
|
|
156
156
|
description: "Company name for copyright (year is added automatically)",
|
|
157
157
|
},
|
|
@@ -83,7 +83,7 @@ export const HeaderClient: React.FC<HeaderClientProps> = ({ data }) => {
|
|
|
83
83
|
<div className="flex items-center gap-8">
|
|
84
84
|
<Link href="/" className="flex items-center gap-2">
|
|
85
85
|
<Logo loading="eager" priority="high" variant="auto" />
|
|
86
|
-
<span className="text-xl font-semibold hidden sm:inline">
|
|
86
|
+
<span className="text-xl font-semibold hidden sm:inline">SaaSify</span>
|
|
87
87
|
</Link>
|
|
88
88
|
{/* Left nav - hidden on tablet and below, visible on desktop */}
|
|
89
89
|
<HeaderNav data={data} position="left" className="hidden lg:flex gap-6 items-center" />
|
|
@@ -148,7 +148,7 @@ export const MobileMenu: React.FC<MobileMenuProps> = ({ data }) => {
|
|
|
148
148
|
{/* Header with close button */}
|
|
149
149
|
<div className="flex items-center justify-between p-4 border-b border-border">
|
|
150
150
|
<Link href="/" onClick={closeMenu} className="text-xl font-semibold">
|
|
151
|
-
|
|
151
|
+
SaaSify
|
|
152
152
|
</Link>
|
|
153
153
|
<HamburgerIcon isOpen={isOpen} onClick={closeMenu} className="lg:block" />
|
|
154
154
|
</div>
|
|
@@ -48,7 +48,7 @@ export default async function Page({ params }: DocsPageProps) {
|
|
|
48
48
|
return (
|
|
49
49
|
<DocsPage>
|
|
50
50
|
<DocsTitle>Documentation</DocsTitle>
|
|
51
|
-
<DocsDescription>Welcome to
|
|
51
|
+
<DocsDescription>Welcome to SaaSify documentation</DocsDescription>
|
|
52
52
|
<DocsBody>
|
|
53
53
|
<div className="flex flex-col items-center justify-center py-12 text-center">
|
|
54
54
|
<h2 className="text-xl font-semibold mb-4">No documentation yet</h2>
|
|
@@ -101,16 +101,16 @@ export async function generateMetadata({ params }: DocsPageProps): Promise<Metad
|
|
|
101
101
|
|
|
102
102
|
if (!doc) {
|
|
103
103
|
return {
|
|
104
|
-
title: "Documentation |
|
|
104
|
+
title: "Documentation | SaaSify",
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
return {
|
|
109
|
-
title: `${doc.title} |
|
|
110
|
-
description: doc.description || `Learn about ${doc.title} in
|
|
109
|
+
title: `${doc.title} | SaaSify Docs`,
|
|
110
|
+
description: doc.description || `Learn about ${doc.title} in SaaSify documentation.`,
|
|
111
111
|
openGraph: {
|
|
112
|
-
title: `${doc.title} |
|
|
113
|
-
description: doc.description || `Learn about ${doc.title} in
|
|
112
|
+
title: `${doc.title} | SaaSify Docs`,
|
|
113
|
+
description: doc.description || `Learn about ${doc.title} in SaaSify documentation.`,
|
|
114
114
|
type: "article",
|
|
115
115
|
},
|
|
116
116
|
}
|
|
@@ -37,8 +37,8 @@ export default function DocsRootLayout({ children }: { children: ReactNode }) {
|
|
|
37
37
|
export const metadata: Metadata = {
|
|
38
38
|
metadataBase: new URL(getServerSideURL()),
|
|
39
39
|
title: {
|
|
40
|
-
default: "Documentation |
|
|
41
|
-
template: "%s |
|
|
40
|
+
default: "Documentation | SaaSify",
|
|
41
|
+
template: "%s | SaaSify Docs",
|
|
42
42
|
},
|
|
43
|
-
description: "
|
|
43
|
+
description: "SaaSify documentation - learn how to use the platform and boost your team productivity.",
|
|
44
44
|
}
|
|
@@ -13,9 +13,9 @@ const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
|
|
|
13
13
|
const COMPANY_ADDRESS = "KrumaLabs • 102 West Main Street #501, New Albany, OH 43054"
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
16
|
+
* SaaSify logo URL
|
|
17
17
|
*/
|
|
18
|
-
const LOGO_URL = "
|
|
18
|
+
const LOGO_URL = "/logo.png"
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Generate newsletter confirmation email HTML with logo and branding
|
|
@@ -120,9 +120,9 @@ function renderNewsletterConfirmationEmail(unsubscribeUrl?: string): string {
|
|
|
120
120
|
<div style="${emailStyles.container}">
|
|
121
121
|
<!-- Header with Logo -->
|
|
122
122
|
<div style="${emailStyles.header}">
|
|
123
|
-
<a href="
|
|
124
|
-
<img src="${LOGO_URL}" alt="
|
|
125
|
-
<span style="${emailStyles.logoText}">
|
|
123
|
+
<a href="/" style="display: inline-flex; align-items: center; gap: 12px; text-decoration: none; color: inherit;">
|
|
124
|
+
<img src="${LOGO_URL}" alt="SaaSify" width="32" height="32" style="display: block; width: 32px; height: 32px;">
|
|
125
|
+
<span style="${emailStyles.logoText}">SaaSify</span>
|
|
126
126
|
</a>
|
|
127
127
|
</div>
|
|
128
128
|
|
|
@@ -130,14 +130,14 @@ function renderNewsletterConfirmationEmail(unsubscribeUrl?: string): string {
|
|
|
130
130
|
<div style="padding: 32px 32px 0;"><h1 style="${emailStyles.heading}">Welcome to the Newsletter!</h1></div>
|
|
131
131
|
<div style="${emailStyles.content}">
|
|
132
132
|
<p style="${emailStyles.paragraph}">
|
|
133
|
-
Thanks for subscribing to the
|
|
133
|
+
Thanks for subscribing to the SaaSify newsletter! 🎉
|
|
134
134
|
</p>
|
|
135
135
|
<p style="${emailStyles.paragraph}">
|
|
136
136
|
You'll now receive updates about:
|
|
137
137
|
</p>
|
|
138
138
|
<ul style="${emailStyles.paragraph}">
|
|
139
139
|
<li>New features and product updates</li>
|
|
140
|
-
<li>Tips for
|
|
140
|
+
<li>Tips for boosting team productivity</li>
|
|
141
141
|
<li>Industry insights and best practices</li>
|
|
142
142
|
<li>Special announcements and offers</li>
|
|
143
143
|
</ul>
|
|
@@ -145,11 +145,11 @@ function renderNewsletterConfirmationEmail(unsubscribeUrl?: string): string {
|
|
|
145
145
|
We respect your inbox and only send emails when we have something valuable to share.
|
|
146
146
|
</p>
|
|
147
147
|
<div style="margin: 32px 0; text-align: center;">
|
|
148
|
-
<a href="
|
|
148
|
+
<a href="/" style="${emailStyles.button}">Visit SaaSify</a>
|
|
149
149
|
</div>
|
|
150
150
|
<p style="${emailStyles.paragraphSmall}">
|
|
151
151
|
If you didn't subscribe to this newsletter, you can safely ignore this email or
|
|
152
|
-
<a href="${unsubscribeUrl || "
|
|
152
|
+
<a href="${unsubscribeUrl || "/unsubscribe"}" style="${emailStyles.link}">unsubscribe here</a>.
|
|
153
153
|
</p>
|
|
154
154
|
</div>
|
|
155
155
|
|
|
@@ -158,14 +158,14 @@ function renderNewsletterConfirmationEmail(unsubscribeUrl?: string): string {
|
|
|
158
158
|
|
|
159
159
|
<!-- Footer -->
|
|
160
160
|
<div style="${emailStyles.footer}">
|
|
161
|
-
<p style="${emailStyles.footerText}">
|
|
161
|
+
<p style="${emailStyles.footerText}">SaaSify - The modern platform for growing teams</p>
|
|
162
162
|
<p style="${emailStyles.footerText}">
|
|
163
|
-
<a href="
|
|
163
|
+
<a href="/" style="${emailStyles.link}">Visit our website</a>
|
|
164
164
|
<span style="color: #999999;"> • </span>
|
|
165
|
-
<a href="
|
|
165
|
+
<a href="/support" style="${emailStyles.link}">Support</a>
|
|
166
166
|
${unsubscribeUrl ? `<span style="color: #999999;"> • </span><a href="${unsubscribeUrl}" style="${emailStyles.link}">Unsubscribe</a>` : ""}
|
|
167
167
|
</p>
|
|
168
|
-
<p style="${emailStyles.footerTextSmall}">You're receiving this email because you signed up for the
|
|
168
|
+
<p style="${emailStyles.footerTextSmall}">You're receiving this email because you signed up for the SaaSify newsletter.</p>
|
|
169
169
|
<p style="${emailStyles.footerAddress}">${COMPANY_ADDRESS}</p>
|
|
170
170
|
</div>
|
|
171
171
|
</div>
|
|
@@ -193,8 +193,8 @@ export async function POST(request: Request) {
|
|
|
193
193
|
|
|
194
194
|
const apiKey = process.env.RESEND_API_KEY
|
|
195
195
|
const audienceId = process.env.RESEND_AUDIENCE_NEWSLETTER
|
|
196
|
-
// Marketing emails
|
|
197
|
-
const fromEmail = "
|
|
196
|
+
// Marketing emails sender - update with your domain
|
|
197
|
+
const fromEmail = "SaaSify Team <hello@notifications.saasify.com>"
|
|
198
198
|
|
|
199
199
|
// In development without API key, just return success
|
|
200
200
|
if (!apiKey) {
|
|
@@ -69,23 +69,23 @@ export default async function RootLayout({ children }: { children: React.ReactNo
|
|
|
69
69
|
export const metadata: Metadata = {
|
|
70
70
|
metadataBase: new URL(getServerSideURL()),
|
|
71
71
|
title: {
|
|
72
|
-
default: "
|
|
73
|
-
template: "%s |
|
|
72
|
+
default: "SaaSify - The Modern Platform for Growing Teams",
|
|
73
|
+
template: "%s | SaaSify",
|
|
74
74
|
},
|
|
75
75
|
description:
|
|
76
|
-
"
|
|
76
|
+
"Streamline workflows, boost productivity, and scale your business with one powerful platform.",
|
|
77
77
|
keywords: [
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
78
|
+
"SaaS platform",
|
|
79
|
+
"team productivity",
|
|
80
|
+
"workflow automation",
|
|
81
|
+
"business software",
|
|
82
|
+
"collaboration tools",
|
|
83
|
+
"project management",
|
|
84
|
+
"team collaboration",
|
|
85
85
|
],
|
|
86
|
-
authors: [{ name: "
|
|
87
|
-
creator: "
|
|
88
|
-
publisher: "
|
|
86
|
+
authors: [{ name: "SaaSify", url: getServerSideURL() }],
|
|
87
|
+
creator: "SaaSify",
|
|
88
|
+
publisher: "SaaSify",
|
|
89
89
|
robots: {
|
|
90
90
|
index: true,
|
|
91
91
|
follow: true,
|
|
@@ -100,11 +100,11 @@ export const metadata: Metadata = {
|
|
|
100
100
|
openGraph: mergeOpenGraph(),
|
|
101
101
|
twitter: {
|
|
102
102
|
card: "summary_large_image",
|
|
103
|
-
creator: "@
|
|
104
|
-
site: "@
|
|
105
|
-
title: "
|
|
103
|
+
creator: "@saasify",
|
|
104
|
+
site: "@saasify",
|
|
105
|
+
title: "SaaSify - The Modern Platform for Growing Teams",
|
|
106
106
|
description:
|
|
107
|
-
"
|
|
107
|
+
"Streamline workflows, boost productivity, and scale your business with one powerful platform.",
|
|
108
108
|
},
|
|
109
109
|
verification: {
|
|
110
110
|
// Add your verification codes here when available
|
|
@@ -39,12 +39,12 @@ export function BlogPostContent({ content, headings }: BlogPostContentProps) {
|
|
|
39
39
|
<TableOfContents
|
|
40
40
|
headings={headings}
|
|
41
41
|
signUpCta={{
|
|
42
|
-
title: "Experience
|
|
43
|
-
description: "Start
|
|
44
|
-
buttonText: "
|
|
45
|
-
buttonLink: "
|
|
42
|
+
title: "Experience SaaSify",
|
|
43
|
+
description: "Start boosting your team's productivity today",
|
|
44
|
+
buttonText: "Start free trial",
|
|
45
|
+
buttonLink: "/pricing",
|
|
46
46
|
imageSrc: "/media/hero-dashboard-500x500.webp",
|
|
47
|
-
imageAlt: "
|
|
47
|
+
imageAlt: "SaaSify dashboard feature",
|
|
48
48
|
}}
|
|
49
49
|
/>
|
|
50
50
|
</div>
|
|
@@ -42,8 +42,8 @@ export default async function Page() {
|
|
|
42
42
|
|
|
43
43
|
export function generateMetadata(): Metadata {
|
|
44
44
|
return {
|
|
45
|
-
title: "Blog —
|
|
45
|
+
title: "Blog — SaaSify Resources & Guides",
|
|
46
46
|
description:
|
|
47
|
-
"
|
|
47
|
+
"Tips, strategies, and insights for growing teams. Learn how to boost productivity and scale your business with SaaSify.",
|
|
48
48
|
}
|
|
49
49
|
}
|
|
@@ -10,23 +10,23 @@ export const OrganizationSchema: React.FC = () => {
|
|
|
10
10
|
const schema = {
|
|
11
11
|
"@context": "https://schema.org",
|
|
12
12
|
"@type": "Organization",
|
|
13
|
-
name: "
|
|
14
|
-
description: "The
|
|
13
|
+
name: "SaaSify",
|
|
14
|
+
description: "The modern platform for growing teams. Streamline workflows and boost productivity.",
|
|
15
15
|
url: siteUrl,
|
|
16
16
|
logo: `${siteUrl}/logo.svg`,
|
|
17
17
|
sameAs: [
|
|
18
|
-
"https://twitter.com/
|
|
19
|
-
"https://linkedin.com/company/
|
|
20
|
-
"https://github.com/
|
|
18
|
+
"https://twitter.com/saasify",
|
|
19
|
+
"https://linkedin.com/company/saasify",
|
|
20
|
+
"https://github.com/saasify",
|
|
21
21
|
],
|
|
22
22
|
contactPoint: {
|
|
23
23
|
"@type": "ContactPoint",
|
|
24
24
|
contactType: "customer support",
|
|
25
|
-
email: "support@
|
|
25
|
+
email: "support@saasify.com",
|
|
26
26
|
},
|
|
27
27
|
founder: {
|
|
28
28
|
"@type": "Person",
|
|
29
|
-
name: "
|
|
29
|
+
name: "SaaSify Team",
|
|
30
30
|
},
|
|
31
31
|
foundingDate: "2024",
|
|
32
32
|
}
|
|
@@ -47,9 +47,9 @@ export const SoftwareApplicationSchema: React.FC = () => {
|
|
|
47
47
|
const schema = {
|
|
48
48
|
"@context": "https://schema.org",
|
|
49
49
|
"@type": "SoftwareApplication",
|
|
50
|
-
name: "
|
|
50
|
+
name: "SaaSify",
|
|
51
51
|
description:
|
|
52
|
-
"
|
|
52
|
+
"The modern platform for growing teams. Streamline workflows, boost productivity, and scale your business.",
|
|
53
53
|
applicationCategory: "BusinessApplication",
|
|
54
54
|
operatingSystem: "Web",
|
|
55
55
|
url: siteUrl,
|
|
@@ -57,7 +57,7 @@ export const SoftwareApplicationSchema: React.FC = () => {
|
|
|
57
57
|
"@type": "AggregateOffer",
|
|
58
58
|
priceCurrency: "USD",
|
|
59
59
|
lowPrice: "0",
|
|
60
|
-
highPrice: "
|
|
60
|
+
highPrice: "99",
|
|
61
61
|
offerCount: "3",
|
|
62
62
|
},
|
|
63
63
|
aggregateRating: {
|
|
@@ -68,12 +68,12 @@ export const SoftwareApplicationSchema: React.FC = () => {
|
|
|
68
68
|
worstRating: "1",
|
|
69
69
|
},
|
|
70
70
|
featureList: [
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
71
|
+
"Team collaboration tools",
|
|
72
|
+
"Workflow automation",
|
|
73
|
+
"Real-time analytics",
|
|
74
|
+
"100+ integrations",
|
|
75
|
+
"Enterprise security",
|
|
76
|
+
"Custom dashboards",
|
|
77
77
|
],
|
|
78
78
|
screenshot: `${siteUrl}/website-template-OG.webp`,
|
|
79
79
|
}
|
|
@@ -94,8 +94,8 @@ export const WebSiteSchema: React.FC = () => {
|
|
|
94
94
|
const schema = {
|
|
95
95
|
"@context": "https://schema.org",
|
|
96
96
|
"@type": "WebSite",
|
|
97
|
-
name: "
|
|
98
|
-
description: "The
|
|
97
|
+
name: "SaaSify",
|
|
98
|
+
description: "The modern platform for growing teams. Streamline workflows and boost productivity.",
|
|
99
99
|
url: siteUrl,
|
|
100
100
|
potentialAction: {
|
|
101
101
|
"@type": "SearchAction",
|
|
@@ -107,7 +107,7 @@ export const WebSiteSchema: React.FC = () => {
|
|
|
107
107
|
},
|
|
108
108
|
publisher: {
|
|
109
109
|
"@type": "Organization",
|
|
110
|
-
name: "
|
|
110
|
+
name: "SaaSify",
|
|
111
111
|
logo: {
|
|
112
112
|
"@type": "ImageObject",
|
|
113
113
|
url: `${siteUrl}/logo.svg`,
|
|
@@ -95,7 +95,7 @@ export function TableOfContents({ headings, signUpCta }: TableOfContentsProps) {
|
|
|
95
95
|
<div className="w-full aspect-square rounded-lg overflow-hidden bg-white dark:bg-[#0F1F3D] border border-[#E1E6EF] dark:border-[#0F1F3D]">
|
|
96
96
|
<Image
|
|
97
97
|
src={signUpCta.imageSrc}
|
|
98
|
-
alt={signUpCta.imageAlt || "
|
|
98
|
+
alt={signUpCta.imageAlt || "SaaSify app feature"}
|
|
99
99
|
width={200}
|
|
100
100
|
height={200}
|
|
101
101
|
className="w-full h-full object-cover"
|
|
@@ -106,7 +106,7 @@ export function TableOfContents({ headings, signUpCta }: TableOfContentsProps) {
|
|
|
106
106
|
{/* Text */}
|
|
107
107
|
<div>
|
|
108
108
|
<p className="text-sm font-semibold text-foreground">
|
|
109
|
-
{signUpCta.title || "Experience
|
|
109
|
+
{signUpCta.title || "Experience SaaSify"}
|
|
110
110
|
</p>
|
|
111
111
|
<p className="text-xs text-muted-foreground mt-1">
|
|
112
112
|
{signUpCta.description || "Start building your directory today"}
|
|
@@ -115,7 +115,7 @@ export function TableOfContents({ headings, signUpCta }: TableOfContentsProps) {
|
|
|
115
115
|
|
|
116
116
|
{/* CTA Button */}
|
|
117
117
|
<Link
|
|
118
|
-
href={signUpCta.buttonLink || "
|
|
118
|
+
href={signUpCta.buttonLink || "/pricing"}
|
|
119
119
|
className="inline-flex items-center justify-center px-4 py-2 text-sm font-medium text-white bg-[#0F1F3D] hover:bg-[#0B162C] dark:bg-[#3DA9A3] dark:hover:bg-[#3DA9A3]/90 rounded-lg transition-colors"
|
|
120
120
|
>
|
|
121
121
|
{signUpCta.buttonText || "Sign up for free"}
|