@getmicdrop/svelte-components 5.19.0 → 5.20.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/dist/base.css +18 -0
- package/dist/calendar/AboutShow/AboutShow.svelte +191 -191
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte +803 -801
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte.d.ts.map +1 -1
- package/dist/calendar/FAQs/FAQs.svelte +88 -88
- package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +140 -140
- package/dist/calendar/OrderSummary/OrderSummary.svelte +461 -461
- package/dist/calendar/PublicCard/PublicCard.svelte +164 -164
- package/dist/calendar/ShowCard/ShowCard.svelte +180 -180
- package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +80 -80
- package/dist/calendar/index.js +15 -15
- package/dist/components/Heading.spec.js +89 -89
- package/dist/components/Heading.svelte +66 -60
- package/dist/components/Heading.svelte.d.ts +1 -0
- package/dist/components/Heading.svelte.d.ts.map +1 -1
- package/dist/components/Layout/AppShell.svelte +104 -104
- package/dist/components/Layout/ContentSection.svelte +80 -80
- package/dist/components/Layout/Grid.svelte +101 -101
- package/dist/components/Layout/Heading.svelte +81 -81
- package/dist/components/Layout/PageContainer.svelte +69 -69
- package/dist/components/Layout/Responsive.svelte +75 -75
- package/dist/components/Layout/Section.svelte +80 -80
- package/dist/components/Layout/ShowOnDesktop.svelte +37 -37
- package/dist/components/Layout/ShowOnMobile.svelte +37 -37
- package/dist/components/Layout/Sidebar.svelte +108 -108
- package/dist/components/Layout/Stack.spec.js +1 -1
- package/dist/components/Layout/Stack.svelte +52 -52
- package/dist/components/Layout/Text.svelte +87 -87
- package/dist/components/Layout/TwoColumn.svelte +108 -108
- package/dist/components/Text.spec.js +89 -89
- package/dist/components/Text.svelte +64 -53
- package/dist/components/Text.svelte.d.ts +2 -1
- package/dist/components/Text.svelte.d.ts.map +1 -1
- package/dist/config.js +151 -151
- package/dist/config.spec.js +29 -29
- package/dist/constants/formOptions.d.ts +2 -5
- package/dist/constants/formOptions.d.ts.map +1 -1
- package/dist/constants/formOptions.js +48 -48
- package/dist/constants/formOptions.spec.js +2 -7
- package/dist/constants/validation.js +91 -91
- package/dist/constants/validation.spec.js +64 -64
- package/dist/datetime/README.md +323 -323
- package/dist/datetime/__tests__/format.test.js +1 -1
- package/dist/datetime/__tests__/parse.test.js +1 -1
- package/dist/datetime/__tests__/timezone.test.js +1 -1
- package/dist/datetime/parse.js +1 -1
- package/dist/forms/createFormStore.svelte.js +0 -1
- package/dist/forms/createFormStore.svelte.spec.js +0 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +85 -66
- package/dist/index.spec.js +369 -369
- package/dist/patterns/chat/ChatActivityNotice.spec.js +59 -59
- package/dist/patterns/chat/ChatActivityNotice.svelte +41 -41
- package/dist/patterns/chat/ChatBubble.spec.js +91 -91
- package/dist/patterns/chat/ChatBubble.svelte +103 -103
- package/dist/patterns/chat/ChatContainer.spec.js +30 -30
- package/dist/patterns/chat/ChatContainer.svelte +46 -46
- package/dist/patterns/chat/ChatDateDivider.spec.js +30 -30
- package/dist/patterns/chat/ChatDateDivider.svelte +27 -27
- package/dist/patterns/chat/ChatInvitationBubble.spec.js +46 -46
- package/dist/patterns/chat/ChatInvitationBubble.svelte +46 -46
- package/dist/patterns/chat/ChatInvitationNotice.spec.js +32 -32
- package/dist/patterns/chat/ChatInvitationNotice.svelte +36 -36
- package/dist/patterns/chat/ChatMessageGroup.spec.js +58 -58
- package/dist/patterns/chat/ChatMessageGroup.svelte +57 -57
- package/dist/patterns/chat/ChatSlotUpdate.spec.js +65 -65
- package/dist/patterns/chat/ChatSlotUpdate.svelte +46 -46
- package/dist/patterns/chat/ChatStatusBadge.spec.js +79 -79
- package/dist/patterns/chat/ChatStatusBadge.svelte +91 -91
- package/dist/patterns/chat/ChatStatusTransition.spec.js +81 -81
- package/dist/patterns/chat/ChatStatusTransition.svelte +64 -64
- package/dist/patterns/chat/ChatTextBubble.spec.js +35 -35
- package/dist/patterns/chat/ChatTextBubble.svelte +41 -41
- package/dist/patterns/chat/index.js +22 -22
- package/dist/patterns/data/DataGrid.svelte +45 -45
- package/dist/patterns/data/DataList.svelte +24 -24
- package/dist/patterns/data/DataTable.svelte +45 -45
- package/dist/patterns/data/index.js +4 -4
- package/dist/patterns/forms/FormActions.spec.js +95 -95
- package/dist/patterns/forms/FormActions.stories.svelte +97 -97
- package/dist/patterns/forms/FormActions.svelte +46 -46
- package/dist/patterns/forms/FormGrid.svelte +33 -33
- package/dist/patterns/forms/FormSection.svelte +33 -32
- package/dist/patterns/forms/FormSection.svelte.d.ts +2 -0
- package/dist/patterns/forms/FormSection.svelte.d.ts.map +1 -1
- package/dist/patterns/forms/FormValidationSummary.stories.svelte +97 -97
- package/dist/patterns/forms/FormValidationSummary.svelte +82 -82
- package/dist/patterns/forms/index.js +5 -5
- package/dist/patterns/index.js +21 -21
- package/dist/patterns/layout/Sidebar.svelte +39 -39
- package/dist/patterns/layout/SidebarTestWrapper.svelte +34 -34
- package/dist/patterns/layout/Stack.svelte +61 -61
- package/dist/patterns/layout/index.js +29 -29
- package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
- package/dist/patterns/navigation/BottomNav.svelte +82 -82
- package/dist/patterns/navigation/Header.stories.svelte +77 -77
- package/dist/patterns/navigation/Header.svelte +263 -263
- package/dist/patterns/navigation/index.js +3 -3
- package/dist/patterns/page/PageHeader.svelte +49 -49
- package/dist/patterns/page/PageLayout.svelte +40 -40
- package/dist/patterns/page/PageLoader.spec.js +57 -57
- package/dist/patterns/page/PageLoader.stories.svelte +137 -137
- package/dist/patterns/page/PageLoader.svelte +62 -62
- package/dist/patterns/page/SectionHeader.svelte +51 -51
- package/dist/patterns/page/index.js +5 -5
- package/dist/presets/badges.js +112 -112
- package/dist/presets/buttons.js +76 -76
- package/dist/presets/index.js +9 -9
- package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
- package/dist/primitives/Accordion/Accordion.svelte +62 -62
- package/dist/primitives/Accordion/AccordionItem.svelte +103 -103
- package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte +107 -107
- package/dist/primitives/Accordion/AccordionToggleWrapper.test.svelte +28 -28
- package/dist/primitives/Alert/Alert.spec.js +173 -173
- package/dist/primitives/Alert/Alert.stories.svelte +88 -88
- package/dist/primitives/Alert/Alert.svelte +72 -72
- package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
- package/dist/primitives/Avatar/Avatar.svelte +66 -66
- package/dist/primitives/AvatarButton/AvatarButton.svelte +57 -57
- package/dist/primitives/Badges/Badge.spec.js +144 -144
- package/dist/primitives/Badges/Badge.stories.svelte +86 -86
- package/dist/primitives/Badges/Badge.svelte +99 -99
- package/dist/primitives/BottomSheet/BottomSheet.spec.js +238 -238
- package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
- package/dist/primitives/BottomSheet/BottomSheet.svelte +115 -115
- package/dist/primitives/BottomSheet/BottomSheetWithActions.test.svelte +20 -20
- package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +123 -123
- package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
- package/dist/primitives/Breadcrumb/Breadcrumb.svelte +107 -107
- package/dist/primitives/Button/Button.spec.js +225 -225
- package/dist/primitives/Button/Button.stories.svelte +76 -76
- package/dist/primitives/Button/Button.svelte +278 -278
- package/dist/primitives/Button/ButtonGroup.spec.js +44 -44
- package/dist/primitives/Button/ButtonGroup.svelte +50 -50
- package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -146
- package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
- package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
- package/dist/primitives/Card.spec.js +49 -49
- package/dist/primitives/Card.stories.svelte +22 -22
- package/dist/primitives/Card.svelte +28 -28
- package/dist/primitives/CardAction/CardAction.svelte +68 -68
- package/dist/primitives/Checkbox/Checkbox.spec.js +4 -15
- package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
- package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
- package/dist/primitives/DarkModeToggle.spec.js +390 -390
- package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
- package/dist/primitives/DarkModeToggle.svelte +147 -147
- package/dist/primitives/Drawer/Drawer.stories.svelte +100 -100
- package/dist/primitives/Drawer/Drawer.svelte +224 -224
- package/dist/primitives/Drawer/DrawerTestWrapper.svelte +86 -86
- package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
- package/dist/primitives/Dropdown/Dropdown.svelte +179 -179
- package/dist/primitives/Dropdown/DropdownDivider.spec.js +30 -30
- package/dist/primitives/Dropdown/DropdownDivider.svelte +9 -9
- package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
- package/dist/primitives/Dropdown/DropdownItemTestWrapper.svelte +43 -43
- package/dist/primitives/Helper/Helper.spec.js +57 -57
- package/dist/primitives/Helper/Helper.svelte +33 -33
- package/dist/primitives/Icons/ArrowLeft.svelte +21 -21
- package/dist/primitives/Icons/ArrowRight.svelte +21 -21
- package/dist/primitives/Icons/Availability.svelte +27 -27
- package/dist/primitives/Icons/Back.svelte +27 -27
- package/dist/primitives/Icons/CheckCircle.svelte +19 -19
- package/dist/primitives/Icons/CheckCircleOutline.svelte +28 -28
- package/dist/primitives/Icons/ChevronLeft.svelte +17 -17
- package/dist/primitives/Icons/ChevronRight.svelte +17 -17
- package/dist/primitives/Icons/Copy.svelte +28 -28
- package/dist/primitives/Icons/Cross.svelte +18 -18
- package/dist/primitives/Icons/DownArrow.svelte +21 -21
- package/dist/primitives/Icons/ErrorCircle.svelte +19 -19
- package/dist/primitives/Icons/FacebookIcon.svelte +15 -15
- package/dist/primitives/Icons/Home.svelte +28 -28
- package/dist/primitives/Icons/Icon.spec.js +175 -175
- package/dist/primitives/Icons/Icon.stories.svelte +100 -100
- package/dist/primitives/Icons/Icon.svelte +79 -79
- package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
- package/dist/primitives/Icons/ImageOutline.svelte +21 -21
- package/dist/primitives/Icons/Info.svelte +20 -20
- package/dist/primitives/Icons/InstagramIcon.svelte +21 -21
- package/dist/primitives/Icons/LogoInstagram.svelte +15 -15
- package/dist/primitives/Icons/Message.svelte +28 -28
- package/dist/primitives/Icons/MoonIcon.svelte +18 -18
- package/dist/primitives/Icons/More.svelte +34 -34
- package/dist/primitives/Icons/MoreHori.spec.js +67 -67
- package/dist/primitives/Icons/MoreHori.svelte +35 -35
- package/dist/primitives/Icons/Notification.svelte +27 -27
- package/dist/primitives/Icons/Payment.svelte +27 -27
- package/dist/primitives/Icons/Profile.svelte +34 -34
- package/dist/primitives/Icons/Reload.svelte +42 -42
- package/dist/primitives/Icons/Shows.svelte +34 -34
- package/dist/primitives/Icons/Signout.svelte +34 -34
- package/dist/primitives/Icons/SunIcon.svelte +21 -21
- package/dist/primitives/Icons/TiktokIcon.svelte +15 -15
- package/dist/primitives/Icons/TrashBinOutline.svelte +21 -21
- package/dist/primitives/Icons/TwitterIcon.svelte +15 -15
- package/dist/primitives/Icons/WarningIcon.spec.js +30 -30
- package/dist/primitives/Icons/WarningIcon.svelte +24 -24
- package/dist/primitives/Input/Input.spec.js +1237 -1237
- package/dist/primitives/Input/Input.stories.svelte +139 -139
- package/dist/primitives/Input/Input.svelte +444 -444
- package/dist/primitives/Input/Select.spec.js +632 -632
- package/dist/primitives/Input/Select.stories.svelte +112 -112
- package/dist/primitives/Input/Select.svelte +252 -252
- package/dist/primitives/Input/Textarea.stories.svelte +137 -137
- package/dist/primitives/Input/Textarea.svelte +105 -105
- package/dist/primitives/Label/Label.svelte +37 -37
- package/dist/primitives/LandingButton/LandingButton.spec.js +61 -61
- package/dist/primitives/LandingButton/LandingButton.svelte +92 -92
- package/dist/primitives/MenuItem/MenuItem.spec.js +130 -130
- package/dist/primitives/MenuItem/MenuItem.svelte +85 -85
- package/dist/primitives/Modal/Modal.spec.js +314 -314
- package/dist/primitives/Modal/Modal.stories.svelte +86 -86
- package/dist/primitives/Modal/Modal.svelte +181 -181
- package/dist/primitives/NavItem/NavItem.spec.js +97 -97
- package/dist/primitives/NavItem/NavItem.svelte +75 -75
- package/dist/primitives/NumberInput/NumberInput.svelte +113 -113
- package/dist/primitives/Pagination/DotIndicator.svelte +66 -0
- package/dist/primitives/Pagination/DotIndicator.svelte.d.ts +18 -0
- package/dist/primitives/Pagination/DotIndicator.svelte.d.ts.map +1 -0
- package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
- package/dist/primitives/Pagination/Pagination.svelte +275 -275
- package/dist/primitives/Radio/Radio.stories.svelte +80 -80
- package/dist/primitives/Radio/Radio.svelte +67 -67
- package/dist/primitives/SearchResultItem/SearchResultItem.spec.js +78 -78
- package/dist/primitives/SearchResultItem/SearchResultItem.svelte +109 -109
- package/dist/primitives/SidebarToggle/SidebarToggle.spec.js +61 -61
- package/dist/primitives/SidebarToggle/SidebarToggle.svelte +55 -55
- package/dist/primitives/Skeleton/CardPlaceholder.svelte +96 -96
- package/dist/primitives/Skeleton/ImagePlaceholder.svelte +68 -68
- package/dist/primitives/Skeleton/ListPlaceholder.svelte +85 -85
- package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
- package/dist/primitives/Skeleton/Skeleton.svelte +55 -55
- package/dist/primitives/Spinner/Spinner.spec.js +84 -84
- package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
- package/dist/primitives/Spinner/Spinner.svelte +52 -52
- package/dist/primitives/Tabs/TabItem.svelte +52 -52
- package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
- package/dist/primitives/Tabs/Tabs.svelte +137 -137
- package/dist/primitives/Toggle.spec.js +221 -221
- package/dist/primitives/Toggle.stories.svelte +92 -92
- package/dist/primitives/Toggle.svelte +141 -141
- package/dist/primitives/ToggleTestWrapper.svelte +30 -30
- package/dist/primitives/Tooltip/Tooltip.spec.js +126 -126
- package/dist/primitives/Tooltip/Tooltip.svelte +83 -83
- package/dist/primitives/Typography/Typography.svelte +53 -53
- package/dist/primitives/ValidationError.spec.js +103 -103
- package/dist/primitives/ValidationError.stories.svelte +112 -112
- package/dist/primitives/ValidationError.svelte +29 -29
- package/dist/primitives/index.d.ts +1 -0
- package/dist/primitives/index.js +114 -113
- package/dist/recipes/CropImage/CropImage.spec.js +208 -208
- package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
- package/dist/recipes/CropImage/CropImage.svelte +241 -241
- package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
- package/dist/recipes/ImageUploader/ImageUploader.svelte +994 -994
- package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte +75 -75
- package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
- package/dist/recipes/feedback/ErrorDisplay.stories.svelte +113 -113
- package/dist/recipes/feedback/ErrorDisplay.svelte +67 -67
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -133
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +176 -176
- package/dist/recipes/feedback/index.js +4 -4
- package/dist/recipes/fields/CheckboxField.svelte +85 -85
- package/dist/recipes/fields/FormField.svelte +58 -58
- package/dist/recipes/fields/RadioGroup.svelte +95 -95
- package/dist/recipes/fields/SelectField.svelte +82 -82
- package/dist/recipes/fields/TextareaField.svelte +101 -101
- package/dist/recipes/fields/ToggleField.svelte +60 -60
- package/dist/recipes/fields/index.js +7 -7
- package/dist/recipes/index.js +24 -24
- package/dist/recipes/inputs/MultiSelect.spec.js +263 -263
- package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
- package/dist/recipes/inputs/MultiSelect.svelte +291 -291
- package/dist/recipes/inputs/OTPInput.spec.js +251 -251
- package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
- package/dist/recipes/inputs/OTPInput.svelte +128 -128
- package/dist/recipes/inputs/PasswordInput.svelte +130 -130
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +142 -142
- package/dist/recipes/inputs/PhoneInput.svelte +254 -254
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +170 -170
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +349 -349
- package/dist/recipes/inputs/Search.svelte +110 -110
- package/dist/recipes/inputs/index.js +8 -8
- package/dist/recipes/inputs/phoneInput/CountrySelector.svelte +240 -240
- package/dist/recipes/modals/AlertModal.svelte +139 -139
- package/dist/recipes/modals/ConfirmationModal.spec.js +396 -396
- package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
- package/dist/recipes/modals/ConfirmationModal.svelte +169 -169
- package/dist/recipes/modals/FeedbackModal.svelte +205 -0
- package/dist/recipes/modals/FeedbackModal.svelte.d.ts +24 -0
- package/dist/recipes/modals/FeedbackModal.svelte.d.ts.map +1 -0
- package/dist/recipes/modals/InputModal.svelte +194 -194
- package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
- package/dist/recipes/modals/ModalStateManager.svelte +77 -77
- package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
- package/dist/recipes/modals/StatusModal.svelte +216 -216
- package/dist/recipes/modals/index.d.ts +1 -0
- package/dist/recipes/modals/index.js +8 -7
- package/dist/schemas/common.js +1 -1
- package/dist/schemas/event.js +1 -1
- package/dist/schemas/order.js +0 -1
- package/dist/schemas/performer.js +1 -1
- package/dist/schemas/promo.js +2 -2
- package/dist/schemas/ticket.js +1 -1
- package/dist/schemas/user.js +1 -2
- package/dist/services/show.service.d.ts +46 -46
- package/dist/stores/auth.d.ts +8 -8
- package/dist/stores/auth.svelte.spec.js +1 -1
- package/dist/stores/index.js +9 -9
- package/dist/stores/toaster.d.ts +3 -3
- package/dist/stores/toaster.js +13 -13
- package/dist/stores/toaster.spec.js +59 -59
- package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
- package/dist/stories/ButtonAuditReview.svelte +427 -427
- package/dist/stories/PatternsGallery.stories.svelte +19 -19
- package/dist/stories/PatternsGallery.svelte +399 -399
- package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
- package/dist/stories/PrimitivesGallery.svelte +756 -756
- package/dist/stories/RecipesGallery.stories.svelte +19 -19
- package/dist/stories/RecipesGallery.svelte +454 -454
- package/dist/stories/button-audit-manifest.json +11186 -11186
- package/dist/tailwind/preset.cjs +87 -82
- package/dist/tailwind/preset.d.cts +2 -0
- package/dist/tailwind/preset.d.cts.map +1 -1
- package/dist/telemetry.js +402 -402
- package/dist/telemetry.server.js +212 -212
- package/dist/telemetry.server.spec.js +437 -437
- package/dist/telemetry.spec.js +1173 -1173
- package/dist/tokens/__tests__/spacing.test.js +2 -2
- package/dist/tokens/__tests__/variants.test.js +12 -4
- package/dist/tokens/base-resets.css +124 -0
- package/dist/tokens/spacing.d.ts +2 -0
- package/dist/tokens/spacing.d.ts.map +1 -1
- package/dist/tokens/spacing.js +1 -0
- package/dist/tokens/tokens.css +87 -87
- package/dist/tokens/typography-base.css +163 -163
- package/dist/tokens/utilities.css +430 -353
- package/dist/tokens/variants.d.ts +4 -4
- package/dist/tokens/variants.js +4 -4
- package/dist/utils/__tests__/auth.test.js +431 -431
- package/dist/utils/apiConfig.d.ts +29 -29
- package/dist/utils/apiConfig.js +117 -117
- package/dist/utils/apiConfig.spec.js +226 -219
- package/dist/utils/auth.d.ts +46 -46
- package/dist/utils/auth.js +195 -195
- package/dist/utils/clickOutside.d.ts +4 -0
- package/dist/utils/clickOutside.d.ts.map +1 -0
- package/dist/utils/clickOutside.js +13 -0
- package/dist/utils/feedbackContext.d.ts +24 -0
- package/dist/utils/feedbackContext.d.ts.map +1 -0
- package/dist/utils/feedbackContext.js +19 -0
- package/dist/utils/fetchHelpers.d.ts.map +1 -1
- package/dist/utils/fetchHelpers.js +1 -0
- package/dist/utils/focusTrap.d.ts +20 -0
- package/dist/utils/focusTrap.d.ts.map +1 -0
- package/dist/utils/focusTrap.js +130 -0
- package/dist/utils/formatters.js +1 -1
- package/dist/utils/greetings.js +187 -187
- package/dist/utils/greetings.spec.js +337 -337
- package/dist/utils/haptic.spec.js +1 -1
- package/dist/utils/imageValidation.js +121 -121
- package/dist/utils/imageValidation.spec.js +223 -223
- package/dist/utils/logger.d.ts +25 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +59 -1
- package/dist/utils/logger.spec.js +99 -1
- package/dist/utils/portal.d.ts +11 -11
- package/dist/utils/portal.js +25 -25
- package/dist/utils/portal.spec.js +143 -143
- package/dist/utils/transitions.d.ts +99 -1
- package/dist/utils/transitions.d.ts.map +1 -1
- package/dist/utils/transitions.js +148 -6
- package/dist/utils/utils/utils.d.ts +2 -2
- package/dist/utils/utils/utils.js +3 -3
- package/dist/utils/utils/utils.spec.js +698 -698
- package/dist/utils/utils.d.ts +41 -41
- package/dist/utils/utils.js +59 -59
- package/dist/utils/utils.spec.js +643 -643
- package/package.json +310 -301
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { logger, configureLogger } from './logger';
|
|
2
|
+
import { logger, configureLogger, createLogger } from './logger';
|
|
3
3
|
describe('logger', () => {
|
|
4
4
|
beforeEach(() => {
|
|
5
5
|
vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
@@ -93,3 +93,101 @@ describe('logger', () => {
|
|
|
93
93
|
});
|
|
94
94
|
});
|
|
95
95
|
});
|
|
96
|
+
describe('createLogger', () => {
|
|
97
|
+
beforeEach(() => {
|
|
98
|
+
vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
99
|
+
vi.spyOn(console, 'info').mockImplementation(() => { });
|
|
100
|
+
vi.spyOn(console, 'warn').mockImplementation(() => { });
|
|
101
|
+
vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
102
|
+
});
|
|
103
|
+
afterEach(() => {
|
|
104
|
+
vi.restoreAllMocks();
|
|
105
|
+
});
|
|
106
|
+
it('wraps bare prefix in brackets', () => {
|
|
107
|
+
const log = createLogger('MF', { enabled: true });
|
|
108
|
+
log.info('hello');
|
|
109
|
+
expect(console.info).toHaveBeenCalledWith('[MF] [INFO] hello');
|
|
110
|
+
});
|
|
111
|
+
it('preserves prefix that already has brackets', () => {
|
|
112
|
+
const log = createLogger('[PP]', { enabled: true });
|
|
113
|
+
log.warn('oops');
|
|
114
|
+
expect(console.warn).toHaveBeenCalledWith('[PP] [WARN] oops');
|
|
115
|
+
});
|
|
116
|
+
it('each instance has independent config', () => {
|
|
117
|
+
const mf = createLogger('MF', { enabled: true });
|
|
118
|
+
const pp = createLogger('PP', { enabled: true, level: 'error' });
|
|
119
|
+
mf.debug('visible');
|
|
120
|
+
pp.debug('filtered');
|
|
121
|
+
expect(console.log).toHaveBeenCalledTimes(1);
|
|
122
|
+
expect(console.log).toHaveBeenCalledWith('[MF] [DEBUG] visible');
|
|
123
|
+
});
|
|
124
|
+
it('configure updates only that instance', () => {
|
|
125
|
+
const a = createLogger('A', { enabled: true });
|
|
126
|
+
const b = createLogger('B', { enabled: true });
|
|
127
|
+
a.configure({ level: 'error' });
|
|
128
|
+
a.info('filtered');
|
|
129
|
+
b.info('visible');
|
|
130
|
+
expect(console.info).toHaveBeenCalledTimes(1);
|
|
131
|
+
expect(console.info).toHaveBeenCalledWith('[B] [INFO] visible');
|
|
132
|
+
});
|
|
133
|
+
it('does not affect the singleton logger', () => {
|
|
134
|
+
configureLogger({ enabled: true, level: 'debug', prefix: '[MicDrop]' });
|
|
135
|
+
const custom = createLogger('Custom', { enabled: true });
|
|
136
|
+
custom.configure({ level: 'error' });
|
|
137
|
+
logger.debug('singleton still works');
|
|
138
|
+
expect(console.log).toHaveBeenCalledWith('[MicDrop] [DEBUG] singleton still works');
|
|
139
|
+
});
|
|
140
|
+
describe('log methods', () => {
|
|
141
|
+
it('debug logs with console.log', () => {
|
|
142
|
+
const log = createLogger('Test', { enabled: true });
|
|
143
|
+
log.debug('msg');
|
|
144
|
+
expect(console.log).toHaveBeenCalledWith('[Test] [DEBUG] msg');
|
|
145
|
+
});
|
|
146
|
+
it('info logs with console.info', () => {
|
|
147
|
+
const log = createLogger('Test', { enabled: true });
|
|
148
|
+
log.info('msg');
|
|
149
|
+
expect(console.info).toHaveBeenCalledWith('[Test] [INFO] msg');
|
|
150
|
+
});
|
|
151
|
+
it('warn logs with console.warn', () => {
|
|
152
|
+
const log = createLogger('Test', { enabled: true });
|
|
153
|
+
log.warn('msg');
|
|
154
|
+
expect(console.warn).toHaveBeenCalledWith('[Test] [WARN] msg');
|
|
155
|
+
});
|
|
156
|
+
it('error logs with console.error', () => {
|
|
157
|
+
const log = createLogger('Test', { enabled: true });
|
|
158
|
+
log.error('msg');
|
|
159
|
+
expect(console.error).toHaveBeenCalledWith('[Test] [ERROR] msg');
|
|
160
|
+
});
|
|
161
|
+
it('passes extra arguments through', () => {
|
|
162
|
+
const log = createLogger('Test', { enabled: true });
|
|
163
|
+
log.info('msg', { data: 1 }, 'extra');
|
|
164
|
+
expect(console.info).toHaveBeenCalledWith('[Test] [INFO] msg', { data: 1 }, 'extra');
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe('disabled logger', () => {
|
|
168
|
+
it('does not log when enabled is false', () => {
|
|
169
|
+
const log = createLogger('X', { enabled: false });
|
|
170
|
+
log.debug('nope');
|
|
171
|
+
log.info('nope');
|
|
172
|
+
log.warn('nope');
|
|
173
|
+
log.error('nope');
|
|
174
|
+
expect(console.log).not.toHaveBeenCalled();
|
|
175
|
+
expect(console.info).not.toHaveBeenCalled();
|
|
176
|
+
expect(console.warn).not.toHaveBeenCalled();
|
|
177
|
+
expect(console.error).not.toHaveBeenCalled();
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
describe('level filtering', () => {
|
|
181
|
+
it('filters below configured level', () => {
|
|
182
|
+
const log = createLogger('Test', { enabled: true, level: 'warn' });
|
|
183
|
+
log.debug('no');
|
|
184
|
+
log.info('no');
|
|
185
|
+
log.warn('yes');
|
|
186
|
+
log.error('yes');
|
|
187
|
+
expect(console.log).not.toHaveBeenCalled();
|
|
188
|
+
expect(console.info).not.toHaveBeenCalled();
|
|
189
|
+
expect(console.warn).toHaveBeenCalledTimes(1);
|
|
190
|
+
expect(console.error).toHaveBeenCalledTimes(1);
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
});
|
package/dist/utils/portal.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Svelte action that portals an element to a target container (default: document.body)
|
|
3
|
-
* This moves the element outside of any stacking contexts, solving iOS z-index issues.
|
|
4
|
-
*
|
|
5
|
-
* Usage: <div use:portal>...</div>
|
|
6
|
-
* Or: <div use:portal={document.getElementById('modal-root')}>...</div>
|
|
7
|
-
*/
|
|
8
|
-
export function portal(node: any, target?: HTMLElement): {
|
|
9
|
-
update(newTarget: any): void;
|
|
10
|
-
destroy(): void;
|
|
11
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Svelte action that portals an element to a target container (default: document.body)
|
|
3
|
+
* This moves the element outside of any stacking contexts, solving iOS z-index issues.
|
|
4
|
+
*
|
|
5
|
+
* Usage: <div use:portal>...</div>
|
|
6
|
+
* Or: <div use:portal={document.getElementById('modal-root')}>...</div>
|
|
7
|
+
*/
|
|
8
|
+
export function portal(node: any, target?: HTMLElement): {
|
|
9
|
+
update(newTarget: any): void;
|
|
10
|
+
destroy(): void;
|
|
11
|
+
};
|
|
12
12
|
//# sourceMappingURL=portal.d.ts.map
|
package/dist/utils/portal.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Svelte action that portals an element to a target container (default: document.body)
|
|
3
|
-
* This moves the element outside of any stacking contexts, solving iOS z-index issues.
|
|
4
|
-
*
|
|
5
|
-
* Usage: <div use:portal>...</div>
|
|
6
|
-
* Or: <div use:portal={document.getElementById('modal-root')}>...</div>
|
|
7
|
-
*/
|
|
8
|
-
export function portal(node, target = document.body) {
|
|
9
|
-
// Move the node to the target
|
|
10
|
-
target.appendChild(node);
|
|
11
|
-
|
|
12
|
-
return {
|
|
13
|
-
update(newTarget) {
|
|
14
|
-
// If target changes, move to new target
|
|
15
|
-
newTarget = newTarget || document.body;
|
|
16
|
-
newTarget.appendChild(node);
|
|
17
|
-
},
|
|
18
|
-
destroy() {
|
|
19
|
-
// Clean up - remove the node when component is destroyed
|
|
20
|
-
if (node.parentNode) {
|
|
21
|
-
node.parentNode.removeChild(node);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Svelte action that portals an element to a target container (default: document.body)
|
|
3
|
+
* This moves the element outside of any stacking contexts, solving iOS z-index issues.
|
|
4
|
+
*
|
|
5
|
+
* Usage: <div use:portal>...</div>
|
|
6
|
+
* Or: <div use:portal={document.getElementById('modal-root')}>...</div>
|
|
7
|
+
*/
|
|
8
|
+
export function portal(node, target = document.body) {
|
|
9
|
+
// Move the node to the target
|
|
10
|
+
target.appendChild(node);
|
|
11
|
+
|
|
12
|
+
return {
|
|
13
|
+
update(newTarget) {
|
|
14
|
+
// If target changes, move to new target
|
|
15
|
+
newTarget = newTarget || document.body;
|
|
16
|
+
newTarget.appendChild(node);
|
|
17
|
+
},
|
|
18
|
+
destroy() {
|
|
19
|
+
// Clean up - remove the node when component is destroyed
|
|
20
|
+
if (node.parentNode) {
|
|
21
|
+
node.parentNode.removeChild(node);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
@@ -1,143 +1,143 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { portal } from './portal';
|
|
3
|
-
|
|
4
|
-
describe('portal', () => {
|
|
5
|
-
let node;
|
|
6
|
-
let target;
|
|
7
|
-
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
// Create mock nodes
|
|
10
|
-
node = document.createElement('div');
|
|
11
|
-
node.textContent = 'Portal Content';
|
|
12
|
-
target = document.createElement('div');
|
|
13
|
-
target.id = 'portal-target';
|
|
14
|
-
document.body.appendChild(target);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
afterEach(() => {
|
|
18
|
-
// Clean up
|
|
19
|
-
if (target.parentNode) {
|
|
20
|
-
target.parentNode.removeChild(target);
|
|
21
|
-
}
|
|
22
|
-
if (node.parentNode) {
|
|
23
|
-
node.parentNode.removeChild(node);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
describe('initial portal', () => {
|
|
28
|
-
it('appends node to document.body by default', () => {
|
|
29
|
-
portal(node);
|
|
30
|
-
expect(node.parentNode).toBe(document.body);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('appends node to specified target', () => {
|
|
34
|
-
portal(node, target);
|
|
35
|
-
expect(node.parentNode).toBe(target);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it('returns an object with update and destroy methods', () => {
|
|
39
|
-
const result = portal(node);
|
|
40
|
-
expect(result).toHaveProperty('update');
|
|
41
|
-
expect(result).toHaveProperty('destroy');
|
|
42
|
-
expect(typeof result.update).toBe('function');
|
|
43
|
-
expect(typeof result.destroy).toBe('function');
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
describe('update method', () => {
|
|
48
|
-
it('moves node to new target', () => {
|
|
49
|
-
const newTarget = document.createElement('div');
|
|
50
|
-
document.body.appendChild(newTarget);
|
|
51
|
-
|
|
52
|
-
const { update } = portal(node, target);
|
|
53
|
-
expect(node.parentNode).toBe(target);
|
|
54
|
-
|
|
55
|
-
update(newTarget);
|
|
56
|
-
expect(node.parentNode).toBe(newTarget);
|
|
57
|
-
|
|
58
|
-
// Clean up
|
|
59
|
-
newTarget.parentNode.removeChild(newTarget);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it('moves node to document.body when new target is null', () => {
|
|
63
|
-
const { update } = portal(node, target);
|
|
64
|
-
expect(node.parentNode).toBe(target);
|
|
65
|
-
|
|
66
|
-
update(null);
|
|
67
|
-
expect(node.parentNode).toBe(document.body);
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
it('moves node to document.body when new target is undefined', () => {
|
|
71
|
-
const { update } = portal(node, target);
|
|
72
|
-
expect(node.parentNode).toBe(target);
|
|
73
|
-
|
|
74
|
-
update(undefined);
|
|
75
|
-
expect(node.parentNode).toBe(document.body);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
describe('destroy method', () => {
|
|
80
|
-
it('removes node from parent', () => {
|
|
81
|
-
const { destroy } = portal(node, target);
|
|
82
|
-
expect(node.parentNode).toBe(target);
|
|
83
|
-
|
|
84
|
-
destroy();
|
|
85
|
-
expect(node.parentNode).toBe(null);
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
it('handles node already removed', () => {
|
|
89
|
-
const { destroy } = portal(node, target);
|
|
90
|
-
|
|
91
|
-
// Manually remove node first
|
|
92
|
-
target.removeChild(node);
|
|
93
|
-
|
|
94
|
-
// Should not throw
|
|
95
|
-
expect(() => destroy()).not.toThrow();
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
it('removes node from document.body', () => {
|
|
99
|
-
const { destroy } = portal(node);
|
|
100
|
-
expect(node.parentNode).toBe(document.body);
|
|
101
|
-
|
|
102
|
-
destroy();
|
|
103
|
-
expect(node.parentNode).toBe(null);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
describe('real-world usage scenarios', () => {
|
|
108
|
-
it('can portal modal content outside stacking context', () => {
|
|
109
|
-
// Create a stacking context
|
|
110
|
-
const stackingContext = document.createElement('div');
|
|
111
|
-
stackingContext.style.position = 'relative';
|
|
112
|
-
stackingContext.style.zIndex = '1';
|
|
113
|
-
document.body.appendChild(stackingContext);
|
|
114
|
-
|
|
115
|
-
// Create modal inside stacking context
|
|
116
|
-
const modal = document.createElement('div');
|
|
117
|
-
modal.className = 'modal';
|
|
118
|
-
stackingContext.appendChild(modal);
|
|
119
|
-
|
|
120
|
-
// Portal should move it to body
|
|
121
|
-
portal(modal);
|
|
122
|
-
expect(modal.parentNode).toBe(document.body);
|
|
123
|
-
|
|
124
|
-
// Clean up
|
|
125
|
-
stackingContext.parentNode.removeChild(stackingContext);
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
it('works with multiple portals', () => {
|
|
129
|
-
const node1 = document.createElement('div');
|
|
130
|
-
const node2 = document.createElement('div');
|
|
131
|
-
|
|
132
|
-
portal(node1);
|
|
133
|
-
portal(node2);
|
|
134
|
-
|
|
135
|
-
expect(node1.parentNode).toBe(document.body);
|
|
136
|
-
expect(node2.parentNode).toBe(document.body);
|
|
137
|
-
|
|
138
|
-
// Clean up
|
|
139
|
-
document.body.removeChild(node1);
|
|
140
|
-
document.body.removeChild(node2);
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
});
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { portal } from './portal';
|
|
3
|
+
|
|
4
|
+
describe('portal', () => {
|
|
5
|
+
let node;
|
|
6
|
+
let target;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
// Create mock nodes
|
|
10
|
+
node = document.createElement('div');
|
|
11
|
+
node.textContent = 'Portal Content';
|
|
12
|
+
target = document.createElement('div');
|
|
13
|
+
target.id = 'portal-target';
|
|
14
|
+
document.body.appendChild(target);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
afterEach(() => {
|
|
18
|
+
// Clean up
|
|
19
|
+
if (target.parentNode) {
|
|
20
|
+
target.parentNode.removeChild(target);
|
|
21
|
+
}
|
|
22
|
+
if (node.parentNode) {
|
|
23
|
+
node.parentNode.removeChild(node);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
describe('initial portal', () => {
|
|
28
|
+
it('appends node to document.body by default', () => {
|
|
29
|
+
portal(node);
|
|
30
|
+
expect(node.parentNode).toBe(document.body);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('appends node to specified target', () => {
|
|
34
|
+
portal(node, target);
|
|
35
|
+
expect(node.parentNode).toBe(target);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('returns an object with update and destroy methods', () => {
|
|
39
|
+
const result = portal(node);
|
|
40
|
+
expect(result).toHaveProperty('update');
|
|
41
|
+
expect(result).toHaveProperty('destroy');
|
|
42
|
+
expect(typeof result.update).toBe('function');
|
|
43
|
+
expect(typeof result.destroy).toBe('function');
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
describe('update method', () => {
|
|
48
|
+
it('moves node to new target', () => {
|
|
49
|
+
const newTarget = document.createElement('div');
|
|
50
|
+
document.body.appendChild(newTarget);
|
|
51
|
+
|
|
52
|
+
const { update } = portal(node, target);
|
|
53
|
+
expect(node.parentNode).toBe(target);
|
|
54
|
+
|
|
55
|
+
update(newTarget);
|
|
56
|
+
expect(node.parentNode).toBe(newTarget);
|
|
57
|
+
|
|
58
|
+
// Clean up
|
|
59
|
+
newTarget.parentNode.removeChild(newTarget);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('moves node to document.body when new target is null', () => {
|
|
63
|
+
const { update } = portal(node, target);
|
|
64
|
+
expect(node.parentNode).toBe(target);
|
|
65
|
+
|
|
66
|
+
update(null);
|
|
67
|
+
expect(node.parentNode).toBe(document.body);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it('moves node to document.body when new target is undefined', () => {
|
|
71
|
+
const { update } = portal(node, target);
|
|
72
|
+
expect(node.parentNode).toBe(target);
|
|
73
|
+
|
|
74
|
+
update(undefined);
|
|
75
|
+
expect(node.parentNode).toBe(document.body);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
describe('destroy method', () => {
|
|
80
|
+
it('removes node from parent', () => {
|
|
81
|
+
const { destroy } = portal(node, target);
|
|
82
|
+
expect(node.parentNode).toBe(target);
|
|
83
|
+
|
|
84
|
+
destroy();
|
|
85
|
+
expect(node.parentNode).toBe(null);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it('handles node already removed', () => {
|
|
89
|
+
const { destroy } = portal(node, target);
|
|
90
|
+
|
|
91
|
+
// Manually remove node first
|
|
92
|
+
target.removeChild(node);
|
|
93
|
+
|
|
94
|
+
// Should not throw
|
|
95
|
+
expect(() => destroy()).not.toThrow();
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it('removes node from document.body', () => {
|
|
99
|
+
const { destroy } = portal(node);
|
|
100
|
+
expect(node.parentNode).toBe(document.body);
|
|
101
|
+
|
|
102
|
+
destroy();
|
|
103
|
+
expect(node.parentNode).toBe(null);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
describe('real-world usage scenarios', () => {
|
|
108
|
+
it('can portal modal content outside stacking context', () => {
|
|
109
|
+
// Create a stacking context
|
|
110
|
+
const stackingContext = document.createElement('div');
|
|
111
|
+
stackingContext.style.position = 'relative';
|
|
112
|
+
stackingContext.style.zIndex = '1';
|
|
113
|
+
document.body.appendChild(stackingContext);
|
|
114
|
+
|
|
115
|
+
// Create modal inside stacking context
|
|
116
|
+
const modal = document.createElement('div');
|
|
117
|
+
modal.className = 'modal';
|
|
118
|
+
stackingContext.appendChild(modal);
|
|
119
|
+
|
|
120
|
+
// Portal should move it to body
|
|
121
|
+
portal(modal);
|
|
122
|
+
expect(modal.parentNode).toBe(document.body);
|
|
123
|
+
|
|
124
|
+
// Clean up
|
|
125
|
+
stackingContext.parentNode.removeChild(stackingContext);
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it('works with multiple portals', () => {
|
|
129
|
+
const node1 = document.createElement('div');
|
|
130
|
+
const node2 = document.createElement('div');
|
|
131
|
+
|
|
132
|
+
portal(node1);
|
|
133
|
+
portal(node2);
|
|
134
|
+
|
|
135
|
+
expect(node1.parentNode).toBe(document.body);
|
|
136
|
+
expect(node2.parentNode).toBe(document.body);
|
|
137
|
+
|
|
138
|
+
// Clean up
|
|
139
|
+
document.body.removeChild(node1);
|
|
140
|
+
document.body.removeChild(node2);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
});
|
|
@@ -1,12 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Animation and transition utilities for polished UX
|
|
3
|
+
*
|
|
4
|
+
* Duration guidelines (research-backed):
|
|
5
|
+
* - Micro-interactions: 150-200ms (instant feel)
|
|
6
|
+
* - UI transitions: 200-300ms (smooth without slow)
|
|
7
|
+
* - Page transitions: 300-400ms (noticeable but fast)
|
|
8
|
+
* - Complex animations: 400-600ms (elaborate sequences)
|
|
3
9
|
*
|
|
4
10
|
* The standard Svelte slide transition can produce "Invalid keyframe value for property height: NaNpx"
|
|
5
11
|
* when the element hasn't been measured yet (e.g., during SSR hydration or when mounted in an unmeasured container).
|
|
6
12
|
*
|
|
7
13
|
* These utilities wrap Svelte's transitions with guards against invalid values.
|
|
8
14
|
*/
|
|
15
|
+
import { backOut, cubicInOut, cubicOut, quintOut } from 'svelte/easing';
|
|
9
16
|
import type { EasingFunction, TransitionConfig } from 'svelte/transition';
|
|
17
|
+
export declare const DURATION: {
|
|
18
|
+
readonly instant: 100;
|
|
19
|
+
readonly micro: 150;
|
|
20
|
+
readonly fast: 200;
|
|
21
|
+
readonly normal: 300;
|
|
22
|
+
readonly slow: 400;
|
|
23
|
+
readonly elaborate: 600;
|
|
24
|
+
};
|
|
25
|
+
export declare const EASING: {
|
|
26
|
+
/** Standard ease-out for most UI (deceleration) */
|
|
27
|
+
readonly out: typeof cubicOut;
|
|
28
|
+
/** Ease in-out for page transitions */
|
|
29
|
+
readonly inOut: typeof cubicInOut;
|
|
30
|
+
/** Bouncy ease-out for celebration/success */
|
|
31
|
+
readonly bounce: typeof backOut;
|
|
32
|
+
/** Smooth for scroll-linked animations */
|
|
33
|
+
readonly smooth: typeof quintOut;
|
|
34
|
+
};
|
|
10
35
|
interface SafeSlideParams {
|
|
11
36
|
delay?: number;
|
|
12
37
|
duration?: number;
|
|
@@ -33,5 +58,78 @@ export declare function safeSlide(node: HTMLElement, params?: SafeSlideParams):
|
|
|
33
58
|
* Scales up from origin point with fade for a polished "bloom" effect.
|
|
34
59
|
*/
|
|
35
60
|
export declare function bloom(_node: Element, { duration, delay, origin }?: BloomParams): TransitionConfig;
|
|
61
|
+
/**
|
|
62
|
+
* Fade with slight scale - more polished than plain fade
|
|
63
|
+
*/
|
|
64
|
+
export declare function fadeScale(node: Element, { delay, duration, easing, start, }?: {
|
|
65
|
+
delay?: number;
|
|
66
|
+
duration?: number;
|
|
67
|
+
easing?: (t: number) => number;
|
|
68
|
+
start?: number;
|
|
69
|
+
}): TransitionConfig;
|
|
70
|
+
/**
|
|
71
|
+
* Slide up with fade - great for form fields appearing
|
|
72
|
+
*/
|
|
73
|
+
export declare function slideUp(node: Element, { delay, duration, easing, distance, }?: {
|
|
74
|
+
delay?: number;
|
|
75
|
+
duration?: number;
|
|
76
|
+
easing?: (t: number) => number;
|
|
77
|
+
distance?: number;
|
|
78
|
+
}): TransitionConfig;
|
|
79
|
+
/**
|
|
80
|
+
* Slide in from left - for progress/step animations
|
|
81
|
+
*/
|
|
82
|
+
export declare function slideInLeft(node: Element, { delay, duration, easing, distance, }?: {
|
|
83
|
+
delay?: number;
|
|
84
|
+
duration?: number;
|
|
85
|
+
easing?: (t: number) => number;
|
|
86
|
+
distance?: number;
|
|
87
|
+
}): TransitionConfig;
|
|
88
|
+
/**
|
|
89
|
+
* Pop in - for success states and celebrations
|
|
90
|
+
*/
|
|
91
|
+
export declare function popIn(node: Element, { delay, duration, easing, }?: {
|
|
92
|
+
delay?: number;
|
|
93
|
+
duration?: number;
|
|
94
|
+
easing?: (t: number) => number;
|
|
95
|
+
}): TransitionConfig;
|
|
96
|
+
/**
|
|
97
|
+
* Stagger delay calculator for list animations
|
|
98
|
+
*/
|
|
99
|
+
export declare function staggerDelay(index: number, base?: number, max?: number): number;
|
|
100
|
+
/**
|
|
101
|
+
* Cross-fade between two elements (for step transitions)
|
|
102
|
+
* Returns [outParams, inParams] for use with Svelte's transition directive
|
|
103
|
+
*/
|
|
104
|
+
export declare function crossFadeParams(durationMs?: 300): [{
|
|
105
|
+
duration: number;
|
|
106
|
+
}, {
|
|
107
|
+
delay: number;
|
|
108
|
+
duration: number;
|
|
109
|
+
}];
|
|
110
|
+
/**
|
|
111
|
+
* Reduced motion check - respects user preferences
|
|
112
|
+
* SSR-safe: returns false on the server
|
|
113
|
+
*/
|
|
114
|
+
export declare function prefersReducedMotion(): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Get duration based on reduced motion preference
|
|
117
|
+
* Returns 0 if user prefers reduced motion, otherwise returns the given duration
|
|
118
|
+
*/
|
|
119
|
+
export declare function getAnimationDuration(duration: number): number;
|
|
120
|
+
/**
|
|
121
|
+
* CSS animation class helper - for Tailwind-based animations
|
|
122
|
+
*/
|
|
123
|
+
export declare const ANIMATION_CLASSES: {
|
|
124
|
+
readonly fadeIn: "animate-in fade-in duration-300";
|
|
125
|
+
readonly fadeOut: "animate-out fade-out duration-200";
|
|
126
|
+
readonly slideUp: "animate-in slide-in-from-bottom-2 duration-300";
|
|
127
|
+
readonly slideDown: "animate-in slide-in-from-top-2 duration-300";
|
|
128
|
+
readonly scaleIn: "animate-in zoom-in-95 duration-200";
|
|
129
|
+
readonly scaleOut: "animate-out zoom-out-95 duration-150";
|
|
130
|
+
readonly spin: "animate-spin";
|
|
131
|
+
readonly pulse: "animate-pulse";
|
|
132
|
+
readonly bounce: "animate-bounce";
|
|
133
|
+
};
|
|
36
134
|
export {};
|
|
37
135
|
//# sourceMappingURL=transitions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../src/lib/utils/transitions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../src/lib/utils/transitions.ts"],"names":[],"mappings":"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"}
|