You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ExpandedCard.jsx 5.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. import React, { useContext, useEffect } from 'react';
  2. import PropTypes from 'prop-types';
  3. import TriangleButton from '../shared/TriangleButton';
  4. import { useNavigate } from 'react-router-dom';
  5. import net from './../../assets/icons/net.svg';
  6. import { m } from 'framer-motion';
  7. import useClickOutside from '../../hooks/useClickOutside';
  8. import { UIContext } from '../../context';
  9. import { ref } from 'yup';
  10. const ExpandedCard = ({ card, setExpanded, setExpandedCard, forwarderdRef }) => {
  11. const linkTo = useNavigate();
  12. const handleNavigate = (tab, position) => {
  13. linkTo('/contact', { tab: { tab }, position: { position } });
  14. };
  15. console.log(card);
  16. return (
  17. <div
  18. ref={forwarderdRef}
  19. className={
  20. 'dark:text-white card-no-hover w-full h-fit shadow-md rounded-md px-12 lg:px-32 py-12 lg:py-16'
  21. }
  22. >
  23. {card.templateFlag === 1 && (
  24. <div className="flex flex-col items-start justify-center text-left">
  25. <div className="flex flex-row items-center justify-start">
  26. <div className="mr-4 lg:hidden">
  27. <TriangleButton
  28. onClick={() => {
  29. setExpanded(false);
  30. setExpandedCard({});
  31. }}
  32. direction={'left'}
  33. />
  34. </div>
  35. <div className="hidden lg:block absolute top-20 md:top-[15rem] left-12">
  36. <TriangleButton
  37. onClick={() => {
  38. setExpanded(false);
  39. setExpandedCard({});
  40. }}
  41. direction={'left'}
  42. />
  43. </div>
  44. <img
  45. src={net}
  46. className="ml-auto mr-auto block w-[70px] bg-baby-blue text-dark-gray"
  47. />
  48. <h3 className="ml-6 w-full font-semibold text-2xl">{card.role}</h3>
  49. </div>
  50. <p className="mt-6 text-sm">{card.extended.shortDetails}</p>
  51. <h4 className="mt-6 font-semibold text-lg">Key Responsibilities:</h4>
  52. <ul>
  53. {card &&
  54. card.extended.key &&
  55. card.extended.key.map((item, index) => (
  56. <li className="list-disc ml-6" key={index}>
  57. {item}
  58. </li>
  59. ))}
  60. </ul>
  61. <br />
  62. <h4 className="mt-6 font-semibold text-lg">Requirements:</h4>
  63. <ul>
  64. {card &&
  65. card.extended.requirements &&
  66. card.extended.requirements.map((item, index) => (
  67. <li className="list-disc ml-6" key={index}>
  68. {item}
  69. </li>
  70. ))}
  71. </ul>
  72. <br />
  73. <h4 className="mt-6 font-semibold text-lg">What We Offer:</h4>
  74. <ul>
  75. {
  76. card.extended.offer.map((item, index) => (
  77. <li className="list-disc ml-6" key={index}>
  78. {item}
  79. </li>
  80. ))}
  81. </ul>
  82. <br />
  83. <div className="flex flex-row w-full items-center justify-end">
  84. <a
  85. href="/contact"
  86. className="btn btn_primary mt-8 transition-all hover:transition-all"
  87. onClick={handleNavigate(false, card.nugget)}
  88. >
  89. Apply
  90. </a>
  91. </div>
  92. </div>
  93. )}
  94. {card.templateFlag === 2 && (
  95. <div className="flex flex-col items-start justify-center text-left">
  96. <div className="flex flex-row items-center justify-start">
  97. <div className="mr-4 lg:hidden">
  98. <TriangleButton
  99. onClick={() => {
  100. setExpanded(false);
  101. setExpandedCard({});
  102. }}
  103. direction={'left'}
  104. />
  105. </div>
  106. <div className="hidden lg:block absolute top-20 left-12">
  107. <TriangleButton
  108. onClick={() => {
  109. setExpanded(false);
  110. setExpandedCard({});
  111. }}
  112. direction={'left'}
  113. />
  114. </div>
  115. <img
  116. src={net}
  117. className="ml-auto mr-auto block w-[70px] bg-baby-blue text-dark-gray"
  118. />
  119. <h3 className="ml-6 w-full font-semibold text-2xl">{card.role}</h3>
  120. </div>
  121. <p className="mt-6 text-sm">{card.extended.paragraph}</p>
  122. <h4 className="mt-6 font-semibold text-lg">What We Offer:</h4>
  123. <ul>
  124. {card.extended.offer.map((item, index) => (
  125. <li className="list-disc ml-6" key={index}>
  126. {item}
  127. </li>
  128. ))}
  129. </ul>
  130. <br />
  131. <h4 className="mt-6 font-semibold text-lg">Requirements:</h4>
  132. <ul>
  133. {card.extended.requirements.map((item, index) => (
  134. <li className="list-disc ml-6" key={index}>
  135. {item}
  136. </li>
  137. ))}
  138. </ul>
  139. <br />
  140. <h4 className="mt-6 font-semibold text-lg">
  141. Our selection process has the following steps:
  142. </h4>
  143. <ul>
  144. {card.extended.selectionProcess.map((item, index) => (
  145. <li className="list-decimal ml-6" key={index}>
  146. {item}
  147. </li>
  148. ))}
  149. </ul>
  150. <br />
  151. <p className="mt-6 text-sm">{card.extended.conslusionParagraph}</p>
  152. <br />
  153. <div className="flex flex-row w-full items-center justify-end">
  154. <a
  155. href="/contact"
  156. className="btn btn_primary mt-8 transition-all hover:transition-all"
  157. onClick={handleNavigate(false, '.Net')}
  158. >
  159. Apply
  160. </a>
  161. </div>
  162. </div>
  163. )}
  164. </div>
  165. );
  166. };
  167. ExpandedCard.propTypes = {};
  168. export default ExpandedCard;