Merge pull request #133 from builderz-labs/feat-promo-banner-links

feat: add promotional banner and service CTA
This commit is contained in:
nyk 2026-03-04 09:57:45 +07:00 committed by GitHub
commit bcae068da9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 51 additions and 0 deletions

View File

@ -36,6 +36,7 @@ import { ChatPanel } from '@/components/chat/chat-panel'
import { ErrorBoundary } from '@/components/ErrorBoundary' import { ErrorBoundary } from '@/components/ErrorBoundary'
import { LocalModeBanner } from '@/components/layout/local-mode-banner' import { LocalModeBanner } from '@/components/layout/local-mode-banner'
import { UpdateBanner } from '@/components/layout/update-banner' import { UpdateBanner } from '@/components/layout/update-banner'
import { PromoBanner } from '@/components/layout/promo-banner'
import { useWebSocket } from '@/lib/websocket' import { useWebSocket } from '@/lib/websocket'
import { useServerEvents } from '@/lib/use-server-events' import { useServerEvents } from '@/lib/use-server-events'
import { useMissionControl } from '@/store' import { useMissionControl } from '@/store'
@ -147,6 +148,7 @@ export default function Home() {
<HeaderBar /> <HeaderBar />
<LocalModeBanner /> <LocalModeBanner />
<UpdateBanner /> <UpdateBanner />
<PromoBanner />
<main className="flex-1 overflow-auto pb-16 md:pb-0" role="main"> <main className="flex-1 overflow-auto pb-16 md:pb-0" role="main">
<div aria-live="polite"> <div aria-live="polite">
<ErrorBoundary key={activeTab}> <ErrorBoundary key={activeTab}>

View File

@ -0,0 +1,49 @@
'use client'
export function PromoBanner() {
return (
<div className="mx-4 mt-3 mb-0 flex flex-col gap-2 px-4 py-2.5 rounded-lg bg-amber-500/10 border border-amber-500/20 text-sm md:flex-row md:items-center">
<div className="flex items-center gap-2 min-w-0">
<span className="w-1.5 h-1.5 rounded-full bg-amber-400 shrink-0" />
<p className="text-xs text-amber-200/90">
Built with care by <span className="font-semibold text-amber-100">nyk</span> · available for client and custom AI orchestration work.
</p>
</div>
<div className="flex flex-wrap items-center gap-2 md:ml-auto">
<a
href="https://x.com/nyk_builderz"
target="_blank"
rel="noopener noreferrer"
className="text-2xs font-medium text-amber-100 hover:text-white px-2 py-1 rounded border border-amber-300/30 hover:border-amber-200/50 transition-colors"
>
Hire nyk
</a>
<a
href="https://github.com/0xNyk"
target="_blank"
rel="noopener noreferrer"
className="text-2xs font-medium text-amber-200 hover:text-amber-100 px-2 py-1 rounded border border-amber-500/20 hover:border-amber-400/40 transition-colors"
>
Follow nyk
</a>
<a
href="https://dictx.splitlabs.io"
target="_blank"
rel="noopener noreferrer"
className="text-2xs font-medium text-amber-200 hover:text-amber-100 px-2 py-1 rounded border border-amber-500/20 hover:border-amber-400/40 transition-colors"
>
DictX (Upcoming)
</a>
<a
href="https://x.com/nyk_builderz/status/2029007663011643498?s=20"
target="_blank"
rel="noopener noreferrer"
className="text-2xs font-medium text-amber-200 hover:text-amber-100 px-2 py-1 rounded border border-amber-500/20 hover:border-amber-400/40 transition-colors"
>
Flight Deck Pro (Upcoming)
</a>
</div>
</div>
)
}