Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

458 рядки
20 KiB

  1. import React from 'react'
  2. import Link from 'next/link'
  3. import * as Icon from 'react-feather'
  4. import { useSelector } from 'react-redux'
  5. import AddToCartBtn from '@/components/Shop/AddToCartBtn'
  6. //addon library
  7. import { resetIdCounter, Tab, Tabs, TabList, TabPanel } from 'react-tabs';
  8. resetIdCounter();
  9. //yarn library
  10. import NumberFormat from 'react-number-format';
  11. const ProductCard = function ({ ygp, yamalube, helmet, apparel, accessories, backend, ...props }) {
  12. const products = useSelector((state) => state.products)
  13. // console.log(ygp)
  14. const YGP = ygp.map((data) => {
  15. return (
  16. <div className="col-lg-3 col-md-6 col-sm-6" key={ygp.id}>
  17. <div className="single-products">
  18. <div className="products-image">
  19. <img src={`${backend}${data.img["url"]}`} />
  20. <ul>
  21. <li>
  22. <a href="#">
  23. <Icon.Search />
  24. </a>
  25. </li>
  26. <li>
  27. <a href="#">
  28. <Icon.Heart />
  29. </a>
  30. </li>
  31. <li>
  32. <Link href="/products/[id]" as={`/products/${ygp.id}`}>
  33. <a>
  34. <Icon.Link />
  35. </a>
  36. </Link>
  37. </li>
  38. </ul>
  39. </div>
  40. <div className="products-content">
  41. <h3>
  42. <Link href={"/yamaha/Product/Ygp_Detail?s=" + data.id}>
  43. <a>{data.name}</a>
  44. </Link>
  45. </h3>
  46. <span>
  47. <NumberFormat value={data.price1 - data.price1 * data.discount} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  48. </span><br />
  49. <span></span>
  50. <span>
  51. <div className="products-details">
  52. <div className="price">
  53. <NumberFormat
  54. style={{ color: "#EB1928" }}
  55. displayType={'text'}
  56. prefix={'%'}
  57. decimalScale={2}
  58. value={data.discount * 100}
  59. />
  60. <NumberFormat value={data.price1} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  61. </div>
  62. </div>
  63. </span>
  64. <ul>
  65. <li><i className="flaticon-star-1"></i></li>
  66. <li><i className="flaticon-star-1"></i></li>
  67. <li><i className="flaticon-star-1"></i></li>
  68. <li><i className="flaticon-star-1"></i></li>
  69. <li><i className="flaticon-star-1"></i></li>
  70. </ul>
  71. <Link href={"/yamaha/Product/Ygp_Detail?s=" + data.id}>
  72. <a className="add-to-cart-btn">Detail Product</a>
  73. </Link>
  74. </div>
  75. </div>
  76. </div>
  77. );
  78. })
  79. const Yamalube = yamalube.map((data) => {
  80. return (
  81. <div className="col-lg-3 col-md-6 col-sm-6" key={ygp.id}>
  82. <div className="single-products">
  83. <div className="products-image">
  84. <img src={`${backend}${data.img["url"]}`} />
  85. <ul>
  86. <li>
  87. <a href="#">
  88. <Icon.Search />
  89. </a>
  90. </li>
  91. <li>
  92. <a href="#">
  93. <Icon.Heart />
  94. </a>
  95. </li>
  96. <li>
  97. <Link href="/products/[id]" as={`/products/${ygp.id}`}>
  98. <a>
  99. <Icon.Link />
  100. </a>
  101. </Link>
  102. </li>
  103. </ul>
  104. </div>
  105. <div className="products-content">
  106. <h3>
  107. <Link href={"/yamaha/Product/Yamalube_Detail?s=" + data.id}>
  108. <a>{data.name}</a>
  109. </Link>
  110. </h3>
  111. <span>
  112. <NumberFormat value={data.price - data.price * data.discount} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  113. </span><br />
  114. <span></span>
  115. <span>
  116. <div className="products-details">
  117. <div className="price">
  118. <NumberFormat
  119. style={{ color: "#EB1928" }}
  120. displayType={'text'}
  121. prefix={'%'}
  122. decimalScale={2}
  123. value={data.discount * 100}
  124. />
  125. <NumberFormat value={data.price} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  126. </div>
  127. </div>
  128. </span>
  129. <ul>
  130. <li><i className="flaticon-star-1"></i></li>
  131. <li><i className="flaticon-star-1"></i></li>
  132. <li><i className="flaticon-star-1"></i></li>
  133. <li><i className="flaticon-star-1"></i></li>
  134. <li><i className="flaticon-star-1"></i></li>
  135. </ul>
  136. <Link href={"/yamaha/Product/Yamalube_Detail?s=" + data.id}>
  137. <a className="add-to-cart-btn">Detail Product</a>
  138. </Link>
  139. </div>
  140. </div>
  141. </div>
  142. );
  143. })
  144. const Helmet = helmet.map((data) => {
  145. return (
  146. <div className="col-lg-3 col-md-6 col-sm-6" key={helmet.id}>
  147. <div className="single-products">
  148. <div className="products-image">
  149. <img src={`${backend}${data.img["url"]}`} />
  150. <ul>
  151. <li>
  152. <a href="#">
  153. <Icon.Search />
  154. </a>
  155. </li>
  156. <li>
  157. <a href="#">
  158. <Icon.Heart />
  159. </a>
  160. </li>
  161. <li>
  162. <Link href="/products/[id]" as={`/products/${ygp.id}`}>
  163. <a>
  164. <Icon.Link />
  165. </a>
  166. </Link>
  167. </li>
  168. </ul>
  169. </div>
  170. <div className="products-content">
  171. <h3>
  172. <Link href={"/yamaha/Product/Helmet_Detail?s=" + data.id}>
  173. <a>{data.name}</a>
  174. </Link>
  175. </h3>
  176. <span>
  177. <NumberFormat value={data.price - data.price * data.discount} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  178. </span><br />
  179. <span></span>
  180. <span>
  181. <div className="products-details">
  182. <div className="price">
  183. <NumberFormat
  184. style={{ color: "#EB1928" }}
  185. displayType={'text'}
  186. prefix={'%'}
  187. decimalScale={2}
  188. value={data.discount * 100}
  189. />
  190. <NumberFormat value={data.price} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  191. </div>
  192. </div>
  193. </span>
  194. <ul>
  195. <li><i className="flaticon-star-1"></i></li>
  196. <li><i className="flaticon-star-1"></i></li>
  197. <li><i className="flaticon-star-1"></i></li>
  198. <li><i className="flaticon-star-1"></i></li>
  199. <li><i className="flaticon-star-1"></i></li>
  200. </ul>
  201. <Link href={"/yamaha/Product/Helmet_Detail?s=" + data.id}>
  202. <a className="add-to-cart-btn">Detail Product</a>
  203. </Link>
  204. </div>
  205. </div>
  206. </div>
  207. )
  208. })
  209. const Apparel = apparel.map((data) => {
  210. return (
  211. <div className="col-lg-3 col-md-6 col-sm-6" key={apparel.id}>
  212. <div className="single-products">
  213. <div className="products-image">
  214. <img src={`${backend}${data.img["url"]}`} />
  215. <ul>
  216. <li>
  217. <a href="#">
  218. <Icon.Search />
  219. </a>
  220. </li>
  221. <li>
  222. <a href="#">
  223. <Icon.Heart />
  224. </a>
  225. </li>
  226. <li>
  227. <Link href="/products/[id]" as={`/products/${ygp.id}`}>
  228. <a>
  229. <Icon.Link />
  230. </a>
  231. </Link>
  232. </li>
  233. </ul>
  234. </div>
  235. <div className="products-content">
  236. <h3>
  237. <Link href={"/yamaha/Product/Apparel_Detail?s=" + data.id}>
  238. <a>{data.name}</a>
  239. </Link>
  240. </h3>
  241. <span>
  242. <NumberFormat value={data.price - data.price * data.discount} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  243. </span><br />
  244. <span></span>
  245. <span>
  246. <div className="products-details">
  247. <div className="price">
  248. <NumberFormat
  249. style={{ color: "#EB1928" }}
  250. displayType={'text'}
  251. prefix={'%'}
  252. decimalScale={2}
  253. value={data.discount * 100}
  254. />
  255. <NumberFormat value={data.price} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  256. </div>
  257. </div>
  258. </span>
  259. <ul>
  260. <li><i className="flaticon-star-1"></i></li>
  261. <li><i className="flaticon-star-1"></i></li>
  262. <li><i className="flaticon-star-1"></i></li>
  263. <li><i className="flaticon-star-1"></i></li>
  264. <li><i className="flaticon-star-1"></i></li>
  265. </ul>
  266. <Link href={"/yamaha/Product/Apparel_Detail?s=" + data.id}>
  267. <a className="add-to-cart-btn">Detail Product</a>
  268. </Link>
  269. </div>
  270. </div>
  271. </div>
  272. )
  273. })
  274. const Accessories = accessories.map((data) => {
  275. return (
  276. <div className="col-lg-3 col-md-6 col-sm-6" key={accessories.id}>
  277. <div className="single-products">
  278. <div className="products-image">
  279. <img src={`${backend}${data.img["url"]}`} />
  280. <ul>
  281. <li>
  282. <a href="#">
  283. <Icon.Search />
  284. </a>
  285. </li>
  286. <li>
  287. <a href="#">
  288. <Icon.Heart />
  289. </a>
  290. </li>
  291. <li>
  292. <Link href="/products/[id]" as={`/products/${ygp.id}`}>
  293. <a>
  294. <Icon.Link />
  295. </a>
  296. </Link>
  297. </li>
  298. </ul>
  299. </div>
  300. <div className="products-content">
  301. <h3>
  302. <Link href={"/yamaha/Product/Accessories_Detail?s=" + data.id}>
  303. <a>{data.name}</a>
  304. </Link>
  305. </h3>
  306. <span>
  307. <NumberFormat value={data.price - data.price * data.discount} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  308. </span><br />
  309. <span></span>
  310. <span>
  311. <div className="products-details">
  312. <div className="price">
  313. <NumberFormat
  314. style={{ color: "#EB1928" }}
  315. displayType={'text'}
  316. prefix={'%'}
  317. decimalScale={2}
  318. value={data.discount * 100}
  319. />
  320. <NumberFormat value={data.price} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  321. </div>
  322. </div>
  323. </span>
  324. <ul>
  325. <li><i className="flaticon-star-1"></i></li>
  326. <li><i className="flaticon-star-1"></i></li>
  327. <li><i className="flaticon-star-1"></i></li>
  328. <li><i className="flaticon-star-1"></i></li>
  329. <li><i className="flaticon-star-1"></i></li>
  330. </ul>
  331. <Link href={"/yamaha/Product/Accessories_Detail?s=" + data.id}>
  332. <a className="add-to-cart-btn">Detail Product</a>
  333. </Link>
  334. </div>
  335. </div>
  336. </div>
  337. )
  338. })
  339. return (
  340. <div className="shop-area ptb-80">
  341. <div className="container">
  342. <div className="woocommerce-topbar">
  343. <div className="row align-items-center">
  344. <div className="col-lg-9 col-md-7 col-sm-7">
  345. <div className="woocommerce-result-count">
  346. <p>Showing 1-8 of 14 results</p>
  347. </div>
  348. </div>
  349. <div className="col-lg-3 col-md-5 col-sm-5">
  350. <div className="woocommerce-topbar-ordering">
  351. <select className="form-select">
  352. <option value="1">Sort by Popularity</option>
  353. <option value="2">Sort by Average Rating</option>
  354. <option value="3">Sort by Latest</option>
  355. <option value="4">Sort by price: Low to High</option>
  356. <option value="5">Sort by price: High to Low</option>
  357. <option value="6">Sort by New</option>
  358. </select>
  359. </div>
  360. </div>
  361. </div>
  362. </div>
  363. <div width="fullwidth">
  364. <div className="products-details-tabs">
  365. <Tabs>
  366. <TabList>
  367. <Tab>YGP</Tab>
  368. <Tab>Yamalube</Tab>
  369. <Tab>helmet</Tab>
  370. <Tab>Apparel</Tab>
  371. <Tab>Accessories</Tab>
  372. </TabList>
  373. <TabPanel>
  374. <div className="row justify-content-md-center">
  375. {YGP}
  376. </div>
  377. </TabPanel>
  378. <TabPanel>
  379. <div className="row justify-content-md-center">
  380. {Yamalube}
  381. </div>
  382. </TabPanel>
  383. <TabPanel>
  384. <div className="row justify-content-md-center">
  385. {Helmet}
  386. </div>
  387. </TabPanel>
  388. <TabPanel>
  389. <div className="row justify-content-md-center">
  390. {Apparel}
  391. </div>
  392. </TabPanel>
  393. <TabPanel>
  394. <div className="row justify-content-md-center">
  395. {Accessories}
  396. </div>
  397. </TabPanel>
  398. </Tabs>
  399. </div>
  400. </div>
  401. {/* <div className="row justify-content-md-center">
  402. {Product}
  403. Pagination
  404. <div className="col-lg-12 col-md-12 col-sm-12">
  405. <div className="pagination-area">
  406. <nav aria-label="Page navigation">
  407. <ul className="pagination justify-content-center">
  408. <li className="page-item"><a className="page-link" href="#">Prev</a></li>
  409. <li className="page-item active"><a className="page-link" href="#">1</a></li>
  410. <li className="page-item"><a className="page-link" href="#">2</a></li>
  411. <li className="page-item"><a className="page-link" href="#">3</a></li>
  412. <li className="page-item"><a className="page-link" href="#">Next</a></li>
  413. </ul>
  414. </nav>
  415. </div>
  416. </div>
  417. </div> */}
  418. </div>
  419. </div>
  420. )
  421. }
  422. export default ProductCard;