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,615 @@
1
+ <template>
2
+ <div
3
+ :class="wizardClasses"
4
+ data-component="DXWizard"
5
+ :data-current-step="currentStep"
6
+ >
7
+ <!-- Progress Indicator -->
8
+ <div v-if="showProgress" :class="progressClasses">
9
+ <DXProgress
10
+ :value="progressValue"
11
+ :max="100"
12
+ :size="progressSize"
13
+ :show-label="showProgressLabel"
14
+ />
15
+ <div v-if="showProgressLabel" class="mt-2 text-sm text-slate-600 text-center">
16
+ Шаг {{ currentStep }} из {{ steps.length }}
17
+ </div>
18
+ </div>
19
+
20
+ <!-- Steps Indicator -->
21
+ <div v-if="showStepsIndicator" :class="stepsIndicatorClasses">
22
+ <div
23
+ v-for="(step, index) in steps"
24
+ :key="index"
25
+ :class="stepIndicatorClasses(index)"
26
+ >
27
+ <div
28
+ :class="stepCircleClasses(index)"
29
+ class="flex items-center justify-center rounded-full"
30
+ >
31
+ <DXIcon
32
+ v-if="isStepCompleted(index)"
33
+ :icon="CheckIcon"
34
+ size="sm"
35
+ class="text-white"
36
+ />
37
+ <span v-else class="text-sm font-medium">{{ index + 1 }}</span>
38
+ </div>
39
+ <div class="flex-1 ml-4">
40
+ <div class="text-sm font-medium text-slate-900">{{ step.title }}</div>
41
+ <div v-if="step.description" class="text-xs text-slate-500">
42
+ {{ step.description }}
43
+ </div>
44
+ </div>
45
+ <div
46
+ v-if="index < steps.length - 1"
47
+ :class="stepConnectorClasses(index)"
48
+ class="absolute left-5 top-10 w-0.5 h-full"
49
+ />
50
+ </div>
51
+ </div>
52
+
53
+ <!-- Step Content -->
54
+ <div :class="contentClasses">
55
+ <Transition :name="transitionName" mode="out-in">
56
+ <div :key="currentStep" class="w-full">
57
+ <slot
58
+ :name="`step-${currentStep}`"
59
+ :step="currentStepData"
60
+ :stepIndex="currentStep - 1"
61
+ :formData="wizardData"
62
+ :errors="stepErrors"
63
+ >
64
+ <div class="p-8 text-center text-slate-500">
65
+ <p>Шаг {{ currentStep }}: {{ currentStepData?.title }}</p>
66
+ <p class="text-sm mt-2">
67
+ Используйте slot step-{{ currentStep }} для контента
68
+ </p>
69
+ </div>
70
+ </slot>
71
+ </div>
72
+ </Transition>
73
+ </div>
74
+
75
+ <!-- Navigation -->
76
+ <div :class="navigationClasses">
77
+ <slot
78
+ name="navigation"
79
+ :canGoNext="canGoNext"
80
+ :canGoPrev="canGoPrev"
81
+ :goNext="goNext"
82
+ :goPrev="goPrev"
83
+ :goToStep="goToStep"
84
+ :currentStep="currentStep"
85
+ :totalSteps="steps.length"
86
+ :save="saveProgress"
87
+ :cancel="handleCancel"
88
+ >
89
+ <DXButton
90
+ v-if="currentStep > 1"
91
+ variant="ghost"
92
+ :disabled="loading"
93
+ @click="goPrev"
94
+ >
95
+ Назад
96
+ </DXButton>
97
+ <div class="flex-1"></div>
98
+ <DXButton
99
+ v-if="saveProgressEnabled"
100
+ variant="ghost"
101
+ :disabled="loading"
102
+ @click="saveProgress"
103
+ >
104
+ Сохранить прогресс
105
+ </DXButton>
106
+ <DXButton
107
+ v-if="currentStep < steps.length"
108
+ variant="primary"
109
+ :disabled="loading || !canGoNext"
110
+ @click="goNext"
111
+ >
112
+ Далее
113
+ </DXButton>
114
+ <DXButton
115
+ v-else
116
+ variant="success"
117
+ :disabled="loading || !canComplete"
118
+ @click="handleComplete"
119
+ >
120
+ Завершить
121
+ </DXButton>
122
+ </slot>
123
+ </div>
124
+ </div>
125
+ </template>
126
+
127
+ <script setup>
128
+ import { ref, computed, watch, onMounted } from "vue";
129
+ import { useClassComposition } from "@/composables/useClassComposition";
130
+ import { useSpacing } from "@/composables/useSpacing";
131
+ import DXProgress from "../../atoms/DXProgress/DXProgress.vue";
132
+ import DXButton from "../../atoms/DXButton/DXButton.vue";
133
+ import DXIcon from "../../atoms/DXIcon/DXIcon.vue";
134
+ import { CheckIcon } from "@heroicons/vue/24/solid";
135
+
136
+ const props = defineProps({
137
+ /**
138
+ * Шаги мастера
139
+ * Формат: [{ title, description?, schema?, fields? }]
140
+ */
141
+ steps: {
142
+ type: Array,
143
+ required: true,
144
+ },
145
+ /**
146
+ * Текущий шаг (начинается с 1)
147
+ * @default 1
148
+ */
149
+ currentStep: {
150
+ type: Number,
151
+ default: 1,
152
+ },
153
+ /**
154
+ * Данные мастера (v-model)
155
+ */
156
+ wizardData: {
157
+ type: Object,
158
+ default: () => ({}),
159
+ },
160
+ /**
161
+ * Ошибки валидации
162
+ * Формат: { [field]: 'error message' }
163
+ */
164
+ validationErrors: {
165
+ type: Object,
166
+ default: () => ({}),
167
+ },
168
+ /**
169
+ * Разрешить пропуск шагов
170
+ * @default false
171
+ */
172
+ allowSkip: { type: Boolean, default: false },
173
+ /**
174
+ * Сохранять прогресс
175
+ * @default false
176
+ */
177
+ saveProgressEnabled: { type: Boolean, default: false },
178
+ /**
179
+ * Ключ для сохранения в localStorage
180
+ * @default 'dx-wizard-progress'
181
+ */
182
+ storageKey: {
183
+ type: String,
184
+ default: "dx-wizard-progress",
185
+ },
186
+ /**
187
+ * Состояние загрузки
188
+ * @default false
189
+ */
190
+ loading: { type: Boolean, default: false },
191
+ /**
192
+ * Показывать индикатор прогресса
193
+ * @default true
194
+ */
195
+ showProgress: { type: Boolean, default: true },
196
+ /**
197
+ * Показывать метку прогресса
198
+ * @default true
199
+ */
200
+ showProgressLabel: { type: Boolean, default: true },
201
+ /**
202
+ * Показывать индикатор шагов
203
+ * @default true
204
+ */
205
+ showStepsIndicator: { type: Boolean, default: true },
206
+ /**
207
+ * Имя transition
208
+ * @default 'fade'
209
+ */
210
+ transition: {
211
+ type: String,
212
+ default: "fade",
213
+ },
214
+ });
215
+
216
+ const emit = defineEmits([
217
+ "update:currentStep",
218
+ "update:wizardData",
219
+ "next",
220
+ "prev",
221
+ "complete",
222
+ "cancel",
223
+ "step-change",
224
+ "save-progress",
225
+ ]);
226
+
227
+ const internalCurrentStep = ref(props.currentStep);
228
+ const internalWizardData = ref({ ...props.wizardData });
229
+
230
+ /**
231
+ * Значение прогресса
232
+ *
233
+ * @description
234
+ * Вычисляет процент выполнения мастера.
235
+ *
236
+ * @returns {number} Процент прогресса
237
+ */
238
+ const progressValue = computed(() => {
239
+ if (props.steps.length === 0) return 0;
240
+ return ((internalCurrentStep.value - 1) / props.steps.length) * 100;
241
+ });
242
+
243
+ /**
244
+ * Размер прогресса
245
+ *
246
+ * @description
247
+ * Определяет размер прогресс-бара.
248
+ *
249
+ * @returns {'sm' | 'md' | 'lg'} Размер
250
+ */
251
+ const progressSize = computed(() => "sm");
252
+
253
+ /**
254
+ * Данные текущего шага
255
+ *
256
+ * @description
257
+ * Возвращает объект текущего шага.
258
+ *
259
+ * @returns {Object} Объект шага
260
+ */
261
+ const currentStepData = computed(() => {
262
+ return props.steps[internalCurrentStep.value - 1] || {};
263
+ });
264
+
265
+ /**
266
+ * Ошибки текущего шага
267
+ *
268
+ * @description
269
+ * Фильтрует ошибки валидации для текущего шага.
270
+ *
271
+ * @returns {Object} Объект ошибок
272
+ */
273
+ const stepErrors = computed(() => {
274
+ const errors = {};
275
+ const currentStepFields =
276
+ currentStepData.value?.fields ||
277
+ Object.keys(internalWizardData.value);
278
+ for (const field of currentStepFields) {
279
+ if (props.validationErrors[field]) {
280
+ errors[field] = props.validationErrors[field];
281
+ }
282
+ }
283
+ return errors;
284
+ });
285
+
286
+ /**
287
+ * Можно ли перейти к следующему шагу
288
+ *
289
+ * @description
290
+ * Проверяет, можно ли перейти к следующему шагу.
291
+ *
292
+ * @returns {boolean} true, если можно перейти
293
+ */
294
+ const canGoNext = computed(() => {
295
+ if (props.allowSkip) return true;
296
+ return Object.keys(stepErrors.value).length === 0;
297
+ });
298
+
299
+ /**
300
+ * Можно ли перейти к предыдущему шагу
301
+ *
302
+ * @description
303
+ * Проверяет, можно ли перейти к предыдущему шагу.
304
+ *
305
+ * @returns {boolean} true, если можно перейти
306
+ */
307
+ const canGoPrev = computed(() => {
308
+ return internalCurrentStep.value > 1;
309
+ });
310
+
311
+ /**
312
+ * Можно ли завершить мастер
313
+ *
314
+ * @description
315
+ * Проверяет, можно ли завершить мастер.
316
+ *
317
+ * @returns {boolean} true, если можно завершить
318
+ */
319
+ const canComplete = computed(() => {
320
+ return Object.keys(props.validationErrors).length === 0;
321
+ });
322
+
323
+ /**
324
+ * Имя transition
325
+ *
326
+ * @description
327
+ * Возвращает имя transition для анимации.
328
+ *
329
+ * @returns {string} Имя transition
330
+ */
331
+ const transitionName = computed(() => props.transition);
332
+
333
+ /**
334
+ * Классы для мастера
335
+ *
336
+ * @description
337
+ * Базовые классы для мастера.
338
+ *
339
+ * @returns {Array} Массив классов
340
+ */
341
+ const wizardClasses = computed(() =>
342
+ useClassComposition("w-full", useSpacing("md", "padding"))
343
+ );
344
+
345
+ /**
346
+ * Классы для прогресса
347
+ *
348
+ * @description
349
+ * Классы для секции прогресса.
350
+ *
351
+ * @returns {Array} Массив классов
352
+ */
353
+ const progressClasses = computed(() =>
354
+ useClassComposition("mb-6")
355
+ );
356
+
357
+ /**
358
+ * Классы для индикатора шагов
359
+ *
360
+ * @description
361
+ * Классы для индикатора шагов.
362
+ *
363
+ * @returns {Array} Массив классов
364
+ */
365
+ const stepsIndicatorClasses = computed(() =>
366
+ useClassComposition("mb-8 relative")
367
+ );
368
+
369
+ /**
370
+ * Классы для индикатора шага
371
+ *
372
+ * @description
373
+ * Классы для отдельного индикатора шага.
374
+ *
375
+ * @param {number} index - Индекс шага
376
+ * @returns {Array} Массив классов
377
+ */
378
+ function stepIndicatorClasses(index) {
379
+ return useClassComposition(
380
+ "flex items-center relative mb-6",
381
+ index === internalCurrentStep.value - 1 ? "text-slate-900" : "text-slate-500"
382
+ );
383
+ }
384
+
385
+ /**
386
+ * Классы для круга шага
387
+ *
388
+ * @description
389
+ * Классы для круга индикатора шага.
390
+ *
391
+ * @param {number} index - Индекс шага
392
+ * @returns {string} Tailwind CSS классы
393
+ */
394
+ function stepCircleClasses(index) {
395
+ const stepIndex = index + 1;
396
+ if (stepIndex < internalCurrentStep.value) {
397
+ return "w-10 h-10 bg-green-500 text-white";
398
+ } else if (stepIndex === internalCurrentStep.value) {
399
+ return "w-10 h-10 bg-blue-500 text-white";
400
+ } else {
401
+ return "w-10 h-10 bg-slate-200 text-slate-500";
402
+ }
403
+ }
404
+
405
+ /**
406
+ * Классы для соединителя шагов
407
+ *
408
+ * @description
409
+ * Классы для линии между шагами.
410
+ *
411
+ * @param {number} index - Индекс шага
412
+ * @returns {string} Tailwind CSS классы
413
+ */
414
+ function stepConnectorClasses(index) {
415
+ const stepIndex = index + 1;
416
+ if (stepIndex < internalCurrentStep.value) {
417
+ return "bg-green-500";
418
+ } else {
419
+ return "bg-slate-200";
420
+ }
421
+ }
422
+
423
+ /**
424
+ * Классы для контента
425
+ *
426
+ * @description
427
+ * Классы для секции контента шага.
428
+ *
429
+ * @returns {Array} Массив классов
430
+ */
431
+ const contentClasses = computed(() =>
432
+ useClassComposition("min-h-[300px]")
433
+ );
434
+
435
+ /**
436
+ * Классы для навигации
437
+ *
438
+ * @description
439
+ * Классы для секции навигации.
440
+ *
441
+ * @returns {Array} Массив классов
442
+ */
443
+ const navigationClasses = computed(() =>
444
+ useClassComposition("flex items-center justify-between gap-4 mt-8 pt-6 border-t border-slate-200")
445
+ );
446
+
447
+ /**
448
+ * Проверка, завершен ли шаг
449
+ *
450
+ * @description
451
+ * Проверяет, завершен ли указанный шаг.
452
+ *
453
+ * @param {number} index - Индекс шага
454
+ * @returns {boolean} true, если шаг завершен
455
+ */
456
+ function isStepCompleted(index) {
457
+ return index + 1 < internalCurrentStep.value;
458
+ }
459
+
460
+ /**
461
+ * Переход к следующему шагу
462
+ *
463
+ * @description
464
+ * Переходит к следующему шагу, если это возможно.
465
+ */
466
+ function goNext() {
467
+ if (internalCurrentStep.value < props.steps.length && canGoNext.value) {
468
+ internalCurrentStep.value++;
469
+ emit("update:currentStep", internalCurrentStep.value);
470
+ emit("next", internalCurrentStep.value);
471
+ emit("step-change", internalCurrentStep.value);
472
+ saveProgressIfEnabled();
473
+ }
474
+ }
475
+
476
+ /**
477
+ * Переход к предыдущему шагу
478
+ *
479
+ * @description
480
+ * Переходит к предыдущему шагу.
481
+ */
482
+ function goPrev() {
483
+ if (internalCurrentStep.value > 1) {
484
+ internalCurrentStep.value--;
485
+ emit("update:currentStep", internalCurrentStep.value);
486
+ emit("prev", internalCurrentStep.value);
487
+ emit("step-change", internalCurrentStep.value);
488
+ saveProgressIfEnabled();
489
+ }
490
+ }
491
+
492
+ /**
493
+ * Переход к указанному шагу
494
+ *
495
+ * @description
496
+ * Переходит к указанному шагу.
497
+ *
498
+ * @param {number} step - Номер шага
499
+ */
500
+ function goToStep(step) {
501
+ if (step >= 1 && step <= props.steps.length) {
502
+ internalCurrentStep.value = step;
503
+ emit("update:currentStep", internalCurrentStep.value);
504
+ emit("step-change", internalCurrentStep.value);
505
+ saveProgressIfEnabled();
506
+ }
507
+ }
508
+
509
+ /**
510
+ * Сохранение прогресса
511
+ *
512
+ * @description
513
+ * Сохраняет прогресс мастера в localStorage.
514
+ */
515
+ function saveProgress() {
516
+ const progress = {
517
+ currentStep: internalCurrentStep.value,
518
+ wizardData: { ...internalWizardData.value },
519
+ };
520
+ localStorage.setItem(props.storageKey, JSON.stringify(progress));
521
+ emit("save-progress", progress);
522
+ }
523
+
524
+ /**
525
+ * Сохранение прогресса если включено
526
+ *
527
+ * @description
528
+ * Сохраняет прогресс автоматически, если включено.
529
+ */
530
+ function saveProgressIfEnabled() {
531
+ if (props.saveProgressEnabled) {
532
+ saveProgress();
533
+ }
534
+ }
535
+
536
+ /**
537
+ * Обработчик завершения
538
+ *
539
+ * @description
540
+ * Эмитит событие завершения мастера.
541
+ */
542
+ function handleComplete() {
543
+ if (canComplete.value) {
544
+ emit("complete", {
545
+ wizardData: { ...internalWizardData.value },
546
+ currentStep: internalCurrentStep.value,
547
+ });
548
+ // Очищаем сохраненный прогресс
549
+ if (props.saveProgressEnabled) {
550
+ localStorage.removeItem(props.storageKey);
551
+ }
552
+ }
553
+ }
554
+
555
+ /**
556
+ * Обработчик отмены
557
+ *
558
+ * @description
559
+ * Эмитит событие отмены мастера.
560
+ */
561
+ function handleCancel() {
562
+ emit("cancel");
563
+ }
564
+
565
+ // Загрузка сохраненного прогресса при монтировании
566
+ onMounted(() => {
567
+ if (props.saveProgressEnabled) {
568
+ const saved = localStorage.getItem(props.storageKey);
569
+ if (saved) {
570
+ try {
571
+ const progress = JSON.parse(saved);
572
+ if (progress.currentStep) {
573
+ internalCurrentStep.value = progress.currentStep;
574
+ emit("update:currentStep", internalCurrentStep.value);
575
+ }
576
+ if (progress.wizardData) {
577
+ internalWizardData.value = { ...progress.wizardData };
578
+ emit("update:wizardData", { ...internalWizardData.value });
579
+ }
580
+ } catch (e) {
581
+ console.warn("Не удалось загрузить сохраненный прогресс:", e);
582
+ }
583
+ }
584
+ }
585
+ });
586
+
587
+ // Синхронизация с prop currentStep
588
+ watch(
589
+ () => props.currentStep,
590
+ (newStep) => {
591
+ if (newStep !== internalCurrentStep.value) {
592
+ internalCurrentStep.value = newStep;
593
+ }
594
+ }
595
+ );
596
+
597
+ // Синхронизация с prop wizardData
598
+ watch(
599
+ () => props.wizardData,
600
+ (newData) => {
601
+ internalWizardData.value = { ...newData };
602
+ },
603
+ { deep: true }
604
+ );
605
+
606
+ // Синхронизация internalWizardData с prop
607
+ watch(
608
+ internalWizardData,
609
+ (newData) => {
610
+ emit("update:wizardData", { ...newData });
611
+ },
612
+ { deep: true }
613
+ );
614
+ </script>
615
+
@@ -0,0 +1,2 @@
1
+ export { default } from './DXWizard.vue';
2
+
@@ -0,0 +1,25 @@
1
+ // Organism components - complex UI structures
2
+ export { default as DXAccordion } from './DXAccordion';
3
+ export { default as DXAppLayout } from './DXAppLayout';
4
+ export { default as DXAuthenticationForm } from './DXAuthenticationForm';
5
+ export { default as DXChartContainer } from './DXChartContainer';
6
+ export { default as DXChatInterface } from './DXChatInterface';
7
+ export { default as DXCommentSection } from './DXCommentSection';
8
+ export { default as DXDataTable } from './DXDataTable';
9
+ export { default as DXDropdown } from './DXDropdown';
10
+ export { default as DXEmptyState } from './DXEmptyState';
11
+ export { default as DXFormWizard } from './DXFormWizard';
12
+ export { default as DXDashboardGrid } from './DXDashboardGrid';
13
+ export { default as DXDashboardWidget } from './DXDashboardWidget';
14
+ export { default as DXHeaderBar } from './DXHeaderBar';
15
+ export { default as DXMediaGallery } from './DXMediaGallery';
16
+ export { default as DXNotificationCenter } from './DXNotificationCenter';
17
+ export { default as DXModal } from './DXModal';
18
+ export { default as DXReportGenerator } from './DXReportGenerator';
19
+ export { default as DXSettingsPanel } from './DXSettingsPanel';
20
+ export { default as DXSidebar } from './DXSidebar';
21
+ export { default as DXSidebarMenu, DXSidebarMenuItem } from './DXSidebarMenu';
22
+ export { default as DXTable } from './DXTable';
23
+ export { default as DXTabs } from './DXTabs';
24
+ export { default as DXUserProfileCard } from './DXUserProfileCard';
25
+ export { default as DXWizard } from './DXWizard';
@@ -0,0 +1,33 @@
1
+ import DXBlockquote from './DXBlockquote.vue';
2
+
3
+ export default {
4
+ title: 'Typography/DXBlockquote',
5
+ component: DXBlockquote,
6
+ tags: ['autodocs'],
7
+ argTypes: {
8
+ variant: { control: { type: 'select' }, options: ['default', 'bordered', 'highlighted'] },
9
+ },
10
+ };
11
+
12
+ export const Default = {
13
+ args: { cite: 'Стив Джобс' },
14
+ render: (args) => ({
15
+ components: { DXBlockquote },
16
+ setup() { return { args }; },
17
+ template: '<DXBlockquote v-bind="args">Дизайн — это не только то, как что-то выглядит и ощущается. Дизайн — это то, как что-то работает.</DXBlockquote>',
18
+ }),
19
+ };
20
+
21
+ export const Variants = {
22
+ render: () => ({
23
+ components: { DXBlockquote },
24
+ template: `
25
+ <div class="space-y-6">
26
+ <DXBlockquote variant="default">Default variant without border</DXBlockquote>
27
+ <DXBlockquote variant="bordered">Bordered variant with left border</DXBlockquote>
28
+ <DXBlockquote variant="highlighted">Highlighted variant with background</DXBlockquote>
29
+ </div>
30
+ `,
31
+ }),
32
+ };
33
+