@huntflow/ui 0.2.32 → 0.2.34-test.0
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 +109 -15
- package/dist/components/ui-icon/icon-list.d.ts +1 -1
- package/dist/components/ui-radio-button/radio-button.vue.d.ts +1 -1
- package/dist/components/ui-radio-button/types.d.ts +5 -1
- package/dist/components/ui-radio-group/radio-group.vue.d.ts +1 -1
- package/dist/components/ui-radio-group/types.d.ts +5 -0
- package/dist/global.css +1 -1
- package/dist/sprite-E089mw8d.js +4 -0
- package/dist/ui.es.js +771 -750
- package/package.json +2 -1
- package/dist/sprite-M9eVrGg7.js +0 -4
package/README.md
CHANGED
|
@@ -21,27 +21,121 @@
|
|
|
21
21
|
|
|
22
22
|
Для добавления UiKit в ваш проект выполните:
|
|
23
23
|
|
|
24
|
-
```
|
|
24
|
+
```bash
|
|
25
25
|
npm install @huntflow/ui
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
### Подключение в проекте
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
Подключите глобальные стили и один раз внедрите SVG-спрайт для иконок:
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
import '@huntflow/ui/dist/global.css';
|
|
34
|
+
import { injectSvgSprite } from '@huntflow/ui';
|
|
35
|
+
|
|
36
|
+
await injectSvgSprite();
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 📚 Документация и разработка
|
|
40
|
+
|
|
41
|
+
- **Storybook** — каталог компонентов и примеры использования. Локальный запуск:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
31
44
|
npm run storybook
|
|
32
45
|
```
|
|
33
46
|
|
|
34
47
|
## 🎨 Иконки
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
# Актуализация иконок
|
|
49
|
+
|
|
50
|
+
Чтобы актуализировать иконки, выполните следующие шаги:
|
|
51
|
+
|
|
52
|
+
1. Создайте файл `.env` (можно использовать пример из `.env.develop`).
|
|
53
|
+
|
|
54
|
+
2. Укажите необходимые переменные:
|
|
55
|
+
|
|
56
|
+
- **`FIGMA_TOKEN`** — персональный токен Figma
|
|
57
|
+
*(Иконка профиля -> Settings -> Security -> Personal access tokens -> Generate new token)*
|
|
58
|
+
|
|
59
|
+
- **`FIGMA_FILE_ID`** — ID файла Figma
|
|
60
|
+
Пример:
|
|
61
|
+
```
|
|
62
|
+
Ссылка: https://www.figma.com/design/DV8Zm9gdvUocVlrqD8egvV/Igor-(New-UI-Kit)?node-id=1581-180&p=f&t=YzO5zlBlx3wPY5HW-0
|
|
63
|
+
FIGMA_FILE_ID = DV8Zm9gdvUocVlrqD8egvV
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
- **`NODE_ID`** — ID узла Figma
|
|
67
|
+
Пример из той же ссылки:
|
|
68
|
+
```
|
|
69
|
+
NODE_ID = 1581-180, указываем через двоеточие (1581:180)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
3. Скачайте новые иконки:
|
|
73
|
+
```bash
|
|
74
|
+
npm run icons:download
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
4. Обновите типы и список иконок:
|
|
78
|
+
```bash
|
|
79
|
+
npm run icons:update-list
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
5. Соберите SVG-спрайт из иконок:
|
|
83
|
+
```bash
|
|
84
|
+
npm run sprite
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Для отображения иконок нужно один раз внедрить SVG-спрайт:
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
import { injectSvgSprite } from '@huntflow/ui';
|
|
91
|
+
|
|
92
|
+
await injectSvgSprite();
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
# Добавление новых токенов из Figma
|
|
96
|
+
|
|
97
|
+
1. В Figma откройте **Plugins → Sync Variables**.
|
|
98
|
+
|
|
99
|
+
2. В правой панели в плагине:
|
|
100
|
+
- В правой панели где открылся плагин ставим галочки
|
|
101
|
+
- Жмем **Generate → Copy to clipboard**.
|
|
102
|
+
|
|
103
|
+
3. Вставьте скопированные токены в файл:
|
|
104
|
+
```
|
|
105
|
+
src/assets/css/token.css
|
|
106
|
+
```
|
|
107
|
+
4. В терминале выполните команду для конвертации токенов:
|
|
108
|
+
```bash
|
|
109
|
+
npm run tokens:convert
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Компоненты
|
|
113
|
+
|
|
114
|
+
| Компонент | Описание |
|
|
115
|
+
|-----------|----------|
|
|
116
|
+
| `UiButton` | Стандартная кнопка |
|
|
117
|
+
| `UiButtonIcon` | Кнопка только с иконкой, без текста |
|
|
118
|
+
| `UiButtonLink` | Кнопка в виде ссылки, с опциональной иконкой и замочком |
|
|
119
|
+
| `UiIcon` | Иконка из SVG-спрайта |
|
|
120
|
+
| `UiInput` | Инпут |
|
|
121
|
+
| `UiTextarea` | Многострочное поле ввода |
|
|
122
|
+
| `UiLabel` | Лейбл для полей форм |
|
|
123
|
+
| `UiLoader` | Индикатор загрузки (спиннер) |
|
|
124
|
+
| `UiPlank` | Плашка |
|
|
125
|
+
| `UiText` | Текстовый блок |
|
|
126
|
+
| `UiTitle` | Заголовок (h1–h4) |
|
|
127
|
+
| `UiError` | Отображение сообщения об ошибке в формах |
|
|
128
|
+
| `UiAvatar` | Аватар пользователя |
|
|
129
|
+
| `UiStack` | Flex-контейнер для компоновки элементов с настройкой gap и выравнивания |
|
|
130
|
+
| `UiRadioGroup` | Группа радиокнопок |
|
|
131
|
+
| `UiCheckboxGroup` | Группа чекбоксов |
|
|
132
|
+
| `UiDropzone` | Область перетаскивания и выбора файлов для загрузки |
|
|
133
|
+
|
|
134
|
+
## Пример использования
|
|
135
|
+
|
|
136
|
+
```ts
|
|
137
|
+
import { UiButton, UiIcon } from '@huntflow/ui';
|
|
138
|
+
|
|
139
|
+
<ui-button>Кнопка</ui-button>
|
|
140
|
+
<ui-icon name="icon-name" />
|
|
47
141
|
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const icons: readonly ["2-users-20", "add-reaction-16", "ai-20", "alert-20", "alert-24", "alert-fill-20", "alert-fill-24", "alert-fill-28", "archive-16", "archive-18", "archive-20", "archive-24", "archive-28", "arrow-down-20", "arrow-left-18", "arrow-left-20", "arrow-narrow-left-24", "arrow-narrow-left-bold-24", "arrow-narrow-right-24", "arrow-narrow-right-bold-20", "arrow-narrow-right-bold-24", "arrow-right-18", "arrow-right-20", "arrow-up-20", "attention-16", "attention-18", "attention-20", "attention-24", "attention-28", "calendar-16", "calendar-18", "calendar-20", "calendar-24", "calendar-28", "check-16", "check-18", "check-20", "check-24", "check-28", "check-color-16", "check-color-18", "check-color-20", "check-color-24", "check-color-28", "chevron-down-16", "chevron-down-18", "chevron-down-20", "chevron-down-24", "chevron-down-28", "chevron-left-16", "chevron-left-18", "chevron-left-20", "chevron-left-24", "chevron-left-28", "chevron-right-16", "chevron-right-18", "chevron-right-20", "chevron-right-24", "chevron-right-28", "chevron-up-16", "chevron-up-18", "chevron-up-20", "chevron-up-24", "chevron-up-28", "circle-download-20", "clip-16", "clip-18", "clip-20", "clip-24", "clip-28", "clipboard-16", "clipboard-18", "clipboard-20", "clipboard-24", "clipboard-28", "clock-16", "clock-18", "clock-20", "clock-24", "clock-28", "clock-fill-16", "clock-fill-18", "clock-fill-20", "clock-fill-24", "clock-fill-28", "close-16", "close-18", "close-20", "close-28", "copy-20", "crown-16", "crown-18", "crown-20", "crown-24", "crown-28", "dots-horizontal-20", "dots-vertical-20", "download-16", "download-18", "download-20", "download-24", "download-28", "download-circle-16", "download-circle-18", "drag-16", "drag-20", "drag-24", "drop-down", "edit-16", "edit-18", "edit-20", "edit-24", "edit-28", "feedback-16", "feedback-18", "feedback-20", "feedback-24", "feedback-28", "folder-16", "folder-18", "folder-20", "folder-24", "folder-28", "graph-16", "graph-18", "graph-20", "graph-24", "graph-28", "home-16", "home-18", "home-20", "home-24", "home-28", "info-16", "info-18", "info-20", "info-24", "info-28", "link-16", "link-18", "link-20", "link-24", "link-28", "lock-16", "lock-18", "lock-20", "lock-24", "lock-28", "lock-color-16", "lock-color-18", "lock-color-20", "lock-color-24", "lock-color-28", "max-16", "max-18", "max-20", "max-28", "max-contour-20", "max-contour-24", "message-16", "message-18", "message-20", "message-24", "message-28", "message-open-18", "message-replied-18", "mute-20", "mute-fill-20", "next-20", "notches-16", "options-16", "options-18", "options-20", "options-24", "options-28", "options-lock-20", "phone-16", "phone-18", "phone-20", "phone-24", "phone-28", "phone-error-16", "phone-error-18", "phone-error-20", "phone-error-24", "phone-error-28", "phone-fill-16", "phone-fill-18", "phone-fill-20", "phone-fill-24", "phone-fill-28", "plus-16", "plus-18", "plus-20", "plus-circle-16", "plus-circle-18", "plus-circle-20", "plus-circle-24", "plus-circle-28", "print-16", "print-18", "print-20", "print-24", "print-28", "priority-20", "question-16", "question-18", "question-20", "question-24", "question-28", "refresh-18", "refresh-20", "refresh-24", "rocket-16", "rocket-18", "rocket-20", "rocket-24", "rocket-28", "search-16", "search-18", "search-20", "search-24", "search-28", "semiselected-16", "semiselected-18", "semiselected-20", "semiselected-24", "semiselected-28", "settings-16", "settings-18", "settings-20", "settings-24", "settings-28", "share-16", "share-18", "share-20", "share-24", "share-28", "shield-attention-20", "shield-attention-lock-20", "shield-fill-16", "shield-fill-20", "shield-tick-20", "shuffle-20", "sms-16", "sms-18", "sms-20", "sms-24", "sms-28", "star-16", "star-18", "star-20", "star-24", "star-28", "stop-color-16", "stop-color-18", "stop-color-20", "stop-color-24", "stop-color-28", "tag-18", "tag-20", "team-24", "telegram-16", "telegram-18", "telegram-20", "telegram-24", "telegram-28", "telegram-contour-20", "telegram-contour-24", "text-16", "text-18", "text-20", "text-24", "text-28", "thumbs-28", "thumbsup-16", "thumbsup-18", "thumbsup-20", "thumbsup-24", "trash-16", "trash-18", "trash-20", "trash-24", "trash-28", "unmute-18", "unmute-20", "upload-16", "upload-18", "upload-20", "url-16", "url-18", "url-20", "url-24", "url-28", "verification-fill-20", "viber-16", "viber-18", "viber-20", "viber-24", "viber-28", "viber-contour-16", "viber-contour-20", "viber-contour-24", "viber-contour-28", "whatsapp-16", "whatsapp-18", "whatsapp-20", "whatsapp-24", "whatsapp-28", "whatsapp-contour-20", "whatsapp-contour-24", "x-circle-20", "zoom-16", "zoom-18", "zoom-20", "zoom-24", "zoom-28"];
|
|
1
|
+
export declare const icons: readonly ["2-users-20", "add-reaction-16", "ai-20", "alert-20", "alert-24", "alert-fill-20", "alert-fill-24", "alert-fill-28", "archive-16", "archive-18", "archive-20", "archive-24", "archive-28", "arrow-down-20", "arrow-left-18", "arrow-left-20", "arrow-narrow-left-24", "arrow-narrow-left-bold-24", "arrow-narrow-right-24", "arrow-narrow-right-bold-20", "arrow-narrow-right-bold-24", "arrow-right-18", "arrow-right-20", "arrow-up-20", "attention-16", "attention-18", "attention-20", "attention-24", "attention-28", "calendar-16", "calendar-18", "calendar-20", "calendar-24", "calendar-28", "check-16", "check-18", "check-20", "check-24", "check-28", "check-color-16", "check-color-18", "check-color-20", "check-color-24", "check-color-28", "chevron-down-16", "chevron-down-18", "chevron-down-20", "chevron-down-24", "chevron-down-28", "chevron-left-16", "chevron-left-18", "chevron-left-20", "chevron-left-24", "chevron-left-28", "chevron-right-16", "chevron-right-18", "chevron-right-20", "chevron-right-24", "chevron-right-28", "chevron-up-16", "chevron-up-18", "chevron-up-20", "chevron-up-24", "chevron-up-28", "circle-download-20", "clip-16", "clip-18", "clip-20", "clip-24", "clip-28", "clipboard-16", "clipboard-18", "clipboard-20", "clipboard-24", "clipboard-28", "clock-16", "clock-18", "clock-20", "clock-24", "clock-28", "clock-fill-16", "clock-fill-18", "clock-fill-20", "clock-fill-24", "clock-fill-28", "close-16", "close-18", "close-20", "close-28", "copy-20", "crown-16", "crown-18", "crown-20", "crown-24", "crown-28", "dots-horizontal-20", "dots-vertical-20", "download-16", "download-18", "download-20", "download-24", "download-28", "download-circle-16", "download-circle-18", "drag-16", "drag-20", "drag-24", "drop-down", "edit-16", "edit-18", "edit-20", "edit-24", "edit-28", "feedback-16", "feedback-18", "feedback-20", "feedback-24", "feedback-28", "folder-16", "folder-18", "folder-20", "folder-24", "folder-28", "graph-16", "graph-18", "graph-20", "graph-24", "graph-28", "home-16", "home-18", "home-20", "home-24", "home-28", "info-16", "info-18", "info-20", "info-24", "info-28", "link-16", "link-18", "link-20", "link-24", "link-28", "lock-16", "lock-18", "lock-20", "lock-24", "lock-28", "lock-color-16", "lock-color-18", "lock-color-20", "lock-color-24", "lock-color-28", "max-16", "max-18", "max-20", "max-28", "max-contour-18", "max-contour-20", "max-contour-24", "message-16", "message-18", "message-20", "message-24", "message-28", "message-open-18", "message-replied-18", "mute-20", "mute-fill-20", "next-20", "notches-16", "options-16", "options-18", "options-20", "options-24", "options-28", "options-lock-20", "phone-16", "phone-18", "phone-20", "phone-24", "phone-28", "phone-error-16", "phone-error-18", "phone-error-20", "phone-error-24", "phone-error-28", "phone-fill-16", "phone-fill-18", "phone-fill-20", "phone-fill-24", "phone-fill-28", "plus-16", "plus-18", "plus-20", "plus-circle-16", "plus-circle-18", "plus-circle-20", "plus-circle-24", "plus-circle-28", "print-16", "print-18", "print-20", "print-24", "print-28", "priority-20", "question-16", "question-18", "question-20", "question-24", "question-28", "refresh-18", "refresh-20", "refresh-24", "rocket-16", "rocket-18", "rocket-20", "rocket-24", "rocket-28", "search-16", "search-18", "search-20", "search-24", "search-28", "semiselected-16", "semiselected-18", "semiselected-20", "semiselected-24", "semiselected-28", "settings-16", "settings-18", "settings-20", "settings-24", "settings-28", "share-16", "share-18", "share-20", "share-24", "share-28", "shield-attention-20", "shield-attention-lock-20", "shield-fill-16", "shield-fill-20", "shield-tick-20", "shuffle-20", "sms-16", "sms-18", "sms-20", "sms-24", "sms-28", "star-16", "star-18", "star-20", "star-24", "star-28", "stop-color-16", "stop-color-18", "stop-color-20", "stop-color-24", "stop-color-28", "tag-18", "tag-20", "team-24", "telegram-16", "telegram-18", "telegram-20", "telegram-24", "telegram-28", "telegram-contour-18", "telegram-contour-20", "telegram-contour-24", "text-16", "text-18", "text-20", "text-24", "text-28", "thumbs-28", "thumbsup-16", "thumbsup-18", "thumbsup-20", "thumbsup-24", "trash-16", "trash-18", "trash-20", "trash-24", "trash-28", "unmute-18", "unmute-20", "upload-16", "upload-18", "upload-20", "url-16", "url-18", "url-20", "url-24", "url-28", "verification-fill-20", "viber-16", "viber-18", "viber-20", "viber-24", "viber-28", "viber-contour-16", "viber-contour-18", "viber-contour-20", "viber-contour-24", "viber-contour-28", "whatsapp-16", "whatsapp-18", "whatsapp-20", "whatsapp-24", "whatsapp-28", "whatsapp-contour-18", "whatsapp-contour-20", "whatsapp-contour-24", "x-circle-20", "zoom-16", "zoom-18", "zoom-20", "zoom-24", "zoom-28"];
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
export type UiRadioButtonProps = {
|
|
2
2
|
value: string;
|
|
3
3
|
disabled?: boolean;
|
|
4
|
-
|
|
4
|
+
label?: string;
|
|
5
5
|
subtitle?: string;
|
|
6
6
|
partial?: boolean;
|
|
7
7
|
required?: boolean;
|
|
8
8
|
name?: string;
|
|
9
|
+
/** Вертикальное расположение: индикатор сверху, лейбл снизу */
|
|
10
|
+
vertical?: boolean;
|
|
11
|
+
/** Выравнивание индикатора и лейбла внутри радиокнопки */
|
|
12
|
+
itemsAlign?: 'start' | 'center';
|
|
9
13
|
};
|
|
@@ -7,7 +7,12 @@ export type UiRadioGroupProps = {
|
|
|
7
7
|
disabled?: boolean;
|
|
8
8
|
error?: string;
|
|
9
9
|
required?: boolean;
|
|
10
|
+
/** Направление расположения радиокнопок в группе */
|
|
10
11
|
direction?: 'column' | 'row';
|
|
12
|
+
/** Вертикальное расположение внутри каждой радиокнопки: индикатор сверху, лейбл снизу */
|
|
13
|
+
vertical?: boolean;
|
|
14
|
+
/** Выравнивание индикатора и лейбла внутри каждой радиокнопки */
|
|
15
|
+
itemsAlign?: 'start' | 'center';
|
|
11
16
|
loop?: boolean;
|
|
12
17
|
dir?: 'ltr' | 'rtl';
|
|
13
18
|
stackGap?: 's' | 'l';
|