- {posts.map((post) => (
-
- ))}
+
+
+
+
+ {/* Header */}
+
+
+ DATABASE QUERY // SEARCH RESULTS
+
+
+ > BLOG ARCHIVE_
+
+
+
+ {/* Search Bar */}
+
+
+ {
+ setSearchQuery(value)
+ setCurrentPage(1)
+ }}
+ />
+
+
+
+
+ {/* Tag Filters */}
+
{
+ setSelectedTags([])
+ setCurrentPage(1)
+ }}
+ />
+
+ {/* Results Count */}
+
+
+ FOUND {filteredAndSortedPosts.length} {filteredAndSortedPosts.length === 1 ? 'POST' : 'POSTS'}
+
+
+
+ {/* Blog Grid */}
+ {paginatedPosts.length > 0 ? (
+
+ {paginatedPosts.map((post, index) => {
+ const hasImage = !!post.frontmatter.image
+ let variant: 'image-top' | 'image-side' | 'text-only'
+
+ if (!hasImage) {
+ variant = 'text-only'
+ } else {
+ variant = index % 3 === 1 ? 'image-side' : 'image-top'
+ }
+
+ return
+ })}
+
+ ) : (
+
+
+ NO POSTS FOUND // TRY DIFFERENT SEARCH TERMS
+
+
+ )}
+
+ {/* Pagination */}
+ {totalPages > 1 && (
+
+
+
+
+ {Array.from({ length: totalPages }, (_, i) => i + 1).map((page) => (
+
+ ))}
+
+
+
+
+ )}
)
diff --git a/app/globals.css b/app/globals.css
index 073c34a..2f0a761 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -17,6 +17,11 @@
--text-muted: 100 116 139;
--border-primary: 203 213 225;
--border-subtle: 226 232 240;
+
+ --neon-pink: #8b4a5e;
+ --neon-cyan: #4a7b85;
+ --neon-purple: #6b5583;
+ --neon-magenta: #8b4a7e;
}
.dark {
@@ -29,6 +34,11 @@
--text-muted: 100 116 139;
--border-primary: 71 85 105;
--border-subtle: 30 41 59;
+
+ --neon-pink: #9b5a6e;
+ --neon-cyan: #5a8b95;
+ --neon-purple: #7b6593;
+ --neon-magenta: #9b5a8e;
}
}
@@ -247,4 +257,70 @@
filter: url('#noise');
}
}
+
+ /* SCP-style subtle flicker hover */
+ @keyframes scp-flicker {
+ 0%, 100% {
+ border-color: rgb(71 85 105);
+ box-shadow: 0 0 0 rgba(90, 139, 149, 0);
+ transform: translate(0, 0);
+ }
+ 20% {
+ border-color: var(--neon-cyan);
+ box-shadow: 0 0 3px rgba(90, 139, 149, 0.3);
+ transform: translate(-0.5px, 0);
+ }
+ 40% {
+ border-color: rgb(71 85 105);
+ box-shadow: 0 0 0 rgba(90, 139, 149, 0);
+ transform: translate(0, 0);
+ }
+ 60% {
+ border-color: var(--neon-cyan);
+ box-shadow: 0 0 2px rgba(90, 139, 149, 0.2);
+ transform: translate(0.5px, 0);
+ }
+ }
+
+ .cyber-glitch-hover {
+ transition: all 0.15s ease;
+ position: relative;
+ }
+
+ .cyber-glitch-hover:hover {
+ animation: scp-flicker 150ms ease-in-out 3;
+ border-color: var(--neon-cyan) !important;
+ box-shadow: 0 1px 4px rgba(90, 139, 149, 0.15), inset 0 0 8px rgba(90, 139, 149, 0.05);
+ }
+
+ /* Navbar hide on scroll */
+ .navbar-hidden {
+ transform: translateY(-100%);
+ transition: transform 0.3s ease-in-out;
+ }
+
+ .navbar-visible {
+ transform: translateY(0);
+ transition: transform 0.3s ease-in-out;
+ }
+
+ /* Cyberpunk neon glow on focus - 80s style */
+ .cyber-focus:focus {
+ outline: none;
+ box-shadow:
+ 0 0 10px var(--neon-cyan),
+ 0 0 20px rgba(0, 255, 255, 0.5),
+ inset 0 0 10px rgba(0, 255, 255, 0.1);
+ border-color: var(--neon-cyan);
+ }
+
+ .cyber-focus-pink:focus {
+ outline: none;
+ box-shadow:
+ 0 0 10px var(--neon-pink),
+ 0 0 20px rgba(255, 0, 128, 0.5),
+ inset 0 0 10px rgba(255, 0, 128, 0.1);
+ border-color: var(--neon-pink);
+ }
}
+
diff --git a/app/layout.tsx b/app/layout.tsx
index 153a0bd..bb1c3f8 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -43,18 +43,20 @@ export default function RootLayout({
storageKey="blog-theme"
disableTransitionOnChange={false}
>
- {children}
+
+
{children}
- {/* Footer - from worktree-agent-1 */}
-