dxd-style-code 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/dist/dxd-style-code.js +11974 -3725
  2. package/dist/dxd-style-code.umd.cjs +10 -1
  3. package/dist/style.css +1 -1
  4. package/package.json +13 -6
  5. package/src/components/atoms/DXAvatar/DXAvatar.stories.js +319 -0
  6. package/src/components/atoms/DXAvatar/DXAvatar.vue +167 -0
  7. package/src/components/atoms/DXAvatar/index.js +2 -0
  8. package/src/components/atoms/DXBackdrop/DXBackdrop.stories.js +341 -0
  9. package/src/components/atoms/DXBackdrop/DXBackdrop.vue +102 -0
  10. package/src/components/atoms/DXBackdrop/index.js +2 -0
  11. package/src/components/atoms/DXBadge/DXBadge.stories.js +239 -0
  12. package/src/components/atoms/DXBadge/DXBadge.vue +45 -0
  13. package/src/components/atoms/DXBadge/index.js +2 -0
  14. package/src/components/atoms/DXButton/DXButton.stories.js +178 -0
  15. package/src/components/atoms/DXButton/DXButton.vue +84 -0
  16. package/src/components/atoms/DXButton/index.js +2 -0
  17. package/src/components/atoms/DXCard/DXCard.stories.js +133 -0
  18. package/src/components/atoms/DXCard/DXCard.vue +46 -0
  19. package/src/components/atoms/DXCard/index.js +2 -0
  20. package/src/components/atoms/DXCheckbox/DXCheckbox.stories.js +294 -0
  21. package/src/components/atoms/DXCheckbox/DXCheckbox.vue +191 -0
  22. package/src/components/atoms/DXCheckbox/index.js +2 -0
  23. package/src/components/atoms/DXDivider/DXDivider.stories.js +135 -0
  24. package/src/components/atoms/DXDivider/DXDivider.vue +74 -0
  25. package/src/components/atoms/DXDivider/index.js +2 -0
  26. package/src/components/atoms/DXDropdownItem/DXDropdownItem.vue +116 -0
  27. package/src/components/atoms/DXDropdownItem/index.js +2 -0
  28. package/src/components/atoms/DXFormLabel/DXFormLabel.stories.js +194 -0
  29. package/src/components/atoms/DXFormLabel/DXFormLabel.vue +94 -0
  30. package/src/components/atoms/DXFormLabel/index.js +2 -0
  31. package/src/components/atoms/DXIcon/DXIcon.stories.js +156 -0
  32. package/src/components/atoms/DXIcon/DXIcon.vue +102 -0
  33. package/src/components/atoms/DXIcon/index.js +3 -0
  34. package/src/components/atoms/DXIconWrapper/DXIconWrapper.stories.js +237 -0
  35. package/src/components/atoms/DXIconWrapper/DXIconWrapper.vue +79 -0
  36. package/src/components/atoms/DXIconWrapper/index.js +2 -0
  37. package/src/components/atoms/DXInputAddon/DXInputAddon.stories.js +230 -0
  38. package/src/components/atoms/DXInputAddon/DXInputAddon.vue +64 -0
  39. package/src/components/atoms/DXInputAddon/index.js +2 -0
  40. package/src/components/atoms/DXLink/DXLink.stories.js +475 -0
  41. package/src/components/atoms/DXLink/DXLink.vue +229 -0
  42. package/src/components/atoms/DXLink/index.js +2 -0
  43. package/src/components/atoms/DXLoader/DXLoader.stories.js +280 -0
  44. package/src/components/atoms/DXLoader/DXLoader.vue +78 -0
  45. package/src/components/atoms/DXLoader/index.js +2 -0
  46. package/src/components/atoms/DXProgress/DXProgress.stories.js +312 -0
  47. package/src/components/atoms/DXProgress/DXProgress.vue +85 -0
  48. package/src/components/atoms/DXProgress/index.js +2 -0
  49. package/src/components/atoms/DXQuote/DXQuote.stories.js +255 -0
  50. package/src/components/atoms/DXQuote/DXQuote.vue +97 -0
  51. package/src/components/atoms/DXQuote/index.js +2 -0
  52. package/src/components/atoms/DXRadio/DXRadio.stories.js +277 -0
  53. package/src/components/atoms/DXRadio/DXRadio.vue +144 -0
  54. package/src/components/atoms/DXRadio/index.js +2 -0
  55. package/src/components/atoms/DXSkeleton/DXSkeleton.stories.js +50 -0
  56. package/src/components/atoms/DXSkeleton/DXSkeleton.vue +19 -0
  57. package/src/components/atoms/DXSkeleton/index.js +2 -0
  58. package/src/components/atoms/DXSlider/DXSlider.stories.js +522 -0
  59. package/src/components/atoms/DXSlider/DXSlider.vue +338 -0
  60. package/src/components/atoms/DXSlider/index.js +2 -0
  61. package/src/components/atoms/DXTags/DXTags.stories.js +206 -0
  62. package/src/components/atoms/DXTags/DXTags.vue +111 -0
  63. package/src/components/atoms/DXTags/index.js +2 -0
  64. package/src/components/atoms/DXToast/DXToast.stories.js +40 -0
  65. package/src/components/atoms/DXToast/DXToast.vue +32 -0
  66. package/src/components/atoms/DXToast/index.js +2 -0
  67. package/src/components/atoms/DXToggle/DXToggle.stories.js +143 -0
  68. package/src/components/atoms/DXToggle/DXToggle.vue +142 -0
  69. package/src/components/atoms/DXToggle/index.js +2 -0
  70. package/src/components/atoms/DXToggleButton/DXToggleButton.stories.js +513 -0
  71. package/src/components/atoms/DXToggleButton/DXToggleButton.vue +140 -0
  72. package/src/components/atoms/DXToggleButton/index.js +2 -0
  73. package/src/components/atoms/DXTooltip/DXTooltip.stories.js +243 -0
  74. package/src/components/atoms/DXTooltip/DXTooltip.vue +151 -0
  75. package/src/components/atoms/DXTooltip/index.js +2 -0
  76. package/src/components/atoms/index.js +24 -0
  77. package/src/components/layout/DXBox/DXBox.stories.js +238 -0
  78. package/src/components/layout/DXBox/DXBox.vue +198 -0
  79. package/src/components/layout/DXBox/index.js +2 -0
  80. package/src/components/layout/DXContainer/DXContainer.stories.js +147 -0
  81. package/src/components/layout/DXContainer/DXContainer.vue +83 -0
  82. package/src/components/layout/DXContainer/index.js +2 -0
  83. package/src/components/layout/DXFlex/DXFlex.stories.js +210 -0
  84. package/src/components/layout/DXFlex/DXFlex.vue +149 -0
  85. package/src/components/layout/DXFlex/index.js +2 -0
  86. package/src/components/layout/DXGrid/DXGrid.stories.js +238 -0
  87. package/src/components/layout/DXGrid/DXGrid.vue +167 -0
  88. package/src/components/layout/DXGrid/index.js +2 -0
  89. package/src/components/layout/DXSpacer/DXSpacer.stories.js +187 -0
  90. package/src/components/layout/DXSpacer/DXSpacer.vue +102 -0
  91. package/src/components/layout/DXSpacer/index.js +2 -0
  92. package/src/components/layout/DXStack/DXStack.stories.js +199 -0
  93. package/src/components/layout/DXStack/DXStack.vue +140 -0
  94. package/src/components/layout/DXStack/index.js +2 -0
  95. package/src/components/layout/index.js +8 -0
  96. package/src/components/molecules/DXActionButtons/DXActionButtons.stories.js +288 -0
  97. package/src/components/molecules/DXActionButtons/DXActionButtons.vue +106 -0
  98. package/src/components/molecules/DXActionButtons/index.js +2 -0
  99. package/src/components/molecules/DXAlert/DXAlert.stories.js +70 -0
  100. package/src/components/molecules/DXAlert/DXAlert.vue +116 -0
  101. package/src/components/molecules/DXAlert/index.js +2 -0
  102. package/src/components/molecules/DXBaseTable/DXBaseTable.stories.js +433 -0
  103. package/src/components/molecules/DXBaseTable/DXBaseTable.vue +459 -0
  104. package/src/components/molecules/DXBaseTable/index.js +4 -0
  105. package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.stories.js +227 -0
  106. package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.vue +96 -0
  107. package/src/components/molecules/DXBreadcrumb/index.js +2 -0
  108. package/src/components/molecules/DXButtonGroup/DXButtonGroup.stories.js +26 -0
  109. package/src/components/molecules/DXButtonGroup/DXButtonGroup.vue +78 -0
  110. package/src/components/molecules/DXButtonGroup/index.js +2 -0
  111. package/src/components/molecules/DXCloseButton/DXCloseButton.stories.js +53 -0
  112. package/src/components/molecules/DXCloseButton/DXCloseButton.vue +62 -0
  113. package/src/components/molecules/DXCloseButton/index.js +3 -0
  114. package/src/components/molecules/DXComboBox/DXComboBox.stories.js +62 -0
  115. package/src/components/molecules/DXComboBox/DXComboBox.vue +167 -0
  116. package/src/components/molecules/DXComboBox/index.js +2 -0
  117. package/src/components/molecules/DXCopyField/DXCopyField.stories.js +231 -0
  118. package/src/components/molecules/DXCopyField/DXCopyField.vue +75 -0
  119. package/src/components/molecules/DXCopyField/index.js +2 -0
  120. package/src/components/molecules/DXDataFilter/DXDataFilter.stories.js +275 -0
  121. package/src/components/molecules/DXDataFilter/DXDataFilter.vue +385 -0
  122. package/src/components/molecules/DXDataFilter/index.js +2 -0
  123. package/src/components/molecules/DXDatePicker/DXDatePicker.stories.js +42 -0
  124. package/src/components/molecules/DXDatePicker/DXDatePicker.vue +121 -0
  125. package/src/components/molecules/DXDatePicker/index.js +2 -0
  126. package/src/components/molecules/DXDropdownDivider/DXDropdownDivider.vue +30 -0
  127. package/src/components/molecules/DXDropdownDivider/index.js +2 -0
  128. package/src/components/molecules/DXFileUpload/DXFileUpload.stories.js +53 -0
  129. package/src/components/molecules/DXFileUpload/DXFileUpload.vue +199 -0
  130. package/src/components/molecules/DXFileUpload/index.js +2 -0
  131. package/src/components/molecules/DXFilterGroup/DXFilterGroup.stories.js +43 -0
  132. package/src/components/molecules/DXFilterGroup/DXFilterGroup.vue +43 -0
  133. package/src/components/molecules/DXFilterGroup/index.js +2 -0
  134. package/src/components/molecules/DXFormControl/DXFormControl.stories.js +69 -0
  135. package/src/components/molecules/DXFormControl/DXFormControl.vue +72 -0
  136. package/src/components/molecules/DXFormControl/index.js +2 -0
  137. package/src/components/molecules/DXInput/DXInput.stories.js +291 -0
  138. package/src/components/molecules/DXInput/DXInput.vue +156 -0
  139. package/src/components/molecules/DXInput/index.js +3 -0
  140. package/src/components/molecules/DXInputGroup/DXInputGroup.stories.js +228 -0
  141. package/src/components/molecules/DXInputGroup/DXInputGroup.vue +64 -0
  142. package/src/components/molecules/DXInputGroup/index.js +2 -0
  143. package/src/components/molecules/DXInputMask/DXInputMask.stories.js +53 -0
  144. package/src/components/molecules/DXInputMask/DXInputMask.vue +89 -0
  145. package/src/components/molecules/DXInputMask/index.js +2 -0
  146. package/src/components/molecules/DXMenu/DXMenu.stories.js +379 -0
  147. package/src/components/molecules/DXMenu/DXMenu.vue +331 -0
  148. package/src/components/molecules/DXMenu/README.md +479 -0
  149. package/src/components/molecules/DXMenu/index.js +2 -0
  150. package/src/components/molecules/DXPagination/DXPagination.stories.js +62 -0
  151. package/src/components/molecules/DXPagination/DXPagination.vue +123 -0
  152. package/src/components/molecules/DXPagination/index.js +2 -0
  153. package/src/components/molecules/DXPasswordInput/DXPasswordInput.stories.js +42 -0
  154. package/src/components/molecules/DXPasswordInput/DXPasswordInput.vue +74 -0
  155. package/src/components/molecules/DXPasswordInput/index.js +2 -0
  156. package/src/components/molecules/DXRadioCard/DXRadioCard.stories.js +60 -0
  157. package/src/components/molecules/DXRadioCard/DXRadioCard.vue +71 -0
  158. package/src/components/molecules/DXRadioCard/index.js +2 -0
  159. package/src/components/molecules/DXRadioGroup/DXRadioGroup.stories.js +297 -0
  160. package/src/components/molecules/DXRadioGroup/DXRadioGroup.vue +73 -0
  161. package/src/components/molecules/DXRadioGroup/index.js +2 -0
  162. package/src/components/molecules/DXRating/DXRating.stories.js +322 -0
  163. package/src/components/molecules/DXRating/DXRating.vue +402 -0
  164. package/src/components/molecules/DXRating/index.js +2 -0
  165. package/src/components/molecules/DXSearchBar/DXSearchBar.stories.js +357 -0
  166. package/src/components/molecules/DXSearchBar/DXSearchBar.vue +525 -0
  167. package/src/components/molecules/DXSearchBar/index.js +2 -0
  168. package/src/components/molecules/DXSearchSelect/DXSearchSelect.stories.js +50 -0
  169. package/src/components/molecules/DXSearchSelect/DXSearchSelect.vue +207 -0
  170. package/src/components/molecules/DXSearchSelect/index.js +2 -0
  171. package/src/components/molecules/DXSegmentedControl/DXSegmentedControl.stories.js +326 -0
  172. package/src/components/molecules/DXSegmentedControl/DXSegmentedControl.vue +116 -0
  173. package/src/components/molecules/DXSegmentedControl/index.js +2 -0
  174. package/src/components/molecules/DXSelect/DXSelect.stories.js +259 -0
  175. package/src/components/molecules/DXSelect/DXSelect.vue +149 -0
  176. package/src/components/molecules/DXSelect/index.js +3 -0
  177. package/src/components/molecules/DXStatCard/DXStatCard.stories.js +335 -0
  178. package/src/components/molecules/DXStatCard/DXStatCard.vue +309 -0
  179. package/src/components/molecules/DXStatCard/index.js +2 -0
  180. package/src/components/molecules/DXTableFiltersPanel/DXTableFiltersPanel.vue +72 -0
  181. package/src/components/molecules/DXTableFiltersPanel/index.js +7 -0
  182. package/src/components/molecules/DXTablePagination/DXTablePagination.stories.js +236 -0
  183. package/src/components/molecules/DXTablePagination/DXTablePagination.vue +93 -0
  184. package/src/components/molecules/DXTablePagination/index.js +2 -0
  185. package/src/components/molecules/DXTableToolbar/DXTableToolbar.stories.js +271 -0
  186. package/src/components/molecules/DXTableToolbar/DXTableToolbar.vue +102 -0
  187. package/src/components/molecules/DXTableToolbar/index.js +2 -0
  188. package/src/components/molecules/DXTextarea/DXTextarea.stories.js +239 -0
  189. package/src/components/molecules/DXTextarea/DXTextarea.vue +158 -0
  190. package/src/components/molecules/DXTextarea/index.js +3 -0
  191. package/src/components/molecules/DXTimePicker/DXTimePicker.stories.js +282 -0
  192. package/src/components/molecules/DXTimePicker/DXTimePicker.vue +640 -0
  193. package/src/components/molecules/DXTimePicker/index.js +2 -0
  194. package/src/components/molecules/DXValidationIcon/DXValidationIcon.stories.js +60 -0
  195. package/src/components/molecules/DXValidationIcon/DXValidationIcon.vue +53 -0
  196. package/src/components/molecules/DXValidationIcon/index.js +3 -0
  197. package/src/components/molecules/index.js +34 -0
  198. package/src/components/organisms/DXAccordion/DXAccordion.stories.js +33 -0
  199. package/src/components/organisms/DXAccordion/DXAccordion.vue +104 -0
  200. package/src/components/organisms/DXAccordion/index.js +2 -0
  201. package/src/components/organisms/DXAppLayout/DXAppLayout.stories.js +689 -0
  202. package/src/components/organisms/DXAppLayout/DXAppLayout.vue +460 -0
  203. package/src/components/organisms/DXAppLayout/index.js +2 -0
  204. package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.stories.js +232 -0
  205. package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.vue +458 -0
  206. package/src/components/organisms/DXAuthenticationForm/index.js +2 -0
  207. package/src/components/organisms/DXChartContainer/DXChartContainer.stories.js +286 -0
  208. package/src/components/organisms/DXChartContainer/DXChartContainer.vue +273 -0
  209. package/src/components/organisms/DXChartContainer/index.js +2 -0
  210. package/src/components/organisms/DXChatInterface/DXChatInterface.stories.js +164 -0
  211. package/src/components/organisms/DXChatInterface/DXChatInterface.vue +583 -0
  212. package/src/components/organisms/DXChatInterface/index.js +2 -0
  213. package/src/components/organisms/DXCommentSection/DXCommentSection.stories.js +173 -0
  214. package/src/components/organisms/DXCommentSection/DXCommentSection.vue +487 -0
  215. package/src/components/organisms/DXCommentSection/index.js +2 -0
  216. package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.stories.js +331 -0
  217. package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.vue +309 -0
  218. package/src/components/organisms/DXDashboardGrid/index.js +2 -0
  219. package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.stories.js +271 -0
  220. package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.vue +260 -0
  221. package/src/components/organisms/DXDashboardWidget/index.js +2 -0
  222. package/src/components/organisms/DXDataTable/DXDataTable.stories.js +247 -0
  223. package/src/components/organisms/DXDataTable/DXDataTable.vue +496 -0
  224. package/src/components/organisms/DXDataTable/index.js +2 -0
  225. package/src/components/organisms/DXDropdown/DXDropdown.stories.js +795 -0
  226. package/src/components/organisms/DXDropdown/DXDropdown.vue +238 -0
  227. package/src/components/organisms/DXDropdown/index.js +2 -0
  228. package/src/components/organisms/DXEmptyState/DXEmptyState.stories.js +37 -0
  229. package/src/components/organisms/DXEmptyState/DXEmptyState.vue +41 -0
  230. package/src/components/organisms/DXEmptyState/index.js +2 -0
  231. package/src/components/organisms/DXFormWizard/DXFormWizard.stories.js +378 -0
  232. package/src/components/organisms/DXFormWizard/DXFormWizard.vue +578 -0
  233. package/src/components/organisms/DXFormWizard/index.js +2 -0
  234. package/src/components/organisms/DXHeaderBar/DXHeaderBar.stories.js +448 -0
  235. package/src/components/organisms/DXHeaderBar/DXHeaderBar.vue +190 -0
  236. package/src/components/organisms/DXHeaderBar/index.js +2 -0
  237. package/src/components/organisms/DXMediaGallery/DXMediaGallery.stories.js +347 -0
  238. package/src/components/organisms/DXMediaGallery/DXMediaGallery.vue +422 -0
  239. package/src/components/organisms/DXMediaGallery/index.js +2 -0
  240. package/src/components/organisms/DXModal/DXModal.stories.js +138 -0
  241. package/src/components/organisms/DXModal/DXModal.vue +213 -0
  242. package/src/components/organisms/DXModal/index.js +2 -0
  243. package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.stories.js +183 -0
  244. package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.vue +566 -0
  245. package/src/components/organisms/DXNotificationCenter/index.js +2 -0
  246. package/src/components/organisms/DXReportGenerator/DXReportGenerator.stories.js +199 -0
  247. package/src/components/organisms/DXReportGenerator/DXReportGenerator.vue +344 -0
  248. package/src/components/organisms/DXReportGenerator/index.js +2 -0
  249. package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.stories.js +245 -0
  250. package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.vue +454 -0
  251. package/src/components/organisms/DXSettingsPanel/index.js +2 -0
  252. package/src/components/organisms/DXSidebar/DXSidebar.stories.js +316 -0
  253. package/src/components/organisms/DXSidebar/DXSidebar.vue +212 -0
  254. package/src/components/organisms/DXSidebar/index.js +2 -0
  255. package/src/components/organisms/DXSidebarMenu/DATA_STRUCTURE.md +299 -0
  256. package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.stories.js +729 -0
  257. package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.vue +257 -0
  258. package/src/components/organisms/DXSidebarMenu/DXSidebarMenuItem.vue +249 -0
  259. package/src/components/organisms/DXSidebarMenu/README.md +333 -0
  260. package/src/components/organisms/DXSidebarMenu/index.js +3 -0
  261. package/src/components/organisms/DXTable/DXTable.stories.js +550 -0
  262. package/src/components/organisms/DXTable/DXTable.vue +324 -0
  263. package/src/components/organisms/DXTable/index.js +2 -0
  264. package/src/components/organisms/DXTabs/DXTabs.stories.js +407 -0
  265. package/src/components/organisms/DXTabs/DXTabs.vue +301 -0
  266. package/src/components/organisms/DXTabs/index.js +2 -0
  267. package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.stories.js +194 -0
  268. package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.vue +403 -0
  269. package/src/components/organisms/DXUserProfileCard/index.js +2 -0
  270. package/src/components/organisms/DXWizard/DXWizard.stories.js +212 -0
  271. package/src/components/organisms/DXWizard/DXWizard.vue +615 -0
  272. package/src/components/organisms/DXWizard/index.js +2 -0
  273. package/src/components/organisms/index.js +25 -0
  274. package/src/components/typography/DXBlockquote/DXBlockquote.stories.js +33 -0
  275. package/src/components/typography/DXBlockquote/DXBlockquote.vue +44 -0
  276. package/src/components/typography/DXBlockquote/index.js +2 -0
  277. package/src/components/typography/DXCode/DXCode.stories.js +29 -0
  278. package/src/components/typography/DXCode/DXCode.vue +46 -0
  279. package/src/components/typography/DXCode/index.js +2 -0
  280. package/src/components/typography/DXHeading/DXHeading.stories.js +54 -0
  281. package/src/components/typography/DXHeading/DXHeading.vue +68 -0
  282. package/src/components/typography/DXHeading/index.js +2 -0
  283. package/src/components/typography/DXLabel/DXLabel.stories.js +40 -0
  284. package/src/components/typography/DXLabel/DXLabel.vue +49 -0
  285. package/src/components/typography/DXLabel/index.js +2 -0
  286. package/src/components/typography/DXList/DXList.stories.js +50 -0
  287. package/src/components/typography/DXList/DXList.vue +55 -0
  288. package/src/components/typography/DXList/index.js +2 -0
  289. package/src/components/typography/DXText/DXText.stories.js +47 -0
  290. package/src/components/typography/DXText/DXText.vue +67 -0
  291. package/src/components/typography/DXText/index.js +2 -0
  292. package/src/components/typography/index.js +8 -0
  293. package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.stories.js +335 -0
  294. package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.vue +207 -0
  295. package/src/components/utilities/DXAnimatePresence/index.js +2 -0
  296. package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.stories.js +321 -0
  297. package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.vue +158 -0
  298. package/src/components/utilities/DXBreakpointProvider/index.js +2 -0
  299. package/src/components/utilities/DXObserver/DXObserver.stories.js +324 -0
  300. package/src/components/utilities/DXObserver/DXObserver.vue +182 -0
  301. package/src/components/utilities/DXObserver/index.js +2 -0
  302. package/src/components/utilities/DXPortal/DXPortal.stories.js +267 -0
  303. package/src/components/utilities/DXPortal/DXPortal.vue +69 -0
  304. package/src/components/utilities/DXPortal/index.js +2 -0
  305. package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.stories.js +339 -0
  306. package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.vue +155 -0
  307. package/src/components/utilities/DXStaggeredAnimation/index.js +2 -0
  308. package/src/components/utilities/DXThemeProvider/DXThemeProvider.stories.js +327 -0
  309. package/src/components/utilities/DXThemeProvider/DXThemeProvider.vue +227 -0
  310. package/src/components/utilities/DXThemeProvider/index.js +2 -0
  311. package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.stories.js +368 -0
  312. package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.vue +212 -0
  313. package/src/components/utilities/DXTransitionGroup/index.js +2 -0
  314. package/src/components/utilities/index.js +9 -0
  315. package/src/composables/useAnimation.js +264 -0
  316. package/src/composables/useClassComposition.js +35 -0
  317. package/src/composables/useDataAttributes.js +83 -0
  318. package/src/composables/useMenu.js +88 -0
  319. package/src/composables/useSize.js +135 -0
  320. package/src/composables/useSpacing.js +37 -0
  321. package/src/composables/useTableColumns.js +88 -0
  322. package/src/composables/useTableData.js +82 -0
  323. package/src/composables/useTableFilter.js +158 -0
  324. package/src/composables/useTablePagination.js +89 -0
  325. package/src/composables/useTableSelection.js +77 -0
  326. package/src/composables/useTableSort.js +75 -0
  327. package/src/composables/useTabsScroll.js +88 -0
  328. package/src/composables/useVariant.js +700 -0
  329. package/src/index.js +86 -0
  330. package/src/styles/animations.css +171 -0
  331. package/src/styles/index.css +99 -0
  332. package/src/styles/tokens.js +123 -0
  333. package/src/utils/propTypes.js +77 -0
  334. package/src/utils/toggleButtonPresets.js +115 -0
@@ -0,0 +1,422 @@
1
+ <template>
2
+ <div
3
+ :class="galleryClasses"
4
+ data-component="DXMediaGallery"
5
+ :data-layout="layout"
6
+ :data-columns="columns"
7
+ :data-lightbox="lightbox"
8
+ >
9
+ <!-- Grid Layout -->
10
+ <DXGrid
11
+ v-if="layout === 'grid'"
12
+ :cols="columns"
13
+ :cols-sm="columnsSm"
14
+ :cols-md="columnsMd"
15
+ :cols-lg="columnsLg"
16
+ :gap="gap"
17
+ >
18
+ <div
19
+ v-for="(item, index) in items"
20
+ :key="item.id || index"
21
+ :class="itemClasses"
22
+ @click="handleItemClick(item, index)"
23
+ >
24
+ <slot name="item" :item="item" :index="index">
25
+ <DXObserver
26
+ v-if="lazy"
27
+ :threshold="0.1"
28
+ :once="true"
29
+ @intersect="handleIntersect(index)"
30
+ >
31
+ <div v-if="isItemVisible(index)" class="relative w-full h-full">
32
+ <img
33
+ v-if="item.type === 'image' || !item.type"
34
+ :src="item.thumbnail || item.src"
35
+ :alt="item.title || item.alt || 'Image'"
36
+ :class="imageClasses"
37
+ @error="handleImageError(index)"
38
+ />
39
+ <video
40
+ v-else-if="item.type === 'video'"
41
+ :src="item.src"
42
+ :poster="item.thumbnail"
43
+ :class="imageClasses"
44
+ controls
45
+ />
46
+ <div v-if="item.title || showOverlay" :class="overlayClasses">
47
+ <div v-if="item.title" class="text-white font-medium">
48
+ {{ item.title }}
49
+ </div>
50
+ </div>
51
+ </div>
52
+ <div v-else class="w-full h-full bg-slate-200 animate-pulse flex items-center justify-center">
53
+ <span class="text-slate-400 text-sm">Загрузка...</span>
54
+ </div>
55
+ </DXObserver>
56
+ <div v-else class="relative w-full h-full">
57
+ <img
58
+ v-if="item.type === 'image' || !item.type"
59
+ :src="item.thumbnail || item.src"
60
+ :alt="item.title || item.alt || 'Image'"
61
+ :class="imageClasses"
62
+ @error="handleImageError(index)"
63
+ />
64
+ <video
65
+ v-else-if="item.type === 'video'"
66
+ :src="item.src"
67
+ :poster="item.thumbnail"
68
+ :class="imageClasses"
69
+ controls
70
+ />
71
+ <div v-if="item.title || showOverlay" :class="overlayClasses">
72
+ <div v-if="item.title" class="text-white font-medium">
73
+ {{ item.title }}
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </slot>
78
+ </div>
79
+ </DXGrid>
80
+
81
+ <!-- List Layout -->
82
+ <div v-else-if="layout === 'list'" :class="listClasses">
83
+ <div
84
+ v-for="(item, index) in items"
85
+ :key="item.id || index"
86
+ :class="listItemClasses"
87
+ @click="handleItemClick(item, index)"
88
+ >
89
+ <slot name="item" :item="item" :index="index">
90
+ <img
91
+ v-if="item.type === 'image' || !item.type"
92
+ :src="item.thumbnail || item.src"
93
+ :alt="item.title || item.alt || 'Image'"
94
+ class="w-24 h-24 object-cover rounded-lg flex-shrink-0"
95
+ />
96
+ <div class="flex-1 ml-4">
97
+ <div v-if="item.title" class="font-medium text-slate-900">
98
+ {{ item.title }}
99
+ </div>
100
+ <div v-if="item.description" class="text-sm text-slate-500 mt-1">
101
+ {{ item.description }}
102
+ </div>
103
+ </div>
104
+ </slot>
105
+ </div>
106
+ </div>
107
+
108
+ <!-- Lightbox Modal -->
109
+ <DXModal
110
+ v-if="lightbox && selectedItem"
111
+ :open="showLightbox"
112
+ @close="closeLightbox"
113
+ size="xl"
114
+ >
115
+ <div class="relative">
116
+ <img
117
+ v-if="selectedItem.type === 'image' || !selectedItem.type"
118
+ :src="selectedItem.src"
119
+ :alt="selectedItem.title || selectedItem.alt || 'Image'"
120
+ class="w-full h-auto max-h-[80vh] object-contain"
121
+ />
122
+ <video
123
+ v-else-if="selectedItem.type === 'video'"
124
+ :src="selectedItem.src"
125
+ :poster="selectedItem.thumbnail"
126
+ class="w-full h-auto max-h-[80vh]"
127
+ controls
128
+ autoplay
129
+ />
130
+ <div v-if="selectedItem.title || selectedItem.description" class="mt-4">
131
+ <h3 v-if="selectedItem.title" class="text-lg font-semibold text-slate-900">
132
+ {{ selectedItem.title }}
133
+ </h3>
134
+ <p v-if="selectedItem.description" class="text-sm text-slate-600 mt-1">
135
+ {{ selectedItem.description }}
136
+ </p>
137
+ </div>
138
+ </div>
139
+
140
+ <!-- Навигация в lightbox -->
141
+ <div v-if="items.length > 1" class="absolute inset-y-0 left-0 flex items-center">
142
+ <DXButton
143
+ variant="ghost"
144
+ size="lg"
145
+ :disabled="selectedIndex === 0"
146
+ @click="previousItem"
147
+ >
148
+ <template #icon>
149
+ <DXIcon :icon="ChevronLeftIcon" size="lg" />
150
+ </template>
151
+ </DXButton>
152
+ </div>
153
+ <div v-if="items.length > 1" class="absolute inset-y-0 right-0 flex items-center">
154
+ <DXButton
155
+ variant="ghost"
156
+ size="lg"
157
+ :disabled="selectedIndex === items.length - 1"
158
+ @click="nextItem"
159
+ >
160
+ <template #icon>
161
+ <DXIcon :icon="ChevronRightIcon" size="lg" />
162
+ </template>
163
+ </DXButton>
164
+ </div>
165
+ </DXModal>
166
+ </div>
167
+ </template>
168
+
169
+ <script setup>
170
+ import { ref, computed } from "vue";
171
+ import { useClassComposition } from "@/composables/useClassComposition";
172
+ import { useSpacing } from "@/composables/useSpacing";
173
+ import DXGrid from "../../layout/DXGrid/DXGrid.vue";
174
+ import DXModal from "../DXModal/DXModal.vue";
175
+ import DXObserver from "../../utilities/DXObserver/DXObserver.vue";
176
+ import DXButton from "../../atoms/DXButton/DXButton.vue";
177
+ import DXIcon from "../../atoms/DXIcon/DXIcon.vue";
178
+ import { ChevronLeftIcon, ChevronRightIcon } from "@heroicons/vue/24/outline";
179
+
180
+ const props = defineProps({
181
+ /**
182
+ * Массив элементов галереи
183
+ * Формат: [{ id, src, thumbnail?, title?, description?, type?, alt? }]
184
+ */
185
+ items: {
186
+ type: Array,
187
+ required: true,
188
+ default: () => [],
189
+ },
190
+ /**
191
+ * Количество колонок для grid layout
192
+ * @default 3
193
+ */
194
+ columns: { type: Number, default: 3 },
195
+ /**
196
+ * Количество колонок на sm
197
+ */
198
+ columnsSm: { type: Number, default: null },
199
+ /**
200
+ * Количество колонок на md
201
+ */
202
+ columnsMd: { type: Number, default: null },
203
+ /**
204
+ * Количество колонок на lg
205
+ */
206
+ columnsLg: { type: Number, default: null },
207
+ /**
208
+ * Layout: grid | list
209
+ * @default 'grid'
210
+ */
211
+ layout: {
212
+ type: String,
213
+ default: "grid",
214
+ validator: (v) => ["grid", "list"].includes(v),
215
+ },
216
+ /**
217
+ * Отступ между элементами: none | xs | sm | md | lg | xl
218
+ * @default 'md'
219
+ */
220
+ gap: {
221
+ type: String,
222
+ default: "md",
223
+ validator: (v) => ["none", "xs", "sm", "md", "lg", "xl"].includes(v),
224
+ },
225
+ /**
226
+ * Показывать lightbox при клике
227
+ * @default true
228
+ */
229
+ lightbox: { type: Boolean, default: true },
230
+ /**
231
+ * Ленивая загрузка изображений
232
+ * @default false
233
+ */
234
+ lazy: { type: Boolean, default: false },
235
+ /**
236
+ * Показывать overlay с информацией
237
+ * @default false
238
+ */
239
+ showOverlay: { type: Boolean, default: false },
240
+ });
241
+
242
+ const emit = defineEmits(["item-click", "lightbox-open", "lightbox-close"]);
243
+
244
+ const showLightbox = ref(false);
245
+ const selectedItem = ref(null);
246
+ const selectedIndex = ref(0);
247
+ const visibleItems = ref(new Set());
248
+
249
+ /**
250
+ * Классы для контейнера галереи
251
+ *
252
+ * @description
253
+ * Базовые классы для контейнера галереи.
254
+ *
255
+ * @returns {Array} Массив классов
256
+ */
257
+ const galleryClasses = computed(() => useClassComposition("w-full"));
258
+
259
+ /**
260
+ * Классы для элемента галереи (grid)
261
+ *
262
+ * @description
263
+ * Классы для каждого элемента в grid layout.
264
+ *
265
+ * @returns {Array} Массив классов
266
+ */
267
+ const itemClasses = computed(() =>
268
+ useClassComposition(
269
+ "relative aspect-square overflow-hidden rounded-lg cursor-pointer transition-transform hover:scale-105",
270
+ props.lightbox && "group"
271
+ )
272
+ );
273
+
274
+ /**
275
+ * Классы для списка (list layout)
276
+ *
277
+ * @description
278
+ * Классы для контейнера списка.
279
+ *
280
+ * @returns {Array} Массив классов
281
+ */
282
+ const listClasses = computed(() =>
283
+ useClassComposition("space-y-2", useSpacing(props.gap, "gap"))
284
+ );
285
+
286
+ /**
287
+ * Классы для элемента списка
288
+ *
289
+ * @description
290
+ * Классы для каждого элемента в list layout.
291
+ *
292
+ * @returns {Array} Массив классов
293
+ */
294
+ const listItemClasses = computed(() =>
295
+ useClassComposition(
296
+ "flex items-center p-4 bg-white border border-slate-200 rounded-lg cursor-pointer hover:shadow-md transition-shadow",
297
+ props.lightbox && "group"
298
+ )
299
+ );
300
+
301
+ /**
302
+ * Классы для изображения
303
+ *
304
+ * @description
305
+ * Классы для изображения в элементе галереи.
306
+ *
307
+ * @returns {Array} Массив классов
308
+ */
309
+ const imageClasses = computed(() =>
310
+ useClassComposition("w-full h-full object-cover")
311
+ );
312
+
313
+ /**
314
+ * Классы для overlay
315
+ *
316
+ * @description
317
+ * Классы для overlay с информацией об элементе.
318
+ *
319
+ * @returns {Array} Массив классов
320
+ */
321
+ const overlayClasses = computed(() =>
322
+ useClassComposition(
323
+ "absolute inset-0 bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center p-4"
324
+ )
325
+ );
326
+
327
+ /**
328
+ * Проверяет, видим ли элемент (для lazy loading)
329
+ *
330
+ * @description
331
+ * Проверяет, был ли элемент загружен через lazy loading.
332
+ *
333
+ * @param {number} index - Индекс элемента
334
+ * @returns {boolean} true если элемент видим
335
+ */
336
+ function isItemVisible(index) {
337
+ return visibleItems.value.has(index);
338
+ }
339
+
340
+ /**
341
+ * Обработчик пересечения (для lazy loading)
342
+ *
343
+ * @description
344
+ * Отмечает элемент как видимый при пересечении с viewport.
345
+ *
346
+ * @param {number} index - Индекс элемента
347
+ */
348
+ function handleIntersect(index) {
349
+ visibleItems.value.add(index);
350
+ }
351
+
352
+ /**
353
+ * Обработчик ошибки загрузки изображения
354
+ *
355
+ * @description
356
+ * Обрабатывает ошибки загрузки изображения.
357
+ *
358
+ * @param {number} index - Индекс элемента
359
+ */
360
+ function handleImageError(index) {
361
+ console.warn(`DXMediaGallery: Ошибка загрузки изображения ${index}`);
362
+ }
363
+
364
+ /**
365
+ * Обработчик клика по элементу
366
+ *
367
+ * @description
368
+ * Обрабатывает клик по элементу галереи и открывает lightbox если включен.
369
+ *
370
+ * @param {Object} item - Элемент галереи
371
+ * @param {number} index - Индекс элемента
372
+ */
373
+ function handleItemClick(item, index) {
374
+ emit("item-click", item, index);
375
+
376
+ if (props.lightbox) {
377
+ selectedItem.value = item;
378
+ selectedIndex.value = index;
379
+ showLightbox.value = true;
380
+ emit("lightbox-open", item, index);
381
+ }
382
+ }
383
+
384
+ /**
385
+ * Закрытие lightbox
386
+ *
387
+ * @description
388
+ * Закрывает lightbox и эмитит событие.
389
+ */
390
+ function closeLightbox() {
391
+ showLightbox.value = false;
392
+ selectedItem.value = null;
393
+ emit("lightbox-close");
394
+ }
395
+
396
+ /**
397
+ * Переход к предыдущему элементу
398
+ *
399
+ * @description
400
+ * Переходит к предыдущему элементу в lightbox.
401
+ */
402
+ function previousItem() {
403
+ if (selectedIndex.value > 0) {
404
+ selectedIndex.value--;
405
+ selectedItem.value = props.items[selectedIndex.value];
406
+ }
407
+ }
408
+
409
+ /**
410
+ * Переход к следующему элементу
411
+ *
412
+ * @description
413
+ * Переходит к следующему элементу в lightbox.
414
+ */
415
+ function nextItem() {
416
+ if (selectedIndex.value < props.items.length - 1) {
417
+ selectedIndex.value++;
418
+ selectedItem.value = props.items[selectedIndex.value];
419
+ }
420
+ }
421
+ </script>
422
+
@@ -0,0 +1,2 @@
1
+ export { default } from './DXMediaGallery.vue';
2
+
@@ -0,0 +1,138 @@
1
+ import { ref } from 'vue';
2
+ import DXModal from './DXModal.vue';
3
+ import DXButton from '../../atoms/DXButton/DXButton.vue';
4
+
5
+ export default {
6
+ title: 'Organisms/DXModal',
7
+ component: DXModal,
8
+ tags: ['autodocs'],
9
+ argTypes: {
10
+ variant: {
11
+ control: 'select',
12
+ options: ['modal', 'fullscreen', 'sidebar-right', 'half-right'],
13
+ description: 'Тип модального окна',
14
+ },
15
+ width: {
16
+ control: 'select',
17
+ options: ['sm', 'md', 'lg', 'xl'],
18
+ description: 'Ширина (только для modal)',
19
+ },
20
+ closable: {
21
+ control: 'boolean',
22
+ description: 'Можно ли закрыть',
23
+ },
24
+ showModeSwitcher: {
25
+ control: 'boolean',
26
+ description: 'Показать переключатель режимов',
27
+ },
28
+ },
29
+ };
30
+
31
+ export const Default = {
32
+ render: (args) => ({
33
+ components: { DXModal, DXButton },
34
+ setup() {
35
+ const open = ref(false);
36
+ return { args, open };
37
+ },
38
+ template: `
39
+ <div>
40
+ <DXButton @click="open = true">Открыть модал</DXButton>
41
+ <DXModal v-bind="args" :open="open" @close="open = false">
42
+ <template #title>Заголовок</template>
43
+ <p>Контент модального окна. Здесь может быть любое содержимое.</p>
44
+ <template #actions>
45
+ <DXButton variant="ghost" @click="open = false">Отмена</DXButton>
46
+ <DXButton @click="open = false">Сохранить</DXButton>
47
+ </template>
48
+ </DXModal>
49
+ </div>
50
+ `,
51
+ }),
52
+ };
53
+
54
+ export const Sidebar = {
55
+ args: {
56
+ variant: 'sidebar-right',
57
+ },
58
+ render: (args) => ({
59
+ components: { DXModal, DXButton },
60
+ setup() {
61
+ const open = ref(false);
62
+ return { args, open };
63
+ },
64
+ template: `
65
+ <div>
66
+ <DXButton @click="open = true">Открыть сайдбар</DXButton>
67
+ <DXModal v-bind="args" :open="open" @close="open = false">
68
+ <template #title>Боковая панель</template>
69
+ <div class="space-y-4">
70
+ <p>Этот вариант отлично подходит для форм редактирования.</p>
71
+ <p>Контент может быть любой длины.</p>
72
+ </div>
73
+ <template #actions>
74
+ <DXButton variant="ghost" @click="open = false">Закрыть</DXButton>
75
+ </template>
76
+ </DXModal>
77
+ </div>
78
+ `,
79
+ }),
80
+ };
81
+
82
+ export const Fullscreen = {
83
+ args: {
84
+ variant: 'fullscreen',
85
+ },
86
+ render: (args) => ({
87
+ components: { DXModal, DXButton },
88
+ setup() {
89
+ const open = ref(false);
90
+ return { args, open };
91
+ },
92
+ template: `
93
+ <div>
94
+ <DXButton @click="open = true">Открыть на весь экран</DXButton>
95
+ <DXModal v-bind="args" :open="open" @close="open = false">
96
+ <template #title>Полноэкранный режим</template>
97
+ <p>Этот вариант занимает весь экран.</p>
98
+ <template #actions>
99
+ <DXButton @click="open = false">Закрыть</DXButton>
100
+ </template>
101
+ </DXModal>
102
+ </div>
103
+ `,
104
+ }),
105
+ };
106
+
107
+ export const WithModeSwitcher = {
108
+ args: {
109
+ showModeSwitcher: true,
110
+ },
111
+ render: (args) => ({
112
+ components: { DXModal, DXButton },
113
+ setup() {
114
+ const open = ref(false);
115
+ const variant = ref('modal');
116
+ return { args, open, variant };
117
+ },
118
+ template: `
119
+ <div>
120
+ <DXButton @click="open = true">Открыть с переключателем</DXButton>
121
+ <DXModal
122
+ v-bind="args"
123
+ :open="open"
124
+ :variant="variant"
125
+ @close="open = false"
126
+ @update:variant="variant = $event"
127
+ >
128
+ <template #title>Переключатель режимов</template>
129
+ <p>Используйте кнопки справа от заголовка для смены режима отображения.</p>
130
+ <template #actions>
131
+ <DXButton @click="open = false">Закрыть</DXButton>
132
+ </template>
133
+ </DXModal>
134
+ </div>
135
+ `,
136
+ }),
137
+ };
138
+