@learncard/react 2.6.75 → 2.6.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"VCDisplayCard2-32304228.js","sources":["../../src/components/svgs/RoundedX.tsx","../../src/components/VCDisplayCard2/FitText.tsx","../../src/components/VCDisplayCard2/InfoBox.tsx","../../src/components/VCDisplayCard2/IssueHistoryBox.tsx","../../src/components/VCDisplayCard2/MediaAttachmentsBox.tsx","../../src/components/VCDisplayCard2/RibbonEnd.tsx","../../src/components/VCDisplayCard2/TruncateTextBox.tsx","../../src/components/VCDisplayCard2/VerificationRow.tsx","../../src/components/VCDisplayCard2/VerificationsBox.tsx","../../src/components/VCDisplayCard2/VC2BackFace.tsx","../../src/components/VCDisplayCard2/VC2FrontFaceInfo.tsx","../../src/components/VCDisplayCard2/VCDisplayCardCategoryType.tsx","../../src/components/VCDisplayCard2/VCIDDisplayFrontFace.tsx","../../src/components/VCDisplayCard2/VCIDDIsplayCard.tsx","../../src/components/VCDisplayCard2/VCDisplayCard2.tsx"],"sourcesContent":["import React from 'react';\n\ntype RoundedXProps = {\n className?: string;\n};\n\nconst RoundedX: React.FC<RoundedXProps> = ({ className = '' }) => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n d=\"M18.75 5.25L5.25 18.75\"\n stroke=\"#18224E\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18.75 18.75L5.25 5.25\"\n stroke=\"#18224E\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n\nexport default RoundedX;\n","import React, { useEffect, useRef } from 'react';\n\ninterface FitTextProps {\n text: string;\n width: string;\n className?: string;\n minFontSize?: number;\n maxFontSize?: number;\n}\n\nconst FitText: React.FC<FitTextProps> = ({\n text,\n width,\n className = '',\n minFontSize = 10,\n maxFontSize = 100,\n}) => {\n const textRef = useRef<HTMLDivElement>(null);\n let animationFrameId: number | null = null;\n\n const adjustFontSize = () => {\n if (textRef.current) {\n const currentFontSize = parseFloat(\n window.getComputedStyle(textRef.current).getPropertyValue('font-size')\n );\n\n // Need to calculate spacing based on nowrap to prevent thrashing\n textRef.current.style.whiteSpace = 'nowrap';\n const parentWidth = (textRef.current.parentNode as any)?.clientWidth;\n const scrollWidth = textRef.current.scrollWidth || textRef.current.offsetWidth;\n\n // Sometimes scrollWidth can temporarily be 0. If so, just try again next frame\n if (scrollWidth === 0) {\n if (animationFrameId !== null) {\n cancelAnimationFrame(animationFrameId);\n }\n\n animationFrameId = requestAnimationFrame(adjustFontSize);\n\n return;\n }\n\n const newFontSize = Math.min(\n Math.max((parentWidth / scrollWidth) * currentFontSize, minFontSize),\n maxFontSize\n );\n\n textRef.current.style.fontSize = `${newFontSize}px`;\n textRef.current.style.whiteSpace = newFontSize === minFontSize ? 'normal' : 'nowrap';\n }\n };\n\n const handleResize = () => {\n if (animationFrameId !== null) {\n cancelAnimationFrame(animationFrameId);\n }\n\n animationFrameId = requestAnimationFrame(adjustFontSize);\n };\n\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n adjustFontSize();\n\n return () => {\n window.removeEventListener('resize', handleResize);\n if (animationFrameId !== null) {\n cancelAnimationFrame(animationFrameId);\n }\n };\n }, [text]);\n\n return (\n <div style={{ width }} className={`text-center ${className}`}>\n <span\n className={`text-[${minFontSize}px] transition-[font-size] whitespace-nowrap`}\n ref={textRef}\n >\n {text}\n </span>\n </div>\n );\n};\n\nexport default FitText;\n","import React from 'react';\n\ntype InfoBoxProps = {\n text: string;\n handleClose: () => void;\n backgroundColor?: string;\n};\n\nconst InfoBox: React.FC<InfoBoxProps> = ({ text, handleClose, backgroundColor = '#6366F1' }) => {\n const bgColorWithOpacity = `${backgroundColor}1F`; // 12% opacity\n return (\n <div\n className=\"info-box p-[10px] rounded-[10px] w-full font-poppins text-[12px] leading[18px]\"\n style={{ backgroundColor: bgColorWithOpacity }}\n >\n {text}{' '}\n <button onClick={handleClose} className=\"text-indigo-500 font-[700] select-none\">\n Close\n </button>\n </div>\n );\n};\n\nexport default InfoBox;\n","import React, { useState } from 'react';\nimport DefaultFace from '../../assets/images/default-face.jpeg';\n\nimport { IssueHistory } from '../../types';\n\ntype SkillsBoxProps = {\n issueHistory: IssueHistory[];\n customIssueHistoryComponent?: React.ReactNode;\n};\n\nconst IssueHistoryBox: React.FC<SkillsBoxProps> = ({\n issueHistory,\n customIssueHistoryComponent,\n}) => {\n let renderIssueHistory = issueHistory?.map(issueItem => {\n return (\n <div\n className=\"flex items-center issue-log-item border-b-[1px] py-[5px] border-grayscale-200 border-solid w-full\"\n key={issueItem?.id}\n >\n <div className=\"profile-thumb-img vc-issuee-image h-[35px] w-[35px] rounded-full overflow-hidden\">\n <img\n className=\"h-full w-full object-cover select-none\"\n src={issueItem?.thumb || DefaultFace}\n alt=\"profile\"\n />\n </div>\n <div className=\"ml-[9px] flex flex-col justify-center\">\n <p className=\"issue-item-name font-montserrat font-semibold text-grayscale-900 text-[14px] \">\n {issueItem?.name}\n </p>\n <p className=\"issue-item-date font-montserrat text-[12px] text-grayscale-600 \">\n {issueItem?.date}\n </p>\n </div>\n </div>\n );\n });\n\n return (\n <div className=\"bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full relative\">\n <h3 className=\"text-[20px] leading-[20px] text-grayscale-900\">Issue Log</h3>\n {!customIssueHistoryComponent ? renderIssueHistory : customIssueHistoryComponent}\n </div>\n );\n};\n\nexport default IssueHistoryBox;\n","import React, { useEffect, useState } from 'react';\nimport prettyBytes from 'pretty-bytes';\n\nimport Camera from '../svgs/Camera';\nimport LinkIcon from '../svgs/LinkIcon';\nimport VideoIcon from '../svgs/VideoIcon';\nimport GenericDocumentIcon from '../svgs/GenericDocumentIcon';\n\nimport { Attachment, MediaMetadata, VideoMetadata } from '../../types';\nimport { getBaseUrl } from '../../helpers/url.helpers';\nimport { Lightbox, LightboxItem } from '../Lightbox';\n\ntype MediaAttachmentsBoxProps = {\n attachments: Attachment[];\n getFileMetadata?: (url: string) => MediaMetadata;\n getVideoMetadata?: (url: string) => VideoMetadata;\n onMediaAttachmentClick?: (url: string, type: 'photo' | 'document' | 'video' | 'link') => void;\n enableLightbox?: boolean;\n};\n\nconst defaultGetFileMetadata = async (url: string) => {\n const isFilestack = url.includes('filestack');\n if (!isFilestack) return;\n\n const urlParams = url.split('.com/')[1]?.split('/');\n if (!urlParams) return;\n const handle = urlParams[urlParams.length - 1];\n\n let fetchFailed = false;\n const data = await fetch(`https://cdn.filestackcontent.com/${handle}/metadata`)\n .then(res => res.json())\n .catch(() => (fetchFailed = true));\n\n if (fetchFailed) return;\n\n const fileExtension = data.filename.split('.')[1];\n\n return {\n fileExtension,\n sizeInBytes: data.size,\n numberOfPages: undefined,\n };\n};\n\nconst defaultGetVideoMetadata = async (url: string) => {\n const isYoutube = url.includes('youtube');\n if (!isYoutube) return;\n\n const metadataUrl = `http://youtube.com/oembed?url=${url}&format=json`;\n\n let fetchFailed = false;\n const metadata = await fetch(metadataUrl)\n .then(res => res.json())\n .catch(() => (fetchFailed = true));\n\n if (fetchFailed) return;\n\n return {\n title: metadata.title,\n imageUrl: metadata.thumbnail_url,\n videoLength: '', // TODO figure out how to get this\n };\n};\n\nconst MediaAttachmentsBox: React.FC<MediaAttachmentsBoxProps> = ({\n attachments,\n getFileMetadata = defaultGetFileMetadata,\n getVideoMetadata = defaultGetVideoMetadata,\n onMediaAttachmentClick,\n enableLightbox = false,\n}) => {\n const [documentMetadata, setDocumentMetadata] = useState<{\n [documentUrl: string]: MediaMetadata | undefined;\n }>({});\n const [videoMetadata, setVideoMetadata] = useState<{\n [videoUrl: string]: VideoMetadata | undefined;\n }>({});\n\n const mediaAttachments: Attachment[] = [];\n const documentsAndLinks: Attachment[] = [];\n attachments.forEach(a => {\n switch (a.type) {\n case 'document':\n case 'link':\n documentsAndLinks.push(a);\n break;\n case 'photo':\n case 'video':\n mediaAttachments.push(a);\n break;\n default:\n break;\n }\n });\n\n useEffect(() => {\n const getMetadata = async (attachments: Attachment[]): Promise<any> => {\n const docMetadata: { [docUrl: string]: MediaMetadata | undefined } = {};\n const videoMetadata: { [videoUrl: string]: VideoMetadata | undefined } = {};\n await Promise.all(\n attachments.map(async attachment => {\n if (attachment.type === 'document') {\n docMetadata[attachment.url] = await getFileMetadata(attachment.url);\n } else if (attachment.type === 'video') {\n videoMetadata[attachment.url] = await getVideoMetadata(attachment.url);\n }\n })\n );\n\n setVideoMetadata(videoMetadata);\n setDocumentMetadata(docMetadata);\n };\n\n const videos = attachments.filter(a => a.type === 'video');\n getMetadata([...documentsAndLinks, ...videos]);\n }, []);\n\n const [currentLightboxUrl, setCurrentLightboxUrl] = useState<string | undefined>(undefined);\n const lightboxItems = mediaAttachments.filter(\n a => a.type === 'photo' || a.type === 'video'\n ) as LightboxItem[];\n const handleMediaAttachmentClick = (\n url: string,\n type: 'photo' | 'document' | 'video' | 'link'\n ) => {\n if (type === 'photo' || type === 'video') {\n setCurrentLightboxUrl(url);\n }\n\n onMediaAttachmentClick?.(url, type);\n };\n\n return (\n <div className=\"media-attachments-box bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full\">\n <h3 className=\"text-[20px] leading-[20px] text-grayscale-900\">Media Attachments</h3>\n {mediaAttachments.length > 0 && (\n <div className=\"flex gap-[5px] justify-between flex-wrap w-full\">\n {enableLightbox && (\n <Lightbox\n items={lightboxItems}\n currentUrl={currentLightboxUrl}\n setCurrentUrl={setCurrentLightboxUrl}\n />\n )}\n {mediaAttachments.map((media, index) => {\n let innerContent: React.ReactNode;\n let title = media.title;\n\n if (media.type === 'video') {\n const metadata = videoMetadata[media.url];\n title = (title || metadata?.title) ?? '';\n const baseUrl = getBaseUrl(media.url);\n const iconTop = title || baseUrl;\n\n innerContent = (\n <div\n className=\"absolute top-0 left-0 right-0 bottom-0 bg-cover bg-no-repeat font-poppins text-white text-[12px] font-[400] leading-[17px] flex flex-col justify-end items-start p-[10px] text-left bg-rose-600 rounded-[15px]\"\n style={{\n backgroundImage: metadata?.imageUrl\n ? `linear-gradient(180deg, rgba(0, 0, 0, 0) 44.20%, rgba(0, 0, 0, 0.6) 69%), url(${\n metadata?.imageUrl ?? ''\n })`\n : undefined,\n }}\n >\n {!metadata?.imageUrl && (\n <VideoIcon size=\"60\" className=\"m-auto\" />\n )}\n <div\n className={`absolute ${\n iconTop ? 'top-[10px]' : 'bottom-[10px]'\n } left-[10px] z-10 flex items-center gap-[5px]`}\n >\n {metadata?.imageUrl && <VideoIcon />}\n {metadata?.videoLength && (\n <span className=\"leading-[23px]\">\n {metadata.videoLength}\n </span>\n )}\n </div>\n {baseUrl && <span className=\"font-[600]\">{baseUrl}</span>}\n {title && <span className=\"line-clamp-2\">{title}</span>}\n </div>\n );\n } else {\n innerContent = (\n <div className=\"absolute top-0 left-0 right-0 bottom-0 h-min\">\n <img className=\"rounded-[15px]\" src={media.url} />\n <Camera className=\"relative bottom-[30px] left-[10px] z-10\" />\n </div>\n );\n }\n\n const className = `media-attachment ${media.type} w-[49%] pt-[49%] overflow-hidden relative`;\n\n if (onMediaAttachmentClick || enableLightbox) {\n return (\n <button\n key={index}\n className={className}\n onClick={() =>\n handleMediaAttachmentClick(media.url, media.type)\n }\n >\n {innerContent}\n </button>\n );\n }\n\n return (\n <div key={index} className={className}>\n {innerContent}\n </div>\n );\n })}\n </div>\n )}\n {documentsAndLinks.length > 0 && (\n <div className=\"w-full flex flex-col gap-[5px]\">\n {documentsAndLinks.map((docOrLink, index) => {\n const metadata =\n docOrLink.type === 'document'\n ? documentMetadata[docOrLink.url]\n : undefined;\n const { fileExtension, sizeInBytes, numberOfPages } = metadata ?? {};\n\n let baseUrl = '';\n if (docOrLink.type === 'link') {\n baseUrl = getBaseUrl(docOrLink.url);\n }\n\n const innerContent = (\n <div className=\"flex flex-col gap-[5px]\">\n <div className=\"flex gap-[5px] items-center\">\n {docOrLink.type === 'document' && (\n <GenericDocumentIcon className=\"shrink-0\" />\n )}\n {docOrLink.type === 'link' && <LinkIcon className=\"shrink-0\" />}\n <span className=\"text-grayscale-900 font-[400]\">\n {docOrLink.title ?? 'No title'}\n </span>\n </div>\n {docOrLink.type === 'document' && metadata && (\n <a\n href={docOrLink.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-grayscale-600 font-[600] px-[5px] hover:underline\"\n >\n {fileExtension && (\n <span className=\"uppercase\">{fileExtension}</span>\n )}\n {fileExtension && (numberOfPages || sizeInBytes) && ' • '}\n {numberOfPages && (\n <span>\n {numberOfPages} page{numberOfPages === 1 ? '' : 's'}\n </span>\n )}\n {numberOfPages && sizeInBytes && ' • '}\n {sizeInBytes && <span>{prettyBytes(sizeInBytes)}</span>}\n </a>\n )}\n {docOrLink.type === 'link' && (\n <a\n href={docOrLink.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-indigo-500 font-[600] px-[5px] hover:underline\"\n >\n {baseUrl}\n </a>\n )}\n </div>\n );\n\n const className = `row-attachment ${docOrLink.type} bg-grayscale-100 rounded-[15px] p-[10px] w-full font-poppins text-[12px] leading-[18px] tracking-[-0.33px] text-left`;\n\n if (onMediaAttachmentClick) {\n return (\n <button\n key={index}\n className={className}\n onClick={() =>\n handleMediaAttachmentClick(docOrLink.url, docOrLink.type)\n }\n >\n {innerContent}\n </button>\n );\n }\n\n return (\n <div key={index} className={className}>\n {innerContent}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\nexport default MediaAttachmentsBox;\n","import React from 'react';\n\nconst RibbonEnd: React.FC<{ side: 'left' | 'right'; className?: string; height?: string }> = ({\n side,\n className = '',\n height = '64',\n}) => {\n const halfHeight = parseInt(height) / 2;\n return (\n <svg\n className={className}\n width=\"30\"\n height={height}\n viewBox={`0 0 30 ${height}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ transform: `scaleX(${side === 'left' ? '1' : '-1'})` }}\n >\n <g filter=\"url(#filter0_d_4620_22659)\">\n <path d={`M0 0H30V${height}H0L6.36364 ${halfHeight}L0 0Z`} fill=\"white\" />\n <path\n d={`M3.08593 2.5H27.5V${height}H3.08593L8.80922 ${halfHeight}L8.91926 30L8.80922 29.4812L3.08593 2.5Z`}\n stroke=\"#EEF2FF\"\n strokeWidth=\"5\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_4620_22659\"\n x=\"0\"\n y=\"0\"\n width=\"30\"\n height={height}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"4\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_4620_22659\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_4620_22659\"\n result=\"shape\"\n />\n </filter>\n </defs>\n </svg>\n );\n};\n\nexport default RibbonEnd;\n","import React, { useState } from 'react';\n\ntype TruncateTextBoxProps = {\n headerText?: string;\n headerClassName?: string;\n\n // the text to be truncated if it's too long\n text: string;\n\n truncateThreshold?: number;\n\n // extra things to put at the bottom of the box\n children?: React.ReactNode;\n className?: string;\n\n // container styles\n containerClassName?: string;\n // text styles\n textClassName?: string;\n};\n\nconst TruncateTextBox: React.FC<TruncateTextBoxProps> = ({\n headerText = '',\n headerClassName = '',\n text,\n truncateThreshold = 132,\n children,\n className = 'truncate-text-box',\n containerClassName = '',\n textClassName = '',\n}) => {\n const needsTruncate = text?.length > truncateThreshold;\n const [showFullText, setShowFullText] = useState(false);\n const truncated = needsTruncate && !showFullText;\n\n const displayText = truncated ? text.substring(0, truncateThreshold) : text;\n\n const defaultStyles = 'shadow-bottom px-[15px] py-[20px]';\n\n return (\n <div\n className={`${className} ${defaultStyles} bg-white flex flex-col items-start gap-[10px] rounded-[20px] w-full ${containerClassName}`}\n >\n {headerText && (\n <h3 className={`${headerClassName} text-[20px] leading-[20px] text-grayscale-900`}>\n {headerText}\n </h3>\n )}\n\n <p\n className={`text-[12px] text-grayscale-700 leading-[18px] font-poppins font-[400] mb-0 ${textClassName}`}\n >\n {displayText}\n {truncated && (\n <>\n ...{' '}\n <button\n className=\"text-indigo-500 font-[700]\"\n onClick={() => setShowFullText(true)}\n >\n More\n </button>\n </>\n )}\n {needsTruncate && showFullText && (\n <>\n {' '}\n <button\n className=\"text-indigo-500 font-[700]\"\n onClick={() => setShowFullText(false)}\n >\n Close\n </button>\n </>\n )}\n </p>\n\n {children}\n </div>\n );\n};\n\nexport default TruncateTextBox;\n","import React, { useState } from 'react';\nimport { VerificationItem, VerificationStatusEnum } from '@learncard/types';\nimport { getColorForVerificationStatus } from '../../helpers/credential.helpers';\n\nimport InfoBox from './InfoBox';\nimport InfoIcon from '../svgs/InfoIcon';\nimport AcuteCheckmark from '../svgs/AcuteCheckmark';\nimport ExclamationPoint from '../svgs/ExclamationPoint';\nimport X from '../svgs/X';\nimport { capitalize } from '../../helpers/string.helpers';\n\ntype VerificationRowProps = {\n verification: VerificationItem;\n};\n\nconst VerificationRow: React.FC<VerificationRowProps> = ({ verification }) => {\n const [showInfo, setShowInfo] = useState(false);\n const statusColor = getColorForVerificationStatus(verification.status);\n\n const getIcon = () => {\n switch (verification.status) {\n case VerificationStatusEnum.Success:\n return <AcuteCheckmark />;\n case VerificationStatusEnum.Error:\n return <ExclamationPoint />;\n case VerificationStatusEnum.Failed:\n return <X />;\n }\n };\n\n let primaryText = verification.check\n ? `${verification.check}: ${verification.message}`\n : verification.message;\n if (verification.status === VerificationStatusEnum.Failed) {\n primaryText = verification.message ?? verification.details ?? '';\n }\n primaryText = capitalize(primaryText);\n\n const infoText = ''; // if we want certain verifications to have extra explanation, we can set this variable\n\n return (\n <div className=\"verification-row flex flex-col gap-[5px] font-poppins border-b-[1px] border-grayscale-200 border-solid w-full py-[10px] last:border-0 last:pb-0\">\n <span\n className=\"font-[700] text-[11px] leading-[16px] uppercase flex items-center gap-[3px] select-none\"\n style={{ color: statusColor }}\n >\n {getIcon()}\n {verification.status}\n {infoText && (\n <button className=\"ml-auto\" onClick={() => setShowInfo(!showInfo)}>\n <InfoIcon color={statusColor} />\n </button>\n )}\n </span>\n {showInfo && infoText && (\n <InfoBox\n text={infoText}\n handleClose={() => setShowInfo(false)}\n backgroundColor={statusColor}\n />\n )}\n <span className=\"font-[400] text-[14px] leading-[21px] text-grayscale-900\">\n {primaryText}\n </span>\n </div>\n );\n};\n\nexport default VerificationRow;\n","import React, { useState } from 'react';\n\nimport VerificationRow from './VerificationRow';\nimport InfoIcon from '../svgs/InfoIcon';\nimport InfoBox from './InfoBox';\n\nimport { VerificationItem } from '@learncard/types';\n\ntype VerificationsBoxProps = {\n verificationItems: VerificationItem[];\n};\n\nconst VerificationsBox: React.FC<VerificationsBoxProps> = ({ verificationItems }) => {\n const [showInfo, setShowInfo] = useState(false);\n\n return (\n <div className=\"verifications-box bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full relative\">\n <h3 className=\"text-[20px] leading-[20px] text-grayscale-900\">\n Credential Verifications\n </h3>\n <button\n className=\"absolute top-[17px] right-[17px]\"\n onClick={() => setShowInfo(!showInfo)}\n >\n <InfoIcon color={showInfo ? '#6366F1' : undefined} />\n </button>\n {showInfo && (\n <InfoBox\n text=\"Credential verifications check the cryptographic proof of digital credentials to ensure their authenticity and accuracy.\"\n handleClose={() => setShowInfo(false)}\n />\n )}\n\n {verificationItems.map((verification, index) => (\n <VerificationRow key={index} verification={verification} />\n ))}\n </div>\n );\n};\n\nexport default VerificationsBox;\n","import React from 'react';\nimport { format } from 'date-fns';\n\nimport MediaAttachmentsBox from './MediaAttachmentsBox';\nimport TruncateTextBox from './TruncateTextBox';\nimport SkillsBox from './SkillsBox';\nimport IssueHistoryBox from './IssueHistoryBox';\nimport { VC, VerificationItem } from '@learncard/types';\nimport VerificationsBox from './VerificationsBox';\nimport AlignmentsBox from '../CertificateDisplayCard/AlignmentsBox';\nimport {\n BoostAchievementCredential,\n IssueHistory,\n MediaMetadata,\n VideoMetadata,\n} from '../../types';\nimport LeftArrow from '../svgs/LeftArrow';\n\n/*\nconst defaultTagsToSkills = (tags: string[]) => {\n const skillsObj: { [skill: string]: string[] } = {};\n tags.forEach(tag => {\n skillsObj[tag] = [];\n });\n};\n*/\n\ntype VC2BackFaceProps = {\n credential: VC | BoostAchievementCredential;\n verificationItems: VerificationItem[];\n // convertTagsToSkills?: (tags: string[]) => { [skill: string]: string[] };\n getFileMetadata?: (url: string) => MediaMetadata;\n getVideoMetadata?: (url: string) => VideoMetadata;\n onMediaAttachmentClick?: (url: string, type: 'photo' | 'document' | 'video' | 'link') => void;\n issueHistory?: IssueHistory[];\n showBackButton?: boolean;\n showFrontFace: () => void;\n customDescription?: React.ReactNode;\n customCriteria?: React.ReactNode;\n customSkillsComponent?: React.ReactNode;\n customIssueHistoryComponent?: React.ReactNode;\n enableLightbox?: boolean;\n};\n\nconst VC2BackFace: React.FC<VC2BackFaceProps> = ({\n credential,\n verificationItems,\n // convertTagsToSkills = defaultTagsToSkills,\n getFileMetadata,\n getVideoMetadata,\n onMediaAttachmentClick,\n issueHistory,\n showBackButton,\n showFrontFace,\n customDescription,\n customCriteria,\n customSkillsComponent,\n customIssueHistoryComponent,\n enableLightbox,\n}) => {\n const expiration = credential.expirationDate\n ? format(new Date(credential.expirationDate), 'MMM dd, yyyy')\n : undefined;\n\n const isExpired =\n credential.expirationDate &&\n Number(new Date(credential.expirationDate)) < Number(new Date());\n\n const achievement =\n 'achievement' in credential.credentialSubject\n ? credential.credentialSubject.achievement\n : undefined;\n const criteria = achievement?.criteria?.narrative;\n const description = achievement?.description;\n const alignment = achievement?.alignment;\n\n /* \n const tags = credential.credentialSubject.achievement?.tag;\n const skillsObject = tags && tags.length > 0 ? convertTagsToSkills(tags) : undefined;\n */\n\n return (\n <section className=\"vc-back-face flex flex-col gap-[20px] w-full px-[15px] pb-[25px]\">\n {showBackButton && (\n <div className=\"w-full\">\n <button\n className=\"vc-card-back-button rounded-full h-[50px] px-[15px] flex items-center justify-center gap-[5px] z-50 text-[30px] text-white select-none\"\n onClick={showFrontFace}\n >\n <LeftArrow className=\"text-white\" size=\"25\" />\n Details\n </button>\n </div>\n )}\n\n {customDescription && (\n <TruncateTextBox headerText=\"About\" text={description} className=\"description-box\">\n {customDescription}\n </TruncateTextBox>\n )}\n {!customDescription && (description || expiration) && (\n <TruncateTextBox headerText=\"About\" text={description} className=\"description-box\">\n {expiration && (\n <p className=\"text-grayscale-800 font-poppins font-[600] text-[12px] leading-[18px] mb-0\">\n Expire{isExpired ? 'd' : 's'} on {expiration}\n </p>\n )}\n </TruncateTextBox>\n )}\n\n {customCriteria && (\n <TruncateTextBox\n headerText=\"Criteria\"\n text={description}\n className=\"description-box\"\n >\n {customCriteria}\n </TruncateTextBox>\n )}\n {!customCriteria && criteria && (\n <TruncateTextBox headerText=\"Criteria\" text={criteria} className=\"criteria-box\" />\n )}\n {(credential.skills?.length ?? 0) > 0 &&\n (customSkillsComponent ? (\n customSkillsComponent\n ) : (\n <SkillsBox skills={credential.skills ?? []} />\n ))}\n\n {issueHistory && issueHistory?.length > 0 && (\n <IssueHistoryBox\n issueHistory={issueHistory}\n customIssueHistoryComponent={customIssueHistoryComponent}\n />\n )}\n\n {credential.attachments && credential.attachments.length > 0 && (\n <MediaAttachmentsBox\n attachments={credential.attachments}\n getFileMetadata={getFileMetadata}\n getVideoMetadata={getVideoMetadata}\n onMediaAttachmentClick={onMediaAttachmentClick}\n enableLightbox={enableLightbox}\n />\n )}\n {/* {credential.notes && <TruncateTextBox headerText=\"Notes\" text={credential.notes} />} */}\n\n {alignment && <AlignmentsBox alignment={alignment} style=\"boost\" />}\n\n {verificationItems && verificationItems.length > 0 && (\n <VerificationsBox verificationItems={verificationItems} />\n )}\n </section>\n );\n};\n\nexport default VC2BackFace;\n","import React from 'react';\n\nimport DefaultFace from '../../assets/images/default-face.jpeg';\n\nimport { getImageFromProfile, getNameFromProfile } from '../../helpers/credential.helpers';\nimport { truncateWithEllipsis } from '../../helpers/string.helpers';\nimport { Profile } from '@learncard/types';\n\ntype VC2FrontFaceInfoProps = {\n issuee: Profile | string;\n issuer: Profile | string;\n title: string;\n subjectDID?: string | undefined;\n subjectImageComponent?: React.ReactNode;\n issuerImageComponent?: React.ReactNode;\n createdAt: string;\n imageUrl?: string;\n customBodyCardComponent?: React.ReactNode;\n customThumbComponent?: React.ReactNode;\n};\n\nconst VC2FrontFaceInfo: React.FC<VC2FrontFaceInfoProps> = ({\n issuee,\n issuer,\n subjectDID,\n subjectImageComponent,\n issuerImageComponent,\n customBodyCardComponent,\n createdAt,\n imageUrl,\n customThumbComponent,\n}) => {\n const issuerName = truncateWithEllipsis(getNameFromProfile(issuer ?? ''), 25);\n const issueeName = truncateWithEllipsis(getNameFromProfile(issuee ?? ''), 25);\n const issuerImage = getImageFromProfile(issuer ?? '');\n const issueeImage = getImageFromProfile(issuee ?? '');\n\n const getImageElement = (\n imageUrl: string,\n alt: string,\n overrideComponent: React.ReactNode | undefined\n ) => {\n if (overrideComponent) return overrideComponent;\n\n return (\n <img\n className=\"h-full w-full object-cover select-none\"\n src={imageUrl || DefaultFace}\n alt={alt}\n />\n );\n };\n\n const issueeImageEl: React.ReactNode = getImageElement(\n issueeImage,\n 'Issuee image',\n subjectImageComponent\n );\n const issuerImageEl: React.ReactNode = getImageElement(\n issuerImage,\n 'Issuer image',\n issuerImageComponent\n );\n\n return (\n <section className=\"vc-front-face w-full px-[15px] flex flex-col items-center gap-[15px]\">\n {imageUrl && !customThumbComponent && (\n <img className=\"vc-front-image h-[130px] w-[130px] rounded-[10px]\" src={imageUrl} />\n )}\n\n {customThumbComponent && customThumbComponent}\n <div className=\"vc-issue-info-box bg-white flex flex-col items-center gap-[5px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full\">\n {customBodyCardComponent && customBodyCardComponent}\n\n {!customBodyCardComponent && (\n <>\n <h3 className=\"text-[27px] flex flex-col text-center leading-[130%] text-grayscale-900 capitalize\">\n {issueeName}\n {subjectDID && (\n <span className=\"text-[12px] text-grayscale-700 leading-[18px] font-poppins font-[400] m-0 p-0 normal-case\">\n {subjectDID}\n </span>\n )}\n </h3>\n <div className=\"relative\">\n <div className=\"vc-issuee-image h-[60px] w-[60px] rounded-full overflow-hidden\">\n {issueeImageEl}\n </div>\n <div className=\"vc-issuer-image h-[30px] w-[30px] rounded-full overflow-hidden absolute bottom-[-12px] right-[-12px]\">\n {issuerImageEl}\n </div>\n </div>\n <div className=\"vc-issue-details mt-[10px] flex flex-col items-center font-montserrat text-[14px] leading-[20px]\">\n <span className=\"created-at text-grayscale-700\">{createdAt}</span>\n <span className=\"issued-by text-grayscale-900 font-[500]\">\n by <strong className=\"font-[700]\">{issuerName}</strong>\n </span>\n </div>\n </>\n )}\n </div>\n </section>\n );\n};\n\nexport default VC2FrontFaceInfo;\n","import React from 'react';\nimport { getCategoryColor } from '../../helpers/credential.helpers';\nimport { LCCategoryEnum } from '../../types';\n\nconst VCDisplayCardCategoryType: React.FC<{ categoryType?: LCCategoryEnum }> = ({\n categoryType = LCCategoryEnum.achievement,\n}) => {\n const categoryColor = getCategoryColor(categoryType);\n\n return (\n <span\n className={`uppercase font-poppins text-[12px] font-[600] leading-[12px] select-none text-${categoryColor}`}\n >\n {categoryType}\n </span>\n );\n};\n\nexport default VCDisplayCardCategoryType;\n","import React from 'react';\n\nimport IDIcon from '../svgs/IDIcon';\nimport IDSleeve from '../../assets/images/id-sleeve.png';\nimport QRCodeIcon from '../svgs/QRCodeIcon';\nimport UnknownVerifierBadge from '../svgs/UnknownVerifierBadge';\nimport VerifiedBadge from '../svgs/VerifiedBadge';\nimport PersonBadge from '../svgs/PersonBadge';\nimport RedFlag from '../svgs/RedFlag';\n\nimport { getInfoFromCredential } from '../../helpers/credential.helpers';\n\nimport { VC } from '@learncard/types';\nimport { BoostAchievementCredential } from '../../types';\nimport TruncateTextBox from './TruncateTextBox';\n\ntype VCIDDisplayFrontFaceProps = {\n isFront: boolean;\n setIsFront: (value: boolean) => void;\n showDetailsBtn?: boolean;\n credential: VC | BoostAchievementCredential;\n trustedAppRegistry?: any[];\n customThumbComponent?: React.ReactNode;\n hideQRCode?: boolean;\n qrCodeOnClick?: () => void;\n customIDDescription?: React.ReactNode;\n};\n\nconst VERIFIER_STATES = {\n selfVerified: 'Self Verified',\n trustedVerifier: 'Trusted Verifier',\n unknownVerifier: 'Unknown Verifier',\n untrustedVerifier: 'Untrusted Verifier',\n} as const;\ntype VerifierState = (typeof VERIFIER_STATES)[keyof typeof VERIFIER_STATES];\n\nconst VCIDDisplayFrontFace: React.FC<VCIDDisplayFrontFaceProps> = ({\n isFront,\n setIsFront,\n showDetailsBtn,\n credential,\n trustedAppRegistry,\n customThumbComponent,\n hideQRCode = false,\n qrCodeOnClick,\n customIDDescription,\n}) => {\n const { credentialSubject } = getInfoFromCredential(credential, 'MMM dd, yyyy', {\n uppercaseDate: false,\n });\n\n const issuerDid =\n typeof credential.issuer === 'string' ? credential.issuer : credential.issuer.id;\n\n let verifierState: VerifierState;\n if (credentialSubject?.id === issuerDid && issuerDid && issuerDid !== 'did:example:123') {\n // the extra \"&& issuerDid\" is so that the credential preview doesn't say \"Self Verified\"\n // the did:example:123 condition is so that we don't show this status from the Manage Boosts tab\n verifierState = VERIFIER_STATES.selfVerified;\n } else {\n const appRegistryEntry = trustedAppRegistry?.find(\n registryEntry => registryEntry.did === issuerDid\n );\n\n if (appRegistryEntry) {\n verifierState = appRegistryEntry.isTrusted\n ? VERIFIER_STATES.trustedVerifier\n : VERIFIER_STATES.untrustedVerifier;\n } else {\n verifierState = VERIFIER_STATES.unknownVerifier;\n }\n }\n const isSelfVerified = verifierState === VERIFIER_STATES.selfVerified;\n\n const achievement =\n 'achievement' in credential?.credentialSubject\n ? credential?.credentialSubject?.achievement\n : undefined;\n const description = achievement?.description;\n\n return (\n <section className=\"vc-front-face w-full flex flex-col items-center gap-[15px]\">\n {/* <div className=\"w-[380px] h-[211px] bg-red-300\" /> */}\n\n {customThumbComponent && customThumbComponent}\n\n <div className=\"text-white w-full flex items-center justify-center font-poppins\">\n <IDIcon className=\"text-white mr-1\" /> ID\n </div>\n\n <div className=\"w-full relative\">\n {!hideQRCode && (\n <button\n onClick={() => qrCodeOnClick?.()}\n className=\"text-grayscale-900 bg-white rounded-full p-[10px] absolute top-[-10px] right-[45%]\"\n >\n <QRCodeIcon className=\"text-grayscale-900 \" />\n </button>\n )}\n <img src={IDSleeve} alt=\"id-sleeve\" className=\"w-full object-cover\" />\n </div>\n\n <div className=\"w-full bg-white relative mt-[-70px] px-6 pb-4 pt-4\">\n {description && !customIDDescription && (\n <>\n <TruncateTextBox\n text={description}\n className=\"description-box\"\n containerClassName=\"!p-0 !shadow-none !text-center !w-full\"\n textClassName=\"!font-poppins !text-base !text-grayscale-700 !text-center !w-full\"\n truncateThreshold={204}\n />\n </>\n )}\n\n {customIDDescription && customIDDescription}\n\n {isFront && showDetailsBtn && (\n <button\n type=\"button\"\n className=\"vc-toggle-side-button text-white shadow-bottom bg-[#00000099] px-[30px] py-[8px] rounded-[40px] text-[28px] tracking-[0.75px] uppercase leading-[28px] mt-[25px] w-fit select-none\"\n onClick={() => setIsFront(!isFront)}\n >\n Details\n </button>\n )}\n\n <div className=\"w-full flex items-center justify-center mt-4\">\n <div className=\"h-[2px] w-full bg-gray-200\" />\n </div>\n\n <div className=\"w-full flex items-center justify-center mt-2\">\n {isSelfVerified && (\n <span className=\"uppercase font-poppins text-base font-[500] text-green-dark flex gap-[3px] items-center\">\n <PersonBadge className=\"w-[20px] h-[20px]\" />\n Self Verified\n </span>\n )}\n {verifierState === VERIFIER_STATES.trustedVerifier && (\n <span className=\"uppercase font-poppins text-base font-[500] text-blue-light flex gap-[3px] items-center\">\n <VerifiedBadge className=\"w-[20px] h-[20px]\" />\n Trusted Verifier\n </span>\n )}\n {verifierState === VERIFIER_STATES.unknownVerifier && (\n <span className=\"uppercase font-poppins text-base font-[500] text-orange-500 flex gap-[3px] items-center\">\n <UnknownVerifierBadge className=\"w-[20px] h-[20px]\" />\n Unknown Verifier\n </span>\n )}\n {verifierState === VERIFIER_STATES.untrustedVerifier && (\n <span className=\"uppercase font-poppins text-base font-[500] text-red-mastercard flex gap-[3px] items-center\">\n <RedFlag className=\"w-[20px] h-[20px]\" />\n Untrusted Verifier\n </span>\n )}\n </div>\n </div>\n </section>\n );\n};\n\nexport default VCIDDisplayFrontFace;\n","import React, { useState } from 'react';\nimport { Flipper, Flipped } from 'react-flip-toolkit';\n\nimport VC2BackFace from './VC2BackFace';\nimport VCIDDisplayFrontFace from './VCIDDisplayFrontFace';\n\nimport {\n BoostAchievementCredential,\n IssueHistory,\n MediaMetadata,\n VideoMetadata,\n} from '../../types';\nimport { VC, VerificationItem } from '@learncard/types';\n\nexport type VCIDDisplayCardProps = {\n credential: VC | BoostAchievementCredential;\n verificationItems: VerificationItem[];\n getFileMetadata?: (url: string) => MediaMetadata;\n getVideoMetadata?: (url: string) => VideoMetadata;\n onMediaAttachmentClick?: (url: string, type: 'photo' | 'document' | 'video' | 'link') => void;\n customThumbComponent?: React.ReactNode;\n customDescription?: React.ReactNode;\n customCriteria?: React.ReactNode;\n customIssueHistoryComponent?: React.ReactNode;\n issueHistory?: IssueHistory[];\n showBackButton?: boolean;\n enableLightbox?: boolean;\n trustedAppRegistry?: any[];\n customSkillsComponent?: React.ReactNode;\n isFrontOverride?: boolean;\n setIsFrontOverride?: (value: boolean) => void;\n hideNavButtons?: boolean;\n hideQRCode?: boolean;\n qrCodeOnClick?: () => void;\n showDetailsBtn?: boolean;\n customIDDescription?: React.ReactNode;\n hideGradientBackground?: boolean;\n};\n\nexport const VCIDDisplayCard: React.FC<VCIDDisplayCardProps> = ({\n credential,\n verificationItems,\n getFileMetadata,\n getVideoMetadata,\n onMediaAttachmentClick,\n customThumbComponent,\n customCriteria,\n customDescription,\n customIssueHistoryComponent,\n issueHistory,\n showBackButton = true,\n enableLightbox,\n trustedAppRegistry,\n customSkillsComponent,\n isFrontOverride,\n setIsFrontOverride,\n hideNavButtons,\n hideQRCode = false,\n qrCodeOnClick,\n showDetailsBtn = false,\n customIDDescription,\n hideGradientBackground = false,\n}) => {\n const [_isFront, _setIsFront] = useState<boolean>(isFrontOverride ?? true);\n const isFront = isFrontOverride ?? _isFront;\n const setIsFront = setIsFrontOverride ?? _setIsFront;\n\n let backgroundStyle = {\n backgroundColor: `linear-gradient(180deg, rgba(24,34,78,1) ${\n !isFront && hideGradientBackground ? '100%' : '25%'\n }, rgba(139,145,167,1) 100%)`,\n backgroundImage: `linear-gradient(180deg, rgba(24,34,78,1) ${\n !isFront && hideGradientBackground ? '100%' : '25%'\n }, rgba(139,145,167,1) 100%)`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundAttachment: 'fixed',\n };\n\n return (\n <Flipper className=\"w-full\" flipKey={isFront}>\n <Flipped flipId=\"card\">\n <section\n className={`vc-display-card font-mouse flex flex-col items-center border-solid border-white rounded-[30px] z-10 max-w-[400px] relative bg-white shadow-3xl ${\n isFront ? '' : 'min-h-[800px]'\n }`}\n >\n <div\n className=\"relative vc-card-content-container flex flex-col items-center grow min-h-0 w-full rounded-t-[30px] rounded-b-[30px] overflow-hidden\"\n style={backgroundStyle}\n >\n <Flipped flipId=\"scroll-container\">\n <div className=\"vc-card-content-scroll-container w-full min-h-full flex flex-col justify-start items-center rounded-t-[30px] rounded-b-[30px] scrollbar-hide pt-[20px]\">\n {isFront && (\n <Flipped flipId=\"face\">\n <VCIDDisplayFrontFace\n isFront={_isFront}\n setIsFront={setIsFront}\n showDetailsBtn={showDetailsBtn}\n customThumbComponent={customThumbComponent}\n credential={credential}\n trustedAppRegistry={trustedAppRegistry}\n qrCodeOnClick={qrCodeOnClick}\n hideQRCode={hideQRCode}\n customIDDescription={customIDDescription}\n />\n </Flipped>\n )}\n {!isFront && (\n <Flipped flipId=\"face\">\n <VC2BackFace\n credential={credential}\n verificationItems={verificationItems}\n issueHistory={issueHistory}\n getFileMetadata={getFileMetadata}\n getVideoMetadata={getVideoMetadata}\n onMediaAttachmentClick={onMediaAttachmentClick}\n showBackButton={\n (showBackButton && !hideNavButtons) ||\n showDetailsBtn\n }\n showFrontFace={() => setIsFront(true)}\n customDescription={customDescription}\n customCriteria={customCriteria}\n customIssueHistoryComponent={\n customIssueHistoryComponent\n }\n enableLightbox={enableLightbox}\n customSkillsComponent={customSkillsComponent}\n />\n </Flipped>\n )}\n </div>\n </Flipped>\n </div>\n </section>\n </Flipped>\n </Flipper>\n );\n};\n\nexport default VCIDDisplayCard;\n","import React, { useLayoutEffect, useRef, useState } from 'react';\nimport { Flipper, Flipped } from 'react-flip-toolkit';\n\nimport { VCVerificationCheckWithSpinner } from '../VCVerificationCheck/VCVerificationCheck';\nimport VC2FrontFaceInfo from './VC2FrontFaceInfo';\nimport VC2BackFace from './VC2BackFace';\nimport RibbonEnd from './RibbonEnd';\nimport FitText from './FitText';\nimport AwardRibbon from '../svgs/AwardRibbon';\nimport LeftArrow from '../svgs/LeftArrow';\nimport RoundedX from '../svgs/RoundedX';\nimport VCDisplayCardCategoryType from './VCDisplayCardCategoryType';\nimport VCDisplayCardSkillsCount from './VCDisplayCardSkillsCount';\nimport VCIDDisplayCard from './VCIDDIsplayCard';\n\nimport { Profile, VC, VerificationItem, VerificationStatusEnum } from '@learncard/types';\nimport {\n getColorForVerificationStatus,\n getInfoFromCredential,\n} from '../../helpers/credential.helpers';\nimport {\n BoostAchievementCredential,\n IssueHistory,\n LCCategoryEnum,\n MediaMetadata,\n VideoMetadata,\n} from '../../types';\nimport { CertificateDisplayCard } from '../CertificateDisplayCard';\n\nexport type CredentialIconType = {\n image?: React.ReactNode;\n color?: string;\n};\n\nexport type VCDisplayCard2Props = {\n categoryType?: LCCategoryEnum;\n credential: VC | BoostAchievementCredential;\n verificationItems: VerificationItem[];\n issueeOverride?: Profile;\n issuerOverride?: Profile;\n subjectDID?: string;\n subjectImageComponent?: React.ReactNode;\n issuerImageComponent?: React.ReactNode;\n verificationInProgress?: boolean;\n // convertTagsToSkills?: (tags: string[]) => { [skill: string]: string[] };\n handleXClick?: () => void;\n getFileMetadata?: (url: string) => MediaMetadata;\n getVideoMetadata?: (url: string) => VideoMetadata;\n onMediaAttachmentClick?: (url: string, type: 'photo' | 'document' | 'video' | 'link') => void;\n bottomRightIcon?: CredentialIconType;\n customFooterComponent?: React.ReactNode;\n customBodyCardComponent?: React.ReactNode;\n customThumbComponent?: React.ReactNode;\n customDescription?: React.ReactNode;\n customCriteria?: React.ReactNode;\n customIssueHistoryComponent?: React.ReactNode;\n issueHistory?: IssueHistory[];\n titleOverride?: string;\n showBackButton?: boolean;\n enableLightbox?: boolean;\n customRibbonCategoryComponent?: React.ReactNode;\n customFrontButton?: React.ReactNode;\n trustedAppRegistry?: any[];\n hideIssueDate?: boolean;\n onDotsClick?: () => void;\n customSkillsComponent?: React.ReactNode;\n isFrontOverride?: boolean;\n setIsFrontOverride?: (value: boolean) => void;\n hideNavButtons?: boolean;\n hideQRCode?: boolean;\n qrCodeOnClick?: () => void; // exclusive to the ID display type\n showDetailsBtn?: boolean;\n customIDDescription?: React.ReactNode;\n hideGradientBackground?: boolean;\n};\n\nexport const VCDisplayCard2: React.FC<VCDisplayCard2Props> = ({\n categoryType,\n credential,\n verificationItems,\n issueeOverride,\n issuerOverride,\n subjectDID,\n subjectImageComponent,\n issuerImageComponent,\n verificationInProgress = false,\n // convertTagsToSkills,\n handleXClick,\n getFileMetadata,\n getVideoMetadata,\n onMediaAttachmentClick,\n bottomRightIcon,\n customFooterComponent,\n customBodyCardComponent,\n customThumbComponent,\n customCriteria,\n customDescription,\n customIssueHistoryComponent,\n issueHistory,\n titleOverride,\n showBackButton = true,\n enableLightbox,\n customRibbonCategoryComponent,\n customFrontButton,\n trustedAppRegistry,\n hideIssueDate,\n onDotsClick,\n customSkillsComponent,\n isFrontOverride,\n setIsFrontOverride,\n hideNavButtons,\n hideQRCode = false,\n qrCodeOnClick,\n showDetailsBtn = false,\n customIDDescription,\n hideGradientBackground = false,\n}) => {\n const {\n title = '',\n createdAt,\n issuer: _issuer = '',\n issuee: _issuee = '',\n imageUrl,\n } = getInfoFromCredential(credential, 'MMM dd, yyyy');\n const issuee = issueeOverride || _issuee;\n const issuer = issuerOverride || _issuer;\n\n const [_isFront, _setIsFront] = useState(isFrontOverride ?? true);\n const isFront = isFrontOverride ?? _isFront;\n const setIsFront = setIsFrontOverride ?? _setIsFront;\n\n const [headerHeight, setHeaderHeight] = useState(100); // 79 is the height if the header is one line\n const [headerWidth, setHeaderWidth] = useState(0);\n\n const headerRef = useRef<HTMLHeadingElement>(null);\n\n useLayoutEffect(() => {\n // Needs a small setTimeout otherwise it'll be wrong sometimes with multiline header.\n // Probably because of the interaction with FitText\n setTimeout(() => {\n setHeaderHeight(headerRef.current?.clientHeight ?? 100);\n setHeaderWidth(headerRef.current?.clientWidth ?? 0);\n }, 10);\n });\n\n let worstVerificationStatus = verificationItems.reduce(\n (\n currentWorst: (typeof VerificationStatusEnum)[keyof typeof VerificationStatusEnum],\n verification\n ) => {\n switch (currentWorst) {\n case VerificationStatusEnum.Success:\n return verification.status;\n case VerificationStatusEnum.Error:\n return verification.status === VerificationStatusEnum.Failed\n ? verification.status\n : currentWorst;\n case VerificationStatusEnum.Failed:\n return currentWorst;\n }\n },\n VerificationStatusEnum.Success\n );\n\n const statusColor = getColorForVerificationStatus(worstVerificationStatus);\n\n const backgroundStyle = {\n backgroundColor: credential?.display?.backgroundColor,\n backgroundImage: credential?.display?.backgroundImage\n ? `linear-gradient(to bottom, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.25)), url(${credential.display?.backgroundImage})`\n : undefined,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundAttachment: 'fixed',\n };\n\n const _title = titleOverride || title;\n\n if (credential?.display?.displayType === 'certificate') {\n return (\n <CertificateDisplayCard\n credential={credential}\n categoryType={categoryType}\n issueeOverride={issuee}\n issuerOverride={issuer}\n verificationItems={verificationItems}\n getFileMetadata={getFileMetadata}\n getVideoMetadata={getVideoMetadata}\n onMediaAttachmentClick={onMediaAttachmentClick}\n enableLightbox={enableLightbox}\n trustedAppRegistry={trustedAppRegistry}\n handleXClick={handleXClick}\n subjectImageComponent={subjectImageComponent}\n issuerImageComponent={issuerImageComponent}\n customBodyCardComponent={customBodyCardComponent}\n hideIssueDate={hideIssueDate}\n onDotsClick={onDotsClick}\n isFrontOverride={isFrontOverride}\n setIsFrontOverride={setIsFrontOverride}\n hideNavButtons={hideNavButtons}\n showBackButton={showBackButton}\n showDetailsBtn={showDetailsBtn}\n />\n );\n } else if (credential?.display?.displayType === 'id' || categoryType === 'ID') {\n return (\n <div>\n <VCIDDisplayCard\n credential={credential}\n verificationItems={verificationItems}\n getFileMetadata={getFileMetadata}\n getVideoMetadata={getVideoMetadata}\n onMediaAttachmentClick={onMediaAttachmentClick}\n customThumbComponent={customThumbComponent}\n customCriteria={customCriteria}\n customDescription={customDescription}\n customIssueHistoryComponent={customIssueHistoryComponent}\n issueHistory={issueHistory}\n enableLightbox={enableLightbox}\n trustedAppRegistry={trustedAppRegistry}\n customSkillsComponent={customSkillsComponent}\n isFrontOverride={isFrontOverride}\n setIsFrontOverride={setIsFrontOverride}\n hideNavButtons={hideNavButtons}\n hideQRCode={hideQRCode}\n qrCodeOnClick={qrCodeOnClick}\n showBackButton={showBackButton}\n showDetailsBtn={showDetailsBtn}\n customIDDescription={customIDDescription}\n hideGradientBackground={hideGradientBackground}\n />\n </div>\n );\n }\n\n return (\n <Flipper className=\"w-full\" flipKey={isFront}>\n <Flipped flipId=\"card\">\n <section className=\"vc-display-card font-mouse flex flex-col items-center border-solid border-[5px] border-white rounded-[30px] z-10 min-h-[800px] max-w-[400px] relative bg-white shadow-3xl\">\n <RibbonEnd\n side=\"left\"\n className=\"absolute left-[-30px] top-[50px] z-0\"\n height={'100'}\n />\n <RibbonEnd\n side=\"right\"\n className=\"absolute right-[-30px] top-[50px] z-0\"\n height={'100'}\n />\n\n <h1\n ref={headerRef}\n className=\"vc-card-header px-[20px] pb-[10px] pt-[3px] overflow-visible mt-[40px] absolute text-center bg-white border-y-[5px] border-[#EEF2FF] shadow-bottom w-[calc(100%_+_16px)] rounded-t-[8px] z-50\"\n style={{ wordBreak: 'break-word' }}\n >\n {customRibbonCategoryComponent && customRibbonCategoryComponent}\n {!customRibbonCategoryComponent && (\n <VCDisplayCardCategoryType categoryType={categoryType} />\n )}\n\n <FitText\n text={_title ?? ''}\n maxFontSize={32}\n minFontSize={20}\n width={((headerWidth ?? 290) - 40).toString()}\n className=\"vc-card-header-main-title text-[#18224E] leading-[100%] text-shadow text-[32px]\"\n />\n </h1>\n\n {isFront && handleXClick && (\n <button\n className=\"vc-card-x-button absolute top-[-25px] bg-white rounded-full h-[50px] w-[50px] flex items-center justify-center z-50\"\n onClick={handleXClick}\n >\n <RoundedX />\n </button>\n )}\n\n <div\n className=\"relative pt-[114px] vc-card-content-container flex flex-col items-center grow min-h-0 w-full rounded-t-[30px] bg-[#353E64] rounded-b-[200px]\"\n style={backgroundStyle}\n >\n {/* \n div in a div here so that we can have an outer scroll container with an inner container\n that has a rounded bottom at the bottom of the scrollable content \n */}\n <Flipped flipId=\"scroll-container\">\n <div className=\"vc-card-content-scroll-container w-full pt-[20px] min-h-full flex flex-col justify-start items-center rounded-t-[30px] rounded-b-[200px] scrollbar-hide pb-[50px]\">\n {isFront && (\n <Flipped flipId=\"face\">\n <VC2FrontFaceInfo\n issuee={issuee}\n subjectDID={subjectDID}\n issuer={issuer}\n title={title}\n subjectImageComponent={subjectImageComponent}\n issuerImageComponent={issuerImageComponent}\n customBodyCardComponent={customBodyCardComponent}\n customThumbComponent={customThumbComponent}\n createdAt={createdAt ?? ''}\n imageUrl={imageUrl}\n />\n </Flipped>\n )}\n {!isFront && (\n <Flipped flipId=\"face\">\n <VC2BackFace\n credential={credential}\n verificationItems={verificationItems}\n // convertTagsToSkills={convertTagsToSkills}\n issueHistory={issueHistory}\n getFileMetadata={getFileMetadata}\n getVideoMetadata={getVideoMetadata}\n onMediaAttachmentClick={onMediaAttachmentClick}\n showBackButton={\n (showBackButton && !hideNavButtons) ||\n showDetailsBtn\n }\n showFrontFace={() => setIsFront(true)}\n customDescription={customDescription}\n customCriteria={customCriteria}\n customIssueHistoryComponent={\n customIssueHistoryComponent\n }\n enableLightbox={enableLightbox}\n customSkillsComponent={customSkillsComponent}\n />\n </Flipped>\n )}\n\n {isFront && (\n <VCDisplayCardSkillsCount\n skills={credential?.skills}\n onClick={() => setIsFront(!isFront)}\n />\n )}\n\n {(!hideNavButtons || showDetailsBtn) && (\n <>\n {isFront && customFrontButton}\n {((isFront && !customFrontButton) ||\n (isFront && showDetailsBtn)) && (\n <Flipped flipId=\"details-back-button\">\n <button\n type=\"button\"\n className=\"vc-toggle-side-button text-white shadow-bottom bg-[#00000099] px-[30px] py-[8px] rounded-[40px] text-[28px] tracking-[0.75px] uppercase leading-[28px] mt-[40px] w-fit select-none\"\n onClick={() => setIsFront(!isFront)}\n >\n Details\n </button>\n </Flipped>\n )}\n {!isFront && (\n <Flipped flipId=\"details-back-button\">\n <button\n type=\"button\"\n className=\"vc-toggle-side-button text-white shadow-bottom bg-[#00000099] px-[30px] py-[8px] rounded-[40px] text-[28px] tracking-[0.75px] uppercase leading-[28px] mt-[40px] w-fit select-none\"\n onClick={() => setIsFront(!isFront)}\n >\n <span className=\"flex gap-[10px] items-center\">\n <LeftArrow />\n Back\n </span>\n </button>\n </Flipped>\n )}\n </>\n )}\n </div>\n </Flipped>\n </div>\n <footer className=\"vc-card-footer w-full flex justify-between p-[5px] mt-[5px]\">\n {customFooterComponent && customFooterComponent}\n {!customFooterComponent && (\n <>\n {worstVerificationStatus === VerificationStatusEnum.Failed ? (\n <div className=\"w-[40px]\" role=\"presentation\" />\n ) : (\n <VCVerificationCheckWithSpinner\n spinnerSize=\"40px\"\n size={'32px'}\n loading={verificationInProgress}\n />\n )}\n <div className=\"vc-footer-text font-montserrat flex flex-col items-center justify-center text-[12px] font-[700] leading-[15px] select-none\">\n <span className=\"text-[#4F4F4F]\">Verified Credential</span>\n <span\n className=\"vc-footer-status uppercase\"\n style={{ color: statusColor }}\n >\n {worstVerificationStatus}\n </span>\n </div>\n <div\n className=\"vc-footer-icon rounded-[20px] h-[40px] w-[40px] flex items-center justify-center overflow-hidden\"\n style={{ backgroundColor: bottomRightIcon?.color ?? '#6366F1' }}\n >\n {bottomRightIcon?.image ?? <AwardRibbon />}\n </div>\n </>\n )}\n </footer>\n </section>\n </Flipped>\n </Flipper>\n );\n};\n\nexport default VCDisplayCard2;\n"],"names":["React","useRef","useEffect","DefaultFace","this","useState","Lightbox","getBaseUrl","VideoIcon","Camera","GenericDocumentIcon","LinkIcon","prettyBytes","getColorForVerificationStatus","VerificationStatusEnum","AcuteCheckmark","ExclamationPoint","X","capitalize","InfoIcon","format","LeftArrow","SkillsBox","AlignmentsBox","truncateWithEllipsis","getNameFromProfile","getImageFromProfile","LCCategoryEnum","getCategoryColor","getInfoFromCredential","IDIcon","QRCodeIcon","IDSleeve","PersonBadge","VerifiedBadge","UnknownVerifierBadge","RedFlag","Flipper","Flipped","useLayoutEffect","CertificateDisplayCard","VCDisplayCardSkillsCount","VCVerificationCheckWithSpinner","AwardRibbon"],"mappings":"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"}
1
+ {"version":3,"file":"VCDisplayCard2-e07ad98c.js","sources":["../../src/components/svgs/RoundedX.tsx","../../src/components/VCDisplayCard2/FitText.tsx","../../src/components/VCDisplayCard2/InfoBox.tsx","../../src/components/VCDisplayCard2/IssueHistoryBox.tsx","../../src/components/VCDisplayCard2/MediaAttachmentsBox.tsx","../../src/components/VCDisplayCard2/RibbonEnd.tsx","../../src/components/VCDisplayCard2/TruncateTextBox.tsx","../../src/components/VCDisplayCard2/VerificationRow.tsx","../../src/components/VCDisplayCard2/VerificationsBox.tsx","../../src/components/VCDisplayCard2/VC2BackFace.tsx","../../src/components/VCDisplayCard2/VC2FrontFaceInfo.tsx","../../src/components/VCDisplayCard2/VCDisplayCardCategoryType.tsx","../../src/components/VCDisplayCard2/VCIDDisplayFrontFace.tsx","../../src/components/VCDisplayCard2/VCIDDIsplayCard.tsx","../../src/components/VCDisplayCard2/VCDisplayCard2.tsx"],"sourcesContent":["import React from 'react';\n\ntype RoundedXProps = {\n className?: string;\n};\n\nconst RoundedX: React.FC<RoundedXProps> = ({ className = '' }) => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n d=\"M18.75 5.25L5.25 18.75\"\n stroke=\"#18224E\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18.75 18.75L5.25 5.25\"\n stroke=\"#18224E\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n\nexport default RoundedX;\n","import React, { useEffect, useRef } from 'react';\n\ninterface FitTextProps {\n text: string;\n width: string;\n className?: string;\n minFontSize?: number;\n maxFontSize?: number;\n}\n\nconst FitText: React.FC<FitTextProps> = ({\n text,\n width,\n className = '',\n minFontSize = 10,\n maxFontSize = 100,\n}) => {\n const textRef = useRef<HTMLDivElement>(null);\n let animationFrameId: number | null = null;\n\n const adjustFontSize = () => {\n if (textRef.current) {\n const currentFontSize = parseFloat(\n window.getComputedStyle(textRef.current).getPropertyValue('font-size')\n );\n\n // Need to calculate spacing based on nowrap to prevent thrashing\n textRef.current.style.whiteSpace = 'nowrap';\n const parentWidth = (textRef.current.parentNode as any)?.clientWidth;\n const scrollWidth = textRef.current.scrollWidth || textRef.current.offsetWidth;\n\n // Sometimes scrollWidth can temporarily be 0. If so, just try again next frame\n if (scrollWidth === 0) {\n if (animationFrameId !== null) {\n cancelAnimationFrame(animationFrameId);\n }\n\n animationFrameId = requestAnimationFrame(adjustFontSize);\n\n return;\n }\n\n const newFontSize = Math.min(\n Math.max((parentWidth / scrollWidth) * currentFontSize, minFontSize),\n maxFontSize\n );\n\n textRef.current.style.fontSize = `${newFontSize}px`;\n textRef.current.style.whiteSpace = newFontSize === minFontSize ? 'normal' : 'nowrap';\n }\n };\n\n const handleResize = () => {\n if (animationFrameId !== null) {\n cancelAnimationFrame(animationFrameId);\n }\n\n animationFrameId = requestAnimationFrame(adjustFontSize);\n };\n\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n adjustFontSize();\n\n return () => {\n window.removeEventListener('resize', handleResize);\n if (animationFrameId !== null) {\n cancelAnimationFrame(animationFrameId);\n }\n };\n }, [text]);\n\n return (\n <div style={{ width }} className={`text-center ${className}`}>\n <span\n className={`text-[${minFontSize}px] transition-[font-size] whitespace-nowrap`}\n ref={textRef}\n >\n {text}\n </span>\n </div>\n );\n};\n\nexport default FitText;\n","import React from 'react';\n\ntype InfoBoxProps = {\n text: string;\n handleClose: () => void;\n backgroundColor?: string;\n};\n\nconst InfoBox: React.FC<InfoBoxProps> = ({ text, handleClose, backgroundColor = '#6366F1' }) => {\n const bgColorWithOpacity = `${backgroundColor}1F`; // 12% opacity\n return (\n <div\n className=\"info-box p-[10px] rounded-[10px] w-full font-poppins text-[12px] leading[18px]\"\n style={{ backgroundColor: bgColorWithOpacity }}\n >\n {text}{' '}\n <button onClick={handleClose} className=\"text-indigo-500 font-[700] select-none\">\n Close\n </button>\n </div>\n );\n};\n\nexport default InfoBox;\n","import React, { useState } from 'react';\nimport DefaultFace from '../../assets/images/default-face.jpeg';\n\nimport { IssueHistory } from '../../types';\n\ntype SkillsBoxProps = {\n issueHistory: IssueHistory[];\n customIssueHistoryComponent?: React.ReactNode;\n};\n\nconst IssueHistoryBox: React.FC<SkillsBoxProps> = ({\n issueHistory,\n customIssueHistoryComponent,\n}) => {\n let renderIssueHistory = issueHistory?.map(issueItem => {\n return (\n <div\n className=\"flex items-center issue-log-item border-b-[1px] py-[5px] border-grayscale-200 border-solid w-full\"\n key={issueItem?.id}\n >\n <div className=\"profile-thumb-img vc-issuee-image h-[35px] w-[35px] rounded-full overflow-hidden\">\n <img\n className=\"h-full w-full object-cover select-none\"\n src={issueItem?.thumb || DefaultFace}\n alt=\"profile\"\n />\n </div>\n <div className=\"ml-[9px] flex flex-col justify-center\">\n <p className=\"issue-item-name font-montserrat font-semibold text-grayscale-900 text-[14px] \">\n {issueItem?.name}\n </p>\n <p className=\"issue-item-date font-montserrat text-[12px] text-grayscale-600 \">\n {issueItem?.date}\n </p>\n </div>\n </div>\n );\n });\n\n return (\n <div className=\"bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full relative\">\n <h3 className=\"text-[20px] leading-[20px] text-grayscale-900\">Issue Log</h3>\n {!customIssueHistoryComponent ? renderIssueHistory : customIssueHistoryComponent}\n </div>\n );\n};\n\nexport default IssueHistoryBox;\n","import React, { useEffect, useState } from 'react';\nimport prettyBytes from 'pretty-bytes';\n\nimport Camera from '../svgs/Camera';\nimport LinkIcon from '../svgs/LinkIcon';\nimport VideoIcon from '../svgs/VideoIcon';\nimport GenericDocumentIcon from '../svgs/GenericDocumentIcon';\n\nimport { Attachment, MediaMetadata, VideoMetadata } from '../../types';\nimport { getBaseUrl } from '../../helpers/url.helpers';\nimport { Lightbox, LightboxItem } from '../Lightbox';\n\ntype MediaAttachmentsBoxProps = {\n attachments: Attachment[];\n getFileMetadata?: (url: string) => MediaMetadata;\n getVideoMetadata?: (url: string) => VideoMetadata;\n onMediaAttachmentClick?: (url: string, type: 'photo' | 'document' | 'video' | 'link') => void;\n enableLightbox?: boolean;\n};\n\nconst defaultGetFileMetadata = async (url: string) => {\n const isFilestack = url.includes('filestack');\n if (!isFilestack) return;\n\n const urlParams = url.split('.com/')[1]?.split('/');\n if (!urlParams) return;\n const handle = urlParams[urlParams.length - 1];\n\n let fetchFailed = false;\n const data = await fetch(`https://cdn.filestackcontent.com/${handle}/metadata`)\n .then(res => res.json())\n .catch(() => (fetchFailed = true));\n\n if (fetchFailed) return;\n\n const fileExtension = data.filename.split('.')[1];\n\n return {\n fileExtension,\n sizeInBytes: data.size,\n numberOfPages: undefined,\n };\n};\n\nconst defaultGetVideoMetadata = async (url: string) => {\n const isYoutube = url.includes('youtube');\n if (!isYoutube) return;\n\n const metadataUrl = `http://youtube.com/oembed?url=${url}&format=json`;\n\n let fetchFailed = false;\n const metadata = await fetch(metadataUrl)\n .then(res => res.json())\n .catch(() => (fetchFailed = true));\n\n if (fetchFailed) return;\n\n return {\n title: metadata.title,\n imageUrl: metadata.thumbnail_url,\n videoLength: '', // TODO figure out how to get this\n };\n};\n\nconst MediaAttachmentsBox: React.FC<MediaAttachmentsBoxProps> = ({\n attachments,\n getFileMetadata = defaultGetFileMetadata,\n getVideoMetadata = defaultGetVideoMetadata,\n onMediaAttachmentClick,\n enableLightbox = false,\n}) => {\n const [documentMetadata, setDocumentMetadata] = useState<{\n [documentUrl: string]: MediaMetadata | undefined;\n }>({});\n const [videoMetadata, setVideoMetadata] = useState<{\n [videoUrl: string]: VideoMetadata | undefined;\n }>({});\n\n const mediaAttachments: Attachment[] = [];\n const documentsAndLinks: Attachment[] = [];\n attachments.forEach(a => {\n switch (a.type) {\n case 'document':\n case 'link':\n documentsAndLinks.push(a);\n break;\n case 'photo':\n case 'video':\n mediaAttachments.push(a);\n break;\n default:\n break;\n }\n });\n\n useEffect(() => {\n const getMetadata = async (attachments: Attachment[]): Promise<any> => {\n const docMetadata: { [docUrl: string]: MediaMetadata | undefined } = {};\n const videoMetadata: { [videoUrl: string]: VideoMetadata | undefined } = {};\n await Promise.all(\n attachments.map(async attachment => {\n if (attachment.type === 'document') {\n docMetadata[attachment.url] = await getFileMetadata(attachment.url);\n } else if (attachment.type === 'video') {\n videoMetadata[attachment.url] = await getVideoMetadata(attachment.url);\n }\n })\n );\n\n setVideoMetadata(videoMetadata);\n setDocumentMetadata(docMetadata);\n };\n\n const videos = attachments.filter(a => a.type === 'video');\n getMetadata([...documentsAndLinks, ...videos]);\n }, []);\n\n const [currentLightboxUrl, setCurrentLightboxUrl] = useState<string | undefined>(undefined);\n const lightboxItems = mediaAttachments.filter(\n a => a.type === 'photo' || a.type === 'video'\n ) as LightboxItem[];\n const handleMediaAttachmentClick = (\n url: string,\n type: 'photo' | 'document' | 'video' | 'link'\n ) => {\n if (type === 'photo' || type === 'video') {\n setCurrentLightboxUrl(url);\n }\n\n onMediaAttachmentClick?.(url, type);\n };\n\n return (\n <div className=\"media-attachments-box bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full\">\n <h3 className=\"text-[20px] leading-[20px] text-grayscale-900\">Media Attachments</h3>\n {mediaAttachments.length > 0 && (\n <div className=\"flex gap-[5px] justify-between flex-wrap w-full\">\n {enableLightbox && (\n <Lightbox\n items={lightboxItems}\n currentUrl={currentLightboxUrl}\n setCurrentUrl={setCurrentLightboxUrl}\n />\n )}\n {mediaAttachments.map((media, index) => {\n let innerContent: React.ReactNode;\n let title = media.title;\n\n if (media.type === 'video') {\n const metadata = videoMetadata[media.url];\n title = (title || metadata?.title) ?? '';\n const baseUrl = getBaseUrl(media.url);\n const iconTop = title || baseUrl;\n\n innerContent = (\n <div\n className=\"absolute top-0 left-0 right-0 bottom-0 bg-cover bg-no-repeat font-poppins text-white text-[12px] font-[400] leading-[17px] flex flex-col justify-end items-start p-[10px] text-left bg-rose-600 rounded-[15px]\"\n style={{\n backgroundImage: metadata?.imageUrl\n ? `linear-gradient(180deg, rgba(0, 0, 0, 0) 44.20%, rgba(0, 0, 0, 0.6) 69%), url(${\n metadata?.imageUrl ?? ''\n })`\n : undefined,\n }}\n >\n {!metadata?.imageUrl && (\n <VideoIcon size=\"60\" className=\"m-auto\" />\n )}\n <div\n className={`absolute ${\n iconTop ? 'top-[10px]' : 'bottom-[10px]'\n } left-[10px] z-10 flex items-center gap-[5px]`}\n >\n {metadata?.imageUrl && <VideoIcon />}\n {metadata?.videoLength && (\n <span className=\"leading-[23px]\">\n {metadata.videoLength}\n </span>\n )}\n </div>\n {baseUrl && <span className=\"font-[600]\">{baseUrl}</span>}\n {title && <span className=\"line-clamp-2\">{title}</span>}\n </div>\n );\n } else {\n innerContent = (\n <div className=\"absolute top-0 left-0 right-0 bottom-0 h-min\">\n <img className=\"rounded-[15px]\" src={media.url} />\n <Camera className=\"relative bottom-[30px] left-[10px] z-10\" />\n </div>\n );\n }\n\n const className = `media-attachment ${media.type} w-[49%] pt-[49%] overflow-hidden relative`;\n\n if (onMediaAttachmentClick || enableLightbox) {\n return (\n <button\n key={index}\n className={className}\n onClick={() =>\n handleMediaAttachmentClick(media.url, media.type)\n }\n >\n {innerContent}\n </button>\n );\n }\n\n return (\n <div key={index} className={className}>\n {innerContent}\n </div>\n );\n })}\n </div>\n )}\n {documentsAndLinks.length > 0 && (\n <div className=\"w-full flex flex-col gap-[5px]\">\n {documentsAndLinks.map((docOrLink, index) => {\n const metadata =\n docOrLink.type === 'document'\n ? documentMetadata[docOrLink.url]\n : undefined;\n const { fileExtension, sizeInBytes, numberOfPages } = metadata ?? {};\n\n let baseUrl = '';\n if (docOrLink.type === 'link') {\n baseUrl = getBaseUrl(docOrLink.url);\n }\n\n const innerContent = (\n <div className=\"flex flex-col gap-[5px]\">\n <div className=\"flex gap-[5px] items-center\">\n {docOrLink.type === 'document' && (\n <GenericDocumentIcon className=\"shrink-0\" />\n )}\n {docOrLink.type === 'link' && <LinkIcon className=\"shrink-0\" />}\n <span className=\"text-grayscale-900 font-[400]\">\n {docOrLink.title ?? 'No title'}\n </span>\n </div>\n {docOrLink.type === 'document' && metadata && (\n <a\n href={docOrLink.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-grayscale-600 font-[600] px-[5px] hover:underline\"\n >\n {fileExtension && (\n <span className=\"uppercase\">{fileExtension}</span>\n )}\n {fileExtension && (numberOfPages || sizeInBytes) && ' • '}\n {numberOfPages && (\n <span>\n {numberOfPages} page{numberOfPages === 1 ? '' : 's'}\n </span>\n )}\n {numberOfPages && sizeInBytes && ' • '}\n {sizeInBytes && <span>{prettyBytes(sizeInBytes)}</span>}\n </a>\n )}\n {docOrLink.type === 'link' && (\n <a\n href={docOrLink.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-indigo-500 font-[600] px-[5px] hover:underline\"\n >\n {baseUrl}\n </a>\n )}\n </div>\n );\n\n const className = `row-attachment ${docOrLink.type} bg-grayscale-100 rounded-[15px] p-[10px] w-full font-poppins text-[12px] leading-[18px] tracking-[-0.33px] text-left`;\n\n if (onMediaAttachmentClick) {\n return (\n <button\n key={index}\n className={className}\n onClick={() =>\n handleMediaAttachmentClick(docOrLink.url, docOrLink.type)\n }\n >\n {innerContent}\n </button>\n );\n }\n\n return (\n <div key={index} className={className}>\n {innerContent}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\nexport default MediaAttachmentsBox;\n","import React from 'react';\n\nconst RibbonEnd: React.FC<{ side: 'left' | 'right'; className?: string; height?: string }> = ({\n side,\n className = '',\n height = '64',\n}) => {\n const halfHeight = parseInt(height) / 2;\n return (\n <svg\n className={className}\n width=\"30\"\n height={height}\n viewBox={`0 0 30 ${height}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ transform: `scaleX(${side === 'left' ? '1' : '-1'})` }}\n >\n <g filter=\"url(#filter0_d_4620_22659)\">\n <path d={`M0 0H30V${height}H0L6.36364 ${halfHeight}L0 0Z`} fill=\"white\" />\n <path\n d={`M3.08593 2.5H27.5V${height}H3.08593L8.80922 ${halfHeight}L8.91926 30L8.80922 29.4812L3.08593 2.5Z`}\n stroke=\"#EEF2FF\"\n strokeWidth=\"5\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_4620_22659\"\n x=\"0\"\n y=\"0\"\n width=\"30\"\n height={height}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"4\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_4620_22659\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_4620_22659\"\n result=\"shape\"\n />\n </filter>\n </defs>\n </svg>\n );\n};\n\nexport default RibbonEnd;\n","import React, { useState } from 'react';\n\ntype TruncateTextBoxProps = {\n headerText?: string;\n headerClassName?: string;\n\n // the text to be truncated if it's too long\n text: string;\n\n truncateThreshold?: number;\n\n // extra things to put at the bottom of the box\n children?: React.ReactNode;\n className?: string;\n\n // container styles\n containerClassName?: string;\n // text styles\n textClassName?: string;\n};\n\nconst TruncateTextBox: React.FC<TruncateTextBoxProps> = ({\n headerText = '',\n headerClassName = '',\n text,\n truncateThreshold = 132,\n children,\n className = 'truncate-text-box',\n containerClassName = '',\n textClassName = '',\n}) => {\n const needsTruncate = text?.length > truncateThreshold;\n const [showFullText, setShowFullText] = useState(false);\n const truncated = needsTruncate && !showFullText;\n\n const displayText = truncated ? text.substring(0, truncateThreshold) : text;\n\n const defaultStyles = 'shadow-bottom px-[15px] py-[20px]';\n\n return (\n <div\n className={`${className} ${defaultStyles} bg-white flex flex-col items-start gap-[10px] rounded-[20px] w-full ${containerClassName}`}\n >\n {headerText && (\n <h3 className={`${headerClassName} text-[20px] leading-[20px] text-grayscale-900`}>\n {headerText}\n </h3>\n )}\n\n <p\n className={`text-[12px] text-grayscale-700 leading-[18px] font-poppins font-[400] mb-0 ${textClassName}`}\n >\n {displayText}\n {truncated && (\n <>\n ...{' '}\n <button\n className=\"text-indigo-500 font-[700]\"\n onClick={() => setShowFullText(true)}\n >\n More\n </button>\n </>\n )}\n {needsTruncate && showFullText && (\n <>\n {' '}\n <button\n className=\"text-indigo-500 font-[700]\"\n onClick={() => setShowFullText(false)}\n >\n Close\n </button>\n </>\n )}\n </p>\n\n {children}\n </div>\n );\n};\n\nexport default TruncateTextBox;\n","import React, { useState } from 'react';\nimport { VerificationItem, VerificationStatusEnum } from '@learncard/types';\nimport { getColorForVerificationStatus } from '../../helpers/credential.helpers';\n\nimport InfoBox from './InfoBox';\nimport InfoIcon from '../svgs/InfoIcon';\nimport AcuteCheckmark from '../svgs/AcuteCheckmark';\nimport ExclamationPoint from '../svgs/ExclamationPoint';\nimport X from '../svgs/X';\nimport { capitalize } from '../../helpers/string.helpers';\n\ntype VerificationRowProps = {\n verification: VerificationItem;\n};\n\nconst VerificationRow: React.FC<VerificationRowProps> = ({ verification }) => {\n const [showInfo, setShowInfo] = useState(false);\n const statusColor = getColorForVerificationStatus(verification.status);\n\n const getIcon = () => {\n switch (verification.status) {\n case VerificationStatusEnum.Success:\n return <AcuteCheckmark />;\n case VerificationStatusEnum.Error:\n return <ExclamationPoint />;\n case VerificationStatusEnum.Failed:\n return <X />;\n }\n };\n\n let primaryText = verification.check\n ? `${verification.check}: ${verification.message}`\n : verification.message;\n if (verification.status === VerificationStatusEnum.Failed) {\n primaryText = verification.message ?? verification.details ?? '';\n }\n primaryText = capitalize(primaryText);\n\n const infoText = ''; // if we want certain verifications to have extra explanation, we can set this variable\n\n return (\n <div className=\"verification-row flex flex-col gap-[5px] font-poppins border-b-[1px] border-grayscale-200 border-solid w-full py-[10px] last:border-0 last:pb-0\">\n <span\n className=\"font-[700] text-[11px] leading-[16px] uppercase flex items-center gap-[3px] select-none\"\n style={{ color: statusColor }}\n >\n {getIcon()}\n {verification.status}\n {infoText && (\n <button className=\"ml-auto\" onClick={() => setShowInfo(!showInfo)}>\n <InfoIcon color={statusColor} />\n </button>\n )}\n </span>\n {showInfo && infoText && (\n <InfoBox\n text={infoText}\n handleClose={() => setShowInfo(false)}\n backgroundColor={statusColor}\n />\n )}\n <span className=\"font-[400] text-[14px] leading-[21px] text-grayscale-900\">\n {primaryText}\n </span>\n </div>\n );\n};\n\nexport default VerificationRow;\n","import React, { useState } from 'react';\n\nimport VerificationRow from './VerificationRow';\nimport InfoIcon from '../svgs/InfoIcon';\nimport InfoBox from './InfoBox';\n\nimport { VerificationItem } from '@learncard/types';\n\ntype VerificationsBoxProps = {\n verificationItems: VerificationItem[];\n};\n\nconst VerificationsBox: React.FC<VerificationsBoxProps> = ({ verificationItems }) => {\n const [showInfo, setShowInfo] = useState(false);\n\n return (\n <div className=\"verifications-box bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full relative\">\n <h3 className=\"text-[20px] leading-[20px] text-grayscale-900\">\n Credential Verifications\n </h3>\n <button\n className=\"absolute top-[17px] right-[17px]\"\n onClick={() => setShowInfo(!showInfo)}\n >\n <InfoIcon color={showInfo ? '#6366F1' : undefined} />\n </button>\n {showInfo && (\n <InfoBox\n text=\"Credential verifications check the cryptographic proof of digital credentials to ensure their authenticity and accuracy.\"\n handleClose={() => setShowInfo(false)}\n />\n )}\n\n {verificationItems.map((verification, index) => (\n <VerificationRow key={index} verification={verification} />\n ))}\n </div>\n );\n};\n\nexport default VerificationsBox;\n","import React from 'react';\nimport { format } from 'date-fns';\n\nimport MediaAttachmentsBox from './MediaAttachmentsBox';\nimport TruncateTextBox from './TruncateTextBox';\nimport SkillsBox from './SkillsBox';\nimport IssueHistoryBox from './IssueHistoryBox';\nimport { VC, VerificationItem } from '@learncard/types';\nimport VerificationsBox from './VerificationsBox';\nimport AlignmentsBox from '../CertificateDisplayCard/AlignmentsBox';\nimport {\n BoostAchievementCredential,\n IssueHistory,\n MediaMetadata,\n VideoMetadata,\n} from '../../types';\nimport LeftArrow from '../svgs/LeftArrow';\n\n/*\nconst defaultTagsToSkills = (tags: string[]) => {\n const skillsObj: { [skill: string]: string[] } = {};\n tags.forEach(tag => {\n skillsObj[tag] = [];\n });\n};\n*/\n\ntype VC2BackFaceProps = {\n credential: VC | BoostAchievementCredential;\n verificationItems: VerificationItem[];\n // convertTagsToSkills?: (tags: string[]) => { [skill: string]: string[] };\n getFileMetadata?: (url: string) => MediaMetadata;\n getVideoMetadata?: (url: string) => VideoMetadata;\n onMediaAttachmentClick?: (url: string, type: 'photo' | 'document' | 'video' | 'link') => void;\n issueHistory?: IssueHistory[];\n showBackButton?: boolean;\n showFrontFace: () => void;\n customDescription?: React.ReactNode;\n customCriteria?: React.ReactNode;\n customSkillsComponent?: React.ReactNode;\n customIssueHistoryComponent?: React.ReactNode;\n enableLightbox?: boolean;\n};\n\nconst VC2BackFace: React.FC<VC2BackFaceProps> = ({\n credential,\n verificationItems,\n // convertTagsToSkills = defaultTagsToSkills,\n getFileMetadata,\n getVideoMetadata,\n onMediaAttachmentClick,\n issueHistory,\n showBackButton,\n showFrontFace,\n customDescription,\n customCriteria,\n customSkillsComponent,\n customIssueHistoryComponent,\n enableLightbox,\n}) => {\n const expiration = credential.expirationDate\n ? format(new Date(credential.expirationDate), 'MMM dd, yyyy')\n : undefined;\n\n const isExpired =\n credential.expirationDate &&\n Number(new Date(credential.expirationDate)) < Number(new Date());\n\n const achievement =\n 'achievement' in credential.credentialSubject\n ? credential.credentialSubject.achievement\n : undefined;\n const criteria = achievement?.criteria?.narrative;\n const description = achievement?.description;\n const alignment = achievement?.alignment;\n\n /* \n const tags = credential.credentialSubject.achievement?.tag;\n const skillsObject = tags && tags.length > 0 ? convertTagsToSkills(tags) : undefined;\n */\n\n return (\n <section className=\"vc-back-face flex flex-col gap-[20px] w-full px-[15px] pb-[25px]\">\n {showBackButton && (\n <div className=\"w-full\">\n <button\n className=\"vc-card-back-button rounded-full h-[50px] px-[15px] flex items-center justify-center gap-[5px] z-50 text-[30px] text-white select-none\"\n onClick={showFrontFace}\n >\n <LeftArrow className=\"text-white\" size=\"25\" />\n Details\n </button>\n </div>\n )}\n\n {customDescription && (\n <TruncateTextBox headerText=\"About\" text={description} className=\"description-box\">\n {customDescription}\n </TruncateTextBox>\n )}\n {!customDescription && (description || expiration) && (\n <TruncateTextBox headerText=\"About\" text={description} className=\"description-box\">\n {expiration && (\n <p className=\"text-grayscale-800 font-poppins font-[600] text-[12px] leading-[18px] mb-0\">\n Expire{isExpired ? 'd' : 's'} on {expiration}\n </p>\n )}\n </TruncateTextBox>\n )}\n\n {customCriteria && (\n <TruncateTextBox\n headerText=\"Criteria\"\n text={description}\n className=\"description-box\"\n >\n {customCriteria}\n </TruncateTextBox>\n )}\n {!customCriteria && criteria && (\n <TruncateTextBox headerText=\"Criteria\" text={criteria} className=\"criteria-box\" />\n )}\n {(credential.skills?.length ?? 0) > 0 &&\n (customSkillsComponent ? (\n customSkillsComponent\n ) : (\n <SkillsBox skills={credential.skills ?? []} />\n ))}\n\n {issueHistory && issueHistory?.length > 0 && (\n <IssueHistoryBox\n issueHistory={issueHistory}\n customIssueHistoryComponent={customIssueHistoryComponent}\n />\n )}\n\n {credential.attachments && credential.attachments.length > 0 && (\n <MediaAttachmentsBox\n attachments={credential.attachments}\n getFileMetadata={getFileMetadata}\n getVideoMetadata={getVideoMetadata}\n onMediaAttachmentClick={onMediaAttachmentClick}\n enableLightbox={enableLightbox}\n />\n )}\n {/* {credential.notes && <TruncateTextBox headerText=\"Notes\" text={credential.notes} />} */}\n\n {alignment && <AlignmentsBox alignment={alignment} style=\"boost\" />}\n\n {verificationItems && verificationItems.length > 0 && (\n <VerificationsBox verificationItems={verificationItems} />\n )}\n </section>\n );\n};\n\nexport default VC2BackFace;\n","import React from 'react';\n\nimport DefaultFace from '../../assets/images/default-face.jpeg';\n\nimport { getImageFromProfile, getNameFromProfile } from '../../helpers/credential.helpers';\nimport { truncateWithEllipsis } from '../../helpers/string.helpers';\nimport { Profile } from '@learncard/types';\n\ntype VC2FrontFaceInfoProps = {\n issuee: Profile | string;\n issuer: Profile | string;\n title: string;\n subjectDID?: string | undefined;\n subjectImageComponent?: React.ReactNode;\n issuerImageComponent?: React.ReactNode;\n createdAt: string;\n imageUrl?: string;\n customBodyCardComponent?: React.ReactNode;\n customThumbComponent?: React.ReactNode;\n};\n\nconst VC2FrontFaceInfo: React.FC<VC2FrontFaceInfoProps> = ({\n issuee,\n issuer,\n subjectDID,\n subjectImageComponent,\n issuerImageComponent,\n customBodyCardComponent,\n createdAt,\n imageUrl,\n customThumbComponent,\n}) => {\n const issuerName = truncateWithEllipsis(getNameFromProfile(issuer ?? ''), 25);\n const issueeName = truncateWithEllipsis(getNameFromProfile(issuee ?? ''), 25);\n const issuerImage = getImageFromProfile(issuer ?? '');\n const issueeImage = getImageFromProfile(issuee ?? '');\n\n const getImageElement = (\n imageUrl: string,\n alt: string,\n overrideComponent: React.ReactNode | undefined\n ) => {\n if (overrideComponent) return overrideComponent;\n\n return (\n <img\n className=\"h-full w-full object-cover select-none\"\n src={imageUrl || DefaultFace}\n alt={alt}\n />\n );\n };\n\n const issueeImageEl: React.ReactNode = getImageElement(\n issueeImage,\n 'Issuee image',\n subjectImageComponent\n );\n const issuerImageEl: React.ReactNode = getImageElement(\n issuerImage,\n 'Issuer image',\n issuerImageComponent\n );\n\n return (\n <section className=\"vc-front-face w-full px-[15px] flex flex-col items-center gap-[15px]\">\n {imageUrl && !customThumbComponent && (\n <img className=\"vc-front-image h-[130px] w-[130px] rounded-[10px]\" src={imageUrl} />\n )}\n\n {customThumbComponent && customThumbComponent}\n <div className=\"vc-issue-info-box bg-white flex flex-col items-center gap-[5px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full\">\n {customBodyCardComponent && customBodyCardComponent}\n\n {!customBodyCardComponent && (\n <>\n <h3 className=\"text-[27px] flex flex-col text-center leading-[130%] text-grayscale-900 capitalize\">\n {issueeName}\n {subjectDID && (\n <span className=\"text-[12px] text-grayscale-700 leading-[18px] font-poppins font-[400] m-0 p-0 normal-case\">\n {subjectDID}\n </span>\n )}\n </h3>\n <div className=\"relative\">\n <div className=\"vc-issuee-image h-[60px] w-[60px] rounded-full overflow-hidden\">\n {issueeImageEl}\n </div>\n <div className=\"vc-issuer-image h-[30px] w-[30px] rounded-full overflow-hidden absolute bottom-[-12px] right-[-12px]\">\n {issuerImageEl}\n </div>\n </div>\n <div className=\"vc-issue-details mt-[10px] flex flex-col items-center font-montserrat text-[14px] leading-[20px]\">\n <span className=\"created-at text-grayscale-700\">{createdAt}</span>\n <span className=\"issued-by text-grayscale-900 font-[500]\">\n by <strong className=\"font-[700]\">{issuerName}</strong>\n </span>\n </div>\n </>\n )}\n </div>\n </section>\n );\n};\n\nexport default VC2FrontFaceInfo;\n","import React from 'react';\nimport { getCategoryColor } from '../../helpers/credential.helpers';\nimport { LCCategoryEnum } from '../../types';\n\nconst VCDisplayCardCategoryType: React.FC<{ categoryType?: LCCategoryEnum }> = ({\n categoryType = LCCategoryEnum.achievement,\n}) => {\n const categoryColor = getCategoryColor(categoryType);\n\n return (\n <span\n className={`uppercase font-poppins text-[12px] font-[600] leading-[12px] select-none text-${categoryColor}`}\n >\n {categoryType}\n </span>\n );\n};\n\nexport default VCDisplayCardCategoryType;\n","import React from 'react';\n\nimport IDIcon from '../svgs/IDIcon';\nimport IDSleeve from '../../assets/images/id-sleeve.png';\nimport QRCodeIcon from '../svgs/QRCodeIcon';\nimport UnknownVerifierBadge from '../svgs/UnknownVerifierBadge';\nimport VerifiedBadge from '../svgs/VerifiedBadge';\nimport PersonBadge from '../svgs/PersonBadge';\nimport RedFlag from '../svgs/RedFlag';\n\nimport { getInfoFromCredential } from '../../helpers/credential.helpers';\n\nimport { VC } from '@learncard/types';\nimport { BoostAchievementCredential } from '../../types';\nimport TruncateTextBox from './TruncateTextBox';\n\ntype VCIDDisplayFrontFaceProps = {\n isFront: boolean;\n setIsFront: (value: boolean) => void;\n showDetailsBtn?: boolean;\n credential: VC | BoostAchievementCredential;\n trustedAppRegistry?: any[];\n customThumbComponent?: React.ReactNode;\n hideQRCode?: boolean;\n qrCodeOnClick?: () => void;\n customIDDescription?: React.ReactNode;\n};\n\nconst VERIFIER_STATES = {\n selfVerified: 'Self Verified',\n trustedVerifier: 'Trusted Verifier',\n unknownVerifier: 'Unknown Verifier',\n untrustedVerifier: 'Untrusted Verifier',\n} as const;\ntype VerifierState = (typeof VERIFIER_STATES)[keyof typeof VERIFIER_STATES];\n\nconst VCIDDisplayFrontFace: React.FC<VCIDDisplayFrontFaceProps> = ({\n isFront,\n setIsFront,\n showDetailsBtn,\n credential,\n trustedAppRegistry,\n customThumbComponent,\n hideQRCode = false,\n qrCodeOnClick,\n customIDDescription,\n}) => {\n const { credentialSubject } = getInfoFromCredential(credential, 'MMM dd, yyyy', {\n uppercaseDate: false,\n });\n\n const issuerDid =\n typeof credential.issuer === 'string' ? credential.issuer : credential.issuer.id;\n\n let verifierState: VerifierState;\n if (credentialSubject?.id === issuerDid && issuerDid && issuerDid !== 'did:example:123') {\n // the extra \"&& issuerDid\" is so that the credential preview doesn't say \"Self Verified\"\n // the did:example:123 condition is so that we don't show this status from the Manage Boosts tab\n verifierState = VERIFIER_STATES.selfVerified;\n } else {\n const appRegistryEntry = trustedAppRegistry?.find(\n registryEntry => registryEntry.did === issuerDid\n );\n\n if (appRegistryEntry) {\n verifierState = appRegistryEntry.isTrusted\n ? VERIFIER_STATES.trustedVerifier\n : VERIFIER_STATES.untrustedVerifier;\n } else {\n verifierState = VERIFIER_STATES.unknownVerifier;\n }\n }\n const isSelfVerified = verifierState === VERIFIER_STATES.selfVerified;\n\n const achievement =\n 'achievement' in credential?.credentialSubject\n ? credential?.credentialSubject?.achievement\n : undefined;\n const description = achievement?.description;\n\n return (\n <section className=\"vc-front-face w-full flex flex-col items-center gap-[15px]\">\n {/* <div className=\"w-[380px] h-[211px] bg-red-300\" /> */}\n\n {customThumbComponent && customThumbComponent}\n\n <div className=\"text-white w-full flex items-center justify-center font-poppins\">\n <IDIcon className=\"text-white mr-1\" /> ID\n </div>\n\n <div className=\"w-full relative\">\n {!hideQRCode && (\n <button\n onClick={() => qrCodeOnClick?.()}\n className=\"text-grayscale-900 bg-white rounded-full p-[10px] absolute top-[-10px] right-[45%]\"\n >\n <QRCodeIcon className=\"text-grayscale-900 \" />\n </button>\n )}\n <img src={IDSleeve} alt=\"id-sleeve\" className=\"w-full object-cover\" />\n </div>\n\n <div className=\"w-full bg-white relative mt-[-70px] px-6 pb-4 pt-4\">\n {description && !customIDDescription && (\n <>\n <TruncateTextBox\n text={description}\n className=\"description-box\"\n containerClassName=\"!p-0 !shadow-none !text-center !w-full\"\n textClassName=\"!font-poppins !text-base !text-grayscale-700 !text-center !w-full\"\n truncateThreshold={204}\n />\n </>\n )}\n\n {customIDDescription && customIDDescription}\n\n {isFront && showDetailsBtn && (\n <button\n type=\"button\"\n className=\"vc-toggle-side-button text-white shadow-bottom bg-[#00000099] px-[30px] py-[8px] rounded-[40px] text-[28px] tracking-[0.75px] uppercase leading-[28px] mt-[25px] w-fit select-none\"\n onClick={() => setIsFront(!isFront)}\n >\n Details\n </button>\n )}\n\n <div className=\"w-full flex items-center justify-center mt-4\">\n <div className=\"h-[2px] w-full bg-gray-200\" />\n </div>\n\n <div className=\"w-full flex items-center justify-center mt-2\">\n {isSelfVerified && (\n <span className=\"uppercase font-poppins text-base font-[500] text-green-dark flex gap-[3px] items-center\">\n <PersonBadge className=\"w-[20px] h-[20px]\" />\n Self Verified\n </span>\n )}\n {verifierState === VERIFIER_STATES.trustedVerifier && (\n <span className=\"uppercase font-poppins text-base font-[500] text-blue-light flex gap-[3px] items-center\">\n <VerifiedBadge className=\"w-[20px] h-[20px]\" />\n Trusted Verifier\n </span>\n )}\n {verifierState === VERIFIER_STATES.unknownVerifier && (\n <span className=\"uppercase font-poppins text-base font-[500] text-orange-500 flex gap-[3px] items-center\">\n <UnknownVerifierBadge className=\"w-[20px] h-[20px]\" />\n Unknown Verifier\n </span>\n )}\n {verifierState === VERIFIER_STATES.untrustedVerifier && (\n <span className=\"uppercase font-poppins text-base font-[500] text-red-mastercard flex gap-[3px] items-center\">\n <RedFlag className=\"w-[20px] h-[20px]\" />\n Untrusted Verifier\n </span>\n )}\n </div>\n </div>\n </section>\n );\n};\n\nexport default VCIDDisplayFrontFace;\n","import React, { useState } from 'react';\nimport { Flipper, Flipped } from 'react-flip-toolkit';\n\nimport VC2BackFace from './VC2BackFace';\nimport VCIDDisplayFrontFace from './VCIDDisplayFrontFace';\n\nimport {\n BoostAchievementCredential,\n IssueHistory,\n MediaMetadata,\n VideoMetadata,\n} from '../../types';\nimport { VC, VerificationItem } from '@learncard/types';\n\nexport type VCIDDisplayCardProps = {\n credential: VC | BoostAchievementCredential;\n verificationItems: VerificationItem[];\n getFileMetadata?: (url: string) => MediaMetadata;\n getVideoMetadata?: (url: string) => VideoMetadata;\n onMediaAttachmentClick?: (url: string, type: 'photo' | 'document' | 'video' | 'link') => void;\n customThumbComponent?: React.ReactNode;\n customDescription?: React.ReactNode;\n customCriteria?: React.ReactNode;\n customIssueHistoryComponent?: React.ReactNode;\n issueHistory?: IssueHistory[];\n showBackButton?: boolean;\n enableLightbox?: boolean;\n trustedAppRegistry?: any[];\n customSkillsComponent?: React.ReactNode;\n isFrontOverride?: boolean;\n setIsFrontOverride?: (value: boolean) => void;\n hideNavButtons?: boolean;\n hideQRCode?: boolean;\n qrCodeOnClick?: () => void;\n showDetailsBtn?: boolean;\n customIDDescription?: React.ReactNode;\n hideGradientBackground?: boolean;\n};\n\nexport const VCIDDisplayCard: React.FC<VCIDDisplayCardProps> = ({\n credential,\n verificationItems,\n getFileMetadata,\n getVideoMetadata,\n onMediaAttachmentClick,\n customThumbComponent,\n customCriteria,\n customDescription,\n customIssueHistoryComponent,\n issueHistory,\n showBackButton = true,\n enableLightbox,\n trustedAppRegistry,\n customSkillsComponent,\n isFrontOverride,\n setIsFrontOverride,\n hideNavButtons,\n hideQRCode = false,\n qrCodeOnClick,\n showDetailsBtn = false,\n customIDDescription,\n hideGradientBackground = false,\n}) => {\n const [_isFront, _setIsFront] = useState<boolean>(isFrontOverride ?? true);\n const isFront = isFrontOverride ?? _isFront;\n const setIsFront = setIsFrontOverride ?? _setIsFront;\n\n let backgroundStyle = {\n backgroundColor: `linear-gradient(180deg, rgba(24,34,78,1) ${\n !isFront && hideGradientBackground ? '100%' : '25%'\n }, rgba(139,145,167,1) 100%)`,\n backgroundImage: `linear-gradient(180deg, rgba(24,34,78,1) ${\n !isFront && hideGradientBackground ? '100%' : '25%'\n }, rgba(139,145,167,1) 100%)`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundAttachment: 'fixed',\n };\n\n return (\n <Flipper className=\"w-full\" flipKey={isFront}>\n <Flipped flipId=\"card\">\n <section\n className={`vc-display-card font-mouse flex flex-col items-center border-solid border-white rounded-[30px] z-10 max-w-[400px] relative bg-white shadow-3xl ${\n isFront ? '' : 'min-h-[800px]'\n }`}\n >\n <div\n className=\"relative vc-card-content-container flex flex-col items-center grow min-h-0 w-full rounded-t-[30px] rounded-b-[30px] overflow-hidden\"\n style={backgroundStyle}\n >\n <Flipped flipId=\"scroll-container\">\n <div className=\"vc-card-content-scroll-container w-full min-h-full flex flex-col justify-start items-center rounded-t-[30px] rounded-b-[30px] scrollbar-hide pt-[20px]\">\n {isFront && (\n <Flipped flipId=\"face\">\n <VCIDDisplayFrontFace\n isFront={_isFront}\n setIsFront={setIsFront}\n showDetailsBtn={showDetailsBtn}\n customThumbComponent={customThumbComponent}\n credential={credential}\n trustedAppRegistry={trustedAppRegistry}\n qrCodeOnClick={qrCodeOnClick}\n hideQRCode={hideQRCode}\n customIDDescription={customIDDescription}\n />\n </Flipped>\n )}\n {!isFront && (\n <Flipped flipId=\"face\">\n <VC2BackFace\n credential={credential}\n verificationItems={verificationItems}\n issueHistory={issueHistory}\n getFileMetadata={getFileMetadata}\n getVideoMetadata={getVideoMetadata}\n onMediaAttachmentClick={onMediaAttachmentClick}\n showBackButton={\n (showBackButton && !hideNavButtons) ||\n showDetailsBtn\n }\n showFrontFace={() => setIsFront(true)}\n customDescription={customDescription}\n customCriteria={customCriteria}\n customIssueHistoryComponent={\n customIssueHistoryComponent\n }\n enableLightbox={enableLightbox}\n customSkillsComponent={customSkillsComponent}\n />\n </Flipped>\n )}\n </div>\n </Flipped>\n </div>\n </section>\n </Flipped>\n </Flipper>\n );\n};\n\nexport default VCIDDisplayCard;\n","import React, { useLayoutEffect, useRef, useState } from 'react';\nimport { Flipper, Flipped } from 'react-flip-toolkit';\n\nimport { VCVerificationCheckWithSpinner } from '../VCVerificationCheck/VCVerificationCheck';\nimport VC2FrontFaceInfo from './VC2FrontFaceInfo';\nimport VC2BackFace from './VC2BackFace';\nimport RibbonEnd from './RibbonEnd';\nimport FitText from './FitText';\nimport AwardRibbon from '../svgs/AwardRibbon';\nimport LeftArrow from '../svgs/LeftArrow';\nimport RoundedX from '../svgs/RoundedX';\nimport VCDisplayCardCategoryType from './VCDisplayCardCategoryType';\nimport VCDisplayCardSkillsCount from './VCDisplayCardSkillsCount';\nimport VCIDDisplayCard from './VCIDDIsplayCard';\n\nimport { Profile, VC, VerificationItem, VerificationStatusEnum } from '@learncard/types';\nimport {\n getColorForVerificationStatus,\n getInfoFromCredential,\n} from '../../helpers/credential.helpers';\nimport {\n BoostAchievementCredential,\n IssueHistory,\n LCCategoryEnum,\n MediaMetadata,\n VideoMetadata,\n} from '../../types';\nimport { CertificateDisplayCard } from '../CertificateDisplayCard';\n\nexport type CredentialIconType = {\n image?: React.ReactNode;\n color?: string;\n};\n\nexport type VCDisplayCard2Props = {\n categoryType?: LCCategoryEnum;\n credential: VC | BoostAchievementCredential;\n verificationItems: VerificationItem[];\n issueeOverride?: Profile;\n issuerOverride?: Profile;\n subjectDID?: string;\n subjectImageComponent?: React.ReactNode;\n issuerImageComponent?: React.ReactNode;\n verificationInProgress?: boolean;\n // convertTagsToSkills?: (tags: string[]) => { [skill: string]: string[] };\n handleXClick?: () => void;\n getFileMetadata?: (url: string) => MediaMetadata;\n getVideoMetadata?: (url: string) => VideoMetadata;\n onMediaAttachmentClick?: (url: string, type: 'photo' | 'document' | 'video' | 'link') => void;\n bottomRightIcon?: CredentialIconType;\n customFooterComponent?: React.ReactNode;\n customBodyCardComponent?: React.ReactNode;\n customThumbComponent?: React.ReactNode;\n customDescription?: React.ReactNode;\n customCriteria?: React.ReactNode;\n customIssueHistoryComponent?: React.ReactNode;\n issueHistory?: IssueHistory[];\n titleOverride?: string;\n showBackButton?: boolean;\n enableLightbox?: boolean;\n customRibbonCategoryComponent?: React.ReactNode;\n customFrontButton?: React.ReactNode;\n trustedAppRegistry?: any[];\n hideIssueDate?: boolean;\n onDotsClick?: () => void;\n customSkillsComponent?: React.ReactNode;\n isFrontOverride?: boolean;\n setIsFrontOverride?: (value: boolean) => void;\n hideNavButtons?: boolean;\n hideQRCode?: boolean;\n qrCodeOnClick?: () => void; // exclusive to the ID display type\n showDetailsBtn?: boolean;\n customIDDescription?: React.ReactNode;\n hideGradientBackground?: boolean;\n};\n\nexport const VCDisplayCard2: React.FC<VCDisplayCard2Props> = ({\n categoryType,\n credential,\n verificationItems,\n issueeOverride,\n issuerOverride,\n subjectDID,\n subjectImageComponent,\n issuerImageComponent,\n verificationInProgress = false,\n // convertTagsToSkills,\n handleXClick,\n getFileMetadata,\n getVideoMetadata,\n onMediaAttachmentClick,\n bottomRightIcon,\n customFooterComponent,\n customBodyCardComponent,\n customThumbComponent,\n customCriteria,\n customDescription,\n customIssueHistoryComponent,\n issueHistory,\n titleOverride,\n showBackButton = true,\n enableLightbox,\n customRibbonCategoryComponent,\n customFrontButton,\n trustedAppRegistry,\n hideIssueDate,\n onDotsClick,\n customSkillsComponent,\n isFrontOverride,\n setIsFrontOverride,\n hideNavButtons,\n hideQRCode = false,\n qrCodeOnClick,\n showDetailsBtn = false,\n customIDDescription,\n hideGradientBackground = false,\n}) => {\n const {\n title = '',\n createdAt,\n issuer: _issuer = '',\n issuee: _issuee = '',\n imageUrl,\n } = getInfoFromCredential(credential, 'MMM dd, yyyy');\n const issuee = issueeOverride || _issuee;\n const issuer = issuerOverride || _issuer;\n\n const [_isFront, _setIsFront] = useState(isFrontOverride ?? true);\n const isFront = isFrontOverride ?? _isFront;\n const setIsFront = setIsFrontOverride ?? _setIsFront;\n\n const [headerHeight, setHeaderHeight] = useState(100); // 79 is the height if the header is one line\n const [headerWidth, setHeaderWidth] = useState(0);\n\n const headerRef = useRef<HTMLHeadingElement>(null);\n\n useLayoutEffect(() => {\n // Needs a small setTimeout otherwise it'll be wrong sometimes with multiline header.\n // Probably because of the interaction with FitText\n setTimeout(() => {\n setHeaderHeight(headerRef.current?.clientHeight ?? 100);\n setHeaderWidth(headerRef.current?.clientWidth ?? 0);\n }, 10);\n });\n\n let worstVerificationStatus = verificationItems.reduce(\n (\n currentWorst: (typeof VerificationStatusEnum)[keyof typeof VerificationStatusEnum],\n verification\n ) => {\n switch (currentWorst) {\n case VerificationStatusEnum.Success:\n return verification.status;\n case VerificationStatusEnum.Error:\n return verification.status === VerificationStatusEnum.Failed\n ? verification.status\n : currentWorst;\n case VerificationStatusEnum.Failed:\n return currentWorst;\n }\n },\n VerificationStatusEnum.Success\n );\n\n const statusColor = getColorForVerificationStatus(worstVerificationStatus);\n\n const backgroundStyle = {\n backgroundColor: credential?.display?.backgroundColor,\n backgroundImage: credential?.display?.backgroundImage\n ? `linear-gradient(to bottom, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.25)), url(${credential.display?.backgroundImage})`\n : undefined,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundAttachment: 'fixed',\n };\n\n const _title = titleOverride || title;\n\n if (credential?.display?.displayType === 'certificate') {\n return (\n <CertificateDisplayCard\n credential={credential}\n categoryType={categoryType}\n issueeOverride={issuee}\n issuerOverride={issuer}\n verificationItems={verificationItems}\n getFileMetadata={getFileMetadata}\n getVideoMetadata={getVideoMetadata}\n onMediaAttachmentClick={onMediaAttachmentClick}\n enableLightbox={enableLightbox}\n trustedAppRegistry={trustedAppRegistry}\n handleXClick={handleXClick}\n subjectImageComponent={subjectImageComponent}\n issuerImageComponent={issuerImageComponent}\n customBodyCardComponent={customBodyCardComponent}\n hideIssueDate={hideIssueDate}\n onDotsClick={onDotsClick}\n isFrontOverride={isFrontOverride}\n setIsFrontOverride={setIsFrontOverride}\n hideNavButtons={hideNavButtons}\n showBackButton={showBackButton}\n showDetailsBtn={showDetailsBtn}\n />\n );\n } else if (credential?.display?.displayType === 'id' || categoryType === 'ID') {\n return (\n <div>\n <VCIDDisplayCard\n credential={credential}\n verificationItems={verificationItems}\n getFileMetadata={getFileMetadata}\n getVideoMetadata={getVideoMetadata}\n onMediaAttachmentClick={onMediaAttachmentClick}\n customThumbComponent={customThumbComponent}\n customCriteria={customCriteria}\n customDescription={customDescription}\n customIssueHistoryComponent={customIssueHistoryComponent}\n issueHistory={issueHistory}\n enableLightbox={enableLightbox}\n trustedAppRegistry={trustedAppRegistry}\n customSkillsComponent={customSkillsComponent}\n isFrontOverride={isFrontOverride}\n setIsFrontOverride={setIsFrontOverride}\n hideNavButtons={hideNavButtons}\n hideQRCode={hideQRCode}\n qrCodeOnClick={qrCodeOnClick}\n showBackButton={showBackButton}\n showDetailsBtn={showDetailsBtn}\n customIDDescription={customIDDescription}\n hideGradientBackground={hideGradientBackground}\n />\n </div>\n );\n }\n\n return (\n <Flipper className=\"w-full\" flipKey={isFront}>\n <Flipped flipId=\"card\">\n <section className=\"vc-display-card font-mouse flex flex-col items-center border-solid border-[5px] border-white rounded-[30px] z-10 min-h-[800px] max-w-[400px] relative bg-white shadow-3xl\">\n <RibbonEnd\n side=\"left\"\n className=\"absolute left-[-30px] top-[50px] z-0\"\n height={'100'}\n />\n <RibbonEnd\n side=\"right\"\n className=\"absolute right-[-30px] top-[50px] z-0\"\n height={'100'}\n />\n\n <h1\n ref={headerRef}\n className=\"vc-card-header px-[20px] pb-[10px] pt-[3px] overflow-visible mt-[40px] absolute text-center bg-white border-y-[5px] border-[#EEF2FF] shadow-bottom w-[calc(100%_+_16px)] rounded-t-[8px] z-50\"\n style={{ wordBreak: 'break-word' }}\n >\n {customRibbonCategoryComponent && customRibbonCategoryComponent}\n {!customRibbonCategoryComponent && (\n <VCDisplayCardCategoryType categoryType={categoryType} />\n )}\n\n <FitText\n text={_title ?? ''}\n maxFontSize={32}\n minFontSize={20}\n width={((headerWidth ?? 290) - 40).toString()}\n className=\"vc-card-header-main-title text-[#18224E] leading-[100%] text-shadow text-[32px]\"\n />\n </h1>\n\n {isFront && handleXClick && (\n <button\n className=\"vc-card-x-button absolute top-[-25px] bg-white rounded-full h-[50px] w-[50px] flex items-center justify-center z-50\"\n onClick={handleXClick}\n >\n <RoundedX />\n </button>\n )}\n\n <div\n className=\"relative pt-[114px] vc-card-content-container flex flex-col items-center grow min-h-0 w-full rounded-t-[30px] bg-[#353E64] rounded-b-[200px]\"\n style={backgroundStyle}\n >\n {/* \n div in a div here so that we can have an outer scroll container with an inner container\n that has a rounded bottom at the bottom of the scrollable content \n */}\n <Flipped flipId=\"scroll-container\">\n <div className=\"vc-card-content-scroll-container w-full pt-[20px] min-h-full flex flex-col justify-start items-center rounded-t-[30px] rounded-b-[200px] scrollbar-hide pb-[50px]\">\n {isFront && (\n <Flipped flipId=\"face\">\n <VC2FrontFaceInfo\n issuee={issuee}\n subjectDID={subjectDID}\n issuer={issuer}\n title={title}\n subjectImageComponent={subjectImageComponent}\n issuerImageComponent={issuerImageComponent}\n customBodyCardComponent={customBodyCardComponent}\n customThumbComponent={customThumbComponent}\n createdAt={createdAt ?? ''}\n imageUrl={imageUrl}\n />\n </Flipped>\n )}\n {!isFront && (\n <Flipped flipId=\"face\">\n <VC2BackFace\n credential={credential}\n verificationItems={verificationItems}\n // convertTagsToSkills={convertTagsToSkills}\n issueHistory={issueHistory}\n getFileMetadata={getFileMetadata}\n getVideoMetadata={getVideoMetadata}\n onMediaAttachmentClick={onMediaAttachmentClick}\n showBackButton={\n (showBackButton && !hideNavButtons) ||\n showDetailsBtn\n }\n showFrontFace={() => setIsFront(true)}\n customDescription={customDescription}\n customCriteria={customCriteria}\n customIssueHistoryComponent={\n customIssueHistoryComponent\n }\n enableLightbox={enableLightbox}\n customSkillsComponent={customSkillsComponent}\n />\n </Flipped>\n )}\n\n {isFront && (\n <VCDisplayCardSkillsCount\n skills={credential?.skills}\n onClick={() => setIsFront(!isFront)}\n />\n )}\n\n {(!hideNavButtons || showDetailsBtn) && (\n <>\n {isFront && customFrontButton}\n {((isFront && !customFrontButton) ||\n (isFront && showDetailsBtn)) && (\n <Flipped flipId=\"details-back-button\">\n <button\n type=\"button\"\n className=\"vc-toggle-side-button text-white shadow-bottom bg-[#00000099] px-[30px] py-[8px] rounded-[40px] text-[28px] tracking-[0.75px] uppercase leading-[28px] mt-[40px] w-fit select-none\"\n onClick={() => setIsFront(!isFront)}\n >\n Details\n </button>\n </Flipped>\n )}\n {!isFront && (\n <Flipped flipId=\"details-back-button\">\n <button\n type=\"button\"\n className=\"vc-toggle-side-button text-white shadow-bottom bg-[#00000099] px-[30px] py-[8px] rounded-[40px] text-[28px] tracking-[0.75px] uppercase leading-[28px] mt-[40px] w-fit select-none\"\n onClick={() => setIsFront(!isFront)}\n >\n <span className=\"flex gap-[10px] items-center\">\n <LeftArrow />\n Back\n </span>\n </button>\n </Flipped>\n )}\n </>\n )}\n </div>\n </Flipped>\n </div>\n <footer className=\"vc-card-footer w-full flex justify-between p-[5px] mt-[5px]\">\n {customFooterComponent && customFooterComponent}\n {!customFooterComponent && (\n <>\n {worstVerificationStatus === VerificationStatusEnum.Failed ? (\n <div className=\"w-[40px]\" role=\"presentation\" />\n ) : (\n <VCVerificationCheckWithSpinner\n spinnerSize=\"40px\"\n size={'32px'}\n loading={verificationInProgress}\n />\n )}\n <div className=\"vc-footer-text font-montserrat flex flex-col items-center justify-center text-[12px] font-[700] leading-[15px] select-none\">\n <span className=\"text-[#4F4F4F]\">Verified Credential</span>\n <span\n className=\"vc-footer-status uppercase\"\n style={{ color: statusColor }}\n >\n {worstVerificationStatus}\n </span>\n </div>\n <div\n className=\"vc-footer-icon rounded-[20px] h-[40px] w-[40px] flex items-center justify-center overflow-hidden\"\n style={{ backgroundColor: bottomRightIcon?.color ?? '#6366F1' }}\n >\n {bottomRightIcon?.image ?? <AwardRibbon />}\n </div>\n </>\n )}\n </footer>\n </section>\n </Flipped>\n </Flipper>\n );\n};\n\nexport default VCDisplayCard2;\n"],"names":["React","useRef","useEffect","DefaultFace","this","useState","Lightbox","getBaseUrl","VideoIcon","Camera","GenericDocumentIcon","LinkIcon","prettyBytes","getColorForVerificationStatus","VerificationStatusEnum","AcuteCheckmark","ExclamationPoint","X","capitalize","InfoIcon","format","LeftArrow","SkillsBox","AlignmentsBox","truncateWithEllipsis","getNameFromProfile","getImageFromProfile","LCCategoryEnum","getCategoryColor","getInfoFromCredential","IDIcon","QRCodeIcon","IDSleeve","PersonBadge","VerifiedBadge","UnknownVerifierBadge","RedFlag","Flipper","Flipped","useLayoutEffect","CertificateDisplayCard","VCDisplayCardSkillsCount","VCVerificationCheckWithSpinner","AwardRibbon"],"mappings":"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"}