@pollar/react 0.10.1-rc.6 → 0.10.1-rc.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/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 ? 'Claiming…' : 'Claim'}\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 className=\"pollar-modal-refresh-btn\" onClick={onRefresh} disabled={isLoading}>\n <svg\n className={`pollar-modal-refresh-icon${isLoading ? ' spinning' : ''}`}\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n aria-hidden\n >\n <path d=\"M11.5 6.5a5 5 0 11-1.5-3.536\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M10 1v3h-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n Refresh\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 && <div className=\"pollar-modal-empty\">Loading…</div>}\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 ? ' established' : ''}`}>\n {established ? 'Trustline active' : 'Needs trustline'}\n </span>\n {!isNative && (\n <button\n className={`pollar-asset-btn${established ? ' danger' : ''}`}\n onClick={() => onToggle(record)}\n disabled={busy || disabled}\n >\n {busy ? '…' : established ? 'Disable' : 'Enable'}\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 className=\"pollar-modal-refresh-btn\" onClick={onRefresh} disabled={isLoading || busy}>\n <svg\n className={`pollar-modal-refresh-icon${isLoading ? ' spinning' : ''}`}\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n aria-hidden\n >\n <path d=\"M11.5 6.5a5 5 0 11-1.5-3.536\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M10 1v3h-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n Refresh\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 && <div className=\"pollar-modal-empty\">Loading…</div>}\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-back\" 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&apos;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 <button className=\"pollar-asset-submit\" onClick={submit} disabled={!canSubmit}>\n {busy ? 'Enabling…' : 'Enable trustline'}\n </button>\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 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 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-kyc-header\">\n <h2 className=\"pollar-kyc-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\n {step === 'select_provider' && (\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 { 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 useEffect(() => {\n setIsLoading(true);\n getClient()\n .getKycProviders(country)\n .then((result) => setProviders(result.providers))\n .catch(() => setProviders([]))\n .finally(() => setIsLoading(false));\n }, [getClient, country]);\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 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=\"github-button\" disabled={disabled} onClick={onClick}>\n <svg className=\"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=\"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=\"gsi-material-button\" disabled={disabled} onClick={onClick}>\n <div className=\"gsi-material-button-state\"></div>\n <div className=\"gsi-material-button-content-wrapper\">\n <div className=\"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=\"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\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 isDark = theme === 'dark';\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 = {\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 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-email-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","'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-email-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 { 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 } = 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 {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';\n\nexport type RampStep = 'input' | 'loading_quote' | 'select_route' | 'contact' | 'status' | 'error';\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';\n bankType?: 'CLABE' | 'PIX' | 'PSE' | 'ACH';\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 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 = '';\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 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 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-ramp-tabs\">\n <button\n type=\"button\"\n className=\"pollar-ramp-tab\"\n data-active={direction === 'onramp'}\n onClick={() => onDirectionChange('onramp')}\n >\n Buy\n </button>\n <button\n type=\"button\"\n className=\"pollar-ramp-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-ramp-input-loading\">Loading countries…</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 {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 <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 </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) => !(fieldValues[f.key] ?? '').trim()) || isLoading}\n onClick={onContactContinue}\n >\n {isLoading ? 'Starting…' : 'Continue'}\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 </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\">\n <code>\n {stellarTxHash.slice(0, 8)}…{stellarTxHash.slice(-8)}\n </code>\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 <code style={{ wordBreak: 'break-all' }}>{value}</code>\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 ? 'Submitting…' : \"I've completed KYC — withdraw\"}\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 } = 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 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`; others (email, fullName) are same-named fields.\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 base[f.key] = val;\n }\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 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 the skeleton shimmer instead of the select. */\n loading?: boolean;\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 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 <div className=\"pollar-send-skeleton\" />\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 &amp; 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 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 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 <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 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 const allAssets = balanceData?.balances ?? [];\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 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 && <div className=\"pollar-send-hint\">Loading swap options…</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}\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}\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 <select\n className=\"pollar-input pollar-send-select\"\n value={provider}\n disabled={configLoading || providers.length === 0}\n onChange={(e) => onProviderChange(e.target.value as SwapProvider)}\n >\n {providers.length === 0 ? (\n <option value={provider}>{configLoading ? 'Loading…' : 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 </div>\n\n {/* Quote panel */}\n {quoteLoading && <div className=\"pollar-send-hint\">Fetching best price…</div>}\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 const sellOptions: SwapAssetOption[] = balances\n .filter((b) => b.type === 'native' || !b.trustlineRemoved)\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 = ['building', 'signing', 'submitting', 'submitted', 'signing-submitting', 'building-signing-submitting'] 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 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 [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 // ─── 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 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 const canSubmit =\n !smartUnsupported && !!provider && !!opportunityId && !!amount && parseFloat(amount) > 0 && !providersLoading && !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 === 'withdraw' && position && parsed > parseFloat(position.withdrawable)) {\n setFormError('Amount exceeds your position');\n return;\n }\n setStep('tx');\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 const title = step === 'form' ? 'Earn' : txTitle;\n\n return (\n <div className=\"pollar-overlay\" onClick={!isInProgress ? onClose : undefined}>\n <div className=\"pollar-modal-card pollar-send-modal\" data-theme={theme} style={cssVars} onClick={(e) => e.stopPropagation()}>\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 {!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\n {step === 'form' && providersLoading && <div className=\"pollar-send-hint\">Loading Earn options…</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-earn-tabs\">\n <button\n type=\"button\"\n className={`pollar-earn-tab${tab === 'deposit' ? ' pollar-earn-tab-active' : ''}`}\n onClick={() => {\n setTab('deposit');\n setFormError('');\n }}\n >\n Deposit\n </button>\n <button\n type=\"button\"\n className={`pollar-earn-tab${tab === 'withdraw' ? ' pollar-earn-tab-active' : ''}`}\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 <select\n className=\"pollar-input pollar-send-select\"\n value={opportunityId}\n disabled={loadingOpps || opportunities.length === 0}\n onChange={(e) => setOpportunityId(e.target.value)}\n >\n {opportunities.length === 0 ? (\n <option value=\"\">{loadingOpps ? 'Loading…' : '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 </div>\n\n {/* Live position panel */}\n {selectedOpportunity && (\n <div className=\"pollar-swap-quote\">\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 === 'withdraw' && position && (\n <button\n type=\"button\"\n className=\"pollar-swap-custom-toggle\"\n onClick={() => setAmount(position.withdrawable)}\n >\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 <div className=\"pollar-modal-actions\">\n <button className=\"pollar-btn-primary\" onClick={() => void handleSubmit()} disabled={!canSubmit}>\n {tab === '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 className=\"pollar-modal-refresh-btn\" onClick={onRefresh} disabled={isLoading}>\n <svg\n className={`pollar-modal-refresh-icon${isLoading ? ' spinning' : ''}`}\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n aria-hidden\n >\n <path d=\"M11.5 6.5a5 5 0 11-1.5-3.536\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M10 1v3h-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n Refresh\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' && <div className=\"pollar-modal-empty\">Loading…</div>}\n {isLoading && <div className=\"pollar-modal-empty\">Loading…</div>}\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 ? 'Revoking…' : 'Revoke'}\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 ? 'Signing out…' : 'Sign out everywhere'}\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 className=\"pollar-modal-refresh-btn\" onClick={onRefresh} disabled={isLoading}>\n <svg\n className={`pollar-modal-refresh-icon${isLoading ? ' spinning' : ''}`}\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n aria-hidden\n >\n <path d=\"M11.5 6.5a5 5 0 11-1.5-3.536\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M10 1v3h-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n Refresh\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 && <div className=\"pollar-modal-empty\">Loading…</div>}\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\nfunction BalanceItem({ record }: { record: WalletBalanceRecord }) {\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\">{record.code}</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 className=\"pollar-modal-refresh-btn\" onClick={onRefresh} disabled={isLoading}>\n <svg\n className={`pollar-modal-refresh-icon${isLoading ? ' spinning' : ''}`}\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n aria-hidden\n >\n <path d=\"M11.5 6.5a5 5 0 11-1.5-3.536\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M10 1v3h-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n Refresh\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 && <div className=\"pollar-modal-empty\">Loading…</div>}\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.code + (b.issuer ?? '')} record={b} />\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: '' },\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 // 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\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 if (appConfigProp !== undefined) return;\n let cancelled = false;\n pollarClient\n .getAppConfig()\n .then((fetched) => {\n if (cancelled || !fetched) return;\n setResolvedConfig(fetched as PollarConfig);\n })\n .catch((err) => {\n pollarClient.getLogger().error('[PollarProvider] getAppConfig failed', err);\n });\n return () => {\n cancelled = true;\n };\n }, [pollarClient, appConfigProp]);\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 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: () => setSendModalOpen(true),\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: () => setSwapModalOpen(true),\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: () => setEarnModalOpen(true),\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 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 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 onClose={() => setSendModalOpen(false)}>\n <SendModal onClose={() => setSendModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {swapModalOpen && (\n <ModalErrorBoundary onClose={() => setSwapModalOpen(false)}>\n <SwapModal onClose={() => setSwapModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {earnModalOpen && (\n <ModalErrorBoundary 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=\"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=\"wallet-login-btn\" style={{ backgroundColor: accentColor }} onClick={onLogin}>\n <ButtonLogo />\n Login with Pollar\n </button>\n );\n }\n\n return (\n <div className=\"wallet-wrapper\" ref={wrapperRef}>\n <button\n className=\"wallet-btn\"\n style={{ backgroundColor: accentColor }}\n onClick={isInProgress ? undefined : onToggleOpen}\n disabled={isInProgress}\n aria-busy={isInProgress}\n >\n <span className=\"wallet-btn-label\">{cropWallet(walletAddress)}</span>\n {isInProgress ? (\n <svg className=\"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={`wallet-chevron${open ? ' 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=\"wallet-dropdown\" style={{ backgroundColor: dropdownBg, borderColor: dropdownBorder }}>\n {showCreateAccount && (\n <>\n <button\n className=\"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=\"wallet-dropdown-divider\" />\n </>\n )}\n <button className=\"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=\"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=\"wallet-dropdown-divider\" />\n <button className=\"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=\"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=\"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=\"wallet-dropdown-divider\" />\n {/* Buy / Sell (ramp) */}\n <button className=\"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=\"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=\"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=\"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=\"wallet-dropdown-divider\" />\n <button className=\"wallet-dropdown-item 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 &&\n wallet?.custody === 'external' &&\n wallet.existsOnStellar === false &&\n 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/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 ? 'Claiming…' : 'Claim'}\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 className=\"pollar-modal-refresh-btn\" onClick={onRefresh} disabled={isLoading}>\n <svg\n className={`pollar-modal-refresh-icon${isLoading ? ' spinning' : ''}`}\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n aria-hidden\n >\n <path d=\"M11.5 6.5a5 5 0 11-1.5-3.536\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M10 1v3h-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n Refresh\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 && <div className=\"pollar-modal-empty\">Loading…</div>}\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 ? ' established' : ''}`}>\n {established ? 'Trustline active' : 'Needs trustline'}\n </span>\n {!isNative && (\n <button\n className={`pollar-asset-btn${established ? ' danger' : ''}`}\n onClick={() => onToggle(record)}\n disabled={busy || disabled}\n >\n {busy ? '…' : established ? 'Disable' : 'Enable'}\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 className=\"pollar-modal-refresh-btn\" onClick={onRefresh} disabled={isLoading || busy}>\n <svg\n className={`pollar-modal-refresh-icon${isLoading ? ' spinning' : ''}`}\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n aria-hidden\n >\n <path d=\"M11.5 6.5a5 5 0 11-1.5-3.536\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M10 1v3h-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n Refresh\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 && <div className=\"pollar-modal-empty\">Loading…</div>}\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-back\" 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&apos;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 <button className=\"pollar-asset-submit\" onClick={submit} disabled={!canSubmit}>\n {busy ? 'Enabling…' : 'Enable trustline'}\n </button>\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 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 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-kyc-header\">\n <h2 className=\"pollar-kyc-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\n {step === 'select_provider' && (\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 { 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 useEffect(() => {\n setIsLoading(true);\n getClient()\n .getKycProviders(country)\n .then((result) => setProviders(result.providers))\n .catch(() => setProviders([]))\n .finally(() => setIsLoading(false));\n }, [getClient, country]);\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 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=\"github-button\" disabled={disabled} onClick={onClick}>\n <svg className=\"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=\"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=\"gsi-material-button\" disabled={disabled} onClick={onClick}>\n <div className=\"gsi-material-button-state\"></div>\n <div className=\"gsi-material-button-content-wrapper\">\n <div className=\"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=\"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\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 isDark = theme === 'dark';\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 = {\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 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-email-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","'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-email-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 { 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 } = 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 {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/** 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 = '';\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 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-ramp-tabs\">\n <button\n type=\"button\"\n className=\"pollar-ramp-tab\"\n data-active={direction === 'onramp'}\n onClick={() => onDirectionChange('onramp')}\n >\n Buy\n </button>\n <button\n type=\"button\"\n className=\"pollar-ramp-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-ramp-input-loading\">Loading countries…</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 {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 </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) => !(fieldValues[f.key] ?? '').trim()) || isLoading}\n onClick={onContactContinue}\n >\n {isLoading ? 'Starting…' : 'Continue'}\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 </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 d=\"M6 3H3v8h8V8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M8.5 2.5h3v3M11 3L6.5 7.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\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 <code style={{ wordBreak: 'break-all' }}>{value}</code>\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 ? 'Submitting…' : \"I've completed KYC — withdraw\"}\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 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 the skeleton shimmer instead of the select. */\n loading?: boolean;\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 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 <div className=\"pollar-send-skeleton\" />\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 &amp; 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 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 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 <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 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 const allAssets = balanceData?.balances ?? [];\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 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 && <div className=\"pollar-send-hint\">Loading swap options…</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}\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}\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 <select\n className=\"pollar-input pollar-send-select\"\n value={provider}\n disabled={configLoading || providers.length === 0}\n onChange={(e) => onProviderChange(e.target.value as SwapProvider)}\n >\n {providers.length === 0 ? (\n <option value={provider}>{configLoading ? 'Loading…' : 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 </div>\n\n {/* Quote panel */}\n {quoteLoading && <div className=\"pollar-send-hint\">Fetching best price…</div>}\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 const sellOptions: SwapAssetOption[] = balances\n .filter((b) => b.type === 'native' || !b.trustlineRemoved)\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 = ['building', 'signing', 'submitting', 'submitted', 'signing-submitting', 'building-signing-submitting'] 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 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 [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 // ─── 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 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 const canSubmit =\n !smartUnsupported && !!provider && !!opportunityId && !!amount && parseFloat(amount) > 0 && !providersLoading && !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 === 'withdraw' && position && parsed > parseFloat(position.withdrawable)) {\n setFormError('Amount exceeds your position');\n return;\n }\n setStep('tx');\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 const title = step === 'form' ? 'Earn' : txTitle;\n\n return (\n <div className=\"pollar-overlay\" onClick={!isInProgress ? onClose : undefined}>\n <div className=\"pollar-modal-card pollar-send-modal\" data-theme={theme} style={cssVars} onClick={(e) => e.stopPropagation()}>\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 {!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\n {step === 'form' && providersLoading && <div className=\"pollar-send-hint\">Loading Earn options…</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-earn-tabs\">\n <button\n type=\"button\"\n className={`pollar-earn-tab${tab === 'deposit' ? ' pollar-earn-tab-active' : ''}`}\n onClick={() => {\n setTab('deposit');\n setFormError('');\n }}\n >\n Deposit\n </button>\n <button\n type=\"button\"\n className={`pollar-earn-tab${tab === 'withdraw' ? ' pollar-earn-tab-active' : ''}`}\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 <select\n className=\"pollar-input pollar-send-select\"\n value={opportunityId}\n disabled={loadingOpps || opportunities.length === 0}\n onChange={(e) => setOpportunityId(e.target.value)}\n >\n {opportunities.length === 0 ? (\n <option value=\"\">{loadingOpps ? 'Loading…' : '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 </div>\n\n {/* Live position panel */}\n {selectedOpportunity && (\n <div className=\"pollar-swap-quote\">\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 === 'withdraw' && position && (\n <button\n type=\"button\"\n className=\"pollar-swap-custom-toggle\"\n onClick={() => setAmount(position.withdrawable)}\n >\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 <div className=\"pollar-modal-actions\">\n <button className=\"pollar-btn-primary\" onClick={() => void handleSubmit()} disabled={!canSubmit}>\n {tab === '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 className=\"pollar-modal-refresh-btn\" onClick={onRefresh} disabled={isLoading}>\n <svg\n className={`pollar-modal-refresh-icon${isLoading ? ' spinning' : ''}`}\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n aria-hidden\n >\n <path d=\"M11.5 6.5a5 5 0 11-1.5-3.536\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M10 1v3h-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n Refresh\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' && <div className=\"pollar-modal-empty\">Loading…</div>}\n {isLoading && <div className=\"pollar-modal-empty\">Loading…</div>}\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 ? 'Revoking…' : 'Revoke'}\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 ? 'Signing out…' : 'Sign out everywhere'}\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 className=\"pollar-modal-refresh-btn\" onClick={onRefresh} disabled={isLoading}>\n <svg\n className={`pollar-modal-refresh-icon${isLoading ? ' spinning' : ''}`}\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n aria-hidden\n >\n <path d=\"M11.5 6.5a5 5 0 11-1.5-3.536\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M10 1v3h-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n Refresh\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 && <div className=\"pollar-modal-empty\">Loading…</div>}\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\nfunction BalanceItem({ record }: { record: WalletBalanceRecord }) {\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\">{record.code}</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 className=\"pollar-modal-refresh-btn\" onClick={onRefresh} disabled={isLoading}>\n <svg\n className={`pollar-modal-refresh-icon${isLoading ? ' spinning' : ''}`}\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n aria-hidden\n >\n <path d=\"M11.5 6.5a5 5 0 11-1.5-3.536\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <path d=\"M10 1v3h-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n Refresh\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 && <div className=\"pollar-modal-empty\">Loading…</div>}\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.code + (b.issuer ?? '')} record={b} />\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: '' },\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 // 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\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 if (appConfigProp !== undefined) return;\n let cancelled = false;\n pollarClient\n .getAppConfig()\n .then((fetched) => {\n if (cancelled || !fetched) return;\n setResolvedConfig(fetched as PollarConfig);\n })\n .catch((err) => {\n pollarClient.getLogger().error('[PollarProvider] getAppConfig failed', err);\n });\n return () => {\n cancelled = true;\n };\n }, [pollarClient, appConfigProp]);\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 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: () => setSendModalOpen(true),\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: () => setSwapModalOpen(true),\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: () => setEarnModalOpen(true),\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 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 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 onClose={() => setSendModalOpen(false)}>\n <SendModal onClose={() => setSendModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {swapModalOpen && (\n <ModalErrorBoundary onClose={() => setSwapModalOpen(false)}>\n <SwapModal onClose={() => setSwapModalOpen(false)} />\n </ModalErrorBoundary>\n )}\n {earnModalOpen && (\n <ModalErrorBoundary 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=\"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=\"wallet-login-btn\" style={{ backgroundColor: accentColor }} onClick={onLogin}>\n <ButtonLogo />\n Login with Pollar\n </button>\n );\n }\n\n return (\n <div className=\"wallet-wrapper\" ref={wrapperRef}>\n <button\n className=\"wallet-btn\"\n style={{ backgroundColor: accentColor }}\n onClick={isInProgress ? undefined : onToggleOpen}\n disabled={isInProgress}\n aria-busy={isInProgress}\n >\n <span className=\"wallet-btn-label\">{cropWallet(walletAddress)}</span>\n {isInProgress ? (\n <svg className=\"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={`wallet-chevron${open ? ' 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=\"wallet-dropdown\" style={{ backgroundColor: dropdownBg, borderColor: dropdownBorder }}>\n {showCreateAccount && (\n <>\n <button\n className=\"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=\"wallet-dropdown-divider\" />\n </>\n )}\n <button className=\"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=\"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=\"wallet-dropdown-divider\" />\n <button className=\"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=\"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=\"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=\"wallet-dropdown-divider\" />\n {/* Buy / Sell (ramp) */}\n <button className=\"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=\"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=\"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=\"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=\"wallet-dropdown-divider\" />\n <button className=\"wallet-dropdown-item 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 &&\n wallet?.custody === 'external' &&\n wallet.existsOnStellar === false &&\n 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"]}