App.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. import './assets/scss/_page-styles/companies-list.scss';
  2. const HeaderLink = ({linkHref, children}) =>
  3. <li className="header__nav-item">
  4. <a className="header__nav-link"
  5. href={linkHref}
  6. >{children}</a>
  7. </li>
  8. const FooterLink = ({linkHref, children}) =>
  9. <li className="footer__menu-item">
  10. <a className="footer__link"
  11. href={linkHref}
  12. >{children}</a>
  13. </li>
  14. const Header = () =>
  15. <header className="header">
  16. <div className="wrapper header__wrapper">
  17. <a className="header__logo-link"
  18. href="/"
  19. >
  20. <img alt="Site Logo"
  21. src="/images/companies/logo.svg"
  22. />
  23. </a>
  24. <nav className="header__nav">
  25. <ul className="header__nav-items">
  26. <HeaderLink linkHref="/about">Про проект</HeaderLink>
  27. <HeaderLink linkHref="/faq">FAQ</HeaderLink>
  28. </ul>
  29. </nav>
  30. <label className="visually-hidden"
  31. htmlFor="language-select"
  32. >Оберіть мову</label>
  33. <div className="custom-select header__lang-select">
  34. <select id="language-select"
  35. className="custom-select__select"
  36. >
  37. <option value="uk">UA</option>
  38. <option value="en">EN</option>
  39. <option value="ru">RU</option>
  40. <option value="am">AM</option>
  41. </select>
  42. </div>
  43. <button className="hamburger hamburger--spin header__hamburger js-hamburger"
  44. type="button"
  45. aria-expanded="false"
  46. aria-label="Open the menu"
  47. >
  48. <span className="hamburger-box">
  49. <span className="hamburger-inner"></span>
  50. </span>
  51. </button>
  52. </div>
  53. </header>
  54. const Footer = () =>
  55. <footer className="footer">
  56. <div className="wrapper footer__wrapper">
  57. <ul className="footer__menu">
  58. <FooterLink linkHref="/">Головна</FooterLink>
  59. <FooterLink linkHref="/about">Про проект</FooterLink>
  60. <FooterLink linkHref="/faq">FAQ</FooterLink>
  61. <FooterLink linkHref="/discussions">Обговорення</FooterLink>
  62. <FooterLink linkHref="/alternatives">Альтернативи</FooterLink>
  63. <FooterLink linkHref="/roadmap">Технічні плани по проекту або Roadmap</FooterLink>
  64. </ul>
  65. <small className="footer__copyright">&copy; DevSpace 2020</small>
  66. </div>
  67. </footer>
  68. const Search = () =>
  69. <div className="search companies__search">
  70. <label className="visually-hidden"
  71. htmlFor="company-search"
  72. >Пошук компанії по назві</label>
  73. <button className="custom-btn custom-btn--blue search__button" type="button">
  74. <svg className="custom-icon search__button-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" xmlSpace="preserve"><path fillRule="evenodd" clipRule="evenodd" d="M321.9 374.7c-33.1 22.8-73.2 36.2-116.4 36.2C92 410.9 0 318.9 0 205.4 0 92 92 0 205.4 0c113.5 0 205.4 92 205.4 205.4 0 43.2-13.4 83.4-36.2 116.4L512 459.2 459.2 512 321.9 374.7zm-116.4-38.5c72.2 0 130.7-58.5 130.7-130.7 0-72.2-58.5-130.7-130.7-130.7-72.2 0-130.7 58.5-130.7 130.7-.1 72.1 58.5 130.7 130.7 130.7z"/></svg>
  75. <span className="search__button-text">Знайти компанію</span>
  76. </button>
  77. <input id="company-search"
  78. className="search__input"
  79. type="text"
  80. placeholder="Назва компанії"
  81. />
  82. </div>
  83. const FlagIcon = ({countryCode}) =>
  84. <img className="custom-icon company-preview__country-flag"
  85. alt={`flag ${countryCode} icon`}
  86. src={`/images/flags/${countryCode}.svg`}
  87. />
  88. const CompanyCard = ({
  89. companyLogo,
  90. logoAlt,
  91. companyHref = "#",
  92. companyName,
  93. companyType = "Аутсорс компанія",
  94. companySiteUrl,
  95. children
  96. }) =>
  97. <div className="companies__list-item company-preview">
  98. <figure className="company-preview__logo-overlay">
  99. <img className="company-preview__logo"
  100. src={`/images/logos/${companyLogo}`}
  101. alt={logoAlt}
  102. />
  103. </figure>
  104. <h2 className="company-preview__company-name">
  105. {/* eslint-disable-next-line */}
  106. <a className="company-preview__company-link" href={companyHref}>{companyName}</a>
  107. </h2>
  108. <p className="company-preview__type">
  109. <img className="custom-icon company-preview__type-icon"
  110. alt="search icon"
  111. src="/images/companies/badge.svg"
  112. />
  113. {companyType}
  114. </p>
  115. <p className="company-preview__site">
  116. <img className="custom-icon company-preview__site-icon"
  117. alt="site icon"
  118. src="/images/companies/site.svg"
  119. />
  120. <a className="company-preview__site-url"
  121. href={companySiteUrl}
  122. target="_blank"
  123. rel="noreferrer"
  124. >{companySiteUrl}</a>
  125. </p>
  126. <div className="company-preview__offices">
  127. <img className="custom-icon company-preview__offices-icon"
  128. alt="flag icon"
  129. src="/images/companies/flag.svg"
  130. />
  131. <span className="company-preview__offices-text">Офіси компанії:</span>
  132. <div className="company-preview__country-flags">
  133. {children}
  134. </div>
  135. </div>
  136. </div>
  137. const ShowMore = () =>
  138. <button className="custom-btn custom-btn--border-gray companies__btn-more"
  139. type="button"
  140. >
  141. <svg className="custom-icon companies__btn-more-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" xmlSpace="preserve"><path d="M29.3 291.4C25.8 163 128.7 57.8 256.4 57.8V12.7c0-11.4 13.6-16.9 21.4-8.8l70.6 70.4c5 5 5 12.9 0 17.9l-70.6 70.4c-7.8 8.1-21.4 2.3-21.4-8.8v-45.4c-98.4 0-177.9 80.2-176.6 179.1 1.3 93.8 80.2 172.8 174.1 174.1C352.5 462.9 433 383.4 433 285c0-40.6-13.9-78.2-37.3-108-7.8-10.1-7.1-24.2 2-33.3 10.8-10.6 28.5-9.8 37.8 2 30 38.3 47.9 86.8 47.9 139.3 0 127.4-105.2 230.6-233.6 227.1-118.3-3.5-217.2-102.4-220.5-220.7z"/></svg>
  142. Показати ще 6 компаній
  143. </button>
  144. const App = () =>
  145. <>
  146. <Header/>
  147. <main className="main-wrapper">
  148. <section className="companies">
  149. <div className="wrapper companies__wrapper">
  150. <Search/>
  151. <p className="companies__found">Знайдено компаній: 381</p>
  152. {/* Companies list */}
  153. <div className="companies__list">
  154. <CompanyCard companyLogo="levi9-logo.png"
  155. logoAlt="Levi9"
  156. companyName="Levi9"
  157. companySiteUrl="https://www.levi9.com/"
  158. >
  159. <FlagIcon countryCode="nl"/>
  160. <FlagIcon countryCode="rs"/>
  161. <FlagIcon countryCode="ro"/>
  162. <FlagIcon countryCode="ua"/>
  163. </CompanyCard>
  164. <CompanyCard companyLogo="globallogic-logo.svg"
  165. logoAlt="globallogic"
  166. companyName="GlobalLogic"
  167. companySiteUrl="https://www.globallogic.com/ua"
  168. >
  169. <FlagIcon countryCode="us"/>
  170. <FlagIcon countryCode="ua"/>
  171. </CompanyCard>
  172. <CompanyCard companyLogo="issoft-logo.png"
  173. logoAlt="issoft"
  174. companyName="ISsoft"
  175. companyType="Продуктова компанія"
  176. companySiteUrl="https://issoft.by/"
  177. >
  178. <FlagIcon countryCode="us"/>
  179. <FlagIcon countryCode="by"/>
  180. </CompanyCard>
  181. <CompanyCard companyLogo="dataart-logo.png"
  182. logoAlt="DataArt"
  183. companyName="DataArt"
  184. companySiteUrl="https://dataart.ua/"
  185. >
  186. <FlagIcon countryCode="ua"/>
  187. <FlagIcon countryCode="am"/>
  188. <FlagIcon countryCode="bg"/>
  189. <FlagIcon countryCode="pl"/>
  190. </CompanyCard>
  191. <CompanyCard companyLogo="zone3000-logo.jpg"
  192. logoAlt="zone3000"
  193. companyName="ZONE3000"
  194. companyType="Продуктова компанія"
  195. companySiteUrl="https://zone3000.net/"
  196. >
  197. <FlagIcon countryCode="ua"/>
  198. </CompanyCard>
  199. <CompanyCard companyLogo="genesis-logo.png"
  200. logoAlt="genesis"
  201. companyName="Genesis"
  202. companySiteUrl="https://gen.tech/"
  203. >
  204. <FlagIcon countryCode="us"/>
  205. <FlagIcon countryCode="by"/>
  206. </CompanyCard>
  207. </div>
  208. {/* /Companies list */}
  209. {/* Show more button */}
  210. <ShowMore/>
  211. {/* /Show more button */}
  212. </div>
  213. </section>
  214. </main>
  215. <Footer/>
  216. </>
  217. export default App;