From dd8748bec05a83a9fa99dfca38abd6da73f4f89f Mon Sep 17 00:00:00 2001 From: Joey Meere <100378695+joeymeere@users.noreply.github.com> Date: Wed, 16 Oct 2024 01:01:40 -0400 Subject: [PATCH 01/15] refactor(misc): change design, components, add utils --- app/(app)/config/page.tsx | 60 +- app/(app)/layout.tsx | 94 +-- app/(app)/page.tsx | 62 +- app/(app)/settings/page.tsx | 40 +- app/(app)/transactions/page.tsx | 217 +------ app/globals.css | 62 +- app/layout.tsx | 14 +- components/AddMemberInput.tsx | 5 +- components/ApproveButton.tsx | 4 +- components/ChangeThresholdInput.tsx | 7 +- components/ChangeUpgradeAuthorityInput.tsx | 5 +- components/ConnectWalletButton.tsx | 2 +- components/ExecuteButton.tsx | 19 +- components/MultisigInput.tsx | 4 +- components/RejectButton.tsx | 4 +- components/RemoveMemberButton.tsx | 3 +- components/RenderMultisigRoute.tsx | 4 +- components/SendSolButton.tsx | 6 +- components/SendTokensButton.tsx | 7 +- components/SetRpcUrlnput.tsx | 17 +- components/TokenList.tsx | 145 +++-- components/VaultDisplayer.tsx | 24 +- components/VaultSelector.tsx | 20 +- components/ui/chip.tsx | 28 + components/ui/input.tsx | 25 - components/ui/layout/connect-button.tsx | 120 ++++ components/ui/layout/custom-toaster.tsx | 27 + components/ui/layout/header.tsx | 81 +++ components/ui/layout/light-dark-button.tsx | 19 + components/ui/layout/page-header.tsx | 21 + components/ui/misc/copy-text.tsx | 19 + components/ui/my-multisigs.tsx | 214 +++++++ components/ui/pill.tsx | 33 ++ components/ui/popover.tsx | 31 - components/ui/{ => primitives}/button.tsx | 0 components/ui/{ => primitives}/card.tsx | 0 components/ui/{ => primitives}/command.tsx | 54 +- components/ui/{ => primitives}/dialog.tsx | 0 components/ui/primitives/input.tsx | 25 + components/ui/primitives/loading.tsx | 83 +++ components/ui/{ => primitives}/pagination.tsx | 2 +- components/ui/primitives/popover.tsx | 31 + components/ui/{ => primitives}/select.tsx | 0 components/ui/primitives/skeleton.tsx | 15 + components/ui/{ => primitives}/sonner.tsx | 0 components/ui/{ => primitives}/table.tsx | 0 components/ui/primitives/tooltip.tsx | 27 + components/ui/settings/RPCConfig.tsx | 94 +++ components/ui/table/pagination.tsx | 40 ++ components/ui/table/table-head.tsx | 32 ++ components/ui/table/transaction-table-row.tsx | 164 ++++++ components/ui/table/transactions-table.tsx | 56 ++ components/ui/wallet-modal.tsx | 166 ++++++ lib/consts.ts | 1 + lib/helpers/createExplorerUrl.ts | 7 + lib/helpers/createMultisig.ts | 47 ++ lib/helpers/getCachedMultisigs.ts | 64 +++ lib/helpers/getMultisigs.ts | 102 ++++ lib/helpers/getRecentTransactions.ts | 51 ++ lib/helpers/getTotalBalances.ts | 47 ++ lib/helpers/sleep.ts | 3 + lib/helpers/tokenAddresses.ts | 100 ++++ lib/nFormatter.ts | 22 + lib/types.ts | 33 ++ package.json | 7 +- .../SolanaProvider.tsx | 17 +- public/default_image.svg | 28 + public/fonts/NeueMontreal-Bold.otf | Bin 0 -> 42916 bytes public/fonts/NeueMontreal-BoldItalic.otf | Bin 0 -> 51532 bytes public/fonts/NeueMontreal-Italic.otf | Bin 0 -> 49624 bytes public/fonts/NeueMontreal-Light.otf | Bin 0 -> 40516 bytes public/fonts/NeueMontreal-LightItalic.otf | Bin 0 -> 49192 bytes public/fonts/NeueMontreal-Medium.otf | Bin 0 -> 41940 bytes public/fonts/NeueMontreal-MediumItalic.otf | Bin 0 -> 53652 bytes public/fonts/NeueMontreal-Regular.otf | Bin 0 -> 40516 bytes public/logo.svg | 9 + public/solana-logo.png | Bin 0 -> 28416 bytes public/squads-light.png | Bin 0 -> 56920 bytes public/squads-logo.png | Bin 0 -> 56920 bytes public/tokens/CLOUD.webp | Bin 0 -> 8650 bytes public/tokens/INF.webp | Bin 0 -> 11336 bytes public/tokens/JLP.webp | Bin 0 -> 16118 bytes public/tokens/JUP.webp | Bin 0 -> 15558 bytes public/tokens/SOL.webp | Bin 0 -> 2538 bytes public/tokens/USDC.webp | Bin 0 -> 16368 bytes public/tokens/USDT.webp | Bin 0 -> 8086 bytes public/tokens/bSOL.webp | Bin 0 -> 9060 bytes public/tokens/bonkSOL.webp | Bin 0 -> 15364 bytes public/tokens/hSOL.webp | Bin 0 -> 6874 bytes public/tokens/jitoSOL.webp | Bin 0 -> 24700 bytes public/tokens/mSOL.webp | Bin 0 -> 8962 bytes tailwind.config.ts | 26 +- yarn.lock | 540 +++++++++++------- 93 files changed, 2538 insertions(+), 798 deletions(-) create mode 100644 components/ui/chip.tsx delete mode 100644 components/ui/input.tsx create mode 100644 components/ui/layout/connect-button.tsx create mode 100644 components/ui/layout/custom-toaster.tsx create mode 100644 components/ui/layout/header.tsx create mode 100644 components/ui/layout/light-dark-button.tsx create mode 100644 components/ui/layout/page-header.tsx create mode 100644 components/ui/misc/copy-text.tsx create mode 100644 components/ui/my-multisigs.tsx create mode 100644 components/ui/pill.tsx delete mode 100644 components/ui/popover.tsx rename components/ui/{ => primitives}/button.tsx (100%) rename components/ui/{ => primitives}/card.tsx (100%) rename components/ui/{ => primitives}/command.tsx (84%) rename components/ui/{ => primitives}/dialog.tsx (100%) create mode 100644 components/ui/primitives/input.tsx create mode 100644 components/ui/primitives/loading.tsx rename components/ui/{ => primitives}/pagination.tsx (97%) create mode 100644 components/ui/primitives/popover.tsx rename components/ui/{ => primitives}/select.tsx (100%) create mode 100644 components/ui/primitives/skeleton.tsx rename components/ui/{ => primitives}/sonner.tsx (100%) rename components/ui/{ => primitives}/table.tsx (100%) create mode 100644 components/ui/primitives/tooltip.tsx create mode 100644 components/ui/settings/RPCConfig.tsx create mode 100644 components/ui/table/pagination.tsx create mode 100644 components/ui/table/table-head.tsx create mode 100644 components/ui/table/transaction-table-row.tsx create mode 100644 components/ui/table/transactions-table.tsx create mode 100644 components/ui/wallet-modal.tsx create mode 100644 lib/consts.ts create mode 100644 lib/helpers/createExplorerUrl.ts create mode 100644 lib/helpers/createMultisig.ts create mode 100644 lib/helpers/getCachedMultisigs.ts create mode 100644 lib/helpers/getMultisigs.ts create mode 100644 lib/helpers/getRecentTransactions.ts create mode 100644 lib/helpers/getTotalBalances.ts create mode 100644 lib/helpers/sleep.ts create mode 100644 lib/helpers/tokenAddresses.ts create mode 100644 lib/nFormatter.ts create mode 100644 lib/types.ts rename components/Wallet.tsx => providers/SolanaProvider.tsx (69%) create mode 100644 public/default_image.svg create mode 100644 public/fonts/NeueMontreal-Bold.otf create mode 100644 public/fonts/NeueMontreal-BoldItalic.otf create mode 100644 public/fonts/NeueMontreal-Italic.otf create mode 100644 public/fonts/NeueMontreal-Light.otf create mode 100644 public/fonts/NeueMontreal-LightItalic.otf create mode 100644 public/fonts/NeueMontreal-Medium.otf create mode 100644 public/fonts/NeueMontreal-MediumItalic.otf create mode 100644 public/fonts/NeueMontreal-Regular.otf create mode 100644 public/logo.svg create mode 100644 public/solana-logo.png create mode 100644 public/squads-light.png create mode 100644 public/squads-logo.png create mode 100644 public/tokens/CLOUD.webp create mode 100644 public/tokens/INF.webp create mode 100644 public/tokens/JLP.webp create mode 100644 public/tokens/JUP.webp create mode 100644 public/tokens/SOL.webp create mode 100644 public/tokens/USDC.webp create mode 100644 public/tokens/USDT.webp create mode 100644 public/tokens/bSOL.webp create mode 100644 public/tokens/bonkSOL.webp create mode 100644 public/tokens/hSOL.webp create mode 100644 public/tokens/jitoSOL.webp create mode 100644 public/tokens/mSOL.webp diff --git a/app/(app)/config/page.tsx b/app/(app)/config/page.tsx index 8a5b1f8..ab9defc 100644 --- a/app/(app)/config/page.tsx +++ b/app/(app)/config/page.tsx @@ -2,13 +2,16 @@ import AddMemberInput from "@/components/AddMemberInput"; import ChangeThresholdInput from "@/components/ChangeThresholdInput"; import ChangeUpgradeAuthorityInput from "@/components/ChangeUpgradeAuthorityInput"; import RemoveMemberButton from "@/components/RemoveMemberButton"; +import Chip from "@/components/ui/chip"; +import PageHeader from "@/components/ui/layout/page-header"; +import CopyTextButton from "@/components/ui/misc/copy-text"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, -} from "@/components/ui/card"; +} from "@/components/ui/primitives/card"; import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js"; import * as multisig from "@sqds/multisig"; import { cookies, headers } from "next/headers"; @@ -29,27 +32,40 @@ const ConfigurationPage = async () => { multisigPda ); return ( -
-

Multisig Configuration

- +
+ + Members - + List of members in the multisig as well as their permissions. -
+
{multisigInfo.members.map((member) => (
-
-

- Public Key: {member.key.toBase58()} -

-

- Permission Mask: - {member.permissions.mask.toString()} +

+
+

+ {member.key.toString().slice(0, 4) + + "..." + + member.key.toString().slice(-4)} +

+ +
+

+ Permissions:{" "} + {member.permissions.mask == 1 ? ( + + ) : member.permissions.mask == 2 ? ( + + ) : member.permissions.mask == 4 ? ( + + ) : ( + + )}

@@ -68,17 +84,19 @@ const ConfigurationPage = async () => { />
-
+
))}
- + Add Member - Add a member to the Multisig + + Add a member to the Multisig + { /> - + Change Threshold - + Change the threshold required to execute a multisig transaction. @@ -115,10 +133,10 @@ const ConfigurationPage = async () => {
- + - Change program Upgrade authority - + Change Program Upgrade Authority + Change the upgrade authority of one of your programs. diff --git a/app/(app)/layout.tsx b/app/(app)/layout.tsx index c4b1948..412fa46 100644 --- a/app/(app)/layout.tsx +++ b/app/(app)/layout.tsx @@ -1,12 +1,11 @@ +import * as multisig from "@sqds/multisig"; import { headers } from "next/headers"; -import Link from "next/link"; -import Image from "next/image"; import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js"; -import * as multisig from "@sqds/multisig"; -import { Toaster } from "@/components/ui/sonner"; -import ConnectWallet from "@/components/ConnectWalletButton"; import { LucideHome, ArrowDownUp, Users, Settings } from "lucide-react"; import RenderMultisigRoute from "@/components/RenderMultisigRoute"; +import Header from "@/components/ui/layout/header"; +import { ThemeProvider } from "next-themes"; +import { CustomToaster } from "@/components/ui/layout/custom-toaster"; const AppLayout = async ({ children }: { children: React.ReactNode }) => { const tabs = [ @@ -39,82 +38,15 @@ const AppLayout = async ({ children }: { children: React.ReactNode }) => { const multisig = await isValidPublicKey(multisigCookie!); return ( - -
- - - - - -
- - + + +
+
+ +
+ + + ); }; diff --git a/app/(app)/page.tsx b/app/(app)/page.tsx index 14b4f38..39ed420 100644 --- a/app/(app)/page.tsx +++ b/app/(app)/page.tsx @@ -1,8 +1,13 @@ +import * as multisig from "@sqds/multisig"; import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js"; import { cookies, headers } from "next/headers"; -import * as multisig from "@sqds/multisig"; +import Image from "next/image"; import { TokenList } from "@/components/TokenList"; import { VaultDisplayer } from "@/components/VaultDisplayer"; +import PageHeader from "@/components/ui/layout/page-header"; +import MyMultisigs from "@/components/ui/my-multisigs"; +import { lookupAddress } from "@/lib/helpers/tokenAddresses"; +import { FilteredToken } from "@/lib/types"; export default async function Home() { const rpcUrl = headers().get("x-rpc-url"); @@ -31,24 +36,47 @@ export default async function Home() { } ); + const tokens: FilteredToken[] = tokensInWallet.value.map((t) => { + const mint = t.account.data.parsed.info.mint; + const matched = lookupAddress(mint); + + if (matched) { + return { + ...t, + mint: mint, + symbol: matched.key, + icon: matched.icon, + }; + } else { + return { + ...t, + mint: mint, + symbol: null, + icon: null, + }; + } + }); + return (
-
-

Overview

- - - + +
+
+ + +
+
+ +
); diff --git a/app/(app)/settings/page.tsx b/app/(app)/settings/page.tsx index 8a51023..64e3c8d 100644 --- a/app/(app)/settings/page.tsx +++ b/app/(app)/settings/page.tsx @@ -1,40 +1,12 @@ -import SetProgramIdInput from "@/components/SetProgramIdInput"; -import SetRpcUrlInput from "@/components/SetRpcUrlnput"; -import { - Card, - CardContent, - CardDescription, - CardHeader, - CardTitle, -} from "@/components/ui/card"; +import PageHeader from "@/components/ui/layout/page-header"; +import RPCConfig from "@/components/ui/settings/RPCConfig"; const SettingsPage = () => { return ( -
-

Settings

-
- - - RPC Url - - Change the default RPC Url for this app. - - - - - - - - - Program ID - Change the targeted program ID. - - - - - -
-
+
+ + +
); }; diff --git a/app/(app)/transactions/page.tsx b/app/(app)/transactions/page.tsx index 62c41fe..8548cc9 100644 --- a/app/(app)/transactions/page.tsx +++ b/app/(app)/transactions/page.tsx @@ -1,37 +1,9 @@ import * as multisig from "@sqds/multisig"; import { cookies, headers } from "next/headers"; import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js"; -import { - Table, - TableBody, - TableCaption, - TableCell, - TableHead, - TableHeader, - TableRow, -} from "@/components/ui/table"; -import { - Pagination, - PaginationContent, - PaginationItem, - PaginationNext, - PaginationPrevious, -} from "@/components/ui/pagination"; -import Link from "next/link"; -import ApproveButton from "@/components/ApproveButton"; -import ExecuteButton from "@/components/ExecuteButton"; -import RejectButton from "@/components/RejectButton"; -import { Suspense } from "react"; - -const TRANSACTIONS_PER_PAGE = 10; - -interface ActionButtonsProps { - rpcUrl: string; - multisigPda: string; - transactionIndex: number; - proposalStatus: string; - programId: PublicKey; -} +import PageHeader from "@/components/ui/layout/page-header"; +import TransactionsTable from "@/components/ui/table/transactions-table"; +import { getRecentTransactions } from "@/lib/helpers/getRecentTransactions"; export default async function TransactionsPage({ params, @@ -40,185 +12,38 @@ export default async function TransactionsPage({ params: {}; searchParams: { page: string }; }) { - const page = searchParams.page ? parseInt(searchParams.page) : 1; const rpcUrl = headers().get("x-rpc-url"); const connection = new Connection(rpcUrl || clusterApiUrl("mainnet-beta")); + + const page = searchParams.page ? parseInt(searchParams.page) : 1; const multisigCookie = headers().get("x-multisig"); const multisigPda = new PublicKey(multisigCookie!); - const vaultIndex = Number(headers().get("x-vault-index")); - const programIdCookie = cookies().get("x-program-id")?.value; - const programId = programIdCookie - ? new PublicKey(programIdCookie!) - : multisig.PROGRAM_ID; + const programIdCookie = + cookies().get("x-program-id")?.value || multisig.PROGRAM_ID.toBase58(); const multisigInfo = await multisig.accounts.Multisig.fromAccountAddress( connection, multisigPda ); - const totalTransactions = Number(multisigInfo.transactionIndex); - const totalPages = Math.ceil(totalTransactions / TRANSACTIONS_PER_PAGE); - - if (page > totalPages) { - // Redirect to the last valid page if the requested page is out of range - return { - redirect: { - destination: `/transactions?page=${totalPages}`, - permanent: false, - }, - }; - } - - const startIndex = totalTransactions - (page - 1) * TRANSACTIONS_PER_PAGE; - const endIndex = Math.max(startIndex - TRANSACTIONS_PER_PAGE + 1, 1); - const latestTransactions = await Promise.all( - Array.from({ length: startIndex - endIndex + 1 }, (_, i) => { - const index = BigInt(startIndex - i); - return fetchTransactionData(connection, multisigPda, index, programId); - }) + const transactionIndex = Number(multisigInfo.transactionIndex); + const latestTransactions = await getRecentTransactions( + connection, + multisigPda, + transactionIndex, + page ); return (
-

Transactions

- - Loading...
}> - - A list of your recent transactions. - - Page: {page} of {totalPages} - - - - - Index - Public Key - Proposal Status - Actions - - - - {latestTransactions.map((transaction, index) => { - return ( - - {Number(transaction.index)} - - - {transaction.transactionPda[0].toBase58()} - - - - {transaction.proposal?.status.__kind || "Active"} - - - - - - ); - })} - -
- - - - - {page > 1 && ( - - - - )} - {page < totalPages && ( - - - - )} - - -
- ); -} - -async function fetchTransactionData( - connection: Connection, - multisigPda: PublicKey, - index: bigint, - programId: PublicKey -) { - const transactionPda = multisig.getTransactionPda({ - multisigPda, - index, - programId, - }); - const proposalPda = multisig.getProposalPda({ - multisigPda, - transactionIndex: index, - programId, - }); - - let proposal; - try { - proposal = await multisig.accounts.Proposal.fromAccountAddress( - connection, - proposalPda[0] - ); - } catch (error) { - proposal = null; - } - - return { transactionPda, proposal, index }; -} - -function ActionButtons({ - rpcUrl, - multisigPda, - transactionIndex, - proposalStatus, - programId, -}: ActionButtonsProps) { - return ( - <> - - + - - +
); } - -function createSolanaExplorerUrl(publicKey: string, rpcUrl: string): string { - const baseUrl = "https://explorer.solana.com/address/"; - const clusterQuery = "?cluster=custom&customUrl="; - const encodedRpcUrl = encodeURIComponent(rpcUrl); - - return `${baseUrl}${publicKey}${clusterQuery}${encodedRpcUrl}`; -} diff --git a/app/globals.css b/app/globals.css index 6a75725..accdc79 100644 --- a/app/globals.css +++ b/app/globals.css @@ -1,7 +1,27 @@ @tailwind base; @tailwind components; @tailwind utilities; - + +@font-face { + font-family: "NeueMontreal-Light"; + src: url(../public/fonts/NeueMontreal-Light.otf); +} + +@font-face { + font-family: "NeueMontreal-Regular"; + src: url(../public/fonts/NeueMontreal-Regular.otf); +} + +@font-face { + font-family: "NeueMontreal-Medium"; + src: url(../public/fonts/NeueMontreal-Medium.otf); +} + +@font-face { + font-family: "NeueMontreal-Bold"; + src: url(../public/fonts/NeueMontreal-Bold.otf); +} + @layer base { :root { --background: 0 0% 100%; @@ -9,68 +29,70 @@ --card: 0 0% 100%; --card-foreground: 222.2 84% 4.9%; - + --popover: 0 0% 100%; --popover-foreground: 222.2 84% 4.9%; - + --primary: 222.2 47.4% 11.2%; --primary-foreground: 210 40% 98%; - + --secondary: 210 40% 96.1%; --secondary-foreground: 222.2 47.4% 11.2%; - + --muted: 210 40% 96.1%; --muted-foreground: 215.4 16.3% 46.9%; - + --accent: 210 40% 96.1%; --accent-foreground: 222.2 47.4% 11.2%; - + --destructive: 0 84.2% 60.2%; --destructive-foreground: 210 40% 98%; --border: 214.3 31.8% 91.4%; --input: 214.3 31.8% 91.4%; --ring: 222.2 84% 4.9%; - + --radius: 0.5rem; } - + .dark { --background: 222.2 84% 4.9%; --foreground: 210 40% 98%; - + --card: 222.2 84% 4.9%; --card-foreground: 210 40% 98%; - + --popover: 222.2 84% 4.9%; --popover-foreground: 210 40% 98%; - + --primary: 210 40% 98%; --primary-foreground: 222.2 47.4% 11.2%; - + --secondary: 217.2 32.6% 17.5%; --secondary-foreground: 210 40% 98%; - + --muted: 217.2 32.6% 17.5%; --muted-foreground: 215 20.2% 65.1%; - + --accent: 217.2 32.6% 17.5%; --accent-foreground: 210 40% 98%; - + --destructive: 0 62.8% 30.6%; --destructive-foreground: 210 40% 98%; - + --border: 217.2 32.6% 17.5%; --input: 217.2 32.6% 17.5%; --ring: 212.7 26.8% 83.9%; } } - + @layer base { * { @apply border-border; } body { - @apply bg-background text-foreground; + @apply bg-lightbackground dark:bg-darkbackground; + background-size: cover; + background-position: 0px 0px; } -} \ No newline at end of file +} diff --git a/app/layout.tsx b/app/layout.tsx index bfc256b..2f14c46 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,14 +1,11 @@ import type { Metadata } from "next"; -import { Inter } from "next/font/google"; import "./globals.css"; -import { Wallet } from "@/components/Wallet"; - -const inter = Inter({ subsets: ["latin"] }); +import { SolanaProvider } from "@/providers/SolanaProvider"; +import { headers } from "next/headers"; export const metadata: Metadata = { title: "Squads Simplified", - description: - "Squads v4 program user interface.", + description: "Squads v4 program user interface.", }; export default function RootLayout({ @@ -16,11 +13,10 @@ export default function RootLayout({ }: { children: React.ReactNode; }) { + const rpcUrl = headers().get("x-rpc-url"); return ( - - {children} - + {children} ); } diff --git a/components/AddMemberInput.tsx b/components/AddMemberInput.tsx index b66e5d3..a1f41e8 100644 --- a/components/AddMemberInput.tsx +++ b/components/AddMemberInput.tsx @@ -1,7 +1,7 @@ "use client"; import { useRouter } from "next/navigation"; -import { Button } from "./ui/button"; -import { Input } from "./ui/input"; +import { Button } from "./ui/primitives/button"; +import { Input } from "./ui/primitives/input"; import { useWallet } from "@solana/wallet-adapter-react"; import { useState } from "react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; @@ -111,6 +111,7 @@ const AddMemberInput = ({ }) } disabled={!isPublickey(member)} + className="font-neue bg-gradient-to-br from-stone-600 to-stone-800 text-white dark:bg-gradient-to-br dark:from-white dark:to-stone-400 dark:text-stone-700 hover:bg-gradient-to-br hover:from-stone-600 hover:to-stone-700 disabled:text-stone-500 disabled:bg-gradient-to-br disabled:from-stone-800 disabled:to-stone-900 dark:disabled:bg-gradient-to-br dark:disabled:from-stone-300 dark:disabled:to-stone-500 dark:disabled:text-stone-700/50 dark:hover:bg-stone-100 transition duration-200" > Add Member diff --git a/components/ApproveButton.tsx b/components/ApproveButton.tsx index 100240a..62fe00a 100644 --- a/components/ApproveButton.tsx +++ b/components/ApproveButton.tsx @@ -5,7 +5,7 @@ import { Transaction, clusterApiUrl, } from "@solana/web3.js"; -import { Button } from "./ui/button"; +import { Button } from "./ui/primitives/button"; import * as multisig from "@sqds/multisig"; import { useWallet } from "@solana/wallet-adapter-react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; @@ -99,7 +99,7 @@ const ApproveButton = ({ error: (e) => `Failed to approve: ${e}`, }) } - className="mr-2" + className="font-neue bg-gradient-to-br from-stone-600 to-stone-800 text-white dark:bg-gradient-to-br dark:from-white dark:to-stone-400 dark:text-stone-700 hover:bg-gradient-to-br hover:from-stone-600 hover:to-stone-700 disabled:text-stone-500 disabled:bg-gradient-to-br disabled:from-stone-800 disabled:to-stone-900 dark:disabled:bg-gradient-to-br dark:disabled:from-stone-300 dark:disabled:to-stone-500 dark:disabled:text-stone-700/50 dark:hover:bg-stone-100 transition duration-200" > Approve diff --git a/components/ChangeThresholdInput.tsx b/components/ChangeThresholdInput.tsx index c603373..27b2d77 100644 --- a/components/ChangeThresholdInput.tsx +++ b/components/ChangeThresholdInput.tsx @@ -1,7 +1,7 @@ "use client"; import { useRouter } from "next/navigation"; -import { Button } from "./ui/button"; -import { Input } from "./ui/input"; +import { Button } from "./ui/primitives/button"; +import { Input } from "./ui/primitives/input"; import { useWallet } from "@solana/wallet-adapter-react"; import { useState } from "react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; @@ -91,7 +91,7 @@ const ChangeThresholdInput = ({ return (
setThreshold(e.target.value)} className="mb-3" @@ -106,6 +106,7 @@ const ChangeThresholdInput = ({ }) } disabled={!threshold} + className="font-neue bg-gradient-to-br from-stone-600 to-stone-800 text-white dark:bg-gradient-to-br dark:from-white dark:to-stone-400 dark:text-stone-700 hover:bg-gradient-to-br hover:from-stone-600 hover:to-stone-700 disabled:text-stone-500 disabled:bg-gradient-to-br disabled:from-stone-800 disabled:to-stone-900 dark:disabled:bg-gradient-to-br dark:disabled:from-stone-300 dark:disabled:to-stone-500 dark:disabled:text-stone-700/50 dark:hover:bg-stone-100 transition duration-200" > Change Threshold diff --git a/components/ChangeUpgradeAuthorityInput.tsx b/components/ChangeUpgradeAuthorityInput.tsx index 3182b9d..e40ad90 100644 --- a/components/ChangeUpgradeAuthorityInput.tsx +++ b/components/ChangeUpgradeAuthorityInput.tsx @@ -1,7 +1,7 @@ "use client"; import { useRouter } from "next/navigation"; -import { Button } from "./ui/button"; -import { Input } from "./ui/input"; +import { Button } from "./ui/primitives/button"; +import { Input } from "./ui/primitives/input"; import { useWallet } from "@solana/wallet-adapter-react"; import { useState } from "react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; @@ -169,6 +169,7 @@ const ChangeUpgradeAuthorityInput = ({ }) } disabled={!isPublickey(programId) || !isPublickey(newAuthority)} + className="font-neue bg-gradient-to-br from-stone-600 to-stone-800 text-white dark:bg-gradient-to-br dark:from-white dark:to-stone-400 dark:text-stone-700 hover:bg-gradient-to-br hover:from-stone-600 hover:to-stone-700 disabled:text-stone-500 disabled:bg-gradient-to-br disabled:from-stone-800 disabled:to-stone-900 dark:disabled:bg-gradient-to-br dark:disabled:from-stone-300 dark:disabled:to-stone-500 dark:disabled:text-stone-700/50 dark:hover:bg-stone-100 transition duration-200" > Change Authority diff --git a/components/ConnectWalletButton.tsx b/components/ConnectWalletButton.tsx index 69bdb72..fb764b8 100644 --- a/components/ConnectWalletButton.tsx +++ b/components/ConnectWalletButton.tsx @@ -1,6 +1,6 @@ "use client"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; -import { Button } from "./ui/button"; +import { Button } from "./ui/primitives/button"; import { useWallet } from "@solana/wallet-adapter-react"; const ConnectWallet = () => { diff --git a/components/ExecuteButton.tsx b/components/ExecuteButton.tsx index a0c9b49..e420a7c 100644 --- a/components/ExecuteButton.tsx +++ b/components/ExecuteButton.tsx @@ -9,17 +9,21 @@ import { VersionedTransaction, clusterApiUrl, } from "@solana/web3.js"; -import { Button } from "./ui/button"; +import { Button } from "./ui/primitives/button"; import * as multisig from "@sqds/multisig"; import { useWallet } from "@solana/wallet-adapter-react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; import { toast } from "sonner"; import { useRouter } from "next/navigation"; -import { Dialog, DialogDescription, DialogHeader } from "./ui/dialog"; -import { DialogTrigger } from "./ui/dialog"; -import { DialogContent, DialogTitle } from "./ui/dialog"; +import { + Dialog, + DialogDescription, + DialogHeader, +} from "./ui/primitives/dialog"; +import { DialogTrigger } from "./ui/primitives/dialog"; +import { DialogContent, DialogTitle } from "./ui/primitives/dialog"; import { useState } from "react"; -import { Input } from "./ui/input"; +import { Input } from "./ui/primitives/input"; type WithALT = { instruction: TransactionInstruction; @@ -161,7 +165,10 @@ const ExecuteButton = ({ return ( - diff --git a/components/MultisigInput.tsx b/components/MultisigInput.tsx index a9d277f..96fa474 100644 --- a/components/MultisigInput.tsx +++ b/components/MultisigInput.tsx @@ -1,8 +1,8 @@ "use client"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import { Input } from "./ui/input"; -import { Button } from "./ui/button"; +import { Input } from "./ui/primitives/input"; +import { Button } from "./ui/primitives/button"; const MultisigInput = () => { const [multisig, setMultisig] = useState(""); diff --git a/components/RejectButton.tsx b/components/RejectButton.tsx index 87d759f..699660b 100644 --- a/components/RejectButton.tsx +++ b/components/RejectButton.tsx @@ -5,7 +5,7 @@ import { Transaction, clusterApiUrl, } from "@solana/web3.js"; -import { Button } from "./ui/button"; +import { Button } from "./ui/primitives/button"; import * as multisig from "@sqds/multisig"; import { useWallet } from "@solana/wallet-adapter-react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; @@ -103,7 +103,7 @@ const RejectButton = ({ error: (e) => `Failed to reject: ${e}`, }) } - className="mr-2" + className="font-neue bg-gradient-to-br from-stone-600 to-stone-800 text-white dark:bg-gradient-to-br dark:from-white dark:to-stone-400 dark:text-stone-700 hover:bg-gradient-to-br hover:from-stone-600 hover:to-stone-700 disabled:text-stone-500 disabled:bg-gradient-to-br disabled:from-stone-800 disabled:to-stone-900 dark:disabled:bg-gradient-to-br dark:disabled:from-stone-300 dark:disabled:to-stone-500 dark:disabled:text-stone-700/50 dark:hover:bg-stone-100 transition duration-200" > Reject diff --git a/components/RemoveMemberButton.tsx b/components/RemoveMemberButton.tsx index 8c59421..4c29894 100644 --- a/components/RemoveMemberButton.tsx +++ b/components/RemoveMemberButton.tsx @@ -5,7 +5,7 @@ import { TransactionMessage, VersionedTransaction, } from "@solana/web3.js"; -import { Button } from "./ui/button"; +import { Button } from "./ui/primitives/button"; import * as multisig from "@sqds/multisig"; import { useWallet } from "@solana/wallet-adapter-react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; @@ -100,6 +100,7 @@ const RemoveMemberButton = ({ error: (e) => `Failed to propose: ${e}`, }) } + className="font-neue bg-gradient-to-br from-stone-600 to-stone-800 text-white dark:bg-gradient-to-br dark:from-white dark:to-stone-400 dark:text-stone-700 hover:bg-gradient-to-br hover:from-stone-600 hover:to-stone-700 disabled:text-stone-500 disabled:bg-gradient-to-br disabled:from-stone-800 disabled:to-stone-900 dark:disabled:bg-gradient-to-br dark:disabled:from-stone-300 dark:disabled:to-stone-500 dark:disabled:text-stone-600 dark:hover:bg-stone-100 transition duration-200" > Remove diff --git a/components/RenderMultisigRoute.tsx b/components/RenderMultisigRoute.tsx index 478fca2..27127d6 100644 --- a/components/RenderMultisigRoute.tsx +++ b/components/RenderMultisigRoute.tsx @@ -14,7 +14,7 @@ export default function RenderMultisigRoute({ const pathname = usePathname(); return ( -
+
{multisig ? (
{children}
) : ( @@ -26,6 +26,6 @@ export default function RenderMultisigRoute({ )} )} -
+ ); } diff --git a/components/SendSolButton.tsx b/components/SendSolButton.tsx index 2c5d181..32345b1 100644 --- a/components/SendSolButton.tsx +++ b/components/SendSolButton.tsx @@ -6,8 +6,8 @@ import { DialogHeader, DialogTitle, DialogTrigger, -} from "@/components/ui/dialog"; -import { Button } from "./ui/button"; +} from "@/components/ui/primitives/dialog"; +import { Button } from "./ui/primitives/button"; import { useState } from "react"; import * as multisig from "@sqds/multisig"; import { useWallet } from "@solana/wallet-adapter-react"; @@ -21,7 +21,7 @@ import { clusterApiUrl, } from "@solana/web3.js"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; -import { Input } from "./ui/input"; +import { Input } from "./ui/primitives/input"; import { toast } from "sonner"; import { useRouter } from "next/navigation"; import { isPublickey } from "@/lib/isPublickey"; diff --git a/components/SendTokensButton.tsx b/components/SendTokensButton.tsx index 972fdae..760f61c 100644 --- a/components/SendTokensButton.tsx +++ b/components/SendTokensButton.tsx @@ -6,8 +6,8 @@ import { DialogHeader, DialogTitle, DialogTrigger, -} from "@/components/ui/dialog"; -import { Button } from "./ui/button"; +} from "@/components/ui/primitives/dialog"; +import { Button } from "./ui/primitives/button"; import { useState } from "react"; import { createAssociatedTokenAccountIdempotentInstruction, @@ -24,7 +24,7 @@ import { clusterApiUrl, } from "@solana/web3.js"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; -import { Input } from "./ui/input"; +import { Input } from "./ui/primitives/input"; import { toast } from "sonner"; import { useRouter } from "next/navigation"; import { isPublickey } from "@/lib/isPublickey"; @@ -190,6 +190,7 @@ const SendTokens = ({ }) } disabled={!isPublickey(recipient)} + className="font-neue bg-gradient-to-br from-stone-600 to-stone-800 text-white dark:bg-gradient-to-br dark:from-white dark:to-stone-400 dark:text-stone-700 hover:bg-gradient-to-br hover:from-stone-600 hover:to-stone-700 disabled:text-stone-500 disabled:bg-gradient-to-br disabled:from-stone-800 disabled:to-stone-900 dark:disabled:bg-gradient-to-br dark:disabled:from-stone-300 dark:disabled:to-stone-500 dark:disabled:text-stone-700/50 dark:hover:bg-stone-100 transition duration-200" > Transfer diff --git a/components/SetRpcUrlnput.tsx b/components/SetRpcUrlnput.tsx index 92bd059..cdbb8fe 100644 --- a/components/SetRpcUrlnput.tsx +++ b/components/SetRpcUrlnput.tsx @@ -1,7 +1,7 @@ "use client"; import { useState } from "react"; -import { Input } from "./ui/input"; -import { Button } from "./ui/button"; +import { Input } from "./ui/primitives/input"; +import { Button } from "./ui/primitives/button"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; @@ -43,16 +43,15 @@ const SetRpcUrlInput = () => {

Please enter a valid URL.

)} diff --git a/components/TokenList.tsx b/components/TokenList.tsx index 31e51b0..377ace7 100644 --- a/components/TokenList.tsx +++ b/components/TokenList.tsx @@ -11,18 +11,16 @@ import { CardDescription, CardHeader, CardTitle, -} from "./ui/card"; +} from "./ui/primitives/card"; import SendTokens from "./SendTokensButton"; +import { Coins } from "lucide-react"; +import { FilteredToken } from "@/lib/types"; +import Image from "next/image"; import SendSol from "./SendSolButton"; type TokenListProps = { solBalance: number; - tokens: RpcResponseAndContext< - { - pubkey: PublicKey; - account: AccountInfo; - }[] - >; + tokens: FilteredToken[]; rpcUrl: string; multisigPda: string; vaultIndex: number; @@ -38,60 +36,103 @@ export function TokenList({ programId, }: TokenListProps) { return ( - + - Tokens - The tokens you hold in your wallet + Assets + + Current token assets in your vault. + -
-
-
-
-

SOL

-

- Amount: {solBalance / LAMPORTS_PER_SOL} -

-
-
- +
+
+
+ SOL Icon +
+

+ SOL +

+
+

+ Amount: {solBalance / LAMPORTS_PER_SOL} +

+
+
- {tokens.value.length > 0 ?
: null} +
+ +
- {tokens.value.map((token) => ( -
-
-
-

- Mint: {token.account.data.parsed.info.mint} -

-

- Amount:{" "} - {token.account.data.parsed.info.tokenAmount.uiAmount} -

-
-
- + {tokens.map((token, i) => ( + <> +
+
+
+ {token.icon && token.symbol ? ( +
+
+ Token Icon +
+

+ {token.symbol} +

+
+

+ Amount:{" "} + { + token.account.data.parsed.info.tokenAmount + .uiAmount + } +

+
+
+
+
+ ) : ( +
+

+ Mint: {token.mint} +

+

+ Amount:{" "} + {token.account.data.parsed.info.tokenAmount.uiAmount} +

+
+ )} +
+ +
-
-
+ ))}
diff --git a/components/VaultDisplayer.tsx b/components/VaultDisplayer.tsx index 7d9cb21..b5b6260 100644 --- a/components/VaultDisplayer.tsx +++ b/components/VaultDisplayer.tsx @@ -1,7 +1,8 @@ import * as multisig from "@sqds/multisig"; -import { Card, CardContent, CardHeader, CardTitle } from "./ui/card"; +import { Card, CardContent, CardHeader, CardTitle } from "./ui/primitives/card"; import { PublicKey } from "@solana/web3.js"; import { VaultSelector } from "./VaultSelector"; +import CopyTextButton from "./ui/misc/copy-text"; type VaultDisplayerProps = { multisigPdaString: string; @@ -21,13 +22,24 @@ export function VaultDisplayer({ }); return ( - + - Squads Vault + Current Vault - -

Address: {vaultAddress[0].toBase58()}

-
+ +
+ + Account {vaultIndex}:{" "} + +
+

+ {vaultAddress[0].toBase58().slice(0, 4) + + "..." + + vaultAddress[0].toBase58().slice(-4)} +

+ +
+
diff --git a/components/VaultSelector.tsx b/components/VaultSelector.tsx index a3db12a..9c2ee6c 100644 --- a/components/VaultSelector.tsx +++ b/components/VaultSelector.tsx @@ -3,19 +3,19 @@ import * as React from "react"; import { Check, ChevronsUpDown } from "lucide-react"; import { cn } from "@/lib/utils"; -import { Button } from "@/components/ui/button"; +import { Button } from "@/components/ui/primitives/button"; import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, -} from "@/components/ui/command"; +} from "@/components/ui/primitives/command"; import { Popover, PopoverContent, PopoverTrigger, -} from "@/components/ui/popover"; +} from "@/components/ui/primitives/popover"; import { useRouter } from "next/navigation"; // Generate vault indices from 0 to 255 @@ -42,17 +42,20 @@ export function VaultSelector() { variant="outline" role="combobox" aria-expanded={open} - className="w-[200px] justify-between" + className="w-[200px] justify-between font-neue bg-gradient-to-br from-stone-600 to-stone-800 text-white hover:text-white dark:bg-gradient-to-br dark:from-white dark:to-stone-400 dark:text-stone-700 hover:bg-gradient-to-br hover:from-stone-600 hover:to-stone-700 disabled:text-stone-500 disabled:bg-gradient-to-br disabled:from-stone-800 disabled:to-stone-900 dark:disabled:bg-gradient-to-br dark:disabled:from-stone-300 dark:disabled:to-stone-500 dark:disabled:text-stone-700/50 dark:hover:bg-stone-100 transition duration-200" > {value ? `Vault ${value}` : "Select Vault Index..."} - - - + + + No vault index found. - + {vaultIndices.map((vaultIndex) => ( +

{label}

+
+ ); +} diff --git a/components/ui/input.tsx b/components/ui/input.tsx deleted file mode 100644 index 677d05f..0000000 --- a/components/ui/input.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as React from "react" - -import { cn } from "@/lib/utils" - -export interface InputProps - extends React.InputHTMLAttributes {} - -const Input = React.forwardRef( - ({ className, type, ...props }, ref) => { - return ( - - ) - } -) -Input.displayName = "Input" - -export { Input } diff --git a/components/ui/layout/connect-button.tsx b/components/ui/layout/connect-button.tsx new file mode 100644 index 0000000..c6b621e --- /dev/null +++ b/components/ui/layout/connect-button.tsx @@ -0,0 +1,120 @@ +"use client"; +import { Wallet, useWallet } from "@solana/wallet-adapter-react"; +import Image from "next/image"; +import WalletModal from "../wallet-modal"; +import { Fragment, useState } from "react"; +import { + Menu, + MenuButton, + MenuItem, + MenuItems, + Transition, +} from "@headlessui/react"; +import { cn } from "@/lib/utils"; +import { Eye, LogOut } from "lucide-react"; +import Link from "next/link"; +import { PublicKey } from "@solana/web3.js"; + +export default function ConnectButton() { + const { connected, publicKey, wallet, disconnect } = useWallet(); + const [open, setOpen] = useState(false); + + return ( + <> + + {connected ? ( + + ) : ( + + )} + + ); +} + +function ConnectedState({ + publicKey, + wallet, + disconnect, +}: { + publicKey: PublicKey; + wallet: Wallet; + disconnect: () => void; +}) { + return ( + +
+ + + +
+ + +
+ + {({ active }) => ( + + + View Squad + + )} + + + {({ active }) => ( + + )} + +
+
+
+
+ ); +} diff --git a/components/ui/layout/custom-toaster.tsx b/components/ui/layout/custom-toaster.tsx new file mode 100644 index 0000000..d8c0329 --- /dev/null +++ b/components/ui/layout/custom-toaster.tsx @@ -0,0 +1,27 @@ +import { CheckCheckIcon, XCircle } from "lucide-react"; +import { Toaster } from "sonner"; + +export function CustomToaster() { + return ( + + ), + error: , + }} + toastOptions={{ + duration: 7500, + style: { + fontFamily: "NeueMontreal-Regular", + background: "#242426", + border: "1px solid rgba(169, 169, 169, 0.3)", + borderRadius: "10px", + padding: "1rem", + color: "#fff", + }, + }} + /> + ); +} diff --git a/components/ui/layout/header.tsx b/components/ui/layout/header.tsx new file mode 100644 index 0000000..5ec67db --- /dev/null +++ b/components/ui/layout/header.tsx @@ -0,0 +1,81 @@ +"use client"; +import Image from "next/image"; +import Link from "next/link"; +import ConnectButton from "./connect-button"; +import Pill from "../pill"; +import { usePathname } from "next/navigation"; +import { useWallet } from "@solana/wallet-adapter-react"; +import { useTheme } from "next-themes"; +import LightDarkButton from "./light-dark-button"; + +export default function Header() { + const pathname = usePathname(); + const { connected } = useWallet(); + const { theme } = useTheme(); + + return ( + <> +
+
+ + + +
+
+ + Home + + + Transactions + + + Config + + + Settings + +
+
+
+ {connected && ( + + )} +
+ + +
+
+
+
+ + ); +} diff --git a/components/ui/layout/light-dark-button.tsx b/components/ui/layout/light-dark-button.tsx new file mode 100644 index 0000000..c746d8b --- /dev/null +++ b/components/ui/layout/light-dark-button.tsx @@ -0,0 +1,19 @@ +import { MoonIcon, SunIcon } from "lucide-react"; +import { useTheme } from "next-themes"; + +export default function LightDarkButton() { + const { systemTheme, theme, setTheme } = useTheme(); + theme === "system" ? systemTheme : theme; + function changeTheme() { + theme == "dark" ? setTheme("light") : setTheme("dark"); + } + return ( + + ); +} diff --git a/components/ui/layout/page-header.tsx b/components/ui/layout/page-header.tsx new file mode 100644 index 0000000..f7f6100 --- /dev/null +++ b/components/ui/layout/page-header.tsx @@ -0,0 +1,21 @@ +"use client"; +import { motion } from "framer-motion"; + +export default function PageHeader({ heading }: { heading: string }) { + return ( + +

+ {heading} +

+
+
+ ); +} diff --git a/components/ui/misc/copy-text.tsx b/components/ui/misc/copy-text.tsx new file mode 100644 index 0000000..8646411 --- /dev/null +++ b/components/ui/misc/copy-text.tsx @@ -0,0 +1,19 @@ +"use client"; +import { Copy } from "lucide-react"; +import { toast } from "sonner"; + +export default function CopyTextButton({ text }: { text: string }) { + const copyText = async (text: string) => { + await navigator.clipboard.writeText(text); + toast.success("Copied to clipboard.", { duration: 5000 }); + }; + + return ( + + ); +} diff --git a/components/ui/my-multisigs.tsx b/components/ui/my-multisigs.tsx new file mode 100644 index 0000000..3a96408 --- /dev/null +++ b/components/ui/my-multisigs.tsx @@ -0,0 +1,214 @@ +"use client"; +import { useWallet } from "@solana/wallet-adapter-react"; +import Image from "next/image"; +import { useEffect, useState } from "react"; +import { MultisigInfo } from "@/lib/types"; +import { nFormatter } from "@/lib/nFormatter"; +import Link from "next/link"; +import { getCachedSquads } from "@/lib/helpers/getCachedMultisigs"; +import { toast } from "sonner"; +import { getMultisigs } from "@/lib/helpers/getMultisigs"; +import { Connection, clusterApiUrl } from "@solana/web3.js"; +import { AlertOctagon, RefreshCw } from "lucide-react"; +import Loading from "./primitives/loading"; +import { Button } from "./primitives/button"; +import { Card, CardContent, CardHeader, CardTitle } from "./primitives/card"; +import { useRouter } from "next/navigation"; + +export default function MyMultisigs({ rpc }: { rpc: string }) { + const router = useRouter(); + const { publicKey, connected } = useWallet(); + const [loading, setLoading] = useState(false); + const [accounts, setAccounts] = useState([]); + + const connection = new Connection(rpc || clusterApiUrl("mainnet-beta")); + + const getAccounts = async () => { + if (publicKey) { + setLoading(true); + try { + console.log("Trying cache..."); + const localCache = localStorage.getItem("cached-multisigs"); + const parsed = JSON.parse(localCache!)!; + + if (parsed !== null && parsed.ttl > Date.now()) { + console.log("Cache found & valid, updating..."); + + const cachedData = await getCachedSquads(connection, parsed); + setAccounts(cachedData.multisigs); + } else { + console.log("No cache found, fetching..."); + toast("Fetching Squads Accounts. This may take up to two minutes."); + + const fetchedAccounts = await getMultisigs(connection, publicKey); + setAccounts(fetchedAccounts); + + localStorage.setItem( + "cached-multisigs", + JSON.stringify({ + multisigs: fetchedAccounts, + // 24 hours + ttl: Date.now() + 24 * 60 * 60 * 1000, + }) + ); + } + } catch (e) { + console.error(e); + toast.error(`Error fetching: ${e}`); + } finally { + setLoading(false); + } + } else { + setAccounts([]); + } + }; + + async function refresh() { + try { + setLoading(true); + localStorage.removeItem("cached-multisigs"); + await getAccounts(); + } catch (e) { + console.error(e); + toast.error(`Error refreshing: ${e}`); + } finally { + setLoading(false); + } + } + + const setMultisigCookie = (multisig: string) => { + document.cookie = `x-multisig=${multisig}; path=/`; + router.refresh(); + }; + + useEffect(() => { + getAccounts(); + }, [publicKey]); + + if (loading) { + return ( + <> + + +
+
+ My Squads + +
+ + + +
+
+ +
+ +
+
+
+ + ); + } + + return ( + + +
+
+ My Squads + +
+ + + +
+
+ + {accounts.length != 0 && connected ? ( + <> +
+ {accounts + .sort((a, b) => b.balance.total - a.balance.total) + .map((acc, i) => ( + <> + {i > 0 && i < accounts.length && ( +
+ )} + + + ))} +
+ + ) : ( +
+
+
+ +
+

+ No Squads Yet. +

+

+ Click below to deploy your first Squad. +

+
+ + + +
+
+
+ )} +
+
+ ); +} diff --git a/components/ui/pill.tsx b/components/ui/pill.tsx new file mode 100644 index 0000000..98e5387 --- /dev/null +++ b/components/ui/pill.tsx @@ -0,0 +1,33 @@ +import Image from "next/image"; + +interface PillProps { + label: string; + value: string; + image?: string; +} + +export default function Pill({ label, value, image }: PillProps) { + return ( +
+ {image && ( +
+ {label} +
+ )} +

+ {label}{" "} + + {value} + +

+
+ ); +} diff --git a/components/ui/popover.tsx b/components/ui/popover.tsx deleted file mode 100644 index a0ec48b..0000000 --- a/components/ui/popover.tsx +++ /dev/null @@ -1,31 +0,0 @@ -"use client" - -import * as React from "react" -import * as PopoverPrimitive from "@radix-ui/react-popover" - -import { cn } from "@/lib/utils" - -const Popover = PopoverPrimitive.Root - -const PopoverTrigger = PopoverPrimitive.Trigger - -const PopoverContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, align = "center", sideOffset = 4, ...props }, ref) => ( - - - -)) -PopoverContent.displayName = PopoverPrimitive.Content.displayName - -export { Popover, PopoverTrigger, PopoverContent } diff --git a/components/ui/button.tsx b/components/ui/primitives/button.tsx similarity index 100% rename from components/ui/button.tsx rename to components/ui/primitives/button.tsx diff --git a/components/ui/card.tsx b/components/ui/primitives/card.tsx similarity index 100% rename from components/ui/card.tsx rename to components/ui/primitives/card.tsx diff --git a/components/ui/command.tsx b/components/ui/primitives/command.tsx similarity index 84% rename from components/ui/command.tsx rename to components/ui/primitives/command.tsx index 17cc641..81ae102 100644 --- a/components/ui/command.tsx +++ b/components/ui/primitives/command.tsx @@ -1,12 +1,12 @@ -"use client" +"use client"; -import * as React from "react" -import { type DialogProps } from "@radix-ui/react-dialog" -import { Command as CommandPrimitive } from "cmdk" -import { Search } from "lucide-react" +import * as React from "react"; +import { type DialogProps } from "@radix-ui/react-dialog"; +import { Command as CommandPrimitive } from "cmdk"; +import { Search } from "lucide-react"; -import { cn } from "@/lib/utils" -import { Dialog, DialogContent } from "@/components/ui/dialog" +import { cn } from "@/lib/utils"; +import { Dialog, DialogContent } from "@/components/ui/primitives/dialog"; const Command = React.forwardRef< React.ElementRef, @@ -20,8 +20,8 @@ const Command = React.forwardRef< )} {...props} /> -)) -Command.displayName = CommandPrimitive.displayName +)); +Command.displayName = CommandPrimitive.displayName; interface CommandDialogProps extends DialogProps {} @@ -34,8 +34,8 @@ const CommandDialog = ({ children, ...props }: CommandDialogProps) => {
- ) -} + ); +}; const CommandInput = React.forwardRef< React.ElementRef, @@ -52,9 +52,9 @@ const CommandInput = React.forwardRef< {...props} />
-)) +)); -CommandInput.displayName = CommandPrimitive.Input.displayName +CommandInput.displayName = CommandPrimitive.Input.displayName; const CommandList = React.forwardRef< React.ElementRef, @@ -65,9 +65,9 @@ const CommandList = React.forwardRef< className={cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className)} {...props} /> -)) +)); -CommandList.displayName = CommandPrimitive.List.displayName +CommandList.displayName = CommandPrimitive.List.displayName; const CommandEmpty = React.forwardRef< React.ElementRef, @@ -78,9 +78,9 @@ const CommandEmpty = React.forwardRef< className="py-6 text-center text-sm" {...props} /> -)) +)); -CommandEmpty.displayName = CommandPrimitive.Empty.displayName +CommandEmpty.displayName = CommandPrimitive.Empty.displayName; const CommandGroup = React.forwardRef< React.ElementRef, @@ -94,9 +94,9 @@ const CommandGroup = React.forwardRef< )} {...props} /> -)) +)); -CommandGroup.displayName = CommandPrimitive.Group.displayName +CommandGroup.displayName = CommandPrimitive.Group.displayName; const CommandSeparator = React.forwardRef< React.ElementRef, @@ -107,8 +107,8 @@ const CommandSeparator = React.forwardRef< className={cn("-mx-1 h-px bg-border", className)} {...props} /> -)) -CommandSeparator.displayName = CommandPrimitive.Separator.displayName +)); +CommandSeparator.displayName = CommandPrimitive.Separator.displayName; const CommandItem = React.forwardRef< React.ElementRef, @@ -122,9 +122,9 @@ const CommandItem = React.forwardRef< )} {...props} /> -)) +)); -CommandItem.displayName = CommandPrimitive.Item.displayName +CommandItem.displayName = CommandPrimitive.Item.displayName; const CommandShortcut = ({ className, @@ -138,9 +138,9 @@ const CommandShortcut = ({ )} {...props} /> - ) -} -CommandShortcut.displayName = "CommandShortcut" + ); +}; +CommandShortcut.displayName = "CommandShortcut"; export { Command, @@ -152,4 +152,4 @@ export { CommandItem, CommandShortcut, CommandSeparator, -} +}; diff --git a/components/ui/dialog.tsx b/components/ui/primitives/dialog.tsx similarity index 100% rename from components/ui/dialog.tsx rename to components/ui/primitives/dialog.tsx diff --git a/components/ui/primitives/input.tsx b/components/ui/primitives/input.tsx new file mode 100644 index 0000000..d9c8fad --- /dev/null +++ b/components/ui/primitives/input.tsx @@ -0,0 +1,25 @@ +import * as React from "react"; + +import { cn } from "@/lib/utils"; + +export interface InputProps + extends React.InputHTMLAttributes {} + +const Input = React.forwardRef( + ({ className, type, ...props }, ref) => { + return ( + + ); + } +); +Input.displayName = "Input"; + +export { Input }; diff --git a/components/ui/primitives/loading.tsx b/components/ui/primitives/loading.tsx new file mode 100644 index 0000000..065d618 --- /dev/null +++ b/components/ui/primitives/loading.tsx @@ -0,0 +1,83 @@ +import { FC } from "react"; + +interface LoadingProps { + fills?: string[]; +} + +const Loading: FC = ({ fills = ["#E6E6E6", "#A9A9A9"] }) => { + return ( + + + + + + + + + + + + + + + ); +}; + +export default Loading; diff --git a/components/ui/pagination.tsx b/components/ui/primitives/pagination.tsx similarity index 97% rename from components/ui/pagination.tsx rename to components/ui/primitives/pagination.tsx index aaf85fa..4148d6a 100644 --- a/components/ui/pagination.tsx +++ b/components/ui/primitives/pagination.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import { ChevronLeft, ChevronRight, MoreHorizontal } from "lucide-react"; import { cn } from "@/lib/utils"; -import { ButtonProps, buttonVariants } from "@/components/ui/button"; +import { ButtonProps, buttonVariants } from "@/components/ui/primitives/button"; import Link from "next/link"; const Pagination = ({ className, ...props }: React.ComponentProps<"nav">) => ( diff --git a/components/ui/primitives/popover.tsx b/components/ui/primitives/popover.tsx new file mode 100644 index 0000000..c52dbfd --- /dev/null +++ b/components/ui/primitives/popover.tsx @@ -0,0 +1,31 @@ +"use client"; + +import * as React from "react"; +import * as PopoverPrimitive from "@radix-ui/react-popover"; + +import { cn } from "@/lib/utils"; + +const Popover = PopoverPrimitive.Root; + +const PopoverTrigger = PopoverPrimitive.Trigger; + +const PopoverContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, align = "center", sideOffset = 4, ...props }, ref) => ( + + + +)); +PopoverContent.displayName = PopoverPrimitive.Content.displayName; + +export { Popover, PopoverTrigger, PopoverContent }; diff --git a/components/ui/select.tsx b/components/ui/primitives/select.tsx similarity index 100% rename from components/ui/select.tsx rename to components/ui/primitives/select.tsx diff --git a/components/ui/primitives/skeleton.tsx b/components/ui/primitives/skeleton.tsx new file mode 100644 index 0000000..fee3105 --- /dev/null +++ b/components/ui/primitives/skeleton.tsx @@ -0,0 +1,15 @@ +import { cn } from "@/lib/utils"; + +function Skeleton({ + className, + ...props +}: React.HTMLAttributes) { + return ( +
+ ); +} + +export { Skeleton }; diff --git a/components/ui/sonner.tsx b/components/ui/primitives/sonner.tsx similarity index 100% rename from components/ui/sonner.tsx rename to components/ui/primitives/sonner.tsx diff --git a/components/ui/table.tsx b/components/ui/primitives/table.tsx similarity index 100% rename from components/ui/table.tsx rename to components/ui/primitives/table.tsx diff --git a/components/ui/primitives/tooltip.tsx b/components/ui/primitives/tooltip.tsx new file mode 100644 index 0000000..34102d4 --- /dev/null +++ b/components/ui/primitives/tooltip.tsx @@ -0,0 +1,27 @@ +import * as React from "react"; +import * as TooltipPrimitive from "@radix-ui/react-tooltip"; +import { cn } from "@/lib/utils"; + +const TooltipProvider = TooltipPrimitive.Provider; + +const Tooltip = TooltipPrimitive.Root; + +const TooltipTrigger = TooltipPrimitive.Trigger; + +const TooltipContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + +)); +TooltipContent.displayName = TooltipPrimitive.Content.displayName; + +export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }; diff --git a/components/ui/settings/RPCConfig.tsx b/components/ui/settings/RPCConfig.tsx new file mode 100644 index 0000000..402442e --- /dev/null +++ b/components/ui/settings/RPCConfig.tsx @@ -0,0 +1,94 @@ +"use client"; +import { motion } from "framer-motion"; +import { toast } from "sonner"; +import { Button } from "../primitives/button"; +import { Input } from "../primitives/input"; +import { useState } from "react"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "../primitives/card"; + +export default function RPCConfig() { + return ( + + + + RPC Endpoint + + Change the default RPC Url for this app. + + + + + + + + ); +} + +const SetRpcUrlInput = () => { + const [rpcUrl, setRpcUrl] = useState(""); + const isValidUrl = (url: string) => { + const urlPattern = new RegExp( + "^(https?:\\/\\/)?" + // validate protocol + "((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|" + // domain name + "((\\d{1,3}\\.){3}\\d{1,3}))" + // OR ip (v4) address + "(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*" + // port and path + "(\\?[;&a-z\\d%_.~+=-]*)?" + // query string + "(\\#[-a-z\\d_]*)?$", + "i" + ); + return !!urlPattern.test(url); + }; + + const onSubmit = async () => { + if (isValidUrl(rpcUrl)) { + document.cookie = `x-rpc-url=${rpcUrl}`; + setRpcUrl(""); + window.location.reload(); + } else { + throw "Please enter a valid URL."; + } + }; + + return ( +
+ setRpcUrl(e.target.value)} + placeholder="https://api.mainnet-beta.solana.com" + defaultValue={rpcUrl} + className="font-neue tracking-wide placeholder:font-neuelight focus-visible:ring-1 focus-visible:ring-[#A9A9A9]/75 focus-visible:ring-offset-0" + /> + {!isValidUrl(rpcUrl) && rpcUrl.length > 0 && ( +

+ Please enter a valid URL. +

+ )} + +
+ ); +}; diff --git a/components/ui/table/pagination.tsx b/components/ui/table/pagination.tsx new file mode 100644 index 0000000..d7e29c3 --- /dev/null +++ b/components/ui/table/pagination.tsx @@ -0,0 +1,40 @@ +"use client"; +import { + Pagination, + PaginationContent, + PaginationItem, + PaginationNext, + PaginationPrevious, +} from "../primitives/pagination"; + +export default function PaginationSection({ + page, + transactionsLength, +}: { + page: string; + transactionsLength: number; +}) { + return ( + + + {page != "1" || + (!page && ( + + + + ))} + {transactionsLength > 10 && ( + + + + )} + + + ); +} diff --git a/components/ui/table/table-head.tsx b/components/ui/table/table-head.tsx new file mode 100644 index 0000000..7397d21 --- /dev/null +++ b/components/ui/table/table-head.tsx @@ -0,0 +1,32 @@ +import { + TableCaption, + TableHeader, + TableHead, + TableRow, +} from "../primitives/table"; + +export default function TableHeadSection({ page }: { page: string }) { + return ( + <> + + + + Index + + + Transaction Account + + + Approved / Rejected + + + Proposal Status + + + Action(s) + + + + + ); +} diff --git a/components/ui/table/transaction-table-row.tsx b/components/ui/table/transaction-table-row.tsx new file mode 100644 index 0000000..df2141d --- /dev/null +++ b/components/ui/table/transaction-table-row.tsx @@ -0,0 +1,164 @@ +import Link from "next/link"; +import * as multisig from "@sqds/multisig"; +import { TableCell, TableRow } from "../primitives/table"; +import { createExplorerUrl } from "@/lib/helpers/createExplorerUrl"; +import { PublicKey, clusterApiUrl } from "@solana/web3.js"; +import ApproveButton from "@/components/ApproveButton"; +import RejectButton from "@/components/RejectButton"; +import ExecuteButton from "@/components/ExecuteButton"; +import Chip from "../chip"; +import CopyTextButton from "../misc/copy-text"; + +interface TransactionTableRowProps { + rpcUrl: string; + multisigPda: string; + programId: string; + transaction: { + transactionPda: [PublicKey, number]; + proposal: multisig.generated.Proposal | null; + index: bigint; + }; +} + +export default function TransactionTableRow({ + rpcUrl, + multisigPda, + programId, + transaction, +}: TransactionTableRowProps) { + const copyText = async (text: string) => { + await navigator.clipboard.writeText(text); + }; + return ( + + + {Number(transaction.index)} + + +
+ + {transaction.transactionPda[0].toBase58().slice(0, 4) + + "..." + + transaction.transactionPda[0].toBase58().slice(-4)} + + +
+
+ + {transaction.proposal?.approved.length || 0} /{" "} + {transaction.proposal?.rejected.length || 0} + + + {showStatusChip(transaction.proposal?.status.__kind || "None")} + + + {showActionButton( + transaction.proposal?.status.__kind || "None", + rpcUrl, + multisigPda, + programId, + transaction + )} + +
+ ); +} + +// "Draft" | "Active" | "Rejected" | "Approved" | "Executing" | "Executed" | "Cancelled" +function showActionButton( + proposalStatus: string, + rpcUrl: string, + multisigPda: string, + programId: string, + transaction: { + transactionPda: [PublicKey, number]; + proposal: multisig.generated.Proposal | null; + index: bigint; + } +) { + switch (proposalStatus) { + case "Draft": + return <>Create Proposal; + case "Active": + return ( + <> + + + + ); + case "Rejected": + return <>Reject Proposal; + case "Approved": + return ( + + ); + case "Executing": + return ( + + ); + case "Executed": + return ( + + ); + case "Cancelled": + return <>Cancelled; + default: + return <>Unknown; + } +} + +function showStatusChip(proposalStatus: string) { + switch (proposalStatus) { + case "Draft": + return ; + case "Active": + return ; + case "Rejected": + return ; + case "Approved": + return ; + case "Executing": + return ; + case "Executed": + return ; + case "Cancelled": + return ; + default: + return ; + } +} diff --git a/components/ui/table/transactions-table.tsx b/components/ui/table/transactions-table.tsx new file mode 100644 index 0000000..1f8b65f --- /dev/null +++ b/components/ui/table/transactions-table.tsx @@ -0,0 +1,56 @@ +import * as multisig from "@sqds/multisig"; +import { Suspense } from "react"; +import { Table, TableBody } from "../primitives/table"; +import PaginationSection from "./pagination"; +import TableHeadSection from "./table-head"; +import TransactionTableRow from "./transaction-table-row"; +import { PublicKey } from "@solana/web3.js"; +import { Skeleton } from "../primitives/skeleton"; + +interface TransactionsTableProps { + rpcUrl: string; + multisigPda: string; + programId: string; + searchParams: { page: string }; + transactions: { + transactionPda: [PublicKey, number]; + proposal: multisig.generated.Proposal | null; + index: bigint; + }[]; +} + +export default function TransactionsTable({ + rpcUrl, + multisigPda, + programId, + searchParams, + transactions, +}: TransactionsTableProps) { + return ( + <> + }> +
+ + + + {transactions.map((transaction, index) => ( + + ))} + +
+
+
+ + + + ); +} diff --git a/components/ui/wallet-modal.tsx b/components/ui/wallet-modal.tsx new file mode 100644 index 0000000..9584f9e --- /dev/null +++ b/components/ui/wallet-modal.tsx @@ -0,0 +1,166 @@ +import { Dialog, Transition } from "@headlessui/react"; +import { Fragment, useEffect } from "react"; +import { useWallet } from "@solana/wallet-adapter-react"; +import Image from "next/image"; +import { ListChecks, ScanEye, Wallet, X } from "lucide-react"; + +interface WalletModalProps { + open: boolean; + setOpen: React.Dispatch>; +} + +export default function WalletModal({ open, setOpen }: WalletModalProps) { + const { wallets, select, connected, disconnect } = useWallet(); + + useEffect(() => { + const check = () => { + if (connected) { + setOpen(false); + } + }; + check(); + }, [connected]); + + return ( + <> + + setOpen(false)} + > + +
+ +
+
+ + +
+ setOpen(false)} + /> +
+ {wallets.filter( + (wallet) => wallet.readyState === "Installed" + ).length > 0 ? ( + <> +

+ Connect Wallet +

+

+ Please select your wallet to continue. +

+
+ {wallets + .filter( + (wallet) => wallet.readyState === "Installed" + ) + .slice(0, 3) + .map((wallet, i) => ( +
+ +
+ ))} +
+ +
+
+
+
+
+ +

+ Wallet will be in read-only mode by default +

+
+
+ +

+ Nothing will be executed without your signature +

+
+
+ + ) : ( +
+ + {" "} + {" "} + + +
+ )} +
+
+
+
+
+
+
+
+ + ); +} diff --git a/lib/consts.ts b/lib/consts.ts new file mode 100644 index 0000000..6d50d10 --- /dev/null +++ b/lib/consts.ts @@ -0,0 +1 @@ +export const USDC_MINT = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; diff --git a/lib/helpers/createExplorerUrl.ts b/lib/helpers/createExplorerUrl.ts new file mode 100644 index 0000000..945ebb5 --- /dev/null +++ b/lib/helpers/createExplorerUrl.ts @@ -0,0 +1,7 @@ +export function createExplorerUrl(publicKey: string, rpcUrl: string): string { + const baseUrl = "https://explorer.solana.com/address/"; + const clusterQuery = "?cluster=custom&customUrl="; + const encodedRpcUrl = encodeURIComponent(rpcUrl); + + return `${baseUrl}${publicKey}${clusterQuery}${encodedRpcUrl}`; +} diff --git a/lib/helpers/createMultisig.ts b/lib/helpers/createMultisig.ts new file mode 100644 index 0000000..ab7250a --- /dev/null +++ b/lib/helpers/createMultisig.ts @@ -0,0 +1,47 @@ +import * as web3 from "@solana/web3.js"; +import * as multisig from "@sqds/multisig"; +import { Member } from "@sqds/multisig/lib/generated"; + +export async function createMultisig( + connection: web3.Connection, + user: web3.PublicKey, + members: Member[], + threshold: number, + createKey: web3.PublicKey, + rentCollector?: web3.PublicKey, + configAuthority?: web3.PublicKey +) { + try { + const multisigPda = multisig.getMultisigPda({ + createKey, + programId: multisig.PROGRAM_ID, + })[0]; + const [programConfig] = multisig.getProgramConfigPda({ + programId: multisig.PROGRAM_ID, + }); + const programConfigInfo = + await multisig.accounts.ProgramConfig.fromAccountAddress( + connection, + programConfig + ); + const configTreasury = programConfigInfo.treasury; + const ix = multisig.instructions.multisigCreateV2({ + multisigPda: multisigPda, + createKey: createKey, + creator: user, + members: members as any, + threshold: threshold, + configAuthority: configAuthority ? configAuthority : null, + treasury: configTreasury, + rentCollector: rentCollector ? rentCollector : null, + timeLock: 0, + programId: multisig.PROGRAM_ID, + }); + const tx = new web3.Transaction().add(ix); + tx.feePayer = user; + tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; + return { transaction: tx, multisig: multisigPda }; + } catch (err) { + throw err; + } +} diff --git a/lib/helpers/getCachedMultisigs.ts b/lib/helpers/getCachedMultisigs.ts new file mode 100644 index 0000000..64871ba --- /dev/null +++ b/lib/helpers/getCachedMultisigs.ts @@ -0,0 +1,64 @@ +import * as multisig from "@sqds/multisig"; +import { Connection, PublicKey } from "@solana/web3.js"; +import { CachedData, MultisigInfo } from "../types"; +import { getTotalBalance } from "./getTotalBalances"; +import { Member } from "@sqds/multisig/lib/generated"; + +export async function getCachedSquads( + connection: Connection, + payload: CachedData +) { + const cachedSquads: MultisigInfo[] = await Promise.all( + payload.multisigs.map(async (m) => { + const ms = new PublicKey(m.publicKey); + const vault = new PublicKey(m.vault); + + const msInfo = await connection.getAccountInfo(ms); + const vaultInfo = await connection.getAccountInfo(vault); + + // Get update vault balance info + const balance = vaultInfo + ? await getTotalBalance(connection, vault, vaultInfo) + : { + total: 0, + solana: { balance: 0, usdAmount: 0 }, + usdc: { balance: 0, usdAmount: 0 }, + }; + + const deser = multisig.accounts.Multisig.fromAccountInfo(msInfo!)[0]; + + // Check if core config has changed, refresh on a case-by-case basis if needed + let threshold: number; + if (deser.pretty().threshold !== m.data.threshold) { + threshold = deser.pretty().threshold; + } else { + threshold = m.data.threshold; + } + + let members: Member[]; + if (deser.pretty().members.length !== m.data.members.length) { + members = deser.pretty().members; + } else { + members = m.data.members; + } + + // Return with updated data if needed + return { + ...m, + data: { + ...m.data, + members: members, + threshold: threshold, + serialize: deser.serialize, + pretty: deser.pretty, + }, + balance: balance, + }; + }) + ); + + return { + multisigs: cachedSquads, + ttl: payload.ttl, + }; +} diff --git a/lib/helpers/getMultisigs.ts b/lib/helpers/getMultisigs.ts new file mode 100644 index 0000000..fa73915 --- /dev/null +++ b/lib/helpers/getMultisigs.ts @@ -0,0 +1,102 @@ +import * as multisig from "@sqds/multisig"; +import { Connection, PublicKey } from "@solana/web3.js"; +import { AccountInfo } from "@solana/web3.js"; +import { PROGRAM_ID } from "@sqds/multisig"; +import { MultisigInfo } from "../types"; +import { sleep } from "./sleep"; +import { getTotalBalance } from "./getTotalBalances"; + +const baseSize = + 8 + // anchor account discriminator + 32 + // create_key + 32 + // config_authority + 2 + // threshold + 4 + // time_lock + 8 + // transaction_index + 8 + // stale_transaction_index + 1 + // rent_collector Option discriminator + 32 + // rent_collector (always 32 bytes, even if None, just to keep the realloc logic simpler) + 1 + // bump + 4; // members vector length + +export async function getMultisigs(connection: Connection, key: PublicKey) { + try { + let multisigs: { + account: AccountInfo; + publickey: PublicKey; + }[] = []; + let ix = 0; + + while (!multisigs.length && ix < 10) { + try { + const result = await connection.getProgramAccounts(PROGRAM_ID, { + filters: [ + { + memcmp: { + offset: baseSize + ix * 33, + bytes: key.toBase58(), + }, + }, + ], + }); + + console.log(result); + + if (result.length > 0) { + multisigs = result.map((m) => ({ + account: m.account, + publickey: m.pubkey, + })); + } + ix += 1; + await sleep(500); + } catch (e) { + console.error(e); + } + } + + const deserializedAccounts = await Promise.all( + multisigs.map(async (m) => { + const deser = multisig.accounts.Multisig.fromAccountInfo(m.account)[0]; + + const [multisigPda] = multisig.getMultisigPda({ + createKey: new PublicKey(deser.pretty().createKey), + }); + + const [vaultPda] = multisig.getVaultPda({ + multisigPda, + index: 0, + }); + + const vaultInfo = await connection.getAccountInfo(vaultPda); + + const balance = vaultInfo + ? await getTotalBalance(connection, vaultPda, vaultInfo) + : { + total: 0, + solana: { balance: 0, usdAmount: 0 }, + usdc: { balance: 0, usdAmount: 0 }, + }; + + let ms: MultisigInfo = { + publicKey: multisigPda.toBase58(), + vault: vaultPda.toBase58(), + balance: balance, + data: { + ...deser, + serialize: deser.serialize, + pretty: deser.pretty, + }, + }; + + console.log(ms); + + return ms; + }) + ); + + return deserializedAccounts; + } catch (err) { + throw err; + } +} diff --git a/lib/helpers/getRecentTransactions.ts b/lib/helpers/getRecentTransactions.ts new file mode 100644 index 0000000..4052f0c --- /dev/null +++ b/lib/helpers/getRecentTransactions.ts @@ -0,0 +1,51 @@ +"use server"; +import { Connection, PublicKey } from "@solana/web3.js"; +import * as multisig from "@sqds/multisig"; + +const TRANSACTIONS_PER_PAGE = 10; + +export async function getRecentTransactions( + connection: Connection, + multisigPda: PublicKey, + transactionIndex: number, + page: number +) { + if (isNaN(page)) return []; + if (isNaN(transactionIndex)) return []; + + let startingTransactionIndex = Math.max( + 1, + transactionIndex - (page - 1) * TRANSACTIONS_PER_PAGE + ); + + let latestTransactions = []; + for (let i = 0; i < TRANSACTIONS_PER_PAGE; i++) { + let usingTransactionIndex = startingTransactionIndex - i; + + if (usingTransactionIndex < 1) break; + + let index = BigInt(usingTransactionIndex); + const transactionPda = multisig.getTransactionPda({ + multisigPda, + index, + }); + const proposalPda = multisig.getProposalPda({ + multisigPda, + transactionIndex: index, + }); + + let proposal; + try { + proposal = await multisig.accounts.Proposal.fromAccountAddress( + connection, + proposalPda[0] + ); + } catch (error) { + proposal = null; + } + + latestTransactions.push({ transactionPda, proposal, index }); + } + + return latestTransactions; +} diff --git a/lib/helpers/getTotalBalances.ts b/lib/helpers/getTotalBalances.ts new file mode 100644 index 0000000..fcfa77f --- /dev/null +++ b/lib/helpers/getTotalBalances.ts @@ -0,0 +1,47 @@ +import { AccountInfo, Connection, LAMPORTS_PER_SOL } from "@solana/web3.js"; +import { PublicKey } from "@solana/web3.js"; +import { USDC_MINT } from "../consts"; + +export async function getTotalBalance( + connection: Connection, + key: PublicKey, + account: AccountInfo +) { + try { + const solanaPriceData = await fetch( + `https://price.jup.ag/v6/price?ids=SOL`, + { + method: "GET", + } + ).then((res) => res.json()); + console.log( + account.lamports / LAMPORTS_PER_SOL, + solanaPriceData.data.SOL.price + ); + let solanaUsdBalance = + (account.lamports / LAMPORTS_PER_SOL) * solanaPriceData.data.SOL.price; + + const usdcAccount = await connection.getParsedTokenAccountsByOwner(key, { + mint: new PublicKey(USDC_MINT), + }); + let usdcBalance = ( + await connection.getTokenAccountBalance(usdcAccount.value[0].pubkey) + ).value.uiAmount; + + if (!usdcBalance) usdcBalance = 0; + + return { + total: solanaUsdBalance + usdcBalance, + solana: { + balance: account.lamports / LAMPORTS_PER_SOL, + usdAmount: solanaUsdBalance, + }, + usdc: { + balance: usdcBalance, + usdAmount: usdcBalance, + }, + }; + } catch (err) { + throw err; + } +} diff --git a/lib/helpers/sleep.ts b/lib/helpers/sleep.ts new file mode 100644 index 0000000..0d7f188 --- /dev/null +++ b/lib/helpers/sleep.ts @@ -0,0 +1,3 @@ +export function sleep(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/lib/helpers/tokenAddresses.ts b/lib/helpers/tokenAddresses.ts new file mode 100644 index 0000000..d3ced07 --- /dev/null +++ b/lib/helpers/tokenAddresses.ts @@ -0,0 +1,100 @@ +import { NATIVE_MINT } from "@solana/spl-token"; +import { USDC_MINT } from "../consts"; + +interface AddressEntry { + key: string; + icon: string; +} + +type CommonAddresses = ReadonlyMap; + +export function lookupAddress(address: string): AddressEntry | undefined { + return ADDRESS_MAP.get(address); +} + +export const ADDRESS_MAP: CommonAddresses = new Map([ + [ + NATIVE_MINT.toString(), + { + key: "SOL", + icon: "/tokens/SOL.webp", + }, + ], + [ + "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + { + key: "USDC", + icon: "/tokens/USDC.webp", + }, + ], + [ + "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", + { + key: "USDT", + icon: "/tokens/USDT.webp", + }, + ], + [ + "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn", + { + key: "jitoSOL", + icon: "/tokens/jitoSOL.webp", + }, + ], + [ + "mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So", + { + key: "mSOL", + icon: "/tokens/mSOL.webp", + }, + ], + [ + "bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1", + { + key: "bSOL", + icon: "/tokens/bSOL.webp", + }, + ], + [ + "he1iusmfkpAdwvxLNGV8Y1iSbj4rUy6yMhEA3fotn9A", + { + key: "hSOL", + icon: "/tokens/hSOL.webp", + }, + ], + [ + "BonK1YhkXEGLZzwtcvRTip3gAL9nCeQD7ppZBLXhtTs", + { + key: "bonkSOL", + icon: "/tokens/bonkSOL.webp", + }, + ], + [ + "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", + { + key: "JUP", + icon: "/tokens/JUP.webp", + }, + ], + [ + "27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4", + { + key: "JLP", + icon: "/tokens/JLP.webp", + }, + ], + [ + "CLoUDKc4Ane7HeQcPpE3YHnznRxhMimJ4MyaUqyHFzAu", + { + key: "CLOUD", + icon: "/tokens/CLOUD.webp", + }, + ], + [ + "5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm", + { + key: "INF", + icon: "/tokens/INF.webp", + }, + ], +]); diff --git a/lib/nFormatter.ts b/lib/nFormatter.ts new file mode 100644 index 0000000..47eb498 --- /dev/null +++ b/lib/nFormatter.ts @@ -0,0 +1,22 @@ +export function nFormatter(num: number, digits?: number) { + if (!num) return "0"; + const lookup = [ + { value: 1, symbol: "" }, + { value: 1e3, symbol: "k" }, + { value: 1e6, symbol: "m" }, + { value: 1e9, symbol: "g" }, + { value: 1e12, symbol: "t" }, + { value: 1e15, symbol: "p" }, + { value: 1e18, symbol: "e" }, + ]; + const rx = /\.0+$|(\.[0-9]*[1-9])0+$/; + var item = lookup + .slice() + .reverse() + .find(function (item) { + return num >= item.value; + }); + return item + ? (num / item.value).toFixed(digits || 1).replace(rx, "$1") + item.symbol + : "0"; +} diff --git a/lib/types.ts b/lib/types.ts new file mode 100644 index 0000000..e30b02e --- /dev/null +++ b/lib/types.ts @@ -0,0 +1,33 @@ +import { AccountInfo, ParsedAccountData, PublicKey } from "@solana/web3.js"; +import * as multisig from "@sqds/multisig"; + +export interface MultisigInfo { + publicKey: string; + vault: string; + balance: { + total: number; + solana: { balance: number; usdAmount: number }; + usdc: { balance: number; usdAmount: number }; + }; + data: multisig.generated.Multisig; +} + +export interface CachedMultisigInfo { + publicKey: string; + vault: string; + data: multisig.generated.Multisig; + createdAt: number; +} + +export interface CachedData { + multisigs: CachedMultisigInfo[]; + ttl: number; +} + +export interface FilteredTokens { + mint: string; + symbol: string | null; + icon: string | null; + pubkey: PublicKey; + account: AccountInfo; +} diff --git a/package.json b/package.json index 1be144f..9491700 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,12 @@ "lint": "next lint" }, "dependencies": { + "@headlessui/react": "^2.1.10", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-popover": "^1.0.7", "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-tooltip": "^1.1.3", "@solana/spl-token": "^0.3.11", "@solana/wallet-adapter-base": "^0.9.23", "@solana/wallet-adapter-react": "^0.15.35", @@ -22,12 +24,13 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "cmdk": "^0.2.0", + "framer-motion": "^11.11.9", "lucide-react": "^0.309.0", "next": "14.0.4", - "next-themes": "^0.2.1", + "next-themes": "^0.3.0", "react": "^18", "react-dom": "^18", - "sonner": "^1.3.1", + "sonner": "^1.5.0", "tailwind-merge": "^2.2.0", "tailwindcss-animate": "^1.0.7" }, diff --git a/components/Wallet.tsx b/providers/SolanaProvider.tsx similarity index 69% rename from components/Wallet.tsx rename to providers/SolanaProvider.tsx index 4ba4585..d8eea3c 100644 --- a/components/Wallet.tsx +++ b/providers/SolanaProvider.tsx @@ -7,23 +7,22 @@ import { import { WalletAdapterNetwork } from "@solana/wallet-adapter-base"; import { WalletModalProvider } from "@solana/wallet-adapter-react-ui"; import { clusterApiUrl } from "@solana/web3.js"; +import { headers } from "next/headers"; require("@solana/wallet-adapter-react-ui/styles.css"); -type Props = { +type SolanaProviderProps = { + rpc: string | null; children?: React.ReactNode; }; -export const Wallet: FC = ({ children }) => { +export const SolanaProvider: FC = ({ rpc, children }) => { const network = WalletAdapterNetwork.Devnet; - - const endpoint = useMemo(() => clusterApiUrl(network), [network]); - - const wallets = useMemo( - () => [], - - [network] + const endpoint = useMemo( + () => rpc || clusterApiUrl(network), + [rpc || network] ); + const wallets = useMemo(() => [], [network]); return ( diff --git a/public/default_image.svg b/public/default_image.svg new file mode 100644 index 0000000..fa527f3 --- /dev/null +++ b/public/default_image.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/NeueMontreal-Bold.otf b/public/fonts/NeueMontreal-Bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..a1c6974f0a168f50b9cf48de0eff4d2cf502e52c GIT binary patch literal 42916 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 O8ST94ylz-lmHz|iao1!3 literal 0 HcmV?d00001 diff --git a/public/fonts/NeueMontreal-BoldItalic.otf b/public/fonts/NeueMontreal-BoldItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..798048d1f71e44b3244d9398efbec17a2c6e48c5 GIT binary patch literal 51532 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 literal 0 HcmV?d00001 diff --git a/public/fonts/NeueMontreal-Italic.otf b/public/fonts/NeueMontreal-Italic.otf new file mode 100644 index 0000000000000000000000000000000000000000..a8c17e7078493e0225e6a0ebee9c677a7099ed7d GIT binary patch literal 49624 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 Y*|CI%+RvMi@vrga?e~?B1WSbR-*cK1cmMzZ literal 0 HcmV?d00001 diff --git a/public/fonts/NeueMontreal-LightItalic.otf b/public/fonts/NeueMontreal-LightItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..b0dd5734b809f51d11a2d4d805ba88d53306572e GIT binary patch literal 49192 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 literal 0 HcmV?d00001 diff --git a/public/fonts/NeueMontreal-MediumItalic.otf b/public/fonts/NeueMontreal-MediumItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..78b2fc5480194b0a090f693d27b19b80f2f106b0 GIT binary patch literal 53652 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 AQUCw| literal 0 HcmV?d00001 diff --git a/public/fonts/NeueMontreal-Regular.otf b/public/fonts/NeueMontreal-Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..0265060cb6ce6a6a9e60eecfea54920c58ef3985 GIT binary patch literal 40516 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 literal 0 HcmV?d00001 diff --git a/public/logo.svg b/public/logo.svg new file mode 100644 index 0000000..4b70537 --- /dev/null +++ b/public/logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/solana-logo.png b/public/solana-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..26aec35be0f047baaac46df6bd3206f4c12bf6d9 GIT binary patch literal 28416 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 literal 0 HcmV?d00001 diff --git a/public/squads-light.png b/public/squads-light.png new file mode 100644 index 0000000000000000000000000000000000000000..84ce6bbec92ec40a3a7d890f2145d904e32f3ec5 GIT binary patch literal 56920 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 Y+npYNrb$fT7PbaW4c!CTY8IFN4~N4s^#A|> literal 0 HcmV?d00001 diff --git a/public/squads-logo.png b/public/squads-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..84ce6bbec92ec40a3a7d890f2145d904e32f3ec5 GIT binary patch literal 56920 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 Y+npYNrb$fT7PbaW4c!CTY8IFN4~N4s^#A|> literal 0 HcmV?d00001 diff --git a/public/tokens/CLOUD.webp b/public/tokens/CLOUD.webp new file mode 100644 index 0000000000000000000000000000000000000000..b75c014c8deedb919c2ce87be8b9e4978f84ddb6 GIT binary patch literal 8650 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

5u(Mu;Ob#mgG&%g?z~jCW>(?t|Hu`r{`j`m%1v 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 literal 0 HcmV?d00001 diff --git a/public/tokens/INF.webp b/public/tokens/INF.webp new file mode 100644 index 0000000000000000000000000000000000000000..6a245fdaad6703b8fb09765b9bca508f6dc1c968 GIT binary patch literal 11336 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 literal 0 HcmV?d00001 diff --git a/public/tokens/JLP.webp b/public/tokens/JLP.webp new file mode 100644 index 0000000000000000000000000000000000000000..b88324764746d894dbc394bca0ccfe9c9aa158df GIT binary patch literal 16118 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 I3;+NC0Ma6>06|PpNPZds01X@kZQDpO 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 UNCU^g_F(vJGZ^`K000000O$8B{r~^~ literal 0 HcmV?d00001 diff --git a/public/tokens/SOL.webp b/public/tokens/SOL.webp new file mode 100644 index 0000000000000000000000000000000000000000..1059793f45db7abf51f7033555b2c3169dbf0004 GIT binary patch literal 2538 zcmb`IS5y<&7KW3EQbLm=N}o^zLkV4)p$UQzLa%}#;1vWxkxmdnDT1gGh7y8w3DrU| zbPx#LAT0?75kZPboPdBNnNc6^UGsF;UH3fg^RV~%_qYGGkHfjMXO}nu09OlBdl!2> z>6yP{{vZGbs6+?SfyNK4O3%xcmzBzBo>XiU;0y}gyHGugEG4DQB6bmnadxP6Ry{M1 z%J=P%x`Zt<+&i>>!>1T`fv&s)JP1B`!YF)~SM3AyX_Uk>v%5xOlTa7dCFy{#Y!$Uf!t>M6}+ z?DkrXx6@w9N)LTnwI<&Fy6?f2JZEFY(~Sw*HZ@ow@j2syifKd!Z-|tw!~ak~@b_R= zMqMs-hjE1aS@qt>_bx+dS6x}*pS54Wm{uDfydtgdX~>y!EY!06s%!6jg#UQ50|B|l zTll$uwOmeWWsTQ4bAk4;Dx|mgry@9l&FX3=mc?SWB7Iw!HRhL1dpfo*$$b7HnR9uN zU7Rgc&ajxZ)hvt1BCLjBxL0+5HU8f66w${heInkBf_yMn^sWD+VDTQ-H)BL|;a9uU zv0mk=!=s$WEDI@S0|Sk3CE%R4r(-swe=$;d?`(YB(pp23S;$&WjGAyxqrh*NPyd1! zF-gC+WExO?V*5UU<%HZ<*SjsZpI<3o*CukoiRTAtSG@aNa@OGwX-Wy3nr$(lvvJvZ z0fJ~~MO;(Q{Lz0Sc2fA2;WW(QeMFo)3y&C7<7)Oq&CnUtGsK%Q<`A)1)$At67_AR4}roUO=_+^kkr3Fr>3*gYM5P|=*IsRLB zbprrQCMgN6>*2Z8VCR63gY)P+i+w=9Umb<^4QvzZ$5qFX>iJ=9wl^^uTN}CYvmT({ zb!0J{@v87g%Myvfh0HD%Wxg`8i)9`8x?7U2zN}D&dL9D1X_2i(0{d>%;c`*VHxHiZ zbyh+u}tCNoSE+GpIQjH@x;-(1N7WjZbkID42fvrHR3O{50 zzHLLUbKUm4#1(6gBJW+ls&TselE(h=Gn;#lUU{WOt9cf|^TNY1gDjGIw7vqOm2;6c^=q`b7O;5zf<5ZN-l=4^)r{fPqGJ?_|6nw?~<|OU5O(wLjcA zIK~Y`ggAWF8AaUYurccP4p8G!P#d_C%BjK60Gpz*F@=;EIKZ+HLXZH?hnNUq zJBIK_hpk>*`3BM^!H`d+b|y=|oU@3w?8js!mRJv@8HKzBluq zz~ZjTp6Y0g%ZgpLfrFHq)kW?)sfO1upj>=Uu=E!5O5B310plZ{PZ3kGq@ zIClMD6CGZ@iMeK@>D`7~@!n}qon*t^J?6rHNy+A^htnCvpe$Ko-jM2Tick#P34`PT zhQ0zsR1%vhwt8>64R>a3xrVj$%2%{_lT01yMt2r#D<{NP>19osaFR(jyn#*6vi9}< zW~EGqXzI}VT!qEE>UxiQ z#aFwMZ%}4*a6_&PsW1{n)OQh-sCaM&lbP^293G zJ3S}Rbbz>=dUcMG;6(;=8e4GpMGa}Ot~7-#bhvd)Q*2D4qoLJ`dZ2=~z*mM4JWTid zGNm>FUveCtrp_M%l$zVOPwIT3Ed*k9Wc4k)ZMaeYy*!hcIkSLI!sNvfnjj)G!HzSe$>&kgA zY5Fdr;lj=)uR(8=aeNP7Vf?w9FgXtn=(`(ObTh$?v~MzECFf|T@qBnmjb$@pv^YAD zAWQx#55PY9B;IK&cXAZpgaMGx@c6{!nmu4upI1yMbxXM!#VTZb=sE z(SRnHlb%KQu(r8{&Y$^S*wO?cf|r`IWOoLo(Z&9Te##h}kH7x>LZpNIp%{?{8iwtP z39vv(N4+}Du>fs~Uo%+SasS(K|6()HOidYYj&vdWAuMjwwRpclWpYR2E^z#lPmdEU zs-Pmok$1%e+MJZM#X1L4^Nd@Y`@|h;12Zhmzvtd`?K-O&t8+l*_w$y&>dc<10oL3P joOx*New!MTJ~%_}h#YjF*p=OQf9~ET_&+|K|G54IXsG2Y literal 0 HcmV?d00001 diff --git a/public/tokens/USDC.webp b/public/tokens/USDC.webp new file mode 100644 index 0000000000000000000000000000000000000000..eda5b5b6e4443956c1c2d1ea9324cd1ac66c3e62 GIT binary patch literal 16368 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 literal 0 HcmV?d00001 diff --git a/public/tokens/USDT.webp b/public/tokens/USDT.webp new file mode 100644 index 0000000000000000000000000000000000000000..edfece3143904fef2904b70d2d9e1be9431589d2 GIT binary patch literal 8086 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 literal 0 HcmV?d00001 diff --git a/public/tokens/bSOL.webp b/public/tokens/bSOL.webp new file mode 100644 index 0000000000000000000000000000000000000000..dbabb857491ed576fcecbe7473ae8289d54350b9 GIT binary patch literal 9060 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 Tu!T?XJ+FP`^PhF)|F-=vwDM5q literal 0 HcmV?d00001 diff --git a/public/tokens/bonkSOL.webp b/public/tokens/bonkSOL.webp new file mode 100644 index 0000000000000000000000000000000000000000..c8128fd8d244262cb29e899f24ac2fbfadceb558 GIT binary patch literal 15364 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 AxBvhE literal 0 HcmV?d00001 diff --git a/public/tokens/hSOL.webp b/public/tokens/hSOL.webp new file mode 100644 index 0000000000000000000000000000000000000000..04a52b95bb584f373f144645e4e51e23c1b953f6 GIT binary patch literal 6874 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 UNJ06|PpNclhj00A5YZQDo* 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 z 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 Pu_)a`np-Rf00000J^X;O literal 0 HcmV?d00001 diff --git a/public/tokens/mSOL.webp b/public/tokens/mSOL.webp new file mode 100644 index 0000000000000000000000000000000000000000..2b39e679c1bbbd2e485c1fa387935ef7afeabcbc GIT binary patch literal 8962 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 literal 0 HcmV?d00001 diff --git a/tailwind.config.ts b/tailwind.config.ts index 84287e8..81da94e 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,13 +1,13 @@ -import type { Config } from "tailwindcss" +import type { Config } from "tailwindcss"; const config = { darkMode: ["class"], content: [ - './pages/**/*.{ts,tsx}', - './components/**/*.{ts,tsx}', - './app/**/*.{ts,tsx}', - './src/**/*.{ts,tsx}', - ], + "./pages/**/*.{ts,tsx}", + "./components/**/*.{ts,tsx}", + "./app/**/*.{ts,tsx}", + "./src/**/*.{ts,tsx}", + ], prefix: "", theme: { container: { @@ -18,7 +18,17 @@ const config = { }, }, extend: { + fontFamily: { + neuelight: ["NeueMontreal-Light", "sans-serif"], + neue: ["NeueMontreal-Regular", "sans-serif"], + neuemedium: ["NeueMontreal-Medium", "sans-serif"], + neuebold: ["NeueMontreal-Bold", "sans-serif"], + }, colors: { + lightbackground: "#F5F5F5", + darkborder: "#A9A9A9", + darkbackground: "#1E1E20", + darkforeground: "#242426", border: "hsl(var(--border))", input: "hsl(var(--input))", ring: "hsl(var(--ring))", @@ -75,6 +85,6 @@ const config = { }, }, plugins: [require("tailwindcss-animate")], -} satisfies Config +} satisfies Config; -export default config \ No newline at end of file +export default config; diff --git a/yarn.lock b/yarn.lock index 003781a..3b1ea0a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8,9 +8,9 @@ integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== "@babel/runtime@^7.13.10", "@babel/runtime@^7.25.0": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.6.tgz#9afc3289f7184d8d7f98b099884c26317b9264d2" - integrity sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ== + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6" + integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w== dependencies: regenerator-runtime "^0.14.0" @@ -22,9 +22,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.6.1": - version "4.11.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" - integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== + version "4.11.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" + integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -41,44 +41,63 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== "@floating-ui/core@^1.6.0": - version "1.6.7" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.7.tgz#7602367795a390ff0662efd1c7ae8ca74e75fb12" - integrity sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g== + version "1.6.8" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12" + integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA== dependencies: - "@floating-ui/utils" "^0.2.7" + "@floating-ui/utils" "^0.2.8" "@floating-ui/dom@^1.0.0": - version "1.6.10" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.10.tgz#b74c32f34a50336c86dcf1f1c845cf3a39e26d6f" - integrity sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A== + version "1.6.11" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.11.tgz#8631857838d34ee5712339eb7cbdfb8ad34da723" + integrity sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ== dependencies: "@floating-ui/core" "^1.6.0" - "@floating-ui/utils" "^0.2.7" + "@floating-ui/utils" "^0.2.8" -"@floating-ui/react-dom@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.1.tgz#cca58b6b04fc92b4c39288252e285e0422291fb0" - integrity sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg== +"@floating-ui/react-dom@^2.0.0", "@floating-ui/react-dom@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31" + integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A== dependencies: "@floating-ui/dom" "^1.0.0" -"@floating-ui/utils@^0.2.7": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.7.tgz#d0ece53ce99ab5a8e37ebdfe5e32452a2bfc073e" - integrity sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA== +"@floating-ui/react@^0.26.16": + version "0.26.25" + resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.25.tgz#cf4c8a2b89fab1a71712d15e6551df3bfbd2ea1d" + integrity sha512-hZOmgN0NTOzOuZxI1oIrDu3Gcl8WViIkvPMpB4xdd4QD6xAMtwgwr3VPoiyH/bLtRcS1cDnhxLSD1NsMJmwh/A== + dependencies: + "@floating-ui/react-dom" "^2.1.2" + "@floating-ui/utils" "^0.2.8" + tabbable "^6.0.0" + +"@floating-ui/utils@^0.2.8": + version "0.2.8" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62" + integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig== + +"@headlessui/react@^2.1.10": + version "2.1.10" + resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-2.1.10.tgz#99cd4ca6464129726af94059bce84f931698571e" + integrity sha512-6mLa2fjMDAFQi+/R10B+zU3edsUk/MDtENB2zHho0lqKU1uzhAfJLUduWds4nCo8wbl3vULtC5rJfZAQ1yqIng== + dependencies: + "@floating-ui/react" "^0.26.16" + "@react-aria/focus" "^3.17.1" + "@react-aria/interactions" "^3.21.3" + "@tanstack/react-virtual" "^3.8.1" -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== dependencies: - "@humanwhocodes/object-schema" "^2.0.2" + "@humanwhocodes/object-schema" "^2.0.3" debug "^4.3.1" minimatch "^3.0.5" @@ -87,7 +106,7 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2": +"@humanwhocodes/object-schema@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== @@ -328,6 +347,11 @@ resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.0.tgz#6df8d983546cfd1999c8512f3a8ad85a6e7fcee8" integrity sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A== +"@radix-ui/react-context@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.1.tgz#82074aa83a472353bb22e86f11bcbd1c61c4c71a" + integrity sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q== + "@radix-ui/react-dialog@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.0.0.tgz#997e97cb183bc90bd888b26b8e23a355ac9fe5f0" @@ -350,24 +374,24 @@ react-remove-scroll "2.5.4" "@radix-ui/react-dialog@^1.0.5": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz#4906507f7b4ad31e22d7dad69d9330c87c431d44" - integrity sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg== + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz#d9345575211d6f2d13e209e84aec9a8584b54d6c" + integrity sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA== dependencies: "@radix-ui/primitive" "1.1.0" "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-context" "1.1.0" - "@radix-ui/react-dismissable-layer" "1.1.0" - "@radix-ui/react-focus-guards" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" "@radix-ui/react-focus-scope" "1.1.0" "@radix-ui/react-id" "1.1.0" - "@radix-ui/react-portal" "1.1.1" - "@radix-ui/react-presence" "1.1.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-presence" "1.1.1" "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-slot" "1.1.0" "@radix-ui/react-use-controllable-state" "1.1.0" aria-hidden "^1.1.1" - react-remove-scroll "2.5.7" + react-remove-scroll "2.6.0" "@radix-ui/react-direction@1.1.0": version "1.1.0" @@ -386,10 +410,10 @@ "@radix-ui/react-use-callback-ref" "1.0.0" "@radix-ui/react-use-escape-keydown" "1.0.0" -"@radix-ui/react-dismissable-layer@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz#2cd0a49a732372513733754e6032d3fb7988834e" - integrity sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig== +"@radix-ui/react-dismissable-layer@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz#cbdcb739c5403382bdde5f9243042ba643883396" + integrity sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ== dependencies: "@radix-ui/primitive" "1.1.0" "@radix-ui/react-compose-refs" "1.1.0" @@ -404,10 +428,10 @@ dependencies: "@babel/runtime" "^7.13.10" -"@radix-ui/react-focus-guards@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz#8e9abb472a9a394f59a1b45f3dd26cfe3fc6da13" - integrity sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw== +"@radix-ui/react-focus-guards@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz#8635edd346304f8b42cae86b05912b61aef27afe" + integrity sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg== "@radix-ui/react-focus-scope@1.0.0": version "1.0.0" @@ -444,25 +468,25 @@ "@radix-ui/react-use-layout-effect" "1.1.0" "@radix-ui/react-popover@^1.0.7": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-popover/-/react-popover-1.1.1.tgz#604b783cdb3494ed4f16a58c17f0e81e61ab7775" - integrity sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g== + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popover/-/react-popover-1.1.2.tgz#a0cab25f69aa49ad0077d91e9e9dcd323758020c" + integrity sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w== dependencies: "@radix-ui/primitive" "1.1.0" "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-context" "1.1.0" - "@radix-ui/react-dismissable-layer" "1.1.0" - "@radix-ui/react-focus-guards" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" "@radix-ui/react-focus-scope" "1.1.0" "@radix-ui/react-id" "1.1.0" "@radix-ui/react-popper" "1.2.0" - "@radix-ui/react-portal" "1.1.1" - "@radix-ui/react-presence" "1.1.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-presence" "1.1.1" "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-slot" "1.1.0" "@radix-ui/react-use-controllable-state" "1.1.0" aria-hidden "^1.1.1" - react-remove-scroll "2.5.7" + react-remove-scroll "2.6.0" "@radix-ui/react-popper@1.2.0": version "1.2.0" @@ -488,10 +512,10 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-primitive" "1.0.0" -"@radix-ui/react-portal@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.1.tgz#1957f1eb2e1aedfb4a5475bd6867d67b50b1d15f" - integrity sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g== +"@radix-ui/react-portal@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.2.tgz#51eb46dae7505074b306ebcb985bf65cc547d74e" + integrity sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg== dependencies: "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-use-layout-effect" "1.1.0" @@ -505,10 +529,10 @@ "@radix-ui/react-compose-refs" "1.0.0" "@radix-ui/react-use-layout-effect" "1.0.0" -"@radix-ui/react-presence@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.0.tgz#227d84d20ca6bfe7da97104b1a8b48a833bfb478" - integrity sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ== +"@radix-ui/react-presence@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.1.tgz#98aba423dba5e0c687a782c0669dcd99de17f9b1" + integrity sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A== dependencies: "@radix-ui/react-compose-refs" "1.1.0" "@radix-ui/react-use-layout-effect" "1.1.0" @@ -529,22 +553,22 @@ "@radix-ui/react-slot" "1.1.0" "@radix-ui/react-select@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.1.1.tgz#df05cb0b29d3deaef83b505917c4042e0e418a9f" - integrity sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ== + version "2.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.1.2.tgz#2346e118966db793940f6a866fd4cc5db2cc275e" + integrity sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA== dependencies: "@radix-ui/number" "1.1.0" "@radix-ui/primitive" "1.1.0" "@radix-ui/react-collection" "1.1.0" "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-context" "1.1.1" "@radix-ui/react-direction" "1.1.0" - "@radix-ui/react-dismissable-layer" "1.1.0" - "@radix-ui/react-focus-guards" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" "@radix-ui/react-focus-scope" "1.1.0" "@radix-ui/react-id" "1.1.0" "@radix-ui/react-popper" "1.2.0" - "@radix-ui/react-portal" "1.1.1" + "@radix-ui/react-portal" "1.1.2" "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-slot" "1.1.0" "@radix-ui/react-use-callback-ref" "1.1.0" @@ -553,7 +577,7 @@ "@radix-ui/react-use-previous" "1.1.0" "@radix-ui/react-visually-hidden" "1.1.0" aria-hidden "^1.1.1" - react-remove-scroll "2.5.7" + react-remove-scroll "2.6.0" "@radix-ui/react-slot@1.0.0": version "1.0.0" @@ -570,6 +594,24 @@ dependencies: "@radix-ui/react-compose-refs" "1.1.0" +"@radix-ui/react-tooltip@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.1.3.tgz#4250b14723f2d8477e7a3d0526c169f91d1f2f74" + integrity sha512-Z4w1FIS0BqVFI2c1jZvb/uDVJijJjJ2ZMuPV81oVgTZ7g3BZxobplnMVvXtFWgtozdvYJ+MFWtwkM5S2HnAong== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-popper" "1.2.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-presence" "1.1.1" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-visually-hidden" "1.1.0" + "@radix-ui/react-use-callback-ref@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90" @@ -655,6 +697,45 @@ resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.0.tgz#f817d1d3265ac5415dadc67edab30ae196696438" integrity sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg== +"@react-aria/focus@^3.17.1": + version "3.18.4" + resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.18.4.tgz#a6e95896bc8680d1b5bcd855e983fc2c195a1a55" + integrity sha512-91J35077w9UNaMK1cpMUEFRkNNz0uZjnSwiyBCFuRdaVuivO53wNC9XtWSDNDdcO5cGy87vfJRVAiyoCn/mjqA== + dependencies: + "@react-aria/interactions" "^3.22.4" + "@react-aria/utils" "^3.25.3" + "@react-types/shared" "^3.25.0" + "@swc/helpers" "^0.5.0" + clsx "^2.0.0" + +"@react-aria/interactions@^3.21.3", "@react-aria/interactions@^3.22.4": + version "3.22.4" + resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.22.4.tgz#88ed61ab6a485f869bc1f65ae6688d48ca96064b" + integrity sha512-E0vsgtpItmknq/MJELqYJwib+YN18Qag8nroqwjk1qOnBa9ROIkUhWJerLi1qs5diXq9LHKehZDXRlwPvdEFww== + dependencies: + "@react-aria/ssr" "^3.9.6" + "@react-aria/utils" "^3.25.3" + "@react-types/shared" "^3.25.0" + "@swc/helpers" "^0.5.0" + +"@react-aria/ssr@^3.9.6": + version "3.9.6" + resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.6.tgz#a9e8b351acdc8238f2b5215b0ce904636c6ea690" + integrity sha512-iLo82l82ilMiVGy342SELjshuWottlb5+VefO3jOQqQRNYnJBFpUSadswDPbRimSgJUZuFwIEYs6AabkP038fA== + dependencies: + "@swc/helpers" "^0.5.0" + +"@react-aria/utils@^3.25.3": + version "3.25.3" + resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.25.3.tgz#cad9bffc07b045cdc283df2cb65c18747acbf76d" + integrity sha512-PR5H/2vaD8fSq0H/UB9inNbc8KDcVmW6fYAfSWkkn+OAdhTTMVKqXXrZuZBWyFfSD5Ze7VN6acr4hrOQm2bmrA== + dependencies: + "@react-aria/ssr" "^3.9.6" + "@react-stately/utils" "^3.10.4" + "@react-types/shared" "^3.25.0" + "@swc/helpers" "^0.5.0" + clsx "^2.0.0" + "@react-native-async-storage/async-storage@^1.17.7": version "1.24.0" resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.24.0.tgz#888efbc62a26f7d9464b32f4d3027b7f2771999b" @@ -662,6 +743,18 @@ dependencies: merge-options "^3.0.4" +"@react-stately/utils@^3.10.4": + version "3.10.4" + resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.10.4.tgz#310663a834b67048d305e1680ed258130092fe51" + integrity sha512-gBEQEIMRh5f60KCm7QKQ2WfvhB2gLUr9b72sqUdIZ2EG+xuPgaIlCBeSicvjmjBvYZwOjoOEnmIkcx2GHp/HWw== + dependencies: + "@swc/helpers" "^0.5.0" + +"@react-types/shared@^3.25.0": + version "3.25.0" + resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.25.0.tgz#7223baf72256e918a3c29081bb1ecc6fad4fbf58" + integrity sha512-OZSyhzU6vTdW3eV/mz5i6hQwQUhkRs7xwY2d1aqPvTdMe0+2cY7Fwp45PAiwYLEj73i9ro2FxF9qC4DvHGSCgQ== + "@rtsao/scc@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" @@ -959,17 +1052,29 @@ dependencies: tslib "^2.4.0" -"@swc/helpers@^0.5.11": +"@swc/helpers@^0.5.0", "@swc/helpers@^0.5.11": version "0.5.13" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c" integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w== dependencies: tslib "^2.4.0" +"@tanstack/react-virtual@^3.8.1": + version "3.10.8" + resolved "https://registry.yarnpkg.com/@tanstack/react-virtual/-/react-virtual-3.10.8.tgz#bf4b06f157ed298644a96ab7efc1a2b01ab36e3c" + integrity sha512-VbzbVGSsZlQktyLrP5nxE+vE1ZR+U0NFAWPbJLoG2+DKPwd2D7dVICTVIIaYlJqX1ZCEnYDbaOpmMwbsyhBoIA== + dependencies: + "@tanstack/virtual-core" "3.10.8" + +"@tanstack/virtual-core@3.10.8": + version "3.10.8" + resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.10.8.tgz#975446a667755222f62884c19e5c3c66d959b8b4" + integrity sha512-PBu00mtt95jbKFi6Llk9aik8bnR3tR/oQP1o3TSi+iG//+Q2RTIzCEgKkHG8BB86kxMNW6O8wku+Lmi+QFR6jA== + "@types/bn.js@^5.1.1": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" - integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== + version "5.1.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.6.tgz#9ba818eec0c85e4d3c679518428afdf611d03203" + integrity sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w== dependencies: "@types/node" "*" @@ -986,9 +1091,9 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/node@*": - version "22.5.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.4.tgz#83f7d1f65bc2ed223bdbf57c7884f1d5a4fa84e8" - integrity sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg== + version "22.7.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== dependencies: undici-types "~6.19.2" @@ -998,28 +1103,28 @@ integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^20": - version "20.16.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.5.tgz#d43c7f973b32ffdf9aa7bd4f80e1072310fd7a53" - integrity sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA== + version "20.16.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.11.tgz#9b544c3e716b1577ac12e70f9145193f32750b33" + integrity sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw== dependencies: undici-types "~6.19.2" "@types/prop-types@*": - version "15.7.12" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" - integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== + version "15.7.13" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451" + integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA== "@types/react-dom@^18": - version "18.3.0" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" - integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== + version "18.3.1" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.1.tgz#1e4654c08a9cdcfb6594c780ac59b55aad42fe07" + integrity sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18": - version "18.3.5" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.5.tgz#5f524c2ad2089c0ff372bbdabc77ca2c4dbadf8f" - integrity sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA== + version "18.3.11" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.11.tgz#9d530601ff843ee0d7030d4227ea4360236bd537" + integrity sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -1171,9 +1276,9 @@ ansi-regex@^5.0.1: integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" @@ -1451,12 +1556,12 @@ braces@^3.0.3, braces@~3.0.2: fill-range "^7.1.1" browserslist@^4.23.3: - version "4.23.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" - integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== + version "4.24.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" + integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== dependencies: - caniuse-lite "^1.0.30001646" - electron-to-chromium "^1.5.4" + caniuse-lite "^1.0.30001663" + electron-to-chromium "^1.5.28" node-releases "^2.0.18" update-browserslist-db "^1.1.0" @@ -1517,10 +1622,10 @@ camelcase-css@^2.0.1: resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001646: - version "1.0.30001655" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz#0ce881f5a19a2dcfda2ecd927df4d5c1684b982f" - integrity sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg== +caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001663: + version "1.0.30001669" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz#fda8f1d29a8bfdc42de0c170d7f34a9cf19ed7a3" + integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== chalk@^4.0.0: version "4.1.2" @@ -1567,7 +1672,7 @@ clsx@2.0.0: resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== -clsx@^2.1.0: +clsx@^2.0.0, clsx@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== @@ -1670,11 +1775,11 @@ debug@^3.2.7: ms "^2.1.1" debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5: - version "4.3.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" - integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: - ms "2.1.2" + ms "^2.1.3" deep-equal@^2.0.5: version "2.2.3" @@ -1769,10 +1874,10 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -electron-to-chromium@^1.5.4: - version "1.5.14" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.14.tgz#8de5fd941f4deede999f90503c4b5923fbe1962b" - integrity sha512-bEfPECb3fJ15eaDnu9LEJ2vPGD6W1vt7vZleSVyFhYuMIKm3vz/g9lt7IvEzgdwj58RjbPKUF2rXTCN/UW47tQ== +electron-to-chromium@^1.5.28: + version "1.5.39" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.39.tgz#5cbe5200b43dff7b7c2bcb6bdacf65d514c76bb2" + integrity sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg== emoji-regex@^8.0.0: version "8.0.0" @@ -1872,9 +1977,9 @@ es-get-iterator@^1.1.3: stop-iteration-iterator "^1.0.0" es-iterator-helpers@^1.0.19: - version "1.0.19" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" - integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz#f6d745d342aea214fe09497e7152170dc333a7a6" + integrity sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw== dependencies: call-bind "^1.0.7" define-properties "^1.2.1" @@ -1883,12 +1988,12 @@ es-iterator-helpers@^1.0.19: es-set-tostringtag "^2.0.3" function-bind "^1.1.2" get-intrinsic "^1.2.4" - globalthis "^1.0.3" + globalthis "^1.0.4" has-property-descriptors "^1.0.2" has-proto "^1.0.3" has-symbols "^1.0.3" internal-slot "^1.0.7" - iterator.prototype "^1.1.2" + iterator.prototype "^1.1.3" safe-array-concat "^1.1.2" es-object-atoms@^1.0.0: @@ -1935,7 +2040,7 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -escalade@^3.1.2: +escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== @@ -1983,17 +2088,17 @@ eslint-import-resolver-typescript@^3.5.2: is-bun-module "^1.0.2" is-glob "^4.0.3" -eslint-module-utils@^2.8.1, eslint-module-utils@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.9.0.tgz#95d4ac038a68cd3f63482659dffe0883900eb342" - integrity sha512-McVbYmwA3NEKwRQY5g4aWMdcZE5xZxV8i8l7CqJSrameuGSQJtSWaL/LxTEzSKKaCcOhlpDR8XEfYXWPrdo/ZQ== +eslint-module-utils@^2.12.0, eslint-module-utils@^2.8.1: + version "2.12.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== dependencies: debug "^3.2.7" eslint-plugin-import@^2.28.1: - version "2.30.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz#21ceea0fc462657195989dd780e50c92fe95f449" - integrity sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw== + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== dependencies: "@rtsao/scc" "^1.1.0" array-includes "^3.1.8" @@ -2003,7 +2108,7 @@ eslint-plugin-import@^2.28.1: debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.9.0" + eslint-module-utils "^2.12.0" hasown "^2.0.2" is-core-module "^2.15.1" is-glob "^4.0.3" @@ -2012,6 +2117,7 @@ eslint-plugin-import@^2.28.1: object.groupby "^1.0.3" object.values "^1.2.0" semver "^6.3.1" + string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" eslint-plugin-jsx-a11y@^6.7.1: @@ -2037,14 +2143,14 @@ eslint-plugin-jsx-a11y@^6.7.1: string.prototype.includes "^2.0.0" "eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": - version "4.6.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" - integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== + version "5.0.0-canary-7118f5dd7-20230705" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0-canary-7118f5dd7-20230705.tgz#4d55c50e186f1a2b0636433d2b0b2f592ddbccfd" + integrity sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw== eslint-plugin-react@^7.33.2: - version "7.35.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz#d32500d3ec268656d5071918bfec78cfd8b070ed" - integrity sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ== + version "7.37.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz#56493d7d69174d0d828bc83afeffe96903fdadbd" + integrity sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg== dependencies: array-includes "^3.1.8" array.prototype.findlast "^1.2.5" @@ -2079,15 +2185,15 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" "@ungap/structured-clone" "^1.2.0" @@ -2269,6 +2375,13 @@ fraction.js@^4.3.7: resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== +framer-motion@^11.11.9: + version "11.11.9" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-11.11.9.tgz#a60ddf5abbd924812df923068628537a5c6ad8b9" + integrity sha512-XpdZseuCrZehdHGuW22zZt3SF5g6AHJHJi7JwQIigOznW4Jg1n0oGPMJQheMaKLC+0rp5gxUKMRYI6ytd3q4RQ== + dependencies: + tslib "^2.4.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2325,9 +2438,9 @@ get-symbol-description@^1.0.2: get-intrinsic "^1.2.4" get-tsconfig@^4.7.5: - version "4.8.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.0.tgz#125dc13a316f61650a12b20c97c11b8fd996fedd" - integrity sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw== + version "4.8.1" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471" + integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg== dependencies: resolve-pkg-maps "^1.0.0" @@ -2393,7 +2506,7 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" -globalthis@^1.0.3: +globalthis@^1.0.3, globalthis@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== @@ -2576,9 +2689,9 @@ is-boolean-object@^1.1.0: has-tostringtag "^1.0.0" is-bun-module@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-bun-module/-/is-bun-module-1.1.0.tgz#a66b9830869437f6cdad440ba49ab6e4dc837269" - integrity sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA== + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-bun-module/-/is-bun-module-1.2.1.tgz#495e706f42e29f086fd5fe1ac3c51f106062b9fc" + integrity sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q== dependencies: semver "^7.6.3" @@ -2755,10 +2868,10 @@ isomorphic-ws@^4.0.1: resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== +iterator.prototype@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.3.tgz#016c2abe0be3bbdb8319852884f60908ac62bf9c" + integrity sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ== dependencies: define-properties "^1.2.1" get-intrinsic "^1.2.1" @@ -2979,12 +3092,7 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.0.0, ms@^2.1.1: +ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -3008,10 +3116,10 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -next-themes@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/next-themes/-/next-themes-0.2.1.tgz#0c9f128e847979daf6c67f70b38e6b6567856e45" - integrity sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A== +next-themes@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/next-themes/-/next-themes-0.3.0.tgz#b4d2a866137a67d42564b07f3a3e720e2ff3871a" + integrity sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w== next@14.0.4: version "14.0.4" @@ -3173,9 +3281,9 @@ p-locate@^5.0.0: p-limit "^3.0.2" package-json-from-dist@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" - integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== parent-module@^1.0.0: version "1.0.1" @@ -3217,7 +3325,7 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picocolors@^1.0.0, picocolors@^1.0.1: +picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== @@ -3296,13 +3404,13 @@ postcss@8.4.31: source-map-js "^1.0.2" postcss@^8, postcss@^8.4.23: - version "8.4.45" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.45.tgz#538d13d89a16ef71edbf75d895284ae06b79e603" - integrity sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q== + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== dependencies: nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" + picocolors "^1.1.0" + source-map-js "^1.2.1" prelude-ls@^1.2.1: version "1.2.1" @@ -3341,7 +3449,7 @@ react-is@^16.13.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-remove-scroll-bar@^2.3.3, react-remove-scroll-bar@^2.3.4: +react-remove-scroll-bar@^2.3.3, react-remove-scroll-bar@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== @@ -3360,12 +3468,12 @@ react-remove-scroll@2.5.4: use-callback-ref "^1.3.0" use-sidecar "^1.1.2" -react-remove-scroll@2.5.7: - version "2.5.7" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz#15a1fd038e8497f65a695bf26a4a57970cac1ccb" - integrity sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA== +react-remove-scroll@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz#fb03a0845d7768a4f1519a99fdb84983b793dc07" + integrity sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ== dependencies: - react-remove-scroll-bar "^2.3.4" + react-remove-scroll-bar "^2.3.6" react-style-singleton "^2.2.1" tslib "^2.1.0" use-callback-ref "^1.3.0" @@ -3420,14 +3528,14 @@ regenerator-runtime@^0.14.0: integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + version "1.5.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42" + integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ== dependencies: - call-bind "^1.0.6" + call-bind "^1.0.7" define-properties "^1.2.1" es-errors "^1.3.0" - set-function-name "^2.0.1" + set-function-name "^2.0.2" resolve-from@^4.0.0: version "4.0.0" @@ -3470,9 +3578,9 @@ rimraf@^3.0.2: glob "^7.1.3" rpc-websockets@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.2.tgz#4c1568d00b8100f997379a363478f41f8f4b242c" - integrity sha512-YzggvfItxMY3Lwuax5rC18inhbjJv9Py7JXRHxTIi94JOLrqBsSsUUc5bbl5W6c11tXhdfpDPK0KzBhoGe8jjw== + version "9.0.4" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.4.tgz#9d8ee82533b5d1e13d9ded729e3e38d0d8fa083f" + integrity sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ== dependencies: "@swc/helpers" "^0.5.11" "@types/uuid" "^8.3.4" @@ -3587,15 +3695,15 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -sonner@^1.3.1: +sonner@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/sonner/-/sonner-1.5.0.tgz#af359f817063318415326b33aab54c5d17c747b7" integrity sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA== -source-map-js@^1.0.2, source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-js@^1.0.2, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== stop-iteration-iterator@^1.0.0: version "1.0.0" @@ -3637,12 +3745,13 @@ string-width@^5.0.1, string-width@^5.1.2: strip-ansi "^7.0.1" string.prototype.includes@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f" - integrity sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg== + version "2.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92" + integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" string.prototype.matchall@^4.0.11: version "4.0.11" @@ -3766,10 +3875,15 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +tabbable@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" + integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== + tailwind-merge@^2.2.0: - version "2.5.2" - resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.5.2.tgz#000f05a703058f9f9f3829c644235f81d4c08a1f" - integrity sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg== + version "2.5.4" + resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.5.4.tgz#4bf574e81fa061adeceba099ae4df56edcee78d1" + integrity sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q== tailwindcss-animate@^1.0.7: version "1.0.7" @@ -3777,9 +3891,9 @@ tailwindcss-animate@^1.0.7: integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA== tailwindcss@^3.3.0: - version "3.4.10" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.10.tgz#70442d9aeb78758d1f911af29af8255ecdb8ffef" - integrity sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w== + version "3.4.14" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.14.tgz#6dd23a7f54ec197b19159e91e3bb1e55e7aa73ac" + integrity sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" @@ -3871,9 +3985,9 @@ tsconfig-paths@^3.15.0: strip-bom "^3.0.0" tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" - integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + version "2.8.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.0.tgz#d124c86c3c05a40a91e6fdea4021bd31d377971b" + integrity sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -3932,9 +4046,9 @@ typed-array-length@^1.0.6: possible-typed-array-names "^1.0.0" typescript@^5: - version "5.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" - integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== unbox-primitive@^1.0.2: version "1.0.2" @@ -3952,12 +4066,12 @@ undici-types@~6.19.2: integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== update-browserslist-db@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" - integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" + escalade "^3.2.0" + picocolors "^1.1.0" uri-js@^4.2.2: version "4.4.1" @@ -4126,9 +4240,9 @@ ws@^8.5.0: integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== yaml@^2.3.4: - version "2.5.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130" - integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q== + version "2.6.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.0.tgz#14059ad9d0b1680d0f04d3a60fe00f3a857303c3" + integrity sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ== yocto-queue@^0.1.0: version "0.1.0" From dafb37611810e465f39f31e9cda0cd0b2a548f2b Mon Sep 17 00:00:00 2001 From: Joey Meere <100378695+joeymeere@users.noreply.github.com> Date: Tue, 22 Oct 2024 11:02:28 -0400 Subject: [PATCH 02/15] refactor(all): fix hydration, error handling, design and more --- app/(app)/config/page.tsx | 59 +-- app/(app)/create/page.tsx | 12 +- app/(app)/layout.tsx | 62 +-- app/(app)/page.tsx | 22 +- app/(app)/transactions/page.tsx | 1 + app/favicon.ico | Bin 25931 -> 2241 bytes app/globals.css | 11 + app/layout.tsx | 10 +- components/AddMemberInput.tsx | 2 +- components/ChangeUpgradeAuthorityInput.tsx | 2 +- components/CreateSquadForm.tsx | 432 +++++++++--------- components/ExecuteButton.tsx | 12 +- components/SendSolButton.tsx | 57 ++- components/SendTokensButton.tsx | 59 ++- components/SetRpcUrlnput.tsx | 2 +- components/TokenList.tsx | 99 ++-- components/VaultDisplayer.tsx | 2 +- components/ui/change-upgrade-auth.tsx | 51 +++ components/ui/layout/connect-button.tsx | 24 +- components/ui/layout/header.tsx | 21 +- components/ui/my-multisigs.tsx | 66 +-- components/ui/pill.tsx | 15 +- components/ui/primitives/input.tsx | 2 +- components/ui/primitives/multi-progress.tsx | 79 ++++ components/ui/primitives/progress.tsx | 45 ++ components/ui/primitives/send-input.tsx | 44 ++ components/ui/settings/RPCConfig.tsx | 12 +- components/ui/squads/squad-row.tsx | 61 +++ components/ui/table/transaction-table-row.tsx | 14 +- components/ui/table/transactions-table.tsx | 3 + lib/checks/isMultisig.ts | 21 + lib/{ => checks}/isProgram.ts | 0 lib/{ => checks}/isPublickey.ts | 0 lib/consts.ts | 3 + lib/createSquad.ts | 8 +- lib/helpers/createMultisig.ts | 1 + lib/helpers/getCachedMultisigs.ts | 3 +- lib/helpers/getTotalBalances.ts | 17 +- lib/hooks/useMultisigs.ts | 92 ++++ lib/hooks/useSquadForm.ts | 89 ++++ lib/types.ts | 44 +- package.json | 1 + public/default_image_light.svg | 29 ++ public/favicon.png | Bin 0 -> 2153 bytes yarn.lock | 8 + 45 files changed, 1070 insertions(+), 527 deletions(-) create mode 100644 components/ui/change-upgrade-auth.tsx create mode 100644 components/ui/primitives/multi-progress.tsx create mode 100644 components/ui/primitives/progress.tsx create mode 100644 components/ui/primitives/send-input.tsx create mode 100644 components/ui/squads/squad-row.tsx create mode 100644 lib/checks/isMultisig.ts rename lib/{ => checks}/isProgram.ts (100%) rename lib/{ => checks}/isPublickey.ts (100%) create mode 100644 lib/hooks/useMultisigs.ts create mode 100644 lib/hooks/useSquadForm.ts create mode 100644 public/default_image_light.svg create mode 100644 public/favicon.png diff --git a/app/(app)/config/page.tsx b/app/(app)/config/page.tsx index ab9defc..6c7195b 100644 --- a/app/(app)/config/page.tsx +++ b/app/(app)/config/page.tsx @@ -14,6 +14,7 @@ import { } from "@/components/ui/primitives/card"; import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js"; import * as multisig from "@sqds/multisig"; +import { ArrowUp01, Code2, User, UserPlus, Users } from "lucide-react"; import { cookies, headers } from "next/headers"; const ConfigurationPage = async () => { const rpcUrl = headers().get("x-rpc-url"); @@ -35,16 +36,22 @@ const ConfigurationPage = async () => {

- - Members + + + + Members + List of members in the multisig as well as their permissions. -
- {multisigInfo.members.map((member) => ( +
+ {multisigInfo.members.map((member, i) => (
+ {i > 0 && i < multisigInfo.members.length && ( +
+ )}
@@ -84,16 +91,18 @@ const ConfigurationPage = async () => { />
-
))}
-
- - - Add Member +
+ + + + + Add Member + Add a member to the Multisig @@ -111,9 +120,12 @@ const ConfigurationPage = async () => { /> - - - Change Threshold + + + + + Change Threshold + Change the threshold required to execute a multisig transaction. @@ -132,29 +144,6 @@ const ConfigurationPage = async () => {
-
- - - Change Program Upgrade Authority - - Change the upgrade authority of one of your programs. - - - - - - -
); }; diff --git a/app/(app)/create/page.tsx b/app/(app)/create/page.tsx index 57f325f..16ee43f 100644 --- a/app/(app)/create/page.tsx +++ b/app/(app)/create/page.tsx @@ -1,5 +1,6 @@ import CreateSquadForm from "@/components/CreateSquadForm"; -import { Card, CardContent } from "@/components/ui/card"; +import PageHeader from "@/components/ui/layout/page-header"; +import { Card, CardContent } from "@/components/ui/primitives/card"; import { headers } from "next/headers"; export default async function CreateSquad() { @@ -7,13 +8,8 @@ export default async function CreateSquad() { return (
-
-

Create a Squad

-

- Create a Squad and set it as your default account. -

-
- + + diff --git a/app/(app)/layout.tsx b/app/(app)/layout.tsx index 412fa46..6c556bb 100644 --- a/app/(app)/layout.tsx +++ b/app/(app)/layout.tsx @@ -1,68 +1,30 @@ -import * as multisig from "@sqds/multisig"; import { headers } from "next/headers"; -import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js"; -import { LucideHome, ArrowDownUp, Users, Settings } from "lucide-react"; +import { Connection, clusterApiUrl } from "@solana/web3.js"; import RenderMultisigRoute from "@/components/RenderMultisigRoute"; import Header from "@/components/ui/layout/header"; import { ThemeProvider } from "next-themes"; import { CustomToaster } from "@/components/ui/layout/custom-toaster"; +import { isMultisigAddress } from "@/lib/checks/isMultisig"; +import { SolanaProvider } from "@/providers/SolanaProvider"; const AppLayout = async ({ children }: { children: React.ReactNode }) => { - const tabs = [ - { - name: "Home", - icon: , - route: "/", - }, - { - name: "Transactions", - icon: , - route: "/transactions", - }, - { - name: "Configuration", - icon: , - route: "/config", - }, - { - name: "Settings", - icon: , - route: "/settings", - }, - ]; + const multisigCookie = headers().get("x-multisig"); + const rpcUrl = headers().get("x-rpc-url"); + const connection = new Connection(rpcUrl || clusterApiUrl("mainnet-beta")); - const headersList = headers(); - - const path = headersList.get("x-pathname"); - const multisigCookie = headersList.get("x-multisig"); - const multisig = await isValidPublicKey(multisigCookie!); + const multisig = await isMultisigAddress(connection, multisigCookie!); return ( - - -
+ + +
- - + + ); }; export default AppLayout; - -const isValidPublicKey = async (multisigString: string) => { - try { - const multisigPubkey = new PublicKey(multisigString); // This will throw an error if the string is not a valid public key - const rpcUrl = headers().get("x-rpc-url"); - const connection = new Connection(rpcUrl || clusterApiUrl("mainnet-beta")); - await multisig.accounts.Multisig.fromAccountAddress( - connection, - multisigPubkey - ); - return true; - } catch (e) { - return false; - } -}; diff --git a/app/(app)/page.tsx b/app/(app)/page.tsx index 39ed420..32e03ff 100644 --- a/app/(app)/page.tsx +++ b/app/(app)/page.tsx @@ -1,13 +1,13 @@ import * as multisig from "@sqds/multisig"; import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js"; import { cookies, headers } from "next/headers"; -import Image from "next/image"; import { TokenList } from "@/components/TokenList"; import { VaultDisplayer } from "@/components/VaultDisplayer"; import PageHeader from "@/components/ui/layout/page-header"; import MyMultisigs from "@/components/ui/my-multisigs"; import { lookupAddress } from "@/lib/helpers/tokenAddresses"; import { FilteredToken } from "@/lib/types"; +import ChangeUpgradeAuth from "@/components/ui/change-upgrade-auth"; export default async function Home() { const rpcUrl = headers().get("x-rpc-url"); @@ -27,6 +27,11 @@ export default async function Home() { programId: programId ? programId : multisig.PROGRAM_ID, })[0]; + const multisigInfo = await multisig.accounts.Multisig.fromAccountAddress( + connection, + multisigPda + ); + const solBalance = await connection.getBalance(multisigVault); const tokensInWallet = await connection.getParsedTokenAccountsByOwner( @@ -68,7 +73,7 @@ export default async function Home() { />
-
+
+
diff --git a/app/(app)/transactions/page.tsx b/app/(app)/transactions/page.tsx index 8548cc9..99e77ae 100644 --- a/app/(app)/transactions/page.tsx +++ b/app/(app)/transactions/page.tsx @@ -40,6 +40,7 @@ export default async function TransactionsPage({ 9 zR96r_ySWktv4n&iVfzoDh=Pj$VI&GFNJ_*%Ku9(bDPT$A#}WbYqk!9~CoV$` zQx!^8wi7_zL`h8U%F2qXR)2R#M@LNqq$-4rgX&`KIsvSK(PR;YVZqBjew=qxQ`0_A zLpbY1NVlHRjECeQfV@tVi}WY(lao^|JhHO}RTTVL7%(L&g6GNWyj>Raa0)2YwiED@ zkPNGjR{!qZjDHYimKUY68fZS&wW1!HL~Zvl!$r_`6on(#RA(640~)I4{VfQzOz9;h67p10@VDWd#F2!-ic z07gK%<*oH6q74qM^$1G<&fDjcpk$_vHC|T4Q)gvBt4{#0Ep?WY)gjQWr-=6V_uY#Z zFWl?buU+G_+oe*LW$xwCAPt}he+T8`uOYmst;o;$~!E+e0hUWy=bWOJWrEy&z?Q=W4O1sx2;_u#9P+!^x@&5kAj;wZ@TBt|7Zg* z`SUVlj8LC1gGdnso|mJrrwQ-IjT`yIg$yOjtn))&wzakG78e&=Rw<-&pcwFwE+bG{ zL|7Bvg9i`X`Sa&pe}6wz4)sM}j>rjHTU(9uyUMq3`pH~|ob)WC^E5X?nICLgN^AKr z=4WST-NlO+qeCUUrROz6kmoCv-`w{0j?WJa^t0 zV7bw<WxvaYOo3VBVIkBp4u;58mv2*#qW>G>!A&7kC| zrV%DxPfw2tUV2{EwM2kaT=P!wB3kM+;6xfV<$A0MlKr(h30`_lmPtLe5Jxh38T=ZQj8daOQ^-owLswPf z<4<$&meQQ0VJwep=`0qe+FMf&DPtLc-_}^6%K^8RIh8bie7IyO-a;TO187FDz)Lw= zzFi*HA*Danm1E&qWC(D9nxQQ4{(wSEeEC;fVq~P~$J@ipQP}~tvBn!R94~+W{vY@1 z)t_zsG=;4;mSH3hG?_++Kn#>73<01=JGPE_*fP4MONc5>ujuasc;lGRnDMOJn$QM$ zDdu6V4-a+Cz{$T4;N_OZb?~zgJoj$OH+(8-dk0D76whnG&Ye34nPShsgKg!83NLl~ z@c8m&Pj#548?P%{UemlD@>i~0X=5%AIpmm+4IQMc<;CUY<(BsHU?fK7iIDXW-Me=$ zKe9%AVmGuzXz5E)oM?1(%%2r<{xQ!>S!K=pvZDk?4}Fe~jg7UO+lM!;@e(|GYk-lm zyd8n3hqtv(f_NFHaxC;MW<+F!(a}+FgyZ95-)3T>c~xb3GSq34n;iGNodhp=hO{*i z=JJ=8mg<@jc*EFFU)I*v8V8nB?$V_`H$VR$6fDPRkvgL5*9X19M@B{qZGbEpS?p)6 z2)qhl+f(VL_1B_rc$SSdY*RfwA0|=pyx@R*S`6AnYKNaM#&I( z-Wb)%bhxeA-2C6YefzgRt0PZwrMe{oK0Q61=Ti?n_)tUbqst)A>);eOyj&Z@NTwY3^~g+bZH&;c4*4u)%+rKNOP#!`vWR;sC3I!I?1T7NfHi|iXQ)4x z4z#+u+W6q9n&4w0E)}yVekju1RmwR+^3ZrmUCny|THh(`tqTk3nb;oP2G>5MQsl;D zTl!?$L_?R96!r+bw$JX=yOIy*WywSBH94BWG6|km1KQk>=jmTnML=*qDRo7nf!C!B zHQwHejFyif0zW@L@4x3Y#+H}SBxX^`xV}cbQ!YnN>-C9}^J<9zI>eZmn1ll4a)xH< zSX)%j%QTX*Vs$CT&xZhI$nyxi6K*n|>OpvdMV*47GbD@x?p=RCgxDcV}Fd`vZD P00000NkvXXu0mjfD8Wh@ literal 25931 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 LrJugUA?W`A8`#=m diff --git a/app/globals.css b/app/globals.css index accdc79..644a807 100644 --- a/app/globals.css +++ b/app/globals.css @@ -96,3 +96,14 @@ background-position: 0px 0px; } } + +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +input[type="number"] { + appearance: textfield; + -moz-appearance: textfield; +} diff --git a/app/layout.tsx b/app/layout.tsx index 2f14c46..5d2ae05 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,11 +1,12 @@ -import type { Metadata } from "next"; import "./globals.css"; -import { SolanaProvider } from "@/providers/SolanaProvider"; -import { headers } from "next/headers"; +import type { Metadata } from "next"; export const metadata: Metadata = { title: "Squads Simplified", description: "Squads v4 program user interface.", + icons: { + icon: "/favicon.ico", + }, }; export default function RootLayout({ @@ -13,10 +14,9 @@ export default function RootLayout({ }: { children: React.ReactNode; }) { - const rpcUrl = headers().get("x-rpc-url"); return ( - {children} + {children} ); } diff --git a/components/AddMemberInput.tsx b/components/AddMemberInput.tsx index a1f41e8..2d0a9ad 100644 --- a/components/AddMemberInput.tsx +++ b/components/AddMemberInput.tsx @@ -13,7 +13,7 @@ import { VersionedTransaction, } from "@solana/web3.js"; import { toast } from "sonner"; -import { isPublickey } from "@/lib/isPublickey"; +import { isPublickey } from "@/lib/checks/isPublickey"; type AddMemberInputProps = { multisigPda: string; diff --git a/components/ChangeUpgradeAuthorityInput.tsx b/components/ChangeUpgradeAuthorityInput.tsx index e40ad90..cde0878 100644 --- a/components/ChangeUpgradeAuthorityInput.tsx +++ b/components/ChangeUpgradeAuthorityInput.tsx @@ -15,7 +15,7 @@ import { VersionedTransaction, } from "@solana/web3.js"; import { toast } from "sonner"; -import { isPublickey } from "@/lib/isPublickey"; +import { isPublickey } from "@/lib/checks/isPublickey"; type ChangeUpgradeAuthorityInputProps = { multisigPda: string; diff --git a/components/CreateSquadForm.tsx b/components/CreateSquadForm.tsx index cc5f9ed..3d55fb6 100644 --- a/components/CreateSquadForm.tsx +++ b/components/CreateSquadForm.tsx @@ -1,8 +1,7 @@ "use client"; -import { useEffect, useState } from "react"; -import { Button } from "./ui/button"; -import { Input } from "./ui/input"; -import { Member, createMultisig } from "@/lib/createSquad"; +import { Button } from "./ui/primitives/button"; +import { Input } from "./ui/primitives/input"; +import { createMultisig } from "@/lib/createSquad"; import { Connection, Keypair, PublicKey, clusterApiUrl } from "@solana/web3.js"; import { useWallet } from "@solana/wallet-adapter-react"; import { PlusCircleIcon, XIcon } from "lucide-react"; @@ -13,9 +12,12 @@ import { SelectItem, SelectTrigger, SelectValue, -} from "./ui/select"; +} from "./ui/primitives/select"; import { toast } from "sonner"; import { useRouter } from "next/navigation"; +import { Member, ValidationRules } from "@/lib/types"; +import { useSquadForm } from "@/lib/hooks/useSquadForm"; +import { isPublickey } from "@/lib/checks/isPublickey"; interface MemberAddresses { count: number; @@ -32,220 +34,183 @@ interface CreateSquadFormData { export default function CreateSquadForm({ rpc }: { rpc: string }) { const router = useRouter(); - const wallet = useWallet(); + const { publicKey, connected, sendTransaction } = useWallet(); const connection = new Connection(rpc || clusterApiUrl("mainnet-beta")); + const validationRules = getValidationRules(); - if (!wallet) return null; - - const [form, setForm] = useState({ - threshold: 1, - rentCollector: "", - configAuthority: "", - createKey: "", - members: { - count: 0, - memberData: [], - }, - }); - - const handleAddAddress = (e: any) => { - e.preventDefault(); - setForm((prev) => { - return { - ...prev, + const { formState, handleChange, handleAddMember, onSubmit } = + useSquadForm( + { + threshold: 1, + rentCollector: "", + configAuthority: "", + createKey: "", members: { - count: prev.members.count + 1, - memberData: [ - ...prev.members.memberData, - { - key: null, - permissions: { - mask: 0, - }, - }, - ], + count: 0, + memberData: [], }, - }; - }); - }; - - const validate = () => { - if (form.threshold < 1) { - toast.error("Threshold must be greater than 0."); - return false; - } - if (form.members.count < 1) { - toast.error("At least one member is required."); - return false; - } + }, + validationRules + ); - return true; - }; + async function submitHandler() { + if (!connected) throw new Error("Please connect your wallet."); + try { + const createKey = Keypair.generate(); - async function handleCreate() { - if (!wallet.publicKey) { - return toast.error("Please connect your wallet."); - } + const { transaction, multisig } = await createMultisig( + connection, + publicKey!, + formState.values.members.memberData, + formState.values.threshold, + createKey.publicKey, + formState.values.rentCollector, + formState.values.configAuthority + ); - if (!validate()) return; + const signature = await sendTransaction(transaction, connection, { + skipPreflight: true, + signers: [createKey], + }); + console.log("Transaction signature", signature); + toast.loading("Confirming...", { + id: "create", + }); - const createKey = Keypair.generate(); + await connection.getSignatureStatuses([signature]); + document.cookie = `x-multisig=${multisig.toBase58()}; path=/`; - let configAuthority; - if (isValidPublicKey(form.configAuthority)) { - configAuthority = new PublicKey(form.configAuthority); + return signature; + } catch (error: any) { + console.error(error); + return error; + } finally { + await new Promise((resolve) => setTimeout(resolve, 5000)); + router.refresh(); } - - let rentCollector; - if (isValidPublicKey(form.rentCollector)) { - rentCollector = new PublicKey(form.rentCollector); - } - - const { transaction, multisig } = await createMultisig( - connection, - wallet.publicKey, - form.members.memberData, - form.threshold, - createKey.publicKey, - rentCollector, - configAuthority - ); - - const signature = await wallet.sendTransaction(transaction, connection, { - skipPreflight: true, - signers: [createKey], - }); - console.log("Transaction signature", signature); - toast.info("Transaction submitted."); - await connection.confirmTransaction(signature, "confirmed"); - toast.success(`New Squad created: ${multisig.toBase58()}`); - document.cookie = `x-multisig=${multisig.toBase58()}; path=/`; - await new Promise((resolve) => setTimeout(resolve, 10000)); - router.refresh(); } - useEffect(() => { - if (wallet.publicKey) { - setForm((prev) => ({ - ...prev, - members: { - count: 1, - memberData: [ - { - key: wallet.publicKey as PublicKey, - permissions: { - mask: 7, - }, - }, - ], - }, - })); - } - }, [wallet]); - return ( - <> -
-
+
+
+
- {form.members.memberData.map((member, i) => ( -
-
- { - setForm((prev) => { - return { - ...prev, - members: { - ...prev.members, - memberData: prev.members.memberData.map( - (member, index) => { - if (index === i) { - return { - ...member, - key: new PublicKey(e.target.value), - }; - } - return member; - } - ), - }, - }; - }); - }} - /> - {i > 0 && ( - { - setForm((prev) => { - return { - ...prev, - members: { - ...prev.members, - memberData: prev.members.memberData.filter( - (_, index) => index !== i - ), - }, - }; - }); - }} - className="absolute inset-y-3 right-2 w-4 h-4 text-zinc-400 hover:text-zinc-600" - /> - )} -
- { + handleChange("members", { + count: formState.values.members.count, + memberData: formState.values.members.memberData.map( + (member: Member, index: number) => { if (index === i) { return { ...member, - permissions: { - mask: Number(e), - }, + key: new PublicKey(e.target.value), }; } return member; } ), - }, - }; - }); - }} - > - - - - - - None - Proposer - Voter - Executor - All - - - -
- ))} + }); + }} + /> + {i > 0 && ( + { + handleChange("members", { + count: formState.values.members.count, + memberData: + formState.values.members.memberData.filter( + (_: Member, index: number) => index !== i + ), + }); + }} + className="absolute inset-y-3 right-2 w-4 h-4 text-zinc-400 hover:text-zinc-600" + /> + )} +
+ +
+ ) + )} + {formState.errors.members && ( +
+ {formState.errors.members} +
+ )}
- - + +
); } -const isValidPublicKey = (value: string) => { - try { - new PublicKey(value); - return true; - } catch (e) { - return false; - } -}; +function getValidationRules(): ValidationRules { + return { + threshold: async (value: number) => { + if (value < 1) return "Threshold must be greater than 0"; + return null; + }, + rentCollector: async (value: string) => { + const valid = isPublickey(value); + if (!valid) return "Invalid Multisig Key"; + return null; + }, + configAuthority: async (value: string) => { + const valid = isPublickey(value); + if (!valid) return "Invalid Multisig Key"; + return null; + }, + members: async (value: { count: number; memberData: Member[] }) => { + if (value.count < 1) return "At least one member is required"; + + const valid = await Promise.all( + value.memberData.map(async (member) => { + if (member.key == null) return "Invalid Member Key"; + const valid = isPublickey(member.key.toBase58()); + if (!valid) return "Invalid Member Key"; + return null; + }) + ); + + if (valid.includes("Invalid Member Key")) { + let index = valid.findIndex((v) => v === "Invalid Member Key"); + return `Member ${index + 1} is invalid`; + } + + return null; + }, + }; +} diff --git a/components/ExecuteButton.tsx b/components/ExecuteButton.tsx index e420a7c..cea10be 100644 --- a/components/ExecuteButton.tsx +++ b/components/ExecuteButton.tsx @@ -164,13 +164,11 @@ const ExecuteButton = ({ }; return ( - - + +

Execute

diff --git a/components/SendSolButton.tsx b/components/SendSolButton.tsx index 32345b1..56711c6 100644 --- a/components/SendSolButton.tsx +++ b/components/SendSolButton.tsx @@ -24,7 +24,8 @@ import { useWalletModal } from "@solana/wallet-adapter-react-ui"; import { Input } from "./ui/primitives/input"; import { toast } from "sonner"; import { useRouter } from "next/navigation"; -import { isPublickey } from "@/lib/isPublickey"; +import { isPublickey } from "@/lib/checks/isPublickey"; +import SendInput from "./ui/primitives/send-input"; type SendSolProps = { rpcUrl: string; @@ -131,29 +132,47 @@ const SendSol = ({ return ( - - + +

Send SOL

- + - Transfer SOL - + +

+ Transfer SOL +

+
+ Create a proposal to transfer SOL to another address.
- setRecipient(e.target.value)} - /> - {isPublickey(recipient) ? null : ( -

Invalid recipient address

- )} - setAmount(parseInt(e.target.value))} - /> +
+
+ + setRecipient(e.target.value)} + /> + {isPublickey(recipient) ? null : ( +

Invalid recipient address

+ )} +
+
+ + + {amount > 0 ? null : ( +

+ Amount must be greater than 0 +

+ )} +
+
+ +

Send {symbol ? symbol : "Tokens"}

- + - Transfer tokens - + + Transfer tokens + + Create a proposal to transfer tokens to another address. - setRecipient(e.target.value)} - /> - {isPublickey(recipient) ? null : ( -

Invalid recipient address

- )} - setAmount(parseInt(e.target.value))} - /> +
+
+ + setRecipient(e.target.value)} + /> + {isPublickey(recipient) ? null : ( +

Invalid recipient address

+ )} +
+
+ + + {amount > 0 ? null : ( +

+ Amount must be greater than 0 +

+ )} +
+
+ + + {publicKey?.toString().slice(0, 4) + + "..." + + publicKey?.toString().slice(-4)}
- +
@@ -66,8 +64,11 @@ export default function Header() {
- {connected && ( - + {connected && multisig && ( + )}
diff --git a/components/ui/my-multisigs.tsx b/components/ui/my-multisigs.tsx index 3a96408..18964f1 100644 --- a/components/ui/my-multisigs.tsx +++ b/components/ui/my-multisigs.tsx @@ -1,9 +1,7 @@ "use client"; import { useWallet } from "@solana/wallet-adapter-react"; -import Image from "next/image"; import { useEffect, useState } from "react"; import { MultisigInfo } from "@/lib/types"; -import { nFormatter } from "@/lib/nFormatter"; import Link from "next/link"; import { getCachedSquads } from "@/lib/helpers/getCachedMultisigs"; import { toast } from "sonner"; @@ -13,10 +11,9 @@ import { AlertOctagon, RefreshCw } from "lucide-react"; import Loading from "./primitives/loading"; import { Button } from "./primitives/button"; import { Card, CardContent, CardHeader, CardTitle } from "./primitives/card"; -import { useRouter } from "next/navigation"; +import SquadRow from "./squads/squad-row"; export default function MyMultisigs({ rpc }: { rpc: string }) { - const router = useRouter(); const { publicKey, connected } = useWallet(); const [loading, setLoading] = useState(false); const [accounts, setAccounts] = useState([]); @@ -76,11 +73,6 @@ export default function MyMultisigs({ rpc }: { rpc: string }) { } } - const setMultisigCookie = (multisig: string) => { - document.cookie = `x-multisig=${multisig}; path=/`; - router.refresh(); - }; - useEffect(() => { getAccounts(); }, [publicKey]); @@ -122,7 +114,7 @@ export default function MyMultisigs({ rpc }: { rpc: string }) {
- My Squads + My Squads - - ))} -
- +
+ {accounts + .sort((a, b) => b.balance.total - a.balance.total) + .map((acc, i) => ( + + ))} +
) : (
diff --git a/components/ui/pill.tsx b/components/ui/pill.tsx index 98e5387..19b22f6 100644 --- a/components/ui/pill.tsx +++ b/components/ui/pill.tsx @@ -2,7 +2,7 @@ import Image from "next/image"; interface PillProps { label: string; - value: string; + value?: string; image?: string; } @@ -18,15 +18,18 @@ export default function Pill({ label, value, image }: PillProps) { alt={label} width={10} height={10} - className="w-3 h-3" + className="w-3 h-3 rounded-full" />
)}

- {label}{" "} - - {value} - + {label} + {value && ( + + {" "} + {value} + + )}

); diff --git a/components/ui/primitives/input.tsx b/components/ui/primitives/input.tsx index d9c8fad..8b3ecb8 100644 --- a/components/ui/primitives/input.tsx +++ b/components/ui/primitives/input.tsx @@ -11,7 +11,7 @@ const Input = React.forwardRef( { + approved?: number; + rejected?: number; + max?: number; +} + +const MultiProgress = React.forwardRef< + React.ElementRef, + MultiProgressProps +>(({ className, approved, rejected, max = 100, ...props }, ref) => { + const calculatePercentage = (value: number | undefined) => { + return Math.min(100, Math.max(0, ((value || 0) / max) * 100)); + }; + + const percentage1 = calculatePercentage(approved); + const percentage2 = calculatePercentage(rejected); + + return ( + + + + + + + +

+ Approved: {approved}/{max} +

+
+
+
+ + + + + + + +

Rejected: {rejected}

+
+
+
+
+ ); +}); +MultiProgress.displayName = ProgressPrimitive.Root.displayName; + +export { MultiProgress }; diff --git a/components/ui/primitives/progress.tsx b/components/ui/primitives/progress.tsx new file mode 100644 index 0000000..daa9f4a --- /dev/null +++ b/components/ui/primitives/progress.tsx @@ -0,0 +1,45 @@ +"use client"; + +import * as React from "react"; +import * as ProgressPrimitive from "@radix-ui/react-progress"; + +import { cn } from "@/lib/utils"; + +const Progress = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, value, max, ...props }, ref) => { + const calculatePercentage = () => { + if (max !== undefined && max > 0) { + return Math.min(100, Math.max(0, ((value || 0) / max) * 100)); + } + return Math.min(100, Math.max(0, value || 0)); + }; + + const percentage = calculatePercentage(); + const isComplete = percentage === 100; + + return ( + + + + ); +}); +Progress.displayName = ProgressPrimitive.Root.displayName; + +export { Progress }; diff --git a/components/ui/primitives/send-input.tsx b/components/ui/primitives/send-input.tsx new file mode 100644 index 0000000..a68c277 --- /dev/null +++ b/components/ui/primitives/send-input.tsx @@ -0,0 +1,44 @@ +import Image from "next/image"; + +interface SendInputProps { + amount: number; + setAmount: React.Dispatch>; + label?: string; + icon?: string; +} + +export default function SendInput({ + amount, + setAmount, + label, + icon, +}: SendInputProps) { + return ( +
+ setAmount(parseFloat(e.target.value))} + /> + {label && ( +
+ {icon && ( + {label} + )} +

{label}

+
+ )} +
+ ); +} diff --git a/components/ui/settings/RPCConfig.tsx b/components/ui/settings/RPCConfig.tsx index 402442e..97d834a 100644 --- a/components/ui/settings/RPCConfig.tsx +++ b/components/ui/settings/RPCConfig.tsx @@ -11,6 +11,7 @@ import { CardHeader, CardTitle, } from "../primitives/card"; +import { Wifi } from "lucide-react"; export default function RPCConfig() { return ( @@ -23,10 +24,13 @@ export default function RPCConfig() { ease: "easeInOut", }} > - - - RPC Endpoint - + + + + + RPC Endpoint + + Change the default RPC Url for this app. diff --git a/components/ui/squads/squad-row.tsx b/components/ui/squads/squad-row.tsx new file mode 100644 index 0000000..69ffc94 --- /dev/null +++ b/components/ui/squads/squad-row.tsx @@ -0,0 +1,61 @@ +import { nFormatter } from "@/lib/nFormatter"; +import { MultisigInfo } from "@/lib/types"; +import { useTheme } from "next-themes"; +import Image from "next/image"; +import { useRouter } from "next/navigation"; + +interface SquadRowProps { + index: number; + accounts: MultisigInfo[]; + squad: MultisigInfo; +} + +export default function SquadRow({ index, accounts, squad }: SquadRowProps) { + const router = useRouter(); + const { theme } = useTheme(); + + const logo = + theme == "dark" ? "/default_image_light.svg" : "/default_image.svg"; + + const setMultisigCookie = (multisig: string) => { + document.cookie = `x-multisig=${multisig}; path=/`; + router.refresh(); + }; + + return ( +
+ {index > 0 && index < accounts.length && ( +
+ )} + +
+ ); +} diff --git a/components/ui/table/transaction-table-row.tsx b/components/ui/table/transaction-table-row.tsx index df2141d..4d4eb07 100644 --- a/components/ui/table/transaction-table-row.tsx +++ b/components/ui/table/transaction-table-row.tsx @@ -8,6 +8,7 @@ import RejectButton from "@/components/RejectButton"; import ExecuteButton from "@/components/ExecuteButton"; import Chip from "../chip"; import CopyTextButton from "../misc/copy-text"; +import { MultiProgress } from "../primitives/multi-progress"; interface TransactionTableRowProps { rpcUrl: string; @@ -18,6 +19,7 @@ interface TransactionTableRowProps { proposal: multisig.generated.Proposal | null; index: bigint; }; + threshold: number; } export default function TransactionTableRow({ @@ -25,10 +27,8 @@ export default function TransactionTableRow({ multisigPda, programId, transaction, + threshold, }: TransactionTableRowProps) { - const copyText = async (text: string) => { - await navigator.clipboard.writeText(text); - }; return ( @@ -50,8 +50,12 @@ export default function TransactionTableRow({
- {transaction.proposal?.approved.length || 0} /{" "} - {transaction.proposal?.rejected.length || 0} + {showStatusChip(transaction.proposal?.status.__kind || "None")} diff --git a/components/ui/table/transactions-table.tsx b/components/ui/table/transactions-table.tsx index 1f8b65f..854ee25 100644 --- a/components/ui/table/transactions-table.tsx +++ b/components/ui/table/transactions-table.tsx @@ -10,6 +10,7 @@ import { Skeleton } from "../primitives/skeleton"; interface TransactionsTableProps { rpcUrl: string; multisigPda: string; + multisigInfo: multisig.generated.Multisig; programId: string; searchParams: { page: string }; transactions: { @@ -22,6 +23,7 @@ interface TransactionsTableProps { export default function TransactionsTable({ rpcUrl, multisigPda, + multisigInfo, programId, searchParams, transactions, @@ -40,6 +42,7 @@ export default function TransactionsTable({ multisigPda={multisigPda!} programId={programId} transaction={transaction} + threshold={multisigInfo.threshold} /> ))} diff --git a/lib/checks/isMultisig.ts b/lib/checks/isMultisig.ts new file mode 100644 index 0000000..de71fe0 --- /dev/null +++ b/lib/checks/isMultisig.ts @@ -0,0 +1,21 @@ +"use server"; +import * as multisig from "@sqds/multisig"; +import { Connection, PublicKey } from "@solana/web3.js"; + +const isMultisig = async (connection: Connection, address: string) => { + try { + let ad = new PublicKey(address); + await multisig.accounts.Multisig.fromAccountAddress(connection, ad); + return true; + } catch (error) { + return false; + } +}; + +export const isMultisigAddress = async ( + connection: Connection, + address: string +) => { + const valid = await isMultisig(connection, address); + return valid; +}; diff --git a/lib/isProgram.ts b/lib/checks/isProgram.ts similarity index 100% rename from lib/isProgram.ts rename to lib/checks/isProgram.ts diff --git a/lib/isPublickey.ts b/lib/checks/isPublickey.ts similarity index 100% rename from lib/isPublickey.ts rename to lib/checks/isPublickey.ts diff --git a/lib/consts.ts b/lib/consts.ts index 6d50d10..a804de1 100644 --- a/lib/consts.ts +++ b/lib/consts.ts @@ -1 +1,4 @@ +export const MS_CACHE_COOKIE_NAME = "cached-multisigs"; +export const MS_CACHE_TTL = 24 * 60 * 60 * 1000; // 24 hours + export const USDC_MINT = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; diff --git a/lib/createSquad.ts b/lib/createSquad.ts index c8f58c2..f9eff52 100644 --- a/lib/createSquad.ts +++ b/lib/createSquad.ts @@ -1,10 +1,6 @@ import * as web3 from "@solana/web3.js"; import * as multisig from "@sqds/multisig"; - -export interface Member { - key: web3.PublicKey | null; - permissions: multisig.generated.Permissions; -} +import { Member } from "./types"; export async function createMultisig( connection: web3.Connection, @@ -37,7 +33,7 @@ export async function createMultisig( multisigPda: multisigPda, createKey: createKey, creator: user, - members: members as any, + members: members as Member[], threshold: threshold, configAuthority: configAuthority ? configAuthority : null, treasury: configTreasury, diff --git a/lib/helpers/createMultisig.ts b/lib/helpers/createMultisig.ts index ab7250a..fb35580 100644 --- a/lib/helpers/createMultisig.ts +++ b/lib/helpers/createMultisig.ts @@ -1,5 +1,6 @@ import * as web3 from "@solana/web3.js"; import * as multisig from "@sqds/multisig"; +// Sometimes this errors, will fix in next SDK version import { Member } from "@sqds/multisig/lib/generated"; export async function createMultisig( diff --git a/lib/helpers/getCachedMultisigs.ts b/lib/helpers/getCachedMultisigs.ts index 64871ba..36cd532 100644 --- a/lib/helpers/getCachedMultisigs.ts +++ b/lib/helpers/getCachedMultisigs.ts @@ -1,8 +1,7 @@ import * as multisig from "@sqds/multisig"; import { Connection, PublicKey } from "@solana/web3.js"; -import { CachedData, MultisigInfo } from "../types"; +import { CachedData, Member, MultisigInfo } from "../types"; import { getTotalBalance } from "./getTotalBalances"; -import { Member } from "@sqds/multisig/lib/generated"; export async function getCachedSquads( connection: Connection, diff --git a/lib/helpers/getTotalBalances.ts b/lib/helpers/getTotalBalances.ts index fcfa77f..400d23b 100644 --- a/lib/helpers/getTotalBalances.ts +++ b/lib/helpers/getTotalBalances.ts @@ -1,12 +1,13 @@ import { AccountInfo, Connection, LAMPORTS_PER_SOL } from "@solana/web3.js"; import { PublicKey } from "@solana/web3.js"; import { USDC_MINT } from "../consts"; +import { TotalBalancesReturn } from "../types"; export async function getTotalBalance( connection: Connection, key: PublicKey, account: AccountInfo -) { +): Promise { try { const solanaPriceData = await fetch( `https://price.jup.ag/v6/price?ids=SOL`, @@ -14,12 +15,14 @@ export async function getTotalBalance( method: "GET", } ).then((res) => res.json()); - console.log( - account.lamports / LAMPORTS_PER_SOL, - solanaPriceData.data.SOL.price - ); - let solanaUsdBalance = - (account.lamports / LAMPORTS_PER_SOL) * solanaPriceData.data.SOL.price; + + let solanaUsdBalance; + if (!solanaPriceData.data) { + solanaUsdBalance = 0; + } else { + solanaUsdBalance = + (account.lamports / LAMPORTS_PER_SOL) * solanaPriceData.data.SOL.price; + } const usdcAccount = await connection.getParsedTokenAccountsByOwner(key, { mint: new PublicKey(USDC_MINT), diff --git a/lib/hooks/useMultisigs.ts b/lib/hooks/useMultisigs.ts new file mode 100644 index 0000000..6946c6c --- /dev/null +++ b/lib/hooks/useMultisigs.ts @@ -0,0 +1,92 @@ +import { useState, useEffect, useCallback } from "react"; +import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js"; +import { useWallet } from "@solana/wallet-adapter-react"; +import { CachedData, MultisigInfo } from "../types"; +import { toast } from "sonner"; +import { getMultisigs } from "../helpers/getMultisigs"; +import { getCachedSquads } from "../helpers/getCachedMultisigs"; +import { MS_CACHE_COOKIE_NAME, MS_CACHE_TTL } from "../consts"; + +export function useMultisigAccounts(rpc?: string) { + const { publicKey, connected } = useWallet(); + + const [loading, setLoading] = useState(false); + const [accounts, setAccounts] = useState([]); + + const connection = new Connection(rpc || clusterApiUrl("mainnet-beta")); + + const getCachedData = useCallback((): CachedData | null => { + if (typeof window === "undefined") return null; // Are we server-side? + + const cookieData = document.cookie + .split("; ") + .find((row) => row.startsWith(`${MS_CACHE_COOKIE_NAME}=`)) + ?.split("=")[1]; + + if (!cookieData) return null; + + try { + return JSON.parse(decodeURIComponent(cookieData)); + } catch (error) { + console.error("Error parsing cached data:", error); + return null; + } + }, []); + + const setCachedData = useCallback((data: CachedData) => { + if (typeof window === "undefined") return; // Are we server-side? + + const encoded = encodeURIComponent(JSON.stringify(data)); + document.cookie = `${MS_CACHE_COOKIE_NAME}=${encoded}; path=/; max-age=${ + MS_CACHE_TTL / 1000 + }; SameSite=Strict`; + }, []); + + const getAccounts = useCallback(async () => { + if (!connected || !publicKey) { + setAccounts([]); + return; + } + + setLoading(true); + try { + const cachedData = getCachedData(); + + if (cachedData && cachedData.ttl > Date.now()) { + console.log("Cache found & valid, updating..."); + const cache = await getCachedSquads(connection, cachedData); + setAccounts(cache.multisigs); + } else { + console.log("Cache invalid or not found, refreshing..."); + toast("Fetching Squads Accounts. This may take up to two minutes."); + + const freshAccounts = await refreshAccounts(publicKey); + setAccounts(freshAccounts); + } + } catch (e) { + console.error(e); + toast.error(`Error fetching: ${e}`); + } finally { + setLoading(false); + } + }, [publicKey, connection]); + + const refreshAccounts = useCallback( + async (publicKey: PublicKey): Promise => { + toast("Fetching Squads Accounts. This may take up to two minutes."); + const fetchedAccounts = await getMultisigs(connection, publicKey); + setCachedData({ + multisigs: fetchedAccounts, + ttl: Date.now() + MS_CACHE_TTL, + }); + return fetchedAccounts; + }, + [connection, setCachedData] + ); + + useEffect(() => { + getAccounts(); + }, [publicKey, getAccounts]); + + return { loading, accounts, refreshAccounts }; +} diff --git a/lib/hooks/useSquadForm.ts b/lib/hooks/useSquadForm.ts new file mode 100644 index 0000000..63ce65c --- /dev/null +++ b/lib/hooks/useSquadForm.ts @@ -0,0 +1,89 @@ +"use client"; +import { useCallback, useState } from "react"; +import { FormState, FormValues, ValidationRules } from "../types"; + +type SubmitHandler = () => Promise; + +export function useSquadForm( + initialValues: FormValues, + validationRules: ValidationRules +) { + const [formState, setFormState] = useState({ + values: initialValues, + errors: {}, + isValid: true, + isLoading: false, + }); + + const validateField = useCallback( + async (field: string, value: any) => { + if (validationRules[field]) { + const error = await validationRules[field](value); + return error; + } + return null; + }, + [validationRules] + ); + + const handleChange = useCallback( + async (field: string, value: any) => { + setFormState((prev) => ({ + ...prev, + isLoading: true, + values: { ...prev.values, [field]: value }, + })); + + const error = await validateField(field, value); + + setFormState((prev) => { + const newErrors = { ...prev.errors, [field]: error || "" }; + const isValid = Object.values(newErrors).every((err) => !err); + + return { + ...prev, + errors: newErrors, + isValid, + isLoading: false, + }; + }); + }, + [validateField] + ); + + const handleAddMember = (e: any) => { + e.preventDefault(); + handleChange("members", { + count: formState.values.members.count + 1, + memberData: [ + ...formState.values.members.memberData, + { + key: null, + permissions: { + mask: 0, + }, + }, + ], + }); + }; + + const onSubmit = async (handler: SubmitHandler): Promise => { + setFormState((prev) => ({ + ...prev, + isLoading: true, + })); + try { + return await handler(); + } catch (error: any) { + console.error(error); + throw error; + } finally { + setFormState((prev) => ({ + ...prev, + isLoading: false, + })); + } + }; + + return { formState, handleChange, handleAddMember, onSubmit }; +} diff --git a/lib/types.ts b/lib/types.ts index e30b02e..c64a901 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -4,11 +4,7 @@ import * as multisig from "@sqds/multisig"; export interface MultisigInfo { publicKey: string; vault: string; - balance: { - total: number; - solana: { balance: number; usdAmount: number }; - usdc: { balance: number; usdAmount: number }; - }; + balance: TotalBalancesReturn; data: multisig.generated.Multisig; } @@ -16,7 +12,6 @@ export interface CachedMultisigInfo { publicKey: string; vault: string; data: multisig.generated.Multisig; - createdAt: number; } export interface CachedData { @@ -24,10 +19,45 @@ export interface CachedData { ttl: number; } -export interface FilteredTokens { +// Mimic the v4 member type, since the SDK exposed type +// will error sometimes in the IDE +export interface Member { + key: PublicKey; + permissions: multisig.generated.Permissions; +} + +export interface FilteredToken { mint: string; symbol: string | null; icon: string | null; pubkey: PublicKey; account: AccountInfo; } + +export interface FormValues { + [key: string]: any; +} + +export type ValidationErrors = Record; +export type ValidationFunction = (value: any) => Promise; +export interface ValidationRules { + [key: string]: ValidationFunction; +} + +export interface FormState { + values: FormValues; + errors: ValidationErrors; + isValid: boolean; + isLoading: boolean; +} + +export interface TokenPrice { + balance: number; + usdAmount: number | null; +} + +export interface TotalBalancesReturn { + total: number; + solana: TokenPrice; + usdc: TokenPrice; +} diff --git a/package.json b/package.json index 9491700..0d03aa4 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@headlessui/react": "^2.1.10", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-popover": "^1.0.7", + "@radix-ui/react-progress": "^1.1.0", "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-slot": "^1.0.2", "@radix-ui/react-tooltip": "^1.1.3", diff --git a/public/default_image_light.svg b/public/default_image_light.svg new file mode 100644 index 0000000..600c003 --- /dev/null +++ b/public/default_image_light.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6183e224789a4e80d479a986c52dd52cbeff27f2 GIT binary patch literal 2153 zcmZ{kc~H|y7RP@G1VvzUlt4%%QBHBVNrDkj6b2mx8AlgZG(jMsqey^+TR_qAz;Fcz zm2ir{AXh*@2sh!B`#u9nfIt$?K)8xwV{O$|?H|+i`hBbWTc7HFue$n`gT0NstcolE z0PcS}9iYieq$tHn`WRaKRc@HRF!c4lT~Zf-6b=g!T|rlzKagoMt` zac5^|#pP;i>o6FMo}M0ET|Fj~Nuf|08yUU5y(T6|MMWhN$$w&EA~Eq@eSJL=i4F`5 znw*^M?d|LC?nWR^ayXpQ(z4anwa(5?2t;LSYO1TNi$*I(B2f?sG$tmNMx({V#7s|5 zcXV`!`&v{)i;j+7Sy?SADvFMd86O}2_U+r)*jQm<5uIK|CX)*b3+Z%vTU#5M96dTZ z+TPw?SxL{z%Brla#N$2u{D?|m$n^Bo@#A0|&ZV`rb$EE#$H!MsPaliL4Gs?a`uZg# zB+Smva5(I#DP~qy_JaoxhlYmI($YFRyRx&hM@B{h0s>J;Gzw*kMwy~eXgxgxAA&Df zQE6mkcw%Cl#hNA%e43kE;P8{m$`E&VkLKp){{DfnvGIa}!Z+UsIV$Q+X67d*Q{0J( zfq{Yk{{H>_{acFN#p1^&;c9DR)k2p3#aX{!CJK^36sq^ADwnL*z%S?+>VW~;U+;JKY^ZO8(w@hqxtWH zH=R9&@#+#~TOJHQv{!Vtwg!f7b+Sr>F}+~ok_fhcMA@HPat_Yr>F#?~llsfX8_JDM zQ7)M97SMijfLCoui+zqoPKeR_tKs3{S<6fb>uJNKm0a1|ksPl7Wcj&^ph~!Th0QE{ zi&_o@1j4lgTHqCs46S*N;B zlhk@2%3O*3X)Hh%>vzU7@}6&P9;WL4hY032ci2s`jVyd>A|;PiE;@cd$@;>w*$ep{ zb(2lOMAi%1lY*R^u(gp0Q^-Wr2x1Wny>k79f>wr_KHjd?`^*a^JfufUYsJW@HS>~Q z)$c2^CJqm8t4gmoHs5SF?Lz1~`Y`wr zHRUYyuORQ!q0c5UcE+@NtFVDXg?vof`M0d{xcW?XGqQ<#5!7$|Q7WbLfQMI{<#Oif zA~Pz?2TWeGV#XU{=Sm`&m93%_t6c7hesWTlobk&hW~a0LR^DB}gWFl%X0;iT!I;k3 z=s_^I|0Xa`5!7VnOId>g8Mw&)_25w417Ys~%dO>F2mZ6^T)Kq0=;@!kUq9mPZ3iiM zVFr@4Ht;GaQZDt|tOT7D?;5(cpgLP3yIo;!f@{U4sGd>AJm;oM&{6lTQ~&1iS?Pv3 zJ~@Alj-Jl*j+O()iMz{BepW7!0o2P3d_Lw}-bwuWr4654k{v(MegWoNKF6 zpSEbfaXh;#R$PyMEmN@D>u$ou|E0Yhv}E=-KeQ`sLjfoC2v!r^uS47u?Y_)+7sQ<3 z-#N#Z#Zi+a3-TM2jq};(C6DzVI~HYY8x^&$w}<|NLnqvu#zH47di%&`VZ5J$^PD<* z1E1?3j|k!GM5YV7YkryU}U0efYdca-!L@6Aki3OEE|f{QLs{{y!(Nwxq0 literal 0 HcmV?d00001 diff --git a/yarn.lock b/yarn.lock index 3b1ea0a..fb7f0bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -552,6 +552,14 @@ dependencies: "@radix-ui/react-slot" "1.1.0" +"@radix-ui/react-progress@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-progress/-/react-progress-1.1.0.tgz#28c267885ec154fc557ec7a66cb462787312f7e2" + integrity sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg== + dependencies: + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-select@^2.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.1.2.tgz#2346e118966db793940f6a866fd4cc5db2cc275e" From b7737e596350bd8ffdfc055839f00bbc93bc7d6f Mon Sep 17 00:00:00 2001 From: Joey Meere <100378695+joeymeere@users.noreply.github.com> Date: Wed, 23 Oct 2024 13:28:44 -0400 Subject: [PATCH 03/15] fix(ui): clarity on tx status --- components/TokenList.tsx | 34 +++++++++---------- components/ui/layout/page-header.tsx | 1 + components/ui/table/transaction-table-row.tsx | 2 +- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/components/TokenList.tsx b/components/TokenList.tsx index 7be293b..7983db7 100644 --- a/components/TokenList.tsx +++ b/components/TokenList.tsx @@ -45,25 +45,23 @@ export function TokenList({
-
-
-
- SOL Icon -
-

- SOL +

+
+ SOL Icon +
+

+ SOL +

+
+

+ Amount: {solBalance / LAMPORTS_PER_SOL}

-
-

- Amount: {solBalance / LAMPORTS_PER_SOL} -

-
diff --git a/components/ui/layout/page-header.tsx b/components/ui/layout/page-header.tsx index f7f6100..74520d9 100644 --- a/components/ui/layout/page-header.tsx +++ b/components/ui/layout/page-header.tsx @@ -6,6 +6,7 @@ export default function PageHeader({ heading }: { heading: string }) { ; case "Approved": - return ; + return ; case "Executing": return ; case "Executed": From 22fab8c7547837fa6cb1e437bd9a5946bcea252f Mon Sep 17 00:00:00 2001 From: Joey Meere <100378695+joeymeere@users.noreply.github.com> Date: Wed, 23 Oct 2024 16:07:03 -0400 Subject: [PATCH 04/15] fix: resolve merge issues --- components/CreateSquadForm.tsx | 15 +--------- components/SetProgramIdInput.tsx | 6 ++-- lib/helpers/createMultisig.ts | 48 -------------------------------- lib/{ => helpers}/createSquad.ts | 2 +- 4 files changed, 5 insertions(+), 66 deletions(-) delete mode 100644 lib/helpers/createMultisig.ts rename lib/{ => helpers}/createSquad.ts (97%) diff --git a/components/CreateSquadForm.tsx b/components/CreateSquadForm.tsx index 3d55fb6..13ae16c 100644 --- a/components/CreateSquadForm.tsx +++ b/components/CreateSquadForm.tsx @@ -1,7 +1,7 @@ "use client"; import { Button } from "./ui/primitives/button"; import { Input } from "./ui/primitives/input"; -import { createMultisig } from "@/lib/createSquad"; +import { createMultisig } from "@/lib/helpers/createSquad"; import { Connection, Keypair, PublicKey, clusterApiUrl } from "@solana/web3.js"; import { useWallet } from "@solana/wallet-adapter-react"; import { PlusCircleIcon, XIcon } from "lucide-react"; @@ -19,19 +19,6 @@ import { Member, ValidationRules } from "@/lib/types"; import { useSquadForm } from "@/lib/hooks/useSquadForm"; import { isPublickey } from "@/lib/checks/isPublickey"; -interface MemberAddresses { - count: number; - memberData: Member[]; -} - -interface CreateSquadFormData { - members: MemberAddresses; - threshold: number; - rentCollector: string; - configAuthority: string; - createKey: string; -} - export default function CreateSquadForm({ rpc }: { rpc: string }) { const router = useRouter(); const { publicKey, connected, sendTransaction } = useWallet(); diff --git a/components/SetProgramIdInput.tsx b/components/SetProgramIdInput.tsx index bc8bfd8..c7ac5e7 100644 --- a/components/SetProgramIdInput.tsx +++ b/components/SetProgramIdInput.tsx @@ -1,10 +1,10 @@ "use client"; import { useState } from "react"; -import { Input } from "./ui/input"; -import { Button } from "./ui/button"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; -import { isPublickey } from "@/lib/isPublickey"; +import { Input } from "./ui/primitives/input"; +import { Button } from "./ui/primitives/button"; +import { isPublickey } from "@/lib/checks/isPublickey"; const SetProgramIdInput = () => { const [programId, setProgramId] = useState(""); diff --git a/lib/helpers/createMultisig.ts b/lib/helpers/createMultisig.ts deleted file mode 100644 index fb35580..0000000 --- a/lib/helpers/createMultisig.ts +++ /dev/null @@ -1,48 +0,0 @@ -import * as web3 from "@solana/web3.js"; -import * as multisig from "@sqds/multisig"; -// Sometimes this errors, will fix in next SDK version -import { Member } from "@sqds/multisig/lib/generated"; - -export async function createMultisig( - connection: web3.Connection, - user: web3.PublicKey, - members: Member[], - threshold: number, - createKey: web3.PublicKey, - rentCollector?: web3.PublicKey, - configAuthority?: web3.PublicKey -) { - try { - const multisigPda = multisig.getMultisigPda({ - createKey, - programId: multisig.PROGRAM_ID, - })[0]; - const [programConfig] = multisig.getProgramConfigPda({ - programId: multisig.PROGRAM_ID, - }); - const programConfigInfo = - await multisig.accounts.ProgramConfig.fromAccountAddress( - connection, - programConfig - ); - const configTreasury = programConfigInfo.treasury; - const ix = multisig.instructions.multisigCreateV2({ - multisigPda: multisigPda, - createKey: createKey, - creator: user, - members: members as any, - threshold: threshold, - configAuthority: configAuthority ? configAuthority : null, - treasury: configTreasury, - rentCollector: rentCollector ? rentCollector : null, - timeLock: 0, - programId: multisig.PROGRAM_ID, - }); - const tx = new web3.Transaction().add(ix); - tx.feePayer = user; - tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; - return { transaction: tx, multisig: multisigPda }; - } catch (err) { - throw err; - } -} diff --git a/lib/createSquad.ts b/lib/helpers/createSquad.ts similarity index 97% rename from lib/createSquad.ts rename to lib/helpers/createSquad.ts index f9eff52..946cffa 100644 --- a/lib/createSquad.ts +++ b/lib/helpers/createSquad.ts @@ -1,6 +1,6 @@ import * as web3 from "@solana/web3.js"; import * as multisig from "@sqds/multisig"; -import { Member } from "./types"; +import { Member } from "../types"; export async function createMultisig( connection: web3.Connection, From 3e528790572303a55e604fd55157d897b75f1504 Mon Sep 17 00:00:00 2001 From: Joey Meere <100378695+joeymeere@users.noreply.github.com> Date: Wed, 23 Oct 2024 16:08:22 -0400 Subject: [PATCH 05/15] Update page.tsx --- app/(app)/create/page.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/app/(app)/create/page.tsx b/app/(app)/create/page.tsx index cbbf360..73d10ab 100644 --- a/app/(app)/create/page.tsx +++ b/app/(app)/create/page.tsx @@ -1,5 +1,6 @@ import CreateSquadForm from "@/components/CreateSquadForm"; import PageHeader from "@/components/ui/layout/page-header"; +import { Card, CardContent } from "@/components/ui/primitives/card"; import { PROGRAM_ID } from "@sqds/multisig"; import { cookies, headers } from "next/headers"; From bad668b465be4041291d141b768e0c3bc46a723b Mon Sep 17 00:00:00 2001 From: Joey Meere <100378695+joeymeere@users.noreply.github.com> Date: Wed, 23 Oct 2024 16:10:56 -0400 Subject: [PATCH 06/15] fix: finish resolving merge --- components/CreateTransactionButton.tsx | 22 ++--- components/TransactionTable.tsx | 115 ------------------------- 2 files changed, 11 insertions(+), 126 deletions(-) delete mode 100644 components/TransactionTable.tsx diff --git a/components/CreateTransactionButton.tsx b/components/CreateTransactionButton.tsx index 2991a03..e68271f 100644 --- a/components/CreateTransactionButton.tsx +++ b/components/CreateTransactionButton.tsx @@ -1,15 +1,6 @@ "use client"; -import { - Dialog, - DialogContent, - DialogDescription, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "@/components/ui/dialog"; -import * as bs58 from "bs58"; -import { Button } from "./ui/button"; import { useState } from "react"; +import * as bs58 from "bs58"; import * as multisig from "@sqds/multisig"; import { useWallet } from "@solana/wallet-adapter-react"; import { @@ -19,10 +10,19 @@ import { TransactionMessage, clusterApiUrl, } from "@solana/web3.js"; -import { Input } from "./ui/input"; import { toast } from "sonner"; import { simulateEncodedTransaction } from "@/lib/transaction/simulateEncodedTransaction"; import { importTransaction } from "@/lib/transaction/importTransaction"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "./ui/primitives/dialog"; +import { Input } from "./ui/primitives/input"; +import { Button } from "./ui/primitives/button"; type CreateTransactionProps = { rpcUrl: string | null; diff --git a/components/TransactionTable.tsx b/components/TransactionTable.tsx deleted file mode 100644 index 6184205..0000000 --- a/components/TransactionTable.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import * as multisig from "@sqds/multisig"; -import ApproveButton from "./ApproveButton"; -import ExecuteButton from "./ExecuteButton"; -import RejectButton from "./RejectButton"; -import { TableBody, TableCell, TableRow } from "./ui/table"; -import Link from "next/link"; - -interface ActionButtonsProps { - rpcUrl: string; - multisigPda: string; - transactionIndex: number; - proposalStatus: string; - programId: string; -} - -export default function TransactionTable({ - multisigPda, - rpcUrl, - transactions, - programId, -}: { - multisigPda: string; - rpcUrl: string; - transactions: { - transactionPda: string; - proposal: multisig.generated.Proposal | null; - index: bigint; - }[]; - programId?: string; -}) { - if (transactions.length === 0) { - - - No transactions found. - - ; - } - return ( - - {transactions.map((transaction, index) => { - return ( - - {Number(transaction.index)} - - - {transaction.transactionPda} - - - - {transaction.proposal?.status.__kind || "Active"} - - - - - - ); - })} - - ); -} - -function ActionButtons({ - rpcUrl, - multisigPda, - transactionIndex, - proposalStatus, - programId, -}: ActionButtonsProps) { - return ( - <> - - - - - ); -} - -function createSolanaExplorerUrl(publicKey: string, rpcUrl: string): string { - const baseUrl = "https://explorer.solana.com/address/"; - const clusterQuery = "?cluster=custom&customUrl="; - const encodedRpcUrl = encodeURIComponent(rpcUrl); - - return `${baseUrl}${publicKey}${clusterQuery}${encodedRpcUrl}`; -} From 86ae03384e4281e790f898cd51ba148bf390e9e2 Mon Sep 17 00:00:00 2001 From: Joey Meere <100378695+joeymeere@users.noreply.github.com> Date: Tue, 5 Nov 2024 11:18:55 -0500 Subject: [PATCH 07/15] minor UI refactors --- app/(app)/config/page.tsx | 20 +++--- app/(app)/create/page.tsx | 4 +- app/(app)/layout.tsx | 8 +-- app/(app)/page.tsx | 40 ++++++++++-- app/(app)/settings/page.tsx | 4 +- app/(app)/transactions/page.tsx | 11 +--- components/ConnectWalletButton.tsx | 24 ------- components/RenderMultisigRoute.tsx | 31 ---------- components/SetRpcUrlnput.tsx | 62 ------------------- .../add-member.tsx} | 4 +- .../change-threshold.tsx} | 4 +- .../change-upgrade-auth-input.tsx} | 4 +- .../{ui => config}/change-upgrade-auth.tsx | 5 +- .../remove-member.tsx} | 2 +- .../create-squad-form.tsx} | 6 +- .../create-transaction.tsx} | 6 +- components/{ui => }/layout/custom-toaster.tsx | 0 components/{ui => }/layout/header.tsx | 4 +- .../{ui => }/layout/light-dark-button.tsx | 0 components/{ui => }/layout/page-header.tsx | 0 .../wallet}/connect-button.tsx | 2 +- .../{ui => layout/wallet}/wallet-modal.tsx | 0 .../approve-button.tsx} | 2 +- .../execute-button.tsx} | 10 +-- .../reject-button.tsx} | 2 +- components/render-route.tsx | 25 ++++++++ .../set-multisig.tsx} | 4 +- .../set-programid.tsx} | 4 +- .../RPCConfig.tsx => settings/set-rpc.tsx} | 6 +- .../send-sol.tsx} | 6 +- .../send-token.tsx} | 6 +- .../{TokenList.tsx => tokens/token-list.tsx} | 7 ++- components/ui/pill.tsx | 1 + components/ui/{ => squads}/my-multisigs.tsx | 8 +-- components/ui/table/transaction-table-row.tsx | 6 +- .../{VaultDisplayer.tsx => vault-display.tsx} | 2 +- .../{VaultSelector.tsx => vault-selector.tsx} | 0 37 files changed, 129 insertions(+), 201 deletions(-) delete mode 100644 components/ConnectWalletButton.tsx delete mode 100644 components/RenderMultisigRoute.tsx delete mode 100644 components/SetRpcUrlnput.tsx rename components/{AddMemberInput.tsx => config/add-member.tsx} (97%) rename components/{ChangeThresholdInput.tsx => config/change-threshold.tsx} (97%) rename components/{ChangeUpgradeAuthorityInput.tsx => config/change-upgrade-auth-input.tsx} (98%) rename components/{ui => config}/change-upgrade-auth.tsx (90%) rename components/{RemoveMemberButton.tsx => config/remove-member.tsx} (98%) rename components/{CreateSquadForm.tsx => create/create-squad-form.tsx} (99%) rename components/{CreateTransactionButton.tsx => create/create-transaction.tsx} (97%) rename components/{ui => }/layout/custom-toaster.tsx (100%) rename components/{ui => }/layout/header.tsx (97%) rename components/{ui => }/layout/light-dark-button.tsx (100%) rename components/{ui => }/layout/page-header.tsx (100%) rename components/{ui/layout => layout/wallet}/connect-button.tsx (98%) rename components/{ui => layout/wallet}/wallet-modal.tsx (100%) rename components/{ApproveButton.tsx => proposal-actions/approve-button.tsx} (98%) rename components/{ExecuteButton.tsx => proposal-actions/execute-button.tsx} (96%) rename components/{RejectButton.tsx => proposal-actions/reject-button.tsx} (98%) create mode 100644 components/render-route.tsx rename components/{MultisigInput.tsx => settings/set-multisig.tsx} (91%) rename components/{SetProgramIdInput.tsx => settings/set-programid.tsx} (93%) rename components/{ui/settings/RPCConfig.tsx => settings/set-rpc.tsx} (96%) rename components/{SendSolButton.tsx => tokens/send-sol.tsx} (97%) rename components/{SendTokensButton.tsx => tokens/send-token.tsx} (98%) rename components/{TokenList.tsx => tokens/token-list.tsx} (97%) rename components/ui/{ => squads}/my-multisigs.tsx (97%) rename components/{VaultDisplayer.tsx => vault-display.tsx} (96%) rename components/{VaultSelector.tsx => vault-selector.tsx} (100%) diff --git a/app/(app)/config/page.tsx b/app/(app)/config/page.tsx index 6c7195b..6e36ca8 100644 --- a/app/(app)/config/page.tsx +++ b/app/(app)/config/page.tsx @@ -1,9 +1,8 @@ -import AddMemberInput from "@/components/AddMemberInput"; -import ChangeThresholdInput from "@/components/ChangeThresholdInput"; -import ChangeUpgradeAuthorityInput from "@/components/ChangeUpgradeAuthorityInput"; -import RemoveMemberButton from "@/components/RemoveMemberButton"; +import AddMemberInput from "@/components/config/add-member"; +import ChangeThresholdInput from "@/components/config/change-threshold"; +import RemoveMemberButton from "@/components/config/remove-member"; import Chip from "@/components/ui/chip"; -import PageHeader from "@/components/ui/layout/page-header"; +import PageHeader from "@/components/layout/page-header"; import CopyTextButton from "@/components/ui/misc/copy-text"; import { Card, @@ -14,15 +13,15 @@ import { } from "@/components/ui/primitives/card"; import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js"; import * as multisig from "@sqds/multisig"; -import { ArrowUp01, Code2, User, UserPlus, Users } from "lucide-react"; +import { ArrowUp01, UserPlus, Users } from "lucide-react"; import { cookies, headers } from "next/headers"; -const ConfigurationPage = async () => { + +export default async function Configuration() { const rpcUrl = headers().get("x-rpc-url"); const connection = new Connection(rpcUrl || clusterApiUrl("mainnet-beta")); const multisigCookie = headers().get("x-multisig"); const multisigPda = new PublicKey(multisigCookie!); - const vaultIndex = Number(headers().get("x-vault-index")); const programIdCookie = cookies().get("x-program-id")?.value; const programId = programIdCookie ? new PublicKey(programIdCookie!) @@ -32,6 +31,7 @@ const ConfigurationPage = async () => { connection, multisigPda ); + return (
@@ -146,6 +146,4 @@ const ConfigurationPage = async () => {
); -}; - -export default ConfigurationPage; +} diff --git a/app/(app)/create/page.tsx b/app/(app)/create/page.tsx index 73d10ab..e498c96 100644 --- a/app/(app)/create/page.tsx +++ b/app/(app)/create/page.tsx @@ -1,5 +1,5 @@ -import CreateSquadForm from "@/components/CreateSquadForm"; -import PageHeader from "@/components/ui/layout/page-header"; +import CreateSquadForm from "@/components/create/create-squad-form"; +import PageHeader from "@/components/layout/page-header"; import { Card, CardContent } from "@/components/ui/primitives/card"; import { PROGRAM_ID } from "@sqds/multisig"; import { cookies, headers } from "next/headers"; diff --git a/app/(app)/layout.tsx b/app/(app)/layout.tsx index 6c556bb..85898ae 100644 --- a/app/(app)/layout.tsx +++ b/app/(app)/layout.tsx @@ -1,9 +1,9 @@ import { headers } from "next/headers"; import { Connection, clusterApiUrl } from "@solana/web3.js"; -import RenderMultisigRoute from "@/components/RenderMultisigRoute"; -import Header from "@/components/ui/layout/header"; +import RenderMultisigRoute from "@/components/render-route"; +import Header from "@/components/layout/header"; import { ThemeProvider } from "next-themes"; -import { CustomToaster } from "@/components/ui/layout/custom-toaster"; +import { CustomToaster } from "@/components/layout/custom-toaster"; import { isMultisigAddress } from "@/lib/checks/isMultisig"; import { SolanaProvider } from "@/providers/SolanaProvider"; @@ -17,8 +17,8 @@ const AppLayout = async ({ children }: { children: React.ReactNode }) => { return ( -
+
diff --git a/app/(app)/page.tsx b/app/(app)/page.tsx index 32e03ff..ea6059e 100644 --- a/app/(app)/page.tsx +++ b/app/(app)/page.tsx @@ -1,13 +1,20 @@ import * as multisig from "@sqds/multisig"; -import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js"; +import { + Connection, + PublicKey, + TransactionMessage, + VersionedTransaction, + clusterApiUrl, +} from "@solana/web3.js"; import { cookies, headers } from "next/headers"; -import { TokenList } from "@/components/TokenList"; -import { VaultDisplayer } from "@/components/VaultDisplayer"; -import PageHeader from "@/components/ui/layout/page-header"; -import MyMultisigs from "@/components/ui/my-multisigs"; +import { TokenList } from "@/components/tokens/token-list"; +import { VaultDisplayer } from "@/components/vault-display"; +import PageHeader from "@/components/layout/page-header"; +import MyMultisigs from "@/components/ui/squads/my-multisigs"; import { lookupAddress } from "@/lib/helpers/tokenAddresses"; import { FilteredToken } from "@/lib/types"; -import ChangeUpgradeAuth from "@/components/ui/change-upgrade-auth"; +import ChangeUpgradeAuth from "@/components/config/change-upgrade-auth"; +import * as bs58 from "bs58"; export default async function Home() { const rpcUrl = headers().get("x-rpc-url"); @@ -62,6 +69,27 @@ export default async function Home() { } }); + const a = () => { + let b = bs58.default.decode( + "f8FMmaomsDZZN2ViKpwx25uztE657ZkfFyXravqtHd6Lsp6fGyeaPDQQaRiD4tDzT4Hg1wW5czWuMzYj6MXKpBo8tP2cXVVsoUKvjDWtDPzRbCGkEoZyPFUzsV34vhySAXL7UUY6GqcXWAJXjs6jC8Cb9qtakRYPi8zvMQ2FS1mceJexNA1MUpthKrqUuYcKS2QXiprjZtHPiw3TCqET9gjziMtsGdZtEiwddA7jfCR8SZGJX14SSRLmjLybXq4pDzZuMXs8QxpJY7CaPebTuSzCo7HC8r8Ae7rgbTJ5j6pR7kj7DifFhbBGgwKi2iRbSRPbuTwYbevVX5eNNdhYPb9kBhXZCkfuaiZuPa9MYJ6WZF82tU7t9Agoe6UmgzZQkJTHoDAkGpnKLU1tj5GwzRfXt5MEcQhJEW6fv1PP3RzRbvqUiVV6tmXnsZuRyT3ijw36YFquPmrmNsy3kkk2hn4iTaisMtsxnFrqx9eFutAXGLw6ggdT6WBqg3FhjaTE7Sd7L8eAHdPZnjVrSwd1LLdK3dZ1f1Bu4tM1uwEqCPneBEYPKytHunpZFJe6MiyZMxWaqeb9md73tRSyXihknaVJxb1EhPppMRqJ9HmSAUidC5hNcSP6shCEsLo7trFf9Pf75wTNJUuDgmUNc7BEuPuQzrMzvnhvvm7LCpTeaGoockFYL84qCuipTg4zjeUYG4WmvHhvNYXRAYbjPuRKA5vnUA8cdFXirbETNFsh4XtJVAgdqb7R8JFafmHHHk2ryMYhMC6WoY19XWiPTmEVoK24d7Aa1y2sjEsVU7f78HYyDrmmRUQNAFn82PPBnBbCPzZC9MiRzwQnLgn9HwSMqhnbPgVxJDvrVy82ktPcPFuDcVWSqSE929QrtxyykGMpCZhkxEEzST2BAUuXvCyE7qLMfXfSWiWZGkEcywYT3JgxUNBunj9FP4saU9qkxnHqtN2xC1KwpaqXXVLcEe7Uj75J84sj4C8MuuMBKTrhLu1yR5YFVqLFaM8S1GeGsd5oNZ1G63Nj2F2NuKFheWXsq8dReN23EjgKmDVRa6PBtu6Sv4PsbQwyFDxMNkLg5hBqvx31Bzw72UYyanVQCNW6hZJcGKXKUwn4rYam7hThQLZU6atqMEureBk52jGXnmqjRZ8p5xT7uhCEa2K8tNNfXFmH6g6hoR59mZUDvqTaiS9EnCsFXtKp4bxLWRBnasLdvDQsTkkD6TDsCrH5koLSMs52tvgu64KmuUZqy7BeBS99g4c3YLBP2ipK7eMfEswN5jLTuNq7LTjHvgBiEqyQbsJdYLWCLm7rvfwDhQT4BNGsP98AUZ7XEqzuqW7QCYhMbsh7oY7Teeqt6B3ppjX1XYifcKqZfa463FrLcjTdjjUq1LBRXhvoxtsHAtud" + ); + let message = TransactionMessage.decompile( + VersionedTransaction.deserialize(b).message, + { + addressLookupTableAccounts: [], + } + ); + message.instructions.splice(1, 2); + return { + base58: bs58.default.encode(message.compileToLegacyMessage().serialize()), + base64: Buffer.from( + message.compileToLegacyMessage().serialize() + ).toString("base64"), + }; + }; + + console.log(a()); + return (
diff --git a/app/(app)/settings/page.tsx b/app/(app)/settings/page.tsx index 64e3c8d..4e2f84b 100644 --- a/app/(app)/settings/page.tsx +++ b/app/(app)/settings/page.tsx @@ -1,5 +1,5 @@ -import PageHeader from "@/components/ui/layout/page-header"; -import RPCConfig from "@/components/ui/settings/RPCConfig"; +import PageHeader from "@/components/layout/page-header"; +import RPCConfig from "@/components/settings/set-rpc"; const SettingsPage = () => { return ( diff --git a/app/(app)/transactions/page.tsx b/app/(app)/transactions/page.tsx index 67ef9d5..17ae985 100644 --- a/app/(app)/transactions/page.tsx +++ b/app/(app)/transactions/page.tsx @@ -1,7 +1,7 @@ import * as multisig from "@sqds/multisig"; import { cookies, headers } from "next/headers"; import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js"; -import PageHeader from "@/components/ui/layout/page-header"; +import PageHeader from "@/components/layout/page-header"; import TransactionsTable from "@/components/ui/table/transactions-table"; import { getRecentTransactions } from "@/lib/helpers/getRecentTransactions"; @@ -34,13 +34,6 @@ export default async function TransactionsPage({ page ); - const transactions = latestTransactions.map((transaction) => { - return { - ...transaction, - transactionPda: transaction.transactionPda[0].toBase58(), - }; - }); - return (
@@ -54,4 +47,4 @@ export default async function TransactionsPage({ />
); -} \ No newline at end of file +} diff --git a/components/ConnectWalletButton.tsx b/components/ConnectWalletButton.tsx deleted file mode 100644 index fb764b8..0000000 --- a/components/ConnectWalletButton.tsx +++ /dev/null @@ -1,24 +0,0 @@ -"use client"; -import { useWalletModal } from "@solana/wallet-adapter-react-ui"; -import { Button } from "./ui/primitives/button"; -import { useWallet } from "@solana/wallet-adapter-react"; - -const ConnectWallet = () => { - const modal = useWalletModal(); - const { publicKey, disconnect } = useWallet(); - return ( -
- {!publicKey ? ( - - ) : ( - - )} -
- ); -}; - -export default ConnectWallet; diff --git a/components/RenderMultisigRoute.tsx b/components/RenderMultisigRoute.tsx deleted file mode 100644 index 27127d6..0000000 --- a/components/RenderMultisigRoute.tsx +++ /dev/null @@ -1,31 +0,0 @@ -"use client"; -import { usePathname } from "next/navigation"; -import MultisigInput from "./MultisigInput"; - -interface RenderRouteProps { - multisig: boolean; - children: React.ReactNode; -} - -export default function RenderMultisigRoute({ - multisig, - children, -}: RenderRouteProps) { - const pathname = usePathname(); - - return ( -
- {multisig ? ( -
{children}
- ) : ( - <> - {pathname == "/settings" || pathname == "/create" ? ( -
{children}
- ) : ( - - )} - - )} -
- ); -} diff --git a/components/SetRpcUrlnput.tsx b/components/SetRpcUrlnput.tsx deleted file mode 100644 index 58a581d..0000000 --- a/components/SetRpcUrlnput.tsx +++ /dev/null @@ -1,62 +0,0 @@ -"use client"; -import { useState } from "react"; -import { Input } from "./ui/primitives/input"; -import { Button } from "./ui/primitives/button"; -import { useRouter } from "next/navigation"; -import { toast } from "sonner"; - -const SetRpcUrlInput = () => { - const [rpcUrl, setRpcUrl] = useState(""); - const router = useRouter(); - const isValidUrl = (url: string) => { - const urlPattern = new RegExp( - "^(https?:\\/\\/)?" + // validate protocol - "((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|" + // domain name - "((\\d{1,3}\\.){3}\\d{1,3}))" + // OR ip (v4) address - "(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*" + // port and path - "(\\?[;&a-z\\d%_.~+=-]*)?" + // query string - "(\\#[-a-z\\d_]*)?$", - "i" - ); - return !!urlPattern.test(url); - }; - - const onSubmit = async () => { - if (isValidUrl(rpcUrl)) { - document.cookie = `x-rpc-url=${rpcUrl}; path=/; SameSite=Strict;`; - setRpcUrl(""); - router.refresh(); - } else { - throw "Please enter a valid URL."; - } - }; - - return ( -
- setRpcUrl(e.target.value)} - placeholder="https://api.mainnet-beta.solana.com" - defaultValue={rpcUrl} - className="" - /> - {!isValidUrl(rpcUrl) && rpcUrl.length > 0 && ( -

Please enter a valid URL.

- )} - -
- ); -}; - -export default SetRpcUrlInput; diff --git a/components/AddMemberInput.tsx b/components/config/add-member.tsx similarity index 97% rename from components/AddMemberInput.tsx rename to components/config/add-member.tsx index e9ea3d6..7ce54a4 100644 --- a/components/AddMemberInput.tsx +++ b/components/config/add-member.tsx @@ -1,7 +1,7 @@ "use client"; import { useRouter } from "next/navigation"; -import { Button } from "./ui/primitives/button"; -import { Input } from "./ui/primitives/input"; +import { Button } from "../ui/primitives/button"; +import { Input } from "../ui/primitives/input"; import { useWallet } from "@solana/wallet-adapter-react"; import { useState } from "react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; diff --git a/components/ChangeThresholdInput.tsx b/components/config/change-threshold.tsx similarity index 97% rename from components/ChangeThresholdInput.tsx rename to components/config/change-threshold.tsx index fa64266..23597e3 100644 --- a/components/ChangeThresholdInput.tsx +++ b/components/config/change-threshold.tsx @@ -1,7 +1,7 @@ "use client"; import { useRouter } from "next/navigation"; -import { Button } from "./ui/primitives/button"; -import { Input } from "./ui/primitives/input"; +import { Button } from "../ui/primitives/button"; +import { Input } from "../ui/primitives/input"; import { useWallet } from "@solana/wallet-adapter-react"; import { useState } from "react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; diff --git a/components/ChangeUpgradeAuthorityInput.tsx b/components/config/change-upgrade-auth-input.tsx similarity index 98% rename from components/ChangeUpgradeAuthorityInput.tsx rename to components/config/change-upgrade-auth-input.tsx index 8e87a66..e7b7c0a 100644 --- a/components/ChangeUpgradeAuthorityInput.tsx +++ b/components/config/change-upgrade-auth-input.tsx @@ -1,7 +1,7 @@ "use client"; import { useRouter } from "next/navigation"; -import { Button } from "./ui/primitives/button"; -import { Input } from "./ui/primitives/input"; +import { Button } from "../ui/primitives/button"; +import { Input } from "../ui/primitives/input"; import { useWallet } from "@solana/wallet-adapter-react"; import { useState } from "react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; diff --git a/components/ui/change-upgrade-auth.tsx b/components/config/change-upgrade-auth.tsx similarity index 90% rename from components/ui/change-upgrade-auth.tsx rename to components/config/change-upgrade-auth.tsx index f75ead3..ea3f33d 100644 --- a/components/ui/change-upgrade-auth.tsx +++ b/components/config/change-upgrade-auth.tsx @@ -1,14 +1,13 @@ import * as multisig from "@sqds/multisig"; -import { Code2 } from "lucide-react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, -} from "./primitives/card"; -import ChangeUpgradeAuthorityInput from "../ChangeUpgradeAuthorityInput"; +} from "../ui/primitives/card"; import { clusterApiUrl } from "@solana/web3.js"; +import ChangeUpgradeAuthorityInput from "./change-upgrade-auth-input"; interface ChangeUpgradeAuthProps { multisigPda: string; diff --git a/components/RemoveMemberButton.tsx b/components/config/remove-member.tsx similarity index 98% rename from components/RemoveMemberButton.tsx rename to components/config/remove-member.tsx index f1162b2..90cf792 100644 --- a/components/RemoveMemberButton.tsx +++ b/components/config/remove-member.tsx @@ -5,7 +5,7 @@ import { TransactionMessage, VersionedTransaction, } from "@solana/web3.js"; -import { Button } from "./ui/primitives/button"; +import { Button } from "../ui/primitives/button"; import * as multisig from "@sqds/multisig"; import { useWallet } from "@solana/wallet-adapter-react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; diff --git a/components/CreateSquadForm.tsx b/components/create/create-squad-form.tsx similarity index 99% rename from components/CreateSquadForm.tsx rename to components/create/create-squad-form.tsx index 01f8d36..20643cb 100644 --- a/components/CreateSquadForm.tsx +++ b/components/create/create-squad-form.tsx @@ -1,6 +1,6 @@ "use client"; -import { Button } from "./ui/primitives/button"; -import { Input } from "./ui/primitives/input"; +import { Button } from "../ui/primitives/button"; +import { Input } from "../ui/primitives/input"; import { createMultisig } from "@/lib/helpers/createSquad"; import { Connection, Keypair, PublicKey, clusterApiUrl } from "@solana/web3.js"; import { useWallet } from "@solana/wallet-adapter-react"; @@ -18,7 +18,7 @@ import { SelectItem, SelectTrigger, SelectValue, -} from "./ui/primitives/select"; +} from "../ui/primitives/select"; import { toast } from "sonner"; import { useRouter } from "next/navigation"; import { Member, ValidationRules } from "@/lib/types"; diff --git a/components/CreateTransactionButton.tsx b/components/create/create-transaction.tsx similarity index 97% rename from components/CreateTransactionButton.tsx rename to components/create/create-transaction.tsx index e68271f..c2053b1 100644 --- a/components/CreateTransactionButton.tsx +++ b/components/create/create-transaction.tsx @@ -20,9 +20,9 @@ import { DialogHeader, DialogTitle, DialogTrigger, -} from "./ui/primitives/dialog"; -import { Input } from "./ui/primitives/input"; -import { Button } from "./ui/primitives/button"; +} from "../ui/primitives/dialog"; +import { Input } from "../ui/primitives/input"; +import { Button } from "../ui/primitives/button"; type CreateTransactionProps = { rpcUrl: string | null; diff --git a/components/ui/layout/custom-toaster.tsx b/components/layout/custom-toaster.tsx similarity index 100% rename from components/ui/layout/custom-toaster.tsx rename to components/layout/custom-toaster.tsx diff --git a/components/ui/layout/header.tsx b/components/layout/header.tsx similarity index 97% rename from components/ui/layout/header.tsx rename to components/layout/header.tsx index 8217e1c..1572e1e 100644 --- a/components/ui/layout/header.tsx +++ b/components/layout/header.tsx @@ -1,8 +1,8 @@ "use client"; import Image from "next/image"; import Link from "next/link"; -import ConnectButton from "./connect-button"; -import Pill from "../pill"; +import ConnectButton from "./wallet/connect-button"; +import Pill from "../ui/pill"; import { usePathname } from "next/navigation"; import { useWallet } from "@solana/wallet-adapter-react"; import { useTheme } from "next-themes"; diff --git a/components/ui/layout/light-dark-button.tsx b/components/layout/light-dark-button.tsx similarity index 100% rename from components/ui/layout/light-dark-button.tsx rename to components/layout/light-dark-button.tsx diff --git a/components/ui/layout/page-header.tsx b/components/layout/page-header.tsx similarity index 100% rename from components/ui/layout/page-header.tsx rename to components/layout/page-header.tsx diff --git a/components/ui/layout/connect-button.tsx b/components/layout/wallet/connect-button.tsx similarity index 98% rename from components/ui/layout/connect-button.tsx rename to components/layout/wallet/connect-button.tsx index 3d7ad45..fd44963 100644 --- a/components/ui/layout/connect-button.tsx +++ b/components/layout/wallet/connect-button.tsx @@ -1,7 +1,7 @@ "use client"; import { Wallet, useWallet } from "@solana/wallet-adapter-react"; import Image from "next/image"; -import WalletModal from "../wallet-modal"; +import WalletModal from "./wallet-modal"; import { Fragment, useState } from "react"; import { Menu, diff --git a/components/ui/wallet-modal.tsx b/components/layout/wallet/wallet-modal.tsx similarity index 100% rename from components/ui/wallet-modal.tsx rename to components/layout/wallet/wallet-modal.tsx diff --git a/components/ApproveButton.tsx b/components/proposal-actions/approve-button.tsx similarity index 98% rename from components/ApproveButton.tsx rename to components/proposal-actions/approve-button.tsx index 04a6fc9..e460d51 100644 --- a/components/ApproveButton.tsx +++ b/components/proposal-actions/approve-button.tsx @@ -5,7 +5,7 @@ import { Transaction, clusterApiUrl, } from "@solana/web3.js"; -import { Button } from "./ui/primitives/button"; +import { Button } from "../ui/primitives/button"; import * as multisig from "@sqds/multisig"; import { useWallet } from "@solana/wallet-adapter-react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; diff --git a/components/ExecuteButton.tsx b/components/proposal-actions/execute-button.tsx similarity index 96% rename from components/ExecuteButton.tsx rename to components/proposal-actions/execute-button.tsx index 730fb46..aa551d6 100644 --- a/components/ExecuteButton.tsx +++ b/components/proposal-actions/execute-button.tsx @@ -9,7 +9,7 @@ import { VersionedTransaction, clusterApiUrl, } from "@solana/web3.js"; -import { Button } from "./ui/primitives/button"; +import { Button } from "../ui/primitives/button"; import * as multisig from "@sqds/multisig"; import { useWallet } from "@solana/wallet-adapter-react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; @@ -19,11 +19,11 @@ import { Dialog, DialogDescription, DialogHeader, -} from "./ui/primitives/dialog"; -import { DialogTrigger } from "./ui/primitives/dialog"; -import { DialogContent, DialogTitle } from "./ui/primitives/dialog"; +} from "../ui/primitives/dialog"; +import { DialogTrigger } from "../ui/primitives/dialog"; +import { DialogContent, DialogTitle } from "../ui/primitives/dialog"; import { useState } from "react"; -import { Input } from "./ui/primitives/input"; +import { Input } from "../ui/primitives/input"; type WithALT = { instruction: TransactionInstruction; diff --git a/components/RejectButton.tsx b/components/proposal-actions/reject-button.tsx similarity index 98% rename from components/RejectButton.tsx rename to components/proposal-actions/reject-button.tsx index 141f9b2..7fac458 100644 --- a/components/RejectButton.tsx +++ b/components/proposal-actions/reject-button.tsx @@ -5,7 +5,7 @@ import { Transaction, clusterApiUrl, } from "@solana/web3.js"; -import { Button } from "./ui/primitives/button"; +import { Button } from "../ui/primitives/button"; import * as multisig from "@sqds/multisig"; import { useWallet } from "@solana/wallet-adapter-react"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; diff --git a/components/render-route.tsx b/components/render-route.tsx new file mode 100644 index 0000000..5510e10 --- /dev/null +++ b/components/render-route.tsx @@ -0,0 +1,25 @@ +"use client"; +import { usePathname } from "next/navigation"; +import MultisigInput from "./settings/set-multisig"; + +interface RenderRouteProps { + multisig: boolean; + children: React.ReactNode; +} + +export default function RenderMultisigRoute({ + multisig, + children, +}: RenderRouteProps) { + const pathname = usePathname(); + + if (multisig) { + return
{children}
; + } + + if (pathname == "/settings" || pathname == "/create") { + return
{children}
; + } else { + return ; + } +} diff --git a/components/MultisigInput.tsx b/components/settings/set-multisig.tsx similarity index 91% rename from components/MultisigInput.tsx rename to components/settings/set-multisig.tsx index 96fa474..38fb6ea 100644 --- a/components/MultisigInput.tsx +++ b/components/settings/set-multisig.tsx @@ -1,8 +1,8 @@ "use client"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import { Input } from "./ui/primitives/input"; -import { Button } from "./ui/primitives/button"; +import { Input } from "../ui/primitives/input"; +import { Button } from "../ui/primitives/button"; const MultisigInput = () => { const [multisig, setMultisig] = useState(""); diff --git a/components/SetProgramIdInput.tsx b/components/settings/set-programid.tsx similarity index 93% rename from components/SetProgramIdInput.tsx rename to components/settings/set-programid.tsx index c7ac5e7..3709583 100644 --- a/components/SetProgramIdInput.tsx +++ b/components/settings/set-programid.tsx @@ -2,8 +2,8 @@ import { useState } from "react"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; -import { Input } from "./ui/primitives/input"; -import { Button } from "./ui/primitives/button"; +import { Input } from "../ui/primitives/input"; +import { Button } from "../ui/primitives/button"; import { isPublickey } from "@/lib/checks/isPublickey"; const SetProgramIdInput = () => { diff --git a/components/ui/settings/RPCConfig.tsx b/components/settings/set-rpc.tsx similarity index 96% rename from components/ui/settings/RPCConfig.tsx rename to components/settings/set-rpc.tsx index 97d834a..d73547d 100644 --- a/components/ui/settings/RPCConfig.tsx +++ b/components/settings/set-rpc.tsx @@ -1,8 +1,8 @@ "use client"; import { motion } from "framer-motion"; import { toast } from "sonner"; -import { Button } from "../primitives/button"; -import { Input } from "../primitives/input"; +import { Button } from "../ui/primitives/button"; +import { Input } from "../ui/primitives/input"; import { useState } from "react"; import { Card, @@ -10,7 +10,7 @@ import { CardDescription, CardHeader, CardTitle, -} from "../primitives/card"; +} from "../ui/primitives/card"; import { Wifi } from "lucide-react"; export default function RPCConfig() { diff --git a/components/SendSolButton.tsx b/components/tokens/send-sol.tsx similarity index 97% rename from components/SendSolButton.tsx rename to components/tokens/send-sol.tsx index d20726d..f95dab6 100644 --- a/components/SendSolButton.tsx +++ b/components/tokens/send-sol.tsx @@ -7,7 +7,7 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/primitives/dialog"; -import { Button } from "./ui/primitives/button"; +import { Button } from "../ui/primitives/button"; import { useState } from "react"; import * as multisig from "@sqds/multisig"; import { useWallet } from "@solana/wallet-adapter-react"; @@ -21,11 +21,11 @@ import { clusterApiUrl, } from "@solana/web3.js"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; -import { Input } from "./ui/primitives/input"; +import { Input } from "../ui/primitives/input"; import { toast } from "sonner"; import { useRouter } from "next/navigation"; import { isPublickey } from "@/lib/checks/isPublickey"; -import SendInput from "./ui/primitives/send-input"; +import SendInput from "../ui/primitives/send-input"; type SendSolProps = { rpcUrl: string; diff --git a/components/SendTokensButton.tsx b/components/tokens/send-token.tsx similarity index 98% rename from components/SendTokensButton.tsx rename to components/tokens/send-token.tsx index c1fe747..613aeab 100644 --- a/components/SendTokensButton.tsx +++ b/components/tokens/send-token.tsx @@ -7,7 +7,7 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/primitives/dialog"; -import { Button } from "./ui/primitives/button"; +import { Button } from "../ui/primitives/button"; import { useState } from "react"; import { createAssociatedTokenAccountIdempotentInstruction, @@ -24,11 +24,11 @@ import { clusterApiUrl, } from "@solana/web3.js"; import { useWalletModal } from "@solana/wallet-adapter-react-ui"; -import { Input } from "./ui/primitives/input"; +import { Input } from "../ui/primitives/input"; import { toast } from "sonner"; import { useRouter } from "next/navigation"; import { isPublickey } from "@/lib/checks/isPublickey"; -import SendInput from "./ui/primitives/send-input"; +import SendInput from "../ui/primitives/send-input"; type SendTokensProps = { tokenAccount: string; diff --git a/components/TokenList.tsx b/components/tokens/token-list.tsx similarity index 97% rename from components/TokenList.tsx rename to components/tokens/token-list.tsx index 7983db7..5b86cc5 100644 --- a/components/TokenList.tsx +++ b/components/tokens/token-list.tsx @@ -11,12 +11,12 @@ import { CardDescription, CardHeader, CardTitle, -} from "./ui/primitives/card"; -import SendTokens from "./SendTokensButton"; +} from "../ui/primitives/card"; +import SendTokens from "./send-token"; import { Coins } from "lucide-react"; import { FilteredToken } from "@/lib/types"; import Image from "next/image"; -import SendSol from "./SendSolButton"; +import SendSol from "./send-sol"; type TokenListProps = { solBalance: number; @@ -35,6 +35,7 @@ export function TokenList({ vaultIndex, programId, }: TokenListProps) { + console.log(tokens); return ( diff --git a/components/ui/pill.tsx b/components/ui/pill.tsx index 19b22f6..b0dcc3e 100644 --- a/components/ui/pill.tsx +++ b/components/ui/pill.tsx @@ -1,4 +1,5 @@ import Image from "next/image"; +import * as bs58 from "bs58"; interface PillProps { label: string; diff --git a/components/ui/my-multisigs.tsx b/components/ui/squads/my-multisigs.tsx similarity index 97% rename from components/ui/my-multisigs.tsx rename to components/ui/squads/my-multisigs.tsx index 18964f1..d8282c3 100644 --- a/components/ui/my-multisigs.tsx +++ b/components/ui/squads/my-multisigs.tsx @@ -8,10 +8,10 @@ import { toast } from "sonner"; import { getMultisigs } from "@/lib/helpers/getMultisigs"; import { Connection, clusterApiUrl } from "@solana/web3.js"; import { AlertOctagon, RefreshCw } from "lucide-react"; -import Loading from "./primitives/loading"; -import { Button } from "./primitives/button"; -import { Card, CardContent, CardHeader, CardTitle } from "./primitives/card"; -import SquadRow from "./squads/squad-row"; +import Loading from "../primitives/loading"; +import { Button } from "../primitives/button"; +import { Card, CardContent, CardHeader, CardTitle } from "../primitives/card"; +import SquadRow from "./squad-row"; export default function MyMultisigs({ rpc }: { rpc: string }) { const { publicKey, connected } = useWallet(); diff --git a/components/ui/table/transaction-table-row.tsx b/components/ui/table/transaction-table-row.tsx index f6cdca0..88167ff 100644 --- a/components/ui/table/transaction-table-row.tsx +++ b/components/ui/table/transaction-table-row.tsx @@ -3,9 +3,9 @@ import * as multisig from "@sqds/multisig"; import { TableCell, TableRow } from "../primitives/table"; import { createExplorerUrl } from "@/lib/helpers/createExplorerUrl"; import { PublicKey, clusterApiUrl } from "@solana/web3.js"; -import ApproveButton from "@/components/ApproveButton"; -import RejectButton from "@/components/RejectButton"; -import ExecuteButton from "@/components/ExecuteButton"; +import ApproveButton from "@/components/proposal-actions/approve-button"; +import RejectButton from "@/components/proposal-actions/reject-button"; +import ExecuteButton from "@/components/proposal-actions/execute-button"; import Chip from "../chip"; import CopyTextButton from "../misc/copy-text"; import { MultiProgress } from "../primitives/multi-progress"; diff --git a/components/VaultDisplayer.tsx b/components/vault-display.tsx similarity index 96% rename from components/VaultDisplayer.tsx rename to components/vault-display.tsx index 8d76b2b..230cad6 100644 --- a/components/VaultDisplayer.tsx +++ b/components/vault-display.tsx @@ -1,7 +1,7 @@ import * as multisig from "@sqds/multisig"; import { Card, CardContent, CardHeader, CardTitle } from "./ui/primitives/card"; import { PublicKey } from "@solana/web3.js"; -import { VaultSelector } from "./VaultSelector"; +import { VaultSelector } from "./vault-selector"; import CopyTextButton from "./ui/misc/copy-text"; type VaultDisplayerProps = { diff --git a/components/VaultSelector.tsx b/components/vault-selector.tsx similarity index 100% rename from components/VaultSelector.tsx rename to components/vault-selector.tsx From 32f9cc9ee35cce325b772f613531933b9f70bf30 Mon Sep 17 00:00:00 2001 From: Joey Meere <100378695+joeymeere@users.noreply.github.com> Date: Thu, 7 Nov 2024 11:59:08 -0500 Subject: [PATCH 08/15] feat(ui): display SVM cluster in header --- app/(app)/layout.tsx | 7 +++- app/(app)/page.tsx | 30 +--------------- components/layout/header.tsx | 60 ++++++++++++++++++++++++++++---- components/tokens/token-list.tsx | 1 - package.json | 1 + public/eclipse.svg | 9 +++++ public/solana.svg | 4 +++ yarn.lock | 34 ++++++++++++++++++ 8 files changed, 108 insertions(+), 38 deletions(-) create mode 100644 public/eclipse.svg create mode 100644 public/solana.svg diff --git a/app/(app)/layout.tsx b/app/(app)/layout.tsx index 85898ae..bd46974 100644 --- a/app/(app)/layout.tsx +++ b/app/(app)/layout.tsx @@ -6,6 +6,7 @@ import { ThemeProvider } from "next-themes"; import { CustomToaster } from "@/components/layout/custom-toaster"; import { isMultisigAddress } from "@/lib/checks/isMultisig"; import { SolanaProvider } from "@/providers/SolanaProvider"; +import { getClusterName } from "@arrangedev/detect-cluster"; const AppLayout = async ({ children }: { children: React.ReactNode }) => { const multisigCookie = headers().get("x-multisig"); @@ -13,12 +14,16 @@ const AppLayout = async ({ children }: { children: React.ReactNode }) => { const connection = new Connection(rpcUrl || clusterApiUrl("mainnet-beta")); const multisig = await isMultisigAddress(connection, multisigCookie!); + const cluster = rpcUrl ? await getClusterName(rpcUrl) : null; return (
-
+
diff --git a/app/(app)/page.tsx b/app/(app)/page.tsx index ea6059e..75e0027 100644 --- a/app/(app)/page.tsx +++ b/app/(app)/page.tsx @@ -1,11 +1,5 @@ import * as multisig from "@sqds/multisig"; -import { - Connection, - PublicKey, - TransactionMessage, - VersionedTransaction, - clusterApiUrl, -} from "@solana/web3.js"; +import { Connection, PublicKey, clusterApiUrl } from "@solana/web3.js"; import { cookies, headers } from "next/headers"; import { TokenList } from "@/components/tokens/token-list"; import { VaultDisplayer } from "@/components/vault-display"; @@ -14,7 +8,6 @@ import MyMultisigs from "@/components/ui/squads/my-multisigs"; import { lookupAddress } from "@/lib/helpers/tokenAddresses"; import { FilteredToken } from "@/lib/types"; import ChangeUpgradeAuth from "@/components/config/change-upgrade-auth"; -import * as bs58 from "bs58"; export default async function Home() { const rpcUrl = headers().get("x-rpc-url"); @@ -69,27 +62,6 @@ export default async function Home() { } }); - const a = () => { - let b = bs58.default.decode( - "f8FMmaomsDZZN2ViKpwx25uztE657ZkfFyXravqtHd6Lsp6fGyeaPDQQaRiD4tDzT4Hg1wW5czWuMzYj6MXKpBo8tP2cXVVsoUKvjDWtDPzRbCGkEoZyPFUzsV34vhySAXL7UUY6GqcXWAJXjs6jC8Cb9qtakRYPi8zvMQ2FS1mceJexNA1MUpthKrqUuYcKS2QXiprjZtHPiw3TCqET9gjziMtsGdZtEiwddA7jfCR8SZGJX14SSRLmjLybXq4pDzZuMXs8QxpJY7CaPebTuSzCo7HC8r8Ae7rgbTJ5j6pR7kj7DifFhbBGgwKi2iRbSRPbuTwYbevVX5eNNdhYPb9kBhXZCkfuaiZuPa9MYJ6WZF82tU7t9Agoe6UmgzZQkJTHoDAkGpnKLU1tj5GwzRfXt5MEcQhJEW6fv1PP3RzRbvqUiVV6tmXnsZuRyT3ijw36YFquPmrmNsy3kkk2hn4iTaisMtsxnFrqx9eFutAXGLw6ggdT6WBqg3FhjaTE7Sd7L8eAHdPZnjVrSwd1LLdK3dZ1f1Bu4tM1uwEqCPneBEYPKytHunpZFJe6MiyZMxWaqeb9md73tRSyXihknaVJxb1EhPppMRqJ9HmSAUidC5hNcSP6shCEsLo7trFf9Pf75wTNJUuDgmUNc7BEuPuQzrMzvnhvvm7LCpTeaGoockFYL84qCuipTg4zjeUYG4WmvHhvNYXRAYbjPuRKA5vnUA8cdFXirbETNFsh4XtJVAgdqb7R8JFafmHHHk2ryMYhMC6WoY19XWiPTmEVoK24d7Aa1y2sjEsVU7f78HYyDrmmRUQNAFn82PPBnBbCPzZC9MiRzwQnLgn9HwSMqhnbPgVxJDvrVy82ktPcPFuDcVWSqSE929QrtxyykGMpCZhkxEEzST2BAUuXvCyE7qLMfXfSWiWZGkEcywYT3JgxUNBunj9FP4saU9qkxnHqtN2xC1KwpaqXXVLcEe7Uj75J84sj4C8MuuMBKTrhLu1yR5YFVqLFaM8S1GeGsd5oNZ1G63Nj2F2NuKFheWXsq8dReN23EjgKmDVRa6PBtu6Sv4PsbQwyFDxMNkLg5hBqvx31Bzw72UYyanVQCNW6hZJcGKXKUwn4rYam7hThQLZU6atqMEureBk52jGXnmqjRZ8p5xT7uhCEa2K8tNNfXFmH6g6hoR59mZUDvqTaiS9EnCsFXtKp4bxLWRBnasLdvDQsTkkD6TDsCrH5koLSMs52tvgu64KmuUZqy7BeBS99g4c3YLBP2ipK7eMfEswN5jLTuNq7LTjHvgBiEqyQbsJdYLWCLm7rvfwDhQT4BNGsP98AUZ7XEqzuqW7QCYhMbsh7oY7Teeqt6B3ppjX1XYifcKqZfa463FrLcjTdjjUq1LBRXhvoxtsHAtud" - ); - let message = TransactionMessage.decompile( - VersionedTransaction.deserialize(b).message, - { - addressLookupTableAccounts: [], - } - ); - message.instructions.splice(1, 2); - return { - base58: bs58.default.encode(message.compileToLegacyMessage().serialize()), - base64: Buffer.from( - message.compileToLegacyMessage().serialize() - ).toString("base64"), - }; - }; - - console.log(a()); - return (
diff --git a/components/layout/header.tsx b/components/layout/header.tsx index 1572e1e..b7ea3fd 100644 --- a/components/layout/header.tsx +++ b/components/layout/header.tsx @@ -7,16 +7,26 @@ import { usePathname } from "next/navigation"; import { useWallet } from "@solana/wallet-adapter-react"; import { useTheme } from "next-themes"; import LightDarkButton from "./light-dark-button"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "../ui/primitives/tooltip"; -export default function Header({ multisig }: { multisig: string | null }) { +export default function Header({ + multisig, + cluster, +}: { + multisig: string | null; + cluster: string | null; +}) { const pathname = usePathname(); const { connected } = useWallet(); const { theme } = useTheme(); const logo = theme == "dark" ? "/squads-light.png" : "/logo.svg"; - console.log(multisig); - return ( <>
@@ -65,10 +75,46 @@ export default function Header({ multisig }: { multisig: string | null }) {
{connected && multisig && ( - + + + + + + +

+ Selected Squad +

+
+
+
+ )} + {cluster && ( + + + + + + +

+ Current SVM cluster +

+
+
+
)}
diff --git a/components/tokens/token-list.tsx b/components/tokens/token-list.tsx index 5b86cc5..1c026c6 100644 --- a/components/tokens/token-list.tsx +++ b/components/tokens/token-list.tsx @@ -35,7 +35,6 @@ export function TokenList({ vaultIndex, programId, }: TokenListProps) { - console.log(tokens); return ( diff --git a/package.json b/package.json index b0aad05..d69d173 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "lint": "next lint" }, "dependencies": { + "@arrangedev/detect-cluster": "^1.0.0", "@headlessui/react": "^2.1.10", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-popover": "^1.0.7", diff --git a/public/eclipse.svg b/public/eclipse.svg new file mode 100644 index 0000000..0ad3f6f --- /dev/null +++ b/public/eclipse.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/solana.svg b/public/solana.svg new file mode 100644 index 0000000..345384b --- /dev/null +++ b/public/solana.svg @@ -0,0 +1,4 @@ + + + + diff --git a/yarn.lock b/yarn.lock index 42e9cd4..c0cc940 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,14 @@ resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== +"@arrangedev/detect-cluster@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@arrangedev/detect-cluster/-/detect-cluster-1.0.0.tgz#867f24a61be34c8d53fdf6bac7d491fc11e93f67" + integrity sha512-YYSV/mlQ9kojnQ2MFAXFN8hajcqJjbK/9YZ/vOMGtv0f61C2smIzXLPBPR64JaoIJVoCc+rUhwZJyKcwJL/bdw== + dependencies: + "@solana/web3.js" "^1.95.4" + pako "^2.1.0" + "@babel/runtime@^7.13.10", "@babel/runtime@^7.25.0": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6" @@ -1037,6 +1045,27 @@ rpc-websockets "^9.0.2" superstruct "^2.0.2" +"@solana/web3.js@^1.95.4": + version "1.95.4" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.4.tgz#771603f60d75cf7556ad867e1fd2efae32f9ad09" + integrity sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw== + dependencies: + "@babel/runtime" "^7.25.0" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + "@sqds/multisig@^2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@sqds/multisig/-/multisig-2.1.3.tgz#eac2858d9b33cffdd4db7ef665b891bd9d606a9b" @@ -3305,6 +3334,11 @@ package-json-from-dist@^1.0.0: resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== +pako@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" From 4d1221b85f95894976bf70c169e8f9609e63c8ed Mon Sep 17 00:00:00 2001 From: Joey Meere <100378695+joeymeere@users.noreply.github.com> Date: Wed, 13 Nov 2024 13:54:44 -0500 Subject: [PATCH 09/15] remove faulty rpc validation + start memo indexing --- components/create/create-squad-form.tsx | 53 +++++++++++++++++++++++- components/create/create-transaction.tsx | 40 ++++++++++++++---- components/settings/set-rpc.tsx | 16 ++----- lib/helpers/createSquad.ts | 10 ++++- lib/transaction/importTransaction.ts | 4 +- 5 files changed, 100 insertions(+), 23 deletions(-) diff --git a/components/create/create-squad-form.tsx b/components/create/create-squad-form.tsx index 20643cb..86ada90 100644 --- a/components/create/create-squad-form.tsx +++ b/components/create/create-squad-form.tsx @@ -44,6 +44,9 @@ export default function CreateSquadForm({ multisig: string; }>( { + name: "", + description: "", + imageUri: "", threshold: 1, rentCollector: "", configAuthority: "", @@ -69,7 +72,12 @@ export default function CreateSquadForm({ createKey.publicKey, formState.values.rentCollector, formState.values.configAuthority, - programId + programId, + { + name: formState.values.name, + description: formState.values.description, + uri: formState.values.imageUri, + } ); const signature = await sendTransaction(transaction, connection, { @@ -109,6 +117,40 @@ export default function CreateSquadForm({ return (
+
+ + handleChange("name", e.target.value)} + className="" + /> + {formState.errors.name && ( +
+ {formState.errors.name} +
+ )} +
+
+
+ +