Fix all broken CTAs, placeholder content, and dead links #84
12 changed files with 40 additions and 48 deletions
|
|
@ -14,8 +14,6 @@ interface Props {
|
|||
|
||||
const { type } = Astro.props;
|
||||
|
||||
const FORMSPREE_ENDPOINT = import.meta.env.PUBLIC_FORMSPREE_ENDPOINT || '';
|
||||
|
||||
const formId = `${type}-form`;
|
||||
|
||||
const getFormFields = (): FormField[] => {
|
||||
|
|
@ -59,7 +57,7 @@ const fields = getFormFields();
|
|||
const topicParam = Astro.url.searchParams.get('topic');
|
||||
---
|
||||
|
||||
<div id={formId} data-form-type={type} data-formspree={FORMSPREE_ENDPOINT}>
|
||||
<div id={formId} data-form-type={type}>
|
||||
<form class="shared-form" data-type={type} novalidate>
|
||||
{/* Honeypot for spam filtering */}
|
||||
<div style="position: absolute; left: -9999px;" aria-hidden="true">
|
||||
|
|
@ -147,27 +145,14 @@ const topicParam = Astro.url.searchParams.get('topic');
|
|||
const formData = new FormData(form);
|
||||
formData.append('form_type', type);
|
||||
|
||||
const endpoint = container.dataset.formspree;
|
||||
|
||||
try {
|
||||
if (endpoint) {
|
||||
const response = await fetch(endpoint, {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
});
|
||||
if (!response.ok) {
|
||||
const err = await response.json().catch(() => ({}));
|
||||
throw new Error(err.error?.message || 'Submission failed. Please try again.');
|
||||
}
|
||||
} else {
|
||||
// Fallback: mailto link
|
||||
const data = Object.fromEntries(formData.entries());
|
||||
const subject = encodeURIComponent(`${type} inquiry from ${data.name || data.email}`);
|
||||
const body = encodeURIComponent(
|
||||
Object.entries(data).map(([k, v]) => `${k}: ${v}`).join('\n')
|
||||
);
|
||||
window.location.href = `mailto:scott@scoble.me?subject=${subject}&body=${body}`;
|
||||
}
|
||||
// Construct mailto link with form data
|
||||
const data = Object.fromEntries(formData.entries());
|
||||
const subject = encodeURIComponent(`${type} inquiry from ${data.name || data.email}`);
|
||||
const body = encodeURIComponent(
|
||||
Object.entries(data).map(([k, v]) => `${k}: ${v}`).join('\n')
|
||||
);
|
||||
window.location.href = `mailto:scott@scoble.me?subject=${subject}&body=${body}`;
|
||||
|
||||
form.style.display = 'none';
|
||||
successEl.style.display = '';
|
||||
|
|
|
|||
|
|
@ -45,9 +45,12 @@ import BaseLayout from '../layouts/BaseLayout.astro';
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Photo placeholder - hidden until real photo exists -->
|
||||
<!--
|
||||
<div class="photo-placeholder">
|
||||
<p>📷 Photo coming soon</p>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
|
@ -106,7 +109,7 @@ import BaseLayout from '../layouts/BaseLayout.astro';
|
|||
|
||||
.bio-section .section-container {
|
||||
display: grid;
|
||||
grid-template-columns: 2fr 1fr;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 3rem;
|
||||
align-items: start;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,11 +145,11 @@ import BaseLayout from '../../layouts/BaseLayout.astro';
|
|||
</p>
|
||||
|
||||
<div class="cta-box">
|
||||
<h3>Seeing AI brain fry on your team?</h3>
|
||||
<h3>Want to continue this conversation?</h3>
|
||||
<p>
|
||||
Higher error rates, faster turnover, quieter standups — I run a 90-minute workshop on shifting from extraction to cultivation metrics. No slides, just conversation.
|
||||
Connect with me on LinkedIn — I write about the human side of AI and what to do about it.
|
||||
</p>
|
||||
<a href="/contact" class="cta-button">Get in touch</a>
|
||||
<a href="https://linkedin.com/in/scottscoble" class="cta-button">Connect on LinkedIn</a>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -167,11 +167,11 @@ import BaseLayout from '../../layouts/BaseLayout.astro';
|
|||
</p>
|
||||
|
||||
<div class="cta-box">
|
||||
<h3>What's the DevEx initiative that missed the mark?</h3>
|
||||
<h3>Want to continue this conversation?</h3>
|
||||
<p>
|
||||
I'm collecting stories for a longer piece on what real Developer Experience looks like — the initiatives that worked and the ones that made things worse. DM me with your experience, or reach out if your team is wrestling with DevEx, autonomy, and meaning in an AI-augmented world.
|
||||
Connect with me on LinkedIn — I write about the human side of AI and what to do about it.
|
||||
</p>
|
||||
<a href="/contact" class="cta-button">Get in touch</a>
|
||||
<a href="https://linkedin.com/in/scottscoble" class="cta-button">Connect on LinkedIn</a>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -160,11 +160,11 @@ import BaseLayout from '../../layouts/BaseLayout.astro';
|
|||
</p>
|
||||
|
||||
<div class="cta-box">
|
||||
<h3>Want to move past engagement surveys?</h3>
|
||||
<h3>Want to continue this conversation?</h3>
|
||||
<p>
|
||||
I speak on the cultivation approach to leadership — keynote-friendly, 30-45 min, data-backed, no platitudes. If your organization or conference is looking for something that actually changes how leaders show up, let's talk.
|
||||
Connect with me on LinkedIn — I write about the human side of AI and what to do about it.
|
||||
</p>
|
||||
<a href="/contact" class="cta-button">Get in touch</a>
|
||||
<a href="https://linkedin.com/in/scottscoble" class="cta-button">Connect on LinkedIn</a>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -139,11 +139,11 @@ import BaseLayout from '../../layouts/BaseLayout.astro';
|
|||
</p>
|
||||
|
||||
<div class="cta-box">
|
||||
<h3>Feeling the surveillance squeeze?</h3>
|
||||
<h3>Want to continue this conversation?</h3>
|
||||
<p>
|
||||
I help engineering teams navigate the AI transition without strip-mining their people. If your team is struggling with AI surveillance culture, let's talk about what cultivation looks like in practice.
|
||||
Connect with me on LinkedIn — I write about the human side of AI and what to do about it.
|
||||
</p>
|
||||
<a href="/contact" class="cta-button">Get in touch</a>
|
||||
<a href="https://linkedin.com/in/scottscoble" class="cta-button">Connect on LinkedIn</a>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ import BaseLayout from '../../layouts/BaseLayout.astro';
|
|||
<footer class="article-footer">
|
||||
<div class="article-cta">
|
||||
<p>Enjoyed this? <a href="/blog">Read more articles</a> on AI, leadership, and the human side of technology.</p>
|
||||
<p>Ready to bring this thinking to your team? <a href="/contact">Let's talk.</a></p>
|
||||
<p>Ready to bring this thinking to your team? <a href="https://linkedin.com/in/scottscoble">Connect with me on LinkedIn</a>.</p>
|
||||
</div>
|
||||
</footer>
|
||||
</article>
|
||||
|
|
|
|||
|
|
@ -31,8 +31,7 @@ import SharedForm from '../components/Form/SharedForm.astro';
|
|||
<p class="book-quote">"A cultivation playbook for technical leaders who are tired of strip-mining their teams."</p>
|
||||
|
||||
<div class="book-links">
|
||||
<a href="#" class="book-link">Amazon</a>
|
||||
<a href="#" class="book-link">Publisher</a>
|
||||
<a href="https://a.co/d/0226o4Hg" class="book-link">Get it on Amazon</a>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
|
@ -46,8 +45,7 @@ import SharedForm from '../components/Form/SharedForm.astro';
|
|||
<p class="book-quote">"The simplest mentoring framework you'll actually use."</p>
|
||||
|
||||
<div class="book-links">
|
||||
<a href="#" class="book-link">Amazon</a>
|
||||
<a href="#" class="book-link">Publisher</a>
|
||||
<a href="https://a.co/d/0bRKZeUV" class="book-link">Get it on Amazon</a>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ import PackageCard from '../components/PackageCard.astro';
|
|||
<div class="section-container">
|
||||
<h2>Ready to cultivate your team?</h2>
|
||||
<p>Schedule a discovery call. We'll talk about your situation and figure out the right engagement.</p>
|
||||
<a href="/contact" class="cta-button">Schedule Discovery Call</a>
|
||||
<a href="https://linkedin.com/in/scottscoble" class="cta-button" target="_blank" rel="noopener">Connect on LinkedIn</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
|
|
|||
|
|
@ -37,8 +37,8 @@ import SharedForm from '../components/Form/SharedForm.astro';
|
|||
</div>
|
||||
|
||||
<div class="contact-option">
|
||||
<h3>📅 Discovery Call</h3>
|
||||
<p><a href="#" title="Calendly link coming soon">Schedule a 20-min call</a></p>
|
||||
<h3>🔗 LinkedIn</h3>
|
||||
<p><a href="https://linkedin.com/in/scottscoble" target="_blank" rel="noopener">Connect on LinkedIn</a></p>
|
||||
</div>
|
||||
|
||||
<div class="contact-option">
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ import PillarCard from '../components/PillarCard.astro';
|
|||
</p>
|
||||
<div class="hero-actions">
|
||||
<a href="/speaking#book" class="btn btn-primary" data-umami-event="hero-cta-book">Book Scott for Your Event</a>
|
||||
<a href="/speaking" class="btn btn-outline" data-umami-event="hero-cta-reel">Explore Speaking</a>
|
||||
<a href="https://linkedin.com/in/scottscoble" class="btn btn-outline" data-umami-event="hero-cta-linkedin" target="_blank" rel="noopener">Connect on LinkedIn</a>
|
||||
<a href="/downloads/Scott-Scoble-Human-Cultivation-Expert-Speaker-Profile.pdf" class="btn btn-outline" download data-umami-event="hero-cta-profile">📄 Speaker Profile</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -107,15 +107,18 @@ import PillarCard from '../components/PillarCard.astro';
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Trust Bar -->
|
||||
<!-- Trust Bar - hidden until client logos exist -->
|
||||
<!--
|
||||
<section class="trust-bar">
|
||||
<p class="trust-label">Trusted by leaders at</p>
|
||||
<div class="trust-logos">
|
||||
<span class="logo-placeholder">[Client logos coming soon]</span>
|
||||
</div>
|
||||
</section>
|
||||
-->
|
||||
|
||||
<!-- Testimonials -->
|
||||
<!-- Testimonials - hidden until content exists -->
|
||||
<!--
|
||||
<section class="testimonials">
|
||||
<div class="section-header">
|
||||
<p class="section-kicker">Testimonials</p>
|
||||
|
|
@ -126,6 +129,7 @@ import PillarCard from '../components/PillarCard.astro';
|
|||
<!-- Testimonials will be added here -->
|
||||
</div>
|
||||
</section>
|
||||
-->
|
||||
|
||||
<!-- CTA Section -->
|
||||
<section class="cta-section">
|
||||
|
|
|
|||
|
|
@ -20,7 +20,8 @@ import SharedForm from '../components/Form/SharedForm.astro';
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Speaker Reel -->
|
||||
<!-- Speaker Reel - hidden until video is ready -->
|
||||
<!--
|
||||
<section class="reel-section">
|
||||
<div class="section-container">
|
||||
<h2>Watch the Reel</h2>
|
||||
|
|
@ -33,6 +34,7 @@ import SharedForm from '../components/Form/SharedForm.astro';
|
|||
</div>
|
||||
</div>
|
||||
</section>
|
||||
-->
|
||||
|
||||
<!-- Signature Talks -->
|
||||
<section class="talks-section">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue