@learncard/react 2.8.57 → 2.8.59
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.
- package/dist/cjs/{BoostGenericCard-afe71d21.js → BoostGenericCard-d1263210.js} +2 -2
- package/dist/cjs/{BoostGenericCard-afe71d21.js.map → BoostGenericCard-d1263210.js.map} +1 -1
- package/dist/cjs/{CertDisplayCardSkillsCount-fdf378ba.js → CertDisplayCardSkillsCount-3278a389.js} +2 -2
- package/dist/cjs/{CertDisplayCardSkillsCount-fdf378ba.js.map → CertDisplayCardSkillsCount-3278a389.js.map} +1 -1
- package/dist/cjs/{CertificateDisplayCard-2e03854a.js → CertificateDisplayCard-4db351f6.js} +11 -8
- package/dist/{esm/CertificateDisplayCard-7ed890d5.js.map → cjs/CertificateDisplayCard-4db351f6.js.map} +1 -1
- package/dist/cjs/{MeritBadgeDisplayCard-34d49d60.js → MeritBadgeDisplayCard-98c7abba.js} +10 -7
- package/dist/cjs/MeritBadgeDisplayCard-98c7abba.js.map +1 -0
- package/dist/cjs/{MeritBadgeSkillsCount-c0fad39e.js → MeritBadgeSkillsCount-8c62d182.js} +2 -2
- package/dist/cjs/{MeritBadgeSkillsCount-c0fad39e.js.map → MeritBadgeSkillsCount-8c62d182.js.map} +1 -1
- package/dist/cjs/{VCCard-b49cc67a.js → VCCard-332b5566.js} +3 -3
- package/dist/cjs/{VCCard-b49cc67a.js.map → VCCard-332b5566.js.map} +1 -1
- package/dist/cjs/{VCDisplayBackFace-9783ffbb.js → VCDisplayBackFace-8cb54bca.js} +3 -3
- package/dist/cjs/{VCDisplayBackFace-9783ffbb.js.map → VCDisplayBackFace-8cb54bca.js.map} +1 -1
- package/dist/cjs/{VCDisplayCard-8bfdb4e1.js → VCDisplayCard-ee6af62e.js} +3 -3
- package/dist/cjs/{VCDisplayCard-8bfdb4e1.js.map → VCDisplayCard-ee6af62e.js.map} +1 -1
- package/dist/cjs/{VCDisplayCard2-455a7052.js → VCDisplayCard2-bb1a7ec2.js} +17 -11
- package/dist/cjs/VCDisplayCard2-bb1a7ec2.js.map +1 -0
- package/dist/cjs/{VCVerificationPill-657635e5.js → VCVerificationPill-5916fe9d.js} +2 -2
- package/dist/cjs/{VCVerificationPill-657635e5.js.map → VCVerificationPill-5916fe9d.js.map} +1 -1
- package/dist/cjs/{credential.helpers-58ab8ce7.js → credential.helpers-ab78cefb.js} +2 -2
- package/dist/cjs/{credential.helpers-58ab8ce7.js.map → credential.helpers-ab78cefb.js.map} +1 -1
- package/dist/cjs/index.js +12 -12
- package/dist/cjs/index13.js +12 -12
- package/dist/cjs/index21.js +4 -4
- package/dist/cjs/index3.js +4 -4
- package/dist/cjs/index38.js +10 -10
- package/dist/cjs/index39.js +4 -4
- package/dist/cjs/index40.js +5 -5
- package/dist/cjs/index41.js +6 -6
- package/dist/cjs/index42.js +1 -1
- package/dist/cjs/index45.js +2 -2
- package/dist/cjs/index6.js +4 -4
- package/dist/cjs/{types.esm-2bdf95c0.js → types.esm-5908b63f.js} +6 -4
- package/dist/cjs/types.esm-5908b63f.js.map +1 -0
- package/dist/esm/{BoostGenericCard-a0ab8c42.js → BoostGenericCard-1ba03755.js} +2 -2
- package/dist/esm/{BoostGenericCard-a0ab8c42.js.map → BoostGenericCard-1ba03755.js.map} +1 -1
- package/dist/esm/{CertDisplayCardSkillsCount-b54ec3da.js → CertDisplayCardSkillsCount-b48d509c.js} +2 -2
- package/dist/esm/{CertDisplayCardSkillsCount-b54ec3da.js.map → CertDisplayCardSkillsCount-b48d509c.js.map} +1 -1
- package/dist/esm/{CertificateDisplayCard-7ed890d5.js → CertificateDisplayCard-5fcc4b05.js} +11 -8
- package/dist/{cjs/CertificateDisplayCard-2e03854a.js.map → esm/CertificateDisplayCard-5fcc4b05.js.map} +1 -1
- package/dist/esm/{MeritBadgeDisplayCard-15ea9ba7.js → MeritBadgeDisplayCard-17973557.js} +10 -7
- package/dist/esm/MeritBadgeDisplayCard-17973557.js.map +1 -0
- package/dist/esm/{MeritBadgeSkillsCount-ad28942b.js → MeritBadgeSkillsCount-a96a4a93.js} +2 -2
- package/dist/esm/{MeritBadgeSkillsCount-ad28942b.js.map → MeritBadgeSkillsCount-a96a4a93.js.map} +1 -1
- package/dist/esm/{VCCard-4b7f73ca.js → VCCard-6d6b3bd5.js} +3 -3
- package/dist/esm/{VCCard-4b7f73ca.js.map → VCCard-6d6b3bd5.js.map} +1 -1
- package/dist/esm/{VCDisplayBackFace-3dcee2b3.js → VCDisplayBackFace-f8834916.js} +3 -3
- package/dist/esm/{VCDisplayBackFace-3dcee2b3.js.map → VCDisplayBackFace-f8834916.js.map} +1 -1
- package/dist/esm/{VCDisplayCard-6aded764.js → VCDisplayCard-8f1de79c.js} +3 -3
- package/dist/esm/{VCDisplayCard-6aded764.js.map → VCDisplayCard-8f1de79c.js.map} +1 -1
- package/dist/esm/{VCDisplayCard2-f0c627c2.js → VCDisplayCard2-8ac4bb93.js} +17 -11
- package/dist/esm/VCDisplayCard2-8ac4bb93.js.map +1 -0
- package/dist/esm/{VCVerificationPill-9ce269be.js → VCVerificationPill-d8305814.js} +2 -2
- package/dist/esm/{VCVerificationPill-9ce269be.js.map → VCVerificationPill-d8305814.js.map} +1 -1
- package/dist/esm/{credential.helpers-b69b3a17.js → credential.helpers-f0555631.js} +2 -2
- package/dist/esm/{credential.helpers-b69b3a17.js.map → credential.helpers-f0555631.js.map} +1 -1
- package/dist/esm/index.js +12 -12
- package/dist/esm/index13.js +12 -12
- package/dist/esm/index21.js +4 -4
- package/dist/esm/index3.js +4 -4
- package/dist/esm/index38.js +10 -10
- package/dist/esm/index39.js +4 -4
- package/dist/esm/index40.js +5 -5
- package/dist/esm/index41.js +6 -6
- package/dist/esm/index42.js +1 -1
- package/dist/esm/index45.js +2 -2
- package/dist/esm/index6.js +4 -4
- package/dist/esm/{types.esm-00c9f5ab.js → types.esm-d6b9a11e.js} +6 -4
- package/dist/esm/types.esm-d6b9a11e.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/package.json +3 -3
- package/dist/cjs/MeritBadgeDisplayCard-34d49d60.js.map +0 -1
- package/dist/cjs/VCDisplayCard2-455a7052.js.map +0 -1
- package/dist/cjs/types.esm-2bdf95c0.js.map +0 -1
- package/dist/esm/MeritBadgeDisplayCard-15ea9ba7.js.map +0 -1
- package/dist/esm/VCDisplayCard2-f0c627c2.js.map +0 -1
- package/dist/esm/types.esm-00c9f5ab.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeritBadgeDisplayCard-98c7abba.js","sources":["../../src/components/svgs/Smiley.tsx","../../src/components/MeritBadgeDisplayCard/AlignmentRow.tsx","../../src/components/MeritBadgeDisplayCard/InfoBox.tsx","../../src/components/MeritBadgeDisplayCard/AlignmentsBox.tsx","../../src/components/MeritBadgeDisplayCard/MediaAttachmentsBox.tsx","../../src/components/MeritBadgeDisplayCard/VerificationRow.tsx","../../src/components/MeritBadgeDisplayCard/VerificationsBox.tsx","../../src/components/MeritBadgeDisplayCard/TruncateTextBox.tsx","../../src/components/MeritBadgeDisplayCard/MeritBadgeBackFace.tsx","../../src/components/MeritBadgeDisplayCard/MeritBadgeCornerIcon.tsx","../../src/components/MeritBadgeDisplayCard/MeritBadgeRibbon.tsx","../../src/components/MeritBadgeDisplayCard/MeritBadgeImageDisplay.tsx","../../src/components/MeritBadgeDisplayCard/MeritBadgeProfileImageDisplay.tsx","../../src/components/MeritBadgeDisplayCard/MeritBadgeFrontFace.tsx","../../src/components/MeritBadgeDisplayCard/MeritBadgeDisplayCard.tsx"],"sourcesContent":["import React from 'react';\n\ntype SmileyProps = {\n className?: string;\n};\n\nconst Smiley: React.FC<SmileyProps> = ({ className = '' }) => {\n return (\n <svg\n width=\"35\"\n height=\"36\"\n viewBox=\"0 0 35 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n d=\"M17.5 30.7008C24.7487 30.7008 30.625 24.8245 30.625 17.5758C30.625 10.3271 24.7487 4.45081 17.5 4.45081C10.2513 4.45081 4.375 10.3271 4.375 17.5758C4.375 24.8245 10.2513 30.7008 17.5 30.7008Z\"\n stroke=\"#FBFBFC\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M23.1846 20.8566C22.608 21.8538 21.7792 22.6818 20.7815 23.2575C19.7837 23.8332 18.652 24.1362 17.5001 24.1362C16.3482 24.1363 15.2165 23.8332 14.2187 23.2576C13.2209 22.6819 12.3921 21.8539 11.8156 20.8567\"\n stroke=\"#FBFBFC\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12.5781 16.2086C13.3332 16.2086 13.9453 15.5965 13.9453 14.8414C13.9453 14.0864 13.3332 13.4742 12.5781 13.4742C11.823 13.4742 11.2109 14.0864 11.2109 14.8414C11.2109 15.5965 11.823 16.2086 12.5781 16.2086Z\"\n fill=\"#FBFBFC\"\n />\n <path\n d=\"M22.4219 16.2086C23.177 16.2086 23.7891 15.5965 23.7891 14.8414C23.7891 14.0864 23.177 13.4742 22.4219 13.4742C21.6668 13.4742 21.0547 14.0864 21.0547 14.8414C21.0547 15.5965 21.6668 16.2086 22.4219 16.2086Z\"\n fill=\"#FBFBFC\"\n />\n </svg>\n );\n};\n\nexport default Smiley;\n","import React from 'react';\nimport CaretRightFilled from '../../assets/images/CaretRightFilled.svg';\n\ntype AlignmentsRowProps = {\n url?: string\n name?: string\n framework?: string\n};\nconst AlignmentRow:React.FC<AlignmentsRowProps> = ({ \n url,\n name,\n framework\n }) => {\n return (\n <div className=\"flex flex-col gap-[5px] font-poppins text-[12px] bg-[#DBEAFE] rounded-[15px] border-b-[1px] border-grayscale-200 border-solid w-full p-[10px] last:border-0\">\n <h1 className=\"text-blue-800 font-semibold uppercase\">{framework}</h1>\n {/* this might need to change to a link depends on how it comes back after the api call */}\n <button className=\"flex\" onClick={() => window.open(url)}>\n <span className=\"text-left\">{name}</span>\n <img className=\"w-[20px] self-end\" src={CaretRightFilled} alt=\"right-caret\"/>\n </button>\n </div>\n );\n};\n\nexport default AlignmentRow;\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\n onClick={e => {\n e.stopPropagation();\n handleClose();\n }}\n className=\"text-indigo-500 font-[700] select-none\"\n >\n Close\n </button>\n </div>\n );\n};\n\nexport default InfoBox;\n","import React, { useState } from 'react';\n\nimport AlignmentRow from './AlignmentRow';\nimport InfoIcon from '../svgs/InfoIcon';\nimport InfoBox from './InfoBox';\n\ntype Alignment = {\n targetUrl: string;\n targetName: string;\n targetFramework: string;\n};\n\ntype AlignmentsBoxProps = {\n alignment: Alignment | Alignment[];\n style: 'MeritBadge' | 'boost';\n};\n\nconst AlignmentsBox: React.FC<AlignmentsBoxProps> = ({ alignment, style }) => {\n const [showInfo, setShowInfo] = useState(false);\n const alignmentText = `\n Alignments in your Open Badge credential link your achievement to established frameworks, standards, or competencies. \n Each alignment shows how your boost directly relates to skills, knowledge areas, and professional standards that are recognized in your field.\n `;\n\n const alignments = Array.isArray(alignment)\n ? alignment.map((object, index) => (\n <AlignmentRow\n key={index}\n url={object.targetUrl}\n name={object.targetName}\n framework={object.targetFramework}\n />\n ))\n : alignment && (\n <AlignmentRow\n url={alignment.targetUrl}\n name={alignment.targetName}\n framework={alignment.targetFramework}\n />\n );\n\n return (\n <div className=\"bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom p-[15px] w-full\">\n <div className=\"flex w-full items-center\">\n <h3\n className={\n style === 'MeritBadge'\n ? 'text-[17px] text-grayscale-900 font-poppins'\n : 'text-[22px] font-mouse'\n }\n >\n Alignments\n </h3>\n <button\n className=\"ml-auto\"\n onClick={e => {\n e.stopPropagation();\n setShowInfo(!showInfo);\n }}\n >\n <InfoIcon color={showInfo ? '#6366F1' : undefined} />\n </button>\n </div>\n {showInfo && <InfoBox text={alignmentText} handleClose={() => setShowInfo(false)} />}\n {alignments}\n </div>\n );\n};\n\nexport default AlignmentsBox;\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 console.log({ url });\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\n// Function to determine if the URL is from YouTube\nconst isYoutubeUrl = (url: string) => {\n const youtubeUrl = new URL(url);\n return youtubeUrl.hostname === 'www.youtube.com';\n};\n\n// Function to get the YouTube video ID from the URL\nconst getYoutubeVideoId = (url: string) => {\n const regex = /(?:\\?v=|\\.com\\/embed\\/)([^&]+)/;\n const match = url.match(regex);\n return match ? match[1] : '';\n};\n\n// Function to get the cover image URL for YouTube videos\nconst getCoverImageUrl = (youtubeWatchUrl: string) => {\n if (!isYoutubeUrl(youtubeWatchUrl)) {\n return ''; // Return an empty string if the URL is not a YouTube URL\n }\n\n const videoId = getYoutubeVideoId(youtubeWatchUrl);\n // Construct and return the URL for the video's cover image\n // This URL fetches the highest resolution image available\n return videoId ? `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg` : '';\n};\n\nconst defaultGetVideoMetadata = async (url: string) => {\n const isYoutube = isYoutubeUrl(url);\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 const coverImageUrl = getCoverImageUrl(url);\n\n if (fetchFailed) return { imageUrl: coverImageUrl };\n\n return {\n title: metadata.title,\n imageUrl: coverImageUrl,\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=\"bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full\">\n <h3 className=\"text-[17px] text-grayscale-900 font-poppins\">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\n innerContent = (\n <div\n className=\"bg-cover bg-no-repeat bg-center relative 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] h-full\"\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(${metadata?.imageUrl ?? ''\n })`\n : undefined,\n }}\n >\n {!metadata?.imageUrl && (\n <VideoIcon size=\"60\" className=\"m-auto\" />\n )}\n <div className=\"absolute bottom-[10px] left-[10px] z-10 flex items-center gap-[5px]\">\n {metadata?.imageUrl && <VideoIcon />}\n {metadata?.videoLength && (\n <span className=\"leading-[23px]\">\n {metadata.videoLength}\n </span>\n )}\n </div>\n </div>\n );\n } else {\n innerContent = (\n <div className=\"h-full w-full flex items-center justify-center\">\n <img className=\"object-cover h-full w-full\" src={media.url} />\n <Camera className=\"absolute bottom-[10px] 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 <div\n key={index}\n className=\"flex media-attachment-box bg-grayscale-100 items-center rounded-[15px] w-full\"\n >\n <button\n className=\"relative h-[80px] w-[80px] rounded-[15px] overflow-hidden flex-shrink-0\"\n onClick={e => {\n e.stopPropagation();\n handleMediaAttachmentClick(media.url, media.type);\n }}\n >\n {innerContent}\n </button>\n {title && (\n <div className=\"text-[12px] text-grayscale-900 font-poppins px-[10px] line-clamp-3\">\n {title}\n </div>\n )}\n </div>\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\n <div className=\"flex flex-col\">\n <span className=\"text-grayscale-900 font-[400]\">\n {docOrLink.title ?? 'No title'}\n </span>\n {docOrLink.type === 'document' && metadata && (\n <a\n href={docOrLink.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-grayscale-700 font-[500] text-[12px] font-poppins hover:underline\"\n onClick={e => e.stopPropagation()}\n >\n {fileExtension && (\n <span className=\"uppercase\">\n {fileExtension}\n </span>\n )}\n {fileExtension &&\n (numberOfPages || sizeInBytes) &&\n ' • '}\n {numberOfPages && (\n <span>\n {numberOfPages} page\n {numberOfPages === 1 ? '' : 's'}\n </span>\n )}\n {numberOfPages && sizeInBytes && ' • '}\n {sizeInBytes && (\n <span>{prettyBytes(sizeInBytes)}</span>\n )}\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-[500] text-[12px] font-poppins hover:underline\"\n onClick={e => e.stopPropagation()}\n >\n {baseUrl}\n </a>\n )}\n </div>\n </div>\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={e => {\n e.stopPropagation();\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, { 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] 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=\"text-[14px] text-grayscale-900 font-poppins\">{primaryText}</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=\"bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom p-[15px] w-full\">\n <div className=\"flex w-full items-center\">\n <h3 className=\"text-[17px] text-grayscale-900 font-poppins\">Verifications</h3>\n <button\n className=\"ml-auto\"\n onClick={e => {\n e.stopPropagation();\n setShowInfo(!showInfo);\n }}\n >\n <InfoIcon color={showInfo ? '#6366F1' : undefined} />\n </button>\n </div>\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, { 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\nconst TruncateTextBox: React.FC<TruncateTextBoxProps> = ({\n headerText,\n headerClassName = '',\n text,\n truncateThreshold = 132,\n children,\n className = 'truncate-text-box',\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 return (\n <div\n className={`${className} w-full bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom p-[15px]`}\n >\n <h3 className={`${headerClassName} text-[17px] text-grayscale-900 font-poppins`}>\n {headerText}\n </h3>\n\n <p className=\"text-[12px] text-grayscale-700 font-poppins mb-0 flex flex-col items-start\">\n {displayText}\n {truncated && (\n <>\n ...\n <button\n className=\"text-indigo-500 text-[12px]\"\n onClick={e => {\n e.stopPropagation();\n setShowFullText(true);\n }}\n >\n Show more\n </button>\n </>\n )}\n {needsTruncate && showFullText && (\n <button\n className=\"text-indigo-500 text-[12px]\"\n onClick={e => {\n e.stopPropagation();\n setShowFullText(false);\n }}\n >\n Show less\n </button>\n )}\n </p>\n\n {children}\n </div>\n );\n};\n\nexport default TruncateTextBox;\n","import React from 'react';\nimport { getCategoryDarkColor, getInfoFromCredential } from '../../helpers/credential.helpers';\nimport { VC, VerificationItem } from '@learncard/types';\nimport {\n BoostAchievementCredential,\n LCCategoryEnum,\n MediaMetadata,\n VideoMetadata,\n} from '../../types';\nimport VerificationsBox from './VerificationsBox';\nimport AlignmentsBox from './AlignmentsBox';\nimport TruncateTextBox from './TruncateTextBox';\nimport MediaAttachmentsBox from './MediaAttachmentsBox';\nimport SkillsBox from '../VCDisplayCard2/SkillsBox';\nimport LeftArrow from '../svgs/LeftArrow';\n\ntype MeritBadgeBackFaceProps = {\n isFront?: boolean;\n credential: VC | BoostAchievementCredential;\n categoryType?: LCCategoryEnum;\n verificationItems: VerificationItem[];\n customSkillsComponent?: React.ReactNode;\n\n getFileMetadata?: (url: string) => MediaMetadata;\n getVideoMetadata?: (url: string) => VideoMetadata;\n onMediaAttachmentClick?: (url: string, type: 'photo' | 'document' | 'video' | 'link') => void;\n enableLightbox?: boolean;\n showBackButton?: boolean;\n handleViewFrontFace?: () => void;\n customLinkedCredentialsComponent?: React.ReactNode;\n};\n\nexport const MeritBadgeBackFace: React.FC<MeritBadgeBackFaceProps> = ({\n credential,\n categoryType,\n verificationItems,\n customSkillsComponent,\n\n getFileMetadata,\n getVideoMetadata,\n onMediaAttachmentClick,\n enableLightbox,\n showBackButton,\n handleViewFrontFace,\n customLinkedCredentialsComponent,\n}) => {\n const { createdAt, credentialSubject } = getInfoFromCredential(credential, 'MMM dd, yyyy', {\n uppercaseDate: false,\n });\n\n const { description } = credentialSubject?.achievement ?? {};\n const criteria = credentialSubject?.achievement?.criteria?.narrative;\n const alignment = credentialSubject?.achievement?.alignment;\n\n const credentialDarkColor = getCategoryDarkColor(categoryType);\n\n let bgColor = `bg-${credentialDarkColor}`;\n\n if (categoryType === LCCategoryEnum.accommodations) {\n bgColor = 'bg-amber-700';\n } else if (categoryType === LCCategoryEnum.accomplishments) {\n bgColor = 'bg-lime-700';\n }\n\n return (\n <div\n role=\"button\"\n onClick={() => handleViewFrontFace?.()}\n className={`flex flex-col gap-[15px] items-center border-[5px] border-solid border-grayscale-200 py-[30px] px-[20px] rounded-[25px] max-w-[400px] ${bgColor}`}\n >\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={() => handleViewFrontFace?.()}\n >\n <LeftArrow className=\"text-white\" size=\"25\" />\n Details\n </button>\n </div>\n ) : (\n <h1 className=\"text-white text-center text-[22px] font-jacques\">Details</h1>\n )}\n\n <TruncateTextBox headerText=\"About\" text={description}>\n <span\n className={`text-grayscale-600 font-poppins text-[12px] font-[600] w-full ${\n description\n ? 'pt-[10px] border-t-[1px] border-solid border-grayscale-200'\n : ''\n }`}\n >\n Awarded on {createdAt}\n </span>\n </TruncateTextBox>\n\n {criteria && <TruncateTextBox headerText=\"Criteria\" text={criteria} />}\n\n {customLinkedCredentialsComponent && customLinkedCredentialsComponent}\n\n {(credential.skills?.length ?? 0) > 0 &&\n (customSkillsComponent ? (\n customSkillsComponent\n ) : (\n <SkillsBox skills={credential.skills ?? []} />\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\n {alignment && <AlignmentsBox alignment={alignment} style=\"MeritBadge\" />}\n\n {verificationItems && verificationItems.length > 0 && (\n <VerificationsBox verificationItems={verificationItems} />\n )}\n\n {/* so that tailwind will put these colors in the css */}\n <span className=\"hidden bg-amber-700 bg-spice-700 bg-rose-700 bg-yellow-700 bg-teal-700\"></span>\n </div>\n );\n};\n\nexport default MeritBadgeBackFace;\n","import React from 'react';\nimport RoundedCorner from '../svgs/RoundedCorner';\nimport { getCategoryIcon, getCategoryLightColor } from '../../helpers/credential.helpers';\nimport { LCCategoryEnum } from '../../types';\n\ntype MeritBadgeCornerIconProps = {\n categoryType: LCCategoryEnum;\n position: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n};\n\nconst MeritBadgeCornerIcon: React.FC<MeritBadgeCornerIconProps> = ({ categoryType, position }) => {\n const credentialPrimaryColor = getCategoryLightColor(categoryType);\n const credentialIcon = getCategoryIcon(categoryType, '25');\n\n let iconPositionClassName, cornerPositionClassName;\n switch (position) {\n case 'top-left':\n iconPositionClassName = 'top-[3px] left-[3px] pb-[10px] pr-[10px] pl-[4px] pt-[4px]';\n cornerPositionClassName = 'bottom-[-1px] right-0';\n break;\n case 'top-right':\n iconPositionClassName = 'top-[3px] right-[3px] pl-[10px] pb-[10px] pr-[4px] pt-[4px]';\n cornerPositionClassName = 'bottom-[-1px] left-0 rotate-90';\n break;\n case 'bottom-left':\n iconPositionClassName = 'bottom-[3px] left-[3px] pr-[10px] pt-[10px] pl-[4px] pb-[4px]';\n cornerPositionClassName = 'top-0 right-0 rotate-[270deg]';\n break;\n case 'bottom-right':\n iconPositionClassName =\n 'bottom-[3px] right-[3px] pl-[10px] pt-[10px] pr-[4px] pb-[4px]';\n cornerPositionClassName = 'top-[-1px] left-0 rotate-180';\n break;\n }\n\n return (\n <div\n className={`text-${credentialPrimaryColor} rounded-full bg-white absolute ${iconPositionClassName}`}\n >\n {credentialIcon}\n <RoundedCorner className={`absolute ${cornerPositionClassName}`} />\n </div>\n );\n};\n\nexport default MeritBadgeCornerIcon;\n","import React from 'react';\n\ntype MeritBadgeRibbonProps = {\n className?: string;\n image: string;\n};\n\nconst MeritBadgeRibbon: React.FC<MeritBadgeRibbonProps> = ({ className = '', image }) => {\n return (\n <svg\n width=\"207\"\n height=\"170\"\n viewBox=\"0 0 207 170\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <g filter=\"url(#filter0_d_10755_290433)\">\n <circle cx=\"102.988\" cy=\"83\" r=\"81.5\" fill=\"white\" stroke=\"white\" strokeWidth=\"3\" />\n <path\n d=\"M3.94446 50C3.41654 50 2.92748 50.2775 2.65674 50.7307C2.38599 51.1839 2.37343 51.7461 2.62365 52.211L19.4659 83.5L2.62365 114.789C2.37343 115.254 2.386 115.816 2.65674 116.269C2.92748 116.722 3.41654 117 3.94446 117L203.056 117C203.583 117 204.073 116.722 204.343 116.269C204.614 115.816 204.627 115.254 204.376 114.789L187.534 83.5L204.376 52.211C204.627 51.7461 204.614 51.1839 204.343 50.7307C204.073 50.2775 203.583 50 203.056 50L3.94446 50Z\"\n fill=\"currentColor\"\n stroke=\"white\"\n strokeWidth=\"3\"\n strokeLinejoin=\"round\"\n />\n <rect\n x=\"25.3273\"\n y=\"5.34741\"\n width=\"156.6\"\n height=\"156.6\"\n rx=\"78.2999\"\n fill=\"#FBFBFC\"\n />\n <rect\n x=\"25.3273\"\n y=\"5.34741\"\n width=\"156.6\"\n height=\"156.6\"\n rx=\"78.2999\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n />\n <rect x=\"29.8273\" y=\"9.84741\" width=\"147.6\" height=\"147.6\" fill=\"none\" />\n </g>\n\n <clipPath id=\"circleClip\">\n <circle cx=\"103.5\" cy=\"84\" r=\"75\" />\n </clipPath>\n <image\n xlinkHref={image}\n x=\"28.5\"\n y=\"9\"\n width=\"150\"\n height=\"150\"\n clipPath=\"url(#circleClip)\"\n />\n\n <defs>\n <filter\n id=\"filter0_d_10755_290433\"\n x=\"0.944458\"\n y=\"0\"\n width=\"205.111\"\n height=\"170\"\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.2 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_10755_290433\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_10755_290433\"\n result=\"shape\"\n />\n </filter>\n </defs>\n </svg>\n );\n return (\n <svg\n width=\"167\"\n height=\"131\"\n viewBox=\"0 0 167 131\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <circle cx=\"83.1426\" cy=\"65.5\" r=\"64\" fill=\"white\" stroke=\"white\" strokeWidth=\"3\" />\n <path\n d=\"M29.3926 3.70096C28.9354 3.437 28.3731 3.43281 27.912 3.68993C27.4509 3.94705 27.159 4.42762 27.1432 4.95531L26.3214 32.5274L2.85421 47.0252C2.40508 47.3026 2.13488 47.7958 2.14274 48.3236C2.15061 48.8515 2.43538 49.3363 2.89258 49.6003L137.608 127.378C138.065 127.642 138.627 127.646 139.088 127.389C139.549 127.132 139.841 126.651 139.857 126.124L140.679 98.5517L164.146 84.0539C164.595 83.7764 164.865 83.2833 164.857 82.7554C164.85 82.2276 164.565 81.7427 164.108 81.4787L29.3926 3.70096Z\"\n fill=\"#622599\"\n stroke=\"white\"\n strokeWidth=\"3\"\n strokeLinejoin=\"round\"\n />\n <rect x=\"22.1426\" y=\"4.5\" width=\"123\" height=\"123\" rx=\"61.5\" fill=\"white\" />\n <rect\n x=\"22.1426\"\n y=\"4.5\"\n width=\"123\"\n height=\"123\"\n rx=\"61.5\"\n stroke=\"#622599\"\n strokeWidth=\"3\"\n />\n <rect\n x=\"28.6426\"\n y=\"11\"\n width=\"110\"\n height=\"110\"\n rx=\"55\"\n stroke=\"#622599\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray=\"5 5\"\n />\n <rect x=\"33.6426\" y=\"16\" width=\"100\" height=\"100\" fill=\"none\" />\n <defs>\n <pattern\n id=\"pattern0_10101_43072\"\n patternContentUnits=\"objectBoundingBox\"\n width=\"1\"\n height=\"1\"\n >\n <use xlinkHref=\"#image0_10101_43072\" transform=\"scale(0.00416667)\" />\n </pattern>\n </defs>\n </svg>\n );\n};\n\nexport default MeritBadgeRibbon;\n","import React from 'react';\nimport MeritBadgeRibbon from './MeritBadgeRibbon';\n\ntype MeritBadgeImageDisplayProps = {\n imageUrl: string;\n className?: string;\n};\n\nconst MeritBadgeImageDisplay: React.FC<MeritBadgeImageDisplayProps> = ({\n imageUrl,\n className = '',\n}) => {\n return (\n <div\n className={`flex items-center justify-center w-[176px] h-[176px] rounded-full bg-white z-50 ${className}`}\n >\n <MeritBadgeRibbon className=\"absolute z-[1]\" image={imageUrl} />\n </div>\n );\n};\n\nexport default MeritBadgeImageDisplay;\n","import React from 'react';\nimport IssuerSeal from '../svgs/IssuerSeal';\nimport { UserProfilePicture } from '../UserProfilePicture';\n\ntype MeritBadgeProfileImageDisplayProps = {\n imageUrl?: string;\n imageComponent?: React.ReactNode;\n showSeal?: boolean;\n className?: string;\n size?: string;\n userName?: string;\n};\n\nconst MeritBadgeProfileImageDisplay: React.FC<MeritBadgeProfileImageDisplayProps> = ({\n imageUrl,\n showSeal = false,\n className = '',\n imageComponent,\n size = 'big',\n userName,\n}) => {\n const imageClassName = `${\n size === 'big' ? 'h-[60px] w-[60px]' : 'h-[39px] w-[39px]'\n } rounded-full overflow-hidden ${\n showSeal ? 'absolute border-[2px] border-solid border-grayscale-200' : ''\n }`;\n\n return (\n <div className={className}>\n {showSeal && (\n <div className=\"bg-white rounded-full p-[5px]\">\n <IssuerSeal size=\"58\" />\n </div>\n )}\n\n {imageComponent && <div className={imageClassName}>{imageComponent}</div>}\n {!imageComponent && (\n <UserProfilePicture\n customContainerClass={`${imageClassName} ${!imageUrl ? 'pt-[6px]' : ''}`}\n customImageClass=\"h-full w-full object-cover\"\n user={{ image: imageUrl, name: userName }}\n />\n )}\n </div>\n );\n};\n\nexport default MeritBadgeProfileImageDisplay;\n","import React from 'react';\n\nimport MeritBadgeCornerIcon from './MeritBadgeCornerIcon';\nimport MeritBadgeImageDisplay from './MeritBadgeImageDisplay';\nimport MeritBadgeSkillsCount from './MeritBadgeSkillsCount';\nimport MeritBadgeProfileImageDisplay from './MeritBadgeProfileImageDisplay';\n\nimport Smiley from '../svgs/Smiley';\nimport Line from '../svgs/Line';\n\nimport {\n getInfoFromCredential,\n getNameFromProfile,\n getImageFromProfile,\n getCategoryLightColor,\n getCategoryDarkColor,\n} from '../../helpers/credential.helpers';\n\nimport { VC, Profile } from '@learncard/types';\nimport { BoostAchievementCredential, LCCategoryEnum } from '../../types';\nimport VerifierStateBadgeAndText, {\n VerifierState,\n VERIFIER_STATES,\n} from '../CertificateDisplayCard/VerifierStateBadgeAndText';\nimport { KnownDIDRegistryType } from '../../types';\n\ntype MeritBadgeFrontFaceProps = {\n isFront?: boolean;\n credential: VC | BoostAchievementCredential;\n categoryType?: LCCategoryEnum;\n issuerOverride?: Profile;\n issueeOverride?: Profile;\n knownDIDRegistry?: KnownDIDRegistryType;\n subjectImageComponent?: React.ReactNode;\n issuerImageComponent?: React.ReactNode;\n customBodyCardComponent?: React.ReactNode;\n hideIssueDate?: boolean;\n handleViewBackFace?: () => void;\n showDetailsBtn?: boolean;\n formattedDisplayType?: string;\n customBodyContentSlot?: React.ReactNode;\n};\n\nexport const MeritBadgeFrontFace: React.FC<MeritBadgeFrontFaceProps> = ({\n isFront,\n credential,\n categoryType,\n issuerOverride,\n issueeOverride,\n knownDIDRegistry,\n subjectImageComponent,\n issuerImageComponent,\n customBodyCardComponent,\n hideIssueDate,\n handleViewBackFace,\n showDetailsBtn = false,\n formattedDisplayType,\n customBodyContentSlot,\n}) => {\n const {\n title = '',\n createdAt,\n issuer: _issuer = '',\n issuee: _issuee = '',\n credentialSubject,\n imageUrl,\n } = getInfoFromCredential(credential, 'MMM dd, yyyy', { uppercaseDate: false });\n\n const issuee = issueeOverride || _issuee;\n const issuer = issuerOverride || _issuer;\n\n const { description } = credentialSubject?.achievement ?? {};\n\n const credentialLightColor = getCategoryLightColor(categoryType); // 500\n const credentialDarkColor = getCategoryDarkColor(categoryType); // 700\n\n let categoryTitle: string | undefined = categoryType;\n\n let textLightColor = `text-${credentialLightColor}`;\n let textDarkColor = `text-${credentialDarkColor}`;\n let borderColor = `border-${credentialLightColor}`;\n\n if (categoryType === LCCategoryEnum.accommodations) {\n textLightColor = 'text-violet-500';\n textDarkColor = 'text-violet-700';\n borderColor = 'border-violet-500';\n } else if (categoryType === LCCategoryEnum.accomplishments) {\n textLightColor = 'text-yellow-500';\n textDarkColor = 'text-yellow-700';\n borderColor = 'border-yellow-500';\n categoryTitle = 'Portfolio';\n } else if (categoryType === LCCategoryEnum.learningHistory) {\n categoryTitle = 'Study';\n } else if (categoryType === LCCategoryEnum.workHistory) {\n categoryTitle = 'Experiences';\n textLightColor = 'text-cyan-500';\n textDarkColor = 'text-cyan-700';\n borderColor = 'border-cyan-500';\n }\n\n const issuerName = getNameFromProfile(issuer ?? '');\n const issueeName = getNameFromProfile(issuee ?? '');\n const issuerImage = getImageFromProfile(issuer ?? '');\n const issueeImage = getImageFromProfile(issuee ?? '');\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 if (knownDIDRegistry?.source === 'trusted') {\n verifierState = VERIFIER_STATES.trustedVerifier;\n } else if (knownDIDRegistry?.source === 'untrusted') {\n verifierState = VERIFIER_STATES.untrustedVerifier;\n } else if (knownDIDRegistry?.source === 'unknown') {\n verifierState = VERIFIER_STATES.unknownVerifier;\n } else {\n verifierState = VERIFIER_STATES.unknownVerifier;\n }\n }\n const isSelfVerified = verifierState === VERIFIER_STATES.selfVerified;\n\n const issueeImageExists = issueeImage || subjectImageComponent;\n\n return (\n <section\n role=\"button\"\n onClick={() => handleViewBackFace?.()}\n className=\"relative p-[13px] mt-[68px] bg-white border-[5px] rounded-[30px] border-soid border-grayscale-200 min-w-[295px]\"\n >\n <div className=\"w-[calc(100%-26px)] absolute top-[-72px]\">\n <MeritBadgeImageDisplay\n imageUrl={imageUrl ?? ''}\n className={`mx-auto ${textLightColor}`}\n />\n </div>\n\n <div\n className={`flex flex-col gap-[15px] items-center px-[20px] pt-[92px] pb-[19px] border-solid border-[4px] ${borderColor} rounded-[30px]`}\n >\n <div className=\"flex flex-col gap-[5px] w-full\">\n <div className=\"flex flex-col items-center text-grayscale-900\">\n <span className=\"text-[16px] leading-[150%] font-jacques\">\n {issueeName || <Line width=\"60\" />}\n </span>\n <span className=\"text-[14px] leading-[150%] font-jacques\">\n has met the requirements for\n </span>\n </div>\n <div className=\"flex flex-col items-center\">\n <h1 className=\"text-grayscale-900 text-center text-[25px] font-jacques w-full\">\n {title}\n </h1>\n <div\n className={`${textLightColor} uppercase text-[14px] font-notoSans font-[600]`}\n >\n {formattedDisplayType}\n </div>\n </div>\n </div>\n {customBodyCardComponent}\n {issueeImageExists && !customBodyCardComponent && (\n <MeritBadgeProfileImageDisplay\n imageUrl={issueeImage}\n imageComponent={subjectImageComponent}\n className={`flex justify-center items-center ${textDarkColor}`}\n />\n )}\n {!issueeImageExists && !customBodyCardComponent && (\n <div className=\"h-[50px] w-[50px] rounded-full bg-grayscale-500 flex items-center justify-center\">\n <Smiley />\n </div>\n )}\n <div className=\"flex flex-col w-full\">\n <div className=\"text-[14px] text-grayscale-900 flex flex-col items-center w-full mb-[10px]\">\n <span className=\"font-jacques flex gap-[5px] items-center w-full overflow-ellipsis whitespace-nowrap overflow-hidden justify-center\">\n {issueeName === '0 person' ? (\n 'Not yet awarded'\n ) : (\n <>Awarded on {createdAt} by</>\n )}\n </span>\n </div>\n\n {/* <div className=\"flex flex-col gap-[10px] items-center\">\n <MeritBadgeSkillsCount\n skills={credential?.skills ?? []}\n onClick={handleViewBackFace}\n />\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={() => handleViewBackFace?.()}\n >\n Details\n </button>\n )}\n </div> */}\n\n <div className=\"flex flex-col gap-[5px] items-center w-full\">\n <span className=\"mb-[3px] pt-[3px] text-grayscale-900 text-[25px] leading-[90%] font-sacramento border-b-[1px] border-solid border-grayscale-200 w-full text-center overflow-ellipsis whitespace-normal scrollbar-hide\">\n {issuerName}\n </span>\n\n {/* <div className=\"flex flex-col text-[12px] text-grayscale-900 items-center\">\n <span className=\"font-jacques\">Troop Leader, Troop 1142</span>\n <span className=\"font-jacques\">Boy Scouts of America</span>\n </div> */}\n </div>\n </div>\n <MeritBadgeProfileImageDisplay\n imageUrl={issuerImage}\n userName={issuerName}\n imageComponent={issuerImageComponent}\n className={`w-[calc(100%-26px)] flex justify-center items-center ${textLightColor}`}\n size=\"small\"\n showSeal\n />\n {customBodyContentSlot && customBodyContentSlot}\n <div className={`${textLightColor} uppercase text-[14px] font-notoSans font-[600]`}>\n {categoryTitle}\n </div>\n </div>\n\n {categoryType && (\n <>\n <MeritBadgeCornerIcon categoryType={categoryType} position=\"top-left\" />\n <MeritBadgeCornerIcon categoryType={categoryType} position=\"top-right\" />\n <MeritBadgeCornerIcon categoryType={categoryType} position=\"bottom-left\" />\n <MeritBadgeCornerIcon categoryType={categoryType} position=\"bottom-right\" />\n </>\n )}\n\n <div className=\"absolute bottom-0 w-[calc(100%-26px)] flex justify-center\">\n <VerifierStateBadgeAndText\n verifierState={verifierState}\n className=\"bg-white px-[5px] pb-[5px]\"\n />\n </div>\n\n {/* so that tailwind will put these colors in the css */}\n <span className=\"hidden border-rose-500 text-spice-500 border-spice-500 border-cyan-500 text-cyan-500 border-indigo-500 border-sp-purple-base\"></span>\n </section>\n );\n};\n\nexport default MeritBadgeFrontFace;\n","import React, { useState } from 'react';\nimport { VC, Profile, VerificationItem } from '@learncard/types';\nimport {\n BoostAchievementCredential,\n LCCategoryEnum,\n MediaMetadata,\n VideoMetadata,\n} from '../../types';\nimport MeritBadgeFrontFace from './MeritBadgeFrontFace';\nimport MeritBadgeBackFace from './MeritBadgeBackFace';\nimport FatArrow from '../svgs/FatArrow';\nimport ThreeDots from '../../assets/images/DotsThreeOutline.svg';\nimport { KnownDIDRegistryType } from '../../types';\n\ntype MeritBadgeDisplayCardProps = {\n credential: VC | BoostAchievementCredential;\n categoryType?: LCCategoryEnum;\n verificationItems: VerificationItem[];\n issuerOverride?: Profile;\n issueeOverride?: Profile;\n knownDIDRegistry?: KnownDIDRegistryType;\n subjectImageComponent?: React.ReactNode;\n issuerImageComponent?: React.ReactNode;\n customBodyCardComponent?: React.ReactNode;\n hideIssueDate?: boolean;\n customSkillsComponent?: React.ReactNode;\n\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 handleXClick?: () => void;\n onDotsClick?: () => void;\n isFrontOverride?: boolean;\n setIsFrontOverride?: (value: boolean) => void;\n hideNavButtons?: boolean;\n showBackButton?: boolean;\n showDetailsBtn?: boolean;\n formattedDisplayType?: string;\n customLinkedCredentialsComponent?: React.ReactNode;\n customBodyContentSlot?: React.ReactNode;\n};\n\nexport const MeritBadgeDisplayCard: React.FC<MeritBadgeDisplayCardProps> = ({\n credential,\n categoryType,\n verificationItems,\n issuerOverride,\n issueeOverride,\n subjectImageComponent,\n issuerImageComponent,\n customBodyCardComponent,\n knownDIDRegistry,\n hideIssueDate,\n customSkillsComponent,\n\n getFileMetadata,\n getVideoMetadata,\n onMediaAttachmentClick,\n enableLightbox,\n\n handleXClick,\n onDotsClick,\n isFrontOverride,\n setIsFrontOverride,\n hideNavButtons,\n showBackButton = false,\n showDetailsBtn = false,\n formattedDisplayType,\n customLinkedCredentialsComponent,\n customBodyContentSlot,\n}) => {\n const [_isFront, _setIsFront] = useState(isFrontOverride ?? true);\n\n const isFront = isFrontOverride ?? _isFront;\n const setIsFront = setIsFrontOverride ?? _setIsFront;\n\n return (\n <section className=\"w-full flex flex-col gap-[15px] items-center justify-center relative min-w-[220px]\">\n <section className=\"max-w-[350px] w-full\">\n {isFront && (\n <MeritBadgeFrontFace\n credential={credential}\n categoryType={categoryType}\n issuerOverride={issuerOverride}\n issueeOverride={issueeOverride}\n knownDIDRegistry={knownDIDRegistry}\n subjectImageComponent={subjectImageComponent}\n issuerImageComponent={issuerImageComponent}\n customBodyCardComponent={customBodyCardComponent}\n hideIssueDate={hideIssueDate}\n handleViewBackFace={() => setIsFront(!isFront)}\n isFront={isFront}\n showDetailsBtn={showDetailsBtn}\n formattedDisplayType={formattedDisplayType}\n customBodyContentSlot={customBodyContentSlot}\n />\n )}\n\n {!isFront && (\n <MeritBadgeBackFace\n credential={credential}\n categoryType={categoryType}\n verificationItems={verificationItems}\n getFileMetadata={getFileMetadata}\n getVideoMetadata={getVideoMetadata}\n onMediaAttachmentClick={onMediaAttachmentClick}\n enableLightbox={enableLightbox}\n showBackButton={(showBackButton && !hideNavButtons) || showDetailsBtn}\n handleViewFrontFace={() => setIsFront(!isFront)}\n customLinkedCredentialsComponent={customLinkedCredentialsComponent}\n />\n )}\n\n {onDotsClick && (\n <button\n className=\"absolute right-[-20px] top-[-52px] bg-white rounded-full p-[10px] shadow-bottom\"\n onClick={onDotsClick}\n >\n <img\n alt=\"Menu dropdown icon\"\n className=\"h-[20px] w-[20px]\"\n src={ThreeDots}\n />\n </button>\n )}\n </section>\n\n {!hideNavButtons && (\n <div className=\"flex gap-[10px] font-mouse text-[30px] leading-[28px] tracking-[0.75px] relative top-[-10px] left-0 w-full\">\n {!isFront && (\n <button\n className=\"bg-grayscale-900 text-white py-[15px] px-[20px] rounded-[20px] flex mx-auto justify-center items-center gap-[5px] border-[3px] border-solid border-white\"\n onClick={() => setIsFront(!isFront)}\n >\n <FatArrow direction=\"left\" /> Back\n </button>\n )}\n\n {handleXClick && (\n <button\n onClick={handleXClick}\n className=\"bg-white text-grayscale-900 rounded-[20px] py-[15px] px-[20px] grow\"\n >\n Close\n </button>\n )}\n\n {isFront && (\n <button\n className=\"bg-grayscale-900 text-white py-[15px] px-[20px] rounded-[20px] mx-auto flex justify-center items-center gap-[5px] border-[3px] border-solid border-white\"\n onClick={() => setIsFront(!isFront)}\n >\n Details <FatArrow direction=\"right\" />\n </button>\n )}\n </div>\n )}\n </section>\n );\n};\n\nexport default MeritBadgeDisplayCard;\n"],"names":["React","CaretRightFilled","useState","InfoIcon","useEffect","attachments","videoMetadata","Lightbox","getBaseUrl","VideoIcon","Camera","GenericDocumentIcon","LinkIcon","prettyBytes","getColorForVerificationStatus","VerificationStatusEnum","AcuteCheckmark","ExclamationPoint","X","capitalize","getInfoFromCredential","getCategoryDarkColor","LCCategoryEnum","LeftArrow","SkillsBox","getCategoryLightColor","getCategoryIcon","RoundedCorner","IssuerSeal","UserProfilePicture","getNameFromProfile","getImageFromProfile","VERIFIER_STATES","Line","VerifierStateBadgeAndText","ThreeDots","FatArrow"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var PuzzlePiece = require('./PuzzlePiece-937c216a.js');
|
|
5
|
-
var credential_helpers = require('./credential.helpers-
|
|
5
|
+
var credential_helpers = require('./credential.helpers-ab78cefb.js');
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -37,4 +37,4 @@ const MeritBadgeSkillsCount = ({ skills, onClick }) => {
|
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
exports.MeritBadgeSkillsCount = MeritBadgeSkillsCount;
|
|
40
|
-
//# sourceMappingURL=MeritBadgeSkillsCount-
|
|
40
|
+
//# sourceMappingURL=MeritBadgeSkillsCount-8c62d182.js.map
|
package/dist/cjs/{MeritBadgeSkillsCount-c0fad39e.js.map → MeritBadgeSkillsCount-8c62d182.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeritBadgeSkillsCount-
|
|
1
|
+
{"version":3,"file":"MeritBadgeSkillsCount-8c62d182.js","sources":["../../src/components/MeritBadgeDisplayCard/MeritBadgeSkillsCount.tsx"],"sourcesContent":["import React from 'react';\n\nimport PuzzlePiece from '../svgs/PuzzlePiece';\n\nimport { categorizeSkills, getTotalCountOfSkills } from '../../helpers/credential.helpers';\n\n// Copy of VCDisplayCardSkillsCount, necessary to avoid circular dependency\nexport const MeritBadgeSkillsCount: React.FC<{\n skills: { category: string; skill: string; subSkills: string[] }[];\n onClick?: () => void;\n}> = ({ skills, onClick }) => {\n const skillsCount = getTotalCountOfSkills(skills);\n\n if (skillsCount === 0) return <></>;\n\n const skillsMap = categorizeSkills(skills);\n\n // Calculate total count of skills and subskills\n const totalSkills: any = Object.values(skillsMap).reduce(\n (total: any, category: any) => total + category?.length,\n 0\n );\n const totalSubskills: any = Object.values(skillsMap).reduce(\n (total: any, category: any) => total + (category?.totalSubskillsCount || 0),\n 0\n );\n\n const total: any = totalSkills + totalSubskills;\n\n const text: string = skillsCount === 1 ? 'Skill' : 'Skills';\n\n return (\n <div\n className=\"flex items-center justify-center mt-8 cursor-pointer px-4 py-2 bg-white rounded-[20px] shadow-bottom\"\n onClick={onClick}\n >\n <div className=\"text-violet-500 text-xl flex items-center justify-center tracking-[0.75px] font-poppins font-semibold\">\n +{total} {text}{' '}\n <div className=\"bg-violet-500 rounded-full flex items-center justify-center ml-2 h-[30px] w-[30px] p-1\">\n <PuzzlePiece className=\"text-white\" fill=\"#fff\" />\n </div>\n </div>\n </div>\n );\n};\n\nexport default MeritBadgeSkillsCount;\n"],"names":["getTotalCountOfSkills","React","categorizeSkills","total","PuzzlePiece"],"mappings":";;;;;;;;;;AAOO,MAAM,qBAGR,GAAA,CAAC,EAAE,MAAA,EAAQ,SAAc,KAAA;AAC1B,EAAM,MAAA,WAAA,GAAcA,yCAAsB,MAAM,CAAA,CAAA;AAEhD,EAAA,IAAI,WAAgB,KAAA,CAAA;AAAG,IAAA,uBAASC,yBAAA,CAAA,aAAA,CAAAA,yBAAA,CAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAEhC,EAAM,MAAA,SAAA,GAAYC,oCAAiB,MAAM,CAAA,CAAA;AAGzC,EAAA,MAAM,WAAmB,GAAA,MAAA,CAAO,MAAO,CAAA,SAAS,CAAE,CAAA,MAAA;AAAA,IAC9C,CAACC,MAAAA,EAAY,QAAkBA,KAAAA,MAAAA,IAAQ,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,MAAA,CAAA;AAAA,IACjD,CAAA;AAAA,GACJ,CAAA;AACA,EAAA,MAAM,cAAsB,GAAA,MAAA,CAAO,MAAO,CAAA,SAAS,CAAE,CAAA,MAAA;AAAA,IACjD,CAACA,MAAAA,EAAY,QAAkBA,KAAAA,MAAAA,IAAAA,CAAS,qCAAU,mBAAuB,KAAA,CAAA,CAAA;AAAA,IACzE,CAAA;AAAA,GACJ,CAAA;AAEA,EAAA,MAAM,QAAa,WAAc,GAAA,cAAA,CAAA;AAEjC,EAAM,MAAA,IAAA,GAAe,WAAgB,KAAA,CAAA,GAAI,OAAU,GAAA,QAAA,CAAA;AAEnD,EAAA,uBACKF,yBAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAA,IACG,SAAU,EAAA,sGAAA;AAAA,IACV,OAAA;AAAA,GAAA,kBAECA,yBAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAA,IAAI,SAAU,EAAA,uGAAA;AAAA,GAAA,EAAwG,GACjH,EAAA,KAAA,EAAM,GAAE,EAAA,IAAA,EAAM,qBACfA,yBAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAA,IAAI,SAAU,EAAA,wFAAA;AAAA,GAAA,kBACVA,yBAAA,CAAA,aAAA,CAAAG,uBAAA,EAAA;AAAA,IAAY,SAAU,EAAA,YAAA;AAAA,IAAa,IAAK,EAAA,MAAA;AAAA,GAAO,CACpD,CACJ,CACJ,CAAA,CAAA;AAER;;;;"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var init = require('@learncard/init');
|
|
5
|
-
var VCDisplayCard = require('./VCDisplayCard-
|
|
6
|
-
var VCDisplayCard2 = require('./VCDisplayCard2-
|
|
5
|
+
var VCDisplayCard = require('./VCDisplayCard-ee6af62e.js');
|
|
6
|
+
var VCDisplayCard2 = require('./VCDisplayCard2-bb1a7ec2.js');
|
|
7
7
|
|
|
8
8
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
9
|
|
|
@@ -76,4 +76,4 @@ const VCCard = ({
|
|
|
76
76
|
};
|
|
77
77
|
|
|
78
78
|
exports.VCCard = VCCard;
|
|
79
|
-
//# sourceMappingURL=VCCard-
|
|
79
|
+
//# sourceMappingURL=VCCard-332b5566.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VCCard-
|
|
1
|
+
{"version":3,"file":"VCCard-332b5566.js","sources":["../../src/components/VCCard/VCCard.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { initLearnCard } from '@learncard/init';\nimport { VC, Profile, VerificationItem } from '@learncard/types';\n\nimport { VCDisplayCard } from '../VCDisplayCard';\nimport {\n VCDisplayCard2,\n CredentialIconType,\n} from '../VCDisplayCard2';\n\nimport { MediaMetadata, VideoMetadata } from '../../types';\n\nexport type VCCardProps = {\n credential: VC;\n issueeOverride?: Profile;\n className?: string;\n version?: '1' | '2';\n\n /* Only used for version 2 */\n subjectImageComponent?: React.ReactNode;\n // convertTagsToSkills?: (tags: string[]) => { [skill: string]: string[] };\n handleXClick?: () => void;\n getFileMetadata?: (url: string) => MediaMetadata;\n getVideoMetadata?: (url: string) => VideoMetadata;\n onMediaAttachmentClick?: (url: string) => void;\n bottomRightIcon?: CredentialIconType;\n};\n\nexport const VCCard: React.FC<VCCardProps> = ({\n credential,\n issueeOverride,\n className = '',\n version = '1',\n subjectImageComponent,\n // convertTagsToSkills,\n handleXClick,\n getFileMetadata,\n getVideoMetadata,\n onMediaAttachmentClick,\n bottomRightIcon,\n}) => {\n const [loading, setLoading] = useState(true);\n const [vcVerification, setVCVerification] = useState<VerificationItem[]>([]);\n\n useEffect(() => {\n const verify = async () => {\n const wallet = await initLearnCard();\n const verification = await wallet.invoke.verifyCredential(credential, {}, true);\n setVCVerification(verification);\n setLoading(false);\n };\n\n verify();\n }, [credential]);\n\n if (version === '1') {\n return (\n <VCDisplayCard\n credential={credential}\n issueeOverride={issueeOverride}\n className={className}\n loading={loading}\n verification={vcVerification}\n />\n );\n }\n return (\n <VCDisplayCard2\n credential={credential}\n issueeOverride={issueeOverride}\n verificationInProgress={loading}\n verificationItems={vcVerification}\n subjectImageComponent={subjectImageComponent}\n // convertTagsToSkills={convertTagsToSkills}\n handleXClick={handleXClick}\n getFileMetadata={getFileMetadata}\n getVideoMetadata={getVideoMetadata}\n onMediaAttachmentClick={onMediaAttachmentClick}\n bottomRightIcon={bottomRightIcon}\n />\n );\n};\n\nexport default VCCard;\n"],"names":["useState","useEffect","initLearnCard","React","VCDisplayCard","VCDisplayCard2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,MAAM,SAAgC,CAAC;AAAA,EAC1C,UAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAY,GAAA,EAAA;AAAA,EACZ,OAAU,GAAA,GAAA;AAAA,EACV,qBAAA;AAAA,EAEA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA,eAAA;AACJ,CAAM,KAAA;AACF,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,IAAI,CAAA,CAAA;AAC3C,EAAA,MAAM,CAAC,cAAgB,EAAA,iBAAiB,CAAI,GAAAA,cAAA,CAA6B,EAAE,CAAA,CAAA;AAE3E,EAAAC,eAAA,CAAU,MAAM;AACZ,IAAA,MAAM,SAAS,MAAY,OAAA,CAAA,KAAA,CAAA,EAAA,IAAA,EAAA,aAAA;AACvB,MAAM,MAAA,MAAA,GAAS,MAAMC,kBAAc,EAAA,CAAA;AACnC,MAAM,MAAA,YAAA,GAAe,MAAM,MAAO,CAAA,MAAA,CAAO,iBAAiB,UAAY,EAAA,IAAI,IAAI,CAAA,CAAA;AAC9E,MAAA,iBAAA,CAAkB,YAAY,CAAA,CAAA;AAC9B,MAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAAA,KACpB,CAAA,CAAA;AAEA,IAAO,MAAA,EAAA,CAAA;AAAA,GACX,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AAEf,EAAA,IAAI,YAAY,GAAK,EAAA;AACjB,IAAA,uBACKC,yBAAA,CAAA,aAAA,CAAAC,2BAAA,EAAA;AAAA,MACG,UAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAc,EAAA,cAAA;AAAA,KAClB,CAAA,CAAA;AAAA,GAER;AACA,EAAA,uBACKD,yBAAA,CAAA,aAAA,CAAAE,6BAAA,EAAA;AAAA,IACG,UAAA;AAAA,IACA,cAAA;AAAA,IACA,sBAAwB,EAAA,OAAA;AAAA,IACxB,iBAAmB,EAAA,cAAA;AAAA,IACnB,qBAAA;AAAA,IAEA,YAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,sBAAA;AAAA,IACA,eAAA;AAAA,GACJ,CAAA,CAAA;AAER;;;;"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var VCVerificationCheck = require('./VCVerificationCheck-46fa75d3.js');
|
|
5
|
-
var VCVerificationPill = require('./VCVerificationPill-
|
|
5
|
+
var VCVerificationPill = require('./VCVerificationPill-5916fe9d.js');
|
|
6
6
|
var FlipArrowRight = require('./ArrowArcRight.svg');
|
|
7
|
-
var credential_helpers = require('./credential.helpers-
|
|
7
|
+
var credential_helpers = require('./credential.helpers-ab78cefb.js');
|
|
8
8
|
|
|
9
9
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
10
|
|
|
@@ -84,4 +84,4 @@ const VCDisplayBackFace = ({
|
|
|
84
84
|
};
|
|
85
85
|
|
|
86
86
|
exports.VCDisplayBackFace = VCDisplayBackFace;
|
|
87
|
-
//# sourceMappingURL=VCDisplayBackFace-
|
|
87
|
+
//# sourceMappingURL=VCDisplayBackFace-8cb54bca.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VCDisplayBackFace-
|
|
1
|
+
{"version":3,"file":"VCDisplayBackFace-8cb54bca.js","sources":["../../src/components/VCDisplayBackFace/VCDisplayBackFace.tsx"],"sourcesContent":["import React from 'react';\nimport { VCDisplayCardProps } from '../../types';\nimport { VCVerificationCheckWithText } from '../VCVerificationCheck/VCVerificationCheck';\nimport VCVerificationPill from '../VCVerificationPill/VCVerificationPill';\nimport FlipArrowRight from '../../assets/images/ArrowArcRight.svg';\nimport { getNameFromProfile } from '../../helpers/credential.helpers';\n\nexport const VCDisplayBackFace: React.FC<VCDisplayCardProps> = ({\n issuer,\n credentialSubject,\n className = '',\n loading,\n verification = [],\n handleClick,\n overrideDetailsComponent,\n}) => {\n const descriptionText = credentialSubject?.achievement?.description;\n const criteriaText = credentialSubject?.achievement?.criteria?.narrative;\n const issuerUrl = typeof issuer === 'object' ? issuer.url : '';\n const issuerName = getNameFromProfile(issuer ?? '');\n const defaultDetails = (\n <>\n <div className=\"width-full\">\n <h6 className=\"line-clamp-1 text-grayscale-900 font-bold uppercase text-xs tracking-wider subpixel-antialiased\">\n Description\n </h6>\n <p className=\"line-clamp-3 subpixel-antialiased text-grayscale-600 text-[14px] lc-line-clamp\">\n {descriptionText}\n </p>\n </div>\n\n <div className=\"width-full mt-[10px]\">\n <h6 className=\"line-clamp-1 text-grayscale-900 font-bold uppercase text-xs tracking-wider subpixel-antialiased\">\n Criteria\n </h6>\n <p className=\"line-clamp-3 subpixel-antialiased text-grayscale-600 text-[14px] lc-line-clamp\">\n {criteriaText}\n </p>\n </div>\n\n <div className=\"width-full mt-[10px] line-clamp-1 overflow-hidden vc-issuer-name-info\">\n <h6 className=\"line-clamp-1 text-grayscale-900 font-bold uppercase text-xs tracking-wider subpixel-antialiased\">\n Issuer\n </h6>\n <p className=\"max-w-[344px] line-clamp-1 subpixel-antialiased text-grayscale-600 text-[14px] block overflow-ellipsis break-all\">\n {issuerName}\n </p>\n </div>\n\n {issuerUrl && (\n <p className=\"text-indigo-500 font-bold text-xs width-full text-center mt-8\">\n {issuerUrl}\n </p>\n )}\n </>\n );\n\n const renderDetails = overrideDetailsComponent ? overrideDetailsComponent : defaultDetails;\n\n return (\n <div\n className={`z-[9] vc-display-main-card-back flex overflow-hidden flex-col items-center justify-between relative max-w-[400px] h-[100%] max-h-[1100px] min-h-[600px] p-7 rounded-3xl shadow-3xl bg-emerald-700 vc-display-card-full-container ${className}`}\n >\n <section className=\"flex max-h-[150px] items-end bg-white rounded-bl-[50%] rounded-br-[50%] absolute top-0 w-[110%] h-[55%] min-h-[400px]\"></section>\n <section className=\"flex flex-col items-center justify-center w-full z-10 text-left credential-details-container max-w-[100%] relative\">\n <section className=\"flex flex-row items-start justify-start w-full line-clamp-2\">\n <h3\n className=\"text-2xl line-clamp-2 tracking-wide leading-snug text-left text-emerald-700\"\n data-testid=\"vc-credential-details-title tracking-wide subpixel-antialiased\"\n >\n Credential Details\n </h3>\n </section>\n\n <section className=\"flex flex-col mt-2 w-full my-2 min-h-[200px] credential-details-info\">\n {renderDetails}\n </section>\n\n <div className=\"w-full mt-2\"></div>\n\n <button\n onClick={handleClick}\n className=\"vc-flip-btn bg-white my-3 border-2 text-indigo-500 font-semibold py-2 px-4 shadow-3xl rounded-full\"\n >\n <span className=\"flex justify-center\">\n <img\n className=\"h-8 w-8 my-0 mx-4 scale-x-[-1]\"\n src={FlipArrowRight ?? ''}\n alt=\"Flip Card\"\n />\n </span>\n </button>\n\n <section className=\"flex-col items-center justify-center checklist-container justify-center w-[100%] width-full mt-[20px]\">\n <VCVerificationCheckWithText loading={loading} />\n <section>\n {verification.map(item => (\n <VCVerificationPill\n key={item.check}\n status={item.status}\n message={item.message}\n details={item.details}\n />\n ))}\n </section>\n </section>\n </section>\n </div>\n );\n};\n\nexport default VCDisplayBackFace;\n"],"names":["getNameFromProfile","React","FlipArrowRight","VCVerificationCheckWithText","VCVerificationPill"],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@ var FlippyCard = require('./FlippyCard-209549c5.js');
|
|
|
5
5
|
var FatArrow = require('./icon.green.fat-arrow.png');
|
|
6
6
|
var UserProfilePicture = require('./UserProfilePicture-16b97343.js');
|
|
7
7
|
var VCVerificationCheck = require('./VCVerificationCheck-46fa75d3.js');
|
|
8
|
-
var credential_helpers = require('./credential.helpers-
|
|
9
|
-
var VCDisplayBackFace = require('./VCDisplayBackFace-
|
|
8
|
+
var credential_helpers = require('./credential.helpers-ab78cefb.js');
|
|
9
|
+
var VCDisplayBackFace = require('./VCDisplayBackFace-8cb54bca.js');
|
|
10
10
|
|
|
11
11
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
12
|
|
|
@@ -177,4 +177,4 @@ const VCDisplayCard = ({
|
|
|
177
177
|
};
|
|
178
178
|
|
|
179
179
|
exports.VCDisplayCard = VCDisplayCard;
|
|
180
|
-
//# sourceMappingURL=VCDisplayCard-
|
|
180
|
+
//# sourceMappingURL=VCDisplayCard-ee6af62e.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VCDisplayCard-8bfdb4e1.js","sources":["../../src/components/VCDisplayFrontFace/VCDisplayFrontFace.tsx","../../src/components/VCDisplayCard/VCDisplayCard.tsx"],"sourcesContent":["import React from 'react';\nimport FatArrow from '../../assets/images/icon.green.fat-arrow.png';\nimport UserProfilePicture from '../UserProfilePicture/UserProfilePicture';\nimport { VCVerificationCheckWithText } from '../VCVerificationCheck/VCVerificationCheck';\nimport { getImageFromProfile, getNameFromProfile } from '../../helpers/credential.helpers';\n\nimport { VCDisplayCardProps } from '../../types';\n\nconst VCDisplayFrontFace: React.FC<VCDisplayCardProps> = ({\n title,\n createdAt,\n issuer,\n issuee,\n subjectImageComponent,\n issuerImageComponent,\n hideProfileBubbles = false,\n credentialSubject,\n className = '',\n loading,\n handleClick,\n overrideCardImageComponent,\n overrideCardTitle,\n customHeaderComponent,\n}) => {\n const credentialAchievementImage =\n credentialSubject?.achievement?.image?.id || credentialSubject?.achievement?.image;\n const issuerName = getNameFromProfile(issuer ?? '');\n const issueeName = getNameFromProfile(issuee ?? '');\n const issuerImage = getImageFromProfile(issuer ?? '');\n const issueeImage = getImageFromProfile(issuee ?? '');\n\n let issueeImageEl: React.ReactNode | null = null;\n if (subjectImageComponent) {\n issueeImageEl = subjectImageComponent;\n } else {\n issueeImageEl = (\n <UserProfilePicture\n customContainerClass={`object-cover h-full w-full text-4xl ${\n !issueeImage ? 'pt-[8px]' : ''\n }`}\n user={{ image: issueeImage, name: issueeName }}\n alt=\"Issuee image\"\n />\n );\n }\n\n let issuerImageEl: React.ReactNode | null = null;\n\n if (issuerImageComponent) {\n issuerImageEl = issuerImageComponent;\n } else {\n issuerImageEl = (\n <UserProfilePicture\n customContainerClass={`object-cover h-full w-full text-4xl ${\n !issuerImage ? 'pt-[8px]' : ''\n }`}\n user={{ image: issuerImage, name: issuerName }}\n alt=\"Issuer image\"\n />\n );\n }\n\n const credImg = credentialAchievementImage ? (\n <img\n className=\"h-full w-full object-cover\"\n src={credentialAchievementImage ?? ''}\n alt=\"Credential Achievement Image\"\n />\n ) : (\n <></>\n );\n\n const renderCardImg = overrideCardImageComponent ? overrideCardImageComponent : credImg;\n const cardTitle = overrideCardTitle ? overrideCardTitle : title;\n\n return (\n <div\n className={`z-[9] vc-display-main-card-front flex overflow-hidden flex-col items-center justify-between relative max-w-[400px] h-[100%] min-h-[600px] p-7 rounded-3xl shadow-3xl bg-emerald-700 vc-display-card-full-container ${className}`}\n >\n <section className=\"bg-white rounded-bl-[50%] rounded-br-[50%] absolute top-0 w-[110%] h-[77%]\"></section>\n <section className=\"flex flex-col items-center justify-center z-10 text-center credential-thumb-img\">\n <section className=\"max-w-[100px] max-h-[100px]\">{renderCardImg}</section>\n\n <section className=\"flex flex-row w-full line-clamp-2\">\n <div className=\"flex flex-row w-full line-clamp-2 py-4 vc-flippy-card-title-front \">\n <h3\n className=\"vc-thumbnail-title w-full text-2xl line-clamp-2 tracking-wide leading-snug text-center vc-display-title text-gray-900 font-medium\"\n data-testid=\"vc-thumbnail-title\"\n >\n {cardTitle ?? ''}\n </h3>\n </div>\n\n {customHeaderComponent && customHeaderComponent}\n </section>\n\n <section className=\"flex flex-row items-center justify-center mt-2 w-full my-2 vc-card-issuer-thumbs\">\n {!hideProfileBubbles && (\n <>\n <div className=\"flex items-center justify-center h-16 w-16 shadow-3xl rounded-full overflow-hidden bg-white\">\n {issuerImageEl}\n </div>\n <img\n className=\"h-8 w-8 my-0 mx-4\"\n src={FatArrow ?? ''}\n alt=\"fat arrow icon\"\n />\n <div className=\"flex items-center justify-center h-16 w-16 shadow-3xl rounded-full overflow-hidden bg-white\">\n {issueeImageEl}\n </div>\n </>\n )}\n </section>\n\n <div className=\"w-full mt-2 vc-card-issued-to-info\">\n <p\n className=\"text-sm font-light text-center line-clamp-2 vc-display-issue-details text-gray-900\"\n data-testid=\"vc-thumbnail-createdAt\"\n >\n Issued to <span className=\"font-bold text-gray-900\">{issueeName}</span> on{' '}\n {createdAt ?? ''} by{' '}\n <span className=\"font-bold text-gray-900\"> {issuerName}</span>\n </p>\n </div>\n\n <button\n onClick={handleClick}\n className=\"cursor-alias bg-white my-3 border-0 text-indigo-500 font-semibold py-2 px-4 sl\"\n >\n <span className=\"flex justify-center\">\n <p className=\"flex items-center\">View Details</p>\n </span>\n </button>\n </section>\n\n <div className=\"flex items-center justify-center w-full\">\n <VCVerificationCheckWithText loading={loading} />\n </div>\n </div>\n );\n};\n\nexport default VCDisplayFrontFace;\n","import React, { useState } from 'react';\nimport { AchievementCredential, VC, Profile, VerificationItem } from '@learncard/types';\n\nimport FlippyCard from '../FlippyCard/FlippyCard';\nimport VCDisplayFrontFace from '../VCDisplayFrontFace/VCDisplayFrontFace';\nimport VCDisplayBackFace from '../VCDisplayBackFace/VCDisplayBackFace';\n\nimport { getInfoFromCredential } from '../../helpers/credential.helpers';\n\nconst FRONT_FACE = 'front';\nconst BACK_FACE = 'back';\n\nexport type VCDisplayCardPropsReal = {\n credential: VC | AchievementCredential;\n issueeOverride?: Profile;\n issuerOverride?: Profile;\n className?: string;\n hideProfileBubbles?: boolean;\n loading?: boolean;\n verification?: VerificationItem[];\n subjectImageComponent?: React.ReactNode;\n issuerImageComponent?: React.ReactNode;\n overrideDetailsComponent?: React.ReactNode;\n overrideCardTitle?: string;\n overrideCardImageComponent?: React.ReactNode;\n customHeaderComponent?: React.ReactNode;\n};\n\nexport const VCDisplayCard: React.FC<VCDisplayCardPropsReal> = ({\n credential,\n issueeOverride,\n issuerOverride,\n className = '',\n loading = false,\n verification = [],\n hideProfileBubbles = false,\n subjectImageComponent,\n issuerImageComponent,\n overrideDetailsComponent,\n overrideCardTitle,\n overrideCardImageComponent,\n customHeaderComponent,\n}) => {\n const [flipState, setFlipState] = useState(FRONT_FACE);\n const {\n title,\n createdAt,\n issuer: _issuer,\n issuee: _issuee,\n credentialSubject,\n } = getInfoFromCredential(credential);\n const issuee = issueeOverride || _issuee;\n const issuer = issuerOverride || _issuer;\n\n const handleFlip = () => {\n if (flipState === FRONT_FACE) {\n setFlipState(BACK_FACE);\n }\n if (flipState === BACK_FACE) {\n setFlipState(FRONT_FACE);\n }\n };\n\n return (\n <FlippyCard flipState={flipState}>\n <VCDisplayFrontFace\n title={title}\n credentialSubject={credentialSubject}\n customHeaderComponent={customHeaderComponent}\n issuer={issuer}\n issuee={issuee}\n subjectImageComponent={subjectImageComponent}\n issuerImageComponent={issuerImageComponent}\n overrideCardImageComponent={overrideCardImageComponent}\n overrideCardTitle={overrideCardTitle}\n hideProfileBubbles={hideProfileBubbles}\n createdAt={createdAt}\n className={className}\n loading={loading}\n handleClick={handleFlip}\n />\n <VCDisplayBackFace\n title={title}\n credentialSubject={credentialSubject}\n overrideDetailsComponent={overrideDetailsComponent}\n issuer={issuer}\n issuee={issuee}\n createdAt={createdAt}\n className={className}\n loading={loading}\n verification={verification}\n handleClick={handleFlip}\n />\n </FlippyCard>\n );\n};\n\nexport default VCDisplayCard;\n"],"names":["getNameFromProfile","getImageFromProfile","React","UserProfilePicture","FatArrow","VCVerificationCheckWithText","useState","getInfoFromCredential","FlippyCard","VCDisplayBackFace"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VCDisplayCard-ee6af62e.js","sources":["../../src/components/VCDisplayFrontFace/VCDisplayFrontFace.tsx","../../src/components/VCDisplayCard/VCDisplayCard.tsx"],"sourcesContent":["import React from 'react';\nimport FatArrow from '../../assets/images/icon.green.fat-arrow.png';\nimport UserProfilePicture from '../UserProfilePicture/UserProfilePicture';\nimport { VCVerificationCheckWithText } from '../VCVerificationCheck/VCVerificationCheck';\nimport { getImageFromProfile, getNameFromProfile } from '../../helpers/credential.helpers';\n\nimport { VCDisplayCardProps } from '../../types';\n\nconst VCDisplayFrontFace: React.FC<VCDisplayCardProps> = ({\n title,\n createdAt,\n issuer,\n issuee,\n subjectImageComponent,\n issuerImageComponent,\n hideProfileBubbles = false,\n credentialSubject,\n className = '',\n loading,\n handleClick,\n overrideCardImageComponent,\n overrideCardTitle,\n customHeaderComponent,\n}) => {\n const credentialAchievementImage =\n credentialSubject?.achievement?.image?.id || credentialSubject?.achievement?.image;\n const issuerName = getNameFromProfile(issuer ?? '');\n const issueeName = getNameFromProfile(issuee ?? '');\n const issuerImage = getImageFromProfile(issuer ?? '');\n const issueeImage = getImageFromProfile(issuee ?? '');\n\n let issueeImageEl: React.ReactNode | null = null;\n if (subjectImageComponent) {\n issueeImageEl = subjectImageComponent;\n } else {\n issueeImageEl = (\n <UserProfilePicture\n customContainerClass={`object-cover h-full w-full text-4xl ${\n !issueeImage ? 'pt-[8px]' : ''\n }`}\n user={{ image: issueeImage, name: issueeName }}\n alt=\"Issuee image\"\n />\n );\n }\n\n let issuerImageEl: React.ReactNode | null = null;\n\n if (issuerImageComponent) {\n issuerImageEl = issuerImageComponent;\n } else {\n issuerImageEl = (\n <UserProfilePicture\n customContainerClass={`object-cover h-full w-full text-4xl ${\n !issuerImage ? 'pt-[8px]' : ''\n }`}\n user={{ image: issuerImage, name: issuerName }}\n alt=\"Issuer image\"\n />\n );\n }\n\n const credImg = credentialAchievementImage ? (\n <img\n className=\"h-full w-full object-cover\"\n src={credentialAchievementImage ?? ''}\n alt=\"Credential Achievement Image\"\n />\n ) : (\n <></>\n );\n\n const renderCardImg = overrideCardImageComponent ? overrideCardImageComponent : credImg;\n const cardTitle = overrideCardTitle ? overrideCardTitle : title;\n\n return (\n <div\n className={`z-[9] vc-display-main-card-front flex overflow-hidden flex-col items-center justify-between relative max-w-[400px] h-[100%] min-h-[600px] p-7 rounded-3xl shadow-3xl bg-emerald-700 vc-display-card-full-container ${className}`}\n >\n <section className=\"bg-white rounded-bl-[50%] rounded-br-[50%] absolute top-0 w-[110%] h-[77%]\"></section>\n <section className=\"flex flex-col items-center justify-center z-10 text-center credential-thumb-img\">\n <section className=\"max-w-[100px] max-h-[100px]\">{renderCardImg}</section>\n\n <section className=\"flex flex-row w-full line-clamp-2\">\n <div className=\"flex flex-row w-full line-clamp-2 py-4 vc-flippy-card-title-front \">\n <h3\n className=\"vc-thumbnail-title w-full text-2xl line-clamp-2 tracking-wide leading-snug text-center vc-display-title text-gray-900 font-medium\"\n data-testid=\"vc-thumbnail-title\"\n >\n {cardTitle ?? ''}\n </h3>\n </div>\n\n {customHeaderComponent && customHeaderComponent}\n </section>\n\n <section className=\"flex flex-row items-center justify-center mt-2 w-full my-2 vc-card-issuer-thumbs\">\n {!hideProfileBubbles && (\n <>\n <div className=\"flex items-center justify-center h-16 w-16 shadow-3xl rounded-full overflow-hidden bg-white\">\n {issuerImageEl}\n </div>\n <img\n className=\"h-8 w-8 my-0 mx-4\"\n src={FatArrow ?? ''}\n alt=\"fat arrow icon\"\n />\n <div className=\"flex items-center justify-center h-16 w-16 shadow-3xl rounded-full overflow-hidden bg-white\">\n {issueeImageEl}\n </div>\n </>\n )}\n </section>\n\n <div className=\"w-full mt-2 vc-card-issued-to-info\">\n <p\n className=\"text-sm font-light text-center line-clamp-2 vc-display-issue-details text-gray-900\"\n data-testid=\"vc-thumbnail-createdAt\"\n >\n Issued to <span className=\"font-bold text-gray-900\">{issueeName}</span> on{' '}\n {createdAt ?? ''} by{' '}\n <span className=\"font-bold text-gray-900\"> {issuerName}</span>\n </p>\n </div>\n\n <button\n onClick={handleClick}\n className=\"cursor-alias bg-white my-3 border-0 text-indigo-500 font-semibold py-2 px-4 sl\"\n >\n <span className=\"flex justify-center\">\n <p className=\"flex items-center\">View Details</p>\n </span>\n </button>\n </section>\n\n <div className=\"flex items-center justify-center w-full\">\n <VCVerificationCheckWithText loading={loading} />\n </div>\n </div>\n );\n};\n\nexport default VCDisplayFrontFace;\n","import React, { useState } from 'react';\nimport { AchievementCredential, VC, Profile, VerificationItem } from '@learncard/types';\n\nimport FlippyCard from '../FlippyCard/FlippyCard';\nimport VCDisplayFrontFace from '../VCDisplayFrontFace/VCDisplayFrontFace';\nimport VCDisplayBackFace from '../VCDisplayBackFace/VCDisplayBackFace';\n\nimport { getInfoFromCredential } from '../../helpers/credential.helpers';\n\nconst FRONT_FACE = 'front';\nconst BACK_FACE = 'back';\n\nexport type VCDisplayCardPropsReal = {\n credential: VC | AchievementCredential;\n issueeOverride?: Profile;\n issuerOverride?: Profile;\n className?: string;\n hideProfileBubbles?: boolean;\n loading?: boolean;\n verification?: VerificationItem[];\n subjectImageComponent?: React.ReactNode;\n issuerImageComponent?: React.ReactNode;\n overrideDetailsComponent?: React.ReactNode;\n overrideCardTitle?: string;\n overrideCardImageComponent?: React.ReactNode;\n customHeaderComponent?: React.ReactNode;\n};\n\nexport const VCDisplayCard: React.FC<VCDisplayCardPropsReal> = ({\n credential,\n issueeOverride,\n issuerOverride,\n className = '',\n loading = false,\n verification = [],\n hideProfileBubbles = false,\n subjectImageComponent,\n issuerImageComponent,\n overrideDetailsComponent,\n overrideCardTitle,\n overrideCardImageComponent,\n customHeaderComponent,\n}) => {\n const [flipState, setFlipState] = useState(FRONT_FACE);\n const {\n title,\n createdAt,\n issuer: _issuer,\n issuee: _issuee,\n credentialSubject,\n } = getInfoFromCredential(credential);\n const issuee = issueeOverride || _issuee;\n const issuer = issuerOverride || _issuer;\n\n const handleFlip = () => {\n if (flipState === FRONT_FACE) {\n setFlipState(BACK_FACE);\n }\n if (flipState === BACK_FACE) {\n setFlipState(FRONT_FACE);\n }\n };\n\n return (\n <FlippyCard flipState={flipState}>\n <VCDisplayFrontFace\n title={title}\n credentialSubject={credentialSubject}\n customHeaderComponent={customHeaderComponent}\n issuer={issuer}\n issuee={issuee}\n subjectImageComponent={subjectImageComponent}\n issuerImageComponent={issuerImageComponent}\n overrideCardImageComponent={overrideCardImageComponent}\n overrideCardTitle={overrideCardTitle}\n hideProfileBubbles={hideProfileBubbles}\n createdAt={createdAt}\n className={className}\n loading={loading}\n handleClick={handleFlip}\n />\n <VCDisplayBackFace\n title={title}\n credentialSubject={credentialSubject}\n overrideDetailsComponent={overrideDetailsComponent}\n issuer={issuer}\n issuee={issuee}\n createdAt={createdAt}\n className={className}\n loading={loading}\n verification={verification}\n handleClick={handleFlip}\n />\n </FlippyCard>\n );\n};\n\nexport default VCDisplayCard;\n"],"names":["getNameFromProfile","getImageFromProfile","React","UserProfilePicture","FatArrow","VCVerificationCheckWithText","useState","getInfoFromCredential","FlippyCard","VCDisplayBackFace"],"mappings":"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"}
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var VCVerificationCheck = require('./VCVerificationCheck-46fa75d3.js');
|
|
5
5
|
var UserProfilePicture = require('./UserProfilePicture-16b97343.js');
|
|
6
|
-
var credential_helpers = require('./credential.helpers-
|
|
6
|
+
var credential_helpers = require('./credential.helpers-ab78cefb.js');
|
|
7
7
|
var VerifierStateBadgeAndText = require('./VerifierStateBadgeAndText-08aea854.js');
|
|
8
8
|
require('./index-a9e3ddf5.js');
|
|
9
9
|
var Lightbox = require('./Lightbox-9aeb2f7b.js');
|
|
10
|
-
var types_esm = require('./types.esm-
|
|
11
|
-
var CertificateDisplayCard = require('./CertificateDisplayCard-
|
|
10
|
+
var types_esm = require('./types.esm-5908b63f.js');
|
|
11
|
+
var CertificateDisplayCard = require('./CertificateDisplayCard-4db351f6.js');
|
|
12
12
|
var QRCodeIcon = require('./QRCodeIcon-81c6e96b.js');
|
|
13
13
|
var index = require('./index-5488badc.js');
|
|
14
14
|
var PuzzlePiece = require('./PuzzlePiece-937c216a.js');
|
|
15
15
|
var IDSleeve = require('./id-sleeve.png');
|
|
16
|
-
var MeritBadgeDisplayCard = require('./MeritBadgeDisplayCard-
|
|
16
|
+
var MeritBadgeDisplayCard = require('./MeritBadgeDisplayCard-98c7abba.js');
|
|
17
17
|
|
|
18
18
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
19
19
|
|
|
@@ -782,7 +782,8 @@ const VC2FrontFaceInfo = ({
|
|
|
782
782
|
createdAt,
|
|
783
783
|
imageUrl,
|
|
784
784
|
customThumbComponent,
|
|
785
|
-
knownDIDRegistry
|
|
785
|
+
knownDIDRegistry,
|
|
786
|
+
customBodyContentSlot
|
|
786
787
|
}) => {
|
|
787
788
|
const issuerName = VerifierStateBadgeAndText.truncateWithEllipsis(credential_helpers.getNameFromProfile(issuer != null ? issuer : ""), 20);
|
|
788
789
|
const issueeName = VerifierStateBadgeAndText.truncateWithEllipsis(credential_helpers.getNameFromProfile(issuee != null ? issuee : ""), 25);
|
|
@@ -857,7 +858,7 @@ const VC2FrontFaceInfo = ({
|
|
|
857
858
|
className: "font-[700]"
|
|
858
859
|
}, issuerName))), /* @__PURE__ */ React__default["default"].createElement(VerifierStateBadgeAndText.VerifierStateBadgeAndText, {
|
|
859
860
|
verifierState
|
|
860
|
-
}))))));
|
|
861
|
+
}))), customBodyContentSlot && customBodyContentSlot)));
|
|
861
862
|
};
|
|
862
863
|
|
|
863
864
|
const VCDisplayCardCategoryType = ({
|
|
@@ -1123,7 +1124,9 @@ const VCDisplayCard2 = ({
|
|
|
1123
1124
|
customIDDescription,
|
|
1124
1125
|
hideGradientBackground = false,
|
|
1125
1126
|
formattedDisplayType,
|
|
1126
|
-
customLinkedCredentialsComponent
|
|
1127
|
+
customLinkedCredentialsComponent,
|
|
1128
|
+
customContentSlot,
|
|
1129
|
+
customBodyContentSlot
|
|
1127
1130
|
}) => {
|
|
1128
1131
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
1129
1132
|
const {
|
|
@@ -1194,7 +1197,8 @@ const VCDisplayCard2 = ({
|
|
|
1194
1197
|
showBackButton,
|
|
1195
1198
|
showDetailsBtn,
|
|
1196
1199
|
formattedDisplayType,
|
|
1197
|
-
customLinkedCredentialsComponent
|
|
1200
|
+
customLinkedCredentialsComponent,
|
|
1201
|
+
customBodyContentSlot
|
|
1198
1202
|
});
|
|
1199
1203
|
}
|
|
1200
1204
|
if (((_e = credential == null ? void 0 : credential.display) == null ? void 0 : _e.displayType) === "certificate") {
|
|
@@ -1221,7 +1225,8 @@ const VCDisplayCard2 = ({
|
|
|
1221
1225
|
showBackButton,
|
|
1222
1226
|
showDetailsBtn,
|
|
1223
1227
|
formattedDisplayType,
|
|
1224
|
-
customLinkedCredentialsComponent
|
|
1228
|
+
customLinkedCredentialsComponent,
|
|
1229
|
+
customBodyContentSlot
|
|
1225
1230
|
});
|
|
1226
1231
|
} else if (((_f = credential == null ? void 0 : credential.display) == null ? void 0 : _f.displayType) === "id" || categoryType === "ID") {
|
|
1227
1232
|
return /* @__PURE__ */ React__default["default"].createElement("div", null, /* @__PURE__ */ React__default["default"].createElement(VCIDDisplayCard, {
|
|
@@ -1325,7 +1330,8 @@ const VCDisplayCard2 = ({
|
|
|
1325
1330
|
customThumbComponent,
|
|
1326
1331
|
createdAt: createdAt != null ? createdAt : "",
|
|
1327
1332
|
imageUrl,
|
|
1328
|
-
knownDIDRegistry
|
|
1333
|
+
knownDIDRegistry,
|
|
1334
|
+
customBodyContentSlot
|
|
1329
1335
|
}), !isFront && /* @__PURE__ */ React__default["default"].createElement(VC2BackFace, {
|
|
1330
1336
|
credential,
|
|
1331
1337
|
verificationItems,
|
|
@@ -1391,4 +1397,4 @@ const VCDisplayCard2 = ({
|
|
|
1391
1397
|
exports.VCDisplayCard2 = VCDisplayCard2;
|
|
1392
1398
|
exports.VCDisplayCardSkillsCount = VCDisplayCardSkillsCount;
|
|
1393
1399
|
exports.VCIDDisplayCard = VCIDDisplayCard;
|
|
1394
|
-
//# sourceMappingURL=VCDisplayCard2-
|
|
1400
|
+
//# sourceMappingURL=VCDisplayCard2-bb1a7ec2.js.map
|