@djangocfg/ext-payments 1.0.20 → 1.0.22

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.cjs CHANGED
@@ -8,6 +8,8 @@ var zod = require('zod');
8
8
  var useSWR = require('swr');
9
9
  var jsxRuntime = require('react/jsx-runtime');
10
10
  var lucideReact = require('lucide-react');
11
+ var i18n = require('@djangocfg/ext-base/i18n');
12
+ var i18n$1 = require('@djangocfg/i18n');
11
13
  var uiCore = require('@djangocfg/ui-core');
12
14
  var lib = require('@djangocfg/ui-core/lib');
13
15
  var moment3 = require('moment');
@@ -2053,8 +2055,398 @@ function mapWithdrawalStatus(status) {
2053
2055
  return "pending";
2054
2056
  }
2055
2057
  }
2058
+
2059
+ // src/i18n/locales/en.ts
2060
+ var en = {
2061
+ balance: {
2062
+ available: "Available Balance",
2063
+ totalDeposited: "Total Deposited",
2064
+ totalWithdrawn: "Total Withdrawn"
2065
+ },
2066
+ actions: {
2067
+ addFunds: "Add Funds",
2068
+ withdraw: "Withdraw",
2069
+ continue: "Continue",
2070
+ requestWithdrawal: "Request Withdrawal",
2071
+ cancel: "Cancel",
2072
+ close: "Close",
2073
+ copyAddress: "Copy Address",
2074
+ copied: "Copied!",
2075
+ viewAll: "View All",
2076
+ tryAgain: "Try Again",
2077
+ refreshStatus: "Refresh Status",
2078
+ createNewPayment: "Create New Payment",
2079
+ openInPaymentProvider: "Open in Payment Provider"
2080
+ },
2081
+ paymentStatus: {
2082
+ waiting: "Waiting for payment",
2083
+ confirming: "Confirming",
2084
+ completed: "Completed",
2085
+ failed: "Failed",
2086
+ expired: "Expired",
2087
+ paymentExpired: "Payment Expired"
2088
+ },
2089
+ withdrawalStatus: {
2090
+ pending: "Pending Approval",
2091
+ approved: "Approved",
2092
+ processing: "Processing",
2093
+ completed: "Completed",
2094
+ rejected: "Rejected",
2095
+ cancelled: "Cancelled"
2096
+ },
2097
+ paymentDescriptions: {
2098
+ sendCrypto: "Send cryptocurrency to complete payment",
2099
+ expired: "This payment has expired",
2100
+ completed: "Payment completed successfully",
2101
+ failed: "Payment failed",
2102
+ confirming: "Confirming your payment",
2103
+ createNew: "Please create a new payment to continue"
2104
+ },
2105
+ withdrawalDescriptions: {
2106
+ pendingApproval: "Waiting for admin approval",
2107
+ processing: "Your withdrawal is being processed",
2108
+ completed: "Withdrawal completed successfully",
2109
+ rejected: "Withdrawal was rejected",
2110
+ cancelled: "Withdrawal was cancelled"
2111
+ },
2112
+ form: {
2113
+ amount: "Amount",
2114
+ amountUsd: "Amount (USD)",
2115
+ currency: "Currency",
2116
+ walletAddress: "Wallet Address",
2117
+ selectCurrency: "Select currency...",
2118
+ enterWalletAddress: "Enter your wallet address",
2119
+ search: "Search...",
2120
+ payWith: "Pay with",
2121
+ withdrawAs: "Withdraw as",
2122
+ amountToSend: "Amount to send",
2123
+ equivalent: "Equivalent",
2124
+ network: "Network",
2125
+ paymentAddress: "Payment Address",
2126
+ transactionHash: "Transaction Hash",
2127
+ paymentId: "Payment ID",
2128
+ orderId: "Order #",
2129
+ created: "Created"
2130
+ },
2131
+ validation: {
2132
+ minimumDeposit: "Minimum $1",
2133
+ minimumWithdrawal: "Minimum $10",
2134
+ selectCurrency: "Select a currency",
2135
+ invalidWalletAddress: "Invalid wallet address"
2136
+ },
2137
+ messages: {
2138
+ paymentCreated: "Payment created successfully",
2139
+ paymentFailed: "Failed to create payment",
2140
+ withdrawalCreated: "Withdrawal request created",
2141
+ withdrawalFailed: "Failed to create withdrawal request",
2142
+ withdrawalCancelled: "Withdrawal cancelled",
2143
+ addressCopied: "Address copied to clipboard",
2144
+ failedToLoadPayment: "Failed to load payment",
2145
+ failedToCreateWithdrawal: "Failed to create withdrawal request"
2146
+ },
2147
+ sheets: {
2148
+ addFundsTitle: "Add Funds",
2149
+ addFundsDescription: "Add funds to your wallet using cryptocurrency",
2150
+ withdrawTitle: "Withdraw",
2151
+ withdrawDescription: "Withdraw funds to your cryptocurrency wallet",
2152
+ paymentTitle: "Payment Details",
2153
+ withdrawalTitle: "Withdrawal Details"
2154
+ },
2155
+ activity: {
2156
+ title: "Recent Activity",
2157
+ noActivity: "No Activity Yet",
2158
+ deposit: "Deposit",
2159
+ withdrawal: "Withdrawal",
2160
+ payment: "Payment",
2161
+ transactionsWillAppear: "Your transactions will appear here"
2162
+ },
2163
+ estimate: {
2164
+ gettingRate: "Getting rate...",
2165
+ calculating: "Calculating fees...",
2166
+ enterAmountToSee: "Enter amount to see conversion",
2167
+ youWillSend: "You will send",
2168
+ youWillReceive: "You will receive",
2169
+ serviceFee: "Service fee",
2170
+ networkFee: "Network fee",
2171
+ rate: "Rate",
2172
+ minimumAmount: "Minimum amount"
2173
+ },
2174
+ withdraw: {
2175
+ insufficientBalance: "Insufficient balance",
2176
+ approvalWarning: "Withdrawal requests require admin approval. Processing may take 24-48 hours.",
2177
+ submitting: "Submitting...",
2178
+ creating: "Creating...",
2179
+ expiresIn: "Expires in"
2180
+ }
2181
+ };
2182
+
2183
+ // src/i18n/locales/ru.ts
2184
+ var ru = {
2185
+ balance: {
2186
+ available: "\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0439 \u0431\u0430\u043B\u0430\u043D\u0441",
2187
+ totalDeposited: "\u0412\u0441\u0435\u0433\u043E \u0432\u043D\u0435\u0441\u0435\u043D\u043E",
2188
+ totalWithdrawn: "\u0412\u0441\u0435\u0433\u043E \u0432\u044B\u0432\u0435\u0434\u0435\u043D\u043E"
2189
+ },
2190
+ actions: {
2191
+ addFunds: "\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C",
2192
+ withdraw: "\u0412\u044B\u0432\u0435\u0441\u0442\u0438",
2193
+ continue: "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C",
2194
+ requestWithdrawal: "\u0417\u0430\u043F\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u044B\u0432\u043E\u0434",
2195
+ cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
2196
+ close: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C",
2197
+ copyAddress: "\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0430\u0434\u0440\u0435\u0441",
2198
+ copied: "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E!",
2199
+ viewAll: "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435",
2200
+ tryAgain: "\u041F\u043E\u043F\u0440\u043E\u0431\u043E\u0432\u0430\u0442\u044C \u0441\u043D\u043E\u0432\u0430",
2201
+ refreshStatus: "\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0441\u0442\u0430\u0442\u0443\u0441",
2202
+ createNewPayment: "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u043F\u043B\u0430\u0442\u0451\u0436",
2203
+ openInPaymentProvider: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0443 \u043F\u0440\u043E\u0432\u0430\u0439\u0434\u0435\u0440\u0430"
2204
+ },
2205
+ paymentStatus: {
2206
+ waiting: "\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u043E\u043F\u043B\u0430\u0442\u044B",
2207
+ confirming: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435",
2208
+ completed: "\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E",
2209
+ failed: "\u041E\u0448\u0438\u0431\u043A\u0430",
2210
+ expired: "\u0418\u0441\u0442\u0435\u043A\u043B\u043E",
2211
+ paymentExpired: "\u041F\u043B\u0430\u0442\u0451\u0436 \u0438\u0441\u0442\u0451\u043A"
2212
+ },
2213
+ withdrawalStatus: {
2214
+ pending: "\u041E\u0436\u0438\u0434\u0430\u0435\u0442 \u043E\u0434\u043E\u0431\u0440\u0435\u043D\u0438\u044F",
2215
+ approved: "\u041E\u0434\u043E\u0431\u0440\u0435\u043D\u043E",
2216
+ processing: "\u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430",
2217
+ completed: "\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E",
2218
+ rejected: "\u041E\u0442\u043A\u043B\u043E\u043D\u0435\u043D\u043E",
2219
+ cancelled: "\u041E\u0442\u043C\u0435\u043D\u0435\u043D\u043E"
2220
+ },
2221
+ paymentDescriptions: {
2222
+ sendCrypto: "\u041E\u0442\u043F\u0440\u0430\u0432\u044C\u0442\u0435 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u0443 \u0434\u043B\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F \u043F\u043B\u0430\u0442\u0435\u0436\u0430",
2223
+ expired: "\u0421\u0440\u043E\u043A \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043F\u043B\u0430\u0442\u0435\u0436\u0430 \u0438\u0441\u0442\u0451\u043A",
2224
+ completed: "\u041F\u043B\u0430\u0442\u0451\u0436 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043D",
2225
+ failed: "\u041F\u043B\u0430\u0442\u0451\u0436 \u043D\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D",
2226
+ confirming: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 \u043F\u043B\u0430\u0442\u0435\u0436\u0430",
2227
+ createNew: "\u0421\u043E\u0437\u0434\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u043B\u0430\u0442\u0451\u0436 \u0434\u043B\u044F \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u044F"
2228
+ },
2229
+ withdrawalDescriptions: {
2230
+ pendingApproval: "\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u043E\u0434\u043E\u0431\u0440\u0435\u043D\u0438\u044F \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0430",
2231
+ processing: "\u0412\u0430\u0448 \u0432\u044B\u0432\u043E\u0434 \u043E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442\u0441\u044F",
2232
+ completed: "\u0412\u044B\u0432\u043E\u0434 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043D",
2233
+ rejected: "\u0412\u044B\u0432\u043E\u0434 \u0431\u044B\u043B \u043E\u0442\u043A\u043B\u043E\u043D\u0451\u043D",
2234
+ cancelled: "\u0412\u044B\u0432\u043E\u0434 \u0431\u044B\u043B \u043E\u0442\u043C\u0435\u043D\u0451\u043D"
2235
+ },
2236
+ form: {
2237
+ amount: "\u0421\u0443\u043C\u043C\u0430",
2238
+ amountUsd: "\u0421\u0443\u043C\u043C\u0430 (USD)",
2239
+ currency: "\u0412\u0430\u043B\u044E\u0442\u0430",
2240
+ walletAddress: "\u0410\u0434\u0440\u0435\u0441 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430",
2241
+ selectCurrency: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u043B\u044E\u0442\u0443...",
2242
+ enterWalletAddress: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430",
2243
+ search: "\u041F\u043E\u0438\u0441\u043A...",
2244
+ payWith: "\u041E\u043F\u043B\u0430\u0442\u0438\u0442\u044C \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E",
2245
+ withdrawAs: "\u0412\u044B\u0432\u0435\u0441\u0442\u0438 \u043A\u0430\u043A",
2246
+ amountToSend: "\u0421\u0443\u043C\u043C\u0430 \u043A \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0435",
2247
+ equivalent: "\u042D\u043A\u0432\u0438\u0432\u0430\u043B\u0435\u043D\u0442",
2248
+ network: "\u0421\u0435\u0442\u044C",
2249
+ paymentAddress: "\u0410\u0434\u0440\u0435\u0441 \u0434\u043B\u044F \u043E\u043F\u043B\u0430\u0442\u044B",
2250
+ transactionHash: "\u0425\u0435\u0448 \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u0438",
2251
+ paymentId: "ID \u043F\u043B\u0430\u0442\u0435\u0436\u0430",
2252
+ orderId: "\u0417\u0430\u043A\u0430\u0437 \u2116",
2253
+ created: "\u0421\u043E\u0437\u0434\u0430\u043D\u043E"
2254
+ },
2255
+ validation: {
2256
+ minimumDeposit: "\u041C\u0438\u043D\u0438\u043C\u0443\u043C $1",
2257
+ minimumWithdrawal: "\u041C\u0438\u043D\u0438\u043C\u0443\u043C $10",
2258
+ selectCurrency: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u043B\u044E\u0442\u0443",
2259
+ invalidWalletAddress: "\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0430\u0434\u0440\u0435\u0441 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430"
2260
+ },
2261
+ messages: {
2262
+ paymentCreated: "\u041F\u043B\u0430\u0442\u0451\u0436 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0441\u043E\u0437\u0434\u0430\u043D",
2263
+ paymentFailed: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u043F\u043B\u0430\u0442\u0451\u0436",
2264
+ withdrawalCreated: "\u0417\u0430\u043F\u0440\u043E\u0441 \u043D\u0430 \u0432\u044B\u0432\u043E\u0434 \u0441\u043E\u0437\u0434\u0430\u043D",
2265
+ withdrawalFailed: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441 \u043D\u0430 \u0432\u044B\u0432\u043E\u0434",
2266
+ withdrawalCancelled: "\u0412\u044B\u0432\u043E\u0434 \u043E\u0442\u043C\u0435\u043D\u0451\u043D",
2267
+ addressCopied: "\u0410\u0434\u0440\u0435\u0441 \u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D",
2268
+ failedToLoadPayment: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u043F\u043B\u0430\u0442\u0451\u0436",
2269
+ failedToCreateWithdrawal: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441 \u043D\u0430 \u0432\u044B\u0432\u043E\u0434"
2270
+ },
2271
+ sheets: {
2272
+ addFundsTitle: "\u041F\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435",
2273
+ addFundsDescription: "\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u043A\u043E\u0448\u0435\u043B\u0451\u043A \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u044B",
2274
+ withdrawTitle: "\u0412\u044B\u0432\u043E\u0434",
2275
+ withdrawDescription: "\u0412\u044B\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043D\u0430 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u043D\u044B\u0439 \u043A\u043E\u0448\u0435\u043B\u0451\u043A",
2276
+ paymentTitle: "\u0414\u0435\u0442\u0430\u043B\u0438 \u043F\u043B\u0430\u0442\u0435\u0436\u0430",
2277
+ withdrawalTitle: "\u0414\u0435\u0442\u0430\u043B\u0438 \u0432\u044B\u0432\u043E\u0434\u0430"
2278
+ },
2279
+ activity: {
2280
+ title: "\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C",
2281
+ noActivity: "\u041D\u0435\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u0438",
2282
+ deposit: "\u041F\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435",
2283
+ withdrawal: "\u0412\u044B\u0432\u043E\u0434",
2284
+ payment: "\u041F\u043B\u0430\u0442\u0451\u0436",
2285
+ transactionsWillAppear: "\u0412\u0430\u0448\u0438 \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u0438 \u043F\u043E\u044F\u0432\u044F\u0442\u0441\u044F \u0437\u0434\u0435\u0441\u044C"
2286
+ },
2287
+ estimate: {
2288
+ gettingRate: "\u041F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 \u043A\u0443\u0440\u0441\u0430...",
2289
+ calculating: "\u0420\u0430\u0441\u0447\u0451\u0442 \u043A\u043E\u043C\u0438\u0441\u0441\u0438\u0439...",
2290
+ enterAmountToSee: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0443\u043C\u043C\u0443 \u0434\u043B\u044F \u043A\u043E\u043D\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438",
2291
+ youWillSend: "\u0412\u044B \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435",
2292
+ youWillReceive: "\u0412\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u0435",
2293
+ serviceFee: "\u041A\u043E\u043C\u0438\u0441\u0441\u0438\u044F \u0441\u0435\u0440\u0432\u0438\u0441\u0430",
2294
+ networkFee: "\u041A\u043E\u043C\u0438\u0441\u0441\u0438\u044F \u0441\u0435\u0442\u0438",
2295
+ rate: "\u041A\u0443\u0440\u0441",
2296
+ minimumAmount: "\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0441\u0443\u043C\u043C\u0430"
2297
+ },
2298
+ withdraw: {
2299
+ insufficientBalance: "\u041D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u0441\u0440\u0435\u0434\u0441\u0442\u0432",
2300
+ approvalWarning: "\u0417\u0430\u043F\u0440\u043E\u0441\u044B \u043D\u0430 \u0432\u044B\u0432\u043E\u0434 \u0442\u0440\u0435\u0431\u0443\u044E\u0442 \u043E\u0434\u043E\u0431\u0440\u0435\u043D\u0438\u044F \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0430. \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430 \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u043D\u044F\u0442\u044C 24-48 \u0447\u0430\u0441\u043E\u0432.",
2301
+ submitting: "\u041E\u0442\u043F\u0440\u0430\u0432\u043A\u0430...",
2302
+ creating: "\u0421\u043E\u0437\u0434\u0430\u043D\u0438\u0435...",
2303
+ expiresIn: "\u0418\u0441\u0442\u0435\u043A\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437"
2304
+ }
2305
+ };
2306
+
2307
+ // src/i18n/locales/ko.ts
2308
+ var ko = {
2309
+ balance: {
2310
+ available: "\uC0AC\uC6A9 \uAC00\uB2A5 \uC794\uC561",
2311
+ totalDeposited: "\uCD1D \uC785\uAE08\uC561",
2312
+ totalWithdrawn: "\uCD1D \uCD9C\uAE08\uC561"
2313
+ },
2314
+ actions: {
2315
+ addFunds: "\uC785\uAE08\uD558\uAE30",
2316
+ withdraw: "\uCD9C\uAE08\uD558\uAE30",
2317
+ continue: "\uACC4\uC18D",
2318
+ requestWithdrawal: "\uCD9C\uAE08 \uC694\uCCAD",
2319
+ cancel: "\uCDE8\uC18C",
2320
+ close: "\uB2EB\uAE30",
2321
+ copyAddress: "\uC8FC\uC18C \uBCF5\uC0AC",
2322
+ copied: "\uBCF5\uC0AC\uB428!",
2323
+ viewAll: "\uC804\uCCB4 \uBCF4\uAE30",
2324
+ tryAgain: "\uB2E4\uC2DC \uC2DC\uB3C4",
2325
+ refreshStatus: "\uC0C1\uD0DC \uC0C8\uB85C\uACE0\uCE68",
2326
+ createNewPayment: "\uC0C8 \uACB0\uC81C \uB9CC\uB4E4\uAE30",
2327
+ openInPaymentProvider: "\uACB0\uC81C \uC81C\uACF5\uC5C5\uCCB4\uC5D0\uC11C \uC5F4\uAE30"
2328
+ },
2329
+ paymentStatus: {
2330
+ waiting: "\uACB0\uC81C \uB300\uAE30 \uC911",
2331
+ confirming: "\uD655\uC778 \uC911",
2332
+ completed: "\uC644\uB8CC",
2333
+ failed: "\uC2E4\uD328",
2334
+ expired: "\uB9CC\uB8CC\uB428",
2335
+ paymentExpired: "\uACB0\uC81C \uB9CC\uB8CC\uB428"
2336
+ },
2337
+ withdrawalStatus: {
2338
+ pending: "\uC2B9\uC778 \uB300\uAE30 \uC911",
2339
+ approved: "\uC2B9\uC778\uB428",
2340
+ processing: "\uCC98\uB9AC \uC911",
2341
+ completed: "\uC644\uB8CC",
2342
+ rejected: "\uAC70\uBD80\uB428",
2343
+ cancelled: "\uCDE8\uC18C\uB428"
2344
+ },
2345
+ paymentDescriptions: {
2346
+ sendCrypto: "\uACB0\uC81C\uB97C \uC644\uB8CC\uD558\uB824\uBA74 \uC554\uD638\uD654\uD3D0\uB97C \uBCF4\uB0B4\uC138\uC694",
2347
+ expired: "\uC774 \uACB0\uC81C\uAC00 \uB9CC\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
2348
+ completed: "\uACB0\uC81C\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
2349
+ failed: "\uACB0\uC81C\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",
2350
+ confirming: "\uACB0\uC81C \uD655\uC778 \uC911",
2351
+ createNew: "\uACC4\uC18D\uD558\uB824\uBA74 \uC0C8 \uACB0\uC81C\uB97C \uC0DD\uC131\uD558\uC138\uC694"
2352
+ },
2353
+ withdrawalDescriptions: {
2354
+ pendingApproval: "\uAD00\uB9AC\uC790 \uC2B9\uC778 \uB300\uAE30 \uC911",
2355
+ processing: "\uCD9C\uAE08\uC774 \uCC98\uB9AC\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4",
2356
+ completed: "\uCD9C\uAE08\uC774 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
2357
+ rejected: "\uCD9C\uAE08\uC774 \uAC70\uBD80\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
2358
+ cancelled: "\uCD9C\uAE08\uC774 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4"
2359
+ },
2360
+ form: {
2361
+ amount: "\uAE08\uC561",
2362
+ amountUsd: "\uAE08\uC561 (USD)",
2363
+ currency: "\uD1B5\uD654",
2364
+ walletAddress: "\uC9C0\uAC11 \uC8FC\uC18C",
2365
+ selectCurrency: "\uD1B5\uD654 \uC120\uD0DD...",
2366
+ enterWalletAddress: "\uC9C0\uAC11 \uC8FC\uC18C \uC785\uB825",
2367
+ search: "\uAC80\uC0C9...",
2368
+ payWith: "\uACB0\uC81C \uC218\uB2E8",
2369
+ withdrawAs: "\uCD9C\uAE08 \uD1B5\uD654",
2370
+ amountToSend: "\uBCF4\uB0BC \uAE08\uC561",
2371
+ equivalent: "\uD658\uC0B0 \uAE08\uC561",
2372
+ network: "\uB124\uD2B8\uC6CC\uD06C",
2373
+ paymentAddress: "\uACB0\uC81C \uC8FC\uC18C",
2374
+ transactionHash: "\uAC70\uB798 \uD574\uC2DC",
2375
+ paymentId: "\uACB0\uC81C ID",
2376
+ orderId: "\uC8FC\uBB38 #",
2377
+ created: "\uC0DD\uC131\uC77C"
2378
+ },
2379
+ validation: {
2380
+ minimumDeposit: "\uCD5C\uC18C $1",
2381
+ minimumWithdrawal: "\uCD5C\uC18C $10",
2382
+ selectCurrency: "\uD1B5\uD654\uB97C \uC120\uD0DD\uD558\uC138\uC694",
2383
+ invalidWalletAddress: "\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uC9C0\uAC11 \uC8FC\uC18C"
2384
+ },
2385
+ messages: {
2386
+ paymentCreated: "\uACB0\uC81C\uAC00 \uC0DD\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
2387
+ paymentFailed: "\uACB0\uC81C \uC0DD\uC131\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",
2388
+ withdrawalCreated: "\uCD9C\uAE08 \uC694\uCCAD\uC774 \uC0DD\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
2389
+ withdrawalFailed: "\uCD9C\uAE08 \uC694\uCCAD \uC0DD\uC131\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",
2390
+ withdrawalCancelled: "\uCD9C\uAE08\uC774 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
2391
+ addressCopied: "\uC8FC\uC18C\uAC00 \uD074\uB9BD\uBCF4\uB4DC\uC5D0 \uBCF5\uC0AC\uB418\uC5C8\uC2B5\uB2C8\uB2E4",
2392
+ failedToLoadPayment: "\uACB0\uC81C\uB97C \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4",
2393
+ failedToCreateWithdrawal: "\uCD9C\uAE08 \uC694\uCCAD\uC744 \uC0DD\uC131\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4"
2394
+ },
2395
+ sheets: {
2396
+ addFundsTitle: "\uC785\uAE08",
2397
+ addFundsDescription: "\uC554\uD638\uD654\uD3D0\uB85C \uC9C0\uAC11\uC744 \uCDA9\uC804\uD558\uC138\uC694",
2398
+ withdrawTitle: "\uCD9C\uAE08",
2399
+ withdrawDescription: "\uC554\uD638\uD654\uD3D0 \uC9C0\uAC11\uC73C\uB85C \uC790\uAE08\uC744 \uCD9C\uAE08\uD558\uC138\uC694",
2400
+ paymentTitle: "\uACB0\uC81C \uC0C1\uC138",
2401
+ withdrawalTitle: "\uCD9C\uAE08 \uC0C1\uC138"
2402
+ },
2403
+ activity: {
2404
+ title: "\uCD5C\uADFC \uD65C\uB3D9",
2405
+ noActivity: "\uD65C\uB3D9 \uC5C6\uC74C",
2406
+ deposit: "\uC785\uAE08",
2407
+ withdrawal: "\uCD9C\uAE08",
2408
+ payment: "\uACB0\uC81C",
2409
+ transactionsWillAppear: "\uAC70\uB798 \uB0B4\uC5ED\uC774 \uC5EC\uAE30\uC5D0 \uD45C\uC2DC\uB429\uB2C8\uB2E4"
2410
+ },
2411
+ estimate: {
2412
+ gettingRate: "\uD658\uC728 \uC870\uD68C \uC911...",
2413
+ calculating: "\uC218\uC218\uB8CC \uACC4\uC0B0 \uC911...",
2414
+ enterAmountToSee: "\uAE08\uC561\uC744 \uC785\uB825\uD558\uC5EC \uD658\uC0B0\uC744 \uD655\uC778\uD558\uC138\uC694",
2415
+ youWillSend: "\uBCF4\uB0BC \uAE08\uC561",
2416
+ youWillReceive: "\uBC1B\uC744 \uAE08\uC561",
2417
+ serviceFee: "\uC11C\uBE44\uC2A4 \uC218\uC218\uB8CC",
2418
+ networkFee: "\uB124\uD2B8\uC6CC\uD06C \uC218\uC218\uB8CC",
2419
+ rate: "\uD658\uC728",
2420
+ minimumAmount: "\uCD5C\uC18C \uAE08\uC561"
2421
+ },
2422
+ withdraw: {
2423
+ insufficientBalance: "\uC794\uC561 \uBD80\uC871",
2424
+ approvalWarning: "\uCD9C\uAE08 \uC694\uCCAD\uC740 \uAD00\uB9AC\uC790 \uC2B9\uC778\uC774 \uD544\uC694\uD569\uB2C8\uB2E4. \uCC98\uB9AC\uC5D0 24-48\uC2DC\uAC04\uC774 \uC18C\uC694\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",
2425
+ submitting: "\uC81C\uCD9C \uC911...",
2426
+ creating: "\uC0DD\uC131 \uC911...",
2427
+ expiresIn: "\uB9CC\uB8CC\uAE4C\uC9C0"
2428
+ }
2429
+ };
2430
+
2431
+ // src/i18n/index.ts
2432
+ var PAYMENTS_NAMESPACE = "payments";
2433
+ var paymentsI18n = i18n.createExtensionI18n({
2434
+ namespace: PAYMENTS_NAMESPACE,
2435
+ defaultLocale: "en",
2436
+ locales: { en, ru, ko }
2437
+ });
2438
+ paymentsI18n.getAllTranslations();
2056
2439
  function BalanceHero({ onAddFunds, onWithdraw, className }) {
2440
+ const baseT = i18n$1.useT();
2441
+ const pt = i18n.createTypedExtensionT(baseT, PAYMENTS_NAMESPACE);
2057
2442
  const { balance, balanceAmount, isLoadingBalance, refreshWallet } = useWallet();
2443
+ const labels = react.useMemo(() => ({
2444
+ available: pt("balance.available"),
2445
+ totalDeposited: pt("balance.totalDeposited"),
2446
+ totalWithdrawn: pt("balance.totalWithdrawn"),
2447
+ addFunds: pt("actions.addFunds"),
2448
+ withdraw: pt("actions.withdraw")
2449
+ }), [pt]);
2058
2450
  const formattedBalance = new Intl.NumberFormat("en-US", {
2059
2451
  style: "currency",
2060
2452
  currency: "USD",
@@ -2067,7 +2459,7 @@ function BalanceHero({ onAddFunds, onWithdraw, className }) {
2067
2459
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.Skeleton, { className: "h-4 w-24 mx-auto" })
2068
2460
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2069
2461
  /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-5xl font-bold tracking-tight tabular-nums", children: formattedBalance }),
2070
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mt-1", children: "Available Balance" })
2462
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mt-1", children: labels.available })
2071
2463
  ] }) }),
2072
2464
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
2073
2465
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2078,7 +2470,7 @@ function BalanceHero({ onAddFunds, onWithdraw, className }) {
2078
2470
  className: "rounded-full px-6",
2079
2471
  children: [
2080
2472
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "h-5 w-5 mr-2" }),
2081
- "Add Funds"
2473
+ labels.addFunds
2082
2474
  ]
2083
2475
  }
2084
2476
  ),
@@ -2091,7 +2483,7 @@ function BalanceHero({ onAddFunds, onWithdraw, className }) {
2091
2483
  className: "rounded-full px-6",
2092
2484
  children: [
2093
2485
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUpRight, { className: "h-5 w-5 mr-2" }),
2094
- "Withdraw"
2486
+ labels.withdraw
2095
2487
  ]
2096
2488
  }
2097
2489
  ),
@@ -2112,7 +2504,7 @@ function BalanceHero({ onAddFunds, onWithdraw, className }) {
2112
2504
  "$",
2113
2505
  parseFloat(balance.total_deposited || "0").toFixed(2)
2114
2506
  ] }),
2115
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Total Deposited" })
2507
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: labels.totalDeposited })
2116
2508
  ] }),
2117
2509
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-8 w-px bg-border" }),
2118
2510
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
@@ -2120,7 +2512,7 @@ function BalanceHero({ onAddFunds, onWithdraw, className }) {
2120
2512
  "$",
2121
2513
  parseFloat(balance.total_withdrawn || "0").toFixed(2)
2122
2514
  ] }),
2123
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Total Withdrawn" })
2515
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: labels.totalWithdrawn })
2124
2516
  ] })
2125
2517
  ] })
2126
2518
  ] });
@@ -2207,7 +2599,15 @@ function ActivityList({
2207
2599
  limit = 10,
2208
2600
  className
2209
2601
  }) {
2602
+ const baseT = i18n$1.useT();
2603
+ const pt = i18n.createTypedExtensionT(baseT, PAYMENTS_NAMESPACE);
2210
2604
  const { activity, isLoadingActivity, hasMoreActivity } = useWallet();
2605
+ const labels = react.useMemo(() => ({
2606
+ title: pt("activity.title"),
2607
+ noActivity: pt("activity.noActivity"),
2608
+ transactionsWillAppear: pt("activity.transactionsWillAppear"),
2609
+ viewAll: pt("actions.viewAll")
2610
+ }), [pt]);
2211
2611
  const displayedActivity = limit ? activity.slice(0, limit) : activity;
2212
2612
  if (isLoadingActivity) {
2213
2613
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: lib.cn("space-y-2", className), children: [
@@ -2225,15 +2625,15 @@ function ActivityList({
2225
2625
  if (activity.length === 0) {
2226
2626
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: lib.cn("text-center py-12", className), children: [
2227
2627
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex items-center justify-center w-16 h-16 rounded-full bg-muted mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.History, { className: "h-8 w-8 text-muted-foreground" }) }),
2228
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-semibold mb-1", children: "No Activity Yet" }),
2229
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Your transactions will appear here" })
2628
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-semibold mb-1", children: labels.noActivity }),
2629
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: labels.transactionsWillAppear })
2230
2630
  ] });
2231
2631
  }
2232
2632
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: lib.cn("pt-6", className), children: [
2233
2633
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-4 py-2", children: [
2234
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-semibold text-lg", children: "Recent Activity" }),
2634
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-semibold text-lg", children: labels.title }),
2235
2635
  hasMoreActivity && onViewAll && /* @__PURE__ */ jsxRuntime.jsxs(uiCore.Button, { variant: "ghost", size: "sm", onClick: onViewAll, className: "text-primary", children: [
2236
- "View All",
2636
+ labels.viewAll,
2237
2637
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4 ml-1" })
2238
2638
  ] })
2239
2639
  ] }),
@@ -2459,16 +2859,22 @@ function CurrencyCombobox({
2459
2859
  value,
2460
2860
  onChange,
2461
2861
  disabled,
2462
- placeholder = "Select currency..."
2862
+ placeholder
2463
2863
  }) {
2864
+ const baseT = i18n$1.useT();
2865
+ const pt = i18n.createTypedExtensionT(baseT, PAYMENTS_NAMESPACE);
2866
+ const labels = react.useMemo(() => ({
2867
+ selectCurrency: pt("form.selectCurrency"),
2868
+ search: pt("form.search")
2869
+ }), [pt]);
2464
2870
  return /* @__PURE__ */ jsxRuntime.jsx(
2465
2871
  uiCore.Combobox,
2466
2872
  {
2467
2873
  options,
2468
2874
  value,
2469
2875
  onValueChange: onChange,
2470
- placeholder,
2471
- searchPlaceholder: "Search...",
2876
+ placeholder: placeholder || labels.selectCurrency,
2877
+ searchPlaceholder: labels.search,
2472
2878
  disabled,
2473
2879
  className: "h-14",
2474
2880
  renderOption: (option) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 flex-1", children: [
@@ -2488,9 +2894,27 @@ var AddFundsSchema = zod.z.object({
2488
2894
  });
2489
2895
  var STORAGE_KEY = "payments:addFunds";
2490
2896
  function AddFundsSheet({ open, onOpenChange, onSuccess }) {
2897
+ const baseT = i18n$1.useT();
2898
+ const pt = i18n.createTypedExtensionT(baseT, PAYMENTS_NAMESPACE);
2491
2899
  const { currencies, isLoadingCurrencies, addFunds } = useWallet();
2492
2900
  const [isSubmitting, setIsSubmitting] = react.useState(false);
2493
2901
  const [error, setError] = react.useState(null);
2902
+ const labels = react.useMemo(() => ({
2903
+ title: pt("sheets.addFundsTitle"),
2904
+ description: pt("sheets.addFundsDescription"),
2905
+ amountUsd: pt("form.amountUsd"),
2906
+ payWith: pt("form.payWith"),
2907
+ amount: pt("form.amount"),
2908
+ serviceFee: pt("estimate.serviceFee"),
2909
+ rate: pt("estimate.rate"),
2910
+ youWillSend: pt("estimate.youWillSend"),
2911
+ youWillReceive: pt("estimate.youWillReceive"),
2912
+ gettingRate: pt("estimate.gettingRate"),
2913
+ enterAmountToSee: pt("estimate.enterAmountToSee"),
2914
+ minimumAmount: pt("estimate.minimumAmount"),
2915
+ continue: pt("actions.continue"),
2916
+ creating: pt("withdraw.creating")
2917
+ }), [pt]);
2494
2918
  const [saved, setSaved] = uiCore.useLocalStorage(STORAGE_KEY, {
2495
2919
  currency: "",
2496
2920
  amount: 100
@@ -2570,8 +2994,8 @@ function AddFundsSheet({ open, onOpenChange, onSuccess }) {
2570
2994
  }, [form, onOpenChange, saved]);
2571
2995
  return /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheet, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.ResponsiveSheetContent, { className: "sm:max-w-md", children: [
2572
2996
  /* @__PURE__ */ jsxRuntime.jsxs(uiCore.ResponsiveSheetHeader, { children: [
2573
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetTitle, { children: "Add Funds" }),
2574
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetDescription, { children: "Add funds to your wallet using cryptocurrency" })
2997
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetTitle, { children: labels.title }),
2998
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetDescription, { children: labels.description })
2575
2999
  ] }),
2576
3000
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.Form, { ...form, children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: form.handleSubmit(handleSubmit), className: "space-y-6 p-4 sm:p-0 sm:mt-4", children: [
2577
3001
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2580,7 +3004,7 @@ function AddFundsSheet({ open, onOpenChange, onSuccess }) {
2580
3004
  control: form.control,
2581
3005
  name: "amount",
2582
3006
  render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(uiCore.FormItem, { children: [
2583
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormLabel, { children: "Amount (USD)" }),
3007
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormLabel, { children: labels.amountUsd }),
2584
3008
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormControl, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
2585
3009
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-4 top-1/2 -translate-y-1/2 text-muted-foreground text-lg", children: "$" }),
2586
3010
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2606,7 +3030,7 @@ function AddFundsSheet({ open, onOpenChange, onSuccess }) {
2606
3030
  control: form.control,
2607
3031
  name: "currency",
2608
3032
  render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(uiCore.FormItem, { children: [
2609
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormLabel, { children: "Pay with" }),
3033
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormLabel, { children: labels.payWith }),
2610
3034
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormControl, { children: /* @__PURE__ */ jsxRuntime.jsx(
2611
3035
  CurrencyCombobox,
2612
3036
  {
@@ -2622,10 +3046,10 @@ function AddFundsSheet({ open, onOpenChange, onSuccess }) {
2622
3046
  ),
2623
3047
  selectedCurrency && watchedAmount >= 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-muted rounded-xl p-4 space-y-2", children: isLoadingEstimate ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center py-2", children: [
2624
3048
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "h-5 w-5 animate-spin text-muted-foreground" }),
2625
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-sm text-muted-foreground", children: "Getting rate..." })
3049
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-sm text-muted-foreground", children: labels.gettingRate })
2626
3050
  ] }) : displayData ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2627
3051
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-sm", children: [
2628
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Amount" }),
3052
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: labels.amount }),
2629
3053
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
2630
3054
  "$",
2631
3055
  formatUsdAmount(displayData.amountToReceive)
@@ -2633,7 +3057,8 @@ function AddFundsSheet({ open, onOpenChange, onSuccess }) {
2633
3057
  ] }),
2634
3058
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-sm", children: [
2635
3059
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
2636
- "Service fee (",
3060
+ labels.serviceFee,
3061
+ " (",
2637
3062
  displayData.serviceFeePercent,
2638
3063
  "%)"
2639
3064
  ] }),
@@ -2643,7 +3068,7 @@ function AddFundsSheet({ open, onOpenChange, onSuccess }) {
2643
3068
  ] })
2644
3069
  ] }),
2645
3070
  displayData.showRate && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-sm text-muted-foreground", children: [
2646
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Rate" }),
3071
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: labels.rate }),
2647
3072
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
2648
3073
  "1 ",
2649
3074
  displayData.token,
@@ -2652,7 +3077,7 @@ function AddFundsSheet({ open, onOpenChange, onSuccess }) {
2652
3077
  ] })
2653
3078
  ] }),
2654
3079
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t pt-2 mt-2", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
2655
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: "You will send" }),
3080
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: labels.youWillSend }),
2656
3081
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-right", children: [
2657
3082
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 justify-end", children: [
2658
3083
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.TokenIcon, { symbol: displayData.token, size: 20 }),
@@ -2669,17 +3094,18 @@ function AddFundsSheet({ open, onOpenChange, onSuccess }) {
2669
3094
  ] })
2670
3095
  ] }) }),
2671
3096
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-sm pt-2", children: [
2672
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "You will receive" }),
3097
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: labels.youWillReceive }),
2673
3098
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-medium", children: [
2674
3099
  "$",
2675
3100
  formatUsdAmount(displayData.amountToReceive)
2676
3101
  ] })
2677
3102
  ] }),
2678
3103
  displayData.belowMinimum && displayData.minAmount && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-sm text-destructive mt-2 pt-2 border-t border-destructive/20", children: [
2679
- "Minimum amount: $",
3104
+ labels.minimumAmount,
3105
+ ": $",
2680
3106
  displayData.minAmount
2681
3107
  ] })
2682
- ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center text-sm text-muted-foreground py-2", children: "Enter amount to see conversion" }) }),
3108
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center text-sm text-muted-foreground py-2", children: labels.enterAmountToSee }) }),
2683
3109
  error && /* @__PURE__ */ jsxRuntime.jsx(uiCore.Alert, { variant: "destructive", children: /* @__PURE__ */ jsxRuntime.jsx(uiCore.AlertDescription, { children: error }) }),
2684
3110
  /* @__PURE__ */ jsxRuntime.jsx(
2685
3111
  uiCore.Button,
@@ -2690,8 +3116,8 @@ function AddFundsSheet({ open, onOpenChange, onSuccess }) {
2690
3116
  disabled: isSubmitting || currencyOptions.length === 0 || isLoadingEstimate || displayData?.belowMinimum,
2691
3117
  children: isSubmitting ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2692
3118
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "h-5 w-5 mr-2 animate-spin" }),
2693
- "Creating..."
2694
- ] }) : "Continue"
3119
+ labels.creating
3120
+ ] }) : labels.continue
2695
3121
  }
2696
3122
  )
2697
3123
  ] }) })
@@ -2704,9 +3130,28 @@ var WithdrawSchema = zod.z.object({
2704
3130
  });
2705
3131
  var STORAGE_KEY2 = "payments:withdraw";
2706
3132
  function WithdrawSheet({ open, onOpenChange, onSuccess }) {
3133
+ const baseT = i18n$1.useT();
3134
+ const pt = i18n.createTypedExtensionT(baseT, PAYMENTS_NAMESPACE);
2707
3135
  const { currencies, isLoadingCurrencies, withdraw, balanceAmount } = useWallet();
2708
3136
  const [isSubmitting, setIsSubmitting] = react.useState(false);
2709
3137
  const [error, setError] = react.useState(null);
3138
+ const labels = react.useMemo(() => ({
3139
+ title: pt("sheets.withdrawTitle"),
3140
+ description: pt("sheets.withdrawDescription"),
3141
+ amountUsd: pt("form.amountUsd"),
3142
+ withdrawAs: pt("form.withdrawAs"),
3143
+ walletAddress: pt("form.walletAddress"),
3144
+ enterWalletAddress: pt("form.enterWalletAddress"),
3145
+ amount: pt("form.amount"),
3146
+ serviceFee: pt("estimate.serviceFee"),
3147
+ networkFee: pt("estimate.networkFee"),
3148
+ youWillReceive: pt("estimate.youWillReceive"),
3149
+ calculating: pt("estimate.calculating"),
3150
+ insufficientBalance: pt("withdraw.insufficientBalance"),
3151
+ approvalWarning: pt("withdraw.approvalWarning"),
3152
+ submitting: pt("withdraw.submitting"),
3153
+ requestWithdrawal: pt("actions.requestWithdrawal")
3154
+ }), [pt]);
2710
3155
  const [saved, setSaved] = uiCore.useLocalStorage(STORAGE_KEY2, {
2711
3156
  currency: "",
2712
3157
  wallet: ""
@@ -2779,8 +3224,8 @@ function WithdrawSheet({ open, onOpenChange, onSuccess }) {
2779
3224
  }, [form, onOpenChange, saved]);
2780
3225
  return /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheet, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.ResponsiveSheetContent, { className: "sm:max-w-md", children: [
2781
3226
  /* @__PURE__ */ jsxRuntime.jsxs(uiCore.ResponsiveSheetHeader, { children: [
2782
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetTitle, { children: "Withdraw" }),
2783
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetDescription, { children: "Withdraw funds to your cryptocurrency wallet" })
3227
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetTitle, { children: labels.title }),
3228
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetDescription, { children: labels.description })
2784
3229
  ] }),
2785
3230
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.Form, { ...form, children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: form.handleSubmit(handleSubmit), className: "space-y-6 p-4 sm:p-0 sm:mt-4", children: [
2786
3231
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2789,7 +3234,7 @@ function WithdrawSheet({ open, onOpenChange, onSuccess }) {
2789
3234
  control: form.control,
2790
3235
  name: "amount",
2791
3236
  render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(uiCore.FormItem, { children: [
2792
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormLabel, { children: "Amount (USD)" }),
3237
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormLabel, { children: labels.amountUsd }),
2793
3238
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormControl, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
2794
3239
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-4 top-1/2 -translate-y-1/2 text-muted-foreground text-lg", children: "$" }),
2795
3240
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2807,7 +3252,8 @@ function WithdrawSheet({ open, onOpenChange, onSuccess }) {
2807
3252
  ] }) }),
2808
3253
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormMessage, {}),
2809
3254
  insufficientBalance && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-destructive mt-1", children: [
2810
- "Insufficient balance (Available: $",
3255
+ labels.insufficientBalance,
3256
+ " (Available: $",
2811
3257
  formatUsdAmount(balanceAmount),
2812
3258
  ")"
2813
3259
  ] })
@@ -2820,7 +3266,7 @@ function WithdrawSheet({ open, onOpenChange, onSuccess }) {
2820
3266
  control: form.control,
2821
3267
  name: "currency",
2822
3268
  render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(uiCore.FormItem, { children: [
2823
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormLabel, { children: "Withdraw as" }),
3269
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormLabel, { children: labels.withdrawAs }),
2824
3270
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormControl, { children: /* @__PURE__ */ jsxRuntime.jsx(
2825
3271
  CurrencyCombobox,
2826
3272
  {
@@ -2840,11 +3286,11 @@ function WithdrawSheet({ open, onOpenChange, onSuccess }) {
2840
3286
  control: form.control,
2841
3287
  name: "wallet_address",
2842
3288
  render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(uiCore.FormItem, { children: [
2843
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormLabel, { children: "Wallet Address" }),
3289
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormLabel, { children: labels.walletAddress }),
2844
3290
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.FormControl, { children: /* @__PURE__ */ jsxRuntime.jsx(
2845
3291
  uiCore.Input,
2846
3292
  {
2847
- placeholder: "Enter your wallet address",
3293
+ placeholder: labels.enterWalletAddress,
2848
3294
  className: "font-mono text-sm",
2849
3295
  ...field
2850
3296
  }
@@ -2855,7 +3301,7 @@ function WithdrawSheet({ open, onOpenChange, onSuccess }) {
2855
3301
  ),
2856
3302
  amount >= 10 && selectedCurrency && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-muted rounded-xl p-4 space-y-2", children: [
2857
3303
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-sm", children: [
2858
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Amount" }),
3304
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: labels.amount }),
2859
3305
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
2860
3306
  "$",
2861
3307
  formatUsdAmount(amount)
@@ -2863,11 +3309,12 @@ function WithdrawSheet({ open, onOpenChange, onSuccess }) {
2863
3309
  ] }),
2864
3310
  isLoadingEstimate ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm text-muted-foreground py-2", children: [
2865
3311
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "h-4 w-4 animate-spin" }),
2866
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Calculating fees..." })
3312
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: labels.calculating })
2867
3313
  ] }) : estimate ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2868
3314
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-sm", children: [
2869
3315
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
2870
- "Service fee (",
3316
+ labels.serviceFee,
3317
+ " (",
2871
3318
  estimate.serviceFeePercent,
2872
3319
  "%)"
2873
3320
  ] }),
@@ -2877,14 +3324,14 @@ function WithdrawSheet({ open, onOpenChange, onSuccess }) {
2877
3324
  ] })
2878
3325
  ] }),
2879
3326
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-sm", children: [
2880
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Network fee" }),
3327
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: labels.networkFee }),
2881
3328
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-destructive", children: [
2882
3329
  "-$",
2883
3330
  formatUsdAmount(estimate.networkFeeUsd)
2884
3331
  ] })
2885
3332
  ] }),
2886
3333
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t pt-2 mt-2", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
2887
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: "You will receive" }),
3334
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: labels.youWillReceive }),
2888
3335
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-right", children: [
2889
3336
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "font-semibold", children: [
2890
3337
  "$",
@@ -2904,7 +3351,7 @@ function WithdrawSheet({ open, onOpenChange, onSuccess }) {
2904
3351
  ] }),
2905
3352
  /* @__PURE__ */ jsxRuntime.jsxs(uiCore.Alert, { children: [
2906
3353
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "h-4 w-4" }),
2907
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.AlertDescription, { children: "Withdrawal requests require admin approval. Processing may take 24-48 hours." })
3354
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.AlertDescription, { children: labels.approvalWarning })
2908
3355
  ] }),
2909
3356
  error && /* @__PURE__ */ jsxRuntime.jsx(uiCore.Alert, { variant: "destructive", children: /* @__PURE__ */ jsxRuntime.jsx(uiCore.AlertDescription, { children: error }) }),
2910
3357
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2916,8 +3363,8 @@ function WithdrawSheet({ open, onOpenChange, onSuccess }) {
2916
3363
  disabled: isSubmitting || currencyOptions.length === 0 || insufficientBalance || !estimate || estimate.amountToReceive <= 0 || isLoadingEstimate,
2917
3364
  children: isSubmitting ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2918
3365
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "h-5 w-5 mr-2 animate-spin" }),
2919
- "Submitting..."
2920
- ] }) : "Request Withdrawal"
3366
+ labels.submitting
3367
+ ] }) : labels.requestWithdrawal
2921
3368
  }
2922
3369
  )
2923
3370
  ] }) })
@@ -2927,43 +3374,73 @@ var statusConfig2 = {
2927
3374
  pending: {
2928
3375
  icon: lucideReact.Clock,
2929
3376
  color: "text-yellow-500",
2930
- bg: "bg-yellow-500/10",
2931
- label: "Pending Approval"
3377
+ bg: "bg-yellow-500/10"
2932
3378
  },
2933
3379
  approved: {
2934
3380
  icon: lucideReact.CheckCircle2,
2935
3381
  color: "text-blue-500",
2936
- bg: "bg-blue-500/10",
2937
- label: "Approved"
3382
+ bg: "bg-blue-500/10"
2938
3383
  },
2939
3384
  processing: {
2940
3385
  icon: lucideReact.RefreshCw,
2941
3386
  color: "text-blue-500",
2942
3387
  bg: "bg-blue-500/10",
2943
- label: "Processing",
2944
3388
  animate: true
2945
3389
  },
2946
3390
  completed: {
2947
3391
  icon: lucideReact.CheckCircle2,
2948
3392
  color: "text-green-500",
2949
- bg: "bg-green-500/10",
2950
- label: "Completed"
3393
+ bg: "bg-green-500/10"
2951
3394
  },
2952
3395
  rejected: {
2953
3396
  icon: lucideReact.XCircle,
2954
3397
  color: "text-red-500",
2955
- bg: "bg-red-500/10",
2956
- label: "Rejected"
3398
+ bg: "bg-red-500/10"
2957
3399
  },
2958
3400
  cancelled: {
2959
3401
  icon: lucideReact.Ban,
2960
3402
  color: "text-muted-foreground",
2961
- bg: "bg-muted",
2962
- label: "Cancelled"
3403
+ bg: "bg-muted"
2963
3404
  }
2964
3405
  };
2965
3406
  function WithdrawalSheet({ withdrawalId, open, onOpenChange }) {
3407
+ const baseT = i18n$1.useT();
3408
+ const pt = i18n.createTypedExtensionT(baseT, PAYMENTS_NAMESPACE);
2966
3409
  const { getWithdrawalDetails, cancelWithdrawal, refreshWallet } = useWallet();
3410
+ const labels = react.useMemo(() => ({
3411
+ title: pt("sheets.withdrawalTitle"),
3412
+ // Status labels
3413
+ pending: pt("withdrawalStatus.pending"),
3414
+ approved: pt("withdrawalStatus.approved"),
3415
+ processing: pt("withdrawalStatus.processing"),
3416
+ completed: pt("withdrawalStatus.completed"),
3417
+ rejected: pt("withdrawalStatus.rejected"),
3418
+ cancelled: pt("withdrawalStatus.cancelled"),
3419
+ // Descriptions
3420
+ pendingApproval: pt("withdrawalDescriptions.pendingApproval"),
3421
+ processingDesc: pt("withdrawalDescriptions.processing"),
3422
+ completedDesc: pt("withdrawalDescriptions.completed"),
3423
+ rejectedDesc: pt("withdrawalDescriptions.rejected"),
3424
+ cancelledDesc: pt("withdrawalDescriptions.cancelled"),
3425
+ // Form
3426
+ amount: pt("form.amount"),
3427
+ totalFees: pt("estimate.serviceFee"),
3428
+ youReceive: pt("estimate.youWillReceive"),
3429
+ cryptoAmount: pt("form.amount"),
3430
+ destinationWallet: pt("form.walletAddress"),
3431
+ transactionHash: pt("form.transactionHash"),
3432
+ withdrawalId: pt("form.paymentId"),
3433
+ reference: pt("form.orderId"),
3434
+ created: pt("form.created"),
3435
+ network: pt("form.network"),
3436
+ // Actions
3437
+ viewOnExplorer: pt("actions.openInPaymentProvider"),
3438
+ cancel: pt("actions.cancel"),
3439
+ refreshStatus: pt("actions.refreshStatus"),
3440
+ tryAgain: pt("actions.tryAgain"),
3441
+ // Messages
3442
+ failedToLoad: pt("messages.failedToLoadPayment")
3443
+ }), [pt]);
2967
3444
  const { data: withdrawal, isLoading, error, mutate } = useSWR__default.default(
2968
3445
  open && withdrawalId ? ["withdrawal-details", withdrawalId] : null,
2969
3446
  () => getWithdrawalDetails(withdrawalId),
@@ -2978,12 +3455,20 @@ function WithdrawalSheet({ withdrawalId, open, onOpenChange }) {
2978
3455
  const isCancelled = s === "cancelled";
2979
3456
  const isProcessing = s === "processing" || s === "approved";
2980
3457
  const canCancel2 = isPending;
3458
+ const statusLabels = {
3459
+ pending: labels.pending,
3460
+ approved: labels.approved,
3461
+ processing: labels.processing,
3462
+ completed: labels.completed,
3463
+ rejected: labels.rejected,
3464
+ cancelled: labels.cancelled
3465
+ };
2981
3466
  let description2 = "";
2982
- if (isPending) description2 = "Waiting for admin approval";
2983
- else if (isProcessing) description2 = "Your withdrawal is being processed";
2984
- else if (isCompleted) description2 = "Withdrawal completed successfully";
2985
- else if (isRejected) description2 = "Withdrawal was rejected";
2986
- else if (isCancelled) description2 = "Withdrawal was cancelled";
3467
+ if (isPending) description2 = labels.pendingApproval;
3468
+ else if (isProcessing) description2 = labels.processingDesc;
3469
+ else if (isCompleted) description2 = labels.completedDesc;
3470
+ else if (isRejected) description2 = labels.rejectedDesc;
3471
+ else if (isCancelled) description2 = labels.cancelledDesc;
2987
3472
  const amountUsd2 = withdrawal?.amount_usd ? `$${parseFloat(withdrawal.amount_usd).toFixed(2)}` : "";
2988
3473
  const finalAmountUsd2 = withdrawal?.final_amount_usd ? `$${parseFloat(withdrawal.final_amount_usd).toFixed(2)}` : "";
2989
3474
  const totalFeeUsd2 = withdrawal?.total_fee_usd ? `$${parseFloat(withdrawal.total_fee_usd).toFixed(2)}` : "";
@@ -2992,6 +3477,7 @@ function WithdrawalSheet({ withdrawalId, open, onOpenChange }) {
2992
3477
  return {
2993
3478
  status: s,
2994
3479
  config: config2,
3480
+ statusLabel: statusLabels[s] || statusLabels.pending,
2995
3481
  isPending,
2996
3482
  isCompleted,
2997
3483
  isRejected,
@@ -3005,8 +3491,8 @@ function WithdrawalSheet({ withdrawalId, open, onOpenChange }) {
3005
3491
  createdAt: createdAt2,
3006
3492
  completedAt: completedAt2
3007
3493
  };
3008
- }, [withdrawal]);
3009
- const { config, canCancel, description, amountUsd, finalAmountUsd, totalFeeUsd, createdAt, completedAt } = displayData;
3494
+ }, [withdrawal, labels]);
3495
+ const { config, statusLabel, canCancel, description, amountUsd, finalAmountUsd, totalFeeUsd, createdAt, completedAt } = displayData;
3010
3496
  const StatusIcon = config.icon;
3011
3497
  const handleCancel = async () => {
3012
3498
  if (!withdrawalId) return;
@@ -3020,7 +3506,7 @@ function WithdrawalSheet({ withdrawalId, open, onOpenChange }) {
3020
3506
  };
3021
3507
  return /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheet, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.ResponsiveSheetContent, { className: "sm:max-w-lg", children: [
3022
3508
  /* @__PURE__ */ jsxRuntime.jsxs(uiCore.ResponsiveSheetHeader, { children: [
3023
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetTitle, { children: "Withdrawal Details" }),
3509
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetTitle, { children: labels.title }),
3024
3510
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetDescription, { children: description })
3025
3511
  ] }),
3026
3512
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 sm:p-0 sm:mt-4 overflow-y-auto max-h-[70vh]", children: [
@@ -3031,38 +3517,38 @@ function WithdrawalSheet({ withdrawalId, open, onOpenChange }) {
3031
3517
  ] }),
3032
3518
  error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center py-12", children: [
3033
3519
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "h-12 w-12 text-destructive mb-4" }),
3034
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-4", children: "Failed to load withdrawal" }),
3035
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.Button, { onClick: () => mutate(), children: "Try Again" })
3520
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-4", children: labels.failedToLoad }),
3521
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.Button, { onClick: () => mutate(), children: labels.tryAgain })
3036
3522
  ] }),
3037
3523
  withdrawal && !isLoading && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
3038
3524
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: lib.cn("flex items-center gap-3 p-4 rounded-xl", config.bg), children: [
3039
3525
  /* @__PURE__ */ jsxRuntime.jsx(StatusIcon, { className: lib.cn("h-6 w-6", config.color, config.animate && "animate-spin") }),
3040
3526
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
3041
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold", children: config.label }),
3527
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold", children: statusLabel }),
3042
3528
  withdrawal.admin_notes && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: withdrawal.admin_notes })
3043
3529
  ] })
3044
3530
  ] }),
3045
3531
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-muted rounded-xl p-4 space-y-3", children: [
3046
3532
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
3047
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Amount" }),
3533
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: labels.amount }),
3048
3534
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: amountUsd })
3049
3535
  ] }),
3050
3536
  totalFeeUsd && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-sm", children: [
3051
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Total fees" }),
3537
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: labels.totalFees }),
3052
3538
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-destructive", children: [
3053
3539
  "-",
3054
3540
  totalFeeUsd
3055
3541
  ] })
3056
3542
  ] }),
3057
3543
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between pt-2 border-t", children: [
3058
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "You receive" }),
3544
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: labels.youReceive }),
3059
3545
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3060
3546
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.TokenIcon, { symbol: withdrawal.currency_code, size: 24 }),
3061
3547
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono font-bold text-lg", children: finalAmountUsd })
3062
3548
  ] })
3063
3549
  ] }),
3064
3550
  withdrawal.crypto_amount && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-sm", children: [
3065
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Crypto amount" }),
3551
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: labels.cryptoAmount }),
3066
3552
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-mono", children: [
3067
3553
  withdrawal.crypto_amount,
3068
3554
  " ",
@@ -3071,14 +3557,14 @@ function WithdrawalSheet({ withdrawalId, open, onOpenChange }) {
3071
3557
  ] })
3072
3558
  ] }),
3073
3559
  withdrawal.wallet_address && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
3074
- /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Destination Wallet" }),
3560
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: labels.destinationWallet }),
3075
3561
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3076
3562
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 p-3 bg-muted rounded-xl font-mono text-sm break-all", children: withdrawal.wallet_address }),
3077
3563
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.CopyButton, { value: withdrawal.wallet_address, variant: "outline", className: "shrink-0" })
3078
3564
  ] })
3079
3565
  ] }),
3080
3566
  withdrawal.transaction_hash && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
3081
- /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Transaction Hash" }),
3567
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: labels.transactionHash }),
3082
3568
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3083
3569
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 p-3 bg-muted rounded-xl font-mono text-sm break-all", children: withdrawal.transaction_hash }),
3084
3570
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.CopyButton, { value: withdrawal.transaction_hash, variant: "outline", className: "shrink-0" })
@@ -3092,7 +3578,7 @@ function WithdrawalSheet({ withdrawalId, open, onOpenChange }) {
3092
3578
  onClick: () => window.open(withdrawal.explorer_link, "_blank"),
3093
3579
  children: [
3094
3580
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLink, { className: "h-4 w-4 mr-2" }),
3095
- "View on Explorer"
3581
+ labels.viewOnExplorer
3096
3582
  ]
3097
3583
  }
3098
3584
  ),
@@ -3104,29 +3590,29 @@ function WithdrawalSheet({ withdrawalId, open, onOpenChange }) {
3104
3590
  onClick: handleCancel,
3105
3591
  children: [
3106
3592
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Ban, { className: "h-4 w-4 mr-2" }),
3107
- "Cancel Withdrawal"
3593
+ labels.cancel
3108
3594
  ]
3109
3595
  }
3110
3596
  ),
3111
3597
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-xs text-muted-foreground pt-4 border-t", children: [
3112
3598
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
3113
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Withdrawal ID" }),
3599
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: labels.withdrawalId }),
3114
3600
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono", children: withdrawal.id })
3115
3601
  ] }),
3116
3602
  withdrawal.internal_withdrawal_id && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
3117
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Reference #" }),
3603
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: labels.reference }),
3118
3604
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono", children: withdrawal.internal_withdrawal_id })
3119
3605
  ] }),
3120
3606
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
3121
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Created" }),
3607
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: labels.created }),
3122
3608
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: createdAt })
3123
3609
  ] }),
3124
3610
  completedAt && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
3125
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Completed" }),
3611
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: labels.completed }),
3126
3612
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: completedAt })
3127
3613
  ] }),
3128
3614
  withdrawal.currency_network && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
3129
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Network" }),
3615
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: labels.network }),
3130
3616
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: withdrawal.currency_network })
3131
3617
  ] })
3132
3618
  ] }),
@@ -3138,7 +3624,7 @@ function WithdrawalSheet({ withdrawalId, open, onOpenChange }) {
3138
3624
  onClick: () => mutate(),
3139
3625
  children: [
3140
3626
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "h-4 w-4 mr-2" }),
3141
- "Refresh Status"
3627
+ labels.refreshStatus
3142
3628
  ]
3143
3629
  }
3144
3630
  )
@@ -3150,38 +3636,70 @@ var statusConfig3 = {
3150
3636
  pending: {
3151
3637
  icon: lucideReact.Clock,
3152
3638
  color: "text-yellow-500",
3153
- bg: "bg-yellow-500/10",
3154
- label: "Waiting for payment"
3639
+ bg: "bg-yellow-500/10"
3155
3640
  },
3156
3641
  confirming: {
3157
3642
  icon: lucideReact.RefreshCw,
3158
3643
  color: "text-blue-500",
3159
3644
  bg: "bg-blue-500/10",
3160
- label: "Confirming",
3161
3645
  animate: true
3162
3646
  },
3163
3647
  completed: {
3164
3648
  icon: lucideReact.CheckCircle2,
3165
3649
  color: "text-green-500",
3166
- bg: "bg-green-500/10",
3167
- label: "Completed"
3650
+ bg: "bg-green-500/10"
3168
3651
  },
3169
3652
  failed: {
3170
3653
  icon: lucideReact.XCircle,
3171
3654
  color: "text-red-500",
3172
- bg: "bg-red-500/10",
3173
- label: "Failed"
3655
+ bg: "bg-red-500/10"
3174
3656
  },
3175
3657
  expired: {
3176
3658
  icon: lucideReact.AlertCircle,
3177
3659
  color: "text-muted-foreground",
3178
- bg: "bg-muted",
3179
- label: "Expired"
3660
+ bg: "bg-muted"
3180
3661
  }
3181
3662
  };
3182
3663
  function PaymentSheet({ paymentId, open, onOpenChange, onCreateNew }) {
3664
+ const baseT = i18n$1.useT();
3665
+ const pt = i18n.createTypedExtensionT(baseT, PAYMENTS_NAMESPACE);
3183
3666
  const { getPaymentDetails } = useWallet();
3184
3667
  const [timeLeft, setTimeLeft] = react.useState("");
3668
+ const labels = react.useMemo(() => ({
3669
+ title: pt("sheets.paymentTitle"),
3670
+ // Status labels
3671
+ waiting: pt("paymentStatus.waiting"),
3672
+ confirming: pt("paymentStatus.confirming"),
3673
+ completed: pt("paymentStatus.completed"),
3674
+ failed: pt("paymentStatus.failed"),
3675
+ expired: pt("paymentStatus.expired"),
3676
+ paymentExpired: pt("paymentStatus.paymentExpired"),
3677
+ // Descriptions
3678
+ sendCrypto: pt("paymentDescriptions.sendCrypto"),
3679
+ expiredDesc: pt("paymentDescriptions.expired"),
3680
+ completedDesc: pt("paymentDescriptions.completed"),
3681
+ failedDesc: pt("paymentDescriptions.failed"),
3682
+ confirmingDesc: pt("paymentDescriptions.confirming"),
3683
+ createNew: pt("paymentDescriptions.createNew"),
3684
+ // Form
3685
+ amountToSend: pt("form.amountToSend"),
3686
+ equivalent: pt("form.equivalent"),
3687
+ network: pt("form.network"),
3688
+ paymentAddress: pt("form.paymentAddress"),
3689
+ transactionHash: pt("form.transactionHash"),
3690
+ paymentId: pt("form.paymentId"),
3691
+ orderId: pt("form.orderId"),
3692
+ created: pt("form.created"),
3693
+ // Actions
3694
+ tryAgain: pt("actions.tryAgain"),
3695
+ refreshStatus: pt("actions.refreshStatus"),
3696
+ createNewPayment: pt("actions.createNewPayment"),
3697
+ openInPaymentProvider: pt("actions.openInPaymentProvider"),
3698
+ // Withdraw
3699
+ expiresIn: pt("withdraw.expiresIn"),
3700
+ // Messages
3701
+ failedToLoadPayment: pt("messages.failedToLoadPayment")
3702
+ }), [pt]);
3185
3703
  const { data: payment, isLoading, error, mutate } = useSWR__default.default(
3186
3704
  open && paymentId ? ["payment-details", paymentId] : null,
3187
3705
  () => getPaymentDetails(paymentId),
@@ -3222,18 +3740,25 @@ function PaymentSheet({ paymentId, open, onOpenChange, onCreateNew }) {
3222
3740
  const isFailed = status === "failed";
3223
3741
  const isConfirming = status === "confirming";
3224
3742
  const canPay2 = isPending && !isExpired2;
3743
+ const statusLabels = {
3744
+ pending: labels.waiting,
3745
+ confirming: labels.confirming,
3746
+ completed: labels.completed,
3747
+ failed: labels.failed,
3748
+ expired: labels.expired
3749
+ };
3225
3750
  let description2 = "";
3226
- if (canPay2) description2 = "Send cryptocurrency to complete payment";
3227
- else if (isExpired2) description2 = "This payment has expired";
3228
- else if (isCompleted) description2 = "Payment completed successfully";
3229
- else if (isFailed) description2 = "Payment failed";
3230
- else if (isConfirming) description2 = "Confirming your payment";
3751
+ if (canPay2) description2 = labels.sendCrypto;
3752
+ else if (isExpired2) description2 = labels.expiredDesc;
3753
+ else if (isCompleted) description2 = labels.completedDesc;
3754
+ else if (isFailed) description2 = labels.failedDesc;
3755
+ else if (isConfirming) description2 = labels.confirmingDesc;
3231
3756
  const statusBadge2 = {
3232
3757
  bg: isExpired2 ? "bg-muted" : config2.bg,
3233
3758
  iconColor: isExpired2 ? "text-muted-foreground" : config2.color,
3234
3759
  iconAnimate: config2.animate,
3235
- label: isExpired2 ? "Payment Expired" : config2.label,
3236
- subtitle: canPay2 && timeLeft ? `Expires in ${timeLeft}` : isExpired2 ? "Please create a new payment to continue" : null
3760
+ label: isExpired2 ? labels.paymentExpired : statusLabels[status],
3761
+ subtitle: canPay2 && timeLeft ? `${labels.expiresIn} ${timeLeft}` : isExpired2 ? labels.createNew : null
3237
3762
  };
3238
3763
  const qrCodeUrl2 = payment?.pay_address && canPay2 ? `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(payment.pay_address)}` : null;
3239
3764
  const amountUsd2 = payment?.amount_usd ? `$${parseFloat(payment.amount_usd).toFixed(2)} USD` : "";
@@ -3253,12 +3778,12 @@ function PaymentSheet({ paymentId, open, onOpenChange, onCreateNew }) {
3253
3778
  amountUsd: amountUsd2,
3254
3779
  createdAt: createdAt2
3255
3780
  };
3256
- }, [payment, timeLeft]);
3781
+ }, [payment, timeLeft, labels]);
3257
3782
  const { config, canPay, isExpired, description, statusBadge, qrCodeUrl, amountUsd, createdAt } = displayData;
3258
3783
  const StatusIcon = config.icon;
3259
3784
  return /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheet, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(uiCore.ResponsiveSheetContent, { className: "sm:max-w-lg", children: [
3260
3785
  /* @__PURE__ */ jsxRuntime.jsxs(uiCore.ResponsiveSheetHeader, { children: [
3261
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetTitle, { children: "Payment Details" }),
3786
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetTitle, { children: labels.title }),
3262
3787
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.ResponsiveSheetDescription, { children: description })
3263
3788
  ] }),
3264
3789
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 sm:p-0 sm:mt-4 overflow-y-auto max-h-[70vh]", children: [
@@ -3269,8 +3794,8 @@ function PaymentSheet({ paymentId, open, onOpenChange, onCreateNew }) {
3269
3794
  ] }),
3270
3795
  error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center py-12", children: [
3271
3796
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "h-12 w-12 text-destructive mb-4" }),
3272
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-4", children: "Failed to load payment" }),
3273
- /* @__PURE__ */ jsxRuntime.jsx(uiCore.Button, { onClick: () => mutate(), children: "Try Again" })
3797
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mb-4", children: labels.failedToLoadPayment }),
3798
+ /* @__PURE__ */ jsxRuntime.jsx(uiCore.Button, { onClick: () => mutate(), children: labels.tryAgain })
3274
3799
  ] }),
3275
3800
  payment && !isLoading && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
3276
3801
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: lib.cn("flex items-center gap-3 p-4 rounded-xl", statusBadge.bg), children: [
@@ -3282,7 +3807,7 @@ function PaymentSheet({ paymentId, open, onOpenChange, onCreateNew }) {
3282
3807
  ] }),
3283
3808
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-muted rounded-xl p-4 space-y-3", children: [
3284
3809
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
3285
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Amount to send" }),
3810
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: labels.amountToSend }),
3286
3811
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3287
3812
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.TokenIcon, { symbol: payment.currency_code, size: 24 }),
3288
3813
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-mono font-bold text-lg", children: [
@@ -3293,17 +3818,17 @@ function PaymentSheet({ paymentId, open, onOpenChange, onCreateNew }) {
3293
3818
  ] })
3294
3819
  ] }),
3295
3820
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-sm", children: [
3296
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Equivalent" }),
3821
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: labels.equivalent }),
3297
3822
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: amountUsd })
3298
3823
  ] }),
3299
3824
  payment.currency_network && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-sm pt-2 border-t", children: [
3300
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Network" }),
3825
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: labels.network }),
3301
3826
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: payment.currency_network })
3302
3827
  ] })
3303
3828
  ] }),
3304
3829
  qrCodeUrl && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center p-6 bg-white rounded-xl", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: qrCodeUrl, alt: "Payment QR Code", className: "w-48 h-48" }) }),
3305
3830
  payment.pay_address && canPay && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
3306
- /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Payment Address" }),
3831
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: labels.paymentAddress }),
3307
3832
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3308
3833
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 p-3 bg-muted rounded-xl font-mono text-sm break-all", children: payment.pay_address }),
3309
3834
  /* @__PURE__ */ jsxRuntime.jsx(uiCore.CopyButton, { value: payment.pay_address, variant: "outline", className: "shrink-0" })
@@ -3318,11 +3843,11 @@ function PaymentSheet({ paymentId, open, onOpenChange, onCreateNew }) {
3318
3843
  onOpenChange(false);
3319
3844
  onCreateNew();
3320
3845
  },
3321
- children: "Create New Payment"
3846
+ children: labels.createNewPayment
3322
3847
  }
3323
3848
  ),
3324
3849
  payment.transaction_hash && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
3325
- /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: "Transaction Hash" }),
3850
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium", children: labels.transactionHash }),
3326
3851
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-3 bg-muted rounded-xl font-mono text-sm break-all", children: payment.transaction_hash })
3327
3852
  ] }),
3328
3853
  payment.payment_url && canPay && /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3333,21 +3858,21 @@ function PaymentSheet({ paymentId, open, onOpenChange, onCreateNew }) {
3333
3858
  onClick: () => window.open(payment.payment_url, "_blank"),
3334
3859
  children: [
3335
3860
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLink, { className: "h-4 w-4 mr-2" }),
3336
- "Open in Payment Provider"
3861
+ labels.openInPaymentProvider
3337
3862
  ]
3338
3863
  }
3339
3864
  ),
3340
3865
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-xs text-muted-foreground pt-4 border-t", children: [
3341
3866
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
3342
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Payment ID" }),
3867
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: labels.paymentId }),
3343
3868
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono", children: payment.id })
3344
3869
  ] }),
3345
3870
  payment.internal_payment_id && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
3346
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Order #" }),
3871
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: labels.orderId }),
3347
3872
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono", children: payment.internal_payment_id })
3348
3873
  ] }),
3349
3874
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between", children: [
3350
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Created" }),
3875
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: labels.created }),
3351
3876
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: createdAt })
3352
3877
  ] })
3353
3878
  ] }),
@@ -3359,7 +3884,7 @@ function PaymentSheet({ paymentId, open, onOpenChange, onCreateNew }) {
3359
3884
  onClick: () => mutate(),
3360
3885
  children: [
3361
3886
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "h-4 w-4 mr-2" }),
3362
- "Refresh Status"
3887
+ labels.refreshStatus
3363
3888
  ]
3364
3889
  }
3365
3890
  )
@@ -3445,7 +3970,7 @@ function WalletPage() {
3445
3970
  // package.json
3446
3971
  var package_default = {
3447
3972
  name: "@djangocfg/ext-payments",
3448
- version: "1.0.20",
3973
+ version: "1.0.22",
3449
3974
  description: "Payments system extension for DjangoCFG",
3450
3975
  keywords: [
3451
3976
  "django",
@@ -3496,6 +4021,11 @@ var package_default = {
3496
4021
  types: "./dist/api/hooks.d.ts",
3497
4022
  import: "./dist/api/hooks.js",
3498
4023
  require: "./dist/api/hooks.cjs"
4024
+ },
4025
+ "./i18n": {
4026
+ types: "./dist/i18n.d.ts",
4027
+ import: "./dist/i18n.js",
4028
+ require: "./dist/i18n.cjs"
3499
4029
  }
3500
4030
  },
3501
4031
  files: [
@@ -3511,6 +4041,7 @@ var package_default = {
3511
4041
  peerDependencies: {
3512
4042
  "@djangocfg/api": "workspace:*",
3513
4043
  "@djangocfg/ext-base": "workspace:*",
4044
+ "@djangocfg/i18n": "workspace:*",
3514
4045
  "@djangocfg/ui-core": "workspace:*",
3515
4046
  "@djangocfg/ui-nextjs": "workspace:*",
3516
4047
  consola: "^3.4.2",
@@ -3527,6 +4058,7 @@ var package_default = {
3527
4058
  devDependencies: {
3528
4059
  "@djangocfg/api": "workspace:*",
3529
4060
  "@djangocfg/ext-base": "workspace:*",
4061
+ "@djangocfg/i18n": "workspace:*",
3530
4062
  "@djangocfg/typescript-config": "workspace:*",
3531
4063
  "@djangocfg/ui-nextjs": "workspace:*",
3532
4064
  "@types/node": "^24.7.2",