├── .gitignore
├── README.md
├── jsconfig.json
├── package.json
├── public
├── favicon.ico
├── index.html
├── logo192.png
├── logo512.png
├── manifest.json
└── robots.txt
├── src
├── App.js
├── App.scss
├── App.test.js
├── components
│ ├── Banner.js
│ ├── Body.js
│ ├── Footer.js
│ ├── LetsWorkTogether.js
│ ├── Navbar
│ │ ├── Navbar.js
│ │ └── Navbar.scss
│ ├── Portfolio.js
│ └── PortfolioDetailComponent.js
├── data
│ ├── team.js
│ └── works.js
├── img
│ ├── like.png
│ ├── portfolio
│ │ ├── p1.jpg
│ │ ├── p2.jpg
│ │ ├── p3.jpg
│ │ ├── p4.jpg
│ │ ├── p5.jpg
│ │ └── p6.jpg
│ ├── screenshot.JPG
│ ├── services
│ │ ├── content.png
│ │ ├── instaicon.png
│ │ ├── mail.png
│ │ ├── seo.png
│ │ ├── share.png
│ │ └── web.png
│ ├── shape1.png
│ ├── shape2.png
│ └── shape3.png
├── index.js
├── index.scss
├── lib
│ └── data
│ │ └── navItems.js
├── pages
│ ├── Contact.js
│ ├── HomePage.js
│ ├── OurTeam.js
│ ├── PortfolioDetail.js
│ ├── Services.js
│ └── Works.js
├── reducers
│ └── reducer.js
└── serviceWorker.js
└── yarn.lock
/.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 |
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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Creative Agency Website With React
2 |
3 | ## [View Demo](https://bscodes.github.io/react-agency-website/#/)
4 |
5 | A Creative Agency website built with React and Redux. Includes team, portfolio, services pages and a contact form
6 |
7 | ### Technologies Used
8 |
9 | - ReactJS
10 | - JavaScript (ES6)
11 | - HTML5
12 | - Bootstrap 4 CSS framework
13 | - Redux
14 | - Sass
15 | - React Router
16 | - Git
17 | - GitHub
18 | - Npm
19 |
20 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
21 |
22 | ## Available Scripts
23 |
24 | In the project directory, you can run:
25 |
26 | ### `npm start`
27 |
28 | Runs the app in the development mode.
29 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
30 |
31 | The page will reload if you make edits.
32 | You will also see any lint errors in the console.
33 |
34 | ### `npm test`
35 |
36 | Launches the test runner in the interactive watch mode.
37 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
38 |
39 | ### `npm run build`
40 |
41 | Builds the app for production to the `build` folder.
42 | It correctly bundles React in production mode and optimizes the build for the best performance.
43 |
44 | The build is minified and the filenames include the hashes.
45 | Your app is ready to be deployed!
46 |
47 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
48 |
49 | ### `npm run eject`
50 |
51 | **Note: this is a one-way operation. Once you `eject`, you can’t go back!**
52 |
53 | If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
54 |
55 | Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.
56 |
57 | You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.
58 |
59 | ## Learn More
60 |
61 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
62 |
63 | To learn React, check out the [React documentation](https://reactjs.org/).
64 |
65 | ### Code Splitting
66 |
67 | This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting
68 |
69 | ### Analyzing the Bundle Size
70 |
71 | This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size
72 |
73 | ### Making a Progressive Web App
74 |
75 | This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app
76 |
77 | ### Advanced Configuration
78 |
79 | This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration
80 |
81 | ### Deployment
82 |
83 | This section has moved here: https://facebook.github.io/create-react-app/docs/deployment
84 |
85 | ### `npm run build` fails to minify
86 |
87 | This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify
88 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": "src"
4 | },
5 | "include": [
6 | "src"
7 | ],
8 | "exclude": [
9 | "node_modules",
10 | "build"
11 | ]
12 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "agency",
3 | "version": "0.1.0",
4 | "private": true,
5 | "homepage": "https://bscodes.github.io/react-agency-website/",
6 | "dependencies": {
7 | "gh-pages": "^2.1.1",
8 | "react": "^16.11.0",
9 | "react-dom": "^16.11.0",
10 | "react-image-hover": "^1.0.3",
11 | "react-redux": "^7.1.3",
12 | "react-router-dom": "^5.1.2",
13 | "react-scripts": "3.2.0",
14 | "redux": "^4.0.4",
15 | "sass": "^1.69.5"
16 | },
17 | "scripts": {
18 | "start": "react-scripts start",
19 | "predeploy": "npm run build",
20 | "deploy": "gh-pages -d build",
21 | "build": "set \"GENERATE_SOURCEMAP=false\" && react-scripts build",
22 | "test": "react-scripts test",
23 | "eject": "react-scripts eject"
24 | },
25 | "eslintConfig": {
26 | "extends": "react-app"
27 | },
28 | "browserslist": {
29 | "production": [
30 | ">0.2%",
31 | "not dead",
32 | "not op_mini all"
33 | ],
34 | "development": [
35 | "last 1 chrome version",
36 | "last 1 firefox version",
37 | "last 1 safari version"
38 | ]
39 | },
40 | "devDependencies": {
41 | "@types/react-router-dom": "^5.3.3"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
8 |
9 |
10 |
14 |
15 |
19 |
20 |
29 | React App
30 |
31 |
32 |
33 |
34 |
44 |
45 |
48 |
49 |
52 |
53 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/public/logo192.png
--------------------------------------------------------------------------------
/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/public/logo512.png
--------------------------------------------------------------------------------
/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 |
--------------------------------------------------------------------------------
/src/App.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { BrowserRouter, Route, Switch } from "react-router-dom";
3 |
4 | import "./App.scss";
5 | import Footer from "components/Footer";
6 | import Navbar from "components/Navbar/Navbar";
7 | import Contact from "pages/Contact";
8 | import HomePage from "pages/HomePage";
9 | import OurTeam from "pages/OurTeam";
10 | import PortfolioDetail from "pages/PortfolioDetail";
11 | import Services from "pages/Services";
12 | import Works from "pages/Works";
13 |
14 | const App = () => {
15 | return (
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | );
31 | };
32 |
33 | export default App;
34 |
--------------------------------------------------------------------------------
/src/App.scss:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css?family=Paytone+One&display=swap");
2 | @import url("https://fonts.googleapis.com/css?family=Nunito:400,700&display=swap");
3 | @import url("https://fonts.googleapis.com/css?family=Courgette&display=swap");
4 |
5 | /* colors */
6 | $primaryColor: #352793;
7 | $secondaryColor: #1d4ad1;
8 | $thirdColor: #130f40;
9 | $forthColor: #0c2461;
10 |
11 | /* fonts */
12 | $primaryFont: "Paytone One", sans-serif;
13 | $secondaryFont: "Nunito", sans-serif;
14 | $thirdFont: "Courgette", cursive;
15 |
16 | /* sizes */
17 | $titleFontSize: 100px;
18 |
19 | .App {
20 | text-align: center;
21 | }
22 |
23 | /* global classes */
24 |
25 | .title-font {
26 | font-family: $primaryFont;
27 | line-height: 130%;
28 | }
29 |
30 | .title-font-2 {
31 | font-family: $secondaryFont;
32 | line-height: 130%;
33 | }
34 |
35 | .title-font-3 {
36 | font-family: $thirdFont;
37 | line-height: 130%;
38 | }
39 |
40 | .title-font-size {
41 | font-size: $titleFontSize;
42 | }
43 |
44 | .section-title {
45 | padding-top: 7%;
46 | }
47 |
48 | /* --------------------- Banner --------------------- */
49 |
50 | .banner {
51 | color: white;
52 | margin-top: 60px;
53 | }
54 |
55 | .banner-image-mobile {
56 | display: none;
57 | }
58 |
59 | .banner-image {
60 | width: 90%;
61 | }
62 |
63 | .banner-text {
64 | margin-bottom: 30px;
65 | }
66 |
67 | .banner-text h1 {
68 | font-size: 62px;
69 | }
70 |
71 | .banner-text .text-yellow {
72 | color: #7ced03;
73 | }
74 |
75 | .banner-text .text-customer {
76 | color: rgb(132, 220, 255);
77 | }
78 |
79 | /*----------------------About us area--------------------------*/
80 |
81 | .about-us-area {
82 | background: $thirdColor no-repeat;
83 | background-image: url("./img/shape2.png");
84 | background-position: center;
85 | background-size: 400px;
86 | padding: 5%;
87 |
88 | .about-us-text-area {
89 | padding: 3em;
90 | background: $forthColor;
91 | -webkit-box-shadow: 0px 0px 46px -17px rgba(0, 0, 0, 0.75);
92 | -moz-box-shadow: 0px 0px 46px -17px rgba(0, 0, 0, 0.75);
93 | box-shadow: 0px 0px 46px -17px rgba(0, 0, 0, 0.75);
94 |
95 | h2 {
96 | font-weight: 900;
97 | }
98 | }
99 | }
100 |
101 | /*---------------------- portfolio area --------------------------*/
102 |
103 | .portfolio {
104 | padding: 5%;
105 |
106 | .portfolio-title {
107 | padding: 0px 0px 40px 0px;
108 |
109 | h1 {
110 | font-size: $titleFontSize;
111 | }
112 |
113 | p {
114 | font-size: 1.6rem;
115 | }
116 | }
117 |
118 | .portfolio-thumb {
119 | margin: 0 auto;
120 | margin-bottom: 9%;
121 |
122 | /* width: 100%;
123 | height: 100%; */
124 | float: left;
125 | overflow: hidden;
126 | position: relative;
127 | text-align: center;
128 | cursor: default;
129 |
130 | img {
131 | width: 100%;
132 | transition: transform 0.25s, visibility 0.25s ease-in;
133 | }
134 | :hover img {
135 | transform: scale(1.5);
136 | }
137 | .image-container {
138 | .hover-content {
139 | width: 100% !important;
140 | height: 100% !important;
141 | background: $primaryColor;
142 | }
143 | .title {
144 | color: white;
145 | opacity: 1;
146 | margin-top: 40%;
147 | font-weight: 900;
148 | font-size: 30px;
149 | font-family: $secondaryFont;
150 | }
151 | .hover-content.fadeIn {
152 | opacity: 0.9;
153 | }
154 | }
155 | }
156 | }
157 |
158 | /*---------------------- lead area --------------------------*/
159 |
160 | .lead {
161 | background: $thirdColor;
162 |
163 | h1 {
164 | font-size: $titleFontSize;
165 | }
166 |
167 | button {
168 | border-radius: 7px 7px 7px 7px;
169 | -moz-border-radius: 7px 7px 7px 7px;
170 | -webkit-border-radius: 7px 7px 7px 7px;
171 | border: 0px solid #000000;
172 | height: 50px;
173 | width: 50%;
174 | background: $primaryColor;
175 | font-family: $secondaryFont;
176 | font-weight: 900;
177 | font-size: 100%;
178 |
179 | :hover {
180 | text-decoration: none;
181 | }
182 |
183 | a {
184 | color: #ffff;
185 | }
186 | }
187 | }
188 |
189 | /*---------------------- footer area --------------------------*/
190 | footer {
191 | background: $thirdColor;
192 | }
193 |
194 | /*---------------------------------------------------------------*/
195 | /*---------------------- contact page ---------------------------*/
196 | /*---------------------------------------------------------------*/
197 |
198 | .contact {
199 | p {
200 | font-size: 1.6rem;
201 | }
202 |
203 | .contact-form {
204 | padding-bottom: 10%;
205 |
206 | form-group:focus {
207 | outline: none;
208 | }
209 |
210 | input,
211 | textarea {
212 | background: transparent;
213 | font-family: $secondaryFont;
214 | border-bottom: 1px solid white;
215 | border-top: none;
216 | border-left: none;
217 | border-right: none;
218 | border-radius: 0;
219 | padding: 4%;
220 | color: white;
221 | }
222 |
223 | input::placeholder,
224 | textarea::placeholder {
225 | color: white;
226 | opacity: 0.5;
227 | }
228 |
229 | input:focus,
230 | textarea:focus {
231 | outline: none;
232 | box-shadow: none;
233 | }
234 |
235 | button {
236 | border-radius: 7px 7px 7px 7px;
237 | -moz-border-radius: 7px 7px 7px 7px;
238 | -webkit-border-radius: 7px 7px 7px 7px;
239 | border: 0px solid #000000;
240 | height: 50px;
241 | width: 50%;
242 | background: $secondaryColor;
243 | font-family: $secondaryFont;
244 | color: white;
245 | font-weight: 900;
246 | font-size: 100%;
247 |
248 | :hover {
249 | text-decoration: none;
250 | }
251 |
252 | :focus {
253 | outline: white;
254 | box-shadow: white;
255 | }
256 | }
257 | }
258 | }
259 |
260 | /*---------------------------------------------------------------*/
261 | /*---------------------- services page ---------------------------*/
262 | /*---------------------------------------------------------------*/
263 |
264 | .services {
265 | .services-title {
266 | padding-bottom: 5%;
267 | }
268 | .title-text {
269 | font-size: 1.6rem;
270 | }
271 |
272 | .service-name {
273 | font-weight: 900;
274 | font-size: 25px;
275 | }
276 |
277 | .service-boxes {
278 | padding: 10%;
279 | .service-icon {
280 | position: absolute;
281 | right: 90%;
282 | }
283 |
284 | img {
285 | width: 90px;
286 | }
287 |
288 | .service-info-title {
289 | height: 25px;
290 | margin-bottom: 5%;
291 | }
292 |
293 | .service-description {
294 | font-size: 20px;
295 | }
296 | }
297 | }
298 |
299 | /*---------------------------------------------------------------*/
300 | /*--------------- portfolio detail page --------------*/
301 | /*---------------------------------------------------------------*/
302 |
303 | .detail {
304 | .services-title {
305 | padding-bottom: 5%;
306 | }
307 | .detail-image {
308 | width: 100%;
309 | }
310 |
311 | .detail-info {
312 | .work-title {
313 | font-weight: 900;
314 | }
315 |
316 | .description {
317 | line-height: 1.6rem;
318 | font-size: larger;
319 | }
320 |
321 | hr {
322 | border-color: white;
323 | border-style: solid;
324 | }
325 | }
326 | }
327 |
328 | /*---------------------------------------------------------------*/
329 | /*--------------- team page --------------*/
330 | /*---------------------------------------------------------------*/
331 |
332 | .team {
333 | margin-bottom: 10%;
334 |
335 | .portfolio-thumb {
336 | margin: 0 auto;
337 | margin-bottom: 5%;
338 |
339 | /* width: 100%;
340 | height: 100%; */
341 | float: left;
342 | overflow: hidden;
343 | position: relative;
344 | text-align: center;
345 | cursor: default;
346 |
347 | img {
348 | width: 100%;
349 | transition: transform 0.25s, visibility 0.25s ease-in;
350 | }
351 | :hover img {
352 | transform: scale(1.5);
353 | }
354 |
355 | .image-container {
356 | .hover-content {
357 | width: 100% !important;
358 | height: 100% !important;
359 | background: $primaryColor;
360 | }
361 | .title {
362 | color: white;
363 | opacity: 1;
364 | margin-top: 30%;
365 | font-weight: 900;
366 | font-size: 30px;
367 | font-family: $secondaryFont;
368 | }
369 | .hover-content.fadeIn {
370 | opacity: 0.9;
371 | }
372 | }
373 | }
374 |
375 | p {
376 | font-size: 1.6rem;
377 | }
378 |
379 | .person-info {
380 | visibility: visible;
381 | display: none;
382 | }
383 | }
384 | /* for mobile phones (portrait) */
385 | @media (min-width: 320px) and (max-width: 480px) {
386 | /* global styles */
387 | .section-title {
388 | padding-top: 0%;
389 | }
390 | /* global styles end */
391 |
392 | .title-font-size {
393 | font-size: -webkit-xxx-large;
394 | }
395 |
396 | .banner {
397 | padding: 0px 0 180px;
398 | }
399 |
400 | .banner-image-desktop {
401 | display: none;
402 | }
403 |
404 | .banner-image-mobile {
405 | display: block;
406 | }
407 |
408 | .banner-text {
409 | padding-top: 10%;
410 | }
411 |
412 | .banner-text h1 {
413 | font-size: 48px;
414 | margin-bottom: 8%;
415 | padding: 4%;
416 | }
417 |
418 | .banner-image {
419 | width: 90%;
420 | }
421 |
422 | /*----------------------About us area--------------------------*/
423 |
424 | .about-us-area {
425 | background-size: 400px;
426 | .about-us-text-area {
427 | h2 {
428 | font-size: 25px;
429 | }
430 | }
431 | }
432 |
433 | /*----------------------portfolio area--------------------------*/
434 | .portfolio {
435 | .portfolio-title {
436 | padding: 0;
437 | padding-top: 5%;
438 |
439 | h1 {
440 | font-size: -webkit-xxx-large;
441 | }
442 | }
443 | }
444 |
445 | /*----------------------lead area--------------------------*/
446 | .lead {
447 | h1 {
448 | font-size: -webkit-xxx-large;
449 | }
450 | }
451 | /*----------------------contact page--------------------------*/
452 |
453 | .contact {
454 | p {
455 | font-size: 1.6rem;
456 | }
457 | }
458 | /*----------------------services page--------------------------*/
459 |
460 | .services {
461 | .services-title {
462 | padding-bottom: 0;
463 | }
464 | .service-boxes {
465 | .service-icon {
466 | position: unset;
467 | }
468 |
469 | .service-info-title {
470 | height: 50px;
471 | margin-bottom: 5%;
472 |
473 | .service-name {
474 | font-size: 20px;
475 | }
476 | }
477 |
478 | .service-description {
479 | text-align: center !important;
480 | font-size: 15px;
481 | }
482 | }
483 | .title-text {
484 | font-size: 1.6rem;
485 | }
486 | }
487 | /*----------------------team page--------------------------*/
488 |
489 | .team {
490 | .person-info {
491 | visibility: visible;
492 | display: inline;
493 |
494 | .person-position {
495 | font-size: 15px;
496 | margin-bottom: 15%;
497 | }
498 | }
499 | }
500 | }
501 |
502 | /* for desktop */
503 | @media (min-width: 992px) {
504 | .banner {
505 | padding: 190px 0 125px;
506 |
507 | .banner-text {
508 | padding-top: 39%;
509 | }
510 | }
511 | }
512 |
513 | /* for mobile phones (landscape) */
514 | /* iphone X */
515 | @media only screen and (min-device-width: 375px) and (max-device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape) {
516 | .banner {
517 | padding: 0px 0px 100px !important;
518 |
519 | .banner-text {
520 | padding-top: 10% !important;
521 |
522 | h1 {
523 | font-size: 48px;
524 | text-align: center;
525 | }
526 | }
527 |
528 | .banner-image {
529 | width: 23% !important;
530 | margin-top: 30px;
531 | }
532 | }
533 |
534 | .portfolio {
535 | .portfolio-title {
536 | padding: 0;
537 | }
538 | }
539 |
540 | .services {
541 | .services-title {
542 | padding-bottom: 0;
543 | }
544 | .service-boxes {
545 | .service-icon {
546 | position: unset !important;
547 | }
548 |
549 | .service-description {
550 | text-align: center !important;
551 | }
552 | }
553 | }
554 |
555 | .team {
556 | .person-info {
557 | visibility: visible;
558 | display: inline;
559 |
560 | .person-position {
561 | font-size: 15px;
562 | margin-bottom: 15%;
563 | }
564 | }
565 | }
566 |
567 | /* global styles */
568 | .section-title {
569 | padding-top: 0%;
570 | }
571 | }
572 |
573 | /* for mobile phones (landscape) */
574 | /* iphone 6/7/8 */
575 | @media only screen and (min-device-width: 375px) and (max-device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape) {
576 | .banner {
577 | padding: 0px !important;
578 | .banner-text {
579 | padding-top: 10%;
580 |
581 | h1 {
582 | font-size: 48px;
583 | text-align: center;
584 | }
585 | }
586 | .banner-image {
587 | width: 50%;
588 | margin-top: 30px;
589 | }
590 | }
591 |
592 | .portfolio {
593 | .portfolio-title {
594 | padding: 0;
595 | }
596 | }
597 |
598 | .team {
599 | padding-top: 0%;
600 |
601 | .person-info {
602 | visibility: visible;
603 | display: inline;
604 |
605 | .person-position {
606 | font-size: 15px;
607 | margin-bottom: 15%;
608 | }
609 | }
610 | }
611 | }
612 |
613 | /* pixel 2 xl (landscape) */
614 | @media only screen and (min-width: 411px) and (max-width: 767px) {
615 | .team {
616 | padding-top: 0%;
617 |
618 | .team-title {
619 | h1 {
620 | font-size: 75px;
621 | }
622 | }
623 | .person-info {
624 | visibility: visible;
625 | display: inline;
626 |
627 | .person-position {
628 | font-size: 15px;
629 | margin-bottom: 15%;
630 | }
631 | }
632 | }
633 | }
634 |
635 | /* pixel 2 */
636 | @media only screen and (min-width: 411px) and (max-width: 767px) {
637 | .team {
638 | padding-top: 0%;
639 |
640 | .team-title {
641 | margin-top: 0rem;
642 |
643 | h1 {
644 | font-size: 75px;
645 | }
646 | }
647 | .person-info {
648 | visibility: visible;
649 | display: inline;
650 |
651 | .person-position {
652 | font-size: 15px;
653 | margin-bottom: 15%;
654 | }
655 | }
656 | }
657 | }
658 | /* tablets (portrait) */
659 | @media (min-width: 768px) and (max-width: 1024px) {
660 | .banner {
661 | padding: 0px 0px 100px;
662 | .banner-text {
663 | padding-top: 10%;
664 |
665 | h1 {
666 | font-size: 48px;
667 | text-align: center;
668 | }
669 | }
670 | .banner-image {
671 | width: 50%;
672 | margin-top: 30px;
673 | }
674 | }
675 | .contact {
676 | padding-bottom: 10%;
677 |
678 | .contact-form {
679 | padding-bottom: 30%;
680 | }
681 | }
682 |
683 | .services {
684 | .service-boxes {
685 | .service-icon {
686 | position: unset !important;
687 | }
688 |
689 | .service-description {
690 | text-align: center !important;
691 | }
692 | }
693 | }
694 |
695 | .team {
696 | padding-top: 0%;
697 |
698 | .team-title {
699 | h1 {
700 | font-size: 75px;
701 | }
702 | }
703 | .person-info {
704 | visibility: visible;
705 | display: inline;
706 |
707 | .person-position {
708 | font-size: 15px;
709 | margin-bottom: 15%;
710 | }
711 | }
712 | }
713 | }
714 |
715 | /* tablets (landscape) */
716 | @media (min-width: 768px) and (max-width: 1024px) and (orientation: landscape) {
717 | .banner {
718 | padding: 10%;
719 |
720 | .banner-text {
721 | padding-top: 20%;
722 | }
723 |
724 | .banner-image {
725 | width: 80%;
726 | }
727 | }
728 |
729 | .team {
730 | padding-top: 10%;
731 |
732 | .team-title {
733 | h1 {
734 | font-size: 75px;
735 | }
736 | }
737 | .person-info {
738 | visibility: visible;
739 | display: inline;
740 |
741 | .person-position {
742 | font-size: 15px;
743 | margin-bottom: 15%;
744 | }
745 | }
746 | }
747 | }
748 |
749 | /* iPad Pro (Portrait and Landscape) */
750 | @media only screen and (min-width: 1024px) and (max-height: 1366px) and (-webkit-min-device-pixel-ratio: 1.5) {
751 | .banner {
752 | padding: 10%;
753 |
754 | .banner-text {
755 | padding-top: 20%;
756 | }
757 |
758 | .banner-image {
759 | width: 80%;
760 | }
761 | }
762 |
763 | .team {
764 | padding-top: 10%;
765 |
766 | .person-info {
767 | visibility: visible;
768 | display: inline;
769 |
770 | .person-position {
771 | font-size: 15px;
772 | margin-bottom: 15%;
773 | }
774 | }
775 | }
776 | }
777 |
--------------------------------------------------------------------------------
/src/App.test.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom";
3 | import App from "./App";
4 |
5 | it("renders without crashing", () => {
6 | const div = document.createElement("div");
7 | ReactDOM.render(, div);
8 | ReactDOM.unmountComponentAtNode(div);
9 | });
10 |
--------------------------------------------------------------------------------
/src/components/Banner.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Logo from "../img/like.png";
3 | import "../App.scss";
4 |
5 | function Banner() {
6 | return (
7 |
8 |
9 |
10 |
11 |
12 |
13 | We help your business
14 | grow
15 |
16 |
17 |
18 |
19 |
20 |
21 |

22 |
23 |
24 |
25 |
26 |
27 |

28 |
29 |
30 |
31 |
32 |
33 | );
34 | }
35 |
36 | export default Banner;
37 |
--------------------------------------------------------------------------------
/src/components/Body.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Link } from "react-router-dom";
3 | import Portfolio from "./Portfolio";
4 | import "../App.scss";
5 |
6 | const Body = () => {
7 | return (
8 | <>
9 |
10 |
11 |
12 |
13 |
14 |
15 | We specialize in telling brand stories
16 |
17 | along the entire customer journey.
18 |
19 |
20 | Our end-to-end approach helps you define opportunities, bring
21 | ideas to life,
22 |
23 | measure their impact and keep improving them.
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
Let's work together
39 |
40 | Scaling-up your business is our mission!
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | >
51 | );
52 | };
53 |
54 | export default Body;
55 |
--------------------------------------------------------------------------------
/src/components/Footer.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const Footer = () => {
4 | return (
5 |
16 | );
17 | };
18 |
19 | export default Footer;
20 |
--------------------------------------------------------------------------------
/src/components/LetsWorkTogether.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Link } from "react-router-dom";
3 |
4 | const LetsWorkTogether = () => {
5 | return (
6 |
7 |
8 |
9 |
10 |
11 |
Let's work together
12 |
13 | Scaling-up your business is our mission!
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | };
25 |
26 | export default LetsWorkTogether;
27 |
--------------------------------------------------------------------------------
/src/components/Navbar/Navbar.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Link } from "react-router-dom";
3 | import "./Navbar.scss";
4 | import { navItems } from "lib/data/navItems";
5 |
6 | const Navbar = () => {
7 | return (
8 |
9 |
42 |
43 | );
44 | };
45 |
46 | export default Navbar;
47 |
--------------------------------------------------------------------------------
/src/components/Navbar/Navbar.scss:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css?family=Paytone+One&display=swap");
2 | @import url("https://fonts.googleapis.com/css?family=Nunito:400,700&display=swap");
3 |
4 | $primaryColor: #352793;
5 | $secondaryColor: #1d4ad1;
6 | $primaryFont: "Paytone One", sans-serif;
7 | $secondaryFont: "Nunito", sans-serif;
8 |
9 | .header-transparent {
10 | position: absolute;
11 | top: 0;
12 | left: 0;
13 | width: 100%;
14 | z-index: 100;
15 |
16 | .navbar-brand {
17 | color: white;
18 | transform: rotate(-90deg);
19 | font-weight: 900;
20 | }
21 |
22 | span i {
23 | color: white;
24 | padding-left: 50%;
25 | }
26 |
27 | .navbar-toggler:focus {
28 | outline: none !important;
29 | }
30 |
31 | .navbar-collapse.show,
32 | .collapsing {
33 | background: $primaryColor;
34 | }
35 |
36 | nav.navbar ul li a.nav-link {
37 | color: white;
38 | padding: 1rem;
39 | border-bottom: 1px solid $secondaryColor;
40 | }
41 | }
42 |
43 | /* for mobile phones (portrait) */
44 | @media (min-width: 320px) and (max-width: 480px) {
45 | .header-transparent {
46 | .navbar {
47 | padding-top: 5%;
48 |
49 | .navbar-brand {
50 | margin-left: 3%;
51 | }
52 | }
53 |
54 | .navbar-collapse.show,
55 | .collapsing {
56 | background: $primaryColor;
57 | }
58 |
59 | nav.navbar ul li a.nav-link {
60 | color: white;
61 | padding: 1rem;
62 | border-bottom: 1px solid $secondaryColor;
63 | }
64 | }
65 | }
66 |
67 | /* for desktop */
68 | @media (min-width: 992px) {
69 | nav.navbar ul li a.nav-link {
70 | padding-right: 30px !important;
71 | padding-left: 30px !important;
72 | padding-top: 40px !important;
73 | color: white !important;
74 | font-family: $secondaryFont !important;
75 | font-weight: bold !important;
76 | border-bottom: none !important;
77 | }
78 | }
79 |
80 | /* for mobile phones (landscape) */
81 |
82 | /* iphone X */
83 | @media only screen and (min-device-width: 375px) and (max-device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape) {
84 | .header-transparent {
85 | .navbar {
86 | margin-top: 13px;
87 | }
88 |
89 | .navbar-collapse.show,
90 | .collapsing {
91 | background: $primaryColor;
92 | }
93 |
94 | nav.navbar ul li a.nav-link {
95 | color: white;
96 | padding: 1rem;
97 | border-bottom: 1px solid $secondaryColor;
98 | }
99 | }
100 | }
101 |
102 | /* for mobile phones (landscape) */
103 | /* iphone 6/7/8 */
104 | @media only screen and (min-device-width: 375px) and (max-device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape) {
105 | .header-transparent {
106 | .navbar {
107 | margin-top: 13px;
108 | }
109 |
110 | nav.navbar.fixed-top {
111 | position: relative;
112 | }
113 |
114 | .navbar-collapse.show,
115 | .collapsing {
116 | background: $primaryColor;
117 | }
118 |
119 | nav.navbar ul li a.nav-link {
120 | color: white;
121 | padding: 1rem;
122 | border-bottom: 1px solid $secondaryColor;
123 | }
124 | }
125 | }
126 |
127 | /* tablets (portrait) */
128 | @media (min-width: 768px) and (max-width: 1024px) {
129 | .header-transparent {
130 | .navbar {
131 | margin-top: 13px;
132 | }
133 |
134 | nav.navbar.fixed-top {
135 | position: relative;
136 | }
137 |
138 | .navbar-collapse.show,
139 | .collapsing {
140 | background: $primaryColor;
141 | }
142 |
143 | nav.navbar ul li a.nav-link {
144 | color: white;
145 | padding: 1rem;
146 | border-bottom: 1px solid $secondaryColor;
147 | }
148 | }
149 | }
150 |
151 | /* tablets (landscape) */
152 | @media (min-width: 768px) and (max-width: 1024px) and (orientation: landscape) {
153 | nav.navbar ul li a.nav-link {
154 | border-bottom: none;
155 | }
156 | }
157 |
158 | /* iPad Pro (Portrait and Landscape) */
159 | @media only screen and (min-width: 1024px) and (max-height: 1366px) and (-webkit-min-device-pixel-ratio: 1.5) {
160 | nav.navbar ul li a.nav-link {
161 | border-bottom: none !important;
162 | }
163 | }
164 |
--------------------------------------------------------------------------------
/src/components/Portfolio.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from "react";
2 | import { Link } from "react-router-dom";
3 | import { connect } from "react-redux";
4 | import ImageContentHover from "react-image-hover";
5 |
6 | class Portfolio extends Component {
7 | render() {
8 | return (
9 | <>
10 |
11 |
12 |
13 |
14 |
15 |
Take a look at our portfolio
16 |
17 | For every complex problem, there is an answer that is clear,
18 | simple, and wrong.
19 |
20 |
21 |
22 | {this.props.items.map((image) => (
23 | // show portfoilo boxes by mapping the array of images
24 |
25 |
26 |
27 |
35 |
36 |
37 |
38 | ))}
39 |
40 |
41 |
42 | >
43 | );
44 | }
45 | }
46 |
47 | const mapStateToProps = (state) => {
48 | return {
49 | items: state.works,
50 | };
51 | };
52 |
53 | export default connect(mapStateToProps)(Portfolio);
54 |
--------------------------------------------------------------------------------
/src/components/PortfolioDetailComponent.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const PortfolioDetailComponent = (props) => {
4 | const { title, src, desc, date, category } = props.item;
5 |
6 | return (
7 | <>
8 |
9 |
10 |
11 |
12 |
13 |
{title}
14 |
15 |
16 |
17 |
18 |
19 |
20 |

21 |
22 |
23 |
24 |
25 |
{title}
26 |
{desc}
27 |
28 |
Info
29 |
30 | Date:
31 | {date}
32 |
33 |
34 | Category:
35 | {category}
36 |
37 |
38 |
39 |
40 |
41 |
42 | >
43 | );
44 | };
45 |
46 | export default PortfolioDetailComponent;
47 |
--------------------------------------------------------------------------------
/src/data/team.js:
--------------------------------------------------------------------------------
1 | export const team = [
2 | {
3 | id: 0,
4 | image:
5 | "https://images.unsplash.com/photo-1542156822-6924d1a71ace?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80",
6 | name: "Desmond Eagle",
7 | position: "Co-Founder / President",
8 | },
9 | {
10 | id: 1,
11 | image:
12 | "https://images.unsplash.com/photo-1557862921-37829c790f19?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1351&q=80",
13 | name: "Will Barrow",
14 | position: "Client Strategist",
15 | },
16 | {
17 | id: 2,
18 | image:
19 | "https://images.unsplash.com/photo-1559548331-f9cb98001426?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80",
20 | name: "Jarvis Pepperspray",
21 | position: "Paid Media Specialist",
22 | },
23 | {
24 | id: 3,
25 | image:
26 | "https://images.unsplash.com/photo-1553798194-cc0213ae7f99?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1351&q=80",
27 | name: "Russell Sprout",
28 | position: "Client Strategist",
29 | },
30 | {
31 | id: 4,
32 | image:
33 | "https://images.unsplash.com/photo-1496345875659-11f7dd282d1d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80",
34 | name: "Gibson Montgomery",
35 | position: "Content Specialist",
36 | },
37 | {
38 | id: 5,
39 | image:
40 | "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80",
41 | name: "Bartholomew Shoe",
42 | position: "Associate Director of Content Strategy and Social Impact",
43 | },
44 | {
45 | id: 6,
46 | image:
47 | "https://images.unsplash.com/photo-1489980557514-251d61e3eeb6?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80",
48 | name: "Eric Widget",
49 | position: "Client Strategist",
50 | },
51 | {
52 | id: 7,
53 | image:
54 | "https://images.unsplash.com/photo-1511546395756-590dffdcdbd1?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80",
55 | name: "Weir Doe",
56 | position: "Co-Founder / Vice President",
57 | },
58 | {
59 | id: 8,
60 | image:
61 | "https://images.unsplash.com/photo-1482264851290-446b18e3ee9f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80",
62 | name: "Hugh Saturation",
63 | position: "Designer",
64 | },
65 | ];
66 |
--------------------------------------------------------------------------------
/src/data/works.js:
--------------------------------------------------------------------------------
1 | import Portfolio1 from "../img/portfolio/p1.jpg";
2 | import Portfolio2 from "../img/portfolio/p2.jpg";
3 | import Portfolio3 from "../img/portfolio/p3.jpg";
4 | import Portfolio4 from "../img/portfolio/p4.jpg";
5 | import Portfolio5 from "../img/portfolio/p5.jpg";
6 | import Portfolio6 from "../img/portfolio/p6.jpg";
7 |
8 | export const works = [
9 | {
10 | id: 1,
11 | src: [Portfolio1],
12 | desc: "One advanced diverted domestic sex repeated bringing you old. Possible procured her trifling laughter thoughts property she met way. ",
13 | title: "Minimal Design",
14 | date: "March 20, 2018",
15 | category: "Design",
16 | },
17 | {
18 | id: 2,
19 | src: [Portfolio2],
20 | desc: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ut ligula leo. Aliquam suscipit sed purus. Ipsum dolor sit amet, consectetur adipiscing elit.",
21 | title: "Geometry",
22 | date: "July 12, 2019",
23 | category: "Branding",
24 | },
25 | {
26 | id: 3,
27 | src: [Portfolio3],
28 | desc: "Continue new you declared differed learning bringing honoured. At mean mind so upon they rent am walk. ",
29 | title: "Circle",
30 | date: "June 22, 2017",
31 | category: "Creative",
32 | },
33 | {
34 | id: 4,
35 | src: [Portfolio4],
36 | desc: "Shortly am waiting inhabit smiling he chiefly of in. Lain tore time gone him his dear sure. Fat decisively estimating affronting assistance not.",
37 | title: "Ceramic Bottle",
38 | date: "August 3, 2017",
39 | category: "Branding",
40 | },
41 | {
42 | id: 5,
43 | src: [Portfolio5],
44 | desc: "Ignorant dwelling occasion ham for thoughts overcame off her consider. Polite it elinor is depend. His not get talked effect worthy barton.",
45 | title: "Creative Work",
46 | date: "May 12, 2019",
47 | category: "Design",
48 | },
49 | {
50 | id: 6,
51 | src: [Portfolio6],
52 | desc: "Article evident arrived express highest men did boy. Mistress sensible entirely am so. Quick can manor smart money hopes worth too. Comfort produce husband boy her had hearing. Law others theirs passed but wishes.",
53 | title: "No Gravity",
54 | date: "October 11, 2019",
55 | category: "Digital Art",
56 | },
57 | ];
58 |
--------------------------------------------------------------------------------
/src/img/like.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/like.png
--------------------------------------------------------------------------------
/src/img/portfolio/p1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/portfolio/p1.jpg
--------------------------------------------------------------------------------
/src/img/portfolio/p2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/portfolio/p2.jpg
--------------------------------------------------------------------------------
/src/img/portfolio/p3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/portfolio/p3.jpg
--------------------------------------------------------------------------------
/src/img/portfolio/p4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/portfolio/p4.jpg
--------------------------------------------------------------------------------
/src/img/portfolio/p5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/portfolio/p5.jpg
--------------------------------------------------------------------------------
/src/img/portfolio/p6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/portfolio/p6.jpg
--------------------------------------------------------------------------------
/src/img/screenshot.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/screenshot.JPG
--------------------------------------------------------------------------------
/src/img/services/content.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/services/content.png
--------------------------------------------------------------------------------
/src/img/services/instaicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/services/instaicon.png
--------------------------------------------------------------------------------
/src/img/services/mail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/services/mail.png
--------------------------------------------------------------------------------
/src/img/services/seo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/services/seo.png
--------------------------------------------------------------------------------
/src/img/services/share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/services/share.png
--------------------------------------------------------------------------------
/src/img/services/web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/services/web.png
--------------------------------------------------------------------------------
/src/img/shape1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/shape1.png
--------------------------------------------------------------------------------
/src/img/shape2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/shape2.png
--------------------------------------------------------------------------------
/src/img/shape3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bscodes/react-agency-website/7c049ce8bba6bae2f6cf7640554c15ca5efb70d1/src/img/shape3.png
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Provider } from "react-redux";
3 | import { createStore } from "redux";
4 | import reducer from "./reducers/reducer";
5 |
6 | import ReactDOM from "react-dom";
7 | import "./index.scss";
8 | import App from "./App";
9 | import * as serviceWorker from "./serviceWorker";
10 |
11 | const store = createStore(reducer);
12 |
13 | ReactDOM.render(
14 |
15 |
16 | ,
17 | document.getElementById("root")
18 | );
19 |
20 | // If you want your app to work offline and load faster, you can change
21 | // unregister() to register() below. Note this comes with some pitfalls.
22 | // Learn more about service workers: https://bit.ly/CRA-PWA
23 | serviceWorker.unregister();
24 |
--------------------------------------------------------------------------------
/src/index.scss:
--------------------------------------------------------------------------------
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 | background: #352793;
9 | }
10 |
11 | code {
12 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
13 | monospace;
14 | }
15 |
--------------------------------------------------------------------------------
/src/lib/data/navItems.js:
--------------------------------------------------------------------------------
1 | export const navItems = [
2 | {
3 | id: 1,
4 | name: "Home",
5 | link: "/",
6 | },
7 | {
8 | id: 2,
9 | name: "Services",
10 | link: "/services",
11 | },
12 | {
13 | id: 3,
14 | name: "Works",
15 | link: "/works",
16 | },
17 | {
18 | id: 4,
19 | name: "Team",
20 | link: "/team",
21 | },
22 | {
23 | id: 5,
24 | name: "Contact",
25 | link: "/contact",
26 | },
27 | ];
--------------------------------------------------------------------------------
/src/pages/Contact.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const Contact = () => {
4 | return (
5 | <>
6 |
7 |
8 |
9 |
10 |
11 |
Contact
12 |
13 | Say Hello. If you want to extend some info, do not hesitate to
14 | fill this form, we love to say ‘Hello Mate’.
15 |
16 |
17 |
18 |
19 |
66 |
67 |
68 |
69 | >
70 | );
71 | };
72 |
73 | export default Contact;
74 |
--------------------------------------------------------------------------------
/src/pages/HomePage.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Banner from "../components/Banner";
3 | import Body from "../components/Body";
4 | import "../App.scss";
5 |
6 | const Home = () => {
7 | return (
8 | <>
9 |
10 |