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.

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