diff --git a/website/.firebaserc b/website/.firebaserc
index 53d576ea4..a07c651b3 100644
--- a/website/.firebaserc
+++ b/website/.firebaserc
@@ -1,5 +1,5 @@
{
"projects": {
- "default": "firecms-demo-27150"
+ "default": "firecms-backend"
}
}
diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js
index 7584d8e56..ec460753a 100644
--- a/website/docusaurus.config.js
+++ b/website/docusaurus.config.js
@@ -74,11 +74,6 @@ module.exports = {
],
position: "left"
},
- {
- to: "enterprise",
- label: "Enterprise",
- position: "left"
- },
{
to: "pricing",
label: "Pricing",
@@ -110,18 +105,18 @@ module.exports = {
{
to: "https://demo.firecms.co",
label: "Demo",
- // className: "btn shadow-none mr-2 px-6 py-2 uppercase",
- className: "btn mr-3 px-6 py-2 text-white uppercase bg-primary hover:text-white hover:bg-blue-700",
+ className: "btn shadow-none mr-2 px-6 py-2 uppercase",
+ // className: "btn mr-3 px-6 py-2 text-white uppercase bg-primary hover:text-white hover:bg-blue-700",
"aria-label": "Open the demo project",
position: "right"
},
- // {
- // to: "https://app.firecms.co",
- // label: "Sign in",
- // className: "btn mr-3 px-6 py-2 text-white uppercase bg-primary hover:text-white hover:bg-blue-700",
- // "aria-label": "Go to FireCMS Cloud",
- // position: "right"
- // },
+ {
+ to: "https://app.firecms.co",
+ label: "Sign in",
+ className: "btn mr-3 px-6 py-2 text-white uppercase bg-primary hover:text-white hover:bg-blue-700",
+ "aria-label": "Go to FireCMS Cloud",
+ position: "right"
+ },
]
},
footer: {
@@ -140,6 +135,11 @@ module.exports = {
// Label of the section of these links
title: "Links",
items: [
+ {
+ to: "enterprise",
+ label: "Enterprise",
+ position: "left"
+ },
{
label: "Demo",
to: "https://demo.firecms.co"
diff --git a/website/firebase.json b/website/firebase.json
index b25eadc95..3546ef1c7 100644
--- a/website/firebase.json
+++ b/website/firebase.json
@@ -1,7 +1,7 @@
{
"hosting": {
"public": "build",
- "site": "firecms-landing",
+ "site": "firecms-landing-2",
"trailingSlash": false,
"ignore": [
"firebase.json",
diff --git a/website/src/pages/enterprise.tsx b/website/src/pages/enterprise.tsx
index 727630e30..85472d546 100644
--- a/website/src/pages/enterprise.tsx
+++ b/website/src/pages/enterprise.tsx
@@ -6,6 +6,8 @@ import { EnterpriseFeatures } from "../partials/enterprise/EnterpriseFeatures";
import {
EnterpriseArchitectures
} from "../partials/enterprise/EnterpriseArchitectures";
+import { CTAButtonMixin, CTAOutlinedButtonWhiteMixin } from "../partials/utils";
+import { Panel } from "../partials/general/Panel";
function Enterprise() {
return (
@@ -17,8 +19,17 @@ function Enterprise() {
- {/**/}
-
+
+
+ Happy to help you build your next product
+
+
+ Get in touch
+
+
diff --git a/website/src/pages/index.tsx b/website/src/pages/index.tsx
index d7199a0c8..b769ca3a8 100644
--- a/website/src/pages/index.tsx
+++ b/website/src/pages/index.tsx
@@ -12,6 +12,7 @@ import FirebaseIntro from "../partials/home/FirebaseIntro";
import { Companies } from "../partials/home/Companies";
import FeaturesTeaser from "../partials/home/FeaturesTeaser";
import EnterpriseTeaser from "../partials/home/EnterpriseTeaser";
+import { FireCMSCloudIntro } from "../partials/home/FireCMSCloudIntro";
function Home() {
const context = useDocusaurusContext();
@@ -35,7 +36,7 @@ function Home() {
{/**/}
- {/**/}
+
diff --git a/website/src/pages/pricing.tsx b/website/src/pages/pricing.tsx
index 3670e9c83..6462da6ea 100644
--- a/website/src/pages/pricing.tsx
+++ b/website/src/pages/pricing.tsx
@@ -1,12 +1,9 @@
import React from "react";
import Layout from "@theme/Layout";
-
-import Features from "../partials/features/Features";
import { Hero } from "../partials/general/Hero";
-import { DeveloperFeatures } from "../partials/features/DeveloperFeatures";
import { VersionsComparison } from "../partials/pricing/VersionsComparison";
-import { PricingIntro } from "../partials/pricing/PricingIntro";
+import { SelfHosted } from "../partials/pricing/SelfHosted";
import { FireCMSCloudVersions } from "../partials/pricing/FireCMSCloudVersions";
function FeaturesPage() {
@@ -23,7 +20,10 @@ function FeaturesPage() {
>}
subtitle={
<>
-
Experience the power of our CMS platform with a free, self-hosted option or upgrade to FireCMS Cloud for a premium, full-service solution.
+ Experience the power of our CMS platform with a
+ free, self-hosted option or upgrade to FireCMS
+ Cloud for a premium, full-service solution.
+
>}
// cta={
-
+
diff --git a/website/src/partials/features/DeveloperFeatures.tsx b/website/src/partials/features/DeveloperFeatures.tsx
index 292073142..59e3bb607 100644
--- a/website/src/partials/features/DeveloperFeatures.tsx
+++ b/website/src/partials/features/DeveloperFeatures.tsx
@@ -36,7 +36,7 @@ export function DeveloperFeatures() {
const isDarkTheme = colorMode === "dark";
return (
-
+
For developers
diff --git a/website/src/partials/general/EnterpriseTeaser.tsx b/website/src/partials/general/EnterpriseTeaser.tsx
new file mode 100644
index 000000000..7fd65fe01
--- /dev/null
+++ b/website/src/partials/general/EnterpriseTeaser.tsx
@@ -0,0 +1,40 @@
+import React from "react";
+
+import useBaseUrl from "@docusaurus/useBaseUrl";
+
+export function EnterpriseTeaser() {
+ return (
+
+
+
+
+ Enterprise?
+
+
+
+
+ Learn how to get the most out of your
+ project with the help of our consulting team.
+
+
+ Get in touch
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/website/src/partials/general/Panel.tsx b/website/src/partials/general/Panel.tsx
index 39c40fefc..d518b114e 100644
--- a/website/src/partials/general/Panel.tsx
+++ b/website/src/partials/general/Panel.tsx
@@ -4,12 +4,12 @@ import { ContainerMixin } from "../utils";
export function Panel({
children,
color = "gray",
- centered = true,
+ centered = false,
includeMargin = false,
contained = false
}: {
children: React.ReactNode,
- color: "gray" | "primary" | "secondary",
+ color?: "gray" | "primary" | "secondary",
centered?: boolean,
includeMargin?: boolean,
contained?: boolean
@@ -22,9 +22,10 @@ export function Panel({
return (
+ + (includeMargin ? " my-16" : "")}>
+ + (contained ? " my-16 max-w-3xl" : " my-12")
+ + (centered ? " mx-auto flex flex-col items-center" : "")}>
{children}
diff --git a/website/src/partials/home/FeaturesPanels.tsx b/website/src/partials/home/FeaturesPanels.tsx
index 9f1dbfd82..aa188b689 100644
--- a/website/src/partials/home/FeaturesPanels.tsx
+++ b/website/src/partials/home/FeaturesPanels.tsx
@@ -99,7 +99,7 @@ function FeaturesPanels() {
Advanced editing
- Spreadsheet-like inline editing, powerful
+ Spreadsheet-like editing, powerful
forms, files storage, entity references...
diff --git a/website/src/partials/home/FireCMSCloudIntro.tsx b/website/src/partials/home/FireCMSCloudIntro.tsx
index 538e44bc5..f2500fe13 100644
--- a/website/src/partials/home/FireCMSCloudIntro.tsx
+++ b/website/src/partials/home/FireCMSCloudIntro.tsx
@@ -3,7 +3,13 @@ import React from "react"
import collectionEditorVideo
// @ts-ignore
from "@site/static/img/collection_editor_preview.mp4";
-import { ContainerMixin } from "../utils";
+import {
+ ContainerMixin,
+ CTAButtonMixin,
+ CTACaret,
+ CTAOutlinedButtonMixin, CTAOutlinedButtonWhiteMixin
+} from "../utils";
+import useBaseUrl from "@docusaurus/useBaseUrl";
export const FireCMSCloudIntro = () => {
@@ -14,18 +20,19 @@ export const FireCMSCloudIntro = () => {
className={"px-4 sm:px-6 mb-16 bg-pink-400 text-white pb-16"}>
+
- New content-schema editor
+ New No-code FireCMS
-
- FireCMS Cloud is a hosted version of FireCMS that
- allows you to create your own headless CMS in
- minutes. It includes a new content schema editor
- that allows you to create your own content models
- and collections.
-
+
+ FireCMS Cloud is a hosted version of FireCMS
+ that allows you to create your own headless CMS
+ in minutes. It includes a new content schema
+ editor that allows you to create your own
+ content models and collections.
+
If you have an existing Firebase
project, let FireCMS Cloud
set-up the collections for you based on your
@@ -36,8 +43,27 @@ export const FireCMSCloudIntro = () => {
new ones,
since it sets up a complete Google Cloud Project for
you.
+
+
+
+
+
{
)
}
-
-function validateEmail(email: string) {
- const regex = /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/;
- return regex.test(email);
-}
diff --git a/website/src/partials/pricing/FireCMSCloudVersions.tsx b/website/src/partials/pricing/FireCMSCloudVersions.tsx
index 98b67d544..c1018b4cd 100644
--- a/website/src/partials/pricing/FireCMSCloudVersions.tsx
+++ b/website/src/partials/pricing/FireCMSCloudVersions.tsx
@@ -1,6 +1,11 @@
import React from "react";
import { ThreeColumns } from "../general/ThreeColumns";
-import { CTAButtonMixin, CTACaret, CTAOutlinedButtonMixin } from "../utils";
+import {
+ ContainerMixin,
+ CTAButtonMixin,
+ CTACaret,
+ CTAOutlinedButtonMixin
+} from "../utils";
export function FireCMSCloudVersions() {
@@ -80,7 +85,7 @@ export function FireCMSCloudVersions() {
);
- return
+ return
-
- FireCMS Cloud Versions
+
+ Full no-code solution
+
+
+ FireCMS Cloud offers a complete, end-to-end
+ solution for businesses that require the highest level of
+ support and security. With dedicated hosting, advanced features, and
+ expert support, you'll have everything you need to take your project
+ to the next level.
+
+
- Self-Hosted Option: With our self-hosted option, you'll have access
- to all of our core features at no cost. Simply download and install
- on your own server, and enjoy complete control and
- customization.
-
- FireCMS Cloud: Our enterprise tier offers a complete, end-to-end
- solution for businesses that require the highest level of support
- and security. With dedicated hosting, advanced features, and expert
- support, you'll have everything you need to take your website to the
- next level.
-
-}
diff --git a/website/src/partials/pricing/SelfHosted.tsx b/website/src/partials/pricing/SelfHosted.tsx
new file mode 100644
index 000000000..a8e77059e
--- /dev/null
+++ b/website/src/partials/pricing/SelfHosted.tsx
@@ -0,0 +1,41 @@
+import React from "react";
+import { ThreeColumns } from "../general/ThreeColumns";
+import {
+ ContainerMixin,
+ CTAButtonMixin,
+ CTACaret,
+ CTAOutlinedButtonMixin
+} from "../utils";
+import { Panel } from "../general/Panel";
+import useBaseUrl from "@docusaurus/useBaseUrl";
+
+export function SelfHosted() {
+
+ return
+
+
+ Self-hosted mode
+
+
+
+ With our self-hosted option, you'll have
+ access to all of our open-source core features at no cost.
+ Simply download and install on your own infrastructure,
+ and enjoy complete control and customization.
+
+
+
+ Self-hosted mode is perfect for developers who want to
+ build custom features.
+
+
+
+ Go to docs
+
+
+ ;
+
+}
diff --git a/website/src/partials/pricing/VersionsComparison.tsx b/website/src/partials/pricing/VersionsComparison.tsx
index 8020496ea..5f8cc1921 100644
--- a/website/src/partials/pricing/VersionsComparison.tsx
+++ b/website/src/partials/pricing/VersionsComparison.tsx
@@ -47,13 +47,7 @@ const data = [{
cloud: "Yes",
cloudPlus: "Yes",
cloudPro: "Yes"
- }, {
- feature: "Support",
- selfHosted: "Enterprise",
- cloud: "Yes",
- cloudPlus: "Yes",
- cloudPro: "Yes"
- }, {
+ }, {
feature: "Data export",
selfHosted: "Yes",
cloud: "Yes",
@@ -66,6 +60,12 @@ const data = [{
cloudPlus: "Yes",
cloudPro: "Yes"
}, {
+ feature: "Support",
+ selfHosted: "Enterprise",
+ cloud: "No",
+ cloudPlus: "Yes",
+ cloudPro: "Yes"
+ },{
feature: "Text search",
selfHosted: "Dev managed",
cloud: "No",
@@ -154,7 +154,7 @@ export function VersionsComparison() {
-
|
|
-
- Self-hosted
- |
Free
@@ -187,6 +183,10 @@ export function VersionsComparison() {
className="border-none rounded-lg text-base md:px-6 md:py-4 text-center ">
Pro
|
+
+ Self-hosted
+ |
@@ -198,9 +198,6 @@ export function VersionsComparison() {
className="bg-gray-50 mx-2 dark:bg-gray-900 border-none rounded-lg px-4 py-2 text-gray-800 dark:text-gray-300 font-bold">
{row.feature}
-
- {getFeatureComponent(row.selfHosted)}
- |
{getFeatureComponent(row.cloud)}
|
@@ -210,6 +207,9 @@ export function VersionsComparison() {
{getFeatureComponent(row.cloudPro)}
|
+
+ {getFeatureComponent(row.selfHosted)}
+ |
))
}
@@ -221,33 +221,34 @@ export function VersionsComparison() {
|
-
- More details
-
-
-
- Get started
-
- |
Get started
|
-
-
- Get started
-
- |
+ More details
+
+ {/*
*/}
+ {/* */}
+ {/* Get started*/}
+ {/* */}
+ {/* | */}
+ {/*
*/}
+ {/* */}
+ {/* Get started*/}
+ {/* */}
+ {/* | */}
diff --git a/website/src/partials/utils.tsx b/website/src/partials/utils.tsx
index c86ccf7dd..7c7d28616 100644
--- a/website/src/partials/utils.tsx
+++ b/website/src/partials/utils.tsx
@@ -1,6 +1,6 @@
import React from "react";
-export const CTAOutlinedButtonMixin = "btn px-8 py-3 md:px-12 md:py-4 border-1 border-gray-600 dark:border-gray-700 uppercase rounded border-solid dark:text-white text-gray-800 hover:text-gray-700 dark:hover:text-gray-100 hover:bg-gray-200 dark:hover:bg-gray-900 h dark:hover:border-gray-800 text-center";
+export const CTAOutlinedButtonMixin = "btn px-8 py-3 md:px-12 md:py-4 border-1 border-gray-600 dark:border-gray-700 uppercase rounded border-solid dark:text-white text-gray-800 hover:text-gray-700 dark:hover:text-gray-100 hover:bg-gray-100 dark:hover:bg-gray-900 h dark:hover:border-gray-800 text-center";
export const CTAOutlinedButtonWhiteMixin = "btn px-8 py-3 md:px-12 md:py-4 border-1 border-white uppercase rounded border-solid text-white hover:bg-gray-200 hover:border-gray-200 text-center";
export const CTAButtonMixin = "btn px-8 py-3 md:px-12 md:py-4 text-white bg-primary hover:text-white hover:bg-blue-700 hover:text-white uppercase border-solid rounded text-center";
diff --git a/website/src/theme/Footer/Layout/index.js b/website/src/theme/Footer/Layout/index.js
index 9d860b60f..b18845163 100644
--- a/website/src/theme/Footer/Layout/index.js
+++ b/website/src/theme/Footer/Layout/index.js
@@ -1,44 +1,18 @@
import React from "react";
import Layout from "@theme-original/Footer/Layout";
import { Newsletter } from "../../../partials/general/Newsletter";
+import useBaseUrl from "@docusaurus/useBaseUrl";
+import { EnterpriseTeaser } from "../../../partials/general/EnterpriseTeaser";
+import { useLocation } from "@docusaurus/router";
export default function LayoutWrapper(props) {
- return (
- <>
-
-
-
-
- Need a hand?
-
-
-
-
- Learn how to get the most out of your
- project with the help of our consulting team.
-
-
- Get in touch
-
-
-
-
-
+ const { pathname } = useLocation();
+ const includeEnterpriseTeaser = !pathname.startsWith("/enterprise");
-
-
-
-
-
+ return (
+ <>
+ {includeEnterpriseTeaser &&
}
>