dxd-style-code 0.1.7 → 0.1.9

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 (335) 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 +14 -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/index.js +20 -0
  78. package/src/components/layout/DXBox/DXBox.stories.js +238 -0
  79. package/src/components/layout/DXBox/DXBox.vue +198 -0
  80. package/src/components/layout/DXBox/index.js +2 -0
  81. package/src/components/layout/DXContainer/DXContainer.stories.js +147 -0
  82. package/src/components/layout/DXContainer/DXContainer.vue +83 -0
  83. package/src/components/layout/DXContainer/index.js +2 -0
  84. package/src/components/layout/DXFlex/DXFlex.stories.js +210 -0
  85. package/src/components/layout/DXFlex/DXFlex.vue +149 -0
  86. package/src/components/layout/DXFlex/index.js +2 -0
  87. package/src/components/layout/DXGrid/DXGrid.stories.js +238 -0
  88. package/src/components/layout/DXGrid/DXGrid.vue +167 -0
  89. package/src/components/layout/DXGrid/index.js +2 -0
  90. package/src/components/layout/DXSpacer/DXSpacer.stories.js +187 -0
  91. package/src/components/layout/DXSpacer/DXSpacer.vue +102 -0
  92. package/src/components/layout/DXSpacer/index.js +2 -0
  93. package/src/components/layout/DXStack/DXStack.stories.js +199 -0
  94. package/src/components/layout/DXStack/DXStack.vue +140 -0
  95. package/src/components/layout/DXStack/index.js +2 -0
  96. package/src/components/layout/index.js +8 -0
  97. package/src/components/molecules/DXActionButtons/DXActionButtons.stories.js +288 -0
  98. package/src/components/molecules/DXActionButtons/DXActionButtons.vue +106 -0
  99. package/src/components/molecules/DXActionButtons/index.js +2 -0
  100. package/src/components/molecules/DXAlert/DXAlert.stories.js +70 -0
  101. package/src/components/molecules/DXAlert/DXAlert.vue +116 -0
  102. package/src/components/molecules/DXAlert/index.js +2 -0
  103. package/src/components/molecules/DXBaseTable/DXBaseTable.stories.js +433 -0
  104. package/src/components/molecules/DXBaseTable/DXBaseTable.vue +459 -0
  105. package/src/components/molecules/DXBaseTable/index.js +4 -0
  106. package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.stories.js +227 -0
  107. package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.vue +96 -0
  108. package/src/components/molecules/DXBreadcrumb/index.js +2 -0
  109. package/src/components/molecules/DXButtonGroup/DXButtonGroup.stories.js +26 -0
  110. package/src/components/molecules/DXButtonGroup/DXButtonGroup.vue +78 -0
  111. package/src/components/molecules/DXButtonGroup/index.js +2 -0
  112. package/src/components/molecules/DXCloseButton/DXCloseButton.stories.js +53 -0
  113. package/src/components/molecules/DXCloseButton/DXCloseButton.vue +62 -0
  114. package/src/components/molecules/DXCloseButton/index.js +3 -0
  115. package/src/components/molecules/DXComboBox/DXComboBox.stories.js +62 -0
  116. package/src/components/molecules/DXComboBox/DXComboBox.vue +167 -0
  117. package/src/components/molecules/DXComboBox/index.js +2 -0
  118. package/src/components/molecules/DXCopyField/DXCopyField.stories.js +231 -0
  119. package/src/components/molecules/DXCopyField/DXCopyField.vue +75 -0
  120. package/src/components/molecules/DXCopyField/index.js +2 -0
  121. package/src/components/molecules/DXDataFilter/DXDataFilter.stories.js +275 -0
  122. package/src/components/molecules/DXDataFilter/DXDataFilter.vue +385 -0
  123. package/src/components/molecules/DXDataFilter/index.js +2 -0
  124. package/src/components/molecules/DXDatePicker/DXDatePicker.stories.js +42 -0
  125. package/src/components/molecules/DXDatePicker/DXDatePicker.vue +121 -0
  126. package/src/components/molecules/DXDatePicker/index.js +2 -0
  127. package/src/components/molecules/DXDropdownDivider/DXDropdownDivider.vue +30 -0
  128. package/src/components/molecules/DXDropdownDivider/index.js +2 -0
  129. package/src/components/molecules/DXFileUpload/DXFileUpload.stories.js +53 -0
  130. package/src/components/molecules/DXFileUpload/DXFileUpload.vue +199 -0
  131. package/src/components/molecules/DXFileUpload/index.js +2 -0
  132. package/src/components/molecules/DXFilterGroup/DXFilterGroup.stories.js +43 -0
  133. package/src/components/molecules/DXFilterGroup/DXFilterGroup.vue +43 -0
  134. package/src/components/molecules/DXFilterGroup/index.js +2 -0
  135. package/src/components/molecules/DXFormControl/DXFormControl.stories.js +69 -0
  136. package/src/components/molecules/DXFormControl/DXFormControl.vue +72 -0
  137. package/src/components/molecules/DXFormControl/index.js +2 -0
  138. package/src/components/molecules/DXInput/DXInput.stories.js +291 -0
  139. package/src/components/molecules/DXInput/DXInput.vue +156 -0
  140. package/src/components/molecules/DXInput/index.js +3 -0
  141. package/src/components/molecules/DXInputGroup/DXInputGroup.stories.js +228 -0
  142. package/src/components/molecules/DXInputGroup/DXInputGroup.vue +64 -0
  143. package/src/components/molecules/DXInputGroup/index.js +2 -0
  144. package/src/components/molecules/DXInputMask/DXInputMask.stories.js +53 -0
  145. package/src/components/molecules/DXInputMask/DXInputMask.vue +89 -0
  146. package/src/components/molecules/DXInputMask/index.js +2 -0
  147. package/src/components/molecules/DXMenu/DXMenu.stories.js +379 -0
  148. package/src/components/molecules/DXMenu/DXMenu.vue +331 -0
  149. package/src/components/molecules/DXMenu/README.md +479 -0
  150. package/src/components/molecules/DXMenu/index.js +2 -0
  151. package/src/components/molecules/DXPagination/DXPagination.stories.js +62 -0
  152. package/src/components/molecules/DXPagination/DXPagination.vue +123 -0
  153. package/src/components/molecules/DXPagination/index.js +2 -0
  154. package/src/components/molecules/DXPasswordInput/DXPasswordInput.stories.js +42 -0
  155. package/src/components/molecules/DXPasswordInput/DXPasswordInput.vue +74 -0
  156. package/src/components/molecules/DXPasswordInput/index.js +2 -0
  157. package/src/components/molecules/DXRadioCard/DXRadioCard.stories.js +60 -0
  158. package/src/components/molecules/DXRadioCard/DXRadioCard.vue +71 -0
  159. package/src/components/molecules/DXRadioCard/index.js +2 -0
  160. package/src/components/molecules/DXRadioGroup/DXRadioGroup.stories.js +297 -0
  161. package/src/components/molecules/DXRadioGroup/DXRadioGroup.vue +73 -0
  162. package/src/components/molecules/DXRadioGroup/index.js +2 -0
  163. package/src/components/molecules/DXRating/DXRating.stories.js +322 -0
  164. package/src/components/molecules/DXRating/DXRating.vue +402 -0
  165. package/src/components/molecules/DXRating/index.js +2 -0
  166. package/src/components/molecules/DXSearchBar/DXSearchBar.stories.js +357 -0
  167. package/src/components/molecules/DXSearchBar/DXSearchBar.vue +525 -0
  168. package/src/components/molecules/DXSearchBar/index.js +2 -0
  169. package/src/components/molecules/DXSearchSelect/DXSearchSelect.stories.js +50 -0
  170. package/src/components/molecules/DXSearchSelect/DXSearchSelect.vue +207 -0
  171. package/src/components/molecules/DXSearchSelect/index.js +2 -0
  172. package/src/components/molecules/DXSegmentedControl/DXSegmentedControl.stories.js +326 -0
  173. package/src/components/molecules/DXSegmentedControl/DXSegmentedControl.vue +116 -0
  174. package/src/components/molecules/DXSegmentedControl/index.js +2 -0
  175. package/src/components/molecules/DXSelect/DXSelect.stories.js +259 -0
  176. package/src/components/molecules/DXSelect/DXSelect.vue +149 -0
  177. package/src/components/molecules/DXSelect/index.js +3 -0
  178. package/src/components/molecules/DXStatCard/DXStatCard.stories.js +335 -0
  179. package/src/components/molecules/DXStatCard/DXStatCard.vue +309 -0
  180. package/src/components/molecules/DXStatCard/index.js +2 -0
  181. package/src/components/molecules/DXTableFiltersPanel/DXTableFiltersPanel.vue +72 -0
  182. package/src/components/molecules/DXTableFiltersPanel/index.js +7 -0
  183. package/src/components/molecules/DXTablePagination/DXTablePagination.stories.js +236 -0
  184. package/src/components/molecules/DXTablePagination/DXTablePagination.vue +93 -0
  185. package/src/components/molecules/DXTablePagination/index.js +2 -0
  186. package/src/components/molecules/DXTableToolbar/DXTableToolbar.stories.js +271 -0
  187. package/src/components/molecules/DXTableToolbar/DXTableToolbar.vue +102 -0
  188. package/src/components/molecules/DXTableToolbar/index.js +2 -0
  189. package/src/components/molecules/DXTextarea/DXTextarea.stories.js +239 -0
  190. package/src/components/molecules/DXTextarea/DXTextarea.vue +158 -0
  191. package/src/components/molecules/DXTextarea/index.js +3 -0
  192. package/src/components/molecules/DXTimePicker/DXTimePicker.stories.js +282 -0
  193. package/src/components/molecules/DXTimePicker/DXTimePicker.vue +640 -0
  194. package/src/components/molecules/DXTimePicker/index.js +2 -0
  195. package/src/components/molecules/DXValidationIcon/DXValidationIcon.stories.js +60 -0
  196. package/src/components/molecules/DXValidationIcon/DXValidationIcon.vue +53 -0
  197. package/src/components/molecules/DXValidationIcon/index.js +3 -0
  198. package/src/components/molecules/index.js +34 -0
  199. package/src/components/organisms/DXAccordion/DXAccordion.stories.js +33 -0
  200. package/src/components/organisms/DXAccordion/DXAccordion.vue +104 -0
  201. package/src/components/organisms/DXAccordion/index.js +2 -0
  202. package/src/components/organisms/DXAppLayout/DXAppLayout.stories.js +689 -0
  203. package/src/components/organisms/DXAppLayout/DXAppLayout.vue +460 -0
  204. package/src/components/organisms/DXAppLayout/index.js +2 -0
  205. package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.stories.js +232 -0
  206. package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.vue +458 -0
  207. package/src/components/organisms/DXAuthenticationForm/index.js +2 -0
  208. package/src/components/organisms/DXChartContainer/DXChartContainer.stories.js +286 -0
  209. package/src/components/organisms/DXChartContainer/DXChartContainer.vue +273 -0
  210. package/src/components/organisms/DXChartContainer/index.js +2 -0
  211. package/src/components/organisms/DXChatInterface/DXChatInterface.stories.js +164 -0
  212. package/src/components/organisms/DXChatInterface/DXChatInterface.vue +583 -0
  213. package/src/components/organisms/DXChatInterface/index.js +2 -0
  214. package/src/components/organisms/DXCommentSection/DXCommentSection.stories.js +173 -0
  215. package/src/components/organisms/DXCommentSection/DXCommentSection.vue +487 -0
  216. package/src/components/organisms/DXCommentSection/index.js +2 -0
  217. package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.stories.js +331 -0
  218. package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.vue +309 -0
  219. package/src/components/organisms/DXDashboardGrid/index.js +2 -0
  220. package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.stories.js +271 -0
  221. package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.vue +260 -0
  222. package/src/components/organisms/DXDashboardWidget/index.js +2 -0
  223. package/src/components/organisms/DXDataTable/DXDataTable.stories.js +247 -0
  224. package/src/components/organisms/DXDataTable/DXDataTable.vue +496 -0
  225. package/src/components/organisms/DXDataTable/index.js +2 -0
  226. package/src/components/organisms/DXDropdown/DXDropdown.stories.js +795 -0
  227. package/src/components/organisms/DXDropdown/DXDropdown.vue +238 -0
  228. package/src/components/organisms/DXDropdown/index.js +2 -0
  229. package/src/components/organisms/DXEmptyState/DXEmptyState.stories.js +37 -0
  230. package/src/components/organisms/DXEmptyState/DXEmptyState.vue +41 -0
  231. package/src/components/organisms/DXEmptyState/index.js +2 -0
  232. package/src/components/organisms/DXFormWizard/DXFormWizard.stories.js +378 -0
  233. package/src/components/organisms/DXFormWizard/DXFormWizard.vue +578 -0
  234. package/src/components/organisms/DXFormWizard/index.js +2 -0
  235. package/src/components/organisms/DXHeaderBar/DXHeaderBar.stories.js +448 -0
  236. package/src/components/organisms/DXHeaderBar/DXHeaderBar.vue +190 -0
  237. package/src/components/organisms/DXHeaderBar/index.js +2 -0
  238. package/src/components/organisms/DXMediaGallery/DXMediaGallery.stories.js +347 -0
  239. package/src/components/organisms/DXMediaGallery/DXMediaGallery.vue +422 -0
  240. package/src/components/organisms/DXMediaGallery/index.js +2 -0
  241. package/src/components/organisms/DXModal/DXModal.stories.js +138 -0
  242. package/src/components/organisms/DXModal/DXModal.vue +213 -0
  243. package/src/components/organisms/DXModal/index.js +2 -0
  244. package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.stories.js +183 -0
  245. package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.vue +566 -0
  246. package/src/components/organisms/DXNotificationCenter/index.js +2 -0
  247. package/src/components/organisms/DXReportGenerator/DXReportGenerator.stories.js +199 -0
  248. package/src/components/organisms/DXReportGenerator/DXReportGenerator.vue +344 -0
  249. package/src/components/organisms/DXReportGenerator/index.js +2 -0
  250. package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.stories.js +245 -0
  251. package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.vue +454 -0
  252. package/src/components/organisms/DXSettingsPanel/index.js +2 -0
  253. package/src/components/organisms/DXSidebar/DXSidebar.stories.js +316 -0
  254. package/src/components/organisms/DXSidebar/DXSidebar.vue +212 -0
  255. package/src/components/organisms/DXSidebar/index.js +2 -0
  256. package/src/components/organisms/DXSidebarMenu/DATA_STRUCTURE.md +299 -0
  257. package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.stories.js +729 -0
  258. package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.vue +257 -0
  259. package/src/components/organisms/DXSidebarMenu/DXSidebarMenuItem.vue +249 -0
  260. package/src/components/organisms/DXSidebarMenu/README.md +333 -0
  261. package/src/components/organisms/DXSidebarMenu/index.js +3 -0
  262. package/src/components/organisms/DXTable/DXTable.stories.js +550 -0
  263. package/src/components/organisms/DXTable/DXTable.vue +324 -0
  264. package/src/components/organisms/DXTable/index.js +2 -0
  265. package/src/components/organisms/DXTabs/DXTabs.stories.js +407 -0
  266. package/src/components/organisms/DXTabs/DXTabs.vue +301 -0
  267. package/src/components/organisms/DXTabs/index.js +2 -0
  268. package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.stories.js +194 -0
  269. package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.vue +403 -0
  270. package/src/components/organisms/DXUserProfileCard/index.js +2 -0
  271. package/src/components/organisms/DXWizard/DXWizard.stories.js +212 -0
  272. package/src/components/organisms/DXWizard/DXWizard.vue +615 -0
  273. package/src/components/organisms/DXWizard/index.js +2 -0
  274. package/src/components/organisms/index.js +25 -0
  275. package/src/components/typography/DXBlockquote/DXBlockquote.stories.js +33 -0
  276. package/src/components/typography/DXBlockquote/DXBlockquote.vue +44 -0
  277. package/src/components/typography/DXBlockquote/index.js +2 -0
  278. package/src/components/typography/DXCode/DXCode.stories.js +29 -0
  279. package/src/components/typography/DXCode/DXCode.vue +46 -0
  280. package/src/components/typography/DXCode/index.js +2 -0
  281. package/src/components/typography/DXHeading/DXHeading.stories.js +54 -0
  282. package/src/components/typography/DXHeading/DXHeading.vue +68 -0
  283. package/src/components/typography/DXHeading/index.js +2 -0
  284. package/src/components/typography/DXLabel/DXLabel.stories.js +40 -0
  285. package/src/components/typography/DXLabel/DXLabel.vue +49 -0
  286. package/src/components/typography/DXLabel/index.js +2 -0
  287. package/src/components/typography/DXList/DXList.stories.js +50 -0
  288. package/src/components/typography/DXList/DXList.vue +55 -0
  289. package/src/components/typography/DXList/index.js +2 -0
  290. package/src/components/typography/DXText/DXText.stories.js +47 -0
  291. package/src/components/typography/DXText/DXText.vue +67 -0
  292. package/src/components/typography/DXText/index.js +2 -0
  293. package/src/components/typography/index.js +8 -0
  294. package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.stories.js +335 -0
  295. package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.vue +207 -0
  296. package/src/components/utilities/DXAnimatePresence/index.js +2 -0
  297. package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.stories.js +321 -0
  298. package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.vue +158 -0
  299. package/src/components/utilities/DXBreakpointProvider/index.js +2 -0
  300. package/src/components/utilities/DXObserver/DXObserver.stories.js +324 -0
  301. package/src/components/utilities/DXObserver/DXObserver.vue +182 -0
  302. package/src/components/utilities/DXObserver/index.js +2 -0
  303. package/src/components/utilities/DXPortal/DXPortal.stories.js +267 -0
  304. package/src/components/utilities/DXPortal/DXPortal.vue +69 -0
  305. package/src/components/utilities/DXPortal/index.js +2 -0
  306. package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.stories.js +339 -0
  307. package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.vue +155 -0
  308. package/src/components/utilities/DXStaggeredAnimation/index.js +2 -0
  309. package/src/components/utilities/DXThemeProvider/DXThemeProvider.stories.js +327 -0
  310. package/src/components/utilities/DXThemeProvider/DXThemeProvider.vue +227 -0
  311. package/src/components/utilities/DXThemeProvider/index.js +2 -0
  312. package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.stories.js +368 -0
  313. package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.vue +212 -0
  314. package/src/components/utilities/DXTransitionGroup/index.js +2 -0
  315. package/src/components/utilities/index.js +9 -0
  316. package/src/composables/useAnimation.js +264 -0
  317. package/src/composables/useClassComposition.js +35 -0
  318. package/src/composables/useDataAttributes.js +83 -0
  319. package/src/composables/useMenu.js +88 -0
  320. package/src/composables/useSize.js +135 -0
  321. package/src/composables/useSpacing.js +37 -0
  322. package/src/composables/useTableColumns.js +88 -0
  323. package/src/composables/useTableData.js +82 -0
  324. package/src/composables/useTableFilter.js +158 -0
  325. package/src/composables/useTablePagination.js +89 -0
  326. package/src/composables/useTableSelection.js +77 -0
  327. package/src/composables/useTableSort.js +75 -0
  328. package/src/composables/useTabsScroll.js +88 -0
  329. package/src/composables/useVariant.js +700 -0
  330. package/src/index.js +86 -0
  331. package/src/styles/animations.css +171 -0
  332. package/src/styles/index.css +99 -0
  333. package/src/styles/tokens.js +123 -0
  334. package/src/utils/propTypes.js +77 -0
  335. package/src/utils/toggleButtonPresets.js +115 -0
@@ -0,0 +1,578 @@
1
+ <template>
2
+ <div
3
+ :class="wizardClasses"
4
+ data-component="DXFormWizard"
5
+ :data-current-step="currentStep"
6
+ >
7
+ <!-- Индикатор прогресса -->
8
+ <div v-if="showProgress" :class="progressClasses">
9
+ <DXProgress
10
+ :value="progressValue"
11
+ :max="100"
12
+ :size="progressSize"
13
+ :show-label="false"
14
+ />
15
+ <div class="mt-2 text-sm text-slate-600 text-center">
16
+ Шаг {{ currentStep + 1 }} из {{ steps.length }}
17
+ </div>
18
+ </div>
19
+
20
+ <!-- Навигация по шагам (tabs) -->
21
+ <div v-if="navigationStyle === 'tabs'" :class="tabsClasses">
22
+ <button
23
+ v-for="(step, index) in steps"
24
+ :key="index"
25
+ type="button"
26
+ :class="tabClasses(index)"
27
+ :disabled="!canNavigateToStep(index)"
28
+ @click="goToStep(index)"
29
+ >
30
+ <span class="flex items-center gap-2">
31
+ <span
32
+ :class="tabNumberClasses(index)"
33
+ class="flex items-center justify-center rounded-full"
34
+ >
35
+ {{ index + 1 }}
36
+ </span>
37
+ <span>{{ step.title }}</span>
38
+ </span>
39
+ </button>
40
+ </div>
41
+
42
+ <!-- Навигация по шагам (steps) -->
43
+ <div v-if="navigationStyle === 'steps'" :class="stepsClasses">
44
+ <div
45
+ v-for="(step, index) in steps"
46
+ :key="index"
47
+ :class="stepItemClasses(index)"
48
+ >
49
+ <div
50
+ :class="stepCircleClasses(index)"
51
+ class="flex items-center justify-center rounded-full"
52
+ >
53
+ <DXIcon
54
+ v-if="isStepCompleted(index)"
55
+ :icon="CheckIcon"
56
+ size="sm"
57
+ class="text-white"
58
+ />
59
+ <span v-else class="text-sm font-medium">{{ index + 1 }}</span>
60
+ </div>
61
+ <div class="flex-1 ml-4">
62
+ <div class="text-sm font-medium text-slate-900">{{ step.title }}</div>
63
+ <div v-if="step.description" class="text-xs text-slate-500">
64
+ {{ step.description }}
65
+ </div>
66
+ </div>
67
+ <div
68
+ v-if="index < steps.length - 1"
69
+ :class="stepConnectorClasses(index)"
70
+ class="absolute left-5 top-10 w-0.5 h-full"
71
+ />
72
+ </div>
73
+ </div>
74
+
75
+ <!-- Контент шага -->
76
+ <div :class="contentClasses">
77
+ <Transition :name="transitionName" mode="out-in">
78
+ <div :key="currentStep" class="w-full">
79
+ <slot :name="`step-${currentStep + 1}`" :step="steps[currentStep]" :stepIndex="currentStep">
80
+ <div class="p-8 text-center text-slate-500">
81
+ <p>Шаг {{ currentStep + 1 }}: {{ steps[currentStep]?.title }}</p>
82
+ <p class="text-sm mt-2">Используйте slot step-{{ currentStep + 1 }} для контента</p>
83
+ </div>
84
+ </slot>
85
+ </div>
86
+ </Transition>
87
+ </div>
88
+
89
+ <!-- Навигация -->
90
+ <div :class="navigationClasses">
91
+ <slot
92
+ name="navigation"
93
+ :canGoNext="canGoNext"
94
+ :canGoPrev="canGoPrev"
95
+ :goNext="goNext"
96
+ :goPrev="goPrev"
97
+ :goToStep="goToStep"
98
+ :currentStep="currentStep"
99
+ :totalSteps="steps.length"
100
+ >
101
+ <div class="flex items-center justify-between">
102
+ <DXButton
103
+ v-if="canGoPrev"
104
+ variant="ghost"
105
+ @click="goPrev"
106
+ >
107
+ Назад
108
+ </DXButton>
109
+ <div v-else></div>
110
+
111
+ <div class="flex gap-2">
112
+ <DXButton
113
+ v-for="(step, index) in steps"
114
+ :key="index"
115
+ :variant="currentStep === index ? 'primary' : 'ghost'"
116
+ size="sm"
117
+ :disabled="!canNavigateToStep(index)"
118
+ @click="goToStep(index)"
119
+ >
120
+ {{ index + 1 }}
121
+ </DXButton>
122
+ </div>
123
+
124
+ <DXButton
125
+ v-if="canGoNext"
126
+ variant="primary"
127
+ @click="goNext"
128
+ >
129
+ Далее
130
+ </DXButton>
131
+ <DXButton
132
+ v-else
133
+ variant="primary"
134
+ @click="handleSubmit"
135
+ >
136
+ Завершить
137
+ </DXButton>
138
+ </div>
139
+ </slot>
140
+ </div>
141
+ </div>
142
+ </template>
143
+
144
+ <script setup>
145
+ import { ref, computed, watch } from "vue";
146
+ import { useClassComposition } from "@/composables/useClassComposition";
147
+ import DXProgress from "../../atoms/DXProgress/DXProgress.vue";
148
+ import DXButton from "../../atoms/DXButton/DXButton.vue";
149
+ import DXIcon from "../../atoms/DXIcon/DXIcon.vue";
150
+ import { CheckIcon } from "@heroicons/vue/24/solid";
151
+
152
+ const props = defineProps({
153
+ /**
154
+ * Текущий шаг (v-model, 0-based)
155
+ * @default 0
156
+ */
157
+ currentStep: { type: Number, default: 0 },
158
+ /**
159
+ * Массив шагов: [{ id, title, description? }]
160
+ */
161
+ steps: {
162
+ type: Array,
163
+ required: true,
164
+ validator: (v) => v.length > 0,
165
+ },
166
+ /**
167
+ * Данные формы (для валидации)
168
+ */
169
+ formData: { type: Object, default: () => ({}) },
170
+ /**
171
+ * Функция валидации для каждого шага
172
+ * Формат: (stepIndex, formData) => boolean
173
+ */
174
+ validation: { type: Function, default: null },
175
+ /**
176
+ * Разрешить пропуск шагов
177
+ * @default false
178
+ */
179
+ allowSkip: { type: Boolean, default: false },
180
+ /**
181
+ * Стиль навигации: tabs | steps | dots | none
182
+ * @default 'steps'
183
+ */
184
+ navigationStyle: {
185
+ type: String,
186
+ default: "steps",
187
+ validator: (v) => ["tabs", "steps", "dots", "none"].includes(v),
188
+ },
189
+ /**
190
+ * Показывать индикатор прогресса
191
+ * @default true
192
+ */
193
+ showProgress: { type: Boolean, default: true },
194
+ /**
195
+ * Размер индикатора прогресса: xs | sm | md | lg
196
+ * @default 'md'
197
+ */
198
+ progressSize: {
199
+ type: String,
200
+ default: "md",
201
+ validator: (v) => ["xs", "sm", "md", "lg"].includes(v),
202
+ },
203
+ });
204
+
205
+ const emit = defineEmits([
206
+ "update:currentStep",
207
+ "step-change",
208
+ "submit",
209
+ "next",
210
+ "prev",
211
+ ]);
212
+
213
+ const internalStep = ref(props.currentStep);
214
+ const completedSteps = ref([]);
215
+
216
+ /**
217
+ * Текущий шаг (синхронизированный)
218
+ *
219
+ * @description
220
+ * Синхронизирует внутреннее состояние с prop currentStep.
221
+ *
222
+ * @returns {number} Текущий шаг (0-based)
223
+ */
224
+ const currentStep = computed({
225
+ get: () => props.currentStep,
226
+ set: (value) => {
227
+ if (canNavigateToStep(value)) {
228
+ internalStep.value = value;
229
+ emit("update:currentStep", value);
230
+ emit("step-change", value);
231
+ }
232
+ },
233
+ });
234
+
235
+ /**
236
+ * Значение прогресса в процентах
237
+ *
238
+ * @description
239
+ * Вычисляет процент завершения формы на основе текущего шага.
240
+ *
241
+ * @returns {number} Процент прогресса (0-100)
242
+ */
243
+ const progressValue = computed(() => {
244
+ return ((currentStep.value + 1) / props.steps.length) * 100;
245
+ });
246
+
247
+ /**
248
+ * Имя transition для анимации между шагами
249
+ *
250
+ * @description
251
+ * Используется для CSS классов анимации перехода между шагами.
252
+ *
253
+ * @returns {string} Имя transition
254
+ */
255
+ const transitionName = computed(() => "wizard-fade");
256
+
257
+ /**
258
+ * Классы для контейнера wizard
259
+ *
260
+ * @description
261
+ * Базовые классы для контейнера формы.
262
+ *
263
+ * @returns {Array} Массив классов
264
+ */
265
+ const wizardClasses = computed(() =>
266
+ useClassComposition("w-full")
267
+ );
268
+
269
+ /**
270
+ * Классы для индикатора прогресса
271
+ *
272
+ * @description
273
+ * Классы для секции с индикатором прогресса.
274
+ *
275
+ * @returns {Array} Массив классов
276
+ */
277
+ const progressClasses = computed(() =>
278
+ useClassComposition("mb-6")
279
+ );
280
+
281
+ /**
282
+ * Классы для навигации tabs
283
+ *
284
+ * @description
285
+ * Классы для навигации в стиле tabs.
286
+ *
287
+ * @returns {Array} Массив классов
288
+ */
289
+ const tabsClasses = computed(() =>
290
+ useClassComposition(
291
+ "flex border-b border-slate-200 mb-6",
292
+ props.allowSkip ? "" : "gap-1"
293
+ )
294
+ );
295
+
296
+ /**
297
+ * Классы для навигации steps
298
+ *
299
+ * @description
300
+ * Классы для навигации в стиле steps.
301
+ *
302
+ * @returns {Array} Массив классов
303
+ */
304
+ const stepsClasses = computed(() =>
305
+ useClassComposition("relative mb-8 space-y-4")
306
+ );
307
+
308
+ /**
309
+ * Классы для контента
310
+ *
311
+ * @description
312
+ * Классы для секции с контентом шага.
313
+ *
314
+ * @returns {Array} Массив классов
315
+ */
316
+ const contentClasses = computed(() =>
317
+ useClassComposition("min-h-[300px] mb-6")
318
+ );
319
+
320
+ /**
321
+ * Классы для навигации
322
+ *
323
+ * @description
324
+ * Классы для секции с кнопками навигации.
325
+ *
326
+ * @returns {Array} Массив классов
327
+ */
328
+ const navigationClasses = computed(() =>
329
+ useClassComposition("flex items-center justify-between pt-6 border-t border-slate-200")
330
+ );
331
+
332
+ /**
333
+ * Классы для tab
334
+ *
335
+ * @description
336
+ * Вычисляет классы для tab на основе состояния.
337
+ *
338
+ * @param {number} index - Индекс шага
339
+ * @returns {Array} Массив классов
340
+ */
341
+ function tabClasses(index) {
342
+ const isActive = currentStep.value === index;
343
+ const isCompleted = completedSteps.value.includes(index);
344
+ const canNavigate = canNavigateToStep(index);
345
+
346
+ return useClassComposition(
347
+ "px-4 py-2 text-sm font-medium transition-colors border-b-2",
348
+ {
349
+ "border-blue-600 text-blue-600": isActive,
350
+ "border-transparent text-slate-600 hover:text-slate-900": !isActive,
351
+ "text-slate-400 cursor-not-allowed": !canNavigate && !isActive,
352
+ "text-green-600": isCompleted && !isActive,
353
+ }
354
+ );
355
+ }
356
+
357
+ /**
358
+ * Классы для номера tab
359
+ *
360
+ * @description
361
+ * Вычисляет классы для номера в tab.
362
+ *
363
+ * @param {number} index - Индекс шага
364
+ * @returns {Array} Массив классов
365
+ */
366
+ function tabNumberClasses(index) {
367
+ const isActive = currentStep.value === index;
368
+ const isCompleted = completedSteps.value.includes(index);
369
+
370
+ return useClassComposition(
371
+ "w-6 h-6 text-xs",
372
+ {
373
+ "bg-blue-600 text-white": isActive,
374
+ "bg-green-600 text-white": isCompleted && !isActive,
375
+ "bg-slate-200 text-slate-600": !isActive && !isCompleted,
376
+ }
377
+ );
378
+ }
379
+
380
+ /**
381
+ * Классы для элемента step
382
+ *
383
+ * @description
384
+ * Вычисляет классы для элемента в навигации steps.
385
+ *
386
+ * @param {number} index - Индекс шага
387
+ * @returns {Array} Массив классов
388
+ */
389
+ function stepItemClasses(index) {
390
+ return useClassComposition("relative flex items-start");
391
+ }
392
+
393
+ /**
394
+ * Классы для круга step
395
+ *
396
+ * @description
397
+ * Вычисляет классы для круга в навигации steps.
398
+ *
399
+ * @param {number} index - Индекс шага
400
+ * @returns {Array} Массив классов
401
+ */
402
+ function stepCircleClasses(index) {
403
+ const isActive = currentStep.value === index;
404
+ const isCompleted = completedSteps.value.includes(index);
405
+
406
+ return useClassComposition(
407
+ "w-10 h-10 flex-shrink-0 z-10",
408
+ {
409
+ "bg-blue-600 text-white": isActive,
410
+ "bg-green-600 text-white": isCompleted && !isActive,
411
+ "bg-slate-200 text-slate-600": !isActive && !isCompleted,
412
+ }
413
+ );
414
+ }
415
+
416
+ /**
417
+ * Классы для соединителя step
418
+ *
419
+ * @description
420
+ * Вычисляет классы для соединительной линии между шагами.
421
+ *
422
+ * @param {number} index - Индекс шага
423
+ * @returns {Array} Массив классов
424
+ */
425
+ function stepConnectorClasses(index) {
426
+ const isCompleted = completedSteps.value.includes(index + 1);
427
+
428
+ return useClassComposition(
429
+ {
430
+ "bg-green-600": isCompleted,
431
+ "bg-slate-200": !isCompleted,
432
+ }
433
+ );
434
+ }
435
+
436
+ /**
437
+ * Можно ли перейти на следующий шаг
438
+ *
439
+ * @description
440
+ * Проверяет, можно ли перейти на следующий шаг.
441
+ *
442
+ * @returns {boolean} true если можно перейти дальше
443
+ */
444
+ const canGoNext = computed(() => {
445
+ if (currentStep.value >= props.steps.length - 1) return false;
446
+
447
+ // Валидация текущего шага
448
+ if (props.validation) {
449
+ return props.validation(currentStep.value, props.formData);
450
+ }
451
+
452
+ return true;
453
+ });
454
+
455
+ /**
456
+ * Можно ли перейти на предыдущий шаг
457
+ *
458
+ * @description
459
+ * Проверяет, можно ли перейти на предыдущий шаг.
460
+ *
461
+ * @returns {boolean} true если можно вернуться назад
462
+ */
463
+ const canGoPrev = computed(() => {
464
+ return currentStep.value > 0;
465
+ });
466
+
467
+ /**
468
+ * Можно ли перейти на указанный шаг
469
+ *
470
+ * @description
471
+ * Проверяет, можно ли перейти на указанный шаг.
472
+ * Если allowSkip=false, можно переходить только на следующие шаги.
473
+ *
474
+ * @param {number} stepIndex - Индекс шага
475
+ * @returns {boolean} true если можно перейти
476
+ */
477
+ function canNavigateToStep(stepIndex) {
478
+ if (props.allowSkip) return true;
479
+
480
+ // Можно перейти только на следующие шаги или уже пройденные
481
+ return stepIndex <= currentStep.value || completedSteps.value.includes(stepIndex);
482
+ }
483
+
484
+ /**
485
+ * Переход на следующий шаг
486
+ *
487
+ * @description
488
+ * Переходит на следующий шаг с валидацией.
489
+ */
490
+ function goNext() {
491
+ if (!canGoNext.value) return;
492
+
493
+ // Отмечаем текущий шаг как завершенный
494
+ if (!completedSteps.value.includes(currentStep.value)) {
495
+ completedSteps.value.push(currentStep.value);
496
+ }
497
+
498
+ const nextStep = currentStep.value + 1;
499
+ currentStep.value = nextStep;
500
+ emit("next", nextStep);
501
+ }
502
+
503
+ /**
504
+ * Переход на предыдущий шаг
505
+ *
506
+ * @description
507
+ * Переходит на предыдущий шаг.
508
+ */
509
+ function goPrev() {
510
+ if (!canGoPrev.value) return;
511
+
512
+ const prevStep = currentStep.value - 1;
513
+ currentStep.value = prevStep;
514
+ emit("prev", prevStep);
515
+ }
516
+
517
+ /**
518
+ * Переход на указанный шаг
519
+ *
520
+ * @description
521
+ * Переходит на указанный шаг (если разрешено).
522
+ *
523
+ * @param {number} stepIndex - Индекс шага
524
+ */
525
+ function goToStep(stepIndex) {
526
+ if (!canNavigateToStep(stepIndex)) return;
527
+ currentStep.value = stepIndex;
528
+ }
529
+
530
+ /**
531
+ * Проверка завершения шага
532
+ *
533
+ * @description
534
+ * Проверяет, завершен ли указанный шаг.
535
+ *
536
+ * @param {number} index - Индекс шага
537
+ * @returns {boolean} true если шаг завершен
538
+ */
539
+ function isStepCompleted(index) {
540
+ return completedSteps.value.includes(index);
541
+ }
542
+
543
+ /**
544
+ * Обработчик отправки формы
545
+ *
546
+ * @description
547
+ * Вызывается при нажатии кнопки "Завершить" на последнем шаге.
548
+ */
549
+ function handleSubmit() {
550
+ // Отмечаем последний шаг как завершенный
551
+ if (!completedSteps.value.includes(currentStep.value)) {
552
+ completedSteps.value.push(currentStep.value);
553
+ }
554
+
555
+ emit("submit", props.formData);
556
+ }
557
+
558
+ // Синхронизация с prop currentStep
559
+ watch(
560
+ () => props.currentStep,
561
+ (newStep) => {
562
+ internalStep.value = newStep;
563
+ }
564
+ );
565
+ </script>
566
+
567
+ <style scoped>
568
+ .wizard-fade-enter-active,
569
+ .wizard-fade-leave-active {
570
+ transition: opacity 0.3s ease;
571
+ }
572
+
573
+ .wizard-fade-enter-from,
574
+ .wizard-fade-leave-to {
575
+ opacity: 0;
576
+ }
577
+ </style>
578
+
@@ -0,0 +1,2 @@
1
+ export { default } from './DXFormWizard.vue';
2
+