Skip to content

Commit 96c5634

Browse files
Merge pull request #185 from DevLoversTeam/yn/refactor/footer-theme-styles
refactor: update accent color hover effects to Footer
2 parents f5977f1 + 2193852 commit 96c5634

2 files changed

Lines changed: 39 additions & 25 deletions

File tree

frontend/components/shared/Footer.tsx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@ export default function Footer() {
4646
<div className="space-y-3">
4747
<p className="text-sm text-slate-700 dark:text-slate-200">
4848
{t('builtWith')}{' '}
49-
<span className="font-semibold text-blue-600 dark:text-blue-400">
49+
<span
50+
className="font-semibold "
51+
style={{ color: 'var(--accent-primary)' }}
52+
>
5053
DevLovers
5154
</span>{' '}
5255
{t('byCommunity')}
@@ -55,14 +58,14 @@ export default function Footer() {
5558
<p className="text-sm text-slate-500 dark:text-slate-400">
5659
<Link
5760
href="/privacy-policy"
58-
className="hover:text-blue-600 dark:hover:text-blue-400 transition-colors"
61+
className="transition-colors hover:[color:var(--accent-hover)] focus-visible:[color:var(--accent-hover)]"
5962
>
6063
{t('privacyPolicy')}
6164
</Link>
6265
<span className="px-2 opacity-60">|</span>
6366
<Link
6467
href="/terms-of-service"
65-
className="hover:text-blue-600 dark:hover:text-blue-400 transition-colors"
68+
className="transition-colors hover:[color:var(--accent-hover)] focus-visible:[color:var(--accent-hover)]"
6669
>
6770
{t('termsOfService')}
6871
</Link>
@@ -94,11 +97,12 @@ export default function Footer() {
9497
bg-white/40
9598
text-slate-600
9699
transition-all
97-
hover:-translate-y-0.5 hover:text-blue-600 hover:border-blue-300/60
100+
hover:-translate-y-0.5
98101
dark:border-neutral-800/60
99102
dark:bg-neutral-950/30
100103
dark:text-slate-300
101-
dark:hover:text-blue-400 dark:hover:border-blue-500/40
104+
[&:hover]:!text-[var(--accent-primary)]
105+
[&:hover]:!border-[var(--accent-primary)]
102106
"
103107
>
104108
<Icon className="h-5 w-5" />
Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,37 @@
1-
"use client"
1+
'use client';
22

3-
import { useTheme } from "next-themes"
4-
import { Monitor, Sun, Moon } from "lucide-react"
5-
import { motion } from "framer-motion"
6-
import { useEffect, useState } from "react"
3+
import { useTheme } from 'next-themes';
4+
import { Monitor, Sun, Moon } from 'lucide-react';
5+
import { motion } from 'framer-motion';
6+
import { useEffect, useState } from 'react';
77

88
const themes = [
9-
{ value: "system", icon: Monitor, label: "System theme" },
10-
{ value: "light", icon: Sun, label: "Light theme" },
11-
{ value: "dark", icon: Moon, label: "Dark theme" },
12-
] as const
9+
{ value: 'system', icon: Monitor, label: 'System theme' },
10+
{ value: 'light', icon: Sun, label: 'Light theme' },
11+
{ value: 'dark', icon: Moon, label: 'Dark theme' },
12+
] as const;
1313

1414
export function ThemeToggle() {
15-
const { theme, setTheme } = useTheme()
16-
const [mounted, setMounted] = useState(false)
15+
const { theme, setTheme } = useTheme();
16+
const [mounted, setMounted] = useState(false);
1717

1818
useEffect(() => {
19-
setMounted(true)
20-
}, [])
19+
setMounted(true);
20+
}, []);
2121

2222
if (!mounted) {
2323
return (
2424
<div className="flex h-9 items-center gap-1 rounded-full bg-neutral-100 p-1 dark:border dark:border-neutral-800 dark:bg-neutral-950">
2525
{themes.map(({ value, icon: Icon }) => (
26-
<div key={value} className="relative flex h-7 w-7 items-center justify-center rounded-full">
26+
<div
27+
key={value}
28+
className="relative flex h-7 w-7 items-center justify-center rounded-full"
29+
>
2730
<Icon className="h-4 w-4 text-neutral-500 dark:text-neutral-400" />
2831
</div>
2932
))}
3033
</div>
31-
)
34+
);
3235
}
3336

3437
return (
@@ -38,18 +41,25 @@ export function ThemeToggle() {
3841
key={value}
3942
onClick={() => setTheme(value)}
4043
aria-label={label}
41-
className="relative flex h-7 w-7 items-center justify-center rounded-full"
44+
className="theme-toggle-btn relative flex h-7 w-7 items-center justify-center rounded-full"
4245
>
4346
{theme === value && (
4447
<motion.div
4548
layoutId="theme-active"
4649
className="absolute inset-0 rounded-full bg-white shadow-sm dark:bg-neutral-800"
47-
transition={{ type: "spring", stiffness: 400, damping: 30 }}
50+
transition={{ type: 'spring', stiffness: 400, damping: 30 }}
4851
/>
4952
)}
50-
<Icon className="relative z-10 h-4 w-4 text-neutral-500 dark:text-neutral-400" />
53+
<Icon className="relative z-10 h-4 w-4 text-neutral-500 dark:text-neutral-400 transition-colors" />
5154
</button>
5255
))}
56+
57+
<style jsx>{`
58+
.theme-toggle-btn:hover :global(svg),
59+
.theme-toggle-btn:focus-visible :global(svg) {
60+
color: var(--accent-primary);
61+
}
62+
`}</style>
5363
</div>
54-
)
55-
}
64+
);
65+
}

0 commit comments

Comments
 (0)