@learncard/react 2.6.58 → 2.6.60

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 (48) hide show
  1. package/dist/cjs/{CertificateDisplayCard-bcd8166b.js → CertificateDisplayCard-8e500ee3.js} +1891 -20
  2. package/dist/cjs/CertificateDisplayCard-8e500ee3.js.map +1 -0
  3. package/dist/cjs/{VCCard-4a883c80.js → VCCard-eb810671.js} +3 -3
  4. package/dist/cjs/{VCCard-4a883c80.js.map → VCCard-eb810671.js.map} +1 -1
  5. package/dist/cjs/{VCDisplayBackFace-91668901.js → VCDisplayBackFace-c6f12ee8.js} +2 -2
  6. package/dist/cjs/{VCDisplayBackFace-91668901.js.map → VCDisplayBackFace-c6f12ee8.js.map} +1 -1
  7. package/dist/cjs/{VCDisplayCard-d5fcddb7.js → VCDisplayCard-3325a3e5.js} +3 -3
  8. package/dist/cjs/{VCDisplayCard-d5fcddb7.js.map → VCDisplayCard-3325a3e5.js.map} +1 -1
  9. package/dist/cjs/VCDisplayCard2-b47ebf73.js +835 -0
  10. package/dist/cjs/VCDisplayCard2-b47ebf73.js.map +1 -0
  11. package/dist/cjs/{credential.helpers-a3c3d503.js → credential.helpers-66f4ff2a.js} +28 -1
  12. package/dist/{esm/credential.helpers-96c9bb51.js.map → cjs/credential.helpers-66f4ff2a.js.map} +1 -1
  13. package/dist/cjs/index.js +8 -8
  14. package/dist/cjs/index13.js +8 -8
  15. package/dist/cjs/index36.js +6 -6
  16. package/dist/cjs/index37.js +2 -2
  17. package/dist/cjs/index38.js +3 -3
  18. package/dist/cjs/index39.js +9 -9
  19. package/dist/cjs/index6.js +2 -2
  20. package/dist/esm/{CertificateDisplayCard-565f4c4c.js → CertificateDisplayCard-dcebf9a7.js} +1881 -21
  21. package/dist/esm/CertificateDisplayCard-dcebf9a7.js.map +1 -0
  22. package/dist/esm/{VCCard-e58481d3.js → VCCard-0834355b.js} +3 -3
  23. package/dist/esm/{VCCard-e58481d3.js.map → VCCard-0834355b.js.map} +1 -1
  24. package/dist/esm/{VCDisplayBackFace-b2024cfb.js → VCDisplayBackFace-3da487b5.js} +2 -2
  25. package/dist/esm/{VCDisplayBackFace-b2024cfb.js.map → VCDisplayBackFace-3da487b5.js.map} +1 -1
  26. package/dist/esm/{VCDisplayCard-69585484.js → VCDisplayCard-986e2e64.js} +3 -3
  27. package/dist/esm/{VCDisplayCard-69585484.js.map → VCDisplayCard-986e2e64.js.map} +1 -1
  28. package/dist/esm/VCDisplayCard2-5f6fda66.js +828 -0
  29. package/dist/esm/VCDisplayCard2-5f6fda66.js.map +1 -0
  30. package/dist/esm/{credential.helpers-96c9bb51.js → credential.helpers-cf70a857.js} +28 -2
  31. package/dist/{cjs/credential.helpers-a3c3d503.js.map → esm/credential.helpers-cf70a857.js.map} +1 -1
  32. package/dist/esm/index.js +7 -7
  33. package/dist/esm/index13.js +7 -7
  34. package/dist/esm/index36.js +6 -6
  35. package/dist/esm/index37.js +2 -2
  36. package/dist/esm/index38.js +3 -3
  37. package/dist/esm/index39.js +7 -7
  38. package/dist/esm/index6.js +2 -2
  39. package/dist/index.d.ts +3 -0
  40. package/dist/main.css +1 -1
  41. package/dist/main.js +1 -1
  42. package/package.json +1 -1
  43. package/dist/cjs/CertificateDisplayCard-bcd8166b.js.map +0 -1
  44. package/dist/cjs/VCDisplayCard2-c88df451.js +0 -2691
  45. package/dist/cjs/VCDisplayCard2-c88df451.js.map +0 -1
  46. package/dist/esm/CertificateDisplayCard-565f4c4c.js.map +0 -1
  47. package/dist/esm/VCDisplayCard2-cdc55bfd.js +0 -2674
  48. package/dist/esm/VCDisplayCard2-cdc55bfd.js.map +0 -1
@@ -1,2691 +0,0 @@
1
- 'use strict';
2
-
3
- var React = require('react');
4
- var index_es = require('./index.es-f433af46.js');
5
- var VCVerificationCheck = require('./VCVerificationCheck-46fa75d3.js');
6
- var DefaultFace = require('./default-face.jpeg');
7
- var credential_helpers = require('./credential.helpers-a3c3d503.js');
8
- var CertificateDisplayCard = require('./CertificateDisplayCard-bcd8166b.js');
9
- var Lightbox = require('./Lightbox-f19e13d2.js');
10
- var Athletics = require('./athletics.svg');
11
- var Business = require('./business.svg');
12
- var Creative = require('./creative.svg');
13
- var Digital = require('./digital.svg');
14
- var Durable = require('./durable.svg');
15
- var Medical = require('./medical.svg');
16
- var Social = require('./social.svg');
17
- var Stem = require('./stem.svg');
18
- var Trade = require('./trade.svg');
19
- var types = require('./types-7f6324ea.js');
20
- var VCVerificationPill = require('./VCVerificationPill-d0edd7ae.js');
21
- var AwardRibbon = require('./AwardRibbon-14ba45fb.js');
22
- var index = require('./index-7d94d5ac.js');
23
- require('react-dom');
24
-
25
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
26
-
27
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
28
- var DefaultFace__default = /*#__PURE__*/_interopDefaultLegacy(DefaultFace);
29
- var Athletics__default = /*#__PURE__*/_interopDefaultLegacy(Athletics);
30
- var Business__default = /*#__PURE__*/_interopDefaultLegacy(Business);
31
- var Creative__default = /*#__PURE__*/_interopDefaultLegacy(Creative);
32
- var Digital__default = /*#__PURE__*/_interopDefaultLegacy(Digital);
33
- var Durable__default = /*#__PURE__*/_interopDefaultLegacy(Durable);
34
- var Medical__default = /*#__PURE__*/_interopDefaultLegacy(Medical);
35
- var Social__default = /*#__PURE__*/_interopDefaultLegacy(Social);
36
- var Stem__default = /*#__PURE__*/_interopDefaultLegacy(Stem);
37
- var Trade__default = /*#__PURE__*/_interopDefaultLegacy(Trade);
38
-
39
- const LeftArrow = ({ className = "", size = "20" }) => {
40
- return /* @__PURE__ */ React__default["default"].createElement("svg", {
41
- width: size,
42
- height: size,
43
- viewBox: "0 0 20 20",
44
- fill: "none",
45
- xmlns: "http://www.w3.org/2000/svg",
46
- className
47
- }, /* @__PURE__ */ React__default["default"].createElement("path", {
48
- d: "M8.93299 17.942L1.43299 10.442C1.31582 10.3247 1.25 10.1657 1.25 9.99999C1.25 9.83423 1.31582 9.67526 1.43299 9.55802L8.93299 2.05802C9.02041 1.97062 9.13178 1.91111 9.25301 1.887C9.37425 1.8629 9.49991 1.87528 9.61412 1.92258C9.72832 1.96989 9.82593 2.04999 9.89461 2.15277C9.96329 2.25554 9.99995 2.37638 9.99996 2.49999V5.62499H16.25C16.5814 5.62537 16.8991 5.75718 17.1334 5.99152C17.3678 6.22586 17.4996 6.54358 17.5 6.87499V13.125C17.4996 13.4564 17.3678 13.7741 17.1334 14.0085C16.8991 14.2428 16.5814 14.3746 16.25 14.375H9.99996V17.5C9.99995 17.6236 9.96329 17.7444 9.89461 17.8472C9.82593 17.95 9.72832 18.0301 9.61412 18.0774C9.49991 18.1247 9.37425 18.1371 9.25301 18.113C9.13178 18.0889 9.02041 18.0294 8.93299 17.942Z",
49
- fill: "currentColor"
50
- }));
51
- };
52
-
53
- const RoundedX = ({ className = "" }) => {
54
- return /* @__PURE__ */ React__default["default"].createElement("svg", {
55
- width: "24",
56
- height: "24",
57
- viewBox: "0 0 24 24",
58
- fill: "none",
59
- xmlns: "http://www.w3.org/2000/svg",
60
- className
61
- }, /* @__PURE__ */ React__default["default"].createElement("path", {
62
- d: "M18.75 5.25L5.25 18.75",
63
- stroke: "#18224E",
64
- strokeWidth: "4",
65
- strokeLinecap: "round",
66
- strokeLinejoin: "round"
67
- }), /* @__PURE__ */ React__default["default"].createElement("path", {
68
- d: "M18.75 18.75L5.25 5.25",
69
- stroke: "#18224E",
70
- strokeWidth: "4",
71
- strokeLinecap: "round",
72
- strokeLinejoin: "round"
73
- }));
74
- };
75
-
76
- const FitText = ({
77
- text,
78
- width,
79
- className = "",
80
- minFontSize = 10,
81
- maxFontSize = 100
82
- }) => {
83
- const textRef = React.useRef(null);
84
- let animationFrameId = null;
85
- const adjustFontSize = () => {
86
- var _a;
87
- if (textRef.current) {
88
- const currentFontSize = parseFloat(window.getComputedStyle(textRef.current).getPropertyValue("font-size"));
89
- textRef.current.style.whiteSpace = "nowrap";
90
- const parentWidth = (_a = textRef.current.parentNode) == null ? void 0 : _a.clientWidth;
91
- const scrollWidth = textRef.current.scrollWidth || textRef.current.offsetWidth;
92
- if (scrollWidth === 0) {
93
- if (animationFrameId !== null) {
94
- cancelAnimationFrame(animationFrameId);
95
- }
96
- animationFrameId = requestAnimationFrame(adjustFontSize);
97
- return;
98
- }
99
- const newFontSize = Math.min(Math.max(parentWidth / scrollWidth * currentFontSize, minFontSize), maxFontSize);
100
- textRef.current.style.fontSize = `${newFontSize}px`;
101
- textRef.current.style.whiteSpace = newFontSize === minFontSize ? "normal" : "nowrap";
102
- }
103
- };
104
- const handleResize = () => {
105
- if (animationFrameId !== null) {
106
- cancelAnimationFrame(animationFrameId);
107
- }
108
- animationFrameId = requestAnimationFrame(adjustFontSize);
109
- };
110
- React.useEffect(() => {
111
- window.addEventListener("resize", handleResize);
112
- adjustFontSize();
113
- return () => {
114
- window.removeEventListener("resize", handleResize);
115
- if (animationFrameId !== null) {
116
- cancelAnimationFrame(animationFrameId);
117
- }
118
- };
119
- }, [text]);
120
- return /* @__PURE__ */ React__default["default"].createElement("div", {
121
- style: { width },
122
- className: `text-center ${className}`
123
- }, /* @__PURE__ */ React__default["default"].createElement("span", {
124
- className: `text-[${minFontSize}px] transition-[font-size] whitespace-nowrap`,
125
- ref: textRef
126
- }, text));
127
- };
128
-
129
- const InfoBox = ({ text, handleClose, backgroundColor = "#6366F1" }) => {
130
- const bgColorWithOpacity = `${backgroundColor}1F`;
131
- return /* @__PURE__ */ React__default["default"].createElement("div", {
132
- className: "info-box p-[10px] rounded-[10px] w-full font-poppins text-[12px] leading[18px]",
133
- style: { backgroundColor: bgColorWithOpacity }
134
- }, text, " ", /* @__PURE__ */ React__default["default"].createElement("button", {
135
- onClick: handleClose,
136
- className: "text-indigo-500 font-[700] select-none"
137
- }, "Close"));
138
- };
139
-
140
- const IssueHistoryBox = ({
141
- issueHistory,
142
- customIssueHistoryComponent
143
- }) => {
144
- let renderIssueHistory = issueHistory == null ? void 0 : issueHistory.map((issueItem) => {
145
- return /* @__PURE__ */ React__default["default"].createElement("div", {
146
- className: "flex items-center issue-log-item border-b-[1px] py-[5px] border-grayscale-200 border-solid w-full",
147
- key: issueItem == null ? void 0 : issueItem.id
148
- }, /* @__PURE__ */ React__default["default"].createElement("div", {
149
- className: "profile-thumb-img vc-issuee-image h-[35px] w-[35px] rounded-full overflow-hidden"
150
- }, /* @__PURE__ */ React__default["default"].createElement("img", {
151
- className: "h-full w-full object-cover select-none",
152
- src: (issueItem == null ? void 0 : issueItem.thumb) || DefaultFace__default["default"],
153
- alt: "profile"
154
- })), /* @__PURE__ */ React__default["default"].createElement("div", {
155
- className: "ml-[9px] flex flex-col justify-center"
156
- }, /* @__PURE__ */ React__default["default"].createElement("p", {
157
- className: "issue-item-name font-montserrat font-semibold text-grayscale-900 text-[14px] "
158
- }, issueItem == null ? void 0 : issueItem.name), /* @__PURE__ */ React__default["default"].createElement("p", {
159
- className: "issue-item-date font-montserrat text-[12px] text-grayscale-600 "
160
- }, issueItem == null ? void 0 : issueItem.date)));
161
- });
162
- return /* @__PURE__ */ React__default["default"].createElement("div", {
163
- className: "bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full relative"
164
- }, /* @__PURE__ */ React__default["default"].createElement("h3", {
165
- className: "text-[20px] leading-[20px] text-grayscale-900"
166
- }, "Issue Log"), !customIssueHistoryComponent ? renderIssueHistory : customIssueHistoryComponent);
167
- };
168
-
169
- var __async = (__this, __arguments, generator) => {
170
- return new Promise((resolve, reject) => {
171
- var fulfilled = (value) => {
172
- try {
173
- step(generator.next(value));
174
- } catch (e) {
175
- reject(e);
176
- }
177
- };
178
- var rejected = (value) => {
179
- try {
180
- step(generator.throw(value));
181
- } catch (e) {
182
- reject(e);
183
- }
184
- };
185
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
186
- step((generator = generator.apply(__this, __arguments)).next());
187
- });
188
- };
189
- const defaultGetFileMetadata = (url) => __async(undefined, null, function* () {
190
- var _a;
191
- const isFilestack = url.includes("filestack");
192
- if (!isFilestack)
193
- return;
194
- const urlParams = (_a = url.split(".com/")[1]) == null ? void 0 : _a.split("/");
195
- if (!urlParams)
196
- return;
197
- const handle = urlParams[urlParams.length - 1];
198
- let fetchFailed = false;
199
- const data = yield fetch(`https://cdn.filestackcontent.com/${handle}/metadata`).then((res) => res.json()).catch(() => fetchFailed = true);
200
- if (fetchFailed)
201
- return;
202
- const fileExtension = data.filename.split(".")[1];
203
- return {
204
- fileExtension,
205
- sizeInBytes: data.size,
206
- numberOfPages: void 0
207
- };
208
- });
209
- const defaultGetVideoMetadata = (url) => __async(undefined, null, function* () {
210
- const isYoutube = url.includes("youtube");
211
- if (!isYoutube)
212
- return;
213
- const metadataUrl = `http://youtube.com/oembed?url=${url}&format=json`;
214
- let fetchFailed = false;
215
- const metadata = yield fetch(metadataUrl).then((res) => res.json()).catch(() => fetchFailed = true);
216
- if (fetchFailed)
217
- return;
218
- return {
219
- title: metadata.title,
220
- imageUrl: metadata.thumbnail_url,
221
- videoLength: ""
222
- };
223
- });
224
- const MediaAttachmentsBox = ({
225
- attachments,
226
- getFileMetadata = defaultGetFileMetadata,
227
- getVideoMetadata = defaultGetVideoMetadata,
228
- onMediaAttachmentClick,
229
- enableLightbox = false
230
- }) => {
231
- const [documentMetadata, setDocumentMetadata] = React.useState({});
232
- const [videoMetadata, setVideoMetadata] = React.useState({});
233
- const mediaAttachments = [];
234
- const documentsAndLinks = [];
235
- attachments.forEach((a) => {
236
- switch (a.type) {
237
- case "document":
238
- case "link":
239
- documentsAndLinks.push(a);
240
- break;
241
- case "photo":
242
- case "video":
243
- mediaAttachments.push(a);
244
- break;
245
- }
246
- });
247
- React.useEffect(() => {
248
- const getMetadata = (attachments2) => __async(undefined, null, function* () {
249
- const docMetadata = {};
250
- const videoMetadata2 = {};
251
- yield Promise.all(attachments2.map((attachment) => __async(this, null, function* () {
252
- if (attachment.type === "document") {
253
- docMetadata[attachment.url] = yield getFileMetadata(attachment.url);
254
- } else if (attachment.type === "video") {
255
- videoMetadata2[attachment.url] = yield getVideoMetadata(attachment.url);
256
- }
257
- })));
258
- setVideoMetadata(videoMetadata2);
259
- setDocumentMetadata(docMetadata);
260
- });
261
- const videos = attachments.filter((a) => a.type === "video");
262
- getMetadata([...documentsAndLinks, ...videos]);
263
- }, []);
264
- const [currentLightboxUrl, setCurrentLightboxUrl] = React.useState(void 0);
265
- const lightboxItems = mediaAttachments.filter((a) => a.type === "photo" || a.type === "video");
266
- const handleMediaAttachmentClick = (url, type) => {
267
- if (type === "photo" || type === "video") {
268
- setCurrentLightboxUrl(url);
269
- }
270
- onMediaAttachmentClick == null ? void 0 : onMediaAttachmentClick(url, type);
271
- };
272
- return /* @__PURE__ */ React__default["default"].createElement("div", {
273
- className: "media-attachments-box bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full"
274
- }, /* @__PURE__ */ React__default["default"].createElement("h3", {
275
- className: "text-[20px] leading-[20px] text-grayscale-900"
276
- }, "Media Attachments"), mediaAttachments.length > 0 && /* @__PURE__ */ React__default["default"].createElement("div", {
277
- className: "flex gap-[5px] justify-between flex-wrap w-full"
278
- }, enableLightbox && /* @__PURE__ */ React__default["default"].createElement(Lightbox.Lightbox, {
279
- items: lightboxItems,
280
- currentUrl: currentLightboxUrl,
281
- setCurrentUrl: setCurrentLightboxUrl
282
- }), mediaAttachments.map((media, index) => {
283
- var _a, _b;
284
- let innerContent;
285
- let title = media.title;
286
- if (media.type === "video") {
287
- const metadata = videoMetadata[media.url];
288
- title = (_a = title || (metadata == null ? void 0 : metadata.title)) != null ? _a : "";
289
- const baseUrl = CertificateDisplayCard.getBaseUrl(media.url);
290
- const iconTop = title || baseUrl;
291
- innerContent = /* @__PURE__ */ React__default["default"].createElement("div", {
292
- className: "absolute top-0 left-0 right-0 bottom-0 bg-cover bg-no-repeat font-poppins text-white text-[12px] font-[400] leading-[17px] flex flex-col justify-end items-start p-[10px] text-left bg-rose-600 rounded-[15px]",
293
- style: {
294
- backgroundImage: (metadata == null ? void 0 : metadata.imageUrl) ? `linear-gradient(180deg, rgba(0, 0, 0, 0) 44.20%, rgba(0, 0, 0, 0.6) 69%), url(${(_b = metadata == null ? void 0 : metadata.imageUrl) != null ? _b : ""})` : void 0
295
- }
296
- }, !(metadata == null ? void 0 : metadata.imageUrl) && /* @__PURE__ */ React__default["default"].createElement(CertificateDisplayCard.VideoIcon, {
297
- size: "60",
298
- className: "m-auto"
299
- }), /* @__PURE__ */ React__default["default"].createElement("div", {
300
- className: `absolute ${iconTop ? "top-[10px]" : "bottom-[10px]"} left-[10px] z-10 flex items-center gap-[5px]`
301
- }, (metadata == null ? void 0 : metadata.imageUrl) && /* @__PURE__ */ React__default["default"].createElement(CertificateDisplayCard.VideoIcon, null), (metadata == null ? void 0 : metadata.videoLength) && /* @__PURE__ */ React__default["default"].createElement("span", {
302
- className: "leading-[23px]"
303
- }, metadata.videoLength)), baseUrl && /* @__PURE__ */ React__default["default"].createElement("span", {
304
- className: "font-[600]"
305
- }, baseUrl), title && /* @__PURE__ */ React__default["default"].createElement("span", {
306
- className: "line-clamp-2"
307
- }, title));
308
- } else {
309
- innerContent = /* @__PURE__ */ React__default["default"].createElement("div", {
310
- className: "absolute top-0 left-0 right-0 bottom-0 h-min"
311
- }, /* @__PURE__ */ React__default["default"].createElement("img", {
312
- className: "rounded-[15px]",
313
- src: media.url
314
- }), /* @__PURE__ */ React__default["default"].createElement(CertificateDisplayCard.Camera, {
315
- className: "relative bottom-[30px] left-[10px] z-10"
316
- }));
317
- }
318
- const className = `media-attachment ${media.type} w-[49%] pt-[49%] overflow-hidden relative`;
319
- if (onMediaAttachmentClick || enableLightbox) {
320
- return /* @__PURE__ */ React__default["default"].createElement("button", {
321
- key: index,
322
- className,
323
- onClick: () => handleMediaAttachmentClick(media.url, media.type)
324
- }, innerContent);
325
- }
326
- return /* @__PURE__ */ React__default["default"].createElement("div", {
327
- key: index,
328
- className
329
- }, innerContent);
330
- })), documentsAndLinks.length > 0 && /* @__PURE__ */ React__default["default"].createElement("div", {
331
- className: "w-full flex flex-col gap-[5px]"
332
- }, documentsAndLinks.map((docOrLink, index) => {
333
- var _a;
334
- const metadata = docOrLink.type === "document" ? documentMetadata[docOrLink.url] : void 0;
335
- const { fileExtension, sizeInBytes, numberOfPages } = metadata != null ? metadata : {};
336
- let baseUrl = "";
337
- if (docOrLink.type === "link") {
338
- baseUrl = CertificateDisplayCard.getBaseUrl(docOrLink.url);
339
- }
340
- const innerContent = /* @__PURE__ */ React__default["default"].createElement("div", {
341
- className: "flex flex-col gap-[5px]"
342
- }, /* @__PURE__ */ React__default["default"].createElement("div", {
343
- className: "flex gap-[5px] items-center"
344
- }, docOrLink.type === "document" && /* @__PURE__ */ React__default["default"].createElement(CertificateDisplayCard.GenericDocumentIcon, {
345
- className: "shrink-0"
346
- }), docOrLink.type === "link" && /* @__PURE__ */ React__default["default"].createElement(CertificateDisplayCard.LinkIcon, {
347
- className: "shrink-0"
348
- }), /* @__PURE__ */ React__default["default"].createElement("span", {
349
- className: "text-grayscale-900 font-[400]"
350
- }, (_a = docOrLink.title) != null ? _a : "No title")), docOrLink.type === "document" && metadata && /* @__PURE__ */ React__default["default"].createElement("a", {
351
- href: docOrLink.url,
352
- target: "_blank",
353
- rel: "noreferrer",
354
- className: "text-grayscale-600 font-[600] px-[5px] hover:underline"
355
- }, fileExtension && /* @__PURE__ */ React__default["default"].createElement("span", {
356
- className: "uppercase"
357
- }, fileExtension), fileExtension && (numberOfPages || sizeInBytes) && " \u2022 ", numberOfPages && /* @__PURE__ */ React__default["default"].createElement("span", null, numberOfPages, " page", numberOfPages === 1 ? "" : "s"), numberOfPages && sizeInBytes && " \u2022 ", sizeInBytes && /* @__PURE__ */ React__default["default"].createElement("span", null, CertificateDisplayCard.prettyBytes(sizeInBytes))), docOrLink.type === "link" && /* @__PURE__ */ React__default["default"].createElement("a", {
358
- href: docOrLink.url,
359
- target: "_blank",
360
- rel: "noreferrer",
361
- className: "text-indigo-500 font-[600] px-[5px] hover:underline"
362
- }, baseUrl));
363
- 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`;
364
- if (onMediaAttachmentClick) {
365
- return /* @__PURE__ */ React__default["default"].createElement("button", {
366
- key: index,
367
- className,
368
- onClick: () => handleMediaAttachmentClick(docOrLink.url, docOrLink.type)
369
- }, innerContent);
370
- }
371
- return /* @__PURE__ */ React__default["default"].createElement("div", {
372
- key: index,
373
- className
374
- }, innerContent);
375
- })));
376
- };
377
-
378
- const RibbonEnd = ({
379
- side,
380
- className = "",
381
- height = "64"
382
- }) => {
383
- const halfHeight = parseInt(height) / 2;
384
- return /* @__PURE__ */ React__default["default"].createElement("svg", {
385
- className,
386
- width: "30",
387
- height,
388
- viewBox: `0 0 30 ${height}`,
389
- fill: "none",
390
- xmlns: "http://www.w3.org/2000/svg",
391
- style: { transform: `scaleX(${side === "left" ? "1" : "-1"})` }
392
- }, /* @__PURE__ */ React__default["default"].createElement("g", {
393
- filter: "url(#filter0_d_4620_22659)"
394
- }, /* @__PURE__ */ React__default["default"].createElement("path", {
395
- d: `M0 0H30V${height}H0L6.36364 ${halfHeight}L0 0Z`,
396
- fill: "white"
397
- }), /* @__PURE__ */ React__default["default"].createElement("path", {
398
- d: `M3.08593 2.5H27.5V${height}H3.08593L8.80922 ${halfHeight}L8.91926 30L8.80922 29.4812L3.08593 2.5Z`,
399
- stroke: "#EEF2FF",
400
- strokeWidth: "5"
401
- })), /* @__PURE__ */ React__default["default"].createElement("defs", null, /* @__PURE__ */ React__default["default"].createElement("filter", {
402
- id: "filter0_d_4620_22659",
403
- x: "0",
404
- y: "0",
405
- width: "30",
406
- height,
407
- filterUnits: "userSpaceOnUse",
408
- colorInterpolationFilters: "sRGB"
409
- }, /* @__PURE__ */ React__default["default"].createElement("feFlood", {
410
- floodOpacity: "0",
411
- result: "BackgroundImageFix"
412
- }), /* @__PURE__ */ React__default["default"].createElement("feColorMatrix", {
413
- in: "SourceAlpha",
414
- type: "matrix",
415
- values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",
416
- result: "hardAlpha"
417
- }), /* @__PURE__ */ React__default["default"].createElement("feOffset", {
418
- dy: "4"
419
- }), /* @__PURE__ */ React__default["default"].createElement("feComposite", {
420
- in2: "hardAlpha",
421
- operator: "out"
422
- }), /* @__PURE__ */ React__default["default"].createElement("feColorMatrix", {
423
- type: "matrix",
424
- values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"
425
- }), /* @__PURE__ */ React__default["default"].createElement("feBlend", {
426
- mode: "normal",
427
- in2: "BackgroundImageFix",
428
- result: "effect1_dropShadow_4620_22659"
429
- }), /* @__PURE__ */ React__default["default"].createElement("feBlend", {
430
- mode: "normal",
431
- in: "SourceGraphic",
432
- in2: "effect1_dropShadow_4620_22659",
433
- result: "shape"
434
- }))));
435
- };
436
-
437
- const boostCMSSKillCategories = [
438
- {
439
- id: 1,
440
- title: "Durable",
441
- IconComponent: Durable__default["default"],
442
- iconClassName: "text-white",
443
- iconCircleClass: "bg-cyan-700",
444
- type: "durable" /* Durable */
445
- },
446
- {
447
- id: 2,
448
- title: "Stem",
449
- IconComponent: Stem__default["default"],
450
- iconClassName: "text-white",
451
- iconCircleClass: "bg-cyan-700",
452
- type: "stem" /* Stem */
453
- },
454
- {
455
- id: 3,
456
- title: "Athletic",
457
- IconComponent: Athletics__default["default"],
458
- iconClassName: "text-white",
459
- iconCircleClass: "bg-cyan-700",
460
- type: "athletic" /* Athletic */
461
- },
462
- {
463
- id: 4,
464
- title: "Creative",
465
- IconComponent: Creative__default["default"],
466
- iconClassName: "text-white",
467
- iconCircleClass: "bg-cyan-700",
468
- type: "creative" /* Creative */
469
- },
470
- {
471
- id: 5,
472
- title: "Business",
473
- IconComponent: Business__default["default"],
474
- iconClassName: "text-white",
475
- iconCircleClass: "bg-cyan-700",
476
- type: "business" /* Business */
477
- },
478
- {
479
- id: 6,
480
- title: "Trade",
481
- IconComponent: Trade__default["default"],
482
- iconClassName: "text-white",
483
- iconCircleClass: "bg-cyan-700",
484
- type: "trade" /* Trade */
485
- },
486
- {
487
- id: 7,
488
- title: "Social",
489
- IconComponent: Social__default["default"],
490
- iconClassName: "text-white",
491
- iconCircleClass: "bg-cyan-700",
492
- type: "social" /* Social */
493
- },
494
- {
495
- id: 8,
496
- title: "Digital",
497
- IconComponent: Digital__default["default"],
498
- iconClassName: "text-white",
499
- iconCircleClass: "bg-cyan-700",
500
- type: "digital" /* Digital */
501
- },
502
- {
503
- id: 9,
504
- title: "Medical",
505
- IconComponent: Medical__default["default"],
506
- iconClassName: "text-white",
507
- iconCircleClass: "bg-cyan-700",
508
- type: "medical" /* Medical */
509
- }
510
- ];
511
- const CATEGORY_TO_SKILLS = {
512
- ["durable" /* Durable */]: [
513
- {
514
- id: 1,
515
- title: "Adaptability",
516
- IconComponent: Durable__default["default"],
517
- iconClassName: "text-white",
518
- iconCircleClass: "bg-cyan-700",
519
- category: "durable" /* Durable */,
520
- type: "adaptability" /* Adaptability */
521
- },
522
- {
523
- id: 2,
524
- title: "Perseverance",
525
- IconComponent: Durable__default["default"],
526
- iconClassName: "text-white",
527
- iconCircleClass: "bg-cyan-700",
528
- category: "durable" /* Durable */,
529
- type: "perseverance" /* Perseverance */
530
- },
531
- {
532
- id: 3,
533
- title: "Mental Toughness",
534
- IconComponent: Durable__default["default"],
535
- iconClassName: "text-white",
536
- iconCircleClass: "bg-cyan-700",
537
- category: "durable" /* Durable */,
538
- type: "mentalToughness" /* MentalToughness */
539
- },
540
- {
541
- id: 4,
542
- title: "Physical Endurance",
543
- IconComponent: Durable__default["default"],
544
- iconClassName: "text-white",
545
- iconCircleClass: "bg-cyan-700",
546
- category: "durable" /* Durable */,
547
- type: "physicalEndurance" /* PhysicalEndurance */
548
- },
549
- {
550
- id: 5,
551
- title: "Lifelong Learning",
552
- IconComponent: Durable__default["default"],
553
- iconClassName: "text-white",
554
- iconCircleClass: "bg-cyan-700",
555
- category: "durable" /* Durable */,
556
- type: "lifelongLearning" /* LifelongLearning */
557
- }
558
- ],
559
- ["stem" /* Stem */]: [
560
- {
561
- id: 1,
562
- title: "Mathematics",
563
- IconComponent: Stem__default["default"],
564
- iconClassName: "text-white",
565
- iconCircleClass: "bg-cyan-700",
566
- category: "stem" /* Stem */,
567
- type: "mathematics" /* Mathematics */
568
- },
569
- {
570
- id: 2,
571
- title: "Science",
572
- IconComponent: Stem__default["default"],
573
- iconClassName: "text-white",
574
- iconCircleClass: "bg-cyan-700",
575
- category: "stem" /* Stem */,
576
- type: "science" /* Science */
577
- },
578
- {
579
- id: 3,
580
- title: "Technology",
581
- IconComponent: Stem__default["default"],
582
- iconClassName: "text-white",
583
- iconCircleClass: "bg-cyan-700",
584
- category: "stem" /* Stem */,
585
- type: "technology" /* Technology */
586
- },
587
- {
588
- id: 4,
589
- title: "Engineering",
590
- IconComponent: Stem__default["default"],
591
- iconClassName: "text-white",
592
- iconCircleClass: "bg-cyan-700",
593
- category: "stem" /* Stem */,
594
- type: "engineering" /* Engineering */
595
- },
596
- {
597
- id: 5,
598
- title: "Research",
599
- IconComponent: Stem__default["default"],
600
- iconClassName: "text-white",
601
- iconCircleClass: "bg-cyan-700",
602
- category: "stem" /* Stem */,
603
- type: "research" /* Research */
604
- }
605
- ],
606
- ["athletic" /* Athletic */]: [
607
- {
608
- id: 1,
609
- title: "Sport specific skills",
610
- IconComponent: Athletics__default["default"],
611
- iconClassName: "text-white",
612
- iconCircleClass: "bg-cyan-700",
613
- category: "athletic" /* Athletic */,
614
- type: "sportSpecificSkills" /* SportSpecificSkills */
615
- },
616
- {
617
- id: 2,
618
- title: "Strength and Conditioning",
619
- IconComponent: Athletics__default["default"],
620
- iconClassName: "text-white",
621
- iconCircleClass: "bg-cyan-700",
622
- category: "athletic" /* Athletic */,
623
- type: "strengthAndConditioning" /* StrengthAndConditioning */
624
- },
625
- {
626
- id: 3,
627
- title: "Coordination",
628
- IconComponent: Athletics__default["default"],
629
- iconClassName: "text-white",
630
- iconCircleClass: "bg-cyan-700",
631
- category: "athletic" /* Athletic */,
632
- type: "coordination" /* Coordination */
633
- },
634
- {
635
- id: 4,
636
- title: "Mental Focus",
637
- IconComponent: Athletics__default["default"],
638
- iconClassName: "text-white",
639
- iconCircleClass: "bg-cyan-700",
640
- category: "athletic" /* Athletic */,
641
- type: "mentalFocus" /* MentalFocus */
642
- },
643
- {
644
- id: 5,
645
- title: "Team work",
646
- IconComponent: Athletics__default["default"],
647
- iconClassName: "text-white",
648
- iconCircleClass: "bg-cyan-700",
649
- category: "athletic" /* Athletic */,
650
- type: "teamwork" /* Teamwork */
651
- }
652
- ],
653
- ["creative" /* Creative */]: [
654
- {
655
- id: 1,
656
- title: "Visual Arts",
657
- IconComponent: Creative__default["default"],
658
- iconClassName: "text-white",
659
- iconCircleClass: "bg-cyan-700",
660
- category: "creative" /* Creative */,
661
- type: "visualArts" /* VisualArts */
662
- },
663
- {
664
- id: 2,
665
- title: "Performing Arts",
666
- IconComponent: Creative__default["default"],
667
- iconClassName: "text-white",
668
- iconCircleClass: "bg-cyan-700",
669
- category: "creative" /* Creative */,
670
- type: "performingArts" /* PerformingArts */
671
- },
672
- {
673
- id: 3,
674
- title: "Writing",
675
- IconComponent: Creative__default["default"],
676
- iconClassName: "text-white",
677
- iconCircleClass: "bg-cyan-700",
678
- category: "creative" /* Creative */,
679
- type: "writing" /* Writing */
680
- },
681
- {
682
- id: 4,
683
- title: "Design",
684
- IconComponent: Creative__default["default"],
685
- iconClassName: "text-white",
686
- iconCircleClass: "bg-cyan-700",
687
- category: "creative" /* Creative */,
688
- type: "design" /* Design */
689
- },
690
- {
691
- id: 5,
692
- title: "Ideation",
693
- IconComponent: Creative__default["default"],
694
- iconClassName: "text-white",
695
- iconCircleClass: "bg-cyan-700",
696
- category: "creative" /* Creative */,
697
- type: "ideation" /* Ideation */
698
- }
699
- ],
700
- ["business" /* Business */]: [
701
- {
702
- id: 1,
703
- title: "Management",
704
- IconComponent: Business__default["default"],
705
- iconClassName: "text-white",
706
- iconCircleClass: "bg-cyan-700",
707
- category: "business" /* Business */,
708
- type: "management" /* Management */
709
- },
710
- {
711
- id: 2,
712
- title: "Finance",
713
- IconComponent: Business__default["default"],
714
- iconClassName: "text-white",
715
- iconCircleClass: "bg-cyan-700",
716
- category: "business" /* Business */,
717
- type: "finance" /* Finance */
718
- },
719
- {
720
- id: 3,
721
- title: "Marketing",
722
- IconComponent: Business__default["default"],
723
- iconClassName: "text-white",
724
- iconCircleClass: "bg-cyan-700",
725
- category: "business" /* Business */,
726
- type: "marketing" /* Marketing */
727
- },
728
- {
729
- id: 4,
730
- title: "Operations",
731
- IconComponent: Business__default["default"],
732
- iconClassName: "text-white",
733
- iconCircleClass: "bg-cyan-700",
734
- category: "business" /* Business */,
735
- type: "operations" /* Operations */
736
- },
737
- {
738
- id: 5,
739
- title: "Entrepreneurship",
740
- IconComponent: Business__default["default"],
741
- iconClassName: "text-white",
742
- iconCircleClass: "bg-cyan-700",
743
- category: "business" /* Business */,
744
- type: "entrepreneurship" /* Entrepreneurship */
745
- }
746
- ],
747
- ["trade" /* Trade */]: [
748
- {
749
- id: 1,
750
- title: "Construction",
751
- IconComponent: Trade__default["default"],
752
- iconClassName: "text-white",
753
- iconCircleClass: "bg-cyan-700",
754
- category: "trade" /* Trade */,
755
- type: "construction" /* Construction */
756
- },
757
- {
758
- id: 2,
759
- title: "Mechanics",
760
- IconComponent: Trade__default["default"],
761
- iconClassName: "text-white",
762
- iconCircleClass: "bg-cyan-700",
763
- category: "trade" /* Trade */,
764
- type: "mechanics" /* Mechanics */
765
- },
766
- {
767
- id: 3,
768
- title: "Manufacturing",
769
- IconComponent: Trade__default["default"],
770
- iconClassName: "text-white",
771
- iconCircleClass: "bg-cyan-700",
772
- category: "trade" /* Trade */,
773
- type: "manufacturing" /* Manufacturing */
774
- },
775
- {
776
- id: 4,
777
- title: "Cosmetology",
778
- IconComponent: Trade__default["default"],
779
- iconClassName: "text-white",
780
- iconCircleClass: "bg-cyan-700",
781
- category: "trade" /* Trade */,
782
- type: "cosmetology" /* Cosmetology */
783
- },
784
- {
785
- id: 5,
786
- title: "Culinary Arts",
787
- IconComponent: Trade__default["default"],
788
- iconClassName: "text-white",
789
- iconCircleClass: "bg-cyan-700",
790
- category: "trade" /* Trade */,
791
- type: "culinaryArts" /* CulinaryArts */
792
- }
793
- ],
794
- ["social" /* Social */]: [
795
- {
796
- id: 1,
797
- title: "History",
798
- IconComponent: Social__default["default"],
799
- iconClassName: "text-white",
800
- iconCircleClass: "bg-cyan-700",
801
- category: "social" /* Social */,
802
- type: "history" /* History */
803
- },
804
- {
805
- id: 2,
806
- title: "Psychology",
807
- IconComponent: Social__default["default"],
808
- iconClassName: "text-white",
809
- iconCircleClass: "bg-cyan-700",
810
- category: "social" /* Social */,
811
- type: "psychology" /* Psychology */
812
- },
813
- {
814
- id: 3,
815
- title: "Sociology",
816
- IconComponent: Social__default["default"],
817
- iconClassName: "text-white",
818
- iconCircleClass: "bg-cyan-700",
819
- category: "social" /* Social */,
820
- type: "sociology" /* Sociology */
821
- },
822
- {
823
- id: 4,
824
- title: "Economics",
825
- IconComponent: Social__default["default"],
826
- iconClassName: "text-white",
827
- iconCircleClass: "bg-cyan-700",
828
- category: "social" /* Social */,
829
- type: "economics" /* Economics */
830
- },
831
- {
832
- id: 5,
833
- title: "Political Science",
834
- IconComponent: Social__default["default"],
835
- iconClassName: "text-white",
836
- iconCircleClass: "bg-cyan-700",
837
- category: "social" /* Social */,
838
- type: "politicalScience" /* PoliticalScience */
839
- }
840
- ],
841
- ["digital" /* Digital */]: [
842
- {
843
- id: 1,
844
- title: "Basic Computer Skills",
845
- IconComponent: Digital__default["default"],
846
- iconClassName: "text-white",
847
- iconCircleClass: "bg-cyan-700",
848
- category: "digital" /* Digital */,
849
- type: "basicComputerSkills" /* BasicComputerSkills */
850
- },
851
- {
852
- id: 2,
853
- title: "Information Literacy",
854
- IconComponent: Digital__default["default"],
855
- iconClassName: "text-white",
856
- iconCircleClass: "bg-cyan-700",
857
- category: "digital" /* Digital */,
858
- type: "informationLiteracy" /* InformationLiteracy */
859
- },
860
- {
861
- id: 3,
862
- title: "Software Proficiency",
863
- IconComponent: Digital__default["default"],
864
- iconClassName: "text-white",
865
- iconCircleClass: "bg-cyan-700",
866
- category: "digital" /* Digital */,
867
- type: "softwareProficiency" /* SoftwareProficiency */
868
- },
869
- {
870
- id: 4,
871
- title: "Online Communication",
872
- IconComponent: Digital__default["default"],
873
- iconClassName: "text-white",
874
- iconCircleClass: "bg-cyan-700",
875
- category: "digital" /* Digital */,
876
- type: "onlineCommunication" /* OnlineCommunication */
877
- },
878
- {
879
- id: 5,
880
- title: "Cybersecurity",
881
- IconComponent: Digital__default["default"],
882
- iconClassName: "text-white",
883
- iconCircleClass: "bg-cyan-700",
884
- category: "digital" /* Digital */,
885
- type: "cybersecurity" /* Cybersecurity */
886
- }
887
- ],
888
- ["medical" /* Medical */]: [
889
- {
890
- id: 1,
891
- title: "Clinical Skills",
892
- IconComponent: Medical__default["default"],
893
- iconClassName: "text-white",
894
- iconCircleClass: "bg-cyan-700",
895
- category: "medical" /* Medical */,
896
- type: "clinicalSkills" /* ClinicalSkills */
897
- },
898
- {
899
- id: 2,
900
- title: "Anatomy and Physiology",
901
- IconComponent: Medical__default["default"],
902
- iconClassName: "text-white",
903
- iconCircleClass: "bg-cyan-700",
904
- category: "medical" /* Medical */,
905
- type: "anatomyAndPhysiology" /* AnatomyAndPhysiology */
906
- },
907
- {
908
- id: 3,
909
- title: "Patient Care",
910
- IconComponent: Medical__default["default"],
911
- iconClassName: "text-white",
912
- iconCircleClass: "bg-cyan-700",
913
- category: "medical" /* Medical */,
914
- type: "patientCare" /* PatientCare */
915
- },
916
- {
917
- id: 4,
918
- title: "Medical Specialties",
919
- IconComponent: Medical__default["default"],
920
- iconClassName: "text-white",
921
- iconCircleClass: "bg-cyan-700",
922
- category: "medical" /* Medical */,
923
- type: "medicalSpecialties" /* MedicalSpecialties */
924
- },
925
- {
926
- id: 5,
927
- title: "Healthcare Administration",
928
- IconComponent: Medical__default["default"],
929
- iconClassName: "text-white",
930
- iconCircleClass: "bg-cyan-700",
931
- category: "medical" /* Medical */,
932
- type: "healthcareAdministration" /* HealthcareAdministration */
933
- }
934
- ]
935
- };
936
- const SKILLS_TO_SUBSKILLS = {
937
- ["adaptability" /* Adaptability */]: [
938
- {
939
- id: 1,
940
- title: "Flexibility",
941
- type: "flexibility" /* flexibility */
942
- },
943
- {
944
- id: 2,
945
- title: "Resilience",
946
- type: "resilience" /* resilience */
947
- },
948
- {
949
- id: 3,
950
- title: "Problem Solving",
951
- type: "problemSolving" /* problemSolving */
952
- },
953
- {
954
- id: 4,
955
- title: "Resourcefulness",
956
- type: "resourcefulness" /* resourcefulness */
957
- },
958
- {
959
- id: 5,
960
- title: "Stress management",
961
- type: "stressManagement" /* stressManagement */
962
- }
963
- ],
964
- ["perseverance" /* Perseverance */]: [
965
- {
966
- id: 1,
967
- title: "Discipline",
968
- type: "discipline" /* discipline */
969
- },
970
- {
971
- id: 2,
972
- title: "focus",
973
- type: "focus" /* focus */
974
- },
975
- {
976
- id: 3,
977
- title: "Commitment",
978
- type: "commitment" /* commitment */
979
- },
980
- {
981
- id: 4,
982
- title: "Grit",
983
- type: "grit" /* grit */
984
- },
985
- {
986
- id: 5,
987
- title: "Tenacity",
988
- type: "tenacity" /* tenacity */
989
- }
990
- ],
991
- ["mentalToughness" /* MentalToughness */]: [
992
- {
993
- id: 1,
994
- title: "optimism",
995
- type: "optimism" /* optimism */
996
- },
997
- {
998
- id: 2,
999
- title: "Self Confidence",
1000
- type: "selfConfidence" /* selfConfidence */
1001
- },
1002
- {
1003
- id: 3,
1004
- title: "Emotional Regulation",
1005
- type: "emotionalRegulation" /* emotionalRegulation */
1006
- },
1007
- {
1008
- id: 4,
1009
- title: "Growth Mindset",
1010
- type: "growthMindset" /* growthMindset */
1011
- },
1012
- {
1013
- id: 5,
1014
- title: "Positive Self-Talk",
1015
- type: "positiveSelfTalk" /* positiveSelfTalk */
1016
- }
1017
- ],
1018
- ["physicalEndurance" /* PhysicalEndurance */]: [
1019
- {
1020
- id: 1,
1021
- title: "Strength",
1022
- type: "strength" /* strength */
1023
- },
1024
- {
1025
- id: 2,
1026
- title: "Stamina",
1027
- type: "stamina" /* stamina */
1028
- },
1029
- {
1030
- id: 3,
1031
- title: "Cardiovascular Fitness",
1032
- type: "cardiovascularFitness" /* cardiovascularFitness */
1033
- },
1034
- {
1035
- id: 4,
1036
- title: "Pain Tolerance",
1037
- type: "painTolerance" /* painTolerance */
1038
- },
1039
- {
1040
- id: 5,
1041
- title: "Injury Prevention",
1042
- type: "injuryPrevention" /* injuryPrevention */
1043
- }
1044
- ],
1045
- ["lifelongLearning" /* LifelongLearning */]: [
1046
- {
1047
- id: 1,
1048
- title: "Curiosity",
1049
- type: "curiosity" /* curiosity */
1050
- },
1051
- {
1052
- id: 2,
1053
- title: "Open Mindedness",
1054
- type: "openMindedness" /* openMindedness */
1055
- },
1056
- {
1057
- id: 3,
1058
- title: "Critical Thinking",
1059
- type: "critical thinking" /* criticalThinking */
1060
- },
1061
- {
1062
- id: 4,
1063
- title: "Self-directed Learning",
1064
- type: "selfDirectedLearning" /* selfDirectedLearning */
1065
- },
1066
- {
1067
- id: 5,
1068
- title: "Knowledge Retention",
1069
- type: "knowledgeRetention" /* knowledgeRetention */
1070
- }
1071
- ],
1072
- ["mathematics" /* Mathematics */]: [
1073
- {
1074
- id: 1,
1075
- title: "Algebra",
1076
- type: "algebra" /* algebra */
1077
- },
1078
- {
1079
- id: 2,
1080
- title: "Geometry",
1081
- type: "geometry" /* geometry */
1082
- },
1083
- {
1084
- id: 3,
1085
- title: "Trigonometry",
1086
- type: "trigonometry" /* trigonometry */
1087
- },
1088
- {
1089
- id: 4,
1090
- title: "Calculus",
1091
- type: "calculus" /* calculus */
1092
- },
1093
- {
1094
- id: 5,
1095
- title: "Statistics",
1096
- type: "statistics" /* statistics */
1097
- }
1098
- ],
1099
- ["science" /* Science */]: [
1100
- {
1101
- id: 1,
1102
- title: "Physics",
1103
- type: "physics" /* physics */
1104
- },
1105
- {
1106
- id: 2,
1107
- title: "Chemistry",
1108
- type: "chemistry" /* chemistry */
1109
- },
1110
- {
1111
- id: 3,
1112
- title: "Biology",
1113
- type: "biology" /* biology */
1114
- },
1115
- {
1116
- id: 4,
1117
- title: "Earth science",
1118
- type: "earthScience" /* earthScience */
1119
- },
1120
- {
1121
- id: 5,
1122
- title: "Environmental science",
1123
- type: "environmentalScience" /* environmentalScience */
1124
- }
1125
- ],
1126
- ["technology" /* Technology */]: [
1127
- {
1128
- id: 1,
1129
- title: "Coding",
1130
- type: "coding" /* coding */
1131
- },
1132
- {
1133
- id: 2,
1134
- title: "Software Development",
1135
- type: "softwareDevelopment" /* softwareDevelopment */
1136
- },
1137
- {
1138
- id: 3,
1139
- title: "Data Analysis",
1140
- type: "dataAnalysis" /* dataAnalysis */
1141
- },
1142
- {
1143
- id: 4,
1144
- title: "Robotics",
1145
- type: "robotics" /* robotics */
1146
- },
1147
- {
1148
- id: 5,
1149
- title: "Cybersecurity",
1150
- type: "cybersecurity" /* cybersecurity */
1151
- }
1152
- ],
1153
- ["engineering" /* Engineering */]: [
1154
- {
1155
- id: 1,
1156
- title: "Mechanical Engineering",
1157
- type: "mechanicalEngineering" /* mechanicalEngineering */
1158
- },
1159
- {
1160
- id: 2,
1161
- title: "Electrical Engineering",
1162
- type: "electricalEngineering" /* electricalEngineering */
1163
- },
1164
- {
1165
- id: 3,
1166
- title: "Civil Engineering",
1167
- type: "civilEngineering" /* civilEngineering */
1168
- },
1169
- {
1170
- id: 4,
1171
- title: "Chemical Engineering",
1172
- type: "chemicalEngineering" /* chemicalEngineering */
1173
- },
1174
- {
1175
- id: 5,
1176
- title: "Computer Engineering",
1177
- type: "computerEngineering" /* computerEngineering */
1178
- }
1179
- ],
1180
- ["research" /* Research */]: [
1181
- {
1182
- id: 1,
1183
- title: "Hypothesis Development",
1184
- type: "hypothesisDevelopment" /* hypothesisDevelopment */
1185
- },
1186
- {
1187
- id: 2,
1188
- title: "Experimental Design",
1189
- type: "experimentalDesign" /* experimentalDesign */
1190
- },
1191
- {
1192
- id: 3,
1193
- title: "Data Collection",
1194
- type: "dataCollection" /* dataCollection */
1195
- },
1196
- {
1197
- id: 4,
1198
- title: "Analysis",
1199
- type: "analysis" /* analysis */
1200
- },
1201
- {
1202
- id: 5,
1203
- title: "presentation",
1204
- type: "presentation" /* presentation */
1205
- }
1206
- ],
1207
- ["sportSpecificSkills" /* SportSpecificSkills */]: [
1208
- {
1209
- id: 1,
1210
- title: "Ball Handling",
1211
- type: "ballHandling" /* ballHandling */
1212
- },
1213
- {
1214
- id: 2,
1215
- title: "Running Technique",
1216
- type: "runningTechnique" /* runningTechnique */
1217
- },
1218
- {
1219
- id: 3,
1220
- title: "Swing Mechanics",
1221
- type: "swingMechanics" /* swingMechanics */
1222
- },
1223
- {
1224
- id: 4,
1225
- title: "Tackling",
1226
- type: "tackling" /* tackling */
1227
- },
1228
- {
1229
- id: 5,
1230
- title: "Swimming Strokes",
1231
- type: "swimmingStrokes" /* swimmingStrokes */
1232
- }
1233
- ],
1234
- ["strengthAndConditioning" /* StrengthAndConditioning */]: [
1235
- {
1236
- id: 1,
1237
- title: "Weight Lifting",
1238
- type: "weightLifting" /* weightLifting */
1239
- },
1240
- {
1241
- id: 2,
1242
- title: "Speed Training",
1243
- type: "speedTraining" /* speedTraining */
1244
- },
1245
- {
1246
- id: 3,
1247
- title: "Agility",
1248
- type: "agility" /* agility */
1249
- },
1250
- {
1251
- id: 4,
1252
- title: "Flexibility",
1253
- type: "flexibility" /* flexibility */
1254
- },
1255
- {
1256
- id: 5,
1257
- title: "Injury Prevention",
1258
- type: "injuryPrevention" /* injuryPrevention */
1259
- }
1260
- ],
1261
- ["coordination" /* Coordination */]: [
1262
- {
1263
- id: 1,
1264
- title: "Hand Eye Coordination",
1265
- type: "handEyeCoordination" /* handEyeCoordination */
1266
- },
1267
- {
1268
- id: 2,
1269
- title: "Footwork",
1270
- type: "footwork" /* footwork */
1271
- },
1272
- {
1273
- id: 3,
1274
- title: "Balance",
1275
- type: "balance" /* balance */
1276
- },
1277
- {
1278
- id: 4,
1279
- title: "Reaction Time",
1280
- type: "reactionTime" /* reactionTime */
1281
- },
1282
- {
1283
- id: 5,
1284
- title: "Spatial Awareness",
1285
- type: "spatialAwareness" /* spatialAwareness */
1286
- }
1287
- ],
1288
- ["mentalFocus" /* MentalFocus */]: [
1289
- {
1290
- id: 1,
1291
- title: "Visualization",
1292
- type: "visualization" /* visualization */
1293
- },
1294
- {
1295
- id: 2,
1296
- title: "Goal Setting",
1297
- type: "goalSetting" /* goalSetting */
1298
- },
1299
- {
1300
- id: 3,
1301
- title: "Competitiveness",
1302
- type: "competitiveness" /* competitiveness */
1303
- },
1304
- {
1305
- id: 4,
1306
- title: "Resilience",
1307
- type: "resilience" /* resilience */
1308
- },
1309
- {
1310
- id: 5,
1311
- title: "Handling pressure",
1312
- type: "handlingPressure" /* handlingPressure */
1313
- }
1314
- ],
1315
- ["teamwork" /* Teamwork */]: [
1316
- {
1317
- id: 1,
1318
- title: "Communication",
1319
- type: "communication" /* communication */
1320
- },
1321
- {
1322
- id: 2,
1323
- title: "Cooperation",
1324
- type: "cooperation" /* cooperation */
1325
- },
1326
- {
1327
- id: 3,
1328
- title: "Role Understanding",
1329
- type: "roleUnderstanding" /* roleUnderstanding */
1330
- },
1331
- {
1332
- id: 4,
1333
- title: "Strategy",
1334
- type: "strategy" /* strategy */
1335
- },
1336
- {
1337
- id: 5,
1338
- title: "Sportsmanship",
1339
- type: "sportsmanship" /* sportsmanship */
1340
- }
1341
- ],
1342
- ["visualArts" /* VisualArts */]: [
1343
- {
1344
- id: 1,
1345
- title: "Drawing",
1346
- type: "drawing" /* drawing */
1347
- },
1348
- {
1349
- id: 2,
1350
- title: "Painting",
1351
- type: "painting" /* painting */
1352
- },
1353
- {
1354
- id: 3,
1355
- title: "Sculpture",
1356
- type: "sculpture" /* sculpture */
1357
- },
1358
- {
1359
- id: 4,
1360
- title: "Graphic design",
1361
- type: "graphicDesign" /* graphicDesign */
1362
- },
1363
- {
1364
- id: 5,
1365
- title: "Photography",
1366
- type: "photography" /* photography */
1367
- }
1368
- ],
1369
- ["performingArts" /* PerformingArts */]: [
1370
- {
1371
- id: 1,
1372
- title: "Acting",
1373
- type: "acting" /* acting */
1374
- },
1375
- {
1376
- id: 2,
1377
- title: "Dance",
1378
- type: "dance" /* dance */
1379
- },
1380
- {
1381
- id: 3,
1382
- title: "Singing",
1383
- type: "singing" /* singing */
1384
- },
1385
- {
1386
- id: 4,
1387
- title: "Instrumental",
1388
- type: "instrumental" /* instrumental */
1389
- },
1390
- {
1391
- id: 5,
1392
- title: "Theatre Production",
1393
- type: "theaterProduction" /* theaterProduction */
1394
- },
1395
- {
1396
- id: 6,
1397
- title: "Costume Design",
1398
- type: "costumeDesign" /* costumeDesign */
1399
- },
1400
- {
1401
- id: 7,
1402
- title: "Directing",
1403
- type: "directing" /* directing */
1404
- }
1405
- ],
1406
- ["writing" /* Writing */]: [
1407
- {
1408
- id: 1,
1409
- title: "Poetry",
1410
- type: "poetry" /* poetry */
1411
- },
1412
- {
1413
- id: 2,
1414
- title: "Fiction",
1415
- type: "fiction" /* fiction */
1416
- },
1417
- {
1418
- id: 3,
1419
- title: "Non fiction",
1420
- type: "nonfiction" /* nonfiction */
1421
- },
1422
- {
1423
- id: 4,
1424
- title: "Script Writing",
1425
- type: "scriptWriting" /* scriptWriting */
1426
- },
1427
- {
1428
- id: 5,
1429
- title: "Copy Writing",
1430
- type: "copyWriting" /* copyWriting */
1431
- },
1432
- {
1433
- id: 6,
1434
- title: "Journalism",
1435
- type: "journalism" /* journalism */
1436
- }
1437
- ],
1438
- ["design" /* Design */]: [
1439
- {
1440
- id: 1,
1441
- title: "Fashion Design",
1442
- type: "fashionDesign" /* fashionDesign */
1443
- },
1444
- {
1445
- id: 2,
1446
- title: "Interior Design",
1447
- type: "interiorDesign" /* interiorDesign */
1448
- },
1449
- {
1450
- id: 3,
1451
- title: "Web Design",
1452
- type: "webDesign" /* webDesign */
1453
- },
1454
- {
1455
- id: 4,
1456
- title: "Product Design",
1457
- type: "productDesign" /* productDesign */
1458
- },
1459
- {
1460
- id: 5,
1461
- title: "Game Design",
1462
- type: "gameDesign" /* gameDesign */
1463
- }
1464
- ],
1465
- ["ideation" /* Ideation */]: [
1466
- {
1467
- id: 1,
1468
- title: "Brainstorming",
1469
- type: "brainstorming" /* brainstorming */
1470
- },
1471
- {
1472
- id: 2,
1473
- title: "Concept Development",
1474
- type: "concept development" /* conceptDevelopment */
1475
- },
1476
- {
1477
- id: 3,
1478
- title: "Innovation",
1479
- type: "innovation" /* innovation */
1480
- },
1481
- {
1482
- id: 4,
1483
- title: "Problem Solving",
1484
- type: "problemSolving" /* problemSolving */
1485
- },
1486
- {
1487
- id: 5,
1488
- title: "Out of the box thinking",
1489
- type: "outOfTheBoxThinking" /* outOfTheBoxThinking */
1490
- }
1491
- ],
1492
- ["management" /* Management */]: [
1493
- {
1494
- id: 1,
1495
- title: "Leadership",
1496
- type: "leadership" /* leadership */
1497
- },
1498
- {
1499
- id: 2,
1500
- title: "Strategic Planning",
1501
- type: "strategicPlanning" /* strategicPlanning */
1502
- },
1503
- {
1504
- id: 3,
1505
- title: "Team Building",
1506
- type: "teamBuilding" /* teamBuilding */
1507
- },
1508
- {
1509
- id: 4,
1510
- title: "Delegation",
1511
- type: "delegation" /* delegation */
1512
- },
1513
- {
1514
- id: 5,
1515
- title: "Conflict Resolution",
1516
- type: "conflictResolution" /* conflictResolution */
1517
- }
1518
- ],
1519
- ["finance" /* Finance */]: [
1520
- {
1521
- id: 1,
1522
- title: "Accounting",
1523
- type: "accounting" /* accounting */
1524
- },
1525
- {
1526
- id: 2,
1527
- title: "Budgeting",
1528
- type: "budgeting" /* budgeting */
1529
- },
1530
- {
1531
- id: 3,
1532
- title: "Financial Analysis",
1533
- type: "financialAnalysis" /* financialAnalysis */
1534
- },
1535
- {
1536
- id: 4,
1537
- title: "Investment",
1538
- type: "investment" /* investment */
1539
- },
1540
- {
1541
- id: 5,
1542
- title: "Risk Management",
1543
- type: "riskManagement" /* riskManagement */
1544
- }
1545
- ],
1546
- ["marketing" /* Marketing */]: [
1547
- {
1548
- id: 1,
1549
- title: "Market Research",
1550
- type: "marketResearch" /* marketResearch */
1551
- },
1552
- {
1553
- id: 2,
1554
- title: "Branding",
1555
- type: "branding" /* branding */
1556
- },
1557
- {
1558
- id: 3,
1559
- title: "Advertising",
1560
- type: "advertising" /* advertising */
1561
- },
1562
- {
1563
- id: 4,
1564
- title: "Sales",
1565
- type: "sales" /* sales */
1566
- },
1567
- {
1568
- id: 5,
1569
- title: "Customer Relationship Management",
1570
- type: "customerRelationshipManagement" /* customerRelationshipManagement */
1571
- }
1572
- ],
1573
- ["operations" /* Operations */]: [
1574
- {
1575
- id: 1,
1576
- title: "Logistics",
1577
- type: "logistics" /* logistics */
1578
- },
1579
- {
1580
- id: 2,
1581
- title: "Supply Chain Management",
1582
- type: "supplyChainManagement" /* supplyChainManagement */
1583
- },
1584
- {
1585
- id: 3,
1586
- title: "Process Improvement",
1587
- type: "processImprovement" /* processImprovement */
1588
- },
1589
- {
1590
- id: 4,
1591
- title: "Project Management",
1592
- type: "projectManagement" /* projectManagement */
1593
- },
1594
- {
1595
- id: 5,
1596
- title: "Quality Control",
1597
- type: "qualityControl" /* qualityControl */
1598
- }
1599
- ],
1600
- ["entrepreneurship" /* Entrepreneurship */]: [
1601
- {
1602
- id: 1,
1603
- title: "Opportunity Recognition",
1604
- type: "opportunityRecognition" /* opportunityRecognition */
1605
- },
1606
- {
1607
- id: 2,
1608
- title: "Business Planning",
1609
- type: "businessPlanning" /* businessPlanning */
1610
- },
1611
- {
1612
- id: 3,
1613
- title: "Fundraising",
1614
- type: "fundraising" /* fundraising */
1615
- },
1616
- {
1617
- id: 4,
1618
- title: "Networking",
1619
- type: "networking" /* networking */
1620
- },
1621
- {
1622
- id: 5,
1623
- title: "Decision-making",
1624
- type: "decisionMaking" /* decisionMaking */
1625
- }
1626
- ],
1627
- ["construction" /* Construction */]: [
1628
- {
1629
- id: 1,
1630
- title: "Carpentry",
1631
- type: "carpentry" /* carpentry */
1632
- },
1633
- {
1634
- id: 2,
1635
- title: "Electrical Work",
1636
- type: "electricalWork" /* electricalWork */
1637
- },
1638
- {
1639
- id: 3,
1640
- title: "Plumbing",
1641
- type: "plumbing" /* plumbing */
1642
- },
1643
- {
1644
- id: 4,
1645
- title: "Masonry",
1646
- type: "masonry" /* masonry */
1647
- },
1648
- {
1649
- id: 5,
1650
- title: "HVAC",
1651
- type: "HVAC" /* HVAC */
1652
- }
1653
- ],
1654
- ["mechanics" /* Mechanics */]: [
1655
- {
1656
- id: 1,
1657
- title: "Automotive Repair",
1658
- type: "automotiveRepair" /* automotiveRepair */
1659
- },
1660
- {
1661
- id: 2,
1662
- title: "Diesel Engine Repair",
1663
- type: "dieselEngineRepair" /* dieselEngineRepair */
1664
- },
1665
- {
1666
- id: 3,
1667
- title: "Small Engine Repair",
1668
- type: "smallEngineRepair" /* smallEngineRepair */
1669
- },
1670
- {
1671
- id: 4,
1672
- title: "Aircraft Maintenance",
1673
- type: "aircraftMaintenance" /* aircraftMaintenance */
1674
- },
1675
- {
1676
- id: 5,
1677
- title: "Heavy Equipment Operation",
1678
- type: "heavyEquipmentOperation" /* heavyEquipmentOperation */
1679
- }
1680
- ],
1681
- ["manufacturing" /* Manufacturing */]: [
1682
- {
1683
- id: 1,
1684
- title: "Welding",
1685
- type: "welding" /* welding */
1686
- },
1687
- {
1688
- id: 2,
1689
- title: "Machining",
1690
- type: "machining" /* machining */
1691
- },
1692
- {
1693
- id: 3,
1694
- title: "Assembly",
1695
- type: "assembly" /* assembly */
1696
- },
1697
- {
1698
- id: 4,
1699
- title: "Fabrication",
1700
- type: "fabrication" /* fabrication */
1701
- },
1702
- {
1703
- id: 5,
1704
- title: "Quality Assurance",
1705
- type: "qualityAssurance" /* qualityAssurance */
1706
- }
1707
- ],
1708
- ["cosmetology" /* Cosmetology */]: [
1709
- {
1710
- id: 1,
1711
- title: "Hairstyling",
1712
- type: "hairstyling" /* hairstyling */
1713
- },
1714
- {
1715
- id: 2,
1716
- title: "Barbering",
1717
- type: "barbering" /* barbering */
1718
- },
1719
- {
1720
- id: 3,
1721
- title: "Nail Technology",
1722
- type: "nailTechnology" /* nailTechnology */
1723
- },
1724
- {
1725
- id: 4,
1726
- title: "Makeup Artistry",
1727
- type: "makeupArtistry" /* makeupArtistry */
1728
- },
1729
- {
1730
- id: 5,
1731
- title: "Esthetics",
1732
- type: "esthetics" /* esthetics */
1733
- }
1734
- ],
1735
- ["culinaryArts" /* CulinaryArts */]: [
1736
- {
1737
- id: 1,
1738
- title: "Cooking Techniques",
1739
- type: "cookingTechniques" /* cookingTechniques */
1740
- },
1741
- {
1742
- id: 2,
1743
- title: "Baking",
1744
- type: "baking" /* baking */
1745
- },
1746
- {
1747
- id: 3,
1748
- title: "Food Safety",
1749
- type: "foodSafety" /* foodSafety */
1750
- },
1751
- {
1752
- id: 4,
1753
- title: "Menu Planning",
1754
- type: "menuPlanning" /* menuPlanning */
1755
- },
1756
- {
1757
- id: 5,
1758
- title: "Restaurant Management",
1759
- type: "restaurantManagement" /* restaurantManagement */
1760
- }
1761
- ],
1762
- ["history" /* History */]: [
1763
- {
1764
- id: 1,
1765
- title: "Research Methods",
1766
- type: "researchMethods" /* researchMethods */
1767
- },
1768
- {
1769
- id: 2,
1770
- title: "Analysis of Primary Sources",
1771
- type: "analysisOfPrimarySources" /* analysisOfPrimarySources */
1772
- },
1773
- {
1774
- id: 3,
1775
- title: "Chronological Reasoning",
1776
- type: "chronologicalReasoning" /* chronologicalReasoning */
1777
- },
1778
- {
1779
- id: 4,
1780
- title: "Comparative History",
1781
- type: "comparativeHistory" /* comparativeHistory */
1782
- },
1783
- {
1784
- id: 5,
1785
- title: "Historiography",
1786
- type: "historiography" /* historiography */
1787
- }
1788
- ],
1789
- ["psychology" /* Psychology */]: [
1790
- {
1791
- id: 1,
1792
- title: "Cognitive Psychology",
1793
- type: "cognitivePsychology" /* cognitivePsychology */
1794
- },
1795
- {
1796
- id: 2,
1797
- title: "Developmental Psychology",
1798
- type: "developmentalPsychology" /* developmentalPsychology */
1799
- },
1800
- {
1801
- id: 3,
1802
- title: "Social Psychology",
1803
- type: "socialPsychology" /* socialPsychology */
1804
- },
1805
- {
1806
- id: 4,
1807
- title: "Experimental Methods",
1808
- type: "experimentalMethods" /* experimentalMethods */
1809
- },
1810
- {
1811
- id: 5,
1812
- title: "Clinical Psychology",
1813
- type: "clinicalPsychology" /* clinicalPsychology */
1814
- }
1815
- ],
1816
- ["sociology" /* Sociology */]: [
1817
- {
1818
- id: 1,
1819
- title: "Social Inequality",
1820
- type: "socialInequality" /* socialInequality */
1821
- },
1822
- {
1823
- id: 2,
1824
- title: "Social Institutions",
1825
- type: "socialInstitutions" /* socialInstitutions */
1826
- },
1827
- {
1828
- id: 3,
1829
- title: "Research Methods",
1830
- type: "researchMethods" /* researchMethods */
1831
- },
1832
- {
1833
- id: 4,
1834
- title: "Social Change",
1835
- type: "socialChange" /* socialChange */
1836
- },
1837
- {
1838
- id: 5,
1839
- title: "Social Movements",
1840
- type: "socialMovements" /* socialMovements */
1841
- }
1842
- ],
1843
- ["economics" /* Economics */]: [
1844
- {
1845
- id: 1,
1846
- title: "Microeconomics",
1847
- type: "microeconomics" /* microeconomics */
1848
- },
1849
- {
1850
- id: 2,
1851
- title: "Macroeconomics",
1852
- type: "macroeconomics" /* macroeconomics */
1853
- },
1854
- {
1855
- id: 3,
1856
- title: "Econometrics",
1857
- type: "econometrics" /* econometrics */
1858
- },
1859
- {
1860
- id: 4,
1861
- title: "Economic Policy",
1862
- type: "economicPolicy" /* economicPolicy */
1863
- },
1864
- {
1865
- id: 5,
1866
- title: "International Economics",
1867
- type: "internationalEconomics" /* internationalEconomics */
1868
- }
1869
- ],
1870
- ["politicalScience" /* PoliticalScience */]: [
1871
- {
1872
- id: 1,
1873
- title: "Government Systems",
1874
- type: "governmentSystems" /* governmentSystems */
1875
- },
1876
- {
1877
- id: 2,
1878
- title: "Political Theory",
1879
- type: "politicalTheory" /* politicalTheory */
1880
- },
1881
- {
1882
- id: 3,
1883
- title: "International Relations",
1884
- type: "internationalRelations" /* internationalRelations */
1885
- },
1886
- {
1887
- id: 4,
1888
- title: "Comparative Politics",
1889
- type: "comparativePolitics" /* comparativePolitics */
1890
- },
1891
- {
1892
- id: 5,
1893
- title: "Public Policy",
1894
- type: "publicPolicy" /* publicPolicy */
1895
- }
1896
- ],
1897
- ["basicComputerSkills" /* BasicComputerSkills */]: [
1898
- {
1899
- id: 1,
1900
- title: "Typing",
1901
- type: "typing" /* typing */
1902
- },
1903
- {
1904
- id: 2,
1905
- title: "File Management",
1906
- type: "fileManagement" /* fileManagement */
1907
- },
1908
- {
1909
- id: 3,
1910
- title: "Internet Navigation",
1911
- type: "internetNavigation" /* internetNavigation */
1912
- },
1913
- {
1914
- id: 4,
1915
- title: "Email",
1916
- type: "email" /* email */
1917
- },
1918
- {
1919
- id: 5,
1920
- title: "Word Processing",
1921
- type: "wordProcessing" /* wordProcessing */
1922
- }
1923
- ],
1924
- ["informationLiteracy" /* InformationLiteracy */]: [
1925
- {
1926
- id: 1,
1927
- title: "Search Engine Proficiency",
1928
- type: "searchEngineProficiency" /* searchEngineProficiency */
1929
- },
1930
- {
1931
- id: 2,
1932
- title: "evaluating sources",
1933
- type: "evaluatingSources" /* evaluatingSources */
1934
- },
1935
- {
1936
- id: 3,
1937
- title: "Fact Checking",
1938
- type: "factChecking" /* factChecking */
1939
- },
1940
- {
1941
- id: 4,
1942
- title: "Critical Media Analysis",
1943
- type: "criticalMediaAnalysis" /* criticalMediaAnalysis */
1944
- },
1945
- {
1946
- id: 5,
1947
- title: "Understanding Bias",
1948
- type: "understandingBias" /* understandingBias */
1949
- }
1950
- ],
1951
- ["softwareProficiency" /* SoftwareProficiency */]: [
1952
- {
1953
- id: 1,
1954
- title: "Productivity Suites",
1955
- type: "productivitySuites" /* productivitySuites */
1956
- },
1957
- {
1958
- id: 2,
1959
- title: "Specialized Software",
1960
- type: "specializedSoftware" /* specializedSoftware */
1961
- },
1962
- {
1963
- id: 3,
1964
- title: "Design Software",
1965
- type: "designSoftware" /* designSoftware */
1966
- },
1967
- {
1968
- id: 4,
1969
- title: "Programming Basics",
1970
- type: "programmingBasics" /* programmingBasics */
1971
- },
1972
- {
1973
- id: 5,
1974
- title: "Data Visualization Tools",
1975
- type: "dataVisualizationTools" /* dataVisualizationTools */
1976
- }
1977
- ],
1978
- ["onlineCommunication" /* OnlineCommunication */]: [
1979
- {
1980
- id: 1,
1981
- title: "Netiquette",
1982
- type: "netiquette" /* netiquette */
1983
- },
1984
- {
1985
- id: 2,
1986
- title: "Effective Email and Messaging",
1987
- type: "effectiveEmailAndMessaging" /* effectiveEmailAndMessaging */
1988
- },
1989
- {
1990
- id: 3,
1991
- title: "Social Media Platforms",
1992
- type: "socialMediaPlatforms" /* socialMediaPlatforms */
1993
- },
1994
- {
1995
- id: 4,
1996
- title: "Video Conferencing",
1997
- type: "videoConferencing" /* videoConferencing */
1998
- },
1999
- {
2000
- id: 5,
2001
- title: "Collaboration Tools",
2002
- type: "collaborationTools" /* collaborationTools */
2003
- }
2004
- ],
2005
- ["cybersecurity" /* Cybersecurity */]: [
2006
- {
2007
- id: 1,
2008
- title: "Password Management",
2009
- type: "passwordManagement" /* passwordManagement */
2010
- },
2011
- {
2012
- id: 2,
2013
- title: "Phishing Awareness",
2014
- type: "phishingAwareness" /* phishingAwareness */
2015
- },
2016
- {
2017
- id: 3,
2018
- title: "Data Privacy",
2019
- type: "dataPrivacy" /* dataPrivacy */
2020
- },
2021
- {
2022
- id: 4,
2023
- title: "Safe Online Practices",
2024
- type: "safeOnlinePractices" /* safeOnlinePractices */
2025
- },
2026
- {
2027
- id: 5,
2028
- title: "Protecting Devices",
2029
- type: "protectingDevices" /* protectingDevices */
2030
- }
2031
- ],
2032
- ["clinicalSkills" /* ClinicalSkills */]: [
2033
- {
2034
- id: 1,
2035
- title: "Patient Assessment",
2036
- type: "patientAssessment" /* patientAssessment */
2037
- },
2038
- {
2039
- id: 2,
2040
- title: "Diagnostic Procedures",
2041
- type: "diagnosticProcedures" /* diagnosticProcedures */
2042
- },
2043
- {
2044
- id: 3,
2045
- title: "Medication Administration",
2046
- type: "medicationAdministration" /* medicationAdministration */
2047
- },
2048
- {
2049
- id: 4,
2050
- title: "Wound Care",
2051
- type: "woundCare" /* woundCare */
2052
- },
2053
- {
2054
- id: 5,
2055
- title: "Basic Life Support",
2056
- type: "basicLifeSupport" /* basicLifeSupport */
2057
- }
2058
- ],
2059
- ["anatomyAndPhysiology" /* AnatomyAndPhysiology */]: [
2060
- {
2061
- id: 1,
2062
- title: "Body Systems",
2063
- type: "bodySystems" /* bodySystems */
2064
- },
2065
- {
2066
- id: 2,
2067
- title: "Medical Terminology",
2068
- type: "medicalTerminology" /* medicalTerminology */
2069
- },
2070
- {
2071
- id: 3,
2072
- title: "Disease Processes",
2073
- type: "diseaseProcesses" /* diseaseProcesses */
2074
- },
2075
- {
2076
- id: 4,
2077
- title: "Pharmacology",
2078
- type: "pharmacology" /* pharmacology */
2079
- },
2080
- {
2081
- id: 5,
2082
- title: "Pathophysiology",
2083
- type: "pathophysiology" /* pathophysiology */
2084
- }
2085
- ],
2086
- ["patientCare" /* PatientCare */]: [
2087
- {
2088
- id: 1,
2089
- title: "Bedside Manner",
2090
- type: "bedsideManner" /* bedsideManner */
2091
- },
2092
- {
2093
- id: 2,
2094
- title: "Empathy",
2095
- type: "empathy" /* empathy */
2096
- },
2097
- {
2098
- id: 3,
2099
- title: "Communication",
2100
- type: "communication" /* communication */
2101
- },
2102
- {
2103
- id: 4,
2104
- title: "Cultural Sensitivity",
2105
- type: "culturalSensitivity" /* culturalSensitivity */
2106
- },
2107
- {
2108
- id: 5,
2109
- title: "Ethics",
2110
- type: "ethics" /* ethics */
2111
- }
2112
- ],
2113
- ["medicalSpecialties" /* MedicalSpecialties */]: [
2114
- {
2115
- id: 1,
2116
- title: "Surgery",
2117
- type: "surgery" /* surgery */
2118
- },
2119
- {
2120
- id: 2,
2121
- title: "Emergency Medicine",
2122
- type: "emergencyMedicine" /* emergencyMedicine */
2123
- },
2124
- {
2125
- id: 3,
2126
- title: "Pediatrics",
2127
- type: "pediatrics" /* pediatrics */
2128
- },
2129
- {
2130
- id: 4,
2131
- title: "Radiology",
2132
- type: "radiology" /* radiology */
2133
- },
2134
- {
2135
- id: 5,
2136
- title: "Diagnostic Reasoning",
2137
- type: "diagnosticReasoning" /* diagnosticReasoning */
2138
- },
2139
- {
2140
- id: 6,
2141
- title: "Treatment Planning",
2142
- type: "treatmentPlanning" /* treatmentPlanning */
2143
- },
2144
- {
2145
- id: 7,
2146
- title: "Interdisciplinary Collaboration",
2147
- type: "interdisciplinaryCollaboration" /* interdisciplinaryCollaboration */
2148
- }
2149
- ],
2150
- ["healthcareAdministration" /* HealthcareAdministration */]: [
2151
- {
2152
- id: 1,
2153
- title: "Insurance and Billing",
2154
- type: "insuranceAndBilling" /* insuranceAndBilling */
2155
- },
2156
- {
2157
- id: 2,
2158
- title: "Medical Records",
2159
- type: "medicalRecords" /* medicalRecords */
2160
- },
2161
- {
2162
- id: 3,
2163
- title: "Patient Scheduling",
2164
- type: "patientScheduling" /* patientScheduling */
2165
- },
2166
- {
2167
- id: 4,
2168
- title: "Regulatory Compliance",
2169
- type: "regulatoryCompliance" /* regulatoryCompliance */
2170
- },
2171
- {
2172
- id: 5,
2173
- title: "Facility Management",
2174
- type: "facilityManagement" /* facilityManagement */
2175
- }
2176
- ]
2177
- };
2178
-
2179
- const TopLevelSkill = ({ skillSelected, skill, handleExpandSubSkills }) => {
2180
- var _a, _b;
2181
- const { title, IconComponent, type, category } = skill;
2182
- const _category = boostCMSSKillCategories.find((c) => c.type === category);
2183
- const subSkills = (_a = skillSelected.subskills) != null ? _a : [];
2184
- const subSkillsCount = (_b = skillSelected.subskills.length) != null ? _b : 0;
2185
- return /* @__PURE__ */ React__default["default"].createElement("div", {
2186
- className: `flex items-center justify-between w-full mb-4 bg-violet-100 rounded-[20px]`
2187
- }, /* @__PURE__ */ React__default["default"].createElement("div", {
2188
- className: "flex items-center justify-start w-[80%] px-[6px] py-[10px] overflow-hidden"
2189
- }, /* @__PURE__ */ React__default["default"].createElement("div", {
2190
- className: "rounded-full h-[50px] w-[50px]"
2191
- }, /* @__PURE__ */ React__default["default"].createElement("img", {
2192
- src: IconComponent,
2193
- alt: "skill icon",
2194
- className: "w-full h-full"
2195
- })), /* @__PURE__ */ React__default["default"].createElement("div", {
2196
- className: "flex flex-col items-start justify-center ml-2"
2197
- }, /* @__PURE__ */ React__default["default"].createElement("p", {
2198
- className: "font-poppins text-left text-violet-800 font-semibold text-xs"
2199
- }, _category == null ? void 0 : _category.title), /* @__PURE__ */ React__default["default"].createElement("p", {
2200
- className: "text-black font-poppins text-left text-base font-normal"
2201
- }, title))), (subSkills == null ? void 0 : subSkills.length) > 0 && /* @__PURE__ */ React__default["default"].createElement("div", {
2202
- className: "flex items-center justify-center rounded-full bg-white mr-4 h-[40px] w-[40px]"
2203
- }, /* @__PURE__ */ React__default["default"].createElement("button", {
2204
- onClick: () => {
2205
- handleExpandSubSkills == null ? void 0 : handleExpandSubSkills();
2206
- },
2207
- className: "text-black font-bold flex items-center justify-center text-center font-poppins"
2208
- }, "+", subSkillsCount)));
2209
- };
2210
-
2211
- const Subskill = ({ subskillSelected, skill, subSkill }) => {
2212
- const { title, IconComponent, type, category } = skill;
2213
- const _category = boostCMSSKillCategories.find((c) => c.type === category);
2214
- return /* @__PURE__ */ React__default["default"].createElement("div", {
2215
- className: "flex items-center justify-between w-full mb-4 bg-violet-100 rounded-[20px]"
2216
- }, /* @__PURE__ */ React__default["default"].createElement("div", {
2217
- className: "flex items-center justify-start w-[80%] px-[6px] py-[10px] overflow-hidden"
2218
- }, /* @__PURE__ */ React__default["default"].createElement("div", {
2219
- className: "rounded-full h-[50px] w-[50px]"
2220
- }, /* @__PURE__ */ React__default["default"].createElement("img", {
2221
- src: IconComponent,
2222
- alt: "skill icon",
2223
- className: "w-full h-full"
2224
- })), /* @__PURE__ */ React__default["default"].createElement("div", {
2225
- className: "flex flex-col items-start justify-center ml-2"
2226
- }, /* @__PURE__ */ React__default["default"].createElement("p", {
2227
- className: "font-poppins text-left text-violet-800 font-semibold text-xs"
2228
- }, _category == null ? void 0 : _category.title, " / ", skill == null ? void 0 : skill.title), /* @__PURE__ */ React__default["default"].createElement("p", {
2229
- className: "text-black font-poppins text-left text-base font-normal"
2230
- }, subSkill == null ? void 0 : subSkill.title))));
2231
- };
2232
-
2233
- const SelectedSkills = ({ skill, skillSelected }) => {
2234
- const [expandSubSkills, setExandSubSkills] = React.useState(false);
2235
- const handleExpandSubSkills = () => setExandSubSkills(!expandSubSkills);
2236
- return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement(TopLevelSkill, {
2237
- skill,
2238
- skillSelected,
2239
- handleExpandSubSkills
2240
- }), skillSelected && skillSelected.subskills.length > 0 && expandSubSkills && /* @__PURE__ */ React__default["default"].createElement("div", {
2241
- className: "w-full flex items-center justify-end"
2242
- }, /* @__PURE__ */ React__default["default"].createElement("div", {
2243
- className: "w-[90%] flex items-center flex-col"
2244
- }, skillSelected.subskills.map((subSkill, i) => {
2245
- var _a;
2246
- const subskillSelected = (_a = skillSelected == null ? void 0 : skillSelected.subskills) == null ? void 0 : _a.includes(subSkill);
2247
- const _subSkill = SKILLS_TO_SUBSKILLS[skill.type].find((ss) => ss.type === subSkill);
2248
- return /* @__PURE__ */ React__default["default"].createElement(Subskill, {
2249
- key: i,
2250
- skill,
2251
- subSkill: _subSkill,
2252
- subskillSelected
2253
- });
2254
- }))));
2255
- };
2256
-
2257
- const SkillsBox = ({ skills }) => {
2258
- return /* @__PURE__ */ React__default["default"].createElement("div", {
2259
- className: "bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full relative"
2260
- }, /* @__PURE__ */ React__default["default"].createElement("div", {
2261
- className: "flex items-center justify-start"
2262
- }, /* @__PURE__ */ React__default["default"].createElement("div", {
2263
- className: "bg-violet-500 rounded-full flex items-center justify-center ml-2 h-[30px] w-[30px] p-1"
2264
- }, /* @__PURE__ */ React__default["default"].createElement(types.PuzzlePiece, {
2265
- className: "text-white",
2266
- fill: "#fff"
2267
- })), " ", /* @__PURE__ */ React__default["default"].createElement("h3", {
2268
- className: "text-[20px] leading-[20px] text-grayscale-900 ml-2"
2269
- }, "Skills")), skills.length > 0 && /* @__PURE__ */ React__default["default"].createElement("div", {
2270
- className: "ion-padding pt-0 pb-4 flex items-center justify-center flex-col w-full"
2271
- }, skills.map((_skill, index) => {
2272
- boostCMSSKillCategories.find((c) => c.type === _skill.category);
2273
- const skill = CATEGORY_TO_SKILLS[_skill.category].find((s) => s.type === _skill.skill);
2274
- SKILLS_TO_SUBSKILLS[_skill.skill];
2275
- const selectedSkills = skills != null ? skills : [];
2276
- const skillSelected = selectedSkills.find((s) => s.skill === skill.type);
2277
- return /* @__PURE__ */ React__default["default"].createElement(SelectedSkills, {
2278
- key: index,
2279
- skill,
2280
- skillSelected
2281
- });
2282
- })));
2283
- };
2284
-
2285
- const TruncateTextBox = ({
2286
- headerText,
2287
- headerClassName = "",
2288
- text,
2289
- truncateThreshold = 132,
2290
- children,
2291
- className = "truncate-text-box"
2292
- }) => {
2293
- const needsTruncate = (text == null ? void 0 : text.length) > truncateThreshold;
2294
- const [showFullText, setShowFullText] = React.useState(false);
2295
- const truncated = needsTruncate && !showFullText;
2296
- const displayText = truncated ? text.substring(0, truncateThreshold) : text;
2297
- return /* @__PURE__ */ React__default["default"].createElement("div", {
2298
- className: `${className} bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full"`
2299
- }, /* @__PURE__ */ React__default["default"].createElement("h3", {
2300
- className: `${headerClassName} text-[20px] leading-[20px] text-grayscale-900`
2301
- }, headerText), /* @__PURE__ */ React__default["default"].createElement("p", {
2302
- className: "text-[12px] text-grayscale-700 leading-[18px] font-poppins font-[400] mb-0"
2303
- }, displayText, truncated && /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, "...", " ", /* @__PURE__ */ React__default["default"].createElement("button", {
2304
- className: "text-indigo-500 font-[700]",
2305
- onClick: () => setShowFullText(true)
2306
- }, "More")), needsTruncate && showFullText && /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, " ", /* @__PURE__ */ React__default["default"].createElement("button", {
2307
- className: "text-indigo-500 font-[700]",
2308
- onClick: () => setShowFullText(false)
2309
- }, "Close"))), children);
2310
- };
2311
-
2312
- const VerificationRow = ({ verification }) => {
2313
- var _a, _b;
2314
- const [showInfo, setShowInfo] = React.useState(false);
2315
- const statusColor = credential_helpers.getColorForVerificationStatus(verification.status);
2316
- const getIcon = () => {
2317
- switch (verification.status) {
2318
- case VCVerificationPill.VerificationStatusEnum.Success:
2319
- return /* @__PURE__ */ React__default["default"].createElement(CertificateDisplayCard.AcuteCheckmark, null);
2320
- case VCVerificationPill.VerificationStatusEnum.Error:
2321
- return /* @__PURE__ */ React__default["default"].createElement(CertificateDisplayCard.ExclamationPoint, null);
2322
- case VCVerificationPill.VerificationStatusEnum.Failed:
2323
- return /* @__PURE__ */ React__default["default"].createElement(CertificateDisplayCard.X, null);
2324
- }
2325
- };
2326
- let primaryText = verification.check ? `${verification.check}: ${verification.message}` : verification.message;
2327
- if (verification.status === VCVerificationPill.VerificationStatusEnum.Failed) {
2328
- primaryText = (_b = (_a = verification.message) != null ? _a : verification.details) != null ? _b : "";
2329
- }
2330
- primaryText = CertificateDisplayCard.capitalize(primaryText);
2331
- const infoText = "";
2332
- return /* @__PURE__ */ React__default["default"].createElement("div", {
2333
- 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"
2334
- }, /* @__PURE__ */ React__default["default"].createElement("span", {
2335
- className: "font-[700] text-[11px] leading-[16px] uppercase flex items-center gap-[3px] select-none",
2336
- style: { color: statusColor }
2337
- }, getIcon(), verification.status, infoText ), showInfo && infoText && /* @__PURE__ */ React__default["default"].createElement(InfoBox, {
2338
- text: infoText,
2339
- handleClose: () => setShowInfo(false),
2340
- backgroundColor: statusColor
2341
- }), /* @__PURE__ */ React__default["default"].createElement("span", {
2342
- className: "font-[400] text-[14px] leading-[21px] text-grayscale-900"
2343
- }, primaryText));
2344
- };
2345
-
2346
- const VerificationsBox = ({ verificationItems }) => {
2347
- const [showInfo, setShowInfo] = React.useState(false);
2348
- return /* @__PURE__ */ React__default["default"].createElement("div", {
2349
- className: "verifications-box bg-white flex flex-col items-start gap-[10px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full relative"
2350
- }, /* @__PURE__ */ React__default["default"].createElement("h3", {
2351
- className: "text-[20px] leading-[20px] text-grayscale-900"
2352
- }, "Credential Verifications"), /* @__PURE__ */ React__default["default"].createElement("button", {
2353
- className: "absolute top-[17px] right-[17px]",
2354
- onClick: () => setShowInfo(!showInfo)
2355
- }, /* @__PURE__ */ React__default["default"].createElement(CertificateDisplayCard.InfoIcon, {
2356
- color: showInfo ? "#6366F1" : void 0
2357
- })), showInfo && /* @__PURE__ */ React__default["default"].createElement(InfoBox, {
2358
- text: "Credential verifications check the cryptographic proof of digital credentials to ensure their authenticity and accuracy.",
2359
- handleClose: () => setShowInfo(false)
2360
- }), verificationItems.map((verification, index) => /* @__PURE__ */ React__default["default"].createElement(VerificationRow, {
2361
- key: index,
2362
- verification
2363
- })));
2364
- };
2365
-
2366
- const VC2BackFace = ({
2367
- credential,
2368
- verificationItems,
2369
- getFileMetadata,
2370
- getVideoMetadata,
2371
- onMediaAttachmentClick,
2372
- issueHistory,
2373
- showBackButton,
2374
- showFrontFace,
2375
- customDescription,
2376
- customCriteria,
2377
- customSkillsComponent,
2378
- customIssueHistoryComponent,
2379
- enableLightbox
2380
- }) => {
2381
- var _a, _b, _c, _d;
2382
- const expiration = credential.expirationDate ? credential_helpers.format(new Date(credential.expirationDate), "MMM dd, yyyy") : void 0;
2383
- const isExpired = credential.expirationDate && Number(new Date(credential.expirationDate)) < Number(new Date());
2384
- const achievement = "achievement" in credential.credentialSubject ? credential.credentialSubject.achievement : void 0;
2385
- const criteria = (_a = achievement == null ? void 0 : achievement.criteria) == null ? void 0 : _a.narrative;
2386
- const description = achievement == null ? void 0 : achievement.description;
2387
- return /* @__PURE__ */ React__default["default"].createElement("section", {
2388
- className: "vc-back-face flex flex-col gap-[20px] w-full px-[15px]"
2389
- }, showBackButton && /* @__PURE__ */ React__default["default"].createElement("div", {
2390
- className: "w-full"
2391
- }, /* @__PURE__ */ React__default["default"].createElement("button", {
2392
- 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",
2393
- onClick: showFrontFace
2394
- }, /* @__PURE__ */ React__default["default"].createElement(LeftArrow, {
2395
- className: "text-white",
2396
- size: "25"
2397
- }), "Details")), customDescription && /* @__PURE__ */ React__default["default"].createElement(TruncateTextBox, {
2398
- headerText: "About",
2399
- text: description,
2400
- className: "description-box"
2401
- }, customDescription), !customDescription && (description || expiration) && /* @__PURE__ */ React__default["default"].createElement(TruncateTextBox, {
2402
- headerText: "About",
2403
- text: description,
2404
- className: "description-box"
2405
- }, expiration && /* @__PURE__ */ React__default["default"].createElement("p", {
2406
- className: "text-grayscale-800 font-poppins font-[600] text-[12px] leading-[18px] mb-0"
2407
- }, "Expire", isExpired ? "d" : "s", " on ", expiration)), customCriteria && /* @__PURE__ */ React__default["default"].createElement(TruncateTextBox, {
2408
- headerText: "Criteria",
2409
- text: description,
2410
- className: "description-box"
2411
- }, customCriteria), !customCriteria && criteria && /* @__PURE__ */ React__default["default"].createElement(TruncateTextBox, {
2412
- headerText: "Criteria",
2413
- text: criteria,
2414
- className: "criteria-box"
2415
- }), ((_c = (_b = credential.skills) == null ? void 0 : _b.length) != null ? _c : 0) > 0 && (customSkillsComponent ? customSkillsComponent : /* @__PURE__ */ React__default["default"].createElement(SkillsBox, {
2416
- skills: (_d = credential.skills) != null ? _d : []
2417
- })), issueHistory && (issueHistory == null ? void 0 : issueHistory.length) > 0 && /* @__PURE__ */ React__default["default"].createElement(IssueHistoryBox, {
2418
- issueHistory,
2419
- customIssueHistoryComponent
2420
- }), credential.attachments && credential.attachments.length > 0 && /* @__PURE__ */ React__default["default"].createElement(MediaAttachmentsBox, {
2421
- attachments: credential.attachments,
2422
- getFileMetadata,
2423
- getVideoMetadata,
2424
- onMediaAttachmentClick,
2425
- enableLightbox
2426
- }), verificationItems && verificationItems.length > 0 && /* @__PURE__ */ React__default["default"].createElement(VerificationsBox, {
2427
- verificationItems
2428
- }));
2429
- };
2430
-
2431
- const VC2FrontFaceInfo = ({
2432
- issuee,
2433
- issuer,
2434
- subjectDID,
2435
- subjectImageComponent,
2436
- issuerImageComponent,
2437
- customBodyCardComponent,
2438
- createdAt,
2439
- imageUrl,
2440
- customThumbComponent
2441
- }) => {
2442
- const issuerName = CertificateDisplayCard.truncateWithEllipsis(credential_helpers.getNameFromProfile(issuer != null ? issuer : ""), 25);
2443
- const issueeName = CertificateDisplayCard.truncateWithEllipsis(credential_helpers.getNameFromProfile(issuee != null ? issuee : ""), 25);
2444
- const issuerImage = credential_helpers.getImageFromProfile(issuer != null ? issuer : "");
2445
- const issueeImage = credential_helpers.getImageFromProfile(issuee != null ? issuee : "");
2446
- const getImageElement = (imageUrl2, alt, overrideComponent) => {
2447
- if (overrideComponent)
2448
- return overrideComponent;
2449
- return /* @__PURE__ */ React__default["default"].createElement("img", {
2450
- className: "h-full w-full object-cover select-none",
2451
- src: imageUrl2 || DefaultFace__default["default"],
2452
- alt
2453
- });
2454
- };
2455
- const issueeImageEl = getImageElement(issueeImage, "Issuee image", subjectImageComponent);
2456
- const issuerImageEl = getImageElement(issuerImage, "Issuer image", issuerImageComponent);
2457
- return /* @__PURE__ */ React__default["default"].createElement("section", {
2458
- className: "vc-front-face w-full px-[15px] flex flex-col items-center gap-[15px]"
2459
- }, imageUrl && !customThumbComponent && /* @__PURE__ */ React__default["default"].createElement("img", {
2460
- className: "vc-front-image h-[130px] w-[130px] rounded-[10px]",
2461
- src: imageUrl
2462
- }), customThumbComponent && customThumbComponent, /* @__PURE__ */ React__default["default"].createElement("div", {
2463
- className: "vc-issue-info-box bg-white flex flex-col items-center gap-[5px] rounded-[20px] shadow-bottom px-[15px] py-[20px] w-full"
2464
- }, customBodyCardComponent && customBodyCardComponent, !customBodyCardComponent && /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement("h3", {
2465
- className: "text-[27px] flex flex-col text-center leading-[130%] text-grayscale-900 capitalize"
2466
- }, issueeName, subjectDID && /* @__PURE__ */ React__default["default"].createElement("span", {
2467
- className: "text-[12px] text-grayscale-700 leading-[18px] font-poppins font-[400] m-0 p-0 normal-case"
2468
- }, subjectDID)), /* @__PURE__ */ React__default["default"].createElement("div", {
2469
- className: "relative"
2470
- }, /* @__PURE__ */ React__default["default"].createElement("div", {
2471
- className: "vc-issuee-image h-[60px] w-[60px] rounded-full overflow-hidden"
2472
- }, issueeImageEl), /* @__PURE__ */ React__default["default"].createElement("div", {
2473
- className: "vc-issuer-image h-[30px] w-[30px] rounded-full overflow-hidden absolute bottom-[-12px] right-[-12px]"
2474
- }, issuerImageEl)), /* @__PURE__ */ React__default["default"].createElement("div", {
2475
- className: "vc-issue-details mt-[10px] flex flex-col items-center font-montserrat text-[14px] leading-[20px]"
2476
- }, /* @__PURE__ */ React__default["default"].createElement("span", {
2477
- className: "created-at text-grayscale-700"
2478
- }, createdAt), /* @__PURE__ */ React__default["default"].createElement("span", {
2479
- className: "issued-by text-grayscale-900 font-[500]"
2480
- }, "by ", /* @__PURE__ */ React__default["default"].createElement("strong", {
2481
- className: "font-[700]"
2482
- }, issuerName))))));
2483
- };
2484
-
2485
- const VCDisplayCardCategoryType = ({
2486
- categoryType = index.LCCategoryEnum.achievement
2487
- }) => {
2488
- const categoryColor = credential_helpers.getCategoryColor(categoryType);
2489
- return /* @__PURE__ */ React__default["default"].createElement("span", {
2490
- className: `uppercase font-poppins text-[12px] font-[600] leading-[12px] select-none text-${categoryColor}`
2491
- }, categoryType);
2492
- };
2493
-
2494
- const VCDisplayCard2 = ({
2495
- categoryType,
2496
- credential,
2497
- verificationItems,
2498
- issueeOverride,
2499
- issuerOverride,
2500
- subjectDID,
2501
- subjectImageComponent,
2502
- issuerImageComponent,
2503
- verificationInProgress = false,
2504
- handleXClick,
2505
- getFileMetadata,
2506
- getVideoMetadata,
2507
- onMediaAttachmentClick,
2508
- bottomRightIcon,
2509
- customFooterComponent,
2510
- customBodyCardComponent,
2511
- customThumbComponent,
2512
- customCriteria,
2513
- customDescription,
2514
- customIssueHistoryComponent,
2515
- issueHistory,
2516
- titleOverride,
2517
- showBackButton = true,
2518
- enableLightbox,
2519
- customRibbonCategoryComponent,
2520
- customFrontButton,
2521
- trustedAppRegistry,
2522
- hideIssueDate,
2523
- onDotsClick
2524
- }) => {
2525
- var _a, _b, _c, _d, _e, _f;
2526
- console.log("credential", credential);
2527
- const {
2528
- title = "",
2529
- createdAt,
2530
- issuer: _issuer = "",
2531
- issuee: _issuee = "",
2532
- imageUrl
2533
- } = credential_helpers.getInfoFromCredential(credential, "MMM dd, yyyy");
2534
- const issuee = issueeOverride || _issuee;
2535
- const issuer = issuerOverride || _issuer;
2536
- const [isFront, setIsFront] = React.useState(true);
2537
- const [headerHeight, setHeaderHeight] = React.useState(100);
2538
- const [headerWidth, setHeaderWidth] = React.useState(0);
2539
- const headerRef = React.useRef(null);
2540
- React.useLayoutEffect(() => {
2541
- setTimeout(() => {
2542
- var _a2, _b2, _c2, _d2;
2543
- setHeaderHeight((_b2 = (_a2 = headerRef.current) == null ? void 0 : _a2.clientHeight) != null ? _b2 : 100);
2544
- setHeaderWidth((_d2 = (_c2 = headerRef.current) == null ? void 0 : _c2.clientWidth) != null ? _d2 : 0);
2545
- }, 10);
2546
- });
2547
- let worstVerificationStatus = verificationItems.reduce((currentWorst, verification) => {
2548
- switch (currentWorst) {
2549
- case VCVerificationPill.VerificationStatusEnum.Success:
2550
- return verification.status;
2551
- case VCVerificationPill.VerificationStatusEnum.Error:
2552
- return verification.status === VCVerificationPill.VerificationStatusEnum.Failed ? verification.status : currentWorst;
2553
- case VCVerificationPill.VerificationStatusEnum.Failed:
2554
- return currentWorst;
2555
- }
2556
- }, VCVerificationPill.VerificationStatusEnum.Success);
2557
- const statusColor = credential_helpers.getColorForVerificationStatus(worstVerificationStatus);
2558
- const backgroundStyle = {
2559
- backgroundColor: (_a = credential == null ? void 0 : credential.display) == null ? void 0 : _a.backgroundColor,
2560
- backgroundImage: ((_b = credential == null ? void 0 : credential.display) == null ? void 0 : _b.backgroundImage) ? `linear-gradient(to bottom, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.25)), url(${(_c = credential.display) == null ? void 0 : _c.backgroundImage})` : void 0,
2561
- backgroundSize: "cover",
2562
- backgroundPosition: "center",
2563
- backgroundAttachment: "fixed"
2564
- };
2565
- const _title = titleOverride || title;
2566
- if (((_d = credential == null ? void 0 : credential.display) == null ? void 0 : _d.displayType) === "certificate") {
2567
- return /* @__PURE__ */ React__default["default"].createElement(CertificateDisplayCard.CertificateDisplayCard, {
2568
- credential,
2569
- categoryType,
2570
- issueeOverride: issuee,
2571
- issuerOverride: issuer,
2572
- verificationItems,
2573
- getFileMetadata,
2574
- getVideoMetadata,
2575
- onMediaAttachmentClick,
2576
- enableLightbox,
2577
- trustedAppRegistry,
2578
- handleXClick,
2579
- subjectImageComponent,
2580
- issuerImageComponent,
2581
- customBodyCardComponent,
2582
- hideIssueDate,
2583
- onDotsClick
2584
- });
2585
- }
2586
- return /* @__PURE__ */ React__default["default"].createElement(index_es.h, {
2587
- className: "w-full",
2588
- flipKey: isFront
2589
- }, /* @__PURE__ */ React__default["default"].createElement(index_es.y, {
2590
- flipId: "card"
2591
- }, /* @__PURE__ */ React__default["default"].createElement("section", {
2592
- className: "vc-display-card font-mouse flex flex-col items-center border-solid border-[5px] border-white rounded-[30px] overflow-visible z-10 min-h-[800px] max-w-[400px] relative bg-white shadow-3xl"
2593
- }, /* @__PURE__ */ React__default["default"].createElement(RibbonEnd, {
2594
- side: "left",
2595
- className: "absolute left-[-30px] top-[50px] z-0",
2596
- height: "100"
2597
- }), /* @__PURE__ */ React__default["default"].createElement(RibbonEnd, {
2598
- side: "right",
2599
- className: "absolute right-[-30px] top-[50px] z-0",
2600
- height: "100"
2601
- }), /* @__PURE__ */ React__default["default"].createElement("h1", {
2602
- ref: headerRef,
2603
- className: "vc-card-header px-[20px] pb-[10px] pt-[3px] overflow-visible mt-[40px] absolute text-center bg-white border-y-[5px] border-[#EEF2FF] shadow-bottom w-[calc(100%_+_16px)] rounded-t-[8px] z-50",
2604
- style: { wordBreak: "break-word" }
2605
- }, customRibbonCategoryComponent && customRibbonCategoryComponent, !customRibbonCategoryComponent && /* @__PURE__ */ React__default["default"].createElement(VCDisplayCardCategoryType, {
2606
- categoryType
2607
- }), /* @__PURE__ */ React__default["default"].createElement(FitText, {
2608
- text: _title != null ? _title : "",
2609
- maxFontSize: 32,
2610
- minFontSize: 20,
2611
- width: ((headerWidth != null ? headerWidth : 290) - 40).toString(),
2612
- className: "vc-card-header-main-title text-[#18224E] leading-[100%] text-shadow text-[32px]"
2613
- })), isFront && handleXClick && /* @__PURE__ */ React__default["default"].createElement("button", {
2614
- className: "vc-card-x-button absolute top-[-25px] bg-white rounded-full h-[50px] w-[50px] flex items-center justify-center z-50",
2615
- onClick: handleXClick
2616
- }, /* @__PURE__ */ React__default["default"].createElement(RoundedX, null)), /* @__PURE__ */ React__default["default"].createElement("div", {
2617
- className: "relative pt-[114px] vc-card-content-container flex flex-col items-center grow basis-0 min-h-0 h-full w-full rounded-t-[30px] bg-[#353E64] rounded-b-[200px]",
2618
- style: backgroundStyle
2619
- }, /* @__PURE__ */ React__default["default"].createElement(index_es.y, {
2620
- flipId: "scroll-container"
2621
- }, /* @__PURE__ */ React__default["default"].createElement("div", {
2622
- className: "vc-card-content-scroll-container w-full pt-[20px] min-h-full flex flex-col justify-start items-center rounded-t-[30px] rounded-b-[200px] overflow-y-auto scrollbar-hide pb-[50px]"
2623
- }, isFront && /* @__PURE__ */ React__default["default"].createElement(index_es.y, {
2624
- flipId: "face"
2625
- }, /* @__PURE__ */ React__default["default"].createElement(VC2FrontFaceInfo, {
2626
- issuee,
2627
- subjectDID,
2628
- issuer,
2629
- title,
2630
- subjectImageComponent,
2631
- issuerImageComponent,
2632
- customBodyCardComponent,
2633
- customThumbComponent,
2634
- createdAt: createdAt != null ? createdAt : "",
2635
- imageUrl
2636
- })), !isFront && /* @__PURE__ */ React__default["default"].createElement(index_es.y, {
2637
- flipId: "face"
2638
- }, /* @__PURE__ */ React__default["default"].createElement(VC2BackFace, {
2639
- credential,
2640
- verificationItems,
2641
- issueHistory,
2642
- getFileMetadata,
2643
- getVideoMetadata,
2644
- onMediaAttachmentClick,
2645
- showBackButton,
2646
- showFrontFace: () => setIsFront(true),
2647
- customDescription,
2648
- customCriteria,
2649
- customIssueHistoryComponent,
2650
- enableLightbox
2651
- })), /* @__PURE__ */ React__default["default"].createElement(CertificateDisplayCard.VCDisplayCardSkillsCount, {
2652
- skills: credential == null ? void 0 : credential.skills
2653
- }), isFront && customFrontButton, isFront && !customFrontButton && /* @__PURE__ */ React__default["default"].createElement(index_es.y, {
2654
- flipId: "details-back-button"
2655
- }, /* @__PURE__ */ React__default["default"].createElement("button", {
2656
- type: "button",
2657
- className: "vc-toggle-side-button text-white shadow-bottom bg-[#00000099] px-[30px] py-[8px] rounded-[40px] text-[28px] tracking-[0.75px] uppercase leading-[28px] mt-[40px] w-fit select-none",
2658
- onClick: () => setIsFront(!isFront)
2659
- }, "Details")), !isFront && /* @__PURE__ */ React__default["default"].createElement(index_es.y, {
2660
- flipId: "details-back-button"
2661
- }, /* @__PURE__ */ React__default["default"].createElement("button", {
2662
- type: "button",
2663
- className: "vc-toggle-side-button text-white shadow-bottom bg-[#00000099] px-[30px] py-[8px] rounded-[40px] text-[28px] tracking-[0.75px] uppercase leading-[28px] mt-[40px] w-fit select-none",
2664
- onClick: () => setIsFront(!isFront)
2665
- }, /* @__PURE__ */ React__default["default"].createElement("span", {
2666
- className: "flex gap-[10px] items-center"
2667
- }, /* @__PURE__ */ React__default["default"].createElement(LeftArrow, null), "Back")))))), /* @__PURE__ */ React__default["default"].createElement("footer", {
2668
- className: "vc-card-footer w-full flex justify-between p-[5px] mt-[5px]"
2669
- }, customFooterComponent && customFooterComponent, !customFooterComponent && /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, worstVerificationStatus === VCVerificationPill.VerificationStatusEnum.Failed ? /* @__PURE__ */ React__default["default"].createElement("div", {
2670
- className: "w-[40px]",
2671
- role: "presentation"
2672
- }) : /* @__PURE__ */ React__default["default"].createElement(VCVerificationCheck.VCVerificationCheckWithSpinner, {
2673
- spinnerSize: "40px",
2674
- size: "32px",
2675
- loading: verificationInProgress
2676
- }), /* @__PURE__ */ React__default["default"].createElement("div", {
2677
- className: "vc-footer-text font-montserrat flex flex-col items-center justify-center text-[12px] font-[700] leading-[15px] select-none"
2678
- }, /* @__PURE__ */ React__default["default"].createElement("span", {
2679
- className: "text-[#4F4F4F]"
2680
- }, "Verified Credential"), /* @__PURE__ */ React__default["default"].createElement("span", {
2681
- className: "vc-footer-status uppercase",
2682
- style: { color: statusColor }
2683
- }, worstVerificationStatus)), /* @__PURE__ */ React__default["default"].createElement("div", {
2684
- className: "vc-footer-icon rounded-[20px] h-[40px] w-[40px] flex items-center justify-center overflow-hidden",
2685
- style: { backgroundColor: (_e = bottomRightIcon == null ? void 0 : bottomRightIcon.color) != null ? _e : "#6366F1" }
2686
- }, (_f = bottomRightIcon == null ? void 0 : bottomRightIcon.image) != null ? _f : /* @__PURE__ */ React__default["default"].createElement(AwardRibbon.AwardRibbon, null)))))));
2687
- };
2688
-
2689
- exports.SelectedSkills = SelectedSkills;
2690
- exports.VCDisplayCard2 = VCDisplayCard2;
2691
- //# sourceMappingURL=VCDisplayCard2-c88df451.js.map