@sei-js/create-sei 1.0.0 → 2.0.0

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.
Files changed (70) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -4
  3. package/dist/extensions/precompiles/src/components/default/index.tsx +44 -51
  4. package/dist/main.js +112 -34
  5. package/dist/templates/next-template/.env.example +2 -2
  6. package/dist/templates/next-template/.eslintrc.json +1 -3
  7. package/dist/templates/next-template/README.md +56 -32
  8. package/dist/templates/next-template/biome.json +17 -10
  9. package/dist/templates/next-template/gitignore +41 -0
  10. package/dist/templates/next-template/next.config.mjs +17 -1
  11. package/dist/templates/next-template/package.json +37 -26
  12. package/dist/templates/next-template/public/brand/powered-by-sei-light.png +0 -0
  13. package/dist/templates/next-template/public/brand/sei-lockup-light.svg +7 -0
  14. package/dist/templates/next-template/public/brand/sei-mark.png +0 -0
  15. package/dist/templates/next-template/src/app/development/page.tsx +29 -30
  16. package/dist/templates/next-template/src/app/favicon.ico/route.ts +3 -0
  17. package/dist/templates/next-template/src/app/globals.css +49 -10
  18. package/dist/templates/next-template/src/app/layout.tsx +14 -13
  19. package/dist/templates/next-template/src/app/page.tsx +3 -3
  20. package/dist/templates/next-template/src/app/resources/page.tsx +34 -51
  21. package/dist/templates/next-template/src/app/resources/resources.ts +19 -32
  22. package/dist/templates/next-template/src/components/default/examples.ts +4 -7
  23. package/dist/templates/next-template/src/components/default/index.tsx +46 -46
  24. package/dist/templates/next-template/src/components/index.ts +3 -3
  25. package/dist/templates/next-template/src/components/landing/index.tsx +19 -49
  26. package/dist/templates/next-template/src/components/providers/index.ts +1 -1
  27. package/dist/templates/next-template/src/components/providers/providers.tsx +39 -26
  28. package/dist/templates/next-template/src/components/shell/index.ts +1 -1
  29. package/dist/templates/next-template/src/components/shell/shell.tsx +34 -26
  30. package/dist/templates/next-template/src/theme.ts +1 -0
  31. package/dist/templates/next-template/tailwind.config.js +4 -16
  32. package/package.json +25 -9
  33. package/.rsyncignore +0 -13
  34. package/CHANGELOG.md +0 -114
  35. package/biome.json +0 -8
  36. package/dist/extensions/precompiles/package.json +0 -44
  37. package/dist/main.test.js +0 -34
  38. package/dist/templates/next-template/public/favicon.ico +0 -0
  39. package/extensions/precompiles/package.json +0 -44
  40. package/extensions/precompiles/src/components/default/index.tsx +0 -201
  41. package/jest.config.js +0 -14
  42. package/src/main.test.ts +0 -38
  43. package/src/main.ts +0 -159
  44. package/templates/next-template/.env.example +0 -8
  45. package/templates/next-template/.eslintrc.json +0 -3
  46. package/templates/next-template/.nvmrc +0 -1
  47. package/templates/next-template/README.md +0 -58
  48. package/templates/next-template/biome.json +0 -48
  49. package/templates/next-template/next-env.d.ts +0 -5
  50. package/templates/next-template/next.config.mjs +0 -4
  51. package/templates/next-template/package.json +0 -44
  52. package/templates/next-template/postcss.config.mjs +0 -6
  53. package/templates/next-template/public/favicon.ico +0 -0
  54. package/templates/next-template/src/app/development/page.tsx +0 -260
  55. package/templates/next-template/src/app/globals.css +0 -14
  56. package/templates/next-template/src/app/layout.tsx +0 -30
  57. package/templates/next-template/src/app/page.tsx +0 -10
  58. package/templates/next-template/src/app/resources/page.tsx +0 -175
  59. package/templates/next-template/src/app/resources/resources.ts +0 -56
  60. package/templates/next-template/src/components/default/examples.ts +0 -63
  61. package/templates/next-template/src/components/default/index.tsx +0 -402
  62. package/templates/next-template/src/components/index.ts +0 -3
  63. package/templates/next-template/src/components/landing/index.tsx +0 -107
  64. package/templates/next-template/src/components/providers/index.ts +0 -1
  65. package/templates/next-template/src/components/providers/providers.tsx +0 -89
  66. package/templates/next-template/src/components/shell/index.ts +0 -1
  67. package/templates/next-template/src/components/shell/shell.tsx +0 -87
  68. package/templates/next-template/tailwind.config.js +0 -17
  69. package/templates/next-template/tsconfig.json +0 -27
  70. package/tsconfig.json +0 -19
@@ -1,201 +0,0 @@
1
- 'use client';
2
-
3
- import React from 'react';
4
- import { CodeHighlight } from '@mantine/code-highlight';
5
- import { ActionIcon, Badge, Button, Card, Collapse, Container, Flex, Group, Paper, Stack, Text, ThemeIcon, Title } from '@mantine/core';
6
- import { notifications } from '@mantine/notifications';
7
- import { BANK_PRECOMPILE_ADDRESS, VIEM_BANK_PRECOMPILE_ABI } from '@sei-js/precompiles';
8
- import { IconBulb, IconChevronDown, IconChevronUp, IconCopy, IconDatabase } from '@tabler/icons-react';
9
- import { useState } from 'react';
10
- import { type ReadContractParameters, formatEther } from 'viem';
11
- import { useAccount, usePublicClient } from 'wagmi';
12
-
13
- function Examples() {
14
- const [supply, setSupply] = useState('');
15
- const [showCode, setShowCode] = useState(false);
16
-
17
- const publicClient = usePublicClient();
18
- const { address } = useAccount();
19
-
20
- const formatLargeSeiNumber = (num: string, decimals: number): string => {
21
- if (num.length > 10) {
22
- return `${(Number(num) / 1000000 / 1000000000).toLocaleString(navigator.language, {
23
- minimumFractionDigits: decimals,
24
- maximumFractionDigits: decimals
25
- })} B`;
26
- }
27
- return (Number(num) / 1000000).toLocaleString(navigator.language);
28
- };
29
-
30
- const copyToClipboard = (text: string) => {
31
- try {
32
- navigator.clipboard.writeText(text).then(() => {
33
- notifications.show({
34
- title: 'Copied!',
35
- message: 'Code copied to clipboard',
36
- color: 'green'
37
- });
38
- });
39
- } catch (err) {
40
- console.error('Failed to copy text: ', err);
41
- notifications.show({
42
- title: 'Error',
43
- message: 'Failed to copy to clipboard',
44
- color: 'red'
45
- });
46
- }
47
- };
48
-
49
- const getSeiSupply = async () => {
50
- if (!publicClient) {
51
- return undefined;
52
- }
53
-
54
- const readContractParams: ReadContractParameters = {
55
- abi: VIEM_BANK_PRECOMPILE_ABI,
56
- address: BANK_PRECOMPILE_ADDRESS,
57
- functionName: 'supply',
58
- args: ['usei']
59
- };
60
-
61
- try {
62
- const result = await publicClient.readContract(readContractParams);
63
- setSupply((result as bigint).toString());
64
- } catch (error) {
65
- console.error('Error fetching supply:', error);
66
- notifications.show({
67
- title: 'Error',
68
- message: 'Failed to fetch SEI supply',
69
- color: 'red'
70
- });
71
- }
72
- };
73
-
74
- const codeExample = `// Sei Precompile Example - Bank Precompile
75
- import { BANK_PRECOMPILE_ADDRESS, VIEM_BANK_PRECOMPILE_ABI } from '@sei-js/precompiles';
76
- import { usePublicClient } from 'wagmi';
77
-
78
- const publicClient = usePublicClient();
79
-
80
- const getSeiSupply = async () => {
81
- const readContractParams = {
82
- abi: VIEM_BANK_PRECOMPILE_ABI,
83
- address: BANK_PRECOMPILE_ADDRESS,
84
- functionName: 'supply',
85
- args: ['usei'],
86
- };
87
-
88
- const result = await publicClient?.readContract(readContractParams);
89
- return (result as bigint).toString();
90
- };`;
91
-
92
- return (
93
- <Container size="xl" py="xl" pos="relative">
94
- <Stack gap="xl">
95
- {/* Header */}
96
- <div>
97
- <Group gap="md" align="center" mb="lg">
98
- <ThemeIcon size={48} radius="md" c="orange" variant="light">
99
- <IconBulb size={24} />
100
- </ThemeIcon>
101
- <div>
102
- <Title order={1} fw={700} c="gray.9">
103
- Sei Precompiles
104
- </Title>
105
- <Text size="lg" c="gray.6" mt={4}>
106
- Access native Sei blockchain functionality through EVM precompiles
107
- </Text>
108
- </div>
109
- </Group>
110
- </div>
111
-
112
- {/* Precompile Example Card */}
113
- <Card shadow="xs" p="lg" radius="md" withBorder>
114
- <Stack gap="md">
115
- <Flex justify="space-between" align="flex-start">
116
- <Stack gap="xs">
117
- <Group gap="md">
118
- <ThemeIcon size={40} radius="md" color="orange" variant="light">
119
- <IconDatabase size={20} />
120
- </ThemeIcon>
121
- <Title order={3} fw={600} c="gray.9">
122
- Bank Precompile
123
- </Title>
124
- </Group>
125
- <Text size="sm" c="gray.6">
126
- Query total SEI supply using Sei's native{' '}
127
- <Text component="a" href="https://www.docs.sei.io/dev-interoperability/precompiles/bank" target="_blank" c="orange" td="underline">
128
- Bank precompile
129
- </Text>
130
- </Text>
131
- </Stack>
132
- <Badge color="orange" variant="light" size="md" radius="md">
133
- precompiles
134
- </Badge>
135
- </Flex>
136
-
137
- <Paper p="md" radius="md" withBorder bg="gray.0">
138
- <Text size="xs" fw={500} c="gray.6">
139
- Total Supply
140
- </Text>
141
- <Flex justify="space-between" align="center">
142
- <Flex align="baseline" gap="xs">
143
- {supply ? (
144
- <>
145
- <Text fw={700} size="xl" c="gray.9" ff="monospace">
146
- {formatLargeSeiNumber(supply, 2)}
147
- </Text>
148
- <Text size="sm" c="gray.6" fw={500}>
149
- SEI
150
- </Text>
151
- </>
152
- ) : (
153
- <Paper px="sm" py={4} bg="white" radius="md" withBorder>
154
- <Flex align="baseline" gap="xs">
155
- <Text fw={700} size="xl" c="gray.5" ff="monospace">
156
- —
157
- </Text>
158
- <Text size="sm" c="gray.6" fw={500}>
159
- SEI
160
- </Text>
161
- </Flex>
162
- </Paper>
163
- )}
164
- </Flex>
165
- <Button onClick={getSeiSupply} size="sm" radius="md" variant="light" color="orange" leftSection={<IconDatabase size={14} />}>
166
- {supply ? 'Refresh' : 'Query Supply'}
167
- </Button>
168
- </Flex>
169
- </Paper>
170
-
171
- <Group justify="space-between" align="center" mt="sm">
172
- <Button
173
- variant="subtle"
174
- color="gray"
175
- size="sm"
176
- radius="md"
177
- leftSection={showCode ? <IconChevronUp size={14} /> : <IconChevronDown size={14} />}
178
- onClick={() => setShowCode(!showCode)}
179
- >
180
- {showCode ? 'Hide' : 'View'} Implementation
181
- </Button>
182
- {showCode && (
183
- <ActionIcon variant="subtle" color="gray" size="sm" radius="md" onClick={() => copyToClipboard(codeExample)}>
184
- <IconCopy size={14} />
185
- </ActionIcon>
186
- )}
187
- </Group>
188
-
189
- <Collapse in={showCode}>
190
- <Paper mt="sm" p="md" bg="gray.0" radius="md" withBorder>
191
- <CodeHighlight code={codeExample} language="tsx" withCopyButton={false} expandCodeLabel="" collapseCodeLabel="" />
192
- </Paper>
193
- </Collapse>
194
- </Stack>
195
- </Card>
196
- </Stack>
197
- </Container>
198
- );
199
- }
200
-
201
- export default Examples;
package/jest.config.js DELETED
@@ -1,14 +0,0 @@
1
- export default {
2
- preset: 'ts-jest',
3
- testEnvironment: 'node',
4
- transform: {
5
- '^.+\\.ts$': ['ts-jest', {
6
- useESM: true
7
- }]
8
- },
9
- extensionsToTreatAsEsm: ['.ts'],
10
- moduleNameMapper: {
11
- '^(\\.{1,2}/.*)\\.js$': '$1'
12
- },
13
- testPathIgnorePatterns: ['/node_modules/', '/dist/', '/templates/', '/test-smart-contract-app/']
14
- };
package/src/main.test.ts DELETED
@@ -1,38 +0,0 @@
1
- import { describe, test, expect, beforeEach, afterEach } from '@jest/globals';
2
- import { promises as fs } from 'node:fs';
3
- import path from 'node:path';
4
-
5
- describe('Extension System', () => {
6
- const testDir = path.join(process.cwd(), 'test-output');
7
- const extensionsDir = path.join(process.cwd(), 'extensions');
8
-
9
- beforeEach(async () => {
10
- // Clean up test directory
11
- try {
12
- await fs.rm(testDir, { recursive: true, force: true });
13
- } catch (e) {
14
- // Directory might not exist
15
- }
16
- await fs.mkdir(testDir, { recursive: true });
17
- });
18
-
19
- afterEach(async () => {
20
- // Clean up test directory
21
- try {
22
- await fs.rm(testDir, { recursive: true, force: true });
23
- } catch (e) {
24
- // Directory might not exist
25
- }
26
- });
27
-
28
- test('should list available extensions', async () => {
29
- const extensionExists = await fs.access(path.join(extensionsDir, 'precompiles'))
30
- .then(() => true)
31
- .catch(() => false);
32
-
33
- expect(extensionExists).toBe(true);
34
-
35
- const extensionFiles = await fs.readdir(extensionsDir);
36
- expect(extensionFiles).toContain('precompiles');
37
- });
38
- });
package/src/main.ts DELETED
@@ -1,159 +0,0 @@
1
- #!/usr/bin/env node
2
- import boxen from 'boxen';
3
- import inquirer from 'inquirer';
4
-
5
- import fs from 'node:fs';
6
- import path from 'node:path';
7
- import { dirname } from 'node:path';
8
- import { fileURLToPath } from 'node:url';
9
- import { Command } from 'commander';
10
-
11
- const __filename = fileURLToPath(import.meta.url);
12
- const __dirname = dirname(__filename);
13
-
14
- const program = new Command();
15
-
16
- // Print welcome message
17
- const printWelcomeMessage = () => {
18
- console.log(
19
- boxen('Welcome to the SEI DApp Generator!', {
20
- padding: 1,
21
- margin: 1,
22
- borderStyle: 'double',
23
- borderColor: '#932C23'
24
- })
25
- );
26
- };
27
-
28
- interface WizardOptions {
29
- name?: string;
30
- extension?: string;
31
- }
32
-
33
- function isValidDirectoryName(dirName) {
34
- const illegalRe = /[<>:"/\\|?*]/g;
35
- const windowsReservedRe = /^(con|prn|aux|nul|com[1-9]|lpt[1-9])$/i;
36
- const trailingRe = /[. ]+$/;
37
- const validNpmPackageRe = /^(?:@[a-z0-9-*~][a-z0-9-*._~]*)?[a-z0-9-~][a-z0-9-._~]*$/;
38
-
39
- if (typeof dirName !== 'string' || dirName.length === 0) {
40
- return false;
41
- }
42
-
43
- // Check for illegal characters, Windows reserved names, trailing spaces/dots
44
- if (illegalRe.test(dirName) || windowsReservedRe.test(dirName) || trailingRe.test(dirName) || !validNpmPackageRe.test(dirName)) {
45
- return false;
46
- }
47
-
48
- return true;
49
- }
50
-
51
- const validateOptions = (options: WizardOptions): boolean => {
52
- let valid = true;
53
-
54
- if (options.name) {
55
- if (!isValidDirectoryName(options.name)) {
56
- console.log('Invalid package name. Please use a valid npm package name.');
57
- valid = false;
58
- }
59
- }
60
-
61
- return valid;
62
- };
63
-
64
- async function listExtensions(): Promise<void> {
65
- const extensionsPath = path.join(__dirname, 'extensions');
66
-
67
- try {
68
- const extensions = await fs.promises.readdir(extensionsPath, { withFileTypes: true });
69
- const extensionDirs = extensions.filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name);
70
-
71
- if (extensionDirs.length === 0) {
72
- console.log('No extensions available.');
73
- return;
74
- }
75
-
76
- console.log('Available extensions:');
77
- for (const ext of extensionDirs) {
78
- console.log(` - ${ext}`);
79
- }
80
- } catch (error) {
81
- console.log('No extensions directory found.');
82
- }
83
- }
84
-
85
- async function runWizard(options: WizardOptions): Promise<void> {
86
- if (!validateOptions(options)) {
87
- return;
88
- }
89
-
90
- printWelcomeMessage();
91
-
92
- let dAppName = '';
93
- if (options.name) {
94
- dAppName = options.name;
95
- } else {
96
- const promptResult = await inquirer.prompt([
97
- {
98
- type: 'input',
99
- name: 'dAppName',
100
- message: 'What is your dApp (project) name?',
101
- validate: (input: string) => {
102
- return isValidDirectoryName(input) || 'Invalid package name. Please use a valid npm package name.';
103
- }
104
- }
105
- ]);
106
-
107
- dAppName = promptResult.dAppName;
108
- }
109
-
110
- // Copy base template
111
- const templateName = 'next-template';
112
- const templatePath = path.join(__dirname, 'templates', templateName);
113
- const dst = path.join(process.cwd(), dAppName);
114
- await fs.promises.cp(templatePath, dst, { recursive: true });
115
-
116
- // Apply extension if specified
117
- if (options.extension) {
118
- const extensionPath = path.join(__dirname, 'extensions', options.extension);
119
-
120
- try {
121
- await fs.promises.access(extensionPath);
122
- await fs.promises.cp(extensionPath, dst, { recursive: true });
123
- console.log(`Applied extension: ${options.extension}`);
124
- } catch (error) {
125
- console.log(`Warning: Extension '${options.extension}' not found. Continuing with base template.`);
126
- }
127
- }
128
-
129
- const extensionText = options.extension ? ` with ${options.extension} extension` : '';
130
- console.log(`Project setup complete! Using template ${templateName}${extensionText}\n`);
131
- console.log(`To start your app, run: \n > cd ${dAppName} \n > pnpm \n > pnpm dev\n`);
132
- }
133
-
134
- program
135
- .command('app')
136
- .description('Create a new SEI dApp')
137
- .option('--name <name>', 'Specify the name of your dApp. Name must be a valid package name.')
138
- .option('--extension <extension>', 'Specify an extension to apply to the base template')
139
-
140
- .action(async (options: WizardOptions) => {
141
- try {
142
- await runWizard(options);
143
- } catch (error) {
144
- console.error('An error occurred:', error);
145
- }
146
- });
147
-
148
- program
149
- .command('list-extensions')
150
- .description('List all available extensions')
151
- .action(async () => {
152
- try {
153
- await listExtensions();
154
- } catch (error) {
155
- console.error('An error occurred:', error);
156
- }
157
- });
158
-
159
- program.parse(process.argv);
@@ -1,8 +0,0 @@
1
- # Chain configuration
2
- # Options: mainnet, testnet, devnet
3
- # Defaults to testnet (atlantic-2) if not set
4
- NEXT_PUBLIC_CHAIN=testnet
5
-
6
- # WalletConnect Project ID (optional)
7
- # Get your project ID from https://cloud.walletconnect.com
8
- NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your-project-id
@@ -1,3 +0,0 @@
1
- {
2
- "extends": "next/core-web-vitals"
3
- }
@@ -1 +0,0 @@
1
- v20
@@ -1,58 +0,0 @@
1
- This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
2
-
3
- ## Getting Started
4
-
5
- Install dependencies by running
6
- ```bash
7
- npm install
8
- #or
9
- yarn
10
- ```
11
-
12
- Then, run the development server:
13
-
14
- ```bash
15
- npm run dev
16
- # or
17
- yarn dev
18
- ```
19
-
20
- Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
21
-
22
- You can start editing the page by modifying `src/app/page.tsx`. The page auto-updates as you edit the file.
23
-
24
- This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
25
-
26
- ## Repository Basics
27
- This repository includes basic features that allow you to connect to a wallet and use the wallet to interact with the chain.
28
-
29
- Additionally, basic examples and links to documentation are provided on the example homepage in `src/app/components/Homepage`.
30
-
31
- This repository uses helper methods from [@sei-js/evm/viem](https://github.com/sei-protocol/sei-js/tree/main/packages/evm/src/viem)
32
-
33
- ### Web3 Provider
34
- This component is a Sei specific wrapper around a Wagmi Provider that should wrap the application. Wrapping the application in this provider will enable it to access hooks in Wagmi. These hooks are enable connection to a wallet and interaction with the chain.
35
-
36
- In addition, this app uses [RainbowKit](https://www.rainbowkit.com/docs/wallet-button) which provides wallet connect functionality out of the box.
37
-
38
- To change the list of supported wallets, as well as connection configurations you can modify the `src/app/components/Web3Provider.tsx` component.
39
-
40
- ### Changing the Chain
41
- This application connects to the arctic-1 devnet by default, using chain configurations uploaded to viem.
42
-
43
- To change the chain the app connects to, edit the `selectedChain` variable in the `chain.ts` file in `src/app/constants`
44
-
45
- ## Learn More
46
-
47
- To learn more about Next.js, take a look at the following resources:
48
-
49
- - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
50
- - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
51
-
52
- You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
53
-
54
- ## Deploy on Vercel
55
-
56
- The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
57
-
58
- Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
@@ -1,48 +0,0 @@
1
- {
2
- "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
3
- "organizeImports": {
4
- "enabled": true
5
- },
6
- "linter": {
7
- "enabled": true,
8
- "rules": {
9
- "recommended": true,
10
- "style": {
11
- "noNonNullAssertion": "off"
12
- },
13
- "suspicious": {
14
- "noExplicitAny": "off"
15
- }
16
- }
17
- },
18
- "formatter": {
19
- "enabled": true,
20
- "formatWithErrors": false,
21
- "indentStyle": "tab",
22
- "lineEnding": "lf",
23
- "lineWidth": 160,
24
- "attributePosition": "auto"
25
- },
26
- "javascript": {
27
- "formatter": {
28
- "jsxQuoteStyle": "double",
29
- "quoteProperties": "asNeeded",
30
- "trailingCommas": "es5",
31
- "semicolons": "always",
32
- "arrowParentheses": "always",
33
- "bracketSpacing": true,
34
- "bracketSameLine": false,
35
- "quoteStyle": "single",
36
- "attributePosition": "auto"
37
- }
38
- },
39
- "json": {
40
- "formatter": {
41
- "trailingCommas": "none"
42
- }
43
- },
44
- "files": {
45
- "include": ["src/**/*.ts", "src/**/*.tsx", "*.json", "*.md"],
46
- "ignore": ["node_modules/**", "dist/**", ".next/**", ".yarn/**"]
47
- }
48
- }
@@ -1,5 +0,0 @@
1
- /// <reference types="next" />
2
- /// <reference types="next/image-types/global" />
3
-
4
- // NOTE: This file should not be edited
5
- // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
@@ -1,4 +0,0 @@
1
- /** @type {import('next').NextConfig} */
2
- const nextConfig = {};
3
-
4
- export default nextConfig;
@@ -1,44 +0,0 @@
1
- {
2
- "name": "template-next-create-sei-app",
3
- "version": "0.1.0",
4
- "private": true,
5
- "scripts": {
6
- "dev": "next dev",
7
- "build": "next build",
8
- "start": "next start",
9
- "lint": "biome lint .",
10
- "lint:fix": "biome lint --write .",
11
- "format": "biome format --write .",
12
- "format:check": "biome format .",
13
- "check": "biome check .",
14
- "check:fix": "biome check --write .",
15
- "deploy": "vercel --prod"
16
- },
17
- "dependencies": {
18
- "@mantine/code-highlight": "^8.2.5",
19
- "@mantine/core": "^8.2.5",
20
- "@mantine/hooks": "^8.2.5",
21
- "@mantine/notifications": "^8.2.5",
22
- "@rainbow-me/rainbowkit": "^2.2.8",
23
- "@sei-js/precompiles": "^2.1.2",
24
- "@tabler/icons-react": "^3.34.1",
25
- "@tailwindcss/postcss": "^4.1.12",
26
- "@tanstack/react-query": "^5.85.3",
27
- "ethers": "^6.15.0",
28
- "next": "15.4.7",
29
- "pino-pretty": "^13.1.1",
30
- "postcss": "^8.4.45",
31
- "react": "^19.1.1",
32
- "react-dom": "^19.1.1",
33
- "tailwindcss": "^4.1.12",
34
- "viem": "^2.34.0",
35
- "wagmi": "^2.16.4"
36
- },
37
- "devDependencies": {
38
- "@types/node": "^24.3.0",
39
- "@types/react": "^19.1.10",
40
- "@types/react-dom": "^19.1.7",
41
- "autoprefixer": "^10.4.21",
42
- "typescript": "^5.9.2"
43
- }
44
- }
@@ -1,6 +0,0 @@
1
- const config = {
2
- plugins: {
3
- "@tailwindcss/postcss": {},
4
- },
5
- };
6
- export default config;