@aurum-sdk/core 0.1.0
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 +420 -0
- package/dist/chunk-DHEVW7CR.js +2432 -0
- package/dist/chunk-DHEVW7CR.js.map +1 -0
- package/dist/chunk-U5BSED2R.mjs +2432 -0
- package/dist/chunk-U5BSED2R.mjs.map +1 -0
- package/dist/index.css +743 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +273 -0
- package/dist/index.d.ts +273 -0
- package/dist/index.js +2433 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2433 -0
- package/dist/index.mjs.map +1 -0
- package/dist/widgets.css +743 -0
- package/dist/widgets.css.map +1 -0
- package/dist/widgets.d.mts +88 -0
- package/dist/widgets.d.ts +88 -0
- package/dist/widgets.js +78 -0
- package/dist/widgets.js.map +1 -0
- package/dist/widgets.mjs +78 -0
- package/dist/widgets.mjs.map +1 -0
- package/package.json +113 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/globals.css","../src/ui/Badge/Badge.css","../src/ui/Button/Button.css","../src/ui/Divider/Divider.css","../src/components/PoweredBy/PoweredBy.css","../src/ui/Modal/Modal.css","../src/ui/Spinner/Spinner.css","../src/ui/Text/Text.css","../src/components/ModalHeader/ModalHeader.css","../src/components/ConnectModal/EmailAuth.css","../src/components/ConnectModal/WalletGrid.css","../src/components/ConnectModal/AdditionalWalletsIcon.css","../src/components/ConnectModal/ConnectionStatus/ConnectionStatus.css","../src/components/QRCodeDisplay/QRCodeSkeleton.css","../src/components/QRCodeDisplay/QRCodeDisplay.css"],"sourcesContent":["/* ============================================\n AURUM SDK - DESIGN TOKEN SYSTEM\n ============================================\n\n Google Fonts:\n - Noto Sans: 400, 500, 600, 700\n ============================================ */\n\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');\n\n/* ============================================\n External variables (injected by createShadowRoot.ts):\n - --aurum-primary-color: Brand color from dapp\n - --aurum-border-radius-*: Radius scale tokens\n - --aurum-modal-z-index: Modal z-index\n - --aurum-font-family: Font family from dapp\n ============================================ */\n\n/* Base reset styles for Shadow DOM */\n:host {\n all: initial;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/* Ensure form elements inherit font from parent */\ninput,\nbutton,\ntextarea,\nselect {\n font-family: inherit;\n}\n\n.aurum-sdk {\n /* ==========================================\n TYPOGRAPHY\n ========================================== */\n font-family: var(--aurum-font-family);\n font-size: 1rem;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n /* Font weights */\n --font-normal: 400;\n --font-medium: 500;\n --font-semibold: 600;\n --font-bold: 700;\n\n /* ==========================================\n TRANSITIONS\n ========================================== */\n --duration-fast: 100ms;\n --duration-normal: 200ms;\n --duration-slow: 300ms;\n --ease-default: cubic-bezier(0.4, 0, 0.2, 1);\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n\n /* ==========================================\n LIGHT THEME COLORS (Default)\n ========================================== */\n\n /* Foreground / Text */\n --color-foreground: #0c0c0c;\n --color-foreground-muted: #787878;\n --color-foreground-subtle: #979797;\n\n /* Card surfaces */\n --color-card: #ffffff;\n\n /* Borders */\n --color-border: #d9d9d9;\n --color-border-muted: #c0c0c0;\n --color-border-focus: var(--aurum-primary-color);\n\n /* Brand / Primary (from integrator) */\n --color-primary: var(--aurum-primary-color);\n --color-primary-foreground: #ffffff;\n --color-primary-hover: color-mix(in srgb, var(--aurum-primary-color) 85%, #000);\n --color-primary-muted: color-mix(in srgb, var(--aurum-primary-color) 15%, transparent);\n\n /* Interactive elements */\n --color-accent: #f1f1f1;\n --color-accent-foreground: #0d0d0d;\n --color-accent-hover: #e6e6e6;\n\n /* Semantic colors */\n --color-success: #22c55e;\n --color-error: #ef4444;\n\n /* Overlay / Modal */\n --color-overlay: rgb(0 0 0 / 0.5);\n\n /* Ring (focus indicator) */\n --color-ring: var(--aurum-primary-color);\n --ring-offset: 0.125rem;\n\n /* Shadows */\n --shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n}\n\n/* ==========================================\n DARK THEME COLORS\n ========================================== */\n\n.aurum-sdk[data-theme='dark'] {\n /* Foreground / Text */\n --color-foreground: #fafafa;\n --color-foreground-muted: #a9a9a9;\n --color-foreground-subtle: #777777;\n\n /* Card surfaces */\n --color-card: #151515;\n\n /* Borders */\n --color-border: #282828;\n --color-border-muted: #424242;\n --color-border-focus: var(--aurum-primary-color);\n\n /* Brand / Primary (from integrator) */\n --color-primary: var(--aurum-primary-color);\n --color-primary-foreground: #0a0a0a;\n --color-primary-hover: color-mix(in srgb, var(--aurum-primary-color) 85%, #fff);\n --color-primary-muted: color-mix(in srgb, var(--aurum-primary-color) 20%, transparent);\n\n /* Interactive elements */\n --color-accent: #272727;\n --color-accent-foreground: #fafafa;\n --color-accent-hover: #404040;\n\n /* Semantic colors */\n --color-success: #22c55e;\n --color-error: #ef4444;\n\n /* Overlay / Modal */\n --color-overlay: rgb(0 0 0 / 0.7);\n\n /* Ring (focus indicator) */\n --color-ring: var(--aurum-primary-color);\n --ring-offset: 0.125rem;\n\n /* Shadows */\n --shadow: 0 20px 25px -5px rgb(0 0 0 / 0.5), 0 8px 10px -6px rgb(0 0 0 / 0.5);\n}\n",".aurum-badge-recent {\n padding: 0.25rem 0.5rem;\n border-radius: var(--aurum-border-radius-xs);\n\n font-size: 0.65rem;\n line-height: 1;\n letter-spacing: 0.07em;\n text-transform: uppercase;\n\n color: var(--color-foreground-muted);\n}\n",".aurum-button {\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n font-weight: var(--font-semibold);\n cursor: pointer;\n transition:\n background-color var(--duration-normal) var(--ease-default),\n color var(--duration-normal) var(--ease-default),\n transform var(--duration-fast) var(--ease-default),\n box-shadow var(--duration-normal) var(--ease-default);\n text-decoration: none;\n box-sizing: border-box;\n position: relative;\n outline: none;\n font-family: inherit;\n}\n\n.aurum-button:focus-visible {\n outline: 2px solid var(--color-ring);\n outline-offset: var(--ring-offset);\n}\n\n.aurum-button--xs {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n gap: 0.25rem;\n border-radius: var(--aurum-border-radius-xs);\n}\n\n.aurum-button--sm {\n padding: 0.5rem 0.75rem;\n font-size: 0.875rem;\n gap: 0.25rem;\n border-radius: calc(var(--aurum-border-radius-sm) - 2px);\n}\n\n.aurum-button--md {\n padding: 0.75rem 1rem;\n font-size: 0.9rem;\n gap: 0.5rem;\n border-radius: calc(var(--aurum-border-radius-md) - 2px);\n}\n\n.aurum-button--lg {\n padding: 1rem 1.5rem;\n font-size: 1rem;\n gap: 0.75rem;\n border-radius: var(--aurum-border-radius-md);\n}\n\n.aurum-button--full-width {\n width: 100%;\n}\n\n.aurum-button--primary {\n background-color: var(--color-primary);\n color: var(--color-primary-foreground);\n}\n\n.aurum-button--primary:active:not(:disabled) {\n transform: scale(0.98);\n}\n\n.aurum-button--secondary {\n background-color: var(--color-accent);\n color: var(--color-accent-foreground);\n}\n\n.aurum-button--secondary:active:not(:disabled) {\n transform: scale(0.98);\n}\n\n.aurum-button--tertiary {\n background: transparent;\n color: var(--color-foreground);\n border: 1px solid var(--color-border);\n}\n\n.aurum-button--tertiary:active:not(:disabled) {\n transform: scale(0.98);\n}\n\n.aurum-button--text {\n background: transparent;\n color: var(--color-primary);\n padding: 0.25rem;\n}\n\n.aurum-button--text:not(.aurum-button--full-width) {\n width: fit-content;\n}\n\n.aurum-button--text:active:not(:disabled) {\n transform: scale(0.98);\n}\n\n.aurum-button--close {\n background: transparent;\n color: var(--color-foreground-muted);\n border: none;\n padding: 0.5rem;\n border-radius: var(--aurum-border-radius-md);\n font-size: 1.25rem;\n line-height: 1;\n}\n\n.aurum-button--close:active:not(:disabled) {\n transform: scale(0.95);\n}\n\n/* Hover styles only for devices with hover capability (not touch) */\n@media (hover: hover) {\n .aurum-button--primary:hover:not(:disabled) {\n background-color: var(--color-primary-hover);\n }\n\n .aurum-button--secondary:hover:not(:disabled) {\n background-color: var(--color-accent-hover);\n }\n\n .aurum-button--tertiary:hover:not(:disabled) {\n background-color: var(--color-accent);\n border-color: var(--color-border-muted);\n }\n\n .aurum-button--text:hover:not(:disabled) {\n opacity: 0.7;\n }\n\n .aurum-button--close:hover:not(:disabled) {\n background-color: var(--color-accent);\n color: var(--color-foreground);\n }\n}\n\n.aurum-button--disabled,\n.aurum-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.aurum-button--loading {\n pointer-events: none;\n}\n",".divider {\n display: flex;\n align-items: center;\n width: 100%;\n}\n\n.divider-line {\n flex: 1;\n height: 1px;\n background-color: var(--color-border);\n}\n\n.divider-text {\n padding: 0 1rem;\n color: var(--color-foreground-subtle);\n font-size: 0.875rem;\n font-weight: var(--font-medium);\n}\n",".powered-by-container {\n position: absolute;\n bottom: 1rem;\n left: 0;\n right: 0;\n width: 100%;\n}\n",".modal-overlay {\n position: fixed;\n inset: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: var(--aurum-modal-z-index);\n background-color: var(--color-overlay);\n opacity: 0;\n}\n\n.modal-overlay.modal-open {\n opacity: 1;\n transition: opacity 150ms ease-out;\n}\n\n.modal-overlay.modal-exiting {\n opacity: 0;\n transition: opacity 150ms ease-in;\n}\n\n.modal-content {\n position: relative;\n width: 23.75rem;\n min-width: 17rem;\n padding: 1.25rem 1.5rem;\n color: var(--color-card-foreground);\n background-color: var(--color-card);\n border-radius: var(--aurum-border-radius-lg);\n box-shadow: var(--shadow);\n border: 1px solid var(--color-border-muted);\n outline: none;\n opacity: 0;\n transform: scale(0.95);\n}\n\n.modal-overlay.modal-open .modal-content {\n opacity: 1;\n transform: scale(1);\n transition:\n opacity 150ms ease-out,\n transform 150ms ease-out;\n}\n\n.modal-overlay.modal-exiting .modal-content {\n opacity: 0;\n transform: scale(0.95);\n transition:\n opacity 150ms ease-in,\n transform 150ms ease-in;\n}\n\n.modal-page-container {\n position: relative;\n width: 100%;\n overflow-x: visible;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n.modal-page-container::-webkit-scrollbar {\n display: none;\n}\n\n.modal-page {\n position: relative;\n width: 100%;\n box-sizing: border-box;\n opacity: 0;\n transition: opacity 0s;\n}\n\n.modal-page.active {\n opacity: 1;\n transition: opacity var(--duration-slow) var(--ease-out);\n}\n\n/* Mobile drawer layout */\n@media (max-width: 30.25rem) {\n .modal-overlay {\n align-items: flex-end;\n justify-content: center;\n opacity: 1;\n transition: none;\n }\n\n .modal-overlay.modal-open {\n transition: none;\n }\n\n .modal-overlay.modal-exiting {\n opacity: 1;\n background-color: transparent;\n transition: none;\n }\n\n .modal-content {\n width: 100%;\n max-height: 82vh;\n max-height: 82dvh;\n min-height: 35vh;\n min-height: 35dvh;\n padding: 1rem;\n border-radius: var(--aurum-border-radius-lg) var(--aurum-border-radius-lg) 0 0;\n border-bottom: none;\n display: flex;\n flex-direction: column;\n height: auto;\n opacity: 1;\n transform: translateY(100%);\n }\n\n .modal-overlay.modal-open .modal-content {\n opacity: 1;\n transform: translateY(0);\n transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .modal-overlay.modal-exiting .modal-content {\n opacity: 1;\n transform: translateY(100%);\n transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .modal-page-container {\n flex: 0 1 auto;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n }\n\n .modal-page {\n flex: 0 1 auto;\n display: flex;\n flex-direction: column;\n }\n}\n",".spinner {\n flex-shrink: 0;\n animation: spinner-rotate 1s linear infinite;\n}\n\n@keyframes spinner-rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n",".aurum-text {\n margin: 0;\n padding: 0;\n font-family: inherit;\n line-height: 1.5;\n}\n\n.aurum-text--primary {\n color: var(--color-foreground);\n}\n\n.aurum-text--secondary {\n color: var(--color-foreground-muted);\n}\n\n.aurum-text--tertiary {\n color: var(--color-foreground-subtle);\n}\n\n.aurum-text--error {\n color: var(--color-error);\n}\n\n.aurum-text--brand {\n color: var(--color-primary);\n}\n\n.aurum-text--success {\n color: var(--color-success);\n}\n\n.aurum-text--xs {\n font-size: 0.75rem;\n line-height: 1.4;\n}\n\n.aurum-text--sm {\n font-size: 0.875rem;\n line-height: 1.45;\n}\n\n.aurum-text--md {\n font-size: 1rem;\n line-height: 1.5;\n}\n\n.aurum-text--lg {\n font-size: 1.125rem;\n line-height: 1.5;\n}\n\n.aurum-text--normal {\n font-weight: var(--font-normal);\n}\n\n.aurum-text--semibold {\n font-weight: var(--font-semibold);\n}\n\n.aurum-text--bold {\n font-weight: var(--font-bold);\n}\n\n.aurum-text--align-left {\n text-align: left;\n}\n\n.aurum-text--align-center {\n text-align: center;\n}\n\n.aurum-text--align-right {\n text-align: right;\n}\n",".modal-header {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n padding: 1rem;\n background-color: var(--color-card);\n border-radius: var(--aurum-border-radius-lg) var(--aurum-border-radius-lg) 0 0;\n z-index: 1;\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n}\n\n.modal-header > div {\n display: flex;\n align-items: center;\n width: 100%;\n}\n\n.modal-header-left {\n justify-content: flex-start;\n min-width: 2.25rem;\n height: 2.25rem;\n}\n\n.modal-header-center {\n justify-content: center;\n max-width: 12.5rem;\n text-align: center;\n line-height: 1.2;\n overflow-wrap: break-word;\n}\n\n.modal-header-right {\n justify-content: flex-end;\n min-width: 2.25rem;\n height: 2.25rem;\n}\n",".email-auth-input {\n width: 100%;\n outline: none;\n font-family: inherit;\n font-size: 1rem;\n line-height: 1.75rem;\n box-sizing: border-box;\n padding: 0.75rem 3rem 0.75rem 3rem;\n color: var(--color-foreground);\n transition:\n outline 0.2s ease,\n border-color 0.2s ease;\n background-color: var(--color-card);\n border-width: 1px;\n border-style: solid;\n border-color: var(--color-border);\n border-radius: var(--aurum-border-radius-md);\n}\n\n.email-auth-input:hover:not(:focus):not(.email-auth-input--error) {\n border-color: var(--color-border-muted);\n}\n\n.email-auth-input:focus {\n outline: 2px solid var(--color-ring);\n outline-offset: var(--ring-offset);\n}\n\n.email-auth-input--error {\n outline: 2px solid var(--color-error);\n outline-offset: var(--ring-offset);\n}\n\n.email-auth-submit-button.aurum-button {\n top: 50%;\n right: 0.75rem;\n height: auto;\n padding: 0.5rem;\n min-width: auto;\n position: absolute;\n transform: translateY(-50%);\n border-radius: var(--aurum-border-radius-sm);\n}\n\n.email-auth-icon {\n top: 50%;\n left: 1rem;\n position: absolute;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n pointer-events: none;\n}\n",".aurum-wallet-grid {\n display: grid;\n grid-template-columns: repeat(var(--grid-columns, 3), 1fr);\n gap: 10px;\n width: 100%;\n}\n",".additional-wallets-container {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.additional-wallets-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: 1fr 1fr;\n gap: 0.125rem;\n align-items: center;\n justify-items: center;\n}\n\n.additional-wallets-grid-item {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.additional-wallets-placeholder {\n background-color: var(--aurum-color-bg-tertiary);\n border-radius: var(--aurum-border-radius-xs);\n opacity: 0.4;\n}\n\n.circular-icon-wrapper {\n border-radius: 50%;\n overflow: hidden;\n border: 2px solid var(--aurum-color-bg-secondary);\n}\n\n.circular-icon-wrapper--front {\n z-index: 2;\n}\n\n.circular-icon-wrapper--back {\n margin-left: -0.5rem;\n z-index: 1;\n}\n","@keyframes shake {\n 0%,\n 100% {\n transform: translateX(0);\n }\n 20%,\n 60% {\n transform: translateX(-0.125rem);\n }\n 40%,\n 80% {\n transform: translateX(0.125rem);\n }\n}\n\n@keyframes opacity-pulse {\n 0%,\n 100% {\n opacity: 0.4;\n }\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes scale-in {\n from {\n transform: scale(0.75);\n }\n to {\n transform: scale(1);\n }\n}\n\n.wallet-icon-shake {\n /* Duration synced with ANIMATION_DURATION.SHAKE in constants/theme.ts */\n animation: shake var(--duration-slow) var(--ease-default);\n}\n\n.ellipses-loading,\n.ellipses-success,\n.status-icon-with-dots {\n display: flex;\n gap: 0.25rem;\n align-items: center;\n justify-content: center;\n width: 100%;\n}\n\n.ellipses-loading span,\n.ellipses-success span,\n.status-icon-with-dots .dot,\n.status-icon-with-dots .icon-center {\n font-size: 3rem;\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 0.9375rem;\n height: 3rem;\n margin: 0;\n padding: 0;\n flex-shrink: 0;\n}\n\n.ellipses-loading span,\n.ellipses-success span,\n.status-icon-with-dots .dot {\n transform: translateY(-0.28125rem);\n}\n\n.status-icon-with-dots .icon-center {\n transform: translateY(-0.2rem);\n}\n\n.ellipses-loading span {\n color: var(--color-foreground-subtle);\n opacity: 0.4;\n animation: opacity-pulse 1.5s var(--ease-default) infinite;\n will-change: opacity;\n}\n\n.ellipses-loading span:nth-child(2) {\n animation-delay: 0.2s;\n}\n.ellipses-loading span:nth-child(3) {\n animation-delay: 0.4s;\n}\n.ellipses-loading span:nth-child(4) {\n animation-delay: 0.6s;\n}\n.ellipses-loading span:nth-child(5) {\n animation-delay: 0.8s;\n}\n\n.ellipses-success span,\n.status-icon-with-dots.success .dot {\n color: var(--aurum-primary-color);\n}\n\n.status-icon-with-dots.error .dot {\n color: var(--color-error);\n}\n\n.status-button {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n width: 100%;\n}\n\n.success-icon-large {\n animation: scale-in var(--duration-fast) var(--ease-out);\n}\n\n/* Logo containers for visual balance */\n.brand-logo-container,\n.wallet-logo-with-retry {\n position: relative;\n display: inline-block;\n}\n\n/* Always reserve space on both sides to prevent layout shift when retry button appears/disappears */\n.brand-logo-container {\n margin-left: 0.375rem; /* Matches retry button's right: -0.375rem */\n}\n\n.wallet-logo-with-retry {\n margin-right: 0.375rem; /* Reserve space for retry button */\n}\n\n.retry-icon-overlay.retry-icon-overlay {\n position: absolute;\n bottom: -0.125rem;\n right: -0.375rem;\n width: 1.625rem;\n height: 1.625rem;\n min-width: 1.625rem;\n min-height: 1.625rem;\n border-radius: 50%;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n",".qr-skeleton-container {\n width: 100%;\n position: relative;\n}\n\n.qr-skeleton-svg {\n display: block;\n position: relative;\n z-index: 2;\n border-radius: var(--aurum-border-radius-sm);\n}\n\n.qr-skeleton-dot {\n opacity: 0.7;\n}\n\n.qr-skeleton-eye {\n opacity: 0.7;\n}\n","@keyframes qr-shimmer {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(100%);\n }\n}\n\n.qr-container-shimmer {\n position: relative;\n overflow: hidden; /* Keep for shimmer animation */\n}\n\n.qr-container-shimmer::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n color-mix(in srgb, var(--color-foreground) 10%, transparent) 50%,\n transparent 100%\n );\n animation: qr-shimmer 2s infinite;\n pointer-events: none;\n z-index: 1;\n}\n\n.qr-container {\n border-radius: var(--aurum-border-radius-md);\n border: 1px solid var(--color-border);\n padding: 0.5rem;\n box-sizing: content-box;\n transition: border-color var(--duration-slow) var(--ease-default);\n}\n\n.qr-subtitle {\n max-width: 15rem;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import React, { RefObject } from 'react';
|
|
2
|
+
import { Aurum } from './index.mjs';
|
|
3
|
+
import { NonNullableBrandConfig } from '@aurum-sdk/types';
|
|
4
|
+
import 'viem';
|
|
5
|
+
import '@coinbase/cdp-core';
|
|
6
|
+
|
|
7
|
+
interface ConnectWidgetProps {
|
|
8
|
+
aurum: Aurum;
|
|
9
|
+
onConnect: (result: {
|
|
10
|
+
address: string;
|
|
11
|
+
walletId: string;
|
|
12
|
+
email?: string;
|
|
13
|
+
}) => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Embedded connect widget for embedded wallet connection.
|
|
17
|
+
*
|
|
18
|
+
* ## Hierarchy (mirrors renderConnectModal)
|
|
19
|
+
* ```
|
|
20
|
+
* ConnectWidget ← you are here
|
|
21
|
+
* └── WidgetStyleContainer (style injection + ThemeContainer)
|
|
22
|
+
* └── ConnectUIProviders (NavigationProvider + ConnectModalProvider)
|
|
23
|
+
* └── WidgetShell
|
|
24
|
+
* └── WidgetProvider (mode='widget')
|
|
25
|
+
* └── PageTransitionContainer
|
|
26
|
+
* └── ConnectPages (shared with modal)
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @see renderConnectModal - Modal equivalent entry point
|
|
30
|
+
* @see WidgetShell - Shell component (parallel to ModalShell)
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```tsx
|
|
34
|
+
* <ConnectWidget
|
|
35
|
+
* aurum={aurum}
|
|
36
|
+
* onConnect={({ address, walletId }) => {
|
|
37
|
+
* console.log('Connected:', address, walletId);
|
|
38
|
+
* }}
|
|
39
|
+
* />
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
declare const ConnectWidget: React.FC<ConnectWidgetProps>;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Rendering mode for SDK UI components.
|
|
46
|
+
*
|
|
47
|
+
* - `'modal'`: Rendered inside Modal overlay (has close button, can be dismissed)
|
|
48
|
+
* - `'widget'`: Rendered embedded on page (no close button)
|
|
49
|
+
*/
|
|
50
|
+
type WidgetMode = 'modal' | 'widget';
|
|
51
|
+
interface WidgetContextType {
|
|
52
|
+
mode: WidgetMode;
|
|
53
|
+
brandConfig: NonNullableBrandConfig;
|
|
54
|
+
onDismiss: () => void;
|
|
55
|
+
headerPortalRef: RefObject<HTMLDivElement | null> | null;
|
|
56
|
+
}
|
|
57
|
+
declare const useWidgetContext: () => WidgetContextType;
|
|
58
|
+
interface WidgetProviderProps {
|
|
59
|
+
children: React.ReactNode;
|
|
60
|
+
mode: WidgetMode;
|
|
61
|
+
brandConfig: NonNullableBrandConfig;
|
|
62
|
+
onDismiss: () => void;
|
|
63
|
+
headerPortalRef?: RefObject<HTMLDivElement | null> | null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Unified provider for both modal and widget contexts.
|
|
67
|
+
*
|
|
68
|
+
* ## Provider Hierarchy
|
|
69
|
+
*
|
|
70
|
+
* For Modals:
|
|
71
|
+
* ```
|
|
72
|
+
* ModalShell
|
|
73
|
+
* └── Modal
|
|
74
|
+
* └── WidgetProvider (mode='modal', onDismiss=closeModal)
|
|
75
|
+
* └── ConnectPages
|
|
76
|
+
* ```
|
|
77
|
+
*
|
|
78
|
+
* For Widgets:
|
|
79
|
+
* ```
|
|
80
|
+
* ConnectWidget
|
|
81
|
+
* └── WidgetShell
|
|
82
|
+
* └── WidgetProvider (mode='widget', onDismiss=noop)
|
|
83
|
+
* └── ConnectPages
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
declare const WidgetProvider: React.FC<WidgetProviderProps>;
|
|
87
|
+
|
|
88
|
+
export { ConnectWidget, type ConnectWidgetProps, type WidgetMode, WidgetProvider, useWidgetContext };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import React, { RefObject } from 'react';
|
|
2
|
+
import { Aurum } from './index.js';
|
|
3
|
+
import { NonNullableBrandConfig } from '@aurum-sdk/types';
|
|
4
|
+
import 'viem';
|
|
5
|
+
import '@coinbase/cdp-core';
|
|
6
|
+
|
|
7
|
+
interface ConnectWidgetProps {
|
|
8
|
+
aurum: Aurum;
|
|
9
|
+
onConnect: (result: {
|
|
10
|
+
address: string;
|
|
11
|
+
walletId: string;
|
|
12
|
+
email?: string;
|
|
13
|
+
}) => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Embedded connect widget for embedded wallet connection.
|
|
17
|
+
*
|
|
18
|
+
* ## Hierarchy (mirrors renderConnectModal)
|
|
19
|
+
* ```
|
|
20
|
+
* ConnectWidget ← you are here
|
|
21
|
+
* └── WidgetStyleContainer (style injection + ThemeContainer)
|
|
22
|
+
* └── ConnectUIProviders (NavigationProvider + ConnectModalProvider)
|
|
23
|
+
* └── WidgetShell
|
|
24
|
+
* └── WidgetProvider (mode='widget')
|
|
25
|
+
* └── PageTransitionContainer
|
|
26
|
+
* └── ConnectPages (shared with modal)
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @see renderConnectModal - Modal equivalent entry point
|
|
30
|
+
* @see WidgetShell - Shell component (parallel to ModalShell)
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```tsx
|
|
34
|
+
* <ConnectWidget
|
|
35
|
+
* aurum={aurum}
|
|
36
|
+
* onConnect={({ address, walletId }) => {
|
|
37
|
+
* console.log('Connected:', address, walletId);
|
|
38
|
+
* }}
|
|
39
|
+
* />
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
declare const ConnectWidget: React.FC<ConnectWidgetProps>;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Rendering mode for SDK UI components.
|
|
46
|
+
*
|
|
47
|
+
* - `'modal'`: Rendered inside Modal overlay (has close button, can be dismissed)
|
|
48
|
+
* - `'widget'`: Rendered embedded on page (no close button)
|
|
49
|
+
*/
|
|
50
|
+
type WidgetMode = 'modal' | 'widget';
|
|
51
|
+
interface WidgetContextType {
|
|
52
|
+
mode: WidgetMode;
|
|
53
|
+
brandConfig: NonNullableBrandConfig;
|
|
54
|
+
onDismiss: () => void;
|
|
55
|
+
headerPortalRef: RefObject<HTMLDivElement | null> | null;
|
|
56
|
+
}
|
|
57
|
+
declare const useWidgetContext: () => WidgetContextType;
|
|
58
|
+
interface WidgetProviderProps {
|
|
59
|
+
children: React.ReactNode;
|
|
60
|
+
mode: WidgetMode;
|
|
61
|
+
brandConfig: NonNullableBrandConfig;
|
|
62
|
+
onDismiss: () => void;
|
|
63
|
+
headerPortalRef?: RefObject<HTMLDivElement | null> | null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Unified provider for both modal and widget contexts.
|
|
67
|
+
*
|
|
68
|
+
* ## Provider Hierarchy
|
|
69
|
+
*
|
|
70
|
+
* For Modals:
|
|
71
|
+
* ```
|
|
72
|
+
* ModalShell
|
|
73
|
+
* └── Modal
|
|
74
|
+
* └── WidgetProvider (mode='modal', onDismiss=closeModal)
|
|
75
|
+
* └── ConnectPages
|
|
76
|
+
* ```
|
|
77
|
+
*
|
|
78
|
+
* For Widgets:
|
|
79
|
+
* ```
|
|
80
|
+
* ConnectWidget
|
|
81
|
+
* └── WidgetShell
|
|
82
|
+
* └── WidgetProvider (mode='widget', onDismiss=noop)
|
|
83
|
+
* └── ConnectPages
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
declare const WidgetProvider: React.FC<WidgetProviderProps>;
|
|
87
|
+
|
|
88
|
+
export { ConnectWidget, type ConnectWidgetProps, type WidgetMode, WidgetProvider, useWidgetContext };
|
package/dist/widgets.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunkDHEVW7CRjs = require('./chunk-DHEVW7CR.js');
|
|
16
|
+
|
|
17
|
+
// src/components/widgets/ConnectWidget.tsx
|
|
18
|
+
var _react = require('react');
|
|
19
|
+
|
|
20
|
+
// src/components/widgets/WidgetShell.tsx
|
|
21
|
+
|
|
22
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
23
|
+
var noop = () => {
|
|
24
|
+
};
|
|
25
|
+
var WidgetShell = ({ brandConfig, children }) => {
|
|
26
|
+
const headerPortalRef = _react.useRef.call(void 0, null);
|
|
27
|
+
const { currentPage } = _chunkDHEVW7CRjs.useNavigation.call(void 0, );
|
|
28
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDHEVW7CRjs.WidgetProvider, { mode: "widget", brandConfig, onDismiss: noop, headerPortalRef, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "widget-provider", children: [
|
|
29
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: headerPortalRef }),
|
|
30
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDHEVW7CRjs.PageTransitionContainer, { transitionKey: currentPage, children }),
|
|
31
|
+
!brandConfig.hideFooter ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
32
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDHEVW7CRjs.Spacer, { size: `${_chunkDHEVW7CRjs.POWERED_BY_SPACER_REM}rem` }),
|
|
33
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDHEVW7CRjs.PoweredBy, {})
|
|
34
|
+
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDHEVW7CRjs.Spacer, { size: "0.3125rem" })
|
|
35
|
+
] }) });
|
|
36
|
+
};
|
|
37
|
+
var WidgetStyleContainer = ({ children, brandConfig }) => {
|
|
38
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "aurum-widget", style: { width: "100%" }, children: [
|
|
39
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "style", { children: _chunkDHEVW7CRjs.generateCompleteStyles.call(void 0, brandConfig) }),
|
|
40
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDHEVW7CRjs.ThemeContainer, { theme: brandConfig.theme, children })
|
|
41
|
+
] });
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// src/components/widgets/ConnectWidget.tsx
|
|
45
|
+
var _types = require('@aurum-sdk/types');
|
|
46
|
+
|
|
47
|
+
var ConnectWidget = ({ aurum, onConnect }) => {
|
|
48
|
+
const brandConfig = aurum.brandConfig;
|
|
49
|
+
const walletAdapters = aurum.walletAdapters;
|
|
50
|
+
const excludedWalletIds = aurum.excludedWalletIds;
|
|
51
|
+
const displayedWallets = _react.useMemo.call(void 0, () => {
|
|
52
|
+
let filtered = walletAdapters.filter((w) => !excludedWalletIds.has(w.id));
|
|
53
|
+
filtered = _chunkDHEVW7CRjs.sortWallets.call(void 0, filtered, { filterHidden: false });
|
|
54
|
+
const hasAppKit = filtered.some((w) => w.id === _types.WalletId.AppKit);
|
|
55
|
+
if (_chunkDHEVW7CRjs.isMobile.call(void 0, ) && !hasAppKit) {
|
|
56
|
+
filtered = filtered.filter((w) => w.id !== _types.WalletId.WalletConnect);
|
|
57
|
+
}
|
|
58
|
+
return filtered;
|
|
59
|
+
}, [walletAdapters, excludedWalletIds]);
|
|
60
|
+
const handleConnect = _react.useCallback.call(void 0,
|
|
61
|
+
async (result) => {
|
|
62
|
+
await aurum.handleWidgetConnection(result);
|
|
63
|
+
onConnect({
|
|
64
|
+
address: result.address,
|
|
65
|
+
walletId: result.walletId,
|
|
66
|
+
email: result.email
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
[aurum, onConnect]
|
|
70
|
+
);
|
|
71
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, WidgetStyleContainer, { brandConfig, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDHEVW7CRjs.ConnectUIProviders, { onConnect: handleConnect, displayedWallets, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, WidgetShell, { brandConfig, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDHEVW7CRjs.ConnectPages, {}) }) }) });
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
exports.ConnectWidget = ConnectWidget; exports.WidgetProvider = _chunkDHEVW7CRjs.WidgetProvider; exports.useWidgetContext = _chunkDHEVW7CRjs.useWidgetContext;
|
|
78
|
+
//# sourceMappingURL=widgets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/huntercote/Desktop/code/2025/station-6/monorepo/packages/sdk/dist/widgets.js","../src/components/widgets/ConnectWidget.tsx","../src/components/widgets/WidgetShell.tsx"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACA;AChBA,8BAA4C;ADkB5C;AACA;AEnBA;AA+CQ,+CAAA;AA9BR,IAAM,KAAA,EAAO,CAAA,EAAA,GAAM;AAAC,CAAA;AAuBb,IAAM,YAAA,EAA0C,CAAC,EAAE,WAAA,EAAa,SAAS,CAAA,EAAA,GAAM;AACpF,EAAA,MAAM,gBAAA,EAAkB,2BAAA,IAA2B,CAAA;AACnD,EAAA,MAAM,EAAE,YAAY,EAAA,EAAI,4CAAA,CAAc;AAEtC,EAAA,uBACE,6BAAA,+BAAC,EAAA,EAAe,IAAA,EAAK,QAAA,EAAS,WAAA,EAA0B,SAAA,EAAW,IAAA,EAAM,eAAA,EACvE,QAAA,kBAAA,8BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,6BAAA,KAAC,EAAA,EAAI,GAAA,EAAK,gBAAA,CAAiB,CAAA;AAAA,oBAC3B,6BAAA,wCAAC,EAAA,EAAwB,aAAA,EAAe,WAAA,EAAc,SAAA,CAAS,CAAA;AAAA,IAC9D,CAAC,WAAA,CAAY,WAAA,kBACZ,8BAAA,oBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,6BAAA,uBAAC,EAAA,EAAO,IAAA,EAAM,CAAA,EAAA;AACH,sBAAA;AAGL,IAAA;AAGd,EAAA;AAEJ;AAasF;AAE7E,EAAA;AACK,oBAAA;AACQ,oBAAA;AAClB,EAAA;AAEJ;AFtC2C;AACA;ACnClB;AAuEf;AArCqE;AACnD,EAAA;AACG,EAAA;AACG,EAAA;AAEO,EAAA;AACC,IAAA;AACH,IAAA;AAGI,IAAA;AACT,IAAA;AACQ,MAAA;AACtC,IAAA;AAEO,IAAA;AAC6B,EAAA;AAEhB,EAAA;AACsB,IAAA;AAEL,MAAA;AAGzB,MAAA;AACQ,QAAA;AACC,QAAA;AACH,QAAA;AACf,MAAA;AACH,IAAA;AACiB,IAAA;AACnB,EAAA;AAGG,EAAA;AAQL;ADZ2C;AACA;AACA;AACA;AACA","file":"/Users/huntercote/Desktop/code/2025/station-6/monorepo/packages/sdk/dist/widgets.js","sourcesContent":[null,"import React, { useMemo, useCallback } from 'react';\nimport { ConnectUIProviders } from '@src/components/ConnectUIProviders';\nimport { WidgetShell, WidgetStyleContainer } from '@src/components/widgets/WidgetShell';\nimport { ConnectPages } from '@src/components/ConnectModal/ConnectPages';\nimport { WalletConnectionResult } from '@src/types/internal';\nimport { sortWallets } from '@src/utils/sortWallets';\nimport { isMobile } from '@src/utils/platform/isMobile';\nimport { Aurum } from '@src/Aurum';\nimport { WalletId } from '@aurum-sdk/types';\n\nexport interface ConnectWidgetProps {\n aurum: Aurum;\n onConnect: (result: { address: string; walletId: string; email?: string }) => void;\n}\n\n/**\n * Embedded connect widget for embedded wallet connection.\n *\n * ## Hierarchy (mirrors renderConnectModal)\n * ```\n * ConnectWidget ← you are here\n * └── WidgetStyleContainer (style injection + ThemeContainer)\n * └── ConnectUIProviders (NavigationProvider + ConnectModalProvider)\n * └── WidgetShell\n * └── WidgetProvider (mode='widget')\n * └── PageTransitionContainer\n * └── ConnectPages (shared with modal)\n * ```\n *\n * @see renderConnectModal - Modal equivalent entry point\n * @see WidgetShell - Shell component (parallel to ModalShell)\n *\n * @example\n * ```tsx\n * <ConnectWidget\n * aurum={aurum}\n * onConnect={({ address, walletId }) => {\n * console.log('Connected:', address, walletId);\n * }}\n * />\n * ```\n */\nexport const ConnectWidget: React.FC<ConnectWidgetProps> = ({ aurum, onConnect }) => {\n const brandConfig = aurum.brandConfig;\n const walletAdapters = aurum.walletAdapters;\n const excludedWalletIds = aurum.excludedWalletIds;\n\n const displayedWallets = useMemo(() => {\n let filtered = walletAdapters.filter((w) => !excludedWalletIds.has(w.id));\n filtered = sortWallets(filtered, { filterHidden: false });\n\n // On mobile, WalletConnect requires AppKit\n const hasAppKit = filtered.some((w) => w.id === WalletId.AppKit);\n if (isMobile() && !hasAppKit) {\n filtered = filtered.filter((w) => w.id !== WalletId.WalletConnect);\n }\n\n return filtered;\n }, [walletAdapters, excludedWalletIds]);\n\n const handleConnect = useCallback(\n async (result: WalletConnectionResult) => {\n // Sync connection state with AurumCore (updates userInfo, provider, store, etc.)\n await aurum.handleWidgetConnection(result);\n\n // Fire user callback\n onConnect({\n address: result.address,\n walletId: result.walletId,\n email: result.email,\n });\n },\n [aurum, onConnect],\n );\n\n return (\n <WidgetStyleContainer brandConfig={brandConfig}>\n <ConnectUIProviders onConnect={handleConnect} displayedWallets={displayedWallets}>\n <WidgetShell brandConfig={brandConfig}>\n <ConnectPages />\n </WidgetShell>\n </ConnectUIProviders>\n </WidgetStyleContainer>\n );\n};\n","import React, { ReactNode, useRef } from 'react';\nimport { WidgetProvider } from '@src/contexts/WidgetContext';\nimport { useNavigation } from '@src/contexts/NavigationContext';\nimport { ThemeContainer } from '@src/ui';\nimport { PoweredBy } from '@src/components/PoweredBy/PoweredBy';\nimport { Spacer } from '@src/ui';\nimport { PageTransitionContainer } from '@src/components/PageTransitionContainer';\nimport { generateCompleteStyles } from '@src/utils/generateBrandStyles';\nimport { POWERED_BY_SPACER_REM } from '@src/constants/layout';\nimport { NonNullableBrandConfig } from '@aurum-sdk/types';\n\nexport interface WidgetShellProps {\n brandConfig: NonNullableBrandConfig;\n children: ReactNode;\n}\n\n// Noop for widget mode - close buttons are hidden via ModalHeader\nconst noop = () => {};\n\n/**\n * Shell component for embedded widgets.\n *\n * Mirrors the Modal component structure but without overlay.\n * Provider hierarchy is handled by ConnectWidget.\n *\n * ## Hierarchy\n * ```\n * ConnectWidget\n * └── StyleContainer (inline styles)\n * └── ThemeContainer\n * └── NavigationProvider\n * └── ConnectModalProvider\n * └── WidgetShell ← you are here\n * └── WidgetProvider (mode='widget')\n * └── PageTransitionContainer\n * └── ConnectPages\n * ```\n *\n * @see ModalShell - Modal equivalent of this component\n */\nexport const WidgetShell: React.FC<WidgetShellProps> = ({ brandConfig, children }) => {\n const headerPortalRef = useRef<HTMLDivElement>(null);\n const { currentPage } = useNavigation();\n\n return (\n <WidgetProvider mode=\"widget\" brandConfig={brandConfig} onDismiss={noop} headerPortalRef={headerPortalRef}>\n <div className=\"widget-provider\">\n <div ref={headerPortalRef} />\n <PageTransitionContainer transitionKey={currentPage}>{children}</PageTransitionContainer>\n {!brandConfig.hideFooter ? (\n <>\n <Spacer size={`${POWERED_BY_SPACER_REM}rem`} />\n <PoweredBy />\n </>\n ) : (\n <Spacer size=\"0.3125rem\" />\n )}\n </div>\n </WidgetProvider>\n );\n};\n\ninterface WidgetStyleContainerProps {\n children: React.ReactNode;\n brandConfig: NonNullableBrandConfig;\n}\n\n/**\n * Style injection container for widgets.\n *\n * Equivalent to createShadowRoot for modals but uses inline styles\n * since widgets are embedded in the host page.\n */\nexport const WidgetStyleContainer: React.FC<WidgetStyleContainerProps> = ({ children, brandConfig }) => {\n return (\n <div className=\"aurum-widget\" style={{ width: '100%' }}>\n <style>{generateCompleteStyles(brandConfig)}</style>\n <ThemeContainer theme={brandConfig.theme}>{children}</ThemeContainer>\n </div>\n );\n};\n"]}
|
package/dist/widgets.mjs
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ConnectPages,
|
|
3
|
+
ConnectUIProviders,
|
|
4
|
+
POWERED_BY_SPACER_REM,
|
|
5
|
+
PageTransitionContainer,
|
|
6
|
+
PoweredBy,
|
|
7
|
+
Spacer,
|
|
8
|
+
ThemeContainer,
|
|
9
|
+
WidgetProvider,
|
|
10
|
+
generateCompleteStyles,
|
|
11
|
+
isMobile,
|
|
12
|
+
sortWallets,
|
|
13
|
+
useNavigation,
|
|
14
|
+
useWidgetContext
|
|
15
|
+
} from "./chunk-U5BSED2R.mjs";
|
|
16
|
+
|
|
17
|
+
// src/components/widgets/ConnectWidget.tsx
|
|
18
|
+
import { useMemo, useCallback } from "react";
|
|
19
|
+
|
|
20
|
+
// src/components/widgets/WidgetShell.tsx
|
|
21
|
+
import { useRef } from "react";
|
|
22
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
23
|
+
var noop = () => {
|
|
24
|
+
};
|
|
25
|
+
var WidgetShell = ({ brandConfig, children }) => {
|
|
26
|
+
const headerPortalRef = useRef(null);
|
|
27
|
+
const { currentPage } = useNavigation();
|
|
28
|
+
return /* @__PURE__ */ jsx(WidgetProvider, { mode: "widget", brandConfig, onDismiss: noop, headerPortalRef, children: /* @__PURE__ */ jsxs("div", { className: "widget-provider", children: [
|
|
29
|
+
/* @__PURE__ */ jsx("div", { ref: headerPortalRef }),
|
|
30
|
+
/* @__PURE__ */ jsx(PageTransitionContainer, { transitionKey: currentPage, children }),
|
|
31
|
+
!brandConfig.hideFooter ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
32
|
+
/* @__PURE__ */ jsx(Spacer, { size: `${POWERED_BY_SPACER_REM}rem` }),
|
|
33
|
+
/* @__PURE__ */ jsx(PoweredBy, {})
|
|
34
|
+
] }) : /* @__PURE__ */ jsx(Spacer, { size: "0.3125rem" })
|
|
35
|
+
] }) });
|
|
36
|
+
};
|
|
37
|
+
var WidgetStyleContainer = ({ children, brandConfig }) => {
|
|
38
|
+
return /* @__PURE__ */ jsxs("div", { className: "aurum-widget", style: { width: "100%" }, children: [
|
|
39
|
+
/* @__PURE__ */ jsx("style", { children: generateCompleteStyles(brandConfig) }),
|
|
40
|
+
/* @__PURE__ */ jsx(ThemeContainer, { theme: brandConfig.theme, children })
|
|
41
|
+
] });
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// src/components/widgets/ConnectWidget.tsx
|
|
45
|
+
import { WalletId } from "@aurum-sdk/types";
|
|
46
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
47
|
+
var ConnectWidget = ({ aurum, onConnect }) => {
|
|
48
|
+
const brandConfig = aurum.brandConfig;
|
|
49
|
+
const walletAdapters = aurum.walletAdapters;
|
|
50
|
+
const excludedWalletIds = aurum.excludedWalletIds;
|
|
51
|
+
const displayedWallets = useMemo(() => {
|
|
52
|
+
let filtered = walletAdapters.filter((w) => !excludedWalletIds.has(w.id));
|
|
53
|
+
filtered = sortWallets(filtered, { filterHidden: false });
|
|
54
|
+
const hasAppKit = filtered.some((w) => w.id === WalletId.AppKit);
|
|
55
|
+
if (isMobile() && !hasAppKit) {
|
|
56
|
+
filtered = filtered.filter((w) => w.id !== WalletId.WalletConnect);
|
|
57
|
+
}
|
|
58
|
+
return filtered;
|
|
59
|
+
}, [walletAdapters, excludedWalletIds]);
|
|
60
|
+
const handleConnect = useCallback(
|
|
61
|
+
async (result) => {
|
|
62
|
+
await aurum.handleWidgetConnection(result);
|
|
63
|
+
onConnect({
|
|
64
|
+
address: result.address,
|
|
65
|
+
walletId: result.walletId,
|
|
66
|
+
email: result.email
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
[aurum, onConnect]
|
|
70
|
+
);
|
|
71
|
+
return /* @__PURE__ */ jsx2(WidgetStyleContainer, { brandConfig, children: /* @__PURE__ */ jsx2(ConnectUIProviders, { onConnect: handleConnect, displayedWallets, children: /* @__PURE__ */ jsx2(WidgetShell, { brandConfig, children: /* @__PURE__ */ jsx2(ConnectPages, {}) }) }) });
|
|
72
|
+
};
|
|
73
|
+
export {
|
|
74
|
+
ConnectWidget,
|
|
75
|
+
WidgetProvider,
|
|
76
|
+
useWidgetContext
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=widgets.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/widgets/ConnectWidget.tsx","../src/components/widgets/WidgetShell.tsx"],"sourcesContent":["import React, { useMemo, useCallback } from 'react';\nimport { ConnectUIProviders } from '@src/components/ConnectUIProviders';\nimport { WidgetShell, WidgetStyleContainer } from '@src/components/widgets/WidgetShell';\nimport { ConnectPages } from '@src/components/ConnectModal/ConnectPages';\nimport { WalletConnectionResult } from '@src/types/internal';\nimport { sortWallets } from '@src/utils/sortWallets';\nimport { isMobile } from '@src/utils/platform/isMobile';\nimport { Aurum } from '@src/Aurum';\nimport { WalletId } from '@aurum-sdk/types';\n\nexport interface ConnectWidgetProps {\n aurum: Aurum;\n onConnect: (result: { address: string; walletId: string; email?: string }) => void;\n}\n\n/**\n * Embedded connect widget for embedded wallet connection.\n *\n * ## Hierarchy (mirrors renderConnectModal)\n * ```\n * ConnectWidget ← you are here\n * └── WidgetStyleContainer (style injection + ThemeContainer)\n * └── ConnectUIProviders (NavigationProvider + ConnectModalProvider)\n * └── WidgetShell\n * └── WidgetProvider (mode='widget')\n * └── PageTransitionContainer\n * └── ConnectPages (shared with modal)\n * ```\n *\n * @see renderConnectModal - Modal equivalent entry point\n * @see WidgetShell - Shell component (parallel to ModalShell)\n *\n * @example\n * ```tsx\n * <ConnectWidget\n * aurum={aurum}\n * onConnect={({ address, walletId }) => {\n * console.log('Connected:', address, walletId);\n * }}\n * />\n * ```\n */\nexport const ConnectWidget: React.FC<ConnectWidgetProps> = ({ aurum, onConnect }) => {\n const brandConfig = aurum.brandConfig;\n const walletAdapters = aurum.walletAdapters;\n const excludedWalletIds = aurum.excludedWalletIds;\n\n const displayedWallets = useMemo(() => {\n let filtered = walletAdapters.filter((w) => !excludedWalletIds.has(w.id));\n filtered = sortWallets(filtered, { filterHidden: false });\n\n // On mobile, WalletConnect requires AppKit\n const hasAppKit = filtered.some((w) => w.id === WalletId.AppKit);\n if (isMobile() && !hasAppKit) {\n filtered = filtered.filter((w) => w.id !== WalletId.WalletConnect);\n }\n\n return filtered;\n }, [walletAdapters, excludedWalletIds]);\n\n const handleConnect = useCallback(\n async (result: WalletConnectionResult) => {\n // Sync connection state with AurumCore (updates userInfo, provider, store, etc.)\n await aurum.handleWidgetConnection(result);\n\n // Fire user callback\n onConnect({\n address: result.address,\n walletId: result.walletId,\n email: result.email,\n });\n },\n [aurum, onConnect],\n );\n\n return (\n <WidgetStyleContainer brandConfig={brandConfig}>\n <ConnectUIProviders onConnect={handleConnect} displayedWallets={displayedWallets}>\n <WidgetShell brandConfig={brandConfig}>\n <ConnectPages />\n </WidgetShell>\n </ConnectUIProviders>\n </WidgetStyleContainer>\n );\n};\n","import React, { ReactNode, useRef } from 'react';\nimport { WidgetProvider } from '@src/contexts/WidgetContext';\nimport { useNavigation } from '@src/contexts/NavigationContext';\nimport { ThemeContainer } from '@src/ui';\nimport { PoweredBy } from '@src/components/PoweredBy/PoweredBy';\nimport { Spacer } from '@src/ui';\nimport { PageTransitionContainer } from '@src/components/PageTransitionContainer';\nimport { generateCompleteStyles } from '@src/utils/generateBrandStyles';\nimport { POWERED_BY_SPACER_REM } from '@src/constants/layout';\nimport { NonNullableBrandConfig } from '@aurum-sdk/types';\n\nexport interface WidgetShellProps {\n brandConfig: NonNullableBrandConfig;\n children: ReactNode;\n}\n\n// Noop for widget mode - close buttons are hidden via ModalHeader\nconst noop = () => {};\n\n/**\n * Shell component for embedded widgets.\n *\n * Mirrors the Modal component structure but without overlay.\n * Provider hierarchy is handled by ConnectWidget.\n *\n * ## Hierarchy\n * ```\n * ConnectWidget\n * └── StyleContainer (inline styles)\n * └── ThemeContainer\n * └── NavigationProvider\n * └── ConnectModalProvider\n * └── WidgetShell ← you are here\n * └── WidgetProvider (mode='widget')\n * └── PageTransitionContainer\n * └── ConnectPages\n * ```\n *\n * @see ModalShell - Modal equivalent of this component\n */\nexport const WidgetShell: React.FC<WidgetShellProps> = ({ brandConfig, children }) => {\n const headerPortalRef = useRef<HTMLDivElement>(null);\n const { currentPage } = useNavigation();\n\n return (\n <WidgetProvider mode=\"widget\" brandConfig={brandConfig} onDismiss={noop} headerPortalRef={headerPortalRef}>\n <div className=\"widget-provider\">\n <div ref={headerPortalRef} />\n <PageTransitionContainer transitionKey={currentPage}>{children}</PageTransitionContainer>\n {!brandConfig.hideFooter ? (\n <>\n <Spacer size={`${POWERED_BY_SPACER_REM}rem`} />\n <PoweredBy />\n </>\n ) : (\n <Spacer size=\"0.3125rem\" />\n )}\n </div>\n </WidgetProvider>\n );\n};\n\ninterface WidgetStyleContainerProps {\n children: React.ReactNode;\n brandConfig: NonNullableBrandConfig;\n}\n\n/**\n * Style injection container for widgets.\n *\n * Equivalent to createShadowRoot for modals but uses inline styles\n * since widgets are embedded in the host page.\n */\nexport const WidgetStyleContainer: React.FC<WidgetStyleContainerProps> = ({ children, brandConfig }) => {\n return (\n <div className=\"aurum-widget\" style={{ width: '100%' }}>\n <style>{generateCompleteStyles(brandConfig)}</style>\n <ThemeContainer theme={brandConfig.theme}>{children}</ThemeContainer>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,SAAgB,SAAS,mBAAmB;;;ACA5C,SAA2B,cAAc;AA+CjC,SAGE,UAHF,KAGE,YAHF;AA9BR,IAAM,OAAO,MAAM;AAAC;AAuBb,IAAM,cAA0C,CAAC,EAAE,aAAa,SAAS,MAAM;AACpF,QAAM,kBAAkB,OAAuB,IAAI;AACnD,QAAM,EAAE,YAAY,IAAI,cAAc;AAEtC,SACE,oBAAC,kBAAe,MAAK,UAAS,aAA0B,WAAW,MAAM,iBACvE,+BAAC,SAAI,WAAU,mBACb;AAAA,wBAAC,SAAI,KAAK,iBAAiB;AAAA,IAC3B,oBAAC,2BAAwB,eAAe,aAAc,UAAS;AAAA,IAC9D,CAAC,YAAY,aACZ,iCACE;AAAA,0BAAC,UAAO,MAAM,GAAG,qBAAqB,OAAO;AAAA,MAC7C,oBAAC,aAAU;AAAA,OACb,IAEA,oBAAC,UAAO,MAAK,aAAY;AAAA,KAE7B,GACF;AAEJ;AAaO,IAAM,uBAA4D,CAAC,EAAE,UAAU,YAAY,MAAM;AACtG,SACE,qBAAC,SAAI,WAAU,gBAAe,OAAO,EAAE,OAAO,OAAO,GACnD;AAAA,wBAAC,WAAO,iCAAuB,WAAW,GAAE;AAAA,IAC5C,oBAAC,kBAAe,OAAO,YAAY,OAAQ,UAAS;AAAA,KACtD;AAEJ;;;ADxEA,SAAS,gBAAgB;AAuEf,gBAAAA,YAAA;AArCH,IAAM,gBAA8C,CAAC,EAAE,OAAO,UAAU,MAAM;AACnF,QAAM,cAAc,MAAM;AAC1B,QAAM,iBAAiB,MAAM;AAC7B,QAAM,oBAAoB,MAAM;AAEhC,QAAM,mBAAmB,QAAQ,MAAM;AACrC,QAAI,WAAW,eAAe,OAAO,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,EAAE,CAAC;AACxE,eAAW,YAAY,UAAU,EAAE,cAAc,MAAM,CAAC;AAGxD,UAAM,YAAY,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,SAAS,MAAM;AAC/D,QAAI,SAAS,KAAK,CAAC,WAAW;AAC5B,iBAAW,SAAS,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS,aAAa;AAAA,IACnE;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,gBAAgB,iBAAiB,CAAC;AAEtC,QAAM,gBAAgB;AAAA,IACpB,OAAO,WAAmC;AAExC,YAAM,MAAM,uBAAuB,MAAM;AAGzC,gBAAU;AAAA,QACR,SAAS,OAAO;AAAA,QAChB,UAAU,OAAO;AAAA,QACjB,OAAO,OAAO;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,IACA,CAAC,OAAO,SAAS;AAAA,EACnB;AAEA,SACE,gBAAAA,KAAC,wBAAqB,aACpB,0BAAAA,KAAC,sBAAmB,WAAW,eAAe,kBAC5C,0BAAAA,KAAC,eAAY,aACX,0BAAAA,KAAC,gBAAa,GAChB,GACF,GACF;AAEJ;","names":["jsx"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aurum-sdk/core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Aurum wallet connection SDK",
|
|
5
|
+
"sideEffects": [
|
|
6
|
+
"*.css"
|
|
7
|
+
],
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"module": "./dist/index.mjs",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"engines": {
|
|
12
|
+
"node": ">=18.0.0",
|
|
13
|
+
"pnpm": ">=8.0.0"
|
|
14
|
+
},
|
|
15
|
+
"packageManager": "pnpm@8.15.0",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"import": "./dist/index.mjs",
|
|
20
|
+
"require": "./dist/index.js"
|
|
21
|
+
},
|
|
22
|
+
"./widgets": {
|
|
23
|
+
"types": "./dist/widgets.d.ts",
|
|
24
|
+
"import": "./dist/widgets.mjs",
|
|
25
|
+
"require": "./dist/widgets.js"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"typesVersions": {
|
|
29
|
+
"*": {
|
|
30
|
+
"widgets": [
|
|
31
|
+
"./dist/widgets.d.ts"
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"README.md"
|
|
38
|
+
],
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build": "tsup",
|
|
41
|
+
"playground": "vite --config vite.config.playground.ts",
|
|
42
|
+
"clean": "rm -rf dist",
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"test:watch": "vitest",
|
|
45
|
+
"test:coverage": "vitest run --coverage",
|
|
46
|
+
"prepublishOnly": "pnpm build"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"react": ">=18.0.0",
|
|
50
|
+
"react-dom": ">=18.0.0",
|
|
51
|
+
"viem": ">=2.0.0",
|
|
52
|
+
"wagmi": ">=2.0.0"
|
|
53
|
+
},
|
|
54
|
+
"peerDependenciesMeta": {
|
|
55
|
+
"viem": {
|
|
56
|
+
"optional": true
|
|
57
|
+
},
|
|
58
|
+
"wagmi": {
|
|
59
|
+
"optional": true
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"devDependencies": {
|
|
63
|
+
"@types/react": "^18.0.0",
|
|
64
|
+
"@types/react-dom": "^18.0.0",
|
|
65
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
66
|
+
"@vitest/coverage-v8": "^2.1.0",
|
|
67
|
+
"jsdom": "^25.0.0",
|
|
68
|
+
"react": "^19.2.2",
|
|
69
|
+
"react-dom": "^19.2.2",
|
|
70
|
+
"tsup": "^8.0.0",
|
|
71
|
+
"typescript": "^5.0.0",
|
|
72
|
+
"viem": "^2.42.1",
|
|
73
|
+
"vite": "^6.0.0",
|
|
74
|
+
"vitest": "^2.1.0",
|
|
75
|
+
"wagmi": "^3.1.0"
|
|
76
|
+
},
|
|
77
|
+
"keywords": [
|
|
78
|
+
"wallet",
|
|
79
|
+
"ethereum",
|
|
80
|
+
"web3",
|
|
81
|
+
"react",
|
|
82
|
+
"typescript"
|
|
83
|
+
],
|
|
84
|
+
"author": "Hunter Cote",
|
|
85
|
+
"license": "MIT",
|
|
86
|
+
"repository": {
|
|
87
|
+
"type": "git",
|
|
88
|
+
"url": "https://github.com/aurum-sdk/aurum.git",
|
|
89
|
+
"directory": "packages/sdk"
|
|
90
|
+
},
|
|
91
|
+
"homepage": "https://github.com/aurum-sdk/aurum#readme",
|
|
92
|
+
"dependencies": {
|
|
93
|
+
"@aurum-sdk/logos": "workspace:^",
|
|
94
|
+
"@aurum-sdk/types": "workspace:^",
|
|
95
|
+
"@coinbase/cdp-core": "^0.0.74",
|
|
96
|
+
"@coinbase/wallet-sdk": "^4.3.7",
|
|
97
|
+
"@gemini-wallet/core": "^0.3.2",
|
|
98
|
+
"@ledgerhq/connect-kit-loader": "^1.1.8",
|
|
99
|
+
"@metamask/sdk": "~0.33.1",
|
|
100
|
+
"@react-native-async-storage/async-storage": "^1.24.0",
|
|
101
|
+
"@reown/appkit": "^1.8.15",
|
|
102
|
+
"@reown/appkit-adapter-wagmi": "^1.8.15",
|
|
103
|
+
"@sentry/browser": "^10.29.0",
|
|
104
|
+
"@walletconnect/ethereum-provider": "~2.21.1",
|
|
105
|
+
"buffer": "^6.0.3",
|
|
106
|
+
"lucide-react": "^0.460.0",
|
|
107
|
+
"mobile-detect": "^1.4.5",
|
|
108
|
+
"porto": "^0.2.37",
|
|
109
|
+
"react-qrcode-logo": "^3.0.0",
|
|
110
|
+
"x402-fetch": "^0.7.0",
|
|
111
|
+
"zustand": "^5.0.9"
|
|
112
|
+
}
|
|
113
|
+
}
|