@pollar/react 0.11.1-rc.3 → 0.11.1
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/README.md +92 -28
- package/dist/index.css +173 -124
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +143 -14
- package/dist/index.d.ts +143 -14
- package/dist/index.js +308 -75
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +306 -78
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/qr.js/lib/ErrorCorrectLevel.js","../../../node_modules/qr.js/lib/mode.js","../../../node_modules/qr.js/lib/8BitByte.js","../../../node_modules/qr.js/lib/RSBlock.js","../../../node_modules/qr.js/lib/BitBuffer.js","../../../node_modules/qr.js/lib/math.js","../../../node_modules/qr.js/lib/Polynomial.js","../../../node_modules/qr.js/lib/util.js","../../../node_modules/qr.js/lib/QRCode.js","../src/constants.ts","../src/components/commons.tsx","../src/components/distribution-rules-modal/DistributionRulesModalTemplate.tsx","../src/components/distribution-rules-modal/DistributionRulesModal.tsx","../src/components/enabled-assets-modal/EnabledAssetsModalTemplate.tsx","../src/components/enabled-assets-modal/EnabledAssetsModal.tsx","../src/components/kyc-modal/KycStatus.tsx","../src/components/kyc-modal/KycModalTemplate.tsx","../src/components/kyc-modal/KycModal.tsx","../src/components/login-modal/EmailCodeInput.tsx","../src/components/login-modal/GithubButton.tsx","../src/components/login-modal/GoogleButton.tsx","../src/components/login-modal/LoginModalTemplate.tsx","../src/components/login-modal/PrivyLoginSubmodal.tsx","../src/components/login-modal/LoginModal.tsx","../src/components/ramp-widget/RouteDisplay.tsx","../src/components/ramp-widget/RampWidgetTemplate.tsx","../src/components/ramp-widget/RampWidget.tsx","../src/lib/qr-code/index.tsx","../src/components/receive-modal/ReceiveModalTemplate.tsx","../src/components/receive-modal/ReceiveModal.tsx","../src/components/AssetSelect.tsx","../src/components/transaction-modal/TxStatusView.tsx","../src/components/send-modal/SendModalTemplate.tsx","../src/components/send-modal/SendModal.tsx","../src/components/swap-modal/SwapModalTemplate.tsx","../src/components/swap-modal/SwapModal.tsx","../src/components/earn-modal/EarnModal.tsx","../src/components/sessions-modal/SessionsModalTemplate.tsx","../src/components/sessions-modal/SessionsModal.tsx","../src/components/transaction-modal/TransactionModalTemplate.tsx","../src/components/transaction-modal/TransactionModal.tsx","../src/components/tx-history-modal/TxHistoryModalTemplate.tsx","../src/components/tx-history-modal/TxHistoryModal.tsx","../src/components/wallet-balance-modal/WalletBalanceModalTemplate.tsx","../src/components/wallet-balance-modal/WalletBalanceModal.tsx","../src/lib/passkey-ceremony.ts","../src/context.tsx","../src/usePollarAdapter.ts","../src/components/wallet-button/WalletButtonTemplate.tsx","../src/components/wallet-button/WalletButton.tsx"],"names":["QRCode","Component","jsxs","jsx","useState","useRef","useEffect","Fragment","useCallback","assetKey","AUTH_ERROR_CODES","useMemo","isInteractiveAuthAdapter","forwardRef","QRCodeSvg","QRCodeImpl","ErrorCorrectLevel","formatAmount","WalletType","IN_FLIGHT_STEPS","PROVIDER_LABELS","PAGE_SIZE","formatBalance","cropAddress","response","startAuthentication","startRegistration","createContext","PollarClient","useContext"],"mappings":"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","file":"index.js","sourcesContent":["module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n","module.exports = {\n\tMODE_NUMBER :\t\t1 << 0,\n\tMODE_ALPHA_NUM : \t1 << 1,\n\tMODE_8BIT_BYTE : \t1 << 2,\n\tMODE_KANJI :\t\t1 << 3\n};\n","var mode = require('./mode');\n\nfunction QR8bitByte(data) {\n\tthis.mode = mode.MODE_8BIT_BYTE;\n\tthis.data = data;\n}\n\nQR8bitByte.prototype = {\n\n\tgetLength : function(buffer) {\n\t\treturn this.data.length;\n\t},\n\t\n\twrite : function(buffer) {\n\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t// not JIS ...\n\t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n\t\t}\n\t}\n};\n\nmodule.exports = QR8bitByte;\n\n","// ErrorCorrectLevel\nvar ECL = require('./ErrorCorrectLevel');\n\nfunction QRRSBlock(totalCount, dataCount) {\n\tthis.totalCount = totalCount;\n\tthis.dataCount = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n\n\t// L\n\t// M\n\t// Q\n\t// H\n\n\t// 1\n\t[1, 26, 19],\n\t[1, 26, 16],\n\t[1, 26, 13],\n\t[1, 26, 9],\n\t\n\t// 2\n\t[1, 44, 34],\n\t[1, 44, 28],\n\t[1, 44, 22],\n\t[1, 44, 16],\n\n\t// 3\n\t[1, 70, 55],\n\t[1, 70, 44],\n\t[2, 35, 17],\n\t[2, 35, 13],\n\n\t// 4\t\t\n\t[1, 100, 80],\n\t[2, 50, 32],\n\t[2, 50, 24],\n\t[4, 25, 9],\n\t\n\t// 5\n\t[1, 134, 108],\n\t[2, 67, 43],\n\t[2, 33, 15, 2, 34, 16],\n\t[2, 33, 11, 2, 34, 12],\n\t\n\t// 6\n\t[2, 86, 68],\n\t[4, 43, 27],\n\t[4, 43, 19],\n\t[4, 43, 15],\n\t\n\t// 7\t\t\n\t[2, 98, 78],\n\t[4, 49, 31],\n\t[2, 32, 14, 4, 33, 15],\n\t[4, 39, 13, 1, 40, 14],\n\t\n\t// 8\n\t[2, 121, 97],\n\t[2, 60, 38, 2, 61, 39],\n\t[4, 40, 18, 2, 41, 19],\n\t[4, 40, 14, 2, 41, 15],\n\t\n\t// 9\n\t[2, 146, 116],\n\t[3, 58, 36, 2, 59, 37],\n\t[4, 36, 16, 4, 37, 17],\n\t[4, 36, 12, 4, 37, 13],\n\t\n\t// 10\t\t\n\t[2, 86, 68, 2, 87, 69],\n\t[4, 69, 43, 1, 70, 44],\n\t[6, 43, 19, 2, 44, 20],\n\t[6, 43, 15, 2, 44, 16],\n\n\t// 11\n\t[4, 101, 81],\n\t[1, 80, 50, 4, 81, 51],\n\t[4, 50, 22, 4, 51, 23],\n\t[3, 36, 12, 8, 37, 13],\n\n\t// 12\n\t[2, 116, 92, 2, 117, 93],\n\t[6, 58, 36, 2, 59, 37],\n\t[4, 46, 20, 6, 47, 21],\n\t[7, 42, 14, 4, 43, 15],\n\n\t// 13\n\t[4, 133, 107],\n\t[8, 59, 37, 1, 60, 38],\n\t[8, 44, 20, 4, 45, 21],\n\t[12, 33, 11, 4, 34, 12],\n\n\t// 14\n\t[3, 145, 115, 1, 146, 116],\n\t[4, 64, 40, 5, 65, 41],\n\t[11, 36, 16, 5, 37, 17],\n\t[11, 36, 12, 5, 37, 13],\n\n\t// 15\n\t[5, 109, 87, 1, 110, 88],\n\t[5, 65, 41, 5, 66, 42],\n\t[5, 54, 24, 7, 55, 25],\n\t[11, 36, 12],\n\n\t// 16\n\t[5, 122, 98, 1, 123, 99],\n\t[7, 73, 45, 3, 74, 46],\n\t[15, 43, 19, 2, 44, 20],\n\t[3, 45, 15, 13, 46, 16],\n\n\t// 17\n\t[1, 135, 107, 5, 136, 108],\n\t[10, 74, 46, 1, 75, 47],\n\t[1, 50, 22, 15, 51, 23],\n\t[2, 42, 14, 17, 43, 15],\n\n\t// 18\n\t[5, 150, 120, 1, 151, 121],\n\t[9, 69, 43, 4, 70, 44],\n\t[17, 50, 22, 1, 51, 23],\n\t[2, 42, 14, 19, 43, 15],\n\n\t// 19\n\t[3, 141, 113, 4, 142, 114],\n\t[3, 70, 44, 11, 71, 45],\n\t[17, 47, 21, 4, 48, 22],\n\t[9, 39, 13, 16, 40, 14],\n\n\t// 20\n\t[3, 135, 107, 5, 136, 108],\n\t[3, 67, 41, 13, 68, 42],\n\t[15, 54, 24, 5, 55, 25],\n\t[15, 43, 15, 10, 44, 16],\n\n\t// 21\n\t[4, 144, 116, 4, 145, 117],\n\t[17, 68, 42],\n\t[17, 50, 22, 6, 51, 23],\n\t[19, 46, 16, 6, 47, 17],\n\n\t// 22\n\t[2, 139, 111, 7, 140, 112],\n\t[17, 74, 46],\n\t[7, 54, 24, 16, 55, 25],\n\t[34, 37, 13],\n\n\t// 23\n\t[4, 151, 121, 5, 152, 122],\n\t[4, 75, 47, 14, 76, 48],\n\t[11, 54, 24, 14, 55, 25],\n\t[16, 45, 15, 14, 46, 16],\n\n\t// 24\n\t[6, 147, 117, 4, 148, 118],\n\t[6, 73, 45, 14, 74, 46],\n\t[11, 54, 24, 16, 55, 25],\n\t[30, 46, 16, 2, 47, 17],\n\n\t// 25\n\t[8, 132, 106, 4, 133, 107],\n\t[8, 75, 47, 13, 76, 48],\n\t[7, 54, 24, 22, 55, 25],\n\t[22, 45, 15, 13, 46, 16],\n\n\t// 26\n\t[10, 142, 114, 2, 143, 115],\n\t[19, 74, 46, 4, 75, 47],\n\t[28, 50, 22, 6, 51, 23],\n\t[33, 46, 16, 4, 47, 17],\n\n\t// 27\n\t[8, 152, 122, 4, 153, 123],\n\t[22, 73, 45, 3, 74, 46],\n\t[8, 53, 23, 26, 54, 24],\n\t[12, 45, 15, 28, 46, 16],\n\n\t// 28\n\t[3, 147, 117, 10, 148, 118],\n\t[3, 73, 45, 23, 74, 46],\n\t[4, 54, 24, 31, 55, 25],\n\t[11, 45, 15, 31, 46, 16],\n\n\t// 29\n\t[7, 146, 116, 7, 147, 117],\n\t[21, 73, 45, 7, 74, 46],\n\t[1, 53, 23, 37, 54, 24],\n\t[19, 45, 15, 26, 46, 16],\n\n\t// 30\n\t[5, 145, 115, 10, 146, 116],\n\t[19, 75, 47, 10, 76, 48],\n\t[15, 54, 24, 25, 55, 25],\n\t[23, 45, 15, 25, 46, 16],\n\n\t// 31\n\t[13, 145, 115, 3, 146, 116],\n\t[2, 74, 46, 29, 75, 47],\n\t[42, 54, 24, 1, 55, 25],\n\t[23, 45, 15, 28, 46, 16],\n\n\t// 32\n\t[17, 145, 115],\n\t[10, 74, 46, 23, 75, 47],\n\t[10, 54, 24, 35, 55, 25],\n\t[19, 45, 15, 35, 46, 16],\n\n\t// 33\n\t[17, 145, 115, 1, 146, 116],\n\t[14, 74, 46, 21, 75, 47],\n\t[29, 54, 24, 19, 55, 25],\n\t[11, 45, 15, 46, 46, 16],\n\n\t// 34\n\t[13, 145, 115, 6, 146, 116],\n\t[14, 74, 46, 23, 75, 47],\n\t[44, 54, 24, 7, 55, 25],\n\t[59, 46, 16, 1, 47, 17],\n\n\t// 35\n\t[12, 151, 121, 7, 152, 122],\n\t[12, 75, 47, 26, 76, 48],\n\t[39, 54, 24, 14, 55, 25],\n\t[22, 45, 15, 41, 46, 16],\n\n\t// 36\n\t[6, 151, 121, 14, 152, 122],\n\t[6, 75, 47, 34, 76, 48],\n\t[46, 54, 24, 10, 55, 25],\n\t[2, 45, 15, 64, 46, 16],\n\n\t// 37\n\t[17, 152, 122, 4, 153, 123],\n\t[29, 74, 46, 14, 75, 47],\n\t[49, 54, 24, 10, 55, 25],\n\t[24, 45, 15, 46, 46, 16],\n\n\t// 38\n\t[4, 152, 122, 18, 153, 123],\n\t[13, 74, 46, 32, 75, 47],\n\t[48, 54, 24, 14, 55, 25],\n\t[42, 45, 15, 32, 46, 16],\n\n\t// 39\n\t[20, 147, 117, 4, 148, 118],\n\t[40, 75, 47, 7, 76, 48],\n\t[43, 54, 24, 22, 55, 25],\n\t[10, 45, 15, 67, 46, 16],\n\n\t// 40\n\t[19, 148, 118, 6, 149, 119],\n\t[18, 75, 47, 31, 76, 48],\n\t[34, 54, 24, 34, 55, 25],\n\t[20, 45, 15, 61, 46, 16]\n];\n\nQRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n\t\n\tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\t\n\tif (rsBlock == undefined) {\n\t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n\t}\n\n\tvar length = rsBlock.length / 3;\n\t\n\tvar list = new Array();\n\t\n\tfor (var i = 0; i < length; i++) {\n\n\t\tvar count = rsBlock[i * 3 + 0];\n\t\tvar totalCount = rsBlock[i * 3 + 1];\n\t\tvar dataCount = rsBlock[i * 3 + 2];\n\n\t\tfor (var j = 0; j < count; j++) {\n\t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n\t\t}\n\t}\n\t\n\treturn list;\n}\n\nQRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n\tswitch(errorCorrectLevel) {\n\tcase ECL.L :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\tcase ECL.M :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\tcase ECL.Q :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\tcase ECL.H :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\tdefault :\n\t\treturn undefined;\n\t}\n}\n\nmodule.exports = QRRSBlock;\n","function QRBitBuffer() {\n\tthis.buffer = new Array();\n\tthis.length = 0;\n}\n\nQRBitBuffer.prototype = {\n\n\tget : function(index) {\n\t\tvar bufIndex = Math.floor(index / 8);\n\t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n","var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n","var math = require('./math');\n\nfunction QRPolynomial(num, shift) {\n\n\tif (num.length == undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] == 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= math.gexp(math.glog(this.get(i) ) + math.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = math.glog(this.get(0) ) - math.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < e.getLength(); i++) {\n\t\t\tnum[i] ^= math.gexp(math.glog(e.get(i) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n","var Mode = require('./mode');\nvar Polynomial = require('./Polynomial');\nvar math = require('./math');\n\nvar QRMaskPattern = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n\nvar QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n\t [],\n\t [6, 18],\n\t [6, 22],\n\t [6, 26],\n\t [6, 30],\n\t [6, 34],\n\t [6, 22, 38],\n\t [6, 24, 42],\n\t [6, 26, 46],\n\t [6, 28, 50],\n\t [6, 30, 54],\t\t\n\t [6, 32, 58],\n\t [6, 34, 62],\n\t [6, 26, 46, 66],\n\t [6, 26, 48, 70],\n\t [6, 26, 50, 74],\n\t [6, 30, 54, 78],\n\t [6, 30, 56, 82],\n\t [6, 30, 58, 86],\n\t [6, 34, 62, 90],\n\t [6, 28, 50, 72, 94],\n\t [6, 26, 50, 74, 98],\n\t [6, 30, 54, 78, 102],\n\t [6, 28, 54, 80, 106],\n\t [6, 32, 58, 84, 110],\n\t [6, 30, 58, 86, 114],\n\t [6, 34, 62, 90, 118],\n\t [6, 26, 50, 74, 98, 122],\n\t [6, 30, 54, 78, 102, 126],\n\t [6, 26, 52, 78, 104, 130],\n\t [6, 30, 56, 82, 108, 134],\n\t [6, 34, 60, 86, 112, 138],\n\t [6, 30, 58, 86, 114, 142],\n\t [6, 34, 62, 90, 118, 146],\n\t [6, 30, 54, 78, 102, 126, 150],\n\t [6, 24, 50, 76, 102, 128, 154],\n\t [6, 28, 54, 80, 106, 132, 158],\n\t [6, 32, 58, 84, 110, 136, 162],\n\t [6, 26, 54, 82, 110, 138, 166],\n\t [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10)\t| (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n\t var d = data << 10;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n\t\t d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \t\n\t }\n\t return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n\t var d = data << 12;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n\t\t d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \t\n\t }\n\t return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n\t var digit = 0;\n\n\t while (data != 0) {\n\t\t digit++;\n\t\t data >>>= 1;\n\t }\n\n\t return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n\t return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n\t \n\t switch (maskPattern) {\n\t\t \n\t case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0;\n\t case QRMaskPattern.PATTERN001 : return i % 2 == 0;\n\t case QRMaskPattern.PATTERN010 : return j % 3 == 0;\n\t case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0;\n\t case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0;\n\t case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0;\n\t case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0;\n\t case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0;\n\n\t default :\n\t\t throw new Error(\"bad maskPattern:\" + maskPattern);\n\t }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n\t var a = new Polynomial([1], 0);\n\n\t for (var i = 0; i < errorCorrectLength; i++) {\n\t\t a = a.multiply(new Polynomial([1, math.gexp(i)], 0) );\n\t }\n\n\t return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n\t if (1 <= type && type < 10) {\n\n\t\t // 1 - 9\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 10;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 9;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 8;\n\t\t case Mode.MODE_KANJI \t: return 8;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 27) {\n\n\t\t // 10 - 26\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 12;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 11;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 10;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 41) {\n\n\t\t // 27 - 40\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 14;\n\t\t case Mode.MODE_ALPHA_NUM\t: return 13;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 12;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else {\n\t\t throw new Error(\"type:\" + type);\n\t }\n },\n\n getLostPoint : function(qrCode) {\n\t \n\t var moduleCount = qrCode.getModuleCount();\n\t \n\t var lostPoint = 0;\n\t \n\t // LEVEL1\n\t \n\t for (var row = 0; row < moduleCount; row++) {\n\n\t\t for (var col = 0; col < moduleCount; col++) {\n\n\t\t\t var sameCount = 0;\n\t\t\t var dark = qrCode.isDark(row, col);\n\n\t\t\t\tfor (var r = -1; r <= 1; r++) {\n\n\t\t\t\t if (row + r < 0 || moduleCount <= row + r) {\n\t\t\t\t\t continue;\n\t\t\t\t }\n\n\t\t\t\t for (var c = -1; c <= 1; c++) {\n\n\t\t\t\t\t if (col + c < 0 || moduleCount <= col + c) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (r == 0 && c == 0) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (dark == qrCode.isDark(row + r, col + c) ) {\n\t\t\t\t\t\t sameCount++;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t }\n\n\t\t\t if (sameCount > 5) {\n\t\t\t\t lostPoint += (3 + sameCount - 5);\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL2\n\n\t for (var row = 0; row < moduleCount - 1; row++) {\n\t\t for (var col = 0; col < moduleCount - 1; col++) {\n\t\t\t var count = 0;\n\t\t\t if (qrCode.isDark(row, col ) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col ) ) count++;\n\t\t\t if (qrCode.isDark(row, col + 1) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col + 1) ) count++;\n\t\t\t if (count == 0 || count == 4) {\n\t\t\t\t lostPoint += 3;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL3\n\n\t for (var row = 0; row < moduleCount; row++) {\n\t\t for (var col = 0; col < moduleCount - 6; col++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row, col + 1)\n\t\t\t\t\t && qrCode.isDark(row, col + 2)\n\t\t\t\t\t && qrCode.isDark(row, col + 3)\n\t\t\t\t\t && qrCode.isDark(row, col + 4)\n\t\t\t\t\t && !qrCode.isDark(row, col + 5)\n\t\t\t\t\t && qrCode.isDark(row, col + 6) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount - 6; row++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row + 1, col)\n\t\t\t\t\t && qrCode.isDark(row + 2, col)\n\t\t\t\t\t && qrCode.isDark(row + 3, col)\n\t\t\t\t\t && qrCode.isDark(row + 4, col)\n\t\t\t\t\t && !qrCode.isDark(row + 5, col)\n\t\t\t\t\t && qrCode.isDark(row + 6, col) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL4\n\t \n\t var darkCount = 0;\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount; row++) {\n\t\t\t if (qrCode.isDark(row, col) ) {\n\t\t\t\t darkCount++;\n\t\t\t }\n\t\t }\n\t }\n\t \n\t var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n\t lostPoint += ratio * 10;\n\n\t return lostPoint;\t\t\n }\n};\n\nmodule.exports = QRUtil;\n","var BitByte = require('./8BitByte');\nvar RSBlock = require('./RSBlock');\nvar BitBuffer = require('./BitBuffer');\nvar util = require('./util');\nvar Polynomial = require('./Polynomial');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\n// for client side minification\nvar proto = QRCode.prototype;\n\nproto.addData = function(data) {\n\tvar newData = new BitByte(data);\n\tthis.dataList.push(newData);\n\tthis.dataCache = null;\n};\n\nproto.isDark = function(row, col) {\n\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\tthrow new Error(row + \",\" + col);\n\t}\n\treturn this.modules[row][col];\n};\n\nproto.getModuleCount = function() {\n\treturn this.moduleCount;\n};\n\nproto.make = function() {\n\t// Calculate automatically typeNumber if provided is < 1\n\tif (this.typeNumber < 1 ){\n\t\tvar typeNumber = 1;\n\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\tvar buffer = new BitBuffer();\n\t\t\tvar totalDataCount = 0;\n\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this.dataList.length; i++) {\n\t\t\t\tvar data = this.dataList[i];\n\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\tdata.write(buffer);\n\t\t\t}\n\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.typeNumber = typeNumber;\n\t}\n\tthis.makeImpl(false, this.getBestMaskPattern() );\n};\n\nproto.makeImpl = function(test, maskPattern) {\n\t\n\tthis.moduleCount = this.typeNumber * 4 + 17;\n\tthis.modules = new Array(this.moduleCount);\n\t\n\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\n\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\n\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t}\n\t}\n\n\tthis.setupPositionProbePattern(0, 0);\n\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\tthis.setupPositionAdjustPattern();\n\tthis.setupTimingPattern();\n\tthis.setupTypeInfo(test, maskPattern);\n\t\n\tif (this.typeNumber >= 7) {\n\t\tthis.setupTypeNumber(test);\n\t}\n\n\tif (this.dataCache == null) {\n\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t}\n\n\tthis.mapData(this.dataCache, maskPattern);\n};\n\nproto.setupPositionProbePattern = function(row, col) {\n\t\n\tfor (var r = -1; r <= 7; r++) {\n\t\t\n\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\n\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\n\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\n\t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n\t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\n\t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t} else {\n\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t}\n\t\t}\t\t\n\t}\t\t\n};\n\nproto.getBestMaskPattern = function() {\n\n\tvar minLostPoint = 0;\n\tvar pattern = 0;\n\n\tfor (var i = 0; i < 8; i++) {\n\t\t\n\t\tthis.makeImpl(true, i);\n\n\t\tvar lostPoint = util.getLostPoint(this);\n\n\t\tif (i == 0 || minLostPoint > lostPoint) {\n\t\t\tminLostPoint = lostPoint;\n\t\t\tpattern = i;\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\nproto.createMovieClip = function(target_mc, instance_name, depth) {\n\n\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\tvar cs = 1;\n\n\tthis.make();\n\n\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\n\t\tvar y = row * cs;\n\t\t\n\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\n\t\t\tvar x = col * cs;\n\t\t\tvar dark = this.modules[row][col];\n\t\t\n\t\t\tif (dark) {\n\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\tqr_mc.endFill();\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn qr_mc;\n};\n\nproto.setupTimingPattern = function() {\n\t\n\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\tif (this.modules[r][6] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[r][6] = (r % 2 == 0);\n\t}\n\n\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\tif (this.modules[6][c] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[6][c] = (c % 2 == 0);\n\t}\n};\n\nproto.setupPositionAdjustPattern = function() {\n\n\tvar pos = util.getPatternPosition(this.typeNumber);\n\t\n\tfor (var i = 0; i < pos.length; i++) {\n\t\n\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\n\t\t\tvar row = pos[i];\n\t\t\tvar col = pos[j];\n\t\t\t\n\t\t\tif (this.modules[row][col] != null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\n\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\n\t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\n\t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nproto.setupTypeNumber = function(test) {\n\n\tvar bits = util.getBCHTypeNumber(this.typeNumber);\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t}\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n\t}\n};\n\nproto.setupTypeInfo = function(test, maskPattern) {\n\n\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\tvar bits = util.getBCHTypeInfo(data);\n\n\t// vertical\t\t\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\n\t\tif (i < 6) {\n\t\t\tthis.modules[i][8] = mod;\n\t\t} else if (i < 8) {\n\t\t\tthis.modules[i + 1][8] = mod;\n\t\t} else {\n\t\t\tthis.modules[this.moduleCount - 15 + i][8] = mod;\n\t\t}\n\t}\n\n\t// horizontal\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\t\n\t\tif (i < 8) {\n\t\t\tthis.modules[8][this.moduleCount - i - 1] = mod;\n\t\t} else if (i < 9) {\n\t\t\tthis.modules[8][15 - i - 1 + 1] = mod;\n\t\t} else {\n\t\t\tthis.modules[8][15 - i - 1] = mod;\n\t\t}\n\t}\n\n\t// fixed module\n\tthis.modules[this.moduleCount - 8][8] = (!test);\n};\n\nproto.mapData = function(data, maskPattern) {\n\t\n\tvar inc = -1;\n\tvar row = this.moduleCount - 1;\n\tvar bitIndex = 7;\n\tvar byteIndex = 0;\n\t\n\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\n\t\tif (col == 6) col--;\n\n\t\twhile (true) {\n\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col - c] == null) {\n\t\t\t\t\t\n\t\t\t\t\tvar dark = false;\n\n\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar mask = util.getMask(maskPattern, row, col - c);\n\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\tbitIndex--;\n\n\t\t\t\t\tif (bitIndex == -1) {\n\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\trow += inc;\n\n\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\trow -= inc;\n\t\t\t\tinc = -inc;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new BitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\"\n\t\t\t+ buffer.getLengthInBits()\n\t\t\t+ \">\"\n\t\t\t+ totalDataCount * 8\n\t\t\t+ \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 != 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = util.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalCodeCount += rsBlocks[i].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var i = 0; i < maxDcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < dcdata[r].length) {\n\t\t\t\tdata[index++] = dcdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var i = 0; i < maxEcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < ecdata[r].length) {\n\t\t\t\tdata[index++] = ecdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n};\n\nmodule.exports = QRCode;\n\n","export const LOGO_POLLAR = 'https://pollar.xyz/assets/logo_pollar.png';\nexport const LOGO_GITHUB = 'https://pollar.xyz/assets/GitHub_Invertocat_White.png';\nexport const LOGO_FREIGHTER = 'https://pollar.xyz/assets/logo_freighter.png';\nexport const LOGO_ALBEDO = 'https://pollar.xyz/assets/logo_albedo.svg';\n","type StateStatus = 'NONE' | 'LOADING' | 'SUCCESS' | 'ERROR';\n\nimport type { PollarLogger } from '@pollar/core';\nimport { Component, useEffect, useRef, useState, type MouseEvent as ReactMouseEvent, type ReactNode } from 'react';\nimport { LOGO_POLLAR } from '../constants';\n\ndeclare const __POLLAR_VERSION__: string;\n\n// Module-level sink for the error boundary (a class component, so it can't read\n// React context inside `componentDidCatch`). `PollarProvider` points this at the\n// client's level-gated logger on mount; defaults to `console` until then.\nlet _modalLog: PollarLogger = console;\nexport function setModalErrorLogger(logger: PollarLogger): void {\n _modalLog = logger;\n}\n\ninterface ModalErrorBoundaryState {\n crashed: boolean;\n}\n\nexport class ModalErrorBoundary extends Component<{ children: ReactNode; onClose: () => void }, ModalErrorBoundaryState> {\n state: ModalErrorBoundaryState = { crashed: false };\n\n static getDerivedStateFromError(): ModalErrorBoundaryState {\n return { crashed: true };\n }\n\n componentDidCatch(error: unknown) {\n _modalLog.error('[PollarProvider] Modal crashed:', error);\n }\n\n render() {\n if (this.state.crashed) {\n this.props.onClose();\n return null;\n }\n return this.props.children;\n }\n}\n\nexport const PollarModalFooter = () => {\n return (\n <div className=\"pollar-footer\">\n <span className=\"pollar-footer-protected\">Protected by</span>\n <div className=\"pollar-footer-brand\">\n <img src={LOGO_POLLAR} alt=\"Pollar\" className=\"pollar-footer-logo\" />\n <span className=\"pollar-footer-name\">Pollar</span>\n <span className=\"pollar-footer-version\">v{__POLLAR_VERSION__}</span>\n </div>\n </div>\n );\n};\n\ninterface CopyButtonProps {\n /** Text written to the clipboard (the full, un-cropped value). */\n value: string;\n /** Accessible label for the button (e.g. \"Copy address\"). */\n label?: string;\n /** Extra class (e.g. `pollar-copy-btn-sm` for the compact issuer variant). */\n className?: string;\n}\n\n/** Self-contained copy-to-clipboard icon button with a transient \"copied\" tick. */\nexport function CopyButton({ value, label = 'Copy', className }: CopyButtonProps) {\n const [copied, setCopied] = useState(false);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n return () => {\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n };\n }, []);\n\n function handleCopy(e: ReactMouseEvent<HTMLButtonElement>) {\n e.stopPropagation();\n if (!value || !navigator.clipboard) return;\n void navigator.clipboard.writeText(value).then(() => {\n setCopied(true);\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => {\n setCopied(false);\n timerRef.current = null;\n }, 1500);\n });\n }\n\n return (\n <button\n type=\"button\"\n className={`pollar-copy-btn${className ? ` ${className}` : ''}`}\n onClick={handleCopy}\n aria-label={copied ? 'Copied' : label}\n >\n {copied ? (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden>\n <path d=\"M3.5 7l2.5 2.5 4.5-5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ) : (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <rect x=\"4\" y=\"4\" width=\"8\" height=\"8\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M3 9H2a1 1 0 01-1-1V2a1 1 0 011-1h6a1 1 0 011 1v1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n </button>\n );\n}\n\ninterface ModalStatusBannerProps {\n message: string;\n status: StateStatus;\n onCancel?: (() => void) | undefined;\n onRetry?: (() => void) | undefined;\n}\n\nexport function ModalStatusBanner({ message, status, onCancel, onRetry }: ModalStatusBannerProps) {\n if (!message && status === 'NONE') {\n return <div className=\"pollar-status\" />;\n }\n\n const isLoading = status === 'LOADING';\n const icon =\n status === 'ERROR' ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden>\n <circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"currentColor\" />\n <path d=\"M4.5 4.5l5 5M9.5 4.5l-5 5\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n ) : status === 'SUCCESS' ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden>\n <circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"currentColor\" />\n <path d=\"M3.5 7l2.5 2.5 4.5-5\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ) : status === 'LOADING' ? (\n <></>\n ) : null;\n\n return (\n <div className=\"pollar-status\" data-kind={status}>\n {icon}\n <span>{message}</span>\n {isLoading && onCancel && (\n <button type=\"button\" className=\"pollar-status-cancel\" onClick={onCancel}>\n Cancel\n </button>\n )}\n {status === 'ERROR' && onRetry && (\n <button type=\"button\" className=\"pollar-status-cancel\" onClick={onRetry}>\n Retry\n </button>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { DistributionRule, DistributionRulesState } from '@pollar/core';\nimport { type CSSProperties } from 'react';\nimport { PollarModalFooter } from '../commons';\n\ninterface DistributionRulesModalTemplateProps {\n theme: string;\n accentColor: string;\n state: DistributionRulesState;\n claimingId: string | null;\n claimErrors: Record<string, string>;\n claimedIds: Set<string>;\n onRefresh: () => void;\n onClaim: (rule: DistributionRule) => void;\n onClose: () => void;\n}\n\nconst PERIOD_LABEL: Record<DistributionRule['period'], string> = {\n DAY: 'every 24h',\n DAY_CALENDAR: 'daily',\n WEEK: 'every 7 days',\n MONTH: 'every 30 days',\n MONTH_CALENDAR: 'monthly',\n LIFETIME: 'one-time',\n};\n\n// Reasons returned by sdk-api are the ErrorCode enum values from\n// @pollar/shared. Mapped to short user-facing strings; anything unknown\n// falls back to \"Not available\".\nconst REASON_LABEL: Record<string, string> = {\n DISTRIBUTION_RULE_DISABLED: 'Disabled',\n DISTRIBUTION_RULE_NOT_STARTED: 'Not started yet',\n DISTRIBUTION_RULE_EXPIRED: 'Expired',\n DISTRIBUTION_RULE_EXHAUSTED: 'Fully claimed',\n // Per-user, per-window claim limit (resets next period) — not permanent.\n DISTRIBUTION_RATE_LIMIT_EXCEEDED: 'Claimed for this period',\n};\n\nfunction reasonLabel(reason: string | null): string {\n if (!reason) return 'Not available';\n return REASON_LABEL[reason] ?? 'Not available';\n}\n\nfunction formatAmount(amount: string): string {\n const n = parseFloat(amount);\n return isNaN(n) ? amount : n.toLocaleString(undefined, { maximumFractionDigits: 7 });\n}\n\nfunction formatValidity(rule: DistributionRule): string | null {\n const from = rule.validFrom ? new Date(rule.validFrom) : null;\n const until = rule.validUntil ? new Date(rule.validUntil) : null;\n if (!from && !until) return null;\n const fmt = (d: Date) => d.toLocaleDateString(undefined, { month: 'short', day: 'numeric', year: 'numeric' });\n if (from && until) return `${fmt(from)} → ${fmt(until)}`;\n if (until) return `Until ${fmt(until)}`;\n if (from) return `From ${fmt(from)}`;\n return null;\n}\n\nfunction RuleCard({\n rule,\n isClaiming,\n isClaimed,\n errorMessage,\n onClaim,\n}: {\n rule: DistributionRule;\n isClaiming: boolean;\n isClaimed: boolean;\n errorMessage?: string;\n onClaim: () => void;\n}) {\n const validity = formatValidity(rule);\n const effectivelyClaimable = rule.claimable && !isClaimed;\n\n return (\n <div className=\"pollar-dist-item\" data-claimable={effectivelyClaimable ? 'true' : 'false'}>\n <div className=\"pollar-dist-item-row\">\n <span className=\"pollar-dist-item-name\">{rule.name}</span>\n <span className=\"pollar-dist-item-amount\">\n {formatAmount(rule.amount)} <span className=\"pollar-dist-item-asset\">{rule.assetCode}</span>\n </span>\n </div>\n <div className=\"pollar-dist-item-meta\">\n <span>{PERIOD_LABEL[rule.period]}</span>\n {validity && <span>· {validity}</span>}\n </div>\n <div className=\"pollar-dist-item-action\">\n {isClaimed ? (\n <span className=\"pollar-dist-item-status\" data-kind=\"claimed\">\n Claimed\n </span>\n ) : effectivelyClaimable ? (\n <button type=\"button\" className=\"pollar-btn-primary pollar-dist-claim-btn\" onClick={onClaim} disabled={isClaiming}>\n {isClaiming ? (\n <>\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n Claiming…\n </>\n ) : (\n 'Claim'\n )}\n </button>\n ) : (\n <span className=\"pollar-dist-item-status\" data-kind=\"unavailable\">\n {reasonLabel(rule.reason)}\n </span>\n )}\n </div>\n {errorMessage && <div className=\"pollar-dist-item-error\">{errorMessage}</div>}\n </div>\n );\n}\n\nexport function DistributionRulesModalTemplate({\n theme,\n accentColor,\n state,\n claimingId,\n claimErrors,\n claimedIds,\n onRefresh,\n onClaim,\n onClose,\n}: DistributionRulesModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const isLoading = state.step === 'loading';\n const rules = state.step === 'loaded' ? state.rules : [];\n\n return (\n <div\n className=\"pollar-modal-card pollar-dist-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Distribution Rules</h2>\n <div className=\"pollar-modal-header-actions\">\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoading}\n aria-label=\"Refresh\"\n title=\"Refresh\"\n >\n <svg\n className={isLoading ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <div className=\"pollar-dist-list\">\n {isLoading && (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading…</span>\n </div>\n )}\n {state.step === 'error' && <div className=\"pollar-modal-error\">{state.message}</div>}\n {state.step === 'loaded' && rules.length === 0 && (\n <div className=\"pollar-modal-empty\">No distribution rules available.</div>\n )}\n {rules.map((rule) => (\n <RuleCard\n key={rule.id}\n rule={rule}\n isClaiming={claimingId === rule.id}\n isClaimed={claimedIds.has(rule.id)}\n {...(claimErrors[rule.id] && { errorMessage: claimErrors[rule.id] })}\n onClaim={() => onClaim(rule)}\n />\n ))}\n </div>\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { DistributionRule, DistributionRulesState } from '@pollar/core';\nimport { useCallback, useEffect, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport './DistributionRulesModal.css';\nimport { DistributionRulesModalTemplate } from './DistributionRulesModalTemplate';\n\ninterface DistributionRulesModalProps {\n onClose: () => void;\n}\n\nexport function DistributionRulesModal({ onClose }: DistributionRulesModalProps) {\n const { getClient, styles } = usePollar();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const [state, setState] = useState<DistributionRulesState>({ step: 'idle' });\n const [claimingId, setClaimingId] = useState<string | null>(null);\n const [claimErrors, setClaimErrors] = useState<Record<string, string>>({});\n const [claimedIds, setClaimedIds] = useState<Set<string>>(() => new Set());\n\n const load = useCallback(async () => {\n setState({ step: 'loading' });\n try {\n const rules = await getClient().listDistributionRules();\n setState({ step: 'loaded', rules });\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Failed to load distribution rules';\n setState({ step: 'error', message });\n }\n }, [getClient]);\n\n useEffect(() => {\n void load();\n }, [load]);\n\n const handleClaim = useCallback(\n async (rule: DistributionRule) => {\n setClaimingId(rule.id);\n setClaimErrors((prev) => {\n if (!prev[rule.id]) return prev;\n const next = { ...prev };\n delete next[rule.id];\n return next;\n });\n try {\n await getClient().claimDistributionRule({ ruleId: rule.id });\n setClaimedIds((prev) => {\n const next = new Set(prev);\n next.add(rule.id);\n return next;\n });\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Claim failed';\n setClaimErrors((prev) => ({ ...prev, [rule.id]: message }));\n } finally {\n setClaimingId(null);\n }\n },\n [getClient],\n );\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <DistributionRulesModalTemplate\n theme={theme}\n accentColor={accentColor}\n state={state}\n claimingId={claimingId}\n claimErrors={claimErrors}\n claimedIds={claimedIds}\n onRefresh={() => void load()}\n onClaim={handleClaim}\n onClose={onClose}\n />\n </div>\n );\n}\n","'use client';\n\nimport { EnabledAssetRecord, EnabledAssetsState } from '@pollar/core';\nimport { useState, type CSSProperties } from 'react';\nimport { PollarModalFooter } from '../commons';\n\nfunction cropAddress(address: string): string {\n if (address.length <= 16) return address;\n return `${address.slice(0, 8)}...${address.slice(-8)}`;\n}\n\nfunction cssVarsFor(theme: string, accentColor: string): CSSProperties {\n const isDark = theme === 'dark';\n return {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n}\n\nfunction assetKey(record: { code: string; issuer?: string }): string {\n return record.code + (record.issuer ?? '');\n}\n\nfunction AssetItem({\n record,\n busy,\n disabled,\n onToggle,\n}: {\n record: EnabledAssetRecord;\n busy: boolean;\n disabled: boolean;\n onToggle: (record: EnabledAssetRecord) => void;\n}) {\n const established = record.trustlineEstablished;\n const isNative = record.type === 'native';\n\n return (\n <div className=\"pollar-asset-item\">\n <div className=\"pollar-asset-info\">\n <div className=\"pollar-asset-code-row\">\n <span className=\"pollar-asset-code\">{record.code}</span>\n {record.enabledInApp && <span className=\"pollar-asset-tag\">App</span>}\n </div>\n {record.name && <span className=\"pollar-asset-name\">{record.name}</span>}\n {!isNative && record.enabledInApp && (\n <span className=\"pollar-asset-sponsor\">\n {record.sponsored ? 'Reserve sponsored by the app' : 'You pay the reserve (~0.5 XLM)'}\n </span>\n )}\n </div>\n <div className=\"pollar-asset-actions\">\n <span className={`pollar-asset-trustline${established ? ' pollar-established' : ''}`}>\n {established ? 'Trustline active' : 'Needs trustline'}\n </span>\n {!isNative && (\n <button\n className={`pollar-asset-btn${established ? ' pollar-danger' : ''}`}\n onClick={() => onToggle(record)}\n disabled={busy || disabled}\n >\n {busy ? (\n <span className=\"pollar-spinner pollar-spinner-sm pollar-spinner-current\" />\n ) : established ? (\n 'Disable'\n ) : (\n 'Enable'\n )}\n </button>\n )}\n </div>\n </div>\n );\n}\n\nexport interface EnabledAssetsModalTemplateProps {\n theme: string;\n accentColor: string;\n enabledAssets: EnabledAssetsState;\n walletAddress: string;\n /** Key (`code+issuer`) of the asset whose trustline action is in flight. */\n busyKey: string | null;\n actionError: string | null;\n onRefresh: () => void;\n onClose: () => void;\n onToggleTrustline: (record: EnabledAssetRecord) => void;\n onAddCustom: () => void;\n}\n\nexport function EnabledAssetsModalTemplate({\n theme,\n accentColor,\n enabledAssets,\n walletAddress,\n busyKey,\n actionError,\n onRefresh,\n onClose,\n onToggleTrustline,\n onAddCustom,\n}: EnabledAssetsModalTemplateProps) {\n const cssVars = cssVarsFor(theme, accentColor);\n\n const isLoading = enabledAssets.step === 'loading';\n const data = enabledAssets.step === 'loaded' ? enabledAssets.data : null;\n const busy = busyKey !== null;\n\n return (\n <div\n className=\"pollar-modal-card pollar-asset-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Trustlines</h2>\n <div className=\"pollar-modal-header-actions\">\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoading || busy}\n aria-label=\"Refresh\"\n title=\"Refresh\"\n >\n <svg\n className={isLoading ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n {walletAddress && <div className=\"pollar-asset-address\">{cropAddress(walletAddress)}</div>}\n\n {isLoading && (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading…</span>\n </div>\n )}\n\n {enabledAssets.step === 'error' && <div className=\"pollar-modal-error\">{enabledAssets.message}</div>}\n\n {actionError && <div className=\"pollar-modal-action-error\">{actionError}</div>}\n\n {data && !data.exists && <div className=\"pollar-modal-empty\">Account not found on {data.network}.</div>}\n\n {data && data.assets.length === 0 && <div className=\"pollar-modal-empty\">No trustlines found.</div>}\n\n {data && data.assets.length > 0 && (\n <div className=\"pollar-asset-list\">\n {data.assets.map((a) => (\n <AssetItem\n key={assetKey(a)}\n record={a}\n busy={busyKey === assetKey(a)}\n disabled={busy && busyKey !== assetKey(a)}\n onToggle={onToggleTrustline}\n />\n ))}\n </div>\n )}\n\n <button className=\"pollar-asset-add-custom\" onClick={onAddCustom} disabled={busy}>\n + Add custom trustline\n </button>\n\n <PollarModalFooter />\n </div>\n );\n}\n\nexport interface CustomTrustlineModalTemplateProps {\n theme: string;\n accentColor: string;\n busy: boolean;\n actionError: string | null;\n onBack: () => void;\n onClose: () => void;\n onSubmit: (input: { code: string; issuer: string; limit?: string }) => void;\n}\n\nfunction isValidIssuer(issuer: string): boolean {\n return issuer.length === 56 && issuer.startsWith('G');\n}\n\nexport function CustomTrustlineModalTemplate({\n theme,\n accentColor,\n busy,\n actionError,\n onBack,\n onClose,\n onSubmit,\n}: CustomTrustlineModalTemplateProps) {\n const cssVars = cssVarsFor(theme, accentColor);\n\n const [code, setCode] = useState('');\n const [issuer, setIssuer] = useState('');\n const [limit, setLimit] = useState('');\n\n const codeOk = code.trim().length >= 1 && code.trim().length <= 12;\n const issuerOk = isValidIssuer(issuer.trim());\n const canSubmit = codeOk && issuerOk && !busy;\n\n const submit = () => {\n if (!canSubmit) return;\n const trimmedLimit = limit.trim();\n onSubmit({ code: code.trim(), issuer: issuer.trim(), ...(trimmedLimit ? { limit: trimmedLimit } : {}) });\n };\n\n return (\n <div\n className=\"pollar-modal-card pollar-asset-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <div className=\"pollar-modal-header-actions\">\n <button className=\"pollar-modal-close\" onClick={onBack} disabled={busy} aria-label=\"Back\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M10 3L5 8l5 5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <h2 className=\"pollar-modal-title\">Add custom trustline</h2>\n </div>\n <button className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n\n <p className=\"pollar-asset-custom-hint\">\n Custom trustlines aren't sponsored — your wallet pays the 0.5 XLM reserve and the transaction fee.\n </p>\n\n <div className=\"pollar-field\">\n <label className=\"pollar-label\" htmlFor=\"pollar-trustline-code\">\n Asset code\n </label>\n <input\n id=\"pollar-trustline-code\"\n className=\"pollar-input\"\n value={code}\n onChange={(e) => setCode(e.target.value)}\n placeholder=\"USDC\"\n maxLength={12}\n autoComplete=\"off\"\n spellCheck={false}\n disabled={busy}\n />\n </div>\n\n <div className=\"pollar-field\">\n <label className=\"pollar-label\" htmlFor=\"pollar-trustline-issuer\">\n Issuer\n </label>\n <input\n id=\"pollar-trustline-issuer\"\n className=\"pollar-input\"\n value={issuer}\n onChange={(e) => setIssuer(e.target.value)}\n placeholder=\"G…\"\n autoComplete=\"off\"\n spellCheck={false}\n disabled={busy}\n />\n {issuer.trim().length > 0 && !issuerOk && (\n <span className=\"pollar-field-error\">Issuer must be a 56-character Stellar address starting with G.</span>\n )}\n </div>\n\n <div className=\"pollar-field\">\n <label className=\"pollar-label\" htmlFor=\"pollar-trustline-limit\">\n Limit <span className=\"pollar-label-optional\">(optional)</span>\n </label>\n <input\n id=\"pollar-trustline-limit\"\n className=\"pollar-input\"\n value={limit}\n onChange={(e) => setLimit(e.target.value)}\n placeholder=\"Maximum\"\n inputMode=\"decimal\"\n autoComplete=\"off\"\n spellCheck={false}\n disabled={busy}\n />\n </div>\n\n {actionError && <div className=\"pollar-modal-action-error\">{actionError}</div>}\n\n <div className=\"pollar-modal-actions\">\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={submit} disabled={!canSubmit}>\n {busy ? (\n <>\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n Enabling…\n </>\n ) : (\n 'Enable trustline'\n )}\n </button>\n </div>\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { EnabledAssetRecord } from '@pollar/core';\nimport { useCallback, useEffect, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport './EnabledAssetsModal.css';\nimport { CustomTrustlineModalTemplate, EnabledAssetsModalTemplate } from './EnabledAssetsModalTemplate';\n\ninterface EnabledAssetsModalProps {\n onClose: () => void;\n}\n\nfunction assetKey(record: { code: string; issuer?: string }): string {\n return record.code + (record.issuer ?? '');\n}\n\nexport function EnabledAssetsModal({ onClose }: EnabledAssetsModalProps) {\n const { enabledAssets, refreshAssets, setTrustline, wallet, styles } = usePollar();\n const walletAddress = wallet?.address ?? '';\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const [view, setView] = useState<'list' | 'custom'>('list');\n // Key of the in-flight asset (`code+issuer`), or 'custom' for the custom form.\n const [busyKey, setBusyKey] = useState<string | null>(null);\n const [actionError, setActionError] = useState<string | null>(null);\n\n useEffect(() => {\n void refreshAssets();\n }, [refreshAssets]);\n\n const runAction = useCallback(\n async (\n key: string,\n asset: { code: string; issuer: string },\n opts: { limit?: string; sponsored?: boolean },\n ): Promise<boolean> => {\n setBusyKey(key);\n setActionError(null);\n const res = await setTrustline(asset, opts);\n if (res.status === 'error') {\n setActionError(res.details || 'Trustline update failed. Please try again.');\n setBusyKey(null);\n return false;\n }\n await refreshAssets();\n setBusyKey(null);\n return true;\n },\n [setTrustline, refreshAssets],\n );\n\n const handleToggle = useCallback(\n (record: EnabledAssetRecord) => {\n const removing = record.trustlineEstablished;\n void runAction(\n assetKey(record),\n { code: record.code, issuer: record.issuer ?? '' },\n { ...(removing ? { limit: '0' } : {}), sponsored: record.sponsored ?? false },\n );\n },\n [runAction],\n );\n\n const handleCustomSubmit = useCallback(\n async (input: { code: string; issuer: string; limit?: string }) => {\n // Custom (non-configured) assets are never app-sponsored — the user pays.\n const ok = await runAction(\n 'custom',\n { code: input.code, issuer: input.issuer },\n { ...(input.limit ? { limit: input.limit } : {}), sponsored: false },\n );\n if (ok) setView('list');\n },\n [runAction],\n );\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n {view === 'list' ? (\n <EnabledAssetsModalTemplate\n theme={theme}\n accentColor={accentColor}\n enabledAssets={enabledAssets}\n walletAddress={walletAddress}\n busyKey={busyKey}\n actionError={actionError}\n onRefresh={() => refreshAssets()}\n onClose={onClose}\n onToggleTrustline={handleToggle}\n onAddCustom={() => {\n setActionError(null);\n setView('custom');\n }}\n />\n ) : (\n <CustomTrustlineModalTemplate\n theme={theme}\n accentColor={accentColor}\n busy={busyKey === 'custom'}\n actionError={actionError}\n onBack={() => {\n setActionError(null);\n setView('list');\n }}\n onClose={onClose}\n onSubmit={handleCustomSubmit}\n />\n )}\n </div>\n );\n}\n","'use client';\n\nimport type { KycStatus as KycStatusValue } from '@pollar/core';\nimport type { CSSProperties } from 'react';\n\ninterface KycStatusProps {\n status: KycStatusValue;\n className?: string;\n}\n\nconst STATUS_CONFIG: Record<KycStatusValue, { label: string; color: string; dot: boolean }> = {\n none: { label: 'Not started', color: '#6b7280', dot: false },\n pending: { label: 'Pending review', color: '#f59e0b', dot: true },\n approved: { label: 'Verified', color: '#10b981', dot: false },\n rejected: { label: 'Rejected', color: '#ef4444', dot: false },\n};\n\nexport function KycStatus({ status, className }: KycStatusProps) {\n const config = STATUS_CONFIG[status] ?? STATUS_CONFIG.none;\n return (\n <span\n className={`pollar-kyc-badge${className ? ` ${className}` : ''}`}\n style={{ '--pollar-kyc-color': config.color } as CSSProperties}\n >\n {config.dot && <span className=\"pollar-kyc-badge-dot\" />}\n {config.label}\n </span>\n );\n}\n","'use client';\n\nimport type { KycProvider, KycStartResponse, KycStatus as KycStatusValue } from '@pollar/core';\nimport type { CSSProperties } from 'react';\nimport { KycStatus as KycStatusBadge } from './KycStatus';\n\nexport type KycStep = 'select_provider' | 'verifying' | 'polling' | 'done';\n\ninterface KycModalTemplateProps {\n theme: string;\n accentColor: string;\n step: KycStep;\n providers: KycProvider[];\n selectedProvider: KycProvider | null;\n session: KycStartResponse | null;\n kycStatus: KycStatusValue;\n isLoading: boolean;\n onSelectProvider: (provider: KycProvider) => void;\n onDoneVerifying: () => void;\n onRefresh: () => void;\n onClose: () => void;\n}\n\nexport function KycModalTemplate({\n theme,\n accentColor,\n step,\n providers,\n selectedProvider,\n session,\n kycStatus,\n isLoading,\n onSelectProvider,\n onDoneVerifying,\n onRefresh,\n onClose,\n}: KycModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n '--pollar-modal-padding': '2rem',\n '--pollar-modal-heading-size': '1.375rem',\n '--pollar-modal-subtitle-size': '0.9rem',\n } as CSSProperties;\n\n return (\n <div className=\"pollar-modal-card pollar-kyc-modal\" style={cssVars} onClick={(e) => e.stopPropagation()}>\n <div className=\"pollar-modal-header\">\n <div className=\"pollar-kyc-header-text\">\n <h2 className=\"pollar-modal-title\">Identity verification</h2>\n <p className=\"pollar-kyc-subtitle\">\n {step === 'select_provider' && 'Choose your verification provider'}\n {step === 'verifying' && `Verifying with ${selectedProvider?.name}`}\n {step === 'polling' && 'Waiting for verification result'}\n {step === 'done' && 'Verification complete'}\n </p>\n </div>\n <div className=\"pollar-modal-header-actions\">\n {step === 'select_provider' && (\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoading}\n aria-label=\"Refresh\"\n title=\"Refresh providers\"\n >\n <svg\n className={isLoading ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n {step === 'select_provider' &&\n (isLoading && providers.length === 0 ? (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading providers…</span>\n </div>\n ) : (\n <div className=\"pollar-kyc-providers\">\n {providers.length === 0 && (\n <p style={{ color: 'var(--pollar-muted)', textAlign: 'center' }}>No providers available for your country.</p>\n )}\n {providers.map((p) => (\n <button\n key={p.id}\n type=\"button\"\n className=\"pollar-kyc-provider-btn\"\n disabled={isLoading}\n onClick={() => onSelectProvider(p)}\n >\n <span className=\"pollar-kyc-provider-name\">{p.name}</span>\n <span className=\"pollar-kyc-provider-flow\">{p.flow}</span>\n </button>\n ))}\n </div>\n ))}\n\n {step === 'verifying' && selectedProvider && (\n <>\n <div className=\"pollar-kyc-iframe-wrap\">\n {session?.kycUrl ? (\n <iframe className=\"pollar-kyc-iframe\" src={session.kycUrl} title=\"KYC verification\" allow=\"camera; microphone\" />\n ) : (\n <div className=\"pollar-kyc-iframe-mock\">\n <span>🔒</span>\n <span>\n {selectedProvider.flow === 'form'\n ? 'The identity verification form will appear here.'\n : 'Identity verification will open here.'}\n </span>\n </div>\n )}\n </div>\n <div className=\"pollar-modal-actions\">\n <button type=\"button\" className=\"pollar-btn-secondary\" onClick={onClose}>\n Cancel\n </button>\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={onDoneVerifying}>\n I've completed verification\n </button>\n </div>\n </>\n )}\n\n {step === 'polling' && (\n <div className=\"pollar-kyc-polling\">\n <div className=\"pollar-spinner\" />\n <p className=\"pollar-kyc-polling-text\">Checking verification status…</p>\n </div>\n )}\n\n {step === 'done' && (\n <div className=\"pollar-kyc-result\">\n <span className=\"pollar-kyc-result-icon\">{kycStatus === 'approved' ? '✅' : '❌'}</span>\n <KycStatusBadge status={kycStatus} />\n <p className=\"pollar-kyc-result-text\">\n {kycStatus === 'approved'\n ? 'Your identity has been verified successfully.'\n : 'Verification was not approved. Please try again.'}\n </p>\n <div className=\"pollar-modal-actions\">\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={onClose}>\n Close\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { type KycProvider, type KycStartResponse, type KycStatus as KycStatusValue } from '@pollar/core';\nimport { useCallback, useEffect, useState } from 'react';\nimport { usePollar } from '../../context';\nimport type { KycStep } from './KycModalTemplate';\nimport { KycModalTemplate } from './KycModalTemplate';\nimport '../shared.css';\nimport './KycModal.css';\n\ninterface KycModalProps {\n onClose: () => void;\n /** ISO 3166-1 alpha-2 country code to filter providers. Defaults to 'MX'. */\n country?: string;\n /** KYC level required. Defaults to 'basic'. */\n level?: 'basic' | 'intermediate' | 'enhanced';\n /** Called when KYC is successfully approved. */\n onApproved?: () => void;\n}\n\nexport function KycModal({ onClose, country = 'MX', level = 'basic', onApproved }: KycModalProps) {\n const { getClient, styles } = usePollar();\n\n const [step, setStep] = useState<KycStep>('select_provider');\n const [providers, setProviders] = useState<KycProvider[]>([]);\n const [selectedProvider, setSelectedProvider] = useState<KycProvider | null>(null);\n const [session, setSession] = useState<KycStartResponse | null>(null);\n const [kycStatus, setKycStatus] = useState<KycStatusValue>('none');\n const [isLoading, setIsLoading] = useState(false);\n\n const client = getClient();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const loadProviders = useCallback(() => {\n setIsLoading(true);\n return getClient()\n .getKycProviders(country)\n .then((result) => setProviders(result.providers))\n .catch(() => setProviders([]))\n .finally(() => setIsLoading(false));\n }, [getClient, country]);\n\n useEffect(() => {\n void loadProviders();\n }, [loadProviders]);\n\n async function handleSelectProvider(provider: KycProvider) {\n setSelectedProvider(provider);\n setIsLoading(true);\n try {\n const result = await client.resolveKyc(provider.id, level);\n if (result.alreadyApproved) {\n setKycStatus('approved');\n setStep('done');\n onApproved?.();\n return;\n }\n setSession(result as KycStartResponse);\n setStep('verifying');\n } catch {\n setStep('select_provider');\n } finally {\n setIsLoading(false);\n }\n }\n\n async function handleDoneVerifying() {\n if (!selectedProvider) return;\n setStep('polling');\n try {\n const finalStatus = await client.pollKycStatus(selectedProvider.id, { intervalMs: 3000, timeoutMs: 120_000 });\n setKycStatus(finalStatus);\n setStep('done');\n if (finalStatus === 'approved') onApproved?.();\n } catch {\n setKycStatus('rejected');\n setStep('done');\n }\n }\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <KycModalTemplate\n theme={theme}\n accentColor={accentColor}\n step={step}\n providers={providers}\n selectedProvider={selectedProvider}\n session={session}\n kycStatus={kycStatus}\n isLoading={isLoading}\n onSelectProvider={handleSelectProvider}\n onDoneVerifying={handleDoneVerifying}\n onRefresh={() => void loadProviders()}\n onClose={onClose}\n />\n </div>\n );\n}\n","import { useRef, useState } from 'react';\n\ninterface EmailCodeInputProps {\n email?: string;\n onSubmit: (code: string) => void;\n}\n\nexport function EmailCodeInput({ email, onSubmit }: EmailCodeInputProps) {\n const [digits, setDigits] = useState(['', '', '', '', '', '']);\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n\n function submit(next: string[]) {\n if (next.every(Boolean)) onSubmit(next.join(''));\n }\n\n function handleChange(index: number, value: string) {\n const cleaned = value.replace(/\\D/g, '').slice(-1);\n const next = digits.map((d, i) => (i === index ? cleaned : d));\n setDigits(next);\n if (cleaned && index < 5) inputRefs.current[index + 1]?.focus();\n submit(next);\n }\n\n function handleKeyDown(index: number, e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'Backspace' && !digits[index] && index > 0) {\n inputRefs.current[index - 1]?.focus();\n }\n }\n\n function handlePaste(e: React.ClipboardEvent<HTMLInputElement>) {\n e.preventDefault();\n const text = e.clipboardData.getData('text').replace(/\\D/g, '').slice(0, 6);\n const next = Array.from({ length: 6 }, (_, i) => text[i] ?? '');\n setDigits(next);\n inputRefs.current[Math.min(text.length - 1, 5)]?.focus();\n submit(next);\n }\n\n return (\n <div className=\"pollar-code-section\">\n <p className=\"pollar-code-label\">Enter the 6-digit code sent to {email ? <strong>{email}</strong> : 'your email'}</p>\n <div className=\"pollar-code-inputs\">\n {digits.map((digit, i) => (\n <input\n key={i}\n ref={(el) => {\n inputRefs.current[i] = el;\n }}\n type=\"text\"\n inputMode=\"numeric\"\n maxLength={2}\n value={digit}\n className=\"pollar-code-input\"\n onChange={(e) => handleChange(i, e.target.value)}\n onKeyDown={(e) => handleKeyDown(i, e)}\n onPaste={handlePaste}\n />\n ))}\n </div>\n </div>\n );\n}\n","// https://brand.github.com/foundations/logo\nimport './GithubButton.css';\n\nexport const GithubButton = ({ disabled, onClick }: { disabled: boolean; onClick: () => void }) => {\n return (\n <button className=\"pollar-github-button\" disabled={disabled} onClick={onClick}>\n <svg className=\"pollar-github-button-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden>\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z\"\n clipRule=\"evenodd\"\n />\n </svg>\n <span className=\"pollar-github-button-contents\">GitHub</span>\n </button>\n );\n};\n","// https://developers.google.com/identity/branding-guidelines\nimport './GoogleButton.css';\n\nexport const GoogleButton = ({ disabled, onClick }: { disabled: boolean; onClick: () => void }) => {\n return (\n <button className=\"pollar-gsi-material-button\" disabled={disabled} onClick={onClick}>\n <div className=\"pollar-gsi-material-button-state\"></div>\n <div className=\"pollar-gsi-material-button-content-wrapper\">\n <div className=\"pollar-gsi-material-button-icon\">\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\" style={{ display: 'block' }}>\n <path\n fill=\"#EA4335\"\n d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"\n ></path>\n <path\n fill=\"#4285F4\"\n d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"\n ></path>\n <path\n fill=\"#FBBC05\"\n d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"\n ></path>\n <path\n fill=\"#34A853\"\n d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"\n ></path>\n <path fill=\"none\" d=\"M0 0h48v48H0z\"></path>\n </svg>\n </div>\n <span className=\"pollar-gsi-material-button-contents\">Google</span>\n <span style={{ display: 'none' }}>Google</span>\n </div>\n </button>\n );\n};\n","'use client';\n\nimport { AUTH_ERROR_CODES, AuthState, WalletId } from '@pollar/core';\n\ntype StateStatus = 'NONE' | 'LOADING' | 'SUCCESS' | 'ERROR';\nimport { type CSSProperties, useState } from 'react';\nimport { LOGO_POLLAR } from '../../constants';\nimport { ModalStatusBanner, PollarModalFooter } from '../commons';\nimport { EmailCodeInput } from './EmailCodeInput';\nimport { GithubButton } from './GithubButton';\nimport { GoogleButton } from './GoogleButton';\n\ntype WalletAdapterEntry = { id: WalletId; meta: { label: string; iconUrl?: string; group?: string } };\n\nfunction WalletAdapterButtons({\n walletAdapters,\n onConnect,\n isLoading,\n variant = 'list',\n}: {\n walletAdapters: WalletAdapterEntry[];\n onConnect: (id: WalletId) => void;\n isLoading: boolean;\n // 'list' → borderless rows for inside a group sub-picker (large icon + name).\n // 'entry' → bordered buttons that match the root-level entries (Google, Wallet,\n // Smart Wallet) so a root adapter like Privy doesn't read as bare text.\n variant?: 'list' | 'entry';\n}) {\n if (variant === 'entry') {\n return (\n <>\n {walletAdapters.map((a) => (\n <button\n key={a.id}\n type=\"button\"\n disabled={isLoading}\n className=\"pollar-wallet-entry-btn\"\n onClick={() => onConnect(a.id)}\n >\n {a.meta.iconUrl && <img src={a.meta.iconUrl} alt={a.meta.label} className=\"pollar-wallet-icon\" />}\n {a.meta.label}\n </button>\n ))}\n </>\n );\n }\n return (\n <div className=\"pollar-wallet-list\">\n {walletAdapters.map((a) => (\n <button\n key={a.id}\n type=\"button\"\n disabled={isLoading}\n className=\"pollar-wallet-list-btn\"\n onClick={() => onConnect(a.id)}\n >\n {a.meta.iconUrl && <img src={a.meta.iconUrl} alt={a.meta.label} className=\"pollar-wallet-list-icon\" />}\n <span className=\"pollar-wallet-list-name\">{a.meta.label}</span>\n </button>\n ))}\n </div>\n );\n}\n\nconst AUTH_STATE_MESSAGES: Record<AuthState['step'], string> = {\n idle: '',\n creating_session: 'Initializing…',\n entering_email: '',\n sending_email: 'Sending…',\n entering_code: 'Code sent — check your inbox',\n verifying_email_code: 'Verifying…',\n opening_oauth: 'Redirecting…',\n connecting_wallet: 'Connecting wallet…',\n signing_wallet_challenge: 'Confirm in your wallet…',\n wallet_not_installed: 'Wallet not installed',\n authenticating_wallet: 'Signing in with wallet…',\n creating_passkey: 'Waiting for passkey…',\n deploying_smart_account: 'Creating your wallet…',\n authenticating: 'Authenticating…',\n authenticated: 'Welcome!',\n error: '',\n};\n\nfunction authStateToStatus(step: AuthState['step']): StateStatus {\n const loading: AuthState['step'][] = [\n 'creating_session',\n 'sending_email',\n 'verifying_email_code',\n 'opening_oauth',\n 'connecting_wallet',\n 'signing_wallet_challenge',\n 'authenticating_wallet',\n 'creating_passkey',\n 'deploying_smart_account',\n 'authenticating',\n ];\n const success: AuthState['step'][] = ['authenticated', 'entering_code'];\n const error: AuthState['step'][] = ['error', 'wallet_not_installed'];\n\n if (loading.includes(step)) return 'LOADING';\n if (success.includes(step)) return 'SUCCESS';\n if (error.includes(step)) return 'ERROR';\n return 'NONE';\n}\n\ninterface LoginModalTemplateProps {\n theme: string;\n accentColor: string;\n logoUrl: string | null;\n emailEnabled: boolean;\n embeddedWallets: boolean;\n /** Show the \"Smart Wallet\" (passkey) option. Optional & defaults to off so\n * adding it isn't a breaking change for existing template consumers. */\n smartWallet?: boolean;\n providers: {\n google: boolean;\n discord: boolean;\n x: boolean;\n github: boolean;\n apple: boolean;\n };\n /** Registered wallet adapters to render as buttons (Freighter, Albedo, Privy, …). */\n walletAdapters: WalletAdapterEntry[];\n appName: string;\n email?: string;\n onEmailChange?: (email: string) => void;\n onEmailSubmit?: () => void;\n onSocialLogin?: (provider: 'google' | 'github') => void;\n onWalletConnect?: (id: WalletId) => void;\n /** Log in with an existing passkey (returning user). */\n onLoginSmartWallet?: () => void;\n /** Create a new passkey + smart wallet (new user). */\n onCreateSmartWallet?: () => void;\n authState: AuthState;\n codeInputKey?: number;\n onCodeSubmit?: (code: string) => void;\n onBack: () => void;\n onCancel: () => void;\n onRetry: () => void;\n}\n\n/** Theme-derived CSS custom properties shared by the login modal and its\n * loading/error status card. Kept as a standalone helper so both render paths\n * stay visually in lockstep. */\nexport function buildModalCssVars(theme: string, accentColor: string): CSSProperties {\n const isDark = theme === 'dark';\n return {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n '--pollar-modal-padding': '2rem',\n '--pollar-modal-heading-size': '1.375rem',\n '--pollar-modal-subtitle-size': '0.9rem',\n } as CSSProperties;\n}\n\nexport function LoginModalTemplate({\n theme,\n accentColor,\n logoUrl,\n emailEnabled,\n embeddedWallets,\n smartWallet = false,\n providers,\n walletAdapters,\n appName,\n email = '',\n onEmailChange,\n onEmailSubmit,\n onSocialLogin,\n onWalletConnect,\n onLoginSmartWallet,\n onCreateSmartWallet,\n authState,\n codeInputKey,\n onCodeSubmit,\n onBack,\n onCancel,\n onRetry,\n}: LoginModalTemplateProps) {\n const [showPasskeyChooser, setShowPasskeyChooser] = useState(false);\n // Which wallet group's sub-picker is open (gateway label), or null for the root view.\n const [activeGroup, setActiveGroup] = useState<string | null>(null);\n\n const enabledSocial = Object.entries(providers).filter(([, enabled]) => enabled);\n\n // Split registered adapters into root-level buttons (no `meta.group`, e.g. Privy)\n // and gateway groups (adapters sharing a `meta.group` collapse behind one button\n // that opens a sub-picker — e.g. the Stellar Wallets Kit wallets under \"Wallet\").\n const rootAdapters = walletAdapters.filter((a) => !a.meta.group);\n const walletGroups = walletAdapters\n .filter((a) => a.meta.group)\n .reduce<{ label: string; adapters: WalletAdapterEntry[] }[]>((acc, a) => {\n const label = a.meta.group as string;\n const existing = acc.find((g) => g.label === label);\n if (existing) existing.adapters.push(a);\n else acc.push({ label, adapters: [a] });\n return acc;\n }, []);\n const activeGroupAdapters = walletGroups.find((g) => g.label === activeGroup)?.adapters ?? [];\n\n const cssVars = buildModalCssVars(theme, accentColor);\n\n const status = authStateToStatus(authState.step);\n const isLoading = status === 'LOADING';\n const isEmailCodeError =\n authState.step === 'error' &&\n (authState.errorCode === AUTH_ERROR_CODES.EMAIL_CODE_EXPIRED ||\n authState.errorCode === AUTH_ERROR_CODES.EMAIL_CODE_INVALID);\n const awaitingEmailCode = authState.step === 'entering_code' || authState.step === 'verifying_email_code' || isEmailCodeError;\n const statusMessage = authState.step === 'error' ? authState.message : AUTH_STATE_MESSAGES[authState.step];\n\n const BackButton = ({ onClick }: { onClick: () => void }) => (\n <button type=\"button\" className=\"pollar-back-btn\" onClick={onClick} aria-label=\"Back\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n );\n\n return (\n <div className=\"pollar-modal-card pollar-modal\" style={cssVars} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className=\"pollar-close-btn\" onClick={onCancel} aria-label=\"Close\">\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n <div className=\"pollar-header\">\n <div className=\"pollar-logo-wrap\">\n <img src={logoUrl ?? LOGO_POLLAR} alt=\"Logo\" className=\"pollar-logo\" />\n </div>\n <h2 className=\"pollar-title\">{appName}</h2>\n <p className=\"pollar-subtitle\">Log in or sign up</p>\n </div>\n\n {awaitingEmailCode ? (\n <>\n <BackButton onClick={onBack} />\n <EmailCodeInput key={codeInputKey} email={email} onSubmit={onCodeSubmit ?? (() => {})} />\n </>\n ) : activeGroup ? (\n <>\n <BackButton onClick={() => setActiveGroup(null)} />\n <WalletAdapterButtons\n walletAdapters={activeGroupAdapters}\n onConnect={onWalletConnect ?? (() => {})}\n isLoading={isLoading}\n />\n </>\n ) : showPasskeyChooser ? (\n <>\n <BackButton onClick={() => setShowPasskeyChooser(false)} />\n <div className=\"pollar-wallet-section\">\n <button type=\"button\" disabled={isLoading} className=\"pollar-btn-primary\" onClick={onCreateSmartWallet}>\n Create a new wallet\n </button>\n <button type=\"button\" disabled={isLoading} className=\"pollar-wallet-entry-btn\" onClick={onLoginSmartWallet}>\n Log in with an existing wallet\n </button>\n </div>\n </>\n ) : (\n <>\n {emailEnabled && (\n <div className=\"pollar-email-section\">\n <input\n type=\"email\"\n placeholder=\"you@email.com\"\n value={email}\n disabled={isLoading}\n className=\"pollar-input\"\n onChange={(e) => onEmailChange?.(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && onEmailSubmit?.()}\n />\n <button\n type=\"button\"\n disabled={isLoading || !email}\n className=\"pollar-btn-primary\"\n style={{ marginTop: '0.75rem' }}\n onClick={onEmailSubmit}\n >\n Submit\n </button>\n </div>\n )}\n\n {emailEnabled && enabledSocial.length > 0 && (\n <div className=\"pollar-divider\">\n <div className=\"pollar-divider-line\" />\n <div className=\"pollar-divider-label\">\n <span className=\"pollar-divider-text\">or continue with</span>\n </div>\n </div>\n )}\n\n {enabledSocial.length > 0 && (\n <div className=\"pollar-social-list\">\n {enabledSocial.some(([key]) => key === 'google') && (\n <GoogleButton disabled={isLoading} onClick={() => onSocialLogin?.('google')} />\n )}\n {enabledSocial.some(([key]) => key === 'github') && (\n <GithubButton disabled={isLoading} onClick={() => onSocialLogin?.('github')} />\n )}\n </div>\n )}\n\n {(embeddedWallets || smartWallet) && (\n <div className=\"pollar-wallet-section\">\n {embeddedWallets && (\n <>\n {walletGroups.map((g) => (\n <button\n key={g.label}\n type=\"button\"\n disabled={isLoading}\n className=\"pollar-wallet-entry-btn\"\n onClick={() => setActiveGroup(g.label)}\n >\n <svg\n width=\"18\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z\" />\n </svg>\n {g.label}\n </button>\n ))}\n {rootAdapters.length > 0 && (\n <WalletAdapterButtons\n walletAdapters={rootAdapters}\n onConnect={onWalletConnect ?? (() => {})}\n isLoading={isLoading}\n variant=\"entry\"\n />\n )}\n </>\n )}\n\n {smartWallet && (\n <button\n type=\"button\"\n disabled={isLoading}\n className=\"pollar-wallet-entry-btn\"\n onClick={() => setShowPasskeyChooser(true)}\n >\n <svg\n width=\"18\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M16 8V6a4 4 0 00-8 0v2M5 8h14a1 1 0 011 1v10a1 1 0 01-1 1H5a1 1 0 01-1-1V9a1 1 0 011-1zm7 5v2\" />\n </svg>\n Smart Wallet\n </button>\n )}\n </div>\n )}\n </>\n )}\n\n <ModalStatusBanner\n message={statusMessage}\n status={status}\n onCancel={onCancel}\n onRetry={isEmailCodeError ? undefined : onRetry}\n />\n\n <PollarModalFooter />\n </div>\n );\n}\n\n/** Placeholder shown inside the login modal while the app config is loading, or\n * when its remote fetch failed — instead of the empty shell that renders when\n * `styles` is still the default `{}`. Mirrors the template's card chrome (logo,\n * title, footer) so the swap to the real form isn't jarring. */\nexport function LoginModalStatus({\n status,\n theme,\n accentColor,\n logoUrl,\n appName,\n onRetry,\n onCancel,\n}: {\n status: 'loading' | 'error';\n theme: string;\n accentColor: string;\n logoUrl: string | null;\n appName: string;\n onRetry: () => void;\n onCancel: () => void;\n}) {\n const cssVars = buildModalCssVars(theme, accentColor);\n return (\n <div className=\"pollar-modal-card pollar-modal\" style={cssVars} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className=\"pollar-close-btn\" onClick={onCancel} aria-label=\"Close\">\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n <div className=\"pollar-header\">\n <div className=\"pollar-logo-wrap\">\n <img src={logoUrl ?? LOGO_POLLAR} alt=\"Logo\" className=\"pollar-logo\" />\n </div>\n <h2 className=\"pollar-title\">{appName}</h2>\n <p className=\"pollar-subtitle\">Log in or sign up</p>\n </div>\n\n {status === 'loading' ? (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading...</span>\n </div>\n ) : (\n <div className=\"pollar-wallet-section\">\n <p className=\"pollar-modal-error\">Could not load sign-in options. Check your connection and try again.</p>\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={onRetry}>\n Try again\n </button>\n </div>\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { type CSSProperties, useMemo, useState } from 'react';\nimport type { InteractiveAuthAdapter } from '@pollar/core';\nimport { LOGO_POLLAR } from '../../constants';\nimport { ModalStatusBanner, PollarModalFooter } from '../commons';\nimport { EmailCodeInput } from './EmailCodeInput';\nimport { GithubButton } from './GithubButton';\nimport { GoogleButton } from './GoogleButton';\n\ntype StateStatus = 'NONE' | 'LOADING' | 'SUCCESS' | 'ERROR';\n\ninterface PrivyLoginSubmodalProps {\n /** The interactive adapter whose login (email/oauth) we drive. */\n adapter: InteractiveAuthAdapter;\n theme: string;\n accentColor: string;\n logoUrl: string | null;\n appName: string;\n /** Return to the root login view. */\n onBack: () => void;\n /** Close the whole login modal. */\n onCancel: () => void;\n /** The provider login finished — hand off to `login({ provider })`. */\n onAuthenticated: () => void;\n}\n\n/**\n * Sub-modal for an {@link InteractiveAuthAdapter} (e.g. `@pollar/privy-adapter`).\n * It renders the adapter's `getAuthOptions()` (email / Google / GitHub), runs the\n * provider login by calling the adapter's methods, then signals\n * {@link PrivyLoginSubmodalProps.onAuthenticated} so the host triggers the normal\n * `login({ provider })` (which runs `connect()` + SEP-10).\n *\n * Owned by `@pollar/react`; reuses the login-modal CSS classes/vars.\n */\nexport function PrivyLoginSubmodal({\n adapter,\n theme,\n accentColor,\n logoUrl,\n appName,\n onBack,\n onCancel,\n onAuthenticated,\n}: PrivyLoginSubmodalProps) {\n const options = useMemo(() => adapter.getAuthOptions(), [adapter]);\n const [email, setEmail] = useState('');\n const [view, setView] = useState<'root' | 'email-code'>('root');\n const [status, setStatus] = useState<StateStatus>('NONE');\n const [message, setMessage] = useState('');\n\n const isDark = theme === 'dark';\n const isLoading = status === 'LOADING';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n '--pollar-modal-padding': '2rem',\n '--pollar-modal-heading-size': '1.375rem',\n '--pollar-modal-subtitle-size': '0.9rem',\n } as CSSProperties;\n\n function fail(error: unknown) {\n setStatus('ERROR');\n setMessage(error instanceof Error ? error.message : 'Something went wrong. Please try again.');\n }\n\n async function handleEmailSubmit() {\n if (!email) return;\n setStatus('LOADING');\n setMessage('');\n try {\n await adapter.sendEmailCode(email);\n setStatus('SUCCESS');\n setMessage('Code sent — check your inbox');\n setView('email-code');\n } catch (error) {\n fail(error);\n }\n }\n\n async function handleCodeSubmit(code: string) {\n setStatus('LOADING');\n setMessage('Verifying…');\n try {\n await adapter.verifyEmailCode(code);\n onAuthenticated();\n } catch (error) {\n fail(error);\n }\n }\n\n async function handleOAuth(provider: 'google' | 'github') {\n setStatus('LOADING');\n setMessage('');\n try {\n // On web Privy may redirect for OAuth; completion then arrives after the\n // round-trip. Email login resolves in-session and is the robust path.\n await adapter.loginWithOAuth(provider);\n onAuthenticated();\n } catch (error) {\n fail(error);\n }\n }\n\n const BackButton = ({ onClick }: { onClick: () => void }) => (\n <button type=\"button\" className=\"pollar-back-btn\" onClick={onClick} aria-label=\"Back\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n );\n\n const showEmail = options.includes('email');\n const showGoogle = options.includes('google');\n const showGithub = options.includes('github');\n\n return (\n <div className=\"pollar-modal-card pollar-modal\" style={cssVars} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className=\"pollar-close-btn\" onClick={onCancel} aria-label=\"Close\">\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n\n <div className=\"pollar-header\">\n <div className=\"pollar-logo-wrap\">\n <img src={logoUrl ?? LOGO_POLLAR} alt=\"Logo\" className=\"pollar-logo\" />\n </div>\n <h2 className=\"pollar-title\">{appName}</h2>\n <p className=\"pollar-subtitle\">{adapter.meta.label}</p>\n </div>\n\n {view === 'email-code' ? (\n <>\n <BackButton onClick={() => setView('root')} />\n <EmailCodeInput email={email} onSubmit={handleCodeSubmit} />\n </>\n ) : (\n <>\n <BackButton onClick={onBack} />\n {showEmail && (\n <div className=\"pollar-email-section\">\n <input\n type=\"email\"\n placeholder=\"you@email.com\"\n value={email}\n disabled={isLoading}\n className=\"pollar-input\"\n onChange={(e) => setEmail(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleEmailSubmit()}\n />\n <button\n type=\"button\"\n disabled={isLoading || !email}\n className=\"pollar-btn-primary\"\n style={{ marginTop: '0.75rem' }}\n onClick={handleEmailSubmit}\n >\n Submit\n </button>\n </div>\n )}\n\n {showEmail && (showGoogle || showGithub) && (\n <div className=\"pollar-divider\">\n <div className=\"pollar-divider-line\" />\n <div className=\"pollar-divider-label\">\n <span className=\"pollar-divider-text\">or continue with</span>\n </div>\n </div>\n )}\n\n {(showGoogle || showGithub) && (\n <div className=\"pollar-social-list\">\n {showGoogle && <GoogleButton disabled={isLoading} onClick={() => handleOAuth('google')} />}\n {showGithub && <GithubButton disabled={isLoading} onClick={() => handleOAuth('github')} />}\n </div>\n )}\n </>\n )}\n\n <ModalStatusBanner message={message} status={status} onCancel={onCancel} onRetry={undefined} />\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport {\n AUTH_ERROR_CODES,\n AuthState,\n InteractiveAuthAdapter,\n isInteractiveAuthAdapter,\n PollarLoginOptions,\n WalletId,\n} from '@pollar/core';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport { LoginModalStatus, LoginModalTemplate } from './LoginModalTemplate';\nimport { PrivyLoginSubmodal } from './PrivyLoginSubmodal';\nimport '../shared.css';\nimport './LoginModal.css';\n\ntype TimeoutHandle = ReturnType<typeof setTimeout>;\n\ninterface LoginModalProps {\n onClose: () => void;\n}\n\nexport function LoginModal({ onClose }: LoginModalProps) {\n const [email, setEmail] = useState('');\n const { getClient, styles, appConfig: config, configStatus, retryConfig } = usePollar();\n const [authState, setAuthState] = useState<AuthState>(() => getClient().getAuthState());\n // Registered wallet adapters (built-ins + config) → one login button each.\n const walletAdapters = useMemo(() => getClient().listWalletAdapters(), [getClient]);\n const [codeInputKey, setCodeInputKey] = useState(0);\n const pendingEmail = useRef<string | null>(null);\n // When set, an interactive adapter (e.g. Privy) takes over the modal with its\n // own login sub-view instead of going straight to login({ provider }).\n const [interactiveAdapter, setInteractiveAdapter] = useState<InteractiveAuthAdapter | null>(null);\n\n const onCloseRef = useRef(onClose);\n onCloseRef.current = onClose;\n const autoCloseTimer = useRef<TimeoutHandle | null>(null);\n\n useEffect(() => {\n const unsubscribe = getClient().onAuthStateChange((next) => {\n setAuthState(next);\n if (next.step === 'entering_email' && pendingEmail.current) {\n getClient().sendEmailCode(pendingEmail.current);\n pendingEmail.current = null;\n }\n if (next.step === 'error' && next.errorCode === AUTH_ERROR_CODES.EMAIL_CODE_INVALID) {\n setCodeInputKey((k) => k + 1);\n }\n if (next.step === 'authenticated') {\n // Clear any timer already pending — if `authenticated` fires more than\n // once, overwriting the handle would orphan the previous timeout\n // (cleanup only tracks the latest).\n if (autoCloseTimer.current !== null) {\n clearTimeout(autoCloseTimer.current);\n }\n autoCloseTimer.current = setTimeout(() => {\n autoCloseTimer.current = null;\n onCloseRef.current();\n }, 1000);\n }\n });\n return () => {\n unsubscribe();\n if (autoCloseTimer.current !== null) {\n clearTimeout(autoCloseTimer.current);\n autoCloseTimer.current = null;\n }\n };\n }, [getClient]);\n\n const { theme = 'light', accentColor = '#005DB4', logoUrl, emailEnabled, embeddedWallets, smartWallet, providers } = styles;\n // Opt-in: the Smart Wallet (passkey) option only shows when the dashboard\n // explicitly enables it. Absent → hidden.\n const smartWalletEnabled = smartWallet ?? false;\n\n function handleClose() {\n setEmail('');\n getClient().cancelLogin();\n onClose();\n }\n\n function handleEmailSubmit() {\n if (!email) return;\n pendingEmail.current = email;\n getClient().beginEmailLogin();\n }\n\n function handleSocialLogin(provider: 'google' | 'github') {\n getClient().login({ provider });\n }\n\n function handleWalletConnect(type: WalletId) {\n // Interactive adapters (e.g. Privy) drive their own multi-step login that we\n // render as a sub-modal; open it instead of going straight to login().\n const adapter = getClient().getWalletAdapter(type);\n if (isInteractiveAuthAdapter(adapter)) {\n setInteractiveAdapter(adapter);\n return;\n }\n // Any other registered wallet adapter (freighter/albedo/swk…). The adapter\n // opens its own connect/auth UI; the SDK wraps the generic SEP-10 flow.\n getClient().login({ provider: type } as PollarLoginOptions);\n }\n\n function handleLoginSmartWallet() {\n getClient().loginSmartWallet();\n }\n\n function handleCreateSmartWallet() {\n getClient().createSmartWallet();\n }\n\n function handleVerifyCode(code: string) {\n getClient().verifyEmailCode(code);\n }\n\n function handleBack() {\n setEmail('');\n getClient().cancelLogin();\n }\n\n function handleRetry() {\n getClient().logout();\n if (styles.emailEnabled) {\n getClient().beginEmailLogin();\n }\n }\n\n function handleInteractiveAuthenticated() {\n const provider = interactiveAdapter?.type;\n setInteractiveAdapter(null);\n if (provider) {\n // Provider login (Privy) is done; run the normal flow so connect() + SEP-10\n // execute against the now-authenticated wallet.\n getClient().login({ provider } as PollarLoginOptions);\n }\n }\n\n return (\n <div className=\"pollar-overlay\" onClick={handleClose}>\n {configStatus !== 'ready' ? (\n <LoginModalStatus\n status={configStatus === 'error' ? 'error' : 'loading'}\n theme={theme}\n accentColor={accentColor}\n logoUrl={logoUrl ?? null}\n appName={config.application?.name ?? 'Pollar'}\n onRetry={retryConfig}\n onCancel={handleClose}\n />\n ) : interactiveAdapter ? (\n <PrivyLoginSubmodal\n adapter={interactiveAdapter}\n theme={theme}\n accentColor={accentColor}\n logoUrl={logoUrl ?? null}\n appName={config.application?.name ?? 'Pollar'}\n onBack={() => setInteractiveAdapter(null)}\n onCancel={handleClose}\n onAuthenticated={handleInteractiveAuthenticated}\n />\n ) : (\n <LoginModalTemplate\n theme={theme}\n accentColor={accentColor}\n logoUrl={logoUrl ?? null}\n emailEnabled={!!emailEnabled}\n embeddedWallets={!!embeddedWallets}\n smartWallet={smartWalletEnabled}\n providers={{\n google: !!providers?.google,\n discord: !!providers?.discord,\n x: !!providers?.x,\n github: !!providers?.github,\n apple: !!providers?.apple,\n }}\n walletAdapters={walletAdapters}\n appName={config.application?.name ?? 'Pollar'}\n email={email}\n onEmailChange={setEmail}\n onEmailSubmit={handleEmailSubmit}\n onSocialLogin={handleSocialLogin}\n onWalletConnect={handleWalletConnect}\n onLoginSmartWallet={handleLoginSmartWallet}\n onCreateSmartWallet={handleCreateSmartWallet}\n authState={authState}\n codeInputKey={codeInputKey}\n onCodeSubmit={handleVerifyCode}\n onBack={handleBack}\n onCancel={handleClose}\n onRetry={handleRetry}\n />\n )}\n </div>\n );\n}\n","'use client';\n\nimport type { RampQuote } from '@pollar/core';\n\ninterface RouteDisplayProps {\n quote: RampQuote;\n onSelect: (quote: RampQuote) => void;\n}\n\nconst RAIL_LABELS: Record<string, string> = {\n SPEI: 'SPEI (Mexico)',\n PIX: 'PIX (Brazil)',\n PSE: 'PSE (Colombia)',\n ACH: 'ACH (US)',\n};\n\nexport function RouteDisplay({ quote, onSelect }: RouteDisplayProps) {\n return (\n <div\n className=\"pollar-ramp-route-card\"\n data-recommended={quote.recommended}\n role=\"button\"\n tabIndex={0}\n onClick={() => onSelect(quote)}\n onKeyDown={(e) => e.key === 'Enter' && onSelect(quote)}\n >\n <div className=\"pollar-ramp-route-left\">\n <span className=\"pollar-ramp-route-provider\">{quote.provider}</span>\n <span className=\"pollar-ramp-route-meta\">\n {RAIL_LABELS[quote.rail] ?? quote.rail} · {quote.protocol} · {quote.estimatedTime}\n </span>\n </div>\n <div className=\"pollar-ramp-route-right\">\n <span className=\"pollar-ramp-route-fee\">{quote.fee}% fee</span>\n {quote.recommended && <span className=\"pollar-ramp-route-badge\">Best rate</span>}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport type { RampCountry, RampDirection, RampQuote, RampTxStatus } from '@pollar/core';\nimport type { CSSProperties } from 'react';\nimport { RouteDisplay } from './RouteDisplay';\nimport { CopyButton } from '../commons';\n\nexport type RampStep = 'input' | 'loading_quote' | 'select_route' | 'contact' | 'status' | 'error';\n\n// Basic client-side email check so an invalid address never round-trips to the\n// provider (which rejects it with a generic VALIDATION_ERROR).\nconst EMAIL_RE = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\n/** A collected field is complete when it's non-empty and (for email) well-formed. */\nfunction isFieldValid(spec: RampFieldSpec, raw: string | undefined): boolean {\n const value = (raw ?? '').trim();\n if (!value) return false;\n if (spec.type === 'email') return EMAIL_RE.test(value);\n return true;\n}\n\n/** A field a provider declares (via the quote) that the client must collect. */\nexport interface RampFieldSpec {\n key: string;\n label: string;\n type: 'text' | 'email' | 'tel' | 'select';\n bankType?: 'CLABE' | 'PIX' | 'PSE' | 'ACH' | 'BREB';\n /** For `type: 'select'` — dropdown choices (e.g. Stereum's Bolivian banks). */\n options?: { value: string; label: string }[];\n}\n\ninterface RampWidgetTemplateProps {\n theme: string;\n accentColor: string;\n step: RampStep;\n direction: RampDirection;\n amount: string;\n currency: string;\n country: string;\n requiredFields: RampFieldSpec[];\n fieldValues: Record<string, string>;\n countries: RampCountry[];\n countriesLoading: boolean;\n refreshing: boolean;\n quotes: RampQuote[];\n isLoading: boolean;\n // status step\n provider: string;\n txStatus: RampTxStatus | null;\n kycUrl: string | null;\n tosUrl: string | null;\n stellarTxHash: string | null;\n /** Stellar Expert URL for `stellarTxHash` (network-aware); null when unknown. */\n explorerUrl: string | null;\n depositInstructions: Record<string, unknown> | null;\n canComplete: boolean;\n completing: boolean;\n errorMsg: string | null;\n onDirectionChange: (d: RampDirection) => void;\n onAmountChange: (v: string) => void;\n onFieldChange: (key: string, value: string) => void;\n onCountryChange: (v: string) => void;\n onFindRoute: () => void;\n onSelectQuote: (q: RampQuote) => void;\n onContactContinue: () => void;\n onOpenKyc: () => void;\n onOpenTos: () => void;\n onCompleteWithdraw: () => void;\n onRetry: () => void;\n onRefresh: () => void;\n onClose: () => void;\n}\n\nconst LOADING_STEPS = ['Detecting your country…', 'Consulting providers…', 'Route found!'];\n\n/**\n * Flag emoji from a 2-letter ISO 3166-1 alpha-2 country code by mapping each\n * letter to its Regional Indicator Symbol code point (U+1F1E6 = 'A'). Returns an\n * empty string for anything that isn't a pair of ASCII letters.\n */\nfunction flagEmoji(code: string): string {\n const cc = code.trim().toUpperCase();\n if (!/^[A-Z]{2}$/.test(cc)) return '';\n const base = 0x1f1e6;\n return String.fromCodePoint(base + (cc.charCodeAt(0) - 65), base + (cc.charCodeAt(1) - 65));\n}\n\nconst STATUS_LABEL: Record<RampTxStatus, string> = {\n pending: 'Pending',\n processing: 'Processing',\n completed: 'Completed',\n failed: 'Failed',\n};\n\n// Human labels for the deposit-instruction fields REST providers (Bridge) return\n// (e.g. a Pix `br_code`, or bank details for ACH/SEPA). Unknown keys fall back to\n// the raw key so nothing is silently dropped.\nconst INSTRUCTION_LABELS: Record<string, string> = {\n br_code: 'Pix code',\n account_holder_name: 'Account holder',\n bank_name: 'Bank',\n bank_address: 'Bank address',\n bank_account_number: 'Account number',\n bank_routing_number: 'Routing number',\n iban: 'IBAN',\n bic: 'BIC',\n clabe: 'CLABE',\n amount: 'Amount',\n currency: 'Currency',\n payment_rails: 'Rails',\n};\n\ntype InstructionKind = 'text' | 'qr' | 'datetime';\ntype InstructionField = { key: string; label: string; value: string; kind: InstructionKind };\n\nfunction flattenInstructions(instr: Record<string, unknown>): InstructionField[] {\n const out: InstructionField[] = [];\n for (const [k, v] of Object.entries(instr)) {\n // A base64 QR image (e.g. Stereum's Bolivian bank QR) — render as an <img>,\n // not raw text.\n if (k === 'qrBase64') {\n if (typeof v === 'string' && v) out.push({ key: k, label: INSTRUCTION_LABELS[k] ?? 'Payment QR', value: v, kind: 'qr' });\n continue;\n }\n // Expiry timestamps come as epoch milliseconds — render as a local date/time.\n if ((k === 'expiresAt' || k === 'expires_at') && (typeof v === 'number' || typeof v === 'string')) {\n const ms = Number(v);\n if (Number.isFinite(ms) && ms > 0) {\n out.push({ key: k, label: INSTRUCTION_LABELS[k] ?? 'Expires', value: new Date(ms).toLocaleString(), kind: 'datetime' });\n }\n continue;\n }\n let value: string;\n if (typeof v === 'string' || typeof v === 'number') value = String(v);\n else if (Array.isArray(v)) value = v.filter((x) => typeof x === 'string' || typeof x === 'number').join(', ');\n else continue;\n if (!value) continue;\n out.push({ key: k, label: INSTRUCTION_LABELS[k] ?? k, value, kind: 'text' });\n }\n return out;\n}\n\nexport function RampWidgetTemplate({\n theme,\n accentColor,\n step,\n direction,\n amount,\n currency,\n country,\n requiredFields,\n fieldValues,\n countries,\n countriesLoading,\n refreshing,\n quotes,\n isLoading,\n provider,\n txStatus,\n kycUrl,\n tosUrl,\n stellarTxHash,\n explorerUrl,\n depositInstructions,\n canComplete,\n completing,\n errorMsg,\n onDirectionChange,\n onAmountChange,\n onFieldChange,\n onCountryChange,\n onFindRoute,\n onSelectQuote,\n onContactContinue,\n onOpenKyc,\n onOpenTos,\n onCompleteWithdraw,\n onRetry,\n onRefresh,\n onClose,\n}: RampWidgetTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n '--pollar-modal-padding': '2rem',\n '--pollar-modal-heading-size': '1.375rem',\n '--pollar-modal-subtitle-size': '0.9rem',\n } as CSSProperties;\n\n const stepTitle: Record<RampStep, string> = {\n input: direction === 'onramp' ? 'Buy crypto' : 'Sell crypto',\n loading_quote: 'Finding best route',\n select_route: 'Select provider',\n contact: 'Your details',\n status: direction === 'onramp' ? 'Complete your deposit' : 'Complete your withdrawal',\n error: 'Something went wrong',\n };\n\n const stepSubtitle: Record<RampStep, string> = {\n input: direction === 'onramp' ? 'Enter the amount you want to deposit' : 'Enter the amount you want to withdraw',\n loading_quote: 'Comparing providers in real time…',\n select_route: 'All prices include fees',\n contact: `${provider || 'This provider'} needs your name and email to verify you`,\n status: `Finish the flow at ${provider || 'the provider'} to continue`,\n error: 'Please try again',\n };\n\n return (\n <div className=\"pollar-modal-card pollar-ramp-modal\" style={cssVars} onClick={(e) => e.stopPropagation()}>\n <div className=\"pollar-modal-header\">\n <div className=\"pollar-ramp-header-text\">\n <h2 className=\"pollar-modal-title\">{stepTitle[step]}</h2>\n <p className=\"pollar-ramp-subtitle\">{stepSubtitle[step]}</p>\n </div>\n <div className=\"pollar-modal-header-actions\">\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onRefresh} disabled={refreshing} aria-label=\"Refresh\">\n <svg\n className={refreshing ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n {step === 'input' && (\n <>\n <div className=\"pollar-tabs\">\n <button\n type=\"button\"\n className=\"pollar-tab\"\n data-active={direction === 'onramp'}\n onClick={() => onDirectionChange('onramp')}\n >\n Buy\n </button>\n <button\n type=\"button\"\n className=\"pollar-tab\"\n data-active={direction === 'offramp'}\n onClick={() => onDirectionChange('offramp')}\n >\n Sell\n </button>\n </div>\n\n <div className=\"pollar-ramp-field\">\n <label className=\"pollar-ramp-label\">Country</label>\n {countriesLoading ? (\n <div className=\"pollar-ramp-input pollar-select-loading\">\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n <span>Loading countries…</span>\n </div>\n ) : countries.length === 0 ? (\n <div className=\"pollar-modal-error\">No ramp providers available on this network yet.</div>\n ) : (\n <select className=\"pollar-ramp-input\" value={country} onChange={(e) => onCountryChange(e.target.value)}>\n {countries.map((c) => (\n <option key={c.code} value={c.code}>\n {flagEmoji(c.code)} {c.code}\n {c.currency ? ` — ${c.currency}` : ''}\n </option>\n ))}\n </select>\n )}\n </div>\n\n <div className=\"pollar-ramp-field\">\n <label className=\"pollar-ramp-label\">Amount{currency ? ` (${currency})` : ''}</label>\n <input\n type=\"number\"\n className=\"pollar-ramp-input\"\n placeholder=\"0.00\"\n value={amount}\n min=\"0\"\n onChange={(e) => onAmountChange(e.target.value)}\n />\n </div>\n\n <div className=\"pollar-modal-actions\">\n <button type=\"button\" className=\"pollar-btn-secondary\" onClick={onClose}>\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"pollar-btn-primary\"\n disabled={!amount || isLoading || countriesLoading || countries.length === 0}\n onClick={onFindRoute}\n >\n Find best route\n </button>\n </div>\n </>\n )}\n\n {step === 'loading_quote' && (\n <div className=\"pollar-ramp-loading\">\n <div className=\"pollar-spinner pollar-ramp-loading-spinner\" />\n {LOADING_STEPS.map((text, i) => (\n <div key={i} className=\"pollar-ramp-loading-row\">\n <div className=\"pollar-ramp-loading-dot\" />\n <span>{text}</span>\n </div>\n ))}\n </div>\n )}\n\n {step === 'select_route' && (\n <>\n <div className=\"pollar-ramp-route-list\">\n {quotes.map((q, i) => (\n <RouteDisplay key={i} quote={q} onSelect={onSelectQuote} />\n ))}\n </div>\n <button type=\"button\" className=\"pollar-btn-secondary\" onClick={onClose}>\n Cancel\n </button>\n </>\n )}\n\n {step === 'contact' && (\n <>\n {requiredFields.map((f) => (\n <div key={f.key} className=\"pollar-ramp-field\">\n <label className=\"pollar-ramp-label\">{f.label}</label>\n {f.type === 'select' ? (\n <select\n className=\"pollar-ramp-input\"\n value={fieldValues[f.key] ?? ''}\n onChange={(e) => onFieldChange(f.key, e.target.value)}\n >\n <option value=\"\" disabled>\n Select…\n </option>\n {(f.options ?? []).map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n </select>\n ) : (\n <input\n type={f.type}\n className=\"pollar-ramp-input\"\n value={fieldValues[f.key] ?? ''}\n autoComplete={f.type === 'email' ? 'email' : 'off'}\n onChange={(e) => onFieldChange(f.key, e.target.value)}\n />\n )}\n {f.type === 'email' && (fieldValues[f.key] ?? '').trim() !== '' && !isFieldValid(f, fieldValues[f.key]) && (\n <span className=\"pollar-ramp-field-error\">Enter a valid email address.</span>\n )}\n </div>\n ))}\n\n <div className=\"pollar-modal-actions\">\n <button type=\"button\" className=\"pollar-btn-secondary\" onClick={onRetry}>\n Back\n </button>\n <button\n type=\"button\"\n className=\"pollar-btn-primary\"\n disabled={requiredFields.some((f) => !isFieldValid(f, fieldValues[f.key])) || isLoading}\n onClick={onContactContinue}\n >\n {isLoading ? (\n <>\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n Starting…\n </>\n ) : (\n 'Continue'\n )}\n </button>\n </div>\n </>\n )}\n\n {step === 'status' && (\n <div className=\"pollar-ramp-payment\">\n <div className=\"pollar-ramp-payment-field\">\n <span className=\"pollar-ramp-payment-label\">Provider</span>\n <div className=\"pollar-ramp-payment-value\">\n <code>{provider}</code>\n </div>\n </div>\n\n <div className=\"pollar-ramp-payment-field\">\n <span className=\"pollar-ramp-payment-label\">Status</span>\n <div className=\"pollar-ramp-payment-value\">\n <code style={{ color: txStatus === 'completed' ? 'var(--pollar-success-text)' : undefined }}>\n {txStatus ? STATUS_LABEL[txStatus] : 'Processing'}\n </code>\n {txStatus !== 'completed' && txStatus !== 'failed' && (\n <span className=\"pollar-spinner pollar-spinner-sm\" aria-label=\"Checking status\" />\n )}\n </div>\n </div>\n\n {stellarTxHash && (\n <div className=\"pollar-ramp-payment-field\">\n <span className=\"pollar-ramp-payment-label\">Stellar tx</span>\n <div className=\"pollar-ramp-payment-value\" style={{ display: 'flex', alignItems: 'center', gap: 6 }}>\n <code style={{ flex: 1, wordBreak: 'break-all' }}>\n {stellarTxHash.slice(0, 8)}…{stellarTxHash.slice(-8)}\n </code>\n <CopyButton value={stellarTxHash} label=\"Copy transaction hash\" />\n {explorerUrl && (\n <a\n href={explorerUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"pollar-copy-btn\"\n aria-label=\"View on Stellar Expert\"\n title=\"View on Stellar Expert\"\n >\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden>\n <path\n d=\"M6 3H3v8h8V8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8.5 2.5h3v3M11 3L6.5 7.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n )}\n </div>\n </div>\n )}\n\n {depositInstructions &&\n txStatus !== 'completed' &&\n flattenInstructions(depositInstructions).map(({ key, label, value, kind }) => (\n <div key={key} className=\"pollar-ramp-payment-field\">\n <span className=\"pollar-ramp-payment-label\">{label}</span>\n <div className=\"pollar-ramp-payment-value\">\n {kind === 'qr' ? (\n <img\n src={value.startsWith('data:') ? value : `data:image/png;base64,${value}`}\n alt={label}\n style={{ width: '100%', maxWidth: 220, height: 'auto', display: 'block', margin: '0 auto' }}\n />\n ) : kind === 'datetime' ? (\n <span>{value}</span>\n ) : (\n <span style={{ display: 'flex', alignItems: 'center', gap: 6 }}>\n <code style={{ flex: 1, wordBreak: 'break-all' }}>{value}</code>\n <CopyButton value={value} label={`Copy ${label}`} />\n </span>\n )}\n </div>\n </div>\n ))}\n\n {/* KYC / ToS onboarding steps at the provider. Hidden once deposit\n instructions exist — by then onboarding is done and the only\n remaining action is to pay using the instructions above. */}\n {tosUrl && !depositInstructions && txStatus !== 'completed' && (\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={onOpenTos}>\n Accept terms at {provider}\n </button>\n )}\n\n {kycUrl && !depositInstructions && txStatus !== 'completed' && (\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={onOpenKyc}>\n Continue at {provider}\n </button>\n )}\n\n {canComplete && (\n <button type=\"button\" className=\"pollar-btn-primary\" disabled={completing} onClick={onCompleteWithdraw}>\n {completing ? (\n <>\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n Submitting…\n </>\n ) : (\n \"I've completed KYC — withdraw\"\n )}\n </button>\n )}\n\n {errorMsg && (\n <p className=\"pollar-ramp-payment-note\" style={{ color: 'var(--pollar-error-text)' }}>\n {errorMsg}\n </p>\n )}\n\n <button type=\"button\" className=\"pollar-btn-secondary\" onClick={onClose}>\n {txStatus === 'completed' ? 'Done' : 'Close'}\n </button>\n </div>\n )}\n\n {step === 'error' && (\n <div className=\"pollar-ramp-payment\">\n <p className=\"pollar-ramp-payment-note\" style={{ color: 'var(--pollar-error-text)' }}>\n {errorMsg ?? 'Unexpected error.'}\n </p>\n <div className=\"pollar-modal-actions\">\n <button type=\"button\" className=\"pollar-btn-secondary\" onClick={onClose}>\n Close\n </button>\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={onRetry}>\n Try again\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport type { RampCountry, RampDirection, RampQuote, RampsOfframpBody, RampsOnrampBody, RampTxStatus } from '@pollar/core';\nimport { useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport type { RampFieldSpec, RampStep } from './RampWidgetTemplate';\nimport { RampWidgetTemplate } from './RampWidgetTemplate';\nimport '../shared.css';\nimport './RampWidget.css';\n\ninterface RampWidgetProps {\n onClose: () => void;\n}\n\nconst TERMINAL: RampTxStatus[] = ['completed', 'failed'];\n\n/** Fields the quote declares the client must collect (empty for SEP-24). */\nfunction requiredFieldsOf(quote: RampQuote): RampFieldSpec[] {\n return (quote as { requiredFields?: RampFieldSpec[] }).requiredFields ?? [];\n}\n\n// Common shape of the on/off-ramp, complete and signature responses.\ninterface RampResult {\n txId: string;\n provider: string;\n status: RampTxStatus;\n kycUrl?: string;\n // Bridge splits onboarding into two hosted steps: KYC (identity) and ToS\n // acceptance. Both must be completed before the customer activates.\n tosUrl?: string;\n stellarTxHash?: string;\n pendingSignature?: { unsignedXdr: string; action: 'sep10' | 'withdraw_payment' };\n // REST providers (Bridge) return deposit instructions as data (e.g. a Pix\n // `br_code` / bank details for on-ramp) instead of an interactive URL.\n depositInstructions?: Record<string, unknown>;\n}\n\nexport function RampWidget({ onClose }: RampWidgetProps) {\n const { getClient, signTx, wallet, styles, network } = usePollar();\n const walletAddress = wallet?.address ?? '';\n const client = getClient();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const [step, setStep] = useState<RampStep>('input');\n const [direction, setDirection] = useState<RampDirection>('onramp');\n const [amount, setAmount] = useState('');\n const [currency, setCurrency] = useState('');\n const [country, setCountry] = useState('');\n // Values for the fields a provider declares via the quote's `requiredFields`\n // (e.g. Bridge on-ramp: full name + email; off-ramp: + Pix key). Keyed by\n // field key; only collected when the selected route needs them.\n const [fieldValues, setFieldValues] = useState<Record<string, string>>({});\n const setFieldValue = (key: string, value: string) => setFieldValues((v) => ({ ...v, [key]: value }));\n const [countries, setCountries] = useState<RampCountry[]>([]);\n const [countriesLoading, setCountriesLoading] = useState(true);\n const [refreshing, setRefreshing] = useState(false);\n const [quotes, setQuotes] = useState<RampQuote[]>([]);\n const [selectedQuote, setSelectedQuote] = useState<RampQuote | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n // status step\n const [txId, setTxId] = useState<string | null>(null);\n const [provider, setProvider] = useState('');\n const [kycUrl, setKycUrl] = useState<string | null>(null);\n const [tosUrl, setTosUrl] = useState<string | null>(null);\n const [txStatus, setTxStatus] = useState<RampTxStatus | null>(null);\n const [stellarTxHash, setStellarTxHash] = useState<string | null>(null);\n const [depositInstructions, setDepositInstructions] = useState<Record<string, unknown> | null>(null);\n const [completing, setCompleting] = useState(false);\n const [errorMsg, setErrorMsg] = useState<string | null>(null);\n\n const directionRef = useRef(direction);\n directionRef.current = direction;\n\n // Poll the anchor transaction status while on the status step until terminal.\n useEffect(() => {\n if (step !== 'status' || !txId) return;\n if (txStatus && TERMINAL.includes(txStatus)) return;\n let active = true;\n const id = setInterval(async () => {\n try {\n const tx = await client.getRampTransaction(txId);\n if (!active) return;\n setTxStatus(tx.status);\n if (tx.stellarTxHash) setStellarTxHash(tx.stellarTxHash);\n if (tx.kycUrl) setKycUrl(tx.kycUrl);\n // depositInstructions is returned by REST providers (Bridge) — e.g. a Pix\n // `br_code` / bank details for on-ramp.\n if (tx.depositInstructions) setDepositInstructions(tx.depositInstructions);\n if (TERMINAL.includes(tx.status)) clearInterval(id);\n } catch {\n /* transient — keep polling */\n }\n }, 5000);\n return () => {\n active = false;\n clearInterval(id);\n };\n }, [step, txId, txStatus, client]);\n\n /**\n * Fetch the ramp countries supported on the app's network. When `resetSelection`\n * is set (initial load) — or the current selection is no longer offered — pick\n * the first country and adopt its primary currency.\n */\n async function loadCountries(resetSelection: boolean) {\n setCountriesLoading(true);\n try {\n const { countries: list } = await client.getRampCountries();\n setCountries(list);\n const first = list[0];\n const stillValid = list.some((c) => c.code === country);\n if (first && (resetSelection || !stillValid)) {\n setCountry(first.code);\n if (first.currency) setCurrency(first.currency);\n }\n } catch {\n setCountries([]);\n } finally {\n setCountriesLoading(false);\n }\n }\n\n // Load the supported countries when the widget opens.\n useEffect(() => {\n loadCountries(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function handleCountryChange(code: string) {\n setCountry(code);\n const match = countries.find((c) => c.code === code);\n if (match?.currency) setCurrency(match.currency);\n }\n\n // Refresh the data backing the current step: always the country list, plus the\n // quotes (select_route) or the anchor transaction (status).\n async function handleRefresh() {\n if (refreshing) return;\n setRefreshing(true);\n try {\n await loadCountries(false);\n if (step === 'select_route') {\n const result = await client.getRampsQuote({ country, amount: Number(amount), currency, direction });\n setQuotes(result.quotes ?? []);\n } else if (step === 'status' && txId) {\n const tx = await client.getRampTransaction(txId);\n setTxStatus(tx.status);\n if (tx.stellarTxHash) setStellarTxHash(tx.stellarTxHash);\n if (tx.kycUrl) setKycUrl(tx.kycUrl);\n if (tx.depositInstructions) setDepositInstructions(tx.depositInstructions);\n }\n } catch {\n /* transient — leave the current data in place */\n } finally {\n setRefreshing(false);\n }\n }\n\n function resetToInput() {\n setStep('input');\n setQuotes([]);\n setSelectedQuote(null);\n // Clear the collected provider fields (name/email/etc.) so a retry re-shows\n // the 'contact' step. Otherwise a stale (possibly invalid) value keeps the\n // field non-empty, `handleSelectQuote` treats it as complete, skips the step\n // and replays the same failing request.\n setFieldValues({});\n setTxId(null);\n setProvider('');\n setKycUrl(null);\n setTosUrl(null);\n setTxStatus(null);\n setStellarTxHash(null);\n setDepositInstructions(null);\n setErrorMsg(null);\n }\n\n /**\n * EXTERNAL wallets (Freighter/Albedo): the backend returns an unsigned XDR the\n * user must sign locally, then we resume the flow. `sep10` yields the anchor\n * session (kycUrl); `withdraw_payment` broadcasts the on-chain withdrawal.\n */\n async function resumeWithSignature(id: string, ps: NonNullable<RampResult['pendingSignature']>) {\n const outcome = await signTx(ps.unsignedXdr);\n if (outcome.status !== 'signed') {\n setErrorMsg(outcome.message ?? outcome.details ?? 'Signing was cancelled.');\n setStep('error');\n return;\n }\n const result = (await client.submitRampSignature(id, {\n signedXdr: outcome.signedXdr,\n action: ps.action,\n })) as RampResult;\n await applyResult(result);\n }\n\n async function applyResult(result: RampResult) {\n setTxId(result.txId);\n setProvider(result.provider);\n if (result.pendingSignature) {\n await resumeWithSignature(result.txId, result.pendingSignature);\n return;\n }\n setKycUrl(result.kycUrl ?? null);\n setTosUrl(result.tosUrl ?? null);\n setTxStatus(result.status);\n setStellarTxHash(result.stellarTxHash ?? null);\n setDepositInstructions(result.depositInstructions ?? null);\n setStep('status');\n }\n\n async function handleFindRoute() {\n setStep('loading_quote');\n setIsLoading(true);\n setErrorMsg(null);\n try {\n const result = await client.getRampsQuote({ country, amount: Number(amount), currency, direction });\n const list = result.quotes ?? [];\n if (list.length === 0) {\n setErrorMsg(`No ramp providers available for ${country} yet.`);\n setStep('error');\n return;\n }\n setQuotes(list);\n setStep('select_route');\n } catch (e) {\n setErrorMsg(e instanceof Error ? e.message : 'Failed to fetch quotes.');\n setStep('error');\n } finally {\n setIsLoading(false);\n }\n }\n\n // Each quote declares the fields it needs (`requiredFields`). If any are unset,\n // collect them in the 'contact' step first; otherwise start immediately.\n function handleSelectQuote(quote: RampQuote) {\n setSelectedQuote(quote);\n setErrorMsg(null);\n const fields = requiredFieldsOf(quote);\n const missing = fields.some((f) => !(fieldValues[f.key] ?? '').trim());\n if (fields.length > 0 && missing) {\n setStep('contact');\n return;\n }\n void startRamp(quote);\n }\n\n function handleContactContinue() {\n if (selectedQuote) void startRamp(selectedQuote);\n }\n\n async function startRamp(quote: RampQuote) {\n setIsLoading(true);\n setErrorMsg(null);\n try {\n const base: Record<string, unknown> = { quoteId: quote.quoteId, amount: Number(amount), currency, country };\n if (walletAddress) base.walletAddress = walletAddress;\n // Map each declared field to the request body: a field with `bankType`\n // becomes `bankDetails`; the standard body fields map by name; any other\n // provider-specific field (e.g. Stereum's bankCode / account holder) goes\n // into `fields`, which the backend reads per provider.\n const STANDARD_BODY_KEYS = new Set(['email', 'fullName', 'taxId', 'qrCode']);\n const extraFields: Record<string, string> = {};\n for (const f of requiredFieldsOf(quote)) {\n const val = (fieldValues[f.key] ?? '').trim();\n if (!val) continue;\n if (f.bankType) base.bankDetails = { type: f.bankType, value: val };\n else if (STANDARD_BODY_KEYS.has(f.key)) base[f.key] = val;\n else extraFields[f.key] = val;\n }\n if (Object.keys(extraFields).length > 0) base.fields = extraFields;\n const result = (\n direction === 'onramp'\n ? await client.createOnRamp(base as RampsOnrampBody)\n : await client.createOffRamp(base as RampsOfframpBody)\n ) as RampResult;\n await applyResult(result);\n } catch (e) {\n setErrorMsg(e instanceof Error ? e.message : 'Failed to start the ramp.');\n setStep('error');\n } finally {\n setIsLoading(false);\n }\n }\n\n function handleOpenKyc() {\n if (kycUrl) window.open(kycUrl, '_blank', 'noopener,noreferrer');\n }\n\n function handleOpenTos() {\n if (tosUrl) window.open(tosUrl, '_blank', 'noopener,noreferrer');\n }\n\n async function handleCompleteWithdraw() {\n if (!txId) return;\n setCompleting(true);\n setErrorMsg(null);\n try {\n const result = (await client.completeWithdraw(txId)) as RampResult;\n if (result.pendingSignature) {\n await resumeWithSignature(txId, result.pendingSignature);\n return;\n }\n setTxStatus(result.status);\n setStellarTxHash(result.stellarTxHash ?? null);\n } catch (e) {\n const msg = e instanceof Error ? e.message : '';\n setErrorMsg(\n msg.includes('KYC') ? 'Finish KYC at the provider first, then try again.' : msg || 'Failed to complete the withdrawal.',\n );\n } finally {\n setCompleting(false);\n }\n }\n\n const canComplete = direction === 'offramp' && step === 'status' && txStatus !== 'completed' && !stellarTxHash;\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <RampWidgetTemplate\n theme={theme}\n accentColor={accentColor}\n step={step}\n direction={direction}\n amount={amount}\n currency={currency}\n country={country}\n requiredFields={selectedQuote ? requiredFieldsOf(selectedQuote) : []}\n fieldValues={fieldValues}\n countries={countries}\n countriesLoading={countriesLoading}\n refreshing={refreshing}\n quotes={quotes}\n isLoading={isLoading}\n provider={provider}\n txStatus={txStatus}\n kycUrl={kycUrl}\n tosUrl={tosUrl}\n stellarTxHash={stellarTxHash}\n explorerUrl={\n stellarTxHash\n ? `https://stellar.expert/explorer/${network === 'mainnet' ? 'public' : 'testnet'}/tx/${stellarTxHash}`\n : null\n }\n depositInstructions={depositInstructions}\n canComplete={canComplete}\n completing={completing}\n errorMsg={errorMsg}\n onDirectionChange={setDirection}\n onAmountChange={setAmount}\n onFieldChange={setFieldValue}\n onCountryChange={handleCountryChange}\n onFindRoute={handleFindRoute}\n onSelectQuote={handleSelectQuote}\n onContactContinue={handleContactContinue}\n onOpenKyc={handleOpenKyc}\n onOpenTos={handleOpenTos}\n onCompleteWithdraw={handleCompleteWithdraw}\n onRetry={resetToInput}\n onRefresh={handleRefresh}\n onClose={onClose}\n />\n </div>\n );\n}\n","/**\n * QRCode component — vendored from react-qr-code (MIT License)\n * Original: https://github.com/rosskhanas/react-qr-code\n * Adapted: removed prop-types dependency, added TypeScript types.\n *\n * MIT License\n * Copyright (c) 2018 Ross Khanas\n */\n\n// @ts-expect-error — qr.js ships CJS without type declarations; bundled via noExternal\nimport ErrorCorrectLevel from 'qr.js/lib/ErrorCorrectLevel';\n// @ts-expect-error — same as above\nimport QRCodeImpl from 'qr.js/lib/QRCode';\nimport { forwardRef, type SVGProps } from 'react';\n\n// ─── Internal SVG renderer ────────────────────────────────────────────────────\n\ninterface QRCodeSvgProps extends SVGProps<SVGSVGElement> {\n bgColor: string;\n bgD: string;\n fgColor: string;\n fgD: string;\n size: number;\n title?: string;\n viewBoxSize: number;\n xmlns?: string | undefined;\n}\n\nconst QRCodeSvg = forwardRef<SVGSVGElement, QRCodeSvgProps>(function QRCodeSvg(\n { bgColor, bgD, fgD, fgColor, size, title, viewBoxSize, xmlns = 'http://www.w3.org/2000/svg', ...props },\n ref,\n) {\n return (\n <svg {...props} height={size} ref={ref} viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`} width={size} xmlns={xmlns}>\n {title ? <title>{title}</title> : null}\n <path d={bgD} fill={bgColor} />\n <path d={fgD} fill={fgColor} />\n </svg>\n );\n});\n\nQRCodeSvg.displayName = 'QRCodeSvg';\n\n// ─── Public component ─────────────────────────────────────────────────────────\n\nexport interface QRCodeProps extends SVGProps<SVGSVGElement> {\n value: string;\n size?: number;\n bgColor?: string;\n fgColor?: string;\n level?: 'L' | 'M' | 'Q' | 'H';\n title?: string;\n}\n\nfunction bytesToBinaryString(bytes: number[]): string {\n return bytes.map((b) => String.fromCharCode(b & 0xff)).join('');\n}\n\nfunction encodeStringToUtf8Bytes(input: string): number[] {\n return Array.from(new TextEncoder().encode(input));\n}\n\nexport const QRCode = forwardRef<SVGSVGElement, QRCodeProps>(function QRCode(\n { bgColor = '#FFFFFF', fgColor = '#000000', level = 'L', size = 256, value, ...props },\n ref,\n) {\n const qrcode = new QRCodeImpl(-1, ErrorCorrectLevel[level]);\n const utf8Bytes = encodeStringToUtf8Bytes(value);\n const binaryString = bytesToBinaryString(utf8Bytes);\n qrcode.addData(binaryString, 'Byte');\n qrcode.make();\n\n const cells: boolean[][] = qrcode.modules;\n\n return (\n <QRCodeSvg\n {...props}\n bgColor={bgColor}\n bgD={cells\n .map((row, rowIndex) =>\n row.map((cell, cellIndex) => (!cell ? `M ${cellIndex} ${rowIndex} l 1 0 0 1 -1 0 Z` : '')).join(' '),\n )\n .join(' ')}\n fgColor={fgColor}\n fgD={cells\n .map((row, rowIndex) =>\n row.map((cell, cellIndex) => (cell ? `M ${cellIndex} ${rowIndex} l 1 0 0 1 -1 0 Z` : '')).join(' '),\n )\n .join(' ')}\n ref={ref}\n size={size}\n viewBoxSize={cells.length}\n />\n );\n});\n","'use client';\n\nimport { type CSSProperties } from 'react';\nimport { QRCode } from '../../lib/qr-code';\nimport { PollarModalFooter } from '../commons';\n\nexport interface ReceiveModalTemplateProps {\n theme: string;\n accentColor: string;\n walletAddress: string;\n copied: boolean;\n onCopy: () => void;\n onClose: () => void;\n}\n\nexport function ReceiveModalTemplate({\n theme,\n accentColor,\n walletAddress,\n copied,\n onCopy,\n onClose,\n}: ReceiveModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n return (\n <div\n className=\"pollar-modal-card pollar-receive-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Receive</h2>\n <div className=\"pollar-modal-header-actions\">\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n {/* QR code */}\n {walletAddress ? (\n <>\n <div className=\"pollar-receive-qr\">\n <QRCode value={walletAddress} size={180} fgColor={isDark ? '#ffffff' : '#111827'} bgColor=\"transparent\" />\n </div>\n\n <p className=\"pollar-receive-instructions\">\n Share your Stellar address to receive any asset. Only send Stellar assets to this address.\n </p>\n\n {/* Address + copy */}\n <div className=\"pollar-receive-address-row\">\n <span className=\"pollar-receive-address\">{walletAddress}</span>\n <button type=\"button\" className=\"pollar-receive-copy-btn\" onClick={onCopy} aria-label=\"Copy address\">\n {copied ? (\n <>\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden>\n <circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"currentColor\" />\n <path\n d=\"M3.5 7l2.5 2.5 4.5-5\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n Copied!\n </>\n ) : (\n <>\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <rect x=\"4\" y=\"4\" width=\"8\" height=\"8\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M3 9H2a1 1 0 01-1-1V2a1 1 0 011-1h6a1 1 0 011 1v1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n Copy address\n </>\n )}\n </button>\n </div>\n </>\n ) : (\n <div className=\"pollar-modal-empty\">No wallet connected.</div>\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport './ReceiveModal.css';\nimport { ReceiveModalTemplate } from './ReceiveModalTemplate';\n\ninterface ReceiveModalProps {\n onClose: () => void;\n}\n\nexport function ReceiveModal({ onClose }: ReceiveModalProps) {\n const { wallet, styles } = usePollar();\n const walletAddress = wallet?.address ?? '';\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n const [copied, setCopied] = useState(false);\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(\n () => () => {\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n function handleCopy() {\n if (!walletAddress) return;\n navigator.clipboard.writeText(walletAddress).then(() => {\n setCopied(true);\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n copyTimerRef.current = null;\n setCopied(false);\n }, 2000);\n });\n }\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <ReceiveModalTemplate\n theme={theme}\n accentColor={accentColor}\n walletAddress={walletAddress}\n copied={copied}\n onCopy={handleCopy}\n onClose={onClose}\n />\n </div>\n );\n}\n","'use client';\n\n// ─── Shared asset picker ──────────────────────────────────────────────────────\n// One asset <select> used by both the Send and Swap modals: groups options into\n// \"App assets\" (enabled by the app) and \"Other assets\" (everything else, incl.\n// native XLM), shows a \"— X available\" suffix, and renders a skeleton shimmer\n// while loading. The parent auto-selects the first option, so there is no\n// \"Select asset\" placeholder in the normal flow.\n// ─────────────────────────────────────────────────────────────────────────────\n\nimport type { ReactNode } from 'react';\nimport './send-modal/SendModal.css';\nimport './shared.css';\n\n/** A selectable asset, normalized across balance / enabled / catalog records. */\nexport interface AssetSelectOption {\n /** Stable unique key: `code:issuer` or `code:native`. */\n key: string;\n code: string;\n /** Spendable amount shown as \"— X available\"; omit to hide the suffix. */\n available?: string | undefined;\n /** App-enabled asset? Drives the App / Other grouping. */\n enabledInApp?: boolean | undefined;\n}\n\ninterface AssetSelectProps {\n label: string;\n value: string;\n options: AssetSelectOption[];\n onChange: (key: string) => void;\n /** Show a loading indicator instead of the select. */\n loading?: boolean;\n /** When set, `loading` renders a centered spinner + this label inside a\n * select-shaped box (like the ramp widget) instead of the skeleton shimmer. */\n loadingLabel?: string;\n disabled?: boolean;\n appGroupLabel?: string;\n otherGroupLabel?: string;\n /** Extra content rendered inside the field, below the select (e.g. a\n * \"+ Add a token\" toggle). Hidden while loading. */\n children?: ReactNode;\n}\n\nfunction formatAmount(value: string): string {\n const n = parseFloat(value);\n return isNaN(n) ? value : n.toLocaleString(undefined, { maximumFractionDigits: 7 });\n}\n\nconst optionLabel = (o: AssetSelectOption): string =>\n o.available !== undefined ? `${o.code} — ${formatAmount(o.available)} available` : o.code;\n\nexport function AssetSelect({\n label,\n value,\n options,\n onChange,\n loading = false,\n loadingLabel,\n disabled = false,\n appGroupLabel = 'App assets',\n otherGroupLabel = 'Other assets',\n children,\n}: AssetSelectProps) {\n const appAssets = options.filter((o) => o.enabledInApp);\n const otherAssets = options.filter((o) => !o.enabledInApp);\n\n return (\n <div className=\"pollar-send-field\">\n <label className=\"pollar-send-label\">{label}</label>\n {loading ? (\n loadingLabel ? (\n <div className=\"pollar-input pollar-select-loading\">\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n <span>{loadingLabel}</span>\n </div>\n ) : (\n <div className=\"pollar-send-skeleton\" />\n )\n ) : (\n <select\n className=\"pollar-input pollar-send-select\"\n value={value}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value)}\n >\n {/* Only present before the parent auto-selects (or when there are no\n options); hidden so it never shows in the open dropdown. */}\n {value === '' && <option value=\"\" disabled hidden />}\n {appAssets.length > 0 && (\n <optgroup label={appGroupLabel}>\n {appAssets.map((o) => (\n <option key={o.key} value={o.key}>\n {optionLabel(o)}\n </option>\n ))}\n </optgroup>\n )}\n {otherAssets.length > 0 && (\n <optgroup label={otherGroupLabel}>\n {otherAssets.map((o) => (\n <option key={o.key} value={o.key}>\n {optionLabel(o)}\n </option>\n ))}\n </optgroup>\n )}\n </select>\n )}\n {!loading && children}\n </div>\n );\n}\n","'use client';\n\nimport { TransactionState, WalletId, WalletType } from '@pollar/core';\nimport { LOGO_ALBEDO, LOGO_FREIGHTER, LOGO_POLLAR } from '../../constants';\nimport { ModalStatusBanner } from '../commons';\n\nconst STATUS_MESSAGES: Record<TransactionState['step'], string> = {\n idle: '',\n building: 'Building transaction…',\n built: 'Ready to sign and send',\n signing: 'Signing transaction…',\n signed: 'Signed — ready to submit',\n submitting: 'Submitting transaction…',\n submitted: 'Submitted — waiting for confirmation…',\n 'signing-submitting': 'Signing and submitting transaction…',\n 'building-signing-submitting': 'Processing transaction…',\n success: 'Transaction sent successfully',\n error: 'Transaction failed',\n};\n\n/** Step values that represent in-flight work (spinner / non-cancellable UI). */\nconst IN_FLIGHT_STEPS = new Set<TransactionState['step']>([\n 'building',\n 'signing',\n 'submitting',\n 'submitted',\n 'signing-submitting',\n 'building-signing-submitting',\n]);\n\n/** Step values that should show the transaction details panel. */\nconst SHOW_DETAILS_STEPS = new Set<TransactionState['step']>([\n 'built',\n 'signing',\n 'signed',\n 'submitting',\n 'submitted',\n 'signing-submitting',\n 'success',\n]);\n\nexport interface TxStatusViewProps {\n transaction: TransactionState;\n showXdr: boolean;\n copied: boolean;\n explorerUrl: string | null;\n walletType?: WalletId | null | undefined;\n onSignAndSend: () => void;\n onToggleXdr: () => void;\n onCopyHash: () => void;\n onRetry?: (() => void) | undefined;\n onDone: () => void;\n}\n\nexport function TxStatusView({\n transaction,\n showXdr,\n copied,\n explorerUrl,\n walletType,\n onSignAndSend,\n onToggleXdr,\n onCopyHash,\n onRetry,\n onDone,\n}: TxStatusViewProps) {\n const buildData = 'buildData' in transaction ? transaction.buildData : null;\n const hash = transaction.step === 'success' ? transaction.hash : null;\n const errorDetails = transaction.step === 'error' ? (transaction.details ?? null) : null;\n\n const isBuilt = transaction.step === 'built';\n const isInFlight = IN_FLIGHT_STEPS.has(transaction.step);\n const isSuccess = transaction.step === 'success';\n const isError = transaction.step === 'error';\n const showDetails = buildData !== null && SHOW_DETAILS_STEPS.has(transaction.step);\n\n const walletImg =\n walletType === WalletType.FREIGHTER ? LOGO_FREIGHTER : walletType === WalletType.ALBEDO ? LOGO_ALBEDO : LOGO_POLLAR;\n\n const walletAlt = walletType === WalletType.FREIGHTER ? 'Freighter' : walletType === WalletType.ALBEDO ? 'Albedo' : 'Pollar';\n\n return (\n <>\n {showDetails && buildData && (\n <>\n <div className=\"pollar-tx-summary\">\n <p className=\"pollar-tx-summary-title\">Details</p>\n <ul className=\"pollar-tx-summary-lines\">\n {buildData.summary.lines.map((line, i) => (\n <li key={i} className=\"pollar-tx-summary-line\">\n {line}\n </li>\n ))}\n </ul>\n </div>\n <div className=\"pollar-tx-meta\">\n <div className=\"pollar-tx-meta-item\">\n <span className=\"pollar-tx-meta-label\">Network</span>\n <span className=\"pollar-tx-meta-value\">{buildData.summary.network}</span>\n </div>\n <div className=\"pollar-tx-meta-item\">\n <span className=\"pollar-tx-meta-label\">Fee</span>\n <span className=\"pollar-tx-meta-value\">{buildData.summary.fee}</span>\n </div>\n </div>\n <div className=\"pollar-tx-xdr\">\n <button className=\"pollar-tx-xdr-toggle\" onClick={onToggleXdr}>\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n aria-hidden\n style={{ transform: showXdr ? 'rotate(90deg)' : 'rotate(0deg)', transition: 'transform 150ms' }}\n >\n <path d=\"M4 2l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n Raw transaction (XDR)\n </button>\n {showXdr && <pre className=\"pollar-tx-xdr-content\">{buildData.unsignedXdr}</pre>}\n </div>\n </>\n )}\n\n {isError && errorDetails && (\n <div className=\"pollar-tx-error-details\">\n <p className=\"pollar-tx-error-details-label\">Error details</p>\n <pre className=\"pollar-tx-error-details-content\">{errorDetails}</pre>\n </div>\n )}\n\n {isBuilt && (\n <button className=\"pollar-btn-primary pollar-tx-sign-btn\" onClick={onSignAndSend}>\n Sign & Send\n </button>\n )}\n\n {(isInFlight || isSuccess || isError) && (\n <div className=\"pollar-tx-wallet-spinner\">\n <div className=\"pollar-tx-spinner-ring\">\n <svg\n viewBox=\"0 0 88 88\"\n width=\"88\"\n height=\"88\"\n className={`pollar-tx-spinner-svg${isInFlight ? ' pollar-tx-spinner-rotating' : ''}`}\n aria-hidden\n >\n <circle cx=\"44\" cy=\"44\" r=\"36\" fill=\"none\" stroke=\"var(--pollar-border)\" strokeWidth=\"3\" />\n <circle\n cx=\"44\"\n cy=\"44\"\n r=\"36\"\n fill=\"none\"\n stroke={\n isSuccess ? 'var(--pollar-success-text)' : isError ? 'var(--pollar-error-text)' : 'var(--pollar-accent)'\n }\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeDasharray={isInFlight ? '169.6 56.6' : '999 0'}\n transform=\"rotate(-90 44 44)\"\n style={{ transition: isInFlight ? 'none' : 'stroke 400ms, stroke-dasharray 400ms' }}\n />\n </svg>\n <div className=\"pollar-tx-wallet-icon\">\n <img src={walletImg} alt={walletAlt} className=\"pollar-tx-wallet-img\" />\n </div>\n </div>\n\n {isInFlight && (\n <p className=\"pollar-tx-spinner-label\">\n {walletType === WalletType.FREIGHTER\n ? 'Waiting for Freighter…'\n : walletType === WalletType.ALBEDO\n ? 'Waiting for Albedo…'\n : 'Signing and sending…'}\n </p>\n )}\n\n {isError && onRetry && 'buildData' in transaction && transaction.buildData && (\n <button className=\"pollar-btn-secondary pollar-tx-retry-btn\" onClick={onRetry}>\n Try again\n </button>\n )}\n </div>\n )}\n\n {isSuccess && hash && (\n <div className=\"pollar-tx-result\">\n <span className=\"pollar-tx-result-label\">Transaction hash</span>\n <span className=\"pollar-tx-result-hash\">{hash}</span>\n <div className=\"pollar-tx-result-actions\">\n <button className=\"pollar-tx-result-btn\" onClick={onCopyHash}>\n {copied ? (\n <>\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden>\n <circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"currentColor\" />\n <path\n d=\"M3.5 7l2.5 2.5 4.5-5\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n Copied!\n </>\n ) : (\n <>\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <rect x=\"4\" y=\"4\" width=\"8\" height=\"8\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M3 9H2a1 1 0 01-1-1V2a1 1 0 011-1h6a1 1 0 011 1v1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n Copy hash\n </>\n )}\n </button>\n {explorerUrl && (\n <a className=\"pollar-tx-result-btn\" href={explorerUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <path\n d=\"M5 2H2a1 1 0 00-1 1v8a1 1 0 001 1h8a1 1 0 001-1V8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M8 1h4m0 0v4m0-4L6 7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n View on Explorer\n </a>\n )}\n </div>\n </div>\n )}\n\n {isSuccess && (\n <button className=\"pollar-btn-primary pollar-tx-sign-btn\" onClick={onDone}>\n Done\n </button>\n )}\n\n <ModalStatusBanner\n message={STATUS_MESSAGES[transaction.step]}\n status={isError ? 'ERROR' : isInFlight ? 'LOADING' : isSuccess ? 'SUCCESS' : 'NONE'}\n />\n </>\n );\n}\n","'use client';\n\nimport { TransactionState, WalletBalanceRecord, WalletId } from '@pollar/core';\nimport { type CSSProperties } from 'react';\nimport { AssetSelect } from '../AssetSelect';\nimport { PollarModalFooter } from '../commons';\nimport { TxStatusView } from '../transaction-modal/TxStatusView';\n\nfunction formatBalance(balance: string): string {\n const n = parseFloat(balance);\n return isNaN(n) ? balance : n.toLocaleString(undefined, { maximumFractionDigits: 7 });\n}\n\nfunction assetKey(record: WalletBalanceRecord): string {\n return `${record.code}:${record.issuer ?? 'native'}`;\n}\n\nexport interface SendModalTemplateProps {\n theme: string;\n accentColor: string;\n step: 'form' | 'tx';\n txTitle: string;\n assets: WalletBalanceRecord[];\n selectedAsset: WalletBalanceRecord | null;\n amount: string;\n destination: string;\n formError: string;\n isLoadingBalance: boolean;\n transaction: TransactionState;\n showXdr: boolean;\n copied: boolean;\n explorerUrl: string | null;\n walletType?: WalletId | null | undefined;\n showBack: boolean;\n isInProgress: boolean;\n onClose: () => void;\n onBack: () => void;\n onRefresh: () => void;\n onSelectAsset: (asset: WalletBalanceRecord) => void;\n onAmountChange: (value: string) => void;\n onDestinationChange: (value: string) => void;\n onSubmit: () => void;\n onSignAndSend: () => void;\n onToggleXdr: () => void;\n onCopyHash: () => void;\n onRetry: () => void;\n onDone: () => void;\n}\n\nexport function SendModalTemplate({\n theme,\n accentColor,\n step,\n txTitle,\n assets,\n selectedAsset,\n amount,\n destination,\n formError,\n isLoadingBalance,\n transaction,\n showXdr,\n copied,\n explorerUrl,\n walletType,\n showBack,\n isInProgress,\n onClose,\n onBack,\n onRefresh,\n onSelectAsset,\n onAmountChange,\n onDestinationChange,\n onSubmit,\n onSignAndSend,\n onToggleXdr,\n onCopyHash,\n onRetry,\n onDone,\n}: SendModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const selectedKey = selectedAsset ? assetKey(selectedAsset) : '';\n const canSubmit = !!selectedAsset && !!amount && !!destination.trim() && !isLoadingBalance;\n\n const title = step === 'form' ? 'Send' : txTitle;\n\n return (\n <div\n className=\"pollar-modal-card pollar-send-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n <div className=\"pollar-modal-header\">\n <div className=\"pollar-send-header-left\">\n {showBack && (\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onBack} aria-label=\"Back\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M10 3L5 8l5 5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n )}\n <h2 className=\"pollar-modal-title\">{title}</h2>\n </div>\n {!isInProgress && (\n <div className=\"pollar-modal-header-actions\">\n {step === 'form' && (\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoadingBalance}\n aria-label=\"Refresh\"\n title=\"Refresh balances\"\n >\n <svg\n className={isLoadingBalance ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n\n {/* Form step */}\n {step === 'form' && (\n <>\n {/* Asset selector */}\n <AssetSelect\n label=\"Asset\"\n value={selectedKey}\n loading={isLoadingBalance}\n loadingLabel=\"Loading assets…\"\n options={assets.map((a) => ({\n key: assetKey(a),\n code: a.code,\n available: a.available,\n enabledInApp: a.enabledInApp,\n }))}\n onChange={(key) => {\n const found = assets.find((a) => assetKey(a) === key);\n if (found) onSelectAsset(found);\n }}\n />\n\n {/* Amount */}\n <div className=\"pollar-send-field\">\n <div className=\"pollar-send-label-row\">\n <label className=\"pollar-send-label\">Amount</label>\n {selectedAsset && (\n <span className=\"pollar-send-hint\">\n Available: {formatBalance(selectedAsset.available)} {selectedAsset.code}\n </span>\n )}\n </div>\n <input\n className=\"pollar-input\"\n type=\"text\"\n inputMode=\"decimal\"\n placeholder=\"0.00\"\n value={amount}\n onChange={(e) => onAmountChange(e.target.value)}\n />\n </div>\n\n {/* Destination */}\n <div className=\"pollar-send-field\">\n <label className=\"pollar-send-label\">Destination wallet</label>\n <input\n className=\"pollar-input\"\n type=\"text\"\n placeholder=\"G…\"\n value={destination}\n onChange={(e) => onDestinationChange(e.target.value)}\n />\n </div>\n\n {formError && <div className=\"pollar-modal-error\">{formError}</div>}\n\n <div className=\"pollar-modal-actions\">\n <button className=\"pollar-btn-primary\" onClick={onSubmit} disabled={!canSubmit}>\n Continue\n </button>\n </div>\n </>\n )}\n\n {/* Transaction step */}\n {step === 'tx' && (\n <TxStatusView\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n onSignAndSend={onSignAndSend}\n onToggleXdr={onToggleXdr}\n onCopyHash={onCopyHash}\n onRetry={onRetry}\n onDone={onDone}\n />\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { WalletBalanceRecord } from '@pollar/core';\nimport { useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport '../transaction-modal/TransactionModal.css';\nimport './SendModal.css';\nimport { SendModalTemplate } from './SendModalTemplate';\n\ninterface SendModalProps {\n onClose: () => void;\n}\n\nfunction assetParam(record: WalletBalanceRecord) {\n if (record.type === 'native') return { type: 'native' as const };\n if (record.type === 'credit_alphanum4') {\n return { type: 'credit_alphanum4' as const, code: record.code, issuer: record.issuer! };\n }\n return { type: 'credit_alphanum12' as const, code: record.code, issuer: record.issuer! };\n}\n\nexport function SendModal({ onClose }: SendModalProps) {\n const {\n walletBalance,\n refreshWalletBalance,\n buildTx,\n signAndSubmitTx,\n tx: transaction,\n wallet,\n network,\n styles,\n } = usePollar();\n // External-wallet signing-adapter id (freighter/albedo) drives the wallet logo;\n // null for custodial/smart, which fall back to the Pollar logo.\n const walletType = wallet?.custody === 'external' ? wallet.provider : null;\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const [step, setStep] = useState<'form' | 'tx'>('form');\n const [amount, setAmount] = useState('');\n const [destination, setDestination] = useState('');\n const [selectedAsset, setSelectedAsset] = useState<WalletBalanceRecord | null>(null);\n const [showXdr, setShowXdr] = useState(false);\n const [copied, setCopied] = useState(false);\n const [formError, setFormError] = useState('');\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n void refreshWalletBalance();\n }, [refreshWalletBalance]);\n\n useEffect(\n () => () => {\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n const balanceData = walletBalance.step === 'loaded' ? walletBalance.data : null;\n // Send goes through the Stellar tx pipeline, so only offer Stellar assets. On a\n // multichain balance the non-Stellar rows (SOL/POL) carry a chain tag; the\n // single-wallet Stellar lookup leaves chain undefined.\n const allAssets = (balanceData?.balances ?? []).filter((b) => b.chain === undefined || b.chain === 'STELLAR');\n // App assets first, then native XLM (always, even at 0, so the user knows to\n // fund) and any other non-app asset the wallet actually holds.\n const sortedAssets = [\n ...allAssets.filter((b) => b.enabledInApp),\n ...allAssets.filter((b) => !b.enabledInApp && (b.type === 'native' || parseFloat(b.balance) > 0)),\n ];\n\n // Auto-select the first asset once balances load (no \"Select asset\" step).\n useEffect(() => {\n if (!selectedAsset && sortedAssets.length > 0) setSelectedAsset(sortedAssets[0]!);\n }, [sortedAssets, selectedAsset]);\n\n const hash = transaction.step === 'success' ? transaction.hash : null;\n const buildData = 'buildData' in transaction ? transaction.buildData : null;\n const explorerNetwork = buildData?.summary.network?.toLowerCase().includes('testnet')\n ? 'testnet'\n : buildData\n ? 'public'\n : network === 'testnet'\n ? 'testnet'\n : 'public';\n const explorerUrl = hash ? `https://stellar.expert/explorer/${explorerNetwork}/tx/${hash}` : null;\n\n const IN_FLIGHT_STEPS = [\n 'building',\n 'signing',\n 'submitting',\n 'submitted',\n 'signing-submitting',\n 'building-signing-submitting',\n ] as const;\n const isInProgress = (IN_FLIGHT_STEPS as readonly string[]).includes(transaction.step);\n const showBack = step === 'tx' && (transaction.step === 'error' || transaction.step === 'success') && !isInProgress;\n\n const txTitle = isInProgress\n ? 'Sending…'\n : transaction.step === 'success'\n ? 'Sent!'\n : transaction.step === 'error'\n ? 'Send failed'\n : 'Confirm Send';\n\n async function handleSubmit() {\n setFormError('');\n if (!selectedAsset) {\n setFormError('Select an asset');\n return;\n }\n const parsed = parseFloat(amount);\n if (!amount || isNaN(parsed) || parsed <= 0) {\n setFormError('Enter a valid amount');\n return;\n }\n if (parsed > parseFloat(selectedAsset.available)) {\n setFormError('Insufficient balance');\n return;\n }\n if (!destination.trim()) {\n setFormError('Enter a destination address');\n return;\n }\n\n setStep('tx');\n await buildTx('payment', { destination: destination.trim(), amount, asset: assetParam(selectedAsset) });\n }\n\n function handleSignAndSend() {\n if (transaction.step === 'built') {\n void signAndSubmitTx(transaction.buildData.unsignedXdr);\n }\n }\n\n function handleCopyHash() {\n if (!hash) return;\n navigator.clipboard.writeText(hash).then(() => {\n setCopied(true);\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n copyTimerRef.current = null;\n setCopied(false);\n }, 2000);\n });\n }\n\n async function handleRetry() {\n if (transaction.step === 'error' && transaction.buildData) {\n await signAndSubmitTx(transaction.buildData.unsignedXdr);\n }\n }\n\n function handleBack() {\n setStep('form');\n setShowXdr(false);\n setCopied(false);\n }\n\n return (\n <div className=\"pollar-overlay\" onClick={!isInProgress ? onClose : undefined}>\n <SendModalTemplate\n theme={theme}\n accentColor={accentColor}\n step={step}\n txTitle={txTitle}\n assets={sortedAssets}\n selectedAsset={selectedAsset}\n amount={amount}\n destination={destination}\n formError={formError}\n isLoadingBalance={walletBalance.step === 'loading'}\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n showBack={showBack}\n isInProgress={isInProgress}\n onClose={onClose}\n onBack={handleBack}\n onRefresh={() => void refreshWalletBalance()}\n onSelectAsset={setSelectedAsset}\n onAmountChange={setAmount}\n onDestinationChange={setDestination}\n onSubmit={() => void handleSubmit()}\n onSignAndSend={handleSignAndSend}\n onToggleXdr={() => setShowXdr((v) => !v)}\n onCopyHash={handleCopyHash}\n onRetry={() => void handleRetry()}\n onDone={onClose}\n />\n </div>\n );\n}\n","'use client';\n\nimport { SwapProvider, SwapQuote, SwapQuoteParams, TransactionState, WalletId } from '@pollar/core';\nimport { type CSSProperties, useState } from 'react';\nimport { AssetSelect } from '../AssetSelect';\nimport { PollarModalFooter } from '../commons';\nimport { TxStatusView } from '../transaction-modal/TxStatusView';\n\n/** A selectable asset in the sell/buy pickers, normalized across balance/enabled records. */\nexport interface SwapAssetOption {\n ref: SwapQuoteParams['sellAsset'];\n code: string;\n issuer?: string | undefined;\n available?: string | undefined;\n enabledInApp?: boolean | undefined;\n}\n\nexport function assetOptionKey(o: SwapAssetOption): string {\n return `${o.code}:${o.issuer ?? 'native'}`;\n}\n\nconst PROVIDER_LABELS: Record<SwapProvider, string> = {\n auto: 'Best price (auto)',\n aquarius: 'Aquarius',\n soroswap: 'Soroswap',\n sdex: 'Stellar DEX',\n};\n\nfunction formatAmount(value: string): string {\n const n = parseFloat(value);\n return isNaN(n) ? value : n.toLocaleString(undefined, { maximumFractionDigits: 7 });\n}\n\nexport interface SwapModalTemplateProps {\n theme: string;\n accentColor: string;\n step: 'form' | 'tx';\n txTitle: string;\n sellOptions: SwapAssetOption[];\n buyOptions: SwapAssetOption[];\n selectedSell: SwapAssetOption | null;\n selectedBuy: SwapAssetOption | null;\n amount: string;\n provider: SwapProvider;\n providers: SwapProvider[];\n quote: SwapQuote | null;\n quoteLoading: boolean;\n quoteError: string;\n formError: string;\n isLoadingData: boolean;\n smartUnsupported: boolean;\n /** Swap config is still loading. */\n configLoading: boolean;\n /** Config loaded and this app exposes no swap venues — swap is disabled. */\n swapUnavailable: boolean;\n /** Buying the selected asset will create a trustline first (~0.5 XLM reserve). */\n buyNeedsTrustline: boolean;\n transaction: TransactionState;\n showXdr: boolean;\n copied: boolean;\n explorerUrl: string | null;\n walletType?: WalletId | null | undefined;\n showBack: boolean;\n isInProgress: boolean;\n onClose: () => void;\n onBack: () => void;\n onRefresh: () => void;\n onSelectSell: (o: SwapAssetOption) => void;\n onSelectBuy: (o: SwapAssetOption) => void;\n /** Add a user-pasted token (code + issuer) to the buy list. Returns an error or null. */\n onAddCustomToken: (code: string, issuer: string) => string | null;\n onAmountChange: (value: string) => void;\n onProviderChange: (p: SwapProvider) => void;\n onSwap: () => void;\n onToggleXdr: () => void;\n onCopyHash: () => void;\n onRetry: () => void;\n onDone: () => void;\n}\n\nexport function SwapModalTemplate({\n theme,\n accentColor,\n step,\n txTitle,\n sellOptions,\n buyOptions,\n selectedSell,\n selectedBuy,\n amount,\n provider,\n providers,\n quote,\n quoteLoading,\n quoteError,\n formError,\n isLoadingData,\n smartUnsupported,\n configLoading,\n swapUnavailable,\n buyNeedsTrustline,\n transaction,\n showXdr,\n copied,\n explorerUrl,\n walletType,\n showBack,\n isInProgress,\n onClose,\n onBack,\n onRefresh,\n onSelectSell,\n onSelectBuy,\n onAddCustomToken,\n onAmountChange,\n onProviderChange,\n onSwap,\n onToggleXdr,\n onCopyHash,\n onRetry,\n onDone,\n}: SwapModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const [customOpen, setCustomOpen] = useState(false);\n const [customCode, setCustomCode] = useState('');\n const [customIssuer, setCustomIssuer] = useState('');\n const [customError, setCustomError] = useState('');\n\n const submitCustomToken = () => {\n const err = onAddCustomToken(customCode, customIssuer);\n if (err) {\n setCustomError(err);\n return;\n }\n setCustomCode('');\n setCustomIssuer('');\n setCustomError('');\n setCustomOpen(false);\n };\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const sellKey = selectedSell ? assetOptionKey(selectedSell) : '';\n const buyKey = selectedBuy ? assetOptionKey(selectedBuy) : '';\n const canSwap =\n !smartUnsupported && !!selectedSell && !!selectedBuy && !!amount && !!quote && !quoteLoading && !isLoadingData;\n\n const title = step === 'form' ? 'Swap' : txTitle;\n\n return (\n <div\n className=\"pollar-modal-card pollar-send-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <div className=\"pollar-send-header-left\">\n {showBack && (\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onBack} aria-label=\"Back\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M10 3L5 8l5 5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n )}\n <h2 className=\"pollar-modal-title\">{title}</h2>\n </div>\n {!isInProgress && (\n <div className=\"pollar-modal-header-actions\">\n {step === 'form' && (\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={configLoading || isLoadingData}\n aria-label=\"Refresh\"\n title=\"Refresh balances and options\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2.5v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n\n {step === 'form' && !configLoading && swapUnavailable && (\n <div className=\"pollar-modal-error\">Swap is not available for this app.</div>\n )}\n\n {/* Keep the form visible while the config loads — disable the inputs rather\n than unmounting them, so the modal doesn't visibly collapse/jump. */}\n {step === 'form' && !swapUnavailable && (\n <>\n {smartUnsupported && (\n <div className=\"pollar-modal-error\">Swaps are not yet available for smart (passkey) wallets.</div>\n )}\n\n {/* Sell asset */}\n <AssetSelect\n label=\"You pay\"\n value={sellKey}\n loading={isLoadingData || configLoading}\n loadingLabel=\"Loading assets…\"\n disabled={configLoading}\n options={sellOptions.map((o) => ({\n key: assetOptionKey(o),\n code: o.code,\n available: o.available,\n enabledInApp: o.enabledInApp,\n }))}\n onChange={(key) => {\n const found = sellOptions.find((o) => assetOptionKey(o) === key);\n if (found) onSelectSell(found);\n }}\n />\n\n {/* Amount */}\n <div className=\"pollar-send-field\">\n <div className=\"pollar-send-label-row\">\n <label className=\"pollar-send-label\">Amount</label>\n {selectedSell?.available !== undefined && (\n <span className=\"pollar-send-hint\">\n Available: {formatAmount(selectedSell.available)} {selectedSell.code}\n </span>\n )}\n </div>\n <input\n className=\"pollar-input\"\n type=\"text\"\n inputMode=\"decimal\"\n placeholder=\"0.00\"\n value={amount}\n disabled={configLoading}\n onChange={(e) => onAmountChange(e.target.value)}\n />\n </div>\n\n {/* Buy asset */}\n <AssetSelect\n label=\"You receive\"\n value={buyKey}\n loading={isLoadingData || configLoading}\n loadingLabel=\"Loading assets…\"\n disabled={configLoading}\n options={buyOptions.map((o) => ({\n key: assetOptionKey(o),\n code: o.code,\n enabledInApp: o.enabledInApp,\n }))}\n onChange={(key) => {\n const found = buyOptions.find((o) => assetOptionKey(o) === key);\n if (found) onSelectBuy(found);\n }}\n >\n {customOpen ? (\n <div className=\"pollar-swap-custom\">\n <input\n className=\"pollar-input\"\n type=\"text\"\n placeholder=\"Code (e.g. USDC)\"\n value={customCode}\n onChange={(e) => setCustomCode(e.target.value)}\n />\n <input\n className=\"pollar-input\"\n type=\"text\"\n placeholder=\"Issuer (G...)\"\n value={customIssuer}\n onChange={(e) => setCustomIssuer(e.target.value)}\n />\n {customError && <div className=\"pollar-modal-error\">{customError}</div>}\n <div className=\"pollar-swap-custom-actions\">\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={submitCustomToken}>\n Add token\n </button>\n <button\n type=\"button\"\n className=\"pollar-swap-custom-cancel\"\n onClick={() => {\n setCustomOpen(false);\n setCustomError('');\n }}\n >\n Cancel\n </button>\n </div>\n </div>\n ) : (\n <button\n type=\"button\"\n className=\"pollar-swap-custom-toggle\"\n disabled={configLoading}\n onClick={() => setCustomOpen(true)}\n >\n + Add a token by code / issuer\n </button>\n )}\n </AssetSelect>\n\n {/* Route selector */}\n <div className=\"pollar-send-field\">\n <label className=\"pollar-send-label\">Route</label>\n {configLoading ? (\n <div className=\"pollar-input pollar-select-loading\">\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n <span>Loading routes…</span>\n </div>\n ) : (\n <select\n className=\"pollar-input pollar-send-select\"\n value={provider}\n disabled={providers.length === 0}\n onChange={(e) => onProviderChange(e.target.value as SwapProvider)}\n >\n {providers.length === 0 ? (\n <option value={provider}>{PROVIDER_LABELS[provider]}</option>\n ) : (\n providers.map((p) => (\n <option key={p} value={p}>\n {PROVIDER_LABELS[p]}\n </option>\n ))\n )}\n </select>\n )}\n </div>\n\n {/* Quote panel */}\n {quoteLoading && (\n <div className=\"pollar-send-hint pollar-inline-loading\">\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n Fetching best price…\n </div>\n )}\n {!quoteLoading && quoteError && <div className=\"pollar-modal-error\">{quoteError}</div>}\n {!quoteLoading && !quoteError && quote && selectedBuy && (\n <div className=\"pollar-swap-quote\">\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">You receive</span>\n <span>\n ~ {formatAmount(quote.amountOut)} {selectedBuy.code}\n </span>\n </div>\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">Minimum received</span>\n <span>\n {formatAmount(quote.minReceived)} {selectedBuy.code}\n </span>\n </div>\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">Price impact</span>\n <span>{quote.priceImpactPct}%</span>\n </div>\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">Route</span>\n <span>{PROVIDER_LABELS[quote.provider]}</span>\n </div>\n </div>\n )}\n {!quoteLoading && !quoteError && !quote && selectedSell && selectedBuy && !!amount && (\n <div className=\"pollar-send-hint\">No route found for this pair.</div>\n )}\n\n {buyNeedsTrustline && selectedBuy && (\n <div className=\"pollar-swap-trustline-notice\">\n To receive {selectedBuy.code} your wallet needs a trustline. Swapping will create it first (~0.5 XLM reserve,\n refundable if you later remove it).\n </div>\n )}\n\n {formError && <div className=\"pollar-modal-error\">{formError}</div>}\n\n <div className=\"pollar-modal-actions\">\n <button className=\"pollar-btn-primary\" onClick={onSwap} disabled={!canSwap}>\n {buyNeedsTrustline ? 'Create trustline & swap' : 'Swap'}\n </button>\n </div>\n </>\n )}\n\n {step === 'tx' && (\n <TxStatusView\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n onSignAndSend={() => {}}\n onToggleXdr={onToggleXdr}\n onCopyHash={onCopyHash}\n onRetry={onRetry}\n onDone={onDone}\n />\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { SwapProvider, SwapQuote, SwapQuoteParams, SwapToken, SwapVenue } from '@pollar/core';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport '../transaction-modal/TransactionModal.css';\nimport '../send-modal/SendModal.css';\nimport './SwapModal.css';\nimport { SwapAssetOption, SwapModalTemplate } from './SwapModalTemplate';\n\ninterface SwapModalProps {\n onClose: () => void;\n}\n\n/** Debounce (ms) before re-quoting as the user edits the amount / assets. */\nconst QUOTE_DEBOUNCE_MS = 400;\n\ntype AssetLike = { type: 'native' | 'credit_alphanum4' | 'credit_alphanum12'; code: string; issuer?: string | undefined };\n\nfunction toRef(a: AssetLike): SwapQuoteParams['sellAsset'] {\n if (a.type === 'native') return { type: 'native' };\n if (a.type === 'credit_alphanum4') return { type: 'credit_alphanum4', code: a.code, issuer: a.issuer! };\n return { type: 'credit_alphanum12', code: a.code, issuer: a.issuer! };\n}\n\n/** A catalog token (code + issuer) -> the asset ref, picking the alphanum width. */\nfunction catalogRef(code: string, issuer: string): SwapQuoteParams['sellAsset'] {\n return code.length <= 4 ? { type: 'credit_alphanum4', code, issuer } : { type: 'credit_alphanum12', code, issuer };\n}\n\nexport function SwapModal({ onClose }: SwapModalProps) {\n const {\n getSwapConfig,\n getSwapTokens,\n getSwapQuote,\n swap,\n walletBalance,\n refreshWalletBalance,\n enabledAssets,\n refreshAssets,\n tx: transaction,\n wallet,\n network,\n styles,\n } = usePollar();\n\n const walletType = wallet?.custody === 'external' ? wallet.provider : null;\n const smartUnsupported = wallet?.custody === 'smart';\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const [step, setStep] = useState<'form' | 'tx'>('form');\n const [selectedSell, setSelectedSell] = useState<SwapAssetOption | null>(null);\n const [selectedBuy, setSelectedBuy] = useState<SwapAssetOption | null>(null);\n const [amount, setAmount] = useState('');\n const [provider, setProvider] = useState<SwapProvider>('auto');\n const [venues, setVenues] = useState<SwapVenue[] | null>(null); // null = config loading\n const [catalogTokens, setCatalogTokens] = useState<SwapToken[]>([]);\n // Tokens the user pasted by code+issuer (not in the app catalog). Local only.\n const [customTokens, setCustomTokens] = useState<SwapAssetOption[]>([]);\n const [quotes, setQuotes] = useState<SwapQuote[]>([]);\n const [quoteLoading, setQuoteLoading] = useState(false);\n const [quoteError, setQuoteError] = useState('');\n const [formError, setFormError] = useState('');\n const [showXdr, setShowXdr] = useState(false);\n const [copied, setCopied] = useState(false);\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Fixed default slippage (0.5%). Exposed as a constant for now; an advanced\n // control can drive this later without touching the quote/execute wiring.\n const slippageBps = 50;\n\n useEffect(() => {\n void refreshWalletBalance();\n void refreshAssets();\n }, [refreshWalletBalance, refreshAssets]);\n\n // Which venues this app exposes (operator config ∩ server capability).\n const loadConfig = useCallback(() => {\n setVenues(null); // back to loading\n return getSwapConfig()\n .then(setVenues)\n .catch(() => setVenues([])); // treat a failed config as \"unavailable\"\n }, [getSwapConfig]);\n\n useEffect(() => {\n void loadConfig();\n }, [loadConfig]);\n\n // Curated \"buy\" catalog tokens the app opted into (may lack a trustline).\n const loadCatalog = useCallback(\n () =>\n getSwapTokens()\n .then(setCatalogTokens)\n .catch(() => setCatalogTokens([])),\n [getSwapTokens],\n );\n\n useEffect(() => {\n void loadCatalog();\n }, [loadCatalog]);\n\n // Re-pull everything the modal shows: balances, app assets, config and catalog.\n function handleRefresh() {\n void refreshWalletBalance();\n void refreshAssets();\n void loadConfig();\n void loadCatalog();\n }\n\n useEffect(\n () => () => {\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n const balances = walletBalance.step === 'loaded' ? walletBalance.data.balances : [];\n const assetRecords = enabledAssets.step === 'loaded' ? enabledAssets.data.assets : [];\n const isLoadingData = walletBalance.step === 'loading' || enabledAssets.step === 'loading';\n\n // Sell: native XLM + every asset the wallet has a trustline for, even at a 0\n // balance — so the user always sees what they hold and knows when to fund\n // (the amount field guards against overselling). Buy: app-enabled assets.\n // Swap is Stellar-only, so drop any non-Stellar balance (SOL/POL carry no\n // `type`) — the guard both filters them and narrows `type` for toRef().\n const sellOptions: SwapAssetOption[] = balances\n .filter(\n (b): b is typeof b & { type: 'native' | 'credit_alphanum4' | 'credit_alphanum12' } =>\n b.type != null && (b.type === 'native' || !b.trustlineRemoved),\n )\n .map((b) => ({ ref: toRef(b), code: b.code, issuer: b.issuer, available: b.available, enabledInApp: b.enabledInApp }));\n\n const buyKeyOfSell = selectedSell ? `${selectedSell.code}:${selectedSell.issuer ?? 'native'}` : '';\n const optKey = (o: { code: string; issuer?: string | undefined }) => `${o.code}:${o.issuer ?? 'native'}`;\n // Buy list = the app's enabled assets, plus curated catalog tokens the app\n // opted into (deduped; catalog tokens the wallet may not trust yet). Exclude\n // whatever is being sold.\n const enabledBuy: SwapAssetOption[] = assetRecords.map((a) => ({\n ref: toRef(a),\n code: a.code,\n issuer: a.issuer,\n enabledInApp: a.enabledInApp,\n }));\n const enabledKeys = new Set(enabledBuy.map(optKey));\n const catalogBuy: SwapAssetOption[] = catalogTokens\n .map((tk) => ({\n ref: catalogRef(tk.code, tk.issuer),\n code: tk.code,\n issuer: tk.issuer,\n enabledInApp: false,\n }))\n .filter((o) => !enabledKeys.has(optKey(o)));\n const knownKeys = new Set([...enabledKeys, ...catalogBuy.map(optKey)]);\n const customBuy = customTokens.filter((o) => !knownKeys.has(optKey(o)));\n const buyOptions: SwapAssetOption[] = [...enabledBuy, ...catalogBuy, ...customBuy].filter((o) => optKey(o) !== buyKeyOfSell);\n\n // Auto-select the first sell / buy asset once options are available, and keep a\n // valid selection if the list changes — so the pickers never sit empty.\n useEffect(() => {\n if (sellOptions.length === 0) return;\n if (!selectedSell || !sellOptions.some((o) => optKey(o) === optKey(selectedSell))) {\n setSelectedSell(sellOptions[0]!);\n }\n }, [sellOptions, selectedSell]);\n\n useEffect(() => {\n if (buyOptions.length === 0) return;\n if (!selectedBuy || !buyOptions.some((o) => optKey(o) === optKey(selectedBuy))) {\n setSelectedBuy(buyOptions[0]!);\n }\n }, [buyOptions, selectedBuy]);\n\n // Add a user-pasted token (code + issuer) to the buy list and select it.\n // Returns an error message, or null on success.\n function addCustomToken(code: string, issuer: string): string | null {\n const c = code.trim().toUpperCase();\n const i = issuer.trim();\n if (c.length < 1 || c.length > 12) return 'Code must be 1-12 characters';\n if (i.length !== 56 || !i.startsWith('G')) return 'Issuer must be a Stellar address (G..., 56 chars)';\n const opt: SwapAssetOption = { ref: catalogRef(c, i), code: c, issuer: i, enabledInApp: false };\n setCustomTokens((prev) => (prev.some((o) => optKey(o) === optKey(opt)) ? prev : [...prev, opt]));\n setSelectedBuy(opt);\n return null;\n }\n\n // Does buying `selectedBuy` require creating a trustline first? Native never;\n // a credit asset the wallet already trusts (in enabledAssets with\n // trustlineEstablished) doesn't; anything else (incl. catalog tokens) does.\n // Smart wallets hold SAC tokens (no classic trustlines) so it never applies.\n const buyNeedsTrustline = (() => {\n if (!selectedBuy || smartUnsupported) return false;\n if (selectedBuy.ref.type === 'native') return false;\n const rec = assetRecords.find((a) => a.code === selectedBuy.code && a.issuer === selectedBuy.issuer);\n return !rec?.trustlineEstablished;\n })();\n\n const configLoading = venues === null;\n const swapUnavailable = venues !== null && venues.length === 0;\n // Offer \"Auto\" (best of the enabled set) plus each configured venue.\n const providers: SwapProvider[] = venues && venues.length > 0 ? (['auto', ...venues] as SwapProvider[]) : [];\n const quote = quotes[0] ?? null;\n\n // Re-quote (debounced) whenever the pair / amount / route changes.\n useEffect(() => {\n if (\n step !== 'form' ||\n swapUnavailable ||\n configLoading ||\n !selectedSell ||\n !selectedBuy ||\n !amount ||\n parseFloat(amount) <= 0\n ) {\n setQuotes([]);\n setQuoteError('');\n setQuoteLoading(false);\n return;\n }\n let cancelled = false;\n setQuoteLoading(true);\n setQuoteError('');\n const t = setTimeout(async () => {\n try {\n const qs = await getSwapQuote({\n sellAsset: selectedSell.ref,\n buyAsset: selectedBuy.ref,\n amount,\n provider,\n slippageBps,\n });\n if (!cancelled) setQuotes(qs);\n } catch (e) {\n if (!cancelled) {\n setQuotes([]);\n setQuoteError(e instanceof Error ? e.message : 'Failed to fetch quote');\n }\n } finally {\n if (!cancelled) setQuoteLoading(false);\n }\n }, QUOTE_DEBOUNCE_MS);\n return () => {\n cancelled = true;\n clearTimeout(t);\n };\n }, [step, swapUnavailable, configLoading, selectedSell, selectedBuy, amount, provider, getSwapQuote]);\n\n const hash = transaction.step === 'success' ? transaction.hash : null;\n const buildData = 'buildData' in transaction ? transaction.buildData : null;\n const explorerNetwork = buildData?.summary.network?.toLowerCase().includes('testnet')\n ? 'testnet'\n : buildData\n ? 'public'\n : network === 'testnet'\n ? 'testnet'\n : 'public';\n const explorerUrl = hash ? `https://stellar.expert/explorer/${explorerNetwork}/tx/${hash}` : null;\n\n const IN_FLIGHT_STEPS = [\n 'building',\n 'signing',\n 'submitting',\n 'submitted',\n 'signing-submitting',\n 'building-signing-submitting',\n ] as const;\n const isInProgress = (IN_FLIGHT_STEPS as readonly string[]).includes(transaction.step);\n const showBack = step === 'tx' && (transaction.step === 'error' || transaction.step === 'success') && !isInProgress;\n\n const txTitle = isInProgress\n ? 'Swapping…'\n : transaction.step === 'success'\n ? 'Swapped!'\n : transaction.step === 'error'\n ? 'Swap failed'\n : 'Confirm Swap';\n\n async function handleSwap() {\n setFormError('');\n if (smartUnsupported) {\n setFormError('Swaps are not yet supported for smart (passkey) wallets');\n return;\n }\n if (!selectedSell || !selectedBuy) {\n setFormError('Select both assets');\n return;\n }\n const parsed = parseFloat(amount);\n if (!amount || isNaN(parsed) || parsed <= 0) {\n setFormError('Enter a valid amount');\n return;\n }\n if (selectedSell.available !== undefined && parsed > parseFloat(selectedSell.available)) {\n setFormError('Insufficient balance');\n return;\n }\n if (!quote) {\n setFormError('No route available for this pair');\n return;\n }\n setStep('tx');\n await swap(quote);\n }\n\n async function handleRetry() {\n if (transaction.step === 'error' && quote) await swap(quote);\n }\n\n function handleCopyHash() {\n if (!hash) return;\n navigator.clipboard.writeText(hash).then(() => {\n setCopied(true);\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n copyTimerRef.current = null;\n setCopied(false);\n }, 2000);\n });\n }\n\n function handleBack() {\n setStep('form');\n setShowXdr(false);\n setCopied(false);\n }\n\n return (\n <div className=\"pollar-overlay\" onClick={!isInProgress ? onClose : undefined}>\n <SwapModalTemplate\n theme={theme}\n accentColor={accentColor}\n step={step}\n txTitle={txTitle}\n sellOptions={sellOptions}\n buyOptions={buyOptions}\n selectedSell={selectedSell}\n selectedBuy={selectedBuy}\n amount={amount}\n provider={provider}\n providers={providers}\n quote={quote}\n quoteLoading={quoteLoading}\n quoteError={quoteError}\n formError={formError}\n isLoadingData={isLoadingData}\n smartUnsupported={smartUnsupported}\n configLoading={configLoading}\n swapUnavailable={swapUnavailable}\n buyNeedsTrustline={buyNeedsTrustline}\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n showBack={showBack}\n isInProgress={isInProgress}\n onClose={onClose}\n onBack={handleBack}\n onRefresh={handleRefresh}\n onSelectSell={setSelectedSell}\n onSelectBuy={setSelectedBuy}\n onAddCustomToken={addCustomToken}\n onAmountChange={setAmount}\n onProviderChange={setProvider}\n onSwap={() => void handleSwap()}\n onToggleXdr={() => setShowXdr((v) => !v)}\n onCopyHash={handleCopyHash}\n onRetry={() => void handleRetry()}\n onDone={onClose}\n />\n </div>\n );\n}\n","'use client';\n\nimport { EarnOpportunity, EarnPosition, EarnProviderId } from '@pollar/core';\nimport { type CSSProperties, useCallback, useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport { PollarModalFooter } from '../commons';\nimport { TxStatusView } from '../transaction-modal/TxStatusView';\nimport '../shared.css';\nimport '../transaction-modal/TransactionModal.css';\nimport '../send-modal/SendModal.css';\nimport '../swap-modal/SwapModal.css';\nimport './EarnModal.css';\n\ninterface EarnModalProps {\n onClose: () => void;\n}\n\n/** Poll interval (ms) for the live position + APY. */\nconst POSITION_POLL_MS = 10000;\n\nconst PROVIDER_LABELS: Record<EarnProviderId, string> = {\n blend: 'Blend',\n defindex: 'DeFindex',\n};\n\nconst IN_FLIGHT_STEPS = [\n 'building',\n 'signing',\n 'submitting',\n 'submitted',\n 'signing-submitting',\n 'building-signing-submitting',\n] as const;\n\nfunction formatAmount(value: string): string {\n const n = parseFloat(value);\n return isNaN(n) ? value : n.toLocaleString(undefined, { maximumFractionDigits: 7 });\n}\n\nexport function EarnModal({ onClose }: EarnModalProps) {\n const {\n getEarnProviders,\n getEarnOpportunities,\n getEarnPosition,\n earnDeposit,\n earnWithdraw,\n tx: transaction,\n wallet,\n walletBalance,\n refreshWalletBalance,\n enabledAssets,\n refreshAssets,\n setTrustline,\n network,\n styles,\n } = usePollar();\n\n const walletType = wallet?.custody === 'external' ? wallet.provider : null;\n const smartUnsupported = wallet?.custody === 'smart';\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n const isDark = theme === 'dark';\n\n const [step, setStep] = useState<'form' | 'tx'>('form');\n const [tab, setTab] = useState<'deposit' | 'withdraw'>('deposit');\n const [providers, setProviders] = useState<EarnProviderId[] | null>(null); // null = loading\n const [provider, setProvider] = useState<EarnProviderId | null>(null);\n const [opportunities, setOpportunities] = useState<EarnOpportunity[]>([]);\n const [opportunityId, setOpportunityId] = useState('');\n const [position, setPosition] = useState<EarnPosition | null>(null);\n const [amount, setAmount] = useState('');\n const [loadingOpps, setLoadingOpps] = useState(false);\n const [formError, setFormError] = useState('');\n const [refreshing, setRefreshing] = useState(false);\n const [showXdr, setShowXdr] = useState(false);\n const [copied, setCopied] = useState(false);\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // ─── Providers ────────────────────────────────────────────────────────────\n const loadProviders = useCallback(() => {\n setProviders(null);\n return getEarnProviders()\n .then((ps) => {\n setProviders(ps);\n setProvider((cur) => cur ?? ps[0] ?? null);\n })\n .catch(() => setProviders([]));\n }, [getEarnProviders]);\n\n useEffect(() => {\n void loadProviders();\n }, [loadProviders]);\n\n // The wallet balance drives the Deposit tab's \"In your wallet\" row + Max; the\n // enabled assets drive the deposit-asset trustline check.\n useEffect(() => {\n void refreshWalletBalance();\n void refreshAssets();\n }, [refreshWalletBalance, refreshAssets]);\n\n // ─── Opportunities (per provider) ───────────────────────────────────────────\n useEffect(() => {\n if (!provider) return;\n let cancelled = false;\n setLoadingOpps(true);\n getEarnOpportunities(provider)\n .then((opps) => {\n if (cancelled) return;\n setOpportunities(opps);\n setOpportunityId((cur) => (opps.some((o) => o.id === cur) ? cur : (opps[0]?.id ?? '')));\n })\n .catch(() => {\n if (!cancelled) setOpportunities([]);\n })\n .finally(() => {\n if (!cancelled) setLoadingOpps(false);\n });\n return () => {\n cancelled = true;\n };\n }, [provider, getEarnOpportunities]);\n\n const selectedOpportunity = opportunities.find((o) => o.id === opportunityId) ?? null;\n\n // ─── Position (live, polled) ────────────────────────────────────────────────\n const refreshPosition = useCallback(() => {\n if (!provider || !opportunityId || !wallet) return;\n getEarnPosition({ provider, opportunity: opportunityId })\n .then(setPosition)\n .catch(() => {\n /* leave the last snapshot on a transient read error */\n });\n }, [provider, opportunityId, wallet, getEarnPosition]);\n\n useEffect(() => {\n setPosition(null);\n refreshPosition();\n }, [refreshPosition]);\n\n useEffect(() => {\n if (step !== 'form' || !provider || !opportunityId) return;\n const id = setInterval(refreshPosition, POSITION_POLL_MS);\n return () => clearInterval(id);\n }, [step, provider, opportunityId, refreshPosition]);\n\n useEffect(\n () => () => {\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n // ─── Derived ────────────────────────────────────────────────────────────────\n const providersLoading = providers === null;\n const earnUnavailable = providers !== null && providers.length === 0;\n const withdrawUnit = position?.withdrawUnit ?? 'asset';\n const assetCode = selectedOpportunity?.asset.code ?? '';\n const amountUnitLabel = tab === 'deposit' ? assetCode : withdrawUnit === 'shares' ? 'shares' : assetCode;\n\n // The wallet's spendable balance of the selected opportunity's asset (native\n // XLM matches by type; issued assets by code + issuer). `null` = unknown yet.\n const walletAvailable = (() => {\n if (!selectedOpportunity) return null;\n const balances = walletBalance.step === 'loaded' ? walletBalance.data.balances : [];\n const issuer = selectedOpportunity.asset.issuer;\n const rec = balances.find((b) =>\n issuer === null ? b.type === 'native' : b.code === assetCode && b.issuer === issuer,\n );\n return rec ? rec.available : null;\n })();\n\n // Depositing an issued asset (e.g. USDC) needs the wallet to trust it first.\n // Native XLM and pure Soroban tokens (no classic issuer) never do; smart\n // (C-address) wallets hold SAC tokens, so no classic trustline applies. When\n // needed, the deposit runs as two signatures: trustline, then deposit.\n const depositAssetRecord = (() => {\n if (!selectedOpportunity?.asset.issuer || enabledAssets.step !== 'loaded') return undefined;\n return enabledAssets.data.assets.find(\n (a) => a.code === assetCode && a.issuer === selectedOpportunity.asset.issuer,\n );\n })();\n const depositNeedsTrustline =\n tab === 'deposit' &&\n !smartUnsupported &&\n !!selectedOpportunity?.asset.issuer &&\n !depositAssetRecord?.trustlineEstablished;\n\n const hash = transaction.step === 'success' ? transaction.hash : null;\n const buildData = 'buildData' in transaction ? transaction.buildData : null;\n const explorerNetwork = buildData?.summary.network?.toLowerCase().includes('testnet')\n ? 'testnet'\n : buildData\n ? 'public'\n : network === 'testnet'\n ? 'testnet'\n : 'public';\n const explorerUrl = hash ? `https://stellar.expert/explorer/${explorerNetwork}/tx/${hash}` : null;\n\n const isInProgress = (IN_FLIGHT_STEPS as readonly string[]).includes(transaction.step);\n const showBack = step === 'tx' && (transaction.step === 'error' || transaction.step === 'success') && !isInProgress;\n\n const txTitle = isInProgress\n ? tab === 'deposit'\n ? 'Depositing…'\n : 'Withdrawing…'\n : transaction.step === 'success'\n ? 'Done!'\n : transaction.step === 'error'\n ? tab === 'deposit'\n ? 'Deposit failed'\n : 'Withdraw failed'\n : 'Confirm';\n\n // Over-spend guard: deposit can't exceed the wallet's available balance;\n // withdraw can't exceed the position. Skipped while the relevant figure is\n // still unknown (`null`) so a slow balance read doesn't block a valid amount.\n const parsedAmount = parseFloat(amount);\n const exceedsAvailable =\n tab === 'deposit'\n ? walletAvailable != null && parsedAmount > parseFloat(walletAvailable)\n : position != null && parsedAmount > parseFloat(position.withdrawable);\n\n const canSubmit =\n !smartUnsupported &&\n !!provider &&\n !!opportunityId &&\n !!amount &&\n parsedAmount > 0 &&\n !exceedsAvailable &&\n !providersLoading &&\n !loadingOpps;\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n // ─── Actions ────────────────────────────────────────────────────────────────\n async function handleSubmit() {\n setFormError('');\n if (smartUnsupported) {\n setFormError('Earn is not yet supported for smart (passkey) wallets');\n return;\n }\n if (!provider || !opportunityId) {\n setFormError('Select a vault or pool');\n return;\n }\n const parsed = parseFloat(amount);\n if (!amount || isNaN(parsed) || parsed <= 0) {\n setFormError('Enter a valid amount');\n return;\n }\n if (tab === 'deposit' && walletAvailable != null && parsed > parseFloat(walletAvailable)) {\n setFormError('Amount exceeds your wallet balance');\n return;\n }\n if (tab === 'withdraw' && position && parsed > parseFloat(position.withdrawable)) {\n setFormError('Amount exceeds your position');\n return;\n }\n setStep('tx');\n\n // Deposit of an issued asset needs its trustline first (native never does).\n // Establish it, then deposit — two signatures, like swap.\n if (tab === 'deposit' && depositNeedsTrustline && selectedOpportunity?.asset.issuer) {\n const tl = await setTrustline(\n { code: assetCode, issuer: selectedOpportunity.asset.issuer },\n depositAssetRecord?.sponsored ? { sponsored: true } : undefined,\n );\n if (tl.status === 'error') {\n setFormError(`Trustline for ${assetCode} failed: ${tl.details ?? 'unknown error'}`);\n setStep('form');\n return;\n }\n await refreshAssets();\n }\n\n const params = { provider, opportunity: opportunityId, amount };\n const outcome = tab === 'deposit' ? await earnDeposit(params) : await earnWithdraw(params);\n if (outcome.status === 'success' || outcome.status === 'pending') {\n setAmount('');\n refreshPosition();\n }\n }\n\n async function handleRetry() {\n if (transaction.step !== 'error' || !provider || !opportunityId) return;\n const params = { provider, opportunity: opportunityId, amount };\n if (tab === 'deposit') await earnDeposit(params);\n else await earnWithdraw(params);\n }\n\n function handleCopyHash() {\n if (!hash) return;\n navigator.clipboard.writeText(hash).then(() => {\n setCopied(true);\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n copyTimerRef.current = null;\n setCopied(false);\n }, 2000);\n });\n }\n\n function handleBack() {\n setStep('form');\n setShowXdr(false);\n setCopied(false);\n refreshPosition();\n }\n\n // Re-fetch everything the modal shows on demand: the opportunities for the\n // current provider (fresh APYs), the wallet's position, and the wallet balance\n // (\"In your wallet\" + Max). Leaves the current data in place on a transient\n // read error.\n async function handleRefresh() {\n if (refreshing || !provider) return;\n setRefreshing(true);\n try {\n void refreshWalletBalance();\n const opps = await getEarnOpportunities(provider);\n setOpportunities(opps);\n setOpportunityId((cur) => (opps.some((o) => o.id === cur) ? cur : (opps[0]?.id ?? '')));\n refreshPosition();\n } catch {\n /* transient — keep the current snapshot */\n } finally {\n setRefreshing(false);\n }\n }\n\n const title = step === 'form' ? 'Earn' : txTitle;\n\n return (\n <div className=\"pollar-overlay\" onClick={!isInProgress ? onClose : undefined}>\n <div\n className=\"pollar-modal-card pollar-send-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <div className=\"pollar-send-header-left\">\n {showBack && (\n <button type=\"button\" className=\"pollar-modal-close\" onClick={handleBack} aria-label=\"Back\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M10 3L5 8l5 5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n )}\n <h2 className=\"pollar-modal-title\">{title}</h2>\n </div>\n <div className=\"pollar-modal-header-actions\">\n {step === 'form' && !earnUnavailable && !smartUnsupported && (\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={() => void handleRefresh()}\n disabled={refreshing || providersLoading}\n aria-label=\"Refresh\"\n >\n <svg\n className={refreshing ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n {!isInProgress && (\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n\n {step === 'form' && earnUnavailable && <div className=\"pollar-modal-error\">Earn is not available for this app.</div>}\n\n {step === 'form' && !earnUnavailable && (\n <>\n {smartUnsupported && (\n <div className=\"pollar-modal-error\">Earn is not yet available for smart (passkey) wallets.</div>\n )}\n\n {/* Deposit / Withdraw tabs */}\n <div className=\"pollar-tabs\">\n <button\n type=\"button\"\n className=\"pollar-tab\"\n data-active={tab === 'deposit'}\n onClick={() => {\n setTab('deposit');\n setFormError('');\n }}\n >\n Deposit\n </button>\n <button\n type=\"button\"\n className=\"pollar-tab\"\n data-active={tab === 'withdraw'}\n onClick={() => {\n setTab('withdraw');\n setFormError('');\n }}\n >\n Withdraw\n </button>\n </div>\n\n {/* Provider */}\n {providers && providers.length > 1 && (\n <div className=\"pollar-send-field\">\n <label className=\"pollar-send-label\">Provider</label>\n <select\n className=\"pollar-input pollar-send-select\"\n value={provider ?? ''}\n onChange={(e) => setProvider(e.target.value as EarnProviderId)}\n >\n {providers.map((p) => (\n <option key={p} value={p}>\n {PROVIDER_LABELS[p]}\n </option>\n ))}\n </select>\n </div>\n )}\n\n {/* Opportunity */}\n <div className=\"pollar-send-field\">\n <label className=\"pollar-send-label\">{provider === 'defindex' ? 'Vault' : 'Pool'}</label>\n {loadingOpps || providersLoading ? (\n <div className=\"pollar-input pollar-select-loading\">\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n <span>Loading options…</span>\n </div>\n ) : (\n <select\n className=\"pollar-input pollar-send-select\"\n value={opportunityId}\n disabled={opportunities.length === 0}\n onChange={(e) => setOpportunityId(e.target.value)}\n >\n {opportunities.length === 0 ? (\n <option value=\"\">None available</option>\n ) : (\n opportunities.map((o) => (\n <option key={o.id} value={o.id}>\n {o.name} · {o.apy.toFixed(2)}% APY\n </option>\n ))\n )}\n </select>\n )}\n </div>\n\n {/* Live position panel */}\n {selectedOpportunity && (\n <div className=\"pollar-swap-quote\">\n {tab === 'deposit' && (\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">In your wallet</span>\n <span>\n {walletAvailable != null ? formatAmount(walletAvailable) : '…'} {assetCode}\n </span>\n </div>\n )}\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">Your position</span>\n <span>\n {position ? formatAmount(position.balance) : '…'} {assetCode}\n </span>\n </div>\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">APY</span>\n <span className=\"pollar-earn-live\">{selectedOpportunity.apy.toFixed(2)}%</span>\n </div>\n </div>\n )}\n\n {/* Amount */}\n <div className=\"pollar-send-field\">\n <div className=\"pollar-send-label-row\">\n <label className=\"pollar-send-label\">{tab === 'deposit' ? 'Amount' : 'Withdraw amount'}</label>\n {tab === 'deposit' && walletAvailable != null && (\n <button type=\"button\" className=\"pollar-swap-custom-toggle\" onClick={() => setAmount(walletAvailable)}>\n Max: {formatAmount(walletAvailable)} {amountUnitLabel}\n </button>\n )}\n {tab === 'withdraw' && position && (\n <button type=\"button\" className=\"pollar-swap-custom-toggle\" onClick={() => setAmount(position.withdrawable)}>\n Max: {formatAmount(position.withdrawable)} {amountUnitLabel}\n </button>\n )}\n </div>\n <div className=\"pollar-earn-amount\">\n <input\n className=\"pollar-input\"\n type=\"text\"\n inputMode=\"decimal\"\n placeholder=\"0.00\"\n value={amount}\n onChange={(e) => setAmount(e.target.value)}\n />\n {amountUnitLabel && <span className=\"pollar-earn-amount-unit\">{amountUnitLabel}</span>}\n </div>\n </div>\n\n {formError && <div className=\"pollar-modal-error\">{formError}</div>}\n\n {depositNeedsTrustline && selectedOpportunity && (\n <div className=\"pollar-swap-trustline-notice\">\n To deposit {assetCode} your wallet needs a trustline. This will create it first (~0.5 XLM reserve,\n refundable if you later remove it), then deposit — two signatures.\n </div>\n )}\n\n <div className=\"pollar-modal-actions\">\n <button className=\"pollar-btn-primary\" onClick={() => void handleSubmit()} disabled={!canSubmit}>\n {tab === 'deposit' ? (depositNeedsTrustline ? 'Enable trustline & deposit' : 'Deposit') : 'Withdraw'}\n </button>\n </div>\n </>\n )}\n\n {step === 'tx' && (\n <TxStatusView\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n onSignAndSend={() => {}}\n onToggleXdr={() => setShowXdr((v) => !v)}\n onCopyHash={handleCopyHash}\n onRetry={() => void handleRetry()}\n onDone={onClose}\n />\n )}\n\n <PollarModalFooter />\n </div>\n </div>\n );\n}\n","'use client';\n\nimport type { SessionInfo, SessionsState } from '@pollar/core';\nimport { type CSSProperties } from 'react';\nimport { PollarModalFooter } from '../commons';\n\nexport type { SessionsState };\n\nexport interface SessionsModalTemplateProps {\n theme: string;\n accentColor: string;\n state: SessionsState;\n revokingFamilyId: string | null;\n signingOutEverywhere: boolean;\n onRefresh: () => void;\n onRevoke: (familyId: string) => void;\n onLogoutEverywhere: () => void;\n onClose: () => void;\n}\n\n/**\n * Heuristic device label. Prefers the explicit `deviceLabel` set via\n * `PollarClientConfig`; falls back to a stripped User-Agent.\n */\nfunction describeDevice(s: SessionInfo): string {\n if (s.deviceLabel) return s.deviceLabel;\n if (!s.userAgent) return 'Unknown device';\n return parseUserAgent(s.userAgent);\n}\n\nfunction detectBrowser(ua: string): string | null {\n // Order matters: Edge / Opera contain \"Chrome\" in their UA, so check them first.\n if (/Edg\\//.test(ua)) return 'Edge';\n if (/OPR\\//.test(ua)) return 'Opera';\n if (/(Chrome|CriOS)\\//.test(ua)) return 'Chrome';\n if (/(Firefox|FxiOS)\\//.test(ua)) return 'Firefox';\n if (/Safari\\//.test(ua)) return 'Safari';\n return null;\n}\n\nfunction detectOS(ua: string): string | null {\n if (/iPhone|iPad|iPod/.test(ua)) return 'iOS';\n if (/Android/.test(ua)) return 'Android';\n if (/Mac OS X/.test(ua)) return 'macOS';\n if (/Windows NT/.test(ua)) return 'Windows';\n if (/Linux/.test(ua)) return 'Linux';\n return null;\n}\n\nfunction parseUserAgent(ua: string): string {\n const browser = detectBrowser(ua);\n const os = detectOS(ua);\n if (browser && os) return `${os} — ${browser}`;\n if (os) return os;\n if (browser) return browser;\n return ua.slice(0, 48);\n}\n\nfunction formatRelative(iso: string | null): string {\n if (!iso) return '—';\n const ts = new Date(iso).getTime();\n if (!Number.isFinite(ts)) return '—';\n const diffSec = Math.round((Date.now() - ts) / 1000);\n if (diffSec < 0) return 'just now';\n if (diffSec < 60) return `${diffSec}s ago`;\n const diffMin = Math.round(diffSec / 60);\n if (diffMin < 60) return `${diffMin}m ago`;\n const diffHr = Math.round(diffMin / 60);\n if (diffHr < 24) return `${diffHr}h ago`;\n const diffDay = Math.round(diffHr / 24);\n if (diffDay < 30) return `${diffDay}d ago`;\n return new Date(iso).toLocaleDateString(undefined, { month: 'short', day: 'numeric', year: 'numeric' });\n}\n\nfunction shortIp(hash: string | null): string {\n if (!hash) return '';\n return hash.slice(0, 8);\n}\n\nexport function SessionsModalTemplate({\n theme,\n accentColor,\n state,\n revokingFamilyId,\n signingOutEverywhere,\n onRefresh,\n onRevoke,\n onLogoutEverywhere,\n onClose,\n}: SessionsModalTemplateProps) {\n const isDark = theme === 'dark';\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const isLoading = state.step === 'loading';\n const sessions = state.step === 'loaded' ? state.sessions : [];\n const otherCount = sessions.filter((s) => !s.current).length;\n\n return (\n <div\n className=\"pollar-modal-card pollar-sessions-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Active sessions</h2>\n <div className=\"pollar-modal-header-actions\">\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoading}\n aria-label=\"Refresh\"\n title=\"Refresh\"\n >\n <svg\n className={isLoading ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <div className=\"pollar-sessions-list\">\n {(state.step === 'idle' || isLoading) && (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading…</span>\n </div>\n )}\n {state.step === 'error' && <div className=\"pollar-modal-empty\">{state.message}</div>}\n {state.step === 'loaded' && sessions.length === 0 && <div className=\"pollar-modal-empty\">No active sessions.</div>}\n {sessions.map((s) => {\n const isRevoking = revokingFamilyId === s.familyId;\n return (\n <div key={s.familyId} className=\"pollar-sessions-item\" data-current={s.current || undefined}>\n <div className=\"pollar-sessions-item-main\">\n <span className=\"pollar-sessions-item-device\">{describeDevice(s)}</span>\n {s.current && <span className=\"pollar-sessions-item-badge\">This device</span>}\n </div>\n <div className=\"pollar-sessions-item-meta\">\n <span>Last used {formatRelative(s.lastUsedAt ?? s.createdAt)}</span>\n {s.ipHash && (\n <>\n <span>·</span>\n <span title={`ip-hash ${s.ipHash}`}>ip {shortIp(s.ipHash)}</span>\n </>\n )}\n </div>\n {!s.current && (\n <button\n className=\"pollar-sessions-item-revoke\"\n onClick={() => onRevoke(s.familyId)}\n disabled={isRevoking || signingOutEverywhere}\n >\n {isRevoking ? (\n <>\n <span className=\"pollar-spinner pollar-spinner-sm pollar-spinner-current\" />\n Revoking…\n </>\n ) : (\n 'Revoke'\n )}\n </button>\n )}\n </div>\n );\n })}\n </div>\n\n {state.step === 'loaded' && sessions.length > 0 && (\n <div className=\"pollar-sessions-actions\">\n <button\n className=\"pollar-sessions-logout-all\"\n onClick={onLogoutEverywhere}\n disabled={signingOutEverywhere || otherCount === 0}\n title={otherCount === 0 ? 'No other devices to sign out' : undefined}\n >\n {signingOutEverywhere ? (\n <>\n <span className=\"pollar-spinner pollar-spinner-sm pollar-spinner-current\" />\n Signing out…\n </>\n ) : (\n 'Sign out everywhere'\n )}\n </button>\n </div>\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport './SessionsModal.css';\nimport { SessionsModalTemplate } from './SessionsModalTemplate';\n\ninterface SessionsModalProps {\n onClose: () => void;\n}\n\nexport function SessionsModal({ onClose }: SessionsModalProps) {\n const { getClient, styles, sessions } = usePollar();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n // Only the per-action button spinners are local UI state. The list itself\n // (idle/loading/loaded/error) lives in the client's observable `sessions`\n // store, read straight from the provider — so this component is a pure\n // reader and there's no `await`-then-`setState` to guard against unmount.\n const [revokingFamilyId, setRevokingFamilyId] = useState<string | null>(null);\n const [signingOutEverywhere, setSigningOutEverywhere] = useState(false);\n\n const load = useCallback(() => {\n void getClient().fetchSessions();\n }, [getClient]);\n\n useEffect(() => {\n load();\n }, [load]);\n\n // Auto-close on logout (logoutEverywhere from this modal, or eventual\n // 401-on-current-family-revoke). The provider clears session state when\n // the user becomes unauthenticated; mirror that here so the modal\n // tears down instead of showing stale data.\n const onCloseRef = useRef(onClose);\n onCloseRef.current = onClose;\n useEffect(() => {\n return getClient().onAuthStateChange((authState) => {\n if (authState.step === 'idle') onCloseRef.current();\n });\n }, [getClient]);\n\n const handleRevoke = useCallback(\n async (familyId: string) => {\n setRevokingFamilyId(familyId);\n try {\n await getClient().revokeSession(familyId);\n } catch {\n // Swallow — the refresh below resyncs the list with server truth, so a\n // failed revoke simply leaves the (still-active) row in place.\n } finally {\n setRevokingFamilyId(null);\n // Refresh from the server so the row disappears from the list.\n load();\n }\n },\n [getClient, load],\n );\n\n const handleLogoutEverywhere = useCallback(async () => {\n setSigningOutEverywhere(true);\n try {\n await getClient().logoutEverywhere();\n // After logout-everywhere the auth state flips to 'idle' — the\n // provider closes the parent overlay automatically. Belt-and-braces:\n // call onClose so the modal also tears down even if the consumer\n // wired it up outside the provider.\n onClose();\n } catch {\n setSigningOutEverywhere(false);\n }\n }, [getClient, onClose]);\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <SessionsModalTemplate\n theme={theme}\n accentColor={accentColor}\n state={sessions}\n revokingFamilyId={revokingFamilyId}\n signingOutEverywhere={signingOutEverywhere}\n onRefresh={() => load()}\n onRevoke={(familyId) => void handleRevoke(familyId)}\n onLogoutEverywhere={() => void handleLogoutEverywhere()}\n onClose={onClose}\n />\n </div>\n );\n}\n","'use client';\n\nimport { TransactionState, WalletId } from '@pollar/core';\nimport React from 'react';\nimport { PollarModalFooter } from '../commons';\nimport { TxStatusView } from './TxStatusView';\n\nexport interface TransactionModalTemplateProps {\n theme: string;\n accentColor: string;\n transaction: TransactionState;\n showXdr: boolean;\n copied: boolean;\n explorerUrl: string | null;\n walletType?: WalletId | null;\n onClose: () => void;\n onSignAndSend: () => void;\n onToggleXdr: () => void;\n onCopyHash: () => void;\n onRetry?: () => void;\n}\n\nexport function TransactionModalTemplate({\n theme,\n accentColor,\n transaction,\n showXdr,\n copied,\n explorerUrl,\n walletType,\n onClose,\n onSignAndSend,\n onToggleXdr,\n onCopyHash,\n onRetry,\n}: TransactionModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as React.CSSProperties;\n\n return (\n <div className=\"pollar-modal-card pollar-tx-modal\" data-theme={theme} style={cssVars} onClick={(e) => e.stopPropagation()}>\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Transaction</h2>\n </div>\n <button type=\"button\" className=\"pollar-close-btn\" onClick={onClose} aria-label=\"Close\">\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n\n <TxStatusView\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n onSignAndSend={onSignAndSend}\n onToggleXdr={onToggleXdr}\n onCopyHash={onCopyHash}\n onRetry={onRetry}\n onDone={onClose}\n />\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport './TransactionModal.css';\nimport { TransactionModalTemplate } from './TransactionModalTemplate';\n\ninterface TransactionModalProps {\n onClose: () => void;\n}\n\nexport function TransactionModal({ onClose }: TransactionModalProps) {\n const { getClient, styles, tx: transaction, network, wallet } = usePollar();\n // External-wallet signing-adapter id (freighter/albedo) drives the wallet logo;\n // null for custodial/smart, which fall back to the Pollar logo.\n const walletType = wallet?.custody === 'external' ? wallet.provider : null;\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const [showXdr, setShowXdr] = useState(false);\n const [copied, setCopied] = useState(false);\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(\n () => () => {\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n const hash = transaction.step === 'success' ? transaction.hash : null;\n const buildData = 'buildData' in transaction ? transaction.buildData : null;\n const explorerNetwork = buildData?.summary.network?.toLowerCase().includes('testnet')\n ? 'testnet'\n : buildData\n ? 'public'\n : network === 'testnet'\n ? 'testnet'\n : 'public';\n const explorerUrl = hash ? `https://stellar.expert/explorer/${explorerNetwork}/tx/${hash}` : null;\n\n function handleSignAndSend() {\n if (transaction.step === 'built') {\n void getClient().signAndSubmitTx(transaction.buildData.unsignedXdr);\n }\n }\n\n function handleCopyHash() {\n if (!hash) return;\n navigator.clipboard.writeText(hash).then(() => {\n setCopied(true);\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n copyTimerRef.current = null;\n setCopied(false);\n }, 2000);\n });\n }\n\n async function handleRetry() {\n if (transaction.step === 'error' && transaction.buildData) {\n await getClient().signAndSubmitTx(transaction.buildData.unsignedXdr);\n }\n }\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <TransactionModalTemplate\n theme={theme}\n accentColor={accentColor}\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n onClose={onClose}\n onSignAndSend={handleSignAndSend}\n onToggleXdr={() => setShowXdr((v) => !v)}\n onCopyHash={handleCopyHash}\n onRetry={handleRetry}\n />\n </div>\n );\n}\n","'use client';\n\nimport { TxHistoryRecord, TxHistoryState } from '@pollar/core';\nimport { type CSSProperties, type ReactNode } from 'react';\nimport { CopyButton, PollarModalFooter } from '../commons';\n\nconst PAGE_SIZE = 10;\n\ninterface TxHistoryModalTemplateProps {\n theme: string;\n accentColor: string;\n txHistory: TxHistoryState;\n offset: number;\n onRefresh: () => void;\n onPrev: () => void;\n onNext: () => void;\n onClose: () => void;\n}\n\nfunction StatusBadge({ status }: { status: TxHistoryRecord['status'] }) {\n return (\n <span className=\"pollar-hist-item-badge\" data-status={status}>\n {status}\n </span>\n );\n}\n\nfunction formatDate(iso: string): string {\n return new Date(iso).toLocaleDateString(undefined, { month: 'short', day: 'numeric', year: 'numeric' });\n}\n\n/** Shorten a long identifier (issuer, hash, address) to `head…tail`. */\nfunction truncateMiddle(value: string, head = 4, tail = 4): string {\n return value.length <= head + tail + 1 ? value : `${value.slice(0, head)}…${value.slice(-tail)}`;\n}\n\n// Stellar account (G) and contract (C) strkeys are 56 base32 chars.\nconst STELLAR_ADDRESS = /\\b[GC][A-Z2-7]{55}\\b/g;\n\n/** Truncated address rendered as a copyable tag (issuer, wallet, contract…). */\nfunction AddressChip({ value, label }: { value: string; label: string }) {\n return (\n <span className=\"pollar-hist-item-issuer\">\n {truncateMiddle(value)}\n <CopyButton value={value} label={label} className=\"pollar-copy-btn-sm\" />\n </span>\n );\n}\n\n/**\n * Renders a summary string, swapping every full Stellar address (G… account or\n * C… contract) for an {@link AddressChip}. Plain-text runs are kept as-is.\n */\nfunction renderSummary(summary: string): ReactNode {\n const parts: ReactNode[] = [];\n let last = 0;\n let key = 0;\n STELLAR_ADDRESS.lastIndex = 0;\n for (let m = STELLAR_ADDRESS.exec(summary); m !== null; m = STELLAR_ADDRESS.exec(summary)) {\n if (m.index > last) parts.push(<span key={key++}>{summary.slice(last, m.index)}</span>);\n const address = m[0];\n parts.push(\n <AddressChip key={key++} value={address} label={address[0] === 'C' ? 'Copy contract address' : 'Copy wallet address'} />,\n );\n last = m.index + address.length;\n }\n if (parts.length === 0) return <span className=\"pollar-hist-item-title\">{summary}</span>;\n if (last < summary.length) parts.push(<span key={key}>{summary.slice(last)}</span>);\n return parts;\n}\n\nexport function TxHistoryModalTemplate({\n theme,\n accentColor,\n txHistory,\n offset,\n onRefresh,\n onPrev,\n onNext,\n onClose,\n}: TxHistoryModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const isLoading = txHistory.step === 'loading';\n const records = txHistory.step === 'loaded' ? txHistory.data.records : [];\n const total = txHistory.step === 'loaded' ? txHistory.data.total : 0;\n const hasPrev = offset > 0;\n const hasNext = offset + PAGE_SIZE < total;\n const showPagination = txHistory.step === 'loaded' && total > PAGE_SIZE;\n\n return (\n <div\n className=\"pollar-modal-card pollar-hist-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Transaction History</h2>\n <div className=\"pollar-modal-header-actions\">\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoading}\n aria-label=\"Refresh\"\n title=\"Refresh\"\n >\n <svg\n className={isLoading ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <div className=\"pollar-hist-list\">\n {txHistory.step === 'idle' && <div className=\"pollar-modal-empty\">Click Refresh to load transactions.</div>}\n {isLoading && (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading…</span>\n </div>\n )}\n {txHistory.step === 'error' && <div className=\"pollar-modal-empty\">{txHistory.message}</div>}\n {txHistory.step === 'loaded' && records.length === 0 && <div className=\"pollar-modal-empty\">No transactions yet.</div>}\n {records.map((record) => {\n const hash = typeof record.hash === 'string' && record.hash.length > 0 ? record.hash : undefined;\n const explorerUrl = hash\n ? `https://stellar.expert/explorer/${record.network === 'testnet' ? 'testnet' : 'public'}/tx/${hash}`\n : undefined;\n const asset = typeof record.details?.asset === 'string' ? record.details.asset : undefined;\n // `change_trust` summaries embed the asset as `CODE:ISSUER` — split so\n // the issuer can be truncated and copied on its own.\n const colon = asset ? asset.indexOf(':') : -1;\n const trustline =\n record.operation === 'change_trust' && asset && colon > 0\n ? {\n prefix: record.summary.split(':')[0],\n code: asset.slice(0, colon),\n issuer: asset.slice(colon + 1),\n }\n : undefined;\n // `invoke_contract` summaries carry a server-truncated contract id, so\n // rebuild the chip from the full id in details instead.\n const contract =\n record.operation === 'invoke_contract' &&\n typeof record.details?.contractId === 'string' &&\n typeof record.details?.method === 'string'\n ? { method: record.details.method, contractId: record.details.contractId }\n : undefined;\n return (\n <div key={record.id} className=\"pollar-hist-item\">\n <div className=\"pollar-hist-item-top\">\n <span className=\"pollar-hist-item-summary\">\n {trustline ? (\n <>\n <span className=\"pollar-hist-item-title\">\n {trustline.prefix}: {trustline.code}\n </span>\n <AddressChip value={trustline.issuer} label=\"Copy issuer\" />\n </>\n ) : contract ? (\n <>\n <span className=\"pollar-hist-item-title\">Invoke {contract.method}() on</span>\n <AddressChip value={contract.contractId} label=\"Copy contract address\" />\n </>\n ) : (\n renderSummary(record.summary)\n )}\n </span>\n <StatusBadge status={record.status} />\n </div>\n\n <span className=\"pollar-hist-item-meta\">\n <span>{record.operation}</span>\n {typeof record.details?.sponsored === 'boolean' && (\n <span>· {record.details.sponsored ? 'Sponsored' : 'Self-paid'}</span>\n )}\n {record.feeXlm && <span>· {record.feeXlm} XLM</span>}\n </span>\n\n <div className=\"pollar-hist-item-footer\">\n <span>{formatDate(record.createdAt)}</span>\n {hash && (\n <>\n <span className=\"pollar-hist-item-dot\">·</span>\n <span className=\"pollar-hist-item-hash\">{truncateMiddle(hash, 6, 6)}</span>\n <CopyButton value={hash} label=\"Copy transaction hash\" className=\"pollar-copy-btn-sm\" />\n <a\n className=\"pollar-hist-item-explorer\"\n href={explorerUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label=\"View on Stellar Explorer\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <path\n d=\"M5 2H2a1 1 0 00-1 1v8a1 1 0 001 1h8a1 1 0 001-1V8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M8 1h4m0 0v4m0-4L6 7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n </>\n )}\n </div>\n </div>\n );\n })}\n </div>\n\n {showPagination && (\n <div className=\"pollar-hist-pagination\">\n <span className=\"pollar-hist-pagination-info\">\n {offset + 1}–{Math.min(offset + PAGE_SIZE, total)} of {total}\n </span>\n <div className=\"pollar-hist-pagination-btns\">\n <button className=\"pollar-hist-page-btn\" onClick={onPrev} disabled={!hasPrev}>\n ← Prev\n </button>\n <button className=\"pollar-hist-page-btn\" onClick={onNext} disabled={!hasNext}>\n Next →\n </button>\n </div>\n </div>\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport './TxHistoryModal.css';\nimport { TxHistoryModalTemplate } from './TxHistoryModalTemplate';\n\nconst PAGE_SIZE = 10;\n\ninterface TxHistoryModalProps {\n onClose: () => void;\n}\n\nexport function TxHistoryModal({ onClose }: TxHistoryModalProps) {\n const { getClient, styles, txHistory } = usePollar();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n const [offset, setOffset] = useState(0);\n\n const load = useCallback(\n (nextOffset: number) => {\n setOffset(nextOffset);\n void getClient().fetchTxHistory({ limit: PAGE_SIZE, offset: nextOffset });\n },\n [getClient],\n );\n\n useEffect(() => {\n load(0);\n }, [load]);\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <TxHistoryModalTemplate\n theme={theme}\n accentColor={accentColor}\n txHistory={txHistory}\n offset={offset}\n onRefresh={() => load(offset)}\n onPrev={() => load(Math.max(0, offset - PAGE_SIZE))}\n onNext={() => load(offset + PAGE_SIZE)}\n onClose={onClose}\n />\n </div>\n );\n}\n","'use client';\n\nimport { WalletBalanceRecord, WalletBalanceState } from '@pollar/core';\nimport { type CSSProperties } from 'react';\nimport { CopyButton, PollarModalFooter } from '../commons';\n\n// Stellar amounts are int64 scaled by 10^7, so 7 decimals is the ledger's exact\n// precision. Always render all 7 (padded) in monospace so columns line up.\nfunction formatBalance(balance: string): string {\n const n = parseFloat(balance);\n return isNaN(n) ? balance : n.toLocaleString(undefined, { minimumFractionDigits: 7, maximumFractionDigits: 7 });\n}\n\nfunction cropAddress(address: string): string {\n if (address.length <= 16) return address;\n return `${address.slice(0, 8)}...${address.slice(-8)}`;\n}\n\n// Short label + accent per chain for the network tag. Only shown when the app\n// spans more than one chain, so a single-chain (Stellar-only) app looks unchanged.\nconst CHAIN_TAG: Record<string, { label: string; color: string }> = {\n STELLAR: { label: 'Stellar', color: '#7d00ff' },\n POLYGON: { label: 'Polygon', color: '#8247e5' },\n SOLANA: { label: 'Solana', color: '#14f195' },\n};\n\nfunction ChainTag({ chain }: { chain: string }) {\n const tag = CHAIN_TAG[chain] ?? { label: chain, color: '#6b7280' };\n return (\n <span className=\"pollar-bal-chain-tag\" style={{ '--pollar-chain-color': tag.color } as CSSProperties}>\n {tag.label}\n </span>\n );\n}\n\nfunction BalanceItem({ record, showChain }: { record: WalletBalanceRecord; showChain: boolean }) {\n const balanceDiffers = record.balance !== record.available;\n return (\n <div className=\"pollar-bal-item\">\n <div className=\"pollar-bal-asset-info\">\n <span className=\"pollar-bal-asset-code-row\">\n <span className=\"pollar-bal-asset\">{record.code}</span>\n {showChain && record.chain && <ChainTag chain={record.chain} />}\n </span>\n {record.issuer && (\n <span className=\"pollar-bal-issuer\">\n <span className=\"pollar-bal-issuer-addr\">{cropAddress(record.issuer)}</span>\n <CopyButton value={record.issuer} label=\"Copy issuer address\" className=\"pollar-copy-btn-sm\" />\n </span>\n )}\n </div>\n <div className=\"pollar-bal-amounts\">\n <span className=\"pollar-bal-amount\">{formatBalance(record.balance)}</span>\n {balanceDiffers && <span className=\"pollar-bal-available\">{formatBalance(record.available)} available</span>}\n </div>\n </div>\n );\n}\n\nexport interface WalletBalanceModalTemplateProps {\n theme: string;\n accentColor: string;\n walletBalance: WalletBalanceState;\n walletAddress: string;\n onRefresh: () => void;\n onClose: () => void;\n}\n\nexport function WalletBalanceModalTemplate({\n theme,\n accentColor,\n walletBalance,\n walletAddress,\n onRefresh,\n onClose,\n}: WalletBalanceModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const isLoading = walletBalance.step === 'loading';\n const data = walletBalance.step === 'loaded' ? walletBalance.data : null;\n\n return (\n <div className=\"pollar-modal-card pollar-bal-modal\" data-theme={theme} style={cssVars} onClick={(e) => e.stopPropagation()}>\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Wallet Balance</h2>\n <div className=\"pollar-modal-header-actions\">\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoading}\n aria-label=\"Refresh\"\n title=\"Refresh\"\n >\n <svg\n className={isLoading ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n {walletAddress && (\n <div className=\"pollar-bal-address-row\">\n <span className=\"pollar-bal-address\">{cropAddress(walletAddress)}</span>\n <CopyButton value={walletAddress} label=\"Copy wallet address\" />\n </div>\n )}\n\n {isLoading && (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading…</span>\n </div>\n )}\n\n {walletBalance.step === 'error' && <div className=\"pollar-modal-error\">{walletBalance.message}</div>}\n\n {data && !data.exists && <div className=\"pollar-modal-empty\">Account not found on {data.network}.</div>}\n\n {data?.exists && data.balances.length === 0 && <div className=\"pollar-modal-empty\">No balances found.</div>}\n\n {data?.exists && data.balances.length > 0 && (\n <div className=\"pollar-bal-list\">\n {data.balances.map((b) => (\n <BalanceItem key={(b.chain ?? '') + b.code + (b.issuer ?? '')} record={b} showChain={data.multichain === true} />\n ))}\n </div>\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport './WalletBalanceModal.css';\nimport { WalletBalanceModalTemplate } from './WalletBalanceModalTemplate';\n\ninterface WalletBalanceModalProps {\n onClose: () => void;\n}\n\nexport function WalletBalanceModal({ onClose }: WalletBalanceModalProps) {\n const { walletBalance, refreshWalletBalance, wallet, styles } = usePollar();\n const walletAddress = wallet?.address ?? '';\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n useEffect(() => {\n void refreshWalletBalance();\n }, [refreshWalletBalance]);\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <WalletBalanceModalTemplate\n theme={theme}\n accentColor={accentColor}\n walletBalance={walletBalance}\n walletAddress={walletAddress}\n onRefresh={() => refreshWalletBalance()}\n onClose={onClose}\n />\n </div>\n );\n}\n","import type { PasskeyCeremony, PasskeySigner } from '@pollar/core';\nimport { startAuthentication, startRegistration } from '@simplewebauthn/browser';\n\n// hex → base64url, for passing the raw auth digest as the WebAuthn challenge.\nfunction hexToBase64url(hex: string): string {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < bytes.length; i++) bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n let bin = '';\n for (const b of bytes) bin += String.fromCharCode(b);\n return btoa(bin).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\n// WebAuthn user.id must be a base64url string in the JSON options. It is a\n// per-credential opaque handle (the authenticator stores it for the account\n// picker); the server identifies users by credentialId, not this.\nfunction randomUserId(): string {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n let bin = '';\n for (const b of bytes) bin += String.fromCharCode(b);\n return btoa(bin).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\n/**\n * Browser passkey ceremony for the smart-wallet flow.\n *\n * `mode` is set explicitly by the caller's button, so there's no ambiguous\n * autodetect:\n * - `'login'` → `get()` only (returning user — the OS shows the account\n * picker for discoverable credentials on this domain). A\n * failure here is surfaced as-is; it never falls through to\n * registration, so cancelling the prompt can't accidentally\n * create a second wallet.\n * - `'register'` → `create()` only (new user → the server deploys the\n * C-address).\n *\n * rpId = the current page's hostname (the customer app's domain), which is what\n * the passkey is bound to — the anti-phishing guarantee.\n */\nexport const browserPasskeyCeremony: PasskeyCeremony = async ({ challenge, mode }) => {\n const rpId = window.location.hostname;\n\n if (mode === 'login') {\n const response = await startAuthentication({\n optionsJSON: { challenge, rpId, userVerification: 'required' },\n });\n return { kind: 'login', response };\n }\n\n const userId = randomUserId();\n const response = await startRegistration({\n optionsJSON: {\n challenge,\n rp: { id: rpId, name: rpId },\n user: { id: userId, name: 'Smart Wallet', displayName: 'Smart Wallet' },\n // ES256 (secp256r1) — the curve the on-chain WebAuthn verifier expects.\n pubKeyCredParams: [{ type: 'public-key', alg: -7 }],\n authenticatorSelection: { residentKey: 'required', userVerification: 'required' },\n attestation: 'none',\n timeout: 60_000,\n },\n });\n return { kind: 'register', response };\n};\n\n/**\n * Browser passkey signer for smart-wallet transactions. Runs a WebAuthn `get()`\n * whose challenge is the raw auth digest (the on-chain verifier checks\n * clientDataJSON.challenge === base64url(digest)), and returns the public\n * assertion fields (base64url) for the server to assemble into the Soroban auth\n * entry. The secp256r1 key never leaves the device.\n */\nexport const browserPasskeySigner: PasskeySigner = async ({ credentialId, challenge }) => {\n const rpId = window.location.hostname;\n const { response } = await startAuthentication({\n optionsJSON: {\n challenge: hexToBase64url(challenge),\n rpId,\n allowCredentials: [{ id: credentialId, type: 'public-key' }],\n userVerification: 'required',\n },\n });\n // @simplewebauthn/browser returns these as base64url strings.\n return {\n authenticatorData: response.authenticatorData,\n clientDataJSON: response.clientDataJSON,\n signature: response.signature,\n };\n};\n","'use client';\n\nimport {\n BuildOutcome,\n EnabledAssetsState,\n isInteractiveAuthAdapter,\n NetworkState,\n OnStorageDegrade,\n PollarAdapters,\n PollarClient,\n PollarClientConfig,\n PollarLoginOptions,\n PollarPersistedSession,\n SessionsState,\n SignOutcome,\n StellarNetwork,\n SubmitOutcome,\n SwapQuote,\n SwapQuoteParams,\n SwapToken,\n SwapVenue,\n EarnProviderId,\n EarnOpportunity,\n EarnPosition,\n EarnPositionParams,\n EarnTxParams,\n TrustlineOutcome,\n TransactionState,\n TxBuildBody,\n TxHistoryState,\n WalletBalanceState,\n WalletInfo,\n} from '@pollar/core';\nimport { createContext, ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { ModalErrorBoundary, setModalErrorLogger } from './components/commons';\nimport { DistributionRulesModal } from './components/distribution-rules-modal/DistributionRulesModal';\nimport { EnabledAssetsModal } from './components/enabled-assets-modal/EnabledAssetsModal';\nimport { KycModal } from './components/kyc-modal/KycModal';\nimport { LoginModal } from './components/login-modal/LoginModal';\nimport { RampWidget } from './components/ramp-widget/RampWidget';\nimport { ReceiveModal } from './components/receive-modal/ReceiveModal';\nimport { SendModal } from './components/send-modal/SendModal';\nimport { SwapModal } from './components/swap-modal/SwapModal';\nimport { EarnModal } from './components/earn-modal/EarnModal';\nimport { SessionsModal } from './components/sessions-modal/SessionsModal';\nimport { TransactionModal } from './components/transaction-modal/TransactionModal';\nimport { TxHistoryModal } from './components/tx-history-modal/TxHistoryModal';\nimport { WalletBalanceModal } from './components/wallet-balance-modal/WalletBalanceModal';\nimport { browserPasskeyCeremony, browserPasskeySigner } from './lib/passkey-ceremony';\nimport type { PollarConfig, PollarStyles } from './types';\n\nconst DEFAULT_APP_CONFIG: PollarConfig = {\n application: { name: '', network: 'testnet', chains: [] },\n styles: {},\n};\n\n/**\n * Compares the fields of a persisted session that actually drive UI re-renders.\n * Replaces a per-listener `JSON.stringify(...) !== JSON.stringify(...)` call —\n * cheaper, allocation-free, and explicit about what counts as \"changed\".\n *\n * If a field is added to `PollarPersistedSession` that consumers read through\n * context, list it here too.\n */\nfunction sessionsEqual(a: PollarPersistedSession | null, b: PollarPersistedSession | null): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n return (\n a.clientSessionId === b.clientSessionId &&\n a.userId === b.userId &&\n a.status === b.status &&\n a.token?.accessToken === b.token?.accessToken &&\n a.token?.refreshToken === b.token?.refreshToken &&\n a.token?.expiresAt === b.token?.expiresAt &&\n a.wallet?.address === b.wallet?.address\n );\n}\n\ninterface PollarContextValue {\n /**\n * The authenticated user's wallet as a discriminated union over `custody`\n * (`internal` | `smart` | `external`), or `null` when unauthenticated. Every\n * field is meaningful for any login method — `custody` is always present and\n * strictly determines the shape of `provider`. Use `wallet.address` for the\n * on-chain address and `wallet.provider` for the wallet/login provider.\n */\n wallet: WalletInfo | null;\n getClient: () => PollarClient;\n openLoginModal: () => void;\n\n isAuthenticated: boolean;\n /**\n * `true` once the server has confirmed the session (login / refresh /\n * `/auth/session/resume`). `false` while a cold-start session is still\n * optimistic — gate sensitive actions (e.g. signing) on this.\n */\n verified: boolean;\n login: (options: PollarLoginOptions) => void;\n logout: () => void;\n // sessions\n sessions: SessionsState;\n /** Open the active-sessions modal. */\n openSessionsModal: () => void;\n appConfig: PollarConfig;\n styles: PollarStyles;\n /** Remote app-config load state. 'loading' while the initial fetch is in\n * flight, 'error' if it failed (styles fall back to empty defaults), 'ready'\n * once resolved — or immediately 'ready' when `appConfig` is passed as a prop.\n * The login modal shows a spinner/retry instead of an empty shell until this\n * is 'ready'. */\n configStatus: 'loading' | 'ready' | 'error';\n /** Re-run the remote app-config fetch after an error. No-op when `appConfig`\n * was supplied as a prop. */\n retryConfig: () => void;\n // transactions\n openTxModal: () => void;\n tx: TransactionState;\n buildTx: (\n operation: TxBuildBody['operation'],\n params: TxBuildBody['params'],\n options?: TxBuildBody['options'],\n ) => Promise<BuildOutcome>;\n signAndSubmitTx: (unsignedXdr?: string) => Promise<SubmitOutcome>;\n /** External-wallet only. Custodial flows should use `signAndSubmitTx`. */\n signTx: (unsignedXdr: string) => Promise<SignOutcome>;\n submitTx: (signedXdr: string) => Promise<SubmitOutcome>;\n /** One-shot: build → sign → submit. Drives the same TransactionState flow as the split calls. */\n buildAndSignAndSubmitTx: (\n operation: TxBuildBody['operation'],\n params: TxBuildBody['params'],\n options?: TxBuildBody['options'],\n ) => Promise<SubmitOutcome>;\n /** Alias of `buildAndSignAndSubmitTx`. */\n runTx: (\n operation: TxBuildBody['operation'],\n params: TxBuildBody['params'],\n options?: TxBuildBody['options'],\n ) => Promise<SubmitOutcome>;\n // network\n network: StellarNetwork;\n setNetwork: (network: StellarNetwork) => void;\n // wallet balance\n walletBalance: WalletBalanceState;\n refreshWalletBalance: () => Promise<void>;\n // enabled assets\n /**\n * The application's dashboard-enabled assets paired with the authenticated\n * wallet's on-chain trustline state (`trustlineEstablished` per asset). Driven\n * by {@link refreshAssets}; mirrors {@link walletBalance}.\n */\n enabledAssets: EnabledAssetsState;\n refreshAssets: () => Promise<void>;\n /**\n * Establishes (omit `limit`) or removes (`limit: '0'`) a trustline for an\n * asset. Pass the asset's `sponsored` flag so the app covers the reserve + fee\n * when eligible; otherwise the user's own wallet pays. Mirrors\n * {@link PollarClient.setTrustline}.\n */\n setTrustline: (\n asset: { code: string; issuer: string },\n opts?: { limit?: string; sponsored?: boolean },\n ) => Promise<TrustlineOutcome>;\n /** Open the enabled-assets / trustline-state modal. */\n openEnabledAssetsModal: () => void;\n // kyc\n openKycModal: (options?: {\n country?: string;\n level?: 'basic' | 'intermediate' | 'enhanced';\n onApproved?: () => void;\n }) => void;\n // ramps\n openRampModal: () => void;\n // tx history\n txHistory: TxHistoryState;\n openTxHistoryModal: () => void;\n // wallet balance modal\n openWalletBalanceModal: () => void;\n // send / receive\n openSendModal: () => void;\n openReceiveModal: () => void;\n // swap (DEX/AMM)\n /**\n * The swap venues this app exposes to end-users (empty = swap disabled, hide\n * swap UI). Mirrors {@link PollarClient.getSwapConfig}.\n */\n getSwapConfig: () => Promise<SwapVenue[]>;\n /**\n * The curated \"buy\" tokens this app opted into (admin catalog). Mirrors\n * {@link PollarClient.getSwapTokens}.\n */\n getSwapTokens: () => Promise<SwapToken[]>;\n /**\n * Quote an asset-to-asset swap across the requested venue(s). Read-only;\n * returns quotes ranked best-first. Mirrors {@link PollarClient.getSwapQuote}.\n */\n getSwapQuote: (params: SwapQuoteParams) => Promise<SwapQuote[]>;\n /**\n * Execute a swap from a quote (establishes the buy-asset trustline first when\n * needed). Drives the transaction state machine. Mirrors {@link PollarClient.swap}.\n */\n swap: (quote: SwapQuote, opts?: { autoTrustline?: boolean }) => Promise<SubmitOutcome>;\n /** Open the swap modal. */\n openSwapModal: () => void;\n // earn (yield vaults / lending)\n /**\n * The yield providers this app exposes to end-users (empty = Earn disabled,\n * hide Earn UI). Mirrors {@link PollarClient.getEarnProviders}.\n */\n getEarnProviders: () => Promise<EarnProviderId[]>;\n /**\n * The vaults (DeFindex) or pools (Blend) a provider exposes, with live APY.\n * Mirrors {@link PollarClient.getEarnOpportunities}.\n */\n getEarnOpportunities: (provider: EarnProviderId) => Promise<EarnOpportunity[]>;\n /**\n * The connected wallet's position (balance + APY) in a vault/pool. Read-only.\n * Mirrors {@link PollarClient.getEarnPosition}.\n */\n getEarnPosition: (params: EarnPositionParams) => Promise<EarnPosition>;\n /**\n * Deposit into a vault/pool (asset amount). Drives the transaction state\n * machine. Mirrors {@link PollarClient.earnDeposit}.\n */\n earnDeposit: (params: EarnTxParams) => Promise<SubmitOutcome>;\n /**\n * Withdraw from a vault/pool (amount in the position `withdrawUnit`). Mirrors\n * {@link PollarClient.earnWithdraw}.\n */\n earnWithdraw: (params: EarnTxParams) => Promise<SubmitOutcome>;\n /** Open the Earn modal. */\n openEarnModal: () => void;\n // distribution\n openDistributionRulesModal: () => void;\n // adapters\n adapters?: PollarAdapters;\n}\n\nconst PollarContext = createContext<PollarContextValue | null>(null);\n\ninterface PollarProviderProps {\n /**\n * Either a pre-built `PollarClient` instance (useful for testing or for\n * reusing the same client outside React) or a `PollarClientConfig` that the\n * provider will use to construct one on mount.\n *\n * The client is locked at first render: changing this prop afterwards is\n * ignored. To swap clients, unmount and remount the provider.\n */\n client: PollarClient | PollarClientConfig;\n /**\n * Local override of the `/applications/config` response. If provided (even\n * `{}`), the remote fetch is skipped and missing fields fall back to the\n * defaults in `LoginModalTemplate`. If `undefined`, the SDK fetches\n * `/applications/config` on mount.\n */\n appConfig?: PollarConfig;\n adapters?: PollarAdapters;\n /**\n * Notified when persistent storage silently degrades to in-memory mode\n * (Safari private browsing quota errors, sandboxed iframes, etc.). Use this\n * to surface a UI hint that the session won't survive a reload, log to\n * telemetry, or fall back to a different storage strategy.\n *\n * Fires at most once per provider lifetime; late mounts get the latched\n * state replayed on subscribe.\n */\n onStorageDegrade?: OnStorageDegrade;\n children: ReactNode;\n}\n\nexport function PollarProvider({\n client,\n appConfig: appConfigProp,\n adapters,\n onStorageDegrade,\n children,\n}: PollarProviderProps) {\n // When the consumer passes a config (not a ready client), inject the browser\n // passkey ceremony so `loginSmartWallet()` works out of the box on web. The\n // consumer can override it (e.g. a React Native native provider) via\n // `client.passkey`.\n const [pollarClient] = useState<PollarClient>(() =>\n client instanceof PollarClient\n ? client\n : new PollarClient({ passkey: browserPasskeyCeremony, passkeySign: browserPasskeySigner, ...client }),\n );\n // Only a client WE constructed is ours to tear down on unmount; a client the\n // consumer passed in is theirs to manage. Captured once (the useState\n // initializer above made the same decision).\n const ownsClientRef = useRef(!(client instanceof PollarClient));\n const destroyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Tear down the client on a real unmount so its cross-tab storage listener,\n // refresh timer, and live-client registry entry don't leak — matters when the\n // provider is keyed (e.g. `key={apiKey}`) and remounts on network change.\n useEffect(() => {\n if (!ownsClientRef.current) return;\n // This mount is live again — cancel any teardown scheduled by a prior\n // (StrictMode dev) unmount before it can destroy the client we still use.\n if (destroyTimerRef.current) {\n clearTimeout(destroyTimerRef.current);\n destroyTimerRef.current = null;\n }\n return () => {\n // Defer to a macrotask: React StrictMode unmounts then synchronously\n // remounts in dev, and the remount's effect (above) cancels this before it\n // runs. On a real unmount nothing re-mounts to cancel it, so it fires.\n destroyTimerRef.current = setTimeout(() => pollarClient.destroy(), 0);\n };\n }, [pollarClient]);\n const [networkState, setNetworkState] = useState<NetworkState>(() => pollarClient.getNetworkState());\n const [sessionState, setSessionState] = useState<PollarPersistedSession | null>(null);\n // `true` once the server has confirmed the restored session (via login,\n // refresh, or `/auth/session/resume`). Use it to gate sensitive actions\n // while a cold-start session is still optimistic.\n const [verified, setVerified] = useState(false);\n const [transaction, setTransaction] = useState<TransactionState>({ step: 'idle' });\n const [txHistory, setTxHistory] = useState<TxHistoryState>({ step: 'idle' });\n const [sessions, setSessions] = useState<SessionsState>({ step: 'idle' });\n const [walletBalance, setWalletBalance] = useState<WalletBalanceState>({ step: 'idle' });\n const [enabledAssets, setEnabledAssets] = useState<EnabledAssetsState>({ step: 'idle' });\n const [resolvedConfig, setResolvedConfig] = useState<PollarConfig>(() => appConfigProp ?? DEFAULT_APP_CONFIG);\n const [configStatus, setConfigStatus] = useState<'loading' | 'ready' | 'error'>(\n appConfigProp !== undefined ? 'ready' : 'loading',\n );\n const [configRetry, setConfigRetry] = useState(0);\n const retryConfig = useCallback(() => setConfigRetry((n) => n + 1), []);\n\n useEffect(() => {\n return pollarClient.onTransactionStateChange(setTransaction);\n }, [pollarClient]);\n\n useEffect(() => {\n return pollarClient.onTxHistoryStateChange(setTxHistory);\n }, [pollarClient]);\n\n useEffect(() => {\n return pollarClient.onSessionsStateChange(setSessions);\n }, [pollarClient]);\n\n useEffect(() => {\n return pollarClient.onWalletBalanceStateChange(setWalletBalance);\n }, [pollarClient]);\n\n useEffect(() => {\n return pollarClient.onEnabledAssetsStateChange(setEnabledAssets);\n }, [pollarClient]);\n\n useEffect(() => {\n return pollarClient.onNetworkStateChange((state) => {\n setNetworkState(state);\n });\n }, [pollarClient]);\n\n useEffect(() => {\n if (!onStorageDegrade) return;\n return pollarClient.onStorageDegrade(onStorageDegrade);\n }, [pollarClient, onStorageDegrade]);\n\n useEffect(() => {\n return pollarClient.onAuthStateChange((authState) => {\n if (authState.step === 'authenticated') {\n setSessionState((prev) => (sessionsEqual(prev, authState.session) ? prev : authState.session));\n // The session object is identical between the optimistic restore and\n // the post-resume confirmation, so `verified` is tracked separately —\n // otherwise the sessionsEqual short-circuit would swallow the flip.\n setVerified(authState.verified);\n } else if (authState.step === 'idle') {\n setSessionState(null);\n setVerified(false);\n }\n });\n }, [pollarClient]);\n\n // Auto-login for interactive adapters (e.g. Privy). When the adapter's\n // provider authenticates *outside* the sub-modal flow — after an OAuth redirect\n // (the page reloaded, so the sub-modal promise is gone) or a persisted provider\n // session on load — and Pollar has no session yet, trigger `login({ provider })`\n // so `connect()` + SEP-10 run. Read the session through a ref so the\n // subscription is set up once and never re-subscribes on session changes.\n const sessionRef = useRef(sessionState);\n sessionRef.current = sessionState;\n useEffect(() => {\n const unsubscribes: Array<() => void> = [];\n for (const { id } of pollarClient.listWalletAdapters()) {\n const adapter = pollarClient.getWalletAdapter(id);\n if (!isInteractiveAuthAdapter(adapter) || !adapter.onProviderAuthChange) continue;\n let triggered = false;\n unsubscribes.push(\n adapter.onProviderAuthChange((state) => {\n // Reset on sign-out so a later re-auth can trigger again (rising edge).\n if (!state.authenticated || !state.address) {\n triggered = false;\n return;\n }\n if (triggered || sessionRef.current?.wallet?.address) return;\n triggered = true;\n pollarClient.login({ provider: id } as PollarLoginOptions);\n }),\n );\n }\n return () => {\n for (const unsubscribe of unsubscribes) unsubscribe();\n };\n }, [pollarClient]);\n\n // Presence of `appConfig` is the opt-out: if the consumer passes it (even\n // `{}`), we trust them and skip the remote fetch.\n // Route the modal error boundary's logs through the client's level-gated\n // logger (it's a class component that can't read context directly).\n useEffect(() => {\n setModalErrorLogger(pollarClient.getLogger());\n }, [pollarClient]);\n\n useEffect(() => {\n // A consumer-supplied appConfig opts out of the remote fetch; it's ready as-is.\n if (appConfigProp !== undefined) {\n setConfigStatus('ready');\n return;\n }\n let cancelled = false;\n setConfigStatus('loading');\n pollarClient\n .getAppConfig()\n .then((fetched) => {\n if (cancelled) return;\n if (!fetched) {\n setConfigStatus('error');\n return;\n }\n setResolvedConfig(fetched as PollarConfig);\n setConfigStatus('ready');\n })\n .catch((err) => {\n if (cancelled) return;\n pollarClient.getLogger().error('[PollarProvider] getAppConfig failed', err);\n setConfigStatus('error');\n });\n return () => {\n cancelled = true;\n };\n }, [pollarClient, appConfigProp, configRetry]);\n\n const [loginModalOpen, setLoginModalOpen] = useState(false);\n const [transactionModalOpen, setTransactionModalOpen] = useState(false);\n const [kycModalOpen, setKycModalOpen] = useState(false);\n const [kycModalOptions, setKycModalOptions] = useState<{\n country?: string;\n level?: 'basic' | 'intermediate' | 'enhanced';\n onApproved?: () => void;\n }>({});\n const [rampModalOpen, setRampModalOpen] = useState(false);\n const [txHistoryModalOpen, setTxHistoryModalOpen] = useState(false);\n const [walletBalanceModalOpen, setWalletBalanceModalOpen] = useState(false);\n const [enabledAssetsModalOpen, setEnabledAssetsModalOpen] = useState(false);\n const [sendModalOpen, setSendModalOpen] = useState(false);\n const [swapModalOpen, setSwapModalOpen] = useState(false);\n const [earnModalOpen, setEarnModalOpen] = useState(false);\n // Bumped every time a tx-driving modal opens, used as its `key` so a re-open\n // remounts it (local `step` back to the form) even when it was already open on\n // a terminal \"Done!\"/error screen. Paired with `resetTransactionState()`.\n const [sendModalKey, setSendModalKey] = useState(0);\n const [swapModalKey, setSwapModalKey] = useState(0);\n const [earnModalKey, setEarnModalKey] = useState(0);\n const [receiveModalOpen, setReceiveModalOpen] = useState(false);\n const [sessionsModalOpen, setSessionsModalOpen] = useState(false);\n const [distributionRulesModalOpen, setDistributionRulesModalOpen] = useState(false);\n\n // PII (incl. providers.wallet.address) lives on `client.getUserProfile()`, not on the\n // persisted session. For every wallet type, `wallet.address` holds the on-chain\n // address we care about.\n const walletAddress = sessionState?.wallet?.address || '';\n const getClient = useCallback(() => pollarClient, [pollarClient]);\n // refreshBalance resolves the own wallet server-side from the session;\n // walletAddress stays in deps so the callback re-binds when the wallet changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps -- walletAddress is an intentional re-bind trigger, not read in the body\n const refreshWalletBalance = useCallback(() => pollarClient.refreshBalance(), [pollarClient, walletAddress]);\n // refreshAssets resolves the own wallet server-side from the session;\n // walletAddress stays in deps so the callback re-binds when the wallet changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps -- walletAddress is an intentional re-bind trigger, not read in the body\n const refreshAssets = useCallback(() => pollarClient.refreshAssets(), [pollarClient, walletAddress]);\n\n const contextValue: PollarContextValue = useMemo(() => {\n const styles: PollarStyles = resolvedConfig.styles ?? {};\n return {\n // session\n wallet: pollarClient.getWallet(),\n isAuthenticated: !!walletAddress,\n verified,\n // client\n getClient,\n // auth\n login: (options: PollarLoginOptions) => pollarClient.login(options),\n logout: () => pollarClient.logout(),\n openLoginModal: () => setLoginModalOpen(true),\n // transactions\n tx: transaction,\n buildTx: (operation, params, options) => pollarClient.buildTx(operation, params, options),\n signAndSubmitTx: (unsignedXdr?: string) => pollarClient.signAndSubmitTx(unsignedXdr),\n signTx: (unsignedXdr: string) => pollarClient.signTx(unsignedXdr),\n submitTx: (signedXdr: string) => pollarClient.submitTx(signedXdr),\n buildAndSignAndSubmitTx: (operation, params, options) => pollarClient.buildAndSignAndSubmitTx(operation, params, options),\n runTx: (operation, params, options) => pollarClient.runTx(operation, params, options),\n openTxModal: () => setTransactionModalOpen(true),\n // tx history\n txHistory,\n openTxHistoryModal: () => setTxHistoryModalOpen(true),\n // wallet balance\n walletBalance,\n refreshWalletBalance,\n openWalletBalanceModal: () => setWalletBalanceModalOpen(true),\n // enabled assets\n enabledAssets,\n refreshAssets,\n setTrustline: (asset, opts) => pollarClient.setTrustline(asset, opts),\n openEnabledAssetsModal: () => setEnabledAssetsModalOpen(true),\n // send / receive\n openSendModal: () => {\n pollarClient.resetTransactionState();\n setSendModalKey((k) => k + 1);\n setSendModalOpen(true);\n },\n openReceiveModal: () => setReceiveModalOpen(true),\n // swap\n getSwapConfig: () => pollarClient.getSwapConfig(),\n getSwapTokens: () => pollarClient.getSwapTokens(),\n getSwapQuote: (params) => pollarClient.getSwapQuote(params),\n swap: (quote, opts) => pollarClient.swap(quote, opts),\n openSwapModal: () => {\n pollarClient.resetTransactionState();\n setSwapModalKey((k) => k + 1);\n setSwapModalOpen(true);\n },\n // earn\n getEarnProviders: () => pollarClient.getEarnProviders(),\n getEarnOpportunities: (provider) => pollarClient.getEarnOpportunities(provider),\n getEarnPosition: (params) => pollarClient.getEarnPosition(params),\n earnDeposit: (params) => pollarClient.earnDeposit(params),\n earnWithdraw: (params) => pollarClient.earnWithdraw(params),\n openEarnModal: () => {\n pollarClient.resetTransactionState();\n setEarnModalKey((k) => k + 1);\n setEarnModalOpen(true);\n },\n // sessions\n sessions,\n openSessionsModal: () => setSessionsModalOpen(true),\n // distribution\n openDistributionRulesModal: () => setDistributionRulesModalOpen(true),\n // network\n network: networkState.step === 'connected' ? networkState.network : 'testnet',\n setNetwork: (network: StellarNetwork) => pollarClient.setNetwork(network),\n // kyc\n openKycModal: (options = {}) => {\n setKycModalOptions(options);\n setKycModalOpen(true);\n },\n // ramp\n openRampModal: () => setRampModalOpen(true),\n // config\n appConfig: resolvedConfig,\n styles,\n configStatus,\n retryConfig,\n adapters,\n } as PollarContextValue;\n }, [\n walletAddress,\n verified,\n pollarClient,\n getClient,\n transaction,\n txHistory,\n sessions,\n walletBalance,\n refreshWalletBalance,\n enabledAssets,\n refreshAssets,\n networkState,\n resolvedConfig,\n configStatus,\n retryConfig,\n adapters,\n ]);\n\n return (\n <PollarContext.Provider value={contextValue}>\n {children}\n {loginModalOpen && (\n <ModalErrorBoundary onClose={() => setLoginModalOpen(false)}>\n <LoginModal onClose={() => setLoginModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {transactionModalOpen && (\n <ModalErrorBoundary onClose={() => setTransactionModalOpen(false)}>\n <TransactionModal onClose={() => setTransactionModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {kycModalOpen && (\n <ModalErrorBoundary onClose={() => setKycModalOpen(false)}>\n <KycModal\n onClose={() => setKycModalOpen(false)}\n {...(kycModalOptions.country !== undefined && { country: kycModalOptions.country })}\n {...(kycModalOptions.level !== undefined && { level: kycModalOptions.level })}\n {...(kycModalOptions.onApproved !== undefined && { onApproved: kycModalOptions.onApproved })}\n />\n </ModalErrorBoundary>\n )}\n {rampModalOpen && (\n <ModalErrorBoundary onClose={() => setRampModalOpen(false)}>\n <RampWidget onClose={() => setRampModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {txHistoryModalOpen && (\n <ModalErrorBoundary onClose={() => setTxHistoryModalOpen(false)}>\n <TxHistoryModal onClose={() => setTxHistoryModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {walletBalanceModalOpen && (\n <ModalErrorBoundary onClose={() => setWalletBalanceModalOpen(false)}>\n <WalletBalanceModal onClose={() => setWalletBalanceModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {enabledAssetsModalOpen && (\n <ModalErrorBoundary onClose={() => setEnabledAssetsModalOpen(false)}>\n <EnabledAssetsModal onClose={() => setEnabledAssetsModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {sendModalOpen && (\n <ModalErrorBoundary key={sendModalKey} onClose={() => setSendModalOpen(false)}>\n <SendModal onClose={() => setSendModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {swapModalOpen && (\n <ModalErrorBoundary key={swapModalKey} onClose={() => setSwapModalOpen(false)}>\n <SwapModal onClose={() => setSwapModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {earnModalOpen && (\n <ModalErrorBoundary key={earnModalKey} onClose={() => setEarnModalOpen(false)}>\n <EarnModal onClose={() => setEarnModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {receiveModalOpen && (\n <ModalErrorBoundary onClose={() => setReceiveModalOpen(false)}>\n <ReceiveModal onClose={() => setReceiveModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {sessionsModalOpen && (\n <ModalErrorBoundary onClose={() => setSessionsModalOpen(false)}>\n <SessionsModal onClose={() => setSessionsModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {distributionRulesModalOpen && (\n <ModalErrorBoundary onClose={() => setDistributionRulesModalOpen(false)}>\n <DistributionRulesModal onClose={() => setDistributionRulesModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n </PollarContext.Provider>\n );\n}\n\nexport function usePollar() {\n const ctx = useContext(PollarContext);\n if (!ctx) {\n throw new Error('usePollar must be used inside <PollarProvider>');\n }\n return ctx;\n}\n","'use client';\n\nimport type { PollarAdapter, SubmitOutcome } from '@pollar/core';\nimport { usePollar } from './context';\n\ntype WrappedAdapter<T extends PollarAdapter> = {\n [K in keyof T]: (params: Parameters<T[K]>[0]) => Promise<SubmitOutcome>;\n};\n\nexport function createPollarAdapterHook<T extends PollarAdapter>(key: string) {\n return function usePollarAdapter(): WrappedAdapter<T> {\n const { adapters, signAndSubmitTx } = usePollar();\n const adapter = adapters?.[key] as T | undefined;\n\n if (!adapter) {\n throw new Error(`No adapter \"${key}\" provided to PollarProvider`);\n }\n\n return Object.fromEntries(\n Object.entries(adapter).map(([name, fn]) => [\n name,\n async (params: Parameters<typeof fn>[0]) => {\n const { unsignedTransaction } = await fn(params);\n return signAndSubmitTx(unsignedTransaction);\n },\n ]),\n ) as WrappedAdapter<T>;\n };\n}\n","'use client';\n\nimport { WalletId } from '@pollar/core';\nimport { LOGO_POLLAR } from '../../constants';\nimport './WalletButton.css';\n\nfunction ButtonLogo() {\n return <img src={LOGO_POLLAR} alt=\"Pollar\" width={22} height={22} className=\"pollar-wallet-btn-logo\" />;\n}\n\nexport interface WalletButtonTemplateProps {\n walletAddress: string | null;\n accentColor: string;\n open: boolean;\n copied: boolean;\n dropdownBg: string;\n dropdownBorder: string;\n itemColor: string;\n wrapperRef: React.RefObject<HTMLDivElement>;\n isInProgress: boolean;\n walletType: WalletId | null;\n /** Show the \"Create account\" action (external wallet not yet on-chain, IMMEDIATE funding). */\n showCreateAccount: boolean;\n creatingAccount: boolean;\n onToggleOpen: () => void;\n onCreateAccount: () => void;\n onCopy: () => void;\n onWalletBalance: () => void;\n onTxHistory: () => void;\n onSend: () => void;\n onReceive: () => void;\n onSessions: () => void;\n onKyc: () => void;\n onRamp: () => void;\n onDistributionRules: () => void;\n onLogout: () => void;\n onLogin: () => void;\n}\n\nfunction cropWallet(address: string) {\n if (address.length <= 12) return address;\n return `${address.slice(0, 6)}...${address.slice(-4)}`;\n}\n\nexport function WalletButtonTemplate({\n walletAddress,\n accentColor,\n open,\n copied,\n dropdownBg,\n dropdownBorder,\n itemColor,\n wrapperRef,\n isInProgress,\n showCreateAccount,\n creatingAccount,\n onToggleOpen,\n onCreateAccount,\n onCopy,\n onWalletBalance,\n onTxHistory,\n onSend,\n onReceive,\n onSessions,\n onKyc,\n onRamp,\n onDistributionRules,\n onLogout,\n onLogin,\n}: WalletButtonTemplateProps) {\n if (!walletAddress) {\n return (\n <button type=\"button\" className=\"pollar-wallet-login-btn\" style={{ backgroundColor: accentColor }} onClick={onLogin}>\n <ButtonLogo />\n Login with Pollar\n </button>\n );\n }\n\n return (\n <div className=\"pollar-wallet-wrapper\" ref={wrapperRef}>\n <button\n className=\"pollar-wallet-btn\"\n style={{ backgroundColor: accentColor }}\n onClick={isInProgress ? undefined : onToggleOpen}\n disabled={isInProgress}\n aria-busy={isInProgress}\n >\n <span className=\"pollar-wallet-btn-label\">{cropWallet(walletAddress)}</span>\n {isInProgress ? (\n <svg className=\"pollar-wallet-btn-spinner\" viewBox=\"0 0 12 12\" width=\"12\" height=\"12\" fill=\"none\" aria-hidden>\n <circle cx=\"6\" cy=\"6\" r=\"4.5\" stroke=\"rgba(255,255,255,0.35)\" strokeWidth=\"1.5\" />\n <circle\n cx=\"6\"\n cy=\"6\"\n r=\"4.5\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeDasharray=\"14 9\"\n transform=\"rotate(-90 6 6)\"\n />\n </svg>\n ) : (\n <svg\n className={`pollar-wallet-chevron${open ? ' pollar-open' : ''}`}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"2,4 6,8 10,4\" />\n </svg>\n )}\n </button>\n\n {open && (\n <div className=\"pollar-wallet-dropdown\" style={{ backgroundColor: dropdownBg, borderColor: dropdownBorder }}>\n {showCreateAccount && (\n <>\n <button\n className=\"pollar-wallet-dropdown-item\"\n style={{ color: itemColor }}\n onClick={onCreateAccount}\n disabled={creatingAccount}\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <line x1=\"19\" y1=\"8\" x2=\"19\" y2=\"14\" />\n <line x1=\"22\" y1=\"11\" x2=\"16\" y2=\"11\" />\n </svg>\n {creatingAccount ? 'Creating account…' : 'Create account'}\n </button>\n <div className=\"pollar-wallet-dropdown-divider\" />\n </>\n )}\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onSend}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\" />\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\" />\n </svg>\n Send\n </button>\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onReceive}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"8 17 12 21 16 17\" />\n <line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\" />\n <path d=\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\" />\n </svg>\n Receive\n </button>\n <div className=\"pollar-wallet-dropdown-divider\" />\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onCopy}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </svg>\n {copied ? 'Copied!' : 'Copy address'}\n </button>\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onWalletBalance}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\" />\n <circle cx=\"16\" cy=\"12\" r=\"2\" />\n <path d=\"M22 8H12\" />\n </svg>\n Wallet balance\n </button>\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onTxHistory}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14,2 14,8 20,8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <polyline points=\"10,9 9,9 8,9\" />\n </svg>\n Transaction history\n </button>\n <div className=\"pollar-wallet-dropdown-divider\" />\n {/* Buy / Sell (ramp) */}\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onRamp}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"17 1 21 5 17 9\" />\n <path d=\"M3 11V9a4 4 0 0 1 4-4h14\" />\n <polyline points=\"7 23 3 19 7 15\" />\n <path d=\"M21 13v2a4 4 0 0 1-4 4H3\" />\n </svg>\n Buy / Sell\n </button>\n {/* Identity verification */}\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onKyc}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z\" />\n <path d=\"M2 21v-1a6 6 0 0 1 6-6h2\" />\n <polyline points=\"16 11 18 13 22 9\" />\n </svg>\n Identity verification\n </button>\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onDistributionRules}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"18\" cy=\"5\" r=\"3\" />\n <circle cx=\"6\" cy=\"12\" r=\"3\" />\n <circle cx=\"18\" cy=\"19\" r=\"3\" />\n <line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\" />\n <line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\" />\n </svg>\n Distribution rules\n </button>\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onSessions}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\" />\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\" />\n </svg>\n Active sessions\n </button>\n <div className=\"pollar-wallet-dropdown-divider\" />\n <button className=\"pollar-wallet-dropdown-item pollar-danger\" onClick={onLogout}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <polyline points=\"16,17 21,12 16,7\" />\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n </svg>\n Log out\n </button>\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport { WalletButtonTemplate } from './WalletButtonTemplate';\nimport './WalletButton.css';\n\nexport function WalletButton() {\n const {\n getClient,\n wallet,\n styles,\n openLoginModal,\n openTxHistoryModal,\n openWalletBalanceModal,\n openSendModal,\n openReceiveModal,\n openSessionsModal,\n openKycModal,\n openRampModal,\n openDistributionRulesModal,\n tx: transaction,\n } = usePollar();\n const walletAddress = wallet?.address ?? '';\n // External-wallet signing-adapter id (freighter/albedo) drives the wallet logo;\n // null for custodial/smart, which fall back to the Pollar logo.\n const walletType = wallet?.custody === 'external' ? wallet.provider : null;\n const [open, setOpen] = useState(false);\n const [copied, setCopied] = useState(false);\n const [creating, setCreating] = useState(false);\n const [created, setCreated] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isInProgress = transaction.step === 'building' || transaction.step === 'signing';\n // Offer on-chain account creation only for an EXTERNAL wallet Stellar doesn't\n // have yet, under IMMEDIATE funding. `existsOnStellar === false` (not just\n // falsy) so an unknown/legacy session doesn't wrongly show it. `created` hides\n // it optimistically after a successful create (the session's existsOnStellar\n // only refreshes on the next login/resume).\n const canCreateAccount =\n !created && wallet?.custody === 'external' && wallet.existsOnStellar === false && wallet.fundingMode === 'IMMEDIATE';\n\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n const isDark = theme === 'dark';\n const dropdownBg = isDark ? '#18181b' : '#fff';\n const dropdownBorder = isDark ? '#3f3f46' : '#e4e4e7';\n const itemColor = isDark ? '#fafafa' : '#18181b';\n\n useEffect(() => {\n function handleClickOutside(e: MouseEvent) {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n useEffect(\n () => () => {\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n async function handleCopy() {\n if (!walletAddress) return;\n await navigator.clipboard.writeText(walletAddress);\n setCopied(true);\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n copyTimerRef.current = null;\n setCopied(false);\n }, 1500);\n }\n\n function handleLogout() {\n setOpen(false);\n getClient().logout();\n }\n\n async function handleCreateAccount() {\n if (creating) return;\n setCreating(true);\n try {\n const res = await getClient().createAccount();\n if (res.status === 'success' || res.status === 'pending') {\n setCreated(true);\n setOpen(false);\n await getClient().refreshBalance();\n }\n // On error, keep the item so the user can retry (createAccount surfaces the\n // reason in res.details; the send/receive modals also report failures).\n } finally {\n setCreating(false);\n }\n }\n\n function handleWalletBalance() {\n setOpen(false);\n openWalletBalanceModal();\n }\n\n function handleTxHistory() {\n setOpen(false);\n openTxHistoryModal();\n }\n\n function handleSend() {\n setOpen(false);\n openSendModal();\n }\n\n function handleReceive() {\n setOpen(false);\n openReceiveModal();\n }\n\n function handleSessions() {\n setOpen(false);\n openSessionsModal();\n }\n\n function handleKyc() {\n setOpen(false);\n openKycModal();\n }\n\n function handleRamp() {\n setOpen(false);\n openRampModal();\n }\n\n function handleDistributionRules() {\n setOpen(false);\n openDistributionRulesModal();\n }\n\n return (\n <WalletButtonTemplate\n walletAddress={walletAddress ?? null}\n accentColor={accentColor}\n open={open}\n copied={copied}\n dropdownBg={dropdownBg}\n dropdownBorder={dropdownBorder}\n itemColor={itemColor}\n wrapperRef={wrapperRef}\n isInProgress={isInProgress}\n walletType={walletType}\n showCreateAccount={canCreateAccount}\n creatingAccount={creating}\n onToggleOpen={() => setOpen((v) => !v)}\n onCreateAccount={handleCreateAccount}\n onCopy={handleCopy}\n onWalletBalance={handleWalletBalance}\n onTxHistory={handleTxHistory}\n onSend={handleSend}\n onReceive={handleReceive}\n onSessions={handleSessions}\n onKyc={handleKyc}\n onRamp={handleRamp}\n onDistributionRules={handleDistributionRules}\n onLogout={handleLogout}\n onLogin={openLoginModal}\n />\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/qr.js/lib/ErrorCorrectLevel.js","../../../node_modules/qr.js/lib/mode.js","../../../node_modules/qr.js/lib/8BitByte.js","../../../node_modules/qr.js/lib/RSBlock.js","../../../node_modules/qr.js/lib/BitBuffer.js","../../../node_modules/qr.js/lib/math.js","../../../node_modules/qr.js/lib/Polynomial.js","../../../node_modules/qr.js/lib/util.js","../../../node_modules/qr.js/lib/QRCode.js","../src/constants.ts","../src/components/commons.tsx","../src/components/distribution-rules-modal/DistributionRulesModalTemplate.tsx","../src/components/distribution-rules-modal/DistributionRulesModal.tsx","../src/components/ChainSelect.tsx","../src/useChains.ts","../src/components/enabled-assets-modal/EnabledAssetsModalTemplate.tsx","../src/components/enabled-assets-modal/EnabledAssetsModal.tsx","../src/components/kyc-modal/KycStatus.tsx","../src/components/kyc-modal/KycModalTemplate.tsx","../src/components/kyc-modal/KycModal.tsx","../src/components/login-modal/EmailCodeInput.tsx","../src/components/login-modal/GithubButton.tsx","../src/components/login-modal/GoogleButton.tsx","../src/components/login-modal/LoginModalTemplate.tsx","../src/components/login-modal/PrivyLoginSubmodal.tsx","../src/components/login-modal/LoginModal.tsx","../src/components/ramp-widget/RouteDisplay.tsx","../src/components/ramp-widget/RampWidgetTemplate.tsx","../src/components/ramp-widget/RampWidget.tsx","../src/lib/qr-code/index.tsx","../src/components/receive-modal/ReceiveModalTemplate.tsx","../src/components/receive-modal/ReceiveModal.tsx","../src/components/AssetSelect.tsx","../src/components/transaction-modal/TxStatusView.tsx","../src/components/send-modal/SendModalTemplate.tsx","../src/components/send-modal/SendModal.tsx","../src/components/swap-modal/SwapModalTemplate.tsx","../src/components/swap-modal/SwapModal.tsx","../src/components/earn-modal/EarnModal.tsx","../src/components/sessions-modal/SessionsModalTemplate.tsx","../src/components/sessions-modal/SessionsModal.tsx","../src/components/transaction-modal/TransactionModalTemplate.tsx","../src/components/transaction-modal/TransactionModal.tsx","../src/components/tx-history-modal/TxHistoryModalTemplate.tsx","../src/components/tx-history-modal/TxHistoryModal.tsx","../src/components/wallet-balance-modal/WalletBalanceModalTemplate.tsx","../src/components/wallet-balance-modal/WalletBalanceModal.tsx","../src/lib/passkey-ceremony.ts","../src/context.tsx","../src/usePollarAdapter.ts","../src/components/wallet-button/WalletButtonTemplate.tsx","../src/components/wallet-button/WalletButton.tsx"],"names":["QRCode","Component","jsxs","jsx","useState","useRef","useEffect","Fragment","useCallback","useMemo","assetKey","AUTH_ERROR_CODES","isInteractiveAuthAdapter","forwardRef","QRCodeSvg","QRCodeImpl","ErrorCorrectLevel","formatAmount","WalletType","IN_FLIGHT_STEPS","toBaseUnits","PROVIDER_LABELS","PAGE_SIZE","formatBalance","response","startAuthentication","startRegistration","createContext","PollarClient","useContext"],"mappings":"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","file":"index.js","sourcesContent":["module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n","module.exports = {\n\tMODE_NUMBER :\t\t1 << 0,\n\tMODE_ALPHA_NUM : \t1 << 1,\n\tMODE_8BIT_BYTE : \t1 << 2,\n\tMODE_KANJI :\t\t1 << 3\n};\n","var mode = require('./mode');\n\nfunction QR8bitByte(data) {\n\tthis.mode = mode.MODE_8BIT_BYTE;\n\tthis.data = data;\n}\n\nQR8bitByte.prototype = {\n\n\tgetLength : function(buffer) {\n\t\treturn this.data.length;\n\t},\n\t\n\twrite : function(buffer) {\n\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t// not JIS ...\n\t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n\t\t}\n\t}\n};\n\nmodule.exports = QR8bitByte;\n\n","// ErrorCorrectLevel\nvar ECL = require('./ErrorCorrectLevel');\n\nfunction QRRSBlock(totalCount, dataCount) {\n\tthis.totalCount = totalCount;\n\tthis.dataCount = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n\n\t// L\n\t// M\n\t// Q\n\t// H\n\n\t// 1\n\t[1, 26, 19],\n\t[1, 26, 16],\n\t[1, 26, 13],\n\t[1, 26, 9],\n\t\n\t// 2\n\t[1, 44, 34],\n\t[1, 44, 28],\n\t[1, 44, 22],\n\t[1, 44, 16],\n\n\t// 3\n\t[1, 70, 55],\n\t[1, 70, 44],\n\t[2, 35, 17],\n\t[2, 35, 13],\n\n\t// 4\t\t\n\t[1, 100, 80],\n\t[2, 50, 32],\n\t[2, 50, 24],\n\t[4, 25, 9],\n\t\n\t// 5\n\t[1, 134, 108],\n\t[2, 67, 43],\n\t[2, 33, 15, 2, 34, 16],\n\t[2, 33, 11, 2, 34, 12],\n\t\n\t// 6\n\t[2, 86, 68],\n\t[4, 43, 27],\n\t[4, 43, 19],\n\t[4, 43, 15],\n\t\n\t// 7\t\t\n\t[2, 98, 78],\n\t[4, 49, 31],\n\t[2, 32, 14, 4, 33, 15],\n\t[4, 39, 13, 1, 40, 14],\n\t\n\t// 8\n\t[2, 121, 97],\n\t[2, 60, 38, 2, 61, 39],\n\t[4, 40, 18, 2, 41, 19],\n\t[4, 40, 14, 2, 41, 15],\n\t\n\t// 9\n\t[2, 146, 116],\n\t[3, 58, 36, 2, 59, 37],\n\t[4, 36, 16, 4, 37, 17],\n\t[4, 36, 12, 4, 37, 13],\n\t\n\t// 10\t\t\n\t[2, 86, 68, 2, 87, 69],\n\t[4, 69, 43, 1, 70, 44],\n\t[6, 43, 19, 2, 44, 20],\n\t[6, 43, 15, 2, 44, 16],\n\n\t// 11\n\t[4, 101, 81],\n\t[1, 80, 50, 4, 81, 51],\n\t[4, 50, 22, 4, 51, 23],\n\t[3, 36, 12, 8, 37, 13],\n\n\t// 12\n\t[2, 116, 92, 2, 117, 93],\n\t[6, 58, 36, 2, 59, 37],\n\t[4, 46, 20, 6, 47, 21],\n\t[7, 42, 14, 4, 43, 15],\n\n\t// 13\n\t[4, 133, 107],\n\t[8, 59, 37, 1, 60, 38],\n\t[8, 44, 20, 4, 45, 21],\n\t[12, 33, 11, 4, 34, 12],\n\n\t// 14\n\t[3, 145, 115, 1, 146, 116],\n\t[4, 64, 40, 5, 65, 41],\n\t[11, 36, 16, 5, 37, 17],\n\t[11, 36, 12, 5, 37, 13],\n\n\t// 15\n\t[5, 109, 87, 1, 110, 88],\n\t[5, 65, 41, 5, 66, 42],\n\t[5, 54, 24, 7, 55, 25],\n\t[11, 36, 12],\n\n\t// 16\n\t[5, 122, 98, 1, 123, 99],\n\t[7, 73, 45, 3, 74, 46],\n\t[15, 43, 19, 2, 44, 20],\n\t[3, 45, 15, 13, 46, 16],\n\n\t// 17\n\t[1, 135, 107, 5, 136, 108],\n\t[10, 74, 46, 1, 75, 47],\n\t[1, 50, 22, 15, 51, 23],\n\t[2, 42, 14, 17, 43, 15],\n\n\t// 18\n\t[5, 150, 120, 1, 151, 121],\n\t[9, 69, 43, 4, 70, 44],\n\t[17, 50, 22, 1, 51, 23],\n\t[2, 42, 14, 19, 43, 15],\n\n\t// 19\n\t[3, 141, 113, 4, 142, 114],\n\t[3, 70, 44, 11, 71, 45],\n\t[17, 47, 21, 4, 48, 22],\n\t[9, 39, 13, 16, 40, 14],\n\n\t// 20\n\t[3, 135, 107, 5, 136, 108],\n\t[3, 67, 41, 13, 68, 42],\n\t[15, 54, 24, 5, 55, 25],\n\t[15, 43, 15, 10, 44, 16],\n\n\t// 21\n\t[4, 144, 116, 4, 145, 117],\n\t[17, 68, 42],\n\t[17, 50, 22, 6, 51, 23],\n\t[19, 46, 16, 6, 47, 17],\n\n\t// 22\n\t[2, 139, 111, 7, 140, 112],\n\t[17, 74, 46],\n\t[7, 54, 24, 16, 55, 25],\n\t[34, 37, 13],\n\n\t// 23\n\t[4, 151, 121, 5, 152, 122],\n\t[4, 75, 47, 14, 76, 48],\n\t[11, 54, 24, 14, 55, 25],\n\t[16, 45, 15, 14, 46, 16],\n\n\t// 24\n\t[6, 147, 117, 4, 148, 118],\n\t[6, 73, 45, 14, 74, 46],\n\t[11, 54, 24, 16, 55, 25],\n\t[30, 46, 16, 2, 47, 17],\n\n\t// 25\n\t[8, 132, 106, 4, 133, 107],\n\t[8, 75, 47, 13, 76, 48],\n\t[7, 54, 24, 22, 55, 25],\n\t[22, 45, 15, 13, 46, 16],\n\n\t// 26\n\t[10, 142, 114, 2, 143, 115],\n\t[19, 74, 46, 4, 75, 47],\n\t[28, 50, 22, 6, 51, 23],\n\t[33, 46, 16, 4, 47, 17],\n\n\t// 27\n\t[8, 152, 122, 4, 153, 123],\n\t[22, 73, 45, 3, 74, 46],\n\t[8, 53, 23, 26, 54, 24],\n\t[12, 45, 15, 28, 46, 16],\n\n\t// 28\n\t[3, 147, 117, 10, 148, 118],\n\t[3, 73, 45, 23, 74, 46],\n\t[4, 54, 24, 31, 55, 25],\n\t[11, 45, 15, 31, 46, 16],\n\n\t// 29\n\t[7, 146, 116, 7, 147, 117],\n\t[21, 73, 45, 7, 74, 46],\n\t[1, 53, 23, 37, 54, 24],\n\t[19, 45, 15, 26, 46, 16],\n\n\t// 30\n\t[5, 145, 115, 10, 146, 116],\n\t[19, 75, 47, 10, 76, 48],\n\t[15, 54, 24, 25, 55, 25],\n\t[23, 45, 15, 25, 46, 16],\n\n\t// 31\n\t[13, 145, 115, 3, 146, 116],\n\t[2, 74, 46, 29, 75, 47],\n\t[42, 54, 24, 1, 55, 25],\n\t[23, 45, 15, 28, 46, 16],\n\n\t// 32\n\t[17, 145, 115],\n\t[10, 74, 46, 23, 75, 47],\n\t[10, 54, 24, 35, 55, 25],\n\t[19, 45, 15, 35, 46, 16],\n\n\t// 33\n\t[17, 145, 115, 1, 146, 116],\n\t[14, 74, 46, 21, 75, 47],\n\t[29, 54, 24, 19, 55, 25],\n\t[11, 45, 15, 46, 46, 16],\n\n\t// 34\n\t[13, 145, 115, 6, 146, 116],\n\t[14, 74, 46, 23, 75, 47],\n\t[44, 54, 24, 7, 55, 25],\n\t[59, 46, 16, 1, 47, 17],\n\n\t// 35\n\t[12, 151, 121, 7, 152, 122],\n\t[12, 75, 47, 26, 76, 48],\n\t[39, 54, 24, 14, 55, 25],\n\t[22, 45, 15, 41, 46, 16],\n\n\t// 36\n\t[6, 151, 121, 14, 152, 122],\n\t[6, 75, 47, 34, 76, 48],\n\t[46, 54, 24, 10, 55, 25],\n\t[2, 45, 15, 64, 46, 16],\n\n\t// 37\n\t[17, 152, 122, 4, 153, 123],\n\t[29, 74, 46, 14, 75, 47],\n\t[49, 54, 24, 10, 55, 25],\n\t[24, 45, 15, 46, 46, 16],\n\n\t// 38\n\t[4, 152, 122, 18, 153, 123],\n\t[13, 74, 46, 32, 75, 47],\n\t[48, 54, 24, 14, 55, 25],\n\t[42, 45, 15, 32, 46, 16],\n\n\t// 39\n\t[20, 147, 117, 4, 148, 118],\n\t[40, 75, 47, 7, 76, 48],\n\t[43, 54, 24, 22, 55, 25],\n\t[10, 45, 15, 67, 46, 16],\n\n\t// 40\n\t[19, 148, 118, 6, 149, 119],\n\t[18, 75, 47, 31, 76, 48],\n\t[34, 54, 24, 34, 55, 25],\n\t[20, 45, 15, 61, 46, 16]\n];\n\nQRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n\t\n\tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\t\n\tif (rsBlock == undefined) {\n\t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n\t}\n\n\tvar length = rsBlock.length / 3;\n\t\n\tvar list = new Array();\n\t\n\tfor (var i = 0; i < length; i++) {\n\n\t\tvar count = rsBlock[i * 3 + 0];\n\t\tvar totalCount = rsBlock[i * 3 + 1];\n\t\tvar dataCount = rsBlock[i * 3 + 2];\n\n\t\tfor (var j = 0; j < count; j++) {\n\t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n\t\t}\n\t}\n\t\n\treturn list;\n}\n\nQRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n\tswitch(errorCorrectLevel) {\n\tcase ECL.L :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\tcase ECL.M :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\tcase ECL.Q :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\tcase ECL.H :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\tdefault :\n\t\treturn undefined;\n\t}\n}\n\nmodule.exports = QRRSBlock;\n","function QRBitBuffer() {\n\tthis.buffer = new Array();\n\tthis.length = 0;\n}\n\nQRBitBuffer.prototype = {\n\n\tget : function(index) {\n\t\tvar bufIndex = Math.floor(index / 8);\n\t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n","var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n","var math = require('./math');\n\nfunction QRPolynomial(num, shift) {\n\n\tif (num.length == undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] == 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= math.gexp(math.glog(this.get(i) ) + math.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = math.glog(this.get(0) ) - math.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < e.getLength(); i++) {\n\t\t\tnum[i] ^= math.gexp(math.glog(e.get(i) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n","var Mode = require('./mode');\nvar Polynomial = require('./Polynomial');\nvar math = require('./math');\n\nvar QRMaskPattern = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n\nvar QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n\t [],\n\t [6, 18],\n\t [6, 22],\n\t [6, 26],\n\t [6, 30],\n\t [6, 34],\n\t [6, 22, 38],\n\t [6, 24, 42],\n\t [6, 26, 46],\n\t [6, 28, 50],\n\t [6, 30, 54],\t\t\n\t [6, 32, 58],\n\t [6, 34, 62],\n\t [6, 26, 46, 66],\n\t [6, 26, 48, 70],\n\t [6, 26, 50, 74],\n\t [6, 30, 54, 78],\n\t [6, 30, 56, 82],\n\t [6, 30, 58, 86],\n\t [6, 34, 62, 90],\n\t [6, 28, 50, 72, 94],\n\t [6, 26, 50, 74, 98],\n\t [6, 30, 54, 78, 102],\n\t [6, 28, 54, 80, 106],\n\t [6, 32, 58, 84, 110],\n\t [6, 30, 58, 86, 114],\n\t [6, 34, 62, 90, 118],\n\t [6, 26, 50, 74, 98, 122],\n\t [6, 30, 54, 78, 102, 126],\n\t [6, 26, 52, 78, 104, 130],\n\t [6, 30, 56, 82, 108, 134],\n\t [6, 34, 60, 86, 112, 138],\n\t [6, 30, 58, 86, 114, 142],\n\t [6, 34, 62, 90, 118, 146],\n\t [6, 30, 54, 78, 102, 126, 150],\n\t [6, 24, 50, 76, 102, 128, 154],\n\t [6, 28, 54, 80, 106, 132, 158],\n\t [6, 32, 58, 84, 110, 136, 162],\n\t [6, 26, 54, 82, 110, 138, 166],\n\t [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10)\t| (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n\t var d = data << 10;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n\t\t d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \t\n\t }\n\t return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n\t var d = data << 12;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n\t\t d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \t\n\t }\n\t return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n\t var digit = 0;\n\n\t while (data != 0) {\n\t\t digit++;\n\t\t data >>>= 1;\n\t }\n\n\t return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n\t return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n\t \n\t switch (maskPattern) {\n\t\t \n\t case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0;\n\t case QRMaskPattern.PATTERN001 : return i % 2 == 0;\n\t case QRMaskPattern.PATTERN010 : return j % 3 == 0;\n\t case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0;\n\t case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0;\n\t case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0;\n\t case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0;\n\t case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0;\n\n\t default :\n\t\t throw new Error(\"bad maskPattern:\" + maskPattern);\n\t }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n\t var a = new Polynomial([1], 0);\n\n\t for (var i = 0; i < errorCorrectLength; i++) {\n\t\t a = a.multiply(new Polynomial([1, math.gexp(i)], 0) );\n\t }\n\n\t return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n\t if (1 <= type && type < 10) {\n\n\t\t // 1 - 9\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 10;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 9;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 8;\n\t\t case Mode.MODE_KANJI \t: return 8;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 27) {\n\n\t\t // 10 - 26\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 12;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 11;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 10;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 41) {\n\n\t\t // 27 - 40\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 14;\n\t\t case Mode.MODE_ALPHA_NUM\t: return 13;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 12;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else {\n\t\t throw new Error(\"type:\" + type);\n\t }\n },\n\n getLostPoint : function(qrCode) {\n\t \n\t var moduleCount = qrCode.getModuleCount();\n\t \n\t var lostPoint = 0;\n\t \n\t // LEVEL1\n\t \n\t for (var row = 0; row < moduleCount; row++) {\n\n\t\t for (var col = 0; col < moduleCount; col++) {\n\n\t\t\t var sameCount = 0;\n\t\t\t var dark = qrCode.isDark(row, col);\n\n\t\t\t\tfor (var r = -1; r <= 1; r++) {\n\n\t\t\t\t if (row + r < 0 || moduleCount <= row + r) {\n\t\t\t\t\t continue;\n\t\t\t\t }\n\n\t\t\t\t for (var c = -1; c <= 1; c++) {\n\n\t\t\t\t\t if (col + c < 0 || moduleCount <= col + c) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (r == 0 && c == 0) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (dark == qrCode.isDark(row + r, col + c) ) {\n\t\t\t\t\t\t sameCount++;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t }\n\n\t\t\t if (sameCount > 5) {\n\t\t\t\t lostPoint += (3 + sameCount - 5);\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL2\n\n\t for (var row = 0; row < moduleCount - 1; row++) {\n\t\t for (var col = 0; col < moduleCount - 1; col++) {\n\t\t\t var count = 0;\n\t\t\t if (qrCode.isDark(row, col ) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col ) ) count++;\n\t\t\t if (qrCode.isDark(row, col + 1) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col + 1) ) count++;\n\t\t\t if (count == 0 || count == 4) {\n\t\t\t\t lostPoint += 3;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL3\n\n\t for (var row = 0; row < moduleCount; row++) {\n\t\t for (var col = 0; col < moduleCount - 6; col++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row, col + 1)\n\t\t\t\t\t && qrCode.isDark(row, col + 2)\n\t\t\t\t\t && qrCode.isDark(row, col + 3)\n\t\t\t\t\t && qrCode.isDark(row, col + 4)\n\t\t\t\t\t && !qrCode.isDark(row, col + 5)\n\t\t\t\t\t && qrCode.isDark(row, col + 6) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount - 6; row++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row + 1, col)\n\t\t\t\t\t && qrCode.isDark(row + 2, col)\n\t\t\t\t\t && qrCode.isDark(row + 3, col)\n\t\t\t\t\t && qrCode.isDark(row + 4, col)\n\t\t\t\t\t && !qrCode.isDark(row + 5, col)\n\t\t\t\t\t && qrCode.isDark(row + 6, col) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL4\n\t \n\t var darkCount = 0;\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount; row++) {\n\t\t\t if (qrCode.isDark(row, col) ) {\n\t\t\t\t darkCount++;\n\t\t\t }\n\t\t }\n\t }\n\t \n\t var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n\t lostPoint += ratio * 10;\n\n\t return lostPoint;\t\t\n }\n};\n\nmodule.exports = QRUtil;\n","var BitByte = require('./8BitByte');\nvar RSBlock = require('./RSBlock');\nvar BitBuffer = require('./BitBuffer');\nvar util = require('./util');\nvar Polynomial = require('./Polynomial');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\n// for client side minification\nvar proto = QRCode.prototype;\n\nproto.addData = function(data) {\n\tvar newData = new BitByte(data);\n\tthis.dataList.push(newData);\n\tthis.dataCache = null;\n};\n\nproto.isDark = function(row, col) {\n\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\tthrow new Error(row + \",\" + col);\n\t}\n\treturn this.modules[row][col];\n};\n\nproto.getModuleCount = function() {\n\treturn this.moduleCount;\n};\n\nproto.make = function() {\n\t// Calculate automatically typeNumber if provided is < 1\n\tif (this.typeNumber < 1 ){\n\t\tvar typeNumber = 1;\n\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\tvar buffer = new BitBuffer();\n\t\t\tvar totalDataCount = 0;\n\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this.dataList.length; i++) {\n\t\t\t\tvar data = this.dataList[i];\n\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\tdata.write(buffer);\n\t\t\t}\n\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.typeNumber = typeNumber;\n\t}\n\tthis.makeImpl(false, this.getBestMaskPattern() );\n};\n\nproto.makeImpl = function(test, maskPattern) {\n\t\n\tthis.moduleCount = this.typeNumber * 4 + 17;\n\tthis.modules = new Array(this.moduleCount);\n\t\n\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\n\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\n\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t}\n\t}\n\n\tthis.setupPositionProbePattern(0, 0);\n\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\tthis.setupPositionAdjustPattern();\n\tthis.setupTimingPattern();\n\tthis.setupTypeInfo(test, maskPattern);\n\t\n\tif (this.typeNumber >= 7) {\n\t\tthis.setupTypeNumber(test);\n\t}\n\n\tif (this.dataCache == null) {\n\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t}\n\n\tthis.mapData(this.dataCache, maskPattern);\n};\n\nproto.setupPositionProbePattern = function(row, col) {\n\t\n\tfor (var r = -1; r <= 7; r++) {\n\t\t\n\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\n\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\n\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\n\t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n\t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\n\t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t} else {\n\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t}\n\t\t}\t\t\n\t}\t\t\n};\n\nproto.getBestMaskPattern = function() {\n\n\tvar minLostPoint = 0;\n\tvar pattern = 0;\n\n\tfor (var i = 0; i < 8; i++) {\n\t\t\n\t\tthis.makeImpl(true, i);\n\n\t\tvar lostPoint = util.getLostPoint(this);\n\n\t\tif (i == 0 || minLostPoint > lostPoint) {\n\t\t\tminLostPoint = lostPoint;\n\t\t\tpattern = i;\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\nproto.createMovieClip = function(target_mc, instance_name, depth) {\n\n\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\tvar cs = 1;\n\n\tthis.make();\n\n\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\n\t\tvar y = row * cs;\n\t\t\n\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\n\t\t\tvar x = col * cs;\n\t\t\tvar dark = this.modules[row][col];\n\t\t\n\t\t\tif (dark) {\n\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\tqr_mc.endFill();\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn qr_mc;\n};\n\nproto.setupTimingPattern = function() {\n\t\n\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\tif (this.modules[r][6] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[r][6] = (r % 2 == 0);\n\t}\n\n\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\tif (this.modules[6][c] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[6][c] = (c % 2 == 0);\n\t}\n};\n\nproto.setupPositionAdjustPattern = function() {\n\n\tvar pos = util.getPatternPosition(this.typeNumber);\n\t\n\tfor (var i = 0; i < pos.length; i++) {\n\t\n\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\n\t\t\tvar row = pos[i];\n\t\t\tvar col = pos[j];\n\t\t\t\n\t\t\tif (this.modules[row][col] != null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\n\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\n\t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\n\t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nproto.setupTypeNumber = function(test) {\n\n\tvar bits = util.getBCHTypeNumber(this.typeNumber);\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t}\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n\t}\n};\n\nproto.setupTypeInfo = function(test, maskPattern) {\n\n\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\tvar bits = util.getBCHTypeInfo(data);\n\n\t// vertical\t\t\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\n\t\tif (i < 6) {\n\t\t\tthis.modules[i][8] = mod;\n\t\t} else if (i < 8) {\n\t\t\tthis.modules[i + 1][8] = mod;\n\t\t} else {\n\t\t\tthis.modules[this.moduleCount - 15 + i][8] = mod;\n\t\t}\n\t}\n\n\t// horizontal\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\t\n\t\tif (i < 8) {\n\t\t\tthis.modules[8][this.moduleCount - i - 1] = mod;\n\t\t} else if (i < 9) {\n\t\t\tthis.modules[8][15 - i - 1 + 1] = mod;\n\t\t} else {\n\t\t\tthis.modules[8][15 - i - 1] = mod;\n\t\t}\n\t}\n\n\t// fixed module\n\tthis.modules[this.moduleCount - 8][8] = (!test);\n};\n\nproto.mapData = function(data, maskPattern) {\n\t\n\tvar inc = -1;\n\tvar row = this.moduleCount - 1;\n\tvar bitIndex = 7;\n\tvar byteIndex = 0;\n\t\n\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\n\t\tif (col == 6) col--;\n\n\t\twhile (true) {\n\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col - c] == null) {\n\t\t\t\t\t\n\t\t\t\t\tvar dark = false;\n\n\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar mask = util.getMask(maskPattern, row, col - c);\n\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\tbitIndex--;\n\n\t\t\t\t\tif (bitIndex == -1) {\n\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\trow += inc;\n\n\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\trow -= inc;\n\t\t\t\tinc = -inc;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new BitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\"\n\t\t\t+ buffer.getLengthInBits()\n\t\t\t+ \">\"\n\t\t\t+ totalDataCount * 8\n\t\t\t+ \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 != 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = util.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalCodeCount += rsBlocks[i].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var i = 0; i < maxDcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < dcdata[r].length) {\n\t\t\t\tdata[index++] = dcdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var i = 0; i < maxEcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < ecdata[r].length) {\n\t\t\t\tdata[index++] = ecdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n};\n\nmodule.exports = QRCode;\n\n","export const LOGO_POLLAR = 'https://pollar.xyz/assets/logo_pollar.png';\nexport const LOGO_GITHUB = 'https://pollar.xyz/assets/GitHub_Invertocat_White.png';\nexport const LOGO_FREIGHTER = 'https://pollar.xyz/assets/logo_freighter.png';\nexport const LOGO_ALBEDO = 'https://pollar.xyz/assets/logo_albedo.svg';\n","type StateStatus = 'NONE' | 'LOADING' | 'SUCCESS' | 'ERROR';\n\nimport type { PollarLogger } from '@pollar/core';\nimport {\n Component,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from 'react';\nimport { LOGO_POLLAR } from '../constants';\n\ndeclare const __POLLAR_VERSION__: string;\n\n// Module-level sink for the error boundary (a class component, so it can't read\n// React context inside `componentDidCatch`). `PollarProvider` points this at the\n// client's level-gated logger on mount; defaults to `console` until then.\nlet _modalLog: PollarLogger = console;\nexport function setModalErrorLogger(logger: PollarLogger): void {\n _modalLog = logger;\n}\n\ninterface ModalErrorBoundaryState {\n crashed: boolean;\n}\n\nexport class ModalErrorBoundary extends Component<{ children: ReactNode; onClose: () => void }, ModalErrorBoundaryState> {\n state: ModalErrorBoundaryState = { crashed: false };\n\n static getDerivedStateFromError(): ModalErrorBoundaryState {\n return { crashed: true };\n }\n\n componentDidCatch(error: unknown) {\n _modalLog.error('[PollarProvider] Modal crashed:', error);\n }\n\n render() {\n if (this.state.crashed) {\n this.props.onClose();\n return null;\n }\n return this.props.children;\n }\n}\n\nexport const PollarModalFooter = () => {\n return (\n <div className=\"pollar-footer\">\n <span className=\"pollar-footer-protected\">Protected by</span>\n <div className=\"pollar-footer-brand\">\n <img src={LOGO_POLLAR} alt=\"Pollar\" className=\"pollar-footer-logo\" />\n <span className=\"pollar-footer-name\">Pollar</span>\n <span className=\"pollar-footer-version\">v{__POLLAR_VERSION__}</span>\n </div>\n </div>\n );\n};\n\ninterface CopyButtonProps {\n /** Text written to the clipboard (the full, un-cropped value). */\n value: string;\n /** Accessible label for the button (e.g. \"Copy address\"). */\n label?: string;\n /** Extra class (e.g. `pollar-copy-btn-sm` for the compact issuer variant). */\n className?: string;\n}\n\n/** Self-contained copy-to-clipboard icon button with a transient \"copied\" tick. */\nexport function CopyButton({ value, label = 'Copy', className }: CopyButtonProps) {\n const [copied, setCopied] = useState(false);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n return () => {\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n };\n }, []);\n\n function handleCopy(e: ReactMouseEvent<HTMLButtonElement>) {\n e.stopPropagation();\n if (!value || !navigator.clipboard) return;\n void navigator.clipboard.writeText(value).then(() => {\n setCopied(true);\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => {\n setCopied(false);\n timerRef.current = null;\n }, 1500);\n });\n }\n\n return (\n <button\n type=\"button\"\n className={`pollar-copy-btn${className ? ` ${className}` : ''}`}\n onClick={handleCopy}\n aria-label={copied ? 'Copied' : label}\n >\n {copied ? (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden>\n <path d=\"M3.5 7l2.5 2.5 4.5-5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ) : (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <rect x=\"4\" y=\"4\" width=\"8\" height=\"8\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M3 9H2a1 1 0 01-1-1V2a1 1 0 011-1h6a1 1 0 011 1v1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n </button>\n );\n}\n\ninterface ModalStatusBannerProps {\n message: string;\n status: StateStatus;\n onCancel?: (() => void) | undefined;\n onRetry?: (() => void) | undefined;\n}\n\nexport function ModalStatusBanner({ message, status, onCancel, onRetry }: ModalStatusBannerProps) {\n if (!message && status === 'NONE') {\n return <div className=\"pollar-status\" />;\n }\n\n const isLoading = status === 'LOADING';\n const icon =\n status === 'ERROR' ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden>\n <circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"currentColor\" />\n <path d=\"M4.5 4.5l5 5M9.5 4.5l-5 5\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n ) : status === 'SUCCESS' ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden>\n <circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"currentColor\" />\n <path d=\"M3.5 7l2.5 2.5 4.5-5\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ) : status === 'LOADING' ? (\n <></>\n ) : null;\n\n return (\n <div className=\"pollar-status\" data-kind={status}>\n {icon}\n <span>{message}</span>\n {isLoading && onCancel && (\n <button type=\"button\" className=\"pollar-status-cancel\" onClick={onCancel}>\n Cancel\n </button>\n )}\n {status === 'ERROR' && onRetry && (\n <button type=\"button\" className=\"pollar-status-cancel\" onClick={onRetry}>\n Retry\n </button>\n )}\n </div>\n );\n}\n\n/**\n * The chain an asset lives on, as a short accented tag.\n *\n * Shared by the balance and asset lists: both render per-chain rows and must\n * agree on the label and colour, so the palette lives in one place. Callers show\n * it only when the app spans more than one chain — a Stellar-only app would just\n * see the same tag on every row.\n */\nconst CHAIN_TAG: Record<string, { label: string; color: string }> = {\n STELLAR: { label: 'Stellar', color: '#7d00ff' },\n POLYGON: { label: 'Polygon', color: '#8247e5' },\n SOLANA: { label: 'Solana', color: '#14f195' },\n};\n\nexport function ChainTag({ chain }: { chain: string }) {\n const tag = CHAIN_TAG[chain] ?? { label: chain, color: '#6b7280' };\n return (\n <span className=\"pollar-chain-tag\" style={{ '--pollar-chain-color': tag.color } as CSSProperties}>\n {tag.label}\n </span>\n );\n}\n\n/** Middle-truncates an on-chain address (issuer, ERC-20 contract, SPL mint). */\nexport function cropAddress(address: string): string {\n if (address.length <= 16) return address;\n return `${address.slice(0, 8)}...${address.slice(-8)}`;\n}\n\n/**\n * Remembers the last non-null value it was given.\n *\n * The balance/assets state machines drop their payload while a refresh is in\n * flight (`step` leaves `'loaded'`), which would blank the list on every\n * refresh. Holding the previous data lets the modal keep rendering it under a\n * {@link BusyOverlay} instead — the list never collapses and then reflows.\n */\nexport function useStickyData<T>(data: T | null): T | null {\n const lastRef = useRef<T | null>(null);\n if (data !== null) lastRef.current = data;\n return data ?? lastRef.current;\n}\n\n/**\n * Blocks a modal while a refresh is in flight, keeping the stale data visible\n * (and readable) underneath. Covers the whole card, so nothing can be clicked\n * against data that is about to change.\n */\nexport function BusyOverlay({ label = 'Loading…' }: { label?: string }) {\n return (\n <div className=\"pollar-busy-overlay\" aria-busy=\"true\" aria-live=\"polite\">\n <div className=\"pollar-busy-overlay-inner\">\n <div className=\"pollar-spinner\" />\n <span>{label}</span>\n </div>\n </div>\n );\n}\n\ninterface ToggleProps {\n checked: boolean;\n onChange: () => void;\n disabled?: boolean;\n busy?: boolean;\n label: string;\n}\n\n/**\n * On/off switch. Used for trustlines, where the state is binary and the old\n * \"status pill + Enable/Disable button\" pair said the same thing twice.\n */\nexport function Toggle({ checked, onChange, disabled = false, busy = false, label }: ToggleProps) {\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-label={label}\n className={`pollar-switch${checked ? ' pollar-switch-on' : ''}${busy ? ' pollar-switch-busy' : ''}`}\n onClick={onChange}\n disabled={disabled || busy}\n >\n <span className=\"pollar-switch-knob\">\n {busy && <span className=\"pollar-spinner pollar-spinner-sm pollar-spinner-current\" />}\n </span>\n </button>\n );\n}\n","'use client';\n\nimport { DistributionRule, DistributionRulesState } from '@pollar/core';\nimport { type CSSProperties } from 'react';\nimport { PollarModalFooter } from '../commons';\n\ninterface DistributionRulesModalTemplateProps {\n theme: string;\n accentColor: string;\n state: DistributionRulesState;\n claimingId: string | null;\n claimErrors: Record<string, string>;\n claimedIds: Set<string>;\n onRefresh: () => void;\n onClaim: (rule: DistributionRule) => void;\n onClose: () => void;\n}\n\nconst PERIOD_LABEL: Record<DistributionRule['period'], string> = {\n DAY: 'every 24h',\n DAY_CALENDAR: 'daily',\n WEEK: 'every 7 days',\n MONTH: 'every 30 days',\n MONTH_CALENDAR: 'monthly',\n LIFETIME: 'one-time',\n};\n\n// Reasons returned by sdk-api are the ErrorCode enum values from\n// @pollar/shared. Mapped to short user-facing strings; anything unknown\n// falls back to \"Not available\".\nconst REASON_LABEL: Record<string, string> = {\n DISTRIBUTION_RULE_DISABLED: 'Disabled',\n DISTRIBUTION_RULE_NOT_STARTED: 'Not started yet',\n DISTRIBUTION_RULE_EXPIRED: 'Expired',\n DISTRIBUTION_RULE_EXHAUSTED: 'Fully claimed',\n // Per-user, per-window claim limit (resets next period) — not permanent.\n DISTRIBUTION_RATE_LIMIT_EXCEEDED: 'Claimed for this period',\n};\n\nfunction reasonLabel(reason: string | null): string {\n if (!reason) return 'Not available';\n return REASON_LABEL[reason] ?? 'Not available';\n}\n\nfunction formatAmount(amount: string): string {\n const n = parseFloat(amount);\n return isNaN(n) ? amount : n.toLocaleString(undefined, { maximumFractionDigits: 7 });\n}\n\nfunction formatValidity(rule: DistributionRule): string | null {\n const from = rule.validFrom ? new Date(rule.validFrom) : null;\n const until = rule.validUntil ? new Date(rule.validUntil) : null;\n if (!from && !until) return null;\n const fmt = (d: Date) => d.toLocaleDateString(undefined, { month: 'short', day: 'numeric', year: 'numeric' });\n if (from && until) return `${fmt(from)} → ${fmt(until)}`;\n if (until) return `Until ${fmt(until)}`;\n if (from) return `From ${fmt(from)}`;\n return null;\n}\n\nfunction RuleCard({\n rule,\n isClaiming,\n isClaimed,\n errorMessage,\n onClaim,\n}: {\n rule: DistributionRule;\n isClaiming: boolean;\n isClaimed: boolean;\n errorMessage?: string;\n onClaim: () => void;\n}) {\n const validity = formatValidity(rule);\n const effectivelyClaimable = rule.claimable && !isClaimed;\n\n return (\n <div className=\"pollar-dist-item\" data-claimable={effectivelyClaimable ? 'true' : 'false'}>\n <div className=\"pollar-dist-item-row\">\n <span className=\"pollar-dist-item-name\">{rule.name}</span>\n <span className=\"pollar-dist-item-amount\">\n {formatAmount(rule.amount)} <span className=\"pollar-dist-item-asset\">{rule.assetCode}</span>\n </span>\n </div>\n <div className=\"pollar-dist-item-meta\">\n <span>{PERIOD_LABEL[rule.period]}</span>\n {validity && <span>· {validity}</span>}\n </div>\n <div className=\"pollar-dist-item-action\">\n {isClaimed ? (\n <span className=\"pollar-dist-item-status\" data-kind=\"claimed\">\n Claimed\n </span>\n ) : effectivelyClaimable ? (\n <button type=\"button\" className=\"pollar-btn-primary pollar-dist-claim-btn\" onClick={onClaim} disabled={isClaiming}>\n {isClaiming ? (\n <>\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n Claiming…\n </>\n ) : (\n 'Claim'\n )}\n </button>\n ) : (\n <span className=\"pollar-dist-item-status\" data-kind=\"unavailable\">\n {reasonLabel(rule.reason)}\n </span>\n )}\n </div>\n {errorMessage && <div className=\"pollar-dist-item-error\">{errorMessage}</div>}\n </div>\n );\n}\n\nexport function DistributionRulesModalTemplate({\n theme,\n accentColor,\n state,\n claimingId,\n claimErrors,\n claimedIds,\n onRefresh,\n onClaim,\n onClose,\n}: DistributionRulesModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const isLoading = state.step === 'loading';\n const rules = state.step === 'loaded' ? state.rules : [];\n\n return (\n <div\n className=\"pollar-modal-card pollar-dist-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Distribution Rules</h2>\n <div className=\"pollar-modal-header-actions\">\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoading}\n aria-label=\"Refresh\"\n title=\"Refresh\"\n >\n <svg\n className={isLoading ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <div className=\"pollar-dist-list\">\n {isLoading && (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading…</span>\n </div>\n )}\n {state.step === 'error' && <div className=\"pollar-modal-error\">{state.message}</div>}\n {state.step === 'loaded' && rules.length === 0 && (\n <div className=\"pollar-modal-empty\">No distribution rules available.</div>\n )}\n {rules.map((rule) => (\n <RuleCard\n key={rule.id}\n rule={rule}\n isClaiming={claimingId === rule.id}\n isClaimed={claimedIds.has(rule.id)}\n {...(claimErrors[rule.id] && { errorMessage: claimErrors[rule.id] })}\n onClaim={() => onClaim(rule)}\n />\n ))}\n </div>\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { DistributionRule, DistributionRulesState } from '@pollar/core';\nimport { useCallback, useEffect, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport './DistributionRulesModal.css';\nimport { DistributionRulesModalTemplate } from './DistributionRulesModalTemplate';\n\ninterface DistributionRulesModalProps {\n onClose: () => void;\n}\n\nexport function DistributionRulesModal({ onClose }: DistributionRulesModalProps) {\n const { getClient, styles } = usePollar();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const [state, setState] = useState<DistributionRulesState>({ step: 'idle' });\n const [claimingId, setClaimingId] = useState<string | null>(null);\n const [claimErrors, setClaimErrors] = useState<Record<string, string>>({});\n const [claimedIds, setClaimedIds] = useState<Set<string>>(() => new Set());\n\n const load = useCallback(async () => {\n setState({ step: 'loading' });\n try {\n const rules = await getClient().listDistributionRules();\n setState({ step: 'loaded', rules });\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Failed to load distribution rules';\n setState({ step: 'error', message });\n }\n }, [getClient]);\n\n useEffect(() => {\n void load();\n }, [load]);\n\n const handleClaim = useCallback(\n async (rule: DistributionRule) => {\n setClaimingId(rule.id);\n setClaimErrors((prev) => {\n if (!prev[rule.id]) return prev;\n const next = { ...prev };\n delete next[rule.id];\n return next;\n });\n try {\n await getClient().claimDistributionRule({ ruleId: rule.id });\n setClaimedIds((prev) => {\n const next = new Set(prev);\n next.add(rule.id);\n return next;\n });\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Claim failed';\n setClaimErrors((prev) => ({ ...prev, [rule.id]: message }));\n } finally {\n setClaimingId(null);\n }\n },\n [getClient],\n );\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <DistributionRulesModalTemplate\n theme={theme}\n accentColor={accentColor}\n state={state}\n claimingId={claimingId}\n claimErrors={claimErrors}\n claimedIds={claimedIds}\n onRefresh={() => void load()}\n onClaim={handleClaim}\n onClose={onClose}\n />\n </div>\n );\n}\n","'use client';\n\n// ─── Shared network picker ────────────────────────────────────────────────────\n// One chain <select> used by the Send, Wallet Balance and Assets modals. The\n// options are the chains the user actually holds a wallet on (`getWallets()`),\n// so every option always resolves to an address; the parent defaults to the\n// first one. Everything else in those modals — address, assets, balances — is\n// filtered by whatever is picked here.\n// ─────────────────────────────────────────────────────────────────────────────\n\nimport type { WalletChain, WalletInfo } from '@pollar/core';\nimport './send-modal/SendModal.css';\nimport './shared.css';\n\nconst CHAIN_LABEL: Record<string, string> = {\n STELLAR: 'Stellar',\n POLYGON: 'Polygon',\n SOLANA: 'Solana',\n};\n\n/**\n * The chain a record lives on, with the legacy shape folded in: sessions and\n * balance rows minted before multi-chain carry no `chain` and are Stellar by\n * definition, so absent counts as STELLAR rather than as \"unknown\".\n */\nexport function resolveChain(chain: WalletChain | undefined): WalletChain {\n return chain ?? 'STELLAR';\n}\n\n/**\n * The selectable chains — the first is the default everywhere (network picker,\n * the address the wallet button shows). De-duplicated because two wallets on one\n * chain (e.g. a custodial and a linked external Stellar wallet) are still one\n * network choice.\n *\n * `order` is the app's chain list from `/applications/config`, as arranged in the\n * dashboard. When passed it both ORDERS and FILTERS: a chain missing from it is\n * dropped, because the app switched it off and must stop appearing everywhere.\n *\n * Filtering here and not only in the backend is deliberate. `wallets` comes from\n * the session, which is written at login and then persisted for as long as the\n * session lives; `/config` is refetched on every page load. So a chain disabled\n * today disappears on the next reload even for a user who logged in last week\n * and still carries it in their stored session.\n *\n * Without `order` (config still loading) the fallback is the order the backend\n * listed the wallets in.\n */\nexport function chainsOf(wallets: WalletInfo[], order?: readonly WalletChain[]): WalletChain[] {\n const held: WalletChain[] = [];\n for (const w of wallets) {\n const chain = resolveChain(w.chain);\n if (!held.includes(chain)) held.push(chain);\n }\n if (!order || order.length === 0) return held;\n\n return order.filter((c) => held.includes(c));\n}\n\n/** The address to show for `chain`, or '' when the user has no wallet there. */\nexport function addressForChain(wallets: WalletInfo[], chain: WalletChain | null): string {\n if (!chain) return '';\n return wallets.find((w) => resolveChain(w.chain) === chain)?.address ?? '';\n}\n\nexport interface ChainSelectProps {\n label?: string;\n value: WalletChain | null;\n options: WalletChain[];\n onChange: (chain: WalletChain) => void;\n disabled?: boolean;\n}\n\nexport function ChainSelect({ label = 'Network', value, options, onChange, disabled = false }: ChainSelectProps) {\n // A single-network app gets no picker: one option is not a choice, and the\n // modals would carry a dead control. The parent still defaults to that chain,\n // so everything below stays filtered to it. Matches how the per-row ChainTag\n // is gated on `multichain` elsewhere.\n if (options.length < 2) return null;\n\n return (\n <div className=\"pollar-send-field pollar-chain-field\">\n <label className=\"pollar-send-label\">{label}</label>\n <select\n className=\"pollar-input pollar-send-select\"\n value={value ?? ''}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value as WalletChain)}\n >\n {/* Only present before the parent defaults to the first chain; hidden\n from the open dropdown. */}\n {value === null && <option value=\"\" disabled hidden />}\n {options.map((chain) => (\n <option key={chain} value={chain}>\n {CHAIN_LABEL[chain] ?? chain}\n </option>\n ))}\n </select>\n </div>\n );\n}\n","'use client';\n\n// ─── Chain order, one source of truth ─────────────────────────────────────────\n// Every component that shows \"the user's address\" or offers a network picker\n// reads it from here, so the wallet button and the modals can never disagree\n// about which chain is first.\n//\n// The order and the membership both come from `/applications/config`\n// (`appConfig.application.chains`), which is the app's own list as arranged in\n// the dashboard. Two reasons it is the authority and `getWallets()` is not:\n//\n// - `wallets[]` is written into the session at LOGIN and then persisted. A\n// chain switched off today would keep showing for anyone with a live\n// session. `/config` is refetched on every page load, so it corrects itself.\n// - Before this, the backend listed `wallets[]` `ORDER BY network` (the Prisma\n// enum order), identical for every app on the platform. That is fixed\n// server-side now, but a session persisted before the fix still carries the\n// old array, and re-deriving here repairs it without forcing a re-login.\n// ─────────────────────────────────────────────────────────────────────────────\n\nimport type { WalletChain } from '@pollar/core';\nimport { useMemo } from 'react';\nimport { addressForChain, chainsOf } from './components/ChainSelect';\nimport { usePollar } from './context';\n\nexport interface UseChainsResult {\n /**\n * Chains to offer, in the app's configured order: those the app serves AND the\n * user already holds a wallet on. `[]` until `/config` resolves, so a network\n * picker driven by this renders nothing rather than a list it may have to\n * reorder a moment later.\n */\n chains: WalletChain[];\n /** The app's first configured chain that the user holds. `null` until ready. */\n primaryChain: WalletChain | null;\n /**\n * The address on {@link primaryChain}. While `/config` is still in flight this\n * falls back to the first wallet the session lists, so a logged-in user never\n * sees the wallet button blank out into a \"Connect\" state on every reload.\n */\n primaryAddress: string;\n /** `false` while `/config` is in flight or failed. Gate any chain UI on it. */\n ready: boolean;\n}\n\nexport function useChains(): UseChainsResult {\n const { wallets, appConfig, configStatus } = usePollar();\n const configured = appConfig?.application?.chains as WalletChain[] | undefined;\n const ready = configStatus === 'ready';\n\n return useMemo(() => {\n if (!ready) {\n // No configured order yet, so no opinion about which chain leads. The\n // picker stays empty; the button borrows the session's first address\n // purely so it has something to render.\n const fallback = chainsOf(wallets);\n return {\n chains: [],\n primaryChain: null,\n primaryAddress: addressForChain(wallets, fallback[0] ?? null),\n ready: false,\n };\n }\n const chains = chainsOf(wallets, configured);\n const primaryChain = chains[0] ?? null;\n return { chains, primaryChain, primaryAddress: addressForChain(wallets, primaryChain), ready: true };\n }, [wallets, configured, ready]);\n}\n","'use client';\n\nimport { EnabledAssetRecord, EnabledAssetsState, WalletChain } from '@pollar/core';\nimport { useState, type CSSProperties } from 'react';\nimport { ChainSelect, resolveChain } from '../ChainSelect';\nimport { BusyOverlay, CopyButton, cropAddress, PollarModalFooter, Toggle, useStickyData } from '../commons';\n\nfunction cssVarsFor(theme: string, accentColor: string): CSSProperties {\n const isDark = theme === 'dark';\n return {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n}\n\nfunction assetKey(record: { code: string; issuer?: string }): string {\n return record.code + (record.issuer ?? '');\n}\n\n/** Row key. Chain-qualified: the same code+issuer can exist on two chains. */\nfunction rowKey(record: EnabledAssetRecord): string {\n return (record.chain ?? '') + assetKey(record);\n}\n\nfunction AssetItem({\n record,\n busy,\n disabled,\n onToggle,\n}: {\n record: EnabledAssetRecord;\n busy: boolean;\n disabled: boolean;\n onToggle: (record: EnabledAssetRecord) => void;\n}) {\n // Absent means \"not established\": an unknown trustline must never render as\n // an on switch, which would read as already enabled.\n const established = record.trustlineEstablished ?? false;\n const isNative = record.type === 'native';\n // A trustline is a Stellar concept. On Polygon/Solana a token is simply held,\n // so those rows are informational: no label, no switch.\n const isStellar = resolveChain(record.chain) === 'STELLAR';\n\n return (\n <div className=\"pollar-asset-item\">\n <div className=\"pollar-asset-info\">\n <div className=\"pollar-asset-code-row\">\n <span className=\"pollar-asset-code\">{record.code}</span>\n {record.enabledInApp && <span className=\"pollar-asset-tag\">App</span>}\n </div>\n {record.name && <span className=\"pollar-asset-name\">{record.name}</span>}\n {record.issuer && (\n <span className=\"pollar-issuer\">\n <span className=\"pollar-issuer-addr\">{cropAddress(record.issuer)}</span>\n <CopyButton value={record.issuer} label=\"Copy issuer address\" className=\"pollar-copy-btn-sm\" />\n </span>\n )}\n {isStellar && !isNative && record.enabledInApp && (\n <span className=\"pollar-asset-sponsor\">\n {record.sponsored ? 'Reserve sponsored by the app' : 'You pay the reserve (~0.5 XLM)'}\n </span>\n )}\n </div>\n {isStellar && (\n <div className=\"pollar-asset-actions\">\n <span className=\"pollar-asset-trustline-label\">Trustline</span>\n {/* Native XLM needs no trustline — it is implicit and can't be removed,\n so the switch shows the state but stays locked on. */}\n <Toggle\n checked={established}\n busy={busy}\n disabled={isNative || disabled}\n onChange={() => onToggle(record)}\n label={`${established ? 'Disable' : 'Enable'} ${record.code} trustline`}\n />\n </div>\n )}\n </div>\n );\n}\n\nexport interface EnabledAssetsModalTemplateProps {\n theme: string;\n accentColor: string;\n enabledAssets: EnabledAssetsState;\n /** Address of the wallet on {@link selectedChain}. */\n walletAddress: string;\n /** Networks the user holds a wallet on; the first one is the default. */\n chains: WalletChain[];\n selectedChain: WalletChain | null;\n onSelectChain: (chain: WalletChain) => void;\n /** Key (`code+issuer`) of the asset whose trustline action is in flight. */\n busyKey: string | null;\n actionError: string | null;\n onRefresh: () => void;\n onClose: () => void;\n onToggleTrustline: (record: EnabledAssetRecord) => void;\n onAddCustom: () => void;\n}\n\nexport function EnabledAssetsModalTemplate({\n theme,\n accentColor,\n enabledAssets,\n walletAddress,\n chains,\n selectedChain,\n onSelectChain,\n busyKey,\n actionError,\n onRefresh,\n onClose,\n onToggleTrustline,\n onAddCustom,\n}: EnabledAssetsModalTemplateProps) {\n const cssVars = cssVarsFor(theme, accentColor);\n\n const isLoading = enabledAssets.step === 'loading';\n // Keep the previous payload on screen while refreshing; the overlay below\n // blocks interaction so nothing is acted on against data that is changing.\n const data = useStickyData(enabledAssets.step === 'loaded' ? enabledAssets.data : null);\n const busy = busyKey !== null;\n // Only the picked network's assets. The backend returns every chain in one\n // payload, so this is a local filter — switching networks costs no request.\n const assets = (data?.assets ?? []).filter((a) => resolveChain(a.chain) === selectedChain);\n // Trustlines are Stellar-only, so the custom-trustline form is offered only\n // while Stellar is the selected network.\n const isStellarSelected = selectedChain === 'STELLAR';\n\n return (\n <div\n className=\"pollar-modal-card pollar-asset-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n {isLoading && data && <BusyOverlay label=\"Refreshing assets…\" />}\n\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Assets</h2>\n <div className=\"pollar-modal-header-actions\">\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoading || busy}\n aria-label=\"Refresh\"\n title=\"Refresh\"\n >\n <svg\n className={isLoading ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <ChainSelect value={selectedChain} options={chains} onChange={onSelectChain} disabled={isLoading || busy} />\n\n {walletAddress && (\n <div className=\"pollar-address-row\">\n <span className=\"pollar-address\">{cropAddress(walletAddress)}</span>\n <CopyButton value={walletAddress} label=\"Copy wallet address\" />\n </div>\n )}\n\n {/* First load only — a refresh keeps the old list under the overlay. */}\n {isLoading && !data && (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading…</span>\n </div>\n )}\n\n {enabledAssets.step === 'error' && <div className=\"pollar-modal-error\">{enabledAssets.message}</div>}\n\n {actionError && <div className=\"pollar-modal-action-error\">{actionError}</div>}\n\n {data && !data.exists && <div className=\"pollar-modal-empty\">Account not found on {data.network}.</div>}\n\n {data && assets.length === 0 && <div className=\"pollar-modal-empty\">No assets found on this network.</div>}\n\n {data && assets.length > 0 && (\n <div className=\"pollar-asset-list\">\n {assets.map((a) => (\n <AssetItem\n key={rowKey(a)}\n record={a}\n busy={busyKey === assetKey(a)}\n disabled={busy && busyKey !== assetKey(a)}\n onToggle={onToggleTrustline}\n />\n ))}\n </div>\n )}\n\n {isStellarSelected && (\n <button className=\"pollar-asset-add-custom\" onClick={onAddCustom} disabled={busy}>\n + Add custom trustline\n </button>\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n\nexport interface CustomTrustlineModalTemplateProps {\n theme: string;\n accentColor: string;\n busy: boolean;\n actionError: string | null;\n onBack: () => void;\n onClose: () => void;\n onSubmit: (input: { code: string; issuer: string; limit?: string }) => void;\n}\n\nfunction isValidIssuer(issuer: string): boolean {\n return issuer.length === 56 && issuer.startsWith('G');\n}\n\nexport function CustomTrustlineModalTemplate({\n theme,\n accentColor,\n busy,\n actionError,\n onBack,\n onClose,\n onSubmit,\n}: CustomTrustlineModalTemplateProps) {\n const cssVars = cssVarsFor(theme, accentColor);\n\n const [code, setCode] = useState('');\n const [issuer, setIssuer] = useState('');\n const [limit, setLimit] = useState('');\n\n const codeOk = code.trim().length >= 1 && code.trim().length <= 12;\n const issuerOk = isValidIssuer(issuer.trim());\n const canSubmit = codeOk && issuerOk && !busy;\n\n const submit = () => {\n if (!canSubmit) return;\n const trimmedLimit = limit.trim();\n onSubmit({ code: code.trim(), issuer: issuer.trim(), ...(trimmedLimit ? { limit: trimmedLimit } : {}) });\n };\n\n return (\n <div\n className=\"pollar-modal-card pollar-asset-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <div className=\"pollar-modal-header-actions\">\n <button className=\"pollar-modal-close\" onClick={onBack} disabled={busy} aria-label=\"Back\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M10 3L5 8l5 5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <h2 className=\"pollar-modal-title\">Add custom trustline</h2>\n </div>\n <button className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n\n <p className=\"pollar-asset-custom-hint\">\n Custom trustlines aren't sponsored — your wallet pays the 0.5 XLM reserve and the transaction fee.\n </p>\n\n <div className=\"pollar-field\">\n <label className=\"pollar-label\" htmlFor=\"pollar-trustline-code\">\n Asset code\n </label>\n <input\n id=\"pollar-trustline-code\"\n className=\"pollar-input\"\n value={code}\n onChange={(e) => setCode(e.target.value)}\n placeholder=\"USDC\"\n maxLength={12}\n autoComplete=\"off\"\n spellCheck={false}\n disabled={busy}\n />\n </div>\n\n <div className=\"pollar-field\">\n <label className=\"pollar-label\" htmlFor=\"pollar-trustline-issuer\">\n Issuer\n </label>\n <input\n id=\"pollar-trustline-issuer\"\n className=\"pollar-input\"\n value={issuer}\n onChange={(e) => setIssuer(e.target.value)}\n placeholder=\"G…\"\n autoComplete=\"off\"\n spellCheck={false}\n disabled={busy}\n />\n {issuer.trim().length > 0 && !issuerOk && (\n <span className=\"pollar-field-error\">Issuer must be a 56-character Stellar address starting with G.</span>\n )}\n </div>\n\n <div className=\"pollar-field\">\n <label className=\"pollar-label\" htmlFor=\"pollar-trustline-limit\">\n Limit <span className=\"pollar-label-optional\">(optional)</span>\n </label>\n <input\n id=\"pollar-trustline-limit\"\n className=\"pollar-input\"\n value={limit}\n onChange={(e) => setLimit(e.target.value)}\n placeholder=\"Maximum\"\n inputMode=\"decimal\"\n autoComplete=\"off\"\n spellCheck={false}\n disabled={busy}\n />\n </div>\n\n {actionError && <div className=\"pollar-modal-action-error\">{actionError}</div>}\n\n <div className=\"pollar-modal-actions\">\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={submit} disabled={!canSubmit}>\n {busy ? (\n <>\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n Enabling…\n </>\n ) : (\n 'Enable trustline'\n )}\n </button>\n </div>\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { EnabledAssetRecord, WalletChain } from '@pollar/core';\nimport { useCallback, useEffect, useState } from 'react';\nimport { usePollar } from '../../context';\nimport { useChains } from '../../useChains';\nimport { addressForChain } from '../ChainSelect';\nimport '../shared.css';\nimport './EnabledAssetsModal.css';\nimport { CustomTrustlineModalTemplate, EnabledAssetsModalTemplate } from './EnabledAssetsModalTemplate';\n\ninterface EnabledAssetsModalProps {\n onClose: () => void;\n}\n\nfunction assetKey(record: { code: string; issuer?: string }): string {\n return record.code + (record.issuer ?? '');\n}\n\nexport function EnabledAssetsModal({ onClose }: EnabledAssetsModalProps) {\n const { enabledAssets, refreshAssets, setTrustline, wallets, styles } = usePollar();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const { chains } = useChains();\n const [selectedChain, setSelectedChain] = useState<WalletChain | null>(null);\n // Default to the app's first configured network. Runs as an effect because\n // `wallets` is empty on the first render of a cold-start session.\n useEffect(() => {\n if (selectedChain === null && chains.length > 0) setSelectedChain(chains[0]!);\n }, [chains, selectedChain]);\n\n const walletAddress = addressForChain(wallets, selectedChain);\n\n const [view, setView] = useState<'list' | 'custom'>('list');\n // Key of the in-flight asset (`code+issuer`), or 'custom' for the custom form.\n const [busyKey, setBusyKey] = useState<string | null>(null);\n const [actionError, setActionError] = useState<string | null>(null);\n\n useEffect(() => {\n void refreshAssets();\n }, [refreshAssets]);\n\n const runAction = useCallback(\n async (\n key: string,\n asset: { code: string; issuer: string },\n opts: { limit?: string; skipSponsorship?: boolean },\n ): Promise<boolean> => {\n setBusyKey(key);\n setActionError(null);\n const res = await setTrustline(asset, opts);\n if (res.status === 'error') {\n setActionError(res.details || 'Trustline update failed. Please try again.');\n setBusyKey(null);\n return false;\n }\n await refreshAssets();\n setBusyKey(null);\n return true;\n },\n [setTrustline, refreshAssets],\n );\n\n const handleToggle = useCallback(\n (record: EnabledAssetRecord) => {\n const removing = record.trustlineEstablished;\n // Sponsorship is derived automatically from the app config now — no flag.\n void runAction(\n assetKey(record),\n { code: record.code, issuer: record.issuer ?? '' },\n { ...(removing ? { limit: '0' } : {}) },\n );\n },\n [runAction],\n );\n\n const handleCustomSubmit = useCallback(\n async (input: { code: string; issuer: string; limit?: string }) => {\n // Custom (non-configured) assets are never app-sponsored — the user pays.\n const ok = await runAction(\n 'custom',\n { code: input.code, issuer: input.issuer },\n { ...(input.limit ? { limit: input.limit } : {}), skipSponsorship: true },\n );\n if (ok) setView('list');\n },\n [runAction],\n );\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n {view === 'list' ? (\n <EnabledAssetsModalTemplate\n theme={theme}\n accentColor={accentColor}\n enabledAssets={enabledAssets}\n walletAddress={walletAddress}\n chains={chains}\n selectedChain={selectedChain}\n onSelectChain={setSelectedChain}\n busyKey={busyKey}\n actionError={actionError}\n onRefresh={() => refreshAssets()}\n onClose={onClose}\n onToggleTrustline={handleToggle}\n onAddCustom={() => {\n setActionError(null);\n setView('custom');\n }}\n />\n ) : (\n <CustomTrustlineModalTemplate\n theme={theme}\n accentColor={accentColor}\n busy={busyKey === 'custom'}\n actionError={actionError}\n onBack={() => {\n setActionError(null);\n setView('list');\n }}\n onClose={onClose}\n onSubmit={handleCustomSubmit}\n />\n )}\n </div>\n );\n}\n","'use client';\n\nimport type { KycStatus as KycStatusValue } from '@pollar/core';\nimport type { CSSProperties } from 'react';\n\ninterface KycStatusProps {\n status: KycStatusValue;\n className?: string;\n}\n\nconst STATUS_CONFIG: Record<KycStatusValue, { label: string; color: string; dot: boolean }> = {\n none: { label: 'Not started', color: '#6b7280', dot: false },\n pending: { label: 'Pending review', color: '#f59e0b', dot: true },\n approved: { label: 'Verified', color: '#10b981', dot: false },\n rejected: { label: 'Rejected', color: '#ef4444', dot: false },\n};\n\nexport function KycStatus({ status, className }: KycStatusProps) {\n const config = STATUS_CONFIG[status] ?? STATUS_CONFIG.none;\n return (\n <span\n className={`pollar-kyc-badge${className ? ` ${className}` : ''}`}\n style={{ '--pollar-kyc-color': config.color } as CSSProperties}\n >\n {config.dot && <span className=\"pollar-kyc-badge-dot\" />}\n {config.label}\n </span>\n );\n}\n","'use client';\n\nimport type { KycProvider, KycStartResponse, KycStatus as KycStatusValue } from '@pollar/core';\nimport type { CSSProperties } from 'react';\nimport { KycStatus as KycStatusBadge } from './KycStatus';\n\nexport type KycStep = 'select_provider' | 'verifying' | 'polling' | 'done';\n\ninterface KycModalTemplateProps {\n theme: string;\n accentColor: string;\n step: KycStep;\n providers: KycProvider[];\n selectedProvider: KycProvider | null;\n session: KycStartResponse | null;\n kycStatus: KycStatusValue;\n isLoading: boolean;\n onSelectProvider: (provider: KycProvider) => void;\n onDoneVerifying: () => void;\n onRefresh: () => void;\n onClose: () => void;\n}\n\nexport function KycModalTemplate({\n theme,\n accentColor,\n step,\n providers,\n selectedProvider,\n session,\n kycStatus,\n isLoading,\n onSelectProvider,\n onDoneVerifying,\n onRefresh,\n onClose,\n}: KycModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n '--pollar-modal-padding': '2rem',\n '--pollar-modal-heading-size': '1.375rem',\n '--pollar-modal-subtitle-size': '0.9rem',\n } as CSSProperties;\n\n return (\n <div className=\"pollar-modal-card pollar-kyc-modal\" style={cssVars} onClick={(e) => e.stopPropagation()}>\n <div className=\"pollar-modal-header\">\n <div className=\"pollar-kyc-header-text\">\n <h2 className=\"pollar-modal-title\">Identity verification</h2>\n <p className=\"pollar-kyc-subtitle\">\n {step === 'select_provider' && 'Choose your verification provider'}\n {step === 'verifying' && `Verifying with ${selectedProvider?.name}`}\n {step === 'polling' && 'Waiting for verification result'}\n {step === 'done' && 'Verification complete'}\n </p>\n </div>\n <div className=\"pollar-modal-header-actions\">\n {step === 'select_provider' && (\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoading}\n aria-label=\"Refresh\"\n title=\"Refresh providers\"\n >\n <svg\n className={isLoading ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n {step === 'select_provider' &&\n (isLoading && providers.length === 0 ? (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading providers…</span>\n </div>\n ) : (\n <div className=\"pollar-kyc-providers\">\n {providers.length === 0 && (\n <p style={{ color: 'var(--pollar-muted)', textAlign: 'center' }}>No providers available for your country.</p>\n )}\n {providers.map((p) => (\n <button\n key={p.id}\n type=\"button\"\n className=\"pollar-kyc-provider-btn\"\n disabled={isLoading}\n onClick={() => onSelectProvider(p)}\n >\n <span className=\"pollar-kyc-provider-name\">{p.name}</span>\n <span className=\"pollar-kyc-provider-flow\">{p.flow}</span>\n </button>\n ))}\n </div>\n ))}\n\n {step === 'verifying' && selectedProvider && (\n <>\n <div className=\"pollar-kyc-iframe-wrap\">\n {session?.kycUrl ? (\n <iframe className=\"pollar-kyc-iframe\" src={session.kycUrl} title=\"KYC verification\" allow=\"camera; microphone\" />\n ) : (\n <div className=\"pollar-kyc-iframe-mock\">\n <span>🔒</span>\n <span>\n {selectedProvider.flow === 'form'\n ? 'The identity verification form will appear here.'\n : 'Identity verification will open here.'}\n </span>\n </div>\n )}\n </div>\n <div className=\"pollar-modal-actions\">\n <button type=\"button\" className=\"pollar-btn-secondary\" onClick={onClose}>\n Cancel\n </button>\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={onDoneVerifying}>\n I've completed verification\n </button>\n </div>\n </>\n )}\n\n {step === 'polling' && (\n <div className=\"pollar-kyc-polling\">\n <div className=\"pollar-spinner\" />\n <p className=\"pollar-kyc-polling-text\">Checking verification status…</p>\n </div>\n )}\n\n {step === 'done' && (\n <div className=\"pollar-kyc-result\">\n <span className=\"pollar-kyc-result-icon\">{kycStatus === 'approved' ? '✅' : '❌'}</span>\n <KycStatusBadge status={kycStatus} />\n <p className=\"pollar-kyc-result-text\">\n {kycStatus === 'approved'\n ? 'Your identity has been verified successfully.'\n : 'Verification was not approved. Please try again.'}\n </p>\n <div className=\"pollar-modal-actions\">\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={onClose}>\n Close\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { type KycProvider, type KycStartResponse, type KycStatus as KycStatusValue } from '@pollar/core';\nimport { useCallback, useEffect, useState } from 'react';\nimport { usePollar } from '../../context';\nimport type { KycStep } from './KycModalTemplate';\nimport { KycModalTemplate } from './KycModalTemplate';\nimport '../shared.css';\nimport './KycModal.css';\n\ninterface KycModalProps {\n onClose: () => void;\n /** ISO 3166-1 alpha-2 country code to filter providers. Defaults to 'MX'. */\n country?: string;\n /** KYC level required. Defaults to 'basic'. */\n level?: 'basic' | 'intermediate' | 'enhanced';\n /** Called when KYC is successfully approved. */\n onApproved?: () => void;\n}\n\nexport function KycModal({ onClose, country = 'MX', level = 'basic', onApproved }: KycModalProps) {\n const { getClient, styles } = usePollar();\n\n const [step, setStep] = useState<KycStep>('select_provider');\n const [providers, setProviders] = useState<KycProvider[]>([]);\n const [selectedProvider, setSelectedProvider] = useState<KycProvider | null>(null);\n const [session, setSession] = useState<KycStartResponse | null>(null);\n const [kycStatus, setKycStatus] = useState<KycStatusValue>('none');\n const [isLoading, setIsLoading] = useState(false);\n\n const client = getClient();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const loadProviders = useCallback(() => {\n setIsLoading(true);\n return getClient()\n .getKycProviders(country)\n .then((result) => setProviders(result.providers))\n .catch(() => setProviders([]))\n .finally(() => setIsLoading(false));\n }, [getClient, country]);\n\n useEffect(() => {\n void loadProviders();\n }, [loadProviders]);\n\n async function handleSelectProvider(provider: KycProvider) {\n setSelectedProvider(provider);\n setIsLoading(true);\n try {\n const result = await client.resolveKyc(provider.id, level);\n if (result.alreadyApproved) {\n setKycStatus('approved');\n setStep('done');\n onApproved?.();\n return;\n }\n setSession(result as KycStartResponse);\n setStep('verifying');\n } catch {\n setStep('select_provider');\n } finally {\n setIsLoading(false);\n }\n }\n\n async function handleDoneVerifying() {\n if (!selectedProvider) return;\n setStep('polling');\n try {\n const finalStatus = await client.pollKycStatus(selectedProvider.id, { intervalMs: 3000, timeoutMs: 120_000 });\n setKycStatus(finalStatus);\n setStep('done');\n if (finalStatus === 'approved') onApproved?.();\n } catch {\n setKycStatus('rejected');\n setStep('done');\n }\n }\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <KycModalTemplate\n theme={theme}\n accentColor={accentColor}\n step={step}\n providers={providers}\n selectedProvider={selectedProvider}\n session={session}\n kycStatus={kycStatus}\n isLoading={isLoading}\n onSelectProvider={handleSelectProvider}\n onDoneVerifying={handleDoneVerifying}\n onRefresh={() => void loadProviders()}\n onClose={onClose}\n />\n </div>\n );\n}\n","import { useRef, useState } from 'react';\n\ninterface EmailCodeInputProps {\n email?: string;\n onSubmit: (code: string) => void;\n}\n\nexport function EmailCodeInput({ email, onSubmit }: EmailCodeInputProps) {\n const [digits, setDigits] = useState(['', '', '', '', '', '']);\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n\n function submit(next: string[]) {\n if (next.every(Boolean)) onSubmit(next.join(''));\n }\n\n function handleChange(index: number, value: string) {\n const cleaned = value.replace(/\\D/g, '').slice(-1);\n const next = digits.map((d, i) => (i === index ? cleaned : d));\n setDigits(next);\n if (cleaned && index < 5) inputRefs.current[index + 1]?.focus();\n submit(next);\n }\n\n function handleKeyDown(index: number, e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'Backspace' && !digits[index] && index > 0) {\n inputRefs.current[index - 1]?.focus();\n }\n }\n\n function handlePaste(e: React.ClipboardEvent<HTMLInputElement>) {\n e.preventDefault();\n const text = e.clipboardData.getData('text').replace(/\\D/g, '').slice(0, 6);\n const next = Array.from({ length: 6 }, (_, i) => text[i] ?? '');\n setDigits(next);\n inputRefs.current[Math.min(text.length - 1, 5)]?.focus();\n submit(next);\n }\n\n return (\n <div className=\"pollar-code-section\">\n <p className=\"pollar-code-label\">Enter the 6-digit code sent to {email ? <strong>{email}</strong> : 'your email'}</p>\n <div className=\"pollar-code-inputs\">\n {digits.map((digit, i) => (\n <input\n key={i}\n ref={(el) => {\n inputRefs.current[i] = el;\n }}\n type=\"text\"\n inputMode=\"numeric\"\n maxLength={2}\n value={digit}\n className=\"pollar-code-input\"\n onChange={(e) => handleChange(i, e.target.value)}\n onKeyDown={(e) => handleKeyDown(i, e)}\n onPaste={handlePaste}\n />\n ))}\n </div>\n </div>\n );\n}\n","// https://brand.github.com/foundations/logo\nimport './GithubButton.css';\n\nexport const GithubButton = ({ disabled, onClick }: { disabled: boolean; onClick: () => void }) => {\n return (\n <button className=\"pollar-github-button\" disabled={disabled} onClick={onClick}>\n <svg className=\"pollar-github-button-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden>\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z\"\n clipRule=\"evenodd\"\n />\n </svg>\n <span className=\"pollar-github-button-contents\">GitHub</span>\n </button>\n );\n};\n","// https://developers.google.com/identity/branding-guidelines\nimport './GoogleButton.css';\n\nexport const GoogleButton = ({ disabled, onClick }: { disabled: boolean; onClick: () => void }) => {\n return (\n <button className=\"pollar-gsi-material-button\" disabled={disabled} onClick={onClick}>\n <div className=\"pollar-gsi-material-button-state\"></div>\n <div className=\"pollar-gsi-material-button-content-wrapper\">\n <div className=\"pollar-gsi-material-button-icon\">\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\" style={{ display: 'block' }}>\n <path\n fill=\"#EA4335\"\n d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"\n ></path>\n <path\n fill=\"#4285F4\"\n d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"\n ></path>\n <path\n fill=\"#FBBC05\"\n d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"\n ></path>\n <path\n fill=\"#34A853\"\n d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"\n ></path>\n <path fill=\"none\" d=\"M0 0h48v48H0z\"></path>\n </svg>\n </div>\n <span className=\"pollar-gsi-material-button-contents\">Google</span>\n <span style={{ display: 'none' }}>Google</span>\n </div>\n </button>\n );\n};\n","'use client';\n\nimport { AUTH_ERROR_CODES, AuthState, WalletId } from '@pollar/core';\n\ntype StateStatus = 'NONE' | 'LOADING' | 'SUCCESS' | 'ERROR';\nimport { type CSSProperties, useState } from 'react';\nimport { LOGO_POLLAR } from '../../constants';\nimport { ModalStatusBanner, PollarModalFooter } from '../commons';\nimport { EmailCodeInput } from './EmailCodeInput';\nimport { GithubButton } from './GithubButton';\nimport { GoogleButton } from './GoogleButton';\n\ntype WalletAdapterEntry = { id: WalletId; meta: { label: string; iconUrl?: string; group?: string } };\n\nfunction WalletAdapterButtons({\n walletAdapters,\n onConnect,\n isLoading,\n variant = 'list',\n}: {\n walletAdapters: WalletAdapterEntry[];\n onConnect: (id: WalletId) => void;\n isLoading: boolean;\n // 'list' → borderless rows for inside a group sub-picker (large icon + name).\n // 'entry' → bordered buttons that match the root-level entries (Google, Wallet,\n // Smart Wallet) so a root adapter like Privy doesn't read as bare text.\n variant?: 'list' | 'entry';\n}) {\n if (variant === 'entry') {\n return (\n <>\n {walletAdapters.map((a) => (\n <button\n key={a.id}\n type=\"button\"\n disabled={isLoading}\n className=\"pollar-wallet-entry-btn\"\n onClick={() => onConnect(a.id)}\n >\n {a.meta.iconUrl && <img src={a.meta.iconUrl} alt={a.meta.label} className=\"pollar-wallet-icon\" />}\n {a.meta.label}\n </button>\n ))}\n </>\n );\n }\n return (\n <div className=\"pollar-wallet-list\">\n {walletAdapters.map((a) => (\n <button\n key={a.id}\n type=\"button\"\n disabled={isLoading}\n className=\"pollar-wallet-list-btn\"\n onClick={() => onConnect(a.id)}\n >\n {a.meta.iconUrl && <img src={a.meta.iconUrl} alt={a.meta.label} className=\"pollar-wallet-list-icon\" />}\n <span className=\"pollar-wallet-list-name\">{a.meta.label}</span>\n </button>\n ))}\n </div>\n );\n}\n\nconst AUTH_STATE_MESSAGES: Record<AuthState['step'], string> = {\n idle: '',\n creating_session: 'Initializing…',\n entering_email: '',\n sending_email: 'Sending…',\n entering_code: 'Code sent — check your inbox',\n verifying_email_code: 'Verifying…',\n opening_oauth: 'Redirecting…',\n connecting_wallet: 'Connecting wallet…',\n signing_wallet_challenge: 'Confirm in your wallet…',\n wallet_not_installed: 'Wallet not installed',\n authenticating_wallet: 'Signing in with wallet…',\n creating_passkey: 'Waiting for passkey…',\n deploying_smart_account: 'Creating your wallet…',\n authenticating: 'Authenticating…',\n authenticated: 'Welcome!',\n error: '',\n};\n\nfunction authStateToStatus(step: AuthState['step']): StateStatus {\n const loading: AuthState['step'][] = [\n 'creating_session',\n 'sending_email',\n 'verifying_email_code',\n 'opening_oauth',\n 'connecting_wallet',\n 'signing_wallet_challenge',\n 'authenticating_wallet',\n 'creating_passkey',\n 'deploying_smart_account',\n 'authenticating',\n ];\n const success: AuthState['step'][] = ['authenticated', 'entering_code'];\n const error: AuthState['step'][] = ['error', 'wallet_not_installed'];\n\n if (loading.includes(step)) return 'LOADING';\n if (success.includes(step)) return 'SUCCESS';\n if (error.includes(step)) return 'ERROR';\n return 'NONE';\n}\n\ninterface LoginModalTemplateProps {\n theme: string;\n accentColor: string;\n logoUrl: string | null;\n emailEnabled: boolean;\n embeddedWallets: boolean;\n /** Show the \"Smart Wallet\" (passkey) option. Optional & defaults to off so\n * adding it isn't a breaking change for existing template consumers. */\n smartWallet?: boolean;\n providers: {\n google: boolean;\n discord: boolean;\n x: boolean;\n github: boolean;\n apple: boolean;\n };\n /** Registered wallet adapters to render as buttons (Freighter, Albedo, Privy, …). */\n walletAdapters: WalletAdapterEntry[];\n appName: string;\n email?: string;\n onEmailChange?: (email: string) => void;\n onEmailSubmit?: () => void;\n onSocialLogin?: (provider: 'google' | 'github') => void;\n onWalletConnect?: (id: WalletId) => void;\n /** Log in with an existing passkey (returning user). */\n onLoginSmartWallet?: () => void;\n /** Create a new passkey + smart wallet (new user). */\n onCreateSmartWallet?: () => void;\n authState: AuthState;\n codeInputKey?: number;\n onCodeSubmit?: (code: string) => void;\n onBack: () => void;\n onCancel: () => void;\n onRetry: () => void;\n}\n\n/** Theme-derived CSS custom properties shared by the login modal and its\n * loading/error status card. Kept as a standalone helper so both render paths\n * stay visually in lockstep. */\nexport function buildModalCssVars(theme: string, accentColor: string): CSSProperties {\n const isDark = theme === 'dark';\n return {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n '--pollar-modal-padding': '2rem',\n '--pollar-modal-heading-size': '1.375rem',\n '--pollar-modal-subtitle-size': '0.9rem',\n } as CSSProperties;\n}\n\nexport function LoginModalTemplate({\n theme,\n accentColor,\n logoUrl,\n emailEnabled,\n embeddedWallets,\n smartWallet = false,\n providers,\n walletAdapters,\n appName,\n email = '',\n onEmailChange,\n onEmailSubmit,\n onSocialLogin,\n onWalletConnect,\n onLoginSmartWallet,\n onCreateSmartWallet,\n authState,\n codeInputKey,\n onCodeSubmit,\n onBack,\n onCancel,\n onRetry,\n}: LoginModalTemplateProps) {\n const [showPasskeyChooser, setShowPasskeyChooser] = useState(false);\n // Which wallet group's sub-picker is open (gateway label), or null for the root view.\n const [activeGroup, setActiveGroup] = useState<string | null>(null);\n\n const enabledSocial = Object.entries(providers).filter(([, enabled]) => enabled);\n\n // Split registered adapters into root-level buttons (no `meta.group`, e.g. Privy)\n // and gateway groups (adapters sharing a `meta.group` collapse behind one button\n // that opens a sub-picker — e.g. the Stellar Wallets Kit wallets under \"Wallet\").\n const rootAdapters = walletAdapters.filter((a) => !a.meta.group);\n const walletGroups = walletAdapters\n .filter((a) => a.meta.group)\n .reduce<{ label: string; adapters: WalletAdapterEntry[] }[]>((acc, a) => {\n const label = a.meta.group as string;\n const existing = acc.find((g) => g.label === label);\n if (existing) existing.adapters.push(a);\n else acc.push({ label, adapters: [a] });\n return acc;\n }, []);\n const activeGroupAdapters = walletGroups.find((g) => g.label === activeGroup)?.adapters ?? [];\n\n const cssVars = buildModalCssVars(theme, accentColor);\n\n const status = authStateToStatus(authState.step);\n const isLoading = status === 'LOADING';\n const isEmailCodeError =\n authState.step === 'error' &&\n (authState.errorCode === AUTH_ERROR_CODES.EMAIL_CODE_EXPIRED ||\n authState.errorCode === AUTH_ERROR_CODES.EMAIL_CODE_INVALID);\n const awaitingEmailCode = authState.step === 'entering_code' || authState.step === 'verifying_email_code' || isEmailCodeError;\n const statusMessage = authState.step === 'error' ? authState.message : AUTH_STATE_MESSAGES[authState.step];\n\n const BackButton = ({ onClick }: { onClick: () => void }) => (\n <button type=\"button\" className=\"pollar-back-btn\" onClick={onClick} aria-label=\"Back\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n );\n\n return (\n <div className=\"pollar-modal-card pollar-modal\" style={cssVars} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className=\"pollar-close-btn\" onClick={onCancel} aria-label=\"Close\">\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n <div className=\"pollar-header\">\n <div className=\"pollar-logo-wrap\">\n <img src={logoUrl ?? LOGO_POLLAR} alt=\"Logo\" className=\"pollar-logo\" />\n </div>\n <h2 className=\"pollar-title\">{appName}</h2>\n <p className=\"pollar-subtitle\">Log in or sign up</p>\n </div>\n\n {awaitingEmailCode ? (\n <>\n <BackButton onClick={onBack} />\n <EmailCodeInput key={codeInputKey} email={email} onSubmit={onCodeSubmit ?? (() => {})} />\n </>\n ) : activeGroup ? (\n <>\n <BackButton onClick={() => setActiveGroup(null)} />\n <WalletAdapterButtons\n walletAdapters={activeGroupAdapters}\n onConnect={onWalletConnect ?? (() => {})}\n isLoading={isLoading}\n />\n </>\n ) : showPasskeyChooser ? (\n <>\n <BackButton onClick={() => setShowPasskeyChooser(false)} />\n <div className=\"pollar-wallet-section\">\n <button type=\"button\" disabled={isLoading} className=\"pollar-btn-primary\" onClick={onCreateSmartWallet}>\n Create a new wallet\n </button>\n <button type=\"button\" disabled={isLoading} className=\"pollar-wallet-entry-btn\" onClick={onLoginSmartWallet}>\n Log in with an existing wallet\n </button>\n </div>\n </>\n ) : (\n <>\n {emailEnabled && (\n <div className=\"pollar-email-section\">\n <input\n type=\"email\"\n placeholder=\"you@email.com\"\n value={email}\n disabled={isLoading}\n className=\"pollar-input\"\n onChange={(e) => onEmailChange?.(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && onEmailSubmit?.()}\n />\n <button\n type=\"button\"\n disabled={isLoading || !email}\n className=\"pollar-btn-primary\"\n style={{ marginTop: '0.75rem' }}\n onClick={onEmailSubmit}\n >\n Submit\n </button>\n </div>\n )}\n\n {emailEnabled && enabledSocial.length > 0 && (\n <div className=\"pollar-divider\">\n <div className=\"pollar-divider-line\" />\n <div className=\"pollar-divider-label\">\n <span className=\"pollar-divider-text\">or continue with</span>\n </div>\n </div>\n )}\n\n {enabledSocial.length > 0 && (\n <div className=\"pollar-social-list\">\n {enabledSocial.some(([key]) => key === 'google') && (\n <GoogleButton disabled={isLoading} onClick={() => onSocialLogin?.('google')} />\n )}\n {enabledSocial.some(([key]) => key === 'github') && (\n <GithubButton disabled={isLoading} onClick={() => onSocialLogin?.('github')} />\n )}\n </div>\n )}\n\n {(embeddedWallets || smartWallet) && (\n <div className=\"pollar-wallet-section\">\n {embeddedWallets && (\n <>\n {walletGroups.map((g) => (\n <button\n key={g.label}\n type=\"button\"\n disabled={isLoading}\n className=\"pollar-wallet-entry-btn\"\n onClick={() => setActiveGroup(g.label)}\n >\n <svg\n width=\"18\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z\" />\n </svg>\n {g.label}\n </button>\n ))}\n {rootAdapters.length > 0 && (\n <WalletAdapterButtons\n walletAdapters={rootAdapters}\n onConnect={onWalletConnect ?? (() => {})}\n isLoading={isLoading}\n variant=\"entry\"\n />\n )}\n </>\n )}\n\n {smartWallet && (\n <button\n type=\"button\"\n disabled={isLoading}\n className=\"pollar-wallet-entry-btn\"\n onClick={() => setShowPasskeyChooser(true)}\n >\n <svg\n width=\"18\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M16 8V6a4 4 0 00-8 0v2M5 8h14a1 1 0 011 1v10a1 1 0 01-1 1H5a1 1 0 01-1-1V9a1 1 0 011-1zm7 5v2\" />\n </svg>\n Smart Wallet\n </button>\n )}\n </div>\n )}\n </>\n )}\n\n <ModalStatusBanner\n message={statusMessage}\n status={status}\n onCancel={onCancel}\n onRetry={isEmailCodeError ? undefined : onRetry}\n />\n\n <PollarModalFooter />\n </div>\n );\n}\n\n/** Placeholder shown inside the login modal while the app config is loading, or\n * when its remote fetch failed — instead of the empty shell that renders when\n * `styles` is still the default `{}`. Mirrors the template's card chrome (logo,\n * title, footer) so the swap to the real form isn't jarring. */\nexport function LoginModalStatus({\n status,\n theme,\n accentColor,\n logoUrl,\n appName,\n onRetry,\n onCancel,\n}: {\n status: 'loading' | 'error';\n theme: string;\n accentColor: string;\n logoUrl: string | null;\n appName: string;\n onRetry: () => void;\n onCancel: () => void;\n}) {\n const cssVars = buildModalCssVars(theme, accentColor);\n return (\n <div className=\"pollar-modal-card pollar-modal\" style={cssVars} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className=\"pollar-close-btn\" onClick={onCancel} aria-label=\"Close\">\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n <div className=\"pollar-header\">\n <div className=\"pollar-logo-wrap\">\n <img src={logoUrl ?? LOGO_POLLAR} alt=\"Logo\" className=\"pollar-logo\" />\n </div>\n <h2 className=\"pollar-title\">{appName}</h2>\n <p className=\"pollar-subtitle\">Log in or sign up</p>\n </div>\n\n {status === 'loading' ? (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading...</span>\n </div>\n ) : (\n <div className=\"pollar-wallet-section\">\n <p className=\"pollar-modal-error\">Could not load sign-in options. Check your connection and try again.</p>\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={onRetry}>\n Try again\n </button>\n </div>\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { type CSSProperties, useMemo, useState } from 'react';\nimport type { InteractiveAuthAdapter } from '@pollar/core';\nimport { LOGO_POLLAR } from '../../constants';\nimport { ModalStatusBanner, PollarModalFooter } from '../commons';\nimport { EmailCodeInput } from './EmailCodeInput';\nimport { GithubButton } from './GithubButton';\nimport { GoogleButton } from './GoogleButton';\n\ntype StateStatus = 'NONE' | 'LOADING' | 'SUCCESS' | 'ERROR';\n\ninterface PrivyLoginSubmodalProps {\n /** The interactive adapter whose login (email/oauth) we drive. */\n adapter: InteractiveAuthAdapter;\n theme: string;\n accentColor: string;\n logoUrl: string | null;\n appName: string;\n /** Return to the root login view. */\n onBack: () => void;\n /** Close the whole login modal. */\n onCancel: () => void;\n /** The provider login finished — hand off to `login({ provider })`. */\n onAuthenticated: () => void;\n}\n\n/**\n * Sub-modal for an {@link InteractiveAuthAdapter} (e.g. `@pollar/privy-adapter`).\n * It renders the adapter's `getAuthOptions()` (email / Google / GitHub), runs the\n * provider login by calling the adapter's methods, then signals\n * {@link PrivyLoginSubmodalProps.onAuthenticated} so the host triggers the normal\n * `login({ provider })` (which runs `connect()` + SEP-10).\n *\n * Owned by `@pollar/react`; reuses the login-modal CSS classes/vars.\n */\nexport function PrivyLoginSubmodal({\n adapter,\n theme,\n accentColor,\n logoUrl,\n appName,\n onBack,\n onCancel,\n onAuthenticated,\n}: PrivyLoginSubmodalProps) {\n const options = useMemo(() => adapter.getAuthOptions(), [adapter]);\n const [email, setEmail] = useState('');\n const [view, setView] = useState<'root' | 'email-code'>('root');\n const [status, setStatus] = useState<StateStatus>('NONE');\n const [message, setMessage] = useState('');\n\n const isDark = theme === 'dark';\n const isLoading = status === 'LOADING';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n '--pollar-modal-padding': '2rem',\n '--pollar-modal-heading-size': '1.375rem',\n '--pollar-modal-subtitle-size': '0.9rem',\n } as CSSProperties;\n\n function fail(error: unknown) {\n setStatus('ERROR');\n setMessage(error instanceof Error ? error.message : 'Something went wrong. Please try again.');\n }\n\n async function handleEmailSubmit() {\n if (!email) return;\n setStatus('LOADING');\n setMessage('');\n try {\n await adapter.sendEmailCode(email);\n setStatus('SUCCESS');\n setMessage('Code sent — check your inbox');\n setView('email-code');\n } catch (error) {\n fail(error);\n }\n }\n\n async function handleCodeSubmit(code: string) {\n setStatus('LOADING');\n setMessage('Verifying…');\n try {\n await adapter.verifyEmailCode(code);\n onAuthenticated();\n } catch (error) {\n fail(error);\n }\n }\n\n async function handleOAuth(provider: 'google' | 'github') {\n setStatus('LOADING');\n setMessage('');\n try {\n // On web Privy may redirect for OAuth; completion then arrives after the\n // round-trip. Email login resolves in-session and is the robust path.\n await adapter.loginWithOAuth(provider);\n onAuthenticated();\n } catch (error) {\n fail(error);\n }\n }\n\n const BackButton = ({ onClick }: { onClick: () => void }) => (\n <button type=\"button\" className=\"pollar-back-btn\" onClick={onClick} aria-label=\"Back\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M15 19l-7-7 7-7\" />\n </svg>\n </button>\n );\n\n const showEmail = options.includes('email');\n const showGoogle = options.includes('google');\n const showGithub = options.includes('github');\n\n return (\n <div className=\"pollar-modal-card pollar-modal\" style={cssVars} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className=\"pollar-close-btn\" onClick={onCancel} aria-label=\"Close\">\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n\n <div className=\"pollar-header\">\n <div className=\"pollar-logo-wrap\">\n <img src={logoUrl ?? LOGO_POLLAR} alt=\"Logo\" className=\"pollar-logo\" />\n </div>\n <h2 className=\"pollar-title\">{appName}</h2>\n <p className=\"pollar-subtitle\">{adapter.meta.label}</p>\n </div>\n\n {view === 'email-code' ? (\n <>\n <BackButton onClick={() => setView('root')} />\n <EmailCodeInput email={email} onSubmit={handleCodeSubmit} />\n </>\n ) : (\n <>\n <BackButton onClick={onBack} />\n {showEmail && (\n <div className=\"pollar-email-section\">\n <input\n type=\"email\"\n placeholder=\"you@email.com\"\n value={email}\n disabled={isLoading}\n className=\"pollar-input\"\n onChange={(e) => setEmail(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleEmailSubmit()}\n />\n <button\n type=\"button\"\n disabled={isLoading || !email}\n className=\"pollar-btn-primary\"\n style={{ marginTop: '0.75rem' }}\n onClick={handleEmailSubmit}\n >\n Submit\n </button>\n </div>\n )}\n\n {showEmail && (showGoogle || showGithub) && (\n <div className=\"pollar-divider\">\n <div className=\"pollar-divider-line\" />\n <div className=\"pollar-divider-label\">\n <span className=\"pollar-divider-text\">or continue with</span>\n </div>\n </div>\n )}\n\n {(showGoogle || showGithub) && (\n <div className=\"pollar-social-list\">\n {showGoogle && <GoogleButton disabled={isLoading} onClick={() => handleOAuth('google')} />}\n {showGithub && <GithubButton disabled={isLoading} onClick={() => handleOAuth('github')} />}\n </div>\n )}\n </>\n )}\n\n <ModalStatusBanner message={message} status={status} onCancel={onCancel} onRetry={undefined} />\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport {\n AUTH_ERROR_CODES,\n AuthState,\n InteractiveAuthAdapter,\n isInteractiveAuthAdapter,\n PollarLoginOptions,\n WalletId,\n} from '@pollar/core';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport { LoginModalStatus, LoginModalTemplate } from './LoginModalTemplate';\nimport { PrivyLoginSubmodal } from './PrivyLoginSubmodal';\nimport '../shared.css';\nimport './LoginModal.css';\n\ntype TimeoutHandle = ReturnType<typeof setTimeout>;\n\ninterface LoginModalProps {\n onClose: () => void;\n}\n\nexport function LoginModal({ onClose }: LoginModalProps) {\n const [email, setEmail] = useState('');\n const { getClient, styles, appConfig: config, configStatus, retryConfig } = usePollar();\n const [authState, setAuthState] = useState<AuthState>(() => getClient().getAuthState());\n // Registered wallet adapters (built-ins + config) → one login button each.\n const walletAdapters = useMemo(() => getClient().listWalletAdapters(), [getClient]);\n const [codeInputKey, setCodeInputKey] = useState(0);\n const pendingEmail = useRef<string | null>(null);\n // When set, an interactive adapter (e.g. Privy) takes over the modal with its\n // own login sub-view instead of going straight to login({ provider }).\n const [interactiveAdapter, setInteractiveAdapter] = useState<InteractiveAuthAdapter | null>(null);\n\n const onCloseRef = useRef(onClose);\n onCloseRef.current = onClose;\n const autoCloseTimer = useRef<TimeoutHandle | null>(null);\n\n useEffect(() => {\n const unsubscribe = getClient().onAuthStateChange((next) => {\n setAuthState(next);\n if (next.step === 'entering_email' && pendingEmail.current) {\n getClient().sendEmailCode(pendingEmail.current);\n pendingEmail.current = null;\n }\n if (next.step === 'error' && next.errorCode === AUTH_ERROR_CODES.EMAIL_CODE_INVALID) {\n setCodeInputKey((k) => k + 1);\n }\n if (next.step === 'authenticated') {\n // Clear any timer already pending — if `authenticated` fires more than\n // once, overwriting the handle would orphan the previous timeout\n // (cleanup only tracks the latest).\n if (autoCloseTimer.current !== null) {\n clearTimeout(autoCloseTimer.current);\n }\n autoCloseTimer.current = setTimeout(() => {\n autoCloseTimer.current = null;\n onCloseRef.current();\n }, 1000);\n }\n });\n return () => {\n unsubscribe();\n if (autoCloseTimer.current !== null) {\n clearTimeout(autoCloseTimer.current);\n autoCloseTimer.current = null;\n }\n };\n }, [getClient]);\n\n const { theme = 'light', accentColor = '#005DB4', logoUrl, emailEnabled, embeddedWallets, smartWallet, providers } = styles;\n // Opt-in: the Smart Wallet (passkey) option only shows when the dashboard\n // explicitly enables it. Absent → hidden.\n const smartWalletEnabled = smartWallet ?? false;\n\n function handleClose() {\n setEmail('');\n getClient().cancelLogin();\n onClose();\n }\n\n function handleEmailSubmit() {\n if (!email) return;\n pendingEmail.current = email;\n getClient().beginEmailLogin();\n }\n\n function handleSocialLogin(provider: 'google' | 'github') {\n getClient().login({ provider });\n }\n\n function handleWalletConnect(type: WalletId) {\n // Interactive adapters (e.g. Privy) drive their own multi-step login that we\n // render as a sub-modal; open it instead of going straight to login().\n const adapter = getClient().getWalletAdapter(type);\n if (isInteractiveAuthAdapter(adapter)) {\n setInteractiveAdapter(adapter);\n return;\n }\n // Any other registered wallet adapter (freighter/albedo/swk…). The adapter\n // opens its own connect/auth UI; the SDK wraps the generic SEP-10 flow.\n getClient().login({ provider: type } as PollarLoginOptions);\n }\n\n function handleLoginSmartWallet() {\n getClient().loginSmartWallet();\n }\n\n function handleCreateSmartWallet() {\n getClient().createSmartWallet();\n }\n\n function handleVerifyCode(code: string) {\n getClient().verifyEmailCode(code);\n }\n\n function handleBack() {\n setEmail('');\n getClient().cancelLogin();\n }\n\n function handleRetry() {\n getClient().logout();\n if (styles.emailEnabled) {\n getClient().beginEmailLogin();\n }\n }\n\n function handleInteractiveAuthenticated() {\n const provider = interactiveAdapter?.type;\n setInteractiveAdapter(null);\n if (provider) {\n // Provider login (Privy) is done; run the normal flow so connect() + SEP-10\n // execute against the now-authenticated wallet.\n getClient().login({ provider } as PollarLoginOptions);\n }\n }\n\n return (\n <div className=\"pollar-overlay\" onClick={handleClose}>\n {configStatus !== 'ready' ? (\n <LoginModalStatus\n status={configStatus === 'error' ? 'error' : 'loading'}\n theme={theme}\n accentColor={accentColor}\n logoUrl={logoUrl ?? null}\n appName={config.application?.name ?? 'Pollar'}\n onRetry={retryConfig}\n onCancel={handleClose}\n />\n ) : interactiveAdapter ? (\n <PrivyLoginSubmodal\n adapter={interactiveAdapter}\n theme={theme}\n accentColor={accentColor}\n logoUrl={logoUrl ?? null}\n appName={config.application?.name ?? 'Pollar'}\n onBack={() => setInteractiveAdapter(null)}\n onCancel={handleClose}\n onAuthenticated={handleInteractiveAuthenticated}\n />\n ) : (\n <LoginModalTemplate\n theme={theme}\n accentColor={accentColor}\n logoUrl={logoUrl ?? null}\n emailEnabled={!!emailEnabled}\n embeddedWallets={!!embeddedWallets}\n smartWallet={smartWalletEnabled}\n providers={{\n google: !!providers?.google,\n discord: !!providers?.discord,\n x: !!providers?.x,\n github: !!providers?.github,\n apple: !!providers?.apple,\n }}\n walletAdapters={walletAdapters}\n appName={config.application?.name ?? 'Pollar'}\n email={email}\n onEmailChange={setEmail}\n onEmailSubmit={handleEmailSubmit}\n onSocialLogin={handleSocialLogin}\n onWalletConnect={handleWalletConnect}\n onLoginSmartWallet={handleLoginSmartWallet}\n onCreateSmartWallet={handleCreateSmartWallet}\n authState={authState}\n codeInputKey={codeInputKey}\n onCodeSubmit={handleVerifyCode}\n onBack={handleBack}\n onCancel={handleClose}\n onRetry={handleRetry}\n />\n )}\n </div>\n );\n}\n","'use client';\n\nimport type { RampQuote } from '@pollar/core';\n\ninterface RouteDisplayProps {\n quote: RampQuote;\n onSelect: (quote: RampQuote) => void;\n}\n\nconst RAIL_LABELS: Record<string, string> = {\n SPEI: 'SPEI (Mexico)',\n PIX: 'PIX (Brazil)',\n PSE: 'PSE (Colombia)',\n ACH: 'ACH (US)',\n};\n\nexport function RouteDisplay({ quote, onSelect }: RouteDisplayProps) {\n return (\n <div\n className=\"pollar-ramp-route-card\"\n data-recommended={quote.recommended}\n role=\"button\"\n tabIndex={0}\n onClick={() => onSelect(quote)}\n onKeyDown={(e) => e.key === 'Enter' && onSelect(quote)}\n >\n <div className=\"pollar-ramp-route-left\">\n <span className=\"pollar-ramp-route-provider\">{quote.provider}</span>\n <span className=\"pollar-ramp-route-meta\">\n {RAIL_LABELS[quote.rail] ?? quote.rail} · {quote.protocol} · {quote.estimatedTime}\n </span>\n </div>\n <div className=\"pollar-ramp-route-right\">\n <span className=\"pollar-ramp-route-fee\">{quote.fee}% fee</span>\n {quote.recommended && <span className=\"pollar-ramp-route-badge\">Best rate</span>}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport type { RampCountry, RampDirection, RampQuote, RampTxStatus } from '@pollar/core';\nimport type { CSSProperties } from 'react';\nimport { RouteDisplay } from './RouteDisplay';\nimport { CopyButton } from '../commons';\n\nexport type RampStep = 'input' | 'loading_quote' | 'select_route' | 'contact' | 'status' | 'error';\n\n// Basic client-side email check so an invalid address never round-trips to the\n// provider (which rejects it with a generic VALIDATION_ERROR).\nconst EMAIL_RE = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\n/** A collected field is complete when it's non-empty and (for email) well-formed. */\nfunction isFieldValid(spec: RampFieldSpec, raw: string | undefined): boolean {\n const value = (raw ?? '').trim();\n if (!value) return false;\n if (spec.type === 'email') return EMAIL_RE.test(value);\n return true;\n}\n\n/** A field a provider declares (via the quote) that the client must collect. */\nexport interface RampFieldSpec {\n key: string;\n label: string;\n type: 'text' | 'email' | 'tel' | 'select';\n bankType?: 'CLABE' | 'PIX' | 'PSE' | 'ACH' | 'BREB';\n /** For `type: 'select'` — dropdown choices (e.g. Stereum's Bolivian banks). */\n options?: { value: string; label: string }[];\n}\n\ninterface RampWidgetTemplateProps {\n theme: string;\n accentColor: string;\n step: RampStep;\n direction: RampDirection;\n amount: string;\n currency: string;\n country: string;\n requiredFields: RampFieldSpec[];\n fieldValues: Record<string, string>;\n countries: RampCountry[];\n countriesLoading: boolean;\n refreshing: boolean;\n quotes: RampQuote[];\n isLoading: boolean;\n // status step\n provider: string;\n txStatus: RampTxStatus | null;\n kycUrl: string | null;\n tosUrl: string | null;\n stellarTxHash: string | null;\n /** Stellar Expert URL for `stellarTxHash` (network-aware); null when unknown. */\n explorerUrl: string | null;\n depositInstructions: Record<string, unknown> | null;\n canComplete: boolean;\n completing: boolean;\n errorMsg: string | null;\n onDirectionChange: (d: RampDirection) => void;\n onAmountChange: (v: string) => void;\n onFieldChange: (key: string, value: string) => void;\n onCountryChange: (v: string) => void;\n onFindRoute: () => void;\n onSelectQuote: (q: RampQuote) => void;\n onContactContinue: () => void;\n onOpenKyc: () => void;\n onOpenTos: () => void;\n onCompleteWithdraw: () => void;\n onRetry: () => void;\n onRefresh: () => void;\n onClose: () => void;\n}\n\nconst LOADING_STEPS = ['Detecting your country…', 'Consulting providers…', 'Route found!'];\n\n/**\n * Flag emoji from a 2-letter ISO 3166-1 alpha-2 country code by mapping each\n * letter to its Regional Indicator Symbol code point (U+1F1E6 = 'A'). Returns an\n * empty string for anything that isn't a pair of ASCII letters.\n */\nfunction flagEmoji(code: string): string {\n const cc = code.trim().toUpperCase();\n if (!/^[A-Z]{2}$/.test(cc)) return '';\n const base = 0x1f1e6;\n return String.fromCodePoint(base + (cc.charCodeAt(0) - 65), base + (cc.charCodeAt(1) - 65));\n}\n\nconst STATUS_LABEL: Record<RampTxStatus, string> = {\n pending: 'Pending',\n processing: 'Processing',\n completed: 'Completed',\n failed: 'Failed',\n};\n\n// Human labels for the deposit-instruction fields REST providers (Bridge) return\n// (e.g. a Pix `br_code`, or bank details for ACH/SEPA). Unknown keys fall back to\n// the raw key so nothing is silently dropped.\nconst INSTRUCTION_LABELS: Record<string, string> = {\n br_code: 'Pix code',\n account_holder_name: 'Account holder',\n bank_name: 'Bank',\n bank_address: 'Bank address',\n bank_account_number: 'Account number',\n bank_routing_number: 'Routing number',\n iban: 'IBAN',\n bic: 'BIC',\n clabe: 'CLABE',\n amount: 'Amount',\n currency: 'Currency',\n payment_rails: 'Rails',\n};\n\ntype InstructionKind = 'text' | 'qr' | 'datetime';\ntype InstructionField = { key: string; label: string; value: string; kind: InstructionKind };\n\nfunction flattenInstructions(instr: Record<string, unknown>): InstructionField[] {\n const out: InstructionField[] = [];\n for (const [k, v] of Object.entries(instr)) {\n // A base64 QR image (e.g. Stereum's Bolivian bank QR) — render as an <img>,\n // not raw text.\n if (k === 'qrBase64') {\n if (typeof v === 'string' && v) out.push({ key: k, label: INSTRUCTION_LABELS[k] ?? 'Payment QR', value: v, kind: 'qr' });\n continue;\n }\n // Expiry timestamps come as epoch milliseconds — render as a local date/time.\n if ((k === 'expiresAt' || k === 'expires_at') && (typeof v === 'number' || typeof v === 'string')) {\n const ms = Number(v);\n if (Number.isFinite(ms) && ms > 0) {\n out.push({ key: k, label: INSTRUCTION_LABELS[k] ?? 'Expires', value: new Date(ms).toLocaleString(), kind: 'datetime' });\n }\n continue;\n }\n let value: string;\n if (typeof v === 'string' || typeof v === 'number') value = String(v);\n else if (Array.isArray(v)) value = v.filter((x) => typeof x === 'string' || typeof x === 'number').join(', ');\n else continue;\n if (!value) continue;\n out.push({ key: k, label: INSTRUCTION_LABELS[k] ?? k, value, kind: 'text' });\n }\n return out;\n}\n\nexport function RampWidgetTemplate({\n theme,\n accentColor,\n step,\n direction,\n amount,\n currency,\n country,\n requiredFields,\n fieldValues,\n countries,\n countriesLoading,\n refreshing,\n quotes,\n isLoading,\n provider,\n txStatus,\n kycUrl,\n tosUrl,\n stellarTxHash,\n explorerUrl,\n depositInstructions,\n canComplete,\n completing,\n errorMsg,\n onDirectionChange,\n onAmountChange,\n onFieldChange,\n onCountryChange,\n onFindRoute,\n onSelectQuote,\n onContactContinue,\n onOpenKyc,\n onOpenTos,\n onCompleteWithdraw,\n onRetry,\n onRefresh,\n onClose,\n}: RampWidgetTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n '--pollar-modal-padding': '2rem',\n '--pollar-modal-heading-size': '1.375rem',\n '--pollar-modal-subtitle-size': '0.9rem',\n } as CSSProperties;\n\n const stepTitle: Record<RampStep, string> = {\n input: direction === 'onramp' ? 'Buy crypto' : 'Sell crypto',\n loading_quote: 'Finding best route',\n select_route: 'Select provider',\n contact: 'Your details',\n status: direction === 'onramp' ? 'Complete your deposit' : 'Complete your withdrawal',\n error: 'Something went wrong',\n };\n\n const stepSubtitle: Record<RampStep, string> = {\n input: direction === 'onramp' ? 'Enter the amount you want to deposit' : 'Enter the amount you want to withdraw',\n loading_quote: 'Comparing providers in real time…',\n select_route: 'All prices include fees',\n contact: `${provider || 'This provider'} needs your name and email to verify you`,\n status: `Finish the flow at ${provider || 'the provider'} to continue`,\n error: 'Please try again',\n };\n\n return (\n <div className=\"pollar-modal-card pollar-ramp-modal\" style={cssVars} onClick={(e) => e.stopPropagation()}>\n <div className=\"pollar-modal-header\">\n <div className=\"pollar-ramp-header-text\">\n <h2 className=\"pollar-modal-title\">{stepTitle[step]}</h2>\n <p className=\"pollar-ramp-subtitle\">{stepSubtitle[step]}</p>\n </div>\n <div className=\"pollar-modal-header-actions\">\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onRefresh} disabled={refreshing} aria-label=\"Refresh\">\n <svg\n className={refreshing ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n {step === 'input' && (\n <>\n <div className=\"pollar-tabs\">\n <button\n type=\"button\"\n className=\"pollar-tab\"\n data-active={direction === 'onramp'}\n onClick={() => onDirectionChange('onramp')}\n >\n Buy\n </button>\n <button\n type=\"button\"\n className=\"pollar-tab\"\n data-active={direction === 'offramp'}\n onClick={() => onDirectionChange('offramp')}\n >\n Sell\n </button>\n </div>\n\n <div className=\"pollar-ramp-field\">\n <label className=\"pollar-ramp-label\">Country</label>\n {countriesLoading ? (\n <div className=\"pollar-ramp-input pollar-select-loading\">\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n <span>Loading countries…</span>\n </div>\n ) : countries.length === 0 ? (\n <div className=\"pollar-modal-error\">No ramp providers available on this network yet.</div>\n ) : (\n <select className=\"pollar-ramp-input\" value={country} onChange={(e) => onCountryChange(e.target.value)}>\n {countries.map((c) => (\n <option key={c.code} value={c.code}>\n {flagEmoji(c.code)} {c.code}\n {c.currency ? ` — ${c.currency}` : ''}\n </option>\n ))}\n </select>\n )}\n </div>\n\n <div className=\"pollar-ramp-field\">\n <label className=\"pollar-ramp-label\">Amount{currency ? ` (${currency})` : ''}</label>\n <input\n type=\"number\"\n className=\"pollar-ramp-input\"\n placeholder=\"0.00\"\n value={amount}\n min=\"0\"\n onChange={(e) => onAmountChange(e.target.value)}\n />\n </div>\n\n <div className=\"pollar-modal-actions\">\n <button type=\"button\" className=\"pollar-btn-secondary\" onClick={onClose}>\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"pollar-btn-primary\"\n disabled={!amount || isLoading || countriesLoading || countries.length === 0}\n onClick={onFindRoute}\n >\n Find best route\n </button>\n </div>\n </>\n )}\n\n {step === 'loading_quote' && (\n <div className=\"pollar-ramp-loading\">\n <div className=\"pollar-spinner pollar-ramp-loading-spinner\" />\n {LOADING_STEPS.map((text, i) => (\n <div key={i} className=\"pollar-ramp-loading-row\">\n <div className=\"pollar-ramp-loading-dot\" />\n <span>{text}</span>\n </div>\n ))}\n </div>\n )}\n\n {step === 'select_route' && (\n <>\n <div className=\"pollar-ramp-route-list\">\n {quotes.map((q, i) => (\n <RouteDisplay key={i} quote={q} onSelect={onSelectQuote} />\n ))}\n </div>\n <button type=\"button\" className=\"pollar-btn-secondary\" onClick={onClose}>\n Cancel\n </button>\n </>\n )}\n\n {step === 'contact' && (\n <>\n {requiredFields.map((f) => (\n <div key={f.key} className=\"pollar-ramp-field\">\n <label className=\"pollar-ramp-label\">{f.label}</label>\n {f.type === 'select' ? (\n <select\n className=\"pollar-ramp-input\"\n value={fieldValues[f.key] ?? ''}\n onChange={(e) => onFieldChange(f.key, e.target.value)}\n >\n <option value=\"\" disabled>\n Select…\n </option>\n {(f.options ?? []).map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n </select>\n ) : (\n <input\n type={f.type}\n className=\"pollar-ramp-input\"\n value={fieldValues[f.key] ?? ''}\n autoComplete={f.type === 'email' ? 'email' : 'off'}\n onChange={(e) => onFieldChange(f.key, e.target.value)}\n />\n )}\n {f.type === 'email' && (fieldValues[f.key] ?? '').trim() !== '' && !isFieldValid(f, fieldValues[f.key]) && (\n <span className=\"pollar-ramp-field-error\">Enter a valid email address.</span>\n )}\n </div>\n ))}\n\n <div className=\"pollar-modal-actions\">\n <button type=\"button\" className=\"pollar-btn-secondary\" onClick={onRetry}>\n Back\n </button>\n <button\n type=\"button\"\n className=\"pollar-btn-primary\"\n disabled={requiredFields.some((f) => !isFieldValid(f, fieldValues[f.key])) || isLoading}\n onClick={onContactContinue}\n >\n {isLoading ? (\n <>\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n Starting…\n </>\n ) : (\n 'Continue'\n )}\n </button>\n </div>\n </>\n )}\n\n {step === 'status' && (\n <div className=\"pollar-ramp-payment\">\n <div className=\"pollar-ramp-payment-field\">\n <span className=\"pollar-ramp-payment-label\">Provider</span>\n <div className=\"pollar-ramp-payment-value\">\n <code>{provider}</code>\n </div>\n </div>\n\n <div className=\"pollar-ramp-payment-field\">\n <span className=\"pollar-ramp-payment-label\">Status</span>\n <div className=\"pollar-ramp-payment-value\">\n <code style={{ color: txStatus === 'completed' ? 'var(--pollar-success-text)' : undefined }}>\n {txStatus ? STATUS_LABEL[txStatus] : 'Processing'}\n </code>\n {txStatus !== 'completed' && txStatus !== 'failed' && (\n <span className=\"pollar-spinner pollar-spinner-sm\" aria-label=\"Checking status\" />\n )}\n </div>\n </div>\n\n {stellarTxHash && (\n <div className=\"pollar-ramp-payment-field\">\n <span className=\"pollar-ramp-payment-label\">Stellar tx</span>\n <div className=\"pollar-ramp-payment-value\" style={{ display: 'flex', alignItems: 'center', gap: 6 }}>\n <code style={{ flex: 1, wordBreak: 'break-all' }}>\n {stellarTxHash.slice(0, 8)}…{stellarTxHash.slice(-8)}\n </code>\n <CopyButton value={stellarTxHash} label=\"Copy transaction hash\" />\n {explorerUrl && (\n <a\n href={explorerUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"pollar-copy-btn\"\n aria-label=\"View on Stellar Expert\"\n title=\"View on Stellar Expert\"\n >\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden>\n <path\n d=\"M6 3H3v8h8V8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8.5 2.5h3v3M11 3L6.5 7.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n )}\n </div>\n </div>\n )}\n\n {depositInstructions &&\n txStatus !== 'completed' &&\n flattenInstructions(depositInstructions).map(({ key, label, value, kind }) => (\n <div key={key} className=\"pollar-ramp-payment-field\">\n <span className=\"pollar-ramp-payment-label\">{label}</span>\n <div className=\"pollar-ramp-payment-value\">\n {kind === 'qr' ? (\n <img\n src={value.startsWith('data:') ? value : `data:image/png;base64,${value}`}\n alt={label}\n style={{ width: '100%', maxWidth: 220, height: 'auto', display: 'block', margin: '0 auto' }}\n />\n ) : kind === 'datetime' ? (\n <span>{value}</span>\n ) : (\n <span style={{ display: 'flex', alignItems: 'center', gap: 6 }}>\n <code style={{ flex: 1, wordBreak: 'break-all' }}>{value}</code>\n <CopyButton value={value} label={`Copy ${label}`} />\n </span>\n )}\n </div>\n </div>\n ))}\n\n {/* KYC / ToS onboarding steps at the provider. Hidden once deposit\n instructions exist — by then onboarding is done and the only\n remaining action is to pay using the instructions above. */}\n {tosUrl && !depositInstructions && txStatus !== 'completed' && (\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={onOpenTos}>\n Accept terms at {provider}\n </button>\n )}\n\n {kycUrl && !depositInstructions && txStatus !== 'completed' && (\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={onOpenKyc}>\n Continue at {provider}\n </button>\n )}\n\n {canComplete && (\n <button type=\"button\" className=\"pollar-btn-primary\" disabled={completing} onClick={onCompleteWithdraw}>\n {completing ? (\n <>\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n Submitting…\n </>\n ) : (\n \"I've completed KYC — withdraw\"\n )}\n </button>\n )}\n\n {errorMsg && (\n <p className=\"pollar-ramp-payment-note\" style={{ color: 'var(--pollar-error-text)' }}>\n {errorMsg}\n </p>\n )}\n\n <button type=\"button\" className=\"pollar-btn-secondary\" onClick={onClose}>\n {txStatus === 'completed' ? 'Done' : 'Close'}\n </button>\n </div>\n )}\n\n {step === 'error' && (\n <div className=\"pollar-ramp-payment\">\n <p className=\"pollar-ramp-payment-note\" style={{ color: 'var(--pollar-error-text)' }}>\n {errorMsg ?? 'Unexpected error.'}\n </p>\n <div className=\"pollar-modal-actions\">\n <button type=\"button\" className=\"pollar-btn-secondary\" onClick={onClose}>\n Close\n </button>\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={onRetry}>\n Try again\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport type { RampCountry, RampDirection, RampQuote, RampsOfframpBody, RampsOnrampBody, RampTxStatus } from '@pollar/core';\nimport { useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport type { RampFieldSpec, RampStep } from './RampWidgetTemplate';\nimport { RampWidgetTemplate } from './RampWidgetTemplate';\nimport '../shared.css';\nimport './RampWidget.css';\n\ninterface RampWidgetProps {\n onClose: () => void;\n}\n\nconst TERMINAL: RampTxStatus[] = ['completed', 'failed'];\n\n/** Fields the quote declares the client must collect (empty for SEP-24). */\nfunction requiredFieldsOf(quote: RampQuote): RampFieldSpec[] {\n return (quote as { requiredFields?: RampFieldSpec[] }).requiredFields ?? [];\n}\n\n// Common shape of the on/off-ramp, complete and signature responses.\ninterface RampResult {\n txId: string;\n provider: string;\n status: RampTxStatus;\n kycUrl?: string;\n // Bridge splits onboarding into two hosted steps: KYC (identity) and ToS\n // acceptance. Both must be completed before the customer activates.\n tosUrl?: string;\n stellarTxHash?: string;\n pendingSignature?: { unsignedXdr: string; action: 'sep10' | 'withdraw_payment' };\n // REST providers (Bridge) return deposit instructions as data (e.g. a Pix\n // `br_code` / bank details for on-ramp) instead of an interactive URL.\n depositInstructions?: Record<string, unknown>;\n}\n\nexport function RampWidget({ onClose }: RampWidgetProps) {\n const { getClient, signTx, wallet, styles, network } = usePollar();\n const walletAddress = wallet?.address ?? '';\n const client = getClient();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const [step, setStep] = useState<RampStep>('input');\n const [direction, setDirection] = useState<RampDirection>('onramp');\n const [amount, setAmount] = useState('');\n const [currency, setCurrency] = useState('');\n const [country, setCountry] = useState('');\n // Values for the fields a provider declares via the quote's `requiredFields`\n // (e.g. Bridge on-ramp: full name + email; off-ramp: + Pix key). Keyed by\n // field key; only collected when the selected route needs them.\n const [fieldValues, setFieldValues] = useState<Record<string, string>>({});\n const setFieldValue = (key: string, value: string) => setFieldValues((v) => ({ ...v, [key]: value }));\n const [countries, setCountries] = useState<RampCountry[]>([]);\n const [countriesLoading, setCountriesLoading] = useState(true);\n const [refreshing, setRefreshing] = useState(false);\n const [quotes, setQuotes] = useState<RampQuote[]>([]);\n const [selectedQuote, setSelectedQuote] = useState<RampQuote | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n // status step\n const [txId, setTxId] = useState<string | null>(null);\n const [provider, setProvider] = useState('');\n const [kycUrl, setKycUrl] = useState<string | null>(null);\n const [tosUrl, setTosUrl] = useState<string | null>(null);\n const [txStatus, setTxStatus] = useState<RampTxStatus | null>(null);\n const [stellarTxHash, setStellarTxHash] = useState<string | null>(null);\n const [depositInstructions, setDepositInstructions] = useState<Record<string, unknown> | null>(null);\n const [completing, setCompleting] = useState(false);\n const [errorMsg, setErrorMsg] = useState<string | null>(null);\n\n const directionRef = useRef(direction);\n directionRef.current = direction;\n\n // Poll the anchor transaction status while on the status step until terminal.\n useEffect(() => {\n if (step !== 'status' || !txId) return;\n if (txStatus && TERMINAL.includes(txStatus)) return;\n let active = true;\n const id = setInterval(async () => {\n try {\n const tx = await client.getRampTransaction(txId);\n if (!active) return;\n setTxStatus(tx.status);\n if (tx.stellarTxHash) setStellarTxHash(tx.stellarTxHash);\n if (tx.kycUrl) setKycUrl(tx.kycUrl);\n // depositInstructions is returned by REST providers (Bridge) — e.g. a Pix\n // `br_code` / bank details for on-ramp.\n if (tx.depositInstructions) setDepositInstructions(tx.depositInstructions);\n if (TERMINAL.includes(tx.status)) clearInterval(id);\n } catch {\n /* transient — keep polling */\n }\n }, 5000);\n return () => {\n active = false;\n clearInterval(id);\n };\n }, [step, txId, txStatus, client]);\n\n /**\n * Fetch the ramp countries supported on the app's network. When `resetSelection`\n * is set (initial load) — or the current selection is no longer offered — pick\n * the first country and adopt its primary currency.\n */\n async function loadCountries(resetSelection: boolean) {\n setCountriesLoading(true);\n try {\n const { countries: list } = await client.getRampCountries();\n setCountries(list);\n const first = list[0];\n const stillValid = list.some((c) => c.code === country);\n if (first && (resetSelection || !stillValid)) {\n setCountry(first.code);\n if (first.currency) setCurrency(first.currency);\n }\n } catch {\n setCountries([]);\n } finally {\n setCountriesLoading(false);\n }\n }\n\n // Load the supported countries when the widget opens.\n useEffect(() => {\n loadCountries(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function handleCountryChange(code: string) {\n setCountry(code);\n const match = countries.find((c) => c.code === code);\n if (match?.currency) setCurrency(match.currency);\n }\n\n // Refresh the data backing the current step: always the country list, plus the\n // quotes (select_route) or the anchor transaction (status).\n async function handleRefresh() {\n if (refreshing) return;\n setRefreshing(true);\n try {\n await loadCountries(false);\n if (step === 'select_route') {\n const result = await client.getRampsQuote({ country, amount: Number(amount), currency, direction });\n setQuotes(result.quotes ?? []);\n } else if (step === 'status' && txId) {\n const tx = await client.getRampTransaction(txId);\n setTxStatus(tx.status);\n if (tx.stellarTxHash) setStellarTxHash(tx.stellarTxHash);\n if (tx.kycUrl) setKycUrl(tx.kycUrl);\n if (tx.depositInstructions) setDepositInstructions(tx.depositInstructions);\n }\n } catch {\n /* transient — leave the current data in place */\n } finally {\n setRefreshing(false);\n }\n }\n\n function resetToInput() {\n setStep('input');\n setQuotes([]);\n setSelectedQuote(null);\n // Clear the collected provider fields (name/email/etc.) so a retry re-shows\n // the 'contact' step. Otherwise a stale (possibly invalid) value keeps the\n // field non-empty, `handleSelectQuote` treats it as complete, skips the step\n // and replays the same failing request.\n setFieldValues({});\n setTxId(null);\n setProvider('');\n setKycUrl(null);\n setTosUrl(null);\n setTxStatus(null);\n setStellarTxHash(null);\n setDepositInstructions(null);\n setErrorMsg(null);\n }\n\n /**\n * EXTERNAL wallets (Freighter/Albedo): the backend returns an unsigned XDR the\n * user must sign locally, then we resume the flow. `sep10` yields the anchor\n * session (kycUrl); `withdraw_payment` broadcasts the on-chain withdrawal.\n */\n async function resumeWithSignature(id: string, ps: NonNullable<RampResult['pendingSignature']>) {\n const outcome = await signTx(ps.unsignedXdr);\n if (outcome.status !== 'signed') {\n setErrorMsg(outcome.message ?? outcome.details ?? 'Signing was cancelled.');\n setStep('error');\n return;\n }\n const result = (await client.submitRampSignature(id, {\n signedXdr: outcome.signedXdr,\n action: ps.action,\n })) as RampResult;\n await applyResult(result);\n }\n\n async function applyResult(result: RampResult) {\n setTxId(result.txId);\n setProvider(result.provider);\n if (result.pendingSignature) {\n await resumeWithSignature(result.txId, result.pendingSignature);\n return;\n }\n setKycUrl(result.kycUrl ?? null);\n setTosUrl(result.tosUrl ?? null);\n setTxStatus(result.status);\n setStellarTxHash(result.stellarTxHash ?? null);\n setDepositInstructions(result.depositInstructions ?? null);\n setStep('status');\n }\n\n async function handleFindRoute() {\n setStep('loading_quote');\n setIsLoading(true);\n setErrorMsg(null);\n try {\n const result = await client.getRampsQuote({ country, amount: Number(amount), currency, direction });\n const list = result.quotes ?? [];\n if (list.length === 0) {\n setErrorMsg(`No ramp providers available for ${country} yet.`);\n setStep('error');\n return;\n }\n setQuotes(list);\n setStep('select_route');\n } catch (e) {\n setErrorMsg(e instanceof Error ? e.message : 'Failed to fetch quotes.');\n setStep('error');\n } finally {\n setIsLoading(false);\n }\n }\n\n // Each quote declares the fields it needs (`requiredFields`). If any are unset,\n // collect them in the 'contact' step first; otherwise start immediately.\n function handleSelectQuote(quote: RampQuote) {\n setSelectedQuote(quote);\n setErrorMsg(null);\n const fields = requiredFieldsOf(quote);\n const missing = fields.some((f) => !(fieldValues[f.key] ?? '').trim());\n if (fields.length > 0 && missing) {\n setStep('contact');\n return;\n }\n void startRamp(quote);\n }\n\n function handleContactContinue() {\n if (selectedQuote) void startRamp(selectedQuote);\n }\n\n async function startRamp(quote: RampQuote) {\n setIsLoading(true);\n setErrorMsg(null);\n try {\n const base: Record<string, unknown> = { quoteId: quote.quoteId, amount: Number(amount), currency, country };\n if (walletAddress) base.walletAddress = walletAddress;\n // Map each declared field to the request body: a field with `bankType`\n // becomes `bankDetails`; the standard body fields map by name; any other\n // provider-specific field (e.g. Stereum's bankCode / account holder) goes\n // into `fields`, which the backend reads per provider.\n const STANDARD_BODY_KEYS = new Set(['email', 'fullName', 'taxId', 'qrCode']);\n const extraFields: Record<string, string> = {};\n for (const f of requiredFieldsOf(quote)) {\n const val = (fieldValues[f.key] ?? '').trim();\n if (!val) continue;\n if (f.bankType) base.bankDetails = { type: f.bankType, value: val };\n else if (STANDARD_BODY_KEYS.has(f.key)) base[f.key] = val;\n else extraFields[f.key] = val;\n }\n if (Object.keys(extraFields).length > 0) base.fields = extraFields;\n const result = (\n direction === 'onramp'\n ? await client.createOnRamp(base as RampsOnrampBody)\n : await client.createOffRamp(base as RampsOfframpBody)\n ) as RampResult;\n await applyResult(result);\n } catch (e) {\n setErrorMsg(e instanceof Error ? e.message : 'Failed to start the ramp.');\n setStep('error');\n } finally {\n setIsLoading(false);\n }\n }\n\n function handleOpenKyc() {\n if (kycUrl) window.open(kycUrl, '_blank', 'noopener,noreferrer');\n }\n\n function handleOpenTos() {\n if (tosUrl) window.open(tosUrl, '_blank', 'noopener,noreferrer');\n }\n\n async function handleCompleteWithdraw() {\n if (!txId) return;\n setCompleting(true);\n setErrorMsg(null);\n try {\n const result = (await client.completeWithdraw(txId)) as RampResult;\n if (result.pendingSignature) {\n await resumeWithSignature(txId, result.pendingSignature);\n return;\n }\n setTxStatus(result.status);\n setStellarTxHash(result.stellarTxHash ?? null);\n } catch (e) {\n const msg = e instanceof Error ? e.message : '';\n setErrorMsg(\n msg.includes('KYC') ? 'Finish KYC at the provider first, then try again.' : msg || 'Failed to complete the withdrawal.',\n );\n } finally {\n setCompleting(false);\n }\n }\n\n const canComplete = direction === 'offramp' && step === 'status' && txStatus !== 'completed' && !stellarTxHash;\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <RampWidgetTemplate\n theme={theme}\n accentColor={accentColor}\n step={step}\n direction={direction}\n amount={amount}\n currency={currency}\n country={country}\n requiredFields={selectedQuote ? requiredFieldsOf(selectedQuote) : []}\n fieldValues={fieldValues}\n countries={countries}\n countriesLoading={countriesLoading}\n refreshing={refreshing}\n quotes={quotes}\n isLoading={isLoading}\n provider={provider}\n txStatus={txStatus}\n kycUrl={kycUrl}\n tosUrl={tosUrl}\n stellarTxHash={stellarTxHash}\n explorerUrl={\n stellarTxHash\n ? `https://stellar.expert/explorer/${network === 'mainnet' ? 'public' : 'testnet'}/tx/${stellarTxHash}`\n : null\n }\n depositInstructions={depositInstructions}\n canComplete={canComplete}\n completing={completing}\n errorMsg={errorMsg}\n onDirectionChange={setDirection}\n onAmountChange={setAmount}\n onFieldChange={setFieldValue}\n onCountryChange={handleCountryChange}\n onFindRoute={handleFindRoute}\n onSelectQuote={handleSelectQuote}\n onContactContinue={handleContactContinue}\n onOpenKyc={handleOpenKyc}\n onOpenTos={handleOpenTos}\n onCompleteWithdraw={handleCompleteWithdraw}\n onRetry={resetToInput}\n onRefresh={handleRefresh}\n onClose={onClose}\n />\n </div>\n );\n}\n","/**\n * QRCode component — vendored from react-qr-code (MIT License)\n * Original: https://github.com/rosskhanas/react-qr-code\n * Adapted: removed prop-types dependency, added TypeScript types.\n *\n * MIT License\n * Copyright (c) 2018 Ross Khanas\n */\n\n// @ts-expect-error — qr.js ships CJS without type declarations; bundled via noExternal\nimport ErrorCorrectLevel from 'qr.js/lib/ErrorCorrectLevel';\n// @ts-expect-error — same as above\nimport QRCodeImpl from 'qr.js/lib/QRCode';\nimport { forwardRef, type SVGProps } from 'react';\n\n// ─── Internal SVG renderer ────────────────────────────────────────────────────\n\ninterface QRCodeSvgProps extends SVGProps<SVGSVGElement> {\n bgColor: string;\n bgD: string;\n fgColor: string;\n fgD: string;\n size: number;\n title?: string;\n viewBoxSize: number;\n xmlns?: string | undefined;\n}\n\nconst QRCodeSvg = forwardRef<SVGSVGElement, QRCodeSvgProps>(function QRCodeSvg(\n { bgColor, bgD, fgD, fgColor, size, title, viewBoxSize, xmlns = 'http://www.w3.org/2000/svg', ...props },\n ref,\n) {\n return (\n <svg {...props} height={size} ref={ref} viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`} width={size} xmlns={xmlns}>\n {title ? <title>{title}</title> : null}\n <path d={bgD} fill={bgColor} />\n <path d={fgD} fill={fgColor} />\n </svg>\n );\n});\n\nQRCodeSvg.displayName = 'QRCodeSvg';\n\n// ─── Public component ─────────────────────────────────────────────────────────\n\nexport interface QRCodeProps extends SVGProps<SVGSVGElement> {\n value: string;\n size?: number;\n bgColor?: string;\n fgColor?: string;\n level?: 'L' | 'M' | 'Q' | 'H';\n title?: string;\n}\n\nfunction bytesToBinaryString(bytes: number[]): string {\n return bytes.map((b) => String.fromCharCode(b & 0xff)).join('');\n}\n\nfunction encodeStringToUtf8Bytes(input: string): number[] {\n return Array.from(new TextEncoder().encode(input));\n}\n\nexport const QRCode = forwardRef<SVGSVGElement, QRCodeProps>(function QRCode(\n { bgColor = '#FFFFFF', fgColor = '#000000', level = 'L', size = 256, value, ...props },\n ref,\n) {\n const qrcode = new QRCodeImpl(-1, ErrorCorrectLevel[level]);\n const utf8Bytes = encodeStringToUtf8Bytes(value);\n const binaryString = bytesToBinaryString(utf8Bytes);\n qrcode.addData(binaryString, 'Byte');\n qrcode.make();\n\n const cells: boolean[][] = qrcode.modules;\n\n return (\n <QRCodeSvg\n {...props}\n bgColor={bgColor}\n bgD={cells\n .map((row, rowIndex) =>\n row.map((cell, cellIndex) => (!cell ? `M ${cellIndex} ${rowIndex} l 1 0 0 1 -1 0 Z` : '')).join(' '),\n )\n .join(' ')}\n fgColor={fgColor}\n fgD={cells\n .map((row, rowIndex) =>\n row.map((cell, cellIndex) => (cell ? `M ${cellIndex} ${rowIndex} l 1 0 0 1 -1 0 Z` : '')).join(' '),\n )\n .join(' ')}\n ref={ref}\n size={size}\n viewBoxSize={cells.length}\n />\n );\n});\n","'use client';\n\nimport { WalletChain } from '@pollar/core';\nimport { type CSSProperties } from 'react';\nimport { QRCode } from '../../lib/qr-code';\nimport { ChainSelect } from '../ChainSelect';\nimport { PollarModalFooter } from '../commons';\n\n/** Network name as it reads in a sentence (\"Share your Stellar address\"). */\nconst CHAIN_NAME: Record<string, string> = {\n STELLAR: 'Stellar',\n POLYGON: 'Polygon',\n SOLANA: 'Solana',\n};\n\nexport interface ReceiveModalTemplateProps {\n theme: string;\n accentColor: string;\n /** Address of the wallet on {@link selectedChain}. */\n walletAddress: string;\n /** Networks the user holds a wallet on; the first one is the default. */\n chains: WalletChain[];\n selectedChain: WalletChain | null;\n onSelectChain: (chain: WalletChain) => void;\n copied: boolean;\n onCopy: () => void;\n onClose: () => void;\n}\n\nexport function ReceiveModalTemplate({\n theme,\n accentColor,\n walletAddress,\n chains,\n selectedChain,\n onSelectChain,\n copied,\n onCopy,\n onClose,\n}: ReceiveModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const chainName = selectedChain ? (CHAIN_NAME[selectedChain] ?? selectedChain) : 'wallet';\n\n return (\n <div\n className=\"pollar-modal-card pollar-receive-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Receive</h2>\n <div className=\"pollar-modal-header-actions\">\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <ChainSelect value={selectedChain} options={chains} onChange={onSelectChain} />\n\n {/* QR code */}\n {walletAddress ? (\n <>\n <div className=\"pollar-receive-qr\">\n <QRCode value={walletAddress} size={180} fgColor={isDark ? '#ffffff' : '#111827'} bgColor=\"transparent\" />\n </div>\n\n <p className=\"pollar-receive-instructions\">\n Share your {chainName} address to receive any asset. Only send {chainName} assets to this address. Funds sent from\n another network are lost.\n </p>\n\n {/* Address + copy */}\n <div className=\"pollar-receive-address-row\">\n <span className=\"pollar-receive-address\">{walletAddress}</span>\n <button type=\"button\" className=\"pollar-receive-copy-btn\" onClick={onCopy} aria-label=\"Copy address\">\n {copied ? (\n <>\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden>\n <circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"currentColor\" />\n <path\n d=\"M3.5 7l2.5 2.5 4.5-5\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n Copied!\n </>\n ) : (\n <>\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <rect x=\"4\" y=\"4\" width=\"8\" height=\"8\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M3 9H2a1 1 0 01-1-1V2a1 1 0 011-1h6a1 1 0 011 1v1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n Copy address\n </>\n )}\n </button>\n </div>\n </>\n ) : (\n <div className=\"pollar-modal-empty\">No wallet connected.</div>\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { WalletChain } from '@pollar/core';\nimport { useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport { useChains } from '../../useChains';\nimport { addressForChain } from '../ChainSelect';\nimport '../shared.css';\nimport './ReceiveModal.css';\nimport { ReceiveModalTemplate } from './ReceiveModalTemplate';\n\ninterface ReceiveModalProps {\n onClose: () => void;\n}\n\nexport function ReceiveModal({ onClose }: ReceiveModalProps) {\n const { wallets, styles } = usePollar();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n const [copied, setCopied] = useState(false);\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const { chains } = useChains();\n const [selectedChain, setSelectedChain] = useState<WalletChain | null>(null);\n // Default to the app's first configured network. Runs as an effect because\n // `wallets` is empty on the first render of a cold-start session.\n useEffect(() => {\n if (selectedChain === null && chains.length > 0) setSelectedChain(chains[0]!);\n }, [chains, selectedChain]);\n\n const walletAddress = addressForChain(wallets, selectedChain);\n\n useEffect(\n () => () => {\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n function handleCopy() {\n if (!walletAddress) return;\n navigator.clipboard.writeText(walletAddress).then(() => {\n setCopied(true);\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n copyTimerRef.current = null;\n setCopied(false);\n }, 2000);\n });\n }\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <ReceiveModalTemplate\n theme={theme}\n accentColor={accentColor}\n walletAddress={walletAddress}\n chains={chains}\n selectedChain={selectedChain}\n // The tick belongs to the address that was copied, so switching\n // networks clears it rather than vouching for the new address.\n onSelectChain={(chain) => {\n setCopied(false);\n setSelectedChain(chain);\n }}\n copied={copied}\n onCopy={handleCopy}\n onClose={onClose}\n />\n </div>\n );\n}\n","'use client';\n\n// ─── Shared asset picker ──────────────────────────────────────────────────────\n// One asset <select> used by both the Send and Swap modals: groups options into\n// \"App assets\" (enabled by the app) and \"Other assets\" (everything else, incl.\n// native XLM), shows a \"— X available\" suffix, and renders a skeleton shimmer\n// while loading. The parent auto-selects the first option, so there is no\n// \"Select asset\" placeholder in the normal flow.\n// ─────────────────────────────────────────────────────────────────────────────\n\nimport type { ReactNode } from 'react';\nimport './send-modal/SendModal.css';\nimport './shared.css';\n\n/** A selectable asset, normalized across balance / enabled / catalog records. */\nexport interface AssetSelectOption {\n /** Stable unique key: `code:issuer` or `code:native`. */\n key: string;\n code: string;\n /** Spendable amount shown as \"— X available\"; omit to hide the suffix. */\n available?: string | undefined;\n /** App-enabled asset? Drives the App / Other grouping. */\n enabledInApp?: boolean | undefined;\n}\n\ninterface AssetSelectProps {\n label: string;\n value: string;\n options: AssetSelectOption[];\n onChange: (key: string) => void;\n /** Show a loading indicator instead of the select. */\n loading?: boolean;\n /** When set, `loading` renders a centered spinner + this label inside a\n * select-shaped box (like the ramp widget) instead of the skeleton shimmer. */\n loadingLabel?: string;\n disabled?: boolean;\n appGroupLabel?: string;\n otherGroupLabel?: string;\n /** Extra content rendered inside the field, below the select (e.g. a\n * \"+ Add a token\" toggle). Hidden while loading. */\n children?: ReactNode;\n}\n\nfunction formatAmount(value: string): string {\n const n = parseFloat(value);\n return isNaN(n) ? value : n.toLocaleString(undefined, { maximumFractionDigits: 7 });\n}\n\nconst optionLabel = (o: AssetSelectOption): string =>\n o.available !== undefined ? `${o.code} — ${formatAmount(o.available)} available` : o.code;\n\nexport function AssetSelect({\n label,\n value,\n options,\n onChange,\n loading = false,\n loadingLabel,\n disabled = false,\n appGroupLabel = 'App assets',\n otherGroupLabel = 'Other assets',\n children,\n}: AssetSelectProps) {\n const appAssets = options.filter((o) => o.enabledInApp);\n const otherAssets = options.filter((o) => !o.enabledInApp);\n\n return (\n <div className=\"pollar-send-field\">\n <label className=\"pollar-send-label\">{label}</label>\n {loading ? (\n loadingLabel ? (\n <div className=\"pollar-input pollar-select-loading\">\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n <span>{loadingLabel}</span>\n </div>\n ) : (\n <div className=\"pollar-send-skeleton\" />\n )\n ) : (\n <select\n className=\"pollar-input pollar-send-select\"\n value={value}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value)}\n >\n {/* Only present before the parent auto-selects (or when there are no\n options); hidden so it never shows in the open dropdown. */}\n {value === '' && <option value=\"\" disabled hidden />}\n {appAssets.length > 0 && (\n <optgroup label={appGroupLabel}>\n {appAssets.map((o) => (\n <option key={o.key} value={o.key}>\n {optionLabel(o)}\n </option>\n ))}\n </optgroup>\n )}\n {otherAssets.length > 0 && (\n <optgroup label={otherGroupLabel}>\n {otherAssets.map((o) => (\n <option key={o.key} value={o.key}>\n {optionLabel(o)}\n </option>\n ))}\n </optgroup>\n )}\n </select>\n )}\n {!loading && children}\n </div>\n );\n}\n","'use client';\n\nimport { TransactionState, WalletId, WalletType } from '@pollar/core';\nimport { LOGO_ALBEDO, LOGO_FREIGHTER, LOGO_POLLAR } from '../../constants';\nimport { ModalStatusBanner } from '../commons';\n\nconst STATUS_MESSAGES: Record<TransactionState['step'], string> = {\n idle: '',\n building: 'Building transaction…',\n built: 'Ready to sign and send',\n signing: 'Signing transaction…',\n signed: 'Signed — ready to submit',\n submitting: 'Submitting transaction…',\n submitted: 'Submitted — waiting for confirmation…',\n 'signing-submitting': 'Signing and submitting transaction…',\n 'building-signing-submitting': 'Processing transaction…',\n success: 'Transaction sent successfully',\n error: 'Transaction failed',\n};\n\n/** Step values that represent in-flight work (spinner / non-cancellable UI). */\nconst IN_FLIGHT_STEPS = new Set<TransactionState['step']>([\n 'building',\n 'signing',\n 'submitting',\n 'submitted',\n 'signing-submitting',\n 'building-signing-submitting',\n]);\n\n/** Step values that should show the transaction details panel. */\nconst SHOW_DETAILS_STEPS = new Set<TransactionState['step']>([\n 'built',\n 'signing',\n 'signed',\n 'submitting',\n 'submitted',\n 'signing-submitting',\n 'success',\n]);\n\nexport interface TxStatusViewProps {\n transaction: TransactionState;\n showXdr: boolean;\n copied: boolean;\n explorerUrl: string | null;\n walletType?: WalletId | null | undefined;\n onSignAndSend: () => void;\n onToggleXdr: () => void;\n onCopyHash: () => void;\n onRetry?: (() => void) | undefined;\n onDone: () => void;\n}\n\nexport function TxStatusView({\n transaction,\n showXdr,\n copied,\n explorerUrl,\n walletType,\n onSignAndSend,\n onToggleXdr,\n onCopyHash,\n onRetry,\n onDone,\n}: TxStatusViewProps) {\n const buildData = 'buildData' in transaction ? transaction.buildData : null;\n const hash = transaction.step === 'success' ? transaction.hash : null;\n const errorDetails = transaction.step === 'error' ? (transaction.details ?? null) : null;\n\n const isBuilt = transaction.step === 'built';\n const isInFlight = IN_FLIGHT_STEPS.has(transaction.step);\n const isSuccess = transaction.step === 'success';\n const isError = transaction.step === 'error';\n const showDetails = buildData !== null && SHOW_DETAILS_STEPS.has(transaction.step);\n\n const walletImg =\n walletType === WalletType.FREIGHTER ? LOGO_FREIGHTER : walletType === WalletType.ALBEDO ? LOGO_ALBEDO : LOGO_POLLAR;\n\n const walletAlt = walletType === WalletType.FREIGHTER ? 'Freighter' : walletType === WalletType.ALBEDO ? 'Albedo' : 'Pollar';\n\n return (\n <>\n {showDetails && buildData && (\n <>\n <div className=\"pollar-tx-summary\">\n <p className=\"pollar-tx-summary-title\">Details</p>\n <ul className=\"pollar-tx-summary-lines\">\n {buildData.summary.lines.map((line, i) => (\n <li key={i} className=\"pollar-tx-summary-line\">\n {line}\n </li>\n ))}\n </ul>\n </div>\n <div className=\"pollar-tx-meta\">\n <div className=\"pollar-tx-meta-item\">\n <span className=\"pollar-tx-meta-label\">Network</span>\n <span className=\"pollar-tx-meta-value\">{buildData.summary.network}</span>\n </div>\n <div className=\"pollar-tx-meta-item\">\n <span className=\"pollar-tx-meta-label\">Fee</span>\n <span className=\"pollar-tx-meta-value\">{buildData.summary.fee}</span>\n </div>\n </div>\n <div className=\"pollar-tx-xdr\">\n <button className=\"pollar-tx-xdr-toggle\" onClick={onToggleXdr}>\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n aria-hidden\n style={{ transform: showXdr ? 'rotate(90deg)' : 'rotate(0deg)', transition: 'transform 150ms' }}\n >\n <path d=\"M4 2l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n Raw transaction (XDR)\n </button>\n {showXdr && <pre className=\"pollar-tx-xdr-content\">{buildData.unsignedXdr}</pre>}\n </div>\n </>\n )}\n\n {isError && errorDetails && (\n <div className=\"pollar-tx-error-details\">\n <p className=\"pollar-tx-error-details-label\">Error details</p>\n <pre className=\"pollar-tx-error-details-content\">{errorDetails}</pre>\n </div>\n )}\n\n {isBuilt && (\n <button className=\"pollar-btn-primary pollar-tx-sign-btn\" onClick={onSignAndSend}>\n Sign & Send\n </button>\n )}\n\n {(isInFlight || isSuccess || isError) && (\n <div className=\"pollar-tx-wallet-spinner\">\n <div className=\"pollar-tx-spinner-ring\">\n <svg\n viewBox=\"0 0 88 88\"\n width=\"88\"\n height=\"88\"\n className={`pollar-tx-spinner-svg${isInFlight ? ' pollar-tx-spinner-rotating' : ''}`}\n aria-hidden\n >\n <circle cx=\"44\" cy=\"44\" r=\"36\" fill=\"none\" stroke=\"var(--pollar-border)\" strokeWidth=\"3\" />\n <circle\n cx=\"44\"\n cy=\"44\"\n r=\"36\"\n fill=\"none\"\n stroke={\n isSuccess ? 'var(--pollar-success-text)' : isError ? 'var(--pollar-error-text)' : 'var(--pollar-accent)'\n }\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeDasharray={isInFlight ? '169.6 56.6' : '999 0'}\n transform=\"rotate(-90 44 44)\"\n style={{ transition: isInFlight ? 'none' : 'stroke 400ms, stroke-dasharray 400ms' }}\n />\n </svg>\n <div className=\"pollar-tx-wallet-icon\">\n <img src={walletImg} alt={walletAlt} className=\"pollar-tx-wallet-img\" />\n </div>\n </div>\n\n {isInFlight && (\n <p className=\"pollar-tx-spinner-label\">\n {walletType === WalletType.FREIGHTER\n ? 'Waiting for Freighter…'\n : walletType === WalletType.ALBEDO\n ? 'Waiting for Albedo…'\n : 'Signing and sending…'}\n </p>\n )}\n\n {isError && onRetry && 'buildData' in transaction && transaction.buildData && (\n <button className=\"pollar-btn-secondary pollar-tx-retry-btn\" onClick={onRetry}>\n Try again\n </button>\n )}\n </div>\n )}\n\n {isSuccess && hash && (\n <div className=\"pollar-tx-result\">\n <span className=\"pollar-tx-result-label\">Transaction hash</span>\n <span className=\"pollar-tx-result-hash\">{hash}</span>\n <div className=\"pollar-tx-result-actions\">\n <button className=\"pollar-tx-result-btn\" onClick={onCopyHash}>\n {copied ? (\n <>\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden>\n <circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"currentColor\" />\n <path\n d=\"M3.5 7l2.5 2.5 4.5-5\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n Copied!\n </>\n ) : (\n <>\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <rect x=\"4\" y=\"4\" width=\"8\" height=\"8\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M3 9H2a1 1 0 01-1-1V2a1 1 0 011-1h6a1 1 0 011 1v1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n Copy hash\n </>\n )}\n </button>\n {explorerUrl && (\n <a className=\"pollar-tx-result-btn\" href={explorerUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <path\n d=\"M5 2H2a1 1 0 00-1 1v8a1 1 0 001 1h8a1 1 0 001-1V8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M8 1h4m0 0v4m0-4L6 7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n View on Explorer\n </a>\n )}\n </div>\n </div>\n )}\n\n {isSuccess && (\n <button className=\"pollar-btn-primary pollar-tx-sign-btn\" onClick={onDone}>\n Done\n </button>\n )}\n\n <ModalStatusBanner\n message={STATUS_MESSAGES[transaction.step]}\n status={isError ? 'ERROR' : isInFlight ? 'LOADING' : isSuccess ? 'SUCCESS' : 'NONE'}\n />\n </>\n );\n}\n","'use client';\n\nimport { TransactionState, WalletBalanceRecord, WalletChain, WalletId } from '@pollar/core';\nimport { type CSSProperties } from 'react';\nimport { AssetSelect } from '../AssetSelect';\nimport { ChainSelect } from '../ChainSelect';\nimport { CopyButton, cropAddress, PollarModalFooter } from '../commons';\nimport { TxStatusView } from '../transaction-modal/TxStatusView';\n\n// A null balance means the chain could not be read; it shows as a dash rather\n// than as 0, so an unreadable wallet never looks empty.\nfunction formatBalance(balance: string | null): string {\n if (balance === null) return '—';\n const n = parseFloat(balance);\n return isNaN(n) ? balance : n.toLocaleString(undefined, { maximumFractionDigits: 7 });\n}\n\nfunction assetKey(record: WalletBalanceRecord): string {\n return `${record.code}:${record.issuer ?? 'native'}`;\n}\n\nexport interface SendModalTemplateProps {\n theme: string;\n accentColor: string;\n step: 'form' | 'tx';\n txTitle: string;\n assets: WalletBalanceRecord[];\n selectedAsset: WalletBalanceRecord | null;\n /** Networks the user holds a wallet on; the first one is the default. */\n chains: WalletChain[];\n selectedChain: WalletChain | null;\n /** Address of the wallet on {@link selectedChain}, shown under the picker. */\n walletAddress: string;\n /** Can a payment be built on {@link selectedChain}? Stellar and Solana only. */\n canSendOnChain: boolean;\n onSelectChain: (chain: WalletChain) => void;\n amount: string;\n destination: string;\n formError: string;\n isLoadingBalance: boolean;\n transaction: TransactionState;\n showXdr: boolean;\n copied: boolean;\n explorerUrl: string | null;\n walletType?: WalletId | null | undefined;\n showBack: boolean;\n isInProgress: boolean;\n onClose: () => void;\n onBack: () => void;\n onRefresh: () => void;\n onSelectAsset: (asset: WalletBalanceRecord) => void;\n onAmountChange: (value: string) => void;\n onDestinationChange: (value: string) => void;\n onSubmit: () => void;\n onSignAndSend: () => void;\n onToggleXdr: () => void;\n onCopyHash: () => void;\n onRetry: () => void;\n onDone: () => void;\n}\n\nexport function SendModalTemplate({\n theme,\n accentColor,\n step,\n txTitle,\n assets,\n selectedAsset,\n chains,\n selectedChain,\n walletAddress,\n canSendOnChain,\n onSelectChain,\n amount,\n destination,\n formError,\n isLoadingBalance,\n transaction,\n showXdr,\n copied,\n explorerUrl,\n walletType,\n showBack,\n isInProgress,\n onClose,\n onBack,\n onRefresh,\n onSelectAsset,\n onAmountChange,\n onDestinationChange,\n onSubmit,\n onSignAndSend,\n onToggleXdr,\n onCopyHash,\n onRetry,\n onDone,\n}: SendModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const selectedKey = selectedAsset ? assetKey(selectedAsset) : '';\n const canSubmit = canSendOnChain && !!selectedAsset && !!amount && !!destination.trim() && !isLoadingBalance;\n\n const title = step === 'form' ? 'Send' : txTitle;\n\n return (\n <div\n className=\"pollar-modal-card pollar-send-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n <div className=\"pollar-modal-header\">\n <div className=\"pollar-send-header-left\">\n {showBack && (\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onBack} aria-label=\"Back\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M10 3L5 8l5 5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n )}\n <h2 className=\"pollar-modal-title\">{title}</h2>\n </div>\n {!isInProgress && (\n <div className=\"pollar-modal-header-actions\">\n {step === 'form' && (\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoadingBalance}\n aria-label=\"Refresh\"\n title=\"Refresh balances\"\n >\n <svg\n className={isLoadingBalance ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n\n {/* Form step */}\n {step === 'form' && (\n <>\n {/* Network selector — drives the address and the asset list below */}\n <ChainSelect value={selectedChain} options={chains} onChange={onSelectChain} disabled={isLoadingBalance} />\n\n {walletAddress && (\n <div className=\"pollar-address-row\">\n <span className=\"pollar-address\">{cropAddress(walletAddress)}</span>\n <CopyButton value={walletAddress} label=\"Copy wallet address\" />\n </div>\n )}\n\n {!canSendOnChain && <div className=\"pollar-modal-empty\">Sending is not available on this network yet.</div>}\n\n {/* Asset selector */}\n <AssetSelect\n label=\"Asset\"\n value={selectedKey}\n loading={isLoadingBalance}\n loadingLabel=\"Loading assets…\"\n options={assets.map((a) => ({\n key: assetKey(a),\n code: a.code,\n // Unreadable (null) drops the \"— X available\" suffix instead of\n // claiming a zero balance.\n available: a.available ?? undefined,\n enabledInApp: a.enabledInApp,\n }))}\n onChange={(key) => {\n const found = assets.find((a) => assetKey(a) === key);\n if (found) onSelectAsset(found);\n }}\n />\n\n {/* Amount */}\n <div className=\"pollar-send-field\">\n <div className=\"pollar-send-label-row\">\n <label className=\"pollar-send-label\">Amount</label>\n {selectedAsset && (\n <span className=\"pollar-send-hint\">\n Available: {formatBalance(selectedAsset.available)} {selectedAsset.code}\n </span>\n )}\n </div>\n <input\n className=\"pollar-input\"\n type=\"text\"\n inputMode=\"decimal\"\n placeholder=\"0.00\"\n value={amount}\n onChange={(e) => onAmountChange(e.target.value)}\n />\n </div>\n\n {/* Destination */}\n <div className=\"pollar-send-field\">\n <label className=\"pollar-send-label\">Destination wallet</label>\n <input\n className=\"pollar-input\"\n type=\"text\"\n placeholder=\"G…\"\n value={destination}\n onChange={(e) => onDestinationChange(e.target.value)}\n />\n </div>\n\n {formError && <div className=\"pollar-modal-error\">{formError}</div>}\n\n <div className=\"pollar-modal-actions\">\n <button className=\"pollar-btn-primary\" onClick={onSubmit} disabled={!canSubmit}>\n Continue\n </button>\n </div>\n </>\n )}\n\n {/* Transaction step */}\n {step === 'tx' && (\n <TxStatusView\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n onSignAndSend={onSignAndSend}\n onToggleXdr={onToggleXdr}\n onCopyHash={onCopyHash}\n onRetry={onRetry}\n onDone={onDone}\n />\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { toBaseUnits, WalletBalanceRecord, WalletChain } from '@pollar/core';\nimport { useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport { useChains } from '../../useChains';\nimport { addressForChain, resolveChain } from '../ChainSelect';\nimport '../shared.css';\nimport '../transaction-modal/TransactionModal.css';\nimport './SendModal.css';\nimport { SendModalTemplate } from './SendModalTemplate';\n\ninterface SendModalProps {\n onClose: () => void;\n}\n\nfunction assetParam(record: WalletBalanceRecord) {\n if (record.type === 'native') return { type: 'native' as const };\n if (record.type === 'credit_alphanum4') {\n return { type: 'credit_alphanum4' as const, code: record.code, issuer: record.issuer! };\n }\n return { type: 'credit_alphanum12' as const, code: record.code, issuer: record.issuer! };\n}\n\nexport function SendModal({ onClose }: SendModalProps) {\n const {\n walletBalance,\n refreshWalletBalance,\n buildTx,\n sendPayment,\n signAndSubmitTx,\n tx: transaction,\n wallet,\n wallets,\n network,\n styles,\n } = usePollar();\n // External-wallet signing-adapter id (freighter/albedo) drives the wallet logo;\n // null for custodial/smart, which fall back to the Pollar logo.\n const walletType = wallet?.custody === 'external' ? wallet.provider : null;\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const [step, setStep] = useState<'form' | 'tx'>('form');\n const [amount, setAmount] = useState('');\n const [destination, setDestination] = useState('');\n const [selectedAsset, setSelectedAsset] = useState<WalletBalanceRecord | null>(null);\n const [showXdr, setShowXdr] = useState(false);\n const [copied, setCopied] = useState(false);\n const [formError, setFormError] = useState('');\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const { chains } = useChains();\n const [selectedChain, setSelectedChain] = useState<WalletChain | null>(null);\n // Default to the app's first configured network. Runs as an effect because\n // `wallets` is empty on the first render of a cold-start session.\n useEffect(() => {\n if (selectedChain === null && chains.length > 0) setSelectedChain(chains[0]!);\n }, [chains, selectedChain]);\n\n const walletAddress = addressForChain(wallets, selectedChain);\n // Solana joined Stellar via the atomic endpoint; Polygon has no transfer path\n // in the backend yet, so it can be browsed but not sent from.\n const canSendOnChain = selectedChain === 'STELLAR' || selectedChain === 'SOLANA';\n // Solana amounts are integer base units (lamports / mint units), not decimals.\n const isBaseUnitChain = selectedChain === 'SOLANA';\n\n useEffect(() => {\n void refreshWalletBalance();\n }, [refreshWalletBalance]);\n\n useEffect(\n () => () => {\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n const balanceData = walletBalance.step === 'loaded' ? walletBalance.data : null;\n // Only the picked network's assets. The backend returns every chain in one\n // payload, so this is a local filter — switching networks costs no request.\n const allAssets = (balanceData?.balances ?? []).filter((b) => resolveChain(b.chain) === selectedChain);\n // App assets first, then native XLM (always, even at 0, so the user knows to\n // fund) and any other non-app asset the wallet actually holds.\n const sortedAssets = [\n ...allAssets.filter((b) => b.enabledInApp),\n // An unreadable balance (null) is not a positive one, so it stays out.\n ...allAssets.filter((b) => !b.enabledInApp && (b.type === 'native' || parseFloat(b.balance ?? '0') > 0)),\n ];\n\n // Auto-select the first asset once balances load (no \"Select asset\" step).\n // Switching networks strands the previous chain's asset, so it is dropped and\n // re-picked here rather than leaving a selection the form can't spend.\n useEffect(() => {\n const stranded = selectedAsset !== null && resolveChain(selectedAsset.chain) !== selectedChain;\n if (stranded) {\n setSelectedAsset(sortedAssets[0] ?? null);\n return;\n }\n if (!selectedAsset && sortedAssets.length > 0) setSelectedAsset(sortedAssets[0]!);\n }, [sortedAssets, selectedAsset, selectedChain]);\n\n const hash = transaction.step === 'success' ? transaction.hash : null;\n const buildData = 'buildData' in transaction ? transaction.buildData : null;\n const explorerNetwork = buildData?.summary.network?.toLowerCase().includes('testnet')\n ? 'testnet'\n : buildData\n ? 'public'\n : network === 'testnet'\n ? 'testnet'\n : 'public';\n // Each chain has its own explorer, and its own way of saying \"testnet\".\n const explorerUrl = !hash\n ? null\n : selectedChain === 'SOLANA'\n ? `https://explorer.solana.com/tx/${hash}${explorerNetwork === 'testnet' ? '?cluster=devnet' : ''}`\n : `https://stellar.expert/explorer/${explorerNetwork}/tx/${hash}`;\n\n const IN_FLIGHT_STEPS = [\n 'building',\n 'signing',\n 'submitting',\n 'submitted',\n 'signing-submitting',\n 'building-signing-submitting',\n ] as const;\n const isInProgress = (IN_FLIGHT_STEPS as readonly string[]).includes(transaction.step);\n const showBack = step === 'tx' && (transaction.step === 'error' || transaction.step === 'success') && !isInProgress;\n\n const txTitle = isInProgress\n ? 'Sending…'\n : transaction.step === 'success'\n ? 'Sent!'\n : transaction.step === 'error'\n ? 'Send failed'\n : 'Confirm Send';\n\n async function handleSubmit() {\n setFormError('');\n if (!canSendOnChain) {\n setFormError('Sending is not available on this network yet.');\n return;\n }\n if (!selectedAsset) {\n setFormError('Select an asset');\n return;\n }\n const parsed = parseFloat(amount);\n if (!amount || isNaN(parsed) || parsed <= 0) {\n setFormError('Enter a valid amount');\n return;\n }\n // A null `available` means the chain could not be read, so it floors to 0 and\n // blocks the send: never let an unreadable balance pass as \"enough\".\n if (parsed > parseFloat(selectedAsset.available ?? '0')) {\n setFormError('Insufficient balance');\n return;\n }\n if (!destination.trim()) {\n setFormError('Enter a destination address');\n return;\n }\n\n // Solana takes integer base units while the form (like the balance above it)\n // is in decimals, so convert before sending — with the asset's own decimals,\n // and via strings so a 9-decimal amount is not rounded by a float.\n let sendAmount = amount;\n if (isBaseUnitChain) {\n try {\n sendAmount = toBaseUnits(amount, selectedAsset.decimals ?? 9);\n } catch (e) {\n setFormError(e instanceof Error ? e.message : 'Invalid amount');\n return;\n }\n }\n\n setStep('tx');\n\n if (selectedChain === 'SOLANA') {\n await sendPayment({\n chain: 'SOLANA',\n destination: destination.trim(),\n amount: sendAmount,\n // Native SOL carries no mint; an SPL token's mint rides in `issuer`.\n ...(selectedAsset.type === 'native' ? {} : { mint: selectedAsset.issuer ?? null }),\n });\n return;\n }\n\n await buildTx('payment', { destination: destination.trim(), amount, asset: assetParam(selectedAsset) });\n }\n\n function handleSignAndSend() {\n if (transaction.step === 'built') {\n void signAndSubmitTx(transaction.buildData.unsignedXdr);\n }\n }\n\n function handleCopyHash() {\n if (!hash) return;\n navigator.clipboard.writeText(hash).then(() => {\n setCopied(true);\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n copyTimerRef.current = null;\n setCopied(false);\n }, 2000);\n });\n }\n\n async function handleRetry() {\n if (transaction.step === 'error' && transaction.buildData) {\n await signAndSubmitTx(transaction.buildData.unsignedXdr);\n }\n }\n\n function handleBack() {\n setStep('form');\n setShowXdr(false);\n setCopied(false);\n }\n\n return (\n <div className=\"pollar-overlay\" onClick={!isInProgress ? onClose : undefined}>\n <SendModalTemplate\n theme={theme}\n accentColor={accentColor}\n step={step}\n txTitle={txTitle}\n assets={sortedAssets}\n selectedAsset={selectedAsset}\n chains={chains}\n selectedChain={selectedChain}\n walletAddress={walletAddress}\n canSendOnChain={canSendOnChain}\n onSelectChain={setSelectedChain}\n amount={amount}\n destination={destination}\n formError={formError}\n isLoadingBalance={walletBalance.step === 'loading'}\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n showBack={showBack}\n isInProgress={isInProgress}\n onClose={onClose}\n onBack={handleBack}\n onRefresh={() => void refreshWalletBalance()}\n onSelectAsset={setSelectedAsset}\n onAmountChange={setAmount}\n onDestinationChange={setDestination}\n onSubmit={() => void handleSubmit()}\n onSignAndSend={handleSignAndSend}\n onToggleXdr={() => setShowXdr((v) => !v)}\n onCopyHash={handleCopyHash}\n onRetry={() => void handleRetry()}\n onDone={onClose}\n />\n </div>\n );\n}\n","'use client';\n\nimport { SwapProvider, SwapQuote, SwapQuoteParams, TransactionState, WalletId } from '@pollar/core';\nimport { type CSSProperties, useState } from 'react';\nimport { AssetSelect } from '../AssetSelect';\nimport { PollarModalFooter } from '../commons';\nimport { TxStatusView } from '../transaction-modal/TxStatusView';\n\n/** A selectable asset in the sell/buy pickers, normalized across balance/enabled records. */\nexport interface SwapAssetOption {\n ref: SwapQuoteParams['sellAsset'];\n code: string;\n issuer?: string | undefined;\n available?: string | undefined;\n enabledInApp?: boolean | undefined;\n}\n\nexport function assetOptionKey(o: SwapAssetOption): string {\n return `${o.code}:${o.issuer ?? 'native'}`;\n}\n\nconst PROVIDER_LABELS: Record<SwapProvider, string> = {\n auto: 'Best price (auto)',\n aquarius: 'Aquarius',\n soroswap: 'Soroswap',\n sdex: 'Stellar DEX',\n};\n\nfunction formatAmount(value: string): string {\n const n = parseFloat(value);\n return isNaN(n) ? value : n.toLocaleString(undefined, { maximumFractionDigits: 7 });\n}\n\nexport interface SwapModalTemplateProps {\n theme: string;\n accentColor: string;\n step: 'form' | 'tx';\n txTitle: string;\n sellOptions: SwapAssetOption[];\n buyOptions: SwapAssetOption[];\n selectedSell: SwapAssetOption | null;\n selectedBuy: SwapAssetOption | null;\n amount: string;\n provider: SwapProvider;\n providers: SwapProvider[];\n quote: SwapQuote | null;\n quoteLoading: boolean;\n quoteError: string;\n formError: string;\n isLoadingData: boolean;\n smartUnsupported: boolean;\n /** Swap config is still loading. */\n configLoading: boolean;\n /** Config loaded and this app exposes no swap venues — swap is disabled. */\n swapUnavailable: boolean;\n /** Buying the selected asset will create a trustline first (~0.5 XLM reserve). */\n buyNeedsTrustline: boolean;\n transaction: TransactionState;\n showXdr: boolean;\n copied: boolean;\n explorerUrl: string | null;\n walletType?: WalletId | null | undefined;\n showBack: boolean;\n isInProgress: boolean;\n onClose: () => void;\n onBack: () => void;\n onRefresh: () => void;\n onSelectSell: (o: SwapAssetOption) => void;\n onSelectBuy: (o: SwapAssetOption) => void;\n /** Add a user-pasted token (code + issuer) to the buy list. Returns an error or null. */\n onAddCustomToken: (code: string, issuer: string) => string | null;\n onAmountChange: (value: string) => void;\n onProviderChange: (p: SwapProvider) => void;\n onSwap: () => void;\n onToggleXdr: () => void;\n onCopyHash: () => void;\n onRetry: () => void;\n onDone: () => void;\n}\n\nexport function SwapModalTemplate({\n theme,\n accentColor,\n step,\n txTitle,\n sellOptions,\n buyOptions,\n selectedSell,\n selectedBuy,\n amount,\n provider,\n providers,\n quote,\n quoteLoading,\n quoteError,\n formError,\n isLoadingData,\n smartUnsupported,\n configLoading,\n swapUnavailable,\n buyNeedsTrustline,\n transaction,\n showXdr,\n copied,\n explorerUrl,\n walletType,\n showBack,\n isInProgress,\n onClose,\n onBack,\n onRefresh,\n onSelectSell,\n onSelectBuy,\n onAddCustomToken,\n onAmountChange,\n onProviderChange,\n onSwap,\n onToggleXdr,\n onCopyHash,\n onRetry,\n onDone,\n}: SwapModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const [customOpen, setCustomOpen] = useState(false);\n const [customCode, setCustomCode] = useState('');\n const [customIssuer, setCustomIssuer] = useState('');\n const [customError, setCustomError] = useState('');\n\n const submitCustomToken = () => {\n const err = onAddCustomToken(customCode, customIssuer);\n if (err) {\n setCustomError(err);\n return;\n }\n setCustomCode('');\n setCustomIssuer('');\n setCustomError('');\n setCustomOpen(false);\n };\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const sellKey = selectedSell ? assetOptionKey(selectedSell) : '';\n const buyKey = selectedBuy ? assetOptionKey(selectedBuy) : '';\n const canSwap =\n !smartUnsupported && !!selectedSell && !!selectedBuy && !!amount && !!quote && !quoteLoading && !isLoadingData;\n\n const title = step === 'form' ? 'Swap' : txTitle;\n\n return (\n <div\n className=\"pollar-modal-card pollar-send-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <div className=\"pollar-send-header-left\">\n {showBack && (\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onBack} aria-label=\"Back\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M10 3L5 8l5 5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n )}\n <h2 className=\"pollar-modal-title\">{title}</h2>\n </div>\n {!isInProgress && (\n <div className=\"pollar-modal-header-actions\">\n {step === 'form' && (\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={configLoading || isLoadingData}\n aria-label=\"Refresh\"\n title=\"Refresh balances and options\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2.5v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n\n {step === 'form' && !configLoading && swapUnavailable && (\n <div className=\"pollar-modal-error\">Swap is not available for this app.</div>\n )}\n\n {/* Keep the form visible while the config loads — disable the inputs rather\n than unmounting them, so the modal doesn't visibly collapse/jump. */}\n {step === 'form' && !swapUnavailable && (\n <>\n {smartUnsupported && (\n <div className=\"pollar-modal-error\">Swaps are not yet available for smart (passkey) wallets.</div>\n )}\n\n {/* Sell asset */}\n <AssetSelect\n label=\"You pay\"\n value={sellKey}\n loading={isLoadingData || configLoading}\n loadingLabel=\"Loading assets…\"\n disabled={configLoading}\n options={sellOptions.map((o) => ({\n key: assetOptionKey(o),\n code: o.code,\n available: o.available,\n enabledInApp: o.enabledInApp,\n }))}\n onChange={(key) => {\n const found = sellOptions.find((o) => assetOptionKey(o) === key);\n if (found) onSelectSell(found);\n }}\n />\n\n {/* Amount */}\n <div className=\"pollar-send-field\">\n <div className=\"pollar-send-label-row\">\n <label className=\"pollar-send-label\">Amount</label>\n {selectedSell?.available !== undefined && (\n <span className=\"pollar-send-hint\">\n Available: {formatAmount(selectedSell.available)} {selectedSell.code}\n </span>\n )}\n </div>\n <input\n className=\"pollar-input\"\n type=\"text\"\n inputMode=\"decimal\"\n placeholder=\"0.00\"\n value={amount}\n disabled={configLoading}\n onChange={(e) => onAmountChange(e.target.value)}\n />\n </div>\n\n {/* Buy asset */}\n <AssetSelect\n label=\"You receive\"\n value={buyKey}\n loading={isLoadingData || configLoading}\n loadingLabel=\"Loading assets…\"\n disabled={configLoading}\n options={buyOptions.map((o) => ({\n key: assetOptionKey(o),\n code: o.code,\n enabledInApp: o.enabledInApp,\n }))}\n onChange={(key) => {\n const found = buyOptions.find((o) => assetOptionKey(o) === key);\n if (found) onSelectBuy(found);\n }}\n >\n {customOpen ? (\n <div className=\"pollar-swap-custom\">\n <input\n className=\"pollar-input\"\n type=\"text\"\n placeholder=\"Code (e.g. USDC)\"\n value={customCode}\n onChange={(e) => setCustomCode(e.target.value)}\n />\n <input\n className=\"pollar-input\"\n type=\"text\"\n placeholder=\"Issuer (G...)\"\n value={customIssuer}\n onChange={(e) => setCustomIssuer(e.target.value)}\n />\n {customError && <div className=\"pollar-modal-error\">{customError}</div>}\n <div className=\"pollar-swap-custom-actions\">\n <button type=\"button\" className=\"pollar-btn-primary\" onClick={submitCustomToken}>\n Add token\n </button>\n <button\n type=\"button\"\n className=\"pollar-swap-custom-cancel\"\n onClick={() => {\n setCustomOpen(false);\n setCustomError('');\n }}\n >\n Cancel\n </button>\n </div>\n </div>\n ) : (\n <button\n type=\"button\"\n className=\"pollar-swap-custom-toggle\"\n disabled={configLoading}\n onClick={() => setCustomOpen(true)}\n >\n + Add a token by code / issuer\n </button>\n )}\n </AssetSelect>\n\n {/* Route selector */}\n <div className=\"pollar-send-field\">\n <label className=\"pollar-send-label\">Route</label>\n {configLoading ? (\n <div className=\"pollar-input pollar-select-loading\">\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n <span>Loading routes…</span>\n </div>\n ) : (\n <select\n className=\"pollar-input pollar-send-select\"\n value={provider}\n disabled={providers.length === 0}\n onChange={(e) => onProviderChange(e.target.value as SwapProvider)}\n >\n {providers.length === 0 ? (\n <option value={provider}>{PROVIDER_LABELS[provider]}</option>\n ) : (\n providers.map((p) => (\n <option key={p} value={p}>\n {PROVIDER_LABELS[p]}\n </option>\n ))\n )}\n </select>\n )}\n </div>\n\n {/* Quote panel */}\n {quoteLoading && (\n <div className=\"pollar-send-hint pollar-inline-loading\">\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n Fetching best price…\n </div>\n )}\n {!quoteLoading && quoteError && <div className=\"pollar-modal-error\">{quoteError}</div>}\n {!quoteLoading && !quoteError && quote && selectedBuy && (\n <div className=\"pollar-swap-quote\">\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">You receive</span>\n <span>\n ~ {formatAmount(quote.amountOut)} {selectedBuy.code}\n </span>\n </div>\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">Minimum received</span>\n <span>\n {formatAmount(quote.minReceived)} {selectedBuy.code}\n </span>\n </div>\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">Price impact</span>\n <span>{quote.priceImpactPct}%</span>\n </div>\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">Route</span>\n <span>{PROVIDER_LABELS[quote.provider]}</span>\n </div>\n </div>\n )}\n {!quoteLoading && !quoteError && !quote && selectedSell && selectedBuy && !!amount && (\n <div className=\"pollar-send-hint\">No route found for this pair.</div>\n )}\n\n {buyNeedsTrustline && selectedBuy && (\n <div className=\"pollar-swap-trustline-notice\">\n To receive {selectedBuy.code} your wallet needs a trustline. Swapping will create it first (~0.5 XLM reserve,\n refundable if you later remove it).\n </div>\n )}\n\n {formError && <div className=\"pollar-modal-error\">{formError}</div>}\n\n <div className=\"pollar-modal-actions\">\n <button className=\"pollar-btn-primary\" onClick={onSwap} disabled={!canSwap}>\n {buyNeedsTrustline ? 'Create trustline & swap' : 'Swap'}\n </button>\n </div>\n </>\n )}\n\n {step === 'tx' && (\n <TxStatusView\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n onSignAndSend={() => {}}\n onToggleXdr={onToggleXdr}\n onCopyHash={onCopyHash}\n onRetry={onRetry}\n onDone={onDone}\n />\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { SwapProvider, SwapQuote, SwapQuoteParams, SwapToken, SwapVenue } from '@pollar/core';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport '../transaction-modal/TransactionModal.css';\nimport '../send-modal/SendModal.css';\nimport './SwapModal.css';\nimport { SwapAssetOption, SwapModalTemplate } from './SwapModalTemplate';\n\ninterface SwapModalProps {\n onClose: () => void;\n}\n\n/** Debounce (ms) before re-quoting as the user edits the amount / assets. */\nconst QUOTE_DEBOUNCE_MS = 400;\n\ntype AssetLike = { type: 'native' | 'credit_alphanum4' | 'credit_alphanum12'; code: string; issuer?: string | undefined };\n\nfunction toRef(a: AssetLike): SwapQuoteParams['sellAsset'] {\n if (a.type === 'native') return { type: 'native' };\n if (a.type === 'credit_alphanum4') return { type: 'credit_alphanum4', code: a.code, issuer: a.issuer! };\n return { type: 'credit_alphanum12', code: a.code, issuer: a.issuer! };\n}\n\n/** A catalog token (code + issuer) -> the asset ref, picking the alphanum width. */\nfunction catalogRef(code: string, issuer: string): SwapQuoteParams['sellAsset'] {\n return code.length <= 4 ? { type: 'credit_alphanum4', code, issuer } : { type: 'credit_alphanum12', code, issuer };\n}\n\nexport function SwapModal({ onClose }: SwapModalProps) {\n const {\n getSwapConfig,\n getSwapTokens,\n getSwapQuote,\n swap,\n walletBalance,\n refreshWalletBalance,\n enabledAssets,\n refreshAssets,\n tx: transaction,\n wallet,\n network,\n styles,\n } = usePollar();\n\n const walletType = wallet?.custody === 'external' ? wallet.provider : null;\n const smartUnsupported = wallet?.custody === 'smart';\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const [step, setStep] = useState<'form' | 'tx'>('form');\n const [selectedSell, setSelectedSell] = useState<SwapAssetOption | null>(null);\n const [selectedBuy, setSelectedBuy] = useState<SwapAssetOption | null>(null);\n const [amount, setAmount] = useState('');\n const [provider, setProvider] = useState<SwapProvider>('auto');\n const [venues, setVenues] = useState<SwapVenue[] | null>(null); // null = config loading\n const [catalogTokens, setCatalogTokens] = useState<SwapToken[]>([]);\n // Tokens the user pasted by code+issuer (not in the app catalog). Local only.\n const [customTokens, setCustomTokens] = useState<SwapAssetOption[]>([]);\n const [quotes, setQuotes] = useState<SwapQuote[]>([]);\n const [quoteLoading, setQuoteLoading] = useState(false);\n const [quoteError, setQuoteError] = useState('');\n const [formError, setFormError] = useState('');\n const [showXdr, setShowXdr] = useState(false);\n const [copied, setCopied] = useState(false);\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Fixed default slippage (0.5%). Exposed as a constant for now; an advanced\n // control can drive this later without touching the quote/execute wiring.\n const slippageBps = 50;\n\n useEffect(() => {\n void refreshWalletBalance();\n void refreshAssets();\n }, [refreshWalletBalance, refreshAssets]);\n\n // Which venues this app exposes (operator config ∩ server capability).\n const loadConfig = useCallback(() => {\n setVenues(null); // back to loading\n return getSwapConfig()\n .then(setVenues)\n .catch(() => setVenues([])); // treat a failed config as \"unavailable\"\n }, [getSwapConfig]);\n\n useEffect(() => {\n void loadConfig();\n }, [loadConfig]);\n\n // Curated \"buy\" catalog tokens the app opted into (may lack a trustline).\n const loadCatalog = useCallback(\n () =>\n getSwapTokens()\n .then(setCatalogTokens)\n .catch(() => setCatalogTokens([])),\n [getSwapTokens],\n );\n\n useEffect(() => {\n void loadCatalog();\n }, [loadCatalog]);\n\n // Re-pull everything the modal shows: balances, app assets, config and catalog.\n function handleRefresh() {\n void refreshWalletBalance();\n void refreshAssets();\n void loadConfig();\n void loadCatalog();\n }\n\n useEffect(\n () => () => {\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n const balances = walletBalance.step === 'loaded' ? walletBalance.data.balances : [];\n const assetRecords = enabledAssets.step === 'loaded' ? enabledAssets.data.assets : [];\n const isLoadingData = walletBalance.step === 'loading' || enabledAssets.step === 'loading';\n\n // Sell: native XLM + every asset the wallet has a trustline for, even at a 0\n // balance — so the user always sees what they hold and knows when to fund\n // (the amount field guards against overselling). Buy: app-enabled assets.\n // Swap is Stellar-only, so drop any non-Stellar balance (SOL/POL carry no\n // `type`) — the guard both filters them and narrows `type` for toRef().\n const sellOptions: SwapAssetOption[] = balances\n .filter(\n (b): b is typeof b & { type: 'native' | 'credit_alphanum4' | 'credit_alphanum12' } =>\n b.type != null && (b.type === 'native' || !b.trustlineRemoved),\n )\n // A null `available` (chain unreadable) maps to undefined — \"unknown\", which\n // the option already models — rather than to a 0 that would read as \"empty\".\n .map((b) => ({\n ref: toRef(b),\n code: b.code,\n issuer: b.issuer,\n available: b.available ?? undefined,\n enabledInApp: b.enabledInApp,\n }));\n\n const buyKeyOfSell = selectedSell ? `${selectedSell.code}:${selectedSell.issuer ?? 'native'}` : '';\n const optKey = (o: { code: string; issuer?: string | undefined }) => `${o.code}:${o.issuer ?? 'native'}`;\n // Buy list = the app's enabled assets, plus curated catalog tokens the app\n // opted into (deduped; catalog tokens the wallet may not trust yet). Exclude\n // whatever is being sold.\n // Same Stellar-only guard as the sell list: the enabled-asset catalog is now\n // multichain, and a Polygon/Solana token (type 'token') has no Stellar asset\n // ref to swap with. The predicate both drops them and narrows `type` for toRef().\n const enabledBuy: SwapAssetOption[] = assetRecords\n .filter(\n (a): a is typeof a & { type: 'native' | 'credit_alphanum4' | 'credit_alphanum12' } =>\n (a.chain === undefined || a.chain === 'STELLAR') &&\n (a.type === 'native' || a.type === 'credit_alphanum4' || a.type === 'credit_alphanum12'),\n )\n .map((a) => ({\n ref: toRef(a),\n code: a.code,\n issuer: a.issuer,\n enabledInApp: a.enabledInApp,\n }));\n const enabledKeys = new Set(enabledBuy.map(optKey));\n const catalogBuy: SwapAssetOption[] = catalogTokens\n .map((tk) => ({\n ref: catalogRef(tk.code, tk.issuer),\n code: tk.code,\n issuer: tk.issuer,\n enabledInApp: false,\n }))\n .filter((o) => !enabledKeys.has(optKey(o)));\n const knownKeys = new Set([...enabledKeys, ...catalogBuy.map(optKey)]);\n const customBuy = customTokens.filter((o) => !knownKeys.has(optKey(o)));\n const buyOptions: SwapAssetOption[] = [...enabledBuy, ...catalogBuy, ...customBuy].filter((o) => optKey(o) !== buyKeyOfSell);\n\n // Auto-select the first sell / buy asset once options are available, and keep a\n // valid selection if the list changes — so the pickers never sit empty.\n useEffect(() => {\n if (sellOptions.length === 0) return;\n if (!selectedSell || !sellOptions.some((o) => optKey(o) === optKey(selectedSell))) {\n setSelectedSell(sellOptions[0]!);\n }\n }, [sellOptions, selectedSell]);\n\n useEffect(() => {\n if (buyOptions.length === 0) return;\n if (!selectedBuy || !buyOptions.some((o) => optKey(o) === optKey(selectedBuy))) {\n setSelectedBuy(buyOptions[0]!);\n }\n }, [buyOptions, selectedBuy]);\n\n // Add a user-pasted token (code + issuer) to the buy list and select it.\n // Returns an error message, or null on success.\n function addCustomToken(code: string, issuer: string): string | null {\n const c = code.trim().toUpperCase();\n const i = issuer.trim();\n if (c.length < 1 || c.length > 12) return 'Code must be 1-12 characters';\n if (i.length !== 56 || !i.startsWith('G')) return 'Issuer must be a Stellar address (G..., 56 chars)';\n const opt: SwapAssetOption = { ref: catalogRef(c, i), code: c, issuer: i, enabledInApp: false };\n setCustomTokens((prev) => (prev.some((o) => optKey(o) === optKey(opt)) ? prev : [...prev, opt]));\n setSelectedBuy(opt);\n return null;\n }\n\n // Does buying `selectedBuy` require creating a trustline first? Native never;\n // a credit asset the wallet already trusts (in enabledAssets with\n // trustlineEstablished) doesn't; anything else (incl. catalog tokens) does.\n // Smart wallets hold SAC tokens (no classic trustlines) so it never applies.\n const buyNeedsTrustline = (() => {\n if (!selectedBuy || smartUnsupported) return false;\n if (selectedBuy.ref.type === 'native') return false;\n const rec = assetRecords.find((a) => a.code === selectedBuy.code && a.issuer === selectedBuy.issuer);\n return !rec?.trustlineEstablished;\n })();\n\n const configLoading = venues === null;\n const swapUnavailable = venues !== null && venues.length === 0;\n // Offer \"Auto\" (best of the enabled set) plus each configured venue.\n const providers: SwapProvider[] = venues && venues.length > 0 ? (['auto', ...venues] as SwapProvider[]) : [];\n const quote = quotes[0] ?? null;\n\n // Re-quote (debounced) whenever the pair / amount / route changes.\n useEffect(() => {\n if (\n step !== 'form' ||\n swapUnavailable ||\n configLoading ||\n !selectedSell ||\n !selectedBuy ||\n !amount ||\n parseFloat(amount) <= 0\n ) {\n setQuotes([]);\n setQuoteError('');\n setQuoteLoading(false);\n return;\n }\n let cancelled = false;\n setQuoteLoading(true);\n setQuoteError('');\n const t = setTimeout(async () => {\n try {\n const qs = await getSwapQuote({\n sellAsset: selectedSell.ref,\n buyAsset: selectedBuy.ref,\n amount,\n provider,\n slippageBps,\n });\n if (!cancelled) setQuotes(qs);\n } catch (e) {\n if (!cancelled) {\n setQuotes([]);\n setQuoteError(e instanceof Error ? e.message : 'Failed to fetch quote');\n }\n } finally {\n if (!cancelled) setQuoteLoading(false);\n }\n }, QUOTE_DEBOUNCE_MS);\n return () => {\n cancelled = true;\n clearTimeout(t);\n };\n }, [step, swapUnavailable, configLoading, selectedSell, selectedBuy, amount, provider, getSwapQuote]);\n\n const hash = transaction.step === 'success' ? transaction.hash : null;\n const buildData = 'buildData' in transaction ? transaction.buildData : null;\n const explorerNetwork = buildData?.summary.network?.toLowerCase().includes('testnet')\n ? 'testnet'\n : buildData\n ? 'public'\n : network === 'testnet'\n ? 'testnet'\n : 'public';\n const explorerUrl = hash ? `https://stellar.expert/explorer/${explorerNetwork}/tx/${hash}` : null;\n\n const IN_FLIGHT_STEPS = [\n 'building',\n 'signing',\n 'submitting',\n 'submitted',\n 'signing-submitting',\n 'building-signing-submitting',\n ] as const;\n const isInProgress = (IN_FLIGHT_STEPS as readonly string[]).includes(transaction.step);\n const showBack = step === 'tx' && (transaction.step === 'error' || transaction.step === 'success') && !isInProgress;\n\n const txTitle = isInProgress\n ? 'Swapping…'\n : transaction.step === 'success'\n ? 'Swapped!'\n : transaction.step === 'error'\n ? 'Swap failed'\n : 'Confirm Swap';\n\n async function handleSwap() {\n setFormError('');\n if (smartUnsupported) {\n setFormError('Swaps are not yet supported for smart (passkey) wallets');\n return;\n }\n if (!selectedSell || !selectedBuy) {\n setFormError('Select both assets');\n return;\n }\n const parsed = parseFloat(amount);\n if (!amount || isNaN(parsed) || parsed <= 0) {\n setFormError('Enter a valid amount');\n return;\n }\n if (selectedSell.available !== undefined && parsed > parseFloat(selectedSell.available)) {\n setFormError('Insufficient balance');\n return;\n }\n if (!quote) {\n setFormError('No route available for this pair');\n return;\n }\n setStep('tx');\n await swap(quote);\n }\n\n async function handleRetry() {\n if (transaction.step === 'error' && quote) await swap(quote);\n }\n\n function handleCopyHash() {\n if (!hash) return;\n navigator.clipboard.writeText(hash).then(() => {\n setCopied(true);\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n copyTimerRef.current = null;\n setCopied(false);\n }, 2000);\n });\n }\n\n function handleBack() {\n setStep('form');\n setShowXdr(false);\n setCopied(false);\n }\n\n return (\n <div className=\"pollar-overlay\" onClick={!isInProgress ? onClose : undefined}>\n <SwapModalTemplate\n theme={theme}\n accentColor={accentColor}\n step={step}\n txTitle={txTitle}\n sellOptions={sellOptions}\n buyOptions={buyOptions}\n selectedSell={selectedSell}\n selectedBuy={selectedBuy}\n amount={amount}\n provider={provider}\n providers={providers}\n quote={quote}\n quoteLoading={quoteLoading}\n quoteError={quoteError}\n formError={formError}\n isLoadingData={isLoadingData}\n smartUnsupported={smartUnsupported}\n configLoading={configLoading}\n swapUnavailable={swapUnavailable}\n buyNeedsTrustline={buyNeedsTrustline}\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n showBack={showBack}\n isInProgress={isInProgress}\n onClose={onClose}\n onBack={handleBack}\n onRefresh={handleRefresh}\n onSelectSell={setSelectedSell}\n onSelectBuy={setSelectedBuy}\n onAddCustomToken={addCustomToken}\n onAmountChange={setAmount}\n onProviderChange={setProvider}\n onSwap={() => void handleSwap()}\n onToggleXdr={() => setShowXdr((v) => !v)}\n onCopyHash={handleCopyHash}\n onRetry={() => void handleRetry()}\n onDone={onClose}\n />\n </div>\n );\n}\n","'use client';\n\nimport { EarnOpportunity, EarnPosition, EarnProviderId } from '@pollar/core';\nimport { type CSSProperties, useCallback, useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport { PollarModalFooter } from '../commons';\nimport { TxStatusView } from '../transaction-modal/TxStatusView';\nimport '../shared.css';\nimport '../transaction-modal/TransactionModal.css';\nimport '../send-modal/SendModal.css';\nimport '../swap-modal/SwapModal.css';\nimport './EarnModal.css';\n\ninterface EarnModalProps {\n onClose: () => void;\n}\n\n/** Poll interval (ms) for the live position + APY. */\nconst POSITION_POLL_MS = 10000;\n\nconst PROVIDER_LABELS: Record<EarnProviderId, string> = {\n blend: 'Blend',\n defindex: 'DeFindex',\n};\n\nconst IN_FLIGHT_STEPS = [\n 'building',\n 'signing',\n 'submitting',\n 'submitted',\n 'signing-submitting',\n 'building-signing-submitting',\n] as const;\n\nfunction formatAmount(value: string): string {\n const n = parseFloat(value);\n return isNaN(n) ? value : n.toLocaleString(undefined, { maximumFractionDigits: 7 });\n}\n\nexport function EarnModal({ onClose }: EarnModalProps) {\n const {\n getEarnProviders,\n getEarnOpportunities,\n getEarnPosition,\n earnDeposit,\n earnWithdraw,\n tx: transaction,\n wallet,\n walletBalance,\n refreshWalletBalance,\n enabledAssets,\n refreshAssets,\n setTrustline,\n network,\n styles,\n } = usePollar();\n\n const walletType = wallet?.custody === 'external' ? wallet.provider : null;\n const smartUnsupported = wallet?.custody === 'smart';\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n const isDark = theme === 'dark';\n\n const [step, setStep] = useState<'form' | 'tx'>('form');\n const [tab, setTab] = useState<'deposit' | 'withdraw'>('deposit');\n const [providers, setProviders] = useState<EarnProviderId[] | null>(null); // null = loading\n const [provider, setProvider] = useState<EarnProviderId | null>(null);\n const [opportunities, setOpportunities] = useState<EarnOpportunity[]>([]);\n const [opportunityId, setOpportunityId] = useState('');\n const [position, setPosition] = useState<EarnPosition | null>(null);\n const [amount, setAmount] = useState('');\n const [loadingOpps, setLoadingOpps] = useState(false);\n const [formError, setFormError] = useState('');\n const [refreshing, setRefreshing] = useState(false);\n const [showXdr, setShowXdr] = useState(false);\n const [copied, setCopied] = useState(false);\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // ─── Providers ────────────────────────────────────────────────────────────\n const loadProviders = useCallback(() => {\n setProviders(null);\n return getEarnProviders()\n .then((ps) => {\n setProviders(ps);\n setProvider((cur) => cur ?? ps[0] ?? null);\n })\n .catch(() => setProviders([]));\n }, [getEarnProviders]);\n\n useEffect(() => {\n void loadProviders();\n }, [loadProviders]);\n\n // The wallet balance drives the Deposit tab's \"In your wallet\" row + Max; the\n // enabled assets drive the deposit-asset trustline check.\n useEffect(() => {\n void refreshWalletBalance();\n void refreshAssets();\n }, [refreshWalletBalance, refreshAssets]);\n\n // ─── Opportunities (per provider) ───────────────────────────────────────────\n useEffect(() => {\n if (!provider) return;\n let cancelled = false;\n setLoadingOpps(true);\n getEarnOpportunities(provider)\n .then((opps) => {\n if (cancelled) return;\n setOpportunities(opps);\n setOpportunityId((cur) => (opps.some((o) => o.id === cur) ? cur : (opps[0]?.id ?? '')));\n })\n .catch(() => {\n if (!cancelled) setOpportunities([]);\n })\n .finally(() => {\n if (!cancelled) setLoadingOpps(false);\n });\n return () => {\n cancelled = true;\n };\n }, [provider, getEarnOpportunities]);\n\n const selectedOpportunity = opportunities.find((o) => o.id === opportunityId) ?? null;\n\n // ─── Position (live, polled) ────────────────────────────────────────────────\n const refreshPosition = useCallback(() => {\n if (!provider || !opportunityId || !wallet) return;\n getEarnPosition({ provider, opportunity: opportunityId })\n .then(setPosition)\n .catch(() => {\n /* leave the last snapshot on a transient read error */\n });\n }, [provider, opportunityId, wallet, getEarnPosition]);\n\n useEffect(() => {\n setPosition(null);\n refreshPosition();\n }, [refreshPosition]);\n\n useEffect(() => {\n if (step !== 'form' || !provider || !opportunityId) return;\n const id = setInterval(refreshPosition, POSITION_POLL_MS);\n return () => clearInterval(id);\n }, [step, provider, opportunityId, refreshPosition]);\n\n useEffect(\n () => () => {\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n // ─── Derived ────────────────────────────────────────────────────────────────\n const providersLoading = providers === null;\n const earnUnavailable = providers !== null && providers.length === 0;\n const withdrawUnit = position?.withdrawUnit ?? 'asset';\n const assetCode = selectedOpportunity?.asset.code ?? '';\n const amountUnitLabel = tab === 'deposit' ? assetCode : withdrawUnit === 'shares' ? 'shares' : assetCode;\n\n // The wallet's spendable balance of the selected opportunity's asset (native\n // XLM matches by type; issued assets by code + issuer). `null` = unknown yet.\n const walletAvailable = (() => {\n if (!selectedOpportunity) return null;\n const balances = walletBalance.step === 'loaded' ? walletBalance.data.balances : [];\n const issuer = selectedOpportunity.asset.issuer;\n const rec = balances.find((b) =>\n issuer === null ? b.type === 'native' : b.code === assetCode && b.issuer === issuer,\n );\n return rec ? rec.available : null;\n })();\n\n // Depositing an issued asset (e.g. USDC) needs the wallet to trust it first.\n // Native XLM and pure Soroban tokens (no classic issuer) never do; smart\n // (C-address) wallets hold SAC tokens, so no classic trustline applies. When\n // needed, the deposit runs as two signatures: trustline, then deposit.\n const depositAssetRecord = (() => {\n if (!selectedOpportunity?.asset.issuer || enabledAssets.step !== 'loaded') return undefined;\n // Stellar-only: the catalog is multichain now, and Earn (DeFindex/Blend)\n // settles on Stellar. Chain is undefined on the v1 shape, so absent = Stellar.\n return enabledAssets.data.assets.find(\n (a) =>\n (a.chain === undefined || a.chain === 'STELLAR') &&\n a.code === assetCode &&\n a.issuer === selectedOpportunity.asset.issuer,\n );\n })();\n const depositNeedsTrustline =\n tab === 'deposit' &&\n !smartUnsupported &&\n !!selectedOpportunity?.asset.issuer &&\n !depositAssetRecord?.trustlineEstablished;\n\n const hash = transaction.step === 'success' ? transaction.hash : null;\n const buildData = 'buildData' in transaction ? transaction.buildData : null;\n const explorerNetwork = buildData?.summary.network?.toLowerCase().includes('testnet')\n ? 'testnet'\n : buildData\n ? 'public'\n : network === 'testnet'\n ? 'testnet'\n : 'public';\n const explorerUrl = hash ? `https://stellar.expert/explorer/${explorerNetwork}/tx/${hash}` : null;\n\n const isInProgress = (IN_FLIGHT_STEPS as readonly string[]).includes(transaction.step);\n const showBack = step === 'tx' && (transaction.step === 'error' || transaction.step === 'success') && !isInProgress;\n\n const txTitle = isInProgress\n ? tab === 'deposit'\n ? 'Depositing…'\n : 'Withdrawing…'\n : transaction.step === 'success'\n ? 'Done!'\n : transaction.step === 'error'\n ? tab === 'deposit'\n ? 'Deposit failed'\n : 'Withdraw failed'\n : 'Confirm';\n\n // Over-spend guard: deposit can't exceed the wallet's available balance;\n // withdraw can't exceed the position. Skipped while the relevant figure is\n // still unknown (`null`) so a slow balance read doesn't block a valid amount.\n const parsedAmount = parseFloat(amount);\n const exceedsAvailable =\n tab === 'deposit'\n ? walletAvailable != null && parsedAmount > parseFloat(walletAvailable)\n : position != null && parsedAmount > parseFloat(position.withdrawable);\n\n const canSubmit =\n !smartUnsupported &&\n !!provider &&\n !!opportunityId &&\n !!amount &&\n parsedAmount > 0 &&\n !exceedsAvailable &&\n !providersLoading &&\n !loadingOpps;\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n // ─── Actions ────────────────────────────────────────────────────────────────\n async function handleSubmit() {\n setFormError('');\n if (smartUnsupported) {\n setFormError('Earn is not yet supported for smart (passkey) wallets');\n return;\n }\n if (!provider || !opportunityId) {\n setFormError('Select a vault or pool');\n return;\n }\n const parsed = parseFloat(amount);\n if (!amount || isNaN(parsed) || parsed <= 0) {\n setFormError('Enter a valid amount');\n return;\n }\n if (tab === 'deposit' && walletAvailable != null && parsed > parseFloat(walletAvailable)) {\n setFormError('Amount exceeds your wallet balance');\n return;\n }\n if (tab === 'withdraw' && position && parsed > parseFloat(position.withdrawable)) {\n setFormError('Amount exceeds your position');\n return;\n }\n setStep('tx');\n\n // Deposit of an issued asset needs its trustline first (native never does).\n // Establish it, then deposit — two signatures, like swap.\n if (tab === 'deposit' && depositNeedsTrustline && selectedOpportunity?.asset.issuer) {\n // Sponsorship is derived automatically from the app config now — no flag.\n const tl = await setTrustline({ code: assetCode, issuer: selectedOpportunity.asset.issuer });\n if (tl.status === 'error') {\n setFormError(`Trustline for ${assetCode} failed: ${tl.details ?? 'unknown error'}`);\n setStep('form');\n return;\n }\n await refreshAssets();\n }\n\n const params = { provider, opportunity: opportunityId, amount };\n const outcome = tab === 'deposit' ? await earnDeposit(params) : await earnWithdraw(params);\n if (outcome.status === 'success' || outcome.status === 'pending') {\n setAmount('');\n refreshPosition();\n }\n }\n\n async function handleRetry() {\n if (transaction.step !== 'error' || !provider || !opportunityId) return;\n const params = { provider, opportunity: opportunityId, amount };\n if (tab === 'deposit') await earnDeposit(params);\n else await earnWithdraw(params);\n }\n\n function handleCopyHash() {\n if (!hash) return;\n navigator.clipboard.writeText(hash).then(() => {\n setCopied(true);\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n copyTimerRef.current = null;\n setCopied(false);\n }, 2000);\n });\n }\n\n function handleBack() {\n setStep('form');\n setShowXdr(false);\n setCopied(false);\n refreshPosition();\n }\n\n // Re-fetch everything the modal shows on demand: the opportunities for the\n // current provider (fresh APYs), the wallet's position, and the wallet balance\n // (\"In your wallet\" + Max). Leaves the current data in place on a transient\n // read error.\n async function handleRefresh() {\n if (refreshing || !provider) return;\n setRefreshing(true);\n try {\n void refreshWalletBalance();\n const opps = await getEarnOpportunities(provider);\n setOpportunities(opps);\n setOpportunityId((cur) => (opps.some((o) => o.id === cur) ? cur : (opps[0]?.id ?? '')));\n refreshPosition();\n } catch {\n /* transient — keep the current snapshot */\n } finally {\n setRefreshing(false);\n }\n }\n\n const title = step === 'form' ? 'Earn' : txTitle;\n\n return (\n <div className=\"pollar-overlay\" onClick={!isInProgress ? onClose : undefined}>\n <div\n className=\"pollar-modal-card pollar-send-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <div className=\"pollar-send-header-left\">\n {showBack && (\n <button type=\"button\" className=\"pollar-modal-close\" onClick={handleBack} aria-label=\"Back\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M10 3L5 8l5 5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n )}\n <h2 className=\"pollar-modal-title\">{title}</h2>\n </div>\n <div className=\"pollar-modal-header-actions\">\n {step === 'form' && !earnUnavailable && !smartUnsupported && (\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={() => void handleRefresh()}\n disabled={refreshing || providersLoading}\n aria-label=\"Refresh\"\n >\n <svg\n className={refreshing ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n {!isInProgress && (\n <button type=\"button\" className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n\n {step === 'form' && earnUnavailable && <div className=\"pollar-modal-error\">Earn is not available for this app.</div>}\n\n {step === 'form' && !earnUnavailable && (\n <>\n {smartUnsupported && (\n <div className=\"pollar-modal-error\">Earn is not yet available for smart (passkey) wallets.</div>\n )}\n\n {/* Deposit / Withdraw tabs */}\n <div className=\"pollar-tabs\">\n <button\n type=\"button\"\n className=\"pollar-tab\"\n data-active={tab === 'deposit'}\n onClick={() => {\n setTab('deposit');\n setFormError('');\n }}\n >\n Deposit\n </button>\n <button\n type=\"button\"\n className=\"pollar-tab\"\n data-active={tab === 'withdraw'}\n onClick={() => {\n setTab('withdraw');\n setFormError('');\n }}\n >\n Withdraw\n </button>\n </div>\n\n {/* Provider */}\n {providers && providers.length > 1 && (\n <div className=\"pollar-send-field\">\n <label className=\"pollar-send-label\">Provider</label>\n <select\n className=\"pollar-input pollar-send-select\"\n value={provider ?? ''}\n onChange={(e) => setProvider(e.target.value as EarnProviderId)}\n >\n {providers.map((p) => (\n <option key={p} value={p}>\n {PROVIDER_LABELS[p]}\n </option>\n ))}\n </select>\n </div>\n )}\n\n {/* Opportunity */}\n <div className=\"pollar-send-field\">\n <label className=\"pollar-send-label\">{provider === 'defindex' ? 'Vault' : 'Pool'}</label>\n {loadingOpps || providersLoading ? (\n <div className=\"pollar-input pollar-select-loading\">\n <span className=\"pollar-spinner pollar-spinner-sm\" />\n <span>Loading options…</span>\n </div>\n ) : (\n <select\n className=\"pollar-input pollar-send-select\"\n value={opportunityId}\n disabled={opportunities.length === 0}\n onChange={(e) => setOpportunityId(e.target.value)}\n >\n {opportunities.length === 0 ? (\n <option value=\"\">None available</option>\n ) : (\n opportunities.map((o) => (\n <option key={o.id} value={o.id}>\n {o.name} · {o.apy.toFixed(2)}% APY\n </option>\n ))\n )}\n </select>\n )}\n </div>\n\n {/* Live position panel */}\n {selectedOpportunity && (\n <div className=\"pollar-swap-quote\">\n {tab === 'deposit' && (\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">In your wallet</span>\n <span>\n {walletAvailable != null ? formatAmount(walletAvailable) : '…'} {assetCode}\n </span>\n </div>\n )}\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">Your position</span>\n <span>\n {position ? formatAmount(position.balance) : '…'} {assetCode}\n </span>\n </div>\n <div className=\"pollar-swap-quote-row\">\n <span className=\"pollar-send-hint\">APY</span>\n <span className=\"pollar-earn-live\">{selectedOpportunity.apy.toFixed(2)}%</span>\n </div>\n </div>\n )}\n\n {/* Amount */}\n <div className=\"pollar-send-field\">\n <div className=\"pollar-send-label-row\">\n <label className=\"pollar-send-label\">{tab === 'deposit' ? 'Amount' : 'Withdraw amount'}</label>\n {tab === 'deposit' && walletAvailable != null && (\n <button type=\"button\" className=\"pollar-swap-custom-toggle\" onClick={() => setAmount(walletAvailable)}>\n Max: {formatAmount(walletAvailable)} {amountUnitLabel}\n </button>\n )}\n {tab === 'withdraw' && position && (\n <button type=\"button\" className=\"pollar-swap-custom-toggle\" onClick={() => setAmount(position.withdrawable)}>\n Max: {formatAmount(position.withdrawable)} {amountUnitLabel}\n </button>\n )}\n </div>\n <div className=\"pollar-earn-amount\">\n <input\n className=\"pollar-input\"\n type=\"text\"\n inputMode=\"decimal\"\n placeholder=\"0.00\"\n value={amount}\n onChange={(e) => setAmount(e.target.value)}\n />\n {amountUnitLabel && <span className=\"pollar-earn-amount-unit\">{amountUnitLabel}</span>}\n </div>\n </div>\n\n {formError && <div className=\"pollar-modal-error\">{formError}</div>}\n\n {depositNeedsTrustline && selectedOpportunity && (\n <div className=\"pollar-swap-trustline-notice\">\n To deposit {assetCode} your wallet needs a trustline. This will create it first (~0.5 XLM reserve,\n refundable if you later remove it), then deposit — two signatures.\n </div>\n )}\n\n <div className=\"pollar-modal-actions\">\n <button className=\"pollar-btn-primary\" onClick={() => void handleSubmit()} disabled={!canSubmit}>\n {tab === 'deposit' ? (depositNeedsTrustline ? 'Enable trustline & deposit' : 'Deposit') : 'Withdraw'}\n </button>\n </div>\n </>\n )}\n\n {step === 'tx' && (\n <TxStatusView\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n onSignAndSend={() => {}}\n onToggleXdr={() => setShowXdr((v) => !v)}\n onCopyHash={handleCopyHash}\n onRetry={() => void handleRetry()}\n onDone={onClose}\n />\n )}\n\n <PollarModalFooter />\n </div>\n </div>\n );\n}\n","'use client';\n\nimport type { SessionInfo, SessionsState } from '@pollar/core';\nimport { type CSSProperties } from 'react';\nimport { PollarModalFooter } from '../commons';\n\nexport type { SessionsState };\n\nexport interface SessionsModalTemplateProps {\n theme: string;\n accentColor: string;\n state: SessionsState;\n revokingFamilyId: string | null;\n signingOutEverywhere: boolean;\n onRefresh: () => void;\n onRevoke: (familyId: string) => void;\n onLogoutEverywhere: () => void;\n onClose: () => void;\n}\n\n/**\n * Heuristic device label. Prefers the explicit `deviceLabel` set via\n * `PollarClientConfig`; falls back to a stripped User-Agent.\n */\nfunction describeDevice(s: SessionInfo): string {\n if (s.deviceLabel) return s.deviceLabel;\n if (!s.userAgent) return 'Unknown device';\n return parseUserAgent(s.userAgent);\n}\n\nfunction detectBrowser(ua: string): string | null {\n // Order matters: Edge / Opera contain \"Chrome\" in their UA, so check them first.\n if (/Edg\\//.test(ua)) return 'Edge';\n if (/OPR\\//.test(ua)) return 'Opera';\n if (/(Chrome|CriOS)\\//.test(ua)) return 'Chrome';\n if (/(Firefox|FxiOS)\\//.test(ua)) return 'Firefox';\n if (/Safari\\//.test(ua)) return 'Safari';\n return null;\n}\n\nfunction detectOS(ua: string): string | null {\n if (/iPhone|iPad|iPod/.test(ua)) return 'iOS';\n if (/Android/.test(ua)) return 'Android';\n if (/Mac OS X/.test(ua)) return 'macOS';\n if (/Windows NT/.test(ua)) return 'Windows';\n if (/Linux/.test(ua)) return 'Linux';\n return null;\n}\n\nfunction parseUserAgent(ua: string): string {\n const browser = detectBrowser(ua);\n const os = detectOS(ua);\n if (browser && os) return `${os} — ${browser}`;\n if (os) return os;\n if (browser) return browser;\n return ua.slice(0, 48);\n}\n\nfunction formatRelative(iso: string | null): string {\n if (!iso) return '—';\n const ts = new Date(iso).getTime();\n if (!Number.isFinite(ts)) return '—';\n const diffSec = Math.round((Date.now() - ts) / 1000);\n if (diffSec < 0) return 'just now';\n if (diffSec < 60) return `${diffSec}s ago`;\n const diffMin = Math.round(diffSec / 60);\n if (diffMin < 60) return `${diffMin}m ago`;\n const diffHr = Math.round(diffMin / 60);\n if (diffHr < 24) return `${diffHr}h ago`;\n const diffDay = Math.round(diffHr / 24);\n if (diffDay < 30) return `${diffDay}d ago`;\n return new Date(iso).toLocaleDateString(undefined, { month: 'short', day: 'numeric', year: 'numeric' });\n}\n\nfunction shortIp(hash: string | null): string {\n if (!hash) return '';\n return hash.slice(0, 8);\n}\n\nexport function SessionsModalTemplate({\n theme,\n accentColor,\n state,\n revokingFamilyId,\n signingOutEverywhere,\n onRefresh,\n onRevoke,\n onLogoutEverywhere,\n onClose,\n}: SessionsModalTemplateProps) {\n const isDark = theme === 'dark';\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const isLoading = state.step === 'loading';\n const sessions = state.step === 'loaded' ? state.sessions : [];\n const otherCount = sessions.filter((s) => !s.current).length;\n\n return (\n <div\n className=\"pollar-modal-card pollar-sessions-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Active sessions</h2>\n <div className=\"pollar-modal-header-actions\">\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoading}\n aria-label=\"Refresh\"\n title=\"Refresh\"\n >\n <svg\n className={isLoading ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <div className=\"pollar-sessions-list\">\n {(state.step === 'idle' || isLoading) && (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading…</span>\n </div>\n )}\n {state.step === 'error' && <div className=\"pollar-modal-empty\">{state.message}</div>}\n {state.step === 'loaded' && sessions.length === 0 && <div className=\"pollar-modal-empty\">No active sessions.</div>}\n {sessions.map((s) => {\n const isRevoking = revokingFamilyId === s.familyId;\n return (\n <div key={s.familyId} className=\"pollar-sessions-item\" data-current={s.current || undefined}>\n <div className=\"pollar-sessions-item-main\">\n <span className=\"pollar-sessions-item-device\">{describeDevice(s)}</span>\n {s.current && <span className=\"pollar-sessions-item-badge\">This device</span>}\n </div>\n <div className=\"pollar-sessions-item-meta\">\n <span>Last used {formatRelative(s.lastUsedAt ?? s.createdAt)}</span>\n {s.ipHash && (\n <>\n <span>·</span>\n <span title={`ip-hash ${s.ipHash}`}>ip {shortIp(s.ipHash)}</span>\n </>\n )}\n </div>\n {!s.current && (\n <button\n className=\"pollar-sessions-item-revoke\"\n onClick={() => onRevoke(s.familyId)}\n disabled={isRevoking || signingOutEverywhere}\n >\n {isRevoking ? (\n <>\n <span className=\"pollar-spinner pollar-spinner-sm pollar-spinner-current\" />\n Revoking…\n </>\n ) : (\n 'Revoke'\n )}\n </button>\n )}\n </div>\n );\n })}\n </div>\n\n {state.step === 'loaded' && sessions.length > 0 && (\n <div className=\"pollar-sessions-actions\">\n <button\n className=\"pollar-sessions-logout-all\"\n onClick={onLogoutEverywhere}\n disabled={signingOutEverywhere || otherCount === 0}\n title={otherCount === 0 ? 'No other devices to sign out' : undefined}\n >\n {signingOutEverywhere ? (\n <>\n <span className=\"pollar-spinner pollar-spinner-sm pollar-spinner-current\" />\n Signing out…\n </>\n ) : (\n 'Sign out everywhere'\n )}\n </button>\n </div>\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport './SessionsModal.css';\nimport { SessionsModalTemplate } from './SessionsModalTemplate';\n\ninterface SessionsModalProps {\n onClose: () => void;\n}\n\nexport function SessionsModal({ onClose }: SessionsModalProps) {\n const { getClient, styles, sessions } = usePollar();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n // Only the per-action button spinners are local UI state. The list itself\n // (idle/loading/loaded/error) lives in the client's observable `sessions`\n // store, read straight from the provider — so this component is a pure\n // reader and there's no `await`-then-`setState` to guard against unmount.\n const [revokingFamilyId, setRevokingFamilyId] = useState<string | null>(null);\n const [signingOutEverywhere, setSigningOutEverywhere] = useState(false);\n\n const load = useCallback(() => {\n void getClient().fetchSessions();\n }, [getClient]);\n\n useEffect(() => {\n load();\n }, [load]);\n\n // Auto-close on logout (logoutEverywhere from this modal, or eventual\n // 401-on-current-family-revoke). The provider clears session state when\n // the user becomes unauthenticated; mirror that here so the modal\n // tears down instead of showing stale data.\n const onCloseRef = useRef(onClose);\n onCloseRef.current = onClose;\n useEffect(() => {\n return getClient().onAuthStateChange((authState) => {\n if (authState.step === 'idle') onCloseRef.current();\n });\n }, [getClient]);\n\n const handleRevoke = useCallback(\n async (familyId: string) => {\n setRevokingFamilyId(familyId);\n try {\n await getClient().revokeSession(familyId);\n } catch {\n // Swallow — the refresh below resyncs the list with server truth, so a\n // failed revoke simply leaves the (still-active) row in place.\n } finally {\n setRevokingFamilyId(null);\n // Refresh from the server so the row disappears from the list.\n load();\n }\n },\n [getClient, load],\n );\n\n const handleLogoutEverywhere = useCallback(async () => {\n setSigningOutEverywhere(true);\n try {\n await getClient().logoutEverywhere();\n // After logout-everywhere the auth state flips to 'idle' — the\n // provider closes the parent overlay automatically. Belt-and-braces:\n // call onClose so the modal also tears down even if the consumer\n // wired it up outside the provider.\n onClose();\n } catch {\n setSigningOutEverywhere(false);\n }\n }, [getClient, onClose]);\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <SessionsModalTemplate\n theme={theme}\n accentColor={accentColor}\n state={sessions}\n revokingFamilyId={revokingFamilyId}\n signingOutEverywhere={signingOutEverywhere}\n onRefresh={() => load()}\n onRevoke={(familyId) => void handleRevoke(familyId)}\n onLogoutEverywhere={() => void handleLogoutEverywhere()}\n onClose={onClose}\n />\n </div>\n );\n}\n","'use client';\n\nimport { TransactionState, WalletId } from '@pollar/core';\nimport React from 'react';\nimport { PollarModalFooter } from '../commons';\nimport { TxStatusView } from './TxStatusView';\n\nexport interface TransactionModalTemplateProps {\n theme: string;\n accentColor: string;\n transaction: TransactionState;\n showXdr: boolean;\n copied: boolean;\n explorerUrl: string | null;\n walletType?: WalletId | null;\n onClose: () => void;\n onSignAndSend: () => void;\n onToggleXdr: () => void;\n onCopyHash: () => void;\n onRetry?: () => void;\n}\n\nexport function TransactionModalTemplate({\n theme,\n accentColor,\n transaction,\n showXdr,\n copied,\n explorerUrl,\n walletType,\n onClose,\n onSignAndSend,\n onToggleXdr,\n onCopyHash,\n onRetry,\n}: TransactionModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as React.CSSProperties;\n\n return (\n <div className=\"pollar-modal-card pollar-tx-modal\" data-theme={theme} style={cssVars} onClick={(e) => e.stopPropagation()}>\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Transaction</h2>\n </div>\n <button type=\"button\" className=\"pollar-close-btn\" onClick={onClose} aria-label=\"Close\">\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n\n <TxStatusView\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n onSignAndSend={onSignAndSend}\n onToggleXdr={onToggleXdr}\n onCopyHash={onCopyHash}\n onRetry={onRetry}\n onDone={onClose}\n />\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport './TransactionModal.css';\nimport { TransactionModalTemplate } from './TransactionModalTemplate';\n\ninterface TransactionModalProps {\n onClose: () => void;\n}\n\nexport function TransactionModal({ onClose }: TransactionModalProps) {\n const { getClient, styles, tx: transaction, network, wallet } = usePollar();\n // External-wallet signing-adapter id (freighter/albedo) drives the wallet logo;\n // null for custodial/smart, which fall back to the Pollar logo.\n const walletType = wallet?.custody === 'external' ? wallet.provider : null;\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const [showXdr, setShowXdr] = useState(false);\n const [copied, setCopied] = useState(false);\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(\n () => () => {\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n const hash = transaction.step === 'success' ? transaction.hash : null;\n const buildData = 'buildData' in transaction ? transaction.buildData : null;\n const explorerNetwork = buildData?.summary.network?.toLowerCase().includes('testnet')\n ? 'testnet'\n : buildData\n ? 'public'\n : network === 'testnet'\n ? 'testnet'\n : 'public';\n const explorerUrl = hash ? `https://stellar.expert/explorer/${explorerNetwork}/tx/${hash}` : null;\n\n function handleSignAndSend() {\n if (transaction.step === 'built') {\n void getClient().signAndSubmitTx(transaction.buildData.unsignedXdr);\n }\n }\n\n function handleCopyHash() {\n if (!hash) return;\n navigator.clipboard.writeText(hash).then(() => {\n setCopied(true);\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n copyTimerRef.current = null;\n setCopied(false);\n }, 2000);\n });\n }\n\n async function handleRetry() {\n if (transaction.step === 'error' && transaction.buildData) {\n await getClient().signAndSubmitTx(transaction.buildData.unsignedXdr);\n }\n }\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <TransactionModalTemplate\n theme={theme}\n accentColor={accentColor}\n transaction={transaction}\n showXdr={showXdr}\n copied={copied}\n explorerUrl={explorerUrl}\n walletType={walletType}\n onClose={onClose}\n onSignAndSend={handleSignAndSend}\n onToggleXdr={() => setShowXdr((v) => !v)}\n onCopyHash={handleCopyHash}\n onRetry={handleRetry}\n />\n </div>\n );\n}\n","'use client';\n\nimport { TxHistoryRecord, TxHistoryState } from '@pollar/core';\nimport { type CSSProperties, type ReactNode } from 'react';\nimport { CopyButton, PollarModalFooter } from '../commons';\n\nconst PAGE_SIZE = 10;\n\ninterface TxHistoryModalTemplateProps {\n theme: string;\n accentColor: string;\n txHistory: TxHistoryState;\n offset: number;\n onRefresh: () => void;\n onPrev: () => void;\n onNext: () => void;\n onClose: () => void;\n}\n\nfunction StatusBadge({ status }: { status: TxHistoryRecord['status'] }) {\n return (\n <span className=\"pollar-hist-item-badge\" data-status={status}>\n {status}\n </span>\n );\n}\n\nfunction formatDate(iso: string): string {\n return new Date(iso).toLocaleDateString(undefined, { month: 'short', day: 'numeric', year: 'numeric' });\n}\n\n/** Shorten a long identifier (issuer, hash, address) to `head…tail`. */\nfunction truncateMiddle(value: string, head = 4, tail = 4): string {\n return value.length <= head + tail + 1 ? value : `${value.slice(0, head)}…${value.slice(-tail)}`;\n}\n\n// Stellar account (G) and contract (C) strkeys are 56 base32 chars.\nconst STELLAR_ADDRESS = /\\b[GC][A-Z2-7]{55}\\b/g;\n\n/** Truncated address rendered as a copyable tag (issuer, wallet, contract…). */\nfunction AddressChip({ value, label }: { value: string; label: string }) {\n return (\n <span className=\"pollar-hist-item-issuer\">\n {truncateMiddle(value)}\n <CopyButton value={value} label={label} className=\"pollar-copy-btn-sm\" />\n </span>\n );\n}\n\n/**\n * Renders a summary string, swapping every full Stellar address (G… account or\n * C… contract) for an {@link AddressChip}. Plain-text runs are kept as-is.\n */\nfunction renderSummary(summary: string): ReactNode {\n const parts: ReactNode[] = [];\n let last = 0;\n let key = 0;\n STELLAR_ADDRESS.lastIndex = 0;\n for (let m = STELLAR_ADDRESS.exec(summary); m !== null; m = STELLAR_ADDRESS.exec(summary)) {\n if (m.index > last) parts.push(<span key={key++}>{summary.slice(last, m.index)}</span>);\n const address = m[0];\n parts.push(\n <AddressChip key={key++} value={address} label={address[0] === 'C' ? 'Copy contract address' : 'Copy wallet address'} />,\n );\n last = m.index + address.length;\n }\n if (parts.length === 0) return <span className=\"pollar-hist-item-title\">{summary}</span>;\n if (last < summary.length) parts.push(<span key={key}>{summary.slice(last)}</span>);\n return parts;\n}\n\nexport function TxHistoryModalTemplate({\n theme,\n accentColor,\n txHistory,\n offset,\n onRefresh,\n onPrev,\n onNext,\n onClose,\n}: TxHistoryModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const isLoading = txHistory.step === 'loading';\n const records = txHistory.step === 'loaded' ? txHistory.data.records : [];\n const total = txHistory.step === 'loaded' ? txHistory.data.total : 0;\n const hasPrev = offset > 0;\n const hasNext = offset + PAGE_SIZE < total;\n const showPagination = txHistory.step === 'loaded' && total > PAGE_SIZE;\n\n return (\n <div\n className=\"pollar-modal-card pollar-hist-modal\"\n data-theme={theme}\n style={cssVars}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Transaction History</h2>\n <div className=\"pollar-modal-header-actions\">\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoading}\n aria-label=\"Refresh\"\n title=\"Refresh\"\n >\n <svg\n className={isLoading ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <div className=\"pollar-hist-list\">\n {txHistory.step === 'idle' && <div className=\"pollar-modal-empty\">Click Refresh to load transactions.</div>}\n {isLoading && (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading…</span>\n </div>\n )}\n {txHistory.step === 'error' && <div className=\"pollar-modal-empty\">{txHistory.message}</div>}\n {txHistory.step === 'loaded' && records.length === 0 && <div className=\"pollar-modal-empty\">No transactions yet.</div>}\n {records.map((record) => {\n const hash = typeof record.hash === 'string' && record.hash.length > 0 ? record.hash : undefined;\n const explorerUrl = hash\n ? `https://stellar.expert/explorer/${record.network === 'testnet' ? 'testnet' : 'public'}/tx/${hash}`\n : undefined;\n const asset = typeof record.details?.asset === 'string' ? record.details.asset : undefined;\n // `change_trust` summaries embed the asset as `CODE:ISSUER` — split so\n // the issuer can be truncated and copied on its own.\n const colon = asset ? asset.indexOf(':') : -1;\n const trustline =\n record.operation === 'change_trust' && asset && colon > 0\n ? {\n prefix: record.summary.split(':')[0],\n code: asset.slice(0, colon),\n issuer: asset.slice(colon + 1),\n }\n : undefined;\n // `invoke_contract` summaries carry a server-truncated contract id, so\n // rebuild the chip from the full id in details instead.\n const contract =\n record.operation === 'invoke_contract' &&\n typeof record.details?.contractId === 'string' &&\n typeof record.details?.method === 'string'\n ? { method: record.details.method, contractId: record.details.contractId }\n : undefined;\n return (\n <div key={record.id} className=\"pollar-hist-item\">\n <div className=\"pollar-hist-item-top\">\n <span className=\"pollar-hist-item-summary\">\n {trustline ? (\n <>\n <span className=\"pollar-hist-item-title\">\n {trustline.prefix}: {trustline.code}\n </span>\n <AddressChip value={trustline.issuer} label=\"Copy issuer\" />\n </>\n ) : contract ? (\n <>\n <span className=\"pollar-hist-item-title\">Invoke {contract.method}() on</span>\n <AddressChip value={contract.contractId} label=\"Copy contract address\" />\n </>\n ) : (\n renderSummary(record.summary)\n )}\n </span>\n <StatusBadge status={record.status} />\n </div>\n\n <span className=\"pollar-hist-item-meta\">\n <span>{record.operation}</span>\n {typeof record.details?.sponsored === 'boolean' && (\n <span>· {record.details.sponsored ? 'Sponsored' : 'Self-paid'}</span>\n )}\n {record.feeXlm && <span>· {record.feeXlm} XLM</span>}\n </span>\n\n <div className=\"pollar-hist-item-footer\">\n <span>{formatDate(record.createdAt)}</span>\n {hash && (\n <>\n <span className=\"pollar-hist-item-dot\">·</span>\n <span className=\"pollar-hist-item-hash\">{truncateMiddle(hash, 6, 6)}</span>\n <CopyButton value={hash} label=\"Copy transaction hash\" className=\"pollar-copy-btn-sm\" />\n <a\n className=\"pollar-hist-item-explorer\"\n href={explorerUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label=\"View on Stellar Explorer\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 13 13\" fill=\"none\" aria-hidden>\n <path\n d=\"M5 2H2a1 1 0 00-1 1v8a1 1 0 001 1h8a1 1 0 001-1V8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M8 1h4m0 0v4m0-4L6 7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n </>\n )}\n </div>\n </div>\n );\n })}\n </div>\n\n {showPagination && (\n <div className=\"pollar-hist-pagination\">\n <span className=\"pollar-hist-pagination-info\">\n {offset + 1}–{Math.min(offset + PAGE_SIZE, total)} of {total}\n </span>\n <div className=\"pollar-hist-pagination-btns\">\n <button className=\"pollar-hist-page-btn\" onClick={onPrev} disabled={!hasPrev}>\n ← Prev\n </button>\n <button className=\"pollar-hist-page-btn\" onClick={onNext} disabled={!hasNext}>\n Next →\n </button>\n </div>\n </div>\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\nimport { usePollar } from '../../context';\nimport '../shared.css';\nimport './TxHistoryModal.css';\nimport { TxHistoryModalTemplate } from './TxHistoryModalTemplate';\n\nconst PAGE_SIZE = 10;\n\ninterface TxHistoryModalProps {\n onClose: () => void;\n}\n\nexport function TxHistoryModal({ onClose }: TxHistoryModalProps) {\n const { getClient, styles, txHistory } = usePollar();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n const [offset, setOffset] = useState(0);\n\n const load = useCallback(\n (nextOffset: number) => {\n setOffset(nextOffset);\n void getClient().fetchTxHistory({ limit: PAGE_SIZE, offset: nextOffset });\n },\n [getClient],\n );\n\n useEffect(() => {\n load(0);\n }, [load]);\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <TxHistoryModalTemplate\n theme={theme}\n accentColor={accentColor}\n txHistory={txHistory}\n offset={offset}\n onRefresh={() => load(offset)}\n onPrev={() => load(Math.max(0, offset - PAGE_SIZE))}\n onNext={() => load(offset + PAGE_SIZE)}\n onClose={onClose}\n />\n </div>\n );\n}\n","'use client';\n\nimport { StellarNetwork, WalletBalanceRecord, WalletBalanceState, WalletChain } from '@pollar/core';\nimport { type CSSProperties } from 'react';\nimport { ChainSelect, resolveChain } from '../ChainSelect';\nimport { BusyOverlay, CopyButton, cropAddress, PollarModalFooter, useStickyData } from '../commons';\n\n// Stellar amounts are int64 scaled by 10^7, so 7 decimals is the ledger's exact\n// precision and the default. A Polygon/Solana token carries its own `decimals`\n// and is rendered at that precision, capped at 7 so an 18-decimal ERC-20 doesn't\n// blow the column apart. Digits are padded either way so amounts line up.\n//\n// A null balance means the chain could not be read. It renders as a dash, never\n// as 0.0000000 — a wallet that failed to load must not look empty.\nfunction formatBalance(balance: string | null, decimals = 7): string {\n if (balance === null) return '—';\n const digits = Math.min(decimals, 7);\n const n = parseFloat(balance);\n return isNaN(n) ? balance : n.toLocaleString(undefined, { minimumFractionDigits: digits, maximumFractionDigits: digits });\n}\n\n/** A testnet faucet for a given asset: where to top it up, and the link text. */\ninterface FaucetHint {\n url: string;\n label: string;\n}\n\n/**\n * The faucet for a balance row, or null when none applies. Testnet-only: the\n * caller passes `null` on mainnet, where these faucets don't fund. Solana's\n * native SOL points at the Solana faucet; USDC (an SPL token) at Circle's.\n */\nfunction faucetFor(record: WalletBalanceRecord): FaucetHint | null {\n if (record.type === 'native') return { url: 'https://faucet.solana.com/', label: 'Get test SOL' };\n if (record.code === 'USDC') return { url: 'https://faucet.circle.com/', label: 'Get test USDC' };\n return null;\n}\n\n// The chain is no longer tagged per row: the list is filtered to the network\n// picked in the header, so every row would carry the same tag.\nfunction BalanceItem({ record, faucet }: { record: WalletBalanceRecord; faucet: FaucetHint | null }) {\n const balanceDiffers = record.balance !== record.available;\n return (\n <div className=\"pollar-bal-item\">\n <div className=\"pollar-bal-asset-info\">\n <span className=\"pollar-bal-asset-code-row\">\n <span className=\"pollar-bal-asset\">{record.code}</span>\n </span>\n {record.issuer && (\n <span className=\"pollar-issuer\">\n <span className=\"pollar-issuer-addr\">{cropAddress(record.issuer)}</span>\n <CopyButton value={record.issuer} label=\"Copy issuer address\" className=\"pollar-copy-btn-sm\" />\n </span>\n )}\n {faucet && (\n <span className=\"pollar-bal-faucet-hint\">\n Need more?{' '}\n <a href={faucet.url} target=\"_blank\" rel=\"noopener noreferrer\">\n {faucet.label}\n </a>\n {/* Pollar's Solana testnet is the devnet cluster, and both faucets\n fund devnet — spell it out so nobody requests on the wrong one. */}\n <span className=\"pollar-bal-faucet-net\"> (devnet)</span>\n </span>\n )}\n </div>\n <div className=\"pollar-bal-amounts\">\n <span className=\"pollar-bal-amount\">{formatBalance(record.balance, record.decimals)}</span>\n {balanceDiffers && (\n <span className=\"pollar-bal-available\">{formatBalance(record.available, record.decimals)} available</span>\n )}\n </div>\n </div>\n );\n}\n\nexport interface WalletBalanceModalTemplateProps {\n theme: string;\n accentColor: string;\n walletBalance: WalletBalanceState;\n /** Address of the wallet on {@link selectedChain}. */\n walletAddress: string;\n /** Networks the user holds a wallet on; the first one is the default. */\n chains: WalletChain[];\n selectedChain: WalletChain | null;\n /** testnet vs mainnet — gates the Solana devnet faucet hint. */\n network: StellarNetwork;\n onSelectChain: (chain: WalletChain) => void;\n onRefresh: () => void;\n onClose: () => void;\n}\n\nexport function WalletBalanceModalTemplate({\n theme,\n accentColor,\n walletBalance,\n walletAddress,\n chains,\n selectedChain,\n network,\n onSelectChain,\n onRefresh,\n onClose,\n}: WalletBalanceModalTemplateProps) {\n const isDark = theme === 'dark';\n\n const cssVars = {\n '--pollar-accent': accentColor,\n '--pollar-bg': isDark ? '#1a1a1a' : '#ffffff',\n '--pollar-border': isDark ? '#374151' : '#e5e7eb',\n '--pollar-text': isDark ? '#ffffff' : '#111827',\n '--pollar-muted': isDark ? '#9ca3af' : '#6b7280',\n '--pollar-input-bg': isDark ? '#374151' : '#f9fafb',\n '--pollar-error-bg': isDark ? '#2a1515' : '#fef2f2',\n '--pollar-error-border': isDark ? '#7f1d1d' : '#fecaca',\n '--pollar-error-text': isDark ? '#f87171' : '#dc2626',\n '--pollar-success-text': isDark ? '#4ade80' : '#16a34a',\n '--pollar-buttons-border-radius': '6px',\n '--pollar-buttons-height': '44px',\n '--pollar-input-height': '44px',\n '--pollar-input-border-radius': '0.5rem',\n '--pollar-card-border-radius': '10px',\n } as CSSProperties;\n\n const isLoading = walletBalance.step === 'loading';\n // Keep the previous payload on screen while refreshing; the overlay below\n // blocks interaction so nothing is read against data that is changing.\n const data = useStickyData(walletBalance.step === 'loaded' ? walletBalance.data : null);\n // Only the picked network's balances. The backend returns every chain in one\n // payload, so this is a local filter — switching networks costs no request.\n const balances = (data?.balances ?? []).filter((b) => resolveChain(b.chain) === selectedChain);\n // These faucets fund devnet/testnet only, so mainnet gets no hint at all.\n const showFaucets = selectedChain === 'SOLANA' && network === 'testnet';\n\n return (\n <div className=\"pollar-modal-card pollar-bal-modal\" data-theme={theme} style={cssVars} onClick={(e) => e.stopPropagation()}>\n {isLoading && data && <BusyOverlay label=\"Refreshing balances…\" />}\n\n <div className=\"pollar-modal-header\">\n <h2 className=\"pollar-modal-title\">Wallet Balance</h2>\n <div className=\"pollar-modal-header-actions\">\n <button\n type=\"button\"\n className=\"pollar-modal-close\"\n onClick={onRefresh}\n disabled={isLoading}\n aria-label=\"Refresh\"\n title=\"Refresh\"\n >\n <svg\n className={isLoading ? 'pollar-modal-refresh-icon pollar-spinning' : 'pollar-modal-refresh-icon'}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.6-3.9M13.5 2v3h-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button className=\"pollar-modal-close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M2 2l12 12M14 2L2 14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n </div>\n\n <ChainSelect value={selectedChain} options={chains} onChange={onSelectChain} disabled={isLoading} />\n\n {walletAddress && (\n <div className=\"pollar-address-row\">\n <span className=\"pollar-address\">{cropAddress(walletAddress)}</span>\n <CopyButton value={walletAddress} label=\"Copy wallet address\" />\n </div>\n )}\n\n {/* First load only — a refresh keeps the old list under the overlay. */}\n {isLoading && !data && (\n <div className=\"pollar-loading-block\">\n <div className=\"pollar-spinner\" />\n <span>Loading…</span>\n </div>\n )}\n\n {walletBalance.step === 'error' && <div className=\"pollar-modal-error\">{walletBalance.message}</div>}\n\n {data && !data.exists && <div className=\"pollar-modal-empty\">Account not found on {data.network}.</div>}\n\n {data?.exists && balances.length === 0 && <div className=\"pollar-modal-empty\">No balances found on this network.</div>}\n\n {data?.exists && balances.length > 0 && (\n <div className=\"pollar-bal-list\">\n {balances.map((b) => (\n <BalanceItem\n key={(b.chain ?? '') + b.code + (b.issuer ?? '')}\n record={b}\n faucet={showFaucets ? faucetFor(b) : null}\n />\n ))}\n </div>\n )}\n\n <PollarModalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { WalletChain } from '@pollar/core';\nimport { useEffect, useState } from 'react';\nimport { usePollar } from '../../context';\nimport { useChains } from '../../useChains';\nimport { addressForChain } from '../ChainSelect';\nimport '../shared.css';\nimport './WalletBalanceModal.css';\nimport { WalletBalanceModalTemplate } from './WalletBalanceModalTemplate';\n\ninterface WalletBalanceModalProps {\n onClose: () => void;\n}\n\nexport function WalletBalanceModal({ onClose }: WalletBalanceModalProps) {\n const { walletBalance, refreshWalletBalance, wallets, network, styles } = usePollar();\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n\n const { chains } = useChains();\n const [selectedChain, setSelectedChain] = useState<WalletChain | null>(null);\n // Default to the app's first configured network. Runs as an effect because\n // `wallets` is empty on the first render of a cold-start session.\n useEffect(() => {\n if (selectedChain === null && chains.length > 0) setSelectedChain(chains[0]!);\n }, [chains, selectedChain]);\n\n const walletAddress = addressForChain(wallets, selectedChain);\n\n useEffect(() => {\n void refreshWalletBalance();\n }, [refreshWalletBalance]);\n\n return (\n <div className=\"pollar-overlay\" onClick={onClose}>\n <WalletBalanceModalTemplate\n theme={theme}\n accentColor={accentColor}\n walletBalance={walletBalance}\n walletAddress={walletAddress}\n chains={chains}\n selectedChain={selectedChain}\n network={network}\n onSelectChain={setSelectedChain}\n onRefresh={() => refreshWalletBalance()}\n onClose={onClose}\n />\n </div>\n );\n}\n","import type { PasskeyCeremony, PasskeySigner } from '@pollar/core';\nimport { startAuthentication, startRegistration } from '@simplewebauthn/browser';\n\n// hex → base64url, for passing the raw auth digest as the WebAuthn challenge.\nfunction hexToBase64url(hex: string): string {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < bytes.length; i++) bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n let bin = '';\n for (const b of bytes) bin += String.fromCharCode(b);\n return btoa(bin).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\n// WebAuthn user.id must be a base64url string in the JSON options. It is a\n// per-credential opaque handle (the authenticator stores it for the account\n// picker); the server identifies users by credentialId, not this.\nfunction randomUserId(): string {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n let bin = '';\n for (const b of bytes) bin += String.fromCharCode(b);\n return btoa(bin).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\n/**\n * Browser passkey ceremony for the smart-wallet flow.\n *\n * `mode` is set explicitly by the caller's button, so there's no ambiguous\n * autodetect:\n * - `'login'` → `get()` only (returning user — the OS shows the account\n * picker for discoverable credentials on this domain). A\n * failure here is surfaced as-is; it never falls through to\n * registration, so cancelling the prompt can't accidentally\n * create a second wallet.\n * - `'register'` → `create()` only (new user → the server deploys the\n * C-address).\n *\n * rpId = the current page's hostname (the customer app's domain), which is what\n * the passkey is bound to — the anti-phishing guarantee.\n */\nexport const browserPasskeyCeremony: PasskeyCeremony = async ({ challenge, mode }) => {\n const rpId = window.location.hostname;\n\n if (mode === 'login') {\n const response = await startAuthentication({\n optionsJSON: { challenge, rpId, userVerification: 'required' },\n });\n return { kind: 'login', response };\n }\n\n const userId = randomUserId();\n const response = await startRegistration({\n optionsJSON: {\n challenge,\n rp: { id: rpId, name: rpId },\n user: { id: userId, name: 'Smart Wallet', displayName: 'Smart Wallet' },\n // ES256 (secp256r1) — the curve the on-chain WebAuthn verifier expects.\n pubKeyCredParams: [{ type: 'public-key', alg: -7 }],\n authenticatorSelection: { residentKey: 'required', userVerification: 'required' },\n attestation: 'none',\n timeout: 60_000,\n },\n });\n return { kind: 'register', response };\n};\n\n/**\n * Browser passkey signer for smart-wallet transactions. Runs a WebAuthn `get()`\n * whose challenge is the raw auth digest (the on-chain verifier checks\n * clientDataJSON.challenge === base64url(digest)), and returns the public\n * assertion fields (base64url) for the server to assemble into the Soroban auth\n * entry. The secp256r1 key never leaves the device.\n */\nexport const browserPasskeySigner: PasskeySigner = async ({ credentialId, challenge }) => {\n const rpId = window.location.hostname;\n const { response } = await startAuthentication({\n optionsJSON: {\n challenge: hexToBase64url(challenge),\n rpId,\n allowCredentials: [{ id: credentialId, type: 'public-key' }],\n userVerification: 'required',\n },\n });\n // @simplewebauthn/browser returns these as base64url strings.\n return {\n authenticatorData: response.authenticatorData,\n clientDataJSON: response.clientDataJSON,\n signature: response.signature,\n };\n};\n","'use client';\n\nimport {\n BuildOutcome,\n EnabledAssetsState,\n isInteractiveAuthAdapter,\n NetworkState,\n OnStorageDegrade,\n PollarAdapters,\n PollarClient,\n PollarClientConfig,\n PollarLoginOptions,\n PollarPersistedSession,\n SendPaymentParams,\n SessionsState,\n SignOutcome,\n StellarNetwork,\n SubmitOutcome,\n SwapQuote,\n SwapQuoteParams,\n SwapToken,\n SwapVenue,\n EarnProviderId,\n EarnOpportunity,\n EarnPosition,\n EarnPositionParams,\n EarnTxParams,\n TrustlineOutcome,\n TransactionState,\n TxBuildBody,\n TxHistoryState,\n WalletBalanceState,\n WalletInfo,\n} from '@pollar/core';\nimport { createContext, ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { ModalErrorBoundary, setModalErrorLogger } from './components/commons';\nimport { DistributionRulesModal } from './components/distribution-rules-modal/DistributionRulesModal';\nimport { EnabledAssetsModal } from './components/enabled-assets-modal/EnabledAssetsModal';\nimport { KycModal } from './components/kyc-modal/KycModal';\nimport { LoginModal } from './components/login-modal/LoginModal';\nimport { RampWidget } from './components/ramp-widget/RampWidget';\nimport { ReceiveModal } from './components/receive-modal/ReceiveModal';\nimport { SendModal } from './components/send-modal/SendModal';\nimport { SwapModal } from './components/swap-modal/SwapModal';\nimport { EarnModal } from './components/earn-modal/EarnModal';\nimport { SessionsModal } from './components/sessions-modal/SessionsModal';\nimport { TransactionModal } from './components/transaction-modal/TransactionModal';\nimport { TxHistoryModal } from './components/tx-history-modal/TxHistoryModal';\nimport { WalletBalanceModal } from './components/wallet-balance-modal/WalletBalanceModal';\nimport { browserPasskeyCeremony, browserPasskeySigner } from './lib/passkey-ceremony';\nimport type { PollarConfig, PollarStyles } from './types';\n\nconst DEFAULT_APP_CONFIG: PollarConfig = {\n application: { name: '', network: 'testnet', chains: [] },\n styles: {},\n};\n\n/**\n * Compares the fields of a persisted session that actually drive UI re-renders.\n * Replaces a per-listener `JSON.stringify(...) !== JSON.stringify(...)` call —\n * cheaper, allocation-free, and explicit about what counts as \"changed\".\n *\n * If a field is added to `PollarPersistedSession` that consumers read through\n * context, list it here too.\n */\nfunction sessionsEqual(a: PollarPersistedSession | null, b: PollarPersistedSession | null): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n return (\n a.clientSessionId === b.clientSessionId &&\n a.userId === b.userId &&\n a.status === b.status &&\n a.token?.accessToken === b.token?.accessToken &&\n a.token?.refreshToken === b.token?.refreshToken &&\n a.token?.expiresAt === b.token?.expiresAt &&\n a.wallet?.address === b.wallet?.address\n );\n}\n\ninterface PollarContextValue {\n /**\n * The authenticated user's wallet as a discriminated union over `custody`\n * (`internal` | `smart` | `external`), or `null` when unauthenticated. Every\n * field is meaningful for any login method — `custody` is always present and\n * strictly determines the shape of `provider`. Use `wallet.address` for the\n * on-chain address and `wallet.provider` for the wallet/login provider.\n */\n wallet: WalletInfo | null;\n /**\n * Every wallet the user holds, one per chain — a superset of {@link wallet},\n * with `chain` populated. `[]` when unauthenticated. Drives the network\n * selector in the Send / Wallet Balance / Assets modals: each entry is a\n * network the user can switch to, and the first one is the default.\n */\n wallets: WalletInfo[];\n getClient: () => PollarClient;\n openLoginModal: () => void;\n\n isAuthenticated: boolean;\n /**\n * `true` once the server has confirmed the session (login / refresh /\n * `/auth/session/resume`). `false` while a cold-start session is still\n * optimistic — gate sensitive actions (e.g. signing) on this.\n */\n verified: boolean;\n login: (options: PollarLoginOptions) => void;\n logout: () => void;\n // sessions\n sessions: SessionsState;\n /** Open the active-sessions modal. */\n openSessionsModal: () => void;\n appConfig: PollarConfig;\n styles: PollarStyles;\n /** Remote app-config load state. 'loading' while the initial fetch is in\n * flight, 'error' if it failed (styles fall back to empty defaults), 'ready'\n * once resolved — or immediately 'ready' when `appConfig` is passed as a prop.\n * The login modal shows a spinner/retry instead of an empty shell until this\n * is 'ready'. */\n configStatus: 'loading' | 'ready' | 'error';\n /** Re-run the remote app-config fetch after an error. No-op when `appConfig`\n * was supplied as a prop. */\n retryConfig: () => void;\n // transactions\n openTxModal: () => void;\n tx: TransactionState;\n buildTx: (\n operation: TxBuildBody['operation'],\n params: TxBuildBody['params'],\n options?: TxBuildBody['options'],\n ) => Promise<BuildOutcome>;\n signAndSubmitTx: (unsignedXdr?: string) => Promise<SubmitOutcome>;\n /** External-wallet only. Custodial flows should use `signAndSubmitTx`. */\n signTx: (unsignedXdr: string) => Promise<SignOutcome>;\n submitTx: (signedXdr: string) => Promise<SubmitOutcome>;\n /** One-shot: build → sign → submit. Drives the same TransactionState flow as the split calls. */\n buildAndSignAndSubmitTx: (\n operation: TxBuildBody['operation'],\n params: TxBuildBody['params'],\n options?: TxBuildBody['options'],\n ) => Promise<SubmitOutcome>;\n /** Alias of `buildAndSignAndSubmitTx`. */\n runTx: (\n operation: TxBuildBody['operation'],\n params: TxBuildBody['params'],\n options?: TxBuildBody['options'],\n ) => Promise<SubmitOutcome>;\n /**\n * Send a payment on any chain the user holds a wallet on. Stellar keeps the\n * split flow (so external adapters and passkeys still work); a chain whose\n * signature expires goes through one server-side call and is custodial-only.\n */\n sendPayment: (params: SendPaymentParams) => Promise<SubmitOutcome>;\n // network\n network: StellarNetwork;\n setNetwork: (network: StellarNetwork) => void;\n // wallet balance\n walletBalance: WalletBalanceState;\n refreshWalletBalance: () => Promise<void>;\n // enabled assets\n /**\n * The application's dashboard-enabled assets paired with the authenticated\n * wallet's on-chain trustline state (`trustlineEstablished` per asset). Driven\n * by {@link refreshAssets}; mirrors {@link walletBalance}.\n */\n enabledAssets: EnabledAssetsState;\n refreshAssets: () => Promise<void>;\n /**\n * Establishes (omit `limit`) or removes (`limit: '0'`) a trustline for an\n * asset. Sponsorship is derived automatically from the app's dashboard config\n * (the app covers the reserve + fee when eligible); pass `skipSponsorship` to\n * force the user's own wallet to pay. Mirrors {@link PollarClient.setTrustline}.\n */\n setTrustline: (\n asset: { code: string; issuer: string },\n opts?: {\n limit?: string;\n /** Force self-pay even when the app would sponsor the trustline. */\n skipSponsorship?: boolean;\n },\n ) => Promise<TrustlineOutcome>;\n /** Open the enabled-assets / trustline-state modal. */\n openEnabledAssetsModal: () => void;\n // kyc\n openKycModal: (options?: {\n country?: string;\n level?: 'basic' | 'intermediate' | 'enhanced';\n onApproved?: () => void;\n }) => void;\n // ramps\n openRampModal: () => void;\n // tx history\n txHistory: TxHistoryState;\n openTxHistoryModal: () => void;\n // wallet balance modal\n openWalletBalanceModal: () => void;\n // send / receive\n openSendModal: () => void;\n openReceiveModal: () => void;\n // swap (DEX/AMM)\n /**\n * The swap venues this app exposes to end-users (empty = swap disabled, hide\n * swap UI). Mirrors {@link PollarClient.getSwapConfig}.\n */\n getSwapConfig: () => Promise<SwapVenue[]>;\n /**\n * The curated \"buy\" tokens this app opted into (admin catalog). Mirrors\n * {@link PollarClient.getSwapTokens}.\n */\n getSwapTokens: () => Promise<SwapToken[]>;\n /**\n * Quote an asset-to-asset swap across the requested venue(s). Read-only;\n * returns quotes ranked best-first. Mirrors {@link PollarClient.getSwapQuote}.\n */\n getSwapQuote: (params: SwapQuoteParams) => Promise<SwapQuote[]>;\n /**\n * Execute a swap from a quote (establishes the buy-asset trustline first when\n * needed). Drives the transaction state machine. Mirrors {@link PollarClient.swap}.\n */\n swap: (quote: SwapQuote, opts?: { autoTrustline?: boolean }) => Promise<SubmitOutcome>;\n /** Open the swap modal. */\n openSwapModal: () => void;\n // earn (yield vaults / lending)\n /**\n * The yield providers this app exposes to end-users (empty = Earn disabled,\n * hide Earn UI). Mirrors {@link PollarClient.getEarnProviders}.\n */\n getEarnProviders: () => Promise<EarnProviderId[]>;\n /**\n * The vaults (DeFindex) or pools (Blend) a provider exposes, with live APY.\n * Mirrors {@link PollarClient.getEarnOpportunities}.\n */\n getEarnOpportunities: (provider: EarnProviderId) => Promise<EarnOpportunity[]>;\n /**\n * The connected wallet's position (balance + APY) in a vault/pool. Read-only.\n * Mirrors {@link PollarClient.getEarnPosition}.\n */\n getEarnPosition: (params: EarnPositionParams) => Promise<EarnPosition>;\n /**\n * Deposit into a vault/pool (asset amount). Drives the transaction state\n * machine. Mirrors {@link PollarClient.earnDeposit}.\n */\n earnDeposit: (params: EarnTxParams) => Promise<SubmitOutcome>;\n /**\n * Withdraw from a vault/pool (amount in the position `withdrawUnit`). Mirrors\n * {@link PollarClient.earnWithdraw}.\n */\n earnWithdraw: (params: EarnTxParams) => Promise<SubmitOutcome>;\n /** Open the Earn modal. */\n openEarnModal: () => void;\n // distribution\n openDistributionRulesModal: () => void;\n // adapters\n adapters?: PollarAdapters;\n}\n\nconst PollarContext = createContext<PollarContextValue | null>(null);\n\ninterface PollarProviderProps {\n /**\n * Either a pre-built `PollarClient` instance (useful for testing or for\n * reusing the same client outside React) or a `PollarClientConfig` that the\n * provider will use to construct one on mount.\n *\n * The client is locked at first render: changing this prop afterwards is\n * ignored. To swap clients, unmount and remount the provider.\n */\n client: PollarClient | PollarClientConfig;\n /**\n * Local REPLACEMENT for the `/applications/config` response, not a patch over\n * it. Passing anything at all skips the remote fetch entirely; what you pass\n * is used verbatim and is never merged with the server's answer, so there is\n * no \"fill in the fields I left out\".\n *\n * `styles` may be partial (every field in it is optional), but `application`\n * may not: `name`, `network` and `chains` are all required by the type. If you\n * bypass the type anyway (plain JS, or a cast), each missing field lands on a\n * default scattered across the components rather than on anything central:\n *\n * chains absent → the chain order/filter falls back to the order the\n * session listed the user's wallets in (see useChains)\n * name absent → 'Pollar'\n * theme absent → 'light'\n * accentColor absent → '#005DB4'\n * emailEnabled, providers, embeddedWallets, smartWallet\n * absent → false. NOTE: that means EVERY login method is off\n * and the login modal renders with no way in.\n *\n * Leave this `undefined` to have the SDK fetch `/applications/config` on\n * mount, which is also what keeps branding, login methods and chains current:\n * that fetch re-runs on every mount, so dashboard changes land on the next\n * page load. Supplying this prop opts out of that too.\n */\n appConfig?: PollarConfig;\n adapters?: PollarAdapters;\n /**\n * Notified when persistent storage silently degrades to in-memory mode\n * (Safari private browsing quota errors, sandboxed iframes, etc.). Use this\n * to surface a UI hint that the session won't survive a reload, log to\n * telemetry, or fall back to a different storage strategy.\n *\n * Fires at most once per provider lifetime; late mounts get the latched\n * state replayed on subscribe.\n */\n onStorageDegrade?: OnStorageDegrade;\n children: ReactNode;\n}\n\nexport function PollarProvider({\n client,\n appConfig: appConfigProp,\n adapters,\n onStorageDegrade,\n children,\n}: PollarProviderProps) {\n // When the consumer passes a config (not a ready client), inject the browser\n // passkey ceremony so `loginSmartWallet()` works out of the box on web. The\n // consumer can override it (e.g. a React Native native provider) via\n // `client.passkey`.\n const [pollarClient] = useState<PollarClient>(() =>\n client instanceof PollarClient\n ? client\n : new PollarClient({ passkey: browserPasskeyCeremony, passkeySign: browserPasskeySigner, ...client }),\n );\n // Only a client WE constructed is ours to tear down on unmount; a client the\n // consumer passed in is theirs to manage. Captured once (the useState\n // initializer above made the same decision).\n const ownsClientRef = useRef(!(client instanceof PollarClient));\n const destroyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Tear down the client on a real unmount so its cross-tab storage listener,\n // refresh timer, and live-client registry entry don't leak — matters when the\n // provider is keyed (e.g. `key={apiKey}`) and remounts on network change.\n useEffect(() => {\n if (!ownsClientRef.current) return;\n // This mount is live again — cancel any teardown scheduled by a prior\n // (StrictMode dev) unmount before it can destroy the client we still use.\n if (destroyTimerRef.current) {\n clearTimeout(destroyTimerRef.current);\n destroyTimerRef.current = null;\n }\n return () => {\n // Defer to a macrotask: React StrictMode unmounts then synchronously\n // remounts in dev, and the remount's effect (above) cancels this before it\n // runs. On a real unmount nothing re-mounts to cancel it, so it fires.\n destroyTimerRef.current = setTimeout(() => pollarClient.destroy(), 0);\n };\n }, [pollarClient]);\n const [networkState, setNetworkState] = useState<NetworkState>(() => pollarClient.getNetworkState());\n const [sessionState, setSessionState] = useState<PollarPersistedSession | null>(null);\n // `true` once the server has confirmed the restored session (via login,\n // refresh, or `/auth/session/resume`). Use it to gate sensitive actions\n // while a cold-start session is still optimistic.\n const [verified, setVerified] = useState(false);\n const [transaction, setTransaction] = useState<TransactionState>({ step: 'idle' });\n const [txHistory, setTxHistory] = useState<TxHistoryState>({ step: 'idle' });\n const [sessions, setSessions] = useState<SessionsState>({ step: 'idle' });\n const [walletBalance, setWalletBalance] = useState<WalletBalanceState>({ step: 'idle' });\n const [enabledAssets, setEnabledAssets] = useState<EnabledAssetsState>({ step: 'idle' });\n const [resolvedConfig, setResolvedConfig] = useState<PollarConfig>(() => appConfigProp ?? DEFAULT_APP_CONFIG);\n const [configStatus, setConfigStatus] = useState<'loading' | 'ready' | 'error'>(\n appConfigProp !== undefined ? 'ready' : 'loading',\n );\n const [configRetry, setConfigRetry] = useState(0);\n const retryConfig = useCallback(() => setConfigRetry((n) => n + 1), []);\n\n useEffect(() => {\n return pollarClient.onTransactionStateChange(setTransaction);\n }, [pollarClient]);\n\n useEffect(() => {\n return pollarClient.onTxHistoryStateChange(setTxHistory);\n }, [pollarClient]);\n\n useEffect(() => {\n return pollarClient.onSessionsStateChange(setSessions);\n }, [pollarClient]);\n\n useEffect(() => {\n return pollarClient.onWalletBalanceStateChange(setWalletBalance);\n }, [pollarClient]);\n\n useEffect(() => {\n return pollarClient.onEnabledAssetsStateChange(setEnabledAssets);\n }, [pollarClient]);\n\n useEffect(() => {\n return pollarClient.onNetworkStateChange((state) => {\n setNetworkState(state);\n });\n }, [pollarClient]);\n\n useEffect(() => {\n if (!onStorageDegrade) return;\n return pollarClient.onStorageDegrade(onStorageDegrade);\n }, [pollarClient, onStorageDegrade]);\n\n useEffect(() => {\n return pollarClient.onAuthStateChange((authState) => {\n if (authState.step === 'authenticated') {\n setSessionState((prev) => (sessionsEqual(prev, authState.session) ? prev : authState.session));\n // The session object is identical between the optimistic restore and\n // the post-resume confirmation, so `verified` is tracked separately —\n // otherwise the sessionsEqual short-circuit would swallow the flip.\n setVerified(authState.verified);\n } else if (authState.step === 'idle') {\n setSessionState(null);\n setVerified(false);\n }\n });\n }, [pollarClient]);\n\n // Auto-login for interactive adapters (e.g. Privy). When the adapter's\n // provider authenticates *outside* the sub-modal flow — after an OAuth redirect\n // (the page reloaded, so the sub-modal promise is gone) or a persisted provider\n // session on load — and Pollar has no session yet, trigger `login({ provider })`\n // so `connect()` + SEP-10 run. Read the session through a ref so the\n // subscription is set up once and never re-subscribes on session changes.\n const sessionRef = useRef(sessionState);\n sessionRef.current = sessionState;\n useEffect(() => {\n const unsubscribes: Array<() => void> = [];\n for (const { id } of pollarClient.listWalletAdapters()) {\n const adapter = pollarClient.getWalletAdapter(id);\n if (!isInteractiveAuthAdapter(adapter) || !adapter.onProviderAuthChange) continue;\n let triggered = false;\n unsubscribes.push(\n adapter.onProviderAuthChange((state) => {\n // Reset on sign-out so a later re-auth can trigger again (rising edge).\n if (!state.authenticated || !state.address) {\n triggered = false;\n return;\n }\n if (triggered || sessionRef.current?.wallet?.address) return;\n triggered = true;\n pollarClient.login({ provider: id } as PollarLoginOptions);\n }),\n );\n }\n return () => {\n for (const unsubscribe of unsubscribes) unsubscribe();\n };\n }, [pollarClient]);\n\n // Route the modal error boundary's logs through the client's level-gated\n // logger (it's a class component that can't read context directly).\n useEffect(() => {\n setModalErrorLogger(pollarClient.getLogger());\n }, [pollarClient]);\n\n useEffect(() => {\n // PRESENCE of `appConfig` is the opt-out, not its contents: any value at all\n // means the consumer owns the config, so the remote fetch never runs and\n // what they passed is used as-is. It is 'ready' immediately because there is\n // nothing to wait for.\n //\n // Otherwise this runs on every mount, which is what keeps branding, login\n // methods and chains current: a change in the dashboard lands on the next\n // page load with no re-login.\n if (appConfigProp !== undefined) {\n setConfigStatus('ready');\n return;\n }\n let cancelled = false;\n setConfigStatus('loading');\n pollarClient\n .getAppConfig()\n .then((fetched) => {\n if (cancelled) return;\n if (!fetched) {\n setConfigStatus('error');\n return;\n }\n setResolvedConfig(fetched as PollarConfig);\n setConfigStatus('ready');\n })\n .catch((err) => {\n if (cancelled) return;\n pollarClient.getLogger().error('[PollarProvider] getAppConfig failed', err);\n setConfigStatus('error');\n });\n return () => {\n cancelled = true;\n };\n }, [pollarClient, appConfigProp, configRetry]);\n\n const [loginModalOpen, setLoginModalOpen] = useState(false);\n const [transactionModalOpen, setTransactionModalOpen] = useState(false);\n const [kycModalOpen, setKycModalOpen] = useState(false);\n const [kycModalOptions, setKycModalOptions] = useState<{\n country?: string;\n level?: 'basic' | 'intermediate' | 'enhanced';\n onApproved?: () => void;\n }>({});\n const [rampModalOpen, setRampModalOpen] = useState(false);\n const [txHistoryModalOpen, setTxHistoryModalOpen] = useState(false);\n const [walletBalanceModalOpen, setWalletBalanceModalOpen] = useState(false);\n const [enabledAssetsModalOpen, setEnabledAssetsModalOpen] = useState(false);\n const [sendModalOpen, setSendModalOpen] = useState(false);\n const [swapModalOpen, setSwapModalOpen] = useState(false);\n const [earnModalOpen, setEarnModalOpen] = useState(false);\n // Bumped every time a tx-driving modal opens, used as its `key` so a re-open\n // remounts it (local `step` back to the form) even when it was already open on\n // a terminal \"Done!\"/error screen. Paired with `resetTransactionState()`.\n const [sendModalKey, setSendModalKey] = useState(0);\n const [swapModalKey, setSwapModalKey] = useState(0);\n const [earnModalKey, setEarnModalKey] = useState(0);\n const [receiveModalOpen, setReceiveModalOpen] = useState(false);\n const [sessionsModalOpen, setSessionsModalOpen] = useState(false);\n const [distributionRulesModalOpen, setDistributionRulesModalOpen] = useState(false);\n\n // PII (incl. providers.wallet.address) lives on `client.getUserProfile()`, not on the\n // persisted session. For every wallet type, `wallet.address` holds the on-chain\n // address we care about.\n const walletAddress = sessionState?.wallet?.address || '';\n const getClient = useCallback(() => pollarClient, [pollarClient]);\n // refreshBalance resolves the own wallet server-side from the session;\n // walletAddress stays in deps so the callback re-binds when the wallet changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps -- walletAddress is an intentional re-bind trigger, not read in the body\n const refreshWalletBalance = useCallback(() => pollarClient.refreshBalance(), [pollarClient, walletAddress]);\n // refreshAssets resolves the own wallet server-side from the session;\n // walletAddress stays in deps so the callback re-binds when the wallet changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps -- walletAddress is an intentional re-bind trigger, not read in the body\n const refreshAssets = useCallback(() => pollarClient.refreshAssets(), [pollarClient, walletAddress]);\n\n const contextValue: PollarContextValue = useMemo(() => {\n const styles: PollarStyles = resolvedConfig.styles ?? {};\n return {\n // session\n wallet: pollarClient.getWallet(),\n wallets: pollarClient.getWallets(),\n isAuthenticated: !!walletAddress,\n verified,\n // client\n getClient,\n // auth\n login: (options: PollarLoginOptions) => pollarClient.login(options),\n logout: () => pollarClient.logout(),\n openLoginModal: () => setLoginModalOpen(true),\n // transactions\n tx: transaction,\n buildTx: (operation, params, options) => pollarClient.buildTx(operation, params, options),\n signAndSubmitTx: (unsignedXdr?: string) => pollarClient.signAndSubmitTx(unsignedXdr),\n signTx: (unsignedXdr: string) => pollarClient.signTx(unsignedXdr),\n submitTx: (signedXdr: string) => pollarClient.submitTx(signedXdr),\n buildAndSignAndSubmitTx: (operation, params, options) => pollarClient.buildAndSignAndSubmitTx(operation, params, options),\n runTx: (operation, params, options) => pollarClient.runTx(operation, params, options),\n sendPayment: (params) => pollarClient.sendPayment(params),\n openTxModal: () => setTransactionModalOpen(true),\n // tx history\n txHistory,\n openTxHistoryModal: () => setTxHistoryModalOpen(true),\n // wallet balance\n walletBalance,\n refreshWalletBalance,\n openWalletBalanceModal: () => setWalletBalanceModalOpen(true),\n // enabled assets\n enabledAssets,\n refreshAssets,\n setTrustline: (asset, opts) => pollarClient.setTrustline(asset, opts),\n openEnabledAssetsModal: () => setEnabledAssetsModalOpen(true),\n // send / receive\n openSendModal: () => {\n pollarClient.resetTransactionState();\n setSendModalKey((k) => k + 1);\n setSendModalOpen(true);\n },\n openReceiveModal: () => setReceiveModalOpen(true),\n // swap\n getSwapConfig: () => pollarClient.getSwapConfig(),\n getSwapTokens: () => pollarClient.getSwapTokens(),\n getSwapQuote: (params) => pollarClient.getSwapQuote(params),\n swap: (quote, opts) => pollarClient.swap(quote, opts),\n openSwapModal: () => {\n pollarClient.resetTransactionState();\n setSwapModalKey((k) => k + 1);\n setSwapModalOpen(true);\n },\n // earn\n getEarnProviders: () => pollarClient.getEarnProviders(),\n getEarnOpportunities: (provider) => pollarClient.getEarnOpportunities(provider),\n getEarnPosition: (params) => pollarClient.getEarnPosition(params),\n earnDeposit: (params) => pollarClient.earnDeposit(params),\n earnWithdraw: (params) => pollarClient.earnWithdraw(params),\n openEarnModal: () => {\n pollarClient.resetTransactionState();\n setEarnModalKey((k) => k + 1);\n setEarnModalOpen(true);\n },\n // sessions\n sessions,\n openSessionsModal: () => setSessionsModalOpen(true),\n // distribution\n openDistributionRulesModal: () => setDistributionRulesModalOpen(true),\n // network\n network: networkState.step === 'connected' ? networkState.network : 'testnet',\n setNetwork: (network: StellarNetwork) => pollarClient.setNetwork(network),\n // kyc\n openKycModal: (options = {}) => {\n setKycModalOptions(options);\n setKycModalOpen(true);\n },\n // ramp\n openRampModal: () => setRampModalOpen(true),\n // config\n appConfig: resolvedConfig,\n styles,\n configStatus,\n retryConfig,\n adapters,\n } as PollarContextValue;\n }, [\n walletAddress,\n verified,\n pollarClient,\n getClient,\n transaction,\n txHistory,\n sessions,\n walletBalance,\n refreshWalletBalance,\n enabledAssets,\n refreshAssets,\n networkState,\n resolvedConfig,\n configStatus,\n retryConfig,\n adapters,\n ]);\n\n return (\n <PollarContext.Provider value={contextValue}>\n {children}\n {loginModalOpen && (\n <ModalErrorBoundary onClose={() => setLoginModalOpen(false)}>\n <LoginModal onClose={() => setLoginModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {transactionModalOpen && (\n <ModalErrorBoundary onClose={() => setTransactionModalOpen(false)}>\n <TransactionModal onClose={() => setTransactionModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {kycModalOpen && (\n <ModalErrorBoundary onClose={() => setKycModalOpen(false)}>\n <KycModal\n onClose={() => setKycModalOpen(false)}\n {...(kycModalOptions.country !== undefined && { country: kycModalOptions.country })}\n {...(kycModalOptions.level !== undefined && { level: kycModalOptions.level })}\n {...(kycModalOptions.onApproved !== undefined && { onApproved: kycModalOptions.onApproved })}\n />\n </ModalErrorBoundary>\n )}\n {rampModalOpen && (\n <ModalErrorBoundary onClose={() => setRampModalOpen(false)}>\n <RampWidget onClose={() => setRampModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {txHistoryModalOpen && (\n <ModalErrorBoundary onClose={() => setTxHistoryModalOpen(false)}>\n <TxHistoryModal onClose={() => setTxHistoryModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {walletBalanceModalOpen && (\n <ModalErrorBoundary onClose={() => setWalletBalanceModalOpen(false)}>\n <WalletBalanceModal onClose={() => setWalletBalanceModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {enabledAssetsModalOpen && (\n <ModalErrorBoundary onClose={() => setEnabledAssetsModalOpen(false)}>\n <EnabledAssetsModal onClose={() => setEnabledAssetsModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {sendModalOpen && (\n <ModalErrorBoundary key={sendModalKey} onClose={() => setSendModalOpen(false)}>\n <SendModal onClose={() => setSendModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {swapModalOpen && (\n <ModalErrorBoundary key={swapModalKey} onClose={() => setSwapModalOpen(false)}>\n <SwapModal onClose={() => setSwapModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {earnModalOpen && (\n <ModalErrorBoundary key={earnModalKey} onClose={() => setEarnModalOpen(false)}>\n <EarnModal onClose={() => setEarnModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {receiveModalOpen && (\n <ModalErrorBoundary onClose={() => setReceiveModalOpen(false)}>\n <ReceiveModal onClose={() => setReceiveModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {sessionsModalOpen && (\n <ModalErrorBoundary onClose={() => setSessionsModalOpen(false)}>\n <SessionsModal onClose={() => setSessionsModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {distributionRulesModalOpen && (\n <ModalErrorBoundary onClose={() => setDistributionRulesModalOpen(false)}>\n <DistributionRulesModal onClose={() => setDistributionRulesModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n </PollarContext.Provider>\n );\n}\n\nexport function usePollar() {\n const ctx = useContext(PollarContext);\n if (!ctx) {\n throw new Error('usePollar must be used inside <PollarProvider>');\n }\n return ctx;\n}\n","'use client';\n\nimport type { PollarAdapter, SubmitOutcome } from '@pollar/core';\nimport { usePollar } from './context';\n\ntype WrappedAdapter<T extends PollarAdapter> = {\n [K in keyof T]: (params: Parameters<T[K]>[0]) => Promise<SubmitOutcome>;\n};\n\nexport function createPollarAdapterHook<T extends PollarAdapter>(key: string) {\n return function usePollarAdapter(): WrappedAdapter<T> {\n const { adapters, signAndSubmitTx } = usePollar();\n const adapter = adapters?.[key] as T | undefined;\n\n if (!adapter) {\n throw new Error(`No adapter \"${key}\" provided to PollarProvider`);\n }\n\n return Object.fromEntries(\n Object.entries(adapter).map(([name, fn]) => [\n name,\n async (params: Parameters<typeof fn>[0]) => {\n const { unsignedTransaction } = await fn(params);\n return signAndSubmitTx(unsignedTransaction);\n },\n ]),\n ) as WrappedAdapter<T>;\n };\n}\n","'use client';\n\nimport { WalletId } from '@pollar/core';\nimport { LOGO_POLLAR } from '../../constants';\nimport './WalletButton.css';\n\nfunction ButtonLogo() {\n return <img src={LOGO_POLLAR} alt=\"Pollar\" width={22} height={22} className=\"pollar-wallet-btn-logo\" />;\n}\n\nexport interface WalletButtonTemplateProps {\n walletAddress: string | null;\n accentColor: string;\n open: boolean;\n copied: boolean;\n dropdownBg: string;\n dropdownBorder: string;\n itemColor: string;\n wrapperRef: React.RefObject<HTMLDivElement>;\n isInProgress: boolean;\n walletType: WalletId | null;\n /** Show the \"Create account\" action (external wallet not yet on-chain, IMMEDIATE funding). */\n showCreateAccount: boolean;\n creatingAccount: boolean;\n onToggleOpen: () => void;\n onCreateAccount: () => void;\n onCopy: () => void;\n onWalletBalance: () => void;\n onTxHistory: () => void;\n onSend: () => void;\n onReceive: () => void;\n onSessions: () => void;\n onKyc: () => void;\n onRamp: () => void;\n onDistributionRules: () => void;\n onLogout: () => void;\n onLogin: () => void;\n}\n\nfunction cropWallet(address: string) {\n if (address.length <= 12) return address;\n return `${address.slice(0, 6)}...${address.slice(-4)}`;\n}\n\nexport function WalletButtonTemplate({\n walletAddress,\n accentColor,\n open,\n copied,\n dropdownBg,\n dropdownBorder,\n itemColor,\n wrapperRef,\n isInProgress,\n showCreateAccount,\n creatingAccount,\n onToggleOpen,\n onCreateAccount,\n onCopy,\n onWalletBalance,\n onTxHistory,\n onSend,\n onReceive,\n onSessions,\n onKyc,\n onRamp,\n onDistributionRules,\n onLogout,\n onLogin,\n}: WalletButtonTemplateProps) {\n if (!walletAddress) {\n return (\n <button type=\"button\" className=\"pollar-wallet-login-btn\" style={{ backgroundColor: accentColor }} onClick={onLogin}>\n <ButtonLogo />\n Login with Pollar\n </button>\n );\n }\n\n return (\n <div className=\"pollar-wallet-wrapper\" ref={wrapperRef}>\n <button\n className=\"pollar-wallet-btn\"\n style={{ backgroundColor: accentColor }}\n onClick={isInProgress ? undefined : onToggleOpen}\n disabled={isInProgress}\n aria-busy={isInProgress}\n >\n <span className=\"pollar-wallet-btn-label\">{cropWallet(walletAddress)}</span>\n {isInProgress ? (\n <svg className=\"pollar-wallet-btn-spinner\" viewBox=\"0 0 12 12\" width=\"12\" height=\"12\" fill=\"none\" aria-hidden>\n <circle cx=\"6\" cy=\"6\" r=\"4.5\" stroke=\"rgba(255,255,255,0.35)\" strokeWidth=\"1.5\" />\n <circle\n cx=\"6\"\n cy=\"6\"\n r=\"4.5\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeDasharray=\"14 9\"\n transform=\"rotate(-90 6 6)\"\n />\n </svg>\n ) : (\n <svg\n className={`pollar-wallet-chevron${open ? ' pollar-open' : ''}`}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"2,4 6,8 10,4\" />\n </svg>\n )}\n </button>\n\n {open && (\n <div className=\"pollar-wallet-dropdown\" style={{ backgroundColor: dropdownBg, borderColor: dropdownBorder }}>\n {showCreateAccount && (\n <>\n <button\n className=\"pollar-wallet-dropdown-item\"\n style={{ color: itemColor }}\n onClick={onCreateAccount}\n disabled={creatingAccount}\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <line x1=\"19\" y1=\"8\" x2=\"19\" y2=\"14\" />\n <line x1=\"22\" y1=\"11\" x2=\"16\" y2=\"11\" />\n </svg>\n {creatingAccount ? 'Creating account…' : 'Create account'}\n </button>\n <div className=\"pollar-wallet-dropdown-divider\" />\n </>\n )}\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onSend}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\" />\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\" />\n </svg>\n Send\n </button>\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onReceive}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"8 17 12 21 16 17\" />\n <line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\" />\n <path d=\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\" />\n </svg>\n Receive\n </button>\n <div className=\"pollar-wallet-dropdown-divider\" />\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onCopy}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </svg>\n {copied ? 'Copied!' : 'Copy address'}\n </button>\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onWalletBalance}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\" />\n <circle cx=\"16\" cy=\"12\" r=\"2\" />\n <path d=\"M22 8H12\" />\n </svg>\n Wallet balance\n </button>\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onTxHistory}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14,2 14,8 20,8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <polyline points=\"10,9 9,9 8,9\" />\n </svg>\n Transaction history\n </button>\n <div className=\"pollar-wallet-dropdown-divider\" />\n {/* Buy / Sell (ramp) */}\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onRamp}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"17 1 21 5 17 9\" />\n <path d=\"M3 11V9a4 4 0 0 1 4-4h14\" />\n <polyline points=\"7 23 3 19 7 15\" />\n <path d=\"M21 13v2a4 4 0 0 1-4 4H3\" />\n </svg>\n Buy / Sell\n </button>\n {/* Identity verification */}\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onKyc}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z\" />\n <path d=\"M2 21v-1a6 6 0 0 1 6-6h2\" />\n <polyline points=\"16 11 18 13 22 9\" />\n </svg>\n Identity verification\n </button>\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onDistributionRules}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"18\" cy=\"5\" r=\"3\" />\n <circle cx=\"6\" cy=\"12\" r=\"3\" />\n <circle cx=\"18\" cy=\"19\" r=\"3\" />\n <line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\" />\n <line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\" />\n </svg>\n Distribution rules\n </button>\n <button className=\"pollar-wallet-dropdown-item\" style={{ color: itemColor }} onClick={onSessions}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\" />\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\" />\n </svg>\n Active sessions\n </button>\n <div className=\"pollar-wallet-dropdown-divider\" />\n <button className=\"pollar-wallet-dropdown-item pollar-danger\" onClick={onLogout}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <polyline points=\"16,17 21,12 16,7\" />\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n </svg>\n Log out\n </button>\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport { usePollar } from '../../context';\nimport { useChains } from '../../useChains';\nimport { WalletButtonTemplate } from './WalletButtonTemplate';\nimport './WalletButton.css';\n\nexport function WalletButton() {\n const {\n getClient,\n wallet,\n styles,\n openLoginModal,\n openTxHistoryModal,\n openWalletBalanceModal,\n openSendModal,\n openReceiveModal,\n openSessionsModal,\n openKycModal,\n openRampModal,\n openDistributionRulesModal,\n tx: transaction,\n } = usePollar();\n // The address shown (and copied) is the one on the app's FIRST configured\n // chain, not `wallet.address` — that field is the Stellar wallet by definition\n // in core, so this button used to say \"Stellar\" to an app whose users live on\n // Polygon. Falls back to it while `/config` loads and for a legacy session that\n // enumerates no wallets.\n const { primaryAddress } = useChains();\n const walletAddress = primaryAddress || (wallet?.address ?? '');\n // External-wallet signing-adapter id (freighter/albedo) drives the wallet logo;\n // null for custodial/smart, which fall back to the Pollar logo.\n const walletType = wallet?.custody === 'external' ? wallet.provider : null;\n const [open, setOpen] = useState(false);\n const [copied, setCopied] = useState(false);\n const [creating, setCreating] = useState(false);\n const [created, setCreated] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isInProgress = transaction.step === 'building' || transaction.step === 'signing';\n // Offer on-chain account creation only for an EXTERNAL wallet Stellar doesn't\n // have yet, under IMMEDIATE funding. `existsOnStellar === false` (not just\n // falsy) so an unknown/legacy session doesn't wrongly show it. `created` hides\n // it optimistically after a successful create (the session's existsOnStellar\n // only refreshes on the next login/resume).\n const canCreateAccount =\n !created && wallet?.custody === 'external' && wallet.existsOnStellar === false && wallet.fundingMode === 'IMMEDIATE';\n\n const { theme = 'light', accentColor = '#005DB4' } = styles;\n const isDark = theme === 'dark';\n const dropdownBg = isDark ? '#18181b' : '#fff';\n const dropdownBorder = isDark ? '#3f3f46' : '#e4e4e7';\n const itemColor = isDark ? '#fafafa' : '#18181b';\n\n useEffect(() => {\n function handleClickOutside(e: MouseEvent) {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n useEffect(\n () => () => {\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n async function handleCopy() {\n if (!walletAddress) return;\n await navigator.clipboard.writeText(walletAddress);\n setCopied(true);\n if (copyTimerRef.current !== null) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => {\n copyTimerRef.current = null;\n setCopied(false);\n }, 1500);\n }\n\n function handleLogout() {\n setOpen(false);\n getClient().logout();\n }\n\n async function handleCreateAccount() {\n if (creating) return;\n setCreating(true);\n try {\n const res = await getClient().createAccount();\n if (res.status === 'success' || res.status === 'pending') {\n setCreated(true);\n setOpen(false);\n await getClient().refreshBalance();\n }\n // On error, keep the item so the user can retry (createAccount surfaces the\n // reason in res.details; the send/receive modals also report failures).\n } finally {\n setCreating(false);\n }\n }\n\n function handleWalletBalance() {\n setOpen(false);\n openWalletBalanceModal();\n }\n\n function handleTxHistory() {\n setOpen(false);\n openTxHistoryModal();\n }\n\n function handleSend() {\n setOpen(false);\n openSendModal();\n }\n\n function handleReceive() {\n setOpen(false);\n openReceiveModal();\n }\n\n function handleSessions() {\n setOpen(false);\n openSessionsModal();\n }\n\n function handleKyc() {\n setOpen(false);\n openKycModal();\n }\n\n function handleRamp() {\n setOpen(false);\n openRampModal();\n }\n\n function handleDistributionRules() {\n setOpen(false);\n openDistributionRulesModal();\n }\n\n return (\n <WalletButtonTemplate\n walletAddress={walletAddress ?? null}\n accentColor={accentColor}\n open={open}\n copied={copied}\n dropdownBg={dropdownBg}\n dropdownBorder={dropdownBorder}\n itemColor={itemColor}\n wrapperRef={wrapperRef}\n isInProgress={isInProgress}\n walletType={walletType}\n showCreateAccount={canCreateAccount}\n creatingAccount={creating}\n onToggleOpen={() => setOpen((v) => !v)}\n onCreateAccount={handleCreateAccount}\n onCopy={handleCopy}\n onWalletBalance={handleWalletBalance}\n onTxHistory={handleTxHistory}\n onSend={handleSend}\n onReceive={handleReceive}\n onSessions={handleSessions}\n onKyc={handleKyc}\n onRamp={handleRamp}\n onDistributionRules={handleDistributionRules}\n onLogout={handleLogout}\n onLogin={openLoginModal}\n />\n );\n}\n"]}
|