Skip to content

Commit 7bf3019

Browse files
Christian Shearerclaude
andcommitted
Replace custom amount bar with team plan CTA
Removes the Individual/Organization toggle and custom amount input. Instead, a "Subscribing for your whole team?" card sits below the individual tiers. Clicking it reveals the org intake form inline — cleaner layout, no competing toggles. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 4914ebe commit 7bf3019

File tree

1 file changed

+41
-96
lines changed

1 file changed

+41
-96
lines changed

src/server/routes.ts

Lines changed: 41 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -439,17 +439,6 @@ export function createRoutes(stripe: Stripe | null, db: Database.Database, baseU
439439
<div class="regen-container">
440440
<h2 class="regen-section-title" style="text-align:center;">Choose Your Plan</h2>
441441
442-
<!-- Individual / Organization toggle -->
443-
<div style="display:flex;justify-content:center;margin-bottom:16px;">
444-
<div id="plan-type-toggle" style="display:inline-flex;background:var(--regen-gray-100);border-radius:10px;padding:4px;">
445-
<button id="toggle-individual" onclick="setPlanType('individual')" class="interval-btn interval-btn--active">Individual</button>
446-
<button id="toggle-org" onclick="setPlanType('org')" class="interval-btn">Organization</button>
447-
</div>
448-
</div>
449-
450-
<!-- Individual pricing (shown by default) -->
451-
<div id="individual-pricing">
452-
453442
<!-- Monthly / Yearly toggle -->
454443
<div style="display:flex;justify-content:center;margin-bottom:28px;">
455444
<div id="interval-toggle" style="display:inline-flex;background:var(--regen-gray-100);border-radius:10px;padding:4px;">
@@ -486,58 +475,48 @@ export function createRoutes(stripe: Stripe | null, db: Database.Database, baseU
486475
</div>
487476
</div>
488477
489-
<!-- Custom Amount — inline card under tiers -->
490-
<div style="background:var(--regen-white);border:2px solid var(--regen-gray-200);border-radius:var(--regen-radius-lg);padding:20px 28px;margin-top:12px;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;">
491-
<span style="font-weight:700;font-size:15px;color:var(--regen-navy);white-space:nowrap;">Set your own subscription amount</span>
492-
<div style="display:flex;align-items:center;gap:8px;">
493-
<label style="font-size:15px;color:var(--regen-navy);font-weight:600;">$</label>
494-
<input id="custom-amount" type="number" min="1" step="0.50" value="10" style="width:80px;padding:8px 12px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:16px;text-align:center;">
495-
<span style="font-size:14px;color:var(--regen-gray-500);">/mo</span>
496-
</div>
497-
<button onclick="fundCustom()" class="regen-btn regen-btn--solid regen-btn--sm" style="white-space:nowrap;">Subscribe</button>
498-
<p id="custom-error" style="color:#c33;font-size:13px;margin:0;display:none;width:100%;text-align:center;"></p>
478+
<!-- Team plan CTA -->
479+
<div id="org-cta" style="background:var(--regen-white);border:2px solid var(--regen-gray-200);border-radius:var(--regen-radius-lg);padding:20px 28px;margin-top:12px;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;cursor:pointer;transition:border-color 0.2s;" onclick="showOrgForm()" onmouseover="this.style.borderColor='var(--regen-green)'" onmouseout="this.style.borderColor='var(--regen-gray-200)'">
480+
<span style="font-weight:700;font-size:15px;color:var(--regen-navy);white-space:nowrap;">Subscribing for your whole team?</span>
481+
<span style="font-size:14px;color:var(--regen-gray-500);">Build a custom plan based on your team size and AI usage.</span>
482+
<span class="regen-btn regen-btn--solid regen-btn--sm" style="white-space:nowrap;">Get Started</span>
499483
</div>
500484
501-
</div><!-- end individual-pricing -->
502-
503-
<!-- Organization form (hidden by default) -->
504-
<div id="org-pricing" style="display:none;">
505-
<div style="max-width:560px;margin:0 auto;">
506-
<p style="text-align:center;color:var(--regen-gray-600);margin:0 0 24px;font-size:15px;line-height:1.6;">
507-
Tell us about your team and we'll calculate a subscription that covers your organization's AI footprint.
508-
</p>
509-
<div style="background:var(--regen-white);border:1px solid var(--regen-gray-200);border-radius:var(--regen-radius-lg);padding:28px 32px;">
510-
<div style="margin-bottom:18px;">
511-
<label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Company name</label>
512-
<input id="org-name" type="text" placeholder="e.g. Acme Corp" style="width:100%;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;box-sizing:border-box;">
513-
</div>
514-
<div style="margin-bottom:18px;">
515-
<label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Full-time developers <span style="font-weight:400;color:var(--regen-gray-500);">— heavy AI usage (coding, debugging, agents)</span></label>
516-
<input id="org-devs" type="number" min="0" value="0" style="width:100px;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;text-align:center;">
517-
</div>
518-
<div style="margin-bottom:18px;">
519-
<label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Autonomous agents <span style="font-weight:400;color:var(--regen-gray-500);">— always-on bots, CI pipelines, agent workflows</span></label>
520-
<input id="org-agents" type="number" min="0" value="0" style="width:100px;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;text-align:center;">
521-
</div>
522-
<div style="margin-bottom:24px;">
523-
<label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Part-time AI users <span style="font-weight:400;color:var(--regen-gray-500);">— occasional AI use for writing, research, email</span></label>
524-
<input id="org-parttime" type="number" min="0" value="0" style="width:100px;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;text-align:center;">
525-
</div>
485+
<!-- Organization form (revealed on click) -->
486+
<div id="org-form" style="display:none;margin-top:16px;">
487+
<div style="background:var(--regen-white);border:1px solid var(--regen-gray-200);border-radius:var(--regen-radius-lg);padding:28px 32px;max-width:560px;margin:0 auto;">
488+
<h3 style="margin:0 0 4px;font-size:18px;color:var(--regen-navy);font-weight:700;">Team Plan</h3>
489+
<p style="color:var(--regen-gray-500);font-size:14px;margin:0 0 20px;">Tell us about your team and we'll suggest a monthly amount.</p>
490+
<div style="margin-bottom:18px;">
491+
<label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Company name</label>
492+
<input id="org-name" type="text" placeholder="e.g. Acme Corp" style="width:100%;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;box-sizing:border-box;">
493+
</div>
494+
<div style="margin-bottom:18px;">
495+
<label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Full-time developers <span style="font-weight:400;color:var(--regen-gray-500);">— heavy AI usage</span></label>
496+
<input id="org-devs" type="number" min="0" value="0" style="width:100px;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;text-align:center;">
497+
</div>
498+
<div style="margin-bottom:18px;">
499+
<label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Autonomous agents <span style="font-weight:400;color:var(--regen-gray-500);">— always-on bots, CI pipelines</span></label>
500+
<input id="org-agents" type="number" min="0" value="0" style="width:100px;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;text-align:center;">
501+
</div>
502+
<div style="margin-bottom:24px;">
503+
<label style="display:block;font-weight:600;font-size:14px;color:var(--regen-navy);margin-bottom:6px;">Part-time AI users <span style="font-weight:400;color:var(--regen-gray-500);">— occasional use for writing, research</span></label>
504+
<input id="org-parttime" type="number" min="0" value="0" style="width:100px;padding:10px 14px;border:1px solid var(--regen-gray-200);border-radius:8px;font-size:15px;text-align:center;">
505+
</div>
526506
527-
<!-- Calculated estimate -->
528-
<div id="org-estimate" style="display:none;background:linear-gradient(135deg, rgba(79,181,115,0.06), rgba(16,21,112,0.04));border:1px solid rgba(79,181,115,0.2);border-radius:10px;padding:20px 24px;margin-bottom:20px;">
529-
<div style="font-size:13px;color:var(--regen-gray-500);margin-bottom:4px;">Suggested monthly subscription</div>
530-
<div style="display:flex;align-items:baseline;gap:8px;">
531-
<span id="org-price" style="font-size:32px;font-weight:800;color:var(--regen-navy);">$0</span>
532-
<span style="font-size:14px;color:var(--regen-gray-500);">/month</span>
533-
</div>
534-
<div id="org-breakdown" style="margin-top:10px;font-size:13px;color:var(--regen-gray-600);line-height:1.6;"></div>
535-
<div style="margin-top:12px;font-size:12px;color:var(--regen-gray-400);">You can adjust the amount up or down at checkout.</div>
507+
<!-- Calculated estimate -->
508+
<div id="org-estimate" style="display:none;background:linear-gradient(135deg, rgba(79,181,115,0.06), rgba(16,21,112,0.04));border:1px solid rgba(79,181,115,0.2);border-radius:10px;padding:20px 24px;margin-bottom:20px;">
509+
<div style="font-size:13px;color:var(--regen-gray-500);margin-bottom:4px;">Suggested monthly subscription</div>
510+
<div style="display:flex;align-items:baseline;gap:8px;">
511+
<span id="org-price" style="font-size:32px;font-weight:800;color:var(--regen-navy);">$0</span>
512+
<span style="font-size:14px;color:var(--regen-gray-500);">/month</span>
536513
</div>
537-
538-
<button id="org-subscribe-btn" onclick="subscribeOrg()" class="regen-btn regen-btn--solid regen-btn--block" style="font-size:16px;padding:14px;">Subscribe Your Team</button>
539-
<p id="org-error" style="color:#c33;font-size:13px;margin:8px 0 0;display:none;text-align:center;"></p>
514+
<div id="org-breakdown" style="margin-top:10px;font-size:13px;color:var(--regen-gray-600);line-height:1.6;"></div>
515+
<div style="margin-top:12px;font-size:12px;color:var(--regen-gray-400);">You can adjust the amount up or down at checkout.</div>
540516
</div>
517+
518+
<button id="org-subscribe-btn" onclick="subscribeOrg()" class="regen-btn regen-btn--solid regen-btn--block" style="font-size:16px;padding:14px;">Subscribe Your Team</button>
519+
<p id="org-error" style="color:#c33;font-size:13px;margin:8px 0 0;display:none;text-align:center;"></p>
541520
</div>
542521
</div>
543522
@@ -663,44 +642,10 @@ Then estimate my AI usage footprint and recommend a tier ($1.25, $2.50, or $5/mo
663642
<button onclick="window.location.href='/?view=agent'" style="position:fixed;bottom:24px;right:24px;z-index:9999;background:#1a1a2e;color:#4FB573;border:1px solid #4FB573;border-radius:8px;padding:10px 18px;cursor:pointer;font-family:monospace;font-size:13px;font-weight:600;box-shadow:0 4px 12px rgba(0,0,0,0.3);transition:all 0.2s;" onmouseover="this.style.background='#2a2a4e'" onmouseout="this.style.background='#1a1a2e'">&#129302; Agent View</button>
664643
665644
<script>
666-
function fundCustom() {
667-
var input = document.getElementById('custom-amount');
668-
var errEl = document.getElementById('custom-error');
669-
var amount = parseFloat(input.value);
670-
errEl.style.display = 'none';
671-
if (!amount || amount < 1) {
672-
errEl.textContent = 'Minimum amount is $1.00';
673-
errEl.style.display = 'block';
674-
return;
675-
}
676-
var cents = Math.round(amount * 100);
677-
fetch('/checkout', {
678-
method: 'POST',
679-
headers: { 'Content-Type': 'application/json' },
680-
body: JSON.stringify({ amount_cents: cents })
681-
})
682-
.then(function(r) { return r.json(); })
683-
.then(function(data) {
684-
if (data.url) window.location.href = data.url;
685-
else {
686-
errEl.textContent = data.error || 'Something went wrong. Is Stripe configured?';
687-
errEl.style.display = 'block';
688-
}
689-
})
690-
.catch(function(e) {
691-
errEl.textContent = e.message;
692-
errEl.style.display = 'block';
693-
});
694-
}
695-
</script>
696-
697-
<script>
698-
function setPlanType(type) {
699-
document.getElementById('individual-pricing').style.display = type === 'individual' ? '' : 'none';
700-
document.getElementById('org-pricing').style.display = type === 'org' ? '' : 'none';
701-
document.getElementById('toggle-individual').className = 'interval-btn' + (type === 'individual' ? ' interval-btn--active' : '');
702-
document.getElementById('toggle-org').className = 'interval-btn' + (type === 'org' ? ' interval-btn--active' : '');
703-
if (type === 'org') recalcOrg();
645+
function showOrgForm() {
646+
document.getElementById('org-cta').style.display = 'none';
647+
document.getElementById('org-form').style.display = 'block';
648+
document.getElementById('org-name').focus();
704649
}
705650
706651
function recalcOrg() {

0 commit comments

Comments
 (0)