-
Notifications
You must be signed in to change notification settings - Fork 619
[TOOL-4842] Dashboard navigation changes #7395
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
## Walkthrough
This change set extensively restructures the dashboard's product navigation and grouping on the project page. It introduces new sidebar navigation logic and components, renames and reorganizes product sections (such as "Engine" to "Transactions" and "In-App Wallets" to "Wallets"), updates routes and labels across the app, and removes or replaces legacy/obsolete Nebula-related code.
## Changes
| File(s) / Path(s) | Change Summary |
|--------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| .../redirects.js | Consolidated and expanded project route redirects for legacy paths; introduced `projectPageRedirects` array. |
| .../Sidebar.tsx, .../SidebarLayout.tsx, .../NavLink.tsx | Sidebar link type and navigation updated to support custom active logic. |
| .../blocks/UpsellBannerCard.tsx, .../UpsellBannerCard.stories.tsx, .../FreePlanUpsellBannerUI.tsx | Removed tracking props from UpsellBannerCard and related stories/usages. |
| .../analytics/report.ts, .../primary-dashboard-button.tsx, .../ContractOverviewPage.tsx | Changed references and UI text from "asset page" to "token page". |
| .../contracts/DeployedContractsPageHeader.tsx, .../DeployedContractsPage.tsx | Refactored contracts page layout, added description, adjusted spacing and header. |
| .../account-abstraction/*, .../engine/cloud/vault/components/key-management.tsx | Refactored account abstraction and vault components, updated import paths, and removed/added key management UI. |
| .../nebula/* (multiple files) | **Deleted all Nebula analytics, FTUX, and layout files**; removed Nebula product from navigation and replaced with "Universal Bridge" and "Vault". |
| .../tokens/*, .../assets/* | Changed "assets" terminology to "tokens" in UI, routes, and logic; updated import paths. |
| .../transactions/*, .../engine/* | Renamed "Engine" to "Transactions" throughout navigation, layout, and related components; updated routing and UI. |
| .../vault/* | Introduced new Vault layout and key management components, updated related import paths. |
| .../wallets/* | Renamed "In-App Wallets" to "Wallets", updated all related routes, links, and UI. |
| .../webhooks/* | Refactored webhooks section: new layout, contract/universal bridge tabs, new button/component names, and moved button positions. |
| .../components/blocks/Sidebar.tsx, .../SidebarLayout.tsx, .../ui/NavLink.tsx | Added support for custom active state logic in sidebar navigation links. |
| .../pay/PayAnalytics/PayAnalytics.tsx, .../PayEmbedFTUX.tsx, .../code-examples.tsx | Refactored Pay FTUX to accept code examples as props; extracted code example generators into a new file. |
| .../shared/FileInput.tsx, .../core-ui/batch-upload/batch-table.tsx | Updated import paths for FilePreview component to match new tokens structure. |
| .../components/contract-components/* | Updated UI text from "asset" to "token" in import and table components. |
| .../components/embedded-wallets/Users/index.tsx | Removed trackingCategory prop from InAppWalletUsersPageContent. |
| .../components/smart-wallets/AccountAbstractionAnalytics/index.tsx | Updated import paths to use absolute imports. |
| .../dashboard/StepsCard.tsx | Minor styling change: removed large font size on title. |
| .../service-utils/src/core/services.ts | Updated service titles: "In-App Wallets" → "Wallets", "Engine Cloud" → "Transactions". |
## Sequence Diagram(s)
```mermaid
sequenceDiagram
participant User
participant Sidebar
participant ProjectSidebarLayout
participant AppRouter
User->>Sidebar: Clicks navigation link
Sidebar->>ProjectSidebarLayout: Passes link info (with isActive, engineLinkType, etc.)
ProjectSidebarLayout->>AppRouter: Determines route based on engineLinkType and link
AppRouter-->>User: Navigates to new project section (e.g., /transactions, /wallets, /tokens)Assessment against linked issues
Assessment against linked issues: Out-of-scope changes
Possibly related PRs
Suggested labels
Suggested reviewers
|
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #7395 +/- ##
=======================================
Coverage 52.06% 52.06%
=======================================
Files 945 945
Lines 63565 63565
Branches 4208 4208
=======================================
Hits 33098 33098
Misses 30361 30361
Partials 106 106
🚀 New features to boost your workflow:
|
size-limit report 📦
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (8)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/layout.tsx (1)
28-63: Consider updating component names for consistency.While the URL paths have been updated to use "wallets" terminology, the components
InAppWalletsHeaderandInAppWalletsFooterstill reference the old "InAppWallets" naming. Consider updating these component names to match the new simplified terminology.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/cards.tsx (1)
4-7: Consider updating analytics function names for consistency.The analytics functions still use "Asset" terminology (
reportAssetCreationStarted,reportAssetImportStarted,reportAssetImportSuccessful) which is inconsistent with the new "tokens" terminology. Consider updating these function names or their internal tracking categories.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/try-it-out.tsx (1)
31-31: Consider avoiding !important in className.Using
!text-smwith !important suggests there might be specificity issues. Consider addressing the underlying CSS specificity problem rather than using !important.- tabClassName="!text-sm" + tabClassName="text-sm"If the !important is necessary due to conflicting styles in the TabButtons component, consider updating the component's CSS instead.
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contract-webhooks/contract-webhooks-page.tsx (2)
84-88: Consider extracting CreateContractWebhookButton to improve consistency.The create webhook button appears in the empty state but not when webhooks exist. Consider adding it to the table view as well or extracting it to a shared location for consistent UX.
Consider adding the create button to the table view for consistency:
<ContractsWebhooksTable webhooks={webhooks} projectClientId={projectClientId} client={client} supportedChainIds={supportedChainIds} /> + <div className="mt-4"> + <CreateContractWebhookButton + client={client} + projectClientId={projectClientId} + supportedChainIds={supportedChainIds} + /> + </div>
22-28: Improve error handling specificity.The error handling could be more specific about which operation failed, helping users understand whether it's a webhook fetch issue or a supported chains fetch issue.
const webhooksRes = await getWebhooks(projectClientId); if (webhooksRes.error) { - errorMessage = webhooksRes.error; + errorMessage = `Failed to load webhooks: ${webhooksRes.error}`; } else if (webhooksRes.data) { webhooks = webhooksRes.data; }apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/layout.tsx (1)
22-24: Consider using the loginRedirect pattern consistently.The authentication check uses a different pattern than what's shown in the webhook component. Consider using the
loginRedirectfunction for consistency.Based on the webhook component pattern, consider:
if (!authToken) { - loginRedirect(`/team/${params.team_slug}/${params.project_slug}/contracts`); + return loginRedirect(`/team/${params.team_slug}/${params.project_slug}/contracts`); }apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/layout.tsx (2)
136-146: Consider adding error handling for getEngineInstances call.The
getEngineInstancescall could fail, but the error case isn't explicitly handled. Consider adding error handling to ensure the component doesn't break.if (!engineCloudToken) { - const engineInstances = await getEngineInstances({ - authToken: params.authToken, - teamIdOrSlug: params.project.teamId, - }); - - // if we have any legacy engine instances, link to the legacy engine page - if (engineInstances.data && engineInstances.data.length > 0) { - engineLinkType = "dedicated"; - } + try { + const engineInstances = await getEngineInstances({ + authToken: params.authToken, + teamIdOrSlug: params.project.teamId, + }); + + // if we have any legacy engine instances, link to the legacy engine page + if (engineInstances.data && engineInstances.data.length > 0) { + engineLinkType = "dedicated"; + } + } catch (error) { + console.warn("Failed to fetch engine instances, defaulting to cloud", error); + // engineLinkType remains "cloud" + } }
63-66: Verify performance impact of additional async call.The
getEngineLinkTypecall adds another async operation to the layout loading. Consider if this data could be cached or computed at build time for better performance.Consider caching the engine link type result or computing it less frequently to improve page load performance, especially if this layout is rendered frequently.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (89)
apps/dashboard/redirects.js(2 hunks)apps/dashboard/src/@/analytics/report.ts(3 hunks)apps/dashboard/src/@/components/blocks/Sidebar.tsx(1 hunks)apps/dashboard/src/@/components/blocks/SidebarLayout.tsx(1 hunks)apps/dashboard/src/@/components/blocks/UpsellBannerCard.stories.tsx(0 hunks)apps/dashboard/src/@/components/blocks/UpsellBannerCard.tsx(0 hunks)apps/dashboard/src/@/components/ui/NavLink.tsx(1 hunks)apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/_layout/primary-dashboard-button.tsx(1 hunks)apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/overview/ContractOverviewPage.tsx(1 hunks)apps/dashboard/src/app/(app)/account/contracts/DeployedContractsPageHeader.tsx(2 hunks)apps/dashboard/src/app/(app)/account/contracts/_components/DeployedContractsPage.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/(team)/_components/FreePlanUpsellBannerUI.tsx(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/AAFooterSection.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/AccountAbstractionPage.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/factories/page.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/settings/page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectFTUX/ProjectFTUX.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectSidebarLayout.tsx(3 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/in-app-wallets/_constants.ts(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/layout.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/webhooks/page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/vault/components/key-management.tsx(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(general)/layout.tsx(3 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(instance)/[engineId]/overview/components/engine-overview.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/page.tsx(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/layout.tsx(5 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/components/analytics/fetch-nebula-analytics.tsx(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/components/analytics/nebula-analytics-filter.tsx(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/components/analytics/nebula-analytics-page.tsx(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/components/analytics/nebula-analytics-ui.stories.tsx(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/components/analytics/nebula-analytics-ui.tsx(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/components/analytics/utils.ts(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/layout.tsx(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/nebula-ftux.tsx(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/page.tsx(0 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/ProjectGeneralSettingsPage.tsx(3 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/cards.tsx(3 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/PageHeader.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/create-nft-page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/sales/sales-settings.tsx(3 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/create-token-page-impl.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/page.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/page.tsx(3 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/ftux.client.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/send-test-tx.client.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-chart/tx-chart-ui.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table-ui.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/utils.ts(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/layout.tsx(4 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/analytics.ts(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/create-server-wallet.client.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/try-it-out.tsx(5 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/wallet-table-ui.client.tsx(3 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/layout.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/page.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/layout.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/page.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/settings/page.tsx(3 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/create-vault-account.client.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/key-management.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/list-access-tokens.client.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/rotate-admin-key.client.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/layout.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/_components/footer.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/_components/header.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/analytics/page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/layout.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/settings/page.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/page.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/CreateWebhookModal.tsx(3 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/WebhooksTable.tsx(3 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contract-webhooks/contract-webhooks-page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/page.tsx(2 hunks)apps/dashboard/src/components/contract-components/import-contract/modal.tsx(1 hunks)apps/dashboard/src/components/contract-components/tables/contract-table.tsx(2 hunks)apps/dashboard/src/components/dashboard/StepsCard.tsx(1 hunks)apps/dashboard/src/components/embedded-wallets/Users/index.tsx(0 hunks)apps/dashboard/src/components/shared/FileInput.tsx(1 hunks)apps/dashboard/src/components/smart-wallets/AccountAbstractionAnalytics/index.tsx(1 hunks)apps/dashboard/src/core-ui/batch-upload/batch-table.tsx(1 hunks)apps/dashboard/src/lib/time.ts(0 hunks)packages/service-utils/src/core/services.ts(2 hunks)
💤 Files with no reviewable changes (17)
- apps/dashboard/src/@/components/blocks/UpsellBannerCard.tsx
- apps/dashboard/src/app/(app)/team/[team_slug]/(team)/_components/FreePlanUpsellBannerUI.tsx
- apps/dashboard/src/@/components/blocks/UpsellBannerCard.stories.tsx
- apps/dashboard/src/components/embedded-wallets/Users/index.tsx
- apps/dashboard/src/lib/time.ts
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/in-app-wallets/_constants.ts
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/layout.tsx
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/components/analytics/utils.ts
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/components/analytics/nebula-analytics-filter.tsx
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/vault/components/key-management.tsx
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/page.tsx
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/page.tsx
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/components/analytics/nebula-analytics-ui.stories.tsx
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/nebula-ftux.tsx
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/components/analytics/nebula-analytics-ui.tsx
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/components/analytics/nebula-analytics-page.tsx
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/nebula/components/analytics/fetch-nebula-analytics.tsx
🧰 Additional context used
🧠 Learnings (1)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/webhooks/page.tsx (1)
Learnt from: jnsdls
PR: thirdweb-dev/js#6929
File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/insight/webhooks/page.tsx:14-19
Timestamp: 2025-05-21T05:17:31.283Z
Learning: In Next.js server components, the `params` object can sometimes be a Promise that needs to be awaited, despite type annotations suggesting otherwise. In apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/insight/webhooks/page.tsx, it's necessary to await the params object before accessing its properties.
🧬 Code Graph Analysis (11)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/try-it-out.tsx (1)
apps/dashboard/src/@/components/ui/tabs.tsx (1)
TabButtons(85-159)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/ftux.client.tsx (1)
apps/dashboard/src/components/dashboard/StepsCard.tsx (1)
StepsCard(22-108)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/page.tsx (1)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contract-webhooks/contract-webhooks-page.tsx (1)
ContractsWebhooksPageContent(11-93)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(general)/layout.tsx (1)
apps/dashboard/src/@/components/ui/tabs.tsx (1)
TabPathLinks(213-244)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/layout.tsx (1)
apps/dashboard/src/tw-components/link.tsx (1)
Link(33-56)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/webhooks/page.tsx (3)
apps/dashboard/src/@/api/team.ts (1)
getTeamBySlug(13-32)apps/dashboard/src/@/api/projects.ts (1)
getProject(29-48)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contract-webhooks/contract-webhooks-page.tsx (1)
ContractsWebhooksPageContent(11-93)
apps/dashboard/src/app/(app)/account/contracts/_components/DeployedContractsPage.tsx (1)
apps/dashboard/src/app/(app)/account/contracts/_components/DeployViaCLIOrImportCard.tsx (1)
DeployViaCLIOrImportCard(11-68)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectFTUX/ProjectFTUX.tsx (1)
apps/portal/src/icons/products/InsightIcon.tsx (1)
InsightIcon(1-21)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/layout.tsx (6)
apps/dashboard/src/app/(app)/api/lib/getAuthToken.ts (1)
getAuthToken(6-14)apps/dashboard/src/@/api/team.ts (1)
getTeamBySlug(13-32)apps/dashboard/src/@/api/projects.ts (1)
getProject(29-48)apps/dashboard/src/@/constants/thirdweb-client.client.ts (1)
getClientThirdwebClient(3-11)apps/dashboard/src/app/(app)/account/contracts/DeployedContractsPageHeader.tsx (1)
DeployedContractsPageHeader(11-62)apps/dashboard/src/@/components/ui/tabs.tsx (1)
TabPathLinks(213-244)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/layout.tsx (3)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectSidebarLayout.tsx (1)
ProjectSidebarLayout(20-123)apps/dashboard/src/@/api/projects.ts (1)
Project(6-6)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/_utils/getEngineInstances.ts (1)
getEngineInstances(4-33)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectSidebarLayout.tsx (1)
apps/portal/src/icons/products/InsightIcon.tsx (1)
InsightIcon(1-21)
⏰ Context from checks skipped due to timeout of 90000ms (7)
- GitHub Check: Unit Tests
- GitHub Check: E2E Tests (pnpm, webpack)
- GitHub Check: E2E Tests (pnpm, esbuild)
- GitHub Check: E2E Tests (pnpm, vite)
- GitHub Check: Build Packages
- GitHub Check: Size
- GitHub Check: Analyze (javascript)
🔇 Additional comments (123)
packages/service-utils/src/core/services.ts (2)
42-42: Updated ‘embeddedWallets’ title to ‘Wallets’ aligns with navigation rename.This change correctly reflects the new UI label for in-app wallets across the dashboard.
79-79: Updated ‘engineCloud’ title to ‘Transactions’ to match new terminology.This aligns the core service titles with the updated sidebar and routing labels.
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/_components/footer.tsx (1)
1-1: Import Path Adjustment ApprovedThe
FooterLinksSectionimport path has been correctly updated to the new relative location. This matches the restructuring in related modules.apps/dashboard/src/components/dashboard/StepsCard.tsx (1)
40-42: Verify responsive heading sizeThe removal of
lg:text-2xlchanges the heading size on large screens. Please confirm with the design team that this update matches the intended typography.apps/dashboard/src/components/smart-wallets/AccountAbstractionAnalytics/index.tsx (1)
2-3: Standardize imports to the@appaliasThe
SponsoredTransactionsTableandsearchParamsimports have been updated to use the@appalias. Ensure these paths resolve correctly and align with the project's alias configuration.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/settings/page.tsx (1)
7-8: Switch to absolute@appimportsThe
getAuthTokenandgetValidTeamPlanimports have been standardized to use the@appalias. Verify that the path aliases are configured correctly and that these imports resolve.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/_components/header.tsx (1)
7-7: Update header text for feature renameThe heading text has been simplified from "In-App Wallets" to "Wallets", aligning with the new naming convention.
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/page.tsx (1)
2-2: Consistent absolute import forgetAuthToken.
ImportinggetAuthTokenvia the@app/apialias aligns with the project-wide convention of absolute imports. Ensure that path aliases intsconfig.jsonare configured accordingly and that there are no lingering relative imports.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/rotate-admin-key.client.tsx (1)
30-34: Update vault client utilities import path.
The utilities invault.clienthave been relocated undertransactions/lib. Confirm thatcreateManagementAccessToken,createWalletAccessToken,initVaultClient, andmaskSecretare correctly exported from the new path and that related imports in sibling components reflect this change.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx (1)
4-4: StandardizegetAuthTokenimport alias.
Changing to the@app/apialias forgetAuthTokenensures consistency across the codebase. Verify that this alias is properly recognized by your module resolver and remove any outdated relative imports.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/page.tsx (1)
4-4: Adopt absolute import forgetAuthToken.
AligninggetAuthTokenimport with the@app/apialias is consistent with other modules. Double-check thattsconfigpath mappings cover this alias and no failed imports result.apps/dashboard/src/components/shared/FileInput.tsx (1)
3-3: UpdateFilePreviewimport path to reflect tokens rename.
Switching from theassetstotokensdirectory in the path matches the broader terminology shift. Ensure that the alias@app/team/.../tokens/create/_common/file-previewresolves correctly and that there are no broken references.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/list-access-tokens.client.tsx (1)
23-23: Imports migrated to transactions module
The vault utilities are now centralized undertransactions/lib. This path update aligns with the new folder structure.apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/_layout/primary-dashboard-button.tsx (1)
90-90: Consistent terminology: "View Token Page"
The button label was updated to use "Token" instead of "Asset," matching the new naming convention across the dashboard.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/page.tsx (1)
4-6: Switched to@appalias for imports
Using absolute@apppaths forDeployedContractsPage,getAuthToken, andloginRedirectensures consistent module resolution.apps/dashboard/src/components/contract-components/import-contract/modal.tsx (1)
61-61: Dialog title updated to "Import Token"
Terminology changed from "Asset" to "Token" for non-contract imports, aligning with the overall rename.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/page.tsx (1)
28-28: Redirect route corrected to/tokens/create/nft
Unauthenticated users are now sent to the updated tokens creation path instead of the old assets route.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/page.tsx (1)
5-5: LGTM: Import path standardizationGood improvement switching from a relative import to an absolute import using the
@appalias. This enhances maintainability and consistency across the codebase.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/create-nft-page.tsx (1)
340-340: Path migration from "assets" to "tokens" looks correctThis change aligns with the broader refactoring effort. Ensure the target route
/tokensexists and is properly configured to receive the revalidation.#!/bin/bash # Verify that the tokens route exists fd -t f "page.tsx" | rg "tokens.*page\.tsx$" | head -5apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/analytics/page.tsx (1)
13-13: URL simplification looks appropriateThe redirect from the legacy "/connect/in-app-wallets" path to the simplified "/wallets" path is consistent with the navigation restructuring effort.
#!/bin/bash # Verify the target wallets route exists fd -t f "page.tsx" | rg "wallets.*page\.tsx$" | head -3apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/AAFooterSection.tsx (1)
1-1: Import path adjustment due to directory restructuringThe import path has been updated to reflect the new directory structure. Verify that the FooterLinksSection component exists at the new relative path.
#!/bin/bash # Verify the FooterLinksSection component exists at the expected path fd -t f "FooterLinksSection" | head -3apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/layout.tsx (1)
15-15: Navigation path updated correctly for transactions migrationThe link change from "/engine/cloud" to "/transactions" aligns perfectly with the broader migration effort and matches the "Back to Transactions" text.
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/settings/page.tsx (2)
5-7: LGTM: Clean import path refactoringThe change from relative to absolute imports improves maintainability and consistency across the codebase.
24-24: It looks likerg --type tsxisn’t picking up any results—let’s drop the file-type filters and search everything for “wallets/settings” to see if there are other redirects or route references we’re missing:#!/bin/bash # Search for any occurrence of "wallets/settings" across all files echo "Scanning for wallets/settings routes..." rg -A3 -B3 "wallets/settings"apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/create-token-page-impl.tsx (1)
341-341: LGTM: Path update aligns with assets-to-tokens migrationThe revalidation path change from
/assetsto/tokensis correct and consistent with the broader terminology migration.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/settings/page.tsx (3)
5-6: LGTM: Import path standardizationConverting to absolute imports improves code maintainability and consistency.
27-27: LGTM: URL simplification aligns with migrationRemoving the
/connectsegment from the redirect URL is consistent with the broader navigation simplification effort.
66-66: Verify styling change doesn't break layoutThe
p-5padding class was removed from the outer div. Please ensure this doesn't negatively impact the visual layout or spacing.apps/dashboard/src/@/components/blocks/Sidebar.tsx (1)
12-12: LGTM: Enhanced sidebar link flexibilityThe optional
isActiveproperty allows for custom active state determination, providing more flexibility for complex navigation scenarios while maintaining backward compatibility.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/PageHeader.tsx (1)
27-29: LGTM: Breadcrumb navigation updated for tokens migrationThe path and text changes from "assets" to "tokens" correctly align with the broader migration effort and ensure consistent navigation terminology.
apps/dashboard/src/core-ui/batch-upload/batch-table.tsx (1)
3-3: Verify the new import path exists after the assets → tokens migration.The import has been updated to use an absolute path and reflect the terminology change from "assets" to "tokens". Ensure the
FilePreviewcomponent exists at the new location.#!/bin/bash # Description: Verify the FilePreview component exists at the new path # Expected: File should exist at the new tokens path fd "file-preview" --type f --extension tsx --extension ts | grep -E "(tokens|assets)" | head -10apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/page.tsx (2)
3-4: LGTM: Import paths standardized to absolute imports.The imports have been correctly updated to use absolute paths with the
@appalias, improving consistency and maintainability.
22-22: LGTM: Redirect URL updated to match new transactions routing.The redirect URL has been correctly updated from
/engine/cloud/tx/to/transactions/tx/to align with the new routing structure. This ensures proper navigation after authentication.apps/dashboard/src/components/contract-components/tables/contract-table.tsx (2)
167-167: LGTM: Table header updated to reflect tokens terminology.The table header has been correctly updated from "Asset Page" to "Token Page" to align with the new terminology.
266-266: LGTM: Empty state message updated for consistency.The empty state message has been correctly updated from "No assets found" to "No tokens found" to maintain consistency with the new terminology.
apps/dashboard/src/@/components/blocks/SidebarLayout.tsx (1)
126-126: LGTM: Enhanced NavLink with custom active state support.The addition of the
isActiveprop enables custom active state logic for sidebar links, providing more flexibility for dynamic navigation states. This aligns with the broader sidebar navigation improvements.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table-ui.tsx (1)
141-141: LGTM: Navigation URL updated to match new transactions routing.The router push URL has been correctly updated from
/engine/cloud/tx/to/transactions/tx/to align with the new routing structure, maintaining consistency throughout the application.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/send-test-tx.client.tsx (1)
264-267: LGTM! Navigation URL updated correctly.The router navigation has been properly updated from the legacy
/engine/cloudpath to the new/transactionspath, maintaining the same conditional logic while aligning with the broader dashboard terminology migration.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/sales/sales-settings.tsx (1)
40-40: LGTM! Terminology updated consistently.The UI text has been properly updated from "assets" to "tokens" across all relevant descriptions for primary sales and royalties, maintaining consistency with the broader dashboard terminology migration.
Also applies to: 63-63, 75-75
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/analytics.ts (1)
2-3: LGTM! Import paths standardized.The imports have been properly updated to use absolute paths with the
@appalias and standardized module paths, improving maintainability and consistency across the codebase.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/page.tsx (2)
4-5: LGTM! Import paths standardized.The imports have been properly updated to use the
@appalias for better maintainability and consistency.
33-33: LGTM! URL structure simplified.The redirect URL has been correctly updated to remove the
/connectsegment, simplifying the navigation structure while maintaining the same redirect functionality.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/utils.ts (1)
9-11: LGTM! Added proper localStorage guard.The addition of a
localStorageavailability check prevents runtime errors in non-browser environments (such as during SSR) while maintaining the existing function contract by returningnullwhen unavailable.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/AccountAbstractionPage.tsx (1)
20-20: LGTM! URL path simplification looks good.The removal of the
/connectsegment aligns with the broader dashboard navigation refactoring effort described in the AI summary.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(instance)/[engineId]/overview/components/engine-overview.tsx (1)
144-145: LGTM! UI and functionality improvements look good.The popover width reduction and addition of the
disableChainIdprop both appear to be meaningful improvements to the component's usability and functionality.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/users/page.tsx (2)
3-4: LGTM! Import path improvements look good.The change to absolute imports improves maintainability and follows good practices.
19-19: LGTM! URL path simplification is consistent with the refactoring.The removal of
/connect/in-app-walletsand simplification to/walletsaligns with the broader dashboard navigation refactoring effort.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-chart/tx-chart-ui.tsx (1)
188-188: LGTM! URL path simplification is consistent with the refactoring.The removal of
/engine/cloudsegment and direct navigation to/vaultaligns with the broader dashboard navigation refactoring effort to simplify URL structures.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/page.tsx (1)
442-442: LGTM! URL path simplification is consistent with the refactoring.The removal of
/connectsegment from the universal-bridge settings path aligns with the broader dashboard navigation refactoring effort to simplify URL structures.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/layout.tsx (1)
36-46: LGTM! URL paths updated correctly.The navigation links have been properly updated to use the simplified
/walletspath structure, removing the/connectsegment as intended.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/cards.tsx (3)
43-55: LGTM! URL paths updated correctly.The navigation links have been properly updated from
/assets/create/to/tokens/create/as part of the terminology migration.
65-66: LGTM! UI text updated correctly.The card title and description have been properly updated to use "tokens" terminology instead of "assets".
34-34: Consider updating modal type for consistency.The
ImportModalcomponent is still usingtype="asset"which may be inconsistent with the new "tokens" terminology. Verify if this type should be updated to match the new naming convention.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/factories/page.tsx (3)
9-11: LGTM! Import paths updated to absolute imports.The import paths have been properly updated from relative to absolute paths using the
@app/alias, which improves maintainability and consistency.
34-34: LGTM! Redirect URL updated correctly.The redirect URL has been properly updated to remove the
/connectsegment, simplifying the path structure as intended.
9-11: ```shell
#!/bin/bash
echo "1. Looking for jsconfig.json files at project root and in apps/dashboard:"
find . -maxdepth 3 -type f -name "jsconfig.json" -printecho -e "\n2. Inspecting jsconfig.json for '@app' path mappings:"
for js in $(find . -maxdepth 3 -type f -name "jsconfig.json"); do
echo "--- $js ---"
grep -n ""@app" -C2 "$js" || echo "No '@app' paths in $js"
doneecho -e "\n3. Searching apps/dashboard for Next.js config and webpack aliases:"
next_cfg=$(find apps/dashboard -maxdepth 2 -type f -name "next.config.*")
if [ -n "$next_cfg" ]; then
echo "--- Found Next.js config: $next_cfg ---"
grep -n "alias" -C2 "$next_cfg" || echo "No webpack alias in $next_cfg"
else
echo "No Next.js config found in apps/dashboard"
fi</details> <details> <summary>apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/page.tsx (2)</summary> `7-9`: **LGTM! Import paths updated to absolute imports.** The import paths have been properly updated from relative to absolute paths using the `@app/` alias, which improves maintainability and consistency. --- `27-27`: **LGTM! Redirect URL updated correctly.** The redirect URL has been properly updated from `/assets/create/token` to `/tokens/create/token` as part of the terminology migration from "assets" to "tokens". </details> <details> <summary>apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/create-server-wallet.client.tsx (3)</summary> `89-89`: **LGTM! Redirect URL updated correctly.** The redirect URL has been properly updated from `/engine/cloud/vault` to `/vault`, simplifying the path structure as part of the broader refactoring. --- `107-107`: **LGTM! Navigation URL updated correctly.** The navigation URL has been properly updated from `/engine/cloud/vault` to `/vault`, maintaining consistency with the redirect logic above. --- `89-107`: I couldn’t locate any `/vault` routes in the dashboard app—let’s narrow the search to the `apps/dashboard/src/app` tree: ```shell #!/bin/bash # 1. List any “vault” directories under the app folder fd -t d vault apps/dashboard/src/app || true # 2. Look for Next.js page files inside those vault dirs fd -e tsx -e ts apps/dashboard/src/app -x bash -lc 'if [[ "{}" == *"/vault/"* ]]; then echo {}; fi' | xargs -r rg -Hn "export default" # 3. Specifically find any page.tsx under a vault path find apps/dashboard/src/app -type f -path "*/vault/*" -name "page.tsx" -print || trueapps/dashboard/src/@/analytics/report.ts (1)
13-13: Documentation updated correctly for terminology migration.The comment updates from "asset page" to "token page" correctly reflect the UI terminology migration while preserving the actual analytics functionality. This maintains backward compatibility for existing analytics data while documenting the new user-facing terminology.
Also applies to: 233-233, 253-253
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/ftux.client.tsx (2)
111-111: Terminology update aligns with migration goals.The title change from "Setup Your Engine" to "Get Started with Transactions" correctly reflects the broader dashboard migration from Engine to Transactions terminology.
8-8: Verify the updated import path is correct.The import path was updated from
"../vault/components/create-vault-account.client"to"../../vault/components/create-vault-account.client", suggesting a directory restructuring. Please ensure this path resolves correctly.#!/bin/bash # Description: Verify the import path for CreateVaultAccountButton exists at the new location # Check if the file exists at the new path relative to this file's directory fd -t f "create-vault-account.client" --full-path | head -10 # Also search for any exports of CreateVaultAccountButton to verify component location ast-grep --pattern 'export $_ CreateVaultAccountButton'apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/page.tsx (1)
27-27: Terminology migration implemented consistently.The systematic updates from "assets" to "tokens" throughout the component correctly implement the dashboard migration goals. The redirect URL, headings, and descriptive text have all been updated consistently to reflect the new terminology.
Also applies to: 56-58, 82-82
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/layout.tsx (2)
21-21: URL path simplification improves navigation structure.The removal of the
/connectsegment from the URL path (/team/{team_slug}/{project_slug}/universal-bridge) simplifies the routing structure and aligns with the broader navigation improvements mentioned in the PR.
5-5: ```shell
#!/bin/bashVerify named export of FooterLinksSection in the component file
FILE=$(fd -t f FooterLinksSection --full-path)
rg -n "^export " "$FILE"</details> <details> <summary>apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/overview/ContractOverviewPage.tsx (1)</summary> `48-51`: **Terminology migration completed correctly for UpsellBannerCard.** The text updates from "asset" to "token" in the title, description, and CTA button correctly implement the dashboard-wide terminology migration. The functionality remains unchanged while improving consistency with the new token-focused terminology. </details> <details> <summary>apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/CreateWebhookModal.tsx (2)</summary> `48-52`: **Component renamed and interface unchanged - good refactoring.** The component rename from `CreateWebhookModal` to `CreateContractWebhookButton` better reflects its specific purpose for contract webhooks. The interface remains the same, maintaining backward compatibility. --- `227-230`: **Button styling improvements enhance UX.** The addition of the PlusIcon, smaller size, and updated text from "New Webhook" to "Create Webhook" creates a more polished and intuitive user interface. </details> <details> <summary>apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/try-it-out.tsx (1)</summary> `69-69`: **Improved content organization and spacing.** The updated spacing and wrapped sections for installation and usage examples create better visual separation and improve readability. Also applies to: 119-138 </details> <details> <summary>apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/create-vault-account.client.tsx (3)</summary> `18-23`: **Import path reorganization aligns with transactions restructuring.** The updated import paths from vault-specific directories to the transactions module structure are consistent with the broader refactoring mentioned in the PR summary. Also applies to: 32-32 --- `159-159`: **Icon change from LockIcon to UserLockIcon.** The icon change appears intentional but verify this aligns with the design requirements for vault account creation. --- `34-37`: **Verify component export change doesn't break imports.** The component export was changed from default to named export. Ensure all files importing this component have been updated accordingly. ```shell #!/bin/bash # Description: Check for imports of CreateVaultAccountButton to ensure they use named imports # Expected: All imports should use named import syntax rg -A 2 -B 2 "import.*CreateVaultAccountButton|import.*create-vault-account"apps/dashboard/src/@/components/ui/NavLink.tsx (2)
14-14: Excellent addition of flexible active state logic.The optional
isActiveprop allows consumers to provide custom logic for determining active states, which enhances the component's flexibility while maintaining backward compatibility.
19-25: Proper implementation with fallback logic.The active state calculation correctly prioritizes the custom
isActivefunction when provided, falling back to the existing pathname-based logic. The ternary chain is clear and maintains all existing functionality.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/ProjectGeneralSettingsPage.tsx (3)
220-222: URL path simplification aligns with navigation restructuring.Removing the
/connectprefix from the account abstraction, wallets, and universal bridge settings URLs is consistent with the broader dashboard navigation changes mentioned in the PR summary.
764-764: Visual styling improvement with dashed border.The change from solid to dashed border provides better visual distinction for the service configuration sections.
783-783: Enhanced Configure button styling.The updated button styling with rounded background and adjusted padding improves the visual hierarchy and user experience.
apps/dashboard/src/app/(app)/account/contracts/DeployedContractsPageHeader.tsx (4)
19-19: UI refinement looks good.Removing the bottom border aligns with the updated design patterns across the dashboard.
31-31: Padding adjustment improves spacing.The reduced bottom padding (from
pb-10topb-5) creates better visual balance with the new description text.
36-38: Clear and helpful description added.The descriptive text provides useful context for users about the contracts functionality.
42-52: Button styling improvements enhance consistency.The changes to button sizing (
size="sm"), gap adjustments, and icon coloring create a more cohesive UI that aligns with the design system.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(general)/layout.tsx (3)
28-33: Terminology update aligns with navigation changes.The header title change from "Engine" to "Transactions" and badge update to "Dedicated Engine" are consistent with the broader navigation refactoring.
55-69: Cleaner TabPathLinks implementation.The simplified structure using
scrollableClassNameprop removes unnecessary wrapper divs and improves maintainability.
98-98: Route update follows new navigation pattern.The URL change from
/engine/cloudto/transactionsaligns with the systematic routing updates across the dashboard.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/page.tsx (2)
3-3: Import path standardization.Using absolute import for
getAuthTokenmaintains consistency with the codebase's import conventions.
46-46: Clean separation of concerns.Delegating webhook functionality to
ContractsWebhooksPageContentimproves modularity and makes the page component focused solely on layout and authentication.apps/dashboard/src/app/(app)/account/contracts/_components/DeployedContractsPage.tsx (1)
18-28: Improved component structure and layout.The refactoring achieves several improvements:
- Adding
container max-w-7xlprovides consistent width constraints- Simplified Suspense boundary reduces unnecessary nesting
- Dedicated spacing div makes layout intentions clearer
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/wallet-table-ui.client.tsx (4)
92-92: Table border refinement.Removing the bottom border (
border-b-0) creates a cleaner transition to the pagination section.
141-196: Well-implemented pagination with proper UX considerations.The pagination implementation includes:
- Conditional rendering only when needed (totalPages > 1)
- Clear visual separation with border and padding
- Proper disabled states for previous/next buttons
- Accessible navigation with Link components
150-151: Route updates align with navigation refactoring.All pagination links correctly updated from
/engine/cloud/server-walletsto/transactions/server-walletspath.Also applies to: 167-167, 179-180
266-266: SendTestTransaction route properly updated.The button navigation correctly uses the new
/transactionspath while preserving the query parameter.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/layout.tsx (4)
25-26: LGTM! Improved variable naming.The variable names
projectLayoutPathandlayoutPathare more descriptive and align well with the refactoring from Engine to Transactions terminology.
37-37: LGTM! Consistent terminology update.The header change from "Engine Cloud" to "Transactions" aligns with the overall navigation refactoring.
56-56: LGTM! Consistent path variable usage.The link correctly uses the new
projectLayoutPathvariable for consistency.
70-80: LGTM! Navigation links updated consistently.All navigation links correctly use the new
layoutPathvariable, maintaining consistency across the component.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/layout.tsx (1)
3-33: LGTM! Well-structured layout component.The
VaultLayoutcomponent follows good practices:
- Clean, semantic structure with proper spacing
- External link includes security attributes (
target="_blank",rel="noopener noreferrer")- Consistent styling patterns with other layout components
- Clear information hierarchy with title and descriptive text
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/webhooks/page.tsx (4)
11-11: LGTM! Correct params handling.Properly awaiting the params object aligns with Next.js server component best practices.
13-17: LGTM! Efficient parallel data fetching.Using
Promise.allto fetch authentication token, team, and project data in parallel is an efficient approach that reduces overall loading time.
19-31: LGTM! Proper authentication and authorization handling.The component correctly handles authentication and authorization:
- Redirects unauthenticated users to login
- Redirects to appropriate fallback pages when team or project is not found
- Uses proper redirect URLs for context preservation
34-36: LGTM! Clean component structure.The rendered component structure is clean and passes the required props correctly to the
ContractsWebhooksPageContentcomponent.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/WebhooksTable.tsx (3)
21-21: LGTM! Consistent import update.The import change from
CreateWebhookModaltoCreateContractWebhookButtonaligns with the component refactoring to focus on contract-specific webhooks.
40-40: LGTM! Clear component naming.Renaming to
ContractsWebhooksTablemakes the component's purpose more explicit and aligns with the contract-focused refactoring.
219-235: LGTM! Improved UI layout structure.The restructured layout with:
- Container with border and rounded corners
- Table with removed border styling to avoid double borders
- Footer section with create button
provides a cleaner, more organized appearance.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/key-management.tsx (2)
9-46: LGTM! Well-structured key management component.The
KeyManagementcomponent implements clean conditional rendering:
- Clear separation between account creation and key management states
- Proper component composition with reusable sub-components
- Consistent styling and spacing throughout
48-86: LGTM! Informative user onboarding experience.The
CreateVaultAccountAlertcomponent provides excellent UX:
- Clear explanation of Vault functionality with bulleted benefits
- External documentation link with proper security attributes
- Well-structured information hierarchy guiding users to next steps
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectFTUX/ProjectFTUX.tsx (3)
12-12: LGTM! Icon imports properly updated.The icon imports have been correctly updated to reflect the product name changes -
ArrowLeftRightIconfor Transactions andPayIconfor Universal Bridge.Also applies to: 20-20
259-264: LGTM! Product description accurately reflects Universal Bridge functionality.The updated description for Universal Bridge correctly describes its cross-chain functionality for bridging, swapping, and purchasing cryptocurrencies.
238-243: ```shell
#!/usr/bin/env bash
set -e1. Search for any route file or directory matching "transactions" under the dashboard app folder
echo "🔍 Locating 'transactions' files/directories under apps/dashboard/src/app…"
fd -HI -g "transactions" apps/dashboard/src/app || echo "⚠️ No 'transactions' files or folders found under apps/dashboard/src/app."2. If there’s a Next.js config in apps/dashboard, inspect its redirects block
if [ -f apps/dashboard/next.config.js ]; then
echo -e "\n🔍 Inspecting redirects() in apps/dashboard/next.config.js…"
awk '/redirects/,/]/' apps/dashboard/next.config.js || echo "⚠️ No redirects() export found in apps/dashboard/next.config.js."
else
echo -e "\n⚠️ apps/dashboard/next.config.js not found."
fi</details> <details> <summary>apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/layout.tsx (2)</summary> `16-20`: **LGTM! Efficient concurrent data fetching.** Using `Promise.all` for concurrent fetching of authentication token, team, and project data is an excellent performance optimization that reduces the overall load time. --- `48-61`: **LGTM! Tab navigation implementation follows best practices.** The tab navigation using `TabPathLinks` with exact matching for the main contracts page and prefix matching for webhooks is correctly implemented and follows the patterns from the relevant code snippets. </details> <details> <summary>apps/dashboard/redirects.js (3)</summary> `65-66`: **LGTM! Good abstraction for maintainability.** Extracting the common project route pattern into a constant improves maintainability and reduces the risk of typos in redirect rules. --- `104-107`: **Consider if nebula redirect should go to universal-bridge instead.** The nebula redirect goes to the project root instead of `/universal-bridge`. Based on the AI summary mentioning "Nebula" → "Universal Bridge", this might be incorrect. Should the nebula redirect go to universal-bridge instead of the project root? ```diff source: `${projectRoute}/nebula/:path*`, - destination: projectRoute, + destination: `${projectRoute}/universal-bridge/:path*`, permanent: false,
67-108: ```shell
#!/bin/bash
set -e
echo "Verifying project‐scoped route directories under (sidebar)…"wallets under team/[team_slug]/[project_slug]/(sidebar)
fd --type d wallets apps/dashboard/src/app | grep '/(sidebar)/wallets' || echo "No project‐scoped wallets directory"
transactions under team/[team_slug]/[project_slug]/(sidebar)
fd --type d transactions apps/dashboard/src/app | grep '/(sidebar)/transactions' || echo "No project‐scoped transactions directory"
tokens under team/[team_slug]/[project_slug]/(sidebar)
fd --type d tokens apps/dashboard/src/app | grep '/(sidebar)/tokens' || echo "No project‐scoped tokens directory"
</details> <details> <summary>apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/layout.tsx (1)</summary> `122-149`: **LGTM! Well-structured engine link type determination.** The `getEngineLinkType` function follows a clear decision tree: check for cloud service first, then fall back to legacy engine instances. The logic is sound and the default to "cloud" is appropriate. </details> <details> <summary>apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectSidebarLayout.tsx (7)</summary> `5-5`: **LGTM: Icon imports added for new UI elements.** The new `ArrowLeftRightIcon` and `LockIcon` imports are correctly added to support the updated sidebar navigation items (Transactions and Vault respectively). Also applies to: 11-11 --- `22-22`: **LGTM: New prop for dynamic engine link type.** The `engineLinkType` prop with union type `"cloud" | "dedicated"` is well-defined and properly destructured. This enables dynamic behavior for the transactions link based on the engine configuration. Also applies to: 25-25 --- `37-39`: **LGTM: Simplified wallet navigation.** The renaming from "In-App Wallets" to "Wallets" and path simplification from `/connect/in-app-wallets` to `/wallets` aligns with the broader navigation restructuring described in the PR objectives. --- `43-43`: **LGTM: Consistent removal of `/connect` prefix.** The path updates for Account Abstraction and Universal Bridge consistently remove the `/connect` prefix, maintaining alignment with the overall navigation migration strategy. Also applies to: 47-47 --- `57-64`: **LGTM: Assets to Tokens migration with proper labeling.** The renaming from "Assets" to "Tokens" with the corresponding path change and "New" badge clearly communicates the feature update to users. --- `66-78`: **LGTM: Well-implemented dynamic transactions link.** The dynamic href logic based on `engineLinkType` is correctly implemented: - Cloud engine type routes to `/transactions` - Dedicated engine type routes to `/engine/dedicated` - The `isActive` function properly handles both possible paths for accurate navigation state This provides a clean user experience while maintaining backward compatibility for different engine configurations. --- `85-88`: **LGTM: Nebula to Vault migration with appropriate icon.** The replacement of "Nebula" with "Vault" using the `LockIcon` is semantically appropriate and consistent with the overall navigation terminology updates. </details> </blockquote></details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
...m/[team_slug]/[project_slug]/(sidebar)/webhooks/contract-webhooks/contract-webhooks-page.tsx
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Nitpick comments (1)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/universal-bridge/page.tsx (1)
4-4: Potential import path fragilityThe relative import path
../../universal-bridge/webhooks/components/webhooks.clientis quite deep and could be fragile if the directory structure changes.Consider using an absolute import path with an alias (like
@/or@app/) for better maintainability:-import { PayWebhooksPage } from "../../universal-bridge/webhooks/components/webhooks.client"; +import { PayWebhooksPage } from "@/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/webhooks/components/webhooks.client";Or consider moving the shared component to a common location if it's used by multiple pages.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
apps/dashboard/redirects.js(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/footer/FooterLinksSection.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/webhooks/components/webhooks.client.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/webhooks/page.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/WebhooksTable.tsx(3 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/layout.tsx(1 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/page.tsx(2 hunks)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/universal-bridge/page.tsx(1 hunks)
✅ Files skipped from review due to trivial changes (2)
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/webhooks/components/webhooks.client.tsx
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/footer/FooterLinksSection.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
- apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/WebhooksTable.tsx
- apps/dashboard/redirects.js
🧰 Additional context used
🧠 Learnings (1)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/webhooks/page.tsx (1)
Learnt from: jnsdls
PR: thirdweb-dev/js#6929
File: apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/insight/webhooks/page.tsx:14-19
Timestamp: 2025-05-21T05:17:31.283Z
Learning: In Next.js server components, the `params` object can sometimes be a Promise that needs to be awaited, despite type annotations suggesting otherwise. In apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/insight/webhooks/page.tsx, it's necessary to await the params object before accessing its properties.
🧬 Code Graph Analysis (2)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/layout.tsx (1)
apps/dashboard/src/@/components/ui/tabs.tsx (1)
TabPathLinks(213-244)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/universal-bridge/page.tsx (3)
apps/dashboard/src/@/api/projects.ts (1)
getProject(29-48)apps/dashboard/src/@/components/ui/UnderlineLink.tsx (1)
UnderlineLink(6-16)apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/webhooks/components/webhooks.client.tsx (1)
PayWebhooksPage(64-144)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: Size
- GitHub Check: Analyze (javascript)
🔇 Additional comments (10)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/webhooks/page.tsx (2)
1-11: LGTM: Proper async params handling and importsThe component correctly implements the async server component pattern, properly awaiting the params Promise as recommended for Next.js server components.
12-17: LGTM: Proper error handlingGood error handling with redirect to team page when project is not found. The redirect path is consistent and appropriate.
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/page.tsx (4)
3-3: LGTM: Import path updateGood update to use absolute import path with
@appalias, consistent with the broader codebase changes mentioned in the summary.
5-5: LGTM: Component delegationGood separation of concerns by delegating to
ContractsWebhooksPageContent. This improves modularity and makes the main page component cleaner.
10-13: LGTM: Efficient async operationsUsing
Promise.allfor concurrent execution ofgetAuthToken()and params resolution is an efficient approach that reduces total waiting time.
25-41: LGTM: Updated content and component usageThe header update to "Contract Webhooks" and the delegation to
ContractsWebhooksPageContentappropriately reflect the restructured webhook functionality with separate contract and universal bridge sections.apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/universal-bridge/page.tsx (1)
1-11: LGTM: Proper async handling and structureThe component correctly implements the async server component pattern and has consistent import structure.
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/layout.tsx (3)
1-11: LGTM: Proper layout structure and async handlingThe layout component correctly implements the async server component pattern and provides a clean structure for the webhooks section.
24-37: Good tab navigation implementationThe
TabPathLinksimplementation provides clear navigation between Contract and Universal Bridge webhooks. The path construction is correct and theexactMatch: truefor the Contract tab ensures proper active state handling.The tab structure aligns well with the modular approach taken in the webhook pages, providing a unified entry point for both webhook types.
12-44: LGTM: Well-structured layout with proper spacing and containersThe layout provides good visual hierarchy with appropriate spacing (
h-6,h-10) and uses consistent container classes (max-w-7xl) throughout. The flexbox structure allows for proper content flow and growth.
...d/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/webhooks/page.tsx
Show resolved
Hide resolved
...d/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/universal-bridge/page.tsx
Show resolved
Hide resolved
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
999bc78 to
aad31d2
Compare
Merge activity
|
<!--
## title your PR with this format: "[SDK/Dashboard/Portal] Feature/Fix: Concise title for the changes"
If you did not copy the branch name from Linear, paste the issue tag here (format is TEAM-0000):
## Notes for the reviewer
Anything important to call out? Be sure to also clarify these in your comments.
## How to test
Unit tests, playground, etc.
-->
<!-- start pr-codex -->
---
## PR-Codex overview
This PR focuses on restructuring and renaming various components and pages within the application, particularly transitioning terminology from "assets" to "tokens" and reorganizing file paths for clarity. It also includes the deletion of unused files and adjustments in imports.
### Detailed summary
- Deleted unused files related to `nebula` and `in-app-wallets`.
- Renamed components and pages from "assets" to "tokens".
- Updated file paths to reflect the new structure.
- Adjusted imports for consistency with new paths.
- Enhanced UI elements for better user experience.
> The following files were skipped due to too many changes: `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/vault/components/create-vault-account.client.tsx`, `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/layout.tsx`, `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/ftux.client.tsx`, `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(general)/layout.tsx`, `apps/dashboard/redirects.js`, `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contract-webhooks/contract-webhooks-page.tsx`, `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/components/try-it-out.tsx`, `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/layout.tsx`, `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/layout.tsx`, `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/components/key-management.tsx`, `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectSidebarLayout.tsx`, `apps/dashboard/src/components/pay/PayAnalytics/PayEmbedFTUX.tsx`, `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectFTUX/ProjectFTUX.tsx`, `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/wallet-table-ui.client.tsx`, `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/page.tsx`, `packages/nebula/package.json`, `pnpm-lock.yaml`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
- **New Features**
- Introduced a Vault section for secure key management, including a new layout and key management UI.
- Added contract webhooks management with improved pages and navigation.
- **Improvements**
- Renamed "Assets" to "Tokens" and "In-App Wallets" to "Wallets" throughout the dashboard.
- Updated sidebar navigation labels, icons, and link destinations for clarity and consistency.
- Enhanced "Transactions" section, replacing previous "Engine" references and updating related routes and UI.
- Refined onboarding and FTUX experiences with clearer terminology and improved instructional content.
- Improved contract import and table UI with updated labels and empty state messages.
- Enhanced Pay analytics with richer code examples and a more flexible FTUX component.
- Streamlined redirects and updated URL paths to remove deprecated segments for smoother navigation.
- Improved pagination display and active link detection in navigation components.
- Adjusted layout spacing, button sizes, and typography for improved visual consistency.
- Updated footer and sidebar styling for better user experience.
- **Bug Fixes**
- Fixed various redirect and navigation paths to align with new route structures.
- Improved handling of pagination and active link states in navigation components.
- **Removals**
- Removed Nebula analytics pages, components, and related tracking utilities.
- Deleted unused tracking properties and constants.
- Removed outdated Vault key management component replaced by new implementation.
- **Documentation**
- Updated terminology in documentation and UI to reflect the shift from "assets" to "tokens".
- Revised analytics event descriptions to use "token page" terminology.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
aad31d2 to
eeb672d
Compare

PR-Codex overview
This PR focuses on restructuring and renaming various components and files related to "assets" to "tokens" throughout the application. It also removes several unused files and updates references to maintain functionality.
Detailed summary
nebulaandin-app-walletsdirectories.Vaultlayout and components for improved functionality.Summary by CodeRabbit
New Features
Improvements
Bug Fixes
Removals
Documentation