Initial commit
This commit is contained in:
3
.eslintrc.json
Normal file
3
.eslintrc.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "next/core-web-vitals"
|
||||
}
|
||||
100
.gitignore
vendored
Normal file
100
.gitignore
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
*.pem
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
# vercel
|
||||
.vercel
|
||||
.env
|
||||
|
||||
# Images (if large, consider git lfs)
|
||||
*.jpg
|
||||
*.png
|
||||
public/images/
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
|
||||
# OS
|
||||
Thumbs.db
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Dependency directories
|
||||
jspm_packages/
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Serverless directories
|
||||
.serverless
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
.vscode-test
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
34
README.md
Normal file
34
README.md
Normal file
@@ -0,0 +1,34 @@
|
||||
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
|
||||
|
||||
## Getting Started
|
||||
|
||||
First, run the development server:
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
# or
|
||||
yarn dev
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
||||
|
||||
You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file.
|
||||
|
||||
[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`.
|
||||
|
||||
The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
|
||||
|
||||
## Learn More
|
||||
|
||||
To learn more about Next.js, take a look at the following resources:
|
||||
|
||||
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
||||
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
||||
|
||||
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
|
||||
|
||||
## Deploy on Vercel
|
||||
|
||||
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
||||
|
||||
Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
|
||||
78
components/templates/contact.js
Normal file
78
components/templates/contact.js
Normal file
@@ -0,0 +1,78 @@
|
||||
import axios from "axios";
|
||||
import { useState, useEffect } from "react";
|
||||
|
||||
export default function Form() {
|
||||
const [message, setMessage] = useState("");
|
||||
const [name, setName] = useState("");
|
||||
const [mail, setMail] = useState("");
|
||||
const [tel, setTel] = useState("");
|
||||
const sendMail = (e) => {
|
||||
e.preventDefault();
|
||||
axios
|
||||
.post("/api/hello", {
|
||||
msg: message,
|
||||
name: name,
|
||||
mail: mail,
|
||||
tel: tel,
|
||||
})
|
||||
.then(function (response) {
|
||||
console.log(response);
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log(error);
|
||||
});
|
||||
};
|
||||
return (
|
||||
<div className="flex flex-row px-48 justify-around">
|
||||
<form className="flex flex-col py-12">
|
||||
<input
|
||||
name="name"
|
||||
placeholder="Imię"
|
||||
className="border border-slate-300 h-8 w-[32rem] mt-4 px-4 transition ease-in-out m-0 focus:text-gray-700 focus:border-blue-600 focus:outline-none"
|
||||
onChange={(e) => {
|
||||
setName(e.target.value);
|
||||
}}
|
||||
></input>
|
||||
|
||||
<span className="flex flex-row w-[32rem]">
|
||||
<input
|
||||
name="phone"
|
||||
placeholder="Telefon"
|
||||
className="mr-1 border border-slate-300 h-8 w-[16rem] mt-4 px-4 transition ease-in-out m-0 focus:text-gray-700 focus:border-blue-600 focus:outline-none"
|
||||
onChange={(e) => {
|
||||
setTel(e.target.value);
|
||||
}}
|
||||
></input>
|
||||
<input
|
||||
name="email"
|
||||
placeholder="Email"
|
||||
className="ml-1 border border-slate-300 h-8 w-[16rem] mt-4 px-4 transition ease-in-out m-0 focus:text-gray-700 focus:border-blue-600 focus:outline-none"
|
||||
onChange={(e) => {
|
||||
setMail(e.target.value);
|
||||
}}
|
||||
></input>
|
||||
</span>
|
||||
|
||||
<textarea
|
||||
name="message"
|
||||
placeholder="Wiadomość"
|
||||
className="border border-slate-300 h-64 w-[32rem] mt-4 px-4 py-4 transition ease-in-out m-0 focus:text-gray-700 focus:border-blue-600 focus:outline-none"
|
||||
onChange={(e) => {
|
||||
setMessage(e.target.value);
|
||||
}}
|
||||
></textarea>
|
||||
<button
|
||||
className="bg-red-500 text-gray-100 font-medium mt-4 px-3 py-3 w-[32rem] ring-0 ring-offset-2 ring-red-500 transition ease-in-out duration-200 hover:ring-2 hover:bg-rose-600"
|
||||
onClick={(e) => {
|
||||
sendMail(e);
|
||||
}}
|
||||
>
|
||||
Wyślij
|
||||
</button>
|
||||
</form>
|
||||
<div className="grid place-content-center">
|
||||
<img src="/images/envelope.png" className="w-96 p-16"></img>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
components/templates/location.js
Normal file
42
components/templates/location.js
Normal file
@@ -0,0 +1,42 @@
|
||||
export default function Contact() {
|
||||
return (
|
||||
<div className="flex py-12" id="kontakt">
|
||||
<div className="w-3/5">
|
||||
<img src="/map.png" className="w-fit"></img>
|
||||
</div>
|
||||
<div className="w-3/5 px-8 my-auto text-right">
|
||||
<h2 className="text-4xl py-4">Nasze Biuro</h2>
|
||||
<ul className="list-none">
|
||||
<p className="text-2xl py-2">Aleje Wolności 6</p>
|
||||
<p className="text-2xl py-2">II piętro</p>
|
||||
<p className="text-2xl py-2">33-300 Nowy Sącz</p>
|
||||
</ul>
|
||||
<br></br>
|
||||
<h3 className="text-4xl py-4">Kontakt</h3>
|
||||
<ul className="list-none">
|
||||
<li className="text-2xl py-2">
|
||||
<a href="tel:504066513" >
|
||||
504 066 513
|
||||
</a>
|
||||
</li>
|
||||
<li className="text-2xl py-2">
|
||||
<a href="tel:18 442 02 44">
|
||||
18 442 02 44
|
||||
</a>
|
||||
</li>
|
||||
<li className="text-2xl py-2">
|
||||
<a href="tel:515775020">
|
||||
515 775 020
|
||||
</a>
|
||||
</li>
|
||||
<li className="text-2xl py-2">
|
||||
<a href="mailto:biuro@wastpol.pl">
|
||||
biuro@wastpol.pl
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="grow bg-slate-600 w-48 opacity-40"></div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
26
components/templates/main.js
Normal file
26
components/templates/main.js
Normal file
@@ -0,0 +1,26 @@
|
||||
export default function Main() {
|
||||
return (
|
||||
<div className="h-screen w-full bg-main bg-cover bg-center text-white mb-12">
|
||||
<div className="flex justify-between px-36 py-8 items-center">
|
||||
<img src="./logo.png" alt="logo" className="h-16"></img>
|
||||
<div className="flex items-center">
|
||||
<a href="#onas">
|
||||
<h2 className="text-2xl ml-8 bg-gray-900 bg-opacity-20 px-3 py-2 hover:bg-opacity-10 border-white border-opacity-0 border-b-2 hover:border-opacity-100 transition-all">
|
||||
O nas
|
||||
</h2>
|
||||
</a>
|
||||
<a href="#kontakt">
|
||||
<h2 className="text-2xl ml-8 bg-gray-900 bg-opacity-20 px-3 py-2 hover:bg-opacity-10 border-white border-opacity-0 border-b-2 hover:border-opacity-100 transition-all">
|
||||
Kontakt
|
||||
</h2>
|
||||
</a>
|
||||
<a href="tel:504066513">
|
||||
<h2 className="text-2xl ml-8 bg-gray-900 bg-opacity-20 px-3 py-2 hover:bg-opacity-10 border-white border-opacity-0 border-b-2 hover:border-opacity-100 transition-all">
|
||||
504 066 513
|
||||
</h2>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
131
components/templates/second.js
Normal file
131
components/templates/second.js
Normal file
@@ -0,0 +1,131 @@
|
||||
import { useState, useEffect } from "react";
|
||||
export default function Second() {
|
||||
const [photo, setPhoto] = useState(0);
|
||||
useEffect(() => {
|
||||
document.getElementById("jobPhoto");
|
||||
jobPhoto.style.opacity = 0;
|
||||
setTimeout(() => {
|
||||
jobPhoto.src = `/images/${photo}.jpg`;
|
||||
setTimeout(() => {
|
||||
jobPhoto.style.opacity = 1;
|
||||
}, 100);
|
||||
}, 150);
|
||||
|
||||
console.log(jobPhoto);
|
||||
}, [photo]);
|
||||
return (
|
||||
<>
|
||||
<div className="reative px-8 py-12 h-[26rem]" id="onas">
|
||||
<img
|
||||
src={`/images/0.jpg`}
|
||||
alt="Prąd"
|
||||
className="absolute right-0 object-cover h-80 w-2/3 transition-all duration-700 opacity-25"
|
||||
id="jobPhoto"
|
||||
></img>
|
||||
<h2 className="absolute text-6xl border-l-4 border-red-500">
|
||||
Ponad 4000 zrealizowanych projektów
|
||||
<br />
|
||||
20 lat doświadczenia
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div className="list-none flex px-8 py-12 justify-around text-3xl">
|
||||
<li
|
||||
onMouseEnter={() => {
|
||||
setPhoto(1);
|
||||
}}
|
||||
className="p-8 transition-all duration-700 hover:text-slate-500 border-b-2 border-white hover:border-red-500"
|
||||
>
|
||||
<svg
|
||||
className="w-16 h-16 m-auto"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M13 10V3L4 14h7v7l9-11h-7z"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
<h3 className="">Sieci</h3>
|
||||
</li>
|
||||
<li
|
||||
onMouseEnter={() => {
|
||||
setPhoto(2);
|
||||
}}
|
||||
className="p-8 transition-all duration-700 hover:text-slate-500 border-b-2 border-white hover:border-red-500"
|
||||
>
|
||||
<svg
|
||||
className="w-16 h-16 m-auto"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M9 3v2m6-2v2M9 19v2m6-2v2M5 9H3m2 6H3m18-6h-2m2 6h-2M7 19h10a2 2 0 002-2V7a2 2 0 00-2-2H7a2 2 0 00-2 2v10a2 2 0 002 2zM9 9h6v6H9V9z"
|
||||
/>
|
||||
</svg>
|
||||
<h3>Instalacje</h3>
|
||||
</li>
|
||||
<li
|
||||
onMouseEnter={() => {
|
||||
setPhoto(3);
|
||||
}}
|
||||
className="p-8 transition-all duration-700 hover:text-slate-500 border-b-2 border-white hover:border-red-500"
|
||||
>
|
||||
<svg
|
||||
className="w-16 h-16 m-auto"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"
|
||||
/>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
|
||||
/>
|
||||
</svg>
|
||||
<h3>Nadzory</h3>
|
||||
</li>
|
||||
<li
|
||||
onMouseEnter={() => {
|
||||
setPhoto(4);
|
||||
}}
|
||||
className="p-8 transition-all duration-700 hover:text-slate-500 border-b-2 border-white hover:border-red-500"
|
||||
>
|
||||
<svg
|
||||
className="w-16 h-16 m-auto"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"
|
||||
/>
|
||||
</svg>
|
||||
<h3>Pomiary</h3>
|
||||
</li>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
3
next.config.js
Normal file
3
next.config.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
reactStrictMode: true,
|
||||
}
|
||||
5816
package-lock.json
generated
Normal file
5816
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
25
package.json
Normal file
25
package.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "strona",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@socialgouv/matomo-next": "^1.3.0",
|
||||
"axios": "^0.26.1",
|
||||
"next": "12.0.10",
|
||||
"nodemailer": "^6.7.3",
|
||||
"react": "17.0.2",
|
||||
"react-dom": "17.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^10.4.2",
|
||||
"eslint": "8.8.0",
|
||||
"eslint-config-next": "12.0.10",
|
||||
"postcss": "^8.4.6",
|
||||
"tailwindcss": "^3.0.19"
|
||||
}
|
||||
}
|
||||
15
pages/_app.js
Normal file
15
pages/_app.js
Normal file
@@ -0,0 +1,15 @@
|
||||
import '../styles/globals.css'
|
||||
import { useEffect } from "react";
|
||||
import { init } from "@socialgouv/matomo-next";
|
||||
|
||||
const MATOMO_URL = process.env.NEXT_PUBLIC_MATOMO_URL;
|
||||
const MATOMO_SITE_ID = process.env.NEXT_PUBLIC_MATOMO_SITE_ID;
|
||||
|
||||
function MyApp({ Component, pageProps }) {
|
||||
useEffect(() => {
|
||||
init({ url: MATOMO_URL, siteId: MATOMO_SITE_ID });
|
||||
}, []);
|
||||
return <Component {...pageProps} />
|
||||
}
|
||||
|
||||
export default MyApp
|
||||
26
pages/api/hello.js
Normal file
26
pages/api/hello.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import nodemailer from "nodemailer";
|
||||
|
||||
export default function handler(req, res) {
|
||||
let transporter = nodemailer.createTransport({
|
||||
host: "mail.wastpol.pl",
|
||||
port: 465,
|
||||
secure: true,
|
||||
auth: {
|
||||
user: "kontakt@wastpol.pl",
|
||||
pass: "jHP4oCaELy0EOhz5",
|
||||
},
|
||||
});
|
||||
|
||||
let info = transporter.sendMail({
|
||||
from: `"${req.body.name} 🤡" <foo@example.com>`, // sender address
|
||||
to: "kontakt@wastpol.pl", // list of receivers
|
||||
subject: `Wiadomość od ${req.body.name}`, // Subject line
|
||||
html: `<b>Treść:</b> ${req.body.msg}<br/>
|
||||
<b>Dane do kontaktu:</b><br/>
|
||||
<b>nr tel: </b>${req.body.tel}<br/>
|
||||
<b>mail: </b>${req.body.mail}<br/><br/>
|
||||
<i>Wiadomość wygenerowana automatycznie na stronie wastpol.pl</i>`, // html body
|
||||
});
|
||||
|
||||
res.status(200).json({ msg: "Message Sent" });
|
||||
}
|
||||
7
pages/elements/banner.js
Normal file
7
pages/elements/banner.js
Normal file
@@ -0,0 +1,7 @@
|
||||
export default function Banner() {
|
||||
return (
|
||||
<div>
|
||||
<img src="/logo.png"></img>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
10
pages/elements/links.js
Normal file
10
pages/elements/links.js
Normal file
@@ -0,0 +1,10 @@
|
||||
export default function Links() {
|
||||
return (
|
||||
<div className="flex items-center">
|
||||
<p className="text-2xl pl-4 underline underline-offset-1 cursor-pointer">
|
||||
Lorem
|
||||
</p>
|
||||
<p className="text-2xl pl-4 cursor-pointer">Dolor</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
32
pages/elements/main.js
Normal file
32
pages/elements/main.js
Normal file
@@ -0,0 +1,32 @@
|
||||
import Image from "next/image";
|
||||
|
||||
export default function Main() {
|
||||
return (
|
||||
<div className="flex px-48 py-12 ">
|
||||
<div className="relative ">
|
||||
<div className="absolute rounded-l-3xl h-full w-1/2 bg-slate-800 opacity-50 "></div>
|
||||
<div className="absolute rounded-l-3xl h-full w-1/2 text-white p-12">
|
||||
<h1 className="text-6xl py-4">Lorem Ipsum</h1>
|
||||
<p className="text-2xl py-4">
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
|
||||
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
|
||||
ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
|
||||
aliquip ex ea commodo consequat. Duis aute irure dolor in
|
||||
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
|
||||
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
|
||||
culpa qui officia deserunt mollit anim id est laborum.
|
||||
</p>
|
||||
</div>
|
||||
<div
|
||||
className="absolute rounded-xl bg-slate-300 right-20 bottom-20 px-3 py-2 cursor-pointer"
|
||||
onClick={(e) => {
|
||||
console.log(e.target.innerHTML);
|
||||
}}
|
||||
>
|
||||
Więcej
|
||||
</div>
|
||||
<img src="/main.png" alt="Prąd" className="rounded-3xl"></img>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
22
pages/elements/second.js
Normal file
22
pages/elements/second.js
Normal file
@@ -0,0 +1,22 @@
|
||||
export default function Second() {
|
||||
return (
|
||||
<div className="flex py-12">
|
||||
<div className="w-2/5">
|
||||
<img src="/map.png" className="w-fit"></img>
|
||||
</div>
|
||||
<div className="w-3/5 px-8 text-right">
|
||||
<h1 className="text-6xl py-4">Lorem Ipsum</h1>
|
||||
<p className="text-2xl py-2">Lorem ipsum dolor sit amet,</p>
|
||||
<p className="text-2xl py-2">consectetur adipiscing elit,</p>
|
||||
<p className="text-2xl py-2">
|
||||
eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
||||
</p>
|
||||
<p className="text-2xl py-2">
|
||||
quis nostrud exercitation ullamco laboris nisi ut
|
||||
</p>
|
||||
<p className="text-2xl py-2">aliquip ex ea commodo consequat.</p>
|
||||
</div>
|
||||
<div className="grow bg-slate-600 w-48 opacity-40"></div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
31
pages/elements/third.js
Normal file
31
pages/elements/third.js
Normal file
@@ -0,0 +1,31 @@
|
||||
export default function Third() {
|
||||
return (
|
||||
<div className="flex px-48 py-12">
|
||||
<div className="w-1/2 border-t-2 border-l-2 p-4">
|
||||
<div className="flex justify-evenly">
|
||||
<div className="">Lorem</div>
|
||||
<div className="">Dolorem</div>
|
||||
</div>
|
||||
Sunt eiusmod voluptate anim sint minim id aliqua elit ipsum culpa.
|
||||
Consectetur laborum duis duis laboris do aute aliquip adipisicing ut
|
||||
tempor irure non nisi tempor. Cillum deserunt eu ea ipsum nostrud.
|
||||
Nostrud adipisicing et quis mollit et culpa ea irure incididunt eiusmod
|
||||
reprehenderit veniam eiusmod sint. Nisi ex exercitation velit sit ea ex.
|
||||
Ullamco eu ea esse nulla commodo commodo irure. Aliqua nostrud eiusmod
|
||||
et velit esse voluptate voluptate ipsum nisi laborum exercitation.
|
||||
</div>
|
||||
<div className="w-1/2 border-b-2 border-r-2 p-4">
|
||||
<h2>20 Lat Doświadczenia</h2>
|
||||
<p>
|
||||
Głównym profilem działalności firmy jest projektowanie instalacji
|
||||
elektrycznych oraz nadzór. Świadczymy również usługi w zakresie
|
||||
audytów instalacji elektrycznych, umożliwiających wskazanie
|
||||
konkretnych rozwiązań technicznych. Jako projektanci posiadający
|
||||
wieloletnie doświadczenie, potwierdzone odpowiednimi uprawnieniami,
|
||||
możemy Państwu zapewnić wykonywanie projektów na najwyższym poziomie
|
||||
technicznym i w zadowalających terminach realizacji.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
pages/index.js
Normal file
28
pages/index.js
Normal file
@@ -0,0 +1,28 @@
|
||||
import Head from "next/head";
|
||||
import Image from "next/image";
|
||||
import styles from "../styles/Home.module.css";
|
||||
import Main from "../components/templates/main";
|
||||
import Second from "../components/templates/second";
|
||||
import Location from "../components/templates/location";
|
||||
import Contact from "../components/templates/contact";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<div className="font-default scroll-smooth">
|
||||
<Head>
|
||||
<title>Wastpol</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="Biuro projektowe Wastpol w Nowym Sączu"
|
||||
/>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
</Head>
|
||||
|
||||
<Main />
|
||||
<Second />
|
||||
<Location />
|
||||
{/* <Contact /> */}
|
||||
<div className="bg-slate-100 p-16 text-slate-400">© Wastpol 2022</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
13
pages/templates/content.js
Normal file
13
pages/templates/content.js
Normal file
@@ -0,0 +1,13 @@
|
||||
import Main from "../elements/main";
|
||||
import Second from "../elements/second";
|
||||
import Third from "../elements/third";
|
||||
|
||||
export default function Content() {
|
||||
return (
|
||||
<div>
|
||||
<Main />
|
||||
<Second />
|
||||
<Third />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
7
pages/templates/footer.js
Normal file
7
pages/templates/footer.js
Normal file
@@ -0,0 +1,7 @@
|
||||
export default function Footer() {
|
||||
return (
|
||||
<div className="flex justify-center py-4">
|
||||
<p>© Wastpol 2022</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
11
pages/templates/nav.js
Normal file
11
pages/templates/nav.js
Normal file
@@ -0,0 +1,11 @@
|
||||
import Banner from "../elements/banner";
|
||||
import Links from "../elements/links";
|
||||
|
||||
export default function Nav() {
|
||||
return (
|
||||
<div className="flex justify-between px-48 py-4">
|
||||
<Banner />
|
||||
<Links />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
6
postcss.config.js
Normal file
6
postcss.config.js
Normal file
@@ -0,0 +1,6 @@
|
||||
module.exports = {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
autoprefixer: {},
|
||||
},
|
||||
}
|
||||
BIN
public/favicon.ico
Normal file
BIN
public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
4
public/vercel.svg
Normal file
4
public/vercel.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg width="283" height="64" viewBox="0 0 283 64" fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M141.04 16c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.46 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zM248.72 16c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.45 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zM200.24 34c0 6 3.92 10 10 10 4.12 0 7.21-1.87 8.8-4.92l7.68 4.43c-3.18 5.3-9.14 8.49-16.48 8.49-11.05 0-19-7.2-19-18s7.96-18 19-18c7.34 0 13.29 3.19 16.48 8.49l-7.68 4.43c-1.59-3.05-4.68-4.92-8.8-4.92-6.07 0-10 4-10 10zm82.48-29v46h-9V5h9zM36.95 0L73.9 64H0L36.95 0zm92.38 5l-27.71 48L73.91 5H84.3l17.32 30 17.32-30h10.39zm58.91 12v9.69c-1-.29-2.06-.49-3.2-.49-5.81 0-10 4-10 10V51h-9V17h9v9.2c0-5.08 5.91-9.2 13.2-9.2z" fill="#000"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
116
styles/Home.module.css
Normal file
116
styles/Home.module.css
Normal file
@@ -0,0 +1,116 @@
|
||||
.container {
|
||||
padding: 0 2rem;
|
||||
}
|
||||
|
||||
.main {
|
||||
min-height: 100vh;
|
||||
padding: 4rem 0;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.footer {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
padding: 2rem 0;
|
||||
border-top: 1px solid #eaeaea;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.footer a {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.title a {
|
||||
color: #0070f3;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.title a:hover,
|
||||
.title a:focus,
|
||||
.title a:active {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.title {
|
||||
margin: 0;
|
||||
line-height: 1.15;
|
||||
font-size: 4rem;
|
||||
}
|
||||
|
||||
.title,
|
||||
.description {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.description {
|
||||
margin: 4rem 0;
|
||||
line-height: 1.5;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.code {
|
||||
background: #fafafa;
|
||||
border-radius: 5px;
|
||||
padding: 0.75rem;
|
||||
font-size: 1.1rem;
|
||||
font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono,
|
||||
Bitstream Vera Sans Mono, Courier New, monospace;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
.card {
|
||||
margin: 1rem;
|
||||
padding: 1.5rem;
|
||||
text-align: left;
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
border: 1px solid #eaeaea;
|
||||
border-radius: 10px;
|
||||
transition: color 0.15s ease, border-color 0.15s ease;
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
.card:hover,
|
||||
.card:focus,
|
||||
.card:active {
|
||||
color: #0070f3;
|
||||
border-color: #0070f3;
|
||||
}
|
||||
|
||||
.card h2 {
|
||||
margin: 0 0 1rem 0;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.card p {
|
||||
margin: 0;
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.logo {
|
||||
height: 1em;
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.grid {
|
||||
width: 100%;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
20
styles/globals.css
Normal file
20
styles/globals.css
Normal file
@@ -0,0 +1,20 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
html,
|
||||
body {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
|
||||
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
15
tailwind.config.js
Normal file
15
tailwind.config.js
Normal file
@@ -0,0 +1,15 @@
|
||||
module.exports = {
|
||||
content: [
|
||||
"./pages/**/*.{js,ts,jsx,tsx}",
|
||||
"./components/**/*.{js,ts,jsx,tsx}",
|
||||
],
|
||||
theme: {
|
||||
fontFamily: { default: ["Montserrat"] },
|
||||
extend: {
|
||||
backgroundImage: {
|
||||
main: "url('main.jpg')",
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: [],
|
||||
};
|
||||
Reference in New Issue
Block a user