Adds newsletter.html with an email signup form that POSTs to a configured serverless endpoint. The endpoint and API token live in js/newsletter-config.js (token defaults to an empty deploy-time placeholder, never hardcoded in page logic). Missing/invalid tokens and network failures surface a fixed user-safe error; successful signups show a confirmation. Links the page from the site navigation on all pages.
34 lines
1.1 KiB
HTML
34 lines
1.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Reading list | My Personal Blog</title>
|
|
<link rel="stylesheet" href="css/style.css" />
|
|
</head>
|
|
<body>
|
|
<header class="site-header">
|
|
<nav class="site-nav" aria-label="Main navigation">
|
|
<a class="brand" href="index.html">My Blog</a>
|
|
<ul class="nav-links">
|
|
<li><a href="index.html">Home</a></li>
|
|
<li><a href="reading.html" aria-current="page">Reading</a></li>
|
|
<li><a href="contact.html">Contact</a></li>
|
|
<li><a href="newsletter.html">Newsletter</a></li>
|
|
</ul>
|
|
</nav>
|
|
</header>
|
|
<main>
|
|
<h1>Reading list</h1>
|
|
<p>Articles and links I’ve found worth keeping, grouped by category.</p>
|
|
<div id="reading-list">
|
|
<noscript><p class="reading-empty">This page needs JavaScript to render the reading list.</p></noscript>
|
|
</div>
|
|
</main>
|
|
<footer class="site-footer">
|
|
<p>© 2026 My Personal Blog</p>
|
|
</footer>
|
|
<script type="module" src="js/reading-list.js"></script>
|
|
</body>
|
|
</html>
|