No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

373 líneas
16 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><NumberFormat value={data.price1} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
  47. <ul>
  48. <li><i className="flaticon-star-1"></i></li>
  49. <li><i className="flaticon-star-1"></i></li>
  50. <li><i className="flaticon-star-1"></i></li>
  51. <li><i className="flaticon-star-1"></i></li>
  52. <li><i className="flaticon-star-1"></i></li>
  53. </ul>
  54. <Link href={"/yamaha/Product/Ygp_Detail?s=" + data.id}>
  55. <a className="add-to-cart-btn">Detail Product</a>
  56. </Link>
  57. </div>
  58. </div>
  59. </div>
  60. );
  61. })
  62. const Yamalube = yamalube.map((data) => {
  63. return (
  64. <div className="col-lg-3 col-md-6 col-sm-6" key={ygp.id}>
  65. <div className="single-products">
  66. <div className="products-image">
  67. <img src={`${backend}${data.img["url"]}`} />
  68. <ul>
  69. <li>
  70. <a href="#">
  71. <Icon.Search />
  72. </a>
  73. </li>
  74. <li>
  75. <a href="#">
  76. <Icon.Heart />
  77. </a>
  78. </li>
  79. <li>
  80. <Link href="/products/[id]" as={`/products/${ygp.id}`}>
  81. <a>
  82. <Icon.Link />
  83. </a>
  84. </Link>
  85. </li>
  86. </ul>
  87. </div>
  88. <div className="products-content">
  89. <h3>
  90. <Link href={"/yamaha/Product/Yamalube_Detail?s=" + data.id}>
  91. <a>{data.name}</a>
  92. </Link>
  93. </h3>
  94. <span><NumberFormat value={data.price} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
  95. <ul>
  96. <li><i className="flaticon-star-1"></i></li>
  97. <li><i className="flaticon-star-1"></i></li>
  98. <li><i className="flaticon-star-1"></i></li>
  99. <li><i className="flaticon-star-1"></i></li>
  100. <li><i className="flaticon-star-1"></i></li>
  101. </ul>
  102. <Link href={"/yamaha/Product/Yamalube_Detail?s=" + data.id}>
  103. <a className="add-to-cart-btn">Detail Product</a>
  104. </Link>
  105. </div>
  106. </div>
  107. </div>
  108. );
  109. })
  110. const Helmet = helmet.map((data) => {
  111. return (
  112. <div className="col-lg-3 col-md-6 col-sm-6" key={helmet.id}>
  113. <div className="single-products">
  114. <div className="products-image">
  115. <img src={`${backend}${data.img["url"]}`} />
  116. <ul>
  117. <li>
  118. <a href="#">
  119. <Icon.Search />
  120. </a>
  121. </li>
  122. <li>
  123. <a href="#">
  124. <Icon.Heart />
  125. </a>
  126. </li>
  127. <li>
  128. <Link href="/products/[id]" as={`/products/${ygp.id}`}>
  129. <a>
  130. <Icon.Link />
  131. </a>
  132. </Link>
  133. </li>
  134. </ul>
  135. </div>
  136. <div className="products-content">
  137. <h3>
  138. <Link href={"/yamaha/Product/Helmet_Detail?s=" + data.id}>
  139. <a>{data.name}</a>
  140. </Link>
  141. </h3>
  142. <span><NumberFormat value={data.price} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
  143. <ul>
  144. <li><i className="flaticon-star-1"></i></li>
  145. <li><i className="flaticon-star-1"></i></li>
  146. <li><i className="flaticon-star-1"></i></li>
  147. <li><i className="flaticon-star-1"></i></li>
  148. <li><i className="flaticon-star-1"></i></li>
  149. </ul>
  150. <Link href={"/yamaha/Product/Helmet_Detail?s=" + data.id}>
  151. <a className="add-to-cart-btn">Detail Product</a>
  152. </Link>
  153. </div>
  154. </div>
  155. </div>
  156. )
  157. })
  158. const Apparel = apparel.map((data) => {
  159. return (
  160. <div className="col-lg-3 col-md-6 col-sm-6" key={apparel.id}>
  161. <div className="single-products">
  162. <div className="products-image">
  163. <img src={`${backend}${data.img["url"]}`} />
  164. <ul>
  165. <li>
  166. <a href="#">
  167. <Icon.Search />
  168. </a>
  169. </li>
  170. <li>
  171. <a href="#">
  172. <Icon.Heart />
  173. </a>
  174. </li>
  175. <li>
  176. <Link href="/products/[id]" as={`/products/${ygp.id}`}>
  177. <a>
  178. <Icon.Link />
  179. </a>
  180. </Link>
  181. </li>
  182. </ul>
  183. </div>
  184. <div className="products-content">
  185. <h3>
  186. <Link href={"/yamaha/Product/Apparel_Detail?s=" + data.id}>
  187. <a>{data.name}</a>
  188. </Link>
  189. </h3>
  190. <span><NumberFormat value={data.price} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
  191. <ul>
  192. <li><i className="flaticon-star-1"></i></li>
  193. <li><i className="flaticon-star-1"></i></li>
  194. <li><i className="flaticon-star-1"></i></li>
  195. <li><i className="flaticon-star-1"></i></li>
  196. <li><i className="flaticon-star-1"></i></li>
  197. </ul>
  198. <Link href={"/yamaha/Product/Apparel_Detail?s=" + data.id}>
  199. <a className="add-to-cart-btn">Detail Product</a>
  200. </Link>
  201. </div>
  202. </div>
  203. </div>
  204. )
  205. })
  206. const Accessories = accessories.map((data) => {
  207. return (
  208. <div className="col-lg-3 col-md-6 col-sm-6" key={accessories.id}>
  209. <div className="single-products">
  210. <div className="products-image">
  211. <img src={`${backend}${data.img["url"]}`} />
  212. <ul>
  213. <li>
  214. <a href="#">
  215. <Icon.Search />
  216. </a>
  217. </li>
  218. <li>
  219. <a href="#">
  220. <Icon.Heart />
  221. </a>
  222. </li>
  223. <li>
  224. <Link href="/products/[id]" as={`/products/${ygp.id}`}>
  225. <a>
  226. <Icon.Link />
  227. </a>
  228. </Link>
  229. </li>
  230. </ul>
  231. </div>
  232. <div className="products-content">
  233. <h3>
  234. <Link href={"/yamaha/Product/Accessories_Detail?s=" + data.id}>
  235. <a>{data.name}</a>
  236. </Link>
  237. </h3>
  238. <span><NumberFormat value={data.price} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /></span>
  239. <ul>
  240. <li><i className="flaticon-star-1"></i></li>
  241. <li><i className="flaticon-star-1"></i></li>
  242. <li><i className="flaticon-star-1"></i></li>
  243. <li><i className="flaticon-star-1"></i></li>
  244. <li><i className="flaticon-star-1"></i></li>
  245. </ul>
  246. <Link href={"/yamaha/Product/Accessories_Detail?s=" + data.id}>
  247. <a className="add-to-cart-btn">Detail Product</a>
  248. </Link>
  249. </div>
  250. </div>
  251. </div>
  252. )
  253. })
  254. return (
  255. <div className="shop-area ptb-80">
  256. <div className="container">
  257. <div className="woocommerce-topbar">
  258. <div className="row align-items-center">
  259. <div className="col-lg-9 col-md-7 col-sm-7">
  260. <div className="woocommerce-result-count">
  261. <p>Showing 1-8 of 14 results</p>
  262. </div>
  263. </div>
  264. <div className="col-lg-3 col-md-5 col-sm-5">
  265. <div className="woocommerce-topbar-ordering">
  266. <select className="form-select">
  267. <option value="1">Sort by Popularity</option>
  268. <option value="2">Sort by Average Rating</option>
  269. <option value="3">Sort by Latest</option>
  270. <option value="4">Sort by price: Low to High</option>
  271. <option value="5">Sort by price: High to Low</option>
  272. <option value="6">Sort by New</option>
  273. </select>
  274. </div>
  275. </div>
  276. </div>
  277. </div>
  278. <div width="fullwidth">
  279. <div className="products-details-tabs">
  280. <Tabs>
  281. <TabList>
  282. <Tab>YGP</Tab>
  283. <Tab>Yamalube</Tab>
  284. <Tab>helmet</Tab>
  285. <Tab>Apparel</Tab>
  286. <Tab>Accessories</Tab>
  287. </TabList>
  288. <TabPanel>
  289. <div className="row justify-content-md-center">
  290. {YGP}
  291. </div>
  292. </TabPanel>
  293. <TabPanel>
  294. <div className="row justify-content-md-center">
  295. {Yamalube}
  296. </div>
  297. </TabPanel>
  298. <TabPanel>
  299. <div className="row justify-content-md-center">
  300. {Helmet}
  301. </div>
  302. </TabPanel>
  303. <TabPanel>
  304. <div className="row justify-content-md-center">
  305. {Apparel}
  306. </div>
  307. </TabPanel>
  308. <TabPanel>
  309. <div className="row justify-content-md-center">
  310. {Accessories}
  311. </div>
  312. </TabPanel>
  313. </Tabs>
  314. </div>
  315. </div>
  316. {/* <div className="row justify-content-md-center">
  317. {Product}
  318. Pagination
  319. <div className="col-lg-12 col-md-12 col-sm-12">
  320. <div className="pagination-area">
  321. <nav aria-label="Page navigation">
  322. <ul className="pagination justify-content-center">
  323. <li className="page-item"><a className="page-link" href="#">Prev</a></li>
  324. <li className="page-item active"><a className="page-link" href="#">1</a></li>
  325. <li className="page-item"><a className="page-link" href="#">2</a></li>
  326. <li className="page-item"><a className="page-link" href="#">3</a></li>
  327. <li className="page-item"><a className="page-link" href="#">Next</a></li>
  328. </ul>
  329. </nav>
  330. </div>
  331. </div>
  332. </div> */}
  333. </div>
  334. </div>
  335. )
  336. }
  337. export default ProductCard;