prices-as-code
Version:
Prices as Code (PaC) - Define your product pricing schemas with type-safe definitions
173 lines (152 loc) • 6.39 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Page Not Found - Prices as Code</title>
<meta name="description" content="The requested page was not found">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="icon" href="https://raw.githubusercontent.com/wickdninja/assets/refs/heads/main/PaC.webp">
<style>
.not-found-container {
text-align: center;
padding: 4rem 2rem;
max-width: 800px;
margin: 0 auto;
}
.not-found-code {
font-size: 8rem;
font-weight: 700;
margin-bottom: 1rem;
background: linear-gradient(90deg, var(--primary-color), #0099ff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
line-height: 1;
}
.not-found-image {
max-width: 300px;
margin: 2rem auto;
animation: float 3s ease-in-out infinite;
}
@keyframes float {
0% { transform: translateY(0px); }
50% { transform: translateY(-20px); }
100% { transform: translateY(0px); }
}
.not-found-title {
font-size: 2rem;
margin-bottom: 1rem;
}
.not-found-text {
margin-bottom: 2rem;
font-size: 1.1rem;
}
.not-found-suggestions {
margin: 2rem 0;
text-align: left;
display: inline-block;
}
.not-found-suggestions h3 {
margin-bottom: 1rem;
text-align: center;
}
.suggestion-list {
list-style-type: none;
padding: 0;
}
.suggestion-list li {
margin-bottom: 0.5rem;
background-color: var(--light-bg);
padding: 0.75rem 1rem;
border-radius: 8px;
transition: var(--transition-standard);
}
.suggestion-list li:hover {
transform: translateX(5px);
background-color: rgba(3, 102, 214, 0.1);
}
.search-container-404 {
max-width: 500px;
margin: 2rem auto;
}
</style>
</head>
<body>
<header class="site-header">
<div class="container">
<div class="header-content">
<div class="logo">
<a href="/index.html">
<img src="https://raw.githubusercontent.com/wickdninja/assets/refs/heads/main/PaC.webp" alt="Prices as Code" width="40">
<span>Prices as Code</span>
</a>
</div>
<nav class="main-nav">
<ul>
<li><a href="/guides/index.html">Guides</a></li>
<li><a href="/api/index.html">API</a></li>
<li><a href="/providers/index.html">Providers</a></li>
<li><a href="https://github.com/wickdninja/prices-as-code" target="_blank">GitHub</a></li>
<li><a href="https://www.npmjs.com/package/prices-as-code" target="_blank">NPM</a></li>
</ul>
</nav>
</div>
</div>
</header>
<main class="content">
<div class="container">
<div class="not-found-container">
<div class="not-found-code">404</div>
<h1 class="not-found-title">Page Not Found</h1>
<p class="not-found-text">The page you're looking for doesn't exist or has been moved.</p>
<div class="search-container-404">
<input type="text" class="search-box" id="search-404" placeholder="Search the documentation...">
<div class="search-icon">🔍</div>
</div>
<a href="/index.html" class="btn">Go Home</a>
<div class="not-found-image">
<img src="https://raw.githubusercontent.com/wickdninja/assets/refs/heads/main/PaC.webp" alt="Prices as Code" width="200">
</div>
<div class="not-found-suggestions">
<h3>Popular Pages</h3>
<ul class="suggestion-list">
<li><a href="/guides/getting-started.html">Getting Started Guide</a></li>
<li><a href="/api/index.html">API Reference</a></li>
<li><a href="/providers/stripe.html">Stripe Integration</a></li>
<li><a href="/guides/index.html">All Guides</a></li>
</ul>
</div>
</div>
</div>
</main>
<footer class="site-footer">
<div class="container">
<div class="footer-content">
<p>Copyright © 2025 Nate Ross. Distributed by an <a href="https://github.com/wickdninja/prices-as-code/blob/main/LICENSE">MIT license.</a></p>
<p><a href="#top" class="back-to-top">Back to top</a></p>
</div>
</div>
</footer>
<script src="/assets/js/main.js"></script>
<script>
// Simple redirect based on common paths
document.addEventListener('DOMContentLoaded', function() {
const urlPath = window.location.pathname;
const searchInput = document.getElementById('search-404');
// Add enter key search
searchInput.addEventListener('keyup', function(event) {
if (event.key === 'Enter') {
window.location.href = `/index.html?search=${encodeURIComponent(searchInput.value)}`;
}
});
// Extract filename from path
const pathParts = urlPath.split('/');
const filename = pathParts[pathParts.length - 1].replace('.html', '');
// Populate search with filename as a starting point
if (filename && filename !== '404') {
searchInput.value = filename.replace(/-/g, ' ');
}
});
</script>
</body>
</html>