-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcheckout.html
More file actions
120 lines (117 loc) · 6.15 KB
/
Copy pathcheckout.html
File metadata and controls
120 lines (117 loc) · 6.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Checkout — Claw Is Open</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="css/styles.css" />
</head>
<body>
<nav>
<div class="nav-wrap">
<a href="index.html" class="nav-logo">
<div class="logo-mark">🦞</div>
Claw Is Open
</a>
<div class="nav-center">
<a href="marketplace.html">Browse</a>
<a href="marketplace.html#categories">Categories</a>
<a href="creators.html">Creators</a>
<a href="index.html#how">How it works</a>
<a href="blog.html">Blog</a>
</div>
<div class="nav-right">
<a href="signin.html" class="btn btn-ghost">Log in</a>
<a href="signup.html" class="btn btn-dark">Sign up free</a>
</div>
</div>
</nav>
<section class="checkout-section">
<div class="container" style="max-width: 640px;">
<div class="s-head">
<div class="s-label">Checkout</div>
<h2 class="s-title">Review your order</h2>
<p class="s-sub">Secure payment via Stripe. Instant delivery after purchase.</p>
</div>
<div id="checkout-cart-items"></div>
<div class="checkout-total" id="checkout-total-row">
Total: <span id="checkout-total">$0</span>
</div>
<form onsubmit="event.preventDefault(); alert('Thank you! This is a demo. In production, Stripe would process the payment.'); window.location.href='marketplace.html';" style="margin-top: 32px;">
<div class="form-group">
<label for="card">Card number</label>
<input type="text" id="card" placeholder="4242 4242 4242 4242" maxlength="19" />
</div>
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px;">
<div class="form-group">
<label for="exp">Expiry</label>
<input type="text" id="exp" placeholder="MM / YY" />
</div>
<div class="form-group">
<label for="cvc">CVC</label>
<input type="text" id="cvc" placeholder="123" />
</div>
</div>
<button type="submit" class="btn btn-accent btn-lg" style="width: 100%; margin-top: 24px;">Pay with card</button>
</form>
<p style="text-align: center; margin-top: 24px;">
<a href="marketplace.html" class="btn btn-ghost">Continue shopping</a>
</p>
</div>
</section>
<footer>
<div class="container">
<div class="footer-bottom">
<p>© 2026 Claw Is Open. All rights reserved.</p>
<p>Built for the AI-native web.</p>
</div>
</div>
</footer>
<script>
(function() {
var container = document.getElementById('checkout-cart-items');
var totalEl = document.getElementById('checkout-total');
var totalRow = document.getElementById('checkout-total-row');
var params = new URLSearchParams(location.search);
var itemParam = params.get('item') || params.get('items');
var ids = itemParam ? itemParam.split(',').map(function(s) { return s.trim(); }).filter(Boolean) : [];
var products = {
'startup-strategist': { name: 'Startup Strategist', type: 'Persona', category: 'Business', price: 'Free', priceNum: 0, icon: '🚀', iconClass: 'p-icon-green' },
'content-machine-pro': { name: 'Content Machine Pro', type: 'Persona', category: 'Content', price: '$29', priceNum: 29, icon: '✍️', iconClass: 'p-icon-warm' },
'senior-dev-buddy': { name: 'Senior Dev Buddy', type: 'Persona', category: 'Coding', price: '$49', priceNum: 49, icon: '💻', iconClass: 'p-icon-gray' },
'growth-hacker-ai': { name: 'Growth Hacker AI', type: 'Persona', category: 'Marketing', price: '$39', priceNum: 39, icon: '📈', iconClass: 'p-icon-green' },
'creative-director': { name: 'Creative Director', type: 'Persona', category: 'Design', price: 'Free', priceNum: 0, icon: '🎨', iconClass: 'p-icon-warm' },
'contract-reviewer': { name: 'Contract Reviewer', type: 'Persona', category: 'Legal', price: '$99', priceNum: 99, icon: '⚖️', iconClass: 'p-icon-gray' },
'agentic-coding-loop': { name: 'Agentic Coding Loop', type: 'Skill', category: 'Coding', price: 'Free', priceNum: 0, icon: '🔁', iconClass: 'p-icon-green' },
'youtube-researcher': { name: 'YouTube Researcher', type: 'Skill', category: 'Research', price: '$12', priceNum: 12, icon: '📺', iconClass: 'p-icon-warm' },
'seo-automator': { name: 'SEO Automator', type: 'Skill', category: 'Marketing', price: '$19', priceNum: 19, icon: '🔍', iconClass: 'p-icon-gray' },
'data-visualizer': { name: 'Data Visualizer', type: 'Skill', category: 'Analytics', price: 'Free', priceNum: 0, icon: '📊', iconClass: 'p-icon-green' },
'email-automator': { name: 'Email Automator', type: 'Skill', category: 'Marketing', price: '$15', priceNum: 15, icon: '✉️', iconClass: 'p-icon-warm' },
'web-scraper-pro': { name: 'Web Scraper Pro', type: 'Skill', category: 'Research', price: '$24', priceNum: 24, icon: '🌐', iconClass: 'p-icon-warm' }
};
var total = 0;
if (ids.length === 0) {
container.innerHTML = '<p style="color: var(--ink-3); margin-bottom: 24px;">Your cart is empty. <a href="marketplace.html">Browse the marketplace</a>.</p>';
totalRow.style.display = 'none';
} else {
ids.forEach(function(id) {
var p = products[id];
if (!p) return;
total += p.priceNum;
var div = document.createElement('div');
div.className = 'cart-item';
div.innerHTML = '<div class="p-icon ' + p.iconClass + '" style="flex-shrink:0;">' + p.icon + '</div>' +
'<div class="cart-item-info"><h3 style="font-size: 16px; margin-bottom: 4px;">' + escapeHtml(p.name) + '</h3>' +
'<p style="font-size: 13px; color: var(--ink-4); margin: 0;">AI ' + p.type + ' · ' + escapeHtml(p.category) + '</p></div>' +
'<div class="cart-item-price">' + escapeHtml(p.price) + '</div>';
container.appendChild(div);
});
totalEl.textContent = total === 0 ? 'Free' : '$' + total;
}
function escapeHtml(s) { var d = document.createElement('div'); d.textContent = s; return d.innerHTML; }
})();
</script>
</body>
</html>