feat: update signin signup pages

Signed-off-by: Adithya Krishna <adithya@documenso.com>
This commit is contained in:
Adithya Krishna
2024-02-22 22:59:36 +05:30
committed by Mythie
parent 65d762dd4b
commit b1261510d2
13 changed files with 162 additions and 36 deletions

View File

@ -43,7 +43,7 @@ export default function NotFound() {
<div className="mt-6 flex gap-x-2.5 gap-y-4 md:items-center"> <div className="mt-6 flex gap-x-2.5 gap-y-4 md:items-center">
<Button <Button
variant="ghost" variant="secondary"
className="w-32" className="w-32"
onClick={() => { onClick={() => {
void router.back(); void router.back();

View File

@ -191,42 +191,32 @@ export const Hero = ({ className, ...props }: HeroProps) => {
<Widget className="mt-12"> <Widget className="mt-12">
<strong>Documenso Supporter Pledge</strong> <strong>Documenso Supporter Pledge</strong>
<p className="w-full max-w-[70ch]"> <p className="w-full max-w-[70ch]">
Our mission is to create an open signing infrastructure that empowers the world, Our mission is to create an open signing infrastructure that empowers the world. We
enabling businesses to embrace openness, cooperation, and transparency. We believe believe openness and cooperation are the way every business should be conducted.
that signing, as a fundamental act, should embody these values. By offering an
open-source signing solution, we aim to make document signing accessible, transparent,
and trustworthy.
</p> </p>
<p className="w-full max-w-[70ch]"> <p className="w-full max-w-[70ch]">
Through our platform, called Documenso, we strive to earn your trust by allowing By creating an open source signing solution we want to bring these values to
self-hosting and providing complete visibility into its inner workings. We value businesses' most fundamental act: signing. Document Signing should be open and
inclusivity and foster an environment where diverse perspectives and contributions are transparent, as should all trust based products.
welcomed, even though we may not implement them all.
</p> </p>
<p className="w-full max-w-[70ch]"> <p className="w-full max-w-[70ch]">
At Documenso, we envision a web-enabled future for business and contracts, and we are We aim to earn this trust by enabling everyone to self-host Documenso and inspect its
committed to being the leading provider of open signing infrastructure. By combining inner workings. We openly share our source, knowledge, and progress while creating
exceptional product design with open-source principles, we aim to deliver a robust and Documenso.
well-designed application that exceeds your expectations.
</p> </p>
<p className="w-full max-w-[70ch]"> <p className="w-full max-w-[70ch]">
We understand that exceptional products are born from exceptional communities, and we Exceptional products are the results of exceptional communities and we strive to
invite you to join our open-source community. Your contributions, whether technical or create an inclusive, creative environment, open to all who choose to support our
non-technical, will help shape the future of signing. Together, we can create a better mission. We value the inputs, contributions, and perspectives of everyone in our
future for everyone. community, even though we can't apply them all.
</p> </p>
<p className="w-full max-w-[70ch]"> <p className="w-full max-w-[70ch]">
Today we invite you to join us on this journey: By signing this mission statement you We are building the next generation of trust software and community the way its meant
signal your support of Documenso's mission{' '} to be: Beautifully designed and open for all to join.
<span className="bg-primary text-black">
(in a non-legally binding, but heartfelt way)
</span>{' '}
and lock in the early supporter plan for forever, including everything we build this
year.
</p> </p>
<div className="flex h-24 items-center"> <div className="flex h-24 items-center">

View File

@ -34,7 +34,7 @@ export default function ErrorPage({ error }: ErrorProps) {
<div className="mt-6 flex gap-x-2.5 gap-y-4 md:items-center"> <div className="mt-6 flex gap-x-2.5 gap-y-4 md:items-center">
<Button <Button
variant="ghost" variant="secondary"
className="w-32" className="w-32"
onClick={() => { onClick={() => {
void router.back(); void router.back();

View File

@ -19,7 +19,7 @@ export default function NotFound() {
</p> </p>
<div className="mt-6 flex gap-x-2.5 gap-y-4 md:items-center"> <div className="mt-6 flex gap-x-2.5 gap-y-4 md:items-center">
<Button asChild className="w-32"> <Button variant="secondary" asChild className="w-32">
<Link href="/settings/teams"> <Link href="/settings/teams">
<ChevronLeft className="mr-2 h-4 w-4" /> <ChevronLeft className="mr-2 h-4 w-4" />
Go Back Go Back

View File

@ -5,13 +5,13 @@ import Image from 'next/image';
import backgroundPattern from '@documenso/assets/images/background-pattern.png'; import backgroundPattern from '@documenso/assets/images/background-pattern.png';
import { Card } from '@documenso/ui/primitives/card'; import { Card } from '@documenso/ui/primitives/card';
import { NewHeader } from '../../components/(dashboard)/layout/new/new-header'; import { NewHeader } from '../../../components/(dashboard)/layout/new/new-header';
type UnauthenticatedLayoutProps = { type CheckEmailLayoutProps = {
children: React.ReactNode; children: React.ReactNode;
}; };
export default function UnauthenticatedLayout({ children }: UnauthenticatedLayoutProps) { export default function CheckEmailLayout({ children }: CheckEmailLayoutProps) {
return ( return (
<> <>
<NewHeader className="mx-auto h-16 max-w-screen-xl px-4 md:h-20 lg:px-8" /> <NewHeader className="mx-auto h-16 max-w-screen-xl px-4 md:h-20 lg:px-8" />

View File

@ -0,0 +1,34 @@
import React from 'react';
import Image from 'next/image';
import backgroundPattern from '@documenso/assets/images/background-pattern.png';
import { Card } from '@documenso/ui/primitives/card';
import { NewHeader } from '../../../components/(dashboard)/layout/new/new-header';
type ForgotPasswordLayoutProps = {
children: React.ReactNode;
};
export default function ForgotPasswordLayout({ children }: ForgotPasswordLayoutProps) {
return (
<>
<NewHeader className="mx-auto h-16 max-w-screen-xl px-4 md:h-20 lg:px-8" />
<main className="bg-sand-100 relative flex flex-col items-center justify-center overflow-hidden px-4 py-12 md:p-12 lg:p-44">
<div className="absolute -inset-96 -z-[1] flex items-center justify-center bg-contain opacity-50">
<Image
src={backgroundPattern}
alt="background pattern"
className="dark:brightness-95 dark:contrast-[70%] dark:invert dark:sepia"
/>
</div>
<div className="relative flex w-full max-w-md items-center gap-x-24">
<Card className="px-6 py-6">
<div className="w-full">{children}</div>
</Card>
</div>
</main>
</>
);
}

View File

@ -10,7 +10,7 @@ export const metadata: Metadata = {
export default function ForgotPasswordPage() { export default function ForgotPasswordPage() {
return ( return (
<div> <div>
<h1 className="text-4xl font-semibold">Forgot your password?</h1> <h1 className="text-3xl font-semibold">Forgot your password?</h1>
<p className="text-muted-foreground mt-2 text-sm"> <p className="text-muted-foreground mt-2 text-sm">
No worries, it happens! Enter your email and we'll email you a special link to reset your No worries, it happens! Enter your email and we'll email you a special link to reset your

View File

@ -0,0 +1,34 @@
import React from 'react';
import Image from 'next/image';
import backgroundPattern from '@documenso/assets/images/background-pattern.png';
import { Card } from '@documenso/ui/primitives/card';
import { NewHeader } from '../../../components/(dashboard)/layout/new/new-header';
type ResetPasswordLayoutProps = {
children: React.ReactNode;
};
export default function ResetPasswordLayout({ children }: ResetPasswordLayoutProps) {
return (
<>
<NewHeader className="mx-auto h-16 max-w-screen-xl px-4 md:h-20 lg:px-8" />
<main className="bg-sand-100 relative flex flex-col items-center justify-center overflow-hidden px-4 py-12 md:p-12 lg:p-56">
<div className="relative flex w-full max-w-md items-center gap-x-24">
<div className="absolute -inset-96 -z-[1] flex items-center justify-center opacity-50">
<Image
src={backgroundPattern}
alt="background pattern"
className="dark:brightness-95 dark:contrast-[70%] dark:invert dark:sepia"
/>
</div>
<Card className="px-6 py-6">
<div className="w-full">{children}</div>
</Card>
</div>
</main>
</>
);
}

View File

@ -10,7 +10,7 @@ export const metadata: Metadata = {
export default function ResetPasswordPage() { export default function ResetPasswordPage() {
return ( return (
<div> <div>
<h1 className="text-4xl font-semibold">Unable to reset password</h1> <h1 className="text-3xl font-semibold">Unable to reset password</h1>
<p className="text-muted-foreground mt-2 text-sm"> <p className="text-muted-foreground mt-2 text-sm">
The token you have used to reset your password is either expired or it never existed. If you The token you have used to reset your password is either expired or it never existed. If you

View File

@ -0,0 +1,34 @@
import React from 'react';
import Image from 'next/image';
import backgroundPattern from '@documenso/assets/images/background-pattern.png';
import { Card } from '@documenso/ui/primitives/card';
import { NewHeader } from '../../../components/(dashboard)/layout/new/new-header';
type SignInLayoutProps = {
children: React.ReactNode;
};
export default function SignInLayout({ children }: SignInLayoutProps) {
return (
<>
<NewHeader className="mx-auto h-16 max-w-screen-xl px-4 md:h-20 lg:px-8" />
<main className="bg-sand-100 relative flex flex-col items-center justify-center overflow-hidden px-4 py-12 md:p-12 lg:p-[7.2rem]">
<div className="absolute -inset-96 -z-[1] flex items-center justify-center bg-contain opacity-50">
<Image
src={backgroundPattern}
alt="background pattern"
className="flex flex-col overflow-hidden dark:brightness-95 dark:contrast-[70%] dark:invert dark:sepia"
/>
</div>
<div className="relative flex w-full max-w-md items-center gap-x-24">
<Card className="px-6 py-6">
<div className="w-full">{children}</div>
</Card>
</div>
</main>
</>
);
}

View File

@ -5,13 +5,13 @@ import Image from 'next/image';
import backgroundPattern from '@documenso/assets/images/background-pattern.png'; import backgroundPattern from '@documenso/assets/images/background-pattern.png';
import { Card } from '@documenso/ui/primitives/card'; import { Card } from '@documenso/ui/primitives/card';
import { NewHeader } from '../../components/(dashboard)/layout/new/new-header'; import { NewHeader } from '../../../components/(dashboard)/layout/new/new-header';
type SignUpLayoutProps = { type TeamLayoutProps = {
children: React.ReactNode; children: React.ReactNode;
}; };
export default function SignUpLayout({ children }: SignUpLayoutProps) { export default function TeamLayout({ children }: TeamLayoutProps) {
return ( return (
<> <>
<NewHeader className="mx-auto h-16 max-w-screen-xl px-4 md:h-20 lg:px-8" /> <NewHeader className="mx-auto h-16 max-w-screen-xl px-4 md:h-20 lg:px-8" />

View File

@ -0,0 +1,34 @@
import React from 'react';
import Image from 'next/image';
import backgroundPattern from '@documenso/assets/images/background-pattern.png';
import { Card } from '@documenso/ui/primitives/card';
import { NewHeader } from '../../../components/(dashboard)/layout/new/new-header';
type VerifyEmailLayoutProps = {
children: React.ReactNode;
};
export default function VerifyEmailLayout({ children }: VerifyEmailLayoutProps) {
return (
<>
<NewHeader className="mx-auto h-16 max-w-screen-xl px-4 md:h-20 lg:px-8" />
<main className="bg-sand-100 relative flex flex-col items-center justify-center overflow-hidden px-4 py-12 md:p-12 lg:p-[11.2rem]">
<div className="absolute -inset-96 -z-[1] flex items-center justify-center bg-contain opacity-50">
<Image
src={backgroundPattern}
alt="background pattern"
className="dark:brightness-95 dark:contrast-[70%] dark:invert dark:sepia"
/>
</div>
<div className="relative flex w-full max-w-md items-center gap-x-24">
<Card className="px-6 py-6">
<div className="w-full">{children}</div>
</Card>
</div>
</main>
</>
);
}

View File

@ -46,7 +46,7 @@ export default function NotFoundPartial({ children }: NotFoundPartialProps) {
<div className="mt-6 flex gap-x-2.5 gap-y-4 md:items-center"> <div className="mt-6 flex gap-x-2.5 gap-y-4 md:items-center">
<Button <Button
variant="ghost" variant="secondary"
className="w-32" className="w-32"
onClick={() => { onClick={() => {
void router.back(); void router.back();