diff --git a/api/product/accessories.js b/api/product/accessories.js
index 00222d9..c6c6200 100644
--- a/api/product/accessories.js
+++ b/api/product/accessories.js
@@ -100,10 +100,45 @@ async function GetAccessories(token="") {
return res;
}
+async function GetDetailAccessories(id, token="") {
+ var res = await apollo.query(
+ `
+ query($input: ID!){
+ accessories(where:{id:$input})
+ {
+ id
+ name
+ description
+ price
+ part_code
+ img {
+ url
+ }
+ img_relate1{
+ url
+ }
+ img_relate2{
+ url
+ }
+ img_relate3{
+ url
+ }
+ stock
+ }
+ } `,
+ token,
+ {
+ "input": id
+ }
+ );
+ return res;
+}
+
module.exports = {
GetYGP:GetYGP,
GetYamalube:GetYamalube,
GetHelmet:GetHelmet,
GetApparel:GetApparel,
GetAccessories:GetAccessories,
+ GetDetailAccessories:GetDetailAccessories,
};
\ No newline at end of file
diff --git a/assets/img/png-transparent-white-crew-neck-t-shirt-shetland-sheepdog-t-shirt-hoodie-polo-shirt-tshirt-template-angle-white-etsy-thumbnail.png b/assets/img/png-transparent-white-crew-neck-t-shirt-shetland-sheepdog-t-shirt-hoodie-polo-shirt-tshirt-template-angle-white-etsy-thumbnail.png
new file mode 100644
index 0000000..66168c4
Binary files /dev/null and b/assets/img/png-transparent-white-crew-neck-t-shirt-shetland-sheepdog-t-shirt-hoodie-polo-shirt-tshirt-template-angle-white-etsy-thumbnail.png differ
diff --git a/pages-sections/product/accessories.js b/pages-sections/product/accessories.js
index af79655..4b84795 100644
--- a/pages-sections/product/accessories.js
+++ b/pages-sections/product/accessories.js
@@ -36,7 +36,7 @@ const DataAccessories = function ({ backend, accessories, ...props }) {
Rp.{data.price}
diff --git a/pages-sections/product/accessories_details.js b/pages-sections/product/accessories_details.js
index e69de29..e7a326e 100644
--- a/pages-sections/product/accessories_details.js
+++ b/pages-sections/product/accessories_details.js
@@ -0,0 +1,109 @@
+import React, { useState, useEffect } from "react";
+import classNames from "classnames";
+import { makeStyles } from "@material-ui/core/styles";
+import ReactHtmlParser from "react-html-parser";
+import Dashboard from "@material-ui/icons/Dashboard";
+import Icon from "@material-ui/core/Icon";
+
+import GridContainer from "components/Grid/GridContainer.js";
+import Grid from '@material-ui/core/Grid';
+import GridItem from "components/Grid/GridItem.js";
+import NavPills from "components/NavPills/NavPills.js";
+import Card from "components/Card/Card.js";
+import CardBody from "components/Card/CardBody.js";
+import CardHeader from "components/Card/CardHeader.js";
+import CardFooter from "components/Card/CardFooter.js";
+import Button from "components/CustomButtons/Button.js";
+import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js";
+import Carousel from "react-slick";
+
+const useStyles = makeStyles(styles);
+
+const DetailDataAccessories = function ({ backend, detailaccessories, ...props }) {
+ const classes = useStyles();
+ const { ...rest } = props;
+ const imageClasses = classNames(
+ classes.imgRaised,
+ classes.imgRoundedCircle,
+ classes.imgFluid
+ );
+ const settings = {
+ dots: true,
+ infinite: true,
+ speed: 500,
+ slidesToShow: 1,
+ slidesToScroll: 1,
+ autoplay: true,
+ time: 5
+ };
+ const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
+ const Accessoriesdetails = detailaccessories.map((data) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {data.name}
+ Rp.{data.price}
+
+
+ Stock : {data.stock}
+ Part Code : {data.part_code}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Deskripsi
+
+
+
{ReactHtmlParser(data.description)}
+
+
+ );
+ })
+ return (
+
+
+ Product Detail
+
+
+
+ {Accessoriesdetails}
+
+
+
+ © 2020 , All Right Reserved by @Thamrin Brother Company
+
+
+ );
+}
+
+export default DetailDataAccessories;
\ No newline at end of file
diff --git a/pages-sections/product/apparel.js b/pages-sections/product/apparel.js
index c7ecb05..5e0768f 100644
--- a/pages-sections/product/apparel.js
+++ b/pages-sections/product/apparel.js
@@ -35,7 +35,7 @@ const DataApparel = function ({ backend, apparel, ...props }) {
Rp.{data.price}
diff --git a/pages-sections/product/apparel_details.js b/pages-sections/product/apparel_details.js
index e69de29..f66d897 100644
--- a/pages-sections/product/apparel_details.js
+++ b/pages-sections/product/apparel_details.js
@@ -0,0 +1,109 @@
+import React, { useState, useEffect } from "react";
+import classNames from "classnames";
+import { makeStyles } from "@material-ui/core/styles";
+import ReactHtmlParser from "react-html-parser";
+import Dashboard from "@material-ui/icons/Dashboard";
+import Icon from "@material-ui/core/Icon";
+
+import GridContainer from "components/Grid/GridContainer.js";
+import Grid from '@material-ui/core/Grid';
+import GridItem from "components/Grid/GridItem.js";
+import NavPills from "components/NavPills/NavPills.js";
+import Card from "components/Card/Card.js";
+import CardBody from "components/Card/CardBody.js";
+import CardHeader from "components/Card/CardHeader.js";
+import CardFooter from "components/Card/CardFooter.js";
+import Button from "components/CustomButtons/Button.js";
+import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js";
+import Carousel from "react-slick";
+
+const useStyles = makeStyles(styles);
+
+const DetailDataApparel = function ({ backend, detailapparel, ...props }) {
+ const classes = useStyles();
+ const { ...rest } = props;
+ const imageClasses = classNames(
+ classes.imgRaised,
+ classes.imgRoundedCircle,
+ classes.imgFluid
+ );
+ const settings = {
+ dots: true,
+ infinite: true,
+ speed: 500,
+ slidesToShow: 1,
+ slidesToScroll: 1,
+ autoplay: true,
+ time: 5
+ };
+ const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
+ const Appareldetails = detailapparel.map((data) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {data.name}
+ Rp.{data.price}
+
+
+ Stock : {data.stock}
+ Part Code : {data.part_code}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Deskripsi
+
+
+
{ReactHtmlParser(data.description)}
+
+
+ );
+ })
+ return (
+
+
+ Product Detail
+
+
+
+ {Appareldetails}
+
+
+
+ © 2020 , All Right Reserved by @Thamrin Brother Company
+
+
+ );
+}
+
+export default DetailDataApparel;
\ No newline at end of file
diff --git a/pages-sections/product/helmet.js b/pages-sections/product/helmet.js
index 22f0b3a..09c3ac9 100644
--- a/pages-sections/product/helmet.js
+++ b/pages-sections/product/helmet.js
@@ -35,7 +35,7 @@ const DataHelmet = function ({ backend, helmet, ...props }) {
Rp.{data.price}
diff --git a/pages-sections/product/helmet_details.js b/pages-sections/product/helmet_details.js
index e69de29..93c32a0 100644
--- a/pages-sections/product/helmet_details.js
+++ b/pages-sections/product/helmet_details.js
@@ -0,0 +1,109 @@
+import React, { useState, useEffect } from "react";
+import classNames from "classnames";
+import { makeStyles } from "@material-ui/core/styles";
+import ReactHtmlParser from "react-html-parser";
+import Dashboard from "@material-ui/icons/Dashboard";
+import Icon from "@material-ui/core/Icon";
+
+import GridContainer from "components/Grid/GridContainer.js";
+import Grid from '@material-ui/core/Grid';
+import GridItem from "components/Grid/GridItem.js";
+import NavPills from "components/NavPills/NavPills.js";
+import Card from "components/Card/Card.js";
+import CardBody from "components/Card/CardBody.js";
+import CardHeader from "components/Card/CardHeader.js";
+import CardFooter from "components/Card/CardFooter.js";
+import Button from "components/CustomButtons/Button.js";
+import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js";
+import Carousel from "react-slick";
+
+const useStyles = makeStyles(styles);
+
+const DetailDataHelmet = function ({ backend, detailhelmet, ...props }) {
+ const classes = useStyles();
+ const { ...rest } = props;
+ const imageClasses = classNames(
+ classes.imgRaised,
+ classes.imgRoundedCircle,
+ classes.imgFluid
+ );
+ const settings = {
+ dots: true,
+ infinite: true,
+ speed: 500,
+ slidesToShow: 1,
+ slidesToScroll: 1,
+ autoplay: true,
+ time: 5
+ };
+ const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
+ const Helmetdetails = detailhelmet.map((data) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {data.name}
+ Rp.{data.price}
+
+
+ Stock : {data.stock}
+ Part Code : {data.part_code}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Deskripsi
+
+
+
{ReactHtmlParser(data.description)}
+
+
+ );
+ })
+ return (
+
+
+ Product Detail
+
+
+
+ {Helmetdetails}
+
+
+
+ © 2020 , All Right Reserved by @Thamrin Brother Company
+
+
+ );
+}
+
+export default DetailDataHelmet;
\ No newline at end of file
diff --git a/pages-sections/product/yamalube.js b/pages-sections/product/yamalube.js
index 74e032d..1c65e51 100644
--- a/pages-sections/product/yamalube.js
+++ b/pages-sections/product/yamalube.js
@@ -35,7 +35,7 @@ const DataYamalube = function ({ backend, yamalube, ...props }) {
Rp.{data.price}
diff --git a/pages-sections/product/yamalube_details.js b/pages-sections/product/yamalube_details.js
index e69de29..cacb1cc 100644
--- a/pages-sections/product/yamalube_details.js
+++ b/pages-sections/product/yamalube_details.js
@@ -0,0 +1,109 @@
+import React, { useState, useEffect } from "react";
+import classNames from "classnames";
+import { makeStyles } from "@material-ui/core/styles";
+import ReactHtmlParser from "react-html-parser";
+import Dashboard from "@material-ui/icons/Dashboard";
+import Icon from "@material-ui/core/Icon";
+
+import GridContainer from "components/Grid/GridContainer.js";
+import Grid from '@material-ui/core/Grid';
+import GridItem from "components/Grid/GridItem.js";
+import NavPills from "components/NavPills/NavPills.js";
+import Card from "components/Card/Card.js";
+import CardBody from "components/Card/CardBody.js";
+import CardHeader from "components/Card/CardHeader.js";
+import CardFooter from "components/Card/CardFooter.js";
+import Button from "components/CustomButtons/Button.js";
+import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js";
+import Carousel from "react-slick";
+
+const useStyles = makeStyles(styles);
+
+const DetailDataYamalube = function ({ backend, detailyamalube, ...props }) {
+ const classes = useStyles();
+ const { ...rest } = props;
+ const imageClasses = classNames(
+ classes.imgRaised,
+ classes.imgRoundedCircle,
+ classes.imgFluid
+ );
+ const settings = {
+ dots: true,
+ infinite: true,
+ speed: 500,
+ slidesToShow: 1,
+ slidesToScroll: 1,
+ autoplay: true,
+ time: 5
+ };
+ const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
+ const Yamalubedetails = detailyamalube.map((data) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {data.name}
+ Rp.{data.price}
+
+
+ Stock : {data.stock}
+ Part Code : {data.part_code}
+
+
+
+ {/*
+
+
+
+
+
+
+
+
+
+ */}
+
+
+ Deskripsi
+
+
+
{ReactHtmlParser(data.description)}
+
+
+ );
+ })
+ return (
+
+
+ Product Detail
+
+
+
+ {Yamalubedetails}
+
+
+
+ © 2020 , All Right Reserved by @Thamrin Brother Company
+
+
+ );
+}
+
+export default DetailDataYamalube;
\ No newline at end of file
diff --git a/pages-sections/product/ygp.js b/pages-sections/product/ygp.js
index f1d7774..acbdcc9 100644
--- a/pages-sections/product/ygp.js
+++ b/pages-sections/product/ygp.js
@@ -35,7 +35,7 @@ const DataYGP = function ({ backend, ygp, ...props }) {
Rp.{data.price}
diff --git a/pages-sections/product/ygp_details.js b/pages-sections/product/ygp_details.js
index e69de29..f0886c7 100644
--- a/pages-sections/product/ygp_details.js
+++ b/pages-sections/product/ygp_details.js
@@ -0,0 +1,97 @@
+import React, { useState, useEffect } from "react";
+import classNames from "classnames";
+import { makeStyles } from "@material-ui/core/styles";
+import ReactHtmlParser from "react-html-parser";
+import Dashboard from "@material-ui/icons/Dashboard";
+import Icon from "@material-ui/core/Icon";
+
+import GridContainer from "components/Grid/GridContainer.js";
+import Grid from '@material-ui/core/Grid';
+import GridItem from "components/Grid/GridItem.js";
+import NavPills from "components/NavPills/NavPills.js";
+import Card from "components/Card/Card.js";
+import CardBody from "components/Card/CardBody.js";
+import CardHeader from "components/Card/CardHeader.js";
+import CardFooter from "components/Card/CardFooter.js";
+import Button from "components/CustomButtons/Button.js";
+import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js";
+
+const useStyles = makeStyles(styles);
+
+const DetailDataYGP = function ({ backend, detailygp, ...props }) {
+ const classes = useStyles();
+ const { ...rest } = props;
+ const imageClasses = classNames(
+ classes.imgRaised,
+ classes.imgRoundedCircle,
+ classes.imgFluid
+ );
+ const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
+ const YGPdetails = detailygp.map((data) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {data.name}
+ Rp.{data.price}
+
+
+ Stock : {data.stock}
+ Part Code : {data.part_code}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Deskripsi
+
+
+
{ReactHtmlParser(data.description)}
+
+
+ );
+ })
+ return (
+
+
+ Product Detail
+
+
+
+ {YGPdetails}
+
+
+
+ © 2020 , All Right Reserved by @Thamrin Brother Company
+
+
+ );
+}
+
+export default DetailDataYGP;
\ No newline at end of file
diff --git a/pages/product/accessories_details.js b/pages/product/accessories_details.js
new file mode 100644
index 0000000..5f41927
--- /dev/null
+++ b/pages/product/accessories_details.js
@@ -0,0 +1,55 @@
+import React from "react";
+import classNames from "classnames";
+import { makeStyles } from "@material-ui/core/styles";
+
+import Header from "components/Header/Header.js";
+import HeaderLinks from "components/Header/HeaderLinks.js";
+import Footer from "components/Footer/Footer.js";
+import AccessoriesDetail from "pages-sections/product/accessories_details.js";
+import Parallax from "components/Parallax/Parallax.js";
+import styles from "assets/jss/nextjs-material-kit/pages/components.js";
+import GetDetailAccessories from "../../api/product/accessories.js"
+
+const useStyles = makeStyles(styles);
+
+const AccessoriesDetails = function ({ backend, detailaccessories, ...props }) {
+ const classes = useStyles();
+ const { ...rest } = props;
+ return (
+
+
}
+ fixed
+ color="info"
+ changeColorOnScroll={{
+ height: 400,
+ color: "white"
+ }}
+ {...rest}
+ />
+
+
+
+
+ );
+}
+
+export default AccessoriesDetails;
+
+export async function getServerSideProps(context) {
+ var {query} = context;
+ var detailaccessories = [];
+ const backend = process.env.BACKEND_SERVER_URI;
+
+ var res = await GetDetailAccessories.GetDetailAccessories(query.s||0);
+ if (res["STATUS"] === 1) {
+ detailaccessories = res["DATA"]["accessories"];
+ }
+ console.log(detailaccessories);
+
+ return {
+ props: { detailaccessories, backend }, // will be passed to the page component as props
+ };
+}
\ No newline at end of file
diff --git a/pages/product/apparel_details.js b/pages/product/apparel_details.js
new file mode 100644
index 0000000..c378c03
--- /dev/null
+++ b/pages/product/apparel_details.js
@@ -0,0 +1,55 @@
+import React from "react";
+import classNames from "classnames";
+import { makeStyles } from "@material-ui/core/styles";
+
+import Header from "components/Header/Header.js";
+import HeaderLinks from "components/Header/HeaderLinks.js";
+import Footer from "components/Footer/Footer.js";
+import ApparelDetail from "pages-sections/product/apparel_details.js";
+import Parallax from "components/Parallax/Parallax.js";
+import styles from "assets/jss/nextjs-material-kit/pages/components.js";
+import GetDetailApparel from "../../api/product/accessories.js"
+
+const useStyles = makeStyles(styles);
+
+const ApparelDetails = function ({ backend, detailapparel, ...props }) {
+ const classes = useStyles();
+ const { ...rest } = props;
+ return (
+
+
}
+ fixed
+ color="info"
+ changeColorOnScroll={{
+ height: 400,
+ color: "white"
+ }}
+ {...rest}
+ />
+
+
+
+
+ );
+}
+
+export default ApparelDetails;
+
+export async function getServerSideProps(context) {
+ var {query} = context;
+ var detailapparel = [];
+ const backend = process.env.BACKEND_SERVER_URI;
+
+ var res = await GetDetailApparel.GetDetailAccessories(query.s||0);
+ if (res["STATUS"] === 1) {
+ detailapparel = res["DATA"]["accessories"];
+ }
+ console.log(detailapparel);
+
+ return {
+ props: { detailapparel, backend }, // will be passed to the page component as props
+ };
+}
\ No newline at end of file
diff --git a/pages/product/helmet_details.js b/pages/product/helmet_details.js
new file mode 100644
index 0000000..e70a7f8
--- /dev/null
+++ b/pages/product/helmet_details.js
@@ -0,0 +1,55 @@
+import React from "react";
+import classNames from "classnames";
+import { makeStyles } from "@material-ui/core/styles";
+
+import Header from "components/Header/Header.js";
+import HeaderLinks from "components/Header/HeaderLinks.js";
+import Footer from "components/Footer/Footer.js";
+import HelmetDetail from "pages-sections/product/helmet_details.js";
+import Parallax from "components/Parallax/Parallax.js";
+import styles from "assets/jss/nextjs-material-kit/pages/components.js";
+import GetDetailHelmet from "../../api/product/accessories.js"
+
+const useStyles = makeStyles(styles);
+
+const HelmetDetails = function ({ backend, detailhelmet, ...props }) {
+ const classes = useStyles();
+ const { ...rest } = props;
+ return (
+
+
}
+ fixed
+ color="info"
+ changeColorOnScroll={{
+ height: 400,
+ color: "white"
+ }}
+ {...rest}
+ />
+
+
+
+
+
+
+ );
+}
+
+export default HelmetDetails;
+
+export async function getServerSideProps(context) {
+ var {query} = context;
+ var detailhelmet = [];
+ const backend = process.env.BACKEND_SERVER_URI;
+
+ var res = await GetDetailHelmet.GetDetailAccessories(query.s||0);
+ if (res["STATUS"] === 1) {
+ detailhelmet = res["DATA"]["accessories"];
+ }
+ console.log(detailhelmet);
+
+ return {
+ props: { detailhelmet, backend }, // will be passed to the page component as props
+ };
+}
\ No newline at end of file
diff --git a/pages/product/yamalube_details.js b/pages/product/yamalube_details.js
new file mode 100644
index 0000000..6c38e0b
--- /dev/null
+++ b/pages/product/yamalube_details.js
@@ -0,0 +1,55 @@
+import React from "react";
+import classNames from "classnames";
+import { makeStyles } from "@material-ui/core/styles";
+
+import Header from "components/Header/Header.js";
+import HeaderLinks from "components/Header/HeaderLinks.js";
+import Footer from "components/Footer/Footer.js";
+import YamalubeDetail from "pages-sections/product/yamalube_details.js";
+import Parallax from "components/Parallax/Parallax.js";
+import styles from "assets/jss/nextjs-material-kit/pages/components.js";
+import GetDetailYamalube from "../../api/product/accessories.js"
+
+const useStyles = makeStyles(styles);
+
+const YamalubeDetails = function ({ backend, detailyamalube, ...props }) {
+ const classes = useStyles();
+ const { ...rest } = props;
+ return (
+
+
}
+ fixed
+ color="info"
+ changeColorOnScroll={{
+ height: 400,
+ color: "white"
+ }}
+ {...rest}
+ />
+
+
+
+
+
+
+ );
+}
+
+export default YamalubeDetails;
+
+export async function getServerSideProps(context) {
+ var {query} = context;
+ var detailyamalube = [];
+ const backend = process.env.BACKEND_SERVER_URI;
+
+ var res = await GetDetailYamalube.GetDetailAccessories(query.s||0);
+ if (res["STATUS"] === 1) {
+ detailyamalube = res["DATA"]["accessories"];
+ }
+ console.log(detailyamalube);
+
+ return {
+ props: { detailyamalube, backend }, // will be passed to the page component as props
+ };
+}
\ No newline at end of file
diff --git a/pages/product/ygp_details.js b/pages/product/ygp_details.js
new file mode 100644
index 0000000..4e27082
--- /dev/null
+++ b/pages/product/ygp_details.js
@@ -0,0 +1,55 @@
+import React from "react";
+import classNames from "classnames";
+import { makeStyles } from "@material-ui/core/styles";
+
+import Header from "components/Header/Header.js";
+import HeaderLinks from "components/Header/HeaderLinks.js";
+import Footer from "components/Footer/Footer.js";
+import YGPDetail from "pages-sections/product/ygp_details.js";
+import Parallax from "components/Parallax/Parallax.js";
+import styles from "assets/jss/nextjs-material-kit/pages/components.js";
+import GetDetailYGP from "../../api/product/accessories.js"
+
+const useStyles = makeStyles(styles);
+
+const YGPDetails = function ({ backend, detailygp, ...props }) {
+ const classes = useStyles();
+ const { ...rest } = props;
+ return (
+
+
}
+ fixed
+ color="info"
+ changeColorOnScroll={{
+ height: 400,
+ color: "white"
+ }}
+ {...rest}
+ />
+
+
+
+
+
+
+ );
+}
+
+export default YGPDetails;
+
+export async function getServerSideProps(context) {
+ var {query} = context;
+ var detailygp = [];
+ const backend = process.env.BACKEND_SERVER_URI;
+
+ var res = await GetDetailYGP.GetDetailAccessories(query.s||0);
+ if (res["STATUS"] === 1) {
+ detailygp = res["DATA"]["accessories"];
+ }
+ console.log(detailygp);
+
+ return {
+ props: { detailygp, backend }, // will be passed to the page component as props
+ };
+}
\ No newline at end of file