repositories
loading repo index
repositories
loading repo index
repository
loading code, commits, and activity
public Clawd ADK gateway launch mirror
stars
latest
clone command
git clone gitlawb://did:key:z6Mkq5mY...iFZ5/my-project-publ...git clone gitlawb://did:key:z6Mkq5mY.../my-project-publ...2fa351d6docs: add automaton and perps launch sources16d ago| #1 | <!DOCTYPE html> |
| #2 | <html lang="en"> |
| #3 | <head> |
| #4 | <meta charset="UTF-8"> |
| #5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| #6 | <title>MAWD Swap - Jupiter</title> |
| #7 | <script src="https://cdn.tailwindcss.com"></script> |
| #8 | <style> |
| #9 | body { |
| #10 | margin: 0; |
| #11 | padding: 0; |
| #12 | font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', monospace; |
| #13 | background: linear-gradient(135deg, #0a0a0f 0%, #12121a 100%); |
| #14 | min-height: 100vh; |
| #15 | display: flex; |
| #16 | align-items: center; |
| #17 | justify-content: center; |
| #18 | } |
| #19 | |
| #20 | .swap-container { |
| #21 | background: rgba(18, 18, 26, 0.95); |
| #22 | border: 1px solid rgba(42, 42, 53, 0.8); |
| #23 | border-radius: 24px; |
| #24 | padding: 2rem; |
| #25 | box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5); |
| #26 | backdrop-filter: blur(10px); |
| #27 | max-width: 500px; |
| #28 | width: 100%; |
| #29 | } |
| #30 | |
| #31 | .header { |
| #32 | text-align: center; |
| #33 | margin-bottom: 2rem; |
| #34 | } |
| #35 | |
| #36 | .logo { |
| #37 | font-size: 3rem; |
| #38 | margin-bottom: 0.5rem; |
| #39 | } |
| #40 | |
| #41 | .title { |
| #42 | font-size: 1.5rem; |
| #43 | font-weight: 700; |
| #44 | background: linear-gradient(135deg, #06b6d4, #a855f7); |
| #45 | -webkit-background-clip: text; |
| #46 | -webkit-text-fill-color: transparent; |
| #47 | margin-bottom: 0.5rem; |
| #48 | } |
| #49 | |
| #50 | .subtitle { |
| #51 | font-size: 0.875rem; |
| #52 | color: #a1a1aa; |
| #53 | } |
| #54 | |
| #55 | #jupiter-terminal { |
| #56 | border-radius: 16px; |
| #57 | overflow: hidden; |
| #58 | } |
| #59 | |
| #60 | .footer { |
| #61 | margin-top: 2rem; |
| #62 | text-align: center; |
| #63 | font-size: 0.75rem; |
| #64 | color: #71717a; |
| #65 | } |
| #66 | |
| #67 | .close-btn { |
| #68 | position: fixed; |
| #69 | top: 1rem; |
| #70 | right: 1rem; |
| #71 | background: rgba(239, 68, 68, 0.1); |
| #72 | border: 1px solid rgba(239, 68, 68, 0.3); |
| #73 | color: #ef4444; |
| #74 | padding: 0.5rem 1rem; |
| #75 | border-radius: 8px; |
| #76 | cursor: pointer; |
| #77 | font-family: inherit; |
| #78 | font-size: 0.875rem; |
| #79 | transition: all 0.2s; |
| #80 | } |
| #81 | |
| #82 | .close-btn:hover { |
| #83 | background: rgba(239, 68, 68, 0.2); |
| #84 | border-color: rgba(239, 68, 68, 0.5); |
| #85 | } |
| #86 | </style> |
| #87 | </head> |
| #88 | <body> |
| #89 | <button class="close-btn" onclick="window.close()">✕ Close</button> |
| #90 | |
| #91 | <div class="swap-container"> |
| #92 | <div class="header"> |
| #93 | <div class="logo">🦞</div> |
| #94 | <div class="title">MAWD Swap</div> |
| #95 | <div class="subtitle">Powered by Jupiter</div> |
| #96 | </div> |
| #97 | |
| #98 | <div id="jupiter-terminal"></div> |
| #99 | |
| #100 | <div class="footer"> |
| #101 | 🦞 Exfoliate, trade, launch, vibe! • Powered by Jupiter |
| #102 | </div> |
| #103 | </div> |
| #104 | |
| #105 | <!-- Jupiter Terminal Script --> |
| #106 | <script src="https://terminal.jup.ag/main-v2.js"></script> |
| #107 | <script> |
| #108 | window.Jupiter.init({ |
| #109 | displayMode: "integrated", |
| #110 | integratedTargetId: "jupiter-terminal", |
| #111 | endpoint: window.MAWD_RPC_URL || "https://api.mainnet-beta.solana.com", |
| #112 | platformFeeAndAccounts: window.MAWD_REFERRAL_ACCOUNT ? { |
| #113 | referralAccount: window.MAWD_REFERRAL_ACCOUNT, |
| #114 | feeBps: 50 |
| #115 | } : undefined, |
| #116 | defaultExplorer: "Solscan", |
| #117 | strictTokenList: false, |
| #118 | formProps: { |
| #119 | fixedOutputMint: false, |
| #120 | swapMode: "ExactIn", |
| #121 | initialAmount: "", |
| #122 | initialInputMint: "So11111111111111111111111111111111111111112", // SOL |
| #123 | initialOutputMint: undefined, |
| #124 | }, |
| #125 | onSuccess: ({ txid, swapResult }) => { |
| #126 | console.log('Swap successful:', txid); |
| #127 | showNotification('✅ Swap successful!', `Transaction: ${txid.slice(0, 8)}...`, 'success'); |
| #128 | }, |
| #129 | onSwapError: ({ error }) => { |
| #130 | console.error('Swap error:', error); |
| #131 | showNotification('❌ Swap failed', error.message || 'Unknown error', 'error'); |
| #132 | }, |
| #133 | }); |
| #134 | |
| #135 | function showNotification(title, message, type) { |
| #136 | const notification = document.createElement('div'); |
| #137 | notification.style.cssText = ` |
| #138 | position: fixed; |
| #139 | top: 5rem; |
| #140 | right: 1rem; |
| #141 | background: ${type === 'success' ? 'rgba(34, 197, 94, 0.1)' : 'rgba(239, 68, 68, 0.1)'}; |
| #142 | border: 1px solid ${type === 'success' ? 'rgba(34, 197, 94, 0.3)' : 'rgba(239, 68, 68, 0.3)'}; |
| #143 | color: ${type === 'success' ? '#22c55e' : '#ef4444'}; |
| #144 | padding: 1rem; |
| #145 | border-radius: 8px; |
| #146 | font-size: 0.875rem; |
| #147 | max-width: 300px; |
| #148 | animation: slideIn 0.3s ease; |
| #149 | z-index: 9999; |
| #150 | `; |
| #151 | notification.innerHTML = ` |
| #152 | <div style="font-weight: 600; margin-bottom: 0.25rem;">${title}</div> |
| #153 | <div style="color: #a1a1aa; font-size: 0.75rem;">${message}</div> |
| #154 | `; |
| #155 | document.body.appendChild(notification); |
| #156 | |
| #157 | setTimeout(() => { |
| #158 | notification.style.animation = 'slideOut 0.3s ease'; |
| #159 | setTimeout(() => notification.remove(), 300); |
| #160 | }, 5000); |
| #161 | } |
| #162 | |
| #163 | // Listen for config from parent window or fetch from API |
| #164 | window.addEventListener('message', (event) => { |
| #165 | if (event.data.type === 'MAWD_CONFIG') { |
| #166 | window.MAWD_RPC_URL = event.data.rpcUrl; |
| #167 | window.MAWD_REFERRAL_ACCOUNT = event.data.referralAccount; |
| #168 | } |
| #169 | }); |
| #170 | </script> |
| #171 | |
| #172 | <style> |
| #173 | @keyframes slideIn { |
| #174 | from { |
| #175 | transform: translateX(400px); |
| #176 | opacity: 0; |
| #177 | } |
| #178 | to { |
| #179 | transform: translateX(0); |
| #180 | opacity: 1; |
| #181 | } |
| #182 | } |
| #183 | |
| #184 | @keyframes slideOut { |
| #185 | from { |
| #186 | transform: translateX(0); |
| #187 | opacity: 1; |
| #188 | } |
| #189 | to { |
| #190 | transform: translateX(400px); |
| #191 | opacity: 0; |
| #192 | } |
| #193 | } |
| #194 | </style> |
| #195 | </body> |
| #196 | </html> |
| #197 |