Skip to content

Commit 84595f0

Browse files
committed
codewabbit
1 parent cdb3857 commit 84595f0

File tree

5 files changed

+168
-2
lines changed

5 files changed

+168
-2
lines changed
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
'use client';
2+
3+
import Image from 'next/image';
4+
import Link from 'next/link';
5+
import type { HonorableMention } from './sponsors-data';
6+
7+
interface HonorableMentionsProps {
8+
mentions: HonorableMention[];
9+
}
10+
11+
function MentionCard({ mention }: { mention: HonorableMention }) {
12+
const supportTypeColors = {
13+
'Free Plan': 'bg-blue-500/10 text-blue-600 border-blue-500/20',
14+
'Open Source': 'bg-green-500/10 text-green-600 border-green-500/20',
15+
'Community Support':
16+
'bg-purple-500/10 text-purple-600 border-purple-500/20',
17+
Educational: 'bg-orange-500/10 text-orange-600 border-orange-500/20',
18+
};
19+
20+
return (
21+
<Link
22+
className="group block"
23+
href={mention.website}
24+
rel="noopener noreferrer"
25+
target="_blank"
26+
>
27+
<div className="relative h-full rounded border border-border bg-card/30 backdrop-blur-sm transition-all duration-300 hover:border-border/80 hover:bg-card/50 hover:shadow-lg">
28+
<div className="flex flex-col items-center p-6">
29+
{/* Support Type Badge */}
30+
<div
31+
className={`mb-4 rounded-full border px-3 py-1 font-medium text-xs ${supportTypeColors[mention.supportType]}`}
32+
>
33+
{mention.supportType}
34+
</div>
35+
36+
{/* Logo */}
37+
<div className="mb-4 flex h-16 w-full items-center justify-center">
38+
<Image
39+
alt={`${mention.name} logo`}
40+
className="max-h-full max-w-full object-contain transition-transform duration-300 group-hover:scale-105 dark:brightness-0 dark:invert"
41+
height={64}
42+
src={mention.logo}
43+
width={160}
44+
/>
45+
</div>
46+
47+
{/* Name */}
48+
<h3 className="mb-2 text-center font-semibold text-foreground text-lg transition-colors group-hover:text-primary">
49+
{mention.name}
50+
</h3>
51+
52+
{/* Description */}
53+
<p className="text-center text-muted-foreground text-sm leading-relaxed">
54+
{mention.description}
55+
</p>
56+
</div>
57+
58+
{/* Sci-fi corners */}
59+
<div className="pointer-events-none absolute inset-0">
60+
<div className="absolute top-0 left-0 h-2 w-2 group-hover:animate-[cornerGlitch_0.6s_ease-in-out]">
61+
<div className="absolute top-0 left-0.5 h-0.5 w-1.5 origin-left bg-foreground opacity-50" />
62+
<div className="absolute top-0 left-0 h-2 w-0.5 origin-top bg-foreground opacity-50" />
63+
</div>
64+
<div className="-scale-x-[1] absolute top-0 right-0 h-2 w-2 group-hover:animate-[cornerGlitch_0.6s_ease-in-out]">
65+
<div className="absolute top-0 left-0.5 h-0.5 w-1.5 origin-left bg-foreground opacity-50" />
66+
<div className="absolute top-0 left-0 h-2 w-0.5 origin-top bg-foreground opacity-50" />
67+
</div>
68+
<div className="-scale-y-[1] absolute bottom-0 left-0 h-2 w-2 group-hover:animate-[cornerGlitch_0.6s_ease-in-out]">
69+
<div className="absolute top-0 left-0.5 h-0.5 w-1.5 origin-left bg-foreground opacity-50" />
70+
<div className="absolute top-0 left-0 h-2 w-0.5 origin-top bg-foreground opacity-50" />
71+
</div>
72+
<div className="-scale-[1] absolute right-0 bottom-0 h-2 w-2 group-hover:animate-[cornerGlitch_0.6s_ease-in-out]">
73+
<div className="absolute top-0 left-0.5 h-0.5 w-1.5 origin-left bg-foreground opacity-50" />
74+
<div className="absolute top-0 left-0 h-2 w-0.5 origin-top bg-foreground opacity-50" />
75+
</div>
76+
</div>
77+
</div>
78+
</Link>
79+
);
80+
}
81+
82+
export default function HonorableMentions({
83+
mentions,
84+
}: HonorableMentionsProps) {
85+
if (mentions.length === 0) {
86+
return null;
87+
}
88+
89+
return (
90+
<div>
91+
{/* Header */}
92+
<div className="mb-12 text-center">
93+
<h2 className="mb-4 font-semibold text-2xl sm:text-3xl lg:text-4xl">
94+
Honorable Mentions
95+
</h2>
96+
<p className="mx-auto max-w-2xl text-muted-foreground text-sm sm:text-base lg:text-lg">
97+
Special thanks to these amazing companies and tools that support open
98+
source projects through free plans and community programs
99+
</p>
100+
</div>
101+
102+
{/* Mentions Grid */}
103+
<div className="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3">
104+
{mentions.map((mention) => (
105+
<MentionCard key={mention.id} mention={mention} />
106+
))}
107+
</div>
108+
</div>
109+
);
110+
}

apps/docs/app/(home)/sponsors/page.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import type { Metadata } from 'next';
22
import { Footer } from '@/components/footer';
33
import Section from '@/components/landing/section';
44
import { Spotlight } from '@/components/landing/spotlight';
5-
import { sponsorStats, sponsors } from './sponsors-data';
5+
import HonorableMentions from './honorable-mentions';
6+
import { honorableMentions, sponsorStats, sponsors } from './sponsors-data';
67
import SponsorsGrid from './sponsors-grid';
78
import SponsorsHero from './sponsors-hero';
89

@@ -35,6 +36,16 @@ export default function SponsorsPage() {
3536
</div>
3637
</Section>
3738

39+
{/* Honorable Mentions Section */}
40+
<Section
41+
className="border-border border-b bg-background/30"
42+
id="honorable-mentions"
43+
>
44+
<div className="mx-auto w-full max-w-7xl px-4 sm:px-6 lg:px-8">
45+
<HonorableMentions mentions={honorableMentions} />
46+
</div>
47+
</Section>
48+
3849
{/* Call to Action Section */}
3950
<Section className="bg-background/50" id="sponsor-cta">
4051
<div className="mx-auto w-full max-w-4xl px-4 text-center sm:px-6 lg:px-8">

apps/docs/app/(home)/sponsors/sponsors-data.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,19 @@ export interface Sponsor {
88
disabled?: boolean;
99
}
1010

11+
export interface HonorableMention {
12+
id: string;
13+
name: string;
14+
logo: string;
15+
website: string;
16+
description: string;
17+
supportType:
18+
| 'Free Plan'
19+
| 'Open Source'
20+
| 'Community Support'
21+
| 'Educational';
22+
}
23+
1124
// Sample sponsors data - replace with real data
1225
export const sponsors: Sponsor[] = [
1326
{
@@ -29,6 +42,17 @@ export const sponsors: Sponsor[] = [
2942
},
3043
];
3144

45+
export const honorableMentions: HonorableMention[] = [
46+
{
47+
id: 'coderabbit',
48+
name: 'CodeRabbit',
49+
logo: 'coderabbit.svg',
50+
website: 'https://coderabbit.ai',
51+
description: 'AI-powered code reviews with comprehensive OSS plan',
52+
supportType: 'Free Plan',
53+
},
54+
];
55+
3256
const activeSponsors = sponsors.filter((s) => !s.disabled);
3357

3458
export const sponsorStats = {

apps/docs/app/(home)/sponsors/sponsors-grid.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ function SponsorCard({ sponsor }: { sponsor: Sponsor }) {
4343
<div className="mb-6 flex h-24 w-full items-center justify-center">
4444
<Image
4545
alt={`${sponsor.name} logo`}
46-
className="max-h-full max-w-full object-contain transition-transform duration-300 group-hover:scale-105"
46+
className="max-h-full max-w-full object-contain transition-transform duration-300 group-hover:scale-105 dark:brightness-0 dark:invert"
4747
height={96}
4848
src={sponsor.logo}
4949
width={200}

apps/docs/public/coderabbit.svg

Lines changed: 21 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)