mirror of
https://github.com/sergeyyarkov/devthread.ru.git
synced 2026-10-11 10:19:13 +03:00
contacts page
This commit is contained in:
parent
68eb44879b
commit
1e31dbdf3b
102
README.md
102
README.md
@ -1,99 +1,3 @@
|
|||||||
<!-- AUTO-GENERATED-CONTENT:START (STARTER) -->
|
# devthread.ru
|
||||||
<p align="center">
|
[](https://opensource.org/licenses/MIT)
|
||||||
<a href="https://www.gatsbyjs.org">
|
[](https://app.netlify.com/sites/devthread/deploys)
|
||||||
<img alt="Gatsby" src="https://www.gatsbyjs.org/monogram.svg" width="60" />
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
<h1 align="center">
|
|
||||||
Gatsby's hello-world starter
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
Kick off your project with this hello-world boilerplate. This starter ships with the main Gatsby configuration files you might need to get up and running blazing fast with the blazing fast app generator for React.
|
|
||||||
|
|
||||||
_Have another more specific idea? You may want to check out our vibrant collection of [official and community-created starters](https://www.gatsbyjs.org/docs/gatsby-starters/)._
|
|
||||||
|
|
||||||
## 🚀 Quick start
|
|
||||||
|
|
||||||
1. **Create a Gatsby site.**
|
|
||||||
|
|
||||||
Use the Gatsby CLI to create a new site, specifying the hello-world starter.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# create a new Gatsby site using the hello-world starter
|
|
||||||
gatsby new my-hello-world-starter https://github.com/gatsbyjs/gatsby-starter-hello-world
|
|
||||||
```
|
|
||||||
|
|
||||||
1. **Start developing.**
|
|
||||||
|
|
||||||
Navigate into your new site’s directory and start it up.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
cd my-hello-world-starter/
|
|
||||||
gatsby develop
|
|
||||||
```
|
|
||||||
|
|
||||||
1. **Open the source code and start editing!**
|
|
||||||
|
|
||||||
Your site is now running at `http://localhost:8000`!
|
|
||||||
|
|
||||||
_Note: You'll also see a second link: _`http://localhost:8000/___graphql`_. This is a tool you can use to experiment with querying your data. Learn more about using this tool in the [Gatsby tutorial](https://www.gatsbyjs.org/tutorial/part-five/#introducing-graphiql)._
|
|
||||||
|
|
||||||
Open the `my-hello-world-starter` directory in your code editor of choice and edit `src/pages/index.js`. Save your changes and the browser will update in real time!
|
|
||||||
|
|
||||||
## 🧐 What's inside?
|
|
||||||
|
|
||||||
A quick look at the top-level files and directories you'll see in a Gatsby project.
|
|
||||||
|
|
||||||
.
|
|
||||||
├── node_modules
|
|
||||||
├── src
|
|
||||||
├── .gitignore
|
|
||||||
├── .prettierrc
|
|
||||||
├── gatsby-browser.js
|
|
||||||
├── gatsby-config.js
|
|
||||||
├── gatsby-node.js
|
|
||||||
├── gatsby-ssr.js
|
|
||||||
├── LICENSE
|
|
||||||
├── package-lock.json
|
|
||||||
├── package.json
|
|
||||||
└── README.md
|
|
||||||
|
|
||||||
1. **`/node_modules`**: This directory contains all of the modules of code that your project depends on (npm packages) are automatically installed.
|
|
||||||
|
|
||||||
2. **`/src`**: This directory will contain all of the code related to what you will see on the front-end of your site (what you see in the browser) such as your site header or a page template. `src` is a convention for “source code”.
|
|
||||||
|
|
||||||
3. **`.gitignore`**: This file tells git which files it should not track / not maintain a version history for.
|
|
||||||
|
|
||||||
4. **`.prettierrc`**: This is a configuration file for [Prettier](https://prettier.io/). Prettier is a tool to help keep the formatting of your code consistent.
|
|
||||||
|
|
||||||
5. **`gatsby-browser.js`**: This file is where Gatsby expects to find any usage of the [Gatsby browser APIs](https://www.gatsbyjs.org/docs/browser-apis/) (if any). These allow customization/extension of default Gatsby settings affecting the browser.
|
|
||||||
|
|
||||||
6. **`gatsby-config.js`**: This is the main configuration file for a Gatsby site. This is where you can specify information about your site (metadata) like the site title and description, which Gatsby plugins you’d like to include, etc. (Check out the [config docs](https://www.gatsbyjs.org/docs/gatsby-config/) for more detail).
|
|
||||||
|
|
||||||
7. **`gatsby-node.js`**: This file is where Gatsby expects to find any usage of the [Gatsby Node APIs](https://www.gatsbyjs.org/docs/node-apis/) (if any). These allow customization/extension of default Gatsby settings affecting pieces of the site build process.
|
|
||||||
|
|
||||||
8. **`gatsby-ssr.js`**: This file is where Gatsby expects to find any usage of the [Gatsby server-side rendering APIs](https://www.gatsbyjs.org/docs/ssr-apis/) (if any). These allow customization of default Gatsby settings affecting server-side rendering.
|
|
||||||
|
|
||||||
9. **`LICENSE`**: Gatsby is licensed under the MIT license.
|
|
||||||
|
|
||||||
10. **`package-lock.json`** (See `package.json` below, first). This is an automatically generated file based on the exact versions of your npm dependencies that were installed for your project. **(You won’t change this file directly).**
|
|
||||||
|
|
||||||
11. **`package.json`**: A manifest file for Node.js projects, which includes things like metadata (the project’s name, author, etc). This manifest is how npm knows which packages to install for your project.
|
|
||||||
|
|
||||||
12. **`README.md`**: A text file containing useful reference information about your project.
|
|
||||||
|
|
||||||
## 🎓 Learning Gatsby
|
|
||||||
|
|
||||||
Looking for more guidance? Full documentation for Gatsby lives [on the website](https://www.gatsbyjs.org/). Here are some places to start:
|
|
||||||
|
|
||||||
- **For most developers, we recommend starting with our [in-depth tutorial for creating a site with Gatsby](https://www.gatsbyjs.org/tutorial/).** It starts with zero assumptions about your level of ability and walks through every step of the process.
|
|
||||||
|
|
||||||
- **To dive straight into code samples, head [to our documentation](https://www.gatsbyjs.org/docs/).** In particular, check out the _Guides_, _API Reference_, and _Advanced Tutorials_ sections in the sidebar.
|
|
||||||
|
|
||||||
## 💫 Deploy
|
|
||||||
|
|
||||||
[](https://app.netlify.com/start/deploy?repository=https://github.com/gatsbyjs/gatsby-starter-hello-world)
|
|
||||||
|
|
||||||
[](https://vercel.com/import/project?template=https://github.com/gatsbyjs/gatsby-starter-hello-world)
|
|
||||||
|
|
||||||
<!-- AUTO-GENERATED-CONTENT:END -->
|
|
||||||
44
src/components/Contacts/Contacts.js
Normal file
44
src/components/Contacts/Contacts.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import useSiteMetadata from '../../hooks/useSiteMetadata'
|
||||||
|
import './Contacts.scss'
|
||||||
|
|
||||||
|
import MemoIcon from '../../images/memo-icon.svg'
|
||||||
|
|
||||||
|
const Contacts = () => {
|
||||||
|
const { siteMetadata: { email } } = useSiteMetadata()
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="contacts">
|
||||||
|
<div className="contacts-heading">
|
||||||
|
<MemoIcon />
|
||||||
|
<h1>Контакты</h1>
|
||||||
|
</div>
|
||||||
|
<div className="contacts-description">
|
||||||
|
<p>
|
||||||
|
Для того чтобы задать вопрос, сообщить об ошибках или просто поздороваться, вы можете воспользоваться формой обратной связи или использовать контактные данные.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="contacts-form">
|
||||||
|
<h2>форма обратной связи</h2>
|
||||||
|
<form action="#">
|
||||||
|
<input placeholder="Ваше имя" type="text" />
|
||||||
|
<input placeholder="Ваша почта" type="text" />
|
||||||
|
<input placeholder="Тема сообщения" type="text" />
|
||||||
|
<textarea placeholder="Ваше сообщение..." defaultValue={""} />
|
||||||
|
<div className="submit-btn">
|
||||||
|
<button className="btn-primary">Отправить</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div className="contacts-info">
|
||||||
|
<h2>контактные данные</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href={`mailto:${email}`}>{email}</a></li>
|
||||||
|
<li><a href="/">telegram</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Contacts
|
||||||
99
src/components/Contacts/Contacts.scss
Normal file
99
src/components/Contacts/Contacts.scss
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
@import '../../styles/variables.scss';
|
||||||
|
|
||||||
|
.contacts {
|
||||||
|
text-align: center;
|
||||||
|
& h2 {
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
& .contacts-heading {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
& svg {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
& .contacts-description {
|
||||||
|
margin-bottom: 50px;
|
||||||
|
& p {
|
||||||
|
font-size: 17px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
& .contacts-form {
|
||||||
|
margin-bottom: 50px;
|
||||||
|
& h2 {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
& form {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 0 20px;
|
||||||
|
& input {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 10.5px 15px;
|
||||||
|
}
|
||||||
|
& textarea {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
min-height: 140px;
|
||||||
|
}
|
||||||
|
& input:nth-child(1) {
|
||||||
|
width: 49.5%;
|
||||||
|
}
|
||||||
|
& input:nth-child(2) {
|
||||||
|
width: 49.5%;
|
||||||
|
}
|
||||||
|
& input:nth-child(3) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
& textarea{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
& .submit-btn {
|
||||||
|
width: 100%;
|
||||||
|
& button {
|
||||||
|
min-width: 130px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
& .contacts-info {
|
||||||
|
& h2 {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
& ul {
|
||||||
|
& li {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark {
|
||||||
|
& .contacts {
|
||||||
|
color: $white-clr;
|
||||||
|
& input, textarea {
|
||||||
|
border: 1px solid rgba(153, 153, 153, 0.2);
|
||||||
|
background: #202020;
|
||||||
|
color: $white-clr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 576px) {
|
||||||
|
.contacts {
|
||||||
|
& .contacts-form {
|
||||||
|
& form {
|
||||||
|
& input:nth-child(1) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
& input:nth-child(2) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -14,7 +14,7 @@ const Header = ({ title, menuLinks }) => {
|
|||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
isMobileOpen ? document.body.style.overflowY = 'hidden' : document.body.style.overflowY = ''
|
isMobileOpen ? document.body.style.overflowY = 'hidden' : document.body.style.overflowY = ''
|
||||||
document.body.onscroll = () => window.pageYOffset >= 200 ? setIsScrolled(true) : setIsScrolled(false)
|
document.body.onscroll = () => window.pageYOffset >= 100 ? setIsScrolled(true) : setIsScrolled(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
const mobileHandler = () => {
|
const mobileHandler = () => {
|
||||||
|
|||||||
1
src/images/memo-icon.svg
Normal file
1
src/images/memo-icon.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 5.5 KiB |
23
src/pages/contacts.js
Normal file
23
src/pages/contacts.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import SEO from '../components/SEO/SEO'
|
||||||
|
import Layout from '../components/Layout/Layout'
|
||||||
|
import Contacts from '../components/Contacts/Contacts'
|
||||||
|
|
||||||
|
const ContactsPage = () => {
|
||||||
|
return (
|
||||||
|
<Layout>
|
||||||
|
<SEO title='📝 Контакты' description='Для того чтобы задать вопрос, сообщить об ошибках или просто поздороваться, вы можете воспользоваться формой обратной связи или использовать контактные данные.' />
|
||||||
|
<main>
|
||||||
|
<div className="container-fluid">
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-md-10 col-md-offset-1">
|
||||||
|
<Contacts />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</Layout>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ContactsPage
|
||||||
Loading…
x
Reference in New Issue
Block a user