Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
58480a3
Update onboarding layout + welcome/splash page
TWilson023 Jun 4, 2025
36c1345
Update onboarding step UI
TWilson023 Jun 4, 2025
73287bb
Remove link step
TWilson023 Jun 4, 2025
7289538
Update domain choice page
TWilson023 Jun 4, 2025
5a72313
WIP usage step
TWilson023 Jun 5, 2025
7da0fe4
WIP usage page/form
TWilson023 Jun 5, 2025
9a5ea67
WIP plan recommendations
TWilson023 Jun 5, 2025
fb376a8
Update get-recommended-plan.ts
TWilson023 Jun 5, 2025
fadf8b0
Update plan period tabs
TWilson023 Jun 5, 2025
16207f0
Update plan cards + add recommendation UI
TWilson023 Jun 5, 2025
01b6fcd
Update get-recommended-plan.ts
TWilson023 Jun 5, 2025
3e51364
Merge branch 'main' into onboarding-updates
steven-tey Jun 23, 2025
29a3e4f
Merge branch 'main' into onboarding-updates
steven-tey Jun 24, 2025
11b872c
Merge branch 'main' into onboarding-updates
steven-tey Jun 24, 2025
0c0d73b
Merge branch 'main' into onboarding-updates
steven-tey Jun 24, 2025
bb8ace0
Merge branch 'main' into onboarding-updates
steven-tey Jun 25, 2025
612340e
Merge branch 'main' into onboarding-updates
TWilson023 Jun 25, 2025
58b9f5c
Hide partner program question
TWilson023 Jun 25, 2025
b5607cd
Update partners onboarding
TWilson023 Jun 25, 2025
ffeeddf
Merge branch 'main' into onboarding-updates
TWilson023 Jun 25, 2025
0de8c3b
Merge branch 'main' into onboarding-updates
TWilson023 Jun 25, 2025
740fe66
Update enterprise-link.tsx
TWilson023 Jun 25, 2025
961d76b
Merge branch 'onboarding-updates' of github.com:dubinc/dub into onboa…
TWilson023 Jun 25, 2025
9593d75
Update step-page.tsx
TWilson023 Jun 25, 2025
e30ed31
Update some link styles
TWilson023 Jun 25, 2025
218f151
Merge branch 'main' into onboarding-updates
steven-tey Jun 25, 2025
721fcc4
Update confirm-payouts.ts
steven-tey Jun 25, 2025
1a96580
Update default-domain-selector.tsx
steven-tey Jun 25, 2025
f5264a1
update onboarding copy
steven-tey Jun 25, 2025
90717c5
Merge branch 'main' into onboarding-updates
steven-tey Jun 25, 2025
0269b7c
Merge branch 'main' into onboarding-updates
steven-tey Jun 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ export async function confirmPayouts({

const exchangeRate = fxQuote.rates[currency].exchange_rate;

// if Stripe's FX rate is not available, use the cached rate from Redis
// if Stripe's FX rate is not available, throw an error
if (!exchangeRate || exchangeRate <= 0) {
throw new Error(
`Failed to get exchange rate from Stripe for ${currency}.`,
Expand Down
61 changes: 50 additions & 11 deletions apps/web/app/(ee)/partners.dub.co/(onboarding)/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import Toolbar from "@/ui/layout/toolbar/toolbar";
import { Grid, Wordmark } from "@dub/ui";
import { cn } from "@dub/utils";
import Link from "next/link";

export default function PartnerOnboardingLayout({
children,
Expand All @@ -8,24 +10,61 @@ export default function PartnerOnboardingLayout({
}) {
return (
<>
<div className="flex min-h-screen flex-col">
<div className="fixed left-1/2 top-0 h-full w-[1280px] -translate-x-1/2 [mask-image:radial-gradient(50%_70%_at_50%_0%,black_70%,transparent)]">
<div className="absolute inset-0 isolate overflow-hidden bg-white">
{/* Grid */}
<div
className={cn(
"absolute inset-y-0 left-1/2 w-[1200px] -translate-x-1/2",
"[mask-composite:intersect] [mask-image:linear-gradient(black,transparent_320px),linear-gradient(90deg,transparent,black_5%,black_95%,transparent)]",
)}
>
<Grid
cellSize={80}
patternOffset={[-79.25, -59]}
cellSize={60}
patternOffset={[0.75, 0]}
className="text-neutral-200"
/>
</div>
<div className="relative z-10 mt-10 flex w-full flex-col items-center justify-center px-3 text-center md:px-8">
<div className="animate-slide-up-fade relative flex w-auto flex-col items-center [--offset:10px] [animation-duration:1.3s] [animation-fill-mode:both]">
<Wordmark className="relative h-10" />
<span className="text-sm font-medium text-neutral-700">
Partner
</span>

{/* Gradient */}
{[...Array(2)].map((_, idx) => (
<div
key={idx}
className={cn(
"absolute left-1/2 top-6 size-[80px] -translate-x-1/2 -translate-y-1/2 scale-x-[1.6]",
idx === 0 ? "mix-blend-overlay" : "opacity-10",
)}
>
{[...Array(idx === 0 ? 2 : 1)].map((_, idx) => (
<div
key={idx}
className={cn(
"absolute -inset-16 mix-blend-overlay blur-[50px] saturate-[2]",
"bg-[conic-gradient(from_90deg,#F00_5deg,#EAB308_63deg,#5CFF80_115deg,#1E00FF_170deg,#855AFC_220deg,#3A8BFD_286deg,#F00_360deg)]",
)}
/>
))}
</div>
))}
</div>

<div className="relative flex min-h-screen w-full flex-col items-center justify-between">
<div className="grow basis-0">
<div className="pt-4">
<Link href="https://dub.co/home" target="_blank" className="block">
<Wordmark className="h-8" />
<div className="text-center text-sm font-semibold text-black/80">
Partners
</div>
</Link>
</div>
{children}
</div>

<div className="w-full py-16">{children}</div>

{/* Empty div to center main content */}
<div className="grow basis-0" />
</div>

<Toolbar show={["help"]} />
</>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,14 @@ export function OnboardingForm({
<form
ref={formRef}
onSubmit={handleSubmit(async (data) => await executeAsync(data))}
className="flex w-full flex-col gap-4 text-left"
className="flex w-full flex-col gap-6 text-left"
>
<label>
<span className="text-sm font-medium text-neutral-800">Full Name</span>
<input
type="text"
className={cn(
"mt-2 block w-full rounded-md read-only:bg-neutral-100 read-only:text-neutral-500 focus:outline-none sm:text-sm",
"mt-1.5 block w-full rounded-md read-only:bg-neutral-100 read-only:text-neutral-500 focus:outline-none sm:text-sm",
errors.name
? "border-red-300 pr-10 text-red-900 placeholder-red-300 focus:border-red-500 focus:ring-red-500"
: "border-neutral-300 text-neutral-900 placeholder-neutral-400 focus:border-neutral-500 focus:ring-neutral-500",
Expand All @@ -131,7 +131,7 @@ export function OnboardingForm({
<FileUpload
accept="images"
className={cn(
"mt-2 size-20 rounded-full border border-neutral-300",
"mt-1.5 size-20 rounded-full border border-neutral-300",
errors.image && "border-0 ring-2 ring-red-500",
)}
iconClassName="size-5"
Expand Down Expand Up @@ -192,7 +192,7 @@ export function OnboardingForm({
</span>
<ReactTextareaAutosize
className={cn(
"mt-2 block w-full rounded-md focus:outline-none sm:text-sm",
"mt-1.5 block w-full rounded-md focus:outline-none sm:text-sm",
errors.description
? "border-red-300 pr-10 text-red-900 placeholder-red-300 focus:border-red-500 focus:ring-red-500"
: "border-neutral-300 text-neutral-900 placeholder-neutral-400 focus:border-neutral-500 focus:ring-neutral-500",
Expand All @@ -209,7 +209,7 @@ export function OnboardingForm({
<span className="text-sm font-medium text-neutral-800">
Profile Type
</span>
<div className="mt-2">
<div className="mt-1.5">
<ToggleGroup
options={[
{
Expand Down Expand Up @@ -262,7 +262,7 @@ export function OnboardingForm({
<input
type="text"
className={cn(
"mt-2 block w-full rounded-md read-only:bg-neutral-100 read-only:text-neutral-500 focus:outline-none sm:text-sm",
"mt-1.5 block w-full rounded-md read-only:bg-neutral-100 read-only:text-neutral-500 focus:outline-none sm:text-sm",
errors.companyName
? "border-red-300 pr-10 text-red-900 placeholder-red-300 focus:border-red-500 focus:ring-red-500"
: "border-neutral-300 text-neutral-900 placeholder-neutral-400 focus:border-neutral-500 focus:ring-neutral-500",
Expand All @@ -284,7 +284,7 @@ export function OnboardingForm({
<Button
type="submit"
text="Continue"
className="mt-2"
className="mt-1.5"
loading={isPending || isSubmitting || isSubmitSuccessful}
/>
</motion.div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export function OnlinePresencePageClient({
/>
<Link
href="/onboarding/verify"
className="text-sm text-neutral-500 transition-colors hover:text-neutral-800"
className="text-sm font-medium text-neutral-800 transition-colors hover:text-neutral-950"
>
I'll complete this later
</Link>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,20 @@ import { OnlinePresencePageClient } from "./page-client";

export default function OnlinePresencePage() {
return (
<div className="relative mx-auto my-10 w-full max-w-[416px] md:mt-14">
<div className="absolute inset-0 bg-white/60 [mask-composite:intersect] [mask-image:linear-gradient(90deg,transparent,black_10%,black_90%,transparent),linear-gradient(transparent,black_10%,black_90%,transparent)]" />
<div className="relative">
<h1 className="animate-slide-up-fade text-lg font-medium [--offset:8px] [animation-delay:250ms] [animation-duration:1s] [animation-fill-mode:both]">
Your online presence
</h1>
<div className="relative mx-auto w-full max-w-[416px] text-center md:mt-4">
<h1 className="animate-slide-up-fade text-lg font-medium [--offset:8px] [animation-delay:250ms] [animation-duration:1s] [animation-fill-mode:both]">
Your online presence
</h1>

<p className="animate-slide-up-fade mt-2 text-sm text-neutral-600 [animation-delay:500ms] [animation-duration:1s] [animation-fill-mode:both]">
These improve your reputation score and rank you higher. Verification
is optional and can be done later.
</p>
<p className="animate-slide-up-fade text-content-subtle mt-1 text-sm [animation-delay:500ms] [animation-duration:1s] [animation-fill-mode:both]">
These improve your reputation score and rank you higher. Verification is
optional and can be done later.
</p>

<div className="animate-slide-up-fade mt-8 grid gap-4 [animation-delay:750ms] [animation-duration:1s] [animation-fill-mode:both]">
<Suspense fallback={<OnlinePresenceForm partner={null} />}>
<OnlinePresenceFormRSC />
</Suspense>
</div>
<div className="animate-slide-up-fade mt-8 grid gap-4 [animation-delay:750ms] [animation-duration:1s] [animation-fill-mode:both]">
<Suspense fallback={<OnlinePresenceForm partner={null} />}>
<OnlinePresenceFormRSC />
</Suspense>
</div>
</div>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,14 @@ import { OnboardingForm } from "./onboarding-form";

export default function PartnerOnboarding() {
return (
<div className="mx-auto my-10 flex w-full max-w-[480px] flex-col items-center md:mt-14">
<div className="mx-auto flex w-full max-w-[480px] flex-col items-center md:mt-4">
<h1 className="animate-slide-up-fade text-lg font-medium [--offset:8px] [animation-delay:250ms] [animation-duration:1s] [animation-fill-mode:both]">
Complete your partner profile
Create your partner profile
</h1>
<div className="animate-slide-up-fade w-full rounded-xl p-8 [--offset:10px] [animation-delay:500ms] [animation-duration:1s] [animation-fill-mode:both]">
<div className="absolute inset-0 bg-white/50 [mask-composite:intersect] [mask-image:linear-gradient(90deg,transparent,black_10%,black_90%,transparent),linear-gradient(transparent,black_10%,black_90%,transparent)]" />
<div className="relative">
<Suspense fallback={<OnboardingForm />}>
<OnboardingFormRSC />
</Suspense>
</div>
<Suspense fallback={<OnboardingForm />}>
<OnboardingFormRSC />
</Suspense>
</div>
</div>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,9 @@ import { Suspense } from "react";

export default function OnboardingVerificationPage() {
return (
<div className="relative mx-auto my-10 flex w-full max-w-[416px] flex-col items-center md:mt-14">
<div className="absolute inset-0 bg-white/60 [mask-composite:intersect] [mask-image:linear-gradient(90deg,transparent,black_10%,black_90%,transparent),linear-gradient(transparent,black_10%,black_90%,transparent)]" />
<h1 className="animate-slide-up-fade text-lg font-medium [--offset:8px] [animation-delay:250ms] [animation-duration:1s] [animation-fill-mode:both]">
Connect your bank account
<div className="relative mx-auto my-10 flex w-full max-w-[416px] flex-col items-center text-center md:mt-6">
<h1 className="animate-slide-up-fade text-content-emphasis text-lg font-medium [--offset:8px] [animation-delay:250ms] [animation-duration:1s] [animation-fill-mode:both]">
Payout information
</h1>
<div className="animate-slide-up-fade relative mt-8 w-full [--offset:10px] [animation-delay:500ms] [animation-duration:1s] [animation-fill-mode:both]">
<Suspense fallback={<PayoutSkeleton />}>
Expand Down Expand Up @@ -73,7 +72,7 @@ function PayoutProvider({ provider }: { provider: "stripe" | "paypal" }) {

<Link
href="/programs"
className="text-sm text-neutral-500 transition-colors hover:text-neutral-800"
className="text-sm font-medium text-neutral-800 transition-colors hover:text-neutral-950"
>
I'll complete this later
</Link>
Expand Down
2 changes: 0 additions & 2 deletions apps/web/app/app.dub.co/(onboarding)/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import Toolbar from "@/ui/layout/toolbar/toolbar";
import { NewBackground } from "@/ui/shared/new-background";
import { PropsWithChildren } from "react";

export default function Layout({ children }: PropsWithChildren) {
return (
<>
<NewBackground />
{children}
<Toolbar show={["help"]} />
</>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import { Globe } from "@dub/ui/icons";
import { StepPage } from "../../step-page";
import { Form } from "./form";

export default function Custom() {
return (
<StepPage
icon={Globe}
title="Connect a custom domain"
description={
<a
Expand Down
Loading