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.
Files changed (148) hide show
  1. package/dist/dxd-style-code.js +7470 -6336
  2. package/dist/dxd-style-code.umd.cjs +3 -3
  3. package/dist/style.css +1 -1
  4. package/package.json +2 -2
  5. package/src/components/atoms/DX/DX.stories.js +265 -0
  6. package/src/components/atoms/DX/DX.vue +80 -0
  7. package/src/components/atoms/DX/index.js +2 -0
  8. package/src/components/atoms/DXAvatar/DXAvatar.stories.js +1 -2
  9. package/src/components/atoms/DXBackdrop/DXBackdrop.stories.js +77 -1
  10. package/src/components/atoms/DXBadge/DXBadge.stories.js +83 -1
  11. package/src/components/atoms/DXBlockquote/DXBlockquote.stories.js +67 -1
  12. package/src/components/atoms/DXBox/DXBox.stories.js +1 -1
  13. package/src/components/atoms/DXBox/DXBox.vue +69 -2
  14. package/src/components/atoms/DXButton/DXButton.stories.js +94 -1
  15. package/src/components/atoms/DXButton/DXButton.vue +145 -11
  16. package/src/components/atoms/DXCard/DXCard.stories.js +72 -14
  17. package/src/components/atoms/DXCard/DXCard.vue +3 -4
  18. package/src/components/atoms/DXCheckbox/DXCheckbox.stories.js +85 -1
  19. package/src/components/atoms/DXCode/DXCode.stories.js +67 -1
  20. package/src/components/atoms/DXContainer/DXContainer.stories.js +1 -1
  21. package/src/components/atoms/DXContainer/DXContainer.vue +28 -1
  22. package/src/components/atoms/DXDivider/DXDivider.stories.js +84 -1
  23. package/src/components/atoms/DXFlex/DXFlex.stories.js +1 -1
  24. package/src/components/atoms/DXFlex/DXFlex.vue +57 -3
  25. package/src/components/atoms/DXFormLabel/DXFormLabel.stories.js +70 -1
  26. package/src/components/atoms/DXGrid/DXGrid.stories.js +1 -1
  27. package/src/components/atoms/DXHeading/DXHeading.stories.js +90 -1
  28. package/src/components/atoms/DXIcon/DXIcon.stories.js +74 -0
  29. package/src/components/atoms/DXIconWrapper/DXIconWrapper.stories.js +69 -0
  30. package/src/components/atoms/DXImage/DXImage.stories.js +483 -0
  31. package/src/components/atoms/DXImage/DXImage.vue +294 -0
  32. package/src/components/atoms/DXImage/index.js +2 -0
  33. package/src/components/atoms/DXInputAddon/DXInputAddon.stories.js +86 -1
  34. package/src/components/atoms/DXLabel/DXLabel.stories.js +62 -1
  35. package/src/components/atoms/DXLink/DXLink.stories.js +75 -10
  36. package/src/components/atoms/DXLink/DXLink.vue +59 -3
  37. package/src/components/atoms/DXList/DXList.stories.js +76 -1
  38. package/src/components/atoms/DXLoader/DXLoader.stories.js +75 -1
  39. package/src/components/atoms/DXNav/DXNav.stories.js +236 -0
  40. package/src/components/atoms/DXNav/DXNav.vue +114 -0
  41. package/src/components/atoms/DXNav/index.js +2 -0
  42. package/src/components/atoms/DXProgress/DXProgress.stories.js +76 -1
  43. package/src/components/atoms/DXRadio/DXRadio.stories.js +85 -1
  44. package/src/components/atoms/DXSkeleton/DXSkeleton.stories.js +59 -1
  45. package/src/components/atoms/DXSlider/DXSlider.stories.js +89 -0
  46. package/src/components/atoms/DXSpacer/DXSpacer.stories.js +1 -1
  47. package/src/components/atoms/DXStack/DXStack.stories.js +1 -1
  48. package/src/components/atoms/DXStack/DXStack.vue +5 -2
  49. package/src/components/atoms/DXTags/DXTags.stories.js +77 -0
  50. package/src/components/atoms/DXText/DXText.stories.js +83 -1
  51. package/src/components/atoms/DXToast/DXToast.stories.js +64 -1
  52. package/src/components/atoms/DXToggle/DXToggle.stories.js +84 -1
  53. package/src/components/atoms/DXToggleButton/DXToggleButton.stories.js +78 -1
  54. package/src/components/atoms/DXTooltip/DXTooltip.stories.js +98 -1
  55. package/src/components/atoms/index.js +3 -0
  56. package/src/components/molecules/DXActionButtons/DXActionButtons.stories.js +280 -77
  57. package/src/components/molecules/DXActionButtons/DXActionButtons.vue +31 -31
  58. package/src/components/molecules/DXAlert/DXAlert.stories.js +199 -1
  59. package/src/components/molecules/DXAlert/DXAlert.vue +35 -13
  60. package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.stories.js +125 -1
  61. package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.vue +22 -18
  62. package/src/components/molecules/DXButtonGroup/DXButtonGroup.stories.js +193 -6
  63. package/src/components/molecules/DXButtonGroup/DXButtonGroup.vue +39 -3
  64. package/src/components/molecules/DXCloseButton/DXCloseButton.stories.js +64 -1
  65. package/src/components/molecules/DXComboBox/DXComboBox.stories.js +66 -0
  66. package/src/components/molecules/DXCopyField/DXCopyField.stories.js +128 -1
  67. package/src/components/molecules/DXCopyField/DXCopyField.vue +60 -7
  68. package/src/components/molecules/DXDataFilter/DXDataFilter.vue +8 -6
  69. package/src/components/molecules/DXDatePicker/DXDatePicker.stories.js +58 -0
  70. package/src/components/molecules/DXFileUpload/DXFileUpload.stories.js +66 -0
  71. package/src/components/molecules/DXFilterGroup/DXFilterGroup.stories.js +61 -0
  72. package/src/components/molecules/DXFormControl/DXFormControl.stories.js +76 -0
  73. package/src/components/molecules/DXFormControl/DXFormControl.vue +9 -8
  74. package/src/components/molecules/DXInput/DXInput.stories.js +100 -1
  75. package/src/components/molecules/DXInputGroup/DXInputGroup.stories.js +89 -1
  76. package/src/components/molecules/DXInputMask/DXInputMask.stories.js +67 -0
  77. package/src/components/molecules/DXMenu/DXMenu.stories.js +111 -4
  78. package/src/components/molecules/DXMenu/DXMenu.vue +18 -5
  79. package/src/components/molecules/DXMenu/README.md +1 -1
  80. package/src/components/molecules/DXPagination/DXPagination.stories.js +105 -2
  81. package/src/components/molecules/DXPagination/DXPagination.vue +18 -33
  82. package/src/components/molecules/DXPasswordInput/DXPasswordInput.stories.js +67 -1
  83. package/src/components/molecules/DXRadioCard/DXRadioCard.stories.js +64 -0
  84. package/src/components/molecules/DXRadioGroup/DXRadioGroup.stories.js +84 -0
  85. package/src/components/molecules/DXRating/DXRating.stories.js +3 -2
  86. package/src/components/molecules/DXSearchBar/DXSearchBar.stories.js +1 -1
  87. package/src/components/molecules/DXSearchBar/DXSearchBar.vue +16 -12
  88. package/src/components/molecules/DXSearchSelect/DXSearchSelect.stories.js +71 -0
  89. package/src/components/molecules/DXSegmentedControl/DXSegmentedControl.stories.js +74 -0
  90. package/src/components/molecules/DXSelect/DXSelect.stories.js +92 -1
  91. package/src/components/molecules/DXStatCard/DXStatCard.stories.js +1 -1
  92. package/src/components/molecules/DXStatCard/DXStatCard.vue +30 -26
  93. package/src/components/molecules/DXTableFiltersPanel/index.js +3 -0
  94. package/src/components/molecules/DXTablePagination/DXTablePagination.stories.js +67 -0
  95. package/src/components/molecules/DXTableToolbar/DXTableToolbar.stories.js +71 -0
  96. package/src/components/molecules/DXTextarea/DXTextarea.stories.js +87 -1
  97. package/src/components/molecules/DXTimePicker/DXTimePicker.stories.js +1 -1
  98. package/src/components/molecules/DXValidationIcon/DXValidationIcon.stories.js +59 -1
  99. package/src/components/molecules/index.js +0 -1
  100. package/src/components/organisms/DXAccordion/DXAccordion.stories.js +75 -0
  101. package/src/components/organisms/DXAppLayout/DXAppLayout.stories.js +27 -25
  102. package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.stories.js +0 -2
  103. package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.vue +5 -8
  104. package/src/components/{molecules → organisms}/DXBaseTable/DXBaseTable.stories.js +78 -1
  105. package/src/components/{molecules → organisms}/DXBaseTable/DXBaseTable.vue +2 -2
  106. package/src/components/organisms/DXChartContainer/DXChartContainer.stories.js +1 -1
  107. package/src/components/organisms/DXChartContainer/DXChartContainer.vue +10 -6
  108. package/src/components/organisms/DXChatInterface/DXChatInterface.stories.js +1 -1
  109. package/src/components/organisms/DXChatInterface/DXChatInterface.vue +6 -4
  110. package/src/components/organisms/DXCommentSection/DXCommentSection.stories.js +1 -1
  111. package/src/components/organisms/DXCommentSection/DXCommentSection.vue +7 -6
  112. package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.stories.js +1 -1
  113. package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.vue +4 -2
  114. package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.stories.js +1 -1
  115. package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.vue +3 -2
  116. package/src/components/organisms/DXDataTable/DXDataTable.stories.js +1 -1
  117. package/src/components/organisms/DXDropdown/DXDropdown.stories.js +84 -1
  118. package/src/components/organisms/DXEmptyState/DXEmptyState.stories.js +64 -0
  119. package/src/components/organisms/DXEmptyState/DXEmptyState.vue +4 -2
  120. package/src/components/organisms/DXHeaderBar/DXHeaderBar.stories.js +409 -3
  121. package/src/components/organisms/DXHeaderBar/DXHeaderBar.vue +261 -52
  122. package/src/components/organisms/DXMediaGallery/DXMediaGallery.stories.js +1 -1
  123. package/src/components/organisms/DXMediaGallery/DXMediaGallery.vue +6 -4
  124. package/src/components/organisms/DXModal/DXModal.stories.js +93 -1
  125. package/src/components/organisms/DXModal/DXModal.vue +3 -2
  126. package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.stories.js +1 -1
  127. package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.vue +2 -1
  128. package/src/components/organisms/DXReportGenerator/DXReportGenerator.vue +4 -3
  129. package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.vue +11 -8
  130. package/src/components/organisms/DXSidebar/DXSidebar.stories.js +1 -1
  131. package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.stories.js +104 -1
  132. package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.vue +14 -4
  133. package/src/components/organisms/DXSidebarMenu/README.md +3 -3
  134. package/src/components/organisms/DXTable/DXTable.stories.js +138 -11
  135. package/src/components/organisms/DXTable/DXTable.vue +1 -1
  136. package/src/components/organisms/DXTabs/DXTabs.stories.js +91 -1
  137. package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.stories.js +1 -1
  138. package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.vue +20 -18
  139. package/src/components/organisms/index.js +1 -0
  140. package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.stories.js +1 -1
  141. package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.stories.js +1 -1
  142. package/src/components/utilities/DXObserver/DXObserver.stories.js +1 -1
  143. package/src/components/utilities/DXPortal/DXPortal.stories.js +1 -1
  144. package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.stories.js +2 -2
  145. package/src/components/utilities/DXThemeProvider/DXThemeProvider.stories.js +1 -1
  146. package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.stories.js +1 -1
  147. package/src/composables/useSize.js +8 -1
  148. /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',
@@ -3,7 +3,7 @@ import DXSpacer from './DXSpacer.vue';
3
3
  export default {
4
4
  title: 'Atoms/DXSpacer',
5
5
  component: DXSpacer,
6
- tags: ['autodocs'],
6
+ tags: ['autodocs', 'category:layout'],
7
7
  parameters: {
8
8
  docs: {
9
9
  description: {
@@ -3,7 +3,7 @@ import DXStack from './DXStack.vue';
3
3
  export default {
4
4
  title: 'Atoms/DXStack',
5
5
  component: DXStack,
6
- tags: ['autodocs'],
6
+ tags: ['autodocs', 'category:layout'],
7
7
  parameters: {
8
8
  docs: {
9
9
  description: {
@@ -1,5 +1,6 @@
1
1
  <template>
2
- <div
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
- </div>
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 = {