@sdkrouter/payments 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +122 -0
- package/dist/PaymentContent-BRE2P6SS.cjs +14 -0
- package/dist/PaymentContent-BRE2P6SS.cjs.map +1 -0
- package/dist/PaymentContent-HEOBMWSU.mjs +5 -0
- package/dist/PaymentContent-HEOBMWSU.mjs.map +1 -0
- package/dist/_api/index.cjs +29 -0
- package/dist/_api/index.cjs.map +1 -0
- package/dist/_api/index.d.cts +950 -0
- package/dist/_api/index.d.ts +950 -0
- package/dist/_api/index.mjs +4 -0
- package/dist/_api/index.mjs.map +1 -0
- package/dist/chunk-3W2GRACB.cjs +580 -0
- package/dist/chunk-3W2GRACB.cjs.map +1 -0
- package/dist/chunk-4QQBPIIT.mjs +1289 -0
- package/dist/chunk-4QQBPIIT.mjs.map +1 -0
- package/dist/chunk-MCTTQUAM.mjs +4 -0
- package/dist/chunk-MCTTQUAM.mjs.map +1 -0
- package/dist/chunk-N3LT7RRW.mjs +561 -0
- package/dist/chunk-N3LT7RRW.mjs.map +1 -0
- package/dist/chunk-P3RGFDH4.cjs +1298 -0
- package/dist/chunk-P3RGFDH4.cjs.map +1 -0
- package/dist/chunk-RSPZZ5K2.cjs +5 -0
- package/dist/chunk-RSPZZ5K2.cjs.map +1 -0
- package/dist/index.cjs +993 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +143 -0
- package/dist/index.d.ts +143 -0
- package/dist/index.mjs +933 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/styles/theme.ts","../src/styles/base.ts","../src/styles/form.ts","../src/styles/status.ts","../src/styles/modal.ts","../src/styles/mobile.ts","../src/styles/index.ts","../src/hooks/useInjectStyles.ts","../src/hooks/useMobile.ts","../src/components/PaymentPage/PaymentPage.tsx","../src/components/PaymentWidget/PaymentWidget.tsx"],"names":["useEffect","STYLE_ID","useState","PaymentContent","lazy","jsx","PaymentProvider","jsxs","Suspense","Fragment"],"mappings":";;;;;;;;;AAAA,IAAM,SAAA,GAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAuBlB,IAAM,QAAA,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAuBjB,IAAM,GAAA,GAAM,WAAA;AACZ,IAAM,OAAA,GAAU,SAAS,GAAG,CAAA,CAAA;AAC5B,IAAM,WAAA,GAAc,uBAAuB,GAAG,CAAA,CAAA;AAC9C,IAAM,QAAA,GAAW,UAAU,GAAG,CAAA,CAAA;AAC9B,IAAM,YAAA,GAAe,wBAAwB,GAAG,CAAA,CAAA;AAChD,IAAM,YAAA,GAAe,+CAA+C,GAAG,CAAA,CAAA;AAEhE,IAAM,KAAA,GAAQ;AAAA;AAAA,EAEnB,GAAG,MAAM,SAAS,CAAA;;AAAA;AAAA;AAAA,EAAA,EAIhB,YAAY,MAAM,QAAQ,CAAA;AAAA;;AAAA;AAAA,EAI5B,OAAO,CAAA;AAAA,EACP,WAAW,MAAM,QAAQ,CAAA;;AAAA;AAAA,EAGzB,QAAQ,CAAA;AAAA,EACR,YAAY,MAAM,SAAS,CAAA;AAAA,CAAA;;;ACpEtB,IAAM,IAAA,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;;ACAb,IAAM,IAAA,GAAO;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;;ACAb,IAAM,MAAA,GAAS;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;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","file":"index.cjs","sourcesContent":["const lightVars = `\n --sdkr-pay-bg: #ffffff;\n --sdkr-pay-bg-subtle: #f8fafc;\n --sdkr-pay-fg: #1e293b;\n --sdkr-pay-fg-muted: #64748b;\n --sdkr-pay-border: #e2e8f0;\n --sdkr-pay-primary: #3b82f6;\n --sdkr-pay-primary-hover: #2563eb;\n --sdkr-pay-primary-fg: #ffffff;\n --sdkr-pay-error: #ef4444;\n --sdkr-pay-error-bg: #fef2f2;\n --sdkr-pay-success: #22c55e;\n --sdkr-pay-success-bg: #f0fdf4;\n --sdkr-pay-input-bg: #ffffff;\n --sdkr-pay-input-border: #d1d5db;\n --sdkr-pay-input-focus: #3b82f6;\n --sdkr-pay-badge-bg: #eff6ff;\n --sdkr-pay-badge-fg: #1d4ed8;\n --sdkr-pay-card-shadow: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06);\n --sdkr-pay-qr-bg: #ffffff;\n --sdkr-pay-qr-fg: #1e293b;\n`;\n\nconst darkVars = `\n --sdkr-pay-bg: #141414;\n --sdkr-pay-bg-subtle: #0a0a0a;\n --sdkr-pay-fg: #fafafa;\n --sdkr-pay-fg-muted: #a1a1aa;\n --sdkr-pay-border: #262626;\n --sdkr-pay-primary: #3b82f6;\n --sdkr-pay-primary-hover: #60a5fa;\n --sdkr-pay-primary-fg: #ffffff;\n --sdkr-pay-error: #f87171;\n --sdkr-pay-error-bg: #1c1917;\n --sdkr-pay-success: #4ade80;\n --sdkr-pay-success-bg: #0a1a0f;\n --sdkr-pay-input-bg: #1a1a1a;\n --sdkr-pay-input-border: #333333;\n --sdkr-pay-input-focus: #3b82f6;\n --sdkr-pay-badge-bg: #1e293b;\n --sdkr-pay-badge-fg: #60a5fa;\n --sdkr-pay-card-shadow: 0 1px 3px rgba(0,0,0,0.3), 0 1px 2px rgba(0,0,0,0.2);\n --sdkr-pay-qr-bg: #1a1a1a;\n --sdkr-pay-qr-fg: #fafafa;\n`;\n\nconst sel = '.sdkr-pay';\nconst darkSel = `.dark ${sel}`;\nconst darkAttrSel = `[data-theme=\"dark\"] ${sel}`;\nconst lightSel = `.light ${sel}`;\nconst lightAttrSel = `[data-theme=\"light\"] ${sel}`;\nconst darkMediaSel = `:root:not([data-theme=\"light\"]):not(.light) ${sel}`;\n\nexport const theme = `\n/* Light (default) */\n${sel} { ${lightVars} }\n\n/* Dark: system (only when no explicit theme) */\n@media (prefers-color-scheme: dark) {\n ${darkMediaSel} { ${darkVars} }\n}\n\n/* Dark: explicit */\n${darkSel},\n${darkAttrSel} { ${darkVars} }\n\n/* Light: explicit (overrides system dark) */\n${lightSel},\n${lightAttrSel} { ${lightVars} }\n`;\n","export const base = `\n/* Base */\n.sdkr-pay {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n color: var(--sdkr-pay-fg);\n background: var(--sdkr-pay-bg);\n line-height: 1.5;\n box-sizing: border-box;\n -webkit-font-smoothing: antialiased;\n}\n\n.sdkr-pay *, .sdkr-pay *::before, .sdkr-pay *::after {\n box-sizing: border-box;\n}\n\n/* Page layout */\n.sdkr-pay-page {\n min-height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n background: var(--sdkr-pay-bg-subtle);\n}\n\n.sdkr-pay-card {\n width: 100%;\n max-width: 440px;\n background: var(--sdkr-pay-bg);\n border: 1px solid var(--sdkr-pay-border);\n border-radius: 12px;\n box-shadow: var(--sdkr-pay-card-shadow);\n overflow: hidden;\n}\n\n.sdkr-pay-widget {\n width: 100%;\n max-width: 440px;\n}\n\n.sdkr-pay-content {\n animation: sdkr-pay-fade-in 0.2s ease-out;\n}\n\n.sdkr-pay-separator {\n height: 1px;\n background: var(--sdkr-pay-border);\n margin: 0;\n border: none;\n}\n\n/* Loading */\n.sdkr-pay-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px;\n color: var(--sdkr-pay-fg-muted);\n}\n\n.sdkr-pay-spinner {\n width: 20px;\n height: 20px;\n border: 2px solid var(--sdkr-pay-border);\n border-top-color: var(--sdkr-pay-primary);\n border-radius: 50%;\n animation: sdkr-pay-spin 0.6s linear infinite;\n}\n\n/* Error page */\n.sdkr-pay-error-page {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 48px 24px;\n text-align: center;\n}\n\n.sdkr-pay-error-text {\n font-size: 14px;\n color: var(--sdkr-pay-fg-muted);\n margin: 0;\n}\n\n/* Powered by */\n.sdkr-pay-powered {\n text-align: center;\n padding: 12px;\n font-size: 11px;\n color: var(--sdkr-pay-fg-muted);\n}\n\n.sdkr-pay-powered a {\n color: var(--sdkr-pay-fg-muted);\n text-decoration: none;\n}\n\n.sdkr-pay-powered a:hover {\n text-decoration: underline;\n}\n\n/* Keyframes */\n@keyframes sdkr-pay-spin {\n to { transform: rotate(360deg); }\n}\n\n@keyframes sdkr-pay-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes sdkr-pay-slide-up {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes sdkr-blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n}\n\n@keyframes sdkr-pulse {\n 0%, 100% { opacity: 0.3; transform: scale(0.8); }\n 50% { opacity: 1; transform: scale(1.2); }\n}\n`;\n","export const form = `\n/* Info section */\n.sdkr-pay-info {\n padding: 24px 24px 0;\n}\n\n.sdkr-pay-info-icon {\n width: 40px;\n height: 40px;\n border-radius: 10px;\n background: var(--sdkr-pay-badge-bg);\n color: var(--sdkr-pay-badge-fg);\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 12px;\n}\n\n.sdkr-pay-title {\n font-size: 20px;\n font-weight: 600;\n margin: 0 0 4px;\n color: var(--sdkr-pay-fg);\n letter-spacing: -0.01em;\n}\n\n.sdkr-pay-description {\n font-size: 14px;\n color: var(--sdkr-pay-fg-muted);\n margin: 0 0 16px;\n white-space: pre-wrap;\n line-height: 1.5;\n}\n\n.sdkr-pay-amount-badge {\n display: inline-flex;\n align-items: baseline;\n gap: 6px;\n padding: 8px 14px;\n background: var(--sdkr-pay-badge-bg);\n border-radius: 10px;\n margin-bottom: 16px;\n}\n\n.sdkr-pay-amount-value {\n font-size: 20px;\n font-weight: 700;\n color: var(--sdkr-pay-badge-fg);\n letter-spacing: -0.02em;\n}\n\n.sdkr-pay-amount-currency {\n font-size: 13px;\n font-weight: 500;\n color: var(--sdkr-pay-fg-muted);\n}\n\n/* Form */\n.sdkr-pay-form {\n padding: 20px 24px 24px;\n}\n\n.sdkr-pay-field {\n margin-bottom: 16px;\n}\n\n.sdkr-pay-label {\n display: block;\n font-size: 13px;\n font-weight: 500;\n color: var(--sdkr-pay-fg);\n margin-bottom: 6px;\n}\n\n.sdkr-pay-label-optional {\n color: var(--sdkr-pay-fg-muted);\n font-weight: 400;\n}\n\n.sdkr-pay-input {\n width: 100%;\n padding: 10px 12px;\n font-size: 16px;\n line-height: 1.5;\n color: var(--sdkr-pay-fg);\n background: var(--sdkr-pay-input-bg);\n border: 1px solid var(--sdkr-pay-input-border);\n border-radius: 8px;\n outline: none;\n transition: border-color 0.15s, box-shadow 0.15s;\n -webkit-appearance: none;\n}\n\n.sdkr-pay-input:focus {\n border-color: var(--sdkr-pay-input-focus);\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n.sdkr-pay-input::placeholder {\n color: var(--sdkr-pay-fg-muted);\n}\n\n.sdkr-pay-input-error {\n border-color: var(--sdkr-pay-error);\n}\n\n.sdkr-pay-input-error:focus {\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15);\n}\n\n.sdkr-pay-amount-prefix {\n position: relative;\n}\n\n.sdkr-pay-amount-prefix .sdkr-pay-input {\n padding-left: 28px;\n}\n\n.sdkr-pay-amount-prefix::before {\n content: '$';\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--sdkr-pay-fg-muted);\n font-size: 14px;\n pointer-events: none;\n}\n\n.sdkr-pay-field-error {\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--sdkr-pay-error);\n font-size: 12px;\n margin-top: 4px;\n}\n\n.sdkr-pay-error {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--sdkr-pay-error-bg);\n color: var(--sdkr-pay-error);\n border-radius: 8px;\n font-size: 14px;\n margin-bottom: 16px;\n}\n\n/* Button */\n.sdkr-pay-btn {\n width: 100%;\n padding: 12px 20px;\n font-size: 15px;\n font-weight: 600;\n color: var(--sdkr-pay-primary-fg);\n background: var(--sdkr-pay-primary);\n border: none;\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s, opacity 0.15s, transform 0.1s;\n}\n\n.sdkr-pay-btn:hover:not(:disabled) {\n background: var(--sdkr-pay-primary-hover);\n}\n\n.sdkr-pay-btn:active:not(:disabled) {\n transform: scale(0.98);\n}\n\n.sdkr-pay-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.sdkr-pay-btn-content {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.sdkr-pay-btn-spinner {\n animation: sdkr-pay-spin 0.8s linear infinite;\n}\n\n.sdkr-pay-btn--ghost {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n background: transparent;\n color: var(--sdkr-pay-fg-muted);\n border: none;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n padding: 8px 16px;\n border-radius: 8px;\n transition: color 0.15s, background 0.15s;\n width: auto;\n}\n\n.sdkr-pay-btn--ghost:hover {\n color: var(--sdkr-pay-fg);\n background: var(--sdkr-pay-bg-subtle);\n}\n`;\n","export const status = `\n/* Status */\n.sdkr-pay-status {\n padding: 24px;\n}\n\n.sdkr-pay-status-header {\n text-align: center;\n margin-bottom: 20px;\n}\n\n.sdkr-pay-status-icon {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 12px;\n}\n\n.sdkr-pay-status-icon--waiting {\n background: var(--sdkr-pay-badge-bg);\n color: var(--sdkr-pay-badge-fg);\n}\n\n.sdkr-pay-status-icon--success {\n background: var(--sdkr-pay-success-bg);\n color: var(--sdkr-pay-success);\n}\n\n.sdkr-pay-status-icon--error {\n background: var(--sdkr-pay-error-bg);\n color: var(--sdkr-pay-error);\n}\n\n.sdkr-pay-status-icon--paid {\n background: #22c55e;\n color: white;\n}\n\n.sdkr-pay-status-title {\n font-size: 18px;\n font-weight: 600;\n margin: 0 0 4px;\n letter-spacing: -0.01em;\n}\n\n.sdkr-pay-status-subtitle {\n font-size: 13px;\n color: var(--sdkr-pay-fg-muted);\n margin: 0;\n}\n\n.sdkr-pay-status-actions {\n padding: 8px 24px 16px;\n text-align: center;\n}\n\n/* Hero amount */\n.sdkr-pay-hero-amount {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 16px;\n margin: 0 24px 16px;\n background: var(--sdkr-pay-badge-bg);\n border-radius: 12px;\n}\n\n.sdkr-pay-hero-amount-icon {\n color: var(--sdkr-pay-badge-fg);\n}\n\n.sdkr-pay-hero-amount-value {\n font-size: 24px;\n font-weight: 700;\n letter-spacing: -0.02em;\n font-variant-numeric: tabular-nums;\n color: var(--sdkr-pay-fg);\n}\n\n.sdkr-pay-hero-amount-coin {\n font-size: 14px;\n font-weight: 500;\n color: var(--sdkr-pay-fg-muted);\n}\n\n/* QR */\n.sdkr-pay-qr {\n display: flex;\n justify-content: center;\n padding: 16px;\n}\n\n.sdkr-pay-qr svg {\n border-radius: 12px;\n padding: 12px;\n background: var(--sdkr-pay-qr-bg);\n}\n\n/* Payment details */\n.sdkr-pay-detail {\n padding: 12px 16px;\n background: var(--sdkr-pay-bg-subtle);\n border: 1px solid var(--sdkr-pay-border);\n border-radius: 8px;\n margin-bottom: 12px;\n}\n\n.sdkr-pay-detail-label {\n font-size: 11px;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--sdkr-pay-fg-muted);\n margin-bottom: 4px;\n}\n\n.sdkr-pay-detail-value {\n font-size: 14px;\n font-weight: 500;\n word-break: break-all;\n color: var(--sdkr-pay-fg);\n}\n\n.sdkr-pay-detail-mono {\n font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', 'Consolas', monospace;\n font-size: 13px;\n}\n\n.sdkr-pay-detail-copyable {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sdkr-pay-detail-copyable span {\n flex: 1;\n min-width: 0;\n word-break: break-all;\n}\n\n.sdkr-pay-copy-btn {\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n border: 1px solid var(--sdkr-pay-border);\n border-radius: 8px;\n background: var(--sdkr-pay-bg);\n color: var(--sdkr-pay-fg-muted);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.15s;\n}\n\n.sdkr-pay-copy-btn:hover {\n background: var(--sdkr-pay-primary);\n color: white;\n border-color: var(--sdkr-pay-primary);\n}\n\n.sdkr-pay-copy-btn:active {\n transform: scale(0.92);\n}\n\n.sdkr-pay-network-badge {\n display: inline-block;\n font-size: 11px;\n font-weight: 500;\n padding: 1px 6px;\n border-radius: 4px;\n background: var(--sdkr-pay-bg-subtle);\n color: var(--sdkr-pay-fg-muted);\n margin-left: 4px;\n}\n\n/* Countdown */\n.sdkr-pay-countdown {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 16px;\n margin: 8px 0;\n border-radius: 8px;\n background: var(--sdkr-pay-bg-subtle);\n}\n\n.sdkr-pay-countdown-icon {\n color: var(--sdkr-pay-fg-muted);\n}\n\n.sdkr-pay-countdown-value {\n font-size: 20px;\n font-weight: 700;\n font-variant-numeric: tabular-nums;\n color: var(--sdkr-pay-fg);\n}\n\n.sdkr-pay-countdown--urgent .sdkr-pay-countdown-value {\n color: var(--sdkr-pay-error);\n animation: sdkr-blink 1s ease-in-out infinite;\n}\n\n/* Confirmations */\n.sdkr-pay-confirmations {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n font-size: 13px;\n color: var(--sdkr-pay-primary);\n padding: 8px;\n font-variant-numeric: tabular-nums;\n}\n\n.sdkr-pay-confirmations-icon {\n animation: sdkr-pay-spin 1.5s linear infinite;\n}\n\n/* Polling */\n.sdkr-pay-polling {\n text-align: center;\n font-size: 13px;\n color: var(--sdkr-pay-primary);\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n}\n\n.sdkr-pay-polling-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--sdkr-pay-primary);\n animation: sdkr-pulse 1.5s ease-in-out infinite;\n}\n\n/* Warning */\n.sdkr-pay-warning {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n font-size: 12px;\n color: var(--sdkr-pay-fg-muted);\n padding: 8px 16px;\n margin: 8px 0;\n border-radius: 8px;\n background: var(--sdkr-pay-bg-subtle);\n}\n\n/* History */\n.sdkr-pay-history {\n padding: 24px;\n}\n\n.sdkr-pay-history-title {\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--sdkr-pay-fg-muted);\n margin: 0 0 12px;\n}\n\n.sdkr-pay-history-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 0;\n border-bottom: 1px solid var(--sdkr-pay-border);\n}\n\n.sdkr-pay-history-item:last-child {\n border-bottom: none;\n}\n\n.sdkr-pay-history-amount {\n font-size: 14px;\n font-weight: 600;\n color: var(--sdkr-pay-fg);\n}\n\n.sdkr-pay-history-status {\n display: inline-flex;\n align-items: center;\n padding: 2px 8px;\n font-size: 12px;\n font-weight: 500;\n border-radius: 6px;\n}\n\n.sdkr-pay-history-status--completed {\n background: var(--sdkr-pay-success-bg);\n color: var(--sdkr-pay-success);\n}\n\n.sdkr-pay-history-status--pending {\n background: var(--sdkr-pay-badge-bg);\n color: var(--sdkr-pay-badge-fg);\n}\n\n.sdkr-pay-history-status--failed {\n background: var(--sdkr-pay-error-bg);\n color: var(--sdkr-pay-error);\n}\n\n.sdkr-pay-history-date {\n font-size: 13px;\n color: var(--sdkr-pay-fg-muted);\n}\n`;\n","export const modal = `\n/* Modal overlay */\n.sdkr-pay-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9999;\n padding: 24px;\n animation: sdkr-pay-fade-in 0.15s ease-out;\n}\n\n.sdkr-pay-overlay .sdkr-pay-card {\n animation: sdkr-pay-slide-up 0.2s ease-out;\n}\n\n/* Modal close */\n.sdkr-pay-close {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n color: var(--sdkr-pay-fg-muted);\n cursor: pointer;\n border-radius: 6px;\n font-size: 18px;\n line-height: 1;\n transition: background 0.15s;\n}\n\n.sdkr-pay-close:hover {\n background: var(--sdkr-pay-bg-subtle);\n}\n`;\n","export const mobile = `\n/* ── Mobile ──────────────────────────────────────────────────────────────── */\n\n.sdkr-pay--mobile .sdkr-pay-page {\n padding: 0;\n align-items: stretch;\n min-height: 100dvh;\n}\n\n.sdkr-pay--mobile .sdkr-pay-card {\n max-width: none;\n border: none;\n border-radius: 0;\n box-shadow: none;\n min-height: 100dvh;\n display: flex;\n flex-direction: column;\n}\n\n.sdkr-pay--mobile .sdkr-pay-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.sdkr-pay--mobile .sdkr-pay-status {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.sdkr-pay--mobile .sdkr-pay-status-actions {\n margin-top: auto;\n padding-bottom: env(safe-area-inset-bottom, 16px);\n}\n\n.sdkr-pay--mobile .sdkr-pay-form {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.sdkr-pay--mobile .sdkr-pay-form .sdkr-pay-btn {\n margin-top: auto;\n}\n\n.sdkr-pay--mobile .sdkr-pay-powered {\n padding-bottom: env(safe-area-inset-bottom, 12px);\n}\n\n.sdkr-pay--mobile .sdkr-pay-qr svg {\n width: 180px;\n height: 180px;\n}\n\n.sdkr-pay--mobile .sdkr-pay-detail-value {\n font-size: 13px;\n}\n\n.sdkr-pay--mobile .sdkr-pay-input {\n font-size: 16px;\n}\n\n/* CSS-only fallback for no-JS mobile */\n@media (max-width: 767px) {\n .sdkr-pay-page {\n padding: 0;\n align-items: stretch;\n }\n .sdkr-pay-card {\n max-width: none;\n border: none;\n border-radius: 0;\n box-shadow: none;\n min-height: 100dvh;\n }\n}\n`;\n","import { theme } from './theme';\nimport { base } from './base';\nimport { form } from './form';\nimport { status } from './status';\nimport { modal } from './modal';\nimport { mobile } from './mobile';\n\nexport const styles = [theme, base, form, status, modal, mobile].join('\\n');\n\nexport { theme } from './theme';\nexport { base } from './base';\nexport { form } from './form';\nexport { status } from './status';\nexport { modal } from './modal';\nexport { mobile } from './mobile';\n","'use client';\n\nimport { useEffect } from 'react';\nimport { styles } from '../styles';\nimport { STYLE_ID } from '../config';\n\nlet refCount = 0;\n\nexport function useInjectStyles() {\n useEffect(() => {\n refCount++;\n\n if (!document.getElementById(STYLE_ID)) {\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = styles;\n document.head.appendChild(style);\n }\n\n return () => {\n refCount--;\n if (refCount === 0) {\n document.getElementById(STYLE_ID)?.remove();\n }\n };\n }, []);\n}\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useMobile(): boolean {\n const [isMobile, setIsMobile] = useState(false);\n\n useEffect(() => {\n const mq = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n setIsMobile(mq.matches);\n const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches);\n mq.addEventListener('change', handler);\n return () => mq.removeEventListener('change', handler);\n }, []);\n\n return isMobile;\n}\n","'use client';\n\nimport { lazy, Suspense } from 'react';\nimport { useInjectStyles } from '../../hooks/useInjectStyles';\nimport { useMobile } from '../../hooks/useMobile';\nimport { PaymentProvider } from '../../context';\nimport type { PaymentLinkConfig } from '../../types';\n\nconst PaymentContent = lazy(() =>\n import('../PaymentContent').then((m) => ({ default: m.PaymentContent })),\n);\n\nfunction PaymentLoader() {\n return (\n <div className=\"sdkr-pay-loading\" style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', padding: 48, gap: 12 }}>\n <span className=\"sdkr-pay-spinner\" />\n </div>\n );\n}\n\nexport function PaymentPage(props: PaymentLinkConfig) {\n useInjectStyles();\n const isMobile = useMobile();\n\n const rootClass = isMobile ? 'sdkr-pay sdkr-pay--mobile' : 'sdkr-pay';\n\n return (\n <PaymentProvider {...props}>\n <div className={rootClass}>\n <div className=\"sdkr-pay-page\">\n <div className=\"sdkr-pay-card\">\n <Suspense fallback={<PaymentLoader />}>\n <PaymentContent />\n </Suspense>\n <div className=\"sdkr-pay-powered\">\n Powered by <a href=\"https://sdkrouter.com\" target=\"_blank\" rel=\"noopener noreferrer\">SDKRouter</a>\n </div>\n </div>\n </div>\n </div>\n </PaymentProvider>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport { useInjectStyles } from '../../hooks/useInjectStyles';\nimport { PaymentProvider } from '../../context';\nimport { PaymentContent } from '../PaymentContent';\nimport type { PaymentLinkConfig } from '../../types';\n\ninterface PaymentWidgetProps extends PaymentLinkConfig {\n mode?: 'inline' | 'button';\n buttonText?: string;\n}\n\nexport function PaymentWidget(props: PaymentWidgetProps) {\n const { mode = 'inline', buttonText = 'Pay Now', ...config } = props;\n useInjectStyles();\n\n const [isOpen, setIsOpen] = useState(false);\n\n const card = (\n <div className=\"sdkr-pay-card\" style={{ position: 'relative' }}>\n {mode === 'button' && (\n <button className=\"sdkr-pay-close\" onClick={() => setIsOpen(false)}>×</button>\n )}\n <PaymentContent />\n </div>\n );\n\n return (\n <PaymentProvider {...config}>\n <div className=\"sdkr-pay\">\n {mode === 'button' ? (\n <>\n <button className=\"sdkr-pay-btn\" onClick={() => setIsOpen(true)}>{buttonText}</button>\n {isOpen && (\n <div className=\"sdkr-pay-overlay\" onClick={(e) => { if (e.target === e.currentTarget) setIsOpen(false); }}>\n {card}\n </div>\n )}\n </>\n ) : (\n <div className=\"sdkr-pay-widget\">{card}</div>\n )}\n </div>\n </PaymentProvider>\n );\n}\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
export { API as PaymentsAPI, createPaymentsApi } from './_api/index.cjs';
|
|
4
|
+
import 'consola';
|
|
5
|
+
|
|
6
|
+
interface PaymentLinkConfig {
|
|
7
|
+
linkId: string;
|
|
8
|
+
/** API base URL. Default: https://api.sdkrouter.com */
|
|
9
|
+
baseUrl?: string;
|
|
10
|
+
/** Customer external ID — auto-passed to pay request, enables payment history */
|
|
11
|
+
customerId?: string;
|
|
12
|
+
/** Project slug — scopes customer payments to a project */
|
|
13
|
+
projectSlug?: string;
|
|
14
|
+
onSuccess?: (payment: PaymentResult) => void;
|
|
15
|
+
onError?: (error: string) => void;
|
|
16
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
17
|
+
/** Locale for UI strings (ISO 639-1, e.g. 'en', 'ru', 'ko'). Default: 'en' */
|
|
18
|
+
locale?: string;
|
|
19
|
+
}
|
|
20
|
+
interface CustomerPayment {
|
|
21
|
+
id: string;
|
|
22
|
+
amount_usd: string;
|
|
23
|
+
currency_code: string;
|
|
24
|
+
status: string;
|
|
25
|
+
created_at: string;
|
|
26
|
+
}
|
|
27
|
+
interface PaymentLinkInfo {
|
|
28
|
+
id: string;
|
|
29
|
+
title: string;
|
|
30
|
+
description: string;
|
|
31
|
+
amountUsd: number | null;
|
|
32
|
+
network: string | null;
|
|
33
|
+
}
|
|
34
|
+
interface PaymentResult {
|
|
35
|
+
paymentId: string | null;
|
|
36
|
+
paymentUrl: string | null;
|
|
37
|
+
payAddress: string | null;
|
|
38
|
+
payAmount: string | null;
|
|
39
|
+
coin: string | null;
|
|
40
|
+
network: string | null;
|
|
41
|
+
expiresAt: string | null;
|
|
42
|
+
error: string | null;
|
|
43
|
+
success: boolean;
|
|
44
|
+
}
|
|
45
|
+
interface PaymentFormData {
|
|
46
|
+
email?: string;
|
|
47
|
+
name?: string;
|
|
48
|
+
amountUsd?: number;
|
|
49
|
+
externalId?: string;
|
|
50
|
+
}
|
|
51
|
+
type PaymentStep = 'form' | 'processing' | 'status';
|
|
52
|
+
/** Minimum payment amount in USD */
|
|
53
|
+
declare const MIN_AMOUNT_USD = 20;
|
|
54
|
+
/** Maximum payment amount in USD */
|
|
55
|
+
declare const MAX_AMOUNT_USD = 50000;
|
|
56
|
+
|
|
57
|
+
declare function PaymentPage(props: PaymentLinkConfig): react_jsx_runtime.JSX.Element;
|
|
58
|
+
|
|
59
|
+
interface PaymentWidgetProps extends PaymentLinkConfig {
|
|
60
|
+
mode?: 'inline' | 'button';
|
|
61
|
+
buttonText?: string;
|
|
62
|
+
}
|
|
63
|
+
declare function PaymentWidget(props: PaymentWidgetProps): react_jsx_runtime.JSX.Element;
|
|
64
|
+
|
|
65
|
+
declare function PaymentContent(): react_jsx_runtime.JSX.Element;
|
|
66
|
+
|
|
67
|
+
declare function PaymentForm(): react_jsx_runtime.JSX.Element | null;
|
|
68
|
+
|
|
69
|
+
declare function PaymentStatus(): react_jsx_runtime.JSX.Element | null;
|
|
70
|
+
|
|
71
|
+
declare function PaymentInfo(): react_jsx_runtime.JSX.Element | null;
|
|
72
|
+
|
|
73
|
+
declare function CustomerPaymentHistory(): react_jsx_runtime.JSX.Element | null;
|
|
74
|
+
|
|
75
|
+
interface PaymentContextValue {
|
|
76
|
+
link: PaymentLinkInfo | null;
|
|
77
|
+
isLoading: boolean;
|
|
78
|
+
error: string | null;
|
|
79
|
+
step: PaymentStep;
|
|
80
|
+
pay: (data: PaymentFormData) => Promise<void>;
|
|
81
|
+
paymentResult: PaymentResult | null;
|
|
82
|
+
isPaying: boolean;
|
|
83
|
+
reset: () => void;
|
|
84
|
+
config: PaymentLinkConfig;
|
|
85
|
+
}
|
|
86
|
+
declare function usePayment(): PaymentContextValue;
|
|
87
|
+
interface PaymentProviderProps extends PaymentLinkConfig {
|
|
88
|
+
children: ReactNode;
|
|
89
|
+
}
|
|
90
|
+
declare function PaymentProvider({ children, ...config }: PaymentProviderProps): react_jsx_runtime.JSX.Element;
|
|
91
|
+
|
|
92
|
+
interface UsePaymentLinkOptions {
|
|
93
|
+
linkId: string;
|
|
94
|
+
baseUrl?: string;
|
|
95
|
+
customerId?: string;
|
|
96
|
+
onSuccess?: (result: PaymentResult) => void;
|
|
97
|
+
onError?: (error: string) => void;
|
|
98
|
+
}
|
|
99
|
+
interface UsePaymentLinkReturn {
|
|
100
|
+
link: PaymentLinkInfo | null;
|
|
101
|
+
isLoading: boolean;
|
|
102
|
+
error: string | null;
|
|
103
|
+
step: PaymentStep;
|
|
104
|
+
pay: (data: PaymentFormData) => Promise<void>;
|
|
105
|
+
paymentResult: PaymentResult | null;
|
|
106
|
+
isPaying: boolean;
|
|
107
|
+
reset: () => void;
|
|
108
|
+
}
|
|
109
|
+
declare function usePaymentLink(options: UsePaymentLinkOptions): UsePaymentLinkReturn;
|
|
110
|
+
|
|
111
|
+
interface UseCustomerPaymentsOptions {
|
|
112
|
+
projectSlug?: string;
|
|
113
|
+
customerId?: string;
|
|
114
|
+
baseUrl?: string;
|
|
115
|
+
}
|
|
116
|
+
interface UseCustomerPaymentsReturn {
|
|
117
|
+
payments: CustomerPayment[];
|
|
118
|
+
loading: boolean;
|
|
119
|
+
error: string | null;
|
|
120
|
+
}
|
|
121
|
+
declare function useCustomerPayments(options: UseCustomerPaymentsOptions): UseCustomerPaymentsReturn;
|
|
122
|
+
|
|
123
|
+
interface PaymentIdentity {
|
|
124
|
+
customerId: string;
|
|
125
|
+
projectSlug: string;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Persists customerId + projectSlug to localStorage per linkId.
|
|
129
|
+
*
|
|
130
|
+
* - Props provided → saves and returns them
|
|
131
|
+
* - No props → reads from store (returning visitor)
|
|
132
|
+
*/
|
|
133
|
+
declare function usePaymentIdentity(opts: {
|
|
134
|
+
linkId: string;
|
|
135
|
+
customerId?: string;
|
|
136
|
+
projectSlug?: string;
|
|
137
|
+
}): PaymentIdentity | null;
|
|
138
|
+
|
|
139
|
+
declare function useMobile(): boolean;
|
|
140
|
+
|
|
141
|
+
declare const styles: string;
|
|
142
|
+
|
|
143
|
+
export { type CustomerPayment, CustomerPaymentHistory, MAX_AMOUNT_USD, MIN_AMOUNT_USD, PaymentContent, type PaymentContextValue, PaymentForm, type PaymentFormData, type PaymentIdentity, PaymentInfo, type PaymentLinkConfig, type PaymentLinkInfo, PaymentPage, PaymentProvider, type PaymentProviderProps, type PaymentResult, PaymentStatus, type PaymentStep, PaymentWidget, type UseCustomerPaymentsOptions, type UseCustomerPaymentsReturn, type UsePaymentLinkOptions, type UsePaymentLinkReturn, styles, useCustomerPayments, useMobile, usePayment, usePaymentIdentity, usePaymentLink };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
export { API as PaymentsAPI, createPaymentsApi } from './_api/index.js';
|
|
4
|
+
import 'consola';
|
|
5
|
+
|
|
6
|
+
interface PaymentLinkConfig {
|
|
7
|
+
linkId: string;
|
|
8
|
+
/** API base URL. Default: https://api.sdkrouter.com */
|
|
9
|
+
baseUrl?: string;
|
|
10
|
+
/** Customer external ID — auto-passed to pay request, enables payment history */
|
|
11
|
+
customerId?: string;
|
|
12
|
+
/** Project slug — scopes customer payments to a project */
|
|
13
|
+
projectSlug?: string;
|
|
14
|
+
onSuccess?: (payment: PaymentResult) => void;
|
|
15
|
+
onError?: (error: string) => void;
|
|
16
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
17
|
+
/** Locale for UI strings (ISO 639-1, e.g. 'en', 'ru', 'ko'). Default: 'en' */
|
|
18
|
+
locale?: string;
|
|
19
|
+
}
|
|
20
|
+
interface CustomerPayment {
|
|
21
|
+
id: string;
|
|
22
|
+
amount_usd: string;
|
|
23
|
+
currency_code: string;
|
|
24
|
+
status: string;
|
|
25
|
+
created_at: string;
|
|
26
|
+
}
|
|
27
|
+
interface PaymentLinkInfo {
|
|
28
|
+
id: string;
|
|
29
|
+
title: string;
|
|
30
|
+
description: string;
|
|
31
|
+
amountUsd: number | null;
|
|
32
|
+
network: string | null;
|
|
33
|
+
}
|
|
34
|
+
interface PaymentResult {
|
|
35
|
+
paymentId: string | null;
|
|
36
|
+
paymentUrl: string | null;
|
|
37
|
+
payAddress: string | null;
|
|
38
|
+
payAmount: string | null;
|
|
39
|
+
coin: string | null;
|
|
40
|
+
network: string | null;
|
|
41
|
+
expiresAt: string | null;
|
|
42
|
+
error: string | null;
|
|
43
|
+
success: boolean;
|
|
44
|
+
}
|
|
45
|
+
interface PaymentFormData {
|
|
46
|
+
email?: string;
|
|
47
|
+
name?: string;
|
|
48
|
+
amountUsd?: number;
|
|
49
|
+
externalId?: string;
|
|
50
|
+
}
|
|
51
|
+
type PaymentStep = 'form' | 'processing' | 'status';
|
|
52
|
+
/** Minimum payment amount in USD */
|
|
53
|
+
declare const MIN_AMOUNT_USD = 20;
|
|
54
|
+
/** Maximum payment amount in USD */
|
|
55
|
+
declare const MAX_AMOUNT_USD = 50000;
|
|
56
|
+
|
|
57
|
+
declare function PaymentPage(props: PaymentLinkConfig): react_jsx_runtime.JSX.Element;
|
|
58
|
+
|
|
59
|
+
interface PaymentWidgetProps extends PaymentLinkConfig {
|
|
60
|
+
mode?: 'inline' | 'button';
|
|
61
|
+
buttonText?: string;
|
|
62
|
+
}
|
|
63
|
+
declare function PaymentWidget(props: PaymentWidgetProps): react_jsx_runtime.JSX.Element;
|
|
64
|
+
|
|
65
|
+
declare function PaymentContent(): react_jsx_runtime.JSX.Element;
|
|
66
|
+
|
|
67
|
+
declare function PaymentForm(): react_jsx_runtime.JSX.Element | null;
|
|
68
|
+
|
|
69
|
+
declare function PaymentStatus(): react_jsx_runtime.JSX.Element | null;
|
|
70
|
+
|
|
71
|
+
declare function PaymentInfo(): react_jsx_runtime.JSX.Element | null;
|
|
72
|
+
|
|
73
|
+
declare function CustomerPaymentHistory(): react_jsx_runtime.JSX.Element | null;
|
|
74
|
+
|
|
75
|
+
interface PaymentContextValue {
|
|
76
|
+
link: PaymentLinkInfo | null;
|
|
77
|
+
isLoading: boolean;
|
|
78
|
+
error: string | null;
|
|
79
|
+
step: PaymentStep;
|
|
80
|
+
pay: (data: PaymentFormData) => Promise<void>;
|
|
81
|
+
paymentResult: PaymentResult | null;
|
|
82
|
+
isPaying: boolean;
|
|
83
|
+
reset: () => void;
|
|
84
|
+
config: PaymentLinkConfig;
|
|
85
|
+
}
|
|
86
|
+
declare function usePayment(): PaymentContextValue;
|
|
87
|
+
interface PaymentProviderProps extends PaymentLinkConfig {
|
|
88
|
+
children: ReactNode;
|
|
89
|
+
}
|
|
90
|
+
declare function PaymentProvider({ children, ...config }: PaymentProviderProps): react_jsx_runtime.JSX.Element;
|
|
91
|
+
|
|
92
|
+
interface UsePaymentLinkOptions {
|
|
93
|
+
linkId: string;
|
|
94
|
+
baseUrl?: string;
|
|
95
|
+
customerId?: string;
|
|
96
|
+
onSuccess?: (result: PaymentResult) => void;
|
|
97
|
+
onError?: (error: string) => void;
|
|
98
|
+
}
|
|
99
|
+
interface UsePaymentLinkReturn {
|
|
100
|
+
link: PaymentLinkInfo | null;
|
|
101
|
+
isLoading: boolean;
|
|
102
|
+
error: string | null;
|
|
103
|
+
step: PaymentStep;
|
|
104
|
+
pay: (data: PaymentFormData) => Promise<void>;
|
|
105
|
+
paymentResult: PaymentResult | null;
|
|
106
|
+
isPaying: boolean;
|
|
107
|
+
reset: () => void;
|
|
108
|
+
}
|
|
109
|
+
declare function usePaymentLink(options: UsePaymentLinkOptions): UsePaymentLinkReturn;
|
|
110
|
+
|
|
111
|
+
interface UseCustomerPaymentsOptions {
|
|
112
|
+
projectSlug?: string;
|
|
113
|
+
customerId?: string;
|
|
114
|
+
baseUrl?: string;
|
|
115
|
+
}
|
|
116
|
+
interface UseCustomerPaymentsReturn {
|
|
117
|
+
payments: CustomerPayment[];
|
|
118
|
+
loading: boolean;
|
|
119
|
+
error: string | null;
|
|
120
|
+
}
|
|
121
|
+
declare function useCustomerPayments(options: UseCustomerPaymentsOptions): UseCustomerPaymentsReturn;
|
|
122
|
+
|
|
123
|
+
interface PaymentIdentity {
|
|
124
|
+
customerId: string;
|
|
125
|
+
projectSlug: string;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Persists customerId + projectSlug to localStorage per linkId.
|
|
129
|
+
*
|
|
130
|
+
* - Props provided → saves and returns them
|
|
131
|
+
* - No props → reads from store (returning visitor)
|
|
132
|
+
*/
|
|
133
|
+
declare function usePaymentIdentity(opts: {
|
|
134
|
+
linkId: string;
|
|
135
|
+
customerId?: string;
|
|
136
|
+
projectSlug?: string;
|
|
137
|
+
}): PaymentIdentity | null;
|
|
138
|
+
|
|
139
|
+
declare function useMobile(): boolean;
|
|
140
|
+
|
|
141
|
+
declare const styles: string;
|
|
142
|
+
|
|
143
|
+
export { type CustomerPayment, CustomerPaymentHistory, MAX_AMOUNT_USD, MIN_AMOUNT_USD, PaymentContent, type PaymentContextValue, PaymentForm, type PaymentFormData, type PaymentIdentity, PaymentInfo, type PaymentLinkConfig, type PaymentLinkInfo, PaymentPage, PaymentProvider, type PaymentProviderProps, type PaymentResult, PaymentStatus, type PaymentStep, PaymentWidget, type UseCustomerPaymentsOptions, type UseCustomerPaymentsReturn, type UsePaymentLinkOptions, type UsePaymentLinkReturn, styles, useCustomerPayments, useMobile, usePayment, usePaymentIdentity, usePaymentLink };
|