+
{sortedPosts.map((post) => (
- {/* Temporarily removed conditional image rendering for debugging */}
+
-
-
- {post.data.category && (
-
- {post.data.category}
-
- )}
-
-
+
+
+
{post.data.description}
-
))}
-
+
+
+
+ View all tags
+
+
\ No newline at end of file
+ .tag-page {
+ padding-top: 2rem;
+ padding-bottom: 4rem;
+ }
+
+ .tag-hero {
+ text-align: center;
+ margin-bottom: 3rem;
+ animation: fadeIn 0.5s ease-out;
+ }
+
+ @keyframes fadeIn {
+ from { opacity: 0; transform: translateY(10px); }
+ to { opacity: 1; transform: translateY(0); }
+ }
+
+ .tag-hero h1 {
+ font-size: var(--font-size-3xl);
+ margin-bottom: 0.5rem;
+ line-height: 1.2;
+ }
+
+ .tag-highlight {
+ background: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary));
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+ color: transparent;
+ font-weight: 700;
+ }
+
+ .tag-hero p {
+ color: var(--text-secondary);
+ font-size: var(--font-size-lg);
+ }
+
+ .posts-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
+ gap: 2rem;
+ margin-bottom: 3rem;
+ }
+
+ .post-card {
+ background: var(--card-bg);
+ border-radius: 12px;
+ overflow: hidden;
+ border: 1px solid var(--border-primary);
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
+ animation: fadeIn 0.5s ease-out forwards;
+ animation-delay: calc(var(--animation-order, 0) * 0.1s);
+ opacity: 0;
+ display: flex;
+ flex-direction: column;
+ }
+
+ .post-card:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
+ border-color: var(--accent-primary);
+ }
+
+ .post-image {
+ width: 100%;
+ height: 200px;
+ object-fit: cover;
+ border-bottom: 1px solid var(--border-primary);
+ }
+
+ .post-content {
+ padding: 1.5rem;
+ flex-grow: 1;
+ display: flex;
+ flex-direction: column;
+ }
+
+ .post-content time {
+ color: var(--text-tertiary);
+ font-size: var(--font-size-sm);
+ font-family: var(--font-mono);
+ }
+
+ .post-title {
+ font-size: var(--font-size-xl);
+ margin: 0.5rem 0 1rem;
+ line-height: 1.3;
+ }
+
+ .post-title a {
+ color: var(--text-primary);
+ text-decoration: none;
+ transition: color 0.2s ease;
+ }
+
+ .post-title a:hover {
+ color: var(--accent-primary);
+ }
+
+ .post-excerpt {
+ color: var(--text-secondary);
+ font-size: var(--font-size-md);
+ margin-bottom: 1.5rem;
+ line-height: 1.6;
+ flex-grow: 1;
+ }
+
+ .post-meta {
+ display: flex;
+ flex-direction: column;
+ gap: 0.75rem;
+ margin-top: auto;
+ }
+
+ .reading-time {
+ color: var(--text-tertiary);
+ font-size: var(--font-size-sm);
+ font-family: var(--font-mono);
+ }
+
+ .post-tags {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.5rem;
+ list-style: none;
+ padding: 0;
+ }
+
+ .post-tags li a {
+ display: block;
+ padding: 0.25rem 0.75rem;
+ background: rgba(56, 189, 248, 0.1);
+ border-radius: 20px;
+ color: var(--accent-primary);
+ font-size: var(--font-size-xs);
+ text-decoration: none;
+ transition: all 0.2s ease;
+ }
+
+ .post-tags li a:hover {
+ background: rgba(56, 189, 248, 0.2);
+ transform: translateY(-2px);
+ }
+
+ .post-tags li a.current-tag {
+ background: var(--accent-primary);
+ color: var(--bg-primary);
+ }
+
+ .all-tags-link {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ margin: 0 auto;
+ padding: 0.75rem 1.5rem;
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-primary);
+ border-radius: 30px;
\ No newline at end of file
diff --git a/src/styles/theme.css b/src/styles/theme.css
new file mode 100644
index 0000000..c20ca55
--- /dev/null
+++ b/src/styles/theme.css
@@ -0,0 +1,82 @@
+/* Theme Variables - Dark/Light Mode Support */
+
+/* Dark theme (default) */
+html {
+ /* Keep the default dark theme as defined in BaseLayout */
+}
+
+/* Light theme */
+html.light-mode {
+ /* Primary Colors */
+ --bg-primary: #f8fafc;
+ --bg-secondary: #f1f5f9;
+ --bg-tertiary: #e2e8f0;
+ --bg-code: #f1f5f9;
+ --text-primary: #0f172a;
+ --text-secondary: #334155;
+ --text-tertiary: #64748b;
+
+ /* Accent Colors remain the same for brand consistency */
+
+ /* Glow Effects - lighter for light mode */
+ --glow-primary: rgba(6, 182, 212, 0.1);
+ --glow-secondary: rgba(59, 130, 246, 0.1);
+ --glow-tertiary: rgba(139, 92, 246, 0.1);
+
+ /* Border Colors */
+ --border-primary: rgba(0, 0, 0, 0.1);
+ --border-secondary: rgba(0, 0, 0, 0.05);
+
+ /* Card Background */
+ --card-bg: rgba(255, 255, 255, 0.8);
+ --card-border: rgba(56, 189, 248, 0.3); /* Slightly stronger border */
+
+ /* UI Element Colors */
+ --ui-element: #e2e8f0;
+ --ui-element-hover: #cbd5e1;
+}
+
+/* Background adjustments for light mode */
+html.light-mode body {
+ background-image:
+ radial-gradient(circle at 20% 35%, rgba(6, 182, 212, 0.05) 0%, transparent 50%),
+ radial-gradient(circle at 75% 15%, rgba(59, 130, 246, 0.05) 0%, transparent 45%),
+ radial-gradient(circle at 85% 70%, rgba(139, 92, 246, 0.05) 0%, transparent 40%);
+}
+
+/* Adding light mode grid overlay */
+html.light-mode body::before {
+ background-image:
+ linear-gradient(rgba(15, 23, 42, 0.03) 1px, transparent 1px),
+ linear-gradient(90deg, rgba(15, 23, 42, 0.03) 1px, transparent 1px);
+}
+
+/* Theme transition for smooth switching */
+html, body, * {
+ transition:
+ background-color 0.3s ease,
+ color 0.3s ease,
+ border-color 0.3s ease,
+ box-shadow 0.3s ease;
+}
+
+/* Knowledge Graph light mode adjustments */
+html.light-mode .graph-container {
+ background: rgba(248, 250, 252, 0.6);
+}
+
+html.light-mode .graph-loading {
+ background: rgba(241, 245, 249, 0.7);
+}
+
+html.light-mode .graph-filters {
+ background: rgba(241, 245, 249, 0.7);
+}
+
+html.light-mode .graph-legend {
+ background: rgba(241, 245, 249, 0.7);
+}
+
+html.light-mode .node-details {
+ background: rgba(248, 250, 252, 0.9);
+}
\ No newline at end of file