import { ArrowRight } from 'lucide-react' import { toComponent } from '../lib/cms/icon' import { toElevatedGradient, toTextColor } from '../lib/cms/color' import type { Enum_Componentsharedcolor_Value, Enum_Componentsharedicon_Value } from '../graphql/graphql' import type { Maybe } from '../lib/types' export interface CaseCardCms { id: string title?: Maybe description?: Maybe pretitle?: Maybe badge?: Maybe footnote?: Maybe color?: Maybe<{ value?: Maybe }> icon?: Maybe<{ value?: Maybe }> } export interface CasesCmsData { title?: Maybe description?: Maybe cards?: Maybe>> } interface CasesProps { data?: Maybe } export function Cases({ data }: CasesProps) { const title = data?.title ?? '' const description = data?.description ?? '' const cards = (data?.cards ?? []).filter((c): c is CaseCardCms => Boolean(c)) if (!title && !description && cards.length === 0) { return null } return (

Кейсы

{title ?

{title}

: null} {description ?

{description}

: null}
{cards.map((caseItem, index) => { const Icon = toComponent(caseItem.icon?.value) const gradient = toElevatedGradient(caseItem.color?.value) const iconColorClass = toTextColor(caseItem.color?.value) const floatClass = index === 0 ? 'animate-float' : index === 1 ? 'animate-float-delay-1' : 'animate-float-delay-2' return (
{caseItem.badge ? (
{caseItem.badge}
) : null}
{caseItem.pretitle ?
{caseItem.pretitle}
: null} {caseItem.title ?

{caseItem.title}

: null} {caseItem.description ? (

{caseItem.description}

) : null}
{caseItem.footnote ?? ''}
) })}
) }