@algobright/solana-connector 0.1.4 → 0.1.5
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/dist/ConnectButton.js +35 -12
- package/dist/ConnectButton.js.map +1 -1
- package/dist/ConnectButton.mjs +35 -12
- package/dist/ConnectButton.mjs.map +1 -1
- package/dist/{CustomQRCode.module-JW3JU3FX.module.css → CustomQRCode.module-WDQZB2O2.module.css} +0 -18
- package/dist/WalletModal.js +64 -39
- package/dist/WalletModal.js.map +1 -1
- package/dist/WalletModal.mjs +60 -35
- package/dist/WalletModal.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/Spinner.module-BLSWZSIL.module.css +0 -16
package/dist/WalletModal.mjs
CHANGED
|
@@ -100,8 +100,50 @@ var Button_default2 = Button_default;
|
|
|
100
100
|
// src/components/shared/CustomQRCode/CustomQRCode.tsx
|
|
101
101
|
import { useMemo } from "react";
|
|
102
102
|
import QRCodeUtil from "qrcode";
|
|
103
|
-
import styles3 from "./CustomQRCode.module-
|
|
104
|
-
|
|
103
|
+
import styles3 from "./CustomQRCode.module-WDQZB2O2.module.css";
|
|
104
|
+
|
|
105
|
+
// src/components/shared/Spinner/Spinner.tsx
|
|
106
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
107
|
+
var Spinner = () => /* @__PURE__ */ jsx3(
|
|
108
|
+
"svg",
|
|
109
|
+
{
|
|
110
|
+
width: "1em",
|
|
111
|
+
height: "1em",
|
|
112
|
+
viewBox: "0 0 50 50",
|
|
113
|
+
style: { display: "inline-block", verticalAlign: "middle" },
|
|
114
|
+
children: /* @__PURE__ */ jsx3(
|
|
115
|
+
"circle",
|
|
116
|
+
{
|
|
117
|
+
cx: "25",
|
|
118
|
+
cy: "25",
|
|
119
|
+
r: "20",
|
|
120
|
+
fill: "none",
|
|
121
|
+
stroke: "currentColor",
|
|
122
|
+
strokeWidth: "5",
|
|
123
|
+
strokeDasharray: "90, 150",
|
|
124
|
+
strokeLinecap: "round",
|
|
125
|
+
children: /* @__PURE__ */ jsx3(
|
|
126
|
+
"animateTransform",
|
|
127
|
+
{
|
|
128
|
+
attributeName: "transform",
|
|
129
|
+
type: "rotate",
|
|
130
|
+
from: "0 25 25",
|
|
131
|
+
to: "360 25 25",
|
|
132
|
+
dur: "0.8s",
|
|
133
|
+
repeatCount: "indefinite"
|
|
134
|
+
}
|
|
135
|
+
)
|
|
136
|
+
}
|
|
137
|
+
)
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
var Spinner_default = Spinner;
|
|
141
|
+
|
|
142
|
+
// src/components/shared/Spinner/index.ts
|
|
143
|
+
var Spinner_default2 = Spinner_default;
|
|
144
|
+
|
|
145
|
+
// src/components/shared/CustomQRCode/CustomQRCode.tsx
|
|
146
|
+
import { Fragment, jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
105
147
|
function generateMatrix(value, errorCorrectionLevel) {
|
|
106
148
|
const arr = Array.prototype.slice.call(QRCodeUtil.create(value, { errorCorrectionLevel }).modules.data, 0);
|
|
107
149
|
const sqrt = Math.sqrt(arr.length);
|
|
@@ -134,7 +176,7 @@ function QRCodeSVG({
|
|
|
134
176
|
const y1 = (matrix.length - 7) * cellSize * y;
|
|
135
177
|
for (let i = 0; i < 3; i++) {
|
|
136
178
|
dots2.push(
|
|
137
|
-
/* @__PURE__ */
|
|
179
|
+
/* @__PURE__ */ jsx4(
|
|
138
180
|
"rect",
|
|
139
181
|
{
|
|
140
182
|
fill: i % 2 !== 0 ? backgroundColor : dotColor,
|
|
@@ -159,7 +201,7 @@ function QRCodeSVG({
|
|
|
159
201
|
if (!(i < 7 && j < 7 || i > matrix.length - 8 && j < 7 || i < 7 && j > matrix.length - 8)) {
|
|
160
202
|
if (!clearArea || !(i > matrixMiddleStart && i < matrixMiddleEnd && j > matrixMiddleStart && j < matrixMiddleEnd)) {
|
|
161
203
|
dots2.push(
|
|
162
|
-
/* @__PURE__ */
|
|
204
|
+
/* @__PURE__ */ jsx4(
|
|
163
205
|
"circle",
|
|
164
206
|
{
|
|
165
207
|
cx: j * cellSize + cellSize / 2,
|
|
@@ -186,7 +228,7 @@ function QRCodeSVG({
|
|
|
186
228
|
className: styles3.svgFull,
|
|
187
229
|
style: { maxWidth: size, maxHeight: size },
|
|
188
230
|
children: [
|
|
189
|
-
/* @__PURE__ */
|
|
231
|
+
/* @__PURE__ */ jsx4("rect", { fill: "transparent", height: size, width: size }),
|
|
190
232
|
dots
|
|
191
233
|
]
|
|
192
234
|
}
|
|
@@ -197,7 +239,7 @@ function ViewfinderFrame({
|
|
|
197
239
|
color = "#2D2D2D",
|
|
198
240
|
opacity = 0.01
|
|
199
241
|
}) {
|
|
200
|
-
return /* @__PURE__ */
|
|
242
|
+
return /* @__PURE__ */ jsx4(
|
|
201
243
|
"svg",
|
|
202
244
|
{
|
|
203
245
|
width: size,
|
|
@@ -206,7 +248,7 @@ function ViewfinderFrame({
|
|
|
206
248
|
fill: "none",
|
|
207
249
|
xmlns: "http://www.w3.org/2000/svg",
|
|
208
250
|
className: styles3.viewfinder,
|
|
209
|
-
children: /* @__PURE__ */
|
|
251
|
+
children: /* @__PURE__ */ jsx4(
|
|
210
252
|
"path",
|
|
211
253
|
{
|
|
212
254
|
d: "M3.5 264.06C3.5 272.587 10.4127 279.5 18.9399 279.5H32.8799C33.7083 279.5 34.3799 280.172 34.3799 281V281C34.3799 281.828 33.7083 282.5 32.8799 282.5H17.4399C8.08427 282.5 0.5 274.916 0.5 265.56V250.12C0.5 249.292 1.17157 248.62 2 248.62V248.62C2.82843 248.62 3.5 249.292 3.5 250.12V264.06ZM282.5 266.058C282.5 275.139 275.139 282.5 266.058 282.5H251.116C250.288 282.5 249.616 281.828 249.616 281V281C249.616 280.172 250.288 279.5 251.116 279.5H264.558C272.81 279.5 279.5 272.81 279.5 264.558V250.12C279.5 249.292 280.172 248.62 281 248.62V248.62C281.828 248.62 282.5 249.292 282.5 250.12V266.058ZM34.3799 2C34.3799 2.82843 33.7083 3.5 32.8799 3.5H18.9399C10.4127 3.5 3.5 10.4127 3.5 18.9399V32.8799C3.5 33.7083 2.82843 34.3799 2 34.3799V34.3799C1.17157 34.3799 0.5 33.7083 0.5 32.8799V17.4399C0.5 8.08427 8.08427 0.5 17.4399 0.5H32.8799C33.7083 0.5 34.3799 1.17157 34.3799 2V2ZM282.5 32.8799C282.5 33.7083 281.828 34.3799 281 34.3799V34.3799C280.172 34.3799 279.5 33.7083 279.5 32.8799V18.4419C279.5 10.1897 272.81 3.5 264.558 3.5H251.116C250.288 3.5 249.616 2.82843 249.616 2V2C249.616 1.17157 250.288 0.5 251.116 0.5H266.058C275.139 0.5 282.5 7.86129 282.5 16.9419V32.8799Z",
|
|
@@ -248,7 +290,7 @@ function CustomQRCode({
|
|
|
248
290
|
...style
|
|
249
291
|
},
|
|
250
292
|
children: [
|
|
251
|
-
/* @__PURE__ */
|
|
293
|
+
/* @__PURE__ */ jsx4(ViewfinderFrame, { size, color: resolvedFrameColor, opacity: frameOpacity }),
|
|
252
294
|
/* @__PURE__ */ jsxs2(
|
|
253
295
|
"div",
|
|
254
296
|
{
|
|
@@ -256,10 +298,10 @@ function CustomQRCode({
|
|
|
256
298
|
style: { background: resolvedBackground },
|
|
257
299
|
"data-error": error,
|
|
258
300
|
children: [
|
|
259
|
-
/* @__PURE__ */
|
|
260
|
-
scanning && !showPlaceholder && !error && /* @__PURE__ */
|
|
261
|
-
/* @__PURE__ */
|
|
262
|
-
/* @__PURE__ */
|
|
301
|
+
/* @__PURE__ */ jsx4("div", { className: styles3.glow, "data-error": error }),
|
|
302
|
+
scanning && !showPlaceholder && !error && /* @__PURE__ */ jsx4("div", { className: styles3.shine }),
|
|
303
|
+
/* @__PURE__ */ jsx4("div", { className: styles3.qrWrapper, children: showPlaceholder ? /* @__PURE__ */ jsx4(QRPlaceholder, { size, dotColor: resolvedDotColor, backgroundColor: resolvedBackground }) : /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
304
|
+
/* @__PURE__ */ jsx4(
|
|
263
305
|
QRCodeSVG,
|
|
264
306
|
{
|
|
265
307
|
value,
|
|
@@ -270,7 +312,7 @@ function CustomQRCode({
|
|
|
270
312
|
backgroundColor: resolvedBackground
|
|
271
313
|
}
|
|
272
314
|
),
|
|
273
|
-
image && /* @__PURE__ */
|
|
315
|
+
image && /* @__PURE__ */ jsx4(
|
|
274
316
|
"div",
|
|
275
317
|
{
|
|
276
318
|
className: styles3.logoWrapper,
|
|
@@ -296,7 +338,7 @@ function QRPlaceholder({
|
|
|
296
338
|
backgroundColor
|
|
297
339
|
}) {
|
|
298
340
|
return /* @__PURE__ */ jsxs2("div", { className: styles3.placeholderContainer, style: { width: size - 40, height: size - 40 }, children: [
|
|
299
|
-
/* @__PURE__ */
|
|
341
|
+
/* @__PURE__ */ jsx4(
|
|
300
342
|
"div",
|
|
301
343
|
{
|
|
302
344
|
className: styles3.placeholderPattern,
|
|
@@ -309,7 +351,7 @@ function QRPlaceholder({
|
|
|
309
351
|
{ top: 0, left: 0 },
|
|
310
352
|
{ top: 0, right: 0 },
|
|
311
353
|
{ bottom: 0, left: 0 }
|
|
312
|
-
].map((pos, i) => /* @__PURE__ */
|
|
354
|
+
].map((pos, i) => /* @__PURE__ */ jsx4(
|
|
313
355
|
"span",
|
|
314
356
|
{
|
|
315
357
|
className: styles3.cornerSquare,
|
|
@@ -320,7 +362,7 @@ function QRPlaceholder({
|
|
|
320
362
|
},
|
|
321
363
|
i
|
|
322
364
|
)),
|
|
323
|
-
/* @__PURE__ */
|
|
365
|
+
/* @__PURE__ */ jsx4(
|
|
324
366
|
"div",
|
|
325
367
|
{
|
|
326
368
|
className: styles3.centerArea,
|
|
@@ -331,14 +373,8 @@ function QRPlaceholder({
|
|
|
331
373
|
}
|
|
332
374
|
),
|
|
333
375
|
/* @__PURE__ */ jsxs2("div", { className: styles3.loaderWrapper, children: [
|
|
334
|
-
/* @__PURE__ */
|
|
335
|
-
|
|
336
|
-
{
|
|
337
|
-
className: styles3.spinner,
|
|
338
|
-
style: { color: `${dotColor}40` }
|
|
339
|
-
}
|
|
340
|
-
),
|
|
341
|
-
/* @__PURE__ */ jsx3("span", { className: styles3.loadingText, style: { color: `${dotColor}70` }, children: "Generating QR code..." })
|
|
376
|
+
/* @__PURE__ */ jsx4(Spinner_default2, {}),
|
|
377
|
+
/* @__PURE__ */ jsx4("span", { className: styles3.loadingText, style: { color: `${dotColor}70` }, children: "Generating QR code..." })
|
|
342
378
|
] })
|
|
343
379
|
] });
|
|
344
380
|
}
|
|
@@ -347,17 +383,6 @@ CustomQRCode.displayName = "CustomQRCode";
|
|
|
347
383
|
// src/components/shared/CustomQRCode/index.ts
|
|
348
384
|
var CustomQRCode_default = CustomQRCode;
|
|
349
385
|
|
|
350
|
-
// src/components/shared/Spinner/Spinner.tsx
|
|
351
|
-
import classes from "./Spinner.module-BLSWZSIL.module.css";
|
|
352
|
-
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
353
|
-
var Spinner = () => {
|
|
354
|
-
return /* @__PURE__ */ jsx4("div", { className: classes.spinner });
|
|
355
|
-
};
|
|
356
|
-
var Spinner_default = Spinner;
|
|
357
|
-
|
|
358
|
-
// src/components/shared/Spinner/index.ts
|
|
359
|
-
var Spinner_default2 = Spinner_default;
|
|
360
|
-
|
|
361
386
|
// src/components/WalletModal/WalletModal.tsx
|
|
362
387
|
import { SiWalletconnect } from "react-icons/si";
|
|
363
388
|
|
package/dist/WalletModal.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/WalletModal/WalletModal.tsx","../src/components/shared/Dialog/Dialog.tsx","../src/components/shared/Button/Button.tsx","../src/components/shared/Button/index.ts","../src/components/shared/CustomQRCode/CustomQRCode.tsx","../src/components/shared/CustomQRCode/index.ts","../src/components/shared/Spinner/Spinner.tsx","../src/components/shared/Spinner/index.ts","../src/components/shared/Collapsible/Collapsible.tsx","../src/components/shared/Avatar/Avatar.tsx","../src/components/shared/Avatar/index.ts","../src/components/WalletModal/index.ts"],"sourcesContent":["import { useConnector, WalletConnectorId, WalletConnectorMetadata } from \"@solana/connector\";\nimport { Check, ChevronLeft, Copy, ExternalLink, Wallet, X } from \"lucide-react\";\nimport { useEffect, useState, useSyncExternalStore } from \"react\";\nimport styles from './WalletModal.module.css';\nimport { Dialog, DialogClose, DialogContent, DialogTitle } from \"@shared/Dialog\";\nimport Button from \"@shared/Button\";\nimport CustomQRCode from \"@shared//CustomQRCode\";\nimport Spinner from \"@shared/Spinner\";\nimport { SiWalletconnect } from \"react-icons/si\";\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"@shared/Collapsible\";\nimport Avatar from \"@shared/Avatar\";\nimport { clsx } from \"clsx\";\n\n/**\n * Props for the WalletModal component.\n * This modal acts as the primary interface for users to select a wallet \n * or scan a QR code for mobile connection.\n */\ntype WalletModalProps = {\n /** * Custom CSS class for the modal overlay and container. \n * If not provided, the component uses the kit's default modal styling.\n */\n CN_Modal?: string;\n\n /** * The visual theme for the modal content. \n * @default 'light'\n */\n theme?: 'light' | 'dark';\n\n /** Controlled state: whether the modal is currently visible. */\n open: boolean;\n\n /** Callback function to handle opening and closing the modal. */\n onOpenChange: (open: boolean) => void;\n}\n\nexport function WalletModal(props: WalletModalProps) {\n const {\n CN_Modal,\n theme = 'light',\n open,\n onOpenChange,\n } = props;\n\n const { walletConnectUri, clearWalletConnectUri, walletStatus: { status }, isConnecting, connectorId, connectors, connectWallet, disconnectWallet } = useConnector();\n\n const [connectingConnectorId, setConnectingConnectorId] = useState<WalletConnectorId | null>(null);\n const [isOtherWalletsOpen, setIsOtherWalletsOpen] = useState(false);\n const [errorConnectorId, setErrorConnectorId] = useState<WalletConnectorId | null>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const [copied, setCopied] = useState(false);\n\n const isClient = useSyncExternalStore(\n () => () => { },\n () => true,\n () => false,\n );\n\n const recentlyConnectedConnectorId = useSyncExternalStore(\n () => () => { },\n () => localStorage.getItem('recentlyConnectedConnectorId') as WalletConnectorId | null,\n () => null\n );\n\n useEffect(() => {\n if (status === 'connected' && connectorId) {\n localStorage.setItem('recentlyConnectedConnectorId', connectorId);\n }\n }, [status, connectorId]);\n\n const walletConnectConnector = connectors.find(c => c.name === 'WalletConnect') ?? null;\n const isWalletConnectFlow =\n (!!walletConnectConnector &&\n (connectingConnectorId === walletConnectConnector.id ||\n (status === 'connecting' && connectorId === walletConnectConnector.id))) ||\n !!walletConnectUri;\n\n function cancelConnection() {\n clearWalletConnectUri?.();\n setConnectingConnectorId(null);\n disconnectWallet().catch(() => { });\n }\n\n // Clear error state when modal closes or user tries another wallet\n const clearError = () => {\n setErrorConnectorId(null);\n setErrorMessage(null);\n };\n\n const handleSelectWallet = async (connector: WalletConnectorMetadata) => {\n clearError();\n setConnectingConnectorId(connector.id);\n try {\n if (connector.name === 'WalletConnect') {\n clearWalletConnectUri?.();\n }\n await connectWallet(connector.id);\n localStorage.setItem('recentlyConnectedConnectorId', connector.id);\n // Don't close modal for WalletConnect - wait for connection\n if (connector.name !== 'WalletConnect') {\n onOpenChange(false);\n }\n } catch (error) {\n // Extract user-friendly error message\n const message = error instanceof Error ? error.message : 'An unexpected error occurred';\n if (message.includes('Connection cancelled')) return;\n\n // Set error state for UI feedback\n setErrorConnectorId(connector.id);\n setErrorMessage(message);\n\n // Log for telemetry/debugging (includes full error details)\n console.error('Failed to connect wallet:', {\n wallet: connector.name,\n connectorId: connector.id,\n error,\n message,\n timestamp: new Date().toISOString(),\n });\n } finally {\n setConnectingConnectorId(null);\n }\n };\n\n const handleCopyUri = async () => {\n if (!walletConnectUri) return;\n try {\n await navigator.clipboard.writeText(walletConnectUri);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error('Failed to copy URI:', err);\n }\n };\n\n const handleBackFromWalletConnect = () => {\n cancelConnection();\n };\n\n const readyConnectors = connectors.filter(c => c.ready);\n const notReadyConnectors = connectors.filter(c => !c.ready);\n\n const sortedReadyConnectors = [...readyConnectors].sort((a, b) => {\n const aIsRecent = recentlyConnectedConnectorId === a.id;\n const bIsRecent = recentlyConnectedConnectorId === b.id;\n if (aIsRecent && !bIsRecent) return -1;\n if (!aIsRecent && bIsRecent) return 1;\n return 0;\n });\n\n const primaryWallets = sortedReadyConnectors.slice(0, 3);\n const otherWallets = sortedReadyConnectors.slice(3);\n\n const primayOuterHr = otherWallets.length > 0 && primaryWallets.length > 0;\n\n const getInstallUrl = (walletName: string, walletUrl?: string): string | undefined => {\n if (walletUrl) return walletUrl;\n\n const name = walletName.toLowerCase();\n if (name.includes('phantom')) return 'https://phantom.app';\n if (name.includes('solflare')) return 'https://solflare.com';\n if (name.includes('backpack')) return 'https://backpack.app';\n if (name.includes('glow')) return 'https://glow.app';\n if (name.includes('coinbase')) return 'https://www.coinbase.com/wallet';\n if (name.includes('ledger')) return 'https://www.ledger.com';\n if (name.includes('trust')) return 'https://trustwallet.com';\n if (name.includes('exodus')) return 'https://www.exodus.com';\n return undefined;\n };\n\n const handleOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n clearError();\n if (isConnecting || connectingConnectorId || walletConnectUri) {\n cancelConnection();\n }\n }\n onOpenChange(isOpen);\n };\n\n const walletLinkOpen = (walletName: string) => {\n const installUrl = getInstallUrl(walletName);\n if (installUrl) {\n window.open(installUrl, '_blank');\n }\n }\n\n return (\n <Dialog open={open} onOpenChange={handleOpenChange} >\n <DialogContent\n showCloseButton={false}\n className={clsx(styles.dialogContent, CN_Modal)}\n theme={theme}\n >\n {/* Header */}\n <div className={styles.dialogHeader}>\n {isWalletConnectFlow ? (\n <button\n onClick={handleBackFromWalletConnect}\n className={styles.iconButton}\n >\n <ChevronLeft />\n </button>\n ) : null}\n <DialogTitle className={styles.dialogTitle}>\n {isWalletConnectFlow ? 'WalletConnect' : 'Connect your wallet'}\n </DialogTitle>\n <DialogClose className={styles.iconButton}>\n <X />\n </DialogClose>\n </div>\n\n {/* WalletConnect QR Code Display */}\n {isWalletConnectFlow && (\n <div className={styles.walletsContainer}>\n <div className={styles.tooltipBubble}>\n <span>Use a WalletConnect</span>\n <div className={styles.tooltipIconWrapper}>\n <SiWalletconnect className={styles.tooltipIcon} />\n <div className={styles.tooltipCaret} />\n </div>\n <span>supported wallet to scan</span>\n </div>\n\n {/* QR Code */}\n <div className={styles.qrWrapper}>\n <CustomQRCode\n value={walletConnectUri ?? ''}\n size={280}\n ecl=\"M\"\n loading={!walletConnectUri}\n scanning={!!walletConnectUri}\n />\n </div>\n\n {/* Copy URI button */}\n <Button\n variant=\"outline\"\n onClick={handleCopyUri}\n disabled={!walletConnectUri}\n className={styles.copyButton}\n data-theme={theme}\n >\n {copied ? (\n <>\n <Check className={`${styles.icon} ${styles.successIcon}`} />\n Copy to Clipboard\n </>\n ) : (\n <>\n <Copy className={styles.icon} />\n Copy to Clipboard\n </>\n )}\n </Button>\n\n </div>\n )}\n\n {!isWalletConnectFlow && (\n <div className={styles.walletsContainer}>\n {/* 1. Loading State (Detecting Wallets) */}\n {!isClient && (\n <div className={styles.detectingWallets}>\n <Spinner />\n <p >Detecting wallets...</p>\n </div>\n )}\n\n {/* 2. Empty State (No Wallets Detected) */}\n {connectors.length === 0 && (\n <div className={styles.emptyStateContainer}>\n <Wallet className={styles.emptyStateIcon} />\n\n <h3 className={styles.emptyStateTitle}>No Wallets Detected</h3>\n\n <p className={styles.emptyStateDesc}>\n Install a Solana wallet extension to get started\n </p>\n\n <div className={styles.emptyStateActions}>\n <Button\n variant=\"outline\"\n data-theme={theme}\n onClick={() => walletLinkOpen('Phantom')}\n >\n Get Phantom\n </Button>\n <Button\n data-theme={theme}\n variant=\"outline\"\n onClick={() => walletLinkOpen('Backpack')}\n >\n Get Backpack\n </Button>\n </div>\n\n\n </div>\n )}\n\n <div className={styles.allWallets}>\n {primaryWallets.map((connector) => (\n <WalletButton\n key={connector.id}\n theme={theme}\n connector={connector}\n isThisConnecting={isConnecting && connectingConnectorId === connector.id}\n hasError={errorConnectorId === connector.id}\n isRecent={recentlyConnectedConnectorId === connector.id}\n\n onSelect={() => handleSelectWallet(connector)}\n getInstallUrl={getInstallUrl}\n />\n ))}\n </div>\n\n {otherWallets.length > 0 && (\n <>\n {primayOuterHr && <div className={styles.seprator} />}\n <Collapsible\n open={isOtherWalletsOpen}\n onOpenChange={setIsOtherWalletsOpen}\n className={styles.Collapsible}\n >\n <CollapsibleTrigger className={styles.hiddenExpand}>\n <span className={styles.textContainer}>Other Wallets</span>\n <HiddenWalletIcons wallets={otherWallets} className=\"shrink-0\" />\n </CollapsibleTrigger>\n <CollapsibleContent className={styles.allWallets}>\n {otherWallets.map((connector) => (\n <WalletButton\n key={connector.id}\n theme={theme}\n connector={connector}\n isThisConnecting={isConnecting && connectingConnectorId === connector.id}\n hasError={errorConnectorId === connector.id}\n isRecent={recentlyConnectedConnectorId === connector.id}\n onSelect={() => handleSelectWallet(connector)}\n getInstallUrl={getInstallUrl}\n />\n ))}\n </CollapsibleContent>\n </Collapsible>\n </>\n )}\n\n {notReadyConnectors.length > 0 && (\n <>\n {(primaryWallets.length > 0 || otherWallets.length > 0) && (\n <div className={styles.seprator} />\n )}\n\n <div className=\"space-y-2\">\n <h3 className={styles.sectionHeader}>\n {readyConnectors.length > 0 ? 'Unavailable Wallets' : 'Wallets'}\n </h3>\n\n <div className={styles.grid}>\n {notReadyConnectors.slice(0, 3).map((connector) => {\n const installUrl = getInstallUrl(connector.name);\n\n return (\n <div key={connector.id} className={styles.unavailableRow}>\n {/* Left: Icon & Text */}\n <div className={styles.walletInfo}>\n <Avatar\n width={40}\n height={40}\n src={connector.icon}\n alt={connector.name}\n theme={theme}\n />\n <div className=\"text-left\">\n <div className={styles.walletName}>\n {connector.name}\n </div>\n <div className={styles.unavailableLabel}>\n Not available\n </div>\n </div>\n </div>\n\n {/* Right: Install Button */}\n {installUrl && (\n <Button\n data-theme={theme}\n variant=\"ghost\"\n size=\"sm\"\n className={styles.installButton}\n onClick={() => window.open(installUrl, '_blank')}\n >\n <ExternalLink />\n </Button>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </>\n )}\n\n\n </div>\n )}\n\n </DialogContent>\n </Dialog >\n )\n\n}\n\nexport default WalletModal\n\n\ninterface WalletItemProps {\n connector: WalletConnectorMetadata;\n isThisConnecting: boolean;\n\n hasError?: boolean;\n isRecent?: boolean;\n theme?: 'light' | 'dark';\n onSelect: () => void;\n getInstallUrl: (walletName: string, walletUrl?: string) => string | undefined;\n}\nfunction WalletButton(props: WalletItemProps) {\n const { connector, isThisConnecting, hasError, isRecent, theme, onSelect, getInstallUrl } = props;\n\n const handleSelectWallet = () => {\n onSelect();\n }\n return (\n <Button\n key={connector.id}\n variant=\"outline\"\n data-error={hasError}\n data-theme={theme}\n className={styles.walletButton}\n onClick={handleSelectWallet}\n disabled={isThisConnecting}\n\n >\n {/* Left Side: Text Info */}\n <div className={styles.textContainer}>\n <div className={styles.nameRow}>\n <span>{connector.name}</span>\n {isRecent && <span className={styles.recentBadge}>Recent</span>}\n </div>\n\n {/* Status Text */}\n {isThisConnecting && (\n <div className={styles.statusText}>Connecting...</div>\n )}\n {hasError && !isThisConnecting && (\n <div className={styles.statusText} data-type=\"error\">\n Click to retry\n </div>\n )}\n </div>\n\n <div className={styles.iconContainer}>\n {isThisConnecting && <Spinner />}\n <Avatar\n width={40}\n height={40}\n src={connector.icon}\n alt={connector.name}\n theme={theme}\n />\n </div>\n\n </Button>\n )\n}\n\ninterface WalletIconSource {\n id: string;\n name: string;\n icon?: string | null;\n}\ninterface HiddenWalletIconsProps {\n wallets: WalletIconSource[];\n maxIcons?: number;\n className?: string;\n}\nexport function HiddenWalletIcons({ wallets, maxIcons = 4, className }: HiddenWalletIconsProps) {\n const previewWallets = wallets.slice(0, maxIcons);\n const placeholderCount = Math.max(0, maxIcons - previewWallets.length);\n\n return (\n <div\n className={`${styles.hiddenWalletGrid} ${className || ''}`}\n aria-hidden=\"true\"\n >\n {/* Render Actual Wallets */}\n {previewWallets.map(wallet => (\n <div\n key={wallet.id}\n className={styles.hiddenWalletIconWrapper}\n >\n {wallet.icon && (\n <img\n height={10}\n width={10}\n src={wallet.icon}\n alt={wallet.name}\n draggable={false}\n onError={(e: any) => {\n e.currentTarget.style.display = 'none';\n }}\n />\n )}\n </div>\n ))}\n\n {Array.from({ length: placeholderCount }).map((_, index) => (\n <div\n key={`placeholder-${index}`}\n className={styles.hiddenWalletIconWrapper}\n />\n ))}\n </div>\n );\n}","'use client';\n\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { X } from 'lucide-react';\nimport styles from './Dialog.module.css';\nimport clsx from 'clsx';\nimport { forwardRef } from 'react';\n\n// 1. Root Components\nconst Dialog = BaseDialog.Root;\nconst DialogTrigger = BaseDialog.Trigger;\nconst DialogPortal = BaseDialog.Portal;\nconst DialogClose = BaseDialog.Close;\n\n// 2. Backdrop\ntype DialogBackdropProps = React.ComponentPropsWithoutRef<typeof BaseDialog.Backdrop>;\nconst DialogBackdrop = forwardRef<HTMLDivElement, DialogBackdropProps>(\n ({ className, ...props }, ref) => (\n <BaseDialog.Backdrop\n ref={ref}\n className={`${styles.backdrop} ${className || ''}`}\n {...props}\n />\n ),\n);\nDialogBackdrop.displayName = 'DialogBackdrop';\n\n// 3. Content (The Modal Box)\ntype DialogContentProps = React.ComponentPropsWithoutRef<typeof BaseDialog.Popup> & {\n showCloseButton?: boolean;\n theme?: 'light' | 'dark';\n};\nconst DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, theme, showCloseButton = true, ...props }, ref) => (\n <DialogPortal>\n <DialogBackdrop data-theme={theme} />\n <BaseDialog.Popup\n ref={ref}\n data-theme={theme}\n className={clsx(styles.content, className)}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogClose className={styles.closeButton}>\n <X />\n </DialogClose>\n )}\n </BaseDialog.Popup>\n </DialogPortal>\n )\n);\nDialogContent.displayName = 'DialogContent';\n\n// 4. Header\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={`${styles.header} ${className || ''}`} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\n\n// 5. Footer\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={`${styles.footer} ${className || ''}`} {...props} />\n);\nDialogFooter.displayName = 'DialogFooter';\n\n// 6. Title\nconst DialogTitle = forwardRef<HTMLHeadingElement, React.ComponentPropsWithoutRef<typeof BaseDialog.Title>>(\n ({ className, ...props }, ref) => (\n <BaseDialog.Title\n ref={ref}\n className={`${styles.title} ${className || ''}`}\n {...props}\n />\n ),\n);\nDialogTitle.displayName = 'DialogTitle';\n\n// 7. Description\nconst DialogDescription = forwardRef<\n HTMLParagraphElement,\n React.ComponentPropsWithoutRef<typeof BaseDialog.Description>\n>(({ className, ...props }, ref) => (\n <BaseDialog.Description\n ref={ref}\n className={`${styles.description} ${className || ''}`}\n {...props}\n />\n));\nDialogDescription.displayName = 'DialogDescription';\n\nexport {\n Dialog,\n DialogPortal,\n DialogBackdrop,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};","'use client';\n\nimport { forwardRef } from 'react';\nimport { Button as BaseButton } from '@base-ui/react/button';\nimport styles from './Button.module.css';\n\n// 1. Define Types\ntype ButtonVariant = 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';\ntype ButtonSize = 'default' | 'sm' | 'lg' | 'icon';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n}\n\n// 2. The Component\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = 'default', size = 'default', ...props }, ref) => {\n return (\n <BaseButton\n ref={ref}\n\n className={`${styles.button} ${className || ''}`}\n data-variant={variant}\n data-size={size}\n\n {...props}\n />\n );\n }\n);\nButton.displayName = 'Button';\n\nexport default Button;","import Button from \"./Button\";\n\nexport default Button;","'use client';\n\nimport { useMemo, type ReactNode, type CSSProperties } from 'react';\nimport QRCodeUtil from 'qrcode';\nimport styles from './CustomQRCode.module.css';\n\n/**\n * Generate QR code matrix from value\n */\nfunction generateMatrix(value: string, errorCorrectionLevel: 'L' | 'M' | 'Q' | 'H') {\n const arr = Array.prototype.slice.call(QRCodeUtil.create(value, { errorCorrectionLevel }).modules.data, 0);\n const sqrt = Math.sqrt(arr.length);\n return arr.reduce(\n (rows: number[][], key: number, index: number) =>\n (index % sqrt === 0 ? rows.push([key]) : rows[rows.length - 1].push(key)) && rows,\n [] as number[][],\n );\n}\n\ninterface CustomQRCodeProps {\n value: string;\n size?: number;\n ecl?: 'L' | 'M' | 'Q' | 'H';\n clearArea?: boolean;\n image?: ReactNode;\n imageBackground?: string;\n dotColor?: string;\n backgroundColor?: string;\n}\n\n/**\n * QR Code SVG renderer\n */\nfunction QRCodeSVG({\n value,\n size: sizeProp = 200,\n ecl = 'M',\n clearArea = false,\n dotColor = 'currentColor',\n backgroundColor = '#ffffff',\n}: CustomQRCodeProps) {\n const logoSize = clearArea ? 76 : 0;\n const size = sizeProp - 10 * 2; // Account for padding\n\n const dots = useMemo(() => {\n const dots: ReactNode[] = [];\n const matrix = generateMatrix(value, ecl);\n const cellSize = size / matrix.length;\n\n // Finder pattern positions (3 corners)\n const qrList = [\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 0, y: 1 },\n ];\n\n // Draw rounded finder patterns\n qrList.forEach(({ x, y }) => {\n const x1 = (matrix.length - 7) * cellSize * x;\n const y1 = (matrix.length - 7) * cellSize * y;\n for (let i = 0; i < 3; i++) {\n dots.push(\n <rect\n key={`finder-${i}-${x}-${y}`}\n fill={i % 2 !== 0 ? backgroundColor : dotColor}\n rx={(i - 2) * -5 + (i === 0 ? 2 : 3)}\n ry={(i - 2) * -5 + (i === 0 ? 2 : 3)}\n width={cellSize * (7 - i * 2)}\n height={cellSize * (7 - i * 2)}\n x={x1 + cellSize * i}\n y={y1 + cellSize * i}\n />,\n );\n }\n });\n\n // Calculate center clear area\n const clearArenaSize = Math.floor((logoSize + 25) / cellSize);\n const matrixMiddleStart = matrix.length / 2 - clearArenaSize / 2;\n const matrixMiddleEnd = matrix.length / 2 + clearArenaSize / 2 - 1;\n\n // Draw circular dots for data modules\n matrix.forEach((row: number[], i: number) => {\n row.forEach((_: number, j: number) => {\n if (matrix[i][j]) {\n // Skip dots under finder patterns\n if (!((i < 7 && j < 7) || (i > matrix.length - 8 && j < 7) || (i < 7 && j > matrix.length - 8))) {\n // Skip center area if clearArea is true\n if (\n !clearArea ||\n !(\n i > matrixMiddleStart &&\n i < matrixMiddleEnd &&\n j > matrixMiddleStart &&\n j < matrixMiddleEnd\n )\n ) {\n dots.push(\n <circle\n key={`dot-${i}-${j}`}\n cx={j * cellSize + cellSize / 2}\n cy={i * cellSize + cellSize / 2}\n fill={dotColor}\n r={cellSize / 3}\n />,\n );\n }\n }\n }\n });\n });\n\n return dots;\n }, [value, ecl, size, clearArea, logoSize, dotColor, backgroundColor]);\n\n return (\n <svg\n height={size}\n width={size}\n viewBox={`0 0 ${size} ${size}`}\n className={styles.svgFull}\n style={{ maxWidth: size, maxHeight: size }}\n >\n <rect fill=\"transparent\" height={size} width={size} />\n {dots}\n </svg>\n );\n}\n\n/**\n * Viewfinder corner brackets SVG\n */\nfunction ViewfinderFrame({\n size,\n color = '#2D2D2D',\n opacity = 0.01,\n}: {\n size: number;\n color?: string;\n opacity?: number;\n}) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 283 283\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={styles.viewfinder}\n >\n <path\n d=\"M3.5 264.06C3.5 272.587 10.4127 279.5 18.9399 279.5H32.8799C33.7083 279.5 34.3799 280.172 34.3799 281V281C34.3799 281.828 33.7083 282.5 32.8799 282.5H17.4399C8.08427 282.5 0.5 274.916 0.5 265.56V250.12C0.5 249.292 1.17157 248.62 2 248.62V248.62C2.82843 248.62 3.5 249.292 3.5 250.12V264.06ZM282.5 266.058C282.5 275.139 275.139 282.5 266.058 282.5H251.116C250.288 282.5 249.616 281.828 249.616 281V281C249.616 280.172 250.288 279.5 251.116 279.5H264.558C272.81 279.5 279.5 272.81 279.5 264.558V250.12C279.5 249.292 280.172 248.62 281 248.62V248.62C281.828 248.62 282.5 249.292 282.5 250.12V266.058ZM34.3799 2C34.3799 2.82843 33.7083 3.5 32.8799 3.5H18.9399C10.4127 3.5 3.5 10.4127 3.5 18.9399V32.8799C3.5 33.7083 2.82843 34.3799 2 34.3799V34.3799C1.17157 34.3799 0.5 33.7083 0.5 32.8799V17.4399C0.5 8.08427 8.08427 0.5 17.4399 0.5H32.8799C33.7083 0.5 34.3799 1.17157 34.3799 2V2ZM282.5 32.8799C282.5 33.7083 281.828 34.3799 281 34.3799V34.3799C280.172 34.3799 279.5 33.7083 279.5 32.8799V18.4419C279.5 10.1897 272.81 3.5 264.558 3.5H251.116C250.288 3.5 249.616 2.82843 249.616 2V2C249.616 1.17157 250.288 0.5 251.116 0.5H266.058C275.139 0.5 282.5 7.86129 282.5 16.9419V32.8799Z\"\n fill={color}\n fillOpacity={opacity}\n />\n </svg>\n );\n}\n\ninterface CustomQRCodeContainerProps extends CustomQRCodeProps {\n image?: ReactNode;\n imageBackground?: string;\n className?: string;\n style?: CSSProperties;\n loading?: boolean;\n scanning?: boolean;\n error?: boolean;\n frameColor?: string;\n}\n\nexport function CustomQRCode({\n value,\n size = 280,\n ecl = 'M',\n clearArea = false,\n image,\n imageBackground = 'transparent',\n dotColor,\n backgroundColor,\n className,\n style,\n loading = false,\n scanning = true,\n error = false,\n frameColor,\n}: CustomQRCodeContainerProps) {\n const showPlaceholder = loading || !value;\n\n const resolvedBackground = backgroundColor || '#ffffff';\n const resolvedDotColor = dotColor || '#000000';\n const resolvedFrameColor = error ? '#FF0000' : frameColor || '#2D2D2D';\n const frameOpacity = error ? 0.56 : 0.01;\n\n return (\n <div\n className={`${styles.container} ${className || ''}`}\n style={{\n width: size,\n height: size,\n ...style,\n }}\n >\n {/* Viewfinder corner brackets */}\n <ViewfinderFrame size={size} color={resolvedFrameColor} opacity={frameOpacity} />\n\n {/* QR Content Area */}\n <div\n className={styles.contentArea}\n style={{ background: resolvedBackground }}\n data-error={error}\n >\n {/* Gradient glow background */}\n <div className={styles.glow} data-error={error} />\n\n {/* Shine scanning effect */}\n {scanning && !showPlaceholder && !error && (\n <div className={styles.shine} />\n )}\n\n {/* QR Code or placeholder */}\n <div className={styles.qrWrapper}>\n {showPlaceholder ? (\n <QRPlaceholder size={size} dotColor={resolvedDotColor} backgroundColor={resolvedBackground} />\n ) : (\n <>\n <QRCodeSVG\n value={value}\n size={size - 40}\n ecl={ecl}\n clearArea={clearArea || !!image}\n dotColor={resolvedDotColor}\n backgroundColor={resolvedBackground}\n />\n {image && (\n <div\n className={styles.logoWrapper}\n style={{\n width: '28%',\n height: '28%',\n background: imageBackground || resolvedBackground,\n }}\n >\n {image}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction QRPlaceholder({\n size,\n dotColor,\n backgroundColor,\n}: {\n size: number;\n dotColor: string;\n backgroundColor: string;\n}) {\n return (\n <div className={styles.placeholderContainer} style={{ width: size - 40, height: size - 40 }}>\n {/* Dot pattern background */}\n <div\n className={styles.placeholderPattern}\n style={{\n backgroundImage: `radial-gradient(${dotColor} 41%, transparent 41%)`,\n }}\n />\n\n {/* Corner finder pattern placeholders */}\n {[\n { top: 0, left: 0 },\n { top: 0, right: 0 },\n { bottom: 0, left: 0 },\n ].map((pos, i) => (\n <span\n key={i}\n className={styles.cornerSquare}\n style={{\n ...pos,\n background: dotColor,\n }}\n />\n ))}\n\n {/* Center area */}\n <div\n className={styles.centerArea}\n style={{\n background: backgroundColor,\n boxShadow: `0 0 0 7px ${backgroundColor}`,\n }}\n />\n\n {/* Loading spinner */}\n <div className={styles.loaderWrapper}>\n <div\n className={styles.spinner}\n style={{ color: `${dotColor}40` }}\n />\n <span className={styles.loadingText} style={{ color: `${dotColor}70` }}>\n Generating QR code...\n </span>\n </div>\n </div>\n );\n}\n\nCustomQRCode.displayName = 'CustomQRCode';","import { CustomQRCode } from \"./CustomQRCode\";\n\nexport default CustomQRCode;","import classes from './Spinner.module.css'\nconst Spinner = () => {\n return (\n <div className={classes.spinner} />\n )\n}\n\nexport default Spinner","import Spinner from \"./Spinner\";\nexport default Spinner;","'use client';\n\nimport { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible';\nimport styles from './Collapsible.module.css';\nimport { forwardRef } from 'react';\n\nconst Collapsible = BaseCollapsible.Root;\nconst CollapsibleTrigger = forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<typeof BaseCollapsible.Trigger>\n>(({ className, ...props }, ref) => (\n <BaseCollapsible.Trigger\n ref={ref}\n className={`${styles.trigger} ${className || ''}`}\n {...props}\n />\n));\nCollapsibleTrigger.displayName = 'CollapsibleTrigger';\n\nconst CollapsibleContent = forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof BaseCollapsible.Panel>\n>(({ className, ...props }, ref) => (\n <BaseCollapsible.Panel\n ref={ref}\n className={`${styles.content} ${className || ''}`}\n {...props}\n />\n));\nCollapsibleContent.displayName = 'CollapsibleContent';\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };","import { useState } from 'react';\nimport styles from './Avatar.module.css';\nimport { Wallet } from 'lucide-react';\ninterface AvatarProps {\n height?: number | string;\n width?: number | string;\n src?: string;\n alt?: string;\n theme?: 'light' | 'dark';\n}\nexport function Avatar({\n height,\n width,\n src,\n alt,\n theme = 'light',\n}: AvatarProps) {\n const [hasError, setHasError] = useState(false);\n return (\n <div className={styles.avatar} data-theme={theme}>\n {src && !hasError ? (\n <img\n height={height}\n width={width}\n src={src}\n alt={alt || \"Avatar\"}\n onError={() => setHasError(true)}\n />\n ) : (\n <div className={styles.fallback} style={{ height, width }}>\n <Wallet />\n </div>\n )}\n </div>\n );\n}\n","import { Avatar } from './Avatar';\n\nexport default Avatar;","import WalletModal from \"./WalletModal\"\nexport default WalletModal;"],"mappings":"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","names":["Wallet","X","useState","styles","forwardRef","styles","jsx","Button_default","styles","jsx","jsxs","dots","jsx","Spinner_default","styles","forwardRef","jsx","styles","jsx","clsx","Fragment","jsx","jsxs","useState","styles","X","Button_default","Spinner_default","Wallet","WalletModal_default"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/WalletModal/WalletModal.tsx","../src/components/shared/Dialog/Dialog.tsx","../src/components/shared/Button/Button.tsx","../src/components/shared/Button/index.ts","../src/components/shared/CustomQRCode/CustomQRCode.tsx","../src/components/shared/Spinner/Spinner.tsx","../src/components/shared/Spinner/index.ts","../src/components/shared/CustomQRCode/index.ts","../src/components/shared/Collapsible/Collapsible.tsx","../src/components/shared/Avatar/Avatar.tsx","../src/components/shared/Avatar/index.ts","../src/components/WalletModal/index.ts"],"sourcesContent":["import { useConnector, WalletConnectorId, WalletConnectorMetadata } from \"@solana/connector\";\nimport { Check, ChevronLeft, Copy, ExternalLink, Wallet, X } from \"lucide-react\";\nimport { useEffect, useState, useSyncExternalStore } from \"react\";\nimport styles from './WalletModal.module.css';\nimport { Dialog, DialogClose, DialogContent, DialogTitle } from \"@shared/Dialog\";\nimport Button from \"@shared/Button\";\nimport CustomQRCode from \"@shared//CustomQRCode\";\nimport Spinner from \"@shared/Spinner\";\nimport { SiWalletconnect } from \"react-icons/si\";\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"@shared/Collapsible\";\nimport Avatar from \"@shared/Avatar\";\nimport { clsx } from \"clsx\";\n\n/**\n * Props for the WalletModal component.\n * This modal acts as the primary interface for users to select a wallet \n * or scan a QR code for mobile connection.\n */\ntype WalletModalProps = {\n /** * Custom CSS class for the modal overlay and container. \n * If not provided, the component uses the kit's default modal styling.\n */\n CN_Modal?: string;\n\n /** * The visual theme for the modal content. \n * @default 'light'\n */\n theme?: 'light' | 'dark';\n\n /** Controlled state: whether the modal is currently visible. */\n open: boolean;\n\n /** Callback function to handle opening and closing the modal. */\n onOpenChange: (open: boolean) => void;\n}\n\nexport function WalletModal(props: WalletModalProps) {\n const {\n CN_Modal,\n theme = 'light',\n open,\n onOpenChange,\n } = props;\n\n const { walletConnectUri, clearWalletConnectUri, walletStatus: { status }, isConnecting, connectorId, connectors, connectWallet, disconnectWallet } = useConnector();\n\n const [connectingConnectorId, setConnectingConnectorId] = useState<WalletConnectorId | null>(null);\n const [isOtherWalletsOpen, setIsOtherWalletsOpen] = useState(false);\n const [errorConnectorId, setErrorConnectorId] = useState<WalletConnectorId | null>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const [copied, setCopied] = useState(false);\n\n const isClient = useSyncExternalStore(\n () => () => { },\n () => true,\n () => false,\n );\n\n const recentlyConnectedConnectorId = useSyncExternalStore(\n () => () => { },\n () => localStorage.getItem('recentlyConnectedConnectorId') as WalletConnectorId | null,\n () => null\n );\n\n useEffect(() => {\n if (status === 'connected' && connectorId) {\n localStorage.setItem('recentlyConnectedConnectorId', connectorId);\n }\n }, [status, connectorId]);\n\n const walletConnectConnector = connectors.find(c => c.name === 'WalletConnect') ?? null;\n const isWalletConnectFlow =\n (!!walletConnectConnector &&\n (connectingConnectorId === walletConnectConnector.id ||\n (status === 'connecting' && connectorId === walletConnectConnector.id))) ||\n !!walletConnectUri;\n\n function cancelConnection() {\n clearWalletConnectUri?.();\n setConnectingConnectorId(null);\n disconnectWallet().catch(() => { });\n }\n\n // Clear error state when modal closes or user tries another wallet\n const clearError = () => {\n setErrorConnectorId(null);\n setErrorMessage(null);\n };\n\n const handleSelectWallet = async (connector: WalletConnectorMetadata) => {\n clearError();\n setConnectingConnectorId(connector.id);\n try {\n if (connector.name === 'WalletConnect') {\n clearWalletConnectUri?.();\n }\n await connectWallet(connector.id);\n localStorage.setItem('recentlyConnectedConnectorId', connector.id);\n // Don't close modal for WalletConnect - wait for connection\n if (connector.name !== 'WalletConnect') {\n onOpenChange(false);\n }\n } catch (error) {\n // Extract user-friendly error message\n const message = error instanceof Error ? error.message : 'An unexpected error occurred';\n if (message.includes('Connection cancelled')) return;\n\n // Set error state for UI feedback\n setErrorConnectorId(connector.id);\n setErrorMessage(message);\n\n // Log for telemetry/debugging (includes full error details)\n console.error('Failed to connect wallet:', {\n wallet: connector.name,\n connectorId: connector.id,\n error,\n message,\n timestamp: new Date().toISOString(),\n });\n } finally {\n setConnectingConnectorId(null);\n }\n };\n\n const handleCopyUri = async () => {\n if (!walletConnectUri) return;\n try {\n await navigator.clipboard.writeText(walletConnectUri);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error('Failed to copy URI:', err);\n }\n };\n\n const handleBackFromWalletConnect = () => {\n cancelConnection();\n };\n\n const readyConnectors = connectors.filter(c => c.ready);\n const notReadyConnectors = connectors.filter(c => !c.ready);\n\n const sortedReadyConnectors = [...readyConnectors].sort((a, b) => {\n const aIsRecent = recentlyConnectedConnectorId === a.id;\n const bIsRecent = recentlyConnectedConnectorId === b.id;\n if (aIsRecent && !bIsRecent) return -1;\n if (!aIsRecent && bIsRecent) return 1;\n return 0;\n });\n\n const primaryWallets = sortedReadyConnectors.slice(0, 3);\n const otherWallets = sortedReadyConnectors.slice(3);\n\n const primayOuterHr = otherWallets.length > 0 && primaryWallets.length > 0;\n\n const getInstallUrl = (walletName: string, walletUrl?: string): string | undefined => {\n if (walletUrl) return walletUrl;\n\n const name = walletName.toLowerCase();\n if (name.includes('phantom')) return 'https://phantom.app';\n if (name.includes('solflare')) return 'https://solflare.com';\n if (name.includes('backpack')) return 'https://backpack.app';\n if (name.includes('glow')) return 'https://glow.app';\n if (name.includes('coinbase')) return 'https://www.coinbase.com/wallet';\n if (name.includes('ledger')) return 'https://www.ledger.com';\n if (name.includes('trust')) return 'https://trustwallet.com';\n if (name.includes('exodus')) return 'https://www.exodus.com';\n return undefined;\n };\n\n const handleOpenChange = (isOpen: boolean) => {\n if (!isOpen) {\n clearError();\n if (isConnecting || connectingConnectorId || walletConnectUri) {\n cancelConnection();\n }\n }\n onOpenChange(isOpen);\n };\n\n const walletLinkOpen = (walletName: string) => {\n const installUrl = getInstallUrl(walletName);\n if (installUrl) {\n window.open(installUrl, '_blank');\n }\n }\n\n return (\n <Dialog open={open} onOpenChange={handleOpenChange} >\n <DialogContent\n showCloseButton={false}\n className={clsx(styles.dialogContent, CN_Modal)}\n theme={theme}\n >\n {/* Header */}\n <div className={styles.dialogHeader}>\n {isWalletConnectFlow ? (\n <button\n onClick={handleBackFromWalletConnect}\n className={styles.iconButton}\n >\n <ChevronLeft />\n </button>\n ) : null}\n <DialogTitle className={styles.dialogTitle}>\n {isWalletConnectFlow ? 'WalletConnect' : 'Connect your wallet'}\n </DialogTitle>\n <DialogClose className={styles.iconButton}>\n <X />\n </DialogClose>\n </div>\n\n {/* WalletConnect QR Code Display */}\n {isWalletConnectFlow && (\n <div className={styles.walletsContainer}>\n <div className={styles.tooltipBubble}>\n <span>Use a WalletConnect</span>\n <div className={styles.tooltipIconWrapper}>\n <SiWalletconnect className={styles.tooltipIcon} />\n <div className={styles.tooltipCaret} />\n </div>\n <span>supported wallet to scan</span>\n </div>\n\n {/* QR Code */}\n <div className={styles.qrWrapper}>\n <CustomQRCode\n value={walletConnectUri ?? ''}\n size={280}\n ecl=\"M\"\n loading={!walletConnectUri}\n scanning={!!walletConnectUri}\n />\n </div>\n\n {/* Copy URI button */}\n <Button\n variant=\"outline\"\n onClick={handleCopyUri}\n disabled={!walletConnectUri}\n className={styles.copyButton}\n data-theme={theme}\n >\n {copied ? (\n <>\n <Check className={`${styles.icon} ${styles.successIcon}`} />\n Copy to Clipboard\n </>\n ) : (\n <>\n <Copy className={styles.icon} />\n Copy to Clipboard\n </>\n )}\n </Button>\n\n </div>\n )}\n\n {!isWalletConnectFlow && (\n <div className={styles.walletsContainer}>\n {/* 1. Loading State (Detecting Wallets) */}\n {!isClient && (\n <div className={styles.detectingWallets}>\n <Spinner />\n <p >Detecting wallets...</p>\n </div>\n )}\n\n {/* 2. Empty State (No Wallets Detected) */}\n {connectors.length === 0 && (\n <div className={styles.emptyStateContainer}>\n <Wallet className={styles.emptyStateIcon} />\n\n <h3 className={styles.emptyStateTitle}>No Wallets Detected</h3>\n\n <p className={styles.emptyStateDesc}>\n Install a Solana wallet extension to get started\n </p>\n\n <div className={styles.emptyStateActions}>\n <Button\n variant=\"outline\"\n data-theme={theme}\n onClick={() => walletLinkOpen('Phantom')}\n >\n Get Phantom\n </Button>\n <Button\n data-theme={theme}\n variant=\"outline\"\n onClick={() => walletLinkOpen('Backpack')}\n >\n Get Backpack\n </Button>\n </div>\n\n\n </div>\n )}\n\n <div className={styles.allWallets}>\n {primaryWallets.map((connector) => (\n <WalletButton\n key={connector.id}\n theme={theme}\n connector={connector}\n isThisConnecting={isConnecting && connectingConnectorId === connector.id}\n hasError={errorConnectorId === connector.id}\n isRecent={recentlyConnectedConnectorId === connector.id}\n\n onSelect={() => handleSelectWallet(connector)}\n getInstallUrl={getInstallUrl}\n />\n ))}\n </div>\n\n {otherWallets.length > 0 && (\n <>\n {primayOuterHr && <div className={styles.seprator} />}\n <Collapsible\n open={isOtherWalletsOpen}\n onOpenChange={setIsOtherWalletsOpen}\n className={styles.Collapsible}\n >\n <CollapsibleTrigger className={styles.hiddenExpand}>\n <span className={styles.textContainer}>Other Wallets</span>\n <HiddenWalletIcons wallets={otherWallets} className=\"shrink-0\" />\n </CollapsibleTrigger>\n <CollapsibleContent className={styles.allWallets}>\n {otherWallets.map((connector) => (\n <WalletButton\n key={connector.id}\n theme={theme}\n connector={connector}\n isThisConnecting={isConnecting && connectingConnectorId === connector.id}\n hasError={errorConnectorId === connector.id}\n isRecent={recentlyConnectedConnectorId === connector.id}\n onSelect={() => handleSelectWallet(connector)}\n getInstallUrl={getInstallUrl}\n />\n ))}\n </CollapsibleContent>\n </Collapsible>\n </>\n )}\n\n {notReadyConnectors.length > 0 && (\n <>\n {(primaryWallets.length > 0 || otherWallets.length > 0) && (\n <div className={styles.seprator} />\n )}\n\n <div className=\"space-y-2\">\n <h3 className={styles.sectionHeader}>\n {readyConnectors.length > 0 ? 'Unavailable Wallets' : 'Wallets'}\n </h3>\n\n <div className={styles.grid}>\n {notReadyConnectors.slice(0, 3).map((connector) => {\n const installUrl = getInstallUrl(connector.name);\n\n return (\n <div key={connector.id} className={styles.unavailableRow}>\n {/* Left: Icon & Text */}\n <div className={styles.walletInfo}>\n <Avatar\n width={40}\n height={40}\n src={connector.icon}\n alt={connector.name}\n theme={theme}\n />\n <div className=\"text-left\">\n <div className={styles.walletName}>\n {connector.name}\n </div>\n <div className={styles.unavailableLabel}>\n Not available\n </div>\n </div>\n </div>\n\n {/* Right: Install Button */}\n {installUrl && (\n <Button\n data-theme={theme}\n variant=\"ghost\"\n size=\"sm\"\n className={styles.installButton}\n onClick={() => window.open(installUrl, '_blank')}\n >\n <ExternalLink />\n </Button>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </>\n )}\n\n\n </div>\n )}\n\n </DialogContent>\n </Dialog >\n )\n\n}\n\nexport default WalletModal\n\n\ninterface WalletItemProps {\n connector: WalletConnectorMetadata;\n isThisConnecting: boolean;\n\n hasError?: boolean;\n isRecent?: boolean;\n theme?: 'light' | 'dark';\n onSelect: () => void;\n getInstallUrl: (walletName: string, walletUrl?: string) => string | undefined;\n}\nfunction WalletButton(props: WalletItemProps) {\n const { connector, isThisConnecting, hasError, isRecent, theme, onSelect, getInstallUrl } = props;\n\n const handleSelectWallet = () => {\n onSelect();\n }\n return (\n <Button\n key={connector.id}\n variant=\"outline\"\n data-error={hasError}\n data-theme={theme}\n className={styles.walletButton}\n onClick={handleSelectWallet}\n disabled={isThisConnecting}\n\n >\n {/* Left Side: Text Info */}\n <div className={styles.textContainer}>\n <div className={styles.nameRow}>\n <span>{connector.name}</span>\n {isRecent && <span className={styles.recentBadge}>Recent</span>}\n </div>\n\n {/* Status Text */}\n {isThisConnecting && (\n <div className={styles.statusText}>Connecting...</div>\n )}\n {hasError && !isThisConnecting && (\n <div className={styles.statusText} data-type=\"error\">\n Click to retry\n </div>\n )}\n </div>\n\n <div className={styles.iconContainer}>\n {isThisConnecting && <Spinner />}\n <Avatar\n width={40}\n height={40}\n src={connector.icon}\n alt={connector.name}\n theme={theme}\n />\n </div>\n\n </Button>\n )\n}\n\ninterface WalletIconSource {\n id: string;\n name: string;\n icon?: string | null;\n}\ninterface HiddenWalletIconsProps {\n wallets: WalletIconSource[];\n maxIcons?: number;\n className?: string;\n}\nexport function HiddenWalletIcons({ wallets, maxIcons = 4, className }: HiddenWalletIconsProps) {\n const previewWallets = wallets.slice(0, maxIcons);\n const placeholderCount = Math.max(0, maxIcons - previewWallets.length);\n\n return (\n <div\n className={`${styles.hiddenWalletGrid} ${className || ''}`}\n aria-hidden=\"true\"\n >\n {/* Render Actual Wallets */}\n {previewWallets.map(wallet => (\n <div\n key={wallet.id}\n className={styles.hiddenWalletIconWrapper}\n >\n {wallet.icon && (\n <img\n height={10}\n width={10}\n src={wallet.icon}\n alt={wallet.name}\n draggable={false}\n onError={(e: any) => {\n e.currentTarget.style.display = 'none';\n }}\n />\n )}\n </div>\n ))}\n\n {Array.from({ length: placeholderCount }).map((_, index) => (\n <div\n key={`placeholder-${index}`}\n className={styles.hiddenWalletIconWrapper}\n />\n ))}\n </div>\n );\n}","'use client';\n\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { X } from 'lucide-react';\nimport styles from './Dialog.module.css';\nimport clsx from 'clsx';\nimport { forwardRef } from 'react';\n\n// 1. Root Components\nconst Dialog = BaseDialog.Root;\nconst DialogTrigger = BaseDialog.Trigger;\nconst DialogPortal = BaseDialog.Portal;\nconst DialogClose = BaseDialog.Close;\n\n// 2. Backdrop\ntype DialogBackdropProps = React.ComponentPropsWithoutRef<typeof BaseDialog.Backdrop>;\nconst DialogBackdrop = forwardRef<HTMLDivElement, DialogBackdropProps>(\n ({ className, ...props }, ref) => (\n <BaseDialog.Backdrop\n ref={ref}\n className={`${styles.backdrop} ${className || ''}`}\n {...props}\n />\n ),\n);\nDialogBackdrop.displayName = 'DialogBackdrop';\n\n// 3. Content (The Modal Box)\ntype DialogContentProps = React.ComponentPropsWithoutRef<typeof BaseDialog.Popup> & {\n showCloseButton?: boolean;\n theme?: 'light' | 'dark';\n};\nconst DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, theme, showCloseButton = true, ...props }, ref) => (\n <DialogPortal>\n <DialogBackdrop data-theme={theme} />\n <BaseDialog.Popup\n ref={ref}\n data-theme={theme}\n className={clsx(styles.content, className)}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogClose className={styles.closeButton}>\n <X />\n </DialogClose>\n )}\n </BaseDialog.Popup>\n </DialogPortal>\n )\n);\nDialogContent.displayName = 'DialogContent';\n\n// 4. Header\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={`${styles.header} ${className || ''}`} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\n\n// 5. Footer\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={`${styles.footer} ${className || ''}`} {...props} />\n);\nDialogFooter.displayName = 'DialogFooter';\n\n// 6. Title\nconst DialogTitle = forwardRef<HTMLHeadingElement, React.ComponentPropsWithoutRef<typeof BaseDialog.Title>>(\n ({ className, ...props }, ref) => (\n <BaseDialog.Title\n ref={ref}\n className={`${styles.title} ${className || ''}`}\n {...props}\n />\n ),\n);\nDialogTitle.displayName = 'DialogTitle';\n\n// 7. Description\nconst DialogDescription = forwardRef<\n HTMLParagraphElement,\n React.ComponentPropsWithoutRef<typeof BaseDialog.Description>\n>(({ className, ...props }, ref) => (\n <BaseDialog.Description\n ref={ref}\n className={`${styles.description} ${className || ''}`}\n {...props}\n />\n));\nDialogDescription.displayName = 'DialogDescription';\n\nexport {\n Dialog,\n DialogPortal,\n DialogBackdrop,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};","'use client';\n\nimport { forwardRef } from 'react';\nimport { Button as BaseButton } from '@base-ui/react/button';\nimport styles from './Button.module.css';\n\n// 1. Define Types\ntype ButtonVariant = 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';\ntype ButtonSize = 'default' | 'sm' | 'lg' | 'icon';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n}\n\n// 2. The Component\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = 'default', size = 'default', ...props }, ref) => {\n return (\n <BaseButton\n ref={ref}\n\n className={`${styles.button} ${className || ''}`}\n data-variant={variant}\n data-size={size}\n\n {...props}\n />\n );\n }\n);\nButton.displayName = 'Button';\n\nexport default Button;","import Button from \"./Button\";\n\nexport default Button;","'use client';\n\nimport { useMemo, type ReactNode, type CSSProperties } from 'react';\nimport QRCodeUtil from 'qrcode';\nimport styles from './CustomQRCode.module.css';\nimport Spinner from '@shared/Spinner';\n\n/**\n * Generate QR code matrix from value\n */\nfunction generateMatrix(value: string, errorCorrectionLevel: 'L' | 'M' | 'Q' | 'H') {\n const arr = Array.prototype.slice.call(QRCodeUtil.create(value, { errorCorrectionLevel }).modules.data, 0);\n const sqrt = Math.sqrt(arr.length);\n return arr.reduce(\n (rows: number[][], key: number, index: number) =>\n (index % sqrt === 0 ? rows.push([key]) : rows[rows.length - 1].push(key)) && rows,\n [] as number[][],\n );\n}\n\ninterface CustomQRCodeProps {\n value: string;\n size?: number;\n ecl?: 'L' | 'M' | 'Q' | 'H';\n clearArea?: boolean;\n image?: ReactNode;\n imageBackground?: string;\n dotColor?: string;\n backgroundColor?: string;\n}\n\n/**\n * QR Code SVG renderer\n */\nfunction QRCodeSVG({\n value,\n size: sizeProp = 200,\n ecl = 'M',\n clearArea = false,\n dotColor = 'currentColor',\n backgroundColor = '#ffffff',\n}: CustomQRCodeProps) {\n const logoSize = clearArea ? 76 : 0;\n const size = sizeProp - 10 * 2; // Account for padding\n\n const dots = useMemo(() => {\n const dots: ReactNode[] = [];\n const matrix = generateMatrix(value, ecl);\n const cellSize = size / matrix.length;\n\n // Finder pattern positions (3 corners)\n const qrList = [\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 0, y: 1 },\n ];\n\n // Draw rounded finder patterns\n qrList.forEach(({ x, y }) => {\n const x1 = (matrix.length - 7) * cellSize * x;\n const y1 = (matrix.length - 7) * cellSize * y;\n for (let i = 0; i < 3; i++) {\n dots.push(\n <rect\n key={`finder-${i}-${x}-${y}`}\n fill={i % 2 !== 0 ? backgroundColor : dotColor}\n rx={(i - 2) * -5 + (i === 0 ? 2 : 3)}\n ry={(i - 2) * -5 + (i === 0 ? 2 : 3)}\n width={cellSize * (7 - i * 2)}\n height={cellSize * (7 - i * 2)}\n x={x1 + cellSize * i}\n y={y1 + cellSize * i}\n />,\n );\n }\n });\n\n // Calculate center clear area\n const clearArenaSize = Math.floor((logoSize + 25) / cellSize);\n const matrixMiddleStart = matrix.length / 2 - clearArenaSize / 2;\n const matrixMiddleEnd = matrix.length / 2 + clearArenaSize / 2 - 1;\n\n // Draw circular dots for data modules\n matrix.forEach((row: number[], i: number) => {\n row.forEach((_: number, j: number) => {\n if (matrix[i][j]) {\n // Skip dots under finder patterns\n if (!((i < 7 && j < 7) || (i > matrix.length - 8 && j < 7) || (i < 7 && j > matrix.length - 8))) {\n // Skip center area if clearArea is true\n if (\n !clearArea ||\n !(\n i > matrixMiddleStart &&\n i < matrixMiddleEnd &&\n j > matrixMiddleStart &&\n j < matrixMiddleEnd\n )\n ) {\n dots.push(\n <circle\n key={`dot-${i}-${j}`}\n cx={j * cellSize + cellSize / 2}\n cy={i * cellSize + cellSize / 2}\n fill={dotColor}\n r={cellSize / 3}\n />,\n );\n }\n }\n }\n });\n });\n\n return dots;\n }, [value, ecl, size, clearArea, logoSize, dotColor, backgroundColor]);\n\n return (\n <svg\n height={size}\n width={size}\n viewBox={`0 0 ${size} ${size}`}\n className={styles.svgFull}\n style={{ maxWidth: size, maxHeight: size }}\n >\n <rect fill=\"transparent\" height={size} width={size} />\n {dots}\n </svg>\n );\n}\n\n/**\n * Viewfinder corner brackets SVG\n */\nfunction ViewfinderFrame({\n size,\n color = '#2D2D2D',\n opacity = 0.01,\n}: {\n size: number;\n color?: string;\n opacity?: number;\n}) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 283 283\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={styles.viewfinder}\n >\n <path\n d=\"M3.5 264.06C3.5 272.587 10.4127 279.5 18.9399 279.5H32.8799C33.7083 279.5 34.3799 280.172 34.3799 281V281C34.3799 281.828 33.7083 282.5 32.8799 282.5H17.4399C8.08427 282.5 0.5 274.916 0.5 265.56V250.12C0.5 249.292 1.17157 248.62 2 248.62V248.62C2.82843 248.62 3.5 249.292 3.5 250.12V264.06ZM282.5 266.058C282.5 275.139 275.139 282.5 266.058 282.5H251.116C250.288 282.5 249.616 281.828 249.616 281V281C249.616 280.172 250.288 279.5 251.116 279.5H264.558C272.81 279.5 279.5 272.81 279.5 264.558V250.12C279.5 249.292 280.172 248.62 281 248.62V248.62C281.828 248.62 282.5 249.292 282.5 250.12V266.058ZM34.3799 2C34.3799 2.82843 33.7083 3.5 32.8799 3.5H18.9399C10.4127 3.5 3.5 10.4127 3.5 18.9399V32.8799C3.5 33.7083 2.82843 34.3799 2 34.3799V34.3799C1.17157 34.3799 0.5 33.7083 0.5 32.8799V17.4399C0.5 8.08427 8.08427 0.5 17.4399 0.5H32.8799C33.7083 0.5 34.3799 1.17157 34.3799 2V2ZM282.5 32.8799C282.5 33.7083 281.828 34.3799 281 34.3799V34.3799C280.172 34.3799 279.5 33.7083 279.5 32.8799V18.4419C279.5 10.1897 272.81 3.5 264.558 3.5H251.116C250.288 3.5 249.616 2.82843 249.616 2V2C249.616 1.17157 250.288 0.5 251.116 0.5H266.058C275.139 0.5 282.5 7.86129 282.5 16.9419V32.8799Z\"\n fill={color}\n fillOpacity={opacity}\n />\n </svg>\n );\n}\n\ninterface CustomQRCodeContainerProps extends CustomQRCodeProps {\n image?: ReactNode;\n imageBackground?: string;\n className?: string;\n style?: CSSProperties;\n loading?: boolean;\n scanning?: boolean;\n error?: boolean;\n frameColor?: string;\n}\n\nexport function CustomQRCode({\n value,\n size = 280,\n ecl = 'M',\n clearArea = false,\n image,\n imageBackground = 'transparent',\n dotColor,\n backgroundColor,\n className,\n style,\n loading = false,\n scanning = true,\n error = false,\n frameColor,\n}: CustomQRCodeContainerProps) {\n const showPlaceholder = loading || !value;\n\n const resolvedBackground = backgroundColor || '#ffffff';\n const resolvedDotColor = dotColor || '#000000';\n const resolvedFrameColor = error ? '#FF0000' : frameColor || '#2D2D2D';\n const frameOpacity = error ? 0.56 : 0.01;\n\n return (\n <div\n className={`${styles.container} ${className || ''}`}\n style={{\n width: size,\n height: size,\n ...style,\n }}\n >\n {/* Viewfinder corner brackets */}\n <ViewfinderFrame size={size} color={resolvedFrameColor} opacity={frameOpacity} />\n\n {/* QR Content Area */}\n <div\n className={styles.contentArea}\n style={{ background: resolvedBackground }}\n data-error={error}\n >\n {/* Gradient glow background */}\n <div className={styles.glow} data-error={error} />\n\n {/* Shine scanning effect */}\n {scanning && !showPlaceholder && !error && (\n <div className={styles.shine} />\n )}\n\n {/* QR Code or placeholder */}\n <div className={styles.qrWrapper}>\n {showPlaceholder ? (\n <QRPlaceholder size={size} dotColor={resolvedDotColor} backgroundColor={resolvedBackground} />\n ) : (\n <>\n <QRCodeSVG\n value={value}\n size={size - 40}\n ecl={ecl}\n clearArea={clearArea || !!image}\n dotColor={resolvedDotColor}\n backgroundColor={resolvedBackground}\n />\n {image && (\n <div\n className={styles.logoWrapper}\n style={{\n width: '28%',\n height: '28%',\n background: imageBackground || resolvedBackground,\n }}\n >\n {image}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction QRPlaceholder({\n size,\n dotColor,\n backgroundColor,\n}: {\n size: number;\n dotColor: string;\n backgroundColor: string;\n}) {\n return (\n <div className={styles.placeholderContainer} style={{ width: size - 40, height: size - 40 }}>\n {/* Dot pattern background */}\n <div\n className={styles.placeholderPattern}\n style={{\n backgroundImage: `radial-gradient(${dotColor} 41%, transparent 41%)`,\n }}\n />\n\n {/* Corner finder pattern placeholders */}\n {[\n { top: 0, left: 0 },\n { top: 0, right: 0 },\n { bottom: 0, left: 0 },\n ].map((pos, i) => (\n <span\n key={i}\n className={styles.cornerSquare}\n style={{\n ...pos,\n background: dotColor,\n }}\n />\n ))}\n\n {/* Center area */}\n <div\n className={styles.centerArea}\n style={{\n background: backgroundColor,\n boxShadow: `0 0 0 7px ${backgroundColor}`,\n }}\n />\n\n {/* Loading spinner */}\n <div className={styles.loaderWrapper}>\n <Spinner />\n <span className={styles.loadingText} style={{ color: `${dotColor}70` }}>\n Generating QR code...\n </span>\n </div>\n </div>\n );\n}\n\nCustomQRCode.displayName = 'CustomQRCode';","const Spinner = () => (\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 50 50\"\n style={{ display: 'inline-block', verticalAlign: 'middle' }}\n >\n <circle\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"5\"\n strokeDasharray=\"90, 150\"\n strokeLinecap=\"round\"\n >\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 25 25\"\n to=\"360 25 25\"\n dur=\"0.8s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n </svg>\n);\nexport default Spinner","import Spinner from \"./Spinner\";\nexport default Spinner;","import { CustomQRCode } from \"./CustomQRCode\";\n\nexport default CustomQRCode;","'use client';\n\nimport { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible';\nimport styles from './Collapsible.module.css';\nimport { forwardRef } from 'react';\n\nconst Collapsible = BaseCollapsible.Root;\nconst CollapsibleTrigger = forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<typeof BaseCollapsible.Trigger>\n>(({ className, ...props }, ref) => (\n <BaseCollapsible.Trigger\n ref={ref}\n className={`${styles.trigger} ${className || ''}`}\n {...props}\n />\n));\nCollapsibleTrigger.displayName = 'CollapsibleTrigger';\n\nconst CollapsibleContent = forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof BaseCollapsible.Panel>\n>(({ className, ...props }, ref) => (\n <BaseCollapsible.Panel\n ref={ref}\n className={`${styles.content} ${className || ''}`}\n {...props}\n />\n));\nCollapsibleContent.displayName = 'CollapsibleContent';\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };","import { useState } from 'react';\nimport styles from './Avatar.module.css';\nimport { Wallet } from 'lucide-react';\ninterface AvatarProps {\n height?: number | string;\n width?: number | string;\n src?: string;\n alt?: string;\n theme?: 'light' | 'dark';\n}\nexport function Avatar({\n height,\n width,\n src,\n alt,\n theme = 'light',\n}: AvatarProps) {\n const [hasError, setHasError] = useState(false);\n return (\n <div className={styles.avatar} data-theme={theme}>\n {src && !hasError ? (\n <img\n height={height}\n width={width}\n src={src}\n alt={alt || \"Avatar\"}\n onError={() => setHasError(true)}\n />\n ) : (\n <div className={styles.fallback} style={{ height, width }}>\n <Wallet />\n </div>\n )}\n </div>\n );\n}\n","import { Avatar } from './Avatar';\n\nexport default Avatar;","import WalletModal from \"./WalletModal\"\nexport default WalletModal;"],"mappings":"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","names":["Wallet","X","useState","styles","forwardRef","styles","jsx","Button_default","styles","jsx","Spinner_default","jsx","jsxs","dots","styles","Spinner_default","styles","forwardRef","jsx","styles","jsx","clsx","Fragment","jsx","jsxs","useState","styles","X","Button_default","Spinner_default","Wallet","WalletModal_default"]}
|
package/package.json
CHANGED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
:where(.spinner) {
|
|
2
|
-
display: inline-block;
|
|
3
|
-
width: 1em;
|
|
4
|
-
height: 1em;
|
|
5
|
-
|
|
6
|
-
border: 2px solid currentColor;
|
|
7
|
-
border-top-color: transparent;
|
|
8
|
-
border-radius: 50%;
|
|
9
|
-
animation: spin 0.8s linear infinite;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
@keyframes spin {
|
|
13
|
-
:where(to) {
|
|
14
|
-
transform: rotate(360deg);
|
|
15
|
-
}
|
|
16
|
-
}
|