From d6bc43c34d3340e2fe39cf4a0697884bbb2293ea Mon Sep 17 00:00:00 2001
From: Yash094 <67926590+Yash094@users.noreply.github.com>
Date: Fri, 14 Nov 2025 20:55:30 +0000
Subject: [PATCH] support form changes (#8414)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
## PR-Codex overview
This PR focuses on refactoring and enhancing various support forms in the application, including the removal of outdated components and the introduction of new fields to improve user input for support tickets.
### Detailed summary
- Deleted `payments`, `contracts`, and `AffectedAreaInput` components.
- Updated `OtherSupportForm` with a new label.
- Modified `TokensMarketplaceSupportForm` to include a new input for "Support ID in logs".
- Removed dynamic imports for `ContractSupportForm` and `PaymentsSupportForm`.
- Updated `productOptions` labels for clarity.
- Replaced `ENGINE_TYPES` and `ENGINE_PROBLEM_AREAS` with `API_SDK_OPTIONS`.
- Enhanced `EngineSupportForm` with new inputs and logic based on selected SDK.
- Introduced new components for user wallet issues and account abstraction.
- Updated `PROBLEM_AREAS` to include new components for social/email login and user wallet custom auth.
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
## Summary by CodeRabbit
* **New Features**
* Added "Agents/x402 and AI" support option and an optional "Support ID in logs" field.
* **Improvements**
* Reorganized and simplified support forms: Wallets → Working with User Wallets, Transactions → API/SDKs, Tokens/Marketplace → Creating, Bridging and swapping tokens; token input accepts address or symbol.
* Streamlined Connect and Engine flows with focused issue categories (social/email login, custom auth, account abstraction, third‑party wallets, API/SDK selection).
* **Chores**
* Removed legacy Contracts, Payments and affected-area form screens.
---
.../support/_components/SupportTicketForm.tsx | 27 +---
.../connect/AffectedAreaInput.tsx | 67 --------
.../contact-forms/connect/index.tsx | 145 ++++++++----------
.../contact-forms/contracts/index.tsx | 138 -----------------
.../contact-forms/engine/index.tsx | 76 ++++-----
.../_components/contact-forms/other/index.tsx | 1 +
.../contact-forms/payments/index.tsx | 55 -------
.../tokens-marketplace/index.tsx | 13 +-
8 files changed, 118 insertions(+), 404 deletions(-)
delete mode 100644 apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/connect/AffectedAreaInput.tsx
delete mode 100644 apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/contracts/index.tsx
delete mode 100644 apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/payments/index.tsx
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/SupportTicketForm.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/SupportTicketForm.tsx
index b623117fcad..967b2826698 100644
--- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/SupportTicketForm.tsx
+++ b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/SupportTicketForm.tsx
@@ -26,14 +26,6 @@ const EngineSupportForm = dynamic(
ssr: false,
},
);
-const ContractSupportForm = dynamic(
- () =>
- import("./contact-forms/contracts").then((mod) => mod.ContractSupportForm),
- {
- loading: () => ,
- ssr: false,
- },
-);
const AccountSupportForm = dynamic(
() => import("./contact-forms/account").then((mod) => mod.AccountSupportForm),
{
@@ -48,14 +40,6 @@ const OtherSupportForm = dynamic(
ssr: false,
},
);
-const PaymentsSupportForm = dynamic(
- () =>
- import("./contact-forms/payments").then((mod) => mod.PaymentsSupportForm),
- {
- loading: () => ,
- ssr: false,
- },
-);
const TokensMarketplaceSupportForm = dynamic(
() =>
import("./contact-forms/tokens-marketplace").then(
@@ -68,13 +52,14 @@ const TokensMarketplaceSupportForm = dynamic(
);
const productOptions = [
- { component: , label: "Wallets" },
- { component: , label: "Transactions" },
- { component: , label: "Payments" },
- { component: , label: "Contracts" },
+ { component: , label: "Working with User Wallets" },
+ {
+ component: ,
+ label: "Using API/SDK’s, errored transactions",
+ },
{
component: ,
- label: "Tokens / Marketplace",
+ label: "Creating, Bridging and swapping tokens",
},
{ component: , label: "Account" },
{ component: , label: "Other" },
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/connect/AffectedAreaInput.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/connect/AffectedAreaInput.tsx
deleted file mode 100644
index 9f0d8170098..00000000000
--- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/connect/AffectedAreaInput.tsx
+++ /dev/null
@@ -1,67 +0,0 @@
-"use client";
-
-import { useState } from "react";
-import { DescriptionInput } from "../../shared/SupportForm_DescriptionInput";
-import { SupportForm_SelectInput } from "../../shared/SupportForm_SelectInput";
-import { SupportForm_TextInput } from "../../shared/SupportForm_TextInput";
-import { UnitySupportForm } from "../../shared/SupportForm_UnityInput";
-
-const AFFECTED_AREAS = ["Dashboard", "Application"];
-
-export const AffectedAreaInput = () => {
- const [selectedAffectedArea, setSelectedAffectedArea] = useState("");
- const [selectedSDK, setSelectedSDK] = useState("");
- const [description, setDescription] = useState("");
- const [sdkDescription, setSdkDescription] = useState("");
-
- return (
- <>
-
- {selectedAffectedArea &&
- (selectedAffectedArea === "Application" ? (
- <>
-
- {selectedSDK && (
- <>
- {selectedSDK === "Unity" && }
-
-
-
- >
- )}
- >
- ) : (
-
- ))}
- >
- );
-};
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/connect/index.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/connect/index.tsx
index 5bcd72eea3c..e2c69ba865c 100644
--- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/connect/index.tsx
+++ b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/connect/index.tsx
@@ -1,116 +1,91 @@
+"use client";
+
import { type ReactElement, useState } from "react";
import { DescriptionInput } from "../../shared/SupportForm_DescriptionInput";
import { SupportForm_SelectInput } from "../../shared/SupportForm_SelectInput";
import { SupportForm_TextInput } from "../../shared/SupportForm_TextInput";
-import { UnitySupportForm } from "../../shared/SupportForm_UnityInput";
-import { AffectedAreaInput } from "./AffectedAreaInput";
type ProblemAreaItem = {
label: string;
component: ReactElement;
};
-const SDKVersionInput = () => (
-
-);
+const SocialEmailLoginIssuesComponent = () => {
+ const [description, setDescription] = useState("");
+ return (
+ <>
+
+
+ >
+ );
+};
-const OSSelect = () => {
- const [selectedOS, setSelectedOS] = useState("");
+const UserWalletCustomAuthComponent = () => {
+ const [description, setDescription] = useState("");
return (
-
+ <>
+
+
+
+ >
);
};
-const DescriptionInputWrapper = () => {
+const AccountAbstractionComponent = () => {
+ const [description, setDescription] = useState("");
+ return (
+ <>
+
+
+ >
+ );
+};
+
+const ThirdPartyEOAWalletsComponent = () => {
const [description, setDescription] = useState("");
return ;
};
const PROBLEM_AREAS: ProblemAreaItem[] = [
{
- component: ,
- label: "In-app wallet login issues",
- },
- {
- component: ,
- label: "In-app wallet transaction issues",
+ component: ,
+ label: "Social/Email login issues",
},
{
- component: ,
- label: "In-app wallet Custom Auth",
+ component: ,
+ label: "User wallet with custom auth",
},
{
- component: ,
+ component: ,
label: "Account Abstraction",
},
{
- component: (
- <>
-
-
-
- >
- ),
- label: "thirdweb SDKs",
- },
- {
- component: (
- <>
-
-
-
- >
- ),
- label: "Unity SDK",
- },
- {
- component: (
- <>
-
-
-
-
-
- >
- ),
- label: ".NET SDK",
- },
- {
- component: ,
- label: "Pay",
- },
- {
- component: ,
- label: "Auth",
+ component: ,
+ label: "Third party/EOA wallets",
},
];
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/contracts/index.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/contracts/index.tsx
deleted file mode 100644
index d9413073ed0..00000000000
--- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/contracts/index.tsx
+++ /dev/null
@@ -1,138 +0,0 @@
-import { type ReactElement, useState } from "react";
-import { DescriptionInput } from "../../shared/SupportForm_DescriptionInput";
-import { SupportForm_SelectInput } from "../../shared/SupportForm_SelectInput";
-import { SupportForm_TextInput } from "../../shared/SupportForm_TextInput";
-
-type ProblemAreaItem = {
- label: string;
- component: ReactElement;
-};
-
-const NetworkInput = () => (
-
-);
-
-const ContractAddressInput = () => (
-
-);
-
-const ContractFunctionInput = () => (
-
-);
-
-const ContractTypeInput = () => (
-
-);
-
-const ContractAffectedAreaInput = () => {
- const [selectedAffectedArea, setSelectedAffectedArea] = useState("");
- return (
-
- );
-};
-
-const DescriptionInputWrapper = () => {
- const [description, setDescription] = useState("");
- return ;
-};
-
-const CONTRACT_PROBLEM_AREAS: ProblemAreaItem[] = [
- {
- component: (
- <>
-
-
-
-
- >
- ),
- label: "Deploying a contract",
- },
- {
- component: (
- <>
-
-
-
-
- >
- ),
- label: "Contract verification",
- },
- {
- component: (
- <>
-
-
-
-
-
- >
- ),
- label: "Calling a function in my contract",
- },
- {
- component: (
- <>
-
- >
- ),
- label: "Developing a custom contract",
- },
- {
- component: (
- <>
-
- >
- ),
- label: "Other",
- },
-];
-
-export function ContractSupportForm() {
- const [problemArea, setProblemArea] = useState("");
- return (
- <>
- o.label)}
- promptText="Select a problem area"
- required={true}
- value={problemArea}
- />
- {CONTRACT_PROBLEM_AREAS.find((o) => o.label === problemArea)?.component}
- >
- );
-}
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/engine/index.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/engine/index.tsx
index 4ba340c4614..beb718e0ef0 100644
--- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/engine/index.tsx
+++ b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/engine/index.tsx
@@ -2,56 +2,62 @@ import { useState } from "react";
import { DescriptionInput } from "../../shared/SupportForm_DescriptionInput";
import { SupportForm_SelectInput } from "../../shared/SupportForm_SelectInput";
import { SupportForm_TextInput } from "../../shared/SupportForm_TextInput";
+import { UnitySupportForm } from "../../shared/SupportForm_UnityInput";
-const ENGINE_TYPES = ["Cloud (V3)", "Dedicated (V2)"];
-const ENGINE_PROBLEM_AREAS = [
- "SSL Issues",
- "Transaction queueing issues",
- "401 - Unauthorized",
- "404 - Endpoint Not Found",
- "Other",
+const API_SDK_OPTIONS = [
+ "API endpoint",
+ "React/TypeScript",
+ "Unity/.NET",
+ "React Native",
];
export function EngineSupportForm() {
- const [selectedEngineType, setSelectedEngineType] = useState("");
- const [problemArea, setProblemArea] = useState("");
+ const [selectedSDK, setSelectedSDK] = useState("");
const [description, setDescription] = useState("");
return (
<>
{" "}
- {selectedEngineType && (
+ value={selectedSDK}
+ />
+ {selectedSDK && (
<>
-
-
- {problemArea && (
- <>
+ {selectedSDK === "Unity/.NET" ? (
+
+ ) : (
+ selectedSDK !== "API endpoint" && (
-
- >
+ )
+ )}
+
+ {selectedSDK === "API endpoint" && (
+
)}
+
>
)}
>
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/other/index.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/other/index.tsx
index 075b94f55a1..e0a4b474ea7 100644
--- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/other/index.tsx
+++ b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/other/index.tsx
@@ -14,6 +14,7 @@ const OTHER_PROBLEM_AREAS = [
"Bug report",
"Documentation",
"Integration help",
+ "Agents/x402 and AI",
"Other",
];
export function OtherSupportForm() {
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/payments/index.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/payments/index.tsx
deleted file mode 100644
index 052245261b1..00000000000
--- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/payments/index.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-"use client";
-
-import { useState } from "react";
-import { DescriptionInput } from "../../shared/SupportForm_DescriptionInput";
-import { SupportForm_SelectInput } from "../../shared/SupportForm_SelectInput";
-import { SupportForm_TextInput } from "../../shared/SupportForm_TextInput";
-
-const PAYMENT_AREAS = ["Dashboard", "Application"];
-
-export function PaymentsSupportForm() {
- const [area, setArea] = useState("");
- const [description, setDescription] = useState("");
-
- return (
- <>
-
- {area === "Application" && (
- <>
-
-
-
- >
- )}
- {(area === "Application" || area === "Dashboard") && (
-
- )}
- >
- );
-}
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/tokens-marketplace/index.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/tokens-marketplace/index.tsx
index 89d80267649..911b886bdfd 100644
--- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/tokens-marketplace/index.tsx
+++ b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/support/_components/contact-forms/tokens-marketplace/index.tsx
@@ -8,10 +8,10 @@ export function TokensMarketplaceSupportForm() {
return (
<>
+
>
);