@evergis/uilib-gl 1.0.111 → 1.0.113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -0
- package/dist/atoms/Icon/Icon.d.ts +1 -0
- package/dist/uilib-gl.esm.js +36 -490
- package/dist/uilib-gl.esm.js.map +1 -1
- package/package.json +18 -2
package/README.md
CHANGED
|
@@ -59,6 +59,48 @@ without rebuilding after every update use linking:
|
|
|
59
59
|
|
|
60
60
|
### How to manage icons
|
|
61
61
|
|
|
62
|
+
**Источник истины набора иконок — объект `iconTypes` в `src/atoms/Icon/Icon.ts`.**
|
|
63
|
+
Инвариант: множество codepoint-ов в `iconTypes` == глифы в `src/fonts/EverCloud.svg` ==
|
|
64
|
+
иконки в `src/fonts/selection.json`. Проверяется командой `yarn check-icons`.
|
|
65
|
+
|
|
66
|
+
#### Добавить иконку (рекомендуемый способ)
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
yarn add-icon <путь-к.svg> [--name <имя>] [--padding <0..0.4>]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Скрипт сам: нормализует SVG (SVGO), переносит контур в координаты шрифта (грид 1024,
|
|
73
|
+
флип Y, baseline), назначает следующий свободный codepoint, дописывает глиф в
|
|
74
|
+
`EverCloud.svg` + запись в `selection.json`, вставляет строку в `iconTypes` и
|
|
75
|
+
пересобирает `EverCloud.ttf/woff/eot`. После этого иконка доступна как
|
|
76
|
+
`<Icon kind="<имя>" />`. Если имя уже занято — команда падает с ошибкой.
|
|
77
|
+
|
|
78
|
+
Требования к исходному SVG: монохромный, контуры залиты (`fill`, не `stroke`),
|
|
79
|
+
есть `viewBox` (желательно квадратный и без лишних полей). Результат стоит
|
|
80
|
+
проверить визуально в Storybook (`yarn storybook`, story `Atoms/Icon`) — особенно
|
|
81
|
+
иконки с отверстиями: при неверном направлении контуров дыра может залиться,
|
|
82
|
+
тогда поправьте исходный SVG и перезапустите.
|
|
83
|
+
|
|
84
|
+
Дубликаты по содержимому: скрипт сравнивает форму новой иконки с уже имеющимися
|
|
85
|
+
(растровая «подпись» 32×32) и падает с ошибкой, если такая иконка уже есть. Обойти
|
|
86
|
+
намеренно — флаг `--force`.
|
|
87
|
+
|
|
88
|
+
#### Удалить иконку
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
yarn remove-icon <имя> [<имя2> ...] [--dry-run]
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Снимает строку из `iconTypes` и пересобирает шрифт: глиф уходит из `EverCloud.svg`,
|
|
95
|
+
`selection.json` и всех бинарников. Если codepoint иконки используется ещё одним
|
|
96
|
+
именем-алиасом (напр. `geom_polygon`/`geom_multipolygon`), глиф сохраняется —
|
|
97
|
+
снимается только имя.
|
|
98
|
+
|
|
99
|
+
Вспомогательные команды: `yarn build-font` — пересобрать шрифт из текущих
|
|
100
|
+
исходников (с приведением к `iconTypes`); `yarn check-icons` — проверить инвариант.
|
|
101
|
+
|
|
102
|
+
#### Ручной способ через icomoon (fallback)
|
|
103
|
+
|
|
62
104
|
1. https://icomoon.io/app/#/projects
|
|
63
105
|
2. Import Project из `src/fonts/selection.json`
|
|
64
106
|
3. Load
|
|
@@ -66,6 +108,12 @@ without rebuilding after every update use linking:
|
|
|
66
108
|
5. Generate Font в правом нижнем углу
|
|
67
109
|
6. Замена файлов `src/fonts` на загруженные из архива (папка fonts и selection.json)
|
|
68
110
|
|
|
111
|
+
Совместимость двух систем: `yarn add-icon` хранит путь в `selection.json` в тех же
|
|
112
|
+
координатах, что и icomoon (связь с глифом шрифта — `font_y = 832 − stored_y`).
|
|
113
|
+
Поэтому оба workflow взаимозаменяемы: `selection.json` можно ре-импортировать в
|
|
114
|
+
icomoon и перегенерировать шрифт (иконки, добавленные скриптом, отобразятся
|
|
115
|
+
корректно), а результат генерации icomoon обрабатывается `yarn build-font` штатно.
|
|
116
|
+
|
|
69
117
|
## Used libraries, languages and tools
|
|
70
118
|
|
|
71
119
|
1. Typescript [Docs](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html)
|
|
@@ -347,6 +347,7 @@ export declare const iconTypes: {
|
|
|
347
347
|
bool: string;
|
|
348
348
|
json: string;
|
|
349
349
|
rollup: string;
|
|
350
|
+
no_geom: string;
|
|
350
351
|
};
|
|
351
352
|
export declare const Icon: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, IIconProps, never>;
|
|
352
353
|
export declare const injectIcon: (icon: IconTypesKeys) => import("styled-components").FlattenInterpolation<import("styled-components").ThemeProps<import("styled-components").DefaultTheme>>;
|