+
+
+
Single Player Mode
-
- Create a{' '}
-
- free account
- {' '}
- or view our{' '}
-
- early adopter plan
- {' '}
- for exclusive features, including the ability to collaborate with multiple signers.
-
-
-
-
-
- {uploadedFile ? (
-
-
-
-
-
- ) : (
-
- )}
+
+ Create a{' '}
+
+ free account
+ {' '}
+ or view our{' '}
+
+ early adopter plan
+ {' '}
+ for exclusive features, including the ability to collaborate with multiple signers.
+
-
-
e.preventDefault()}
- >
- setStep(SinglePlayerModeSteps[step - 1])}
+
+
+ {uploadedFile ? (
+
+
+
+
+
+ ) : (
+
+ )}
+
+
+
+
e.preventDefault()}
>
- {/* Add fields to PDF page. */}
-
- setStep(SinglePlayerModeSteps[step - 1])}
+ >
+ {/* Add fields to PDF page. */}
+
+
+
+
+ {/* Enter user details and signature. */}
+
+ field.type === 'NAME'))}
+ requireCustomText={Boolean(fields.find((field) => field.type === 'TEXT'))}
+ requireSignature={Boolean(fields.find((field) => field.type === 'SIGNATURE'))}
/>
-
-
- {/* Enter user details and signature. */}
-
- field.type === 'NAME'))}
- requireCustomText={Boolean(fields.find((field) => field.type === 'TEXT'))}
- requireSignature={Boolean(fields.find((field) => field.type === 'SIGNATURE'))}
- />
-
-
+
+
+
diff --git a/apps/marketing/src/components/(marketing)/footer.tsx b/apps/marketing/src/components/(marketing)/footer.tsx
index a687af0d3..b582dc286 100644
--- a/apps/marketing/src/components/(marketing)/footer.tsx
+++ b/apps/marketing/src/components/(marketing)/footer.tsx
@@ -1,10 +1,9 @@
-'use client';
-
import type { HTMLAttributes } from 'react';
import Image from 'next/image';
import Link from 'next/link';
+import { StatusWidget } from '@openstatus/react';
import { FaXTwitter } from 'react-icons/fa6';
import { LiaDiscord } from 'react-icons/lia';
import { LuGithub } from 'react-icons/lu';
@@ -62,6 +61,10 @@ export const Footer = ({ className, ...props }: FooterProps) => {
))}
+
+
+
+
diff --git a/apps/marketing/src/components/(marketing)/layout-header.tsx b/apps/marketing/src/components/(marketing)/layout-header.tsx
new file mode 100644
index 000000000..1f098cb84
--- /dev/null
+++ b/apps/marketing/src/components/(marketing)/layout-header.tsx
@@ -0,0 +1,65 @@
+'use client';
+
+import React, { useEffect, useState } from 'react';
+
+import Image from 'next/image';
+
+import launchWeekTwoImage from '@documenso/assets/images/background-lw-2.png';
+import { useFeatureFlags } from '@documenso/lib/client-only/providers/feature-flag';
+import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
+import { cn } from '@documenso/ui/lib/utils';
+
+import { Header } from '~/components/(marketing)/header';
+
+export function LayoutHeader() {
+ const [scrollY, setScrollY] = useState(0);
+
+ const { getFlag } = useFeatureFlags();
+
+ const showProfilesAnnouncementBar = getFlag('marketing_profiles_announcement_bar');
+
+ useEffect(() => {
+ const onScroll = () => {
+ setScrollY(window.scrollY);
+ };
+
+ window.addEventListener('scroll', onScroll);
+
+ return () => window.removeEventListener('scroll', onScroll);
+ }, []);
+
+ return (
+
5,
+ })}
+ >
+ {showProfilesAnnouncementBar && (
+
+
+
+
+
+
+ Claim your documenso public profile username now!{' '}
+
documenso.com/u/yourname
+
+
+
+ )}
+
+
+
+ );
+}
diff --git a/package-lock.json b/package-lock.json
index 8d47958aa..9a5fe02dc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -42,6 +42,7 @@
"@documenso/trpc": "*",
"@documenso/ui": "*",
"@hookform/resolvers": "^3.1.0",
+ "@openstatus/react": "^0.0.3",
"contentlayer": "^0.3.4",
"framer-motion": "^10.12.8",
"lucide-react": "^0.279.0",
@@ -4124,6 +4125,14 @@
"resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz",
"integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw=="
},
+ "node_modules/@openstatus/react": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@openstatus/react/-/react-0.0.3.tgz",
+ "integrity": "sha512-uDiegz7e3H67pG8lTT+op+6w5keTT7XpcENrREaqlWl5j53TYyO8nheOG1PeNw2/Qgd5KaGeRJJFn1crhTUSYw==",
+ "peerDependencies": {
+ "react": "^18.0.0"
+ }
+ },
"node_modules/@opentelemetry/api": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz",
diff --git a/packages/ui/primitives/theme-switcher.tsx b/packages/ui/primitives/theme-switcher.tsx
index ab7a7d2bd..cdf6c00b0 100644
--- a/packages/ui/primitives/theme-switcher.tsx
+++ b/packages/ui/primitives/theme-switcher.tsx
@@ -1,3 +1,5 @@
+'use client';
+
import { motion } from 'framer-motion';
import { Monitor, MoonStar, Sun } from 'lucide-react';
import { useTheme } from 'next-themes';