├── README.md ├── public ├── _redirects ├── robots.txt ├── favicon.ico ├── favicon1.ico ├── manifest.json └── index.html ├── src ├── images │ ├── logo1.png │ ├── UniQue.jpg │ ├── room-1.jpeg │ ├── room-10.jpeg │ ├── room-11.jpeg │ ├── room-12.jpeg │ ├── room-2.jpeg │ ├── room-3.jpeg │ ├── room-4.jpeg │ ├── room-5.jpeg │ ├── room-6.jpeg │ ├── room-7.jpeg │ ├── room-8.jpeg │ ├── room-9.jpeg │ ├── details-1.jpeg │ ├── details-2.jpeg │ ├── details-3.jpeg │ ├── details-4.jpeg │ ├── defaultBcg.jpeg │ ├── images │ │ ├── UniQue.jpg │ │ ├── hero-bcg.jpeg │ │ ├── product-1.jpeg │ │ ├── product-2.jpeg │ │ ├── product-3.jpeg │ │ ├── product-4.jpeg │ │ ├── product-5.jpeg │ │ ├── product-6.jpeg │ │ ├── product-7.jpeg │ │ └── product-8.jpeg │ └── gif │ │ ├── loading-arrow.gif │ │ └── loading-gear.gif ├── Contentful.js ├── components │ ├── Title.js │ ├── Hero.js │ ├── Banner.js │ ├── Loading.js │ ├── StyledHero.js │ ├── Footer.js │ ├── ProductList.js │ ├── Services.js │ ├── FeaturedProducts.js │ ├── Product.js │ ├── ProductContainer.js │ ├── GalleryHome.jsx │ ├── Navbar.js │ ├── Gallery.jsx │ └── ProductFilter.js ├── setupTests.js ├── App.test.js ├── index.css ├── pages │ ├── Error.js │ ├── Products.js │ ├── Gallery.jsx │ ├── Home.js │ ├── SingleProduct.js │ └── Contact.js ├── index.js ├── App.js ├── context.js ├── serviceWorker.js ├── App.css └── data.js ├── netlify.toml ├── .gitignore └── package.json /README.md: -------------------------------------------------------------------------------- 1 | ## React Furniture Shop 2 | -------------------------------------------------------------------------------- /public/_redirects: -------------------------------------------------------------------------------- 1 | /* /index.html 200 2 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/favicon1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/public/favicon1.ico -------------------------------------------------------------------------------- /src/images/logo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/logo1.png -------------------------------------------------------------------------------- /src/images/UniQue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/UniQue.jpg -------------------------------------------------------------------------------- /src/images/room-1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/room-1.jpeg -------------------------------------------------------------------------------- /src/images/room-10.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/room-10.jpeg -------------------------------------------------------------------------------- /src/images/room-11.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/room-11.jpeg -------------------------------------------------------------------------------- /src/images/room-12.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/room-12.jpeg -------------------------------------------------------------------------------- /src/images/room-2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/room-2.jpeg -------------------------------------------------------------------------------- /src/images/room-3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/room-3.jpeg -------------------------------------------------------------------------------- /src/images/room-4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/room-4.jpeg -------------------------------------------------------------------------------- /src/images/room-5.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/room-5.jpeg -------------------------------------------------------------------------------- /src/images/room-6.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/room-6.jpeg -------------------------------------------------------------------------------- /src/images/room-7.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/room-7.jpeg -------------------------------------------------------------------------------- /src/images/room-8.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/room-8.jpeg -------------------------------------------------------------------------------- /src/images/room-9.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/room-9.jpeg -------------------------------------------------------------------------------- /src/images/details-1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/details-1.jpeg -------------------------------------------------------------------------------- /src/images/details-2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/details-2.jpeg -------------------------------------------------------------------------------- /src/images/details-3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/details-3.jpeg -------------------------------------------------------------------------------- /src/images/details-4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/details-4.jpeg -------------------------------------------------------------------------------- /src/images/defaultBcg.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/defaultBcg.jpeg -------------------------------------------------------------------------------- /src/images/images/UniQue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/images/UniQue.jpg -------------------------------------------------------------------------------- /src/images/gif/loading-arrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/gif/loading-arrow.gif -------------------------------------------------------------------------------- /src/images/gif/loading-gear.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/gif/loading-gear.gif -------------------------------------------------------------------------------- /src/images/images/hero-bcg.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/images/hero-bcg.jpeg -------------------------------------------------------------------------------- /src/images/images/product-1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/images/product-1.jpeg -------------------------------------------------------------------------------- /src/images/images/product-2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/images/product-2.jpeg -------------------------------------------------------------------------------- /src/images/images/product-3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/images/product-3.jpeg -------------------------------------------------------------------------------- /src/images/images/product-4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/images/product-4.jpeg -------------------------------------------------------------------------------- /src/images/images/product-5.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/images/product-5.jpeg -------------------------------------------------------------------------------- /src/images/images/product-6.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/images/product-6.jpeg -------------------------------------------------------------------------------- /src/images/images/product-7.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/images/product-7.jpeg -------------------------------------------------------------------------------- /src/images/images/product-8.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pokemon918/React-Furniture-Shop/HEAD/src/images/images/product-8.jpeg -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | command = "npm run build" 3 | publish = "/build" 4 | base = "/" 5 | 6 | [[redirects]] 7 | from = "/*" 8 | to = "/index.html" 9 | status = 200 -------------------------------------------------------------------------------- /src/Contentful.js: -------------------------------------------------------------------------------- 1 | import { createClient } from 'contentful'; 2 | 3 | export default createClient({ 4 | space: process.env.REACT_APP_API_SPACE, 5 | accessToken: process.env.REACT_APP_ACCESS_TOKEN 6 | }) -------------------------------------------------------------------------------- /src/components/Title.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | function Title({title}) { 4 | return ( 5 |
6 |

{title}

7 |
8 |
9 | ) 10 | } 11 | 12 | export default Title 13 | -------------------------------------------------------------------------------- /src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /src/components/Hero.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Hero = ({children, hero}) => { 4 | return ( 5 |
6 | {children} 7 |
8 | ) 9 | } 10 | 11 | Hero.defaultProps = { 12 | hero: 'defaultHero' 13 | } 14 | 15 | export default Hero 16 | -------------------------------------------------------------------------------- /src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import App from './App'; 4 | 5 | test('renders learn react link', () => { 6 | const { getByText } = render(); 7 | const linkElement = getByText(/learn react/i); 8 | expect(linkElement).toBeInTheDocument(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/components/Banner.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Banner = ({children, title, subtitle}) => { 4 | return ( 5 |
6 |

{title}

7 |
8 |

{subtitle}

9 | {children} 10 |
11 | ) 12 | } 13 | 14 | export default Banner 15 | -------------------------------------------------------------------------------- /src/components/Loading.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import LoadingGif from '../images/gif/loading-arrow.gif' 3 | 4 | const Loading = () => { 5 | return ( 6 |
7 |

products data loading...

8 | 9 |
10 | ) 11 | } 12 | 13 | export default Loading 14 | -------------------------------------------------------------------------------- /src/components/StyledHero.js: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components' 2 | // import defaultImg from '../images/room-1.jpeg' 3 | 4 | const StyledHero = styled.header` 5 | min-height: 60vh; 6 | background: url(${props => props.img}) center/cover no-repeat; 7 | display: flex; 8 | align-items: center; 9 | justify-content: center; 10 | ` 11 | export default StyledHero; -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | .env.development 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import {Link} from 'react-router-dom' 3 | 4 | const Footer = () => { 5 | return ( 6 |
7 | Contact Us 8 |

Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquam, deserunt.

9 |

Call At: XXXXXXXXXX

10 |

Copyright© 2021 by Furniture Shop.
All rights reserved.

11 |
12 | ) 13 | } 14 | 15 | export default Footer; -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Furniture Shop", 4 | "icons": [ 5 | { 6 | "src": "favicon1.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "type": "image/png", 12 | "sizes": "192x192" 13 | }, 14 | { 15 | "type": "image/png", 16 | "sizes": "512x512" 17 | } 18 | ], 19 | "start_url": ".", 20 | "display": "standalone", 21 | "theme_color": "#000000", 22 | "background_color": "#ffffff" 23 | } 24 | -------------------------------------------------------------------------------- /src/pages/Error.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Hero from '../components/Hero' 3 | import Banner from '../components/Banner' 4 | import Footer from '../components/Footer' 5 | import { Link } from 'react-router-dom' 6 | 7 | const Error = () => { 8 | return ( 9 | <> 10 | 11 | 12 | Return Home 13 | 14 | 15 |