Skip to content

Commit 99f5ef3

Browse files
Merge remote-tracking branch 'origin/main' into unreal-engine-docs
2 parents 2f5691a + 5dfde0f commit 99f5ef3

File tree

164 files changed

+2995
-1147
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

164 files changed

+2995
-1147
lines changed

.changeset/dry-toes-clean.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/green-books-drop.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/hot-adults-doubt.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"thirdweb": minor
3+
---
4+
5+
New `useLinkProfile()` hook to link profiles to inapp and ecosystem accounts

.changeset/khaki-items-tease.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"thirdweb": minor
3+
---
4+
5+
Add name & address resolvers for Unstoppable Domains

.changeset/pink-starfishes-flash.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

apps/dashboard/src/@/api/team.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ export type Team = {
99
slug: string;
1010
createdAt: string;
1111
updatedAt: string;
12-
deletedAt: string | null;
13-
bannedAt: string | null;
14-
// image: string; // -> TODO
12+
deletedAt?: string;
13+
bannedAt?: string;
14+
image?: string;
1515
billingPlan: "pro" | "growth" | "free";
1616
billingStatus: "validPayment" | (string & {}); // what's the other value?
17-
// billingEmail: string;
17+
billingEmail: string;
1818
// billingExternalId: string;
1919
// billingType: "STRIPE" | ??
2020
// billingCustomerPayload: ?? | null

apps/dashboard/src/@/components/blocks/DangerSettingCard.tsx

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,12 @@ import {
1111
DialogTitle,
1212
DialogTrigger,
1313
} from "@/components/ui/dialog";
14+
import { cn } from "../../lib/utils";
1415

1516
export function DangerSettingCard(props: {
1617
title: string;
18+
className?: string;
19+
footerClassName?: string;
1720
description: string;
1821
buttonLabel: string;
1922
buttonOnClick: () => void;
@@ -22,18 +25,31 @@ export function DangerSettingCard(props: {
2225
title: string;
2326
description: string;
2427
};
28+
children?: React.ReactNode;
2529
}) {
2630
return (
27-
<div className="overflow-hidden rounded-lg border border-red-500/70">
28-
<div className="bg-muted/50 px-4 py-6 lg:px-6">
31+
<div
32+
className={cn(
33+
"overflow-hidden rounded-lg border border-red-500/70",
34+
props.className,
35+
)}
36+
>
37+
<div className="px-4 py-6 lg:px-6">
2938
<h3 className="font-semibold text-xl tracking-tight">{props.title}</h3>
3039

3140
<p className="mt-1.5 mb-4 text-foreground text-sm">
3241
{props.description}
3342
</p>
43+
44+
{props.children}
3445
</div>
3546

36-
<div className="flex justify-end border-red-500/70 border-t bg-red-100 px-4 py-4 lg:px-6 dark:bg-red-500/20">
47+
<div
48+
className={cn(
49+
"flex justify-end border-red-500/70 border-t bg-red-100 px-4 py-4 lg:px-6 dark:bg-red-500/20",
50+
props.footerClassName,
51+
)}
52+
>
3753
<Dialog>
3854
<DialogTrigger asChild>
3955
<Button
@@ -46,7 +62,10 @@ export function DangerSettingCard(props: {
4662
</Button>
4763
</DialogTrigger>
4864

49-
<DialogContent>
65+
<DialogContent
66+
className="z-[10001]"
67+
dialogOverlayClassName="z-[10000]"
68+
>
5069
<DialogHeader className="pr-10">
5170
<DialogTitle className="leading-snug">
5271
{props.confirmationDialog.title}

apps/dashboard/src/@/components/blocks/SettingsCard.tsx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,15 @@ export function SettingsCard(
1717
disabled: boolean;
1818
isPending: boolean;
1919
type?: "submit";
20+
variant?:
21+
| "ghost"
22+
| "default"
23+
| "primary"
24+
| "destructive"
25+
| "outline"
26+
| "secondary";
27+
className?: string;
28+
label?: string;
2029
};
2130
}>,
2231
) {
@@ -58,14 +67,15 @@ export function SettingsCard(
5867
{props.saveButton && !props.noPermissionText && (
5968
<Button
6069
size="sm"
61-
className="gap-2"
70+
className={cn("gap-2", props.saveButton.className)}
6271
onClick={props.saveButton.onClick}
6372
disabled={props.saveButton.disabled || props.saveButton.isPending}
64-
variant="outline"
73+
variant={props.saveButton.variant || "outline"}
6574
type={props.saveButton.type}
6675
>
6776
{props.saveButton.isPending && <Spinner className="size-3" />}
68-
{props.saveButton.isPending ? "Saving" : "Save"}
77+
{props.saveButton.label ||
78+
(props.saveButton.isPending ? "Saving" : "Save")}
6979
</Button>
7080
)}
7181
</div>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
"use client";
2+
3+
import { useDashboardRouter } from "@/lib/DashboardRouter";
4+
import type { ApiKey } from "@3rdweb-sdk/react/hooks/useApi";
5+
import { ApiKeysMenu } from "../../../../../components/settings/ApiKeys/Menu";
6+
7+
export function AccountAbstractionAPIKeysMenu(props: {
8+
apiKeys: Pick<ApiKey, "name" | "key">[];
9+
selectedAPIKey: Pick<ApiKey, "name" | "key">;
10+
}) {
11+
const router = useDashboardRouter();
12+
return (
13+
<ApiKeysMenu
14+
apiKeys={props.apiKeys}
15+
selectedKey={props.selectedAPIKey}
16+
onSelect={(key) => {
17+
router.push(`/dashboard/connect/account-abstraction/${key.key}`);
18+
}}
19+
/>
20+
);
21+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"use client";
2+
3+
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
4+
import { CircleAlertIcon } from "lucide-react";
5+
import { useActiveWalletChain } from "thirdweb/react";
6+
import { isOpChainId } from "../../../../team/[team_slug]/[project_slug]/connect/account-abstraction/isOpChain";
7+
8+
export function OpChainAlert() {
9+
const chain = useActiveWalletChain();
10+
const isOpChain = chain?.id ? isOpChainId(chain.id) : false;
11+
12+
if (!isOpChain) {
13+
return null;
14+
}
15+
16+
return (
17+
<Alert variant="info">
18+
<CircleAlertIcon className="size-4" />
19+
<AlertTitle>Using the gas credits for OP chain paymaster</AlertTitle>
20+
<AlertDescription>
21+
Credits will automatically be applied to cover gas fees for any onchain
22+
activity across thirdweb services. <br />
23+
Eligible chains: OP Mainnet, Base, Zora, Frax, Mode.
24+
</AlertDescription>
25+
</Alert>
26+
);
27+
}

0 commit comments

Comments
 (0)