Features
diff --git a/app/(lobby)/pricing/page.tsx b/app/(lobby)/pricing/page.tsx
index 4b08ffe..532ded6 100644
--- a/app/(lobby)/pricing/page.tsx
+++ b/app/(lobby)/pricing/page.tsx
@@ -1,3 +1,94 @@
+import { CheckIcon } from "lucide-react";
+
+import { siteConfig } from "@/config/site";
+import { PRICING_CARDS, PRICING_PLANS } from "@/lib/constants";
+import { cn, formatCurrency } from "@/lib/utils";
+import { Diamond } from "@/components/icons";
+import { Button } from "@/components/ui/button";
+import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
+
+export const metadata = {
+ title: "Pricing",
+};
+
export default function PricingPage() {
- return
Enter
;
+ return (
+
+
+
+ Simple, transparent pricing
+
+
+ Unlock all features including unlimited posts for your blog.
+
+
+
+
+ {PRICING_CARDS.map(
+ ({ planType, price, description, highlightFeature, features }) => {
+ const isProPlan = planType === PRICING_PLANS.proplan;
+
+ return (
+
+
+
+ {planType}
+
+ {isProPlan && }
+
+
+
+
+
+ {formatCurrency(+price, "INR")}
+
+
+ {+price > 0 && (
+ /mo
+ )}
+
+ {description}
+
+
+
+
+
+ {highlightFeature}
+
+
+ {features.map((feature) => (
+ -
+
+ {feature}
+
+ ))}
+
+
+
+ );
+ }
+ )}
+
+
+
+
+ {siteConfig.name}
+ {" "}
+ is a demo app.{" "}
+ You can test the upgrade and won't be charged.
+
+
+ );
}
diff --git a/components/icons.tsx b/components/icons.tsx
index a045388..37a9bae 100644
--- a/components/icons.tsx
+++ b/components/icons.tsx
@@ -111,3 +111,24 @@ export const X = ({ size = 24, width, height, ...props }: IconProps) => (
);
+
+export const Diamond = ({ size = 24, width, height, ...props }: IconProps) => (
+
+);
diff --git a/lib/constants.ts b/lib/constants.ts
index 2c81ddc..79414cd 100644
--- a/lib/constants.ts
+++ b/lib/constants.ts
@@ -1,15 +1,9 @@
-import client1 from "@/public/placeholders/client-1.png";
-import client2 from "@/public/placeholders/client-2.png";
-import client3 from "@/public/placeholders/client-3.png";
-import client4 from "@/public/placeholders/client-4.png";
-import client5 from "@/public/placeholders/client-5.png";
-
export const CLIENTS = [
- { alt: "client1", logo: client1 },
- { alt: "client2", logo: client2 },
- { alt: "client3", logo: client3 },
- { alt: "client4", logo: client4 },
- { alt: "client5", logo: client5 },
+ { alt: "client1", logo: "/placeholders/client-1.png" },
+ { alt: "client2", logo: "/placeholders/client-2.png" },
+ { alt: "client3", logo: "/placeholders/client-3.png" },
+ { alt: "client4", logo: "/placeholders/client-4.png" },
+ { alt: "client5", logo: "/placeholders/client-5.png" },
];
export const USERS = [
@@ -109,3 +103,34 @@ export const USERS = [
"Cypress is a fantastic tool that has revolutionized our workflow. Our productivity and collaboration have reached new heights.",
},
];
+
+export const PRICING_CARDS = [
+ {
+ planType: "Free Plan",
+ price: "0",
+ description: "Limited block trials for teams",
+ highlightFeature: "",
+ features: [
+ "Unlimited blocks for teams",
+ "Unlimited file uploads",
+ "30 day page history",
+ "Invite 2 guests",
+ ],
+ },
+ {
+ planType: "Pro Plan",
+ price: "499",
+ description: "Billed annually. $17 billed monthly",
+ highlightFeature: "Everything in free +",
+ features: [
+ "Unlimited blocks for teams",
+ "Unlimited file uploads",
+ "1 year day page history",
+ "Invite 10 guests",
+ ],
+ },
+];
+
+export const PRICING_PLANS = { proplan: "Pro Plan", freeplan: "Free Plan" };
+
+export const MAX_FOLDERS_FREE_PLAN = 3;
diff --git a/lib/utils.ts b/lib/utils.ts
index 2d2ae7f..f547ba3 100644
--- a/lib/utils.ts
+++ b/lib/utils.ts
@@ -81,3 +81,18 @@ export async function getGitHubStars(): Promise
{
return null;
}
}
+
+/**
+ * Formats the given amount to the given currency
+ * @param amount The amount to format
+ * @param currency The currency to format the amount to
+ * @returns The formatted amount
+ */
+export const formatCurrency = (amount: number, currency: string | null) => {
+ return amount.toLocaleString("en-US", {
+ style: "currency",
+ currency: currency ?? "USD",
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 0,
+ });
+};
diff --git a/tailwind.config.ts b/tailwind.config.ts
index fd84739..0bc8372 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -52,64 +52,6 @@ const config = {
DEFAULT: "hsl(var(--card))",
foreground: "hsl(var(--card-foreground))",
},
- "washed-blue-50": "#f0f3ff",
- "washed-blue-100": "#d0daff",
- "washed-blue-200": "#bac9ff",
- "washed-blue-300": "#9ab0ff",
- "washed-blue-400": "#86a1ff",
- "washed-blue-500": "#6889ff",
- "washed-blue-600": "#5f7de8",
- "washed-blue-700": "#4a61b5",
- "washed-blue-800": "#394b8c",
- "washed-blue-900": "#2c3a6b",
- "washed-purple-50": "#f8f7ff",
- "washed-purple-100": "#e8e7ff",
- "washed-purple-200": "#dddcff",
- "washed-purple-300": "#cecbff",
- "washed-purple-400": "#c5c1ff",
- "washed-purple-500": "#b6b2ff",
- "washed-purple-600": "#a6a2e8",
- "washed-purple-700": "#817eb5",
- "washed-purple-800": "#64628c",
- "washed-purple-900": "#4c4b6b",
- "primary-blue-50": "#e6f0ff",
- "primary-blue-100": "#b2d1ff",
- "primary-blue-200": "#8cbaff",
- "primary-blue-300": "#589bff",
- "primary-blue-400": "#3787ff",
- "primary-blue-500": "#0569ff",
- "primary-blue-600": "#0560e8",
- "primary-blue-700": "#044bb5",
- "primary-blue-800": "#033a8c",
- "primary-blue-900": "#022c6b",
- "primary-purple-50": "#f1e6ff",
- "primary-purple-100": "#d3b0ff",
- "primary-purple-200": "#bd8aff",
- "primary-purple-300": "#9f54ff",
- "primary-purple-400": "#8d33ff",
- "primary-purple-500": "#7000ff",
- "primary-purple-600": "#6600e8",
- "primary-purple-700": "#5000b5",
- "primary-purple-800": "#3e008c",
- "primary-purple-900": "#2f006b",
- "Neutrals/neutrals-1": "#ffffff",
- "Neutrals/neutrals-2": "#fcfcfd",
- "Neutrals/neutrals-3": "#f5f5f6",
- "Neutrals/neutrals-4": "#f0f0f1",
- "Neutrals/neutrals-5": "#d9d9dc",
- "Neutrals/neutrals-6": "#c0bfc4",
- "Neutrals/neutrals-7": "#8d8c95",
- "Neutrals/neutrals-8": "#5b5966",
- "Neutrals/neutrals-9": "#464553",
- "Neutrals/neutrals-10": "#282637",
- "Neutrals/neutrals-11": "#201f30",
- "Neutrals/neutrals-12": "#161427",
- "Neutrals/neutrals-13": "#020014",
- "brand-washedPurple": "#b5b2ff",
- "brand-washedBlue": "#6889ff",
- "brand-primaryBlue": "#0469ff",
- "brand-primaryPurple": "#7000ff",
- "brand-dark": "#030014",
},
borderRadius: {
lg: `var(--radius)`,