@learncard/react 2.12.11 → 3.0.1

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.
Files changed (285) hide show
  1. package/README.md +23 -5
  2. package/dist/base.css +2 -1
  3. package/dist/base.js +1 -1
  4. package/dist/cjs/{AchievementCard-f6bdb95c.js → AchievementCard-6ef39c2b.js} +3 -3
  5. package/dist/cjs/{AchievementCard-f6bdb95c.js.map → AchievementCard-6ef39c2b.js.map} +1 -1
  6. package/dist/cjs/{BoostGenericCard-e3fd4feb.js → BoostGenericCard-87cd2091.js} +8 -8
  7. package/dist/cjs/BoostGenericCard-87cd2091.js.map +1 -0
  8. package/dist/cjs/{BoostSmallCard-507de790.js → BoostSmallCard-214f91a5.js} +3 -3
  9. package/dist/cjs/BoostSmallCard-214f91a5.js.map +1 -0
  10. package/dist/cjs/{Button-9ebe120c.js → Button-d3a8a860.js} +2 -2
  11. package/dist/cjs/Button-d3a8a860.js.map +1 -0
  12. package/dist/cjs/{CertificateDisplayCard-9a7ced55.js → CertificateDisplayCard-d4300c7d.js} +32 -21
  13. package/dist/cjs/CertificateDisplayCard-d4300c7d.js.map +1 -0
  14. package/dist/cjs/{CircleCheckButton-05f58196.js → CircleCheckButton-1d10936b.js} +2 -2
  15. package/dist/cjs/{CircleCheckButton-05f58196.js.map → CircleCheckButton-1d10936b.js.map} +1 -1
  16. package/dist/cjs/{CourseVerticalCard-0d046145.js → CourseVerticalCard-3c538a36.js} +3 -3
  17. package/dist/cjs/{CourseVerticalCard-0d046145.js.map → CourseVerticalCard-3c538a36.js.map} +1 -1
  18. package/dist/cjs/{GenericCard-e2faac81.js → GenericCard-f962750a.js} +2 -2
  19. package/dist/cjs/{GenericCard-e2faac81.js.map → GenericCard-f962750a.js.map} +1 -1
  20. package/dist/cjs/{JobHistoryCard-e9ac7a1a.js → JobHistoryCard-54f40e2b.js} +3 -3
  21. package/dist/cjs/JobHistoryCard-54f40e2b.js.map +1 -0
  22. package/dist/cjs/{JobListCard-a90be136.js → JobListCard-a48c6cac.js} +3 -3
  23. package/dist/cjs/{JobListCard-a90be136.js.map → JobListCard-a48c6cac.js.map} +1 -1
  24. package/dist/cjs/{LearnCardCreditCardBackFace-62330eea.js → LearnCardCreditCardBackFace-92a1818e.js} +2 -2
  25. package/dist/{esm/LearnCardCreditCardBackFace-56642837.js.map → cjs/LearnCardCreditCardBackFace-92a1818e.js.map} +1 -1
  26. package/dist/cjs/{LearnCardCreditCardFrontFace-75fb4e44.js → LearnCardCreditCardFrontFace-a4c209e3.js} +2 -2
  27. package/dist/cjs/LearnCardCreditCardFrontFace-a4c209e3.js.map +1 -0
  28. package/dist/cjs/{MeritBadgeDisplayCard-a45003f4.js → MeritBadgeDisplayCard-30ef639d.js} +25 -19
  29. package/dist/cjs/MeritBadgeDisplayCard-30ef639d.js.map +1 -0
  30. package/dist/cjs/{MeritBadgeSkillsCount-1baf2200.js → MeritBadgeSkillsCount-a6127a40.js} +3 -3
  31. package/dist/cjs/{MeritBadgeSkillsCount-1baf2200.js.map → MeritBadgeSkillsCount-a6127a40.js.map} +1 -1
  32. package/dist/cjs/{MiniVCThumbnail-9c510f51.js → MiniVCThumbnail-39058b8e.js} +2 -2
  33. package/dist/cjs/MiniVCThumbnail-39058b8e.js.map +1 -0
  34. package/dist/cjs/{Notification-24d4de25.js → Notification-09bf74b7.js} +2 -2
  35. package/dist/cjs/{Notification-24d4de25.js.map → Notification-09bf74b7.js.map} +1 -1
  36. package/dist/cjs/{NotificationBoostCard-04dd2405.js → NotificationBoostCard-e6a2824f.js} +4 -4
  37. package/dist/cjs/NotificationBoostCard-e6a2824f.js.map +1 -0
  38. package/dist/cjs/{NotificationUserAcceptedBoostCard-1c6d1e33.js → NotificationUserAcceptedBoostCard-e88fc1af.js} +2 -2
  39. package/dist/cjs/{NotificationUserAcceptedBoostCard-1c6d1e33.js.map → NotificationUserAcceptedBoostCard-e88fc1af.js.map} +1 -1
  40. package/dist/cjs/{NotificationUserCard-4364506c.js → NotificationUserCard-89a0b8ba.js} +2 -2
  41. package/dist/cjs/{NotificationUserCard-4364506c.js.map → NotificationUserCard-89a0b8ba.js.map} +1 -1
  42. package/dist/cjs/{PuzzlePiece-e64f4596.js → PuzzlePiece-48ee8924.js} +3 -3
  43. package/dist/cjs/PuzzlePiece-48ee8924.js.map +1 -0
  44. package/dist/cjs/{RoundedPill-542ecd7a.js → RoundedPill-5862fa48.js} +3 -3
  45. package/dist/cjs/RoundedPill-5862fa48.js.map +1 -0
  46. package/dist/cjs/{SchoolIDCard-10796199.js → SchoolIDCard-0462e21c.js} +2 -2
  47. package/dist/cjs/{SchoolIDCard-10796199.js.map → SchoolIDCard-0462e21c.js.map} +1 -1
  48. package/dist/cjs/{SkillTabCard-353cc2d1.js → SkillTabCard-f913aaf7.js} +3 -3
  49. package/dist/cjs/{SkillTabCard-353cc2d1.js.map → SkillTabCard-f913aaf7.js.map} +1 -1
  50. package/dist/cjs/{VCCard-6462d6c7.js → VCCard-6298f49f.js} +3 -3
  51. package/dist/cjs/{VCCard-6462d6c7.js.map → VCCard-6298f49f.js.map} +1 -1
  52. package/dist/cjs/{VCDisplayBackFace-47066c07.js → VCDisplayBackFace-65e36d2b.js} +7 -7
  53. package/dist/cjs/VCDisplayBackFace-65e36d2b.js.map +1 -0
  54. package/dist/cjs/{VCDisplayCard-ac1d4efb.js → VCDisplayCard-51e917ab.js} +4 -4
  55. package/dist/cjs/VCDisplayCard-51e917ab.js.map +1 -0
  56. package/dist/cjs/{VCDisplayCard2-d7d3288b.js → VCDisplayCard2-156a6584.js} +28 -22
  57. package/dist/cjs/VCDisplayCard2-156a6584.js.map +1 -0
  58. package/dist/cjs/{VCVerificationPill-7d4dd936.js → VCVerificationPill-d4ee15ca.js} +3 -3
  59. package/dist/cjs/VCVerificationPill-d4ee15ca.js.map +1 -0
  60. package/dist/cjs/{VerifierStateBadgeAndText-3d7977c9.js → VerifierStateBadgeAndText-04c90074.js} +3 -3
  61. package/dist/cjs/{VerifierStateBadgeAndText-3d7977c9.js.map → VerifierStateBadgeAndText-04c90074.js.map} +1 -1
  62. package/dist/cjs/{credential.helpers-e6e353a6.js → credential.helpers-14544e48.js} +241 -7
  63. package/dist/cjs/credential.helpers-14544e48.js.map +1 -0
  64. package/dist/cjs/{i18n-ddbb18e7.js → i18n-0648eec1.js} +3 -1
  65. package/dist/cjs/i18n-0648eec1.js.map +1 -0
  66. package/dist/cjs/{index-da255c9a.js → index-a03dec43.js} +3 -1
  67. package/dist/{esm/index-cb3a593b.js.map → cjs/index-a03dec43.js.map} +1 -1
  68. package/dist/cjs/index.js +36 -36
  69. package/dist/cjs/index.js.map +1 -1
  70. package/dist/cjs/index11.js +3 -3
  71. package/dist/cjs/index13.js +3 -3
  72. package/dist/cjs/index14.js +34 -34
  73. package/dist/cjs/index15.js +1 -1
  74. package/dist/cjs/index16.js +1 -1
  75. package/dist/cjs/index17.js +1 -1
  76. package/dist/cjs/index18.js +1 -1
  77. package/dist/cjs/index2.js +3 -3
  78. package/dist/cjs/index22.js +8 -8
  79. package/dist/cjs/index23.js +1 -1
  80. package/dist/cjs/index24.js +3 -3
  81. package/dist/cjs/index25.js +3 -3
  82. package/dist/cjs/index26.js +1 -1
  83. package/dist/cjs/index27.js +1 -1
  84. package/dist/cjs/index29.js +1 -1
  85. package/dist/cjs/index31.js +1 -1
  86. package/dist/cjs/index34.js +3 -3
  87. package/dist/cjs/index39.js +13 -13
  88. package/dist/cjs/index4.js +8 -8
  89. package/dist/cjs/index40.js +6 -6
  90. package/dist/cjs/index41.js +7 -7
  91. package/dist/cjs/index42.js +9 -9
  92. package/dist/cjs/index43.js +2 -2
  93. package/dist/cjs/index46.js +2 -2
  94. package/dist/cjs/index5.js +3 -3
  95. package/dist/cjs/index6.js +1 -1
  96. package/dist/cjs/index7.js +7 -7
  97. package/dist/cjs/index8.js +2 -2
  98. package/dist/cjs/{types-91d0677b.js → types-8a7d08fe.js} +2 -2
  99. package/dist/cjs/{types-91d0677b.js.map → types-8a7d08fe.js.map} +1 -1
  100. package/dist/cjs/{types.esm-57b8934f.js → types.esm-55f8d7fb.js} +3642 -1570
  101. package/dist/cjs/types.esm-55f8d7fb.js.map +1 -0
  102. package/dist/esm/{AchievementCard-d0cf882f.js → AchievementCard-c8df0ca4.js} +3 -3
  103. package/dist/esm/{AchievementCard-d0cf882f.js.map → AchievementCard-c8df0ca4.js.map} +1 -1
  104. package/dist/esm/{BoostGenericCard-3481b47c.js → BoostGenericCard-dd2b515a.js} +8 -8
  105. package/dist/esm/BoostGenericCard-dd2b515a.js.map +1 -0
  106. package/dist/esm/{BoostSmallCard-3f5d83b9.js → BoostSmallCard-538e22e7.js} +3 -3
  107. package/dist/esm/BoostSmallCard-538e22e7.js.map +1 -0
  108. package/dist/esm/{Button-70eedbf6.js → Button-866044a8.js} +2 -2
  109. package/dist/esm/Button-866044a8.js.map +1 -0
  110. package/dist/esm/{CertificateDisplayCard-fbd123d1.js → CertificateDisplayCard-46c13c49.js} +32 -21
  111. package/dist/esm/CertificateDisplayCard-46c13c49.js.map +1 -0
  112. package/dist/esm/{CircleCheckButton-50702ec6.js → CircleCheckButton-cb929fad.js} +2 -2
  113. package/dist/esm/{CircleCheckButton-50702ec6.js.map → CircleCheckButton-cb929fad.js.map} +1 -1
  114. package/dist/esm/{CourseVerticalCard-2544cfbb.js → CourseVerticalCard-34d0cc89.js} +3 -3
  115. package/dist/esm/{CourseVerticalCard-2544cfbb.js.map → CourseVerticalCard-34d0cc89.js.map} +1 -1
  116. package/dist/esm/{GenericCard-31644ac4.js → GenericCard-dfa014c7.js} +2 -2
  117. package/dist/esm/{GenericCard-31644ac4.js.map → GenericCard-dfa014c7.js.map} +1 -1
  118. package/dist/esm/{JobHistoryCard-e71ab2c7.js → JobHistoryCard-74f98642.js} +3 -3
  119. package/dist/esm/JobHistoryCard-74f98642.js.map +1 -0
  120. package/dist/esm/{JobListCard-4fc7fbe4.js → JobListCard-498d59b7.js} +3 -3
  121. package/dist/esm/{JobListCard-4fc7fbe4.js.map → JobListCard-498d59b7.js.map} +1 -1
  122. package/dist/esm/{LearnCardCreditCardBackFace-56642837.js → LearnCardCreditCardBackFace-8e2f494a.js} +2 -2
  123. package/dist/{cjs/LearnCardCreditCardBackFace-62330eea.js.map → esm/LearnCardCreditCardBackFace-8e2f494a.js.map} +1 -1
  124. package/dist/esm/{LearnCardCreditCardFrontFace-13d29504.js → LearnCardCreditCardFrontFace-73c3d537.js} +2 -2
  125. package/dist/esm/LearnCardCreditCardFrontFace-73c3d537.js.map +1 -0
  126. package/dist/esm/{MeritBadgeDisplayCard-2621d029.js → MeritBadgeDisplayCard-9f95dd08.js} +25 -19
  127. package/dist/esm/MeritBadgeDisplayCard-9f95dd08.js.map +1 -0
  128. package/dist/esm/{MeritBadgeSkillsCount-b3e3985a.js → MeritBadgeSkillsCount-c20f9f60.js} +3 -3
  129. package/dist/esm/{MeritBadgeSkillsCount-b3e3985a.js.map → MeritBadgeSkillsCount-c20f9f60.js.map} +1 -1
  130. package/dist/esm/{MiniVCThumbnail-cc05e1f8.js → MiniVCThumbnail-3800ee40.js} +2 -2
  131. package/dist/esm/MiniVCThumbnail-3800ee40.js.map +1 -0
  132. package/dist/esm/{Notification-279ba207.js → Notification-39590182.js} +2 -2
  133. package/dist/esm/{Notification-279ba207.js.map → Notification-39590182.js.map} +1 -1
  134. package/dist/esm/{NotificationBoostCard-73efea2d.js → NotificationBoostCard-ff5ec0d7.js} +4 -4
  135. package/dist/esm/NotificationBoostCard-ff5ec0d7.js.map +1 -0
  136. package/dist/esm/{NotificationUserAcceptedBoostCard-89fe2317.js → NotificationUserAcceptedBoostCard-f515321d.js} +2 -2
  137. package/dist/esm/{NotificationUserAcceptedBoostCard-89fe2317.js.map → NotificationUserAcceptedBoostCard-f515321d.js.map} +1 -1
  138. package/dist/esm/{NotificationUserCard-2c29c86a.js → NotificationUserCard-d4fd260e.js} +2 -2
  139. package/dist/esm/{NotificationUserCard-2c29c86a.js.map → NotificationUserCard-d4fd260e.js.map} +1 -1
  140. package/dist/esm/{PuzzlePiece-a3d9cc62.js → PuzzlePiece-9c313d93.js} +3 -3
  141. package/dist/esm/PuzzlePiece-9c313d93.js.map +1 -0
  142. package/dist/esm/{RoundedPill-8e97b9e3.js → RoundedPill-ef06f4b8.js} +3 -3
  143. package/dist/esm/RoundedPill-ef06f4b8.js.map +1 -0
  144. package/dist/esm/{SchoolIDCard-f82e40bc.js → SchoolIDCard-de65b2bd.js} +2 -2
  145. package/dist/esm/{SchoolIDCard-f82e40bc.js.map → SchoolIDCard-de65b2bd.js.map} +1 -1
  146. package/dist/esm/{SkillTabCard-a3f601e8.js → SkillTabCard-4c7bb40f.js} +3 -3
  147. package/dist/esm/{SkillTabCard-a3f601e8.js.map → SkillTabCard-4c7bb40f.js.map} +1 -1
  148. package/dist/esm/{VCCard-cd14261b.js → VCCard-1e6261ea.js} +3 -3
  149. package/dist/esm/{VCCard-cd14261b.js.map → VCCard-1e6261ea.js.map} +1 -1
  150. package/dist/esm/{VCDisplayBackFace-d8bdf84b.js → VCDisplayBackFace-eb2cad59.js} +7 -7
  151. package/dist/esm/VCDisplayBackFace-eb2cad59.js.map +1 -0
  152. package/dist/esm/{VCDisplayCard-213afce8.js → VCDisplayCard-1400714d.js} +4 -4
  153. package/dist/esm/VCDisplayCard-1400714d.js.map +1 -0
  154. package/dist/esm/{VCDisplayCard2-f6beca34.js → VCDisplayCard2-e4164d30.js} +28 -22
  155. package/dist/esm/VCDisplayCard2-e4164d30.js.map +1 -0
  156. package/dist/esm/{VCVerificationPill-f4a587a5.js → VCVerificationPill-65f7901a.js} +3 -3
  157. package/dist/esm/VCVerificationPill-65f7901a.js.map +1 -0
  158. package/dist/esm/{VerifierStateBadgeAndText-f2bbd9fd.js → VerifierStateBadgeAndText-1588afeb.js} +3 -3
  159. package/dist/esm/{VerifierStateBadgeAndText-f2bbd9fd.js.map → VerifierStateBadgeAndText-1588afeb.js.map} +1 -1
  160. package/dist/esm/{credential.helpers-30adeb2d.js → credential.helpers-4c72d304.js} +241 -7
  161. package/dist/esm/credential.helpers-4c72d304.js.map +1 -0
  162. package/dist/esm/{i18n-35209bfa.js → i18n-b142d48e.js} +3 -1
  163. package/dist/esm/i18n-b142d48e.js.map +1 -0
  164. package/dist/esm/{index-cb3a593b.js → index-75c5b01c.js} +2 -2
  165. package/dist/{cjs/index-da255c9a.js.map → esm/index-75c5b01c.js.map} +1 -1
  166. package/dist/esm/index.js +36 -36
  167. package/dist/esm/index.js.map +1 -1
  168. package/dist/esm/index11.js +3 -3
  169. package/dist/esm/index13.js +3 -3
  170. package/dist/esm/index14.js +34 -34
  171. package/dist/esm/index15.js +1 -1
  172. package/dist/esm/index16.js +1 -1
  173. package/dist/esm/index17.js +1 -1
  174. package/dist/esm/index18.js +1 -1
  175. package/dist/esm/index2.js +3 -3
  176. package/dist/esm/index22.js +8 -8
  177. package/dist/esm/index23.js +1 -1
  178. package/dist/esm/index24.js +3 -3
  179. package/dist/esm/index25.js +3 -3
  180. package/dist/esm/index26.js +1 -1
  181. package/dist/esm/index27.js +1 -1
  182. package/dist/esm/index29.js +1 -1
  183. package/dist/esm/index31.js +1 -1
  184. package/dist/esm/index34.js +3 -3
  185. package/dist/esm/index39.js +13 -13
  186. package/dist/esm/index4.js +8 -8
  187. package/dist/esm/index40.js +6 -6
  188. package/dist/esm/index41.js +7 -7
  189. package/dist/esm/index42.js +9 -9
  190. package/dist/esm/index43.js +2 -2
  191. package/dist/esm/index46.js +2 -2
  192. package/dist/esm/index5.js +3 -3
  193. package/dist/esm/index6.js +1 -1
  194. package/dist/esm/index7.js +7 -7
  195. package/dist/esm/index8.js +2 -2
  196. package/dist/esm/{types-c765e2a4.js → types-23b696f1.js} +2 -2
  197. package/dist/esm/{types-c765e2a4.js.map → types-23b696f1.js.map} +1 -1
  198. package/dist/esm/{types.esm-9d538f63.js → types.esm-a70402df.js} +3642 -1570
  199. package/dist/esm/types.esm-a70402df.js.map +1 -0
  200. package/dist/main.css +2 -1
  201. package/dist/main.js +1 -1
  202. package/package.json +13 -13
  203. package/src/assets/styles/base.css +18 -2
  204. package/src/assets/styles/main.css +1 -3
  205. package/src/assets/styles/theme.css +94 -0
  206. package/src/assets/styles/theme.test.ts +67 -0
  207. package/src/components/BoostGenericCard/BoostGenericCard.tsx +3 -3
  208. package/src/components/BoostSmallCard/BoostSmallCard.tsx +1 -1
  209. package/src/components/Button/Button.tsx +1 -1
  210. package/src/components/CertificateDisplayCard/CertificateAwardDate.test.tsx +67 -0
  211. package/src/components/CertificateDisplayCard/CertificateBackFace.tsx +14 -9
  212. package/src/components/CertificateDisplayCard/CertificateCornerIcon.tsx +1 -1
  213. package/src/components/CertificateDisplayCard/CertificateFrontFace.tsx +19 -8
  214. package/src/components/CertificateDisplayCard/CertificateProfileImageDisplay.tsx +1 -1
  215. package/src/components/CertificateDisplayCard/MediaAttachmentsBox.tsx +1 -1
  216. package/src/components/CertificateDisplayCard/VerificationRow.tsx +1 -1
  217. package/src/components/JobHistoryCard/JobHistoryCard.tsx +2 -2
  218. package/src/components/JobListCard/JobListCard.tsx +2 -5
  219. package/src/components/LearnCardCreditCardBackFace/LearnCardCreditCardBackFace.tsx +1 -1
  220. package/src/components/LearnCardCreditCardFrontFace/LearnCardCreditCardFrontFace.tsx +1 -1
  221. package/src/components/MeritBadgeDisplayCard/MediaAttachmentsBox.tsx +1 -1
  222. package/src/components/MeritBadgeDisplayCard/MeritBadgeBackFace.tsx +14 -9
  223. package/src/components/MeritBadgeDisplayCard/MeritBadgeCornerIcon.tsx +4 -4
  224. package/src/components/MeritBadgeDisplayCard/MeritBadgeFrontFace.tsx +15 -10
  225. package/src/components/MeritBadgeDisplayCard/MeritBadgeProfileImageDisplay.tsx +1 -1
  226. package/src/components/MeritBadgeDisplayCard/VerificationRow.tsx +1 -1
  227. package/src/components/MiniVCThumbnail/MiniVCThumbnail.tsx +1 -1
  228. package/src/components/NotificationBoostCard/NotificationBoostCard.tsx +2 -2
  229. package/src/components/NotificationUserAcceptedBoostCard/NotificationUserAcceptedBoostCard.tsx +1 -1
  230. package/src/components/NotificationUserCard/NotificationUserCard.tsx +1 -1
  231. package/src/components/RoundedPill/RoundedPill.tsx +2 -2
  232. package/src/components/SchoolIdCard/SchoolIDCard.tsx +1 -1
  233. package/src/components/VCDisplayBackFace/VCDisplayBackFace.tsx +4 -4
  234. package/src/components/VCDisplayCard/VCDisplayCard.stories.tsx +2 -2
  235. package/src/components/VCDisplayCard2/IssueHistoryBox.tsx +1 -1
  236. package/src/components/VCDisplayCard2/MediaAttachmentsBox.tsx +10 -5
  237. package/src/components/VCDisplayCard2/VC2FrontFaceInfo.tsx +6 -6
  238. package/src/components/VCDisplayCard2/VCDisplayCard2.tsx +1 -1
  239. package/src/components/VCDisplayCard2/VCDisplayCard2AvatarFallbacks.stories.tsx +4 -4
  240. package/src/components/VCDisplayCard2/VCIDDisplayFrontFace.tsx +7 -7
  241. package/src/components/VCDisplayCard2/VerificationRow.tsx +1 -1
  242. package/src/components/VCDisplayCard2/__tests__/VC2FrontFaceInfo.test.tsx +1 -1
  243. package/src/components/VCDisplayFrontFace/VCDisplayFrontFace.tsx +1 -1
  244. package/src/components/VCVerificationPill/VCVerificationPill.tsx +1 -1
  245. package/src/components/svgs/PuzzlePiece.tsx +3 -3
  246. package/src/helpers/credential.helpers.test.ts +96 -0
  247. package/src/helpers/credential.helpers.tsx +23 -4
  248. package/src/helpers/useScrollBorders.ts +2 -2
  249. package/src/i18n/index.tsx +2 -0
  250. package/dist/cjs/BoostGenericCard-e3fd4feb.js.map +0 -1
  251. package/dist/cjs/BoostSmallCard-507de790.js.map +0 -1
  252. package/dist/cjs/Button-9ebe120c.js.map +0 -1
  253. package/dist/cjs/CertificateDisplayCard-9a7ced55.js.map +0 -1
  254. package/dist/cjs/JobHistoryCard-e9ac7a1a.js.map +0 -1
  255. package/dist/cjs/LearnCardCreditCardFrontFace-75fb4e44.js.map +0 -1
  256. package/dist/cjs/MeritBadgeDisplayCard-a45003f4.js.map +0 -1
  257. package/dist/cjs/MiniVCThumbnail-9c510f51.js.map +0 -1
  258. package/dist/cjs/NotificationBoostCard-04dd2405.js.map +0 -1
  259. package/dist/cjs/PuzzlePiece-e64f4596.js.map +0 -1
  260. package/dist/cjs/RoundedPill-542ecd7a.js.map +0 -1
  261. package/dist/cjs/VCDisplayBackFace-47066c07.js.map +0 -1
  262. package/dist/cjs/VCDisplayCard-ac1d4efb.js.map +0 -1
  263. package/dist/cjs/VCDisplayCard2-d7d3288b.js.map +0 -1
  264. package/dist/cjs/VCVerificationPill-7d4dd936.js.map +0 -1
  265. package/dist/cjs/credential.helpers-e6e353a6.js.map +0 -1
  266. package/dist/cjs/i18n-ddbb18e7.js.map +0 -1
  267. package/dist/cjs/types.esm-57b8934f.js.map +0 -1
  268. package/dist/esm/BoostGenericCard-3481b47c.js.map +0 -1
  269. package/dist/esm/BoostSmallCard-3f5d83b9.js.map +0 -1
  270. package/dist/esm/Button-70eedbf6.js.map +0 -1
  271. package/dist/esm/CertificateDisplayCard-fbd123d1.js.map +0 -1
  272. package/dist/esm/JobHistoryCard-e71ab2c7.js.map +0 -1
  273. package/dist/esm/LearnCardCreditCardFrontFace-13d29504.js.map +0 -1
  274. package/dist/esm/MeritBadgeDisplayCard-2621d029.js.map +0 -1
  275. package/dist/esm/MiniVCThumbnail-cc05e1f8.js.map +0 -1
  276. package/dist/esm/NotificationBoostCard-73efea2d.js.map +0 -1
  277. package/dist/esm/PuzzlePiece-a3d9cc62.js.map +0 -1
  278. package/dist/esm/RoundedPill-8e97b9e3.js.map +0 -1
  279. package/dist/esm/VCDisplayBackFace-d8bdf84b.js.map +0 -1
  280. package/dist/esm/VCDisplayCard-213afce8.js.map +0 -1
  281. package/dist/esm/VCDisplayCard2-f6beca34.js.map +0 -1
  282. package/dist/esm/VCVerificationPill-f4a587a5.js.map +0 -1
  283. package/dist/esm/credential.helpers-30adeb2d.js.map +0 -1
  284. package/dist/esm/i18n-35209bfa.js.map +0 -1
  285. package/dist/esm/types.esm-9d538f63.js.map +0 -1
@@ -43,7 +43,7 @@ const LearnCardCreditCardFrontFace = ({
43
43
  showActionButton && /* @__PURE__ */ React.createElement(
44
44
  "button",
45
45
  {
46
- className: "absolute top-2 right-4 bg-grayscale-500 border-[2px] rounded-3xl border-solid border-color-grayscale-900 min-w-[110px] p-[2px] font-bold text-xs tracking-wide leading-snug text-center text-white",
46
+ className: "absolute top-2 right-4 bg-grayscale-500 border-2 rounded-3xl border-solid border-color-grayscale-900 min-w-[110px] p-[2px] font-bold text-xs tracking-wide leading-snug text-center text-white",
47
47
  onClick,
48
48
  "data-testid": "credit-card-frontface-button"
49
49
  },
@@ -78,4 +78,4 @@ const LearnCardCreditCardFrontFace = ({
78
78
  };
79
79
 
80
80
  export { LearnCardCreditCardFrontFace as L };
81
- //# sourceMappingURL=LearnCardCreditCardFrontFace-13d29504.js.map
81
+ //# sourceMappingURL=LearnCardCreditCardFrontFace-73c3d537.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LearnCardCreditCardFrontFace-73c3d537.js","sources":["../../src/components/LearnCardCreditCardFrontFace/LearnCardCreditCardFrontFace.tsx"],"sourcesContent":["import React from 'react';\nimport { QRCodeSVG } from 'qrcode.react';\n\nimport { LearnCardCreditCardFrontFaceProps } from './types';\n\nimport CardChip from '../../assets/images/card-chip.svg';\nimport MasterCardLogo from '../../assets/images/master-card-logo.svg';\n\nexport const LearnCardCreditCardFrontFace: React.FC<LearnCardCreditCardFrontFaceProps> = ({\n userImage,\n userImageComponent = null,\n qrCodeValue,\n className,\n showActionButton = false,\n actionButtonText = 'Open Card',\n onClick = () => {},\n children,\n}) => {\n let userImageEl: React.ReactNode | null = null;\n\n if (userImage) {\n userImageEl = (\n <div className=\"inline-block relative overflow-hidden rounded-full shadow-3xl h-0 bg-white w-1/2 pb-[50%] mt-2 ml-4\">\n <img\n className=\"w-full h-full absolute rounded-full object-cover border-solid border-2 border-white\"\n src={userImage}\n alt=\"user image\"\n data-testid=\"credit-card-frontface-userImg\"\n />\n </div>\n );\n } else if (!userImage && userImageComponent) {\n userImageEl = userImageComponent;\n }\n\n return (\n <div\n className={`flex justify-center items-center max-w-[375px] rounded-[20px] ${className}`}\n >\n <div\n className={`flex flex-row justify-center items-start pt-9 w-full min-h-[220px] rounded-[20px] shadow-3xl relative overflow-hidden credit-card-front-face`}\n >\n <div className=\"absolute top-[-40px] left-0 w-[55%] h-[140%] rounded-tr-[150px] rounded-br-[150px] bg-grayscale-900 credit-card-bubble\" />\n {showActionButton && (\n <button\n className=\"absolute top-2 right-4 bg-grayscale-500 border-2 rounded-3xl border-solid border-color-grayscale-900 min-w-[110px] p-[2px] font-bold text-xs tracking-wide leading-snug text-center text-white\"\n onClick={onClick}\n data-testid=\"credit-card-frontface-button\"\n >\n {actionButtonText}\n </button>\n )}\n <div className=\"flex flex-row justify-between items-start w-full h-full relative\">\n <div className=\"flex flex-1 flex-col\">\n <div className=\"pl-8\">\n <p className=\"w-full text-xs text-white font-bold tracking-[7px] mb-2 credit-card-front-face-title\">\n LEARNCARD\n </p>\n <img\n src={CardChip ?? ''}\n alt=\"card chip\"\n className=\"h-[30px] w-[42px]\"\n />\n </div>\n\n {userImageEl}\n </div>\n\n {qrCodeValue && (\n <div className=\"flex flex-1 justify-center items-center relative pl-10 credit-card-qr-code-container\">\n <div className=\"h-auto relative qr-code-container\">\n {/* <div className=\"qr-code-upper-left-yellow\" />\n <div className=\"qr-code-upper-right-pink-square\" />\n <div className=\"qr-code-bottom-left-purple-square\" />\n <div className=\"qr-code-green-blob\" />\n <div className=\"qr-code-green-blob-2\" />\n <div className=\"qr-code-blue-blob\" />\n <div className=\"qr-code-orange-blob\" /> */}\n <QRCodeSVG\n className=\"h-full w-full\"\n value={qrCodeValue}\n data-testid=\"credit-card-qr-code\"\n bgColor=\"transparent\"\n // fgColor=\"#999999\"\n />\n </div>\n </div>\n )}\n\n <img\n src={MasterCardLogo ?? ''}\n alt=\"mastercard icon\"\n className=\"absolute bottom-[-8px] right-4 learn-card-mastercard-logo\"\n />\n </div>\n </div>\n {children}\n </div>\n );\n};\n\nexport default LearnCardCreditCardFrontFace;\n"],"names":[],"mappings":";;;;;AAQO,MAAM,+BAA4E,CAAC;AAAA,EACtF,SAAA;AAAA,EACA,kBAAqB,GAAA,IAAA;AAAA,EACrB,WAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAmB,GAAA,KAAA;AAAA,EACnB,gBAAmB,GAAA,WAAA;AAAA,EACnB,UAAU,MAAM;AAAA,GAAC;AAAA,EACjB,QAAA;AACJ,CAAM,KAAA;AAjBN,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAkBI,EAAA,IAAI,WAAsC,GAAA,IAAA,CAAA;AAE1C,EAAA,IAAI,SAAW,EAAA;AACX,IACI,WAAA,mBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,qGACX,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACG,SAAU,EAAA,qFAAA;AAAA,QACV,GAAK,EAAA,SAAA;AAAA,QACL,GAAI,EAAA,YAAA;AAAA,QACJ,aAAY,EAAA,+BAAA;AAAA,OAAA;AAAA,KAEpB,CAAA,CAAA;AAAA,GAER,MAAA,IAAW,CAAC,SAAA,IAAa,kBAAoB,EAAA;AACzC,IAAc,WAAA,GAAA,kBAAA,CAAA;AAAA,GAClB;AAEA,EACI,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,SAAA,EAAW,iEAAiE,SAAS,CAAA,CAAA;AAAA,KAAA;AAAA,oBAErF,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACG,SAAW,EAAA,CAAA,4IAAA,CAAA;AAAA,OAAA;AAAA,sBAEX,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,wHAAyH,EAAA,CAAA;AAAA,MACvI,gBACG,oBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACG,SAAU,EAAA,gMAAA;AAAA,UACV,OAAA;AAAA,UACA,aAAY,EAAA,8BAAA;AAAA,SAAA;AAAA,QAEX,gBAAA;AAAA,OACL;AAAA,0CAEH,KAAI,EAAA,EAAA,SAAA,EAAU,kEACX,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,SAAI,SAAU,EAAA,sBAAA,EAAA,kBACV,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,WAAU,MACX,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,OAAE,SAAU,EAAA,sFAAA,EAAA,EAAuF,WAEpG,CACA,kBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACG,MAAK,EAAY,GAAA,QAAA,KAAA,IAAA,GAAA,EAAA,GAAA,EAAA;AAAA,UACjB,GAAI,EAAA,WAAA;AAAA,UACJ,SAAU,EAAA,mBAAA;AAAA,SAAA;AAAA,OAElB,CAAA,EAEC,WACL,CAAA,EAEC,WACG,oBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,sFACX,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,mCAQX,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACG,SAAU,EAAA,eAAA;AAAA,UACV,KAAO,EAAA,WAAA;AAAA,UACP,aAAY,EAAA,qBAAA;AAAA,UACZ,OAAQ,EAAA,aAAA;AAAA,SAAA;AAAA,OAGhB,CACJ,CAGJ,kBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACG,MAAK,EAAkB,GAAA,cAAA,KAAA,IAAA,GAAA,EAAA,GAAA,EAAA;AAAA,UACvB,GAAI,EAAA,iBAAA;AAAA,UACJ,SAAU,EAAA,2DAAA;AAAA,SAAA;AAAA,OAElB,CAAA;AAAA,KACJ;AAAA,IACC,QAAA;AAAA,GACL,CAAA;AAER;;;;"}
@@ -1,10 +1,11 @@
1
1
  import React, { useState, useEffect } from 'react';
2
- import { I as InfoIcon, d as getBaseUrl, e as VideoIcon, C as Camera, G as GenericDocumentIcon, L as LinkIcon, p as prettyBytes, c as capitalize, E as ExclamationPoint, A as AcuteCheckmark, h as LeftArrow, j as SkillsBox, R as RoundedCorner, k as IssuerSeal, r as resolveProfileDisplay, V as VERIFIER_STATES, l as VerifierStateBadgeAndText, F as FatArrow } from './VerifierStateBadgeAndText-f2bbd9fd.js';
3
- import { a as getColorForVerificationStatus, b as getInfoFromCredential, d as getCategoryDarkColor, e as getCategoryLightColor, f as getCategoryIcon, h as getImageFromProfile } from './credential.helpers-30adeb2d.js';
2
+ import { u as useT } from './i18n-b142d48e.js';
3
+ import { I as InfoIcon, d as getBaseUrl, e as VideoIcon, C as Camera, G as GenericDocumentIcon, L as LinkIcon, p as prettyBytes, c as capitalize, E as ExclamationPoint, A as AcuteCheckmark, h as LeftArrow, j as SkillsBox, R as RoundedCorner, k as IssuerSeal, r as resolveProfileDisplay, V as VERIFIER_STATES, l as VerifierStateBadgeAndText, F as FatArrow } from './VerifierStateBadgeAndText-1588afeb.js';
4
+ import { a as getColorForVerificationStatus, b as getInfoFromCredential, d as getCategoryDarkColor, e as getCategoryLightColor, f as getCategoryIcon, h as getImageFromProfile } from './credential.helpers-4c72d304.js';
4
5
  import { U as UserProfilePicture } from './UserProfilePicture-4a00d151.js';
5
6
  import { isAppDidWeb } from '@learncard/helpers';
6
7
  import { a as LCCategoryEnum } from './index-8be2f857.js';
7
- import { V as VerificationStatusEnum } from './types.esm-9d538f63.js';
8
+ import { V as VerificationStatusEnum } from './types.esm-a70402df.js';
8
9
  import { L as Lightbox, X } from './Lightbox-11f4888d.js';
9
10
  import ThreeDots from './DotsThreeOutline.svg';
10
11
 
@@ -300,7 +301,7 @@ const MediaAttachmentsBox = ({
300
301
  /* @__PURE__ */ React.createElement(
301
302
  "button",
302
303
  {
303
- className: "relative h-[80px] w-[80px] rounded-[15px] overflow-hidden flex-shrink-0",
304
+ className: "relative h-[80px] w-[80px] rounded-[15px] overflow-hidden shrink-0",
304
305
  onClick: (e) => {
305
306
  e.stopPropagation();
306
307
  handleMediaAttachmentClick(media.url, media.type);
@@ -384,7 +385,7 @@ const VerificationRow = ({ verification }) => {
384
385
  }
385
386
  primaryText = capitalize(primaryText);
386
387
  const infoText = "";
387
- return /* @__PURE__ */ React.createElement("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" }, /* @__PURE__ */ React.createElement(
388
+ return /* @__PURE__ */ React.createElement("div", { className: "verification-row flex flex-col gap-[5px] font-poppins border-b border-grayscale-200 border-solid w-full py-[10px] last:border-0 last:pb-0" }, /* @__PURE__ */ React.createElement(
388
389
  "span",
389
390
  {
390
391
  className: "font-[700] text-[11px] uppercase flex items-center gap-[3px] select-none",
@@ -481,8 +482,10 @@ const MeritBadgeBackFace = ({
481
482
  customLinkedCredentialsComponent
482
483
  }) => {
483
484
  var _a, _b, _c, _d, _e, _f, _g;
485
+ const t = useT();
484
486
  const { createdAt, credentialSubject } = getInfoFromCredential(credential, "MMM dd, yyyy", {
485
- uppercaseDate: false
487
+ uppercaseDate: false,
488
+ dateType: "awarded"
486
489
  });
487
490
  const { description } = (_a = credentialSubject == null ? void 0 : credentialSubject.achievement) != null ? _a : {};
488
491
  const criteria = (_c = (_b = credentialSubject == null ? void 0 : credentialSubject.achievement) == null ? void 0 : _b.criteria) == null ? void 0 : _c.narrative;
@@ -510,13 +513,12 @@ const MeritBadgeBackFace = ({
510
513
  /* @__PURE__ */ React.createElement(LeftArrow, { className: "text-white", size: "25" }),
511
514
  "Details"
512
515
  )) : /* @__PURE__ */ React.createElement("h1", { className: "text-white text-center text-[22px] font-jacques" }, "Details"),
513
- /* @__PURE__ */ React.createElement(TruncateTextBox, { headerText: "About", text: description }, /* @__PURE__ */ React.createElement(
516
+ /* @__PURE__ */ React.createElement(TruncateTextBox, { headerText: "About", text: description }, createdAt && /* @__PURE__ */ React.createElement(
514
517
  "span",
515
518
  {
516
- className: `text-grayscale-600 font-poppins text-[12px] font-[600] w-full ${description ? "pt-[10px] border-t-[1px] border-solid border-grayscale-200" : ""}`
519
+ className: `text-grayscale-600 font-poppins text-[12px] font-[600] w-full ${description ? "pt-[10px] border-t border-solid border-grayscale-200" : ""}`
517
520
  },
518
- "Awarded on ",
519
- createdAt
521
+ t("credential.awardedOn", { date: createdAt })
520
522
  )),
521
523
  criteria && /* @__PURE__ */ React.createElement(TruncateTextBox, { headerText: "Criteria", text: criteria }),
522
524
  customLinkedCredentialsComponent && customLinkedCredentialsComponent,
@@ -544,19 +546,19 @@ const MeritBadgeCornerIcon = ({ categoryType, position }) => {
544
546
  switch (position) {
545
547
  case "top-left":
546
548
  iconPositionClassName = "top-[3px] left-[3px] pb-[10px] pr-[10px] pl-[4px] pt-[4px]";
547
- cornerPositionClassName = "bottom-[-1px] right-0";
549
+ cornerPositionClassName = "-bottom-px right-0";
548
550
  break;
549
551
  case "top-right":
550
552
  iconPositionClassName = "top-[3px] right-[3px] pl-[10px] pb-[10px] pr-[4px] pt-[4px]";
551
- cornerPositionClassName = "bottom-[-1px] left-0 rotate-90";
553
+ cornerPositionClassName = "-bottom-px left-0 rotate-90";
552
554
  break;
553
555
  case "bottom-left":
554
556
  iconPositionClassName = "bottom-[3px] left-[3px] pr-[10px] pt-[10px] pl-[4px] pb-[4px]";
555
- cornerPositionClassName = "top-0 right-0 rotate-[270deg]";
557
+ cornerPositionClassName = "top-0 right-0 rotate-270";
556
558
  break;
557
559
  case "bottom-right":
558
560
  iconPositionClassName = "bottom-[3px] right-[3px] pl-[10px] pt-[10px] pr-[4px] pb-[4px]";
559
- cornerPositionClassName = "top-[-1px] left-0 rotate-180";
561
+ cornerPositionClassName = "-top-px left-0 rotate-180";
560
562
  break;
561
563
  }
562
564
  return /* @__PURE__ */ React.createElement(
@@ -734,7 +736,7 @@ const MeritBadgeProfileImageDisplay = ({
734
736
  avatarFingerprintColor,
735
737
  avatarFallbackVariant = "initial"
736
738
  }) => {
737
- const imageClassName = `${size === "big" ? "h-[60px] w-[60px]" : "h-[39px] w-[39px]"} rounded-full overflow-hidden border-[2px] border-solid border-grayscale-200`;
739
+ const imageClassName = `${size === "big" ? "h-[60px] w-[60px]" : "h-[39px] w-[39px]"} rounded-full overflow-hidden border-2 border-solid border-grayscale-200`;
738
740
  const silhouetteClassName = size === "big" ? "h-[43px] w-[43px]" : "h-[28px] w-[28px]";
739
741
  const profileImage = imageComponent ? /* @__PURE__ */ React.createElement("div", { className: imageClassName }, imageComponent) : /* @__PURE__ */ React.createElement(
740
742
  UserProfilePicture,
@@ -772,6 +774,7 @@ const MeritBadgeFrontFace = ({
772
774
  onVerifierClick
773
775
  }) => {
774
776
  var _a;
777
+ const t = useT();
775
778
  const {
776
779
  title = "",
777
780
  createdAt,
@@ -779,7 +782,10 @@ const MeritBadgeFrontFace = ({
779
782
  issuee: _issuee = "",
780
783
  credentialSubject,
781
784
  imageUrl
782
- } = getInfoFromCredential(credential, "MMM dd, yyyy", { uppercaseDate: false });
785
+ } = getInfoFromCredential(credential, "MMM dd, yyyy", {
786
+ uppercaseDate: false,
787
+ dateType: "awarded"
788
+ });
783
789
  const issuee = issueeOverride || _issuee;
784
790
  const issuer = issuerOverride || _issuer;
785
791
  (_a = credentialSubject == null ? void 0 : credentialSubject.achievement) != null ? _a : {};
@@ -848,7 +854,7 @@ const MeritBadgeFrontFace = ({
848
854
  /* @__PURE__ */ React.createElement(
849
855
  "div",
850
856
  {
851
- className: `flex flex-col gap-[15px] items-center px-[20px] pt-[92px] pb-[19px] border-solid border-[4px] ${borderColor} rounded-[30px]`
857
+ className: `flex flex-col gap-[15px] items-center px-[20px] pt-[92px] pb-[19px] border-solid border-4 ${borderColor} rounded-[30px]`
852
858
  },
853
859
  /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-[5px] w-full" }, /* @__PURE__ */ React.createElement("div", { className: "flex flex-col items-center text-grayscale-900" }, issueeName && !customBodyCardComponent && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("span", { className: "flex flex-wrap items-baseline justify-center gap-1 text-[16px] leading-[150%] font-jacques max-w-full overflow-hidden text-ellipsis whitespace-nowrap" }, !issueeDisplay.isMissing && issueeDisplay.isDidValue ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("span", { className: "text-grayscale-900" }, "Digital ID:"), /* @__PURE__ */ React.createElement("span", { className: "text-grayscale-600 underline" }, issueeDisplay.displayName)) : issueeName), /* @__PURE__ */ React.createElement("span", { className: "text-[14px] leading-[150%] font-jacques" }, "has met the requirements for"))), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ React.createElement("h1", { className: "text-grayscale-900 text-center text-[25px] font-jacques w-full" }, title), /* @__PURE__ */ React.createElement(
854
860
  "div",
@@ -870,7 +876,7 @@ const MeritBadgeFrontFace = ({
870
876
  avatarFallbackVariant: issueeDisplay.isDidValue ? "fingerprint" : "initial"
871
877
  }
872
878
  ),
873
- /* @__PURE__ */ React.createElement("div", { className: "flex flex-col w-full" }, /* @__PURE__ */ React.createElement("div", { className: "text-[14px] text-grayscale-900 flex flex-col items-center w-full mb-[10px]" }, /* @__PURE__ */ React.createElement("span", { className: "font-jacques flex gap-[5px] items-center w-full overflow-ellipsis whitespace-nowrap overflow-hidden justify-center" }, issueeName === "0 person" ? "Not yet awarded" : /* @__PURE__ */ React.createElement(React.Fragment, null, "Awarded on ", createdAt, " by"))), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-[5px] items-center w-full" }, /* @__PURE__ */ React.createElement("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 line-clamp-2 break-words scrollbar-hide" }, issuerDisplay.isDidValue ? /* @__PURE__ */ React.createElement("span", { className: "mb-[3px] pt-[3px] text-grayscale-900 text-[14px] leading-[90%] font-jacques tracking-[0.25px] w-full text-center line-clamp-2 break-words" }, /* @__PURE__ */ React.createElement("span", { className: "font-[600]" }, "Digital ID:"), /* @__PURE__ */ React.createElement("span", { className: "text-grayscale-600" }, issuerName)) : issuerName))),
879
+ /* @__PURE__ */ React.createElement("div", { className: "flex flex-col w-full" }, /* @__PURE__ */ React.createElement("div", { className: "text-[14px] text-grayscale-900 flex flex-col items-center w-full mb-[10px]" }, /* @__PURE__ */ React.createElement("span", { className: "font-jacques flex gap-[5px] items-center w-full text-ellipsis whitespace-nowrap overflow-hidden justify-center" }, issueeName === "0 person" ? "Not yet awarded" : createdAt ? t("credential.awardedOnBy", { date: createdAt }) : t("credential.by"))), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-[5px] items-center w-full" }, /* @__PURE__ */ React.createElement("span", { className: "mb-[3px] pt-[3px] text-grayscale-900 text-[25px] leading-[90%] font-sacramento border-b border-solid border-grayscale-200 w-full text-center line-clamp-2 wrap-break-word scrollbar-hide" }, issuerDisplay.isDidValue ? /* @__PURE__ */ React.createElement("span", { className: "mb-[3px] pt-[3px] text-grayscale-900 text-[14px] leading-[90%] font-jacques tracking-[0.25px] w-full text-center line-clamp-2 wrap-break-word" }, /* @__PURE__ */ React.createElement("span", { className: "font-[600]" }, "Digital ID:"), /* @__PURE__ */ React.createElement("span", { className: "text-grayscale-600" }, issuerName)) : issuerName))),
874
880
  /* @__PURE__ */ React.createElement(
875
881
  MeritBadgeProfileImageDisplay,
876
882
  {
@@ -1011,4 +1017,4 @@ const MeritBadgeDisplayCard = ({
1011
1017
  };
1012
1018
 
1013
1019
  export { MeritBadgeBackFace as M, MeritBadgeDisplayCard as a, MeritBadgeFrontFace as b };
1014
- //# sourceMappingURL=MeritBadgeDisplayCard-2621d029.js.map
1020
+ //# sourceMappingURL=MeritBadgeDisplayCard-9f95dd08.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeritBadgeDisplayCard-9f95dd08.js","sources":["../../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 AlignmentsRowProps = {\n url?: string;\n name?: string;\n framework?: string;\n code?: string;\n description?: string;\n verified?: boolean;\n};\n\nconst ExternalLinkIcon: React.FC = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M15 3h6v6\" />\n <path d=\"M10 14 21 3\" />\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n </svg>\n);\n\nconst ShieldCheckIcon: React.FC = () => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n);\n\nconst AlignmentRow: React.FC<AlignmentsRowProps> = ({\n url,\n name,\n framework,\n code,\n description,\n verified,\n}) => {\n const title = name || code || 'Framework alignment';\n\n return (\n <div\n className={`flex flex-col gap-[6px] font-poppins w-full rounded-[15px] border px-[14px] py-[12px] ${\n verified\n ? 'bg-emerald-50 border-emerald-100'\n : 'bg-grayscale-50 border-grayscale-200'\n }`}\n >\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex items-start gap-2 min-w-0\">\n <span className=\"text-[14px] font-semibold text-grayscale-900 leading-snug\">\n {title}\n </span>\n {verified && (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-emerald-50 border border-emerald-100 px-[6px] py-[2px] text-[10px] font-medium text-emerald-700 shrink-0\">\n <ShieldCheckIcon />\n Verified\n </span>\n )}\n </div>\n {url && (\n <a\n href={url}\n target=\"_blank\"\n rel=\"noreferrer\"\n onClick={e => e.stopPropagation()}\n className=\"text-grayscale-400 hover:text-grayscale-700 transition-colors shrink-0\"\n aria-label=\"Open alignment source\"\n >\n <ExternalLinkIcon />\n </a>\n )}\n </div>\n\n {(code || framework) && (\n <div className=\"flex flex-wrap items-center gap-[6px]\">\n {code && (\n <span className=\"inline-flex items-center rounded-full bg-grayscale-100 border border-grayscale-200 px-[8px] py-[2px] text-[11px] font-medium text-grayscale-700\">\n {code}\n </span>\n )}\n {framework && (\n <span className=\"text-[11px] text-grayscale-500\">{framework}</span>\n )}\n </div>\n )}\n\n {description && (\n <p className=\"text-[12px] text-grayscale-600 leading-relaxed\">{description}</p>\n )}\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 targetCode?: string;\n targetDescription?: string;\n targetType?: string;\n};\n\ntype AlignmentsBoxProps = {\n alignment: Alignment | Alignment[];\n style: 'MeritBadge' | 'boost';\n};\n\nconst isCredentialEngine = (a: Alignment): boolean =>\n a.targetType === 'ceterms:Credential' || a.targetFramework === 'Credential Engine Registry';\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 list = Array.isArray(alignment) ? alignment : [alignment];\n if (list.length === 0) return null;\n\n const verified = list.filter(isCredentialEngine);\n const other = list.filter(a => !isCredentialEngine(a));\n\n const renderRow = (object: Alignment, index: number, isVerified: boolean) => (\n <AlignmentRow\n key={`${object.targetUrl ?? object.targetName}-${index}`}\n url={object.targetUrl}\n name={object.targetName}\n framework={object.targetFramework}\n code={object.targetCode}\n description={object.targetDescription}\n verified={isVerified}\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 ? '#00BA88' : undefined} />\n </button>\n </div>\n {showInfo && <InfoBox text={alignmentText} handleClose={() => setShowInfo(false)} />}\n\n {verified.length > 0 && (\n <div className=\"flex flex-col gap-[8px] w-full\">\n <span className=\"text-[11px] font-medium text-grayscale-500 font-poppins\">\n Verified source\n </span>\n {verified.map((object, index) => renderRow(object, index, true))}\n </div>\n )}\n\n {other.length > 0 && (\n <div className=\"flex flex-col gap-[8px] w-full\">\n {verified.length > 0 && (\n <span className=\"text-[11px] font-medium text-grayscale-500 font-poppins\">\n Occupations &amp; programs\n </span>\n )}\n {other.map((object, index) => renderRow(object, index, false))}\n </div>\n )}\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(${\n 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 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 className=\"w-[15px] h-[15px]\" />;\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 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 { useT } from '../../i18n';\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 t = useT();\n const { createdAt, credentialSubject } = getInfoFromCredential(credential, 'MMM dd, yyyy', {\n uppercaseDate: false,\n dateType: 'awarded',\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 {createdAt && (\n <span\n className={`text-grayscale-600 font-poppins text-[12px] font-[600] w-full ${\n description\n ? 'pt-[10px] border-t border-solid border-grayscale-200'\n : ''\n }`}\n >\n {t('credential.awardedOn', { date: createdAt })}\n </span>\n )}\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-px 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-px 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-270';\n break;\n case 'bottom-right':\n iconPositionClassName =\n 'bottom-[3px] right-[3px] pl-[10px] pt-[10px] pr-[4px] pb-[4px]';\n cornerPositionClassName = '-top-px 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 const [errored, setErrored] = React.useState(false);\n\n React.useEffect(() => {\n setErrored(false);\n }, [image]);\n\n const showPlaceholder = !image || errored;\n\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 {showPlaceholder ? (\n <g\n clipPath=\"url(#circleClip)\"\n transform=\"translate(78.5 58) scale(2.1)\"\n className=\"text-grayscale-400\"\n >\n <circle\n cx=\"12\"\n cy=\"9\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n fill=\"none\"\n />\n <path\n d=\"M8.5 14.5 7 22l5-3 5 3-1.5-7.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n </g>\n ) : (\n <image\n xlinkHref={image}\n x=\"28.5\"\n y=\"9\"\n width=\"150\"\n height=\"150\"\n clipPath=\"url(#circleClip)\"\n preserveAspectRatio=\"xMidYMid slice\"\n onError={() => setErrored(true)}\n />\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 avatarColor?: string;\n avatarFingerprintColor?: string;\n avatarFallbackVariant?: 'initial' | 'fingerprint';\n};\n\nconst MeritBadgeProfileImageDisplay: React.FC<MeritBadgeProfileImageDisplayProps> = ({\n imageUrl,\n showSeal = false,\n className = '',\n imageComponent,\n size = 'big',\n userName,\n avatarColor,\n avatarFingerprintColor,\n avatarFallbackVariant = 'initial',\n}) => {\n const imageClassName = `${\n size === 'big' ? 'h-[60px] w-[60px]' : 'h-[39px] w-[39px]'\n } rounded-full overflow-hidden border-2 border-solid border-grayscale-200`;\n const silhouetteClassName = size === 'big' ? 'h-[43px] w-[43px]' : 'h-[28px] w-[28px]';\n\n const profileImage = imageComponent ? (\n <div className={imageClassName}>{imageComponent}</div>\n ) : (\n <UserProfilePicture\n customContainerClass={imageClassName}\n customImageClass=\"h-full w-full object-cover bg-white\"\n user={{ image: imageUrl, name: userName }}\n avatarColor={avatarColor}\n avatarFingerprintColor={avatarFingerprintColor}\n avatarIconClassName={silhouetteClassName}\n avatarSilhouetteClassName={silhouetteClassName}\n avatarFallbackVariant={avatarFallbackVariant}\n />\n );\n\n return (\n <div className={className}>\n {showSeal && (\n <div className=\"relative inline-flex items-center justify-center\">\n <div className=\"bg-white rounded-full p-[5px]\">\n <IssuerSeal size=\"58\" />\n </div>\n <div className=\"absolute inset-0 flex items-center justify-center\">\n {profileImage}\n </div>\n </div>\n )}\n\n {!showSeal && profileImage}\n </div>\n );\n};\n\nexport default MeritBadgeProfileImageDisplay;\n","import React from 'react';\nimport { useT } from '../../i18n';\n\nimport MeritBadgeCornerIcon from './MeritBadgeCornerIcon';\nimport MeritBadgeImageDisplay from './MeritBadgeImageDisplay';\nimport MeritBadgeSkillsCount from './MeritBadgeSkillsCount';\nimport MeritBadgeProfileImageDisplay from './MeritBadgeProfileImageDisplay';\n\nimport Line from '../svgs/Line';\n\nimport {\n getInfoFromCredential,\n getImageFromProfile,\n getCategoryLightColor,\n getCategoryDarkColor,\n} from '../../helpers/credential.helpers';\nimport { isAppDidWeb } from '@learncard/helpers';\nimport { resolveProfileDisplay } from '../../helpers/did-display.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 unknownVerifierTitle?: string;\n hideFrontFaceDetails?: boolean;\n onVerifierClick?: (\n event: React.MouseEvent<HTMLButtonElement>,\n verifierState: VerifierState\n ) => void;\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 unknownVerifierTitle,\n hideFrontFaceDetails,\n onVerifierClick,\n}) => {\n const t = useT();\n const {\n title = '',\n createdAt,\n issuer: _issuer = '',\n issuee: _issuee = '',\n credentialSubject,\n imageUrl,\n } = getInfoFromCredential(credential, 'MMM dd, yyyy', {\n uppercaseDate: false,\n dateType: 'awarded',\n });\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 issueeDisplay = resolveProfileDisplay(issuee, '');\n const issuerDisplay = resolveProfileDisplay(issuer, 'Unknown');\n\n const issuerName = issuerDisplay.displayName;\n const issueeName = issueeDisplay.displayName;\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 const isAppIssuerDid = isAppDidWeb(issuerDid);\n\n let verifierState: VerifierState;\n if (credentialSubject?.id === issuerDid && issuerDid && issuerDid !== 'did:example:123') {\n verifierState = VERIFIER_STATES.selfVerified;\n } else if (unknownVerifierTitle) {\n verifierState = VERIFIER_STATES.trustedVerifier;\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 = isAppIssuerDid\n ? VERIFIER_STATES.appIssuer\n : VERIFIER_STATES.unknownVerifier;\n } else {\n verifierState = isAppIssuerDid\n ? VERIFIER_STATES.appIssuer\n : VERIFIER_STATES.unknownVerifier;\n }\n }\n const isSelfVerified = verifierState === VERIFIER_STATES.selfVerified;\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-4 ${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 {issueeName && !customBodyCardComponent && (\n <>\n <span className=\"flex flex-wrap items-baseline justify-center gap-1 text-[16px] leading-[150%] font-jacques max-w-full overflow-hidden text-ellipsis whitespace-nowrap\">\n {!issueeDisplay.isMissing && issueeDisplay.isDidValue ? (\n <>\n <span className=\"text-grayscale-900\">Digital ID:</span>\n <span className=\"text-grayscale-600 underline\">\n {issueeDisplay.displayName}\n </span>\n </>\n ) : (\n issueeName\n )}\n </span>\n <span className=\"text-[14px] leading-[150%] font-jacques\">\n has met the requirements for\n </span>\n </>\n )}\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 {!customBodyCardComponent && (\n <MeritBadgeProfileImageDisplay\n imageUrl={issueeImage}\n imageComponent={subjectImageComponent}\n className={`flex justify-center items-center ${textDarkColor}`}\n userName={issueeName}\n avatarColor={issueeDisplay.avatarColor}\n avatarFingerprintColor={issueeDisplay.avatarFingerprintColor}\n avatarFallbackVariant={issueeDisplay.isDidValue ? 'fingerprint' : 'initial'}\n />\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 text-ellipsis whitespace-nowrap overflow-hidden justify-center\">\n {issueeName === '0 person'\n ? 'Not yet awarded'\n : createdAt\n ? t('credential.awardedOnBy', { date: createdAt })\n : t('credential.by')}\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 border-solid border-grayscale-200 w-full text-center line-clamp-2 wrap-break-word scrollbar-hide\">\n {issuerDisplay.isDidValue ? (\n <span className=\"mb-[3px] pt-[3px] text-grayscale-900 text-[14px] leading-[90%] font-jacques tracking-[0.25px] w-full text-center line-clamp-2 wrap-break-word\">\n <span className=\"font-[600]\">Digital ID:</span>\n <span className=\"text-grayscale-600\">{issuerName}</span>\n </span>\n ) : (\n issuerName\n )}\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={issuerDisplay.isMissing ? '' : issuerName}\n imageComponent={issuerImageComponent}\n className={`w-[calc(100%-26px)] flex justify-center items-center ${textLightColor}`}\n size=\"small\"\n showSeal\n avatarColor={issuerDisplay.avatarColor}\n avatarFingerprintColor={issuerDisplay.avatarFingerprintColor}\n avatarFallbackVariant={issuerDisplay.isDidValue ? 'fingerprint' : 'initial'}\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 unknownVerifierTitle={unknownVerifierTitle}\n className=\"bg-white px-[5px] pb-[5px]\"\n onClick={event => onVerifierClick?.(event, verifierState)}\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';\nimport { VerifierState } from '../CertificateDisplayCard/VerifierStateBadgeAndText';\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 unknownVerifierTitle?: string;\n hideFrontFaceDetails?: boolean;\n onVerifierClick?: (\n event: React.MouseEvent<HTMLButtonElement>,\n verifierState: VerifierState\n ) => void;\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 unknownVerifierTitle,\n hideFrontFaceDetails,\n onVerifierClick,\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 unknownVerifierTitle={unknownVerifierTitle}\n hideFrontFaceDetails={hideFrontFaceDetails}\n onVerifierClick={onVerifierClick}\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":["attachments","videoMetadata"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { P as PuzzlePiece } from './PuzzlePiece-a3d9cc62.js';
3
- import { g as getTotalCountOfSkills, c as categorizeSkills } from './credential.helpers-30adeb2d.js';
2
+ import { P as PuzzlePiece } from './PuzzlePiece-9c313d93.js';
3
+ import { g as getTotalCountOfSkills, c as categorizeSkills } from './credential.helpers-4c72d304.js';
4
4
 
5
5
  const MeritBadgeSkillsCount = ({ skills, onClick }) => {
6
6
  const skillsCount = getTotalCountOfSkills(skills);
@@ -27,4 +27,4 @@ const MeritBadgeSkillsCount = ({ skills, onClick }) => {
27
27
  };
28
28
 
29
29
  export { MeritBadgeSkillsCount as M };
30
- //# sourceMappingURL=MeritBadgeSkillsCount-b3e3985a.js.map
30
+ //# sourceMappingURL=MeritBadgeSkillsCount-c20f9f60.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MeritBadgeSkillsCount-b3e3985a.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":["total"],"mappings":";;;;AAOO,MAAM,qBAGR,GAAA,CAAC,EAAE,MAAA,EAAQ,SAAc,KAAA;AAC1B,EAAM,MAAA,WAAA,GAAc,sBAAsB,MAAM,CAAA,CAAA;AAEhD,EAAI,IAAA,WAAA,KAAgB,CAAG,EAAA,uBAAS,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAEhC,EAAM,MAAA,SAAA,GAAY,iBAAiB,MAAM,CAAA,CAAA;AAGzC,EAAA,MAAM,WAAmB,GAAA,MAAA,CAAO,MAAO,CAAA,SAAS,CAAE,CAAA,MAAA;AAAA,IAC9C,CAACA,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,EACI,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,SAAU,EAAA,sGAAA;AAAA,MACV,OAAA;AAAA,KAAA;AAAA,oBAEA,KAAA,CAAA,aAAA,CAAC,SAAI,SAAU,EAAA,uGAAA,EAAA,EAAwG,KACjH,KAAM,EAAA,GAAA,EAAE,MAAM,GAChB,kBAAA,KAAA,CAAA,aAAA,CAAC,SAAI,SAAU,EAAA,wFAAA,EAAA,sCACV,WAAY,EAAA,EAAA,SAAA,EAAU,cAAa,IAAK,EAAA,MAAA,EAAO,CACpD,CACJ,CAAA;AAAA,GACJ,CAAA;AAER;;;;"}
1
+ {"version":3,"file":"MeritBadgeSkillsCount-c20f9f60.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":["total"],"mappings":";;;;AAOO,MAAM,qBAGR,GAAA,CAAC,EAAE,MAAA,EAAQ,SAAc,KAAA;AAC1B,EAAM,MAAA,WAAA,GAAc,sBAAsB,MAAM,CAAA,CAAA;AAEhD,EAAI,IAAA,WAAA,KAAgB,CAAG,EAAA,uBAAS,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAEhC,EAAM,MAAA,SAAA,GAAY,iBAAiB,MAAM,CAAA,CAAA;AAGzC,EAAA,MAAM,WAAmB,GAAA,MAAA,CAAO,MAAO,CAAA,SAAS,CAAE,CAAA,MAAA;AAAA,IAC9C,CAACA,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,EACI,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,SAAU,EAAA,sGAAA;AAAA,MACV,OAAA;AAAA,KAAA;AAAA,oBAEA,KAAA,CAAA,aAAA,CAAC,SAAI,SAAU,EAAA,uGAAA,EAAA,EAAwG,KACjH,KAAM,EAAA,GAAA,EAAE,MAAM,GAChB,kBAAA,KAAA,CAAA,aAAA,CAAC,SAAI,SAAU,EAAA,wFAAA,EAAA,sCACV,WAAY,EAAA,EAAA,SAAA,EAAU,cAAa,IAAK,EAAA,MAAA,EAAO,CACpD,CACJ,CAAA;AAAA,GACJ,CAAA;AAER;;;;"}
@@ -55,7 +55,7 @@ const MiniVCThumbnail = ({
55
55
  className: "flex item-center justify-center w-full -mt-3",
56
56
  "data-testid": "mini-vc-thumbnail-badge"
57
57
  },
58
- /* @__PURE__ */ React.createElement("div", { className: "max-h-[80px] max-w-[80px] xxsm:h-[60px] xxsm:w-[60px] border-solid border-1 border-black bg-white z-10" }, /* @__PURE__ */ React.createElement(
58
+ /* @__PURE__ */ React.createElement("div", { className: "max-h-[80px] max-w-[80px] xxsm:h-[60px] xxsm:w-[60px] border-solid border border-black bg-white z-10" }, /* @__PURE__ */ React.createElement(
59
59
  "img",
60
60
  {
61
61
  className: "h-full w-full object-cover",
@@ -75,4 +75,4 @@ const MiniVCThumbnail = ({
75
75
  };
76
76
 
77
77
  export { MiniVCThumbnail as M };
78
- //# sourceMappingURL=MiniVCThumbnail-cc05e1f8.js.map
78
+ //# sourceMappingURL=MiniVCThumbnail-3800ee40.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MiniVCThumbnail-3800ee40.js","sources":["../../src/components/MiniVCThumbnail/MiniVCThumbnail.tsx"],"sourcesContent":["import React from 'react';\n\nimport VerifiedCheck from '../../assets/images/verified-check.png';\n\nimport { MiniVCThumbnailProps } from './types';\n\nexport const MiniVCThumbnail: React.FC<MiniVCThumbnailProps> = ({\n title,\n createdAt,\n issuerImage,\n badgeImage,\n className = '',\n onClick = () => {},\n}) => {\n const titleClasses = !issuerImage ? 'w-full text-center' : 'w-3/4 text-left';\n const createdAtClasses = !issuerImage ? 'w-full text-center' : 'text-left';\n\n return (\n <div\n onClick={onClick}\n className={`flex flex-col items-center justify-between relative py-3 px-3 rounded-3xl shadow-3xl bg-emerald-700 min-h-[120px] max-w-sm mini-vc-thumbnail-container ${className}`}\n data-testid=\"mini-vc-thumbnail\"\n >\n <div className=\"flex flex-row items-center justify-between mb-3 z-10\">\n {issuerImage && (\n <div\n className=\"flex flex-row justify-center items-center w-1/4 text-center\"\n data-testid=\"mini-vc-thumbnail-issuer\"\n >\n <div className=\"min-w-[40px] min-h-[40px] max-h-[48px] max-w-[48px] shadow-3xl p-1 rounded-full bg-white\">\n <img\n className=\"h-full w-full object-cover rounded-full\"\n src={issuerImage}\n alt=\"issuer image\"\n />\n </div>\n </div>\n )}\n <div className={`flex flex-col items-start justify-center ${titleClasses}`}>\n <h2\n className=\"ml-2 text-sm tracking-wide leading-snug line-clamp-2\"\n data-testid=\"mini-vc-thumbnail-title\"\n >\n {title ?? ''}\n </h2>\n <p\n className={`ml-2 text-sm font-light line-clamp-1 ${createdAtClasses}`}\n data-testid=\"mini-vc-thumbnail-createdAt\"\n >\n {createdAt ?? ''}\n </p>\n </div>\n </div>\n <div className=\"flex items-center justify-center w-full mt-3\">\n {badgeImage && (\n <div\n className=\"flex item-center justify-center w-full -mt-3\"\n data-testid=\"mini-vc-thumbnail-badge\"\n >\n <div className=\"max-h-[80px] max-w-[80px] xxsm:h-[60px] xxsm:w-[60px] border-solid border border-black bg-white z-10\">\n <img\n className=\"h-full w-full object-cover\"\n src={badgeImage}\n alt=\"badge image\"\n />\n </div>\n </div>\n )}\n <div className=\"flex absolute bottom-1 right-1 items-center justify-center my-0 mx-1 h-10 w-10 rounded-full bg-white overflow-hidden\">\n <div className=\"flex items-center justify-center h-5/6 w-10/12 bg-white rounded-full border-solid border-4 border-emerald-700 overflow-hidden\">\n <img\n className=\"h-full w-full object-cover\"\n src={VerifiedCheck ?? ''}\n alt=\"credential icon\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default MiniVCThumbnail;\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useEffect } from 'react';
2
- import { N as NotificationTypeStyles } from './types-c765e2a4.js';
2
+ import { N as NotificationTypeStyles } from './types-23b696f1.js';
3
3
  import { N as NotificationTypeEnum } from './notifications-009bbd80.js';
4
4
  import { C as Checkmark } from './Checkmark-724d5d17.js';
5
5
 
@@ -114,4 +114,4 @@ const Notification = ({
114
114
  };
115
115
 
116
116
  export { Notification as N };
117
- //# sourceMappingURL=Notification-279ba207.js.map
117
+ //# sourceMappingURL=Notification-39590182.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Notification-279ba207.js","sources":["../../src/components/Notification/Notification.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\n\nimport { NotificationProps, NotificationTypeStyles } from './types';\nimport { NotificationTypeEnum } from '../../constants/notifications';\n\nimport Checkmark from '../svgs/Checkmark';\n\nexport const Notification: React.FC<NotificationProps> = ({\n title,\n issuerImage,\n issueDate,\n className,\n notificationType = NotificationTypeEnum.Achievement,\n handleViewOnClick = () => {},\n claimStatus = false,\n handleClaimOnClick = () => {},\n loadingState = false,\n}) => {\n const [isClaimed, setIsClaimed] = useState<boolean>(claimStatus || false);\n const [isLoading, setIsLoading] = useState<boolean>(loadingState || false);\n\n useEffect(() => {\n setIsClaimed(claimStatus);\n }, [claimStatus]);\n\n useEffect(() => {\n setIsLoading(loadingState);\n }, [loadingState]);\n\n const {\n IconComponent,\n iconCircleStyles,\n textStyles,\n viewButtonStyles,\n claimedButtonStyles,\n unclaimedButtonStyles,\n typeText,\n } = NotificationTypeStyles[notificationType];\n\n const claimButtonStyles = isClaimed ? claimedButtonStyles : unclaimedButtonStyles;\n\n let buttonText: string = '';\n\n if (isClaimed) {\n buttonText = 'Claimed';\n } else if (!isClaimed) {\n buttonText = 'Claim';\n }\n\n return (\n <div\n className={`flex justify-center items-center relative w-full rounded-3xl shadow-2xl py-3 bg-white ${className}`}\n >\n <div\n className={`absolute flex items-center justify-center top-2 right-2 h-8 w-8 overflow-hidden rounded-full z-10 ${iconCircleStyles}`}\n >\n <IconComponent className=\"h-4/5 text-white\" />\n </div>\n <div className=\"flex flex-col justify-center items-center relative w-11/12\">\n <div className=\"flex flex-row items-center justify-start w-full\">\n <div\n className={`h-12 w-12 max-h-12 max-w-[48px] min-h-[48px] min-w-[48px] overflow-hidden rounded-full ${iconCircleStyles}`}\n >\n <img\n src={issuerImage}\n alt=\"issuer image\"\n className=\"w-full h-full object-cover\"\n />\n </div>\n <div className=\"text-left ml-3\">\n <h4\n className=\"font-bold tracking-wide line-clamp-1 text-black\"\n data-testid=\"notification-title\"\n >\n {title}\n </h4>\n <p\n className={`font-semibold p-0 m-0 leading-none tracking-wide line-clamp-1 ${textStyles}`}\n data-testid=\"notification-type\"\n >\n {typeText}{' '}\n <span\n className=\"text-grayscale-600 normal-case font-normal text-sm\"\n data-testid=\"notification-cred-issue-date\"\n >\n • {issueDate}\n </span>\n </p>\n </div>\n </div>\n <div className=\"flex items-center justify-between w-full mt-3\">\n <button\n onClick={handleViewOnClick}\n className={`flex-1 rounded-[24px] border-solid border-2 bg-white font-semibold mr-2 py-2 px-3 tracking-wide ${viewButtonStyles}`}\n role=\"button\"\n name=\"notification-view-button\"\n >\n View\n </button>\n <button\n className={`flex items-center justify-center flex-1 rounded-[24px] border-2 border-solid font-semibold py-2 px-3 tracking-wide ${claimButtonStyles}`}\n onClick={handleClaimOnClick}\n role=\"button\"\n name=\"notification-claim-button\"\n >\n {isClaimed && <Checkmark className=\"h-[24px] p-0 m-0\" />}{' '}\n {isLoading ? 'Loading...' : buttonText}\n </button>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Notification;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Notification-39590182.js","sources":["../../src/components/Notification/Notification.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\n\nimport { NotificationProps, NotificationTypeStyles } from './types';\nimport { NotificationTypeEnum } from '../../constants/notifications';\n\nimport Checkmark from '../svgs/Checkmark';\n\nexport const Notification: React.FC<NotificationProps> = ({\n title,\n issuerImage,\n issueDate,\n className,\n notificationType = NotificationTypeEnum.Achievement,\n handleViewOnClick = () => {},\n claimStatus = false,\n handleClaimOnClick = () => {},\n loadingState = false,\n}) => {\n const [isClaimed, setIsClaimed] = useState<boolean>(claimStatus || false);\n const [isLoading, setIsLoading] = useState<boolean>(loadingState || false);\n\n useEffect(() => {\n setIsClaimed(claimStatus);\n }, [claimStatus]);\n\n useEffect(() => {\n setIsLoading(loadingState);\n }, [loadingState]);\n\n const {\n IconComponent,\n iconCircleStyles,\n textStyles,\n viewButtonStyles,\n claimedButtonStyles,\n unclaimedButtonStyles,\n typeText,\n } = NotificationTypeStyles[notificationType];\n\n const claimButtonStyles = isClaimed ? claimedButtonStyles : unclaimedButtonStyles;\n\n let buttonText: string = '';\n\n if (isClaimed) {\n buttonText = 'Claimed';\n } else if (!isClaimed) {\n buttonText = 'Claim';\n }\n\n return (\n <div\n className={`flex justify-center items-center relative w-full rounded-3xl shadow-2xl py-3 bg-white ${className}`}\n >\n <div\n className={`absolute flex items-center justify-center top-2 right-2 h-8 w-8 overflow-hidden rounded-full z-10 ${iconCircleStyles}`}\n >\n <IconComponent className=\"h-4/5 text-white\" />\n </div>\n <div className=\"flex flex-col justify-center items-center relative w-11/12\">\n <div className=\"flex flex-row items-center justify-start w-full\">\n <div\n className={`h-12 w-12 max-h-12 max-w-[48px] min-h-[48px] min-w-[48px] overflow-hidden rounded-full ${iconCircleStyles}`}\n >\n <img\n src={issuerImage}\n alt=\"issuer image\"\n className=\"w-full h-full object-cover\"\n />\n </div>\n <div className=\"text-left ml-3\">\n <h4\n className=\"font-bold tracking-wide line-clamp-1 text-black\"\n data-testid=\"notification-title\"\n >\n {title}\n </h4>\n <p\n className={`font-semibold p-0 m-0 leading-none tracking-wide line-clamp-1 ${textStyles}`}\n data-testid=\"notification-type\"\n >\n {typeText}{' '}\n <span\n className=\"text-grayscale-600 normal-case font-normal text-sm\"\n data-testid=\"notification-cred-issue-date\"\n >\n • {issueDate}\n </span>\n </p>\n </div>\n </div>\n <div className=\"flex items-center justify-between w-full mt-3\">\n <button\n onClick={handleViewOnClick}\n className={`flex-1 rounded-[24px] border-solid border-2 bg-white font-semibold mr-2 py-2 px-3 tracking-wide ${viewButtonStyles}`}\n role=\"button\"\n name=\"notification-view-button\"\n >\n View\n </button>\n <button\n className={`flex items-center justify-center flex-1 rounded-[24px] border-2 border-solid font-semibold py-2 px-3 tracking-wide ${claimButtonStyles}`}\n onClick={handleClaimOnClick}\n role=\"button\"\n name=\"notification-claim-button\"\n >\n {isClaimed && <Checkmark className=\"h-[24px] p-0 m-0\" />}{' '}\n {isLoading ? 'Loading...' : buttonText}\n </button>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Notification;\n"],"names":[],"mappings":"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"}