@livestorm/ui-vue 1.1.2 → 2.0.0
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/README.md +164 -32
- package/components-vite.js +5 -5
- package/components.d.ts +3 -3
- package/dist/UiTimelineItem.vue_vue_type_style_index_0_lang-DOLFRKcb.mjs +5565 -0
- package/dist/a11y-DIdrv5Mn.mjs +66 -0
- package/dist/breakpoints.mjs +9 -0
- package/dist/bus.mjs +5 -0
- package/dist/components.mjs +213 -1550
- package/dist/index.mjs +84 -166
- package/dist/integrations.mjs +8 -0
- package/dist/layouts.mjs +236 -0
- package/dist/responsive.mjs +25 -0
- package/dist/slot.mjs +21 -0
- package/dist/toastDSV2-wMh-UMzW.mjs +74 -0
- package/dist/types/index.d.ts +84 -0
- package/dist/types/src/components/Toast/LayoutToasts.vue.d.ts +3 -0
- package/dist/types/src/components/Toast/ToastMessage.vue.d.ts +21 -0
- package/dist/types/src/components/Toast/toastDSV2.d.ts +102 -0
- package/dist/types/src/components/UiActionBar/UiActionBar.vue.d.ts +44 -0
- package/dist/types/src/components/UiActionBar/UiActionBarItem.vue.d.ts +47 -0
- package/dist/types/src/components/UiActionBar/UiActionBarSeparator.vue.d.ts +3 -0
- package/dist/types/src/components/UiActionBar/index.d.ts +4 -0
- package/dist/types/src/components/UiActionBar/types.d.ts +14 -0
- package/dist/types/src/components/UiAnimatedLogo/UiAnimatedLogo.vue.d.ts +10 -0
- package/dist/types/src/components/UiAnimatedLogo/animations-links.d.ts +3 -0
- package/dist/types/src/components/UiAvatar/UiAvatar.vue.d.ts +55 -0
- package/dist/types/src/components/UiAvatar/index.d.ts +1 -0
- package/dist/types/src/components/UiAvatarList/UiAvatarList.vue.d.ts +28 -0
- package/dist/types/src/components/UiAvatarList/index.d.ts +1 -0
- package/dist/types/src/components/UiBadge/UiBadge.vue.d.ts +47 -0
- package/dist/types/src/components/UiBadge/index.d.ts +1 -0
- package/dist/types/src/components/UiBanner/UiBanner.vue.d.ts +96 -0
- package/dist/types/src/components/UiBanner/index.d.ts +2 -0
- package/dist/types/src/components/UiBreadcrumb/UiBreadcrumb.vue.d.ts +15 -0
- package/dist/types/src/components/UiBreadcrumb/index.d.ts +2 -0
- package/dist/types/src/components/UiButton/UiButton.vue.d.ts +249 -0
- package/dist/types/src/components/UiButtonGroup/UiButtonGroup.vue.d.ts +42 -0
- package/dist/types/src/components/UiButtonGroup/UiButtonGroupItem.vue.d.ts +21 -0
- package/dist/types/src/components/UiButtonGroup/index.d.ts +3 -0
- package/dist/types/src/components/UiButtonGroup/types.d.ts +10 -0
- package/dist/types/src/components/UiCard/UiCard.vue.d.ts +31 -0
- package/dist/types/src/components/UiCarousel/UiCarousel.vue.d.ts +63 -0
- package/dist/types/src/components/UiCarousel/index.d.ts +2 -0
- package/dist/types/src/components/UiColorField/UiColorField.vue.d.ts +19 -0
- package/dist/types/src/components/UiColorField/index.d.ts +2 -0
- package/dist/types/src/components/UiColorField/types.d.ts +29 -0
- package/dist/types/src/components/UiColorPicker/UiColorPicker.vue.d.ts +35 -0
- package/dist/types/src/components/UiColorPicker/index.d.ts +2 -0
- package/dist/types/src/components/UiColorPicker/types.d.ts +97 -0
- package/dist/types/src/components/UiDialog/MarketplaceHeaderExample.vue.d.ts +28 -0
- package/dist/types/src/components/UiDialog/UiDialog.vue.d.ts +18 -0
- package/dist/types/src/components/UiDialog/UiDialogClose.vue.d.ts +10 -0
- package/dist/types/src/components/UiDialog/UiDialogContent.vue.d.ts +54 -0
- package/dist/types/src/components/UiDialog/UiDialogFooter.vue.d.ts +13 -0
- package/dist/types/src/components/UiDialog/UiDialogTrigger.vue.d.ts +14 -0
- package/dist/types/src/components/UiDialog/index.d.ts +7 -0
- package/dist/types/src/components/UiDropdown/UiDropdown.vue.d.ts +42 -0
- package/dist/types/src/components/UiDropdown/UiDropdownContent.vue.d.ts +32 -0
- package/dist/types/src/components/UiDropdown/UiDropdownItem.vue.d.ts +27 -0
- package/dist/types/src/components/UiDropdown/UiDropdownSeparator.vue.d.ts +3 -0
- package/dist/types/src/components/UiDropdown/UiDropdownTrigger.vue.d.ts +45 -0
- package/dist/types/src/components/UiDropdown/context.d.ts +7 -0
- package/dist/types/src/components/UiDropdown/index.d.ts +6 -0
- package/dist/types/src/components/UiEmptyState/UiEmptyState.vue.d.ts +29 -0
- package/dist/types/src/components/UiFieldWrapper/UiFieldWrapper.vue.d.ts +36 -0
- package/dist/types/src/components/UiFieldWrapper/index.d.ts +1 -0
- package/dist/types/src/components/UiForm/UiFormField.types.d.ts +22 -0
- package/dist/types/src/components/UiForm/UiFormField.vue.d.ts +34 -0
- package/dist/types/src/components/UiForm/index.d.ts +3 -0
- package/dist/types/src/components/UiHorizontalSeparator/UiHorizontalSeparator.vue.d.ts +6 -0
- package/dist/types/src/components/UiInputCheckbox/UiInputCheckbox.vue.d.ts +108 -0
- package/dist/types/src/components/UiInputCheckbox/index.d.ts +2 -0
- package/dist/types/src/components/UiInputCheckbox/types.d.ts +1 -0
- package/dist/types/src/components/UiInputSelect/UiInputSelect.vue.d.ts +66 -0
- package/dist/types/src/components/UiInputSelect/index.d.ts +2 -0
- package/dist/types/src/components/UiInputSelect/types.d.ts +1 -0
- package/dist/types/src/components/UiInputTextarea/UiInputTextarea.vue.d.ts +49 -0
- package/dist/types/src/components/UiInputTextarea/index.d.ts +2 -0
- package/dist/types/src/components/UiInputTextarea/types.d.ts +1 -0
- package/dist/types/src/components/UiLabel/UiLabel.vue.d.ts +17 -0
- package/dist/types/src/components/UiList/UiList.vue.d.ts +27 -0
- package/dist/types/src/components/UiListItem/UiListItem.vue.d.ts +35 -0
- package/dist/types/src/components/UiLoader/UiLoader.vue.d.ts +17 -0
- package/dist/types/src/components/UiLogo/UiLogo.vue.d.ts +20 -0
- package/dist/types/src/components/UiLogo/variants/PulseVariant.vue.d.ts +3 -0
- package/dist/types/src/components/UiLogo/variants/TornadoVariant.vue.d.ts +3 -0
- package/dist/types/src/components/UiMenu/UiMenu.vue.d.ts +18 -0
- package/dist/types/src/components/UiMenu/UiMenuContent.vue.d.ts +30 -0
- package/dist/types/src/components/UiMenu/UiMenuGroup.vue.d.ts +16 -0
- package/dist/types/src/components/UiMenu/UiMenuItem.vue.d.ts +18 -0
- package/dist/types/src/components/UiMenu/UiMenuLabel.vue.d.ts +13 -0
- package/dist/types/src/components/UiMenu/UiMenuSeparator.vue.d.ts +13 -0
- package/dist/types/src/components/UiMenu/UiMenuSub.vue.d.ts +18 -0
- package/dist/types/src/components/UiMenu/UiMenuSubContent.vue.d.ts +32 -0
- package/dist/types/src/components/UiMenu/UiMenuSubTrigger.vue.d.ts +14 -0
- package/dist/types/src/components/UiMenu/UiMenuTrigger.vue.d.ts +14 -0
- package/dist/types/src/components/UiMenu/index.d.ts +10 -0
- package/dist/types/src/components/UiPage/UiPage.vue.d.ts +37 -0
- package/dist/types/src/components/UiPageHeader/UiPageHeader.vue.d.ts +33 -0
- package/dist/types/src/components/UiPopover/UiPopover.vue.d.ts +18 -0
- package/dist/types/src/components/UiPopover/UiPopoverAnchor.vue.d.ts +14 -0
- package/dist/types/src/components/UiPopover/UiPopoverContent.vue.d.ts +28 -0
- package/dist/types/src/components/UiPopover/UiPopoverTrigger.vue.d.ts +14 -0
- package/dist/types/src/components/UiProgress/UiProgress.vue.d.ts +15 -0
- package/dist/types/src/components/UiProgress/index.d.ts +2 -0
- package/dist/types/src/components/UiProgress/types.d.ts +4 -0
- package/dist/types/src/components/UiRoomButton/UiRoomButton.vue.d.ts +29 -0
- package/dist/types/src/components/UiShell/UiShell.vue.d.ts +24 -0
- package/dist/types/src/components/UiSideMenu/UiSideMenu.vue.d.ts +64 -0
- package/dist/types/src/components/UiSideMenu/UiSideMenuBottom.vue.d.ts +7 -0
- package/dist/types/src/components/UiSideMenu/UiSideMenuItem.vue.d.ts +53 -0
- package/dist/types/src/components/UiSideMenu/UiSideMenuItemContent.vue.d.ts +43 -0
- package/dist/types/src/components/UiSideMenu/UiSideMenuTop.vue.d.ts +7 -0
- package/dist/types/src/components/UiSideMenu/injection.d.ts +7 -0
- package/dist/types/src/components/UiSideMenu/types.d.ts +39 -0
- package/dist/types/src/components/UiSideMenu/useLabelHidden.d.ts +2 -0
- package/dist/types/src/components/UiSideMenu/useSideMenuLayout.d.ts +7 -0
- package/dist/types/src/components/UiStepper/UiStepper.vue.d.ts +18 -0
- package/dist/types/src/components/UiStepper/UiStepperDescription.vue.d.ts +14 -0
- package/dist/types/src/components/UiStepper/UiStepperIndicator.vue.d.ts +20 -0
- package/dist/types/src/components/UiStepper/UiStepperItem.vue.d.ts +19 -0
- package/dist/types/src/components/UiStepper/UiStepperSeparator.vue.d.ts +10 -0
- package/dist/types/src/components/UiStepper/UiStepperTitle.vue.d.ts +14 -0
- package/dist/types/src/components/UiStepper/index.d.ts +7 -0
- package/dist/types/src/components/UiTable/UiTable.vue.d.ts +20 -0
- package/dist/types/src/components/UiTable/UiTableBody.vue.d.ts +13 -0
- package/dist/types/src/components/UiTable/UiTableCell.vue.d.ts +13 -0
- package/dist/types/src/components/UiTable/UiTableHeader.vue.d.ts +13 -0
- package/dist/types/src/components/UiTable/UiTableHeaderCell.vue.d.ts +13 -0
- package/dist/types/src/components/UiTable/UiTableRow.vue.d.ts +16 -0
- package/dist/types/src/components/UiTable/index.d.ts +6 -0
- package/dist/types/src/components/UiTabs/UiTabs.vue.d.ts +37 -0
- package/dist/types/src/components/UiTabs/index.d.ts +2 -0
- package/dist/types/src/components/UiTag/UiTag.vue.d.ts +43 -0
- package/dist/types/src/components/UiTag/index.d.ts +1 -0
- package/dist/types/src/components/UiTextField/UiTextField.vue.d.ts +65 -0
- package/dist/types/src/components/UiTextField/index.d.ts +2 -0
- package/dist/types/src/components/UiTextField/types.d.ts +2 -0
- package/dist/types/src/components/UiTimeline/UiTimeline.vue.d.ts +19 -0
- package/dist/types/src/components/UiTimeline/UiTimelineItem.vue.d.ts +28 -0
- package/dist/types/src/components/UiTimeline/index.d.ts +2 -0
- package/dist/types/src/components/UiTooltip/UiTooltip.vue.d.ts +18 -0
- package/dist/types/src/components/UiTooltip/UiTooltipContent.vue.d.ts +54 -0
- package/dist/types/src/components/UiTooltip/UiTooltipProvider.vue.d.ts +17 -0
- package/dist/types/src/components/UiTooltip/UiTooltipTrigger.vue.d.ts +14 -0
- package/dist/types/src/components/UiTooltip/index.d.ts +4 -0
- package/dist/types/src/composables/useButtonStyles.d.ts +20 -0
- package/dist/types/src/composables/useMobileMenu.d.ts +11 -0
- package/dist/types/src/composables/useThemeAndModes.d.ts +34 -0
- package/dist/types/src/constants/index.d.ts +2 -0
- package/dist/types/src/constants/sizes.d.ts +2 -0
- package/dist/types/src/constants/themes.d.ts +22 -0
- package/dist/types/src/integrations/index.d.ts +1 -0
- package/dist/types/src/layouts/index.d.ts +2 -0
- package/dist/types/src/mixins/DynamicAction.d.ts +30 -0
- package/dist/types/src/primitives.d.ts +6 -0
- package/dist/types/src/theme.d.ts +1 -0
- package/dist/types/src/utils/a11y.d.ts +2 -0
- package/dist/types/src/utils/breakpoints.d.ts +9 -0
- package/dist/types/src/utils/bus.d.ts +2 -0
- package/dist/types/src/utils/clipboard.d.ts +4 -0
- package/dist/types/src/utils/devices.d.ts +19 -0
- package/dist/types/src/utils/elements.d.ts +1 -0
- package/dist/types/src/utils/index.d.ts +9 -0
- package/dist/types/src/utils/numbers.d.ts +30 -0
- package/dist/types/src/utils/responsive.d.ts +5 -0
- package/dist/types/src/utils/responsive.types.d.ts +12 -0
- package/dist/types/src/utils/router.d.ts +1 -0
- package/dist/types/src/utils/slot.d.ts +8 -0
- package/dist/types/src/utils/stack-view.d.ts +10 -0
- package/dist/types/src/utils/uid.d.ts +1 -0
- package/dist/types/style.d.ts +1 -0
- package/dist/ui-vue.css +1 -0
- package/dist/useThemeAndModes-DY5SDC0a.mjs +109 -0
- package/dist/utils.mjs +111 -0
- package/index.d.ts +88 -2
- package/index.js +169 -16
- package/integrations.d.ts +10 -0
- package/package.json +127 -58
- package/src/components/Toast/LayoutToasts.vue +63 -0
- package/src/components/Toast/ToastMessage.vue +208 -0
- package/src/components/Toast/toastDSV2.ts +151 -0
- package/src/components/UiActionBar/UiActionBar.vue +86 -0
- package/src/components/UiActionBar/UiActionBarItem.vue +179 -0
- package/src/components/UiActionBar/UiActionBarSeparator.vue +18 -0
- package/src/components/UiActionBar/index.ts +4 -0
- package/src/components/UiActionBar/types.ts +24 -0
- package/src/components/UiAnimatedLogo/UiAnimatedLogo.vue +47 -0
- package/src/components/UiAnimatedLogo/animations-links.ts +6 -0
- package/src/components/UiAvatar/UiAvatar.vue +186 -0
- package/src/components/UiAvatar/index.js +1 -0
- package/src/components/UiAvatarList/UiAvatarList.vue +109 -0
- package/src/components/UiAvatarList/index.js +1 -0
- package/src/components/UiBadge/UiBadge.vue +161 -0
- package/src/components/UiBadge/index.ts +2 -0
- package/src/components/UiBanner/UiBanner.vue +363 -0
- package/src/components/UiBanner/index.ts +2 -0
- package/src/components/UiBreadcrumb/UiBreadcrumb.vue +93 -0
- package/src/components/UiBreadcrumb/index.ts +2 -0
- package/src/components/UiButton/UiButton.vue +319 -0
- package/src/components/UiButtonGroup/UiButtonGroup.vue +198 -0
- package/src/components/UiButtonGroup/UiButtonGroupItem.vue +123 -0
- package/src/components/UiButtonGroup/index.ts +3 -0
- package/src/components/UiButtonGroup/types.ts +24 -0
- package/src/components/UiCard/UiCard.vue +112 -0
- package/src/components/UiCarousel/UiCarousel.vue +215 -0
- package/src/components/UiCarousel/index.ts +2 -0
- package/src/components/UiColorField/UiColorField.vue +158 -0
- package/src/components/UiColorField/index.ts +2 -0
- package/src/components/UiColorField/types.ts +30 -0
- package/src/components/UiColorPicker/UiColorPicker.vue +487 -0
- package/src/components/UiColorPicker/index.ts +2 -0
- package/src/components/UiColorPicker/types.ts +103 -0
- package/src/components/UiDialog/MarketplaceHeaderExample.vue +217 -0
- package/src/components/UiDialog/UiDialog.md +97 -0
- package/src/components/UiDialog/UiDialog.vue +16 -0
- package/src/components/UiDialog/UiDialogClose.vue +29 -0
- package/src/components/UiDialog/UiDialogContent.vue +238 -0
- package/src/components/UiDialog/UiDialogFooter.vue +9 -0
- package/src/components/UiDialog/UiDialogTrigger.vue +12 -0
- package/src/components/UiDialog/index.ts +18 -0
- package/src/components/UiDropdown/UiDropdown.vue +48 -0
- package/src/components/UiDropdown/UiDropdownContent.vue +72 -0
- package/src/components/UiDropdown/UiDropdownItem.vue +75 -0
- package/src/components/UiDropdown/UiDropdownSeparator.vue +7 -0
- package/src/components/UiDropdown/UiDropdownTrigger.vue +239 -0
- package/src/components/UiDropdown/context.ts +9 -0
- package/src/components/UiDropdown/index.ts +21 -0
- package/src/components/UiEmptyState/UiEmptyState.vue +80 -0
- package/src/components/UiFieldWrapper/UiFieldWrapper.vue +79 -0
- package/src/components/UiFieldWrapper/index.ts +1 -0
- package/src/components/UiForm/UiFormField.types.ts +24 -0
- package/src/components/UiForm/UiFormField.vue +66 -0
- package/src/components/UiForm/index.ts +3 -0
- package/src/components/UiHorizontalSeparator/UiHorizontalSeparator.vue +28 -0
- package/src/components/UiInputCheckbox/UiInputCheckbox.vue +477 -0
- package/src/components/UiInputCheckbox/index.ts +2 -0
- package/src/components/UiInputCheckbox/types.ts +1 -0
- package/src/components/UiInputSelect/UiInputSelect.vue +166 -0
- package/src/components/UiInputSelect/index.ts +2 -0
- package/src/components/UiInputSelect/types.ts +1 -0
- package/src/components/UiInputTextarea/UiInputTextarea.vue +219 -0
- package/src/components/UiInputTextarea/index.ts +2 -0
- package/src/components/UiInputTextarea/types.ts +1 -0
- package/src/components/UiLabel/UiLabel.vue +34 -0
- package/src/components/UiList/UiList.vue +45 -0
- package/src/components/UiListItem/UiListItem.vue +108 -0
- package/src/components/UiLoader/UiLoader.vue +45 -0
- package/src/components/UiLogo/UiLogo.vue +99 -0
- package/src/components/UiLogo/variants/PulseVariant.vue +51 -0
- package/src/components/UiLogo/variants/TornadoVariant.vue +147 -0
- package/src/components/UiMenu/UiMenu.vue +15 -0
- package/src/components/UiMenu/UiMenuContent.vue +25 -0
- package/src/components/UiMenu/UiMenuGroup.vue +19 -0
- package/src/components/UiMenu/UiMenuItem.vue +18 -0
- package/src/components/UiMenu/UiMenuLabel.vue +9 -0
- package/src/components/UiMenu/UiMenuSeparator.vue +9 -0
- package/src/components/UiMenu/UiMenuSub.vue +15 -0
- package/src/components/UiMenu/UiMenuSubContent.vue +23 -0
- package/src/components/UiMenu/UiMenuSubTrigger.vue +17 -0
- package/src/components/UiMenu/UiMenuTrigger.vue +13 -0
- package/src/components/UiMenu/index.ts +10 -0
- package/src/components/UiPage/UiPage.vue +201 -0
- package/src/components/UiPageHeader/UiPageHeader.vue +128 -0
- package/src/components/UiPopover/UiPopover.vue +16 -0
- package/src/components/UiPopover/UiPopoverAnchor.vue +12 -0
- package/src/components/UiPopover/UiPopoverContent.vue +26 -0
- package/src/components/UiPopover/UiPopoverTrigger.vue +19 -0
- package/src/components/UiProgress/UiProgress.vue +92 -0
- package/src/components/UiProgress/index.ts +2 -0
- package/src/components/UiProgress/types.ts +5 -0
- package/src/components/UiRoomButton/UiRoomButton.vue +240 -0
- package/src/components/UiShell/UiShell.vue +88 -0
- package/src/components/UiSideMenu/UiSideMenu.vue +513 -0
- package/src/components/UiSideMenu/UiSideMenuBottom.vue +27 -0
- package/src/components/UiSideMenu/UiSideMenuItem.vue +102 -0
- package/src/components/UiSideMenu/UiSideMenuItemContent.vue +172 -0
- package/src/components/UiSideMenu/UiSideMenuTop.vue +29 -0
- package/src/components/UiSideMenu/injection.ts +9 -0
- package/src/components/UiSideMenu/types.ts +41 -0
- package/src/components/UiSideMenu/useLabelHidden.ts +33 -0
- package/src/components/UiSideMenu/useSideMenuLayout.ts +12 -0
- package/src/components/UiStepper/UiStepper.vue +40 -0
- package/src/components/UiStepper/UiStepperDescription.vue +27 -0
- package/src/components/UiStepper/UiStepperIndicator.vue +93 -0
- package/src/components/UiStepper/UiStepperItem.vue +30 -0
- package/src/components/UiStepper/UiStepperSeparator.vue +49 -0
- package/src/components/UiStepper/UiStepperTitle.vue +24 -0
- package/src/components/UiStepper/index.ts +17 -0
- package/src/components/UiTable/UiTable.vue +24 -0
- package/src/components/UiTable/UiTableBody.vue +5 -0
- package/src/components/UiTable/UiTableCell.vue +26 -0
- package/src/components/UiTable/UiTableHeader.vue +17 -0
- package/src/components/UiTable/UiTableHeaderCell.vue +19 -0
- package/src/components/UiTable/UiTableRow.vue +27 -0
- package/src/components/UiTable/index.ts +6 -0
- package/src/components/UiTabs/UiTabs.vue +218 -0
- package/src/components/UiTabs/index.ts +5 -0
- package/src/components/UiTag/UiTag.vue +187 -0
- package/src/components/UiTag/index.js +1 -0
- package/src/components/UiTextField/UiTextField.vue +370 -0
- package/src/components/UiTextField/index.ts +2 -0
- package/src/components/UiTextField/types.ts +2 -0
- package/src/components/UiTimeline/README.md +169 -0
- package/src/components/UiTimeline/UiTimeline.vue +58 -0
- package/src/components/UiTimeline/UiTimelineItem.vue +141 -0
- package/src/components/UiTimeline/index.ts +2 -0
- package/src/components/UiTooltip/UiTooltip.vue +16 -0
- package/src/components/UiTooltip/UiTooltipContent.vue +86 -0
- package/src/components/UiTooltip/UiTooltipProvider.vue +15 -0
- package/src/components/UiTooltip/UiTooltipTrigger.vue +19 -0
- package/src/components/UiTooltip/index.js +4 -0
- package/src/composables/useButtonStyles.ts +242 -0
- package/src/composables/useMobileMenu.ts +57 -0
- package/src/composables/useThemeAndModes.ts +225 -0
- package/src/constants/index.ts +2 -0
- package/src/constants/sizes.ts +2 -0
- package/src/constants/themes.ts +34 -0
- package/src/css/{body.postcss → body.css} +3 -2
- package/src/css/reka-animations.css +209 -0
- package/src/css/{transitions.postcss → transitions.css} +12 -5
- package/src/global.d.ts +181 -0
- package/src/integrations/index.js +1 -0
- package/src/layouts/index.js +5 -0
- package/src/mixins/DynamicAction.js +5 -3
- package/src/primitives.ts +6 -0
- package/src/theme.ts +1 -0
- package/src/utils/a11y.ts +8 -0
- package/src/utils/{breakpoints.js → breakpoints.ts} +1 -0
- package/src/utils/clipboard.js +2 -2
- package/src/utils/devices.js +0 -3
- package/src/utils/index.js +2 -1
- package/src/utils/numbers.ts +61 -0
- package/src/utils/responsive.types.ts +12 -0
- package/src/utils/{slot.js → slot.ts} +18 -1
- package/style.js +3 -12
- package/theme.d.ts +1 -0
- package/.env +0 -1
- package/.eslintignore +0 -4
- package/.eslintrc.js +0 -47
- package/.pkg +0 -11
- package/babel.config.js +0 -5
- package/build/Dockerfile +0 -31
- package/ci/ci.yml +0 -54
- package/components-webpack.js +0 -29
- package/dist/environment-e70e5768.mjs +0 -1664
- package/dist/style.css +0 -1
- package/plugins.js +0 -17
- package/postcss.config.js +0 -1
- package/src/components/BaseAutocomplete/BaseAutocomplete.spec.js +0 -506
- package/src/components/BaseAutocomplete/BaseAutocomplete.stories.js +0 -184
- package/src/components/BaseAutocomplete/BaseAutocomplete.vue +0 -431
- package/src/components/BaseBanner/BaseBanner.spec.js +0 -32
- package/src/components/BaseBanner/BaseBanner.stories.js +0 -133
- package/src/components/BaseBanner/BaseBanner.vue +0 -229
- package/src/components/BaseButton/BaseButton.spec.js +0 -98
- package/src/components/BaseButton/BaseButton.stories.js +0 -291
- package/src/components/BaseButton/BaseButton.vue +0 -193
- package/src/components/BaseButton/__snapshots__/BaseButton.spec.js.snap +0 -37
- package/src/components/BaseButton/__snapshots__/BaseButton.spec.js.snap.old +0 -31
- package/src/components/BaseCheckbox/BaseCheckbox.stories.js +0 -82
- package/src/components/BaseCheckbox/BaseCheckbox.vue +0 -161
- package/src/components/BaseDropdownMenu/BaseDropdownMenu.stories.js +0 -84
- package/src/components/BaseDropdownMenu/BaseDropdownMenu.vue +0 -251
- package/src/components/BaseDropdownMenu/BaseDropdownMenuButton.vue +0 -26
- package/src/components/BaseDropdownMenu/BaseDropdownMenuDivider.vue +0 -10
- package/src/components/BaseDropdownMenu/BaseDropdownMenuItem.vue +0 -206
- package/src/components/BaseDropdownMenu/BaseDropdownMenuSearch.vue +0 -49
- package/src/components/BaseDropdownMenu/BaseDropdownMenuTitle.vue +0 -26
- package/src/components/BaseModal/BaseModal.stories.js +0 -143
- package/src/components/BaseModal/BaseModal.vue +0 -187
- package/src/components/BaseModal/BaseModalContent.vue +0 -164
- package/src/components/BaseModal/BaseModalContentOld.vue +0 -242
- package/src/components/BaseRating/BaseRating.spec.js +0 -46
- package/src/components/BaseRating/BaseRating.stories.js +0 -46
- package/src/components/BaseRating/BaseRating.vue +0 -119
- package/src/components/BaseSelect/BaseSelect.stories.js +0 -177
- package/src/components/BaseSelect/BaseSelect.vue +0 -443
- package/src/components/BaseSelect/BaseSelectGroup.vue +0 -34
- package/src/components/BaseSelect/BaseSelectOption.vue +0 -219
- package/src/components/BaseSwitch/BaseSwitch.stories.js +0 -44
- package/src/components/BaseSwitch/BaseSwitch.vue +0 -114
- package/src/components/BaseTag/BaseTag.stories.js +0 -123
- package/src/components/BaseTag/BaseTag.vue +0 -244
- package/src/css/button.postcss +0 -354
- package/src/css/checkbox-radio.postcss +0 -152
- package/src/css/icon.postcss +0 -9
- package/src/css/loader.postcss +0 -120
- package/src/css/popper.postcss +0 -143
- package/src/css/tailwind-utilities.postcss +0 -1
- package/src/css/tailwind.postcss +0 -2
- package/style-postcss.d.ts +0 -3
- package/style-postcss.js +0 -2
- package/tailwind.config.base.cjs +0 -88
- package/tailwind.config.js +0 -9
- package/tsconfig.check.json +0 -13
- package/tsconfig.json +0 -66
- package/vite.config.js +0 -43
- package/vitest.setup.js +0 -26
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { useStorage } from '@vueuse/core'
|
|
2
|
+
import { computed, ref, watch } from 'vue'
|
|
3
|
+
import { useRoute } from 'vue-router'
|
|
4
|
+
import {
|
|
5
|
+
THEME_LIST,
|
|
6
|
+
MODE_OPTIONS,
|
|
7
|
+
ROUTES_TO_WATCH,
|
|
8
|
+
DEFAULT_THEME_CONFIG,
|
|
9
|
+
type ThemeOption,
|
|
10
|
+
type ModeOption,
|
|
11
|
+
} from '../constants/themes'
|
|
12
|
+
|
|
13
|
+
// * Keep them outside the function so that it is not reset each time the composable is called.
|
|
14
|
+
const modeTemplateRefsToWatch = ref<Map<string, { element:HTMLElement, modeOverride?: typeof MODE_OPTIONS[number] }>>(new Map())
|
|
15
|
+
const contentTemplateRefsToWatch = ref<Map<string, { element:HTMLElement, modeOverride?: typeof MODE_OPTIONS[number] }>>(new Map())
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Theme: all the primitives defined for the customer.
|
|
19
|
+
*
|
|
20
|
+
* Mode: the semantic colors to be applied mostly to the UiPage.
|
|
21
|
+
*
|
|
22
|
+
* Content mode: the semantic colors to be applied to the content of the page:
|
|
23
|
+
* - The route content of the page
|
|
24
|
+
* - Modals
|
|
25
|
+
*/
|
|
26
|
+
const themeAndMode = useStorage<{
|
|
27
|
+
theme: ThemeOption,
|
|
28
|
+
mode: ModeOption,
|
|
29
|
+
contentMode: ModeOption
|
|
30
|
+
}>(
|
|
31
|
+
'themeAndMode',
|
|
32
|
+
DEFAULT_THEME_CONFIG
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
export default function useThemeAndModes (
|
|
36
|
+
{ themeOverride, modeOverride, contentModeOverride }:
|
|
37
|
+
{ themeOverride?: ThemeOption, modeOverride?: ModeOption, contentModeOverride?: ModeOption } = {}
|
|
38
|
+
) {
|
|
39
|
+
/**
|
|
40
|
+
* Use overrides if provided, otherwise use stored values
|
|
41
|
+
* Overrides are not saved as preferences to localStorage
|
|
42
|
+
*/
|
|
43
|
+
const hasOverrides = !!(themeOverride || modeOverride || contentModeOverride)
|
|
44
|
+
const effectiveTheme = themeOverride || themeAndMode.value.theme
|
|
45
|
+
const effectiveMode = modeOverride || themeAndMode.value.mode
|
|
46
|
+
const effectiveContentMode = contentModeOverride || themeAndMode.value.contentMode
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Set the `data-colors-primitive` and `data-colors-semantic` attributes on the body element.
|
|
50
|
+
* If a custom dynamic theme token map is stored in localStorage, apply those as inline styles
|
|
51
|
+
* so they override the static primitive tokens.
|
|
52
|
+
* To be used only once per app, in the root component.
|
|
53
|
+
*/
|
|
54
|
+
function initOnAppMounted () {
|
|
55
|
+
document.querySelector('body')!.setAttribute('data-colors-primitive', effectiveTheme)
|
|
56
|
+
document.querySelector('body')!.setAttribute('data-colors-semantic', effectiveMode)
|
|
57
|
+
applyStoredDynamicTokens()
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Register watchers for the mode and content mode.
|
|
62
|
+
* To be used only once per app, in the root component.
|
|
63
|
+
*/
|
|
64
|
+
function registerWatchers () {
|
|
65
|
+
// Resolve the mode at apply-time rather than capturing it once: an explicit
|
|
66
|
+
// override always wins, otherwise read the CURRENT stored value. This lets a
|
|
67
|
+
// stored mode updated after mount (e.g. the workspace theme mode loaded
|
|
68
|
+
// asynchronously) apply on element (re)registration and navigation, instead
|
|
69
|
+
// of the watcher re-asserting a value captured at registerWatchers() time.
|
|
70
|
+
const resolveMode = () => modeOverride || themeAndMode.value.mode
|
|
71
|
+
const resolveContentMode = () => contentModeOverride || themeAndMode.value.contentMode
|
|
72
|
+
|
|
73
|
+
watch(
|
|
74
|
+
() => Array.from(modeTemplateRefsToWatch.value.values()),
|
|
75
|
+
() => updateModeInternal({ mode: resolveMode(), hasOverrides }),
|
|
76
|
+
{ immediate: true }
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
watch(
|
|
80
|
+
() => Array.from(contentTemplateRefsToWatch.value.values()),
|
|
81
|
+
() => updateContentModeInternal({ mode: resolveContentMode(), hasOverrides }),
|
|
82
|
+
{ immediate: true }
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
const route = useRoute()
|
|
86
|
+
|
|
87
|
+
watch(
|
|
88
|
+
() => route?.name,
|
|
89
|
+
(routeName) => {
|
|
90
|
+
if (!routeName) { return }
|
|
91
|
+
if (ROUTES_TO_WATCH.includes(routeName.toString() as typeof ROUTES_TO_WATCH[number])) {
|
|
92
|
+
updateContentModeInternal({ mode: resolveContentMode(), hasOverrides })
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
{ immediate: true }
|
|
96
|
+
)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Components and their elements such as the UiPage (and others where we want to override the mode),
|
|
101
|
+
* are available later in the lifecycle of the app. This function allows to add them to the watch list
|
|
102
|
+
* so that their `data-colors-semantic` attribute can be updated when the mode is set.
|
|
103
|
+
* @param listType Whether to consider it a main element such as the UiPage or a content element such as the page's content.
|
|
104
|
+
* @param descriptor Object containing the selector, the element and an optional mode override.
|
|
105
|
+
* @param descriptor.modeOverride Preferred mode for this element. Can be overridden in dev by the `ThemePicker.vue` component.
|
|
106
|
+
* @returns void
|
|
107
|
+
*/
|
|
108
|
+
function addElementToWatch (
|
|
109
|
+
listType: 'mode' | 'content',
|
|
110
|
+
{ selector, element, modeOverride }
|
|
111
|
+
:
|
|
112
|
+
{ selector: string, element: HTMLElement, modeOverride?: typeof MODE_OPTIONS[number] }
|
|
113
|
+
) {
|
|
114
|
+
const list = listType === 'mode' ? modeTemplateRefsToWatch : contentTemplateRefsToWatch
|
|
115
|
+
// * Note: we want to update the value of the descriptor as the DOM element
|
|
116
|
+
// * might have changed (e.g. route change = new content) so we need that
|
|
117
|
+
// * new value to be updated for the watchers to affect the right element.
|
|
118
|
+
// * If we do not override the value here, the watch will affect the
|
|
119
|
+
// * initially set DOM reference instead of the one we want to target.
|
|
120
|
+
list.value.set(selector, { element, modeOverride })
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return {
|
|
124
|
+
initOnAppMounted,
|
|
125
|
+
registerWatchers,
|
|
126
|
+
addElementToWatch,
|
|
127
|
+
updateContentMode,
|
|
128
|
+
|
|
129
|
+
updateTheme,
|
|
130
|
+
updateMode,
|
|
131
|
+
|
|
132
|
+
themeList: THEME_LIST,
|
|
133
|
+
modeOptions: MODE_OPTIONS,
|
|
134
|
+
|
|
135
|
+
theme: effectiveTheme,
|
|
136
|
+
mode: effectiveMode,
|
|
137
|
+
contentMode: effectiveContentMode,
|
|
138
|
+
|
|
139
|
+
// Reactive counterparts of the values above, which are captured once at
|
|
140
|
+
// call time. Bind to these when the UI must follow external updates to the
|
|
141
|
+
// stored state (e.g. ThemePicker reflecting a mode set elsewhere).
|
|
142
|
+
currentTheme: computed(() => themeOverride || themeAndMode.value.theme),
|
|
143
|
+
currentMode: computed(() => modeOverride || themeAndMode.value.mode),
|
|
144
|
+
currentContentMode: computed(() => contentModeOverride || themeAndMode.value.contentMode),
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function updateTheme (theme: ThemeOption) {
|
|
149
|
+
themeAndMode.value.theme = theme
|
|
150
|
+
document.querySelector('body')!.setAttribute('data-colors-primitive', theme)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function updateMode (mode: ModeOption) {
|
|
154
|
+
themeAndMode.value.mode = mode
|
|
155
|
+
document.querySelector('body')!.setAttribute('data-colors-semantic', mode)
|
|
156
|
+
|
|
157
|
+
const UiPageElement = modeTemplateRefsToWatch.value.get('[data-name="ui-page-wrapper"]')
|
|
158
|
+
UiPageElement?.element.setAttribute('data-colors-semantic', mode)
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Only exported for the `ThemePicker.vue` component to be able to update the content mode.
|
|
163
|
+
* NOT for general use.
|
|
164
|
+
* @param mode light|dark
|
|
165
|
+
*/
|
|
166
|
+
function updateContentMode (mode: ModeOption) {
|
|
167
|
+
updateContentModeInternal({ mode, hasOverrides: false, ignoreElementOverrides: true })
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function updateModeInternal (
|
|
171
|
+
{ mode, hasOverrides = false }:
|
|
172
|
+
{ mode: ModeOption, hasOverrides?: boolean }
|
|
173
|
+
) {
|
|
174
|
+
// Only save to localStorage when NOT using temporary overrides
|
|
175
|
+
if (!hasOverrides) {
|
|
176
|
+
themeAndMode.value.mode = mode
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Always maintain element-level overrides
|
|
180
|
+
for (const { element, modeOverride } of modeTemplateRefsToWatch.value.values()) {
|
|
181
|
+
const effectiveMode = modeOverride || mode
|
|
182
|
+
element.setAttribute('data-colors-semantic', effectiveMode)
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function updateContentModeInternal (
|
|
187
|
+
{ mode, hasOverrides = false, ignoreElementOverrides = false }:
|
|
188
|
+
{ mode: ModeOption, hasOverrides?: boolean, ignoreElementOverrides?: boolean }
|
|
189
|
+
) {
|
|
190
|
+
// Only save to localStorage when NOT using temporary overrides
|
|
191
|
+
if (!hasOverrides) {
|
|
192
|
+
themeAndMode.value.contentMode = mode
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Apply to all content elements
|
|
196
|
+
// When explicitly updating (e.g., via ThemePicker), ignore element-level overrides
|
|
197
|
+
for (const { element, modeOverride } of contentTemplateRefsToWatch.value.values()) {
|
|
198
|
+
const effectiveMode = ignoreElementOverrides ? mode : (modeOverride || mode)
|
|
199
|
+
element.setAttribute('data-colors-semantic', effectiveMode)
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
const DYNAMIC_TOKENS_STORAGE_KEY = 'customThemeTokens'
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Reads a pre-computed token map from localStorage and applies each entry
|
|
207
|
+
* as an inline style on document.body. The token map is written by the
|
|
208
|
+
* theme playground (appThemePersistence) which handles OKLCH generation.
|
|
209
|
+
* This function has zero external dependencies — it just sets CSS properties.
|
|
210
|
+
*/
|
|
211
|
+
function applyStoredDynamicTokens () {
|
|
212
|
+
try {
|
|
213
|
+
if (localStorage.getItem('ls-internal-theming') !== 'true') return
|
|
214
|
+
|
|
215
|
+
const stored = localStorage.getItem(DYNAMIC_TOKENS_STORAGE_KEY)
|
|
216
|
+
if (!stored) return
|
|
217
|
+
|
|
218
|
+
const tokens: Record<string, string> = JSON.parse(stored)
|
|
219
|
+
for (const [property, value] of Object.entries(tokens)) {
|
|
220
|
+
document.documentElement.style.setProperty(property, value)
|
|
221
|
+
}
|
|
222
|
+
} catch {
|
|
223
|
+
// Ignore wrongly formatted values or JSON parsing errors
|
|
224
|
+
}
|
|
225
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export const THEMES = {
|
|
2
|
+
LIVESTORM: 'Livestorm',
|
|
3
|
+
CUSTOMER1: 'customer1',
|
|
4
|
+
CUSTOMER2: 'customer2',
|
|
5
|
+
CUSTOMER3: 'customer3',
|
|
6
|
+
} as const
|
|
7
|
+
|
|
8
|
+
export const MODES = {
|
|
9
|
+
LIGHT: 'light',
|
|
10
|
+
DARK: 'dark',
|
|
11
|
+
} as const
|
|
12
|
+
|
|
13
|
+
export const THEME_LIST = Object.values(THEMES)
|
|
14
|
+
export const MODE_OPTIONS = Object.values(MODES)
|
|
15
|
+
|
|
16
|
+
export type ThemeOption = typeof THEME_LIST[number]
|
|
17
|
+
export type ModeOption = typeof MODE_OPTIONS[number]
|
|
18
|
+
|
|
19
|
+
// Generate theme mapping for different contexts (e.g., Storybook toolbar values)
|
|
20
|
+
export const THEME_MAPPING = Object.fromEntries(
|
|
21
|
+
Object.entries(THEMES).map(([key, value]: [string, ThemeOption]) => [key.toLowerCase(), value])
|
|
22
|
+
) as Record<string, ThemeOption>
|
|
23
|
+
|
|
24
|
+
export type ThemeKey = keyof typeof THEME_MAPPING
|
|
25
|
+
|
|
26
|
+
// Routes that need special handling for content mode
|
|
27
|
+
export const ROUTES_TO_WATCH = ['signup', 'signin', 'forgot-password', 'reset-password'] as const
|
|
28
|
+
|
|
29
|
+
// Default theme and mode configuration
|
|
30
|
+
export const DEFAULT_THEME_CONFIG = {
|
|
31
|
+
theme: THEMES.LIVESTORM,
|
|
32
|
+
mode: MODES.DARK,
|
|
33
|
+
contentMode: MODES.LIGHT,
|
|
34
|
+
} as const
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@reference '@livestorm/ui-tokens/output/supernova/index.css';
|
|
1
2
|
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap');
|
|
2
3
|
|
|
3
4
|
body {
|
|
@@ -24,6 +25,6 @@ body {
|
|
|
24
25
|
- An element needs a keyboard to function (like text <inputs>)
|
|
25
26
|
https://css-tricks.com/almanac/selectors/f/focus-visible/#aa-how-do-browsers-determine-when-something-is-focus-visible
|
|
26
27
|
*/
|
|
27
|
-
*:focus-visible:not(input, textarea, .v-popper__popper, .focus-indicator-none, [contenteditable]) {
|
|
28
|
-
@apply ring-
|
|
28
|
+
*:focus-visible:not(input, .base-input, textarea, .v-popper__popper, .focus-indicator-none, [contenteditable]) {
|
|
29
|
+
@apply ring-2 ring-inset ring-focus-ring;
|
|
29
30
|
}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/* === KEYFRAMES === */
|
|
2
|
+
@keyframes scale-in {
|
|
3
|
+
from {
|
|
4
|
+
transform: scale(0.6);
|
|
5
|
+
opacity: 0;
|
|
6
|
+
}
|
|
7
|
+
to {
|
|
8
|
+
transform: scale(1);
|
|
9
|
+
opacity: 1;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@keyframes fade-scale {
|
|
14
|
+
from {
|
|
15
|
+
transform: scale(0.95);
|
|
16
|
+
opacity: 0;
|
|
17
|
+
}
|
|
18
|
+
to {
|
|
19
|
+
transform: scale(1);
|
|
20
|
+
opacity: 1;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@keyframes slide-down {
|
|
25
|
+
from {
|
|
26
|
+
transform: translateY(-8px);
|
|
27
|
+
opacity: 0;
|
|
28
|
+
}
|
|
29
|
+
to {
|
|
30
|
+
transform: translateY(0);
|
|
31
|
+
opacity: 1;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@keyframes slide-up {
|
|
36
|
+
from {
|
|
37
|
+
transform: translateY(8px);
|
|
38
|
+
opacity: 0;
|
|
39
|
+
}
|
|
40
|
+
to {
|
|
41
|
+
transform: translateY(0);
|
|
42
|
+
opacity: 1;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@keyframes spring {
|
|
47
|
+
0% {
|
|
48
|
+
transform: scale(0.8);
|
|
49
|
+
opacity: 0;
|
|
50
|
+
}
|
|
51
|
+
50% {
|
|
52
|
+
transform: scale(1.02);
|
|
53
|
+
opacity: 0.8;
|
|
54
|
+
}
|
|
55
|
+
100% {
|
|
56
|
+
transform: scale(1);
|
|
57
|
+
opacity: 1;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@keyframes tooltip-fade {
|
|
62
|
+
from {
|
|
63
|
+
transform: scale(0.9);
|
|
64
|
+
opacity: 0;
|
|
65
|
+
}
|
|
66
|
+
to {
|
|
67
|
+
transform: scale(1);
|
|
68
|
+
opacity: 1;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@keyframes hover-lift {
|
|
73
|
+
from {
|
|
74
|
+
transform: translateY(4px) scale(0.98);
|
|
75
|
+
opacity: 0;
|
|
76
|
+
}
|
|
77
|
+
to {
|
|
78
|
+
transform: translateY(0) scale(1);
|
|
79
|
+
opacity: 1;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@keyframes accordion-expand {
|
|
84
|
+
from {
|
|
85
|
+
opacity: 0;
|
|
86
|
+
transform: translateY(-10px);
|
|
87
|
+
}
|
|
88
|
+
to {
|
|
89
|
+
opacity: 1;
|
|
90
|
+
transform: translateY(0);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@keyframes slideDownAndFade {
|
|
95
|
+
from {
|
|
96
|
+
opacity: 0;
|
|
97
|
+
transform: translateY(-4px);
|
|
98
|
+
}
|
|
99
|
+
to {
|
|
100
|
+
opacity: 1;
|
|
101
|
+
transform: translateY(0);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@keyframes slideUpAndFade {
|
|
106
|
+
from {
|
|
107
|
+
opacity: 1;
|
|
108
|
+
transform: translateY(0);
|
|
109
|
+
}
|
|
110
|
+
to {
|
|
111
|
+
opacity: 0;
|
|
112
|
+
transform: translateY(-4px);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* === ANIMATION CLASSES === */
|
|
117
|
+
.animate-scale-in {
|
|
118
|
+
animation-name: scale-in;
|
|
119
|
+
animation-duration: 150ms;
|
|
120
|
+
animation-timing-function: ease-out;
|
|
121
|
+
animation-fill-mode: both;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.animate-fade-scale {
|
|
125
|
+
animation-name: fade-scale;
|
|
126
|
+
animation-duration: 150ms;
|
|
127
|
+
animation-timing-function: ease-out;
|
|
128
|
+
animation-fill-mode: both;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.animate-slide-down {
|
|
132
|
+
animation-name: slide-down;
|
|
133
|
+
animation-duration: 150ms;
|
|
134
|
+
animation-timing-function: ease-out;
|
|
135
|
+
animation-fill-mode: both;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.animate-slide-up {
|
|
139
|
+
animation-name: slide-up;
|
|
140
|
+
animation-duration: 150ms;
|
|
141
|
+
animation-timing-function: ease-out;
|
|
142
|
+
animation-fill-mode: both;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.animate-spring {
|
|
146
|
+
animation-name: spring;
|
|
147
|
+
animation-duration: 300ms;
|
|
148
|
+
animation-timing-function: ease-out;
|
|
149
|
+
animation-fill-mode: both;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.animate-tooltip-fade {
|
|
153
|
+
animation-name: tooltip-fade;
|
|
154
|
+
animation-duration: 150ms;
|
|
155
|
+
animation-timing-function: ease-out;
|
|
156
|
+
animation-fill-mode: both;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.animate-hover-lift {
|
|
160
|
+
animation-name: hover-lift;
|
|
161
|
+
animation-duration: 200ms;
|
|
162
|
+
animation-timing-function: ease-out;
|
|
163
|
+
animation-fill-mode: both;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.animate-accordion-expand {
|
|
167
|
+
animation-name: accordion-expand;
|
|
168
|
+
animation-duration: 200ms;
|
|
169
|
+
animation-timing-function: ease-out;
|
|
170
|
+
animation-fill-mode: both;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/* === ANIMATION UTILITIES === */
|
|
174
|
+
/* Animation duration classes (following Tailwind naming conventions) */
|
|
175
|
+
.animate-duration {
|
|
176
|
+
animation-duration: 0.08s;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.animate-duration-75 {
|
|
180
|
+
animation-duration: 75ms;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.animate-duration-100 {
|
|
184
|
+
animation-duration: 100ms;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.animate-duration-150 {
|
|
188
|
+
animation-duration: 150ms;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.animate-duration-200 {
|
|
192
|
+
animation-duration: 200ms;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.animate-duration-300 {
|
|
196
|
+
animation-duration: 300ms;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.animate-duration-500 {
|
|
200
|
+
animation-duration: 500ms;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.animate-duration-700 {
|
|
204
|
+
animation-duration: 700ms;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.animate-duration-1000 {
|
|
208
|
+
animation-duration: 1000ms;
|
|
209
|
+
}
|
|
@@ -3,17 +3,21 @@
|
|
|
3
3
|
.fade-leave-active {
|
|
4
4
|
transition: opacity .3s ease;
|
|
5
5
|
}
|
|
6
|
+
|
|
6
7
|
.fade-fast-enter-active,
|
|
7
8
|
.fade-fast-leave-active {
|
|
8
9
|
transition: opacity .1s ease;
|
|
9
10
|
}
|
|
11
|
+
|
|
10
12
|
.fade-delay-enter-active,
|
|
11
13
|
.fade-delay-leave-active {
|
|
12
14
|
transition: opacity .3s ease;
|
|
13
15
|
}
|
|
16
|
+
|
|
14
17
|
.fade-delay-enter-active {
|
|
15
18
|
transition-delay: .5s;
|
|
16
19
|
}
|
|
20
|
+
|
|
17
21
|
.fade-enter-from,
|
|
18
22
|
.fade-leave-to,
|
|
19
23
|
.fade-delay-enter-from,
|
|
@@ -30,8 +34,9 @@
|
|
|
30
34
|
.base-modal-layout,
|
|
31
35
|
.modal-wrapper {
|
|
32
36
|
perspective: 1300px;
|
|
33
|
-
|
|
34
|
-
>
|
|
37
|
+
|
|
38
|
+
& > section,
|
|
39
|
+
& > .shell {
|
|
35
40
|
transition: transform .2s, opacity .2s;
|
|
36
41
|
transform-style: preserve-3d;
|
|
37
42
|
}
|
|
@@ -45,13 +50,15 @@
|
|
|
45
50
|
transition: transform .2s, opacity .2s;
|
|
46
51
|
}
|
|
47
52
|
}
|
|
53
|
+
|
|
48
54
|
.modal-enter-from,
|
|
49
55
|
.modal-leave-to {
|
|
50
|
-
> .base-modal-layout > section,
|
|
51
|
-
> .modal-wrapper > .shell {
|
|
56
|
+
& > .base-modal-layout > section,
|
|
57
|
+
& > .modal-wrapper > .shell {
|
|
52
58
|
opacity: 0;
|
|
53
59
|
}
|
|
54
|
-
|
|
60
|
+
|
|
61
|
+
& > .base-modal-layout > section {
|
|
55
62
|
@apply scale-95;
|
|
56
63
|
}
|
|
57
64
|
|