Skip to content
Draft
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
b97ddcb
feat: turborepo setup
abretonc7s Jan 15, 2025
2d70abd
feat: new nextjs playground
abretonc7s Jan 15, 2025
d6ffb1e
feat: cleanup
abretonc7s Jan 15, 2025
c805f42
feat: upgrade metamask/providers
abretonc7s Jan 15, 2025
65c0e80
feat: wip
abretonc7s Jan 15, 2025
5b38b05
Merge remote-tracking branch 'origin/main' into ab/multichainapi
abretonc7s Jan 15, 2025
f03d7bd
feat: wip
abretonc7s Jan 16, 2025
3a88876
feat: wip
abretonc7s Jan 16, 2025
a492ac8
feat: wip
abretonc7s Jan 17, 2025
2264362
feat: wip
abretonc7s Jan 17, 2025
9fdc310
feat: wip
abretonc7s Jan 17, 2025
b8dab41
feat: wip
abretonc7s Jan 20, 2025
f1b60e3
feat: wip
abretonc7s Jan 20, 2025
a479b31
feat: cleanup
abretonc7s Jan 20, 2025
ebffdfb
feat: cleanup
abretonc7s Jan 20, 2025
d020fb3
feat: wip
abretonc7s Jan 20, 2025
005d0ef
Merge remote-tracking branch 'origin/main' into ab/multichainapi
abretonc7s Jan 21, 2025
0796b88
feat: wip
abretonc7s Jan 21, 2025
a9e8b22
feat: wip
abretonc7s Jan 21, 2025
f6a8210
feat: wip
abretonc7s Jan 21, 2025
ee0d2ae
feat: cleanup
abretonc7s Jan 22, 2025
2ff60a0
feat: wip
abretonc7s Jan 22, 2025
6ed73e6
feat: wip
abretonc7s Jan 22, 2025
5fb57f5
docs: readme
abretonc7s Jan 23, 2025
dfeeaab
feat: wip
abretonc7s Jan 23, 2025
3ce12fc
docs: wip
abretonc7s Jan 23, 2025
74d9b5a
feat: wip
abretonc7s Jan 23, 2025
6be0784
feat: adding tests
abretonc7s Jan 23, 2025
41882fc
feat: merge remote-tracking branch 'origin/main' into ab/multichainapi
abretonc7s Feb 12, 2025
b7232e4
feat: wip
abretonc7s Feb 12, 2025
cab12c4
fix request bug
chakra-guy Feb 12, 2025
d57e5da
feat: nav header
abretonc7s Feb 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"packages/sdk-socket-server-next",
"packages/sdk-install-modal-web",
"packages/sdk-communication-layer",
"packages/sdk-multichain",
"packages/sdk",
"packages/sdk-react",
"packages/sdk-react-native",
Expand All @@ -34,7 +35,7 @@
"postinstall": "patch-package",
"link-packages": "./scripts/link-packages.sh",
"prepare": "husky install",
"dev:core": "turbo run dev --parallel --filter=@metamask/sdk-communication-layer --filter=@metamask/sdk --filter=@metamask/sdk-react",
"dev:core": "turbo run dev --parallel --filter=@metamask/sdk-communication-layer --filter=@metamask/sdk-multichain --filter=@metamask/sdk --filter=@metamask/sdk-react",
"lint": "yarn workspaces foreach --no-private run lint",
"lint:changelogs": "yarn workspaces foreach --no-private run lint:changelog",
"lint:eslint": "yarn workspaces foreach --no-private run lint:eslint",
Expand Down
46 changes: 45 additions & 1 deletion packages/playground-next/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import { dirname } from "path";
import { fileURLToPath } from "url";
import { FlatCompat } from "@eslint/eslintrc";
import typescript from "@typescript-eslint/eslint-plugin";
import react from "eslint-plugin-react";
import prettier from "eslint-plugin-prettier";
import tsParser from "@typescript-eslint/parser";

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
Expand All @@ -10,7 +14,47 @@ const compat = new FlatCompat({
});

const eslintConfig = [
...compat.extends("next/core-web-vitals", "next/typescript"),
...compat.extends(
"next/core-web-vitals",
"next/typescript",
"plugin:react/recommended",
"plugin:@typescript-eslint/recommended",
"prettier"
),
{
files: ["**/*.ts", "**/*.tsx"],
plugins: {
"@typescript-eslint": typescript,
react: react,
prettier: prettier
},
languageOptions: {
parser: tsParser,
ecmaVersion: 2021,
sourceType: "module",
parserOptions: {
ecmaFeatures: {
jsx: true
}
}
},
settings: {
react: {
version: "detect"
}
},
rules: {
"prettier/prettier": ["error", {
"endOfLine": "auto"
}],
"@typescript-eslint/no-unused-vars": ["error", {
"argsIgnorePattern": "^_",
"varsIgnorePattern": "^_"
}],
"react/react-in-jsx-scope": "off",
"@next/next/no-img-element": "warn"
}
}
];

export default eslintConfig;
3 changes: 2 additions & 1 deletion packages/playground-next/next.config.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import type { NextConfig } from "next";

const nextConfig: NextConfig = {
/* config options here */
reactStrictMode: false,
/* other config options here */
};

export default nextConfig;
8 changes: 8 additions & 0 deletions packages/playground-next/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@
"allow-scripts": "echo 'NA'"
},
"dependencies": {
"@metamask/api-specs": "^0.10.13",
"@metamask/sdk-multichain": "workspace:^",
"@metamask/sdk-react": "workspace:^",
"@metamask/utils": "^11.0.1",
"@open-rpc/meta-schema": "^1.14.9",
"@open-rpc/schema-utils-js": "^2.0.5",
"next": "15.1.4",
"react": "^19.0.0",
"react-dom": "^19.0.0"
Expand All @@ -22,6 +27,9 @@
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "15.1.4",
"eslint-config-prettier": "^10.0.1",
"eslint-plugin-prettier": "^5.2.2",
"prettier": "^3.4.2",
"typescript": "^5"
}
}
42 changes: 0 additions & 42 deletions packages/playground-next/src/app/globals.css

This file was deleted.

41 changes: 0 additions & 41 deletions packages/playground-next/src/app/layout.tsx

This file was deleted.

35 changes: 0 additions & 35 deletions packages/playground-next/src/app/page.module.css

This file was deleted.

70 changes: 70 additions & 0 deletions packages/playground-next/src/components/DynamicInputs.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import React, { useCallback } from 'react';

export enum INPUT_LABEL_TYPE {
ADDRESS = 'Address',
SCOPE = 'Scope',
}

const LABEL_PLACEHOLDER = {
[INPUT_LABEL_TYPE.ADDRESS]: '0x483b...5f97',
[INPUT_LABEL_TYPE.SCOPE]: 'eip155:1',
};

type DynamicInputsProps = {
inputArray: string[];
setInputArray: React.Dispatch<React.SetStateAction<string[]>>;
label: INPUT_LABEL_TYPE;
};

const DynamicInputs: React.FC<DynamicInputsProps> = ({
inputArray,
setInputArray,
label,
}) => {
const handleInputChange = useCallback(
(index: number, value: string) => {
const newInputs = [...inputArray];
newInputs[index] = value;
setInputArray(newInputs);
},
[inputArray, setInputArray],
);

const addInput = useCallback(() => {
if (inputArray.length < 5) {
setInputArray([...inputArray, '']);
}
}, [setInputArray, inputArray]);

return (
<div>
{inputArray.map((input, index) => (
<div key={index}>
<label>
{label}:
<input
id={`custom-${label}-input-${index}`}
type="text"
value={input}
onChange={(inputEvent) =>
handleInputChange(index, inputEvent.target.value)
}
placeholder={LABEL_PLACEHOLDER[label]}
/>
</label>
{index === inputArray.length - 1 && inputArray.length < 5 && (
<button
id={`add-custom-${label.toLowerCase()}-button-${index}`}
onClick={addInput}
disabled={!input}
>
+
</button>
)}
</div>
))}
</div>
);
};

export default DynamicInputs;
82 changes: 82 additions & 0 deletions packages/playground-next/src/components/WalletList.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
.wallet-list {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 20px;
padding: 20px;
}


.wallet-card {
background-color: #f0f0f0;
border-radius: 10px;
padding: 20px;
display: flex;
flex-direction: column;
align-items: center;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
width: 350px;
}

.wallet-card button:disabled {
background-color: #4299e1;
opacity: 0.7;
cursor: not-allowed;
}

.wallet-card button:disabled:hover {
background-color: #4299e1;
}

.wallet-icon {
width: 50px;
height: 50px;
border-radius: 25px;
margin-right: 15px;
}

.wallet-info {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
width: 100%;
}

.wallet-info button {
margin-top: 1rem;
}

.wallet-name {
margin: 0 0 10px 0;
font-size: 18px;
color: #333;
}

.wallet-uuid,
.wallet-rdns,
.wallet-extension-id {
margin: 5px 0;
font-size: 14px;
color: #666;
}

.wallet-card button {
align-self: stretch;
margin-top: 20px;
padding: 10px 15px;
background-color: #4299e1;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
}

.wallet-card button:hover:not(:disabled) {
background-color: #3182ce;
}

.wallet-card button:disabled {
background-color: #cccccc;
cursor: not-allowed;
}
Loading
Loading