Skip to content

Commit 2da2c2e

Browse files
committed
Better solutions animation
1 parent 7dd79d8 commit 2da2c2e

2 files changed

Lines changed: 5 additions & 23 deletions

File tree

web/app/components/Header/index.tsx

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -149,17 +149,11 @@ const SolutionCard = ({ item }: { item: SolutionItem }) => {
149149
const isInternal = _startsWith(item.link, '/')
150150

151151
const className =
152-
'group/card relative flex flex-col rounded-xl p-2 ring-1 ring-transparent transition-[box-shadow,background-color] duration-200 ease-out hover:bg-gray-50 hover:ring-gray-200/80 motion-reduce:transition-none dark:hover:bg-slate-800/40 dark:hover:ring-slate-700/60'
152+
'group/card relative flex flex-col rounded-xl p-2 ring-1 ring-transparent transition-[box-shadow,background-color,filter] duration-300 ease-out hover:bg-gray-50 hover:ring-gray-200/80 group-has-[a:hover]/solutions:not-hover:grayscale motion-reduce:transition-none dark:hover:bg-slate-800/40 dark:hover:ring-slate-700/60'
153153

154154
const inner = (
155155
<>
156-
<div
157-
className={cn(
158-
'relative h-28 overflow-hidden rounded-lg bg-gray-100 ring-1 ring-gray-200/70 dark:bg-slate-800 dark:ring-slate-700/60',
159-
'grayscale transition-[filter] duration-500 ease-out group-hover/card:grayscale-0',
160-
'motion-reduce:transition-none',
161-
)}
162-
>
156+
<div className='relative h-28 overflow-hidden rounded-lg bg-gray-100 ring-1 ring-gray-200/70 dark:bg-slate-800 dark:ring-slate-700/60'>
163157
{visual ? (
164158
<>
165159
<img
@@ -174,10 +168,7 @@ const SolutionCard = ({ item }: { item: SolutionItem }) => {
174168
</div>
175169
<h3 className='flex items-start gap-1.5 px-1 pt-3 text-[13px] leading-5 font-semibold text-gray-900 dark:text-gray-50'>
176170
<item.icon
177-
className={cn(
178-
'mt-0.5 size-4 shrink-0 text-gray-400 transition-colors duration-300 dark:text-gray-500',
179-
visual?.accentIcon,
180-
)}
171+
className={cn('mt-0.5 size-4 shrink-0', item.className)}
181172
aria-hidden='true'
182173
weight='duotone'
183174
/>
@@ -309,7 +300,7 @@ const SolutionsMenu = ({ inverted }: { inverted?: boolean }) => {
309300
>
310301
<div className='absolute left-0 z-40 mt-3 w-[min(50rem,calc(100vw-1.5rem))] xl:w-[56rem]'>
311302
<div className='overflow-hidden rounded-2xl bg-white/95 ring-1 ring-gray-200/80 backdrop-blur-md dark:bg-slate-950/95 dark:ring-slate-700/60'>
312-
<div className='grid grid-cols-2 gap-2 p-3 lg:grid-cols-4'>
303+
<div className='group/solutions grid grid-cols-2 gap-2 p-3 lg:grid-cols-4'>
313304
{_map(solutions, (item) => (
314305
<SolutionCard key={item.name} item={item} />
315306
))}

web/app/components/Header/solutionIllustrations.tsx

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { cn } from '~/utils/generic'
44
import routes from '~/utils/routes'
55

66
const Card = ({ children }: { children: ReactNode }) => (
7-
<div className='absolute inset-x-4 top-4 -bottom-2 overflow-hidden rounded-t-lg bg-white p-2.5 ring-1 ring-black/[0.06] dark:bg-slate-900 dark:ring-white/[0.08]'>
7+
<div className='absolute inset-x-4 top-4 -bottom-2 overflow-hidden rounded-t-lg bg-white p-2.5 ring-1 ring-black/[0.06] grayscale transition-[filter] duration-500 ease-out group-hover/card:grayscale-0 motion-reduce:transition-none dark:bg-slate-900 dark:ring-white/[0.08]'>
88
{children}
99
</div>
1010
)
@@ -132,32 +132,23 @@ const CaptchaMockup = () => (
132132
export interface SolutionVisual {
133133
bg: string
134134
Mockup: () => ReactElement
135-
accentIcon: string
136135
}
137136

138137
export const SOLUTION_VISUALS: Record<string, SolutionVisual> = {
139138
[routes.main]: {
140139
bg: '/assets/solutions/analytics.webp',
141140
Mockup: AnalyticsMockup,
142-
accentIcon:
143-
'group-hover/card:text-indigo-500 dark:group-hover/card:text-indigo-400',
144141
},
145142
[routes.performance]: {
146143
bg: '/assets/solutions/performance.webp',
147144
Mockup: PerformanceMockup,
148-
accentIcon:
149-
'group-hover/card:text-amber-500 dark:group-hover/card:text-amber-400',
150145
},
151146
[routes.errorTracking]: {
152147
bg: '/assets/solutions/errors.webp',
153148
Mockup: ErrorsMockup,
154-
accentIcon:
155-
'group-hover/card:text-red-500 dark:group-hover/card:text-red-400',
156149
},
157150
[routes.captchaLanding]: {
158151
bg: '/assets/solutions/captcha.webp',
159152
Mockup: CaptchaMockup,
160-
accentIcon:
161-
'group-hover/card:text-emerald-500 dark:group-hover/card:text-emerald-400',
162153
},
163154
}

0 commit comments

Comments
 (0)