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,316 @@
1
+ import { ref } from 'vue';
2
+ import DXSidebar from './DXSidebar.vue';
3
+ import DXSidebarMenu from '../DXSidebarMenu/DXSidebarMenu.vue';
4
+ import DXButton from '../../atoms/DXButton/DXButton.vue';
5
+ import DXIcon from '../../atoms/DXIcon/DXIcon.vue';
6
+ import { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/vue/24/outline';
7
+
8
+ export default {
9
+ title: 'Organisms/DXSidebar',
10
+ component: DXSidebar,
11
+ tags: ['autodocs'],
12
+ parameters: {
13
+ docs: {
14
+ description: {
15
+ component: `
16
+ # DXSidebar
17
+
18
+ Обертка для боковой панели с поддержкой различных режимов отображения и анимаций.
19
+
20
+ ## Назначение
21
+
22
+ DXSidebar предоставляет гибкую обертку для боковой панели навигации с поддержкой
23
+ различных режимов отображения, коллапсирования и адаптивного поведения.
24
+
25
+ ## Архитектура
26
+
27
+ ### Использует
28
+ - \`DXBackdrop\` - для overlay режима
29
+ - \`DXSidebarMenu\` - для меню (через slot)
30
+ - \`useClassComposition\` composable - для стилей
31
+ - \`useAnimation\` composable - для transitions
32
+
33
+ ### Используется в
34
+ - \`DXAppLayout\` - для боковой навигации
35
+ - Самостоятельные боковые панели
36
+ - Панели фильтров
37
+
38
+ ## Внутренняя логика
39
+
40
+ ### Режимы отображения
41
+ - **overlay**: Сайдбар накладывается поверх контента с backdrop
42
+ - **push**: Сайдбар сдвигает контент вправо
43
+ - **static**: Сайдбар в обычном потоке документа
44
+
45
+ ### Коллапсирование
46
+ При \`collapsed={true}\` сайдбар уменьшается до минимальной ширины,
47
+ показывая только иконки (если используется DXSidebarMenu).
48
+
49
+ ### Адаптивность
50
+ На мобильных устройствах сайдбар скрывается (кроме overlay режима).
51
+
52
+ ## Особенности
53
+
54
+ ### Slots
55
+ - \`header\` - заголовок сайдбара
56
+ - \`content\` - основной контент (обычно DXSidebarMenu)
57
+ - \`footer\` - нижняя секция
58
+
59
+ ### Анимации
60
+ Переходы между состояниями анимируются через CSS transitions.
61
+ `,
62
+ },
63
+ },
64
+ },
65
+ argTypes: {
66
+ open: {
67
+ control: 'boolean',
68
+ description: 'Открыт ли сайдбар.',
69
+ table: {
70
+ type: { summary: 'boolean' },
71
+ defaultValue: { summary: 'true' },
72
+ category: 'Behavior',
73
+ },
74
+ },
75
+ mode: {
76
+ control: 'select',
77
+ options: ['overlay', 'push', 'static'],
78
+ description: 'Режим отображения: overlay (поверх контента) | push (сдвигает контент) | static (в потоке).',
79
+ table: {
80
+ type: { summary: 'string' },
81
+ defaultValue: { summary: 'static' },
82
+ category: 'Layout',
83
+ },
84
+ },
85
+ width: {
86
+ control: 'number',
87
+ min: 200,
88
+ max: 400,
89
+ step: 10,
90
+ description: 'Ширина сайдбара в пикселях (когда развернут).',
91
+ table: {
92
+ type: { summary: 'number' },
93
+ defaultValue: { summary: '256' },
94
+ category: 'Layout',
95
+ },
96
+ },
97
+ collapsedWidth: {
98
+ control: 'number',
99
+ min: 50,
100
+ max: 100,
101
+ step: 5,
102
+ description: 'Ширина сайдбара в пикселях (когда свернут).',
103
+ table: {
104
+ type: { summary: 'number' },
105
+ defaultValue: { summary: '64' },
106
+ category: 'Layout',
107
+ },
108
+ },
109
+ collapsed: {
110
+ control: 'boolean',
111
+ description: 'Свернут ли сайдбар.',
112
+ table: {
113
+ type: { summary: 'boolean' },
114
+ defaultValue: { summary: 'false' },
115
+ category: 'Behavior',
116
+ },
117
+ },
118
+ },
119
+ };
120
+
121
+ const menuSections = [
122
+ {
123
+ title: 'Основное',
124
+ items: [
125
+ { id: 1, label: 'Главная', href: '/', icon: 'HomeIcon' },
126
+ { id: 2, label: 'Проекты', href: '/projects', icon: 'FolderIcon' },
127
+ { id: 3, label: 'Задачи', href: '/tasks', icon: 'CheckIcon' },
128
+ ],
129
+ },
130
+ {
131
+ title: 'Настройки',
132
+ items: [
133
+ { id: 4, label: 'Профиль', href: '/profile', icon: 'UserIcon' },
134
+ { id: 5, label: 'Настройки', href: '/settings', icon: 'CogIcon' },
135
+ ],
136
+ },
137
+ ];
138
+
139
+ export const Default = {
140
+ args: {
141
+ mode: 'static',
142
+ open: true,
143
+ collapsed: false,
144
+ },
145
+ parameters: {
146
+ docs: {
147
+ description: {
148
+ story: 'Базовый сайдбар в static режиме с меню.',
149
+ },
150
+ },
151
+ },
152
+ render: (args) => ({
153
+ components: { DXSidebar, DXSidebarMenu },
154
+ setup() {
155
+ return { args, menuSections };
156
+ },
157
+ template: `
158
+ <DXSidebar v-bind="args">
159
+ <template #header>
160
+ <h2 class="text-lg font-semibold text-slate-900">Меню</h2>
161
+ </template>
162
+ <template #content>
163
+ <DXSidebarMenu :sections="menuSections" />
164
+ </template>
165
+ </DXSidebar>
166
+ `,
167
+ }),
168
+ };
169
+
170
+ export const OverlayMode = {
171
+ args: {
172
+ mode: 'overlay',
173
+ open: true,
174
+ },
175
+ parameters: {
176
+ docs: {
177
+ description: {
178
+ story: 'Сайдбар в overlay режиме. Накладывается поверх контента с backdrop.',
179
+ },
180
+ },
181
+ },
182
+ render: (args) => ({
183
+ components: { DXSidebar, DXSidebarMenu, DXButton },
184
+ setup() {
185
+ const open = ref(args.open);
186
+ return { open, args, menuSections };
187
+ },
188
+ template: `
189
+ <div>
190
+ <DXButton @click="open = !open">
191
+ {{ open ? 'Закрыть' : 'Открыть' }} сайдбар
192
+ </DXButton>
193
+ <DXSidebar v-model:open="open" v-bind="args">
194
+ <template #header>
195
+ <h2 class="text-lg font-semibold text-slate-900">Меню</h2>
196
+ </template>
197
+ <template #content>
198
+ <DXSidebarMenu :sections="menuSections" />
199
+ </template>
200
+ </DXSidebar>
201
+ </div>
202
+ `,
203
+ }),
204
+ };
205
+
206
+ export const Collapsible = {
207
+ args: {
208
+ mode: 'static',
209
+ open: true,
210
+ },
211
+ parameters: {
212
+ docs: {
213
+ description: {
214
+ story: 'Коллапсируемый сайдбар. Используйте контролы для переключения состояния.',
215
+ },
216
+ },
217
+ },
218
+ render: (args) => ({
219
+ components: { DXSidebar, DXSidebarMenu, DXButton, DXIcon },
220
+ setup() {
221
+ const collapsed = ref(false);
222
+ return { collapsed, args, menuSections, ChevronLeftIcon, ChevronRightIcon };
223
+ },
224
+ template: `
225
+ <DXSidebar v-bind="args" :collapsed="collapsed">
226
+ <template #header>
227
+ <div class="flex items-center justify-between">
228
+ <h2 v-if="!collapsed" class="text-lg font-semibold text-slate-900">Меню</h2>
229
+ <DXButton
230
+ variant="ghost"
231
+ size="sm"
232
+ @click="collapsed = !collapsed"
233
+ >
234
+ <template #icon>
235
+ <DXIcon :icon="collapsed ? ChevronRightIcon : ChevronLeftIcon" size="sm" />
236
+ </template>
237
+ </DXButton>
238
+ </div>
239
+ </template>
240
+ <template #content>
241
+ <DXSidebarMenu :sections="menuSections" :compact="collapsed" />
242
+ </template>
243
+ </DXSidebar>
244
+ `,
245
+ }),
246
+ };
247
+
248
+ export const WithFooter = {
249
+ args: {
250
+ mode: 'static',
251
+ open: true,
252
+ },
253
+ parameters: {
254
+ docs: {
255
+ description: {
256
+ story: 'Сайдбар с footer секцией.',
257
+ },
258
+ },
259
+ },
260
+ render: (args) => ({
261
+ components: { DXSidebar, DXSidebarMenu },
262
+ setup() {
263
+ return { args, menuSections };
264
+ },
265
+ template: `
266
+ <DXSidebar v-bind="args">
267
+ <template #header>
268
+ <h2 class="text-lg font-semibold text-slate-900">Меню</h2>
269
+ </template>
270
+ <template #content>
271
+ <DXSidebarMenu :sections="menuSections" />
272
+ </template>
273
+ <template #footer>
274
+ <p class="text-xs text-slate-500">© 2024 My App</p>
275
+ </template>
276
+ </DXSidebar>
277
+ `,
278
+ }),
279
+ };
280
+
281
+ export const PushMode = {
282
+ args: {
283
+ mode: 'push',
284
+ open: true,
285
+ },
286
+ parameters: {
287
+ docs: {
288
+ description: {
289
+ story: 'Сайдбар в push режиме. Сдвигает контент вправо при открытии.',
290
+ },
291
+ },
292
+ },
293
+ render: (args) => ({
294
+ components: { DXSidebar, DXSidebarMenu },
295
+ setup() {
296
+ return { args, menuSections };
297
+ },
298
+ template: `
299
+ <div class="flex">
300
+ <DXSidebar v-bind="args">
301
+ <template #header>
302
+ <h2 class="text-lg font-semibold text-slate-900">Меню</h2>
303
+ </template>
304
+ <template #content>
305
+ <DXSidebarMenu :sections="menuSections" />
306
+ </template>
307
+ </DXSidebar>
308
+ <div class="flex-1 p-8 bg-slate-50">
309
+ <h1 class="text-2xl font-bold mb-4">Контент</h1>
310
+ <p class="text-slate-600">Этот контент сдвигается вправо при открытии сайдбара.</p>
311
+ </div>
312
+ </div>
313
+ `,
314
+ }),
315
+ };
316
+
@@ -0,0 +1,212 @@
1
+ <template>
2
+ <div
3
+ :class="sidebarClasses"
4
+ :style="sidebarStyles"
5
+ data-component="DXSidebar"
6
+ :data-mode="mode"
7
+ :data-open="open"
8
+ :data-collapsed="collapsed"
9
+ >
10
+ <!-- Header -->
11
+ <div v-if="$slots.header" :class="headerClasses">
12
+ <slot name="header" />
13
+ </div>
14
+
15
+ <!-- Content -->
16
+ <div v-if="$slots.content" :class="contentClasses">
17
+ <slot name="content" />
18
+ </div>
19
+
20
+ <!-- Footer -->
21
+ <div v-if="$slots.footer" :class="footerClasses">
22
+ <slot name="footer" />
23
+ </div>
24
+
25
+ <!-- Backdrop для overlay режима -->
26
+ <DXBackdrop
27
+ v-if="showBackdrop"
28
+ :show="showBackdrop"
29
+ :blur="backdropBlur"
30
+ :dismissible="true"
31
+ @close="closeSidebar"
32
+ />
33
+ </div>
34
+ </template>
35
+
36
+ <script setup>
37
+ import { computed, watch } from "vue";
38
+ import { useClassComposition } from "@/composables/useClassComposition";
39
+ import DXBackdrop from "../../atoms/DXBackdrop/DXBackdrop.vue";
40
+
41
+ const props = defineProps({
42
+ /**
43
+ * Открыт ли сайдбар
44
+ * @default true
45
+ */
46
+ open: { type: Boolean, default: true },
47
+ /**
48
+ * Режим отображения: overlay | push | static
49
+ * @default 'static'
50
+ */
51
+ mode: {
52
+ type: String,
53
+ default: "static",
54
+ validator: (v) => ["overlay", "push", "static"].includes(v),
55
+ },
56
+ /**
57
+ * Ширина сайдбара в пикселях
58
+ * @default 256
59
+ */
60
+ width: { type: Number, default: 256 },
61
+ /**
62
+ * Ширина свернутого сайдбара в пикселях
63
+ * @default 64
64
+ */
65
+ collapsedWidth: { type: Number, default: 64 },
66
+ /**
67
+ * Свернут ли сайдбар
68
+ * @default false
69
+ */
70
+ collapsed: { type: Boolean, default: false },
71
+ /**
72
+ * Показывать сайдбар на мобильных
73
+ * @default false
74
+ */
75
+ showOnMobile: { type: Boolean, default: false },
76
+ /**
77
+ * Размытие backdrop для overlay режима: none | sm | md | lg | xl
78
+ * @default 'sm'
79
+ */
80
+ backdropBlur: {
81
+ type: String,
82
+ default: "sm",
83
+ validator: (v) => ["none", "sm", "md", "lg", "xl"].includes(v),
84
+ },
85
+ });
86
+
87
+ const emit = defineEmits(["update:open", "toggle", "collapse"]);
88
+
89
+ /**
90
+ * Показывать ли backdrop
91
+ *
92
+ * @description
93
+ * Backdrop показывается только в overlay режиме и когда сайдбар открыт.
94
+ *
95
+ * @returns {boolean} true если нужно показать backdrop
96
+ */
97
+ const showBackdrop = computed(() => {
98
+ return props.mode === "overlay" && props.open;
99
+ });
100
+
101
+ /**
102
+ * Классы для сайдбара
103
+ *
104
+ * @description
105
+ * Вычисляет классы для сайдбара в зависимости от режима и состояния.
106
+ *
107
+ * @returns {Array} Массив классов
108
+ */
109
+ const sidebarClasses = computed(() =>
110
+ useClassComposition(
111
+ "flex flex-col bg-white border-r border-slate-200 transition-all duration-300 z-20",
112
+ {
113
+ // Overlay режим: фиксированная позиция
114
+ "fixed inset-y-0 left-0": props.mode === "overlay",
115
+ // Push режим: обычный поток, но с transition
116
+ "relative": props.mode === "push",
117
+ // Static режим: обычный поток
118
+ "relative": props.mode === "static",
119
+ // Скрытие на мобильных (если не showOnMobile)
120
+ "hidden md:flex": !props.showOnMobile && props.mode !== "overlay",
121
+ // Показ на мобильных только в overlay режиме
122
+ "md:flex": props.showOnMobile || props.mode === "overlay",
123
+ // Скрытие если не открыт (для overlay)
124
+ "hidden": props.mode === "overlay" && !props.open,
125
+ }
126
+ )
127
+ );
128
+
129
+ /**
130
+ * Стили для сайдбара
131
+ *
132
+ * @description
133
+ * Вычисляет ширину сайдбара в зависимости от состояния (свернут/развернут).
134
+ *
135
+ * @returns {Object} Объект со стилями
136
+ */
137
+ const sidebarStyles = computed(() => {
138
+ const width = props.collapsed ? props.collapsedWidth : props.width;
139
+
140
+ return {
141
+ width: `${width}px`,
142
+ minWidth: `${width}px`,
143
+ maxWidth: `${width}px`,
144
+ };
145
+ });
146
+
147
+ /**
148
+ * Классы для header
149
+ *
150
+ * @description
151
+ * Вычисляет классы для header секции.
152
+ *
153
+ * @returns {Array} Массив классов
154
+ */
155
+ const headerClasses = computed(() =>
156
+ useClassComposition("flex-shrink-0 p-4 border-b border-slate-200")
157
+ );
158
+
159
+ /**
160
+ * Классы для content
161
+ *
162
+ * @description
163
+ * Вычисляет классы для content секции.
164
+ *
165
+ * @returns {Array} Массив классов
166
+ */
167
+ const contentClasses = computed(() =>
168
+ useClassComposition("flex-1 overflow-y-auto")
169
+ );
170
+
171
+ /**
172
+ * Классы для footer
173
+ *
174
+ * @description
175
+ * Вычисляет классы для footer секции.
176
+ *
177
+ * @returns {Array} Массив классов
178
+ */
179
+ const footerClasses = computed(() =>
180
+ useClassComposition("flex-shrink-0 p-4 border-t border-slate-200")
181
+ );
182
+
183
+ /**
184
+ * Закрытие сайдбара
185
+ *
186
+ * @description
187
+ * Закрывает сайдбар (для overlay режима).
188
+ */
189
+ function closeSidebar() {
190
+ if (props.mode === "overlay") {
191
+ emit("update:open", false);
192
+ emit("toggle", false);
193
+ }
194
+ }
195
+
196
+ // Отслеживание изменений open
197
+ watch(
198
+ () => props.open,
199
+ (isOpen) => {
200
+ emit("toggle", isOpen);
201
+ }
202
+ );
203
+
204
+ // Отслеживание изменений collapsed
205
+ watch(
206
+ () => props.collapsed,
207
+ (isCollapsed) => {
208
+ emit("collapse", isCollapsed);
209
+ }
210
+ );
211
+ </script>
212
+
@@ -0,0 +1,2 @@
1
+ export { default } from './DXSidebar.vue';
2
+