+ Create organizations and shared workspaces, invite teammates, and control
+ exactly who can use what โ owners, admins, developers, and viewers each get
+ the right level of access. Switch between personal and team context in one
+ click; every tool follows.
+
+
+
diff --git a/apps/web/src/components/announcement-banner.tsx b/apps/web/src/components/announcement-banner.tsx
new file mode 100644
index 00000000..9ad515c2
--- /dev/null
+++ b/apps/web/src/components/announcement-banner.tsx
@@ -0,0 +1,63 @@
+"use client";
+
+import { useEffect, useState } from "react";
+import Link from "next/link";
+import { ArrowRight, X } from "lucide-react";
+
+const DISMISS_KEY = "mdt-launch-offer-dismissed";
+
+/**
+ * Slim launch-offer strip above the marketing header. Dismissible per browser
+ * (localStorage). Rendered on marketing pages only via .
+ */
+export function AnnouncementBanner() {
+ // Start hidden to avoid a flash for users who already dismissed it.
+ const [visible, setVisible] = useState(false);
+
+ useEffect(() => {
+ try {
+ if (!localStorage.getItem(DISMISS_KEY)) setVisible(true);
+ } catch {
+ setVisible(true);
+ }
+ }, []);
+
+ const dismiss = () => {
+ setVisible(false);
+ try {
+ localStorage.setItem(DISMISS_KEY, "1");
+ } catch {
+ /* ignore */
+ }
+ };
+
+ if (!visible) return null;
+
+ return (
+
+
+
+ Launch offer
+
+
+ First 250 accounts get every Pro & Team feature,
+ free. No card needed.
+
+
+ Claim yours
+
+
+
+
+ );
+}
diff --git a/apps/web/src/components/header.tsx b/apps/web/src/components/header.tsx
index 43840659..29fe063d 100644
--- a/apps/web/src/components/header.tsx
+++ b/apps/web/src/components/header.tsx
@@ -5,6 +5,7 @@ import { Github, Menu, X, ArrowRight } from "lucide-react";
import { Button } from "@/components/ui/button";
import { ModeToggle } from "./modeToggle";
import { Logo } from "./logo";
+import { AnnouncementBanner } from "./announcement-banner";
import { Magnetic } from "@/components/mdt-magnetic";
import { motion, AnimatePresence } from "framer-motion";
import { cn } from "@/lib/utils";
@@ -77,6 +78,7 @@ export function Header({ showThemeToggle = true }: HeaderProps) {
: "border-b border-transparent bg-transparent"
)}
>
+
{/* Logo */}
diff --git a/apps/web/src/components/pricing-tiers.tsx b/apps/web/src/components/pricing-tiers.tsx
index fc06e1a4..e26a4be7 100644
--- a/apps/web/src/components/pricing-tiers.tsx
+++ b/apps/web/src/components/pricing-tiers.tsx
@@ -104,6 +104,9 @@ export function PricingTiers() {
Self-host for free, forever. Upgrade to cloud when you want the convenience.
+
+ ๐ Launch offer โ every plan is free for a limited time
+
-
{big}
-
{sub}
+ {tier.monthly !== null && tier.monthly > 0 ? (
+ // Launch offer: paid tiers are free for a limited time โ show
+ // the real price struck through so the value reads instantly.
+ <>
+