create-universal-dapp 1.0.8 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../src/templates/nextjs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,wBAAsB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B5E"}
1
+ {"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../src/templates/nextjs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,wBAAsB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB5E"}
@@ -4,19 +4,12 @@ import ora from 'ora';
4
4
  export async function createNextjsApp(options) {
5
5
  const spinner = ora('Setting up Next.js project...').start();
6
6
  try {
7
- // Create package.json
8
7
  await createNextjsPackageJson(options);
9
- // Create Next.js configuration files
10
8
  await createNextjsConfig(options);
11
- // Create source structure
12
9
  await createNextjsSourceFiles(options);
13
- // Create Push Chain integration files
14
- await createPushChainIntegration(options);
15
- // Create ESLint config if requested
16
10
  if (options.eslint) {
17
11
  await createESLintConfig(options);
18
12
  }
19
- // Create Tailwind config (Tailwind-only setup)
20
13
  await createPostcssConfig(options);
21
14
  spinner.succeed('Next.js project structure created');
22
15
  }
@@ -27,17 +20,17 @@ export async function createNextjsApp(options) {
27
20
  }
28
21
  async function createNextjsPackageJson(options) {
29
22
  const baseDevDeps = {
30
- "@tailwindcss/postcss": "^4",
31
- "@types/node": "^20",
32
- "@types/react": "^19",
33
- "@types/react-dom": "^19",
34
- "tailwindcss": "^4",
35
- "typescript": "^5"
23
+ '@tailwindcss/postcss': '^4',
24
+ '@types/node': '^20',
25
+ '@types/react': '^19',
26
+ '@types/react-dom': '^19',
27
+ tailwindcss: '^4',
28
+ typescript: '^5',
36
29
  };
37
30
  const eslintDevDeps = {
38
- "@eslint/eslintrc": "^3",
39
- "eslint": "^9",
40
- "eslint-config-next": "15.5.3",
31
+ '@eslint/eslintrc': '^3',
32
+ eslint: '^9',
33
+ 'eslint-config-next': '15.5.3',
41
34
  };
42
35
  const devDependencies = {
43
36
  ...baseDevDeps,
@@ -46,33 +39,32 @@ async function createNextjsPackageJson(options) {
46
39
  const packageJson = {
47
40
  name: options.projectName,
48
41
  private: true,
49
- version: "0.0.0",
50
- type: "module",
42
+ version: '0.0.0',
43
+ type: 'module',
51
44
  scripts: {
52
- "dev": "next dev",
53
- "build": "next build",
54
- "start": "next start",
55
- ...(options.eslint && { lint: "eslint ." }),
45
+ dev: 'next dev',
46
+ build: 'next build',
47
+ start: 'next start',
48
+ ...(options.eslint && { lint: 'eslint .' }),
56
49
  },
57
50
  dependencies: {
58
- "@pushchain/ui-kit": "^4.0.5",
59
- "next": "15.5.3",
60
- "react": "19.1.0",
61
- "react-dom": "19.1.0"
51
+ '@pushchain/ui-kit': '^4.0.9',
52
+ next: '15.5.3',
53
+ react: '19.1.0',
54
+ 'react-dom': '19.1.0',
62
55
  },
63
56
  devDependencies,
64
57
  };
65
- // Remove undefined values
66
- Object.keys(packageJson.scripts).forEach(key => {
58
+ Object.keys(packageJson.scripts).forEach((key) => {
67
59
  const scripts = packageJson.scripts;
68
- if (scripts[key] === undefined) {
60
+ if (scripts[key] === undefined)
69
61
  delete scripts[key];
70
- }
71
62
  });
72
- await fs.writeJSON(path.join(options.targetDir, 'package.json'), packageJson, { spaces: 2 });
63
+ await fs.writeJSON(path.join(options.targetDir, 'package.json'), packageJson, {
64
+ spaces: 2,
65
+ });
73
66
  }
74
67
  async function createNextjsConfig(options) {
75
- // Next.js config
76
68
  const nextConfig = `import type { NextConfig } from "next";
77
69
 
78
70
  const nextConfig: NextConfig = {
@@ -80,54 +72,100 @@ const nextConfig: NextConfig = {
80
72
  reactStrictMode: true,
81
73
  };
82
74
 
83
- export default nextConfig;`;
75
+ export default nextConfig;
76
+ `;
84
77
  await fs.writeFile(path.join(options.targetDir, 'next.config.ts'), nextConfig);
85
- // TypeScript config
86
78
  const tsConfig = {
87
- "compilerOptions": {
88
- "target": "ES2017",
89
- "lib": ["dom", "dom.iterable", "esnext"],
90
- "allowJs": true,
91
- "skipLibCheck": true,
92
- "strict": true,
93
- "noEmit": true,
94
- "esModuleInterop": true,
95
- "module": "esnext",
96
- "moduleResolution": "bundler",
97
- "resolveJsonModule": true,
98
- "isolatedModules": true,
99
- "jsx": "preserve",
100
- "incremental": true,
101
- "paths": {
102
- "@/*": ["./src/*"]
103
- }
79
+ compilerOptions: {
80
+ target: 'ES2017',
81
+ lib: ['dom', 'dom.iterable', 'esnext'],
82
+ allowJs: true,
83
+ skipLibCheck: true,
84
+ strict: true,
85
+ noEmit: true,
86
+ esModuleInterop: true,
87
+ module: 'esnext',
88
+ moduleResolution: 'bundler',
89
+ resolveJsonModule: true,
90
+ isolatedModules: true,
91
+ jsx: 'preserve',
92
+ incremental: true,
93
+ paths: {
94
+ '@/*': ['./src/*'],
95
+ },
104
96
  },
105
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
106
- "exclude": ["node_modules"]
97
+ include: ['next-env.d.ts', '**/*.ts', '**/*.tsx'],
98
+ exclude: ['node_modules'],
107
99
  };
108
- await fs.writeJSON(path.join(options.targetDir, 'tsconfig.json'), tsConfig, { spaces: 2 });
100
+ await fs.writeJSON(path.join(options.targetDir, 'tsconfig.json'), tsConfig, {
101
+ spaces: 2,
102
+ });
109
103
  }
110
104
  async function createNextjsSourceFiles(options) {
111
- // Create src directory structure
112
105
  const srcDir = path.join(options.targetDir, 'src');
113
- const appDir = path.join(srcDir, 'pages');
106
+ const pagesDir = path.join(srcDir, 'pages');
114
107
  const stylesDir = path.join(srcDir, 'styles');
115
- await fs.ensureDir(appDir);
108
+ await fs.ensureDir(pagesDir);
116
109
  await fs.ensureDir(stylesDir);
117
- // Create app layout
118
- const layout = `import "@/styles/globals.css";
110
+ const appFile = `import "@/styles/globals.css";
119
111
  import type { AppProps } from "next/app";
120
- import { PushChainProviders } from '../providers/PushChainProviders';
112
+
113
+ import {
114
+ PushUI,
115
+ PushUniversalWalletProvider,
116
+ type AppMetadata,
117
+ type ProviderConfigProps,
118
+ } from "@pushchain/ui-kit";
119
+
120
+ /**
121
+ * Next.js App Wrapper + Push Chain Provider
122
+ *
123
+ * - Uses PushUniversalWalletProvider to enable Universal logins
124
+ * - Configure network, login options, modal, and RPCs below
125
+ */
126
+
127
+ const walletConfig: ProviderConfigProps = {
128
+ network: PushUI.CONSTANTS.PUSH_NETWORK.TESTNET,
129
+
130
+ login: {
131
+ email: true,
132
+ google: true,
133
+ wallet: {
134
+ enabled: true,
135
+ },
136
+ appPreview: true,
137
+ },
138
+
139
+ modal: {
140
+ loginLayout: PushUI.CONSTANTS.LOGIN.LAYOUT.SPLIT,
141
+ connectedLayout: PushUI.CONSTANTS.CONNECTED.LAYOUT.HOVER,
142
+ appPreview: true,
143
+ connectedInteraction: PushUI.CONSTANTS.CONNECTED.INTERACTION.BLUR,
144
+ },
145
+
146
+ chainConfig: {
147
+ rpcUrls: {
148
+ "eip155:11155111": ["https://sepolia.gateway.tenderly.co/"],
149
+ },
150
+ },
151
+ };
152
+
153
+ const appMetadata: AppMetadata = {
154
+ logoUrl: "https://avatars.githubusercontent.com/u/64157541?v=4",
155
+ title: "${options.projectName}",
156
+ description:
157
+ "Push Chain is a shared state L1 blockchain that allows all chains to unify, enabling apps of any chain to be accessed by users of any chain.",
158
+ };
121
159
 
122
160
  export default function App({ Component, pageProps }: AppProps) {
123
161
  return (
124
- <PushChainProviders>
162
+ <PushUniversalWalletProvider config={walletConfig} app={appMetadata}>
125
163
  <Component {...pageProps} />
126
- </PushChainProviders>
164
+ </PushUniversalWalletProvider>
127
165
  );
128
- }`;
129
- await fs.writeFile(path.join(appDir, '_app.tsx'), layout);
130
- // Create document layout
166
+ }
167
+ `;
168
+ await fs.writeFile(path.join(pagesDir, '_app.tsx'), appFile);
131
169
  const document = `import { Html, Head, Main, NextScript } from "next/document";
132
170
 
133
171
  export default function Document() {
@@ -140,28 +178,26 @@ export default function Document() {
140
178
  </body>
141
179
  </Html>
142
180
  );
143
- }`;
144
- await fs.writeFile(path.join(appDir, '_document.tsx'), document);
145
- // Create main page
146
- const page = `'use client'
147
-
148
- import { PushUniversalAccountButton, usePushWalletContext } from '@pushchain/ui-kit'
181
+ }
182
+ `;
183
+ await fs.writeFile(path.join(pagesDir, '_document.tsx'), document);
184
+ const page = `import { PushUniversalAccountButton, usePushWalletContext } from '@pushchain/ui-kit'
149
185
 
150
186
  function App() {
151
187
  const { universalAccount } = usePushWalletContext();
152
-
188
+
153
189
  return (
154
190
  <div className="min-h-screen p-8">
155
191
  <div className="max-w-[800px] mx-auto">
156
192
  <div className="text-center mb-8">
157
193
  <h1 className="text-[2.5rem] font-bold mb-4">
158
- Welcome to my-push-app
194
+ Welcome to ${options.projectName}
159
195
  </h1>
160
196
  <p className="text-[1.2rem] text-gray-400 mb-8">
161
197
  Your Push Chain application is ready to go!
162
198
  </p>
163
199
  </div>
164
-
200
+
165
201
  <div className="max-w-[600px] mx-auto p-8 border border-gray-300 rounded-lg text-center">
166
202
  <h2 className="mb-4">Push Chain Integration</h2>
167
203
 
@@ -172,11 +208,11 @@ function App() {
172
208
  {universalAccount ? "Connected" : "Not Connected"}
173
209
  </span>
174
210
  </div>
175
-
211
+
176
212
  <div className="mb-8 justify-items-center">
177
213
  <PushUniversalAccountButton />
178
214
  </div>
179
-
215
+
180
216
  {universalAccount && (
181
217
  <div className="mt-8 p-4 bg-gray-100 text-neutral-800 rounded-md text-left">
182
218
  <h3 className="font-bold mb-2">Account Details:</h3>
@@ -185,12 +221,11 @@ function App() {
185
221
  </pre>
186
222
  </div>
187
223
  )}
188
-
224
+
189
225
  <div className="text-[0.9rem] text-gray-400 mt-8 text-left">
190
226
  <p><strong>Next steps:</strong></p>
191
227
  <ul className="my-2 pl-6 list-disc">
192
- <li>Configure your Push Chain settings in providers/PushChainProviders.tsx</li>
193
- <li>Customize the app metadata with your branding</li>
228
+ <li>Update walletConfig/appMetadata in <code>pages/_app.tsx</code></li>
194
229
  <li>Add your chain configuration and RPC URLs</li>
195
230
  <li>Explore the @pushchain/ui-kit for more components</li>
196
231
  </ul>
@@ -201,9 +236,9 @@ function App() {
201
236
  )
202
237
  }
203
238
 
204
- export default App`;
205
- await fs.writeFile(path.join(appDir, 'index.tsx'), page);
206
- // Create global CSS (Tailwind directives only)
239
+ export default App
240
+ `;
241
+ await fs.writeFile(path.join(pagesDir, 'index.tsx'), page);
207
242
  const globalCss = `@import "tailwindcss";
208
243
 
209
244
  :root {
@@ -224,107 +259,9 @@ export default App`;
224
259
  h1 {
225
260
  font-size: 3.2em;
226
261
  line-height: 1.1;
227
- }`;
228
- await fs.writeFile(path.join(stylesDir, 'globals.css'), globalCss);
229
262
  }
230
- async function createPushChainIntegration(options) {
231
- // Create providers directory
232
- const providersDir = path.join(options.targetDir, 'src', 'providers');
233
- await fs.ensureDir(providersDir);
234
- // Create PushChainProviders.tsx following your pattern but with Next.js specific comments
235
- const pushchainProviders = `'use client'
236
-
237
- import {
238
- PushUI,
239
- PushUniversalWalletProvider,
240
- type AppMetadata,
241
- type ProviderConfigProps,
242
- } from "@pushchain/ui-kit";
243
-
244
- /**
245
- * PushChainProviders Component for Next.js
246
- *
247
- * This component wraps your entire Next.js application with Push Chain's Universal Wallet Provider.
248
- * It configures the wallet connection options, network settings, and app metadata.
249
- *
250
- * Configuration Guide:
251
- * - network: Choose between MAINNET, TESTNET, or DEV
252
- * - login: Configure authentication methods (email, google, wallet)
253
- * - modal: Customize the UI appearance and behavior
254
- * - chainConfig: Add your custom RPC endpoints
255
- * - appMetadata: Brand your app with logo, title, and description
256
- *
257
- * Next.js Specific Notes:
258
- * - This component uses 'use client' directive for client-side functionality
259
- * - Environment variables should be prefixed with NEXT_PUBLIC_ for client access
260
- * - Metadata is also configured in app/layout.tsx for SEO
261
- */
262
-
263
- const PushChainProviders = ({ children }: { children: React.ReactNode }) => {
264
- // Wallet configuration - customize these settings for your app
265
- const walletConfig: ProviderConfigProps = {
266
- // Network selection: MAINNET for production, TESTNET for development
267
- network: PushUI.CONSTANTS.PUSH_NETWORK.TESTNET,
268
-
269
- // Login options - enable/disable authentication methods
270
- login: {
271
- email: true, // Allow email authentication
272
- google: true, // Allow Google OAuth
273
- wallet: {
274
- enabled: true, // Allow wallet connection (MetaMask, etc.)
275
- },
276
- appPreview: true, // Show app preview in login modal
277
- },
278
-
279
- // Modal UI customization
280
- modal: {
281
- // Layout: SPLIT (side-by-side) or STACKED (vertical)
282
- loginLayout: PushUI.CONSTANTS.LOGIN.LAYOUT.SPLIT,
283
-
284
- // Connected wallet display: HOVER (on hover) or FULL (always visible)
285
- connectedLayout: PushUI.CONSTANTS.CONNECTED.LAYOUT.HOVER,
286
-
287
- // Show app preview in modals
288
- appPreview: true,
289
-
290
- // Background interaction when modal is open: BLUR or NONE
291
- connectedInteraction: PushUI.CONSTANTS.CONNECTED.INTERACTION.BLUR,
292
- },
293
-
294
- // Chain configuration - add your custom RPC endpoints here
295
- chainConfig: {
296
- rpcUrls: {
297
- // Ethereum Sepolia testnet (for testing)
298
- "eip155:11155111": ["https://sepolia.gateway.tenderly.co/"],
299
-
300
- // Add more chains as needed:
301
- // "eip155:1": ["https://mainnet.infura.io/v3/YOUR_PROJECT_ID"], // Ethereum Mainnet
302
- },
303
- },
304
- };
305
-
306
- // App metadata - customize with your app's branding
307
- const appMetadata: AppMetadata = {
308
- // Your app's logo URL (can be a URL or base64 data URI)
309
- logoUrl: "https://avatars.githubusercontent.com/u/64157541?v=4",
310
-
311
- // Your app's display name
312
- title: "${options.projectName}",
313
-
314
- // Brief description of your app (shown in wallet connection prompts)
315
- description:
316
- "Push Chain is a shared state L1 blockchain that allows all chains to unify, enabling apps of any chain to be accessed by users of any chain.",
317
- };
318
-
319
- return (
320
- <PushUniversalWalletProvider config={walletConfig} app={appMetadata}>
321
- {children}
322
- </PushUniversalWalletProvider>
323
- );
324
- };
325
-
326
- export { PushChainProviders };`;
327
- await fs.writeFile(path.join(providersDir, 'PushChainProviders.tsx'), pushchainProviders);
263
+ `;
264
+ await fs.writeFile(path.join(stylesDir, 'globals.css'), globalCss);
328
265
  }
329
266
  async function createESLintConfig(options) {
330
267
  const config = `import { dirname } from "path";
@@ -353,10 +290,9 @@ const eslintConfig = [
353
290
 
354
291
  export default eslintConfig;
355
292
  `;
356
- await fs.writeJSON(path.join(options.targetDir, 'eslint.config.mjs'), config);
293
+ await fs.writeFile(path.join(options.targetDir, 'eslint.config.mjs'), config);
357
294
  }
358
295
  async function createPostcssConfig(options) {
359
- // PostCSS config
360
296
  const postcssConfig = `const config = {
361
297
  plugins: ["@tailwindcss/postcss"],
362
298
  };
@@ -1 +1 @@
1
- {"version":3,"file":"nextjs.js","sourceRoot":"","sources":["../../src/templates/nextjs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nextjs.js","sourceRoot":"","sources":["../../src/templates/nextjs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../../src/templates/vite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B1E;AA+eD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC/E"}
1
+ {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../../src/templates/vite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB1E;AAqUD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB/E"}
@@ -4,15 +4,9 @@ import ora from 'ora';
4
4
  export async function createViteApp(options) {
5
5
  const spinner = ora('Setting up Vite project...').start();
6
6
  try {
7
- // Create package.json
8
7
  await createVitePackageJson(options);
9
- // Create Vite configuration files
10
8
  await createViteConfig(options);
11
- // Create source structure
12
9
  await createViteSourceFiles(options);
13
- // Create Push Chain integration files
14
- await createPushChainIntegration(options);
15
- // Create ESLint config if requested
16
10
  if (options.eslint) {
17
11
  await createESLintConfig(options);
18
12
  }
@@ -25,20 +19,20 @@ export async function createViteApp(options) {
25
19
  }
26
20
  async function createVitePackageJson(options) {
27
21
  const baseDevDeps = {
28
- "@tailwindcss/vite": "^4.1.13",
29
- "@types/react": "^19.1.10",
30
- "@types/react-dom": "^19.1.7",
31
- "@vitejs/plugin-react": "^5.0.0",
32
- typescript: "^5.8.3",
33
- vite: "^7.1.2",
34
- tailwindcss: "^4.1.13",
22
+ '@tailwindcss/vite': '^4.1.13',
23
+ '@types/react': '^19.1.10',
24
+ '@types/react-dom': '^19.1.7',
25
+ '@vitejs/plugin-react': '^5.0.0',
26
+ tailwindcss: '^4.1.13',
27
+ typescript: '^5.8.3',
28
+ vite: '^7.1.2',
35
29
  };
36
30
  const eslintDevDeps = {
37
- "@eslint/js": "^9.33.0",
38
- "eslint": "^9.33.0",
39
- "typescript-eslint": "^8.39.1",
40
- "eslint-plugin-react-hooks": "^5.2.0",
41
- "eslint-plugin-react-refresh": "^0.4.20",
31
+ '@eslint/js': '^9.33.0',
32
+ eslint: '^9.33.0',
33
+ 'typescript-eslint': '^8.39.1',
34
+ 'eslint-plugin-react-hooks': '^5.2.0',
35
+ 'eslint-plugin-react-refresh': '^0.4.20',
42
36
  };
43
37
  const devDependencies = {
44
38
  ...baseDevDeps,
@@ -47,38 +41,39 @@ async function createVitePackageJson(options) {
47
41
  const packageJson = {
48
42
  name: options.projectName,
49
43
  private: true,
50
- version: "0.0.0",
51
- type: "module",
44
+ version: '0.0.0',
45
+ type: 'module',
52
46
  scripts: {
53
- dev: "vite",
54
- build: "tsc && vite build",
55
- ...(options.eslint && { lint: "eslint ." }),
56
- preview: "vite preview"
47
+ dev: 'vite',
48
+ build: 'tsc && vite build',
49
+ ...(options.eslint && { lint: 'eslint .' }),
50
+ preview: 'vite preview',
57
51
  },
58
52
  dependencies: {
59
- react: "^19.1.1",
60
- "react-dom": "^19.1.1",
61
- "@pushchain/ui-kit": "^4.0.5"
53
+ react: '^19.1.1',
54
+ 'react-dom': '^19.1.1',
55
+ '@pushchain/ui-kit': '^4.0.9',
62
56
  },
63
57
  devDependencies,
64
58
  };
65
- // Remove undefined values
66
- Object.keys(packageJson.scripts).forEach(key => {
59
+ Object.keys(packageJson.scripts).forEach((key) => {
67
60
  const scripts = packageJson.scripts;
68
- if (scripts[key] === undefined) {
61
+ if (scripts[key] === undefined)
69
62
  delete scripts[key];
70
- }
71
63
  });
72
- await fs.writeJSON(path.join(options.targetDir, 'package.json'), packageJson, { spaces: 2 });
64
+ await fs.writeJSON(path.join(options.targetDir, 'package.json'), packageJson, {
65
+ spaces: 2,
66
+ });
73
67
  }
74
68
  async function createViteConfig(options) {
75
- // Vite config
76
69
  const viteConfig = `import { defineConfig } from 'vite'
77
70
  import react from '@vitejs/plugin-react'
78
71
  import path from 'path'
79
72
  import tailwindcss from '@tailwindcss/vite'
80
73
 
81
- // https://vitejs.dev/config/
74
+ const __filename = fileURLToPath(import.meta.url)
75
+ const __dirname = dirname(__filename)
76
+
82
77
  export default defineConfig({
83
78
  plugins: [react(), tailwindcss()],
84
79
  resolve: {
@@ -86,75 +81,70 @@ export default defineConfig({
86
81
  "@": path.resolve(__dirname, "./src"),
87
82
  },
88
83
  },
89
- })`;
84
+ })
85
+ `;
90
86
  await fs.writeFile(path.join(options.targetDir, 'vite.config.ts'), viteConfig);
91
- // TypeScript config
92
87
  const tsConfig = {
93
- "files": [],
94
- "references": [
95
- { "path": "./tsconfig.app.json" },
96
- { "path": "./tsconfig.node.json" }
97
- ]
88
+ files: [],
89
+ references: [{ path: './tsconfig.app.json' }, { path: './tsconfig.node.json' }],
98
90
  };
99
- await fs.writeJSON(path.join(options.targetDir, 'tsconfig.json'), tsConfig, { spaces: 2 });
100
- // App TypeScript config
91
+ await fs.writeJSON(path.join(options.targetDir, 'tsconfig.json'), tsConfig, {
92
+ spaces: 2,
93
+ });
101
94
  const tsAppConfig = {
102
- "compilerOptions": {
103
- "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
104
- "target": "ES2022",
105
- "useDefineForClassFields": true,
106
- "lib": ["ES2022", "DOM", "DOM.Iterable"],
107
- "module": "ESNext",
108
- "skipLibCheck": true,
109
- /* Bundler mode */
110
- "moduleResolution": "bundler",
111
- "allowImportingTsExtensions": true,
112
- "verbatimModuleSyntax": true,
113
- "moduleDetection": "force",
114
- "noEmit": true,
115
- "jsx": "react-jsx",
116
- /* Linting */
117
- "strict": true,
118
- "noUnusedLocals": true,
119
- "noUnusedParameters": true,
120
- "erasableSyntaxOnly": true,
121
- "noFallthroughCasesInSwitch": true,
122
- "noUncheckedSideEffectImports": true
95
+ compilerOptions: {
96
+ tsBuildInfoFile: './node_modules/.tmp/tsconfig.app.tsbuildinfo',
97
+ target: 'ES2022',
98
+ useDefineForClassFields: true,
99
+ lib: ['ES2022', 'DOM', 'DOM.Iterable'],
100
+ module: 'ESNext',
101
+ skipLibCheck: true,
102
+ moduleResolution: 'bundler',
103
+ allowImportingTsExtensions: true,
104
+ verbatimModuleSyntax: true,
105
+ moduleDetection: 'force',
106
+ noEmit: true,
107
+ jsx: 'react-jsx',
108
+ strict: true,
109
+ noUnusedLocals: true,
110
+ noUnusedParameters: true,
111
+ erasableSyntaxOnly: true,
112
+ noFallthroughCasesInSwitch: true,
113
+ noUncheckedSideEffectImports: true,
123
114
  },
124
- "include": ["src"]
115
+ include: ['src'],
125
116
  };
126
- await fs.writeJSON(path.join(options.targetDir, 'tsconfig.app.json'), tsAppConfig, { spaces: 2 });
127
- // Node TypeScript config
117
+ await fs.writeJSON(path.join(options.targetDir, 'tsconfig.app.json'), tsAppConfig, {
118
+ spaces: 2,
119
+ });
128
120
  const tsNodeConfig = {
129
- "compilerOptions": {
130
- "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
131
- "target": "ES2023",
132
- "lib": ["ES2023"],
133
- "module": "ESNext",
134
- "skipLibCheck": true,
135
- /* Bundler mode */
136
- "moduleResolution": "bundler",
137
- "allowImportingTsExtensions": true,
138
- "verbatimModuleSyntax": true,
139
- "moduleDetection": "force",
140
- "noEmit": true,
141
- /* Linting */
142
- "strict": true,
143
- "noUnusedLocals": true,
144
- "noUnusedParameters": true,
145
- "erasableSyntaxOnly": true,
146
- "noFallthroughCasesInSwitch": true,
147
- "noUncheckedSideEffectImports": true
121
+ compilerOptions: {
122
+ tsBuildInfoFile: './node_modules/.tmp/tsconfig.node.tsbuildinfo',
123
+ target: 'ES2023',
124
+ lib: ['ES2023'],
125
+ module: 'ESNext',
126
+ skipLibCheck: true,
127
+ moduleResolution: 'bundler',
128
+ allowImportingTsExtensions: true,
129
+ verbatimModuleSyntax: true,
130
+ moduleDetection: 'force',
131
+ noEmit: true,
132
+ strict: true,
133
+ noUnusedLocals: true,
134
+ noUnusedParameters: true,
135
+ erasableSyntaxOnly: true,
136
+ noFallthroughCasesInSwitch: true,
137
+ noUncheckedSideEffectImports: true,
148
138
  },
149
- "include": ["vite.config.ts"]
139
+ include: ['vite.config.ts'],
150
140
  };
151
- await fs.writeJSON(path.join(options.targetDir, 'tsconfig.node.json'), tsNodeConfig, { spaces: 2 });
141
+ await fs.writeJSON(path.join(options.targetDir, 'tsconfig.node.json'), tsNodeConfig, {
142
+ spaces: 2,
143
+ });
152
144
  }
153
145
  async function createViteSourceFiles(options) {
154
- // Create src directory structure
155
146
  const srcDir = path.join(options.targetDir, 'src');
156
147
  await fs.ensureDir(srcDir);
157
- // Create index.html
158
148
  const indexHtml = `<!doctype html>
159
149
  <html lang="en">
160
150
  <head>
@@ -167,57 +157,97 @@ async function createViteSourceFiles(options) {
167
157
  <div id="root"></div>
168
158
  <script type="module" src="/src/main.tsx"></script>
169
159
  </body>
170
- </html>`;
160
+ </html>
161
+ `;
171
162
  await fs.writeFile(path.join(options.targetDir, 'index.html'), indexHtml);
172
- // Create main.tsx
173
163
  const mainTsx = `import { StrictMode } from 'react'
174
164
  import { createRoot } from 'react-dom/client'
175
165
  import './index.css'
176
166
  import App from './App.tsx'
177
- import { PushChainProviders } from './providers/PushChainProviders.tsx'
167
+
168
+ import {
169
+ PushUI,
170
+ PushUniversalWalletProvider,
171
+ type AppMetadata,
172
+ type ProviderConfigProps,
173
+ } from '@pushchain/ui-kit'
174
+
175
+ const walletConfig: ProviderConfigProps = {
176
+ network: PushUI.CONSTANTS.PUSH_NETWORK.TESTNET,
177
+
178
+ login: {
179
+ email: true,
180
+ google: true,
181
+ wallet: { enabled: true },
182
+ appPreview: true,
183
+ },
184
+
185
+ modal: {
186
+ loginLayout: PushUI.CONSTANTS.LOGIN.LAYOUT.SPLIT,
187
+ connectedLayout: PushUI.CONSTANTS.CONNECTED.LAYOUT.HOVER,
188
+ appPreview: true,
189
+ connectedInteraction: PushUI.CONSTANTS.CONNECTED.INTERACTION.BLUR,
190
+ },
191
+
192
+ chainConfig: {
193
+ rpcUrls: {
194
+ 'eip155:11155111': ['https://sepolia.gateway.tenderly.co/'],
195
+ },
196
+ },
197
+ }
198
+
199
+ const appMetadata: AppMetadata = {
200
+ logoUrl: 'https://avatars.githubusercontent.com/u/64157541?v=4',
201
+ title: '${options.projectName}',
202
+ description:
203
+ "Push Chain is a shared state L1 blockchain that allows all chains to unify, enabling apps of any chain to be accessed by users of any chain.",
204
+ }
178
205
 
179
206
  createRoot(document.getElementById('root')!).render(
180
207
  <StrictMode>
181
- <PushChainProviders>
208
+ <PushUniversalWalletProvider config={walletConfig} app={appMetadata}>
182
209
  <App />
183
- </PushChainProviders>
210
+ </PushUniversalWalletProvider>
184
211
  </StrictMode>,
185
- )`;
212
+ )
213
+ `;
186
214
  await fs.writeFile(path.join(srcDir, 'main.tsx'), mainTsx);
187
- // Create App.tsx
188
215
  const appTsx = `import './App.css'
189
216
  import { PushUniversalAccountButton, usePushWalletContext } from '@pushchain/ui-kit'
190
217
 
191
218
  function App() {
192
- const { universalAccount } = usePushWalletContext();
193
-
219
+ const { universalAccount } = usePushWalletContext()
220
+
194
221
  return (
195
222
  <div className="min-h-screen p-8">
196
223
  <div className="max-w-[800px] mx-auto">
197
224
  <div className="text-center mb-8">
198
225
  <h1 className="text-[2.5rem] font-bold mb-4">
199
- Welcome to my-push-app
226
+ Welcome to ${options.projectName}
200
227
  </h1>
201
228
  <p className="text-[1.2rem] text-gray-400 mb-8">
202
229
  Your Push Chain application is ready to go!
203
230
  </p>
204
231
  </div>
205
-
232
+
206
233
  <div className="max-w-[600px] mx-auto p-8 border border-gray-300 rounded-lg text-center">
207
234
  <h2 className="mb-4">Push Chain Integration</h2>
208
235
 
209
236
  <div className="mb-4">
210
237
  <span
211
- className={"px-2 py-1 rounded text-white text-[12px] " + (universalAccount ? 'bg-green-500' : 'bg-gray-500')}
238
+ className={
239
+ "px-2 py-1 rounded text-white text-[12px] " +
240
+ (universalAccount ? "bg-green-500" : "bg-gray-500")
241
+ }
212
242
  >
213
243
  {universalAccount ? "Connected" : "Not Connected"}
214
244
  </span>
215
245
  </div>
216
-
246
+
217
247
  <div className="mb-8 justify-items-center">
218
248
  <PushUniversalAccountButton />
219
249
  </div>
220
-
250
+
221
251
  {universalAccount && (
222
252
  <div className="mt-8 p-4 bg-gray-100 text-neutral-800 rounded-md text-left">
223
253
  <h3 className="font-bold mb-2">Account Details:</h3>
@@ -226,13 +256,12 @@ function App() {
226
256
  </pre>
227
257
  </div>
228
258
  )}
229
-
259
+
230
260
  <div className="text-[0.9rem] text-gray-400 mt-8 text-left">
231
261
  <p><strong>Next steps:</strong></p>
232
262
  <ul className="my-2 pl-6 list-disc">
233
- <li>Configure your Push Chain settings in providers/PushChainProviders.tsx</li>
234
- <li>Customize the app metadata with your branding</li>
235
- <li>Add your chain configuration and RPC URLs</li>
263
+ <li>Update walletConfig/appMetadata in <code>src/main.tsx</code></li>
264
+ <li>Add more chains + RPC URLs</li>
236
265
  <li>Explore the @pushchain/ui-kit for more components</li>
237
266
  </ul>
238
267
  </div>
@@ -242,9 +271,9 @@ function App() {
242
271
  )
243
272
  }
244
273
 
245
- export default App`;
274
+ export default App
275
+ `;
246
276
  await fs.writeFile(path.join(srcDir, 'App.tsx'), appTsx);
247
- // Create App.css
248
277
  const appCss = `#root {
249
278
  max-width: 1280px;
250
279
  margin: 0 auto;
@@ -252,43 +281,9 @@ export default App`;
252
281
  text-align: center;
253
282
  }
254
283
 
255
- .logo {
256
- height: 6em;
257
- padding: 1.5em;
258
- will-change: filter;
259
- transition: filter 300ms;
260
- }
261
- .logo:hover {
262
- filter: drop-shadow(0 0 2em #646cffaa);
263
- }
264
- .logo.react:hover {
265
- filter: drop-shadow(0 0 2em #61dafbaa);
266
- }
267
-
268
- @keyframes logo-spin {
269
- from {
270
- transform: rotate(0deg);
271
- }
272
- to {
273
- transform: rotate(360deg);
274
- }
275
- }
276
-
277
- @media (prefers-reduced-motion: no-preference) {
278
- a:nth-of-type(2) .logo {
279
- animation: logo-spin infinite 20s linear;
280
- }
281
- }
282
-
283
- .card {
284
- padding: 2em;
285
- }
286
-
287
- .read-the-docs {
288
- color: #888;
289
- }`;
284
+ /* keep rest if you want */
285
+ `;
290
286
  await fs.writeFile(path.join(srcDir, 'App.css'), appCss);
291
- // Create index.css (Tailwind directives only)
292
287
  const indexCss = `@import "tailwindcss";
293
288
 
294
289
  :root {
@@ -307,15 +302,6 @@ export default App`;
307
302
  -webkit-text-size-adjust: 100%;
308
303
  }
309
304
 
310
- a {
311
- font-weight: 500;
312
- color: #646cff;
313
- text-decoration: inherit;
314
- }
315
- a:hover {
316
- color: #535bf2;
317
- }
318
-
319
305
  body {
320
306
  margin: 0;
321
307
  display: flex;
@@ -323,151 +309,15 @@ body {
323
309
  min-width: 320px;
324
310
  min-height: 100vh;
325
311
  }
326
-
327
- h1 {
328
- font-size: 3.2em;
329
- line-height: 1.1;
330
- }
331
-
332
- button {
333
- border-radius: 8px;
334
- border: 1px solid transparent;
335
- padding: 0.6em 1.2em;
336
- font-size: 1em;
337
- font-weight: 500;
338
- font-family: inherit;
339
- background-color: #1a1a1a;
340
- cursor: pointer;
341
- transition: border-color 0.25s;
342
- }
343
- button:hover {
344
- border-color: #646cff;
345
- }
346
- button:focus,
347
- button:focus-visible {
348
- outline: 4px auto -webkit-focus-ring-color;
349
- }
350
-
351
- .container {
352
- max-width: 1200px;
353
- margin: 0 auto;
354
- padding: 0 20px;
355
- }
356
-
357
- @media (prefers-color-scheme: light) {
358
- :root {
359
- color: #213547;
360
- background-color: #ffffff;
361
- }
362
- a:hover {
363
- color: #747bff;
364
- }
365
- button {
366
- background-color: #f9f9f9;
367
- }
368
- }`;
312
+ `;
369
313
  await fs.writeFile(path.join(srcDir, 'index.css'), indexCss);
370
- // Create vite-env.d.ts
371
314
  const viteEnv = `/// <reference types="vite/client" />`;
372
315
  await fs.writeFile(path.join(srcDir, 'vite-env.d.ts'), viteEnv);
373
316
  }
374
- async function createPushChainIntegration(options) {
375
- // Create providers directory
376
- const providersDir = path.join(options.targetDir, 'src', 'providers');
377
- await fs.ensureDir(providersDir);
378
- // Create PushChainProviders.tsx following your pattern
379
- const pushchainProviders = `import {
380
- PushUI,
381
- PushUniversalWalletProvider,
382
- type AppMetadata,
383
- type ProviderConfigProps,
384
- } from "@pushchain/ui-kit";
385
-
386
- /**
387
- * PushChainProviders Component
388
- *
389
- * This component wraps your entire application with Push Chain's Universal Wallet Provider.
390
- * It configures the wallet connection options, network settings, and app metadata.
391
- *
392
- * Configuration Guide:
393
- * - network: Choose between MAINNET, TESTNET, or DEV
394
- * - login: Configure authentication methods (email, google, wallet)
395
- * - modal: Customize the UI appearance and behavior
396
- * - chainConfig: Add your custom RPC endpoints
397
- * - appMetadata: Brand your app with logo, title, and description
398
- */
399
-
400
- const PushChainProviders = ({ children }: { children: React.ReactNode }) => {
401
- // Wallet configuration - customize these settings for your app
402
- const walletConfig: ProviderConfigProps = {
403
- // Network selection: MAINNET for production, TESTNET for development
404
- network: PushUI.CONSTANTS.PUSH_NETWORK.TESTNET,
405
-
406
- // Login options - enable/disable authentication methods
407
- login: {
408
- email: true, // Allow email authentication
409
- google: true, // Allow Google OAuth
410
- wallet: {
411
- enabled: true, // Allow wallet connection (MetaMask, etc.)
412
- },
413
- appPreview: true, // Show app preview in login modal
414
- },
415
-
416
- // Modal UI customization
417
- modal: {
418
- // Layout: SPLIT (side-by-side) or STACKED (vertical)
419
- loginLayout: PushUI.CONSTANTS.LOGIN.LAYOUT.SPLIT,
420
-
421
- // Connected wallet display: HOVER (on hover) or FULL (always visible)
422
- connectedLayout: PushUI.CONSTANTS.CONNECTED.LAYOUT.HOVER,
423
-
424
- // Show app preview in modals
425
- appPreview: true,
426
-
427
- // Background interaction when modal is open: BLUR or NONE
428
- connectedInteraction: PushUI.CONSTANTS.CONNECTED.INTERACTION.BLUR,
429
- },
430
-
431
- // Chain configuration - add your custom RPC endpoints here
432
- chainConfig: {
433
- rpcUrls: {
434
- // Ethereum Sepolia testnet (for testing)
435
- "eip155:11155111": ["https://sepolia.gateway.tenderly.co/"],
436
-
437
- // Add more chains as needed:
438
- // "eip155:1": ["https://mainnet.infura.io/v3/YOUR_PROJECT_ID"], // Ethereum Mainnet
439
- },
440
- },
441
- };
442
-
443
- // App metadata - customize with your app's branding
444
- const appMetadata: AppMetadata = {
445
- // Your app's logo URL (can be a URL or base64 data URI)
446
- logoUrl: "https://avatars.githubusercontent.com/u/64157541?v=4",
447
-
448
- // Your app's display name
449
- title: "${options.projectName}",
450
-
451
- // Brief description of your app (shown in wallet connection prompts)
452
- description:
453
- "Push Chain is a shared state L1 blockchain that allows all chains to unify, enabling apps of any chain to be accessed by users of any chain.",
454
- };
455
-
456
- return (
457
- <PushUniversalWalletProvider config={walletConfig} app={appMetadata}>
458
- {children}
459
- </PushUniversalWalletProvider>
460
- );
461
- };
462
-
463
- export { PushChainProviders };`;
464
- await fs.writeFile(path.join(providersDir, 'PushChainProviders.tsx'), pushchainProviders);
465
- }
466
317
  export async function createESLintConfig(options) {
467
318
  if (!options.eslint)
468
319
  return;
469
320
  const config = `import js from '@eslint/js'
470
- import globals from 'globals'
471
321
  import reactHooks from 'eslint-plugin-react-hooks'
472
322
  import reactRefresh from 'eslint-plugin-react-refresh'
473
323
  import tseslint from 'typescript-eslint'
@@ -483,10 +333,6 @@ export default defineConfig([
483
333
  reactHooks.configs['recommended-latest'],
484
334
  reactRefresh.configs.vite,
485
335
  ],
486
- languageOptions: {
487
- ecmaVersion: 2020,
488
- globals: globals.browser,
489
- },
490
336
  },
491
337
  ])
492
338
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"vite.js","sourceRoot":"","sources":["../../src/templates/vite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite.js","sourceRoot":"","sources":["../../src/templates/vite.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-universal-dapp",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "description": "CLI tool to scaffold Push Chain universal applications with Next.js or Vite",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",