@huntflow/ui 0.3.0 → 0.3.2
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/dist/components/ui-avatar/avatar-code-snippet.d.ts +1 -0
- package/dist/components/ui-avatar/types.d.ts +3 -0
- package/dist/components/ui-button/button-code-snippet.d.ts +1 -0
- package/dist/components/ui-button/types.d.ts +15 -0
- package/dist/components/ui-button-icon/button-icon-code-snippet.d.ts +1 -0
- package/dist/components/ui-button-icon/types.d.ts +9 -1
- package/dist/components/ui-button-link/button-link-code-snippet.d.ts +1 -0
- package/dist/components/ui-button-link/types.d.ts +2 -0
- package/dist/components/ui-checkbox/checkbox-code-snippet.d.ts +1 -0
- package/dist/components/ui-checkbox/types.d.ts +11 -0
- package/dist/components/ui-checkbox-group/checkbox-group-code-snippet.d.ts +1 -0
- package/dist/components/ui-checkbox-group/checkbox-group.vue.d.ts +37 -29
- package/dist/components/ui-checkbox-group/types.d.ts +10 -2
- package/dist/components/ui-dropdown/dropdown-code-snippet.d.ts +1 -0
- package/dist/components/ui-dropdown/types.d.ts +11 -1
- package/dist/components/ui-dropzone/dropzone-code-snippet.d.ts +1 -0
- package/dist/components/ui-dropzone/types.d.ts +10 -0
- package/dist/components/ui-icon/icon-code-snippet.d.ts +1 -0
- package/dist/components/ui-icon/types.d.ts +3 -0
- package/dist/components/ui-input/input-code-snippet.d.ts +1 -0
- package/dist/components/ui-input/types.d.ts +14 -1
- package/dist/components/ui-label/label-code-snippet.d.ts +1 -0
- package/dist/components/ui-label/types.d.ts +1 -1
- package/dist/components/ui-loader/loader-code-snippet.d.ts +1 -0
- package/dist/components/ui-loader/types.d.ts +3 -1
- package/dist/components/ui-pagination-dots/pagination-dots-code-snippet.d.ts +1 -0
- package/dist/components/ui-pagination-dots/types.d.ts +3 -0
- package/dist/components/ui-plank/plank-code-snippet.d.ts +1 -0
- package/dist/components/ui-plank/types.d.ts +3 -0
- package/dist/components/ui-radio-group/radio-group-code-snippet.d.ts +1 -0
- package/dist/components/ui-radio-group/types.d.ts +10 -1
- package/dist/components/ui-stack/stack-code-snippet.d.ts +1 -0
- package/dist/components/ui-stack/types.d.ts +8 -0
- package/dist/components/ui-switch/switch-code-snippet.d.ts +1 -0
- package/dist/components/ui-switch/types.d.ts +7 -0
- package/dist/components/ui-tabs/tabs-code-snippet.d.ts +1 -1
- package/dist/components/ui-tabs/types.d.ts +9 -2
- package/dist/components/ui-text/text-code-snippet.d.ts +1 -0
- package/dist/components/ui-text/types.d.ts +4 -0
- package/dist/components/ui-textarea/textarea-code-snippet.d.ts +1 -0
- package/dist/components/ui-textarea/types.d.ts +14 -1
- package/dist/components/ui-title/title-code-snippet.d.ts +1 -0
- package/dist/components/ui-title/types.d.ts +3 -1
- package/dist/ui.es.js +3025 -2992
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const avatarCodeSnippet = "<script setup lang=\"ts\">\nimport { UiAvatar } from '@huntflow/ui';\n\nconst avatarSrc = '/src/components/ui-avatar/assets/avatar.png';\n</script>\n\n<template>\n <ui-avatar\n :src=\"avatarSrc\"\n size=\"l\"\n />\n</template>";
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export type UiAvatarProps = {
|
|
2
|
+
/** Путь к изображению. */
|
|
2
3
|
src?: string;
|
|
4
|
+
/** Размер аватара. */
|
|
3
5
|
size?: UiAvatarSize;
|
|
6
|
+
/** Квадратная форма аватара. */
|
|
4
7
|
square?: boolean;
|
|
5
8
|
};
|
|
6
9
|
export type UiAvatarSize = 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | '3xl';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const buttonCodeSnippet = "<script setup lang=\"ts\">\nimport { UiButton } from '@huntflow/ui';\n</script>\n\n<template>\n <ui-button\n type=\"primary\"\n size=\"m\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </ui-button>\n</template>";
|
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
import { IconBySize } from '../ui-icon';
|
|
2
2
|
export type UiButtonProps = {
|
|
3
|
+
/** Размер кнопки. */
|
|
3
4
|
size?: UiButtonSize;
|
|
5
|
+
/** Насыщенность текста. */
|
|
4
6
|
weight?: UiButtonWeight;
|
|
7
|
+
/** Визуальный тип кнопки. */
|
|
5
8
|
type?: UiButtonType;
|
|
9
|
+
/** Отключает кнопку. */
|
|
6
10
|
disabled?: boolean;
|
|
11
|
+
/** Показывает loader и отключает кнопку. */
|
|
7
12
|
loading?: boolean;
|
|
13
|
+
/** Показывает иконку раскрытия справа. */
|
|
8
14
|
dropdown?: boolean;
|
|
15
|
+
/** Включает активное состояние. */
|
|
9
16
|
active?: boolean;
|
|
17
|
+
/** name для нативной button. */
|
|
10
18
|
name?: string;
|
|
19
|
+
/** Включает круглую форму. */
|
|
11
20
|
circle?: boolean;
|
|
21
|
+
/** Включает bordered-состояние. */
|
|
12
22
|
bordered?: boolean;
|
|
23
|
+
/** type для нативной button. */
|
|
13
24
|
htmlType?: UiButtonHTMLType;
|
|
25
|
+
/** Ссылка. Если передана, кнопка рендерится как link-вариант. */
|
|
14
26
|
to?: string;
|
|
27
|
+
/** Название иконки перед текстом без суффикса размера. Компонент добавляет -18 для size="xs" и -20 для остальных размеров. */
|
|
15
28
|
iconBefore?: IconBySize<18> | IconBySize<20>;
|
|
29
|
+
/** Название иконки после текста без суффикса размера. Компонент добавляет -18 для size="xs" и -20 для остальных размеров. */
|
|
16
30
|
iconAfter?: IconBySize<18> | IconBySize<20>;
|
|
31
|
+
/** Растягивает кнопку по ширине контейнера. */
|
|
17
32
|
fill?: boolean;
|
|
18
33
|
};
|
|
19
34
|
export type UiButtonWeight = 'regular' | 'medium';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const buttonIconCodeSnippet = "<script setup lang=\"ts\">\nimport { UiButtonIcon } from '@huntflow/ui';\n</script>\n\n<template>\n <ui-button-icon\n icon=\"message\"\n type=\"primary\"\n size=\"m\"\n />\n</template>";
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import { IconBySize } from '../ui-icon';
|
|
2
2
|
export type UiButtonIconProps = {
|
|
3
|
+
/** Название иконки без суффикса размера. Компонент добавляет -18 для size="xs" и -20 для остальных размеров. */
|
|
3
4
|
icon: IconBySize<18> | IconBySize<20>;
|
|
5
|
+
/** Размер кнопки. */
|
|
4
6
|
size?: UiButtonIconSize;
|
|
5
|
-
|
|
7
|
+
/** Визуальный тип кнопки. */
|
|
6
8
|
type?: UiButtonIconType;
|
|
9
|
+
/** Отключает кнопку. */
|
|
7
10
|
disabled?: boolean;
|
|
11
|
+
/** Показывает loader и отключает кнопку. */
|
|
8
12
|
loading?: boolean;
|
|
13
|
+
/** Включает активное состояние. */
|
|
9
14
|
active?: boolean;
|
|
15
|
+
/** name для нативной button. */
|
|
10
16
|
name?: string;
|
|
17
|
+
/** Включает круглую форму. */
|
|
11
18
|
circle?: boolean;
|
|
19
|
+
/** Включает bordered-состояние. */
|
|
12
20
|
bordered?: boolean;
|
|
13
21
|
};
|
|
14
22
|
export type UiButtonIconSize = 's' | 'xs' | 'm' | 'l';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const buttonLinkCodeSnippet = "<script setup lang=\"ts\">\nimport { UiButtonLink } from '@huntflow/ui';\n</script>\n\n<template>\n <ui-button-link>\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C\n </ui-button-link>\n</template>";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const checkboxCodeSnippet = "\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { UiCheckbox } from '@huntflow/ui';\n\nconst checked = ref(false);\n</script>\n\n<template>\n <ui-checkbox\n v-model=\"checked\"\n label=\"\u041F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F\"\n />\n</template>\n";
|
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
export type UiCheckboxProps = {
|
|
2
|
+
/** Текущее значение чекбокса. Используется с v-model. */
|
|
2
3
|
modelValue?: boolean | string | number | 'indeterminate';
|
|
4
|
+
/** Значение, которое используется, когда чекбокс включен. По умолчанию true. */
|
|
3
5
|
trueValue?: boolean | string | number;
|
|
6
|
+
/** Значение, которое используется, когда чекбокс выключен. По умолчанию false. */
|
|
4
7
|
falseValue?: boolean | string | number;
|
|
8
|
+
/** Отключает чекбокс. */
|
|
5
9
|
disabled?: boolean;
|
|
10
|
+
/** Заголовок чекбокса. */
|
|
6
11
|
label?: string;
|
|
12
|
+
/** Описание под чекбоксом. */
|
|
7
13
|
subtitle?: string;
|
|
14
|
+
/** Помечает поле обязательным для формы. */
|
|
8
15
|
required?: boolean;
|
|
16
|
+
/** Значение чекбокса при использовании внутри группы. */
|
|
9
17
|
value?: string | number;
|
|
18
|
+
/** Имя form-поля. */
|
|
10
19
|
name?: string;
|
|
20
|
+
/** Отображает иконку замка внутри чекбокса. */
|
|
11
21
|
lock?: boolean;
|
|
22
|
+
/** Обрезает длинный label многоточием. */
|
|
12
23
|
ellipsis?: boolean;
|
|
13
24
|
};
|
|
14
25
|
export type UiCheckboxEmits = {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const checkboxGroupCodeSnippet = "\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { UiCheckboxGroup } from '@huntflow/ui';\n\nconst selectedValues = ref(['1']);\n\nconst options = [\n {\n value: '1',\n label: '\u041F\u0435\u0440\u0432\u044B\u0439'\n },\n {\n value: '2',\n label: '\u0412\u0442\u043E\u0440\u043E\u0439'\n },\n {\n value: '3',\n label: '\u0422\u0440\u0435\u0442\u0438\u0439'\n },\n {\n value: '4',\n label: '\u0427\u0435\u0442\u0432\u0435\u0440\u0442\u044B\u0439'\n }\n];\n</script>\n\n<template>\n <ui-checkbox-group\n v-model=\"selectedValues\"\n :options=\"options\"\n name=\"notifications\"\n stack-gap=\"s\"\n />\n</template>\n";
|
|
@@ -1,32 +1,40 @@
|
|
|
1
|
-
import { UiCheckboxGroupProps } from './types';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} &
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
option:
|
|
14
|
-
})
|
|
15
|
-
|
|
1
|
+
import { UiCheckboxGroupOption, UiCheckboxGroupProps } from './types';
|
|
2
|
+
declare const _default: <Option extends UiCheckboxGroupOption = UiCheckboxGroupOption>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
3
|
+
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
4
|
+
readonly "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
|
|
5
|
+
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>, "onUpdate:modelValue"> & ({
|
|
6
|
+
modelValue?: string[];
|
|
7
|
+
} & UiCheckboxGroupProps<Option>) & Partial<{}>> & import('vue').PublicProps;
|
|
8
|
+
expose(exposed: import('vue').ShallowUnwrapRef<{}>): void;
|
|
9
|
+
attrs: any;
|
|
10
|
+
slots: Readonly<{
|
|
11
|
+
/** Кастомный заголовок option. */
|
|
12
|
+
optionLabel?: (props: {
|
|
13
|
+
option: Option;
|
|
14
|
+
}) => unknown;
|
|
15
|
+
/** Кастомное описание option. */
|
|
16
|
+
optionSubtitle?: (props: {
|
|
17
|
+
option: Option;
|
|
18
|
+
}) => unknown;
|
|
19
|
+
/** Ручная разметка чекбоксов, если options не передан. */
|
|
20
|
+
default?: () => unknown;
|
|
21
|
+
}> & {
|
|
22
|
+
/** Кастомный заголовок option. */
|
|
23
|
+
optionLabel?: (props: {
|
|
24
|
+
option: Option;
|
|
25
|
+
}) => unknown;
|
|
26
|
+
/** Кастомное описание option. */
|
|
27
|
+
optionSubtitle?: (props: {
|
|
28
|
+
option: Option;
|
|
29
|
+
}) => unknown;
|
|
30
|
+
/** Ручная разметка чекбоксов, если options не передан. */
|
|
31
|
+
default?: () => unknown;
|
|
16
32
|
};
|
|
17
|
-
|
|
18
|
-
|
|
33
|
+
emit: (evt: "update:modelValue", value: string[]) => void;
|
|
34
|
+
}>) => import('vue').VNode & {
|
|
35
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
19
36
|
};
|
|
20
|
-
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
21
|
-
declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
22
|
-
"update:modelValue": (value: string[]) => any;
|
|
23
|
-
}, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
24
|
-
"onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
|
|
25
|
-
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
26
|
-
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
27
37
|
export default _default;
|
|
28
|
-
type
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
};
|
|
32
|
-
};
|
|
38
|
+
type __VLS_PrettifyLocal<T> = {
|
|
39
|
+
[K in keyof T]: T[K];
|
|
40
|
+
} & {};
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
import { UiCheckboxProps } from '../ui-checkbox';
|
|
2
2
|
export type UiCheckboxGroupOption = UiCheckboxProps;
|
|
3
|
-
export type UiCheckboxGroupProps = {
|
|
4
|
-
|
|
3
|
+
export type UiCheckboxGroupProps<Option extends UiCheckboxGroupOption = UiCheckboxGroupOption> = {
|
|
4
|
+
/** Список чекбоксов. Каждый элемент соответствует props UiCheckbox. */
|
|
5
|
+
options?: Option[];
|
|
6
|
+
/** Значения, выбранные по умолчанию, если группа используется без v-model. */
|
|
5
7
|
defaultValue?: string[];
|
|
8
|
+
/** Имя form-поля для всей группы. */
|
|
6
9
|
name?: string;
|
|
10
|
+
/** Отключает всю группу. */
|
|
7
11
|
disabled?: boolean;
|
|
12
|
+
/** Текст ошибки под группой. */
|
|
8
13
|
error?: string;
|
|
14
|
+
/** Расстояние между чекбоксами. */
|
|
9
15
|
stackGap?: 's' | 'l' | 'm' | 'xs';
|
|
16
|
+
/** Направление раскладки чекбоксов. */
|
|
10
17
|
direction?: 'column' | 'row';
|
|
18
|
+
/** Обрезает длинные label у всех чекбоксов. */
|
|
11
19
|
ellipsis?: boolean;
|
|
12
20
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const dropdownCodeSnippet = "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { UiButton, UiDropdown } from '@huntflow/ui';\n\nconst isOpen = ref(false);\n</script>\n\n<template>\n <ui-dropdown\n v-model:open=\"isOpen\"\n title=\"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A\"\n subtitle=\"\u041F\u043E\u0434\u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A\"\n >\n <template #trigger>\n <ui-button\n type=\"secondary\"\n size=\"s\"\n >\n \u041E\u0442\u043A\u0440\u044B\u0442\u044C\n </ui-button>\n </template>\n\n <template #default>\n \u0422\u0435\u043A\u0441\u0442 \u0432 dropdown\n </template>\n\n <template #footer=\"{ close }\">\n <ui-button\n type=\"primary\"\n size=\"s\"\n @click=\"close\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </ui-button>\n </template>\n </ui-dropdown>\n</template>";
|
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
export type UiDropdownSide = 'top' | 'right' | 'bottom' | 'left';
|
|
2
2
|
export type UiDropdownAlign = 'start' | 'center' | 'end';
|
|
3
3
|
export type UiDropdownProps = {
|
|
4
|
+
/** Состояние открытия dropdown. Используется с v-model:open. */
|
|
4
5
|
open?: boolean;
|
|
6
|
+
/** Сторона появления относительно trigger. */
|
|
5
7
|
side?: UiDropdownSide;
|
|
8
|
+
/** Выравнивание dropdown относительно trigger. */
|
|
6
9
|
align?: UiDropdownAlign;
|
|
10
|
+
/** Отступ от trigger в пикселях. */
|
|
7
11
|
sideOffset?: number;
|
|
12
|
+
/** Смещение по оси выравнивания в пикселях. */
|
|
8
13
|
alignOffset?: number;
|
|
9
|
-
|
|
14
|
+
/** Размер dropdown. */
|
|
15
|
+
size?: 's';
|
|
16
|
+
/** Заголовок в header. */
|
|
10
17
|
title?: string;
|
|
18
|
+
/** Дополнительный текст в header. */
|
|
11
19
|
subtitle?: string;
|
|
20
|
+
/** Отключает trigger. */
|
|
12
21
|
disabled?: boolean;
|
|
22
|
+
/** Определяет модальность popover. Если включено, взаимодействие с элементами вне dropdown блокируется, а для скринридеров доступно только содержимое dropdown. */
|
|
13
23
|
modal?: boolean;
|
|
14
24
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const dropzoneCodeSnippet = "<script setup lang=\"ts\">\nimport { UiDropzone } from '@huntflow/ui';\n\nconst labelMessage = '\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0440\u0435\u0437\u044E\u043C\u0435 \u0432 \u044D\u0442\u0443 \u043E\u0431\u043B\u0430\u0441\u0442\u044C<br />\u0438\u043B\u0438 <a>\u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043B</a>';\nconst helpMessage = '\u041C\u043E\u0436\u043D\u043E \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u043E\u0434\u043D\u0443 \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0443 \u0434\u043E 15 \u043C\u0431,<br/>.jpeg, .png \u0438\u043B\u0438 .webp';\n\nconst allowedTypes = ['image/jpeg', 'image/png', 'image/webp'];\n</script>\n\n<template>\n <ui-dropzone\n :label-message=\"labelMessage\"\n :help-message=\"helpMessage\"\n icon-type=\"image\"\n accept=\".jpeg,.jpg,.png,.webp\"\n :allowed-types=\"allowedTypes\"\n :max-file-size=\"15 * 1024 * 1024\"\n hovered-message=\"\u041E\u0442\u043F\u0443\u0441\u0442\u0438\u0442\u0435 \u0444\u0430\u0439\u043B \u0434\u043B\u044F \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438\"\n />\n</template>";
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import { IconType } from './icons';
|
|
2
2
|
export type UiDropzoneProps = {
|
|
3
|
+
/** Основной текст внутри зоны загрузки. Поддерживает HTML-разметку. */
|
|
3
4
|
labelMessage?: string;
|
|
5
|
+
/** Дополнительная подсказка под основным текстом. Поддерживает HTML-разметку. */
|
|
4
6
|
helpMessage?: string;
|
|
7
|
+
/** Тип встроенной иконки. */
|
|
5
8
|
iconType?: IconType;
|
|
9
|
+
/** Значение атрибута accept для нативного input[type="file"]. */
|
|
6
10
|
accept?: string;
|
|
11
|
+
/** Разрешает выбрать несколько файлов через диалог выбора. */
|
|
7
12
|
multiple?: boolean;
|
|
13
|
+
/** Показывает состояние загрузки и блокирует выбор файлов. */
|
|
8
14
|
loading?: boolean;
|
|
15
|
+
/** Обрабатывает drag-and-drop на уровне документа и предотвращает стандартное открытие файла браузером. */
|
|
9
16
|
fullscreen?: boolean;
|
|
17
|
+
/** Список MIME-типов, разрешенных для загрузки. */
|
|
10
18
|
allowedTypes?: string[];
|
|
19
|
+
/** Текст, который показывается при наведении файла на dropzone. */
|
|
11
20
|
hoveredMessage?: string;
|
|
21
|
+
/** Максимальный размер файла в байтах. */
|
|
12
22
|
maxFileSize?: number;
|
|
13
23
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const iconCodeSnippet = "<script setup lang=\"ts\">\nimport { UiIcon } from '@huntflow/ui';\n</script>\n\n<template>\n <ui-icon name=\"search-20\" />\n</template>";
|
|
@@ -2,7 +2,10 @@ import { icons } from './icon-list.ts';
|
|
|
2
2
|
export type IconType = typeof icons[number];
|
|
3
3
|
export type IconBySize<Size extends number, Icons = IconType> = Icons extends `${infer Icon}-${Size}` ? Icon : never;
|
|
4
4
|
export type UiIconProps = {
|
|
5
|
+
/** Название иконки из SVG sprite. */
|
|
5
6
|
name: IconType;
|
|
7
|
+
/** Цвет иконки. Если не передан, иконка наследует цвет текста родителя. */
|
|
6
8
|
color?: string;
|
|
9
|
+
/** Отображает иконку как block-элемент. */
|
|
7
10
|
block?: boolean;
|
|
8
11
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const inputCodeSnippet = "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { UiInput } from '@huntflow/ui';\n\nconst value = ref('');\n</script>\n\n<template>\n <ui-input\n v-model=\"value\"\n id=\"text-input\"\n name=\"text-input\"\n title=\"\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0432\u0430\u043A\u0430\u043D\u0441\u0438\u0438\"\n placeholder=\"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043A\u0441\u0442\"\n />\n</template>";
|
|
@@ -1,19 +1,32 @@
|
|
|
1
1
|
import { IconType } from '../index';
|
|
2
2
|
export type UiInputProps = {
|
|
3
|
+
/** Тип нативного input. */
|
|
3
4
|
type?: UiInputType;
|
|
5
|
+
/** id input и значение for у label. */
|
|
4
6
|
id?: string;
|
|
7
|
+
/** Имя поля. */
|
|
5
8
|
name?: string;
|
|
9
|
+
/** Отключает input. */
|
|
6
10
|
disabled?: boolean;
|
|
11
|
+
/** Основной текст label. */
|
|
7
12
|
title?: string;
|
|
13
|
+
/** Дополнительный заголовок внутри label. */
|
|
8
14
|
header?: string;
|
|
15
|
+
/** Описание под основным текстом label. */
|
|
9
16
|
subTitle?: string;
|
|
17
|
+
/** Текст ссылки внутри label. */
|
|
10
18
|
link?: string;
|
|
19
|
+
/** Подсказка внутри input. */
|
|
11
20
|
placeholder?: string;
|
|
21
|
+
/** Показывает состояние загрузки и отключает input. */
|
|
12
22
|
loading?: boolean;
|
|
23
|
+
/** Текст ошибки под input. */
|
|
13
24
|
error?: string | null | void;
|
|
25
|
+
/** Описание под input. */
|
|
14
26
|
description?: string | null | void;
|
|
15
|
-
|
|
27
|
+
/** Иконка слева. */
|
|
16
28
|
leftIcon?: IconType;
|
|
29
|
+
/** Иконка справа. */
|
|
17
30
|
rightIcon?: IconType;
|
|
18
31
|
};
|
|
19
32
|
export type UiInputType = 'text' | 'password' | 'email' | 'tel' | 'search';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const labelCodeSnippet = "\n<script setup lang=\"ts\">\nimport { UiLabel } from '@huntflow/ui';\n</script>\n\n<template>\n <ui-label for=\"example-control\">\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0432\u0430\u043A\u0430\u043D\u0441\u0438\u0438\n </ui-label>\n</template>\n";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const loaderCodeSnippet = "<script setup lang=\"ts\">\nimport { UiLoader } from '@huntflow/ui';\n</script>\n\n<template>\n <ui-loader\n size=\"m\"\n color=\"black\"\n :delay=\"0\"\n />\n</template>";
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export type UiLoaderProps = {
|
|
2
|
-
|
|
2
|
+
/** Размер loader. */
|
|
3
3
|
size: UiLoaderSize;
|
|
4
|
+
/** Цвет loader. */
|
|
4
5
|
color?: 'white' | 'black';
|
|
6
|
+
/** Задержка перед показом loader в миллисекундах. */
|
|
5
7
|
delay?: number;
|
|
6
8
|
};
|
|
7
9
|
export type UiLoaderSize = 's' | 'm' | 'l';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const paginationDotsCodeSnippet = "\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { UiPaginationDots } from '@huntflow/ui';\n\nconst current = ref(0);\n</script>\n\n<template>\n <ui-pagination-dots\n :total=\"3\"\n :current=\"current\"\n align=\"center\"\n />\n</template>\n";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const plankCodeSnippet = "<script setup lang=\"ts\">\nimport { UiPlank } from '@huntflow/ui';\n</script>\n\n<template>\n <ui-plank\n icon=\"attention-24\"\n label=\"\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441\"\n >\n \u041A\u0430\u043D\u0434\u0438\u0434\u0430\u0442 \u043D\u0435 \u0434\u0430\u043B \u0441\u043E\u0433\u043B\u0430\u0441\u0438\u044F \u043D\u0430 \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435 \u041F\u0414\n </ui-plank>\n</template>";
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { IconType } from '../index';
|
|
2
2
|
export type UiPlankProps = {
|
|
3
|
+
/** Визуальный тип плашки. */
|
|
3
4
|
type?: UiPlankType;
|
|
5
|
+
/** Иконка слева. */
|
|
4
6
|
icon?: IconType;
|
|
7
|
+
/** Текст кнопки справа. */
|
|
5
8
|
label?: string;
|
|
6
9
|
};
|
|
7
10
|
export type UiPlankType = 'default' | 'accent' | 'danger';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const radioGroupCodeSnippet = "\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { UiRadioGroup } from '@huntflow/ui';\n\nconst selectedValue = ref('1');\n\nconst options = [\n {\n value: '1',\n label: '\u041F\u0435\u0440\u0432\u044B\u0439'\n },\n {\n value: '2',\n label: '\u0412\u0442\u043E\u0440\u043E\u0439'\n },\n {\n value: '3',\n label: '\u0422\u0440\u0435\u0442\u0438\u0439'\n }\n];\n</script>\n\n<template>\n <ui-radio-group\n v-model=\"selectedValue\"\n :options=\"options\"\n name=\"radio\"\n />\n</template>\n";
|
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
import { UiRadioButtonProps } from '../ui-radio-button';
|
|
2
2
|
export type UiRadioGroupOption = UiRadioButtonProps;
|
|
3
3
|
export type UiRadioGroupProps = {
|
|
4
|
+
/** Список радиокнопок. Каждый элемент соответствует props UiRadioButton. */
|
|
4
5
|
options: UiRadioButtonProps[];
|
|
6
|
+
/** Значение, выбранное по умолчанию, если группа используется без v-model. */
|
|
5
7
|
defaultValue?: string;
|
|
8
|
+
/** Имя form-поля для всей группы. */
|
|
6
9
|
name?: string;
|
|
10
|
+
/** Отключает всю группу. */
|
|
7
11
|
disabled?: boolean;
|
|
12
|
+
/** Текст ошибки под группой. */
|
|
8
13
|
error?: string;
|
|
14
|
+
/** Помечает группу обязательной для формы. */
|
|
9
15
|
required?: boolean;
|
|
16
|
+
/** Направление раскладки радиокнопок. */
|
|
10
17
|
direction?: 'column' | 'row';
|
|
18
|
+
/** Разрешает циклическую навигацию с клавиатуры. */
|
|
11
19
|
loop?: boolean;
|
|
12
|
-
|
|
20
|
+
/** Расстояние между радиокнопками. */
|
|
13
21
|
stackGap?: 's' | 'm' | 'l' | 'xxl';
|
|
22
|
+
/** Положение заголовков у радиокнопок. */
|
|
14
23
|
labelPosition?: 'right' | 'bottom';
|
|
15
24
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const stackCodeSnippet = "\n<script setup lang=\"ts\">\nimport { UiButton, UiStack } from '@huntflow/ui';\n</script>\n\n<template>\n <ui-stack\n direction=\"row\"\n tag-name=\"div\"\n gap=\"m\"\n size=\"full\"\n :wrap=\"true\"\n >\n <ui-button>1</ui-button>\n <ui-button>2</ui-button>\n <ui-button>3</ui-button>\n </ui-stack>\n</template>\n";
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
export type UiStackProps = {
|
|
2
|
+
/** HTML-тег контейнера. */
|
|
2
3
|
tagName?: 'span' | 'div' | 'ul' | 'ol';
|
|
4
|
+
/** Направление раскладки элементов. */
|
|
3
5
|
direction?: 'row' | 'column';
|
|
6
|
+
/** Выравнивание по основной оси. */
|
|
4
7
|
mainAlignment?: 'start' | 'center' | 'between' | 'around' | 'end';
|
|
8
|
+
/** Выравнивание по поперечной оси. */
|
|
5
9
|
crossAlignment?: 'start' | 'center' | 'end';
|
|
10
|
+
/** Расстояние между элементами из шкалы spacing-токенов. */
|
|
6
11
|
gap?: '' | 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | '3xl' | '4xl' | '5xl';
|
|
12
|
+
/** Разворачивает порядок элементов. */
|
|
7
13
|
reverse?: boolean;
|
|
14
|
+
/** Ширина контейнера: на всю доступную ширину или по содержимому. */
|
|
8
15
|
size?: 'full' | 'auto';
|
|
16
|
+
/** Разрешает перенос элементов на новую строку. */
|
|
9
17
|
wrap?: boolean;
|
|
10
18
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const switchCodeSnippet = "\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { UiSwitch } from '@huntflow/ui';\n\nconst enabled = ref(false);\n</script>\n\n<template>\n <ui-switch\n v-model=\"enabled\"\n label=\"\u041D\u043E\u0432\u044B\u0435 \u043E\u0442\u043A\u043B\u0438\u043A\u0438\"\n subtitle=\"\u041F\u043E\u043B\u0443\u0447\u0430\u0439\u0442\u0435 \u0435\u0436\u0435\u0434\u043D\u0435\u0432\u043D\u044B\u0435 \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F \u043E\u00A0\u043D\u043E\u0432\u044B\u0445\u00A0\u043E\u0442\u043A\u043B\u0438\u043A\u0430\u0445 \u043D\u0430 \u0432\u0430\u0448\u0438\u0445 \u0432\u0430\u043A\u0430\u043D\u0441\u0438\u044F\u0445\"\n />\n</template>\n";
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
export type UiSwitchProps = {
|
|
2
|
+
/** Текущее состояние переключателя. Используется с v-model. */
|
|
2
3
|
modelValue?: boolean;
|
|
4
|
+
/** Отключает переключатель. */
|
|
3
5
|
disabled?: boolean;
|
|
6
|
+
/** Текст заголовка переключателя. */
|
|
4
7
|
label?: string;
|
|
8
|
+
/** Описание под переключателем. */
|
|
5
9
|
subtitle?: string;
|
|
10
|
+
/** Помечает поле обязательным для формы. */
|
|
6
11
|
required?: boolean;
|
|
12
|
+
/** Имя поля. */
|
|
7
13
|
name?: string;
|
|
14
|
+
/** Расстояние между переключателем и заголовком. */
|
|
8
15
|
stackGap?: 's' | 'm' | 'l';
|
|
9
16
|
};
|
|
10
17
|
export type UiSwitchEmits = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const tabsCodeSnippet = "\n<script setup lang=\"ts\">\nimport { ref } from
|
|
1
|
+
export declare const tabsCodeSnippet = "\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { UiTabs } from '@huntflow/ui';\n\nconst model = ref('interview');\n\nconst items = [\n {\n label: '\u0418\u043D\u0442\u0435\u0440\u0432\u044C\u044E',\n value: 'interview'\n },\n {\n label: '\u0414\u0440\u0443\u0433\u043E\u0435',\n value: 'other'\n }\n];\n</script>\n\n<template>\n <ui-tabs\n v-model=\"model\"\n :items=\"items\"\n :indicator=\"true\"\n list-aria-label=\"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043F\u0440\u043E\u0444\u0438\u043B\u044F\"\n >\n <template #interview>\n \u0418\u0437\u043C\u0435\u043D\u0438\u0442\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043F\u0440\u043E\u0444\u0438\u043B\u044F \u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0430\u043A\u043A\u0430\u0443\u043D\u0442\u0430.\n </template>\n\n <template #other>\n \u041E\u0431\u043D\u043E\u0432\u0438\u0442\u0435 \u043F\u0430\u0440\u043E\u043B\u044C \u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438.\n </template>\n </ui-tabs>\n</template>\n";
|
|
@@ -5,12 +5,19 @@ export type UiTabsItem = {
|
|
|
5
5
|
};
|
|
6
6
|
export type UiTabsGap = 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | '3xl' | '4xl' | '5xl';
|
|
7
7
|
export type UiTabsProps<Item extends UiTabsItem = UiTabsItem> = {
|
|
8
|
+
/** Значение активной вкладки. Используется с v-model. */
|
|
8
9
|
modelValue?: Item['value'];
|
|
10
|
+
/** ARIA-лейбл для списка вкладок. */
|
|
9
11
|
listAriaLabel?: string;
|
|
12
|
+
/** Ширина списка табов: по контенту или на всю ширину. */
|
|
10
13
|
size?: 'fit' | 'full';
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
/** Горизонтальный отступ у списка табов. */
|
|
15
|
+
headerGap?: UiTabsGap;
|
|
16
|
+
/** Отступ между списком табов и контентом. */
|
|
17
|
+
contentGap?: UiTabsGap;
|
|
18
|
+
/** Показывает анимированный индикатор активной вкладки. */
|
|
13
19
|
indicator?: boolean;
|
|
20
|
+
/** Список вкладок. */
|
|
14
21
|
items: Item[];
|
|
15
22
|
};
|
|
16
23
|
export type UiTabsEmits<Item extends UiTabsItem = UiTabsItem> = {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const textCodeSnippet = "\n<script setup lang=\"ts\">\nimport { UiText } from '@huntflow/ui';\n</script>\n\n<template>\n <ui-text\n kind=\"primary\"\n >\n \u041A\u0430\u043A \u0431\u044B\u043B\u043E \u043F\u043E\u043A\u0430\u0437\u0430\u043D\u043E \u0432\u044B\u0448\u0435, \u043C\u043E\u043D\u043E\u043C\u0435\u0440\u043D\u0430\u044F \u043E\u0441\u0442\u0438\u043D\u0430\u0442\u043D\u0430\u044F \u043F\u0435\u0434\u0430\u043B\u044C \u0432\u0430\u0436\u043D\u043E \u0438\u043C\u0438\u0442\u0438\u0440\u0443\u0435\u0442 \u043A\u0430\u043D\u0430\u043B\n </ui-text>\n</template>\n";
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export type UiTextProps = {
|
|
2
|
+
/** HTML-тег текстового элемента. */
|
|
2
3
|
tagName?: string;
|
|
4
|
+
/** Типографский вариант текста. */
|
|
3
5
|
kind?: 'primary' | 'secondary' | 'accent' | 'subtitle';
|
|
6
|
+
/** Насыщенность текста. */
|
|
4
7
|
weight?: 'medium';
|
|
8
|
+
/** Цвет текста из палитры текстовых токенов. Если не передан, используется основной цвет текста. */
|
|
5
9
|
color?: 'main' | 'secondary' | 'semilight' | 'light' | 'invert' | 'danger' | 'success';
|
|
6
10
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const textareaCodeSnippet = "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { UiTextarea } from '@huntflow/ui';\n\nconst value = ref('\u041C\u043D\u043E\u0433\u043E\u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0439\\n\u0442\u0435\u043A\u0441\u0442');\n</script>\n\n<template>\n <ui-textarea\n v-model=\"value\"\n id=\"textarea-id\"\n name=\"comment\"\n header=\"\u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439\"\n title=\"\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435\"\n sub-title=\"\u041E\u043F\u0438\u0448\u0438\u0442\u0435 \u0434\u0435\u0442\u0430\u043B\u0438 \u0437\u0430\u0434\u0430\u0447\u0438\"\n link=\"\u041F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0430\"\n placeholder=\"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043A\u0441\u0442\"\n :rows=\"3\"\n auto-resize\n />\n</template>";
|
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
export type UiTextareaProps = {
|
|
2
|
+
/** Текущее значение textarea. Используется с v-model. */
|
|
2
3
|
modelValue?: string;
|
|
4
|
+
/** id textarea и значение for у label. */
|
|
3
5
|
id?: string;
|
|
6
|
+
/** Имя поля. */
|
|
4
7
|
name?: string;
|
|
8
|
+
/** Отключает textarea. */
|
|
5
9
|
disabled?: boolean;
|
|
10
|
+
/** Основной текст label. */
|
|
6
11
|
title?: string;
|
|
12
|
+
/** Дополнительный заголовок внутри label. */
|
|
7
13
|
header?: string;
|
|
14
|
+
/** Описание под основным текстом label. */
|
|
8
15
|
subTitle?: string;
|
|
16
|
+
/** Текст ссылки внутри label. */
|
|
9
17
|
link?: string;
|
|
18
|
+
/** Подсказка внутри textarea. */
|
|
10
19
|
placeholder?: string;
|
|
20
|
+
/** Текст ошибки под textarea. */
|
|
11
21
|
error?: string;
|
|
12
|
-
|
|
22
|
+
/** Количество видимых строк. */
|
|
13
23
|
rows?: number;
|
|
24
|
+
/** Максимальная длина текста. */
|
|
14
25
|
maxLength?: number;
|
|
26
|
+
/** Минимальная высота textarea. */
|
|
15
27
|
minHeight?: string;
|
|
28
|
+
/** Автоматически подстраивает высоту textarea под содержимое. */
|
|
16
29
|
autoResize?: boolean;
|
|
17
30
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const titleCodeSnippet = "\n<script setup lang=\"ts\">\nimport { UiTitle } from '@huntflow/ui';\n</script>\n\n<template>\n <ui-title\n :level=\"1\"\n weight=\"medium\"\n >\n \u041A\u0430\u043A \u0431\u044B\u043B\u043E \u043F\u043E\u043A\u0430\u0437\u0430\u043D\u043E \u0432\u044B\u0448\u0435, \u043C\u043E\u043D\u043E\u043C\u0435\u0440\u043D\u0430\u044F \u043E\u0441\u0442\u0438\u043D\u0430\u0442\u043D\u0430\u044F \u043F\u0435\u0434\u0430\u043B\u044C \u0432\u0430\u0436\u043D\u043E \u0438\u043C\u0438\u0442\u0438\u0440\u0443\u0435\u0442 \u043A\u0430\u043D\u0430\u043B\n </ui-title>\n</template>\n";
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export type UiTitleProps = {
|
|
2
|
+
/** Уровень заголовка. Определяет HTML-тег и визуальный размер. */
|
|
2
3
|
level: 1 | 2 | 3 | 4;
|
|
3
|
-
|
|
4
|
+
/** Насыщенность заголовка. */
|
|
4
5
|
weight?: 'medium';
|
|
6
|
+
/** Цвет заголовка из палитры текстовых токенов. Если не передан, используется основной цвет текста. */
|
|
5
7
|
color?: 'main' | 'secondary' | 'semilight' | 'light' | 'invert' | 'danger' | 'success';
|
|
6
8
|
};
|