diff --git a/apps/web/app/(ee)/app.dub.co/embed/referrals/page-client.tsx b/apps/web/app/(ee)/app.dub.co/embed/referrals/page-client.tsx index 44aaa27db9a..99dce0dcaba 100644 --- a/apps/web/app/(ee)/app.dub.co/embed/referrals/page-client.tsx +++ b/apps/web/app/(ee)/app.dub.co/embed/referrals/page-client.tsx @@ -157,6 +157,9 @@ export function ReferralsEmbedPageClient({ const programEmbedData = programEmbedSchema.parse(program.embedData); + const termsHref = + (programEmbedData?.customTermsUrl || program.termsUrl) ?? undefined; + const hasResources = resources && ["logos", "colors", "files"].some( @@ -174,7 +177,7 @@ export function ReferralsEmbedPageClient({ () => [ ...(showQuickstart ? ["Quickstart"] : []), ...(activeBountiesCount > 0 ? ["Bounties"] : []), - "Earnings", + ...(!programEmbedData?.hideEarnings ? ["Earnings"] : []), ...(group.additionalLinks.length > 0 ? ["Links"] : []), ...(programEmbedData?.leaderboard?.mode === "disabled" ? [] @@ -248,9 +251,9 @@ export function ReferralsEmbedPageClient({ Rewards - {program.termsUrl && ( + {termsHref && ( @@ -261,8 +264,14 @@ export function ReferralsEmbedPageClient({
@@ -281,9 +290,18 @@ export function ReferralsEmbedPageClient({ )} -
+
- + {!programEmbedData?.hideEarnings && ( + + )}
diff --git a/apps/web/app/(ee)/app.dub.co/embed/referrals/quickstart.tsx b/apps/web/app/(ee)/app.dub.co/embed/referrals/quickstart.tsx index d722c5fb7bd..93841efa6d8 100644 --- a/apps/web/app/(ee)/app.dub.co/embed/referrals/quickstart.tsx +++ b/apps/web/app/(ee)/app.dub.co/embed/referrals/quickstart.tsx @@ -1,4 +1,5 @@ import { constructPartnerLink } from "@/lib/partners/construct-partner-link"; +import { programEmbedSchema } from "@/lib/zod/schemas/program-embed"; import { Button, Carousel, @@ -23,9 +24,10 @@ export function ReferralsEmbedQuickstart({ setSelectedTab, }: { hasResources: boolean; - setSelectedTab: (tab: "Links" | "Resources") => void; + setSelectedTab: (tab: "Links" | "Resources" | "FAQ") => void; }) { const { program, group, links, earnings } = useReferralsEmbedData(); + const programEmbedData = programEmbedSchema.parse(program.embedData); const [copied, copyToClipboard] = useCopyToClipboard(); const { isMobile } = useMediaQuery(); @@ -99,26 +101,46 @@ export function ReferralsEmbedQuickstart({ /> ), }, - { - title: "Receive earnings", - description: - "Connect payouts to get rewarded for the activity you drive, with earnings tracked automatically.", - illustration: , - cta: ( - - - } - /> -
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/commissions/commissions-table.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/commissions/commissions-table.tsx index 86132c0ba2b..ce2cd019f4c 100644 --- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/commissions/commissions-table.tsx +++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/commissions/commissions-table.tsx @@ -21,6 +21,7 @@ import SimpleDateRangePicker from "@/ui/shared/simple-date-range-picker"; import { AnimatedSizeContainer, Button, + ChartLine, EditColumnsButton, Filter, StatusBadge, @@ -28,6 +29,7 @@ import { TimestampTooltip, Tooltip, useColumnVisibility, + useMediaQuery, usePagination, useRouterStuff, useTable, @@ -40,6 +42,7 @@ import { formatDateTimeSmart, nFormatter, } from "@dub/utils"; +import Link from "next/link"; import { useRouter } from "next/navigation"; import { useMemo } from "react"; import useSWR from "swr"; @@ -435,6 +438,9 @@ export function CommissionsTable() { } function CommissionsFilters() { + const { slug } = useWorkspace(); + const { getQueryString } = useRouterStuff(); + const { isMobile } = useMediaQuery(); const { filters, activeFilters, @@ -449,7 +455,7 @@ function CommissionsFilters() { return (
-
+
- +
+ +
+ +
+
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/applications-menu-popover.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/applications-menu-popover.tsx index 6c333bc52e1..cf2fce98739 100644 --- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/applications-menu-popover.tsx +++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/applications-menu-popover.tsx @@ -7,12 +7,10 @@ import { useExportApplicationsModal } from "@/ui/modals/export-applications-moda import { ThreeDots } from "@/ui/shared/icons"; import { Button, - ChartLine, Download, IconMenu, Popover, useMediaQuery, - useRouterStuff, UserXmark, } from "@dub/ui"; import Link from "next/link"; @@ -21,7 +19,6 @@ import { useState } from "react"; export function ApplicationsMenuPopover() { const { slug: workspaceSlug } = useWorkspace(); const { program } = useProgram(); - const { getQueryString } = useRouterStuff(); const [openPopover, setOpenPopover] = useState(false); @@ -59,16 +56,6 @@ export function ApplicationsMenuPopover() { /> - setOpenPopover(false)} - className="w-full rounded-md p-2 hover:bg-neutral-100 active:bg-neutral-200" - > - } - /> -
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/page-client.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/page-client.tsx index 3a70e64d53d..6435bc10d43 100644 --- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/page-client.tsx +++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/applications/page-client.tsx @@ -22,12 +22,14 @@ import { PlatformType } from "@dub/prisma/client"; import { AnimatedSizeContainer, Button, + ChartLine, EditColumnsButton, Filter, MenuItem, Popover, Table, useColumnVisibility, + useMediaQuery, usePagination, useRouterStuff, useTable, @@ -36,6 +38,7 @@ import { Dots, UserCheck, Users, UserXmark } from "@dub/ui/icons"; import { COUNTRIES, fetcher, formatDate } from "@dub/utils"; import { Row } from "@tanstack/react-table"; import { Command } from "cmdk"; +import Link from "next/link"; import { useEffect, useMemo, useState } from "react"; import useSWR from "swr"; import { usePartnerFilters } from "../use-partner-filters"; @@ -63,9 +66,10 @@ const applicationsColumns = { }; export function ProgramPartnersApplicationsPageClient() { - const { id: workspaceId } = useWorkspace(); + const { id: workspaceId, slug } = useWorkspace(); const { queryParams, searchParams, searchParamsObj, getQueryString } = useRouterStuff(); + const { isMobile } = useMediaQuery(); const sortBy = searchParams.get("sortBy") || "createdAt"; const sortOrder = searchParams.get("sortOrder") === "asc" ? "asc" : "desc"; @@ -452,7 +456,7 @@ export function ProgramPartnersApplicationsPageClient() {
-
+
- +
+
+ +
+
+ +
+
diff --git a/apps/web/lib/zod/schemas/program-embed.ts b/apps/web/lib/zod/schemas/program-embed.ts index 2b8556aab96..583790826a0 100644 --- a/apps/web/lib/zod/schemas/program-embed.ts +++ b/apps/web/lib/zod/schemas/program-embed.ts @@ -10,5 +10,7 @@ export const programEmbedSchema = z }) .nullish(), hidePoweredByBadge: z.boolean().default(false), + hideEarnings: z.boolean().default(false), + customTermsUrl: z.httpUrl().nullish(), }) .nullish(); diff --git a/apps/web/ui/modals/application-settings-modal.tsx b/apps/web/ui/modals/application-settings-modal.tsx index c26d196d7d0..e98e24f0788 100644 --- a/apps/web/ui/modals/application-settings-modal.tsx +++ b/apps/web/ui/modals/application-settings-modal.tsx @@ -107,7 +107,7 @@ function ApplicationSettingsModal({

@@ -115,8 +115,11 @@ function ApplicationSettingsModal({

-
-
+ +