Files
chorus-ping-blog/components/BlogFooter.tsx
anthonyrawlins 5e53840371 Implement automated scheduled publishing for blog
- Enhanced blog library to read from both posts/ and scheduled/ directories
- Added publishDate filtering with real-time checking (no cron jobs needed)
- Support for draft posts and recursive directory scanning
- Posts automatically appear when publishDate is reached
- Containerized solution that works without external scheduling
- Added publishDate field to blog types and updated existing scheduled post

Tested and verified:
 Past-dated posts appear automatically
 Future-dated posts remain hidden until publish time
 Draft posts are excluded regardless of date
 Maintains existing functionality for regular posts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 02:09:38 +10:00

81 lines
4.1 KiB
TypeScript

import Link from 'next/link'
import ThreeLogo from './ThreeLogo'
export default function BlogFooter() {
return (
<footer className="bg-white/80 dark:bg-carbon-950/80 backdrop-blur-md border-t border-carbon-200/50 dark:border-carbon-800/50 mt-24">
<div className="blog-container py-12">
<div className="grid grid-cols-1 md:grid-cols-4 gap-8">
<div className="col-span-1 md:col-span-2">
<div className="flex items-center space-x-3 mb-4">
<div className="w-10 h-10">
<ThreeLogo className="w-full h-full" />
</div>
<div className="flex flex-col">
<span className="font-logo font-semibold text-lg leading-none text-carbon-900 dark:text-carbon-100">CHORUS</span>
<span className="text-carbon-600 dark:text-carbon-500 text-xs font-medium">PING!</span>
</div>
</div>
<p className="text-carbon-600 dark:text-carbon-400 text-sm leading-relaxed mb-6 max-w-md">
Insights and deep dives into Context Engineering for Agentic AI and Orchestration, Agent Collaboration,
and the future of intelligent systems.
</p>
<div className="flex space-x-4">
<Link
href="https://www.linkedin.com/in/anthonylewisrawlins"
className="text-carbon-600 dark:text-carbon-500 hover:text-carbon-800 dark:hover:text-carbon-300 transition-colors"
>
<span className="sr-only">LinkedIn</span>
<svg className="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
<path fillRule="evenodd" d="M16.338 16.338H13.67V12.16c0-.995-.017-2.277-1.387-2.277-1.39 0-1.601 1.086-1.601 2.207v4.248H8.014v-8.59h2.559v1.174h.037c.356-.675 1.227-1.387 2.526-1.387 2.703 0 3.203 1.778 3.203 4.092v4.711zM5.005 6.575a1.548 1.548 0 11-.003-3.096 1.548 1.548 0 01.003 3.096zm-1.337 9.763H6.34v-8.59H3.667v8.59zM17.668 1H2.328C1.595 1 1 1.581 1 2.298v15.403C1 18.418 1.595 19 2.328 19h15.34c.734 0 1.332-.582 1.332-1.299V2.298C19 1.581 18.402 1 17.668 1z" clipRule="evenodd"/>
</svg>
</Link>
</div>
</div>
<div>
<h3 className="text-carbon-900 dark:text-carbon-100 font-semibold mb-4">Blog</h3>
<ul className="space-y-2 text-sm">
<li>
<Link href="/" className="text-carbon-600 dark:text-carbon-400 hover:text-carbon-800 dark:hover:text-carbon-200 transition-colors">
All Posts
</Link>
</li>
<li>
<Link href="/tags" className="text-carbon-600 dark:text-carbon-400 hover:text-carbon-800 dark:hover:text-carbon-200 transition-colors">
Topics
</Link>
</li>
<li>
<Link href="/rss.xml" className="text-carbon-600 dark:text-carbon-400 hover:text-carbon-800 dark:hover:text-carbon-200 transition-colors">
RSS Feed
</Link>
</li>
</ul>
</div>
<div>
<h3 className="text-carbon-900 dark:text-carbon-100 font-semibold mb-4">CHORUS</h3>
<ul className="space-y-2 text-sm">
<li>
<Link href="https://chorus.services" className="text-carbon-600 dark:text-carbon-400 hover:text-carbon-800 dark:hover:text-carbon-200 transition-colors">
Platform
</Link>
</li>
</ul>
</div>
</div>
<div className="border-t border-carbon-200 dark:border-carbon-800 mt-8 pt-8 text-center">
<p className="text-carbon-600 dark:text-carbon-500 text-sm">
© {new Date().getFullYear()} CHORUS Services. Built with care by{' '}
<Link href="https://deepblack.cloud" className="text-carbon-700 dark:text-carbon-400 hover:text-carbon-900 dark:hover:text-carbon-200 transition-colors">
Deep Black Cloud
</Link>
.
</p>
</div>
</div>
</footer>
)
}