dxd-style-code 0.1.7 → 0.1.8

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 (334) hide show
  1. package/dist/dxd-style-code.js +11974 -3725
  2. package/dist/dxd-style-code.umd.cjs +10 -1
  3. package/dist/style.css +1 -1
  4. package/package.json +13 -6
  5. package/src/components/atoms/DXAvatar/DXAvatar.stories.js +319 -0
  6. package/src/components/atoms/DXAvatar/DXAvatar.vue +167 -0
  7. package/src/components/atoms/DXAvatar/index.js +2 -0
  8. package/src/components/atoms/DXBackdrop/DXBackdrop.stories.js +341 -0
  9. package/src/components/atoms/DXBackdrop/DXBackdrop.vue +102 -0
  10. package/src/components/atoms/DXBackdrop/index.js +2 -0
  11. package/src/components/atoms/DXBadge/DXBadge.stories.js +239 -0
  12. package/src/components/atoms/DXBadge/DXBadge.vue +45 -0
  13. package/src/components/atoms/DXBadge/index.js +2 -0
  14. package/src/components/atoms/DXButton/DXButton.stories.js +178 -0
  15. package/src/components/atoms/DXButton/DXButton.vue +84 -0
  16. package/src/components/atoms/DXButton/index.js +2 -0
  17. package/src/components/atoms/DXCard/DXCard.stories.js +133 -0
  18. package/src/components/atoms/DXCard/DXCard.vue +46 -0
  19. package/src/components/atoms/DXCard/index.js +2 -0
  20. package/src/components/atoms/DXCheckbox/DXCheckbox.stories.js +294 -0
  21. package/src/components/atoms/DXCheckbox/DXCheckbox.vue +191 -0
  22. package/src/components/atoms/DXCheckbox/index.js +2 -0
  23. package/src/components/atoms/DXDivider/DXDivider.stories.js +135 -0
  24. package/src/components/atoms/DXDivider/DXDivider.vue +74 -0
  25. package/src/components/atoms/DXDivider/index.js +2 -0
  26. package/src/components/atoms/DXDropdownItem/DXDropdownItem.vue +116 -0
  27. package/src/components/atoms/DXDropdownItem/index.js +2 -0
  28. package/src/components/atoms/DXFormLabel/DXFormLabel.stories.js +194 -0
  29. package/src/components/atoms/DXFormLabel/DXFormLabel.vue +94 -0
  30. package/src/components/atoms/DXFormLabel/index.js +2 -0
  31. package/src/components/atoms/DXIcon/DXIcon.stories.js +156 -0
  32. package/src/components/atoms/DXIcon/DXIcon.vue +102 -0
  33. package/src/components/atoms/DXIcon/index.js +3 -0
  34. package/src/components/atoms/DXIconWrapper/DXIconWrapper.stories.js +237 -0
  35. package/src/components/atoms/DXIconWrapper/DXIconWrapper.vue +79 -0
  36. package/src/components/atoms/DXIconWrapper/index.js +2 -0
  37. package/src/components/atoms/DXInputAddon/DXInputAddon.stories.js +230 -0
  38. package/src/components/atoms/DXInputAddon/DXInputAddon.vue +64 -0
  39. package/src/components/atoms/DXInputAddon/index.js +2 -0
  40. package/src/components/atoms/DXLink/DXLink.stories.js +475 -0
  41. package/src/components/atoms/DXLink/DXLink.vue +229 -0
  42. package/src/components/atoms/DXLink/index.js +2 -0
  43. package/src/components/atoms/DXLoader/DXLoader.stories.js +280 -0
  44. package/src/components/atoms/DXLoader/DXLoader.vue +78 -0
  45. package/src/components/atoms/DXLoader/index.js +2 -0
  46. package/src/components/atoms/DXProgress/DXProgress.stories.js +312 -0
  47. package/src/components/atoms/DXProgress/DXProgress.vue +85 -0
  48. package/src/components/atoms/DXProgress/index.js +2 -0
  49. package/src/components/atoms/DXQuote/DXQuote.stories.js +255 -0
  50. package/src/components/atoms/DXQuote/DXQuote.vue +97 -0
  51. package/src/components/atoms/DXQuote/index.js +2 -0
  52. package/src/components/atoms/DXRadio/DXRadio.stories.js +277 -0
  53. package/src/components/atoms/DXRadio/DXRadio.vue +144 -0
  54. package/src/components/atoms/DXRadio/index.js +2 -0
  55. package/src/components/atoms/DXSkeleton/DXSkeleton.stories.js +50 -0
  56. package/src/components/atoms/DXSkeleton/DXSkeleton.vue +19 -0
  57. package/src/components/atoms/DXSkeleton/index.js +2 -0
  58. package/src/components/atoms/DXSlider/DXSlider.stories.js +522 -0
  59. package/src/components/atoms/DXSlider/DXSlider.vue +338 -0
  60. package/src/components/atoms/DXSlider/index.js +2 -0
  61. package/src/components/atoms/DXTags/DXTags.stories.js +206 -0
  62. package/src/components/atoms/DXTags/DXTags.vue +111 -0
  63. package/src/components/atoms/DXTags/index.js +2 -0
  64. package/src/components/atoms/DXToast/DXToast.stories.js +40 -0
  65. package/src/components/atoms/DXToast/DXToast.vue +32 -0
  66. package/src/components/atoms/DXToast/index.js +2 -0
  67. package/src/components/atoms/DXToggle/DXToggle.stories.js +143 -0
  68. package/src/components/atoms/DXToggle/DXToggle.vue +142 -0
  69. package/src/components/atoms/DXToggle/index.js +2 -0
  70. package/src/components/atoms/DXToggleButton/DXToggleButton.stories.js +513 -0
  71. package/src/components/atoms/DXToggleButton/DXToggleButton.vue +140 -0
  72. package/src/components/atoms/DXToggleButton/index.js +2 -0
  73. package/src/components/atoms/DXTooltip/DXTooltip.stories.js +243 -0
  74. package/src/components/atoms/DXTooltip/DXTooltip.vue +151 -0
  75. package/src/components/atoms/DXTooltip/index.js +2 -0
  76. package/src/components/atoms/index.js +24 -0
  77. package/src/components/layout/DXBox/DXBox.stories.js +238 -0
  78. package/src/components/layout/DXBox/DXBox.vue +198 -0
  79. package/src/components/layout/DXBox/index.js +2 -0
  80. package/src/components/layout/DXContainer/DXContainer.stories.js +147 -0
  81. package/src/components/layout/DXContainer/DXContainer.vue +83 -0
  82. package/src/components/layout/DXContainer/index.js +2 -0
  83. package/src/components/layout/DXFlex/DXFlex.stories.js +210 -0
  84. package/src/components/layout/DXFlex/DXFlex.vue +149 -0
  85. package/src/components/layout/DXFlex/index.js +2 -0
  86. package/src/components/layout/DXGrid/DXGrid.stories.js +238 -0
  87. package/src/components/layout/DXGrid/DXGrid.vue +167 -0
  88. package/src/components/layout/DXGrid/index.js +2 -0
  89. package/src/components/layout/DXSpacer/DXSpacer.stories.js +187 -0
  90. package/src/components/layout/DXSpacer/DXSpacer.vue +102 -0
  91. package/src/components/layout/DXSpacer/index.js +2 -0
  92. package/src/components/layout/DXStack/DXStack.stories.js +199 -0
  93. package/src/components/layout/DXStack/DXStack.vue +140 -0
  94. package/src/components/layout/DXStack/index.js +2 -0
  95. package/src/components/layout/index.js +8 -0
  96. package/src/components/molecules/DXActionButtons/DXActionButtons.stories.js +288 -0
  97. package/src/components/molecules/DXActionButtons/DXActionButtons.vue +106 -0
  98. package/src/components/molecules/DXActionButtons/index.js +2 -0
  99. package/src/components/molecules/DXAlert/DXAlert.stories.js +70 -0
  100. package/src/components/molecules/DXAlert/DXAlert.vue +116 -0
  101. package/src/components/molecules/DXAlert/index.js +2 -0
  102. package/src/components/molecules/DXBaseTable/DXBaseTable.stories.js +433 -0
  103. package/src/components/molecules/DXBaseTable/DXBaseTable.vue +459 -0
  104. package/src/components/molecules/DXBaseTable/index.js +4 -0
  105. package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.stories.js +227 -0
  106. package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.vue +96 -0
  107. package/src/components/molecules/DXBreadcrumb/index.js +2 -0
  108. package/src/components/molecules/DXButtonGroup/DXButtonGroup.stories.js +26 -0
  109. package/src/components/molecules/DXButtonGroup/DXButtonGroup.vue +78 -0
  110. package/src/components/molecules/DXButtonGroup/index.js +2 -0
  111. package/src/components/molecules/DXCloseButton/DXCloseButton.stories.js +53 -0
  112. package/src/components/molecules/DXCloseButton/DXCloseButton.vue +62 -0
  113. package/src/components/molecules/DXCloseButton/index.js +3 -0
  114. package/src/components/molecules/DXComboBox/DXComboBox.stories.js +62 -0
  115. package/src/components/molecules/DXComboBox/DXComboBox.vue +167 -0
  116. package/src/components/molecules/DXComboBox/index.js +2 -0
  117. package/src/components/molecules/DXCopyField/DXCopyField.stories.js +231 -0
  118. package/src/components/molecules/DXCopyField/DXCopyField.vue +75 -0
  119. package/src/components/molecules/DXCopyField/index.js +2 -0
  120. package/src/components/molecules/DXDataFilter/DXDataFilter.stories.js +275 -0
  121. package/src/components/molecules/DXDataFilter/DXDataFilter.vue +385 -0
  122. package/src/components/molecules/DXDataFilter/index.js +2 -0
  123. package/src/components/molecules/DXDatePicker/DXDatePicker.stories.js +42 -0
  124. package/src/components/molecules/DXDatePicker/DXDatePicker.vue +121 -0
  125. package/src/components/molecules/DXDatePicker/index.js +2 -0
  126. package/src/components/molecules/DXDropdownDivider/DXDropdownDivider.vue +30 -0
  127. package/src/components/molecules/DXDropdownDivider/index.js +2 -0
  128. package/src/components/molecules/DXFileUpload/DXFileUpload.stories.js +53 -0
  129. package/src/components/molecules/DXFileUpload/DXFileUpload.vue +199 -0
  130. package/src/components/molecules/DXFileUpload/index.js +2 -0
  131. package/src/components/molecules/DXFilterGroup/DXFilterGroup.stories.js +43 -0
  132. package/src/components/molecules/DXFilterGroup/DXFilterGroup.vue +43 -0
  133. package/src/components/molecules/DXFilterGroup/index.js +2 -0
  134. package/src/components/molecules/DXFormControl/DXFormControl.stories.js +69 -0
  135. package/src/components/molecules/DXFormControl/DXFormControl.vue +72 -0
  136. package/src/components/molecules/DXFormControl/index.js +2 -0
  137. package/src/components/molecules/DXInput/DXInput.stories.js +291 -0
  138. package/src/components/molecules/DXInput/DXInput.vue +156 -0
  139. package/src/components/molecules/DXInput/index.js +3 -0
  140. package/src/components/molecules/DXInputGroup/DXInputGroup.stories.js +228 -0
  141. package/src/components/molecules/DXInputGroup/DXInputGroup.vue +64 -0
  142. package/src/components/molecules/DXInputGroup/index.js +2 -0
  143. package/src/components/molecules/DXInputMask/DXInputMask.stories.js +53 -0
  144. package/src/components/molecules/DXInputMask/DXInputMask.vue +89 -0
  145. package/src/components/molecules/DXInputMask/index.js +2 -0
  146. package/src/components/molecules/DXMenu/DXMenu.stories.js +379 -0
  147. package/src/components/molecules/DXMenu/DXMenu.vue +331 -0
  148. package/src/components/molecules/DXMenu/README.md +479 -0
  149. package/src/components/molecules/DXMenu/index.js +2 -0
  150. package/src/components/molecules/DXPagination/DXPagination.stories.js +62 -0
  151. package/src/components/molecules/DXPagination/DXPagination.vue +123 -0
  152. package/src/components/molecules/DXPagination/index.js +2 -0
  153. package/src/components/molecules/DXPasswordInput/DXPasswordInput.stories.js +42 -0
  154. package/src/components/molecules/DXPasswordInput/DXPasswordInput.vue +74 -0
  155. package/src/components/molecules/DXPasswordInput/index.js +2 -0
  156. package/src/components/molecules/DXRadioCard/DXRadioCard.stories.js +60 -0
  157. package/src/components/molecules/DXRadioCard/DXRadioCard.vue +71 -0
  158. package/src/components/molecules/DXRadioCard/index.js +2 -0
  159. package/src/components/molecules/DXRadioGroup/DXRadioGroup.stories.js +297 -0
  160. package/src/components/molecules/DXRadioGroup/DXRadioGroup.vue +73 -0
  161. package/src/components/molecules/DXRadioGroup/index.js +2 -0
  162. package/src/components/molecules/DXRating/DXRating.stories.js +322 -0
  163. package/src/components/molecules/DXRating/DXRating.vue +402 -0
  164. package/src/components/molecules/DXRating/index.js +2 -0
  165. package/src/components/molecules/DXSearchBar/DXSearchBar.stories.js +357 -0
  166. package/src/components/molecules/DXSearchBar/DXSearchBar.vue +525 -0
  167. package/src/components/molecules/DXSearchBar/index.js +2 -0
  168. package/src/components/molecules/DXSearchSelect/DXSearchSelect.stories.js +50 -0
  169. package/src/components/molecules/DXSearchSelect/DXSearchSelect.vue +207 -0
  170. package/src/components/molecules/DXSearchSelect/index.js +2 -0
  171. package/src/components/molecules/DXSegmentedControl/DXSegmentedControl.stories.js +326 -0
  172. package/src/components/molecules/DXSegmentedControl/DXSegmentedControl.vue +116 -0
  173. package/src/components/molecules/DXSegmentedControl/index.js +2 -0
  174. package/src/components/molecules/DXSelect/DXSelect.stories.js +259 -0
  175. package/src/components/molecules/DXSelect/DXSelect.vue +149 -0
  176. package/src/components/molecules/DXSelect/index.js +3 -0
  177. package/src/components/molecules/DXStatCard/DXStatCard.stories.js +335 -0
  178. package/src/components/molecules/DXStatCard/DXStatCard.vue +309 -0
  179. package/src/components/molecules/DXStatCard/index.js +2 -0
  180. package/src/components/molecules/DXTableFiltersPanel/DXTableFiltersPanel.vue +72 -0
  181. package/src/components/molecules/DXTableFiltersPanel/index.js +7 -0
  182. package/src/components/molecules/DXTablePagination/DXTablePagination.stories.js +236 -0
  183. package/src/components/molecules/DXTablePagination/DXTablePagination.vue +93 -0
  184. package/src/components/molecules/DXTablePagination/index.js +2 -0
  185. package/src/components/molecules/DXTableToolbar/DXTableToolbar.stories.js +271 -0
  186. package/src/components/molecules/DXTableToolbar/DXTableToolbar.vue +102 -0
  187. package/src/components/molecules/DXTableToolbar/index.js +2 -0
  188. package/src/components/molecules/DXTextarea/DXTextarea.stories.js +239 -0
  189. package/src/components/molecules/DXTextarea/DXTextarea.vue +158 -0
  190. package/src/components/molecules/DXTextarea/index.js +3 -0
  191. package/src/components/molecules/DXTimePicker/DXTimePicker.stories.js +282 -0
  192. package/src/components/molecules/DXTimePicker/DXTimePicker.vue +640 -0
  193. package/src/components/molecules/DXTimePicker/index.js +2 -0
  194. package/src/components/molecules/DXValidationIcon/DXValidationIcon.stories.js +60 -0
  195. package/src/components/molecules/DXValidationIcon/DXValidationIcon.vue +53 -0
  196. package/src/components/molecules/DXValidationIcon/index.js +3 -0
  197. package/src/components/molecules/index.js +34 -0
  198. package/src/components/organisms/DXAccordion/DXAccordion.stories.js +33 -0
  199. package/src/components/organisms/DXAccordion/DXAccordion.vue +104 -0
  200. package/src/components/organisms/DXAccordion/index.js +2 -0
  201. package/src/components/organisms/DXAppLayout/DXAppLayout.stories.js +689 -0
  202. package/src/components/organisms/DXAppLayout/DXAppLayout.vue +460 -0
  203. package/src/components/organisms/DXAppLayout/index.js +2 -0
  204. package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.stories.js +232 -0
  205. package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.vue +458 -0
  206. package/src/components/organisms/DXAuthenticationForm/index.js +2 -0
  207. package/src/components/organisms/DXChartContainer/DXChartContainer.stories.js +286 -0
  208. package/src/components/organisms/DXChartContainer/DXChartContainer.vue +273 -0
  209. package/src/components/organisms/DXChartContainer/index.js +2 -0
  210. package/src/components/organisms/DXChatInterface/DXChatInterface.stories.js +164 -0
  211. package/src/components/organisms/DXChatInterface/DXChatInterface.vue +583 -0
  212. package/src/components/organisms/DXChatInterface/index.js +2 -0
  213. package/src/components/organisms/DXCommentSection/DXCommentSection.stories.js +173 -0
  214. package/src/components/organisms/DXCommentSection/DXCommentSection.vue +487 -0
  215. package/src/components/organisms/DXCommentSection/index.js +2 -0
  216. package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.stories.js +331 -0
  217. package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.vue +309 -0
  218. package/src/components/organisms/DXDashboardGrid/index.js +2 -0
  219. package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.stories.js +271 -0
  220. package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.vue +260 -0
  221. package/src/components/organisms/DXDashboardWidget/index.js +2 -0
  222. package/src/components/organisms/DXDataTable/DXDataTable.stories.js +247 -0
  223. package/src/components/organisms/DXDataTable/DXDataTable.vue +496 -0
  224. package/src/components/organisms/DXDataTable/index.js +2 -0
  225. package/src/components/organisms/DXDropdown/DXDropdown.stories.js +795 -0
  226. package/src/components/organisms/DXDropdown/DXDropdown.vue +238 -0
  227. package/src/components/organisms/DXDropdown/index.js +2 -0
  228. package/src/components/organisms/DXEmptyState/DXEmptyState.stories.js +37 -0
  229. package/src/components/organisms/DXEmptyState/DXEmptyState.vue +41 -0
  230. package/src/components/organisms/DXEmptyState/index.js +2 -0
  231. package/src/components/organisms/DXFormWizard/DXFormWizard.stories.js +378 -0
  232. package/src/components/organisms/DXFormWizard/DXFormWizard.vue +578 -0
  233. package/src/components/organisms/DXFormWizard/index.js +2 -0
  234. package/src/components/organisms/DXHeaderBar/DXHeaderBar.stories.js +448 -0
  235. package/src/components/organisms/DXHeaderBar/DXHeaderBar.vue +190 -0
  236. package/src/components/organisms/DXHeaderBar/index.js +2 -0
  237. package/src/components/organisms/DXMediaGallery/DXMediaGallery.stories.js +347 -0
  238. package/src/components/organisms/DXMediaGallery/DXMediaGallery.vue +422 -0
  239. package/src/components/organisms/DXMediaGallery/index.js +2 -0
  240. package/src/components/organisms/DXModal/DXModal.stories.js +138 -0
  241. package/src/components/organisms/DXModal/DXModal.vue +213 -0
  242. package/src/components/organisms/DXModal/index.js +2 -0
  243. package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.stories.js +183 -0
  244. package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.vue +566 -0
  245. package/src/components/organisms/DXNotificationCenter/index.js +2 -0
  246. package/src/components/organisms/DXReportGenerator/DXReportGenerator.stories.js +199 -0
  247. package/src/components/organisms/DXReportGenerator/DXReportGenerator.vue +344 -0
  248. package/src/components/organisms/DXReportGenerator/index.js +2 -0
  249. package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.stories.js +245 -0
  250. package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.vue +454 -0
  251. package/src/components/organisms/DXSettingsPanel/index.js +2 -0
  252. package/src/components/organisms/DXSidebar/DXSidebar.stories.js +316 -0
  253. package/src/components/organisms/DXSidebar/DXSidebar.vue +212 -0
  254. package/src/components/organisms/DXSidebar/index.js +2 -0
  255. package/src/components/organisms/DXSidebarMenu/DATA_STRUCTURE.md +299 -0
  256. package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.stories.js +729 -0
  257. package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.vue +257 -0
  258. package/src/components/organisms/DXSidebarMenu/DXSidebarMenuItem.vue +249 -0
  259. package/src/components/organisms/DXSidebarMenu/README.md +333 -0
  260. package/src/components/organisms/DXSidebarMenu/index.js +3 -0
  261. package/src/components/organisms/DXTable/DXTable.stories.js +550 -0
  262. package/src/components/organisms/DXTable/DXTable.vue +324 -0
  263. package/src/components/organisms/DXTable/index.js +2 -0
  264. package/src/components/organisms/DXTabs/DXTabs.stories.js +407 -0
  265. package/src/components/organisms/DXTabs/DXTabs.vue +301 -0
  266. package/src/components/organisms/DXTabs/index.js +2 -0
  267. package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.stories.js +194 -0
  268. package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.vue +403 -0
  269. package/src/components/organisms/DXUserProfileCard/index.js +2 -0
  270. package/src/components/organisms/DXWizard/DXWizard.stories.js +212 -0
  271. package/src/components/organisms/DXWizard/DXWizard.vue +615 -0
  272. package/src/components/organisms/DXWizard/index.js +2 -0
  273. package/src/components/organisms/index.js +25 -0
  274. package/src/components/typography/DXBlockquote/DXBlockquote.stories.js +33 -0
  275. package/src/components/typography/DXBlockquote/DXBlockquote.vue +44 -0
  276. package/src/components/typography/DXBlockquote/index.js +2 -0
  277. package/src/components/typography/DXCode/DXCode.stories.js +29 -0
  278. package/src/components/typography/DXCode/DXCode.vue +46 -0
  279. package/src/components/typography/DXCode/index.js +2 -0
  280. package/src/components/typography/DXHeading/DXHeading.stories.js +54 -0
  281. package/src/components/typography/DXHeading/DXHeading.vue +68 -0
  282. package/src/components/typography/DXHeading/index.js +2 -0
  283. package/src/components/typography/DXLabel/DXLabel.stories.js +40 -0
  284. package/src/components/typography/DXLabel/DXLabel.vue +49 -0
  285. package/src/components/typography/DXLabel/index.js +2 -0
  286. package/src/components/typography/DXList/DXList.stories.js +50 -0
  287. package/src/components/typography/DXList/DXList.vue +55 -0
  288. package/src/components/typography/DXList/index.js +2 -0
  289. package/src/components/typography/DXText/DXText.stories.js +47 -0
  290. package/src/components/typography/DXText/DXText.vue +67 -0
  291. package/src/components/typography/DXText/index.js +2 -0
  292. package/src/components/typography/index.js +8 -0
  293. package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.stories.js +335 -0
  294. package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.vue +207 -0
  295. package/src/components/utilities/DXAnimatePresence/index.js +2 -0
  296. package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.stories.js +321 -0
  297. package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.vue +158 -0
  298. package/src/components/utilities/DXBreakpointProvider/index.js +2 -0
  299. package/src/components/utilities/DXObserver/DXObserver.stories.js +324 -0
  300. package/src/components/utilities/DXObserver/DXObserver.vue +182 -0
  301. package/src/components/utilities/DXObserver/index.js +2 -0
  302. package/src/components/utilities/DXPortal/DXPortal.stories.js +267 -0
  303. package/src/components/utilities/DXPortal/DXPortal.vue +69 -0
  304. package/src/components/utilities/DXPortal/index.js +2 -0
  305. package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.stories.js +339 -0
  306. package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.vue +155 -0
  307. package/src/components/utilities/DXStaggeredAnimation/index.js +2 -0
  308. package/src/components/utilities/DXThemeProvider/DXThemeProvider.stories.js +327 -0
  309. package/src/components/utilities/DXThemeProvider/DXThemeProvider.vue +227 -0
  310. package/src/components/utilities/DXThemeProvider/index.js +2 -0
  311. package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.stories.js +368 -0
  312. package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.vue +212 -0
  313. package/src/components/utilities/DXTransitionGroup/index.js +2 -0
  314. package/src/components/utilities/index.js +9 -0
  315. package/src/composables/useAnimation.js +264 -0
  316. package/src/composables/useClassComposition.js +35 -0
  317. package/src/composables/useDataAttributes.js +83 -0
  318. package/src/composables/useMenu.js +88 -0
  319. package/src/composables/useSize.js +135 -0
  320. package/src/composables/useSpacing.js +37 -0
  321. package/src/composables/useTableColumns.js +88 -0
  322. package/src/composables/useTableData.js +82 -0
  323. package/src/composables/useTableFilter.js +158 -0
  324. package/src/composables/useTablePagination.js +89 -0
  325. package/src/composables/useTableSelection.js +77 -0
  326. package/src/composables/useTableSort.js +75 -0
  327. package/src/composables/useTabsScroll.js +88 -0
  328. package/src/composables/useVariant.js +700 -0
  329. package/src/index.js +86 -0
  330. package/src/styles/animations.css +171 -0
  331. package/src/styles/index.css +99 -0
  332. package/src/styles/tokens.js +123 -0
  333. package/src/utils/propTypes.js +77 -0
  334. package/src/utils/toggleButtonPresets.js +115 -0
@@ -0,0 +1,187 @@
1
+ import DXSpacer from './DXSpacer.vue';
2
+
3
+ export default {
4
+ title: 'Layout/DXSpacer',
5
+ component: DXSpacer,
6
+ tags: ['autodocs'],
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: `
11
+ Компонент для создания отступов между элементами с поддержкой различных размеров и направлений.
12
+
13
+ ## Назначение
14
+
15
+ DXSpacer - вспомогательный layout компонент для создания пространства между элементами.
16
+ Поддерживает как фиксированные размеры (строковые и числовые), так и динамическое заполнение пространства (flex-grow).
17
+
18
+ ## Архитектура
19
+
20
+ ### Использует
21
+ - \`useClassComposition\` composable - для объединения классов
22
+
23
+ ### Используется в
24
+ - Вертикальные и горизонтальные отступы между элементами
25
+ - Flex контейнеры для распределения пространства
26
+ - Формы и группы полей
27
+ - Навигационные меню
28
+ - Любые места, где требуется добавить пространство между элементами
29
+
30
+ ## Внутренняя логика
31
+
32
+ ### Система размеров
33
+ Поддерживает два типа размеров:
34
+ - **Строковые значения**: \`xs\`, \`sm\`, \`md\`, \`lg\`, \`xl\`, \`2xl\` - используют предопределенные Tailwind классы
35
+ - **Числовые значения**: пиксели (например, \`size={24}\`) - используют inline стили
36
+
37
+ ### Направления
38
+ - \`vertical\` - вертикальный отступ (высота)
39
+ - \`horizontal\` - горизонтальный отступ (ширина)
40
+ - \`both\` - отступ по обеим осям (высота и ширина)
41
+
42
+ ### Flex-grow режим
43
+ При \`grow={true}\` компонент использует \`flex-grow\` для заполнения всего доступного пространства.
44
+ В этом режиме размеры игнорируются.
45
+
46
+ ### Обработка размеров
47
+ - **Строковые значения**: применяются через Tailwind классы (\`h-*\`, \`w-*\`)
48
+ - **Числовые значения**: применяются через inline стили (\`height: Npx\`, \`width: Npx\`)
49
+ - **Grow режим**: применяется только \`flex-grow\` класс
50
+
51
+ ## Особенности
52
+
53
+ ### Вертикальный отступ
54
+ \`\`\`vue
55
+ <div>
56
+ <div>Content above</div>
57
+ <DXSpacer size="lg" />
58
+ <div>Content below</div>
59
+ </div>
60
+ \`\`\`
61
+
62
+ ### Горизонтальный отступ
63
+ \`\`\`vue
64
+ <div class="flex">
65
+ <div>Left content</div>
66
+ <DXSpacer size="md" direction="horizontal" />
67
+ <div>Right content</div>
68
+ </div>
69
+ \`\`\`
70
+
71
+ ### Числовые размеры
72
+ \`\`\`vue
73
+ <DXSpacer :size="32" direction="vertical" />
74
+ \`\`\`
75
+
76
+ ### Flex-grow
77
+ \`\`\`vue
78
+ <div class="flex">
79
+ <div>Start</div>
80
+ <DXSpacer grow />
81
+ <div>End</div>
82
+ </div>
83
+ \`\`\`
84
+
85
+ ## Ограничения
86
+
87
+ - Строковые размеры ограничены предопределенными значениями
88
+ - Для кастомных размеров используйте числовые значения (px)
89
+ - Flex-grow работает только внутри flex контейнеров
90
+ - Компонент имеет \`aria-hidden="true"\` для скринридеров (не является семантическим элементом)
91
+ `,
92
+ },
93
+ },
94
+ },
95
+ argTypes: {
96
+ size: {
97
+ control: 'select',
98
+ options: ['xs', 'sm', 'md', 'lg', 'xl', '2xl'],
99
+ description: 'Размер отступа. Поддерживает строковые значения (xs, sm, md, lg, xl, 2xl) для предопределенных размеров или числовые значения (в пикселях) для кастомных размеров.',
100
+ table: {
101
+ type: { summary: 'string | number' },
102
+ defaultValue: { summary: '"md"' },
103
+ category: 'Spacing',
104
+ },
105
+ },
106
+ direction: {
107
+ control: 'select',
108
+ options: ['vertical', 'horizontal', 'both'],
109
+ description: 'Направление отступа. Vertical создает вертикальный отступ (высота), horizontal - горизонтальный (ширина), both - по обеим осям.',
110
+ table: {
111
+ type: { summary: 'string' },
112
+ defaultValue: { summary: '"vertical"' },
113
+ category: 'Layout',
114
+ },
115
+ },
116
+ grow: {
117
+ control: 'boolean',
118
+ description: 'Использовать flex-grow для заполнения всего доступного пространства. При true размеры игнорируются, и компонент заполняет все доступное пространство в flex контейнере.',
119
+ table: {
120
+ type: { summary: 'boolean' },
121
+ defaultValue: { summary: 'false' },
122
+ category: 'Behavior',
123
+ },
124
+ },
125
+ },
126
+ };
127
+
128
+ export const Vertical = {
129
+ parameters: {
130
+ docs: {
131
+ description: {
132
+ story: 'Вертикальный отступ между элементами. Это наиболее распространенный вариант использования DXSpacer. Создает пространство между элементами, расположенными друг под другом.',
133
+ },
134
+ },
135
+ },
136
+ render: () => ({
137
+ components: { DXSpacer },
138
+ template: `
139
+ <div>
140
+ <div class="bg-slate-100 p-4 rounded">Above</div>
141
+ <DXSpacer size="lg" />
142
+ <div class="bg-slate-100 p-4 rounded">Below</div>
143
+ </div>
144
+ `,
145
+ }),
146
+ };
147
+
148
+ export const Horizontal = {
149
+ parameters: {
150
+ docs: {
151
+ description: {
152
+ story: 'Горизонтальный отступ между элементами. Используется внутри flex контейнеров для создания пространства между элементами, расположенными в ряд. Требует flex контейнер для корректной работы.',
153
+ },
154
+ },
155
+ },
156
+ render: () => ({
157
+ components: { DXSpacer },
158
+ template: `
159
+ <div class="flex">
160
+ <div class="bg-slate-100 p-4 rounded">Left</div>
161
+ <DXSpacer size="lg" direction="horizontal" />
162
+ <div class="bg-slate-100 p-4 rounded">Right</div>
163
+ </div>
164
+ `,
165
+ }),
166
+ };
167
+
168
+ export const FlexGrow = {
169
+ parameters: {
170
+ docs: {
171
+ description: {
172
+ story: 'DXSpacer с flex-grow режимом. Заполняет все доступное пространство между элементами в flex контейнере. Полезен для создания макетов, где элементы должны быть по краям, а пространство между ними заполняется автоматически. В этом режиме размеры игнорируются.',
173
+ },
174
+ },
175
+ },
176
+ render: () => ({
177
+ components: { DXSpacer },
178
+ template: `
179
+ <div class="flex">
180
+ <div class="bg-slate-100 p-4 rounded">Start</div>
181
+ <DXSpacer grow />
182
+ <div class="bg-slate-100 p-4 rounded">End</div>
183
+ </div>
184
+ `,
185
+ }),
186
+ };
187
+
@@ -0,0 +1,102 @@
1
+ <template>
2
+ <div :class="spacerClasses" :style="spacerStyle" data-component="DXSpacer" aria-hidden="true" />
3
+ </template>
4
+
5
+ <script setup>
6
+ import { computed } from "vue";
7
+ import { useClassComposition } from "@/composables/useClassComposition";
8
+
9
+ const props = defineProps({
10
+ /** Размер: xs | sm | md | lg | xl или число в пикселях */
11
+ size: { type: [String, Number], default: "md" },
12
+ /** Направление: vertical | horizontal | both */
13
+ direction: { type: String, default: "vertical" },
14
+ /** Занять всё доступное пространство (flex-grow) */
15
+ grow: { type: Boolean, default: false },
16
+ });
17
+
18
+ /**
19
+ * Классы размера для строковых значений
20
+ *
21
+ * @description
22
+ * Определяет классы размера для предопределенных строковых значений.
23
+ * Используется только для строковых значений, числовые значения обрабатываются через inline стили.
24
+ *
25
+ * @returns {Object} Объект с классами для вертикального и горизонтального направления
26
+ */
27
+ const sizeClasses = {
28
+ xs: { v: "h-1", h: "w-1" },
29
+ sm: { v: "h-2", h: "w-2" },
30
+ md: { v: "h-4", h: "w-4" },
31
+ lg: { v: "h-8", h: "w-8" },
32
+ xl: { v: "h-12", h: "w-12" },
33
+ };
34
+
35
+ /**
36
+ * Классы размера spacer
37
+ *
38
+ * @description
39
+ * Вычисляет классы размера на основе props.size и props.direction.
40
+ * Если grow=true, возвращает flex-grow класс.
41
+ * Для строковых значений использует предопределенные классы.
42
+ * Для числовых значений возвращает пустой массив (размер задается через inline стили).
43
+ *
44
+ * @returns {Array|string} Массив классов или строка для применения к элементу
45
+ */
46
+ const spacerClasses = computed(() => {
47
+ // Если grow, используем flex-grow
48
+ if (props.grow) {
49
+ return useClassComposition("flex-grow");
50
+ }
51
+
52
+ // Для числовых значений классы не нужны, размер задается через inline стили
53
+ if (typeof props.size === "number") {
54
+ return useClassComposition();
55
+ }
56
+
57
+ // Для строковых значений используем предопределенные классы
58
+ const sizes = sizeClasses[props.size];
59
+ if (sizes) {
60
+ if (props.direction === "horizontal") {
61
+ return useClassComposition(sizes.h);
62
+ }
63
+ if (props.direction === "both") {
64
+ return useClassComposition(sizes.v, sizes.h);
65
+ }
66
+ return useClassComposition(sizes.v);
67
+ }
68
+
69
+ return useClassComposition();
70
+ });
71
+
72
+ /**
73
+ * Inline стили для spacer
74
+ *
75
+ * @description
76
+ * Вычисляет inline стили для числовых значений размера.
77
+ * Если grow=true, стили не нужны.
78
+ * Для строковых значений стили не нужны (используются классы).
79
+ *
80
+ * @returns {Object} Объект со стилями или пустой объект
81
+ */
82
+ const spacerStyle = computed(() => {
83
+ // Если grow, стили не нужны
84
+ if (props.grow) return {};
85
+
86
+ // Для числовых значений задаем размер через inline стили
87
+ if (typeof props.size === "number") {
88
+ const px = `${props.size}px`;
89
+ if (props.direction === "horizontal") {
90
+ return { width: px };
91
+ }
92
+ if (props.direction === "both") {
93
+ return { height: px, width: px };
94
+ }
95
+ return { height: px };
96
+ }
97
+
98
+ // Для строковых значений стили не нужны
99
+ return {};
100
+ });
101
+ </script>
102
+
@@ -0,0 +1,2 @@
1
+ export { default } from './DXSpacer.vue';
2
+
@@ -0,0 +1,199 @@
1
+ import DXStack from './DXStack.vue';
2
+
3
+ export default {
4
+ title: 'Layout/DXStack',
5
+ component: DXStack,
6
+ tags: ['autodocs'],
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: `
11
+ # DXStack
12
+
13
+ Вертикальный или горизонтальный стек элементов с единообразными отступами и поддержкой разделителей.
14
+
15
+ ## Назначение
16
+
17
+ DXStack - упрощенный layout компонент для создания стеков элементов (вертикальных или горизонтальных).
18
+ Предоставляет более простой API по сравнению с DXFlex, фокусируясь на типичных случаях использования стеков.
19
+
20
+ ## Архитектура
21
+
22
+ ### Использует
23
+ - \`useSize\` composable - для унификации отступов между элементами (gap)
24
+ - \`useClassComposition\` composable - для объединения классов
25
+
26
+ ### Используется в
27
+ - Списки элементов и карточек
28
+ - Формы и группы полей
29
+ - Навигационные меню
30
+ - Комментарии и отзывы
31
+ - Любые места, где требуется стек элементов с единообразными отступами
32
+
33
+ ## Внутренняя логика
34
+
35
+ ### Упрощенное направление
36
+ В отличие от DXFlex, использует упрощенные значения:
37
+ - \`vertical\` → \`flex-col\` (вертикальный стек)
38
+ - \`horizontal\` → \`flex-row\` (горизонтальный стек)
39
+
40
+ ### Расширенный gap
41
+ Использует \`useSize\` с типом \`spacing\` для стандартных значений gap (none, xs, sm, md, lg, xl).
42
+ Поддерживает дополнительное значение \`2xl\` для больших отступов (gap-12),
43
+ которое обрабатывается специально, так как не входит в стандартную размерную сетку.
44
+
45
+ ### Разделители (dividers)
46
+ Автоматически добавляет разделители между элементами:
47
+ - Для \`vertical\` → горизонтальные разделители (\`divide-y\`)
48
+ - Для \`horizontal\` → вертикальные разделители (\`divide-x\`)
49
+
50
+ ### Упрощенное выравнивание
51
+ Предоставляет только основные варианты выравнивания:
52
+ - \`start\`, \`center\`, \`end\`, \`stretch\`
53
+
54
+ ## Особенности
55
+
56
+ ### Вертикальный стек
57
+ \`\`\`vue
58
+ <DXStack direction="vertical" gap="md">
59
+ <div>Item 1</div>
60
+ <div>Item 2</div>
61
+ </DXStack>
62
+ \`\`\`
63
+
64
+ ### Горизонтальный стек
65
+ \`\`\`vue
66
+ <DXStack direction="horizontal" gap="lg" align="center">
67
+ <div>Item 1</div>
68
+ <div>Item 2</div>
69
+ </DXStack>
70
+ \`\`\`
71
+
72
+ ### С разделителями
73
+ \`\`\`vue
74
+ <DXStack direction="vertical" gap="md" dividers>
75
+ <div>Item 1</div>
76
+ <div>Item 2</div>
77
+ </DXStack>
78
+ \`\`\`
79
+
80
+ ## Отличия от DXFlex
81
+
82
+ - **Упрощенный API**: меньше props, более понятные значения
83
+ - **Семантические названия**: \`vertical\`/\`horizontal\` вместо \`col\`/\`row\`
84
+ - **Расширенный gap**: поддержка \`2xl\`
85
+ - **Встроенные разделители**: опция \`dividers\` для автоматических разделителей
86
+ - **Меньше опций**: фокус на типичных случаях использования
87
+
88
+ ## Ограничения
89
+
90
+ - Не поддерживает \`row-reverse\` и \`col-reverse\` (используйте DXFlex)
91
+ - Ограниченный набор вариантов justify (используйте DXFlex для полного контроля)
92
+ - Для сложных flex макетов используйте DXFlex
93
+ `,
94
+ },
95
+ },
96
+ },
97
+ argTypes: {
98
+ direction: {
99
+ control: 'select',
100
+ options: ['vertical', 'horizontal'],
101
+ description: 'Направление стека элементов. Vertical располагает элементы вертикально (друг под другом), horizontal - горизонтально (в ряд).',
102
+ table: {
103
+ type: { summary: 'string' },
104
+ defaultValue: { summary: '"vertical"' },
105
+ category: 'Layout',
106
+ },
107
+ },
108
+ gap: {
109
+ control: 'select',
110
+ options: ['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl'],
111
+ description: 'Отступ между элементами стека. Поддерживает расширенное значение 2xl для больших отступов, которое не доступно в стандартном useSpacing.',
112
+ table: {
113
+ type: { summary: 'string' },
114
+ defaultValue: { summary: '"md"' },
115
+ category: 'Spacing',
116
+ },
117
+ },
118
+ align: {
119
+ control: 'select',
120
+ options: ['start', 'center', 'end', 'stretch'],
121
+ description: 'Выравнивание элементов по поперечной оси. Определяет, как элементы выравниваются перпендикулярно направлению стека.',
122
+ table: {
123
+ type: { summary: 'string' },
124
+ defaultValue: { summary: '"stretch"' },
125
+ category: 'Alignment',
126
+ },
127
+ },
128
+ justify: {
129
+ control: 'select',
130
+ options: ['start', 'center', 'end', 'between', 'around'],
131
+ description: 'Распределение элементов по главной оси. Управляет распределением пространства между элементами вдоль направления стека.',
132
+ table: {
133
+ type: { summary: 'string' },
134
+ defaultValue: { summary: '"start"' },
135
+ category: 'Alignment',
136
+ },
137
+ },
138
+ dividers: {
139
+ control: 'boolean',
140
+ description: 'Добавлять разделители между элементами. Для vertical стека добавляет горизонтальные разделители, для horizontal - вертикальные.',
141
+ table: {
142
+ type: { summary: 'boolean' },
143
+ defaultValue: { summary: 'false' },
144
+ category: 'Behavior',
145
+ },
146
+ },
147
+ },
148
+ };
149
+
150
+ const item = '<div class="bg-slate-100 p-4 rounded-lg">Stack Item</div>';
151
+
152
+ export const Vertical = {
153
+ args: { direction: 'vertical', gap: 'md' },
154
+ parameters: {
155
+ docs: {
156
+ description: {
157
+ story: 'Вертикальный стек элементов. Это наиболее распространенный вариант использования DXStack. Элементы располагаются друг под другом с единообразными отступами.',
158
+ },
159
+ },
160
+ },
161
+ render: (args) => ({
162
+ components: { DXStack },
163
+ setup() { return { args }; },
164
+ template: `<DXStack v-bind="args">${item.repeat(4)}</DXStack>`,
165
+ }),
166
+ };
167
+
168
+ export const Horizontal = {
169
+ args: { direction: 'horizontal', gap: 'md' },
170
+ parameters: {
171
+ docs: {
172
+ description: {
173
+ story: 'Горизонтальный стек элементов. Элементы располагаются в ряд (слева направо) с единообразными отступами между ними. Полезен для создания горизонтальных списков и групп элементов.',
174
+ },
175
+ },
176
+ },
177
+ render: (args) => ({
178
+ components: { DXStack },
179
+ setup() { return { args }; },
180
+ template: `<DXStack v-bind="args">${item.repeat(4)}</DXStack>`,
181
+ }),
182
+ };
183
+
184
+ export const WithDividers = {
185
+ args: { direction: 'vertical', gap: 'md', dividers: true },
186
+ parameters: {
187
+ docs: {
188
+ description: {
189
+ story: 'Стек с разделителями между элементами. Автоматически добавляет визуальные разделители (горизонтальные для vertical стека, вертикальные для horizontal). Используется для четкого визуального разделения элементов.',
190
+ },
191
+ },
192
+ },
193
+ render: (args) => ({
194
+ components: { DXStack },
195
+ setup() { return { args }; },
196
+ template: `<DXStack v-bind="args">${item.repeat(3)}</DXStack>`,
197
+ }),
198
+ };
199
+
@@ -0,0 +1,140 @@
1
+ <template>
2
+ <div
3
+ :class="stackClasses"
4
+ data-component="DXStack"
5
+ :data-direction="direction"
6
+ :data-gap="gap"
7
+ :data-align="align"
8
+ :data-justify="justify"
9
+ >
10
+ <slot />
11
+ </div>
12
+ </template>
13
+
14
+ <script setup>
15
+ import { computed } from "vue";
16
+ import { useSize } from "@/composables/useSize";
17
+ import { useClassComposition } from "@/composables/useClassComposition";
18
+
19
+ const props = defineProps({
20
+ /** Направление: vertical | horizontal */
21
+ direction: { type: String, default: "vertical" },
22
+ /** Отступ между элементами: none | xs | sm | md | lg | xl | 2xl */
23
+ gap: { type: String, default: "md" },
24
+ /** Выравнивание: start | center | end | stretch */
25
+ align: { type: String, default: "stretch" },
26
+ /** Распределение: start | center | end | between | around */
27
+ justify: { type: String, default: "start" },
28
+ /** Разделители между элементами */
29
+ dividers: { type: Boolean, default: false },
30
+ });
31
+
32
+ const BASE_CLASSES = "flex";
33
+
34
+ /**
35
+ * Класс направления stack
36
+ *
37
+ * @description
38
+ * Определяет направление элементов в stack (вертикальное или горизонтальное).
39
+ *
40
+ * @returns {string} Tailwind CSS класс для направления flex
41
+ */
42
+ const directionClass = computed(() => {
43
+ return props.direction === "horizontal" ? "flex-row" : "flex-col";
44
+ });
45
+
46
+ /**
47
+ * Классы отступа между элементами
48
+ *
49
+ * @description
50
+ * Использует useSize composable для вычисления gap между элементами stack.
51
+ * Поддерживает расширенные значения включая 2xl (специальная обработка).
52
+ *
53
+ * @returns {string} Tailwind CSS класс для gap
54
+ */
55
+ const gapClass = computed(() => {
56
+ // Для 2xl используем специальную обработку, так как useSize не поддерживает это значение в размерной сетке
57
+ if (props.gap === "2xl") {
58
+ return "gap-12";
59
+ }
60
+
61
+ // Используем useSize для стандартных значений (none, xs, sm, md, lg, xl)
62
+ return useSize(props.gap, 'spacing') || 'gap-4';
63
+ });
64
+
65
+ /**
66
+ * Классы выравнивания элементов
67
+ *
68
+ * @description
69
+ * Определяет выравнивание элементов по поперечной оси (align-items).
70
+ *
71
+ * @returns {string} Tailwind CSS класс для align-items
72
+ */
73
+ const alignClass = computed(() => {
74
+ const alignClasses = {
75
+ start: "items-start",
76
+ center: "items-center",
77
+ end: "items-end",
78
+ stretch: "items-stretch",
79
+ };
80
+ return alignClasses[props.align] || alignClasses.stretch;
81
+ });
82
+
83
+ /**
84
+ * Классы распределения элементов
85
+ *
86
+ * @description
87
+ * Определяет распределение элементов по главной оси (justify-content).
88
+ *
89
+ * @returns {string} Tailwind CSS класс для justify-content
90
+ */
91
+ const justifyClass = computed(() => {
92
+ const justifyClasses = {
93
+ start: "justify-start",
94
+ center: "justify-center",
95
+ end: "justify-end",
96
+ between: "justify-between",
97
+ around: "justify-around",
98
+ };
99
+ return justifyClasses[props.justify] || justifyClasses.start;
100
+ });
101
+
102
+ /**
103
+ * Классы разделителей
104
+ *
105
+ * @description
106
+ * Определяет, будут ли добавлены разделители между элементами.
107
+ * Разделители зависят от направления: горизонтальные для vertical stack,
108
+ * вертикальные для horizontal stack.
109
+ *
110
+ * @returns {string|null} Tailwind CSS классы для разделителей или null
111
+ */
112
+ const dividersClass = computed(() => {
113
+ if (!props.dividers) return null;
114
+
115
+ return props.direction === "horizontal"
116
+ ? "divide-x divide-slate-200"
117
+ : "divide-y divide-slate-200";
118
+ });
119
+
120
+ /**
121
+ * Все классы для stack компонента
122
+ *
123
+ * @description
124
+ * Объединяет все классы stack контейнера (базовый класс, направление,
125
+ * отступы, выравнивание, распределение, разделители) с использованием useClassComposition.
126
+ *
127
+ * @returns {Array} Массив классов для применения к элементу
128
+ */
129
+ const stackClasses = computed(() =>
130
+ useClassComposition(
131
+ BASE_CLASSES,
132
+ directionClass.value,
133
+ gapClass.value,
134
+ alignClass.value,
135
+ justifyClass.value,
136
+ dividersClass.value
137
+ )
138
+ );
139
+ </script>
140
+
@@ -0,0 +1,2 @@
1
+ export { default } from './DXStack.vue';
2
+
@@ -0,0 +1,8 @@
1
+ // Layout components
2
+ export { default as DXContainer } from './DXContainer';
3
+ export { default as DXGrid } from './DXGrid';
4
+ export { default as DXFlex } from './DXFlex';
5
+ export { default as DXStack } from './DXStack';
6
+ export { default as DXSpacer } from './DXSpacer';
7
+ export { default as DXBox } from './DXBox';
8
+