mirror of
https://github.com/formbricks/formbricks.git
synced 2026-04-13 12:02:01 -05:00
update concierge, add canonical tag
This commit is contained in:
@@ -19,7 +19,7 @@ export default function MetaInformation({
|
||||
section,
|
||||
tags,
|
||||
}: Props) {
|
||||
const pageTitle = `${title} | Open-Source Experience Management, Privacy-first`;
|
||||
const pageTitle = `${title}`;
|
||||
return (
|
||||
<Head>
|
||||
<title>{pageTitle}</title>
|
||||
@@ -27,7 +27,7 @@ export default function MetaInformation({
|
||||
<meta property="og:title" content={title} />
|
||||
<meta property="og:description" content={description} />
|
||||
<meta property="og:image" content={`https://${process.env.VERCEL_URL}/social-image.png`} />
|
||||
<meta property="og:image:alt" content="Formbricks - Open Source Experience Management, Privacy-first" />
|
||||
<meta property="og:image:alt" content="Open Source Experience Management, Privacy-first" />
|
||||
<meta property="og:image:type" content="image/png" />
|
||||
<meta property="og:image:width" content="1200" />
|
||||
<meta property="og:image:height" content="630" />
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
import HeroTitle from "@/components/shared/HeroTitle";
|
||||
import Layout from "@/components/shared/Layout";
|
||||
import Cal, { getCalApi } from "@calcom/embed-react";
|
||||
import { useEffect } from "react";
|
||||
import { CheckBadgeIcon } from "@heroicons/react/24/solid";
|
||||
import { Button } from "@formbricks/ui";
|
||||
import { useEffect } from "react";
|
||||
|
||||
const XMOffer = [
|
||||
{
|
||||
step: "1",
|
||||
header: "Kick-off call (FREE)",
|
||||
header: "Kick-off call",
|
||||
description: "Share with our seasoned PMs which areas of customer experience need improvement.",
|
||||
},
|
||||
{
|
||||
@@ -48,10 +47,10 @@ const ConciergePage = () => {
|
||||
|
||||
return (
|
||||
<Layout
|
||||
title="Community | Formbricks Open Source Forms & Surveys"
|
||||
description="You're building open source forms and surveys? So are we! Get support for anything your building - or just say hi!">
|
||||
title="Concierge | Formbricks Open Source Experience Management"
|
||||
description="We help you get started! Get the worry-free setup with our guidance.">
|
||||
<HeroTitle
|
||||
headingPt1="XM"
|
||||
headingPt1=""
|
||||
headingTeal="Concierge"
|
||||
headingPt2="Service"
|
||||
subheading="Let's set up your system for continuous user discovery together."
|
||||
@@ -69,10 +68,10 @@ const ConciergePage = () => {
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
<div className="border-b border-t border-slate-300 p-6 text-4xl font-semibold text-slate-800">
|
||||
{/* <div className="border-b border-t border-slate-300 p-6 text-4xl font-semibold text-slate-800">
|
||||
<p className="mr-2 font-light">$1.290</p>
|
||||
</div>
|
||||
<div className="p-6 text-sm text-slate-800">
|
||||
{ <div className="border-t border-slate-300 p-6 text-sm text-slate-800">
|
||||
<p>
|
||||
<CheckBadgeIcon className="mr-1 inline h-5 w-5 text-slate-800" />
|
||||
100% Risk-free: Pay after the kick-off call, if you liked it.
|
||||
@@ -81,14 +80,14 @@ const ConciergePage = () => {
|
||||
<CheckBadgeIcon className="mr-1 inline h-5 w-5 text-slate-800" />
|
||||
Money-back: If you're not happy, get a full refund.
|
||||
</p>
|
||||
</div>
|
||||
</div> */}
|
||||
<div className="px-6">
|
||||
<Button
|
||||
variant="darkCTA"
|
||||
className="w-full justify-center"
|
||||
href="https://cal.com/johannes/kick-off"
|
||||
target="_blank">
|
||||
Book free Kick-Off call
|
||||
Schedule free Kick-Off call
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,10 +2,10 @@ import { Layout } from "@/components/docs/Layout";
|
||||
import HeroAnimation from "@/components/shared/HeroAnimation.tsx";
|
||||
|
||||
export const meta = {
|
||||
title: "Formbricks – Experience Management for B2B SaaS",
|
||||
title: "Formbricks – Open Source Experience Management",
|
||||
};
|
||||
|
||||
Natively embed qualitative user research into your B2B SaaS. Leverage Best Practices for user discovery to increase Product-Market Fit.
|
||||
Natively embed qualitative user research into your app. Leverage Best Practices for user discovery to increase Product-Market Fit.
|
||||
|
||||
<HeroAnimation />
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import LayoutMdx from "@/components/shared/LayoutMdx";
|
||||
import { FAQPageJsonLd } from "next-seo";
|
||||
import Head from "next/head";
|
||||
import Image from "next/image";
|
||||
import { useRouter } from "next/router";
|
||||
import fetch from "node-fetch";
|
||||
import ReactMarkdown from "react-markdown";
|
||||
|
||||
@@ -89,8 +91,12 @@ export async function getStaticProps({ params }) {
|
||||
}
|
||||
|
||||
export default function ArticlePage({ article = {} }: ArticlePageProps) {
|
||||
const router = useRouter();
|
||||
if (!article || !article.attributes) return <div>Loading...</div>;
|
||||
|
||||
// Generate canonical URL
|
||||
const canonicalURL = `https://formbricks.com${router.asPath}`;
|
||||
|
||||
// Use next/image to render images in markdown
|
||||
const renderers = {
|
||||
img: (image) => {
|
||||
@@ -133,6 +139,9 @@ export default function ArticlePage({ article = {} }: ArticlePageProps) {
|
||||
return (
|
||||
<LayoutMdx meta={meta}>
|
||||
<>
|
||||
<Head>
|
||||
<link rel="canonical" href={canonicalURL} />
|
||||
</Head>
|
||||
<ReactMarkdown components={renderers}>{text}</ReactMarkdown>
|
||||
<FAQPageJsonLd mainEntity={faqEntities} />
|
||||
</>
|
||||
|
||||
@@ -116,7 +116,7 @@ Let’s go through it in detail:
|
||||
| Multiple Choice / Radio | ✅ | ✅ |
|
||||
| Checkbox | ✅ | ✅ |
|
||||
| Dropdown / Select | ✅ | ✅ |
|
||||
| File Upload | ✅ | ✅ |
|
||||
| File Upload | ✅ | ⚙️ |
|
||||
| Linear Scale | ✅ | ⚙️ |
|
||||
| Multiple Choice Grid | ✅ | ⚙️ |
|
||||
| Checkbox Grid | ✅ | ⚙️ |
|
||||
|
||||
Reference in New Issue
Block a user