├── pages ├── api │ ├── hello.js │ └── email-registration.js ├── _app.js ├── events │ ├── index.js │ └── [cat] │ │ ├── [id].js │ │ └── index.js ├── index.js └── about-us.js ├── .eslintrc.json ├── public ├── favicon.ico ├── images │ └── logo_black.png └── vercel.svg ├── src └── components │ ├── footer │ └── footer.jsx │ ├── layout │ └── main-layout.jsx │ ├── events │ ├── events-page.jsx │ ├── catEvent.jsx │ └── single-event.jsx │ ├── home │ └── home-page.jsx │ └── header │ └── header.jsx ├── .vscode └── settings.json ├── next.config.js ├── package.json ├── styles ├── globals.css └── general.sass ├── .gitignore ├── README.md ├── data └── data.json └── yarn.lock /pages/api/hello.js: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timeToCode-ali/nextjs-tutorial/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/images/logo_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timeToCode-ali/nextjs-tutorial/HEAD/public/images/logo_black.png -------------------------------------------------------------------------------- /src/components/footer/footer.jsx: -------------------------------------------------------------------------------- 1 | export const Footer = () => { 2 | return ( 3 | 6 | ); 7 | }; 8 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "git.ignoreLimitWarning": true, 3 | "editor.wordWrap": "bounded", 4 | "editor.fontSize": 14, 5 | "prettier.proseWrap": "always", 6 | "html.format.wrapLineLength": 60 7 | } -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | swcMinify: true, 5 | images: { 6 | domains: ['images.unsplash.com', 'wembleypark.com'], 7 | }, 8 | }; 9 | 10 | module.exports = nextConfig; 11 | -------------------------------------------------------------------------------- /pages/_app.js: -------------------------------------------------------------------------------- 1 | import MainLayout from '../src/components/layout/main-layout'; 2 | import '../styles/globals.css'; 3 | import '../styles/general.sass'; 4 | 5 | function MyApp({ Component, pageProps }) { 6 | return ( 7 | <> 8 | 9 | 10 | 11 | 12 | ); 13 | } 14 | 15 | export default MyApp; 16 | -------------------------------------------------------------------------------- /src/components/layout/main-layout.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Footer } from '../footer/footer'; 3 | import { Header } from '../header/header'; 4 | 5 | const MainLayout = ({ children }) => { 6 | return ( 7 | <> 8 |
9 |
{children}
10 |