mz-mobile-ui-kit v0.9.2
mz-mobile-ui-kit
mz-mobile-ui-kit представляет из себя npm-пакет с цветами, константами, и готовыми компонентами для приложения
Структура компонентов в пакете повторяет структуру визуальных компонентов в Figma и основана на паттерне Атомарный дизайн/Atomic Design
Добавление UI-kit в приложение
- добавить пакет
yarn add mz-mobile-ui-kit- открыть файл
package.jsonпроектаmz-mobile-ui-kitи установить все пакеты из секцииpeerDependencies, соблюдая указанные там версии - если версия зависимости в
peerDependenciesmz-mobile-ui-kitи в целевом приложении(которое использует ui-кит) должна отличаться, то эту зависимость необходимо прописать в секцииexpoфайлаpackage.jsonцелевого приложения:
"expo": {
"autolinking": {
"exclude": [
"react-native-reanimated"
]
}
}Разработка пакета UI-kit
Запуск на устройстве
сам UI-кит - это npm-пакет, наблюдение за изменениями в нем при разработке ведется через приложение "example", лежащее в отдельной директории проекта. В приложении example пакет mz-mobile-ui-kit подключен из локальной директории проекта, UI-кит не нужно опубликовывать для получения изменений
для начала разработки необходимо:
- установить приложение Expo Go на тестовое устройство
- поставить зависимости в корневой директории проекта
yarn- запустить expo-бандлер в директории
example
cd example
expo startзапустить Expo Go на устройстве и подключиться к запущенному бандлеру
Установка нового пакета в UI-kit
Нативный пакет
Очень желательно, чтобы нативный пакет поддерживался версией expo приложения example, иначе в приложении example нельзя будет использовать этот нативный пакет и отлаживать ui-кит будет сложнее
для проверки этого можно запустить в директории example команду
expo install <native-package-name>Это установит подходящую для expo версию пакета. Или не установит вообще :-)
Установленную версию пакета нужно использовать в дальнейших действиях ниже
добавить новый пакет как зависимость в файл package.json в секции:
devDependencies(нужно для приложенияexample)
"devDependencies": {
......
"react-native-reanimated": "2.8.0",
......
},peerDependencies(нужно для работы в целевом приложении)
"peerDependencies": {
......
"react-native-reanimated": ">= 2.8.0",
......
},Обычный пакет
добавить новый пакет как зависимость в файл package.json в секции:
devDependencies(нужно для приложенияexample)
"devDependencies": {
......
"react-native-reanimated": "2.8.0",
......
},dependencies(для каскадного подключения зависимости в целевое приложение)
"dependencies": {
......
"react-native-reanimated": ">= 2.8.0",
......
},после всех изменений запустить установку пакетов в корневой директории UI-кита
yarnДобавление новой иконки в UI-kit
найти в Figma новую иконку и экспортировать как
svg, причем нужно экспортировать не саму группу иконки, а весь фрейм размером 24×24в проекте, в директории
src/assets/svgсоздать файл для новой иконкиNewIcon.tsx
import * as React from 'react'
import { Svg, Path, SvgProps } from 'react-native-svg'
import { Colors } from 'src/constants'
export const NewIcon = ({ fill = Colors.Text.SECONDARY, ...props }: SvgProps) => (
<Svg viewBox="0 0 24 24" fill="none" {...props}>
<Path
fill={fill}
fillRule="evenodd"
clipRule="evenodd"
d="M2.253 6.256a.855.855 .... 0 0 1 1.22 0 1 0-1.236Z"
/>
</Svg>
)открыть экспортированный
svg-файл в IDE, скопировать из него пропсы каждого из html-тегов(кроме<svg>- он уже подготовлен в примере выше), в некоторых иконках может быть два<path />- тогда нужно будет добавить еще один<Path ... />или могу встречаться другие html-теги - для них нужно создать соответствующие JSX-элементы изreact-native-svgи скопировать их пропсы в эти JSX-элементы, в каждом JSX-элементе не забываем дописывать пропсfill={fill}в файле
index.tsx:
- в
src/assets/svgдобавляем импорт новой иконки:
import { NewIcon } from './NewIcon'- в
export type IconNameдописать название иконкиnew-icon - в
export const Svgдописать вswitch .. case
case 'new-icon':
return <NewIcon {...props} />Добавление нового компонента в UI-kit
- необходимо соблюдать атомарную структуру компонентов и класть компонент в соответствующую директорию(уровень нового компонента(ов) должен быть прописан в Figma)
- компоненты не должны иметь дефолтного экспорта, только именованные
- у функции/класса компонента обязательно должно быть прописано свойство displayName в виде
NewComponent.displayName = 'NewComponent' - ссылку на новый компонент необходимо добавить в вышележащий
index.ts после создания компонента необходимо добавить примеры его использования в подходящий раздел/экран приложения
example
License
MIT
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago