@gluwa/connect-kit 0.2.0-next.1 → 0.2.0-next.3
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.
- package/CHANGELOG.md +11 -0
- package/assets/creditwallet.png +0 -0
- package/assets/fonts/Inter-Medium.ttf +0 -0
- package/assets/fonts/Inter-Medium.woff2 +0 -0
- package/assets/fonts/Inter-Regular.ttf +0 -0
- package/assets/fonts/Inter-Regular.woff2 +0 -0
- package/assets/fonts/Inter-SemiBold.ttf +0 -0
- package/assets/fonts/Inter-SemiBold.woff2 +0 -0
- package/assets/graphic.png +0 -0
- package/assets/metamask.png +0 -0
- package/assets/wc-logo.svg +3 -0
- package/assets/wc-search.png +0 -0
- package/dist/chunk-EDNRW47A.js +401 -0
- package/dist/credit-connect.js +2 -409
- package/dist/index.css +1903 -390
- package/dist/index.d.ts +16 -10
- package/dist/index.js +1110 -870
- package/dist/package.json +7 -6
- package/package.json +8 -8
- package/src/ConnectKitProvider.tsx +90 -65
- package/src/assets.d.ts +5 -0
- package/src/components/actionItem/index.tsx +50 -0
- package/src/components/actionItem/style.scss +47 -0
- package/src/components/copyLink/index.tsx +16 -0
- package/src/components/copyLink/style.scss +16 -0
- package/src/components/qrArea/index.tsx +70 -0
- package/src/components/qrArea/style.scss +130 -0
- package/src/components/searchBar/asset/Search.tsx +20 -0
- package/src/components/searchBar/asset/XMarkCircle.tsx +24 -0
- package/src/components/searchBar/index.tsx +44 -0
- package/src/components/searchBar/style.scss +58 -0
- package/src/components/snackbar/index.tsx +25 -0
- package/src/components/snackbar/style.scss +51 -0
- package/src/components/toggle/index.tsx +27 -0
- package/src/components/toggle/style.scss +53 -0
- package/src/components/walletGrid/index.tsx +64 -0
- package/src/components/walletGrid/style.scss +108 -0
- package/src/components/walletItem/index.tsx +49 -0
- package/src/components/walletItem/style.scss +70 -0
- package/src/connector-meta.ts +12 -7
- package/src/core/config.ts +20 -1
- package/src/creditConnectConnector.ts +17 -25
- package/src/hooks/useWCState.ts +22 -5
- package/src/hooks/useWagmiConnect.ts +0 -1
- package/src/index.ts +2 -2
- package/src/layout/allWallets/index.tsx +52 -0
- package/src/layout/allWallets/style.scss +62 -0
- package/src/layout/connectDialog/asset/backIcon.tsx +24 -0
- package/src/layout/connectDialog/asset/checkIcon.tsx +28 -0
- package/src/layout/connectDialog/asset/closeIcon.tsx +21 -0
- package/src/layout/connectDialog/asset/copyIcon.tsx +28 -0
- package/src/layout/connectDialog/asset/linkIcon.tsx +24 -0
- package/src/layout/connectDialog/asset/spinner.tsx +21 -0
- package/src/layout/connectDialog/idle/index.tsx +32 -0
- package/src/layout/connectDialog/idle/style.scss +61 -0
- package/src/layout/connectDialog/index.tsx +286 -0
- package/src/layout/connectDialog/loading/index.tsx +13 -0
- package/src/layout/connectDialog/loading/style.scss +19 -0
- package/src/layout/connectDialog/metaMask/index.tsx +61 -0
- package/src/layout/connectDialog/metaMask/style.scss +65 -0
- package/src/layout/connectDialog/qr/index.tsx +33 -0
- package/src/layout/connectDialog/style.scss +95 -0
- package/src/layout/connectDialog/timeout/index.tsx +31 -0
- package/src/layout/connectDialog/timeout/style.scss +64 -0
- package/src/layout/connectDialog/walletConnect/index.tsx +45 -0
- package/src/layout/connectDialog/walletConnect/style.scss +48 -0
- package/src/layout/connectDialog/walletQR/index.tsx +37 -0
- package/src/layout/detailPanel/index.tsx +147 -0
- package/src/layout/detailPanel/style.scss +64 -0
- package/src/layout/selectorPanel/index.tsx +100 -0
- package/src/layout/selectorPanel/style.scss +113 -0
- package/src/style/color.scss +417 -0
- package/src/style/font.scss +28 -0
- package/src/style/index.scss +5 -0
- package/src/style/mixin.scss +217 -0
- package/src/style/reset.scss +110 -0
- package/src/style/variables.scss +13 -0
- package/src/types.ts +11 -8
- package/src/utils/platform.ts +6 -0
- package/tsup.config.ts +32 -2
- package/dist/chunk-DDA6FP6U.js +0 -7
- package/src/ConnectModal.scss +0 -665
- package/src/ConnectModal.tsx +0 -573
- package/src/components/QRFrame.tsx +0 -43
- package/src/views/CreditWalletView.tsx +0 -58
- package/src/views/IdleView.tsx +0 -10
- package/src/views/MetaMaskView.tsx +0 -66
- package/src/views/SwitchChainView.tsx +0 -72
- package/src/views/WalletConnectView.tsx +0 -206
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// ── Scoped reset (.ck-root 안에서만 적용) ────────────────────────────────────
|
|
2
|
+
// 전역 reset이 없는 환경에서도 dialog UI가 일관되게 보이도록 보호.
|
|
3
|
+
|
|
4
|
+
.ck-root {
|
|
5
|
+
*,
|
|
6
|
+
*::before,
|
|
7
|
+
*::after {
|
|
8
|
+
box-sizing: border-box;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// 텍스트
|
|
12
|
+
p, h1, h2, h3, h4, h5, h6 {
|
|
13
|
+
margin: 0;
|
|
14
|
+
padding: 0;
|
|
15
|
+
font-weight: normal;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// 리스트
|
|
19
|
+
ul, ol {
|
|
20
|
+
margin: 0;
|
|
21
|
+
padding: 0;
|
|
22
|
+
list-style: none;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
li {
|
|
26
|
+
margin: 0;
|
|
27
|
+
padding: 0;
|
|
28
|
+
vertical-align: top;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// 이미지
|
|
32
|
+
img {
|
|
33
|
+
display: block;
|
|
34
|
+
border: 0;
|
|
35
|
+
vertical-align: top;
|
|
36
|
+
max-width: 100%;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// 링크
|
|
40
|
+
a {
|
|
41
|
+
color: inherit;
|
|
42
|
+
text-decoration: none;
|
|
43
|
+
cursor: pointer;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// 버튼
|
|
47
|
+
button {
|
|
48
|
+
margin: 0;
|
|
49
|
+
padding: 0;
|
|
50
|
+
border: 0;
|
|
51
|
+
background: none;
|
|
52
|
+
cursor: pointer;
|
|
53
|
+
font-family: inherit;
|
|
54
|
+
color: inherit;
|
|
55
|
+
appearance: none;
|
|
56
|
+
-webkit-appearance: none;
|
|
57
|
+
outline: none;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// 인풋
|
|
61
|
+
input {
|
|
62
|
+
margin: 0;
|
|
63
|
+
padding: 0;
|
|
64
|
+
border: none;
|
|
65
|
+
background: none;
|
|
66
|
+
font-family: inherit;
|
|
67
|
+
color: inherit;
|
|
68
|
+
appearance: none;
|
|
69
|
+
-webkit-appearance: none;
|
|
70
|
+
outline: none;
|
|
71
|
+
|
|
72
|
+
&[type='search']::-webkit-search-cancel-button {
|
|
73
|
+
-webkit-appearance: none;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
&[type='text']:focus,
|
|
77
|
+
&[type='search']:focus {
|
|
78
|
+
outline: none;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// dialog — preserve browser centering (margin: auto) for showModal()
|
|
83
|
+
dialog {
|
|
84
|
+
padding: 0;
|
|
85
|
+
border: none;
|
|
86
|
+
background: transparent;
|
|
87
|
+
color: inherit;
|
|
88
|
+
max-width: none;
|
|
89
|
+
max-height: none;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// label
|
|
93
|
+
label {
|
|
94
|
+
margin: 0;
|
|
95
|
+
padding: 0;
|
|
96
|
+
cursor: pointer;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// figure
|
|
100
|
+
figure {
|
|
101
|
+
margin: 0;
|
|
102
|
+
padding: 0;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// 폰트 기본값
|
|
106
|
+
font-family: 'Inter-R', -apple-system, BlinkMacSystemFont, sans-serif;
|
|
107
|
+
color: var(--scale-gray-900);
|
|
108
|
+
-webkit-font-smoothing: antialiased;
|
|
109
|
+
-moz-osx-font-smoothing: grayscale;
|
|
110
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
|
|
3
|
+
$max-width: 1280px;
|
|
4
|
+
$min-pc-width: 1279px;
|
|
5
|
+
$small-pc-width: 1080px;
|
|
6
|
+
$tiny-pc-width: 920px;
|
|
7
|
+
$break-width: 821px;
|
|
8
|
+
$tablet-width: 767px;
|
|
9
|
+
$wide-mobile-width: 500px;
|
|
10
|
+
$mobile-width: 450px;
|
|
11
|
+
$small-mobile-width: 400px;
|
|
12
|
+
$tiny-mobile-width: 346px;
|
|
13
|
+
|
package/src/types.ts
CHANGED
|
@@ -2,22 +2,22 @@ import type { ReactNode } from 'react';
|
|
|
2
2
|
import type { Chain, Transport } from 'viem';
|
|
3
3
|
import type { CreateConnectorFn } from 'wagmi';
|
|
4
4
|
|
|
5
|
-
export type ConnectorId = '
|
|
5
|
+
export type ConnectorId = 'CREDIT_CONNECT' | 'METAMASK' | 'WALLET_CONNECT';
|
|
6
6
|
|
|
7
7
|
export interface ConnectKitConfig {
|
|
8
8
|
chains: [Chain, ...Chain[]];
|
|
9
9
|
transports: Record<number, Transport>;
|
|
10
10
|
wcProjectId?: string;
|
|
11
|
+
creditConnect?: {
|
|
12
|
+
projectId: string;
|
|
13
|
+
serverUrl: string;
|
|
14
|
+
};
|
|
11
15
|
extraConnectors?: CreateConnectorFn[];
|
|
12
16
|
}
|
|
13
17
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export
|
|
17
|
-
creditWallet?: CreditWalletStrategy | false;
|
|
18
|
-
metamask?: boolean;
|
|
19
|
-
walletConnect?: boolean;
|
|
20
|
-
}
|
|
18
|
+
// 활성화할 connector key 배열. 빠진 key 는 비활성. 순서가 selector 표시 순서를 결정.
|
|
19
|
+
export type ConnectorKey = 'creditWallet' | 'metamask' | 'walletConnect';
|
|
20
|
+
export type Connectors = readonly ConnectorKey[];
|
|
21
21
|
|
|
22
22
|
export interface WCWallet {
|
|
23
23
|
id: string;
|
|
@@ -34,6 +34,8 @@ export interface WCWallet {
|
|
|
34
34
|
|
|
35
35
|
export type WCSubView = 'qr' | 'list' | 'wallet';
|
|
36
36
|
|
|
37
|
+
export type ConnectKitTheme = 'light' | 'dark';
|
|
38
|
+
|
|
37
39
|
export interface ConnectResult {
|
|
38
40
|
address: `0x${string}`;
|
|
39
41
|
connectorId: ConnectorId;
|
|
@@ -57,5 +59,6 @@ export interface ConnectModalProps {
|
|
|
57
59
|
onLog?: (message: string, error?: Error) => void;
|
|
58
60
|
wcProjectId?: string;
|
|
59
61
|
requiredChainId?: number;
|
|
62
|
+
theme: ConnectKitTheme;
|
|
60
63
|
renderConnectError?: (ctx: ConnectErrorContext) => ReactNode;
|
|
61
64
|
}
|
package/src/utils/platform.ts
CHANGED
|
@@ -8,6 +8,12 @@ export const tryOpenDeepLink = (uri: string, deepLinkBase: string): void => {
|
|
|
8
8
|
window.location.replace(`${deepLinkBase}${sep}wc?uri=${encodeURIComponent(uri)}`);
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
+
// CC payload (full URL `https://app.creditcoin.org/?creditconnect=<base64>`) 를
|
|
12
|
+
// wallet custom scheme 으로 wrap 해 redirect — wallet parser 가 step 1 unwrap 후 step 3 cc 인식.
|
|
13
|
+
export const tryOpenCreditWalletDeeplink = (payloadUrl: string): void => {
|
|
14
|
+
window.location.replace(`creditwallet://?uri=${encodeURIComponent(payloadUrl)}`);
|
|
15
|
+
};
|
|
16
|
+
|
|
11
17
|
export const detectMetaMaskExtension = (): boolean =>
|
|
12
18
|
typeof window !== 'undefined' &&
|
|
13
19
|
Boolean((window as Window & { ethereum?: { isMetaMask?: boolean } }).ethereum?.isMetaMask);
|
package/tsup.config.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { defineConfig } from 'tsup';
|
|
2
2
|
import { sassPlugin } from 'esbuild-sass-plugin';
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
import { resolve as resolvePath, extname } from 'node:path';
|
|
3
5
|
|
|
4
6
|
export default defineConfig({
|
|
5
7
|
entry: {
|
|
@@ -26,8 +28,36 @@ export default defineConfig({
|
|
|
26
28
|
banner: {
|
|
27
29
|
js: 'import React from "react";',
|
|
28
30
|
},
|
|
29
|
-
|
|
31
|
+
// esbuild 의 css url() resolveDir 는 entry scss 의 위치 — chain 안 깊은 곳의
|
|
32
|
+
// font.scss 의 './fonts/' 경로가 entry 마다 다른 dir 로 잘못 resolve 됨.
|
|
33
|
+
// 우회: sass 컴파일 결과의 './fonts/<file>' url 을 transform 에서 직접 base64 inline.
|
|
34
|
+
// dist/index.css 가 fonts 까지 self-contained — 외부 dApp 의 추가 설정 불필요.
|
|
35
|
+
esbuildPlugins: [
|
|
36
|
+
sassPlugin({
|
|
37
|
+
type: 'css',
|
|
38
|
+
transform: (css) => {
|
|
39
|
+
const fontsDir = resolvePath(__dirname, 'assets/fonts');
|
|
40
|
+
// url(...) 안의 어떤 상대경로 prefix 든 무시하고 마지막 'fonts/<file>' 만 사용.
|
|
41
|
+
// font.scss 의 ../../assets/fonts/Inter-*.{woff2,ttf} 매칭.
|
|
42
|
+
return css.replace(
|
|
43
|
+
/url\((['"]?)[^'")]*?\/fonts\/([^'")]+)\1\)/g,
|
|
44
|
+
(_match, _quote, file: string) => {
|
|
45
|
+
const absPath = resolvePath(fontsDir, file);
|
|
46
|
+
const data = readFileSync(absPath).toString('base64');
|
|
47
|
+
const ext = extname(file).slice(1);
|
|
48
|
+
const mime =
|
|
49
|
+
ext === 'woff2' ? 'font/woff2' : ext === 'ttf' ? 'font/ttf' : `font/${ext}`;
|
|
50
|
+
return `url(data:${mime};base64,${data})`;
|
|
51
|
+
},
|
|
52
|
+
);
|
|
53
|
+
},
|
|
54
|
+
}),
|
|
55
|
+
],
|
|
30
56
|
esbuildOptions(options) {
|
|
31
|
-
options.loader = {
|
|
57
|
+
options.loader = {
|
|
58
|
+
...options.loader,
|
|
59
|
+
'.png': 'dataurl',
|
|
60
|
+
'.svg': 'dataurl',
|
|
61
|
+
};
|
|
32
62
|
},
|
|
33
63
|
});
|