From d1b2470fd3f291942698040bbaf0d501e632fc38 Mon Sep 17 00:00:00 2001 From: arsam Date: Fri, 18 Sep 2026 23:15:02 +0330 Subject: [PATCH] Import source: cshare-app/src/pages/PricingPage Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality. --- cshare-app/src/pages/PricingPage.jsx | 171 +++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 cshare-app/src/pages/PricingPage.jsx diff --git a/cshare-app/src/pages/PricingPage.jsx b/cshare-app/src/pages/PricingPage.jsx new file mode 100644 index 0000000..1173b80 --- /dev/null +++ b/cshare-app/src/pages/PricingPage.jsx @@ -0,0 +1,171 @@ +import { useNavigate } from 'react-router-dom'; +import { CheckIcon, ZapIcon, ShieldIcon, GlobeIcon } from '../components/Icons'; + +const PLANS = [ + { + name: 'Free', + price: null, + desc: 'For casual sharing. No card required.', + cta: 'Get started free', + ctaPath: '/upload', + primary: false, + features: [ + '5 uploads per month', + '100 MB max per file', + '7-day link expiry', + 'Basic view tracking', + 'Copy share link', + ], + missing: ['Custom expiry', 'Password protection', 'Analytics dashboard', 'Priority support'], + }, + { + name: 'Pro', + price: 9, + desc: 'For individuals who share files seriously.', + cta: 'Start Pro trial', + ctaPath: '/upload', + primary: true, + features: [ + 'Unlimited uploads', + '500 MB max per file', + 'Custom expiry (1h → 90 days)', + 'Full analytics dashboard', + 'Password-protected links', + 'Download tracking', + 'Priority support', + ], + missing: ['Team dashboard', 'SSO / SAML'], + }, + { + name: 'Team', + price: 24, + desc: 'For small teams that need shared oversight.', + cta: 'Talk to us', + ctaPath: '/contact', + primary: false, + features: [ + 'Everything in Pro', + 'Up to 10 seats', + 'Shared team dashboard', + 'Centralized billing', + 'Role-based permissions', + 'API access', + 'SLA + dedicated support', + ], + missing: [], + }, +]; + +export default function PricingPage() { + const navigate = useNavigate(); + + return ( +
+ {/* Header */} +
+
+
+
+ // + Pricing +
+

Simple, honest pricing.

+

+ No per-file fees, no storage surprises. Pay for what you need, cancel any time. +

+
+
+ + {/* Plan cards */} +
+
+ {PLANS.map((plan) => ( +
+ {plan.primary && ( + <> +
+
+ Most popular +
+ + )} + +
+
+ {plan.name} +
+
+ {plan.price ? ( + <> + + ${plan.price} + + /mo + + ) : ( + + Free + + )} +
+

{plan.desc}

+
+ + + +
+ {plan.features.map((f) => ( +
+ + {f} +
+ ))} + {plan.missing.map((f) => ( +
+
+ {f} +
+ ))} +
+
+ ))} +
+ + {/* FAQ strip */} +
+ {[ + { icon: , q: 'Can I upgrade or downgrade?', a: 'Yes, any time. Changes take effect immediately and are prorated to the day.' }, + { icon: , q: 'What happens when a free link expires?', a: 'The file and link are permanently deleted from our servers. No recovery.' }, + { icon: , q: 'Do recipients need an account?', a: 'Never. Anyone with the link can download — no sign-up wall on their end.' }, + ].map(({ icon, q, a }) => ( +
+
{icon}
+
{q}
+

{a}

+
+ ))} +
+
+
+ ); +}