В директории public
хранится манифест, подключение разных библиотек, скрипты на запуск и фавиконки. В директории src
хранятся непосредственно файлы с кодом экранов.
Здесь можно найти index.html
с head
, body
и скриптами на запуск проекта, куда можно, например, вставить скрипты метрики. Здесь же подключаются шрифты.
Главный скрипт с запуском всего приложения — index.js
, именно он запускает модуль с приложением App.js
. Также здесь подключаются:
- Стили Bootstrap.
index.css
с фундаментальными стилями, относящимися ко всему проекту. Например, стили для тегов.typography.css
со стилями для текста. Все стили задаются с помощью селекторов CSS-классов.App.css
с временными стилями. В проекте не предполагается использование иных CSS-файлов кроме перечисленных уже двух с заданными функциями, вместо этого в продуктовой версии исползьзуется библиотекаstyled-components
. Но если решить задачу с помощью библиотеки невозможно или разработчику не хватает компетенций, то временно прописать селекторы с CSS-классами можно в этот файл. Далее более старший по уровню разработчик перепишет все стили с использованием библиотеки и снова очистит его.
Также в src
хранятся несколько директорий с главными принципом «название директории описывает содержимое».
Универсальные компоненты, которые не привязаны своим использованием к конкретному разделу.
React-компоненты из SVG иконок. Применяются в коде как обычные компоненты в виде HTML-тегов. Например, <SearchIcon/>
внутри какого-либо контейнера поместит иконку поиска. Иконки можно спокойно помещать в любые контейнеры наравне с текстом.
Оригиналы изображений в PNG. Для использования необходимо вставлять путь в атрибут src
тега img
.
Экраны с собственными компонентами. Каждый визуальный блок описан в своей директории и состоит из главного JS-файла, одноимённого с названием директории, и компонентов, используемых для описания блока. Если компонентов для данного визуального блока использовано больше 2, их очень желательно собрать в отдельной папке Components
.
- React. Особенностью являются то, что вместо атрибута
class
необходимо использоватьclassName
. Это работает абсолютно так же, как иclass
в HTML, просто другой стандарт в нейминге. - Bootstrap. Полезными в вёрстке будут материалы: про отступы, про флекс, про грид.
styled-components
. Полезным в вёрстке будет стартовый материал. В проекте использование библиотеки ограничивается быстрым созданием компонентов, наследуемых от стандартных тегов в HTML, но с дополнительными стилями, которые записываются внутри `обратных кавычек`. Например, сниппет снизу создаёт обычныйdiv
, потом применяет к нему стиль, где фоновый цвет становится красным, а затем сохраняет это как компонентRedRect
.В дальнейшем этот прямоугольник можно использовать как обычный React-компонент:const RedRect = styled.div` background-color: red; `;
<RedRect></RedRect>
или<RedRect/>
.
Универсальная обёртка, чтобы сделать любой элемент кликабельным в браузере. Никаких коллбэков нет, никакую функцию ваш кликабельный объект не сможет выполнять, это нужно только чтобы визуально курсор сменился со стрелочки на руку с пальчиком. Этот компонент использован для всех кнопок, его не нужно редактировать.
Компоненты для кнопок, оба имеют необязательный атрибут minWidth
. Дефолтное значение на данный момент 144px
. Если контента больше чем на 144px
, то кнопка растянется в ширину, если меньше — примет ширину minWidth
.
Контент для кнопок указывать внутри открывающего и закрывающего тегов.
Пример использования без атрибутов:
<PrimaryButton>Нормалбная кнобка</PrimaryButton>
Примеры с атрибутом:
<PrimaryButton midWidth='0px'>Уская кнобка</PrimaryButton>
<PrimaryButton midWidth='800px'>Шерокая кнобка ваще капец</PrimaryButton>
Компонент для кнопки, состоящей из иконки и подписи справа как, например, кнопка «На главную».
Получает два атрибута: обязательный icon
и опциональный text
, иконку надо указывать в фигурных скобках как HTML-тег, а текст как обычно в кавычках. Пример:
<IconAndTextButton text='На главную' icon={<ArrowBackIcon/>}/>
Компонент для кнопки, состоящей из одной только иконки. Пример: кнопки с чатом и уведомлениями в хэдере. Внутри это Clickable
с opacity
80% на ховер.
Получает один обязательный атрибут icon
с иконкой внутри фигурных скобок как обыкновенный компонент.
Пример:
<IconOnlyButton icon={<MessagesIcon/>}/>
Компонент для select
с заголовком. Принимает два атрибута: необязательный title
и обязательный options
. options
— любой итерируемый объект, title
— обычный текст в кавычках. Если заголовка не передать — селектор просто останется без заголовка. Пример:
<TitledSelector
title='Тип организации'
options={[
'Салон красоты',
'Парикмахерская'
]}
/>
Компонент для input
с заголовком. Принимает два необязательных атрибута: title
и def
. Оба — обычные тексты в кавычках. title
— заголовок над инпутом, а def
— дефолтное значение, которое уже введено в инпут. Если заголовок оставить пустым, сверху не будет заголовка, а если def
— дефолтно инпут будет пустым.
Пример:
<TitledTextInput title='Название компании' def='SPBEAUTY'/>
Если вдруг необходимо использовать компонент, но появляется ошибка вроде «"название компонента" is not defined», значит тебе необходимо сделать импорт этого элемента. Для этого посмотрим на пример импорта SearchIcon
внутри компонента SearchField
:
import SearchIcon from '../../../../Icons/SearchIcon';
Сначала надо написать import
, потом название компонента, который нужен, потом from
, а потом относительный путь. Относительный путь означает, что ты двигаешься из директории файла, в котором пишешь. Две точки (..
) значат, что ты прыгаешь на одну директорию назад.
То есть в примере выше SearchField
лежит по такому пути:
мы тут
src/Layouts/Page/Header/Components/SearchField
Прыгаем назад 4 раза и оказываемся в директории src
. Из неё уже можно попасть в Icons
, где находится файл SearchIcon.js
с нужным нам компонентом. Но, как ты мог заметить, не надо указывать расширение файла с компонентом, просто название!
Если необходимо указать цвет с прозрачностью, то стоит воспользоваться функцией rgba
в CSS вместо HEX. Например, rgba(255,0,0,0.3)
указывает красный цвет с прозрачночтью в 30%. Посмотреть расшифровку цвета в rgba в Фигме можно выбрав «RGB» в выпадающем меню слева от поля ввода.