dxd-style-code 0.1.11 → 0.1.13
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/dxd-style-code.js +7470 -6336
- package/dist/dxd-style-code.umd.cjs +3 -3
- package/dist/style.css +1 -1
- package/package.json +2 -2
- package/src/components/atoms/DX/DX.stories.js +265 -0
- package/src/components/atoms/DX/DX.vue +80 -0
- package/src/components/atoms/DX/index.js +2 -0
- package/src/components/atoms/DXAvatar/DXAvatar.stories.js +1 -2
- package/src/components/atoms/DXBackdrop/DXBackdrop.stories.js +77 -1
- package/src/components/atoms/DXBadge/DXBadge.stories.js +83 -1
- package/src/components/atoms/DXBlockquote/DXBlockquote.stories.js +67 -1
- package/src/components/atoms/DXBox/DXBox.stories.js +1 -1
- package/src/components/atoms/DXBox/DXBox.vue +69 -2
- package/src/components/atoms/DXButton/DXButton.stories.js +94 -1
- package/src/components/atoms/DXButton/DXButton.vue +145 -11
- package/src/components/atoms/DXCard/DXCard.stories.js +72 -14
- package/src/components/atoms/DXCard/DXCard.vue +3 -4
- package/src/components/atoms/DXCheckbox/DXCheckbox.stories.js +85 -1
- package/src/components/atoms/DXCode/DXCode.stories.js +67 -1
- package/src/components/atoms/DXContainer/DXContainer.stories.js +1 -1
- package/src/components/atoms/DXContainer/DXContainer.vue +28 -1
- package/src/components/atoms/DXDivider/DXDivider.stories.js +84 -1
- package/src/components/atoms/DXFlex/DXFlex.stories.js +1 -1
- package/src/components/atoms/DXFlex/DXFlex.vue +57 -3
- package/src/components/atoms/DXFormLabel/DXFormLabel.stories.js +70 -1
- package/src/components/atoms/DXGrid/DXGrid.stories.js +1 -1
- package/src/components/atoms/DXHeading/DXHeading.stories.js +90 -1
- package/src/components/atoms/DXIcon/DXIcon.stories.js +74 -0
- package/src/components/atoms/DXIconWrapper/DXIconWrapper.stories.js +69 -0
- package/src/components/atoms/DXImage/DXImage.stories.js +483 -0
- package/src/components/atoms/DXImage/DXImage.vue +294 -0
- package/src/components/atoms/DXImage/index.js +2 -0
- package/src/components/atoms/DXInputAddon/DXInputAddon.stories.js +86 -1
- package/src/components/atoms/DXLabel/DXLabel.stories.js +62 -1
- package/src/components/atoms/DXLink/DXLink.stories.js +75 -10
- package/src/components/atoms/DXLink/DXLink.vue +59 -3
- package/src/components/atoms/DXList/DXList.stories.js +76 -1
- package/src/components/atoms/DXLoader/DXLoader.stories.js +75 -1
- package/src/components/atoms/DXNav/DXNav.stories.js +236 -0
- package/src/components/atoms/DXNav/DXNav.vue +114 -0
- package/src/components/atoms/DXNav/index.js +2 -0
- package/src/components/atoms/DXProgress/DXProgress.stories.js +76 -1
- package/src/components/atoms/DXRadio/DXRadio.stories.js +85 -1
- package/src/components/atoms/DXSkeleton/DXSkeleton.stories.js +59 -1
- package/src/components/atoms/DXSlider/DXSlider.stories.js +89 -0
- package/src/components/atoms/DXSpacer/DXSpacer.stories.js +1 -1
- package/src/components/atoms/DXStack/DXStack.stories.js +1 -1
- package/src/components/atoms/DXStack/DXStack.vue +5 -2
- package/src/components/atoms/DXTags/DXTags.stories.js +77 -0
- package/src/components/atoms/DXText/DXText.stories.js +83 -1
- package/src/components/atoms/DXToast/DXToast.stories.js +64 -1
- package/src/components/atoms/DXToggle/DXToggle.stories.js +84 -1
- package/src/components/atoms/DXToggleButton/DXToggleButton.stories.js +78 -1
- package/src/components/atoms/DXTooltip/DXTooltip.stories.js +98 -1
- package/src/components/atoms/index.js +3 -0
- package/src/components/molecules/DXActionButtons/DXActionButtons.stories.js +280 -77
- package/src/components/molecules/DXActionButtons/DXActionButtons.vue +31 -31
- package/src/components/molecules/DXAlert/DXAlert.stories.js +199 -1
- package/src/components/molecules/DXAlert/DXAlert.vue +35 -13
- package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.stories.js +125 -1
- package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.vue +22 -18
- package/src/components/molecules/DXButtonGroup/DXButtonGroup.stories.js +193 -6
- package/src/components/molecules/DXButtonGroup/DXButtonGroup.vue +39 -3
- package/src/components/molecules/DXCloseButton/DXCloseButton.stories.js +64 -1
- package/src/components/molecules/DXComboBox/DXComboBox.stories.js +66 -0
- package/src/components/molecules/DXCopyField/DXCopyField.stories.js +128 -1
- package/src/components/molecules/DXCopyField/DXCopyField.vue +60 -7
- package/src/components/molecules/DXDataFilter/DXDataFilter.vue +8 -6
- package/src/components/molecules/DXDatePicker/DXDatePicker.stories.js +58 -0
- package/src/components/molecules/DXFileUpload/DXFileUpload.stories.js +66 -0
- package/src/components/molecules/DXFilterGroup/DXFilterGroup.stories.js +61 -0
- package/src/components/molecules/DXFormControl/DXFormControl.stories.js +76 -0
- package/src/components/molecules/DXFormControl/DXFormControl.vue +9 -8
- package/src/components/molecules/DXInput/DXInput.stories.js +100 -1
- package/src/components/molecules/DXInputGroup/DXInputGroup.stories.js +89 -1
- package/src/components/molecules/DXInputMask/DXInputMask.stories.js +67 -0
- package/src/components/molecules/DXMenu/DXMenu.stories.js +111 -4
- package/src/components/molecules/DXMenu/DXMenu.vue +18 -5
- package/src/components/molecules/DXMenu/README.md +1 -1
- package/src/components/molecules/DXPagination/DXPagination.stories.js +105 -2
- package/src/components/molecules/DXPagination/DXPagination.vue +18 -33
- package/src/components/molecules/DXPasswordInput/DXPasswordInput.stories.js +67 -1
- package/src/components/molecules/DXRadioCard/DXRadioCard.stories.js +64 -0
- package/src/components/molecules/DXRadioGroup/DXRadioGroup.stories.js +84 -0
- package/src/components/molecules/DXRating/DXRating.stories.js +3 -2
- package/src/components/molecules/DXSearchBar/DXSearchBar.stories.js +1 -1
- package/src/components/molecules/DXSearchBar/DXSearchBar.vue +16 -12
- package/src/components/molecules/DXSearchSelect/DXSearchSelect.stories.js +71 -0
- package/src/components/molecules/DXSegmentedControl/DXSegmentedControl.stories.js +74 -0
- package/src/components/molecules/DXSelect/DXSelect.stories.js +92 -1
- package/src/components/molecules/DXStatCard/DXStatCard.stories.js +1 -1
- package/src/components/molecules/DXStatCard/DXStatCard.vue +30 -26
- package/src/components/molecules/DXTableFiltersPanel/index.js +3 -0
- package/src/components/molecules/DXTablePagination/DXTablePagination.stories.js +67 -0
- package/src/components/molecules/DXTableToolbar/DXTableToolbar.stories.js +71 -0
- package/src/components/molecules/DXTextarea/DXTextarea.stories.js +87 -1
- package/src/components/molecules/DXTimePicker/DXTimePicker.stories.js +1 -1
- package/src/components/molecules/DXValidationIcon/DXValidationIcon.stories.js +59 -1
- package/src/components/molecules/index.js +0 -1
- package/src/components/organisms/DXAccordion/DXAccordion.stories.js +75 -0
- package/src/components/organisms/DXAppLayout/DXAppLayout.stories.js +27 -25
- package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.stories.js +0 -2
- package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.vue +5 -8
- package/src/components/{molecules → organisms}/DXBaseTable/DXBaseTable.stories.js +78 -1
- package/src/components/{molecules → organisms}/DXBaseTable/DXBaseTable.vue +2 -2
- package/src/components/organisms/DXChartContainer/DXChartContainer.stories.js +1 -1
- package/src/components/organisms/DXChartContainer/DXChartContainer.vue +10 -6
- package/src/components/organisms/DXChatInterface/DXChatInterface.stories.js +1 -1
- package/src/components/organisms/DXChatInterface/DXChatInterface.vue +6 -4
- package/src/components/organisms/DXCommentSection/DXCommentSection.stories.js +1 -1
- package/src/components/organisms/DXCommentSection/DXCommentSection.vue +7 -6
- package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.stories.js +1 -1
- package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.vue +4 -2
- package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.stories.js +1 -1
- package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.vue +3 -2
- package/src/components/organisms/DXDataTable/DXDataTable.stories.js +1 -1
- package/src/components/organisms/DXDropdown/DXDropdown.stories.js +84 -1
- package/src/components/organisms/DXEmptyState/DXEmptyState.stories.js +64 -0
- package/src/components/organisms/DXEmptyState/DXEmptyState.vue +4 -2
- package/src/components/organisms/DXHeaderBar/DXHeaderBar.stories.js +409 -3
- package/src/components/organisms/DXHeaderBar/DXHeaderBar.vue +261 -52
- package/src/components/organisms/DXMediaGallery/DXMediaGallery.stories.js +1 -1
- package/src/components/organisms/DXMediaGallery/DXMediaGallery.vue +6 -4
- package/src/components/organisms/DXModal/DXModal.stories.js +93 -1
- package/src/components/organisms/DXModal/DXModal.vue +3 -2
- package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.stories.js +1 -1
- package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.vue +2 -1
- package/src/components/organisms/DXReportGenerator/DXReportGenerator.vue +4 -3
- package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.vue +11 -8
- package/src/components/organisms/DXSidebar/DXSidebar.stories.js +1 -1
- package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.stories.js +104 -1
- package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.vue +14 -4
- package/src/components/organisms/DXSidebarMenu/README.md +3 -3
- package/src/components/organisms/DXTable/DXTable.stories.js +138 -11
- package/src/components/organisms/DXTable/DXTable.vue +1 -1
- package/src/components/organisms/DXTabs/DXTabs.stories.js +91 -1
- package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.stories.js +1 -1
- package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.vue +20 -18
- package/src/components/organisms/index.js +1 -0
- package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.stories.js +1 -1
- package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.stories.js +1 -1
- package/src/components/utilities/DXObserver/DXObserver.stories.js +1 -1
- package/src/components/utilities/DXPortal/DXPortal.stories.js +1 -1
- package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.stories.js +2 -2
- package/src/components/utilities/DXThemeProvider/DXThemeProvider.stories.js +1 -1
- package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.stories.js +1 -1
- package/src/composables/useSize.js +8 -1
- /package/src/components/{molecules → organisms}/DXBaseTable/index.js +0 -0
|
@@ -3,7 +3,82 @@ import DXProgress from './DXProgress.vue';
|
|
|
3
3
|
export default {
|
|
4
4
|
title: 'Atoms/DXProgress',
|
|
5
5
|
component: DXProgress,
|
|
6
|
-
tags: ['autodocs'],
|
|
6
|
+
tags: ['autodocs', 'category:feedback'],
|
|
7
|
+
parameters: {
|
|
8
|
+
docs: {
|
|
9
|
+
description: {
|
|
10
|
+
component: `
|
|
11
|
+
# DXProgress
|
|
12
|
+
|
|
13
|
+
Компонент прогресс-бара для отображения прогресса выполнения задачи с поддержкой различных размеров, цветов и режимов отображения.
|
|
14
|
+
|
|
15
|
+
## Назначение
|
|
16
|
+
|
|
17
|
+
DXProgress предоставляет стандартизированный способ отображения прогресса выполнения задачи.
|
|
18
|
+
Компонент поддерживает различные размеры, цвета, анимации, полосатый фон и различные варианты
|
|
19
|
+
отображения значения.
|
|
20
|
+
|
|
21
|
+
## Архитектура
|
|
22
|
+
|
|
23
|
+
### Использует
|
|
24
|
+
- \`useSize\` composable - для унификации размеров (xs, sm, md, lg)
|
|
25
|
+
- \`useVariantProgress\` composable - для цветовых вариантов
|
|
26
|
+
- \`useAnimation\` composable - для анимаций
|
|
27
|
+
|
|
28
|
+
### Используется в
|
|
29
|
+
- Загрузка файлов
|
|
30
|
+
- Процесс выполнения задач
|
|
31
|
+
- Индикаторы прогресса
|
|
32
|
+
- Любые места, требующие отображения прогресса
|
|
33
|
+
|
|
34
|
+
## Внутренняя логика
|
|
35
|
+
|
|
36
|
+
### Расчет прогресса
|
|
37
|
+
Прогресс рассчитывается как процент от диапазона:
|
|
38
|
+
\`\`\`
|
|
39
|
+
percentage = ((value - min) / (max - min)) * 100
|
|
40
|
+
\`\`\`
|
|
41
|
+
|
|
42
|
+
### Размеры
|
|
43
|
+
Поддерживает 4 размера:
|
|
44
|
+
- **xs** - очень маленький
|
|
45
|
+
- **sm** - маленький
|
|
46
|
+
- **md** - средний (по умолчанию)
|
|
47
|
+
- **lg** - большой
|
|
48
|
+
|
|
49
|
+
### Цвета
|
|
50
|
+
Поддерживает 5 цветовых вариантов:
|
|
51
|
+
- **default** - стандартный цвет (по умолчанию)
|
|
52
|
+
- **success** - зеленый цвет
|
|
53
|
+
- **warning** - желтый цвет
|
|
54
|
+
- **danger** - красный цвет
|
|
55
|
+
- **info** - синий цвет
|
|
56
|
+
|
|
57
|
+
### Режимы отображения значения
|
|
58
|
+
- **showLabel** - показывать лейбл слева (через slot или prop)
|
|
59
|
+
- **showValue** - показывать значение справа (в процентах)
|
|
60
|
+
- **showInnerValue** - показывать значение внутри бара (только если процент > 10)
|
|
61
|
+
|
|
62
|
+
### Анимации
|
|
63
|
+
- **animated** - анимация заполнения бара
|
|
64
|
+
- **striped** - полосатый фон для визуального эффекта
|
|
65
|
+
|
|
66
|
+
## Особенности
|
|
67
|
+
|
|
68
|
+
### Минимальные и максимальные значения
|
|
69
|
+
Поддерживает настраиваемые \`min\` и \`max\` значения (по умолчанию 0 и 100).
|
|
70
|
+
|
|
71
|
+
### Доступность
|
|
72
|
+
- Использует \`role="progressbar"\`
|
|
73
|
+
- Правильные ARIA атрибуты (\`aria-valuenow\`, \`aria-valuemin\`, \`aria-valuemax\`)
|
|
74
|
+
|
|
75
|
+
### Слоты
|
|
76
|
+
- **label** - кастомный лейбл (если нужно)
|
|
77
|
+
- **default** - основной контент (если нужно)
|
|
78
|
+
`,
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
},
|
|
7
82
|
argTypes: {
|
|
8
83
|
value: {
|
|
9
84
|
control: { type: 'range', min: 0, max: 100 },
|
|
@@ -4,7 +4,91 @@ import { ref } from 'vue';
|
|
|
4
4
|
export default {
|
|
5
5
|
title: 'Atoms/DXRadio',
|
|
6
6
|
component: DXRadio,
|
|
7
|
-
tags: ['autodocs'],
|
|
7
|
+
tags: ['autodocs', 'category:form'],
|
|
8
|
+
parameters: {
|
|
9
|
+
docs: {
|
|
10
|
+
description: {
|
|
11
|
+
component: `
|
|
12
|
+
# DXRadio
|
|
13
|
+
|
|
14
|
+
Компонент радиокнопки с поддержкой двух вариантов (нативный и кастомный), различных размеров и цветов.
|
|
15
|
+
|
|
16
|
+
## Назначение
|
|
17
|
+
|
|
18
|
+
DXRadio предоставляет стандартизированную радиокнопку для выбора одного значения из группы.
|
|
19
|
+
Компонент поддерживает два варианта оформления (нативный и кастомный), различные размеры, цвета
|
|
20
|
+
и работу в группах радиокнопок.
|
|
21
|
+
|
|
22
|
+
## Архитектура
|
|
23
|
+
|
|
24
|
+
### Использует
|
|
25
|
+
- \`useSize\` composable - для унификации размеров (xs, sm, md, lg, xl)
|
|
26
|
+
- \`useVariantRadio\` composable - для вариантов оформления кастомной радиокнопки
|
|
27
|
+
- \`Transition\` - для анимации точки в кастомном варианте
|
|
28
|
+
|
|
29
|
+
### Используется в
|
|
30
|
+
- \`DXRadioGroup\` - группы радиокнопок
|
|
31
|
+
- Формы с выбором одного варианта из нескольких
|
|
32
|
+
- Настройки и конфигурация
|
|
33
|
+
- Фильтры с одним выбором
|
|
34
|
+
- Любые места, требующие выбора одного значения из группы
|
|
35
|
+
|
|
36
|
+
## Внутренняя логика
|
|
37
|
+
|
|
38
|
+
### Варианты
|
|
39
|
+
- **default** (по умолчанию): Нативный HTML radio с кастомной стилизацией
|
|
40
|
+
- **custom**: Кастомная радиокнопка с точкой и настраиваемыми цветами
|
|
41
|
+
|
|
42
|
+
### Работа в группах
|
|
43
|
+
Радиокнопки работают в группах через общий \`v-model\`:
|
|
44
|
+
- Все радиокнопки в группе имеют одинаковый \`v-model\`
|
|
45
|
+
- Каждая радиокнопка имеет уникальный \`value\`
|
|
46
|
+
- При выборе одной радиокнопки, остальные автоматически снимаются
|
|
47
|
+
|
|
48
|
+
### Кастомный вариант
|
|
49
|
+
При \`variant="custom"\`:
|
|
50
|
+
- Поддерживает различные цвета: \`slate\`, \`primary\`, \`success\`, \`danger\`, \`warning\`, \`info\`
|
|
51
|
+
- Отображает точку в центре при выборе
|
|
52
|
+
- Анимация появления точки через Transition
|
|
53
|
+
|
|
54
|
+
### Размеры
|
|
55
|
+
Поддерживает 5 размеров:
|
|
56
|
+
- **xs** - очень маленький
|
|
57
|
+
- **sm** - маленький
|
|
58
|
+
- **md** - средний (по умолчанию)
|
|
59
|
+
- **lg** - большой
|
|
60
|
+
- **xl** - очень большой
|
|
61
|
+
|
|
62
|
+
## Особенности
|
|
63
|
+
|
|
64
|
+
### v-model
|
|
65
|
+
Полностью поддерживает двустороннее связывание через \`v-model\`:
|
|
66
|
+
- \`v-model="selected"\` где selected - String, Number или Boolean
|
|
67
|
+
- Каждая радиокнопка имеет свой \`value\` prop
|
|
68
|
+
- При выборе, \`v-model\` получает значение выбранной радиокнопки
|
|
69
|
+
|
|
70
|
+
### Лейбл
|
|
71
|
+
- Текст лейбла через \`label\` prop
|
|
72
|
+
- Лейбл кликабелен и выбирает радиокнопку
|
|
73
|
+
|
|
74
|
+
### Состояния
|
|
75
|
+
- **disabled** - отключает радиокнопку
|
|
76
|
+
- **checked** - выбранное состояние (когда \`modelValue === value\`)
|
|
77
|
+
- **unchecked** - невыбранное состояние
|
|
78
|
+
|
|
79
|
+
### Доступность
|
|
80
|
+
- Нативный radio: полная поддержка нативной доступности
|
|
81
|
+
- Кастомный radio: использует \`role="radio"\`, \`aria-checked\`, \`aria-disabled\`
|
|
82
|
+
- Поддержка клавиатурной навигации (Space для выбора)
|
|
83
|
+
- Автоматическая группировка через name атрибут (для нативного варианта)
|
|
84
|
+
|
|
85
|
+
### Отличие от Checkbox
|
|
86
|
+
- Radio: выбор одного значения из группы (взаимоисключающий)
|
|
87
|
+
- Checkbox: выбор нескольких значений или boolean переключатель
|
|
88
|
+
`,
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
},
|
|
8
92
|
argTypes: {
|
|
9
93
|
variant: {
|
|
10
94
|
control: 'select',
|
|
@@ -3,7 +3,65 @@ import DXSkeleton from './DXSkeleton.vue';
|
|
|
3
3
|
export default {
|
|
4
4
|
title: 'Atoms/DXSkeleton',
|
|
5
5
|
component: DXSkeleton,
|
|
6
|
-
tags: ['autodocs'],
|
|
6
|
+
tags: ['autodocs', 'category:feedback'],
|
|
7
|
+
parameters: {
|
|
8
|
+
docs: {
|
|
9
|
+
description: {
|
|
10
|
+
component: `
|
|
11
|
+
# DXSkeleton
|
|
12
|
+
|
|
13
|
+
Компонент скелетона для отображения placeholder контента во время загрузки.
|
|
14
|
+
|
|
15
|
+
## Назначение
|
|
16
|
+
|
|
17
|
+
DXSkeleton предоставляет стандартизированный способ отображения placeholder контента
|
|
18
|
+
во время загрузки данных. Компонент использует анимацию пульсации для визуального
|
|
19
|
+
указания на загрузку.
|
|
20
|
+
|
|
21
|
+
## Архитектура
|
|
22
|
+
|
|
23
|
+
### Использует
|
|
24
|
+
- CSS анимация \`animate-pulse\` - для эффекта пульсации
|
|
25
|
+
|
|
26
|
+
### Используется в
|
|
27
|
+
- Карточки товаров при загрузке
|
|
28
|
+
- Списки элементов при загрузке
|
|
29
|
+
- Профили пользователей при загрузке
|
|
30
|
+
- Любые места, требующие placeholder во время загрузки
|
|
31
|
+
|
|
32
|
+
## Внутренняя логика
|
|
33
|
+
|
|
34
|
+
### Визуальное оформление
|
|
35
|
+
- Серый фон (\`bg-slate-200\`)
|
|
36
|
+
- Анимация пульсации (\`animate-pulse\`)
|
|
37
|
+
- Настраиваемые размеры через \`width\` и \`height\` props
|
|
38
|
+
- Настраиваемое скругление через \`rounded\` prop
|
|
39
|
+
|
|
40
|
+
### Размеры
|
|
41
|
+
Размеры настраиваются через props:
|
|
42
|
+
- \`width\` - ширина (по умолчанию "100%")
|
|
43
|
+
- \`height\` - высота (по умолчанию "1rem")
|
|
44
|
+
- \`rounded\` - скругление (по умолчанию "rounded-md")
|
|
45
|
+
|
|
46
|
+
## Особенности
|
|
47
|
+
|
|
48
|
+
### Гибкость
|
|
49
|
+
Компонент полностью настраивается через props и CSS классы:
|
|
50
|
+
- Можно задать любые размеры
|
|
51
|
+
- Можно задать любую форму (круг, квадрат, прямоугольник)
|
|
52
|
+
- Можно комбинировать несколько скелетонов для создания сложных placeholder
|
|
53
|
+
|
|
54
|
+
### Примеры использования
|
|
55
|
+
- **Текст**: \`<DXSkeleton class="h-4 w-48" />\`
|
|
56
|
+
- **Круг**: \`<DXSkeleton class="h-12 w-12 rounded-full" />\`
|
|
57
|
+
- **Карточка**: Комбинация нескольких скелетонов
|
|
58
|
+
|
|
59
|
+
### Кастомные классы
|
|
60
|
+
Поддерживает \`class\` prop для добавления дополнительных CSS классов.
|
|
61
|
+
`,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
7
65
|
};
|
|
8
66
|
|
|
9
67
|
export const Default = {
|
|
@@ -17,6 +17,95 @@ export default {
|
|
|
17
17
|
title: 'Atoms/DXSlider',
|
|
18
18
|
component: DXSlider,
|
|
19
19
|
tags: ['autodocs'],
|
|
20
|
+
parameters: {
|
|
21
|
+
docs: {
|
|
22
|
+
description: {
|
|
23
|
+
component: `
|
|
24
|
+
# DXSlider
|
|
25
|
+
|
|
26
|
+
Компонент слайдера для выбора числового значения в диапазоне с поддержкой засечек, иконок и различных вариантов оформления.
|
|
27
|
+
|
|
28
|
+
## Назначение
|
|
29
|
+
|
|
30
|
+
DXSlider предоставляет интерактивный способ выбора числового значения в заданном диапазоне.
|
|
31
|
+
Компонент поддерживает засечки (ticks), иконки, подписи, различные размеры и цвета для
|
|
32
|
+
создания интуитивных интерфейсов настройки.
|
|
33
|
+
|
|
34
|
+
## Архитектура
|
|
35
|
+
|
|
36
|
+
### Использует
|
|
37
|
+
- \`DXIcon\` - для иконок на засечках
|
|
38
|
+
- \`useSize\` composable - для унификации размеров (xs, sm, md, lg, xl)
|
|
39
|
+
- \`useVariantSlider\` composable - для цветовых вариантов
|
|
40
|
+
- \`useSpacing\` composable - для отступов
|
|
41
|
+
|
|
42
|
+
### Используется в
|
|
43
|
+
- Настройки громкости, яркости
|
|
44
|
+
- Фильтры и диапазоны значений
|
|
45
|
+
- Настройки параметров
|
|
46
|
+
- Любые места, требующие выбора числового значения
|
|
47
|
+
|
|
48
|
+
## Внутренняя логика
|
|
49
|
+
|
|
50
|
+
### Размеры
|
|
51
|
+
Поддерживает 5 размеров:
|
|
52
|
+
- **xs** - очень маленький
|
|
53
|
+
- **sm** - маленький
|
|
54
|
+
- **md** - средний (по умолчанию)
|
|
55
|
+
- **lg** - большой
|
|
56
|
+
- **xl** - очень большой
|
|
57
|
+
|
|
58
|
+
### Цвета
|
|
59
|
+
Поддерживает 6 цветовых вариантов:
|
|
60
|
+
- **slate** - нейтральный серый (по умолчанию)
|
|
61
|
+
- **primary** - основной цвет
|
|
62
|
+
- **success** - зеленый цвет
|
|
63
|
+
- **danger** - красный цвет
|
|
64
|
+
- **warning** - желтый цвет
|
|
65
|
+
- **info** - синий цвет
|
|
66
|
+
|
|
67
|
+
### Засечки (Ticks)
|
|
68
|
+
При \`ticks={true}\`:
|
|
69
|
+
- Отображаются визуальные засечки на линии слайдера
|
|
70
|
+
- Количество засечек настраивается через \`tickCount\` (по умолчанию 5)
|
|
71
|
+
- Можно добавить подписи через \`showTickLabels={true}\`
|
|
72
|
+
- Можно добавить иконки через массив \`tickIcons\`
|
|
73
|
+
|
|
74
|
+
### Иконки на засечках
|
|
75
|
+
Можно указать массив иконок для засечек:
|
|
76
|
+
- Каждая иконка соответствует позиции засечки
|
|
77
|
+
- Активная иконка (ближайшая к текущему значению) может анимироваться
|
|
78
|
+
- Анимация настраивается через \`tickIconAnimation\`
|
|
79
|
+
|
|
80
|
+
### Отображение значения
|
|
81
|
+
- \`showValue={true}\` - показывает текущее значение справа от лейбла
|
|
82
|
+
- Значение форматируется с единицей измерения (если указан \`unit\`)
|
|
83
|
+
|
|
84
|
+
## Особенности
|
|
85
|
+
|
|
86
|
+
### v-model
|
|
87
|
+
Полностью поддерживает двустороннее связывание через \`v-model\` для Number значений.
|
|
88
|
+
|
|
89
|
+
### Диапазон значений
|
|
90
|
+
- \`min\` - минимальное значение (по умолчанию 0)
|
|
91
|
+
- \`max\` - максимальное значение (по умолчанию 100)
|
|
92
|
+
- \`step\` - шаг изменения (по умолчанию 1)
|
|
93
|
+
|
|
94
|
+
### Единица измерения
|
|
95
|
+
Можно указать единицу измерения через \`unit\` prop (например, "%", "px", "°C").
|
|
96
|
+
|
|
97
|
+
### Состояния
|
|
98
|
+
- **disabled** - отключает слайдер
|
|
99
|
+
- **active** - активное состояние (для иконок на засечках)
|
|
100
|
+
|
|
101
|
+
### Доступность
|
|
102
|
+
- Использует нативный \`<input type="range">\` для полной доступности
|
|
103
|
+
- Поддержка клавиатурной навигации
|
|
104
|
+
- Правильные ARIA атрибуты
|
|
105
|
+
`,
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
},
|
|
20
109
|
argTypes: {
|
|
21
110
|
size: {
|
|
22
111
|
control: 'select',
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
2
|
+
<component
|
|
3
|
+
:is="tag"
|
|
3
4
|
:class="stackClasses"
|
|
4
5
|
data-component="DXStack"
|
|
5
6
|
:data-direction="direction"
|
|
@@ -8,7 +9,7 @@
|
|
|
8
9
|
:data-justify="justify"
|
|
9
10
|
>
|
|
10
11
|
<slot />
|
|
11
|
-
</
|
|
12
|
+
</component>
|
|
12
13
|
</template>
|
|
13
14
|
|
|
14
15
|
<script setup>
|
|
@@ -17,6 +18,8 @@ import { useSize } from "../../../composables/useSize";
|
|
|
17
18
|
import { useClassComposition } from "../../../composables/useClassComposition";
|
|
18
19
|
|
|
19
20
|
const props = defineProps({
|
|
21
|
+
/** HTML тег */
|
|
22
|
+
tag: { type: String, default: "div" },
|
|
20
23
|
/** Направление: vertical | horizontal */
|
|
21
24
|
direction: { type: String, default: "vertical" },
|
|
22
25
|
/** Отступ между элементами: none | xs | sm | md | lg | xl | 2xl */
|
|
@@ -17,6 +17,83 @@ export default {
|
|
|
17
17
|
title: "Atoms/DXTags",
|
|
18
18
|
component: DXTags,
|
|
19
19
|
tags: ["autodocs"],
|
|
20
|
+
parameters: {
|
|
21
|
+
docs: {
|
|
22
|
+
description: {
|
|
23
|
+
component: `
|
|
24
|
+
# DXTags
|
|
25
|
+
|
|
26
|
+
Компонент для отображения группы тегов с поддержкой иконок, цветов и возможности удаления.
|
|
27
|
+
|
|
28
|
+
## Назначение
|
|
29
|
+
|
|
30
|
+
DXTags предоставляет стандартизированный способ отображения группы тегов (меток, категорий).
|
|
31
|
+
Компонент поддерживает иконки, различные цвета, анимации и возможность удаления отдельных тегов.
|
|
32
|
+
|
|
33
|
+
## Архитектура
|
|
34
|
+
|
|
35
|
+
### Использует
|
|
36
|
+
- \`DXIcon\` - для иконок в тегах и кнопки удаления
|
|
37
|
+
- \`useSize\` composable - для размеров
|
|
38
|
+
- \`useVariantTag\` composable - для цветовых вариантов
|
|
39
|
+
- \`useClassComposition\` composable - для объединения классов
|
|
40
|
+
|
|
41
|
+
### Используется в
|
|
42
|
+
- Категории и метки
|
|
43
|
+
- Фильтры
|
|
44
|
+
- Теги в формах
|
|
45
|
+
- Любые места, требующие отображения группы тегов
|
|
46
|
+
|
|
47
|
+
## Внутренняя логика
|
|
48
|
+
|
|
49
|
+
### Структура тегов
|
|
50
|
+
Теги могут быть переданы как:
|
|
51
|
+
- **Строки**: \`["Vue.js", "React"]\` - простые теги
|
|
52
|
+
- **Объекты**: \`[{ label: "Vue.js", icon: Icon, color: "primary" }]\` - теги с дополнительными свойствами
|
|
53
|
+
|
|
54
|
+
### Варианты размера
|
|
55
|
+
- **default** (по умолчанию): Стандартный размер
|
|
56
|
+
- **large**: Увеличенный размер
|
|
57
|
+
|
|
58
|
+
### Цвета
|
|
59
|
+
Поддерживает 6 цветовых вариантов:
|
|
60
|
+
- **default** (по умолчанию) - нейтральный серый
|
|
61
|
+
- **primary** - основной цвет
|
|
62
|
+
- **success** - зеленый цвет
|
|
63
|
+
- **warning** - желтый цвет
|
|
64
|
+
- **danger** - красный цвет
|
|
65
|
+
- **info** - синий цвет
|
|
66
|
+
|
|
67
|
+
Цвет можно задать глобально через \`color\` prop или индивидуально для каждого тега.
|
|
68
|
+
|
|
69
|
+
### Иконки
|
|
70
|
+
- Можно добавить иконку слева от текста через \`icon\` в объекте тега
|
|
71
|
+
- Размер иконки автоматически адаптируется к размеру тега
|
|
72
|
+
- Поддерживает анимации иконок через \`iconAnimation\`
|
|
73
|
+
|
|
74
|
+
### Удаление тегов
|
|
75
|
+
- При \`closable={true}\` все теги становятся удаляемыми
|
|
76
|
+
- Можно задать индивидуально для каждого тега через \`closable\` в объекте
|
|
77
|
+
- При удалении эмитится событие \`remove\` с данными тега
|
|
78
|
+
|
|
79
|
+
## Особенности
|
|
80
|
+
|
|
81
|
+
### События
|
|
82
|
+
- \`@remove\` - эмитится при удалении тега, передает данные тега и индекс
|
|
83
|
+
|
|
84
|
+
### Анимации иконок
|
|
85
|
+
Поддерживает те же анимации, что и DXIcon:
|
|
86
|
+
- **none** - без анимации
|
|
87
|
+
- **wiggle** - тряска
|
|
88
|
+
- **scale** - масштабирование
|
|
89
|
+
- **rotate** - вращение
|
|
90
|
+
|
|
91
|
+
### Групповое удаление
|
|
92
|
+
При \`closable={true}\` все теги получают кнопку удаления с иконкой XMarkIcon.
|
|
93
|
+
`,
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
},
|
|
20
97
|
};
|
|
21
98
|
|
|
22
99
|
export const Default = {
|
|
@@ -3,7 +3,89 @@ import DXText from './DXText.vue';
|
|
|
3
3
|
export default {
|
|
4
4
|
title: 'Atoms/DXText',
|
|
5
5
|
component: DXText,
|
|
6
|
-
tags: ['autodocs'],
|
|
6
|
+
tags: ['autodocs', 'category:typography'],
|
|
7
|
+
parameters: {
|
|
8
|
+
docs: {
|
|
9
|
+
description: {
|
|
10
|
+
component: `
|
|
11
|
+
# DXText
|
|
12
|
+
|
|
13
|
+
Компонент текста с поддержкой различных размеров, весов, цветов и выравнивания.
|
|
14
|
+
|
|
15
|
+
## Назначение
|
|
16
|
+
|
|
17
|
+
DXText предоставляет стандартизированный способ отображения текста с настраиваемыми параметрами
|
|
18
|
+
типографики. Компонент поддерживает различные размеры, веса шрифта, цвета и выравнивание текста.
|
|
19
|
+
|
|
20
|
+
## Архитектура
|
|
21
|
+
|
|
22
|
+
### Использует
|
|
23
|
+
- \`useSize\` composable - для унификации размеров текста (xs, sm, md, lg, xl)
|
|
24
|
+
- Динамический рендеринг HTML тегов - для семантической правильности
|
|
25
|
+
|
|
26
|
+
### Используется в
|
|
27
|
+
- Параграфы и описания
|
|
28
|
+
- Текстовые блоки в карточках
|
|
29
|
+
- Вспомогательный текст
|
|
30
|
+
- Любые места, требующие отображения текста
|
|
31
|
+
|
|
32
|
+
## Внутренняя логика
|
|
33
|
+
|
|
34
|
+
### HTML теги
|
|
35
|
+
Компонент может рендериться как различные HTML теги через \`tag\` prop:
|
|
36
|
+
- \`p\` (по умолчанию) - параграф
|
|
37
|
+
- \`span\` - инлайн текст
|
|
38
|
+
- \`div\` - блочный контейнер
|
|
39
|
+
- Другие текстовые теги
|
|
40
|
+
|
|
41
|
+
### Размеры
|
|
42
|
+
Поддерживает 5 размеров:
|
|
43
|
+
- **xs** - очень маленький текст
|
|
44
|
+
- **sm** - маленький текст
|
|
45
|
+
- **md** - средний текст (по умолчанию)
|
|
46
|
+
- **lg** - большой текст
|
|
47
|
+
- **xl** - очень большой текст
|
|
48
|
+
|
|
49
|
+
### Веса шрифта
|
|
50
|
+
Поддерживает 4 веса:
|
|
51
|
+
- **normal** - обычный вес
|
|
52
|
+
- **medium** - средний вес
|
|
53
|
+
- **semibold** - полужирный
|
|
54
|
+
- **bold** - жирный
|
|
55
|
+
|
|
56
|
+
### Цвета
|
|
57
|
+
Поддерживает 6 цветовых вариантов:
|
|
58
|
+
- **default** - цвет по умолчанию (text-slate-900)
|
|
59
|
+
- **muted** - приглушенный цвет (text-slate-600)
|
|
60
|
+
- **primary** - основной цвет
|
|
61
|
+
- **success** - зеленый цвет
|
|
62
|
+
- **warning** - желтый цвет
|
|
63
|
+
- **danger** - красный цвет
|
|
64
|
+
|
|
65
|
+
### Выравнивание
|
|
66
|
+
Поддерживает 4 варианта выравнивания:
|
|
67
|
+
- **left** (по умолчанию) - по левому краю
|
|
68
|
+
- **center** - по центру
|
|
69
|
+
- **right** - по правому краю
|
|
70
|
+
- **justify** - по ширине
|
|
71
|
+
|
|
72
|
+
## Особенности
|
|
73
|
+
|
|
74
|
+
### Обрезка текста
|
|
75
|
+
При \`truncate={true}\`:
|
|
76
|
+
- Текст обрезается с многоточием при переполнении
|
|
77
|
+
- Используется \`text-overflow: ellipsis\`
|
|
78
|
+
- Требует \`overflow: hidden\` и \`white-space: nowrap\`
|
|
79
|
+
|
|
80
|
+
### Семантика
|
|
81
|
+
Компонент использует семантически правильные HTML теги для лучшей доступности и SEO.
|
|
82
|
+
|
|
83
|
+
### Кастомные классы
|
|
84
|
+
Поддерживает \`class\` prop для добавления дополнительных CSS классов.
|
|
85
|
+
`,
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
7
89
|
argTypes: {
|
|
8
90
|
size: { control: { type: 'select' }, options: ['xs', 'sm', 'md', 'lg', 'xl'] },
|
|
9
91
|
weight: { control: { type: 'select' }, options: ['normal', 'medium', 'semibold', 'bold'] },
|
|
@@ -3,7 +3,70 @@ import DXToast from "./DXToast.vue";
|
|
|
3
3
|
export default {
|
|
4
4
|
title: "Atoms/DXToast",
|
|
5
5
|
component: DXToast,
|
|
6
|
-
tags: ["autodocs"],
|
|
6
|
+
tags: ["autodocs", "category:feedback"],
|
|
7
|
+
parameters: {
|
|
8
|
+
docs: {
|
|
9
|
+
description: {
|
|
10
|
+
component: `
|
|
11
|
+
# DXToast
|
|
12
|
+
|
|
13
|
+
Компонент уведомления (toast) с поддержкой различных вариантов и иконок.
|
|
14
|
+
|
|
15
|
+
## Назначение
|
|
16
|
+
|
|
17
|
+
DXToast предоставляет стандартизированный способ отображения временных уведомлений.
|
|
18
|
+
Компонент поддерживает различные варианты (info, success, warning, danger) и автоматически
|
|
19
|
+
отображает соответствующие иконки.
|
|
20
|
+
|
|
21
|
+
## Архитектура
|
|
22
|
+
|
|
23
|
+
### Использует
|
|
24
|
+
- \`DXIcon\` - для отображения иконок вариантов
|
|
25
|
+
- \`useVariantConfig\` composable - для конфигурации вариантов
|
|
26
|
+
|
|
27
|
+
### Используется в
|
|
28
|
+
- Уведомления об успешных операциях
|
|
29
|
+
- Сообщения об ошибках
|
|
30
|
+
- Предупреждения
|
|
31
|
+
- Информационные сообщения
|
|
32
|
+
- Любые места, требующие временных уведомлений
|
|
33
|
+
|
|
34
|
+
## Внутренняя логика
|
|
35
|
+
|
|
36
|
+
### Варианты
|
|
37
|
+
Поддерживает 4 варианта:
|
|
38
|
+
- **info** (по умолчанию) - информационное сообщение (синий цвет)
|
|
39
|
+
- **success** - успешная операция (зеленый цвет)
|
|
40
|
+
- **warning** - предупреждение (желтый цвет)
|
|
41
|
+
- **danger** - ошибка (красный цвет)
|
|
42
|
+
|
|
43
|
+
### Иконки
|
|
44
|
+
Каждый вариант автоматически получает соответствующую иконку:
|
|
45
|
+
- info → InformationCircleIcon
|
|
46
|
+
- success → CheckCircleIcon
|
|
47
|
+
- warning → ExclamationTriangleIcon
|
|
48
|
+
- danger → XCircleIcon
|
|
49
|
+
|
|
50
|
+
Иконки можно скрыть через \`showIcon={false}\`.
|
|
51
|
+
|
|
52
|
+
### Визуальное оформление
|
|
53
|
+
- Скругленные углы (\`rounded-2xl\`)
|
|
54
|
+
- Рамка для визуального выделения
|
|
55
|
+
- Padding для контента
|
|
56
|
+
- Иконка слева, текст справа
|
|
57
|
+
|
|
58
|
+
## Особенности
|
|
59
|
+
|
|
60
|
+
### Слоты
|
|
61
|
+
- **default** - основной контент (текст сообщения)
|
|
62
|
+
|
|
63
|
+
### Использование
|
|
64
|
+
Обычно используется в составе toast-менеджера для отображения уведомлений в определенной
|
|
65
|
+
области экрана (обычно сверху или снизу).
|
|
66
|
+
`,
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
7
70
|
};
|
|
8
71
|
|
|
9
72
|
export const Success = {
|