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.
- package/dist/dxd-style-code.js +11974 -3725
- package/dist/dxd-style-code.umd.cjs +10 -1
- package/dist/style.css +1 -1
- package/package.json +13 -6
- package/src/components/atoms/DXAvatar/DXAvatar.stories.js +319 -0
- package/src/components/atoms/DXAvatar/DXAvatar.vue +167 -0
- package/src/components/atoms/DXAvatar/index.js +2 -0
- package/src/components/atoms/DXBackdrop/DXBackdrop.stories.js +341 -0
- package/src/components/atoms/DXBackdrop/DXBackdrop.vue +102 -0
- package/src/components/atoms/DXBackdrop/index.js +2 -0
- package/src/components/atoms/DXBadge/DXBadge.stories.js +239 -0
- package/src/components/atoms/DXBadge/DXBadge.vue +45 -0
- package/src/components/atoms/DXBadge/index.js +2 -0
- package/src/components/atoms/DXButton/DXButton.stories.js +178 -0
- package/src/components/atoms/DXButton/DXButton.vue +84 -0
- package/src/components/atoms/DXButton/index.js +2 -0
- package/src/components/atoms/DXCard/DXCard.stories.js +133 -0
- package/src/components/atoms/DXCard/DXCard.vue +46 -0
- package/src/components/atoms/DXCard/index.js +2 -0
- package/src/components/atoms/DXCheckbox/DXCheckbox.stories.js +294 -0
- package/src/components/atoms/DXCheckbox/DXCheckbox.vue +191 -0
- package/src/components/atoms/DXCheckbox/index.js +2 -0
- package/src/components/atoms/DXDivider/DXDivider.stories.js +135 -0
- package/src/components/atoms/DXDivider/DXDivider.vue +74 -0
- package/src/components/atoms/DXDivider/index.js +2 -0
- package/src/components/atoms/DXDropdownItem/DXDropdownItem.vue +116 -0
- package/src/components/atoms/DXDropdownItem/index.js +2 -0
- package/src/components/atoms/DXFormLabel/DXFormLabel.stories.js +194 -0
- package/src/components/atoms/DXFormLabel/DXFormLabel.vue +94 -0
- package/src/components/atoms/DXFormLabel/index.js +2 -0
- package/src/components/atoms/DXIcon/DXIcon.stories.js +156 -0
- package/src/components/atoms/DXIcon/DXIcon.vue +102 -0
- package/src/components/atoms/DXIcon/index.js +3 -0
- package/src/components/atoms/DXIconWrapper/DXIconWrapper.stories.js +237 -0
- package/src/components/atoms/DXIconWrapper/DXIconWrapper.vue +79 -0
- package/src/components/atoms/DXIconWrapper/index.js +2 -0
- package/src/components/atoms/DXInputAddon/DXInputAddon.stories.js +230 -0
- package/src/components/atoms/DXInputAddon/DXInputAddon.vue +64 -0
- package/src/components/atoms/DXInputAddon/index.js +2 -0
- package/src/components/atoms/DXLink/DXLink.stories.js +475 -0
- package/src/components/atoms/DXLink/DXLink.vue +229 -0
- package/src/components/atoms/DXLink/index.js +2 -0
- package/src/components/atoms/DXLoader/DXLoader.stories.js +280 -0
- package/src/components/atoms/DXLoader/DXLoader.vue +78 -0
- package/src/components/atoms/DXLoader/index.js +2 -0
- package/src/components/atoms/DXProgress/DXProgress.stories.js +312 -0
- package/src/components/atoms/DXProgress/DXProgress.vue +85 -0
- package/src/components/atoms/DXProgress/index.js +2 -0
- package/src/components/atoms/DXQuote/DXQuote.stories.js +255 -0
- package/src/components/atoms/DXQuote/DXQuote.vue +97 -0
- package/src/components/atoms/DXQuote/index.js +2 -0
- package/src/components/atoms/DXRadio/DXRadio.stories.js +277 -0
- package/src/components/atoms/DXRadio/DXRadio.vue +144 -0
- package/src/components/atoms/DXRadio/index.js +2 -0
- package/src/components/atoms/DXSkeleton/DXSkeleton.stories.js +50 -0
- package/src/components/atoms/DXSkeleton/DXSkeleton.vue +19 -0
- package/src/components/atoms/DXSkeleton/index.js +2 -0
- package/src/components/atoms/DXSlider/DXSlider.stories.js +522 -0
- package/src/components/atoms/DXSlider/DXSlider.vue +338 -0
- package/src/components/atoms/DXSlider/index.js +2 -0
- package/src/components/atoms/DXTags/DXTags.stories.js +206 -0
- package/src/components/atoms/DXTags/DXTags.vue +111 -0
- package/src/components/atoms/DXTags/index.js +2 -0
- package/src/components/atoms/DXToast/DXToast.stories.js +40 -0
- package/src/components/atoms/DXToast/DXToast.vue +32 -0
- package/src/components/atoms/DXToast/index.js +2 -0
- package/src/components/atoms/DXToggle/DXToggle.stories.js +143 -0
- package/src/components/atoms/DXToggle/DXToggle.vue +142 -0
- package/src/components/atoms/DXToggle/index.js +2 -0
- package/src/components/atoms/DXToggleButton/DXToggleButton.stories.js +513 -0
- package/src/components/atoms/DXToggleButton/DXToggleButton.vue +140 -0
- package/src/components/atoms/DXToggleButton/index.js +2 -0
- package/src/components/atoms/DXTooltip/DXTooltip.stories.js +243 -0
- package/src/components/atoms/DXTooltip/DXTooltip.vue +151 -0
- package/src/components/atoms/DXTooltip/index.js +2 -0
- package/src/components/atoms/index.js +24 -0
- package/src/components/layout/DXBox/DXBox.stories.js +238 -0
- package/src/components/layout/DXBox/DXBox.vue +198 -0
- package/src/components/layout/DXBox/index.js +2 -0
- package/src/components/layout/DXContainer/DXContainer.stories.js +147 -0
- package/src/components/layout/DXContainer/DXContainer.vue +83 -0
- package/src/components/layout/DXContainer/index.js +2 -0
- package/src/components/layout/DXFlex/DXFlex.stories.js +210 -0
- package/src/components/layout/DXFlex/DXFlex.vue +149 -0
- package/src/components/layout/DXFlex/index.js +2 -0
- package/src/components/layout/DXGrid/DXGrid.stories.js +238 -0
- package/src/components/layout/DXGrid/DXGrid.vue +167 -0
- package/src/components/layout/DXGrid/index.js +2 -0
- package/src/components/layout/DXSpacer/DXSpacer.stories.js +187 -0
- package/src/components/layout/DXSpacer/DXSpacer.vue +102 -0
- package/src/components/layout/DXSpacer/index.js +2 -0
- package/src/components/layout/DXStack/DXStack.stories.js +199 -0
- package/src/components/layout/DXStack/DXStack.vue +140 -0
- package/src/components/layout/DXStack/index.js +2 -0
- package/src/components/layout/index.js +8 -0
- package/src/components/molecules/DXActionButtons/DXActionButtons.stories.js +288 -0
- package/src/components/molecules/DXActionButtons/DXActionButtons.vue +106 -0
- package/src/components/molecules/DXActionButtons/index.js +2 -0
- package/src/components/molecules/DXAlert/DXAlert.stories.js +70 -0
- package/src/components/molecules/DXAlert/DXAlert.vue +116 -0
- package/src/components/molecules/DXAlert/index.js +2 -0
- package/src/components/molecules/DXBaseTable/DXBaseTable.stories.js +433 -0
- package/src/components/molecules/DXBaseTable/DXBaseTable.vue +459 -0
- package/src/components/molecules/DXBaseTable/index.js +4 -0
- package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.stories.js +227 -0
- package/src/components/molecules/DXBreadcrumb/DXBreadcrumb.vue +96 -0
- package/src/components/molecules/DXBreadcrumb/index.js +2 -0
- package/src/components/molecules/DXButtonGroup/DXButtonGroup.stories.js +26 -0
- package/src/components/molecules/DXButtonGroup/DXButtonGroup.vue +78 -0
- package/src/components/molecules/DXButtonGroup/index.js +2 -0
- package/src/components/molecules/DXCloseButton/DXCloseButton.stories.js +53 -0
- package/src/components/molecules/DXCloseButton/DXCloseButton.vue +62 -0
- package/src/components/molecules/DXCloseButton/index.js +3 -0
- package/src/components/molecules/DXComboBox/DXComboBox.stories.js +62 -0
- package/src/components/molecules/DXComboBox/DXComboBox.vue +167 -0
- package/src/components/molecules/DXComboBox/index.js +2 -0
- package/src/components/molecules/DXCopyField/DXCopyField.stories.js +231 -0
- package/src/components/molecules/DXCopyField/DXCopyField.vue +75 -0
- package/src/components/molecules/DXCopyField/index.js +2 -0
- package/src/components/molecules/DXDataFilter/DXDataFilter.stories.js +275 -0
- package/src/components/molecules/DXDataFilter/DXDataFilter.vue +385 -0
- package/src/components/molecules/DXDataFilter/index.js +2 -0
- package/src/components/molecules/DXDatePicker/DXDatePicker.stories.js +42 -0
- package/src/components/molecules/DXDatePicker/DXDatePicker.vue +121 -0
- package/src/components/molecules/DXDatePicker/index.js +2 -0
- package/src/components/molecules/DXDropdownDivider/DXDropdownDivider.vue +30 -0
- package/src/components/molecules/DXDropdownDivider/index.js +2 -0
- package/src/components/molecules/DXFileUpload/DXFileUpload.stories.js +53 -0
- package/src/components/molecules/DXFileUpload/DXFileUpload.vue +199 -0
- package/src/components/molecules/DXFileUpload/index.js +2 -0
- package/src/components/molecules/DXFilterGroup/DXFilterGroup.stories.js +43 -0
- package/src/components/molecules/DXFilterGroup/DXFilterGroup.vue +43 -0
- package/src/components/molecules/DXFilterGroup/index.js +2 -0
- package/src/components/molecules/DXFormControl/DXFormControl.stories.js +69 -0
- package/src/components/molecules/DXFormControl/DXFormControl.vue +72 -0
- package/src/components/molecules/DXFormControl/index.js +2 -0
- package/src/components/molecules/DXInput/DXInput.stories.js +291 -0
- package/src/components/molecules/DXInput/DXInput.vue +156 -0
- package/src/components/molecules/DXInput/index.js +3 -0
- package/src/components/molecules/DXInputGroup/DXInputGroup.stories.js +228 -0
- package/src/components/molecules/DXInputGroup/DXInputGroup.vue +64 -0
- package/src/components/molecules/DXInputGroup/index.js +2 -0
- package/src/components/molecules/DXInputMask/DXInputMask.stories.js +53 -0
- package/src/components/molecules/DXInputMask/DXInputMask.vue +89 -0
- package/src/components/molecules/DXInputMask/index.js +2 -0
- package/src/components/molecules/DXMenu/DXMenu.stories.js +379 -0
- package/src/components/molecules/DXMenu/DXMenu.vue +331 -0
- package/src/components/molecules/DXMenu/README.md +479 -0
- package/src/components/molecules/DXMenu/index.js +2 -0
- package/src/components/molecules/DXPagination/DXPagination.stories.js +62 -0
- package/src/components/molecules/DXPagination/DXPagination.vue +123 -0
- package/src/components/molecules/DXPagination/index.js +2 -0
- package/src/components/molecules/DXPasswordInput/DXPasswordInput.stories.js +42 -0
- package/src/components/molecules/DXPasswordInput/DXPasswordInput.vue +74 -0
- package/src/components/molecules/DXPasswordInput/index.js +2 -0
- package/src/components/molecules/DXRadioCard/DXRadioCard.stories.js +60 -0
- package/src/components/molecules/DXRadioCard/DXRadioCard.vue +71 -0
- package/src/components/molecules/DXRadioCard/index.js +2 -0
- package/src/components/molecules/DXRadioGroup/DXRadioGroup.stories.js +297 -0
- package/src/components/molecules/DXRadioGroup/DXRadioGroup.vue +73 -0
- package/src/components/molecules/DXRadioGroup/index.js +2 -0
- package/src/components/molecules/DXRating/DXRating.stories.js +322 -0
- package/src/components/molecules/DXRating/DXRating.vue +402 -0
- package/src/components/molecules/DXRating/index.js +2 -0
- package/src/components/molecules/DXSearchBar/DXSearchBar.stories.js +357 -0
- package/src/components/molecules/DXSearchBar/DXSearchBar.vue +525 -0
- package/src/components/molecules/DXSearchBar/index.js +2 -0
- package/src/components/molecules/DXSearchSelect/DXSearchSelect.stories.js +50 -0
- package/src/components/molecules/DXSearchSelect/DXSearchSelect.vue +207 -0
- package/src/components/molecules/DXSearchSelect/index.js +2 -0
- package/src/components/molecules/DXSegmentedControl/DXSegmentedControl.stories.js +326 -0
- package/src/components/molecules/DXSegmentedControl/DXSegmentedControl.vue +116 -0
- package/src/components/molecules/DXSegmentedControl/index.js +2 -0
- package/src/components/molecules/DXSelect/DXSelect.stories.js +259 -0
- package/src/components/molecules/DXSelect/DXSelect.vue +149 -0
- package/src/components/molecules/DXSelect/index.js +3 -0
- package/src/components/molecules/DXStatCard/DXStatCard.stories.js +335 -0
- package/src/components/molecules/DXStatCard/DXStatCard.vue +309 -0
- package/src/components/molecules/DXStatCard/index.js +2 -0
- package/src/components/molecules/DXTableFiltersPanel/DXTableFiltersPanel.vue +72 -0
- package/src/components/molecules/DXTableFiltersPanel/index.js +7 -0
- package/src/components/molecules/DXTablePagination/DXTablePagination.stories.js +236 -0
- package/src/components/molecules/DXTablePagination/DXTablePagination.vue +93 -0
- package/src/components/molecules/DXTablePagination/index.js +2 -0
- package/src/components/molecules/DXTableToolbar/DXTableToolbar.stories.js +271 -0
- package/src/components/molecules/DXTableToolbar/DXTableToolbar.vue +102 -0
- package/src/components/molecules/DXTableToolbar/index.js +2 -0
- package/src/components/molecules/DXTextarea/DXTextarea.stories.js +239 -0
- package/src/components/molecules/DXTextarea/DXTextarea.vue +158 -0
- package/src/components/molecules/DXTextarea/index.js +3 -0
- package/src/components/molecules/DXTimePicker/DXTimePicker.stories.js +282 -0
- package/src/components/molecules/DXTimePicker/DXTimePicker.vue +640 -0
- package/src/components/molecules/DXTimePicker/index.js +2 -0
- package/src/components/molecules/DXValidationIcon/DXValidationIcon.stories.js +60 -0
- package/src/components/molecules/DXValidationIcon/DXValidationIcon.vue +53 -0
- package/src/components/molecules/DXValidationIcon/index.js +3 -0
- package/src/components/molecules/index.js +34 -0
- package/src/components/organisms/DXAccordion/DXAccordion.stories.js +33 -0
- package/src/components/organisms/DXAccordion/DXAccordion.vue +104 -0
- package/src/components/organisms/DXAccordion/index.js +2 -0
- package/src/components/organisms/DXAppLayout/DXAppLayout.stories.js +689 -0
- package/src/components/organisms/DXAppLayout/DXAppLayout.vue +460 -0
- package/src/components/organisms/DXAppLayout/index.js +2 -0
- package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.stories.js +232 -0
- package/src/components/organisms/DXAuthenticationForm/DXAuthenticationForm.vue +458 -0
- package/src/components/organisms/DXAuthenticationForm/index.js +2 -0
- package/src/components/organisms/DXChartContainer/DXChartContainer.stories.js +286 -0
- package/src/components/organisms/DXChartContainer/DXChartContainer.vue +273 -0
- package/src/components/organisms/DXChartContainer/index.js +2 -0
- package/src/components/organisms/DXChatInterface/DXChatInterface.stories.js +164 -0
- package/src/components/organisms/DXChatInterface/DXChatInterface.vue +583 -0
- package/src/components/organisms/DXChatInterface/index.js +2 -0
- package/src/components/organisms/DXCommentSection/DXCommentSection.stories.js +173 -0
- package/src/components/organisms/DXCommentSection/DXCommentSection.vue +487 -0
- package/src/components/organisms/DXCommentSection/index.js +2 -0
- package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.stories.js +331 -0
- package/src/components/organisms/DXDashboardGrid/DXDashboardGrid.vue +309 -0
- package/src/components/organisms/DXDashboardGrid/index.js +2 -0
- package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.stories.js +271 -0
- package/src/components/organisms/DXDashboardWidget/DXDashboardWidget.vue +260 -0
- package/src/components/organisms/DXDashboardWidget/index.js +2 -0
- package/src/components/organisms/DXDataTable/DXDataTable.stories.js +247 -0
- package/src/components/organisms/DXDataTable/DXDataTable.vue +496 -0
- package/src/components/organisms/DXDataTable/index.js +2 -0
- package/src/components/organisms/DXDropdown/DXDropdown.stories.js +795 -0
- package/src/components/organisms/DXDropdown/DXDropdown.vue +238 -0
- package/src/components/organisms/DXDropdown/index.js +2 -0
- package/src/components/organisms/DXEmptyState/DXEmptyState.stories.js +37 -0
- package/src/components/organisms/DXEmptyState/DXEmptyState.vue +41 -0
- package/src/components/organisms/DXEmptyState/index.js +2 -0
- package/src/components/organisms/DXFormWizard/DXFormWizard.stories.js +378 -0
- package/src/components/organisms/DXFormWizard/DXFormWizard.vue +578 -0
- package/src/components/organisms/DXFormWizard/index.js +2 -0
- package/src/components/organisms/DXHeaderBar/DXHeaderBar.stories.js +448 -0
- package/src/components/organisms/DXHeaderBar/DXHeaderBar.vue +190 -0
- package/src/components/organisms/DXHeaderBar/index.js +2 -0
- package/src/components/organisms/DXMediaGallery/DXMediaGallery.stories.js +347 -0
- package/src/components/organisms/DXMediaGallery/DXMediaGallery.vue +422 -0
- package/src/components/organisms/DXMediaGallery/index.js +2 -0
- package/src/components/organisms/DXModal/DXModal.stories.js +138 -0
- package/src/components/organisms/DXModal/DXModal.vue +213 -0
- package/src/components/organisms/DXModal/index.js +2 -0
- package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.stories.js +183 -0
- package/src/components/organisms/DXNotificationCenter/DXNotificationCenter.vue +566 -0
- package/src/components/organisms/DXNotificationCenter/index.js +2 -0
- package/src/components/organisms/DXReportGenerator/DXReportGenerator.stories.js +199 -0
- package/src/components/organisms/DXReportGenerator/DXReportGenerator.vue +344 -0
- package/src/components/organisms/DXReportGenerator/index.js +2 -0
- package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.stories.js +245 -0
- package/src/components/organisms/DXSettingsPanel/DXSettingsPanel.vue +454 -0
- package/src/components/organisms/DXSettingsPanel/index.js +2 -0
- package/src/components/organisms/DXSidebar/DXSidebar.stories.js +316 -0
- package/src/components/organisms/DXSidebar/DXSidebar.vue +212 -0
- package/src/components/organisms/DXSidebar/index.js +2 -0
- package/src/components/organisms/DXSidebarMenu/DATA_STRUCTURE.md +299 -0
- package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.stories.js +729 -0
- package/src/components/organisms/DXSidebarMenu/DXSidebarMenu.vue +257 -0
- package/src/components/organisms/DXSidebarMenu/DXSidebarMenuItem.vue +249 -0
- package/src/components/organisms/DXSidebarMenu/README.md +333 -0
- package/src/components/organisms/DXSidebarMenu/index.js +3 -0
- package/src/components/organisms/DXTable/DXTable.stories.js +550 -0
- package/src/components/organisms/DXTable/DXTable.vue +324 -0
- package/src/components/organisms/DXTable/index.js +2 -0
- package/src/components/organisms/DXTabs/DXTabs.stories.js +407 -0
- package/src/components/organisms/DXTabs/DXTabs.vue +301 -0
- package/src/components/organisms/DXTabs/index.js +2 -0
- package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.stories.js +194 -0
- package/src/components/organisms/DXUserProfileCard/DXUserProfileCard.vue +403 -0
- package/src/components/organisms/DXUserProfileCard/index.js +2 -0
- package/src/components/organisms/DXWizard/DXWizard.stories.js +212 -0
- package/src/components/organisms/DXWizard/DXWizard.vue +615 -0
- package/src/components/organisms/DXWizard/index.js +2 -0
- package/src/components/organisms/index.js +25 -0
- package/src/components/typography/DXBlockquote/DXBlockquote.stories.js +33 -0
- package/src/components/typography/DXBlockquote/DXBlockquote.vue +44 -0
- package/src/components/typography/DXBlockquote/index.js +2 -0
- package/src/components/typography/DXCode/DXCode.stories.js +29 -0
- package/src/components/typography/DXCode/DXCode.vue +46 -0
- package/src/components/typography/DXCode/index.js +2 -0
- package/src/components/typography/DXHeading/DXHeading.stories.js +54 -0
- package/src/components/typography/DXHeading/DXHeading.vue +68 -0
- package/src/components/typography/DXHeading/index.js +2 -0
- package/src/components/typography/DXLabel/DXLabel.stories.js +40 -0
- package/src/components/typography/DXLabel/DXLabel.vue +49 -0
- package/src/components/typography/DXLabel/index.js +2 -0
- package/src/components/typography/DXList/DXList.stories.js +50 -0
- package/src/components/typography/DXList/DXList.vue +55 -0
- package/src/components/typography/DXList/index.js +2 -0
- package/src/components/typography/DXText/DXText.stories.js +47 -0
- package/src/components/typography/DXText/DXText.vue +67 -0
- package/src/components/typography/DXText/index.js +2 -0
- package/src/components/typography/index.js +8 -0
- package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.stories.js +335 -0
- package/src/components/utilities/DXAnimatePresence/DXAnimatePresence.vue +207 -0
- package/src/components/utilities/DXAnimatePresence/index.js +2 -0
- package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.stories.js +321 -0
- package/src/components/utilities/DXBreakpointProvider/DXBreakpointProvider.vue +158 -0
- package/src/components/utilities/DXBreakpointProvider/index.js +2 -0
- package/src/components/utilities/DXObserver/DXObserver.stories.js +324 -0
- package/src/components/utilities/DXObserver/DXObserver.vue +182 -0
- package/src/components/utilities/DXObserver/index.js +2 -0
- package/src/components/utilities/DXPortal/DXPortal.stories.js +267 -0
- package/src/components/utilities/DXPortal/DXPortal.vue +69 -0
- package/src/components/utilities/DXPortal/index.js +2 -0
- package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.stories.js +339 -0
- package/src/components/utilities/DXStaggeredAnimation/DXStaggeredAnimation.vue +155 -0
- package/src/components/utilities/DXStaggeredAnimation/index.js +2 -0
- package/src/components/utilities/DXThemeProvider/DXThemeProvider.stories.js +327 -0
- package/src/components/utilities/DXThemeProvider/DXThemeProvider.vue +227 -0
- package/src/components/utilities/DXThemeProvider/index.js +2 -0
- package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.stories.js +368 -0
- package/src/components/utilities/DXTransitionGroup/DXTransitionGroup.vue +212 -0
- package/src/components/utilities/DXTransitionGroup/index.js +2 -0
- package/src/components/utilities/index.js +9 -0
- package/src/composables/useAnimation.js +264 -0
- package/src/composables/useClassComposition.js +35 -0
- package/src/composables/useDataAttributes.js +83 -0
- package/src/composables/useMenu.js +88 -0
- package/src/composables/useSize.js +135 -0
- package/src/composables/useSpacing.js +37 -0
- package/src/composables/useTableColumns.js +88 -0
- package/src/composables/useTableData.js +82 -0
- package/src/composables/useTableFilter.js +158 -0
- package/src/composables/useTablePagination.js +89 -0
- package/src/composables/useTableSelection.js +77 -0
- package/src/composables/useTableSort.js +75 -0
- package/src/composables/useTabsScroll.js +88 -0
- package/src/composables/useVariant.js +700 -0
- package/src/index.js +86 -0
- package/src/styles/animations.css +171 -0
- package/src/styles/index.css +99 -0
- package/src/styles/tokens.js +123 -0
- package/src/utils/propTypes.js +77 -0
- package/src/utils/toggleButtonPresets.js +115 -0
|
@@ -0,0 +1,700 @@
|
|
|
1
|
+
import {
|
|
2
|
+
InformationCircleIcon,
|
|
3
|
+
CheckCircleIcon,
|
|
4
|
+
ExclamationTriangleIcon,
|
|
5
|
+
XCircleIcon,
|
|
6
|
+
} from '@heroicons/vue/24/solid';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Конфигурация вариантов для компонентов
|
|
10
|
+
*/
|
|
11
|
+
export const VARIANT_CONFIGS = {
|
|
12
|
+
// Для Alert/Toast и общих компонентов
|
|
13
|
+
default: {
|
|
14
|
+
bg: 'bg-slate-50',
|
|
15
|
+
text: 'text-slate-800', // Для Alert/Toast (используется в useVariantClasses)
|
|
16
|
+
border: 'border-slate-200',
|
|
17
|
+
icon: null,
|
|
18
|
+
iconColor: 'text-slate-500',
|
|
19
|
+
// Для тегов
|
|
20
|
+
tag: 'bg-slate-100 text-slate-800 border-slate-200',
|
|
21
|
+
// Для прогресс-бара
|
|
22
|
+
progress: 'bg-slate-800',
|
|
23
|
+
// Для divider
|
|
24
|
+
divider: 'border-slate-200',
|
|
25
|
+
// Для лоадера
|
|
26
|
+
loader: {
|
|
27
|
+
border: 'border-slate-300',
|
|
28
|
+
borderTop: 'border-t-slate-900',
|
|
29
|
+
text: 'text-slate-600',
|
|
30
|
+
},
|
|
31
|
+
// Для слайдера
|
|
32
|
+
slider: {
|
|
33
|
+
track: 'bg-slate-200',
|
|
34
|
+
thumb: 'bg-slate-900',
|
|
35
|
+
thumbHover: 'bg-slate-800',
|
|
36
|
+
tick: 'bg-slate-400',
|
|
37
|
+
text: 'text-slate-700',
|
|
38
|
+
textActive: 'text-slate-900',
|
|
39
|
+
textValue: 'text-slate-900',
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
slate: {
|
|
43
|
+
bg: 'bg-slate-50',
|
|
44
|
+
text: 'text-slate-800',
|
|
45
|
+
border: 'border-slate-200',
|
|
46
|
+
icon: null,
|
|
47
|
+
iconColor: 'text-slate-500',
|
|
48
|
+
// Для Checkbox
|
|
49
|
+
checkbox: {
|
|
50
|
+
unchecked: "border-slate-300 bg-white hover:border-slate-400",
|
|
51
|
+
checked: "border-slate-700 bg-slate-700 hover:bg-slate-600",
|
|
52
|
+
ring: "focus:ring-slate-900/10",
|
|
53
|
+
},
|
|
54
|
+
// Для Radio
|
|
55
|
+
radio: {
|
|
56
|
+
unchecked: "border-slate-300 bg-white hover:border-slate-400",
|
|
57
|
+
checked: "border-slate-700 bg-slate-50 hover:border-slate-600",
|
|
58
|
+
ring: "focus:ring-slate-900/10",
|
|
59
|
+
dot: "bg-slate-700",
|
|
60
|
+
},
|
|
61
|
+
// Для текста
|
|
62
|
+
text: 'text-slate-700',
|
|
63
|
+
// Для тегов
|
|
64
|
+
tag: 'bg-slate-100 text-slate-800 border-slate-200',
|
|
65
|
+
// Для прогресс-бара
|
|
66
|
+
progress: 'bg-slate-800',
|
|
67
|
+
// Для divider
|
|
68
|
+
divider: 'border-slate-200',
|
|
69
|
+
// Для лоадера
|
|
70
|
+
loader: {
|
|
71
|
+
border: 'border-slate-300',
|
|
72
|
+
borderTop: 'border-t-slate-700',
|
|
73
|
+
text: 'text-slate-700',
|
|
74
|
+
},
|
|
75
|
+
// Для слайдера
|
|
76
|
+
slider: {
|
|
77
|
+
track: 'bg-slate-200',
|
|
78
|
+
thumb: 'bg-slate-700',
|
|
79
|
+
thumbHover: 'bg-slate-600',
|
|
80
|
+
tick: 'bg-slate-400',
|
|
81
|
+
text: 'text-slate-700',
|
|
82
|
+
textActive: 'text-slate-900',
|
|
83
|
+
textValue: 'text-slate-900',
|
|
84
|
+
},
|
|
85
|
+
// Для toggle
|
|
86
|
+
toggle: {
|
|
87
|
+
checked: 'bg-slate-700',
|
|
88
|
+
unchecked: 'bg-slate-200',
|
|
89
|
+
ring: 'focus:ring-slate-700/10',
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
primary: {
|
|
93
|
+
bg: 'bg-slate-50',
|
|
94
|
+
text: 'text-slate-800',
|
|
95
|
+
border: 'border-slate-200',
|
|
96
|
+
icon: null,
|
|
97
|
+
iconColor: 'text-slate-500',
|
|
98
|
+
// Для Checkbox
|
|
99
|
+
checkbox: {
|
|
100
|
+
unchecked: "border-slate-300 bg-white hover:border-slate-400",
|
|
101
|
+
checked: "border-slate-900 bg-slate-900 hover:bg-slate-800",
|
|
102
|
+
ring: "focus:ring-slate-900/10",
|
|
103
|
+
},
|
|
104
|
+
// Для Radio
|
|
105
|
+
radio: {
|
|
106
|
+
unchecked: "border-slate-300 bg-white hover:border-slate-400",
|
|
107
|
+
checked: "border-slate-900 bg-slate-50 hover:border-slate-800",
|
|
108
|
+
ring: "focus:ring-slate-900/10",
|
|
109
|
+
dot: "bg-slate-900",
|
|
110
|
+
},
|
|
111
|
+
// Для текста
|
|
112
|
+
text: 'text-slate-900',
|
|
113
|
+
// Для тегов
|
|
114
|
+
tag: 'bg-blue-100 text-blue-800 border-blue-200',
|
|
115
|
+
// Для прогресс-бара
|
|
116
|
+
progress: 'bg-slate-800',
|
|
117
|
+
// Для divider
|
|
118
|
+
divider: 'border-slate-200',
|
|
119
|
+
// Для tooltip
|
|
120
|
+
tooltip: 'bg-slate-900 text-white',
|
|
121
|
+
// Для лоадера
|
|
122
|
+
loader: {
|
|
123
|
+
border: 'border-slate-300',
|
|
124
|
+
borderTop: 'border-t-slate-900',
|
|
125
|
+
text: 'text-slate-900',
|
|
126
|
+
},
|
|
127
|
+
// Для слайдера
|
|
128
|
+
slider: {
|
|
129
|
+
track: 'bg-slate-200',
|
|
130
|
+
thumb: 'bg-slate-900',
|
|
131
|
+
thumbHover: 'bg-slate-800',
|
|
132
|
+
tick: 'bg-slate-400',
|
|
133
|
+
text: 'text-slate-700',
|
|
134
|
+
textActive: 'text-slate-900',
|
|
135
|
+
textValue: 'text-slate-900',
|
|
136
|
+
},
|
|
137
|
+
// Для toggle
|
|
138
|
+
toggle: {
|
|
139
|
+
checked: 'bg-slate-900',
|
|
140
|
+
unchecked: 'bg-slate-200',
|
|
141
|
+
ring: 'focus:ring-slate-900/10',
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
info: {
|
|
145
|
+
bg: 'bg-blue-50',
|
|
146
|
+
text: 'text-blue-800',
|
|
147
|
+
border: 'border-blue-200',
|
|
148
|
+
icon: InformationCircleIcon,
|
|
149
|
+
iconColor: 'text-blue-500',
|
|
150
|
+
// Для Checkbox
|
|
151
|
+
checkbox: {
|
|
152
|
+
unchecked: "border-slate-300 bg-white hover:border-blue-400",
|
|
153
|
+
checked: "border-blue-600 bg-blue-600 hover:bg-blue-500",
|
|
154
|
+
ring: "focus:ring-blue-500/10",
|
|
155
|
+
},
|
|
156
|
+
// Для Radio
|
|
157
|
+
radio: {
|
|
158
|
+
unchecked: "border-slate-300 bg-white hover:border-blue-400",
|
|
159
|
+
checked: "border-blue-600 bg-blue-50 hover:border-blue-500",
|
|
160
|
+
ring: "focus:ring-blue-500/10",
|
|
161
|
+
dot: "bg-blue-600",
|
|
162
|
+
},
|
|
163
|
+
// Для текста
|
|
164
|
+
text: 'text-blue-700',
|
|
165
|
+
// Для тегов
|
|
166
|
+
tag: 'bg-cyan-100 text-cyan-800 border-cyan-200',
|
|
167
|
+
// Для прогресс-бара
|
|
168
|
+
progress: 'bg-blue-500',
|
|
169
|
+
// Для divider
|
|
170
|
+
divider: 'border-blue-200',
|
|
171
|
+
// Для tooltip
|
|
172
|
+
tooltip: 'bg-blue-600 text-white',
|
|
173
|
+
// Для лоадера
|
|
174
|
+
loader: {
|
|
175
|
+
border: 'border-blue-300',
|
|
176
|
+
borderTop: 'border-t-blue-600',
|
|
177
|
+
text: 'text-blue-700',
|
|
178
|
+
},
|
|
179
|
+
// Для слайдера
|
|
180
|
+
slider: {
|
|
181
|
+
track: 'bg-blue-200',
|
|
182
|
+
thumb: 'bg-blue-600',
|
|
183
|
+
thumbHover: 'bg-blue-500',
|
|
184
|
+
tick: 'bg-blue-400',
|
|
185
|
+
text: 'text-blue-700',
|
|
186
|
+
textActive: 'text-blue-900',
|
|
187
|
+
textValue: 'text-blue-900',
|
|
188
|
+
},
|
|
189
|
+
// Для toggle
|
|
190
|
+
toggle: {
|
|
191
|
+
checked: 'bg-blue-600',
|
|
192
|
+
unchecked: 'bg-slate-200',
|
|
193
|
+
ring: 'focus:ring-blue-500/10',
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
success: {
|
|
197
|
+
bg: 'bg-emerald-50',
|
|
198
|
+
text: 'text-emerald-800',
|
|
199
|
+
border: 'border-emerald-200',
|
|
200
|
+
icon: CheckCircleIcon,
|
|
201
|
+
iconColor: 'text-emerald-500',
|
|
202
|
+
// Для Checkbox
|
|
203
|
+
checkbox: {
|
|
204
|
+
unchecked: "border-slate-300 bg-white hover:border-emerald-400",
|
|
205
|
+
checked: "border-emerald-600 bg-emerald-600 hover:bg-emerald-500",
|
|
206
|
+
ring: "focus:ring-emerald-500/10",
|
|
207
|
+
},
|
|
208
|
+
// Для Radio
|
|
209
|
+
radio: {
|
|
210
|
+
unchecked: "border-slate-300 bg-white hover:border-emerald-400",
|
|
211
|
+
checked: "border-emerald-600 bg-emerald-50 hover:border-emerald-500",
|
|
212
|
+
ring: "focus:ring-emerald-500/10",
|
|
213
|
+
dot: "bg-emerald-600",
|
|
214
|
+
},
|
|
215
|
+
// Для текста
|
|
216
|
+
text: 'text-emerald-700',
|
|
217
|
+
// Для тегов
|
|
218
|
+
tag: 'bg-green-100 text-green-800 border-green-200',
|
|
219
|
+
// Для прогресс-бара
|
|
220
|
+
progress: 'bg-emerald-500',
|
|
221
|
+
// Для divider
|
|
222
|
+
divider: 'border-emerald-200',
|
|
223
|
+
// Для tooltip
|
|
224
|
+
tooltip: 'bg-emerald-600 text-white',
|
|
225
|
+
// Для лоадера
|
|
226
|
+
loader: {
|
|
227
|
+
border: 'border-emerald-300',
|
|
228
|
+
borderTop: 'border-t-emerald-600',
|
|
229
|
+
text: 'text-emerald-700',
|
|
230
|
+
},
|
|
231
|
+
// Для слайдера
|
|
232
|
+
slider: {
|
|
233
|
+
track: 'bg-emerald-200',
|
|
234
|
+
thumb: 'bg-emerald-600',
|
|
235
|
+
thumbHover: 'bg-emerald-500',
|
|
236
|
+
tick: 'bg-emerald-400',
|
|
237
|
+
text: 'text-emerald-700',
|
|
238
|
+
textActive: 'text-emerald-900',
|
|
239
|
+
textValue: 'text-emerald-900',
|
|
240
|
+
},
|
|
241
|
+
// Для toggle
|
|
242
|
+
toggle: {
|
|
243
|
+
checked: 'bg-emerald-600',
|
|
244
|
+
unchecked: 'bg-slate-200',
|
|
245
|
+
ring: 'focus:ring-emerald-500/10',
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
warning: {
|
|
249
|
+
bg: 'bg-amber-50',
|
|
250
|
+
text: 'text-amber-800',
|
|
251
|
+
border: 'border-amber-200',
|
|
252
|
+
icon: ExclamationTriangleIcon,
|
|
253
|
+
iconColor: 'text-amber-500',
|
|
254
|
+
// Для Checkbox
|
|
255
|
+
checkbox: {
|
|
256
|
+
unchecked: "border-slate-300 bg-white hover:border-amber-400",
|
|
257
|
+
checked: "border-amber-600 bg-amber-600 hover:bg-amber-500",
|
|
258
|
+
ring: "focus:ring-amber-500/10",
|
|
259
|
+
},
|
|
260
|
+
// Для Radio
|
|
261
|
+
radio: {
|
|
262
|
+
unchecked: "border-slate-300 bg-white hover:border-amber-400",
|
|
263
|
+
checked: "border-amber-600 bg-amber-50 hover:border-amber-500",
|
|
264
|
+
ring: "focus:ring-amber-500/10",
|
|
265
|
+
dot: "bg-amber-600",
|
|
266
|
+
},
|
|
267
|
+
// Для текста
|
|
268
|
+
text: 'text-amber-700',
|
|
269
|
+
// Для тегов
|
|
270
|
+
tag: 'bg-yellow-100 text-yellow-800 border-yellow-200',
|
|
271
|
+
// Для прогресс-бара
|
|
272
|
+
progress: 'bg-amber-500',
|
|
273
|
+
// Для divider
|
|
274
|
+
divider: 'border-amber-200',
|
|
275
|
+
// Для tooltip
|
|
276
|
+
tooltip: 'bg-amber-600 text-white',
|
|
277
|
+
// Для лоадера
|
|
278
|
+
loader: {
|
|
279
|
+
border: 'border-amber-300',
|
|
280
|
+
borderTop: 'border-t-amber-600',
|
|
281
|
+
text: 'text-amber-700',
|
|
282
|
+
},
|
|
283
|
+
// Для слайдера
|
|
284
|
+
slider: {
|
|
285
|
+
track: 'bg-amber-200',
|
|
286
|
+
thumb: 'bg-amber-600',
|
|
287
|
+
thumbHover: 'bg-amber-500',
|
|
288
|
+
tick: 'bg-amber-400',
|
|
289
|
+
text: 'text-amber-700',
|
|
290
|
+
textActive: 'text-amber-900',
|
|
291
|
+
textValue: 'text-amber-900',
|
|
292
|
+
},
|
|
293
|
+
// Для toggle
|
|
294
|
+
toggle: {
|
|
295
|
+
checked: 'bg-amber-600',
|
|
296
|
+
unchecked: 'bg-slate-200',
|
|
297
|
+
ring: 'focus:ring-amber-500/10',
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
danger: {
|
|
301
|
+
bg: 'bg-rose-50',
|
|
302
|
+
text: 'text-rose-800',
|
|
303
|
+
border: 'border-rose-200',
|
|
304
|
+
icon: XCircleIcon,
|
|
305
|
+
iconColor: 'text-rose-500',
|
|
306
|
+
// Для Checkbox
|
|
307
|
+
checkbox: {
|
|
308
|
+
unchecked: "border-slate-300 bg-white hover:border-rose-400",
|
|
309
|
+
checked: "border-rose-600 bg-rose-600 hover:bg-rose-500",
|
|
310
|
+
ring: "focus:ring-rose-500/10",
|
|
311
|
+
},
|
|
312
|
+
// Для Radio
|
|
313
|
+
radio: {
|
|
314
|
+
unchecked: "border-slate-300 bg-white hover:border-rose-400",
|
|
315
|
+
checked: "border-rose-600 bg-rose-50 hover:border-rose-500",
|
|
316
|
+
ring: "focus:ring-rose-500/10",
|
|
317
|
+
dot: "bg-rose-600",
|
|
318
|
+
},
|
|
319
|
+
// Для текста
|
|
320
|
+
text: 'text-rose-700',
|
|
321
|
+
// Для тегов
|
|
322
|
+
tag: 'bg-red-100 text-red-800 border-red-200',
|
|
323
|
+
// Для прогресс-бара
|
|
324
|
+
progress: 'bg-rose-500',
|
|
325
|
+
// Для divider
|
|
326
|
+
divider: 'border-rose-200',
|
|
327
|
+
// Для tooltip
|
|
328
|
+
tooltip: 'bg-rose-600 text-white',
|
|
329
|
+
// Для лоадера
|
|
330
|
+
loader: {
|
|
331
|
+
border: 'border-rose-300',
|
|
332
|
+
borderTop: 'border-t-rose-600',
|
|
333
|
+
text: 'text-rose-700',
|
|
334
|
+
},
|
|
335
|
+
// Для слайдера
|
|
336
|
+
slider: {
|
|
337
|
+
track: 'bg-rose-200',
|
|
338
|
+
thumb: 'bg-rose-600',
|
|
339
|
+
thumbHover: 'bg-rose-500',
|
|
340
|
+
tick: 'bg-rose-400',
|
|
341
|
+
text: 'text-rose-700',
|
|
342
|
+
textActive: 'text-rose-900',
|
|
343
|
+
textValue: 'text-rose-900',
|
|
344
|
+
},
|
|
345
|
+
// Для toggle
|
|
346
|
+
toggle: {
|
|
347
|
+
checked: 'bg-rose-600',
|
|
348
|
+
unchecked: 'bg-slate-200',
|
|
349
|
+
ring: 'focus:ring-rose-500/10',
|
|
350
|
+
},
|
|
351
|
+
},
|
|
352
|
+
// Специальные варианты для текста
|
|
353
|
+
muted: {
|
|
354
|
+
text: 'text-slate-500',
|
|
355
|
+
},
|
|
356
|
+
// Специальные варианты для divider
|
|
357
|
+
light: {
|
|
358
|
+
divider: 'border-slate-100',
|
|
359
|
+
},
|
|
360
|
+
dark: {
|
|
361
|
+
divider: 'border-slate-300',
|
|
362
|
+
// Для tooltip
|
|
363
|
+
tooltip: 'bg-slate-900 text-white',
|
|
364
|
+
},
|
|
365
|
+
// Специальные варианты для tooltip
|
|
366
|
+
tooltipLight: {
|
|
367
|
+
tooltip: 'bg-white text-slate-900 border border-slate-200 shadow-lg',
|
|
368
|
+
},
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Возвращает классы для варианта
|
|
373
|
+
* @param {string} variant - info | success | warning | danger
|
|
374
|
+
* @returns {string} Tailwind CSS классы
|
|
375
|
+
*/
|
|
376
|
+
export function useVariantClasses(variant) {
|
|
377
|
+
const config = VARIANT_CONFIGS[variant] || VARIANT_CONFIGS.info;
|
|
378
|
+
return `${config.bg} ${config.text} ${config.border}`;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Возвращает иконку для варианта
|
|
383
|
+
* @param {string} variant - info | success | warning | danger
|
|
384
|
+
* @returns {Component} Heroicon компонент
|
|
385
|
+
*/
|
|
386
|
+
export function useVariantIcon(variant) {
|
|
387
|
+
const config = VARIANT_CONFIGS[variant] || VARIANT_CONFIGS.info;
|
|
388
|
+
return config.icon;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Возвращает полную конфигурацию варианта
|
|
393
|
+
* @param {string} variant - info | success | warning | danger
|
|
394
|
+
* @returns {Object} Конфигурация
|
|
395
|
+
*/
|
|
396
|
+
export function useVariantConfig(variant) {
|
|
397
|
+
return VARIANT_CONFIGS[variant] || VARIANT_CONFIGS.info;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Возвращает классы для checkbox
|
|
402
|
+
* @param {string} color - slate | primary | success | danger | warning | info
|
|
403
|
+
* @returns {Object} { unchecked, checked, ring }
|
|
404
|
+
*/
|
|
405
|
+
export function useVariantCheckbox(color) {
|
|
406
|
+
const config = VARIANT_CONFIGS[color] || VARIANT_CONFIGS.primary;
|
|
407
|
+
return config.checkbox || VARIANT_CONFIGS.primary.checkbox;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Возвращает классы для radio
|
|
412
|
+
* @param {string} color - slate | primary | success | danger | warning | info
|
|
413
|
+
* @returns {Object} { unchecked, checked, ring, dot }
|
|
414
|
+
*/
|
|
415
|
+
export function useVariantRadio(color) {
|
|
416
|
+
const config = VARIANT_CONFIGS[color] || VARIANT_CONFIGS.primary;
|
|
417
|
+
return config.radio || VARIANT_CONFIGS.primary.radio;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Возвращает класс для текста
|
|
422
|
+
* @param {string} color - default | muted | primary | success | warning | danger
|
|
423
|
+
* @returns {string} Tailwind CSS класс
|
|
424
|
+
*/
|
|
425
|
+
export function useVariantText(color) {
|
|
426
|
+
// Для default используем text-slate-700 вместо text-slate-800
|
|
427
|
+
if (color === 'default') {
|
|
428
|
+
return 'text-slate-700';
|
|
429
|
+
}
|
|
430
|
+
const config = VARIANT_CONFIGS[color] || VARIANT_CONFIGS.default;
|
|
431
|
+
return config.text || 'text-slate-700';
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Возвращает классы для тега
|
|
436
|
+
* @param {string} color - default | primary | success | warning | danger | info
|
|
437
|
+
* @returns {string} Tailwind CSS классы
|
|
438
|
+
*/
|
|
439
|
+
export function useVariantTag(color) {
|
|
440
|
+
const config = VARIANT_CONFIGS[color] || VARIANT_CONFIGS.default;
|
|
441
|
+
return config.tag || VARIANT_CONFIGS.default.tag;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* Возвращает класс для прогресс-бара
|
|
446
|
+
* @param {string} color - default | success | warning | danger | info
|
|
447
|
+
* @returns {string} Tailwind CSS класс
|
|
448
|
+
*/
|
|
449
|
+
export function useVariantProgress(color) {
|
|
450
|
+
const config = VARIANT_CONFIGS[color] || VARIANT_CONFIGS.default;
|
|
451
|
+
return config.progress || VARIANT_CONFIGS.default.progress;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* Возвращает конфигурацию для лоадера
|
|
456
|
+
* @param {string} color - default | primary | success | warning | danger | info | slate
|
|
457
|
+
* @returns {Object} { border, borderTop, text }
|
|
458
|
+
*/
|
|
459
|
+
export function useVariantLoader(color) {
|
|
460
|
+
const config = VARIANT_CONFIGS[color] || VARIANT_CONFIGS.default;
|
|
461
|
+
return config.loader || VARIANT_CONFIGS.default.loader;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* Предопределенные классы для всех комбинаций толщины и цвета divider
|
|
466
|
+
*/
|
|
467
|
+
const DIVIDER_BORDER_CLASSES = {
|
|
468
|
+
horizontal: {
|
|
469
|
+
thin: {
|
|
470
|
+
light: "border-t border-slate-100",
|
|
471
|
+
default: "border-t border-slate-200",
|
|
472
|
+
dark: "border-t border-slate-300",
|
|
473
|
+
},
|
|
474
|
+
default: {
|
|
475
|
+
light: "border-t border-slate-100",
|
|
476
|
+
default: "border-t border-slate-200",
|
|
477
|
+
dark: "border-t border-slate-300",
|
|
478
|
+
},
|
|
479
|
+
thick: {
|
|
480
|
+
light: "border-t-2 border-slate-100",
|
|
481
|
+
default: "border-t-2 border-slate-200",
|
|
482
|
+
dark: "border-t-2 border-slate-300",
|
|
483
|
+
},
|
|
484
|
+
},
|
|
485
|
+
vertical: {
|
|
486
|
+
thin: {
|
|
487
|
+
light: "border-l border-slate-100",
|
|
488
|
+
default: "border-l border-slate-200",
|
|
489
|
+
dark: "border-l border-slate-300",
|
|
490
|
+
},
|
|
491
|
+
default: {
|
|
492
|
+
light: "border-l border-slate-100",
|
|
493
|
+
default: "border-l border-slate-200",
|
|
494
|
+
dark: "border-l border-slate-300",
|
|
495
|
+
},
|
|
496
|
+
thick: {
|
|
497
|
+
light: "border-l-2 border-slate-100",
|
|
498
|
+
default: "border-l-2 border-slate-200",
|
|
499
|
+
dark: "border-l-2 border-slate-300",
|
|
500
|
+
},
|
|
501
|
+
},
|
|
502
|
+
};
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* Возвращает классы для divider с учетом ориентации, толщины и цвета
|
|
506
|
+
* @param {string} orientation - horizontal | vertical
|
|
507
|
+
* @param {string} thickness - thin | default | thick
|
|
508
|
+
* @param {string} color - light | default | dark
|
|
509
|
+
* @returns {string} Tailwind CSS классы
|
|
510
|
+
*/
|
|
511
|
+
export function useVariantDividerBorder(orientation, thickness, color) {
|
|
512
|
+
const orientationKey = orientation === "vertical" ? "vertical" : "horizontal";
|
|
513
|
+
return DIVIDER_BORDER_CLASSES[orientationKey]?.[thickness]?.[color]
|
|
514
|
+
|| DIVIDER_BORDER_CLASSES[orientationKey]?.default?.default
|
|
515
|
+
|| "border-t border-slate-200";
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Возвращает цвет для divider (только цвет, без border-)
|
|
520
|
+
* @param {string} color - light | default | dark
|
|
521
|
+
* @returns {string} Цвет для использования в border-{direction}-{color}
|
|
522
|
+
* @deprecated Используйте useVariantDividerBorder вместо этой функции
|
|
523
|
+
*/
|
|
524
|
+
export function useVariantDivider(color) {
|
|
525
|
+
const config = VARIANT_CONFIGS[color] || VARIANT_CONFIGS.default;
|
|
526
|
+
const dividerClass = config.divider || VARIANT_CONFIGS.default.divider;
|
|
527
|
+
// Извлекаем цвет из класса (например, "border-slate-200" -> "slate-200")
|
|
528
|
+
const match = dividerClass.match(/border-(.+)/);
|
|
529
|
+
return match ? match[1] : 'slate-200';
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Возвращает классы для tooltip
|
|
534
|
+
* @param {string} color - dark | light | primary | success | danger | warning | info
|
|
535
|
+
* @returns {string} Tailwind CSS классы
|
|
536
|
+
*/
|
|
537
|
+
export function useVariantTooltip(color) {
|
|
538
|
+
if (color === 'light') {
|
|
539
|
+
return VARIANT_CONFIGS.tooltipLight?.tooltip || 'bg-white text-slate-900 border border-slate-200 shadow-lg';
|
|
540
|
+
}
|
|
541
|
+
const config = VARIANT_CONFIGS[color] || VARIANT_CONFIGS.dark;
|
|
542
|
+
return config.tooltip || VARIANT_CONFIGS.dark.tooltip;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* Возвращает классы для позиционирования tooltip
|
|
547
|
+
* @param {string} position - top | bottom | left | right
|
|
548
|
+
* @returns {string} Tailwind CSS классы для позиционирования
|
|
549
|
+
*/
|
|
550
|
+
export function useTooltipPosition(position = 'top') {
|
|
551
|
+
const positionClasses = {
|
|
552
|
+
top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',
|
|
553
|
+
bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',
|
|
554
|
+
left: 'right-full top-1/2 -translate-y-1/2 mr-2',
|
|
555
|
+
right: 'left-full top-1/2 -translate-y-1/2 ml-2',
|
|
556
|
+
};
|
|
557
|
+
|
|
558
|
+
return positionClasses[position] || positionClasses.top;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
/**
|
|
562
|
+
* Возвращает классы для стрелки tooltip
|
|
563
|
+
* @param {string} position - top | bottom | left | right
|
|
564
|
+
* @param {string} color - dark | light | primary | success | danger | warning | info
|
|
565
|
+
* @returns {string} Tailwind CSS классы
|
|
566
|
+
*/
|
|
567
|
+
export function useTooltipArrow(position, color) {
|
|
568
|
+
const baseClasses = 'absolute w-0 h-0 border-4';
|
|
569
|
+
|
|
570
|
+
// Все комбинации позиций и цветов
|
|
571
|
+
const arrowClasses = {
|
|
572
|
+
top: {
|
|
573
|
+
dark: 'top-full left-1/2 -translate-x-1/2 border-t-slate-900 border-l-transparent border-r-transparent border-b-transparent',
|
|
574
|
+
light: 'top-full left-1/2 -translate-x-1/2 border-t-white border-l-transparent border-r-transparent border-b-transparent',
|
|
575
|
+
primary: 'top-full left-1/2 -translate-x-1/2 border-t-slate-900 border-l-transparent border-r-transparent border-b-transparent',
|
|
576
|
+
info: 'top-full left-1/2 -translate-x-1/2 border-t-blue-600 border-l-transparent border-r-transparent border-b-transparent',
|
|
577
|
+
success: 'top-full left-1/2 -translate-x-1/2 border-t-emerald-600 border-l-transparent border-r-transparent border-b-transparent',
|
|
578
|
+
warning: 'top-full left-1/2 -translate-x-1/2 border-t-amber-600 border-l-transparent border-r-transparent border-b-transparent',
|
|
579
|
+
danger: 'top-full left-1/2 -translate-x-1/2 border-t-rose-600 border-l-transparent border-r-transparent border-b-transparent',
|
|
580
|
+
},
|
|
581
|
+
bottom: {
|
|
582
|
+
dark: 'bottom-full left-1/2 -translate-x-1/2 border-b-slate-900 border-l-transparent border-r-transparent border-t-transparent',
|
|
583
|
+
light: 'bottom-full left-1/2 -translate-x-1/2 border-b-white border-l-transparent border-r-transparent border-t-transparent',
|
|
584
|
+
primary: 'bottom-full left-1/2 -translate-x-1/2 border-b-slate-900 border-l-transparent border-r-transparent border-t-transparent',
|
|
585
|
+
info: 'bottom-full left-1/2 -translate-x-1/2 border-b-blue-600 border-l-transparent border-r-transparent border-t-transparent',
|
|
586
|
+
success: 'bottom-full left-1/2 -translate-x-1/2 border-b-emerald-600 border-l-transparent border-r-transparent border-t-transparent',
|
|
587
|
+
warning: 'bottom-full left-1/2 -translate-x-1/2 border-b-amber-600 border-l-transparent border-r-transparent border-t-transparent',
|
|
588
|
+
danger: 'bottom-full left-1/2 -translate-x-1/2 border-b-rose-600 border-l-transparent border-r-transparent border-t-transparent',
|
|
589
|
+
},
|
|
590
|
+
left: {
|
|
591
|
+
dark: 'left-full top-1/2 -translate-y-1/2 border-l-slate-900 border-t-transparent border-b-transparent border-r-transparent',
|
|
592
|
+
light: 'left-full top-1/2 -translate-y-1/2 border-l-white border-t-transparent border-b-transparent border-r-transparent',
|
|
593
|
+
primary: 'left-full top-1/2 -translate-y-1/2 border-l-slate-900 border-t-transparent border-b-transparent border-r-transparent',
|
|
594
|
+
info: 'left-full top-1/2 -translate-y-1/2 border-l-blue-600 border-t-transparent border-b-transparent border-r-transparent',
|
|
595
|
+
success: 'left-full top-1/2 -translate-y-1/2 border-l-emerald-600 border-t-transparent border-b-transparent border-r-transparent',
|
|
596
|
+
warning: 'left-full top-1/2 -translate-y-1/2 border-l-amber-600 border-t-transparent border-b-transparent border-r-transparent',
|
|
597
|
+
danger: 'left-full top-1/2 -translate-y-1/2 border-l-rose-600 border-t-transparent border-b-transparent border-r-transparent',
|
|
598
|
+
},
|
|
599
|
+
right: {
|
|
600
|
+
dark: 'right-full top-1/2 -translate-y-1/2 border-r-slate-900 border-t-transparent border-b-transparent border-l-transparent',
|
|
601
|
+
light: 'right-full top-1/2 -translate-y-1/2 border-r-white border-t-transparent border-b-transparent border-l-transparent',
|
|
602
|
+
primary: 'right-full top-1/2 -translate-y-1/2 border-r-slate-900 border-t-transparent border-b-transparent border-l-transparent',
|
|
603
|
+
info: 'right-full top-1/2 -translate-y-1/2 border-r-blue-600 border-t-transparent border-b-transparent border-l-transparent',
|
|
604
|
+
success: 'right-full top-1/2 -translate-y-1/2 border-r-emerald-600 border-t-transparent border-b-transparent border-l-transparent',
|
|
605
|
+
warning: 'right-full top-1/2 -translate-y-1/2 border-r-amber-600 border-t-transparent border-b-transparent border-l-transparent',
|
|
606
|
+
danger: 'right-full top-1/2 -translate-y-1/2 border-r-rose-600 border-t-transparent border-b-transparent border-l-transparent',
|
|
607
|
+
},
|
|
608
|
+
};
|
|
609
|
+
|
|
610
|
+
const colorKey = color || 'dark';
|
|
611
|
+
const positionKey = position || 'top';
|
|
612
|
+
|
|
613
|
+
return `${baseClasses} ${arrowClasses[positionKey]?.[colorKey] || arrowClasses.top.dark}`;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
/**
|
|
617
|
+
* Возвращает конфигурацию для слайдера
|
|
618
|
+
* @param {string} variant - slate | primary | success | danger | warning | info | default
|
|
619
|
+
* @returns {Object} { track, thumb, thumbHover, tick, text, textActive, textValue }
|
|
620
|
+
*/
|
|
621
|
+
export function useVariantSlider(variant) {
|
|
622
|
+
const config = VARIANT_CONFIGS[variant] || VARIANT_CONFIGS.primary;
|
|
623
|
+
return config.slider || VARIANT_CONFIGS.primary.slider;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
/**
|
|
627
|
+
* Возвращает классы для toggle
|
|
628
|
+
* @param {string} color - slate | primary | success | danger | warning | info
|
|
629
|
+
* @param {boolean} checked - состояние toggle
|
|
630
|
+
* @returns {Object} { checked, unchecked, ring }
|
|
631
|
+
*/
|
|
632
|
+
export function useVariantToggle(color, checked = false) {
|
|
633
|
+
const config = VARIANT_CONFIGS[color] || VARIANT_CONFIGS.slate;
|
|
634
|
+
const toggleConfig = config.toggle || VARIANT_CONFIGS.slate.toggle;
|
|
635
|
+
|
|
636
|
+
return {
|
|
637
|
+
checked: toggleConfig.checked,
|
|
638
|
+
unchecked: toggleConfig.unchecked,
|
|
639
|
+
ring: toggleConfig.ring,
|
|
640
|
+
current: checked ? toggleConfig.checked : toggleConfig.unchecked,
|
|
641
|
+
};
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
/**
|
|
645
|
+
* Возвращает классы для badge
|
|
646
|
+
* @param {string} variant - slate | success | warning | danger | info
|
|
647
|
+
* @returns {string} Tailwind CSS классы
|
|
648
|
+
*/
|
|
649
|
+
export function useVariantBadge(variant) {
|
|
650
|
+
const badgeClasses = {
|
|
651
|
+
slate: "bg-slate-50 text-slate-700 border-slate-100",
|
|
652
|
+
success: "bg-emerald-50 text-emerald-700 border-emerald-100",
|
|
653
|
+
warning: "bg-amber-50 text-amber-700 border-amber-100",
|
|
654
|
+
danger: "bg-rose-50 text-rose-700 border-rose-100",
|
|
655
|
+
info: "bg-blue-50 text-blue-700 border-blue-100",
|
|
656
|
+
};
|
|
657
|
+
|
|
658
|
+
return badgeClasses[variant] || badgeClasses.slate;
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
/**
|
|
662
|
+
* Возвращает классы для button
|
|
663
|
+
* @param {string} variant - primary | secondary | ghost | outline | success | warning | danger | info | link | soft
|
|
664
|
+
* @returns {string} Tailwind CSS классы
|
|
665
|
+
*/
|
|
666
|
+
export function useVariantButton(variant) {
|
|
667
|
+
const buttonClasses = {
|
|
668
|
+
// Основные варианты
|
|
669
|
+
primary: "bg-slate-800 text-white hover:bg-slate-700",
|
|
670
|
+
secondary: "bg-slate-200 text-slate-700 hover:bg-slate-300",
|
|
671
|
+
ghost: "text-slate-700 hover:bg-slate-100 bg-transparent",
|
|
672
|
+
outline: "border border-slate-200 text-slate-700 hover:border-slate-300 bg-white",
|
|
673
|
+
// Семантические варианты
|
|
674
|
+
success: "bg-emerald-600 text-white hover:bg-emerald-500",
|
|
675
|
+
warning: "bg-amber-600 text-white hover:bg-amber-500",
|
|
676
|
+
danger: "bg-rose-600 text-white hover:bg-rose-500",
|
|
677
|
+
info: "bg-blue-600 text-white hover:bg-blue-500",
|
|
678
|
+
// Дополнительные варианты
|
|
679
|
+
link: "text-blue-600 hover:text-blue-700 underline-offset-2 hover:underline bg-transparent",
|
|
680
|
+
soft: "bg-slate-50 text-slate-700 hover:bg-slate-100",
|
|
681
|
+
};
|
|
682
|
+
|
|
683
|
+
return buttonClasses[variant] || buttonClasses.primary;
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
/**
|
|
687
|
+
* Возвращает классы для dropdown item
|
|
688
|
+
* @param {string} variant - default | danger | success
|
|
689
|
+
* @returns {string} Tailwind CSS классы
|
|
690
|
+
*/
|
|
691
|
+
export function useVariantDropdownItem(variant) {
|
|
692
|
+
const dropdownItemClasses = {
|
|
693
|
+
default: "text-slate-700 hover:bg-slate-50",
|
|
694
|
+
danger: "text-rose-600 hover:bg-rose-50",
|
|
695
|
+
success: "text-emerald-600 hover:bg-emerald-50",
|
|
696
|
+
};
|
|
697
|
+
|
|
698
|
+
return dropdownItemClasses[variant] || dropdownItemClasses.default;
|
|
699
|
+
}
|
|
700
|
+
|