@evergis/uilib-gl
v1.0.117
Published
π **Before start:**
Downloads
2,694
Keywords
Readme
π΄ Evergis UI
Contributing
π Before start:
yarnUpdate webstorm to >2017.3.3
Install Styled Components plugin Jetbrains plugins
π οΈ Start dev:
yarn storybookOpen in browser localhost:6006
β Start tests:
yarn testHow to release
Π‘ΠΎΠ·Π΄Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π΅ΡΠΊΡ ΠΈΠ·
masterΠΠ·ΠΌΠ΅Π½ΠΈΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π²
package.jsonyarn- ΠΎΡΠ²Π΅ΠΆΠΈΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈyarn lint:fix- Π°Π²ΡΠΎΠΏΠΎΠΏΡΠ°Π²ΠΊΠ° eslint ΠΎΡΠΈΠ±ΠΎΠΊyarn build- ΡΠ±ΠΎΡΠΊΠ°Π ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ»
.npmrcΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ://registry.npmjs.org/:_authToken=npm_XXXΠΠ΄Π΅ΡΡ
npm_XXX-- granular token; ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠΠΠΠ: Ρ 09.12.2025 ΡΡΠΎΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΎΠΊΠ΅Π½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡ 90 Π΄Π½Π΅ΠΉ.ΠΡΠΈΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅: ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΎΠΊΠ΅Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΠΠ―ΠΠΠ’ΠΠΠ¬ΠΠ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠΏΡΠΈΡ
Bypass two-factor authentication (2FA).npm login- Π·Π°Π»ΠΎΠ³ΠΈΠ½ΠΈΡΡΡΡ Π² npm (ΠΠΠΠΠ: Ρ 12.12.2025 ΡΠ΅ΡΡΠΈΡ Π΄Π»ΠΈΡΡΡ 12 ΡΠ°ΡΠΎΠ², ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π²ΡΡ Π»ΠΈ ΠΌΡ Π΅ΡΡ Π·Π°Π»ΠΎΠ³ΠΈΠ½Π΅Π½Ρ, ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρnpm whoami).npm publish- ΠΏΠ°Π±Π»ΠΈΡΠ‘ΠΎΠ·Π΄Π°ΡΡ ΠΠ ΠΈΠ· Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π²
master
How to link
For testing uilib locally in client (or other projects) without rebuilding after every update use linking:
yarn build- ΡΠ±ΠΎΡΠΊΠ°yarn link- ΡΠΎΠ·Π΄Π°ΡΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° uilib- ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ client ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ
yarn link "@evergis/uilib-gl"- ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ uilib ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡyarn start- Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ uilibyarn build- ΠΏΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² uilib Π΄Π΅Π»Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΡ
How to manage icons
ΠΡΡΠΎΡΠ½ΠΈΠΊ ΠΈΡΡΠΈΠ½Ρ Π½Π°Π±ΠΎΡΠ° ΠΈΠΊΠΎΠ½ΠΎΠΊ β ΠΎΠ±ΡΠ΅ΠΊΡ iconTypes Π² src/atoms/Icon/Icon.ts.
ΠΠ½Π²Π°ΡΠΈΠ°Π½Ρ: ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ codepoint-ΠΎΠ² Π² iconTypes == Π³Π»ΠΈΡΡ Π² src/fonts/EverCloud.svg ==
ΠΈΠΊΠΎΠ½ΠΊΠΈ Π² src/fonts/selection.json. ΠΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ yarn check-icons.
ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠΊΠΎΠ½ΠΊΡ (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΡΠΏΠΎΡΠΎΠ±)
yarn add-icon <ΠΏΡΡΡ-ΠΊ.svg> [--name <ΠΈΠΌΡ>] [--padding <0..0.4>]Π‘ΠΊΡΠΈΠΏΡ ΡΠ°ΠΌ: Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠ΅Ρ SVG (SVGO), ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡ ΠΊΠΎΠ½ΡΡΡ Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΡΠΈΡΡΠ° (Π³ΡΠΈΠ΄ 1024,
ΡΠ»ΠΈΠΏ Y, baseline), Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ codepoint, Π΄ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π³Π»ΠΈΡ Π²
EverCloud.svg + Π·Π°ΠΏΠΈΡΡ Π² selection.json, Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΡΠΎΠΊΡ Π² iconTypes ΠΈ
ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ EverCloud.ttf/woff/eot. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΈΠΊΠΎΠ½ΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΊΠ°ΠΊ
<Icon kind="<ΠΈΠΌΡ>" />. ΠΡΠ»ΠΈ ΠΈΠΌΡ ΡΠΆΠ΅ Π·Π°Π½ΡΡΠΎ β ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ.
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌΡ SVG: ΠΌΠΎΠ½ΠΎΡ
ΡΠΎΠΌΠ½ΡΠΉ, ΠΊΠΎΠ½ΡΡΡΡ Π·Π°Π»ΠΈΡΡ (fill, Π½Π΅ stroke),
Π΅ΡΡΡ viewBox (ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠΉ ΠΈ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ
ΠΏΠΎΠ»Π΅ΠΉ). Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠΎΠΈΡ
ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ Π² Storybook (yarn storybook, story Atoms/Icon) β ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ
ΠΈΠΊΠΎΠ½ΠΊΠΈ Ρ ΠΎΡΠ²Π΅ΡΡΡΠΈΡΠΌΠΈ: ΠΏΡΠΈ Π½Π΅Π²Π΅ΡΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΠΎΠ² Π΄ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π»ΠΈΡΡΡΡ,
ΡΠΎΠ³Π΄Π° ΠΏΠΎΠΏΡΠ°Π²ΡΡΠ΅ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ SVG ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅.
ΠΡΠ±Π»ΠΈΠΊΠ°ΡΡ ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ: ΡΠΊΡΠΈΠΏΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΡΠΎΡΠΌΡ Π½ΠΎΠ²ΠΎΠΉ ΠΈΠΊΠΎΠ½ΠΊΠΈ Ρ ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈΡΡ
(ΡΠ°ΡΡΡΠΎΠ²Π°Ρ Β«ΠΏΠΎΠ΄ΠΏΠΈΡΡΒ» 32Γ32) ΠΈ ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠ°Ρ ΠΈΠΊΠΎΠ½ΠΊΠ° ΡΠΆΠ΅ Π΅ΡΡΡ. ΠΠ±ΠΎΠΉΡΠΈ
Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ β ΡΠ»Π°Π³ --force.
Π£Π΄Π°Π»ΠΈΡΡ ΠΈΠΊΠΎΠ½ΠΊΡ
yarn remove-icon <ΠΈΠΌΡ> [<ΠΈΠΌΡ2> ...] [--dry-run]Π‘Π½ΠΈΠΌΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ ΠΈΠ· iconTypes ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΡΡΠΈΡΡ: Π³Π»ΠΈΡ ΡΡ
ΠΎΠ΄ΠΈΡ ΠΈΠ· EverCloud.svg,
selection.json ΠΈ Π²ΡΠ΅Ρ
Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠΎΠ². ΠΡΠ»ΠΈ codepoint ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΡ ΠΎΠ΄Π½ΠΈΠΌ
ΠΈΠΌΠ΅Π½Π΅ΠΌ-Π°Π»ΠΈΠ°ΡΠΎΠΌ (Π½Π°ΠΏΡ. geom_polygon/geom_multipolygon), Π³Π»ΠΈΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ β
ΡΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΡ.
ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ: yarn build-font β ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ ΡΡΠΈΡΡ ΠΈΠ· ΡΠ΅ΠΊΡΡΠΈΡ
ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² (Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊ iconTypes); yarn check-icons β ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½Ρ.
Π ΡΡΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠ΅Π· icomoon (fallback)
- https://icomoon.io/app/#/projects
- Import Project ΠΈΠ·
src/fonts/selection.json - Load
- ΠΠ»ΠΈΠΊ ΠΏΠΎ Π³Π°ΠΌΠ±ΡΡΠ³Π΅Ρ Π½Π°Π±ΠΎΡΠ° EverCloud Π² ΠΏΡΠ°Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ Import to Set
- Generate Font Π² ΠΏΡΠ°Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ³Π»Ρ
- ΠΠ°ΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²
src/fontsΠ½Π° Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΈΠ· Π°ΡΡ ΠΈΠ²Π° (ΠΏΠ°ΠΏΠΊΠ° fonts ΠΈ selection.json)
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Π΄Π²ΡΡ
ΡΠΈΡΡΠ΅ΠΌ: yarn add-icon Ρ
ΡΠ°Π½ΠΈΡ ΠΏΡΡΡ Π² selection.json Π² ΡΠ΅Ρ
ΠΆΠ΅
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ
, ΡΡΠΎ ΠΈ icomoon (ΡΠ²ΡΠ·Ρ Ρ Π³Π»ΠΈΡΠΎΠΌ ΡΡΠΈΡΡΠ° β font_y = 832 β stored_y).
ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ±Π° workflow Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡ: selection.json ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅-ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²
icomoon ΠΈ ΠΏΠ΅ΡΠ΅Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈΡΡ (ΠΈΠΊΠΎΠ½ΠΊΠΈ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠΌ, ΠΎΡΠΎΠ±ΡΠ°Π·ΡΡΡΡ
ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ), Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ icomoon ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ yarn build-font ΡΡΠ°ΡΠ½ΠΎ.
Used libraries, languages and tools
Style Guide
Every component in separate directory
Test file in same directory, with name *.test.tsx
Do not write snapshot tests for components, for snapshot testing used stories, test only specific behavior and functions
Story file in same directory, with name *.story.tsx
Write stories for every possible component state
Every component must be working without any props
Do not create pull request with any linters or ts errors
File naming convention:
- PascalCase for file exporting classes and Components
- camelCase for file exporting objects and functions
- kebab-case for module replacements
Do not use default exports
Write component description in source file
Completed Component must include the following:
- Stories for every possible component state
- Tests for specific behaviors and functions
- Declared Theme variables
- Props type
- Component description
Project structure
- Import "styled-components" maps to styled-with-theme.ts
- theme is theme folder π’
- Simple reusable styled components and html tags with style are located in atoms folder
- Groups of atoms are located in molecules folder
- Groups of atoms, molecules and other are located in organisms folder
Todo
- Upgrade tippy (tooltip) package version
- Upgrade imask & react-imask packages version
