@learncard/react 2.6.57 → 2.6.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/cjs/{AchievementCard-6e875eff.js → AchievementCard-a52e4f25.js} +3 -3
  2. package/dist/cjs/{AchievementCard-6e875eff.js.map → AchievementCard-a52e4f25.js.map} +1 -1
  3. package/dist/cjs/{BoostGenericCard-78173946.js → BoostGenericCard-7426cbea.js} +2 -2
  4. package/dist/cjs/{BoostGenericCard-78173946.js.map → BoostGenericCard-7426cbea.js.map} +1 -1
  5. package/dist/cjs/{BoostSmallCard-a18bc6b0.js → BoostSmallCard-0b3a3dd8.js} +2 -2
  6. package/dist/cjs/{BoostSmallCard-a18bc6b0.js.map → BoostSmallCard-0b3a3dd8.js.map} +1 -1
  7. package/dist/cjs/{CertificateDisplayCard-405573a7.js → CertificateDisplayCard-d93af598.js} +1885 -18
  8. package/dist/cjs/CertificateDisplayCard-d93af598.js.map +1 -0
  9. package/dist/cjs/{CircleCheckButton-533f6909.js → CircleCheckButton-abff235d.js} +2 -2
  10. package/dist/cjs/{CircleCheckButton-533f6909.js.map → CircleCheckButton-abff235d.js.map} +1 -1
  11. package/dist/cjs/{CircleIcon-4b16b093.js → CircleIcon-dace003c.js} +2 -2
  12. package/dist/cjs/{CircleIcon-4b16b093.js.map → CircleIcon-dace003c.js.map} +1 -1
  13. package/dist/cjs/{CourseVerticalCard-192f2b04.js → CourseVerticalCard-2958d043.js} +3 -3
  14. package/dist/cjs/{CourseVerticalCard-192f2b04.js.map → CourseVerticalCard-2958d043.js.map} +1 -1
  15. package/dist/cjs/{GenericCard-3805a866.js → GenericCard-6f8770f5.js} +2 -2
  16. package/dist/cjs/{GenericCard-3805a866.js.map → GenericCard-6f8770f5.js.map} +1 -1
  17. package/dist/cjs/{RoundedPill-e30b61f8.js → RoundedPill-4bce9068.js} +2 -2
  18. package/dist/cjs/{RoundedPill-e30b61f8.js.map → RoundedPill-4bce9068.js.map} +1 -1
  19. package/dist/cjs/{RoundedSquare-71308a4a.js → RoundedSquare-caa49231.js} +3 -3
  20. package/dist/cjs/{RoundedSquare-71308a4a.js.map → RoundedSquare-caa49231.js.map} +1 -1
  21. package/dist/cjs/{SkillTabCard-16609965.js → SkillTabCard-2be1570e.js} +3 -3
  22. package/dist/cjs/{SkillTabCard-16609965.js.map → SkillTabCard-2be1570e.js.map} +1 -1
  23. package/dist/cjs/{VCCard-397ba465.js → VCCard-a698fb77.js} +4 -4
  24. package/dist/cjs/{VCCard-397ba465.js.map → VCCard-a698fb77.js.map} +1 -1
  25. package/dist/cjs/{VCDisplayBackFace-3cc78d41.js → VCDisplayBackFace-91668901.js} +2 -2
  26. package/dist/cjs/{VCDisplayBackFace-3cc78d41.js.map → VCDisplayBackFace-91668901.js.map} +1 -1
  27. package/dist/cjs/{VCDisplayCard-0f7226d7.js → VCDisplayCard-d5fcddb7.js} +3 -3
  28. package/dist/cjs/{VCDisplayCard-0f7226d7.js.map → VCDisplayCard-d5fcddb7.js.map} +1 -1
  29. package/dist/cjs/VCDisplayCard2-f99e286c.js +835 -0
  30. package/dist/cjs/VCDisplayCard2-f99e286c.js.map +1 -0
  31. package/dist/cjs/{credential.helpers-f1087746.js → credential.helpers-a3c3d503.js} +2 -2
  32. package/dist/cjs/{credential.helpers-f1087746.js.map → credential.helpers-a3c3d503.js.map} +1 -1
  33. package/dist/cjs/{icons-9d37a8b8.js → icons-9878f84c.js} +5 -4
  34. package/dist/cjs/icons-9878f84c.js.map +1 -0
  35. package/dist/cjs/idIcon.svg +4 -0
  36. package/dist/cjs/index.js +20 -19
  37. package/dist/cjs/index.js.map +1 -1
  38. package/dist/cjs/index10.js +5 -4
  39. package/dist/cjs/index10.js.map +1 -1
  40. package/dist/cjs/index12.js +5 -4
  41. package/dist/cjs/index12.js.map +1 -1
  42. package/dist/cjs/index13.js +20 -19
  43. package/dist/cjs/index13.js.map +1 -1
  44. package/dist/cjs/index2.js +5 -4
  45. package/dist/cjs/index2.js.map +1 -1
  46. package/dist/cjs/index27.js +3 -2
  47. package/dist/cjs/index27.js.map +1 -1
  48. package/dist/cjs/index28.js +4 -3
  49. package/dist/cjs/index28.js.map +1 -1
  50. package/dist/cjs/index3.js +5 -4
  51. package/dist/cjs/index3.js.map +1 -1
  52. package/dist/cjs/index32.js +5 -4
  53. package/dist/cjs/index32.js.map +1 -1
  54. package/dist/cjs/index36.js +8 -7
  55. package/dist/cjs/index36.js.map +1 -1
  56. package/dist/cjs/index37.js +4 -3
  57. package/dist/cjs/index37.js.map +1 -1
  58. package/dist/cjs/index38.js +5 -4
  59. package/dist/cjs/index38.js.map +1 -1
  60. package/dist/cjs/index39.js +11 -10
  61. package/dist/cjs/index39.js.map +1 -1
  62. package/dist/cjs/index4.js +5 -4
  63. package/dist/cjs/index4.js.map +1 -1
  64. package/dist/cjs/index40.js +2 -1
  65. package/dist/cjs/index40.js.map +1 -1
  66. package/dist/cjs/index6.js +4 -3
  67. package/dist/cjs/index6.js.map +1 -1
  68. package/dist/cjs/index7.js +4 -3
  69. package/dist/cjs/index7.js.map +1 -1
  70. package/dist/cjs/index8.js +3 -2
  71. package/dist/cjs/index8.js.map +1 -1
  72. package/dist/esm/{AchievementCard-33b363b2.js → AchievementCard-e83fb98a.js} +3 -3
  73. package/dist/esm/{AchievementCard-33b363b2.js.map → AchievementCard-e83fb98a.js.map} +1 -1
  74. package/dist/esm/{BoostGenericCard-e60fdb61.js → BoostGenericCard-d691d173.js} +2 -2
  75. package/dist/esm/{BoostGenericCard-e60fdb61.js.map → BoostGenericCard-d691d173.js.map} +1 -1
  76. package/dist/esm/{BoostSmallCard-5c843cd0.js → BoostSmallCard-ece551a1.js} +2 -2
  77. package/dist/esm/{BoostSmallCard-5c843cd0.js.map → BoostSmallCard-ece551a1.js.map} +1 -1
  78. package/dist/esm/{CertificateDisplayCard-e0fb8f15.js → CertificateDisplayCard-5fbb5a9d.js} +1875 -19
  79. package/dist/esm/CertificateDisplayCard-5fbb5a9d.js.map +1 -0
  80. package/dist/esm/{CircleCheckButton-fca4676f.js → CircleCheckButton-aba0f804.js} +2 -2
  81. package/dist/esm/{CircleCheckButton-fca4676f.js.map → CircleCheckButton-aba0f804.js.map} +1 -1
  82. package/dist/esm/{CircleIcon-69ee6f6e.js → CircleIcon-b45511e1.js} +2 -2
  83. package/dist/esm/{CircleIcon-69ee6f6e.js.map → CircleIcon-b45511e1.js.map} +1 -1
  84. package/dist/esm/{CourseVerticalCard-78de56d0.js → CourseVerticalCard-da219627.js} +3 -3
  85. package/dist/esm/{CourseVerticalCard-78de56d0.js.map → CourseVerticalCard-da219627.js.map} +1 -1
  86. package/dist/esm/{GenericCard-dfa82091.js → GenericCard-a4de814a.js} +2 -2
  87. package/dist/esm/{GenericCard-dfa82091.js.map → GenericCard-a4de814a.js.map} +1 -1
  88. package/dist/esm/{RoundedPill-fb5c7ccb.js → RoundedPill-3f27d4ac.js} +2 -2
  89. package/dist/esm/{RoundedPill-fb5c7ccb.js.map → RoundedPill-3f27d4ac.js.map} +1 -1
  90. package/dist/esm/{RoundedSquare-0b89fe31.js → RoundedSquare-80a5d236.js} +3 -3
  91. package/dist/esm/{RoundedSquare-0b89fe31.js.map → RoundedSquare-80a5d236.js.map} +1 -1
  92. package/dist/esm/{SkillTabCard-ddf067a7.js → SkillTabCard-3670457e.js} +3 -3
  93. package/dist/esm/{SkillTabCard-ddf067a7.js.map → SkillTabCard-3670457e.js.map} +1 -1
  94. package/dist/esm/{VCCard-138e9793.js → VCCard-387f2a5d.js} +4 -4
  95. package/dist/esm/{VCCard-138e9793.js.map → VCCard-387f2a5d.js.map} +1 -1
  96. package/dist/esm/{VCDisplayBackFace-07fcf920.js → VCDisplayBackFace-b2024cfb.js} +2 -2
  97. package/dist/esm/{VCDisplayBackFace-07fcf920.js.map → VCDisplayBackFace-b2024cfb.js.map} +1 -1
  98. package/dist/esm/{VCDisplayCard-c7aee3a6.js → VCDisplayCard-69585484.js} +3 -3
  99. package/dist/esm/{VCDisplayCard-c7aee3a6.js.map → VCDisplayCard-69585484.js.map} +1 -1
  100. package/dist/esm/VCDisplayCard2-1af6a4c1.js +828 -0
  101. package/dist/esm/VCDisplayCard2-1af6a4c1.js.map +1 -0
  102. package/dist/esm/{credential.helpers-56ed8ed6.js → credential.helpers-96c9bb51.js} +2 -2
  103. package/dist/esm/{credential.helpers-56ed8ed6.js.map → credential.helpers-96c9bb51.js.map} +1 -1
  104. package/dist/esm/{icons-25993244.js → icons-6ed3416f.js} +4 -3
  105. package/dist/esm/icons-6ed3416f.js.map +1 -0
  106. package/dist/esm/idIcon.svg +4 -0
  107. package/dist/esm/index.js +19 -18
  108. package/dist/esm/index.js.map +1 -1
  109. package/dist/esm/index10.js +5 -4
  110. package/dist/esm/index10.js.map +1 -1
  111. package/dist/esm/index12.js +5 -4
  112. package/dist/esm/index12.js.map +1 -1
  113. package/dist/esm/index13.js +19 -18
  114. package/dist/esm/index13.js.map +1 -1
  115. package/dist/esm/index2.js +5 -4
  116. package/dist/esm/index2.js.map +1 -1
  117. package/dist/esm/index27.js +3 -2
  118. package/dist/esm/index27.js.map +1 -1
  119. package/dist/esm/index28.js +4 -3
  120. package/dist/esm/index28.js.map +1 -1
  121. package/dist/esm/index3.js +5 -4
  122. package/dist/esm/index3.js.map +1 -1
  123. package/dist/esm/index32.js +5 -4
  124. package/dist/esm/index32.js.map +1 -1
  125. package/dist/esm/index36.js +8 -7
  126. package/dist/esm/index36.js.map +1 -1
  127. package/dist/esm/index37.js +4 -3
  128. package/dist/esm/index37.js.map +1 -1
  129. package/dist/esm/index38.js +5 -4
  130. package/dist/esm/index38.js.map +1 -1
  131. package/dist/esm/index39.js +9 -8
  132. package/dist/esm/index39.js.map +1 -1
  133. package/dist/esm/index4.js +5 -4
  134. package/dist/esm/index4.js.map +1 -1
  135. package/dist/esm/index40.js +2 -1
  136. package/dist/esm/index40.js.map +1 -1
  137. package/dist/esm/index6.js +4 -3
  138. package/dist/esm/index6.js.map +1 -1
  139. package/dist/esm/index7.js +4 -3
  140. package/dist/esm/index7.js.map +1 -1
  141. package/dist/esm/index8.js +3 -2
  142. package/dist/esm/index8.js.map +1 -1
  143. package/dist/index.d.ts +3 -0
  144. package/package.json +1 -1
  145. package/dist/cjs/CertificateDisplayCard-405573a7.js.map +0 -1
  146. package/dist/cjs/VCDisplayCard2-594288c0.js +0 -2691
  147. package/dist/cjs/VCDisplayCard2-594288c0.js.map +0 -1
  148. package/dist/cjs/icons-9d37a8b8.js.map +0 -1
  149. package/dist/esm/CertificateDisplayCard-e0fb8f15.js.map +0 -1
  150. package/dist/esm/VCDisplayCard2-c6f9f62e.js +0 -2674
  151. package/dist/esm/VCDisplayCard2-c6f9f62e.js.map +0 -1
  152. package/dist/esm/icons-25993244.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-f1087746.js');
8
- var CertificateDisplayCard = require('./CertificateDisplayCard-405573a7.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-594288c0.js.map