@learncard/react 2.9.29 → 2.10.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 (268) hide show
  1. package/dist/cjs/BadgeThumbnailImg-02df88f9.js +55 -0
  2. package/dist/cjs/BadgeThumbnailImg-02df88f9.js.map +1 -0
  3. package/dist/cjs/{BoostGenericCard-310cd633.js → BoostGenericCard-f2f66b1c.js} +6 -5
  4. package/dist/cjs/BoostGenericCard-f2f66b1c.js.map +1 -0
  5. package/dist/cjs/{BoostSmallCard-4e200046.js → BoostSmallCard-ece8f97e.js} +4 -3
  6. package/dist/cjs/BoostSmallCard-ece8f97e.js.map +1 -0
  7. package/dist/cjs/{CertificateDisplayCard-50eb6485.js → CertificateDisplayCard-ca865915.js} +51 -13
  8. package/dist/cjs/CertificateDisplayCard-ca865915.js.map +1 -0
  9. package/dist/cjs/{GenericCard-2b20ab4b.js → GenericCard-cdc6eede.js} +3 -2
  10. package/dist/cjs/GenericCard-cdc6eede.js.map +1 -0
  11. package/dist/cjs/{IDDisplayIcon-4b6ce62f.js → IDDisplayIcon-922a5fcf.js} +14 -14
  12. package/dist/cjs/IDDisplayIcon-922a5fcf.js.map +1 -0
  13. package/dist/cjs/{MeritBadgeDisplayCard-7535f16d.js → MeritBadgeDisplayCard-c2f39f1f.js} +52 -13
  14. package/dist/cjs/MeritBadgeDisplayCard-c2f39f1f.js.map +1 -0
  15. package/dist/cjs/{MeritBadgeSkillsCount-8307d493.js → MeritBadgeSkillsCount-1120813b.js} +2 -2
  16. package/dist/cjs/{MeritBadgeSkillsCount-8307d493.js.map → MeritBadgeSkillsCount-1120813b.js.map} +1 -1
  17. package/dist/cjs/{NotificationBoostCard-80dbf681.js → NotificationBoostCard-3ed9ec86.js} +2 -2
  18. package/dist/cjs/{NotificationBoostCard-80dbf681.js.map → NotificationBoostCard-3ed9ec86.js.map} +1 -1
  19. package/dist/cjs/{UserProfilePicture-22944d8f.js → UserProfilePicture-80675455.js} +8 -3
  20. package/dist/cjs/UserProfilePicture-80675455.js.map +1 -0
  21. package/dist/cjs/{VCCard-8b62170d.js → VCCard-f0735377.js} +3 -3
  22. package/dist/cjs/{VCCard-8b62170d.js.map → VCCard-f0735377.js.map} +1 -1
  23. package/dist/cjs/{VCDisplayBackFace-f220ad7d.js → VCDisplayBackFace-be7d1e31.js} +3 -3
  24. package/dist/cjs/{VCDisplayBackFace-f220ad7d.js.map → VCDisplayBackFace-be7d1e31.js.map} +1 -1
  25. package/dist/cjs/{VCDisplayCard-b3f9ae8d.js → VCDisplayCard-e50b4801.js} +4 -4
  26. package/dist/cjs/{VCDisplayCard-b3f9ae8d.js.map → VCDisplayCard-e50b4801.js.map} +1 -1
  27. package/dist/cjs/{VCDisplayCard2-b6bf45cf.js → VCDisplayCard2-e14da0aa.js} +94 -39
  28. package/dist/cjs/VCDisplayCard2-e14da0aa.js.map +1 -0
  29. package/dist/cjs/{VCVerificationPill-ae3e2fbb.js → VCVerificationPill-93260164.js} +2 -2
  30. package/dist/cjs/{VCVerificationPill-ae3e2fbb.js.map → VCVerificationPill-93260164.js.map} +1 -1
  31. package/dist/cjs/{VerifierStateBadgeAndText-d3d4e6a9.js → VerifierStateBadgeAndText-db71ebb2.js} +383 -610
  32. package/dist/cjs/VerifierStateBadgeAndText-db71ebb2.js.map +1 -0
  33. package/dist/cjs/{credential.helpers-4e3cf40c.js → credential.helpers-a11b14f1.js} +2 -2
  34. package/dist/cjs/{credential.helpers-4e3cf40c.js.map → credential.helpers-a11b14f1.js.map} +1 -1
  35. package/dist/cjs/index.js +187 -30
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/cjs/index10.js +2 -27
  38. package/dist/cjs/index10.js.map +1 -1
  39. package/dist/cjs/index11.js +31 -2
  40. package/dist/cjs/index11.js.map +1 -1
  41. package/dist/cjs/index12.js +2 -46
  42. package/dist/cjs/index12.js.map +1 -1
  43. package/dist/cjs/index13.js +5 -175
  44. package/dist/cjs/index13.js.map +1 -1
  45. package/dist/cjs/index14.js +215 -1
  46. package/dist/cjs/index14.js.map +1 -1
  47. package/dist/cjs/index15.js +3 -21
  48. package/dist/cjs/index15.js.map +1 -1
  49. package/dist/cjs/index16.js +21 -3
  50. package/dist/cjs/index16.js.map +1 -1
  51. package/dist/cjs/index17.js +3 -5
  52. package/dist/cjs/index17.js.map +1 -1
  53. package/dist/cjs/index18.js +5 -20
  54. package/dist/cjs/index18.js.map +1 -1
  55. package/dist/cjs/index19.js +20 -3
  56. package/dist/cjs/index19.js.map +1 -1
  57. package/dist/cjs/index20.js +3 -2
  58. package/dist/cjs/index20.js.map +1 -1
  59. package/dist/cjs/index21.js +2 -28
  60. package/dist/cjs/index21.js.map +1 -1
  61. package/dist/cjs/index22.js +28 -3
  62. package/dist/cjs/index22.js.map +1 -1
  63. package/dist/cjs/index23.js +3 -10
  64. package/dist/cjs/index23.js.map +1 -1
  65. package/dist/cjs/index24.js +5 -7
  66. package/dist/cjs/index24.js.map +1 -1
  67. package/dist/cjs/index25.js +9 -3
  68. package/dist/cjs/index25.js.map +1 -1
  69. package/dist/cjs/index26.js +3 -5
  70. package/dist/cjs/index26.js.map +1 -1
  71. package/dist/cjs/index27.js +8 -3
  72. package/dist/cjs/index27.js.map +1 -1
  73. package/dist/cjs/index28.js +3 -28
  74. package/dist/cjs/index28.js.map +1 -1
  75. package/dist/cjs/index29.js +4 -28
  76. package/dist/cjs/index29.js.map +1 -1
  77. package/dist/cjs/index3.js +0 -58
  78. package/dist/cjs/index3.js.map +1 -1
  79. package/dist/cjs/index30.js +52 -2
  80. package/dist/cjs/index30.js.map +1 -1
  81. package/dist/cjs/index31.js +2 -3
  82. package/dist/cjs/index31.js.map +1 -1
  83. package/dist/cjs/index32.js +3 -3
  84. package/dist/cjs/index33.js +3 -29
  85. package/dist/cjs/index33.js.map +1 -1
  86. package/dist/cjs/index34.js +29 -3
  87. package/dist/cjs/index34.js.map +1 -1
  88. package/dist/cjs/index35.js +3 -3
  89. package/dist/cjs/index36.js +3 -27
  90. package/dist/cjs/index36.js.map +1 -1
  91. package/dist/cjs/index37.js +27 -2
  92. package/dist/cjs/index37.js.map +1 -1
  93. package/dist/cjs/index38.js +2 -42
  94. package/dist/cjs/index38.js.map +1 -1
  95. package/dist/cjs/index39.js +34 -9
  96. package/dist/cjs/index39.js.map +1 -1
  97. package/dist/cjs/index4.js +11 -6
  98. package/dist/cjs/index4.js.map +1 -1
  99. package/dist/cjs/index40.js +9 -13
  100. package/dist/cjs/index40.js.map +1 -1
  101. package/dist/cjs/index41.js +15 -28
  102. package/dist/cjs/index41.js.map +1 -1
  103. package/dist/cjs/index42.js +37 -3
  104. package/dist/cjs/index42.js.map +1 -1
  105. package/dist/cjs/index43.js +3 -7
  106. package/dist/cjs/index43.js.map +1 -1
  107. package/dist/cjs/index44.js +4 -6
  108. package/dist/cjs/index44.js.map +1 -1
  109. package/dist/cjs/index45.js +6 -6
  110. package/dist/cjs/index46.js +15 -0
  111. package/dist/cjs/index46.js.map +1 -0
  112. package/dist/cjs/index5.js +51 -2
  113. package/dist/cjs/index5.js.map +1 -1
  114. package/dist/cjs/index6.js +2 -29
  115. package/dist/cjs/index6.js.map +1 -1
  116. package/dist/cjs/index7.js +27 -27
  117. package/dist/cjs/index8.js +4 -5
  118. package/dist/cjs/index8.js.map +1 -1
  119. package/dist/cjs/index9.js +28 -5
  120. package/dist/cjs/index9.js.map +1 -1
  121. package/dist/cjs/{types.esm-674d5934.js → types.esm-4d399274.js} +11 -4
  122. package/dist/cjs/types.esm-4d399274.js.map +1 -0
  123. package/dist/esm/BadgeThumbnailImg-7d436367.js +49 -0
  124. package/dist/esm/BadgeThumbnailImg-7d436367.js.map +1 -0
  125. package/dist/esm/{BoostGenericCard-956474fc.js → BoostGenericCard-fbf76c2c.js} +6 -5
  126. package/dist/esm/BoostGenericCard-fbf76c2c.js.map +1 -0
  127. package/dist/esm/{BoostSmallCard-6d63f0b3.js → BoostSmallCard-a73b6800.js} +4 -3
  128. package/dist/esm/BoostSmallCard-a73b6800.js.map +1 -0
  129. package/dist/esm/{CertificateDisplayCard-fdc1ea6c.js → CertificateDisplayCard-8f3f43b4.js} +51 -13
  130. package/dist/esm/CertificateDisplayCard-8f3f43b4.js.map +1 -0
  131. package/dist/esm/{GenericCard-24648e62.js → GenericCard-a469f2f0.js} +3 -2
  132. package/dist/esm/GenericCard-a469f2f0.js.map +1 -0
  133. package/dist/esm/{IDDisplayIcon-d87174fd.js → IDDisplayIcon-f6993140.js} +14 -14
  134. package/dist/esm/IDDisplayIcon-f6993140.js.map +1 -0
  135. package/dist/esm/{MeritBadgeDisplayCard-4c768f06.js → MeritBadgeDisplayCard-1b080902.js} +52 -13
  136. package/dist/esm/MeritBadgeDisplayCard-1b080902.js.map +1 -0
  137. package/dist/esm/{MeritBadgeSkillsCount-e906d83f.js → MeritBadgeSkillsCount-7871d74f.js} +2 -2
  138. package/dist/esm/{MeritBadgeSkillsCount-e906d83f.js.map → MeritBadgeSkillsCount-7871d74f.js.map} +1 -1
  139. package/dist/esm/{NotificationBoostCard-fdfa0cf4.js → NotificationBoostCard-cfebc09e.js} +2 -2
  140. package/dist/esm/{NotificationBoostCard-fdfa0cf4.js.map → NotificationBoostCard-cfebc09e.js.map} +1 -1
  141. package/dist/esm/{UserProfilePicture-7e131f5d.js → UserProfilePicture-50c34186.js} +8 -3
  142. package/dist/esm/UserProfilePicture-50c34186.js.map +1 -0
  143. package/dist/esm/{VCCard-6c25c2d5.js → VCCard-dcf5ef3d.js} +3 -3
  144. package/dist/esm/{VCCard-6c25c2d5.js.map → VCCard-dcf5ef3d.js.map} +1 -1
  145. package/dist/esm/{VCDisplayBackFace-ce80f06d.js → VCDisplayBackFace-fbb3235f.js} +3 -3
  146. package/dist/esm/{VCDisplayBackFace-ce80f06d.js.map → VCDisplayBackFace-fbb3235f.js.map} +1 -1
  147. package/dist/esm/{VCDisplayCard-a40c4c7a.js → VCDisplayCard-8463d18d.js} +4 -4
  148. package/dist/esm/{VCDisplayCard-a40c4c7a.js.map → VCDisplayCard-8463d18d.js.map} +1 -1
  149. package/dist/esm/{VCDisplayCard2-f0bf0f87.js → VCDisplayCard2-5003e0c8.js} +93 -38
  150. package/dist/esm/VCDisplayCard2-5003e0c8.js.map +1 -0
  151. package/dist/esm/{VCVerificationPill-8f82b17c.js → VCVerificationPill-a412a211.js} +2 -2
  152. package/dist/esm/{VCVerificationPill-8f82b17c.js.map → VCVerificationPill-a412a211.js.map} +1 -1
  153. package/dist/esm/{VerifierStateBadgeAndText-2bddbc91.js → VerifierStateBadgeAndText-f878973e.js} +380 -612
  154. package/dist/esm/VerifierStateBadgeAndText-f878973e.js.map +1 -0
  155. package/dist/esm/{credential.helpers-bd29e893.js → credential.helpers-108b5fb6.js} +2 -2
  156. package/dist/esm/{credential.helpers-bd29e893.js.map → credential.helpers-108b5fb6.js.map} +1 -1
  157. package/dist/esm/index.js +177 -29
  158. package/dist/esm/index.js.map +1 -1
  159. package/dist/esm/index10.js +1 -26
  160. package/dist/esm/index10.js.map +1 -1
  161. package/dist/esm/index11.js +30 -1
  162. package/dist/esm/index11.js.map +1 -1
  163. package/dist/esm/index12.js +1 -45
  164. package/dist/esm/index12.js.map +1 -1
  165. package/dist/esm/index13.js +5 -94
  166. package/dist/esm/index13.js.map +1 -1
  167. package/dist/esm/index14.js +135 -1
  168. package/dist/esm/index14.js.map +1 -1
  169. package/dist/esm/index15.js +2 -19
  170. package/dist/esm/index15.js.map +1 -1
  171. package/dist/esm/index16.js +19 -2
  172. package/dist/esm/index16.js.map +1 -1
  173. package/dist/esm/index17.js +2 -4
  174. package/dist/esm/index17.js.map +1 -1
  175. package/dist/esm/index18.js +4 -19
  176. package/dist/esm/index18.js.map +1 -1
  177. package/dist/esm/index19.js +19 -2
  178. package/dist/esm/index19.js.map +1 -1
  179. package/dist/esm/index20.js +2 -1
  180. package/dist/esm/index20.js.map +1 -1
  181. package/dist/esm/index21.js +1 -24
  182. package/dist/esm/index21.js.map +1 -1
  183. package/dist/esm/index22.js +24 -2
  184. package/dist/esm/index22.js.map +1 -1
  185. package/dist/esm/index23.js +2 -8
  186. package/dist/esm/index23.js.map +1 -1
  187. package/dist/esm/index24.js +3 -6
  188. package/dist/esm/index24.js.map +1 -1
  189. package/dist/esm/index25.js +8 -2
  190. package/dist/esm/index25.js.map +1 -1
  191. package/dist/esm/index26.js +2 -3
  192. package/dist/esm/index26.js.map +1 -1
  193. package/dist/esm/index27.js +6 -2
  194. package/dist/esm/index27.js.map +1 -1
  195. package/dist/esm/index28.js +2 -26
  196. package/dist/esm/index28.js.map +1 -1
  197. package/dist/esm/index29.js +2 -23
  198. package/dist/esm/index29.js.map +1 -1
  199. package/dist/esm/index3.js +0 -53
  200. package/dist/esm/index3.js.map +1 -1
  201. package/dist/esm/index30.js +47 -1
  202. package/dist/esm/index30.js.map +1 -1
  203. package/dist/esm/index31.js +1 -1
  204. package/dist/esm/index32.js +1 -2
  205. package/dist/esm/index32.js.map +1 -1
  206. package/dist/esm/index33.js +2 -28
  207. package/dist/esm/index33.js.map +1 -1
  208. package/dist/esm/index34.js +28 -2
  209. package/dist/esm/index34.js.map +1 -1
  210. package/dist/esm/index35.js +2 -2
  211. package/dist/esm/index36.js +2 -9
  212. package/dist/esm/index36.js.map +1 -1
  213. package/dist/esm/index37.js +9 -1
  214. package/dist/esm/index37.js.map +1 -1
  215. package/dist/esm/index38.js +1 -41
  216. package/dist/esm/index38.js.map +1 -1
  217. package/dist/esm/index39.js +33 -8
  218. package/dist/esm/index39.js.map +1 -1
  219. package/dist/esm/index4.js +10 -5
  220. package/dist/esm/index4.js.map +1 -1
  221. package/dist/esm/index40.js +8 -12
  222. package/dist/esm/index40.js.map +1 -1
  223. package/dist/esm/index41.js +14 -24
  224. package/dist/esm/index41.js.map +1 -1
  225. package/dist/esm/index42.js +29 -3
  226. package/dist/esm/index42.js.map +1 -1
  227. package/dist/esm/index43.js +3 -2
  228. package/dist/esm/index43.js.map +1 -1
  229. package/dist/esm/index44.js +3 -3
  230. package/dist/esm/index45.js +3 -5
  231. package/dist/esm/index45.js.map +1 -1
  232. package/dist/esm/index46.js +7 -0
  233. package/dist/esm/index46.js.map +1 -0
  234. package/dist/esm/index5.js +50 -1
  235. package/dist/esm/index5.js.map +1 -1
  236. package/dist/esm/index6.js +1 -23
  237. package/dist/esm/index6.js.map +1 -1
  238. package/dist/esm/index7.js +22 -26
  239. package/dist/esm/index7.js.map +1 -1
  240. package/dist/esm/index8.js +3 -3
  241. package/dist/esm/index9.js +26 -4
  242. package/dist/esm/index9.js.map +1 -1
  243. package/dist/esm/{types.esm-e2b75956.js → types.esm-aa0345d0.js} +11 -4
  244. package/dist/esm/types.esm-aa0345d0.js.map +1 -0
  245. package/dist/index.d.ts +103 -16
  246. package/dist/main.css +1 -1
  247. package/dist/main.js +1 -1
  248. package/package.json +9 -13
  249. package/dist/cjs/BoostGenericCard-310cd633.js.map +0 -1
  250. package/dist/cjs/BoostSmallCard-4e200046.js.map +0 -1
  251. package/dist/cjs/CertificateDisplayCard-50eb6485.js.map +0 -1
  252. package/dist/cjs/GenericCard-2b20ab4b.js.map +0 -1
  253. package/dist/cjs/IDDisplayIcon-4b6ce62f.js.map +0 -1
  254. package/dist/cjs/MeritBadgeDisplayCard-7535f16d.js.map +0 -1
  255. package/dist/cjs/UserProfilePicture-22944d8f.js.map +0 -1
  256. package/dist/cjs/VCDisplayCard2-b6bf45cf.js.map +0 -1
  257. package/dist/cjs/VerifierStateBadgeAndText-d3d4e6a9.js.map +0 -1
  258. package/dist/cjs/types.esm-674d5934.js.map +0 -1
  259. package/dist/esm/BoostGenericCard-956474fc.js.map +0 -1
  260. package/dist/esm/BoostSmallCard-6d63f0b3.js.map +0 -1
  261. package/dist/esm/CertificateDisplayCard-fdc1ea6c.js.map +0 -1
  262. package/dist/esm/GenericCard-24648e62.js.map +0 -1
  263. package/dist/esm/IDDisplayIcon-d87174fd.js.map +0 -1
  264. package/dist/esm/MeritBadgeDisplayCard-4c768f06.js.map +0 -1
  265. package/dist/esm/UserProfilePicture-7e131f5d.js.map +0 -1
  266. package/dist/esm/VCDisplayCard2-f0bf0f87.js.map +0 -1
  267. package/dist/esm/VerifierStateBadgeAndText-2bddbc91.js.map +0 -1
  268. package/dist/esm/types.esm-e2b75956.js.map +0 -1
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+
3
+ const BadgeThumbnailImg = ({
4
+ src,
5
+ alt = "badge thumbnail",
6
+ className = "",
7
+ placeholderClassName = "text-grayscale-400"
8
+ }) => {
9
+ const [errored, setErrored] = React.useState(false);
10
+ React.useEffect(() => {
11
+ setErrored(false);
12
+ }, [src]);
13
+ if (!src || errored) {
14
+ return /* @__PURE__ */ React.createElement("div", { className: "flex h-full w-full items-center justify-center" }, /* @__PURE__ */ React.createElement(
15
+ "svg",
16
+ {
17
+ viewBox: "0 0 24 24",
18
+ fill: "none",
19
+ xmlns: "http://www.w3.org/2000/svg",
20
+ className: `w-1/2 h-1/2 ${placeholderClassName}`,
21
+ "aria-hidden": "true",
22
+ "data-testid": "badge-thumbnail-placeholder"
23
+ },
24
+ /* @__PURE__ */ React.createElement("circle", { cx: "12", cy: "9", r: "6", stroke: "currentColor", strokeWidth: "1.75" }),
25
+ /* @__PURE__ */ React.createElement(
26
+ "path",
27
+ {
28
+ d: "M8.5 14.5 7 22l5-3 5 3-1.5-7.5",
29
+ stroke: "currentColor",
30
+ strokeWidth: "1.75",
31
+ strokeLinecap: "round",
32
+ strokeLinejoin: "round"
33
+ }
34
+ )
35
+ ));
36
+ }
37
+ return /* @__PURE__ */ React.createElement(
38
+ "img",
39
+ {
40
+ src,
41
+ alt,
42
+ className: `bg-white ${className}`,
43
+ onError: () => setErrored(true)
44
+ }
45
+ );
46
+ };
47
+
48
+ export { BadgeThumbnailImg as B };
49
+ //# sourceMappingURL=BadgeThumbnailImg-7d436367.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BadgeThumbnailImg-7d436367.js","sources":["../../src/components/BadgeThumbnailImg/BadgeThumbnailImg.tsx"],"sourcesContent":["import React from 'react';\n\ntype BadgeThumbnailImgProps = {\n src?: string;\n alt?: string;\n className?: string;\n /**\n * Tailwind color class for the placeholder glyph. Defaults to a neutral\n * gray that reads well on light backgrounds; pass e.g. `text-white` when\n * the thumbnail sits on a colored badge circle.\n */\n placeholderClassName?: string;\n};\n\n/**\n * Credential/badge thumbnail image with a graceful broken-image fallback.\n *\n * When `src` is empty or the image fails to load (404 / decode error), a\n * neutral medal/badge glyph placeholder is rendered instead of the browser's\n * broken-image icon. A white backing is applied to the image so transparent\n * logos don't pick up whatever sits behind the thumbnail.\n *\n * This is the react-learn-card-local equivalent of learn-card-base's\n * BadgeThumbnailImg (react-learn-card cannot depend on learn-card-base).\n */\nconst BadgeThumbnailImg: React.FC<BadgeThumbnailImgProps> = ({\n src,\n alt = 'badge thumbnail',\n className = '',\n placeholderClassName = 'text-grayscale-400',\n}) => {\n const [errored, setErrored] = React.useState(false);\n\n React.useEffect(() => {\n setErrored(false);\n }, [src]);\n\n if (!src || errored) {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`w-1/2 h-1/2 ${placeholderClassName}`}\n aria-hidden=\"true\"\n data-testid=\"badge-thumbnail-placeholder\"\n >\n <circle cx=\"12\" cy=\"9\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.75\" />\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 />\n </svg>\n </div>\n );\n }\n\n return (\n <img\n src={src}\n alt={alt}\n className={`bg-white ${className}`}\n onError={() => setErrored(true)}\n />\n );\n};\n\nexport default BadgeThumbnailImg;\n"],"names":[],"mappings":";;AAyBA,MAAM,oBAAsD,CAAC;AAAA,EACzD,GAAA;AAAA,EACA,GAAM,GAAA,iBAAA;AAAA,EACN,SAAY,GAAA,EAAA;AAAA,EACZ,oBAAuB,GAAA,oBAAA;AAC3B,CAAM,KAAA;AACF,EAAA,MAAM,CAAC,OAAS,EAAA,UAAU,CAAI,GAAA,KAAA,CAAM,SAAS,KAAK,CAAA,CAAA;AAElD,EAAA,KAAA,CAAM,UAAU,MAAM;AAClB,IAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAAA,GACpB,EAAG,CAAC,GAAG,CAAC,CAAA,CAAA;AAER,EAAI,IAAA,CAAC,OAAO,OAAS,EAAA;AACjB,IACI,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,gDACX,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACG,OAAQ,EAAA,WAAA;AAAA,QACR,IAAK,EAAA,MAAA;AAAA,QACL,KAAM,EAAA,4BAAA;AAAA,QACN,SAAA,EAAW,eAAe,oBAAoB,CAAA,CAAA;AAAA,QAC9C,aAAY,EAAA,MAAA;AAAA,QACZ,aAAY,EAAA,6BAAA;AAAA,OAAA;AAAA,sBAEZ,KAAA,CAAA,aAAA,CAAC,QAAO,EAAA,EAAA,EAAA,EAAG,IAAK,EAAA,EAAA,EAAG,GAAI,EAAA,CAAA,EAAE,GAAI,EAAA,MAAA,EAAO,cAAe,EAAA,WAAA,EAAY,MAAO,EAAA,CAAA;AAAA,sBACtE,KAAA,CAAA,aAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACG,CAAE,EAAA,gCAAA;AAAA,UACF,MAAO,EAAA,cAAA;AAAA,UACP,WAAY,EAAA,MAAA;AAAA,UACZ,aAAc,EAAA,OAAA;AAAA,UACd,cAAe,EAAA,OAAA;AAAA,SAAA;AAAA,OACnB;AAAA,KAER,CAAA,CAAA;AAAA,GAER;AAEA,EACI,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,GAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA,EAAW,YAAY,SAAS,CAAA,CAAA;AAAA,MAChC,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,KAAA;AAAA,GAClC,CAAA;AAER;;;;"}
@@ -1,10 +1,11 @@
1
1
  import React from 'react';
2
2
  import { W as WalletCategoryTypes } from './index-28917993.js';
3
3
  import { a as TYPE_TO_IMG_SRC, b as TYPE_TO_WALLET_DARK_COLOR } from './index-cbe3a76a.js';
4
- import { B as BadgeDisplayIcon, A as AwardDisplayIcon, a as CourseDisplayIcon, I as IDDisplayIcon, C as CertificateDisplayIcon } from './IDDisplayIcon-d87174fd.js';
4
+ import { B as BadgeDisplayIcon, A as AwardDisplayIcon, a as CourseDisplayIcon, I as IDDisplayIcon, C as CertificateDisplayIcon } from './IDDisplayIcon-f6993140.js';
5
5
  import { P as PuzzlePiece } from './PuzzlePiece-a3d9cc62.js';
6
- import { c as categorizeSkills } from './credential.helpers-bd29e893.js';
6
+ import { c as categorizeSkills } from './credential.helpers-108b5fb6.js';
7
7
  import { T as ThreeDotVertical } from './ThreeDotVertical-ccbbc8ef.js';
8
+ import { B as BadgeThumbnailImg } from './BadgeThumbnailImg-7d436367.js';
8
9
  import { C as CircleCheckButton } from './CircleCheckButton-23a9c7d4.js';
9
10
 
10
11
  const AlignmentSkillsCount = ({
@@ -114,7 +115,7 @@ const BoostGenericCard = ({
114
115
  onClick: handleInnerClick
115
116
  },
116
117
  customThumbComponent || /* @__PURE__ */ React.createElement("section", { className: defaultThumbClass }, (thumbImgSrc == null ? void 0 : thumbImgSrc.trim()) ? /* @__PURE__ */ React.createElement(
117
- "img",
118
+ BadgeThumbnailImg,
118
119
  {
119
120
  className: "w-full h-full rounded-full object-cover",
120
121
  src: thumbImgSrc,
@@ -144,7 +145,7 @@ const BoostGenericCard = ({
144
145
  title
145
146
  },
146
147
  title
147
- ) : customTitle, customIssuerName || /* @__PURE__ */ React.createElement("span", { className: "text-[12px] text-grayscale-700 mt-1" }, "by ", /* @__PURE__ */ React.createElement("span", { className: "font-bold" }, issuerName)), customDateDisplay || /* @__PURE__ */ React.createElement("div", { className: "text-[11px] text-grayscale-700 mt-1 flex flex-col items-center" }, verifierBadge, /* @__PURE__ */ React.createElement("span", null, dateDisplay)), isInSkillsModal && credential && /* @__PURE__ */ React.createElement(
148
+ ) : customTitle, /* @__PURE__ */ React.createElement("div", { className: "mt-1 w-full px-4 text-center" }, /* @__PURE__ */ React.createElement("span", { className: "line-clamp-2 break-words text-[12px] leading-snug text-grayscale-700" }, verifierBadge && /* @__PURE__ */ React.createElement("span", { className: "mr-1 inline-block align-middle" }, verifierBadge), customIssuerName || /* @__PURE__ */ React.createElement("span", { className: "font-bold" }, issuerName))), customDateDisplay || /* @__PURE__ */ React.createElement("span", { className: "text-[11px] text-grayscale-700 mt-1" }, dateDisplay), isInSkillsModal && credential && /* @__PURE__ */ React.createElement(
148
149
  AlignmentSkillsCount,
149
150
  {
150
151
  credential,
@@ -174,4 +175,4 @@ const BoostGenericCard = ({
174
175
  };
175
176
 
176
177
  export { BoostGenericCard as B };
177
- //# sourceMappingURL=BoostGenericCard-956474fc.js.map
178
+ //# sourceMappingURL=BoostGenericCard-fbf76c2c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoostGenericCard-fbf76c2c.js","sources":["../../src/components/BoostGenericCard/AlignmentSkillsCount.tsx","../../src/helpers/display.helpers.ts","../../src/components/BoostGenericCard/BoostGenericCard.tsx"],"sourcesContent":["import React from 'react';\nimport PuzzlePiece from '../svgs/PuzzlePiece';\nimport { VC } from '@learncard/types';\nimport { categorizeSkills } from '../../helpers/credential.helpers';\n\ntype AlignmentSkillsCountProps = {\n credential?: VC;\n onClick?: () => void;\n className?: string;\n};\n\nconst AlignmentSkillsCount: React.FC<AlignmentSkillsCountProps> = ({\n credential,\n onClick,\n className = '',\n}) => {\n if (!credential) return <></>;\n\n const achievement = (credential?.credentialSubject as any)?.achievement;\n let alignmentCount = achievement?.alignment?.length || 0;\n\n if (alignmentCount === 0 && credential.skills?.length > 0) {\n // fallback to legacy skills field if present and no alignments\n const skillsMap = categorizeSkills(credential.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 alignmentCount = total;\n }\n\n return (\n <div\n role={onClick ? ('button' as const) : undefined}\n onClick={onClick}\n className={`px-[10px] py-[2px] flex gap-[3px] items-center rounded-[5px] overflow-hidden bg-violet-100 ${className}`}\n >\n <PuzzlePiece className=\"w-[20px] h-[20px] text-grayscale-800\" version=\"filled\" />\n <p className=\"text-[12px] text-grayscale-800 font-poppins font-[600]\">\n {`${alignmentCount} Skill${alignmentCount !== 1 ? 's' : ''}`}\n </p>\n </div>\n );\n};\n\nexport default AlignmentSkillsCount;\n","import { LCCategoryEnum } from '../types';\n\nimport { BadgeDisplayIcon } from '../components/svgs/BadgeDisplayIcon';\nimport { CertificateDisplayIcon } from '../components/svgs/CertificateDisplayIcon';\nimport { IDDisplayIcon } from '../components/svgs/IDDisplayIcon';\nimport { CourseDisplayIcon } from '../components/svgs/CourseDisplayIcon';\nimport { AwardDisplayIcon } from '../components/svgs/AwardDisplayIcon';\n\nexport enum DisplayTypeEnum {\n Badge = 'badge',\n Certificate = 'certificate',\n ID = 'id',\n Course = 'course',\n Award = 'award',\n}\n\nexport const getDefaultDisplayType = (category: string): DisplayTypeEnum => {\n if (category === LCCategoryEnum.socialBadge || category === LCCategoryEnum.workHistory) {\n return DisplayTypeEnum.Badge;\n }\n\n if (category === LCCategoryEnum.id || category === LCCategoryEnum.membership) {\n return DisplayTypeEnum.ID;\n }\n\n if (\n category === LCCategoryEnum.achievement ||\n category === LCCategoryEnum.accommodations ||\n category === LCCategoryEnum.accomplishments ||\n category === LCCategoryEnum.learningHistory\n ) {\n return DisplayTypeEnum.Certificate;\n }\n\n return DisplayTypeEnum.Badge;\n};\n\nexport const getDisplayIcon = (displayType: DisplayTypeEnum): React.FC<{ className?: string }> => {\n switch (displayType) {\n case DisplayTypeEnum.Badge:\n return BadgeDisplayIcon;\n case DisplayTypeEnum.Certificate:\n return CertificateDisplayIcon;\n case DisplayTypeEnum.ID:\n return IDDisplayIcon;\n case DisplayTypeEnum.Course:\n return CourseDisplayIcon;\n case DisplayTypeEnum.Award:\n return AwardDisplayIcon;\n default:\n return BadgeDisplayIcon;\n }\n};\n","import React from 'react';\nimport { BoostGenericCardProps, WalletCategoryTypes } from '../../types';\nimport { TYPE_TO_IMG_SRC, TYPE_TO_WALLET_DARK_COLOR } from '../../constants';\nimport { DisplayTypeEnum, getDisplayIcon } from '../../helpers/display.helpers';\nimport AlignmentSkillsCount from './AlignmentSkillsCount';\nimport ThreeDotVertical from '../svgs/ThreeDotVertical';\nimport { CircleCheckButton } from '../CircleCheckButton';\nimport BadgeThumbnailImg from '../BadgeThumbnailImg/BadgeThumbnailImg';\n\nexport const BoostGenericCard: React.FC<BoostGenericCardProps> = ({\n title,\n customTitle,\n thumbImgSrc,\n customThumbClass = '',\n customHeaderClass = '',\n type = WalletCategoryTypes.achievements,\n className,\n onCheckClick,\n showChecked,\n checkStatus,\n customThumbComponent,\n innerOnClick,\n bgImgSrc,\n issuerName,\n customIssuerName,\n dateDisplay,\n customDateDisplay,\n optionsTriggerOnClick,\n verifierBadge,\n credential,\n isInSkillsModal,\n displayType,\n linkedCredentialsCount = 0,\n linkedCredentialsClassName = '',\n checkBtnClass = '',\n}) => {\n const thumbClass = TYPE_TO_WALLET_DARK_COLOR[type]\n ? `bg-${TYPE_TO_WALLET_DARK_COLOR[type]}`\n : 'bg-grayscale-50';\n const defaultThumbClass = `small-boost-card-thumb flex h-[110px] w-[110px] my-[10px] mx-auto ${thumbClass} overflow-hidden flex-col justify-center items-center rounded-full ${customThumbClass}`;\n const imgSrc = thumbImgSrc?.trim() !== '' ? thumbImgSrc : TYPE_TO_IMG_SRC[type];\n\n const handleInnerClick = () => innerOnClick?.();\n const handleOptionsClick = () => optionsTriggerOnClick?.();\n\n const DisplayIcon = getDisplayIcon(displayType as DisplayTypeEnum);\n\n return (\n <div\n className={`flex bg-white flex-col shadow-bottom relative p-0 w-[160px] h-[285px] rounded-[20px] overflow-hidden ${className}`}\n >\n {optionsTriggerOnClick && (\n <section\n className=\"absolute cursor-pointer h-[30px] w-[30px] top-[5px] right-[5px] rounded-full bg-white/70 flex items-center justify-center z-20\"\n onClick={handleOptionsClick}\n >\n <ThreeDotVertical className=\"h-[20px] w-[20px] text-grayscale-900\" />\n </section>\n )}\n\n {bgImgSrc && (\n <section className=\"absolute top-[-50px] left-0 rounded-b-full overflow-hidden z-0\">\n <img className=\"h-full w-full object-cover\" src={bgImgSrc} />\n </section>\n )}\n\n <button\n type=\"button\"\n className=\"z-10 flex flex-col flex-grow\"\n onClick={handleInnerClick}\n >\n {/* Thumbnail */}\n {customThumbComponent || (\n <section className={defaultThumbClass}>\n {thumbImgSrc?.trim() ? (\n <BadgeThumbnailImg\n className=\"w-full h-full rounded-full object-cover\"\n src={thumbImgSrc}\n alt=\"Credential Achievement\"\n />\n ) : (\n <img\n className=\"max-w-full p-0 object-cover rounded-full\"\n src={imgSrc}\n />\n )}\n </section>\n )}\n\n {/* Details Section: grows to fill available space */}\n <section\n className={`flex flex-col flex-grow items-center justify-end pt-1 w-full ${\n linkedCredentialsCount === 0 ? 'pb-[20px]' : ''\n }`}\n >\n <div className=\"px-1 flex flex-col items-center justify-center w-full\">\n {/* Title - dynamically size based on length */}\n {!customTitle ? (\n <p\n className={`\n ${customHeaderClass}\n font-medium text-center text-grayscale-900 line-clamp-2\n h-[50px] flex items-center justify-center\n ${\n (title?.length ?? 0) > 35\n ? 'text-[13px] leading-tight'\n : 'text-[16px]'\n }\n `}\n title={title}\n >\n {title}\n </p>\n ) : (\n customTitle\n )}\n\n {/* Verifier & Issuer */}\n <div className=\"mt-1 w-full px-4 text-center\">\n <span className=\"line-clamp-2 break-words text-[12px] leading-snug text-grayscale-700\">\n {verifierBadge && (\n <span className=\"mr-1 inline-block align-middle\">\n {verifierBadge}\n </span>\n )}\n {customIssuerName || (\n <span className=\"font-bold\">{issuerName}</span>\n )}\n </span>\n </div>\n\n {/* Date */}\n {customDateDisplay || (\n <span className=\"text-[11px] text-grayscale-700 mt-1\">\n {dateDisplay}\n </span>\n )}\n\n {/* Skills count if in modal */}\n {isInSkillsModal && credential && (\n <AlignmentSkillsCount\n credential={credential}\n onClick={handleInnerClick}\n className=\"mt-[16px]\"\n />\n )}\n </div>\n\n {/* Linked Credentials moved inside details */}\n {linkedCredentialsCount > 0 && (\n <div\n className={`mt-auto flex items-center justify-center py-1 w-full ${linkedCredentialsClassName}`}\n >\n <DisplayIcon className=\"h-[20px] w-[20px] text-grayscale-900\" />\n <span className=\"ml-1 text-sm font-semibold text-grayscale-900\">\n +{linkedCredentialsCount} Linked\n </span>\n </div>\n )}\n </section>\n </button>\n\n {/* Optional Check Button overlay */}\n {showChecked && (\n <div className=\"absolute top-[5px] left-[5px] z-20\">\n <CircleCheckButton\n checked={checkStatus}\n onClick={onCheckClick}\n className={checkBtnClass}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default BoostGenericCard;\n"],"names":["total"],"mappings":";;;;;;;;;;AAWA,MAAM,uBAA4D,CAAC;AAAA,EAC/D,UAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAY,GAAA,EAAA;AAChB,CAAM,KAAA;AAfN,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAgBI,EAAI,IAAA,CAAC,UAAY,EAAA,uBAAS,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAE1B,EAAM,MAAA,WAAA,GAAA,CAAe,EAAY,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,iBAAA,KAAZ,IAAuC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAA,CAAA;AAC5D,EAAA,IAAI,cAAiB,GAAA,CAAA,CAAA,EAAA,GAAA,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAa,SAAb,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAwB,MAAU,KAAA,CAAA,CAAA;AAEvD,EAAA,IAAI,mBAAmB,CAAK,IAAA,CAAA,CAAA,EAAA,GAAA,UAAA,CAAW,MAAX,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAmB,UAAS,CAAG,EAAA;AAEvD,IAAA,MAAM,YAAY,gBAAiB,CAAA,CAAA,EAAA,GAAA,UAAA,CAAW,MAAX,KAAA,IAAA,GAAA,EAAA,GAAqB,EAAE,CAAA,CAAA;AAG1D,IAAA,MAAM,WAAmB,GAAA,MAAA,CAAO,MAAO,CAAA,SAAS,CAAE,CAAA,MAAA;AAAA,MAC9C,CAACA,MAAAA,EAAY,QAAkBA,KAAAA,MAAAA,IAAQ,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,MAAA,CAAA;AAAA,MACjD,CAAA;AAAA,KACJ,CAAA;AACA,IAAA,MAAM,cAAsB,GAAA,MAAA,CAAO,MAAO,CAAA,SAAS,CAAE,CAAA,MAAA;AAAA,MACjD,CAACA,MAAAA,EAAY,QAAkBA,KAAAA,MAAAA,IAAAA,CAAS,qCAAU,mBAAuB,KAAA,CAAA,CAAA;AAAA,MACzE,CAAA;AAAA,KACJ,CAAA;AAEA,IAAA,MAAM,QAAa,WAAc,GAAA,cAAA,CAAA;AACjC,IAAiB,cAAA,GAAA,KAAA,CAAA;AAAA,GACrB;AAEA,EACI,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,IAAA,EAAM,UAAW,QAAqB,GAAA,KAAA,CAAA;AAAA,MACtC,OAAA;AAAA,MACA,SAAA,EAAW,8FAA8F,SAAS,CAAA,CAAA;AAAA,KAAA;AAAA,oBAEjH,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,SAAU,EAAA,sCAAA,EAAuC,SAAQ,QAAS,EAAA,CAAA;AAAA,oBAC/E,KAAA,CAAA,aAAA,CAAC,GAAE,EAAA,EAAA,SAAA,EAAU,wDACR,EAAA,EAAA,CAAA,EAAG,cAAc,CAAA,MAAA,EAAS,cAAmB,KAAA,CAAA,GAAI,GAAM,GAAA,EAAE,CAC9D,CAAA,CAAA;AAAA,GACJ,CAAA;AAER,CAAA;;ACda,MAAA,cAAA,GAAiB,CAAC,WAAmE,KAAA;AAC9F,EAAA,QAAQ,WAAa;AAAA,IACjB,KAAK,OAAA;AACD,MAAO,OAAA,gBAAA,CAAA;AAAA,IACX,KAAK,aAAA;AACD,MAAO,OAAA,sBAAA,CAAA;AAAA,IACX,KAAK,IAAA;AACD,MAAO,OAAA,aAAA,CAAA;AAAA,IACX,KAAK,QAAA;AACD,MAAO,OAAA,iBAAA,CAAA;AAAA,IACX,KAAK,OAAA;AACD,MAAO,OAAA,gBAAA,CAAA;AAAA,IACX;AACI,MAAO,OAAA,gBAAA,CAAA;AAAA,GACf;AACJ,CAAA;;AC3CO,MAAM,mBAAoD,CAAC;AAAA,EAC9D,KAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAmB,GAAA,EAAA;AAAA,EACnB,iBAAoB,GAAA,EAAA;AAAA,EACpB,OAAO,mBAAoB,CAAA,YAAA;AAAA,EAC3B,SAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,oBAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,iBAAA;AAAA,EACA,qBAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,sBAAyB,GAAA,CAAA;AAAA,EACzB,0BAA6B,GAAA,EAAA;AAAA,EAC7B,aAAgB,GAAA,EAAA;AACpB,CAAM,KAAA;AAnCN,EAAA,IAAA,EAAA,CAAA;AAoCI,EAAM,MAAA,UAAA,GAAa,0BAA0B,IAAI,CAAA,GAC3C,MAAM,yBAA0B,CAAA,IAAI,CAAC,CACrC,CAAA,GAAA,iBAAA,CAAA;AACN,EAAA,MAAM,iBAAoB,GAAA,CAAA,kEAAA,EAAqE,UAAU,CAAA,mEAAA,EAAsE,gBAAgB,CAAA,CAAA,CAAA;AAC/L,EAAA,MAAM,UAAS,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,IAAA,EAAA,MAAW,EAAK,GAAA,WAAA,GAAc,gBAAgB,IAAI,CAAA,CAAA;AAE9E,EAAA,MAAM,mBAAmB,MAAM,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,EAAA,CAAA;AAC/B,EAAA,MAAM,qBAAqB,MAAM,qBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,EAAA,CAAA;AAEjC,EAAM,MAAA,WAAA,GAAc,eAAe,WAA8B,CAAA,CAAA;AAEjE,EACI,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACG,SAAA,EAAW,wGAAwG,SAAS,CAAA,CAAA;AAAA,KAAA;AAAA,IAE3H,qBACG,oBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACG,SAAU,EAAA,gIAAA;AAAA,QACV,OAAS,EAAA,kBAAA;AAAA,OAAA;AAAA,sBAET,KAAA,CAAA,aAAA,CAAC,gBAAiB,EAAA,EAAA,SAAA,EAAU,sCAAuC,EAAA,CAAA;AAAA,KACvE;AAAA,IAGH,QAAA,oBACI,KAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAQ,SAAU,EAAA,gEAAA,EAAA,kBACd,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,4BAAA,EAA6B,GAAK,EAAA,QAAA,EAAU,CAC/D,CAAA;AAAA,oBAGJ,KAAA,CAAA,aAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACG,IAAK,EAAA,QAAA;AAAA,QACL,SAAU,EAAA,8BAAA;AAAA,QACV,OAAS,EAAA,gBAAA;AAAA,OAAA;AAAA,MAGR,wCACI,KAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAQ,SAAW,EAAA,iBAAA,EAAA,EAAA,CACf,2CAAa,IACV,EAAA,oBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACG,SAAU,EAAA,yCAAA;AAAA,UACV,GAAK,EAAA,WAAA;AAAA,UACL,GAAI,EAAA,wBAAA;AAAA,SAAA;AAAA,OAGR,mBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACG,SAAU,EAAA,0CAAA;AAAA,UACV,GAAK,EAAA,MAAA;AAAA,SAAA;AAAA,OAGjB,CAAA;AAAA,sBAIJ,KAAA,CAAA,aAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACG,SAAW,EAAA,CAAA,6DAAA,EACP,sBAA2B,KAAA,CAAA,GAAI,cAAc,EACjD,CAAA,CAAA;AAAA,SAAA;AAAA,wBAEC,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,uDAAA,EAAA,EAEV,CAAC,WACE,mBAAA,KAAA,CAAA,aAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACG,SAAW,EAAA,CAAA;AAAA,gCAAA,EACT,iBAAiB,CAAA;AAAA;AAAA;AAAA,gCAAA,EAAA,CAAA,CAId,oCAAO,MAAP,KAAA,IAAA,GAAA,EAAA,GAAiB,CAAK,IAAA,EAAA,GACjB,8BACA,aACV,CAAA;AAAA,4BAAA,CAAA;AAAA,YAEA,KAAA;AAAA,WAAA;AAAA,UAEC,KAAA;AAAA,SAGL,GAAA,WAAA,kBAIH,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,WAAU,8BACX,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAU,0EACX,aACG,oBAAA,KAAA,CAAA,aAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAU,oCACX,aACL,CAAA,EAEH,gBACG,oBAAA,KAAA,CAAA,aAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAU,WAAa,EAAA,EAAA,UAAW,CAEhD,CACJ,CAAA,EAGC,iBACG,oBAAA,KAAA,CAAA,aAAA,CAAC,UAAK,SAAU,EAAA,qCAAA,EAAA,EACX,WACL,CAAA,EAIH,mBAAmB,UAChB,oBAAA,KAAA,CAAA,aAAA;AAAA,UAAC,oBAAA;AAAA,UAAA;AAAA,YACG,UAAA;AAAA,YACA,OAAS,EAAA,gBAAA;AAAA,YACT,SAAU,EAAA,WAAA;AAAA,WAAA;AAAA,SAGtB,CAAA;AAAA,QAGC,yBAAyB,CACtB,oBAAA,KAAA,CAAA,aAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACG,SAAA,EAAW,wDAAwD,0BAA0B,CAAA,CAAA;AAAA,WAAA;AAAA,0BAE7F,KAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,SAAA,EAAU,sCAAuC,EAAA,CAAA;AAAA,8CAC7D,MAAK,EAAA,EAAA,SAAA,EAAU,+CAAgD,EAAA,EAAA,GAAA,EAC1D,wBAAuB,SAC7B,CAAA;AAAA,SACJ;AAAA,OAER;AAAA,KACJ;AAAA,IAGC,WACG,oBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,oCACX,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACG,OAAS,EAAA,WAAA;AAAA,QACT,OAAS,EAAA,YAAA;AAAA,QACT,SAAW,EAAA,aAAA;AAAA,OAAA;AAAA,KAEnB,CAAA;AAAA,GAER,CAAA;AAER;;;;"}
@@ -2,7 +2,8 @@ import React from 'react';
2
2
  import CaretRightFilled from './CaretRightFilled.svg';
3
3
  import AddAwardLight from './addawardlight.svg';
4
4
  import { T as ThreeDotVertical } from './ThreeDotVertical-ccbbc8ef.js';
5
- import { U as UserProfilePicture } from './UserProfilePicture-7e131f5d.js';
5
+ import { U as UserProfilePicture } from './UserProfilePicture-50c34186.js';
6
+ import { B as BadgeThumbnailImg } from './BadgeThumbnailImg-7d436367.js';
6
7
  import { W as WalletCategoryTypes } from './index-28917993.js';
7
8
  import { b as TYPE_TO_WALLET_DARK_COLOR, a as TYPE_TO_IMG_SRC } from './index-cbe3a76a.js';
8
9
  import { C as CircleCheckButton } from './CircleCheckButton-23a9c7d4.js';
@@ -112,7 +113,7 @@ const BoostSmallCard = ({
112
113
  ),
113
114
  bgImgSrc && /* @__PURE__ */ React.createElement("section", { className: "absolute top-[-50px] shadow-bottom left-[0px] rounded-b-full overflow-hidden z-0 mt-3" }, /* @__PURE__ */ React.createElement("img", { className: "h-full w-full object-cover overflow-hidden", src: bgImgSrc })),
114
115
  /* @__PURE__ */ React.createElement("div", { className: innerClickContainerClass, onClick: handleInnerClick }, customThumbComponent, !customThumbComponent && /* @__PURE__ */ React.createElement("section", { className: defaultThumbClass }, thumbImgSrc && (thumbImgSrc == null ? void 0 : thumbImgSrc.trim()) !== "" && /* @__PURE__ */ React.createElement(
115
- "img",
116
+ BadgeThumbnailImg,
116
117
  {
117
118
  className: "generic-display-card-img h-full w-full w-[110px] h-[110px] rounded-full object-cover overflow-hidden",
118
119
  src: thumbImgSrc != null ? thumbImgSrc : "",
@@ -154,4 +155,4 @@ const BoostSmallCard = ({
154
155
  };
155
156
 
156
157
  export { BoostSmallCard as B };
157
- //# sourceMappingURL=BoostSmallCard-6d63f0b3.js.map
158
+ //# sourceMappingURL=BoostSmallCard-a73b6800.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoostSmallCard-a73b6800.js","sources":["../../src/helpers/color.helpers.ts","../../src/components/BoostSmallCard/BoostSmallCard.tsx"],"sourcesContent":["import { WalletCategoryTypes } from '../types';\n\nexport const getDarkBGColor = (type: WalletCategoryTypes) => {\n if (!type) return '';\n\n if (type === WalletCategoryTypes?.achievements) {\n return 'bg-orange-500';\n } else if (type === WalletCategoryTypes?.learningHistory) {\n return 'bg-emerald-500';\n } else if (type === WalletCategoryTypes?.skills) {\n return 'bg-violet-500';\n } else if (type === WalletCategoryTypes?.jobHistory) {\n return 'bg-blue-500';\n } else if (type === WalletCategoryTypes?.socialBadge) {\n return 'bg-cyan-500';\n } else if (type === WalletCategoryTypes?.relationships) {\n return 'bg-pink-500';\n } else if (type === WalletCategoryTypes?.accommodations) {\n return 'bg-amber-500';\n } else if (type === WalletCategoryTypes?.accomplishments) {\n return 'bg-lime-500';\n } else if (type === WalletCategoryTypes?.events) {\n return 'bg-fuchsia-500';\n } else if (type === WalletCategoryTypes?.membership) {\n return 'bg-teal-500';\n } else if (type === WalletCategoryTypes?.goals) {\n return 'bg-rose-500';\n } else if (type === WalletCategoryTypes?.ids) {\n return 'bg-yellow-500';\n } else if (type === WalletCategoryTypes?.currency) {\n return 'bg-cyan-500';\n }\n\n return 'bg-grayscale-900';\n};\n","import React from 'react';\n\nimport CaretRightFilled from '../../assets/images/CaretRightFilled.svg';\nimport AddAwardLight from '../../assets/images/addawardlight.svg';\nimport ThreeDotVertical from '../svgs/ThreeDotVertical';\nimport UserProfilePicture from '../UserProfilePicture/UserProfilePicture';\nimport { CircleCheckButton } from '../CircleCheckButton';\nimport BadgeThumbnailImg from '../BadgeThumbnailImg/BadgeThumbnailImg';\n\nimport { BoostSmallCardProps, WalletCategoryTypes } from '../../types';\nimport { TYPE_TO_IMG_SRC, TYPE_TO_WALLET_DARK_COLOR } from '../../constants';\nimport { getDarkBGColor } from '../../helpers/color.helpers';\n\nexport const BoostSmallCard: React.FC<BoostSmallCardProps> = ({\n title = 'Title Lorem Ipsum',\n customTitle,\n thumbImgSrc,\n customThumbClass = '',\n customHeaderClass = '',\n type = WalletCategoryTypes.achievements,\n className,\n onCheckClick,\n showChecked,\n checkStatus,\n arrowOnClick,\n buttonOnClick,\n customButtonComponent,\n customBodyClass,\n customBodyComponent,\n customThumbComponent,\n customDraftComponent,\n innerOnClick,\n issueHistory,\n bgImgSrc,\n optionsTriggerOnClick,\n}) => {\n const thumbClass = TYPE_TO_WALLET_DARK_COLOR[type]\n ? `bg-${TYPE_TO_WALLET_DARK_COLOR[type]}`\n : 'bg-grayscale-50';\n const defaultThumbClass = `small-boost-card-thumb flex h-[110px] w-[110px] my-[10px] mx-auto ${thumbClass} overflow-hidden flex-col justify-center items-center rounded-full ${customThumbClass}`;\n const imgSrc = thumbImgSrc?.trim() !== '' ? thumbImgSrc : TYPE_TO_IMG_SRC[type];\n const headerBgColor = getDarkBGColor(type);\n const checkBtnClass = checkStatus ? 'generic-vc-card checked' : 'generic-vc-card unchecked';\n const defaultHeaderClass = `flex generic-card-title w-full justify-center ${customHeaderClass}`;\n const defaultBodyClass = ` boost-small-card-body flex justify-center items-center text-center text-[14px] overflow-hidden text-grayscale-500 py-[5px] px-[10px] ${customBodyClass}`;\n const defaultButtonClass = `cursor-pointer small-boost-boost-btn flex boost-btn-click rounded-[40px] w-[140px] h-[48px] text-white flex justify-center items-center ${headerBgColor}`;\n const innerClickContainerClass = `relative cursor-pointer boost-small-card inner-click-container z-10`;\n\n const issueHistoryDisplay =\n issueHistory && issueHistory?.length > 3 ? issueHistory?.slice(0, 3) : issueHistory;\n const renderIssueHistory = issueHistoryDisplay?.map(issueItem => {\n return (\n <div\n key={issueItem?.id}\n className=\"profile-thumb-img border-[1px] border-white border-solid vc-issuee-image h-[35px] w-[35px] rounded-full overflow-hidden mx-[-5px]\"\n >\n <UserProfilePicture\n customContainerClass={`h-full w-full object-cover ${\n !issueItem?.thumb ? 'pt-[8px]' : ''\n }`}\n user={{ image: issueItem?.thumb, name: issueItem?.name }}\n alt=\"profile\"\n />\n </div>\n );\n });\n\n const handleInnerClick = () => {\n innerOnClick?.();\n };\n\n const handleOptionsClick = () => {\n optionsTriggerOnClick?.();\n };\n\n return (\n <div\n className={`flex generic-display-card-simple bg-white flex-col shadow-bottom relative $ py-[0px] px-[0px] w-[160px] h-[280px] rounded-[20px] overflow-hidden ${className}`}\n >\n {optionsTriggerOnClick && (\n <section\n className=\"absolute cursor-pointer shadow-bottom h-[30px] w-[30px] top-[5px] right-[5px] rounded-full overflow-hidden z-20 bg-white/70 flex items-center justify-center\"\n onClick={handleOptionsClick}\n >\n <ThreeDotVertical className=\"h-[20px] w-[20px] z-50 text-grayscale-900\" />\n </section>\n )}\n\n {bgImgSrc && (\n <section className=\"absolute top-[-50px] shadow-bottom left-[0px] rounded-b-full overflow-hidden z-0 mt-3\">\n <img className=\"h-full w-full object-cover overflow-hidden\" src={bgImgSrc} />\n </section>\n )}\n\n <div className={innerClickContainerClass} onClick={handleInnerClick}>\n {customThumbComponent}\n {!customThumbComponent && (\n <section className={defaultThumbClass}>\n {thumbImgSrc && thumbImgSrc?.trim() !== '' && (\n <BadgeThumbnailImg\n className=\"generic-display-card-img h-full w-full w-[110px] h-[110px] rounded-full object-cover overflow-hidden\"\n src={thumbImgSrc ?? ''}\n alt=\"Credential Achievement Image\"\n />\n )}\n {(!thumbImgSrc || thumbImgSrc?.trim() === '') && (\n <img\n className=\"max-w-[110px] w-full h-full p-[0px] object-cover rounded-full\"\n src={imgSrc}\n />\n )}\n </section>\n )}\n\n {customTitle && customTitle}\n {!customTitle && (\n <section className={defaultHeaderClass}>\n <p className=\"relative z-[100] small-boost-title text-[16px] leading-[130%] p-[0px] font-medium text-center line-clamp-2\">\n {title}\n </p>\n </section>\n )}\n\n <section className={defaultBodyClass}>\n {customBodyComponent && customBodyComponent}\n {!customBodyComponent &&\n issueHistory &&\n issueHistory?.length > 0 &&\n renderIssueHistory}\n {!customBodyComponent && issueHistory && issueHistory?.length > 3 && (\n <span className=\"small-boost-issue-count ml-[10px] font-semibold\">\n +{issueHistory?.length - 3}\n </span>\n )}\n </section>\n </div>\n\n <section className=\"small-boost-card-footer flex justify-center items-center absolute bottom-[15px] w-full\">\n {customButtonComponent && customButtonComponent}\n\n {!customButtonComponent && (\n <div className=\"flex w-full flex-col items-center justify-center\">\n {customDraftComponent && customDraftComponent}\n <div onClick={buttonOnClick} className={defaultButtonClass}>\n <img className=\"h-[25px] mr-[7px] text-\" src={AddAwardLight} />\n <span className=\"font-mouse text-[25px] tracking-wider\">BOOST</span>\n </div>\n </div>\n )}\n </section>\n {showChecked && (\n <div className=\"check-btn-overlay absolute top-[5px] left-[5px]\">\n <CircleCheckButton\n checked={checkStatus}\n onClick={onCheckClick}\n className={checkBtnClass}\n />\n </div>\n )}\n\n {arrowOnClick && (\n <button\n type=\"button\"\n onClick={arrowOnClick}\n className=\"arrow-btn-overlay absolute top-[52px] right-[2px]\"\n >\n <img\n className=\"h-full w-full object-contai\"\n src={CaretRightFilled ?? ''}\n alt=\"Right Caret\"\n />\n </button>\n )}\n </div>\n );\n};\n\nexport default BoostSmallCard;\n"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import React, { useState, useEffect } from 'react';
2
- import { I as InfoIcon, c as capitalize, E as ExclamationPoint, A as AcuteCheckmark, g as getBaseUrl, b as VideoIcon, C as Camera, G as GenericDocumentIcon, L as LinkIcon, p as prettyBytes, d as LeftArrow, e as SkillsBox, R as RoundedCorner, f as IssuerSeal, r as resolveProfileDisplay, i as isAppDidWeb, V as VERIFIER_STATES, a as VerifierStateBadgeAndText, F as FatArrow } from './VerifierStateBadgeAndText-2bddbc91.js';
3
- import { g as getTotalCountOfSkills, c as categorizeSkills, a as getColorForVerificationStatus, b as getInfoFromCredential, d as getCategoryDarkColor, e as getCategoryLightColor, f as getCategoryIcon, h as getImageFromProfile } from './credential.helpers-bd29e893.js';
2
+ import { I as InfoIcon, c as capitalize, E as ExclamationPoint, A as AcuteCheckmark, d as getBaseUrl, e as VideoIcon, C as Camera, G as GenericDocumentIcon, L as LinkIcon, p as prettyBytes, h as LeftArrow, j as SkillsBox, R as RoundedCorner, k as IssuerSeal, r as resolveProfileDisplay, l as isAppDidWeb, V as VERIFIER_STATES, m as VerifierStateBadgeAndText, F as FatArrow } from './VerifierStateBadgeAndText-f878973e.js';
3
+ import { g as getTotalCountOfSkills, c as categorizeSkills, a as getColorForVerificationStatus, b as getInfoFromCredential, d as getCategoryDarkColor, e as getCategoryLightColor, f as getCategoryIcon, h as getImageFromProfile } from './credential.helpers-108b5fb6.js';
4
4
  import { P as PuzzlePiece } from './PuzzlePiece-a3d9cc62.js';
5
- import { U as UserProfilePicture } from './UserProfilePicture-7e131f5d.js';
5
+ import { U as UserProfilePicture } from './UserProfilePicture-50c34186.js';
6
6
  import { a as LCCategoryEnum } from './index-28917993.js';
7
- import { V as VerificationStatusEnum } from './types.esm-e2b75956.js';
7
+ import { V as VerificationStatusEnum } from './types.esm-aa0345d0.js';
8
8
  import { X, L as Lightbox } from './Lightbox-f0338a0c.js';
9
9
  import CaretRightFilled from './CaretRightFilled.svg';
10
10
  import ThreeDots from './DotsThreeOutline.svg';
@@ -593,22 +593,56 @@ const CertificateRibbon = ({ className = "" }) => {
593
593
  );
594
594
  };
595
595
 
596
+ const BadgePlaceholder = () => /* @__PURE__ */ React.createElement(
597
+ "svg",
598
+ {
599
+ viewBox: "0 0 24 24",
600
+ fill: "none",
601
+ xmlns: "http://www.w3.org/2000/svg",
602
+ className: "w-1/2 h-1/2 text-grayscale-400",
603
+ "aria-hidden": "true"
604
+ },
605
+ /* @__PURE__ */ React.createElement("circle", { cx: "12", cy: "9", r: "6", stroke: "currentColor", strokeWidth: "1.75" }),
606
+ /* @__PURE__ */ React.createElement(
607
+ "path",
608
+ {
609
+ d: "M8.5 14.5 7 22l5-3 5 3-1.5-7.5",
610
+ stroke: "currentColor",
611
+ strokeWidth: "1.75",
612
+ strokeLinecap: "round",
613
+ strokeLinejoin: "round"
614
+ }
615
+ ),
616
+ /* @__PURE__ */ React.createElement(
617
+ "path",
618
+ {
619
+ d: "M12 6.5 13 8.3l2 .3-1.4 1.4.3 2L12 11l-1.9.9.3-2L9 8.6l2-.3L12 6.5Z",
620
+ fill: "currentColor"
621
+ }
622
+ )
623
+ );
596
624
  const CertificateImageDisplay = ({
597
625
  imageUrl,
598
626
  className = "",
599
627
  ribbonColor = "amber-500"
600
628
  }) => {
629
+ const [errored, setErrored] = React.useState(false);
630
+ React.useEffect(() => {
631
+ setErrored(false);
632
+ }, [imageUrl]);
633
+ const showPlaceholder = !imageUrl || errored;
601
634
  return /* @__PURE__ */ React.createElement(
602
635
  "div",
603
636
  {
604
637
  className: `flex items-center justify-center w-[120px] h-[120px] rounded-full border-white border-solid border-4 bg-white z-50 ${className}`
605
638
  },
606
- /* @__PURE__ */ React.createElement("div", { className: "relative w-[75%] h-[75%] flex items-center justify-center rounded-full border-white border-solid border-4 overflow-hidden object-contain" }, /* @__PURE__ */ React.createElement(
639
+ /* @__PURE__ */ React.createElement("div", { className: "relative w-[75%] h-[75%] flex items-center justify-center rounded-full border-white border-solid border-4 overflow-hidden bg-white" }, showPlaceholder ? /* @__PURE__ */ React.createElement(BadgePlaceholder, null) : /* @__PURE__ */ React.createElement(
607
640
  "img",
608
641
  {
609
642
  src: imageUrl,
610
643
  alt: "certificate thumbnail",
611
- className: "h-full w-full object-cover"
644
+ className: "h-full w-full object-cover",
645
+ onError: () => setErrored(true)
612
646
  }
613
647
  )),
614
648
  /* @__PURE__ */ React.createElement(CertificateRibbon, { className: `absolute z-[9999] ${ribbonColor} w-[120px] h-[120px]` })
@@ -632,7 +666,7 @@ const CertificateProfileImageDisplay = ({
632
666
  UserProfilePicture,
633
667
  {
634
668
  customContainerClass: imageClassName,
635
- customImageClass: "h-full w-full object-cover leading-normal",
669
+ customImageClass: "h-full w-full object-cover leading-normal bg-white",
636
670
  user: { image: imageUrl, name: userName },
637
671
  avatarColor,
638
672
  avatarFingerprintColor,
@@ -661,7 +695,8 @@ const CertificateFrontFace = ({
661
695
  customBodyContentSlot,
662
696
  unknownVerifierTitle,
663
697
  hideAwardedTo: hideAwardedToProp,
664
- hideFrontFaceDetails
698
+ hideFrontFaceDetails,
699
+ onVerifierClick
665
700
  }) => {
666
701
  var _a, _b, _c;
667
702
  const {
@@ -784,11 +819,12 @@ const CertificateFrontFace = ({
784
819
  },
785
820
  "Details"
786
821
  )),
787
- /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-[5px] items-center w-full" }, /* @__PURE__ */ React.createElement("span", { className: "font-jacques text-[12px] text-grayscale-800" }, "Certified by"), issuerDisplay.isDidValue ? /* @__PURE__ */ React.createElement("span", { className: "mb-[3px] pt-[3px] text-grayscale-900 text-[14px] leading-[90%] font-jacques tracking-[0.25px] border-b-[1px] border-solid border-grayscale-200 w-full text-center overflow-ellipsis whitespace-normal scrollbar-hide" }, /* @__PURE__ */ React.createElement("span", { className: "font-[600]" }, issuerDisplay.isDidValue ? "Digital ID: " : ""), /* @__PURE__ */ React.createElement("span", { className: "text-grayscale-600" }, issuerName)) : /* @__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 overflow-ellipsis whitespace-normal scrollbar-hide" }, issuerName), /* @__PURE__ */ React.createElement(
822
+ /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-[5px] items-center w-full" }, /* @__PURE__ */ React.createElement("span", { className: "font-jacques text-[12px] text-grayscale-800" }, "Certified by"), issuerDisplay.isDidValue ? /* @__PURE__ */ React.createElement("span", { className: "mb-[3px] pt-[3px] text-grayscale-900 text-[14px] leading-[90%] font-jacques tracking-[0.25px] border-b-[1px] border-solid border-grayscale-200 w-full text-center line-clamp-2 break-words scrollbar-hide" }, /* @__PURE__ */ React.createElement("span", { className: "font-[600]" }, issuerDisplay.isDidValue ? "Digital ID: " : ""), /* @__PURE__ */ React.createElement("span", { className: "text-grayscale-600" }, issuerName)) : /* @__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" }, issuerName), /* @__PURE__ */ React.createElement(
788
823
  VerifierStateBadgeAndText,
789
824
  {
790
825
  verifierState,
791
- unknownVerifierTitle
826
+ unknownVerifierTitle,
827
+ onClick: (event) => onVerifierClick == null ? void 0 : onVerifierClick(event, verifierState)
792
828
  }
793
829
  )),
794
830
  customBodyContentSlot && customBodyContentSlot,
@@ -842,7 +878,8 @@ const CertificateDisplayCard = ({
842
878
  customBodyContentSlot,
843
879
  unknownVerifierTitle,
844
880
  hideAwardedTo,
845
- hideFrontFaceDetails
881
+ hideFrontFaceDetails,
882
+ onVerifierClick
846
883
  }) => {
847
884
  const [_isFront, _setIsFront] = useState(isFrontOverride != null ? isFrontOverride : true);
848
885
  const isFront = isFrontOverride != null ? isFrontOverride : _isFront;
@@ -866,7 +903,8 @@ const CertificateDisplayCard = ({
866
903
  customBodyContentSlot,
867
904
  unknownVerifierTitle,
868
905
  hideAwardedTo,
869
- hideFrontFaceDetails
906
+ hideFrontFaceDetails,
907
+ onVerifierClick
870
908
  }
871
909
  ), !isFront && /* @__PURE__ */ React.createElement(
872
910
  CertificateBackFace,
@@ -923,4 +961,4 @@ const CertificateDisplayCard = ({
923
961
  };
924
962
 
925
963
  export { AlignmentsBox as A, CertDisplayCardSkillsCount as C, CertificateBackFace as a, CertificateDisplayCard as b, CertificateFrontFace as c };
926
- //# sourceMappingURL=CertificateDisplayCard-fdc1ea6c.js.map
964
+ //# sourceMappingURL=CertificateDisplayCard-8f3f43b4.js.map