--- import { Icon } from 'astro-icon/components' import { currencies } from '../constants/currencies' import { serviceVisibilitiesById } from '../constants/serviceVisibility' import { verificationStatusesByValue } from '../constants/verificationStatus' import { cn } from '../lib/cn' import { makeOverallScoreInfo } from '../lib/overallScore' import MyPicture from './MyPicture.astro' import Tooltip from './Tooltip.astro' import type { Prisma } from '@prisma/client' import type { HTMLAttributes } from 'astro/types' type Props = HTMLAttributes<'article'> & { inlineIcons?: boolean withoutLink?: boolean service: Prisma.ServiceGetPayload<{ select: { name: true slug: true description: true overallScore: true privacyScore: true trustScore: true kycLevel: true imageUrl: true verificationStatus: true serviceVisibility: true acceptedCurrencies: true categories: { select: { name: true icon: true } } } }> } const { inlineIcons = false, service: { name = 'Unnamed Service', slug, description, overallScore, privacyScore, trustScore, kycLevel, imageUrl, categories, verificationStatus, serviceVisibility, acceptedCurrencies, }, class: className, withoutLink = false, ...htmlProps } = Astro.props const statusIcon = { ...verificationStatusesByValue, APPROVED: undefined, }[verificationStatus] const Element = withoutLink ? 'div' : 'a' const overallScoreInfo = makeOverallScoreInfo(overallScore) ---

{name}{ statusIcon && ( {[ , verificationStatus === 'VERIFICATION_FAILED' && ( SCAM ), ]} ) }{ serviceVisibility === 'ARCHIVED' && ( ) }

{ categories.map((category) => ( {category.name} )) }

{description}

{overallScoreInfo.formattedScore} KYC  {kycLevel.toLocaleString()}
{ currencies.map((currency) => { const isAccepted = acceptedCurrencies.includes(currency.id) return ( ) }) }