@getmicdrop/svelte-components 5.5.1 → 5.5.5
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/calendar/AboutShow/AboutShow.spec.d.ts +2 -0
- package/dist/calendar/AboutShow/AboutShow.spec.d.ts.map +1 -0
- package/dist/calendar/AboutShow/AboutShow.spec.js +791 -0
- package/dist/calendar/AboutShow/AboutShow.svelte +172 -172
- package/dist/calendar/Calendar/MiniMonthCalendar.spec.d.ts +2 -0
- package/dist/calendar/Calendar/MiniMonthCalendar.spec.d.ts.map +1 -0
- package/dist/calendar/Calendar/MiniMonthCalendar.spec.js +1191 -0
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte +782 -782
- package/dist/calendar/FAQs/FAQs.spec.d.ts +2 -0
- package/dist/calendar/FAQs/FAQs.spec.d.ts.map +1 -0
- package/dist/calendar/FAQs/FAQs.spec.js +238 -0
- package/dist/calendar/FAQs/FAQs.svelte +75 -75
- package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.d.ts +2 -0
- package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.d.ts.map +1 -0
- package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.js +420 -0
- package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +126 -126
- package/dist/calendar/OrderSummary/OrderSummary.spec.d.ts +2 -0
- package/dist/calendar/OrderSummary/OrderSummary.spec.d.ts.map +1 -0
- package/dist/calendar/OrderSummary/OrderSummary.spec.js +808 -0
- package/dist/calendar/OrderSummary/OrderSummary.svelte +367 -367
- package/dist/calendar/PublicCard/PublicCard.spec.d.ts +2 -0
- package/dist/calendar/PublicCard/PublicCard.spec.d.ts.map +1 -0
- package/dist/calendar/PublicCard/PublicCard.spec.js +301 -0
- package/dist/calendar/PublicCard/PublicCard.svelte +134 -134
- package/dist/calendar/ShowCard/ShowCard.spec.d.ts +2 -0
- package/dist/calendar/ShowCard/ShowCard.spec.d.ts.map +1 -0
- package/dist/calendar/ShowCard/ShowCard.spec.js +714 -0
- package/dist/calendar/ShowCard/ShowCard.svelte +157 -157
- package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.d.ts +2 -0
- package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.d.ts.map +1 -0
- package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.js +241 -0
- package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +61 -61
- package/dist/components/Layout/Grid.svelte +4 -4
- package/dist/components/Layout/Section.spec.d.ts +2 -0
- package/dist/components/Layout/Section.spec.d.ts.map +1 -0
- package/dist/components/Layout/Section.spec.js +149 -0
- package/dist/components/Layout/Section.svelte +80 -80
- package/dist/components/Layout/Sidebar.spec.d.ts +2 -0
- package/dist/components/Layout/Sidebar.spec.d.ts.map +1 -0
- package/dist/components/Layout/Sidebar.spec.js +186 -0
- package/dist/components/Layout/Sidebar.svelte +108 -108
- package/dist/components/Layout/Stack.spec.js +3 -3
- package/dist/components/Layout/Stack.svelte +6 -6
- package/dist/constants/formOptions.spec.js +9 -5
- package/dist/constants/validation.js +91 -91
- package/dist/constants/validation.spec.js +64 -64
- 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 +124 -2
- package/dist/datetime/parse.js +1 -1
- package/dist/forms/createFieldTracker.spec.d.ts +2 -0
- package/dist/forms/createFieldTracker.spec.d.ts.map +1 -0
- package/dist/forms/createFieldTracker.spec.js +343 -0
- package/dist/forms/createFormStore.spec.d.ts +2 -0
- package/dist/forms/createFormStore.spec.d.ts.map +1 -0
- package/dist/forms/createFormStore.spec.js +689 -0
- package/dist/forms/createFormStore.svelte.js +0 -1
- package/dist/index.d.ts +5 -112
- package/dist/index.js +40 -225
- package/dist/patterns/data/DataGrid.spec.d.ts +2 -0
- package/dist/patterns/data/DataGrid.spec.d.ts.map +1 -0
- package/dist/patterns/data/DataGrid.spec.js +159 -0
- package/dist/patterns/data/DataGrid.svelte +45 -45
- package/dist/patterns/data/DataList.spec.d.ts +2 -0
- package/dist/patterns/data/DataList.spec.d.ts.map +1 -0
- package/dist/patterns/data/DataList.spec.js +158 -0
- package/dist/patterns/data/DataList.svelte +24 -24
- package/dist/patterns/data/DataTable.spec.d.ts +2 -0
- package/dist/patterns/data/DataTable.spec.d.ts.map +1 -0
- package/dist/patterns/data/DataTable.spec.js +196 -0
- package/dist/patterns/data/DataTable.svelte +36 -36
- package/dist/patterns/forms/FormActions.spec.js +95 -88
- package/dist/patterns/forms/FormActions.stories.svelte +97 -97
- package/dist/patterns/forms/FormActions.svelte +46 -46
- package/dist/patterns/forms/FormGrid.spec.d.ts +2 -0
- package/dist/patterns/forms/FormGrid.spec.d.ts.map +1 -0
- package/dist/patterns/forms/FormGrid.spec.js +125 -0
- package/dist/patterns/forms/FormGrid.svelte +33 -33
- package/dist/patterns/forms/FormSection.spec.d.ts +2 -0
- package/dist/patterns/forms/FormSection.spec.d.ts.map +1 -0
- package/dist/patterns/forms/FormSection.spec.js +153 -0
- package/dist/patterns/forms/FormSection.svelte +32 -32
- package/dist/patterns/forms/FormValidationSummary.stories.svelte +83 -83
- package/dist/patterns/forms/FormValidationSummary.svelte +33 -33
- package/dist/patterns/layout/Sidebar.spec.d.ts +2 -0
- package/dist/patterns/layout/Sidebar.spec.d.ts.map +1 -0
- package/dist/patterns/layout/Sidebar.spec.js +159 -0
- package/dist/patterns/layout/Sidebar.svelte +39 -39
- package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
- package/dist/patterns/navigation/BottomNav.svelte +20 -20
- package/dist/patterns/navigation/Header.spec.js +33 -24
- package/dist/patterns/navigation/Header.stories.svelte +77 -77
- package/dist/patterns/navigation/Header.svelte +193 -193
- package/dist/patterns/page/PageHeader.spec.d.ts +2 -0
- package/dist/patterns/page/PageHeader.spec.d.ts.map +1 -0
- package/dist/patterns/page/PageHeader.spec.js +167 -0
- package/dist/patterns/page/PageHeader.svelte +18 -18
- package/dist/patterns/page/PageLayout.spec.d.ts +2 -0
- package/dist/patterns/page/PageLayout.spec.d.ts.map +1 -0
- package/dist/patterns/page/PageLayout.spec.js +145 -0
- package/dist/patterns/page/PageLayout.svelte +40 -40
- package/dist/patterns/page/PageLoader.spec.js +57 -54
- package/dist/patterns/page/PageLoader.stories.svelte +137 -137
- package/dist/patterns/page/PageLoader.svelte +24 -24
- package/dist/patterns/page/SectionHeader.spec.d.ts +2 -0
- package/dist/patterns/page/SectionHeader.spec.d.ts.map +1 -0
- package/dist/patterns/page/SectionHeader.spec.js +197 -0
- package/dist/patterns/page/SectionHeader.svelte +29 -29
- package/dist/presets/badges.js +112 -112
- package/dist/presets/badges.spec.d.ts +2 -0
- package/dist/presets/badges.spec.d.ts.map +1 -0
- package/dist/presets/badges.spec.js +172 -0
- package/dist/presets/buttons.js +76 -76
- package/dist/presets/buttons.spec.d.ts +2 -0
- package/dist/presets/buttons.spec.d.ts.map +1 -0
- package/dist/presets/buttons.spec.js +135 -0
- package/dist/presets/index.js +9 -9
- package/dist/primitives/Accordion/Accordion.spec.d.ts +2 -0
- package/dist/primitives/Accordion/Accordion.spec.d.ts.map +1 -0
- package/dist/primitives/Accordion/Accordion.spec.js +83 -0
- package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
- package/dist/primitives/Accordion/Accordion.svelte +42 -42
- package/dist/primitives/Accordion/AccordionItem.spec.d.ts +2 -0
- package/dist/primitives/Accordion/AccordionItem.spec.d.ts.map +1 -0
- package/dist/primitives/Accordion/AccordionItem.spec.js +661 -0
- package/dist/primitives/Accordion/AccordionItem.svelte +95 -95
- package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte +107 -0
- package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts +35 -0
- package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts.map +1 -0
- package/dist/primitives/Alert/Alert.spec.js +173 -170
- package/dist/primitives/Alert/Alert.stories.svelte +88 -88
- package/dist/primitives/Alert/Alert.svelte +27 -27
- package/dist/primitives/Avatar/Avatar.spec.d.ts +2 -0
- package/dist/primitives/Avatar/Avatar.spec.d.ts.map +1 -0
- package/dist/primitives/Avatar/Avatar.spec.js +211 -0
- package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
- package/dist/primitives/Avatar/Avatar.svelte +66 -66
- package/dist/primitives/Badges/Badge.spec.js +144 -103
- package/dist/primitives/Badges/Badge.stories.svelte +86 -86
- package/dist/primitives/Badges/Badge.svelte +79 -79
- package/dist/primitives/BottomSheet/BottomSheet.spec.js +136 -127
- package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
- package/dist/primitives/BottomSheet/BottomSheet.svelte +100 -100
- package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte +13 -0
- package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte.d.ts +7 -0
- package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte.d.ts.map +1 -0
- package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +122 -120
- package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
- package/dist/primitives/Breadcrumb/Breadcrumb.svelte +89 -89
- package/dist/primitives/Button/Button.spec.js +223 -211
- package/dist/primitives/Button/Button.stories.svelte +76 -76
- package/dist/primitives/Button/Button.svelte +270 -270
- package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -48
- package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
- package/dist/primitives/Button/ButtonVariantShowcase.spec.d.ts +2 -0
- package/dist/primitives/Button/ButtonVariantShowcase.spec.d.ts.map +1 -0
- package/dist/primitives/Button/ButtonVariantShowcase.spec.js +202 -0
- 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/Checkbox/Checkbox.spec.d.ts +2 -0
- package/dist/primitives/Checkbox/Checkbox.spec.d.ts.map +1 -0
- package/dist/primitives/Checkbox/Checkbox.spec.js +252 -0
- package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
- package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
- package/dist/primitives/DarkModeToggle.spec.js +390 -357
- package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
- package/dist/primitives/DarkModeToggle.svelte +136 -136
- package/dist/primitives/Drawer/Drawer.spec.d.ts +2 -0
- package/dist/primitives/Drawer/Drawer.spec.d.ts.map +1 -0
- package/dist/primitives/Drawer/Drawer.spec.js +212 -0
- package/dist/primitives/Drawer/Drawer.stories.svelte +80 -80
- package/dist/primitives/Drawer/Drawer.svelte +120 -120
- package/dist/primitives/Dropdown/Dropdown.spec.d.ts +2 -0
- package/dist/primitives/Dropdown/Dropdown.spec.d.ts.map +1 -0
- package/dist/primitives/Dropdown/Dropdown.spec.js +366 -0
- package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
- package/dist/primitives/Dropdown/Dropdown.svelte +14 -14
- package/dist/primitives/Dropdown/DropdownItem.spec.d.ts +2 -0
- package/dist/primitives/Dropdown/DropdownItem.spec.d.ts.map +1 -0
- package/dist/primitives/Dropdown/DropdownItem.spec.js +182 -0
- package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
- package/dist/primitives/Icons/ArrowLeft.svelte +8 -8
- package/dist/primitives/Icons/ArrowRight.svelte +8 -8
- package/dist/primitives/Icons/Availability.svelte +14 -14
- package/dist/primitives/Icons/Back.svelte +14 -14
- package/dist/primitives/Icons/CheckCircle.svelte +6 -6
- package/dist/primitives/Icons/CheckCircleOutline.svelte +15 -15
- package/dist/primitives/Icons/ChevronLeft.svelte +4 -4
- package/dist/primitives/Icons/ChevronRight.svelte +4 -4
- package/dist/primitives/Icons/Copy.svelte +15 -15
- package/dist/primitives/Icons/Cross.svelte +5 -5
- package/dist/primitives/Icons/DownArrow.svelte +8 -8
- package/dist/primitives/Icons/ErrorCircle.svelte +6 -6
- package/dist/primitives/Icons/FacebookIcon.svelte +2 -2
- package/dist/primitives/Icons/Home.svelte +15 -15
- package/dist/primitives/Icons/Icon.spec.js +169 -169
- package/dist/primitives/Icons/Icon.stories.svelte +100 -100
- package/dist/primitives/Icons/Icon.svelte +52 -52
- package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
- package/dist/primitives/Icons/Info.svelte +7 -7
- package/dist/primitives/Icons/InstagramIcon.svelte +4 -4
- package/dist/primitives/Icons/LogoInstagram.svelte +2 -2
- package/dist/primitives/Icons/Message.svelte +15 -15
- package/dist/primitives/Icons/MoonIcon.svelte +5 -5
- package/dist/primitives/Icons/More.svelte +21 -21
- package/dist/primitives/Icons/MoreHori.spec.js +61 -61
- package/dist/primitives/Icons/MoreHori.svelte +22 -22
- package/dist/primitives/Icons/Notification.svelte +14 -14
- package/dist/primitives/Icons/Payment.svelte +14 -14
- package/dist/primitives/Icons/Profile.svelte +21 -21
- package/dist/primitives/Icons/Reload.svelte +29 -29
- package/dist/primitives/Icons/Shows.svelte +21 -21
- package/dist/primitives/Icons/Signout.svelte +21 -21
- package/dist/primitives/Icons/SunIcon.svelte +8 -8
- package/dist/primitives/Icons/TiktokIcon.svelte +2 -2
- package/dist/primitives/Icons/TwitterIcon.svelte +2 -2
- package/dist/primitives/Icons/WarningIcon.spec.js +18 -18
- package/dist/primitives/Icons/WarningIcon.svelte +5 -5
- package/dist/primitives/Icons/iconTestUtils.spec.d.ts +2 -0
- package/dist/primitives/Icons/iconTestUtils.spec.d.ts.map +1 -0
- package/dist/primitives/Icons/iconTestUtils.spec.js +235 -0
- package/dist/primitives/Input/Input.spec.js +573 -573
- package/dist/primitives/Input/Input.stories.svelte +139 -139
- package/dist/primitives/Input/Input.svelte +384 -397
- package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
- package/dist/primitives/Input/Select.spec.js +212 -218
- package/dist/primitives/Input/Select.stories.svelte +112 -112
- package/dist/primitives/Input/Select.svelte +128 -128
- package/dist/primitives/Input/Textarea.spec.d.ts +2 -0
- package/dist/primitives/Input/Textarea.spec.d.ts.map +1 -0
- package/dist/primitives/Input/Textarea.spec.js +255 -0
- package/dist/primitives/Input/Textarea.stories.svelte +137 -137
- package/dist/primitives/Input/Textarea.svelte +35 -35
- package/dist/primitives/Label/Label.spec.d.ts +2 -0
- package/dist/primitives/Label/Label.spec.d.ts.map +1 -0
- package/dist/primitives/Label/Label.spec.js +157 -0
- package/dist/primitives/Label/Label.svelte +37 -37
- package/dist/primitives/Modal/Modal.spec.js +99 -95
- package/dist/primitives/Modal/Modal.stories.svelte +86 -86
- package/dist/primitives/Modal/Modal.svelte +158 -158
- package/dist/primitives/Modal/ModalTestWrapper.svelte +65 -0
- package/dist/primitives/Modal/ModalTestWrapper.svelte.d.ts +23 -0
- package/dist/primitives/Modal/ModalTestWrapper.svelte.d.ts.map +1 -0
- package/dist/primitives/NumberInput/NumberInput.spec.d.ts +2 -0
- package/dist/primitives/NumberInput/NumberInput.spec.d.ts.map +1 -0
- package/dist/primitives/NumberInput/NumberInput.spec.js +235 -0
- package/dist/primitives/NumberInput/NumberInput.svelte +106 -106
- package/dist/primitives/Pagination/Pagination.spec.d.ts +2 -0
- package/dist/primitives/Pagination/Pagination.spec.d.ts.map +1 -0
- package/dist/primitives/Pagination/Pagination.spec.js +266 -0
- package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
- package/dist/primitives/Pagination/Pagination.svelte +261 -261
- package/dist/primitives/Radio/Radio.spec.d.ts +2 -0
- package/dist/primitives/Radio/Radio.spec.d.ts.map +1 -0
- package/dist/primitives/Radio/Radio.spec.js +206 -0
- package/dist/primitives/Radio/Radio.stories.svelte +80 -80
- package/dist/primitives/Radio/Radio.svelte +67 -67
- package/dist/primitives/Skeleton/CardPlaceholder.spec.d.ts +2 -0
- package/dist/primitives/Skeleton/CardPlaceholder.spec.d.ts.map +1 -0
- package/dist/primitives/Skeleton/CardPlaceholder.spec.js +156 -0
- package/dist/primitives/Skeleton/CardPlaceholder.svelte +87 -87
- package/dist/primitives/Skeleton/ImagePlaceholder.spec.d.ts +2 -0
- package/dist/primitives/Skeleton/ImagePlaceholder.spec.d.ts.map +1 -0
- package/dist/primitives/Skeleton/ImagePlaceholder.spec.js +120 -0
- package/dist/primitives/Skeleton/ImagePlaceholder.svelte +59 -59
- package/dist/primitives/Skeleton/ListPlaceholder.spec.d.ts +2 -0
- package/dist/primitives/Skeleton/ListPlaceholder.spec.d.ts.map +1 -0
- package/dist/primitives/Skeleton/ListPlaceholder.spec.js +220 -0
- package/dist/primitives/Skeleton/ListPlaceholder.svelte +76 -76
- package/dist/primitives/Skeleton/Skeleton.spec.d.ts +2 -0
- package/dist/primitives/Skeleton/Skeleton.spec.d.ts.map +1 -0
- package/dist/primitives/Skeleton/Skeleton.spec.js +173 -0
- package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
- package/dist/primitives/Skeleton/Skeleton.svelte +26 -26
- package/dist/primitives/Spinner/Spinner.spec.js +71 -75
- package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
- package/dist/primitives/Spinner/Spinner.svelte +20 -20
- package/dist/primitives/Tabs/TabItem.spec.d.ts +2 -0
- package/dist/primitives/Tabs/TabItem.spec.d.ts.map +1 -0
- package/dist/primitives/Tabs/TabItem.spec.js +130 -0
- package/dist/primitives/Tabs/TabItem.svelte +49 -49
- package/dist/primitives/Tabs/Tabs.spec.d.ts +2 -0
- package/dist/primitives/Tabs/Tabs.spec.d.ts.map +1 -0
- package/dist/primitives/Tabs/Tabs.spec.js +295 -0
- package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
- package/dist/primitives/Tabs/Tabs.svelte +123 -123
- package/dist/primitives/Tabs/TabsWithItems.test.svelte +18 -0
- package/dist/primitives/Tabs/TabsWithItems.test.svelte.d.ts +16 -0
- package/dist/primitives/Tabs/TabsWithItems.test.svelte.d.ts.map +1 -0
- package/dist/primitives/Toggle.spec.js +143 -127
- package/dist/primitives/Toggle.stories.svelte +92 -92
- package/dist/primitives/Toggle.svelte +71 -71
- package/dist/primitives/Typography/Typography.spec.d.ts +2 -0
- package/dist/primitives/Typography/Typography.spec.d.ts.map +1 -0
- package/dist/primitives/Typography/Typography.spec.js +183 -0
- package/dist/primitives/Typography/Typography.svelte +53 -53
- package/dist/primitives/ValidationError.spec.js +103 -103
- package/dist/primitives/ValidationError.stories.svelte +69 -69
- package/dist/primitives/ValidationError.svelte +29 -29
- package/dist/primitives/index.d.ts +1 -0
- package/dist/primitives/index.js +3 -0
- package/dist/recipes/CropImage/CropImage.spec.js +208 -216
- package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
- package/dist/recipes/CropImage/CropImage.svelte +238 -238
- package/dist/recipes/ImageUploader/ImageUploader.spec.d.ts +2 -0
- package/dist/recipes/ImageUploader/ImageUploader.spec.d.ts.map +1 -0
- package/dist/recipes/ImageUploader/ImageUploader.spec.js +1351 -0
- package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
- package/dist/recipes/ImageUploader/ImageUploader.svelte +804 -804
- package/dist/recipes/SuperLogin/SuperLogin.spec.d.ts +2 -0
- package/dist/recipes/SuperLogin/SuperLogin.spec.d.ts.map +1 -0
- package/dist/recipes/SuperLogin/SuperLogin.spec.js +1436 -0
- package/dist/recipes/SuperLogin/SuperLogin.svelte +7 -6
- package/dist/recipes/SuperLogin/SuperLogin.svelte.d.ts.map +1 -1
- package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
- package/dist/recipes/feedback/EmptyState/EmptyState.spec.d.ts +2 -0
- package/dist/recipes/feedback/EmptyState/EmptyState.spec.d.ts.map +1 -0
- package/dist/recipes/feedback/EmptyState/EmptyState.spec.js +202 -0
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
- package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
- package/dist/recipes/feedback/ErrorDisplay.stories.svelte +101 -101
- package/dist/recipes/feedback/ErrorDisplay.svelte +1 -1
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -129
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +157 -157
- package/dist/recipes/fields/CheckboxField.spec.d.ts +2 -0
- package/dist/recipes/fields/CheckboxField.spec.d.ts.map +1 -0
- package/dist/recipes/fields/CheckboxField.spec.js +135 -0
- package/dist/recipes/fields/CheckboxField.svelte +85 -85
- package/dist/recipes/fields/FormField.spec.d.ts +2 -0
- package/dist/recipes/fields/FormField.spec.d.ts.map +1 -0
- package/dist/recipes/fields/FormField.spec.js +159 -0
- package/dist/recipes/fields/FormField.svelte +58 -58
- package/dist/recipes/fields/RadioGroup.spec.d.ts +2 -0
- package/dist/recipes/fields/RadioGroup.spec.d.ts.map +1 -0
- package/dist/recipes/fields/RadioGroup.spec.js +199 -0
- package/dist/recipes/fields/RadioGroup.svelte +95 -95
- package/dist/recipes/fields/SelectField.spec.d.ts +2 -0
- package/dist/recipes/fields/SelectField.spec.d.ts.map +1 -0
- package/dist/recipes/fields/SelectField.spec.js +188 -0
- package/dist/recipes/fields/SelectField.svelte +80 -80
- package/dist/recipes/fields/TextareaField.spec.d.ts +2 -0
- package/dist/recipes/fields/TextareaField.spec.d.ts.map +1 -0
- package/dist/recipes/fields/TextareaField.spec.js +205 -0
- package/dist/recipes/fields/TextareaField.svelte +97 -97
- package/dist/recipes/fields/ToggleField.spec.d.ts +2 -0
- package/dist/recipes/fields/ToggleField.spec.d.ts.map +1 -0
- package/dist/recipes/fields/ToggleField.spec.js +153 -0
- package/dist/recipes/fields/ToggleField.svelte +60 -60
- package/dist/recipes/fields/index.js +7 -7
- package/dist/recipes/inputs/MultiSelect.spec.js +258 -257
- package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
- package/dist/recipes/inputs/MultiSelect.svelte +256 -249
- package/dist/recipes/inputs/MultiSelect.svelte.d.ts +2 -0
- package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/OTPInput.spec.js +251 -238
- package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
- package/dist/recipes/inputs/OTPInput.svelte +29 -29
- package/dist/recipes/inputs/PasswordInput.spec.d.ts +2 -0
- package/dist/recipes/inputs/PasswordInput.spec.d.ts.map +1 -0
- package/dist/recipes/inputs/PasswordInput.spec.js +410 -0
- package/dist/recipes/inputs/PasswordInput.svelte +22 -22
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +245 -165
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +43 -43
- package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte +71 -0
- package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte.d.ts +9 -0
- package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte.d.ts.map +1 -0
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +1139 -193
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +123 -123
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +326 -326
- package/dist/recipes/inputs/Search.spec.d.ts +2 -0
- package/dist/recipes/inputs/Search.spec.d.ts.map +1 -0
- package/dist/recipes/inputs/Search.spec.js +177 -0
- package/dist/recipes/inputs/Search.svelte +37 -37
- package/dist/recipes/inputs/SelectDropdown.spec.d.ts +2 -0
- package/dist/recipes/inputs/SelectDropdown.spec.d.ts.map +1 -0
- package/dist/recipes/inputs/SelectDropdown.spec.js +512 -0
- package/dist/recipes/inputs/SelectDropdown.svelte +57 -57
- package/dist/recipes/modals/AlertModal.spec.d.ts +2 -0
- package/dist/recipes/modals/AlertModal.spec.d.ts.map +1 -0
- package/dist/recipes/modals/AlertModal.spec.js +432 -0
- package/dist/recipes/modals/AlertModal.svelte +130 -130
- package/dist/recipes/modals/ConfirmationModal.spec.js +206 -191
- package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
- package/dist/recipes/modals/ConfirmationModal.svelte +152 -152
- package/dist/recipes/modals/InputModal.spec.d.ts +2 -0
- package/dist/recipes/modals/InputModal.spec.d.ts.map +1 -0
- package/dist/recipes/modals/InputModal.spec.js +872 -0
- package/dist/recipes/modals/InputModal.svelte +182 -182
- package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
- package/dist/recipes/modals/ModalStateManager.svelte +77 -77
- package/dist/recipes/modals/ModalTestWrapper.spec.d.ts +2 -0
- package/dist/recipes/modals/ModalTestWrapper.spec.d.ts.map +1 -0
- package/dist/recipes/modals/ModalTestWrapper.spec.js +502 -0
- package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
- package/dist/recipes/modals/StatusModal.spec.d.ts +2 -0
- package/dist/recipes/modals/StatusModal.spec.d.ts.map +1 -0
- package/dist/recipes/modals/StatusModal.spec.js +599 -0
- package/dist/recipes/modals/StatusModal.svelte +206 -206
- package/dist/services/EventService.js +75 -75
- package/dist/services/EventService.spec.js +217 -217
- package/dist/services/ShowService.spec.js +345 -342
- package/dist/stores/auth.js +36 -36
- package/dist/stores/auth.spec.js +139 -139
- package/dist/stores/toaster.js +13 -13
- package/dist/stories/ButtonAuditDashboard.spec.d.ts +2 -0
- package/dist/stories/ButtonAuditDashboard.spec.d.ts.map +1 -0
- package/dist/stories/ButtonAuditDashboard.spec.js +913 -0
- package/dist/stories/ButtonAuditReview.spec.d.ts +2 -0
- package/dist/stories/ButtonAuditReview.spec.d.ts.map +1 -0
- package/dist/stories/ButtonAuditReview.spec.js +422 -0
- package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
- package/dist/stories/ButtonAuditReview.svelte +427 -427
- package/dist/stories/ButtonGridView.spec.d.ts +2 -0
- package/dist/stories/ButtonGridView.spec.d.ts.map +1 -0
- package/dist/stories/ButtonGridView.spec.js +667 -0
- package/dist/stories/ButtonShowcase.spec.d.ts +2 -0
- package/dist/stories/ButtonShowcase.spec.d.ts.map +1 -0
- package/dist/stories/ButtonShowcase.spec.js +499 -0
- package/dist/stories/PatternsGallery.spec.d.ts +2 -0
- package/dist/stories/PatternsGallery.spec.d.ts.map +1 -0
- package/dist/stories/PatternsGallery.spec.js +514 -0
- package/dist/stories/PatternsGallery.stories.svelte +19 -19
- package/dist/stories/PatternsGallery.svelte +206 -206
- package/dist/stories/PrimitivesGallery.spec.d.ts +2 -0
- package/dist/stories/PrimitivesGallery.spec.d.ts.map +1 -0
- package/dist/stories/PrimitivesGallery.spec.js +813 -0
- package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
- package/dist/stories/PrimitivesGallery.svelte +725 -725
- package/dist/stories/RecipesGallery.spec.d.ts +2 -0
- package/dist/stories/RecipesGallery.spec.d.ts.map +1 -0
- package/dist/stories/RecipesGallery.spec.js +299 -0
- package/dist/stories/RecipesGallery.stories.svelte +19 -19
- package/dist/stories/RecipesGallery.svelte +271 -271
- package/dist/stories/button-audit-manifest.json +11186 -11186
- package/dist/stripe/useStripeTheme.spec.d.ts +2 -0
- package/dist/stripe/useStripeTheme.spec.d.ts.map +1 -0
- package/dist/stripe/useStripeTheme.spec.js +793 -0
- package/dist/tailwind/preset.cjs +82 -82
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +6 -5
- package/dist/telemetry.spec.js +495 -12
- package/dist/tokens/__tests__/colors.test.d.ts +2 -0
- package/dist/tokens/__tests__/colors.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/colors.test.js +152 -0
- package/dist/tokens/__tests__/radius.test.d.ts +2 -0
- package/dist/tokens/__tests__/radius.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/radius.test.js +118 -0
- package/dist/tokens/__tests__/shadows.test.d.ts +2 -0
- package/dist/tokens/__tests__/shadows.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/shadows.test.js +105 -0
- package/dist/tokens/__tests__/spacing.test.js +11 -8
- package/dist/tokens/__tests__/typography.test.d.ts +2 -0
- package/dist/tokens/__tests__/typography.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/typography.test.js +156 -0
- package/dist/tokens/__tests__/z-index.test.d.ts +2 -0
- package/dist/tokens/__tests__/z-index.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/z-index.test.js +121 -0
- package/dist/tokens/tokens.css +87 -87
- package/dist/utils/apiConfig.spec.js +102 -1
- package/dist/utils/formatters.spec.d.ts +2 -0
- package/dist/utils/formatters.spec.d.ts.map +1 -0
- package/dist/utils/formatters.spec.js +82 -0
- package/dist/utils/transitions.d.ts +24 -0
- package/dist/utils/transitions.d.ts.map +1 -0
- package/dist/utils/transitions.js +62 -0
- package/dist/utils/transitions.spec.d.ts +2 -0
- package/dist/utils/transitions.spec.d.ts.map +1 -0
- package/dist/utils/transitions.spec.js +130 -0
- package/dist/utils/utils.js +354 -354
- package/package.json +288 -283
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/svelte';
|
|
2
|
+
import { expect, describe, test } from 'vitest';
|
|
3
|
+
import Label from './Label.svelte';
|
|
4
|
+
|
|
5
|
+
describe('Label Component', () => {
|
|
6
|
+
test('renders a label element', () => {
|
|
7
|
+
const { container } = render(Label);
|
|
8
|
+
expect(container.querySelector('label')).toBeInTheDocument();
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
test('applies custom className', () => {
|
|
12
|
+
const { container } = render(Label, { props: { class: 'custom-label' } });
|
|
13
|
+
const label = container.querySelector('label');
|
|
14
|
+
expect(label).toHaveClass('custom-label');
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('passes through additional props', () => {
|
|
18
|
+
const { container } = render(Label, { props: { 'data-testid': 'my-label' } });
|
|
19
|
+
const label = container.querySelector('[data-testid="my-label"]');
|
|
20
|
+
expect(label).toBeInTheDocument();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('passes for attribute', () => {
|
|
24
|
+
const { container } = render(Label, { props: { for: 'input-id' } });
|
|
25
|
+
const label = container.querySelector('label');
|
|
26
|
+
expect(label).toHaveAttribute('for', 'input-id');
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
describe('Label Colors', () => {
|
|
31
|
+
test('default color is gray', () => {
|
|
32
|
+
const { container } = render(Label);
|
|
33
|
+
const label = container.querySelector('label');
|
|
34
|
+
expect(label).toHaveClass('text-gray-900');
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test('gray color applies text-gray-900', () => {
|
|
38
|
+
const { container } = render(Label, { props: { color: 'gray' } });
|
|
39
|
+
const label = container.querySelector('label');
|
|
40
|
+
expect(label).toHaveClass('text-gray-900');
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
test('green color applies text-green-700', () => {
|
|
44
|
+
const { container } = render(Label, { props: { color: 'green' } });
|
|
45
|
+
const label = container.querySelector('label');
|
|
46
|
+
expect(label).toHaveClass('text-green-700');
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test('red color applies text-red-700', () => {
|
|
50
|
+
const { container } = render(Label, { props: { color: 'red' } });
|
|
51
|
+
const label = container.querySelector('label');
|
|
52
|
+
expect(label).toHaveClass('text-red-700');
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
test('disabled color applies text-gray-400', () => {
|
|
56
|
+
const { container } = render(Label, { props: { color: 'disabled' } });
|
|
57
|
+
const label = container.querySelector('label');
|
|
58
|
+
expect(label).toHaveClass('text-gray-400');
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
describe('Label Dark Mode', () => {
|
|
63
|
+
test('gray has dark mode class', () => {
|
|
64
|
+
const { container } = render(Label, { props: { color: 'gray' } });
|
|
65
|
+
const label = container.querySelector('label');
|
|
66
|
+
expect(label).toHaveClass('dark:text-gray-300');
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
test('green has dark mode class', () => {
|
|
70
|
+
const { container } = render(Label, { props: { color: 'green' } });
|
|
71
|
+
const label = container.querySelector('label');
|
|
72
|
+
expect(label).toHaveClass('dark:text-green-500');
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
test('red has dark mode class', () => {
|
|
76
|
+
const { container } = render(Label, { props: { color: 'red' } });
|
|
77
|
+
const label = container.querySelector('label');
|
|
78
|
+
expect(label).toHaveClass('dark:text-red-500');
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
test('disabled has dark mode class', () => {
|
|
82
|
+
const { container } = render(Label, { props: { color: 'disabled' } });
|
|
83
|
+
const label = container.querySelector('label');
|
|
84
|
+
expect(label).toHaveClass('dark:text-gray-500');
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
describe('Label Show Prop', () => {
|
|
89
|
+
test('shows label by default (show=true)', () => {
|
|
90
|
+
const { container } = render(Label);
|
|
91
|
+
expect(container.querySelector('label')).toBeInTheDocument();
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
test('hides label when show is false', () => {
|
|
95
|
+
const { container } = render(Label, { props: { show: false } });
|
|
96
|
+
expect(container.querySelector('label')).not.toBeInTheDocument();
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
test('renders children without label when show is false', () => {
|
|
100
|
+
// When show=false, children render without label wrapper
|
|
101
|
+
const { container } = render(Label, { props: { show: false } });
|
|
102
|
+
expect(container.querySelector('label')).not.toBeInTheDocument();
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
describe('Label Default Styling', () => {
|
|
107
|
+
test('has text-sm class', () => {
|
|
108
|
+
const { container } = render(Label);
|
|
109
|
+
const label = container.querySelector('label');
|
|
110
|
+
expect(label).toHaveClass('text-sm');
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
test('has font-medium class', () => {
|
|
114
|
+
const { container } = render(Label);
|
|
115
|
+
const label = container.querySelector('label');
|
|
116
|
+
expect(label).toHaveClass('font-medium');
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
test('has block display', () => {
|
|
120
|
+
const { container } = render(Label);
|
|
121
|
+
const label = container.querySelector('label');
|
|
122
|
+
expect(label).toHaveClass('block');
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
test('has rtl:text-right for RTL support', () => {
|
|
126
|
+
const { container } = render(Label);
|
|
127
|
+
const label = container.querySelector('label');
|
|
128
|
+
expect(label).toHaveClass('rtl:text-right');
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
describe('Label Custom Default Class', () => {
|
|
133
|
+
test('accepts defaultClass prop', () => {
|
|
134
|
+
const { container } = render(Label, { props: { defaultClass: 'text-lg font-bold' } });
|
|
135
|
+
const label = container.querySelector('label');
|
|
136
|
+
expect(label).toHaveClass('text-lg');
|
|
137
|
+
expect(label).toHaveClass('font-bold');
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
test('defaultClass replaces default styling', () => {
|
|
141
|
+
const { container } = render(Label, { props: { defaultClass: 'custom-default' } });
|
|
142
|
+
const label = container.querySelector('label');
|
|
143
|
+
expect(label).toHaveClass('custom-default');
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
describe('Label Class Composition', () => {
|
|
148
|
+
test('combines defaultClass, color class, and custom class', () => {
|
|
149
|
+
const { container } = render(Label, {
|
|
150
|
+
props: { color: 'green', class: 'extra-class' }
|
|
151
|
+
});
|
|
152
|
+
const label = container.querySelector('label');
|
|
153
|
+
expect(label).toHaveClass('text-sm'); // from defaultClass
|
|
154
|
+
expect(label).toHaveClass('text-green-700'); // from color
|
|
155
|
+
expect(label).toHaveClass('extra-class'); // from custom class
|
|
156
|
+
});
|
|
157
|
+
});
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import type { Snippet } from 'svelte';
|
|
3
|
-
|
|
4
|
-
interface Props {
|
|
5
|
-
color?: 'gray' | 'green' | 'red' | 'disabled';
|
|
6
|
-
defaultClass?: string;
|
|
7
|
-
show?: boolean;
|
|
8
|
-
class?: string;
|
|
9
|
-
children?: Snippet;
|
|
10
|
-
[key: string]: unknown;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
let {
|
|
14
|
-
color = "gray",
|
|
15
|
-
defaultClass = "text-sm rtl:text-right font-medium block",
|
|
16
|
-
show = true,
|
|
17
|
-
class: className = "",
|
|
18
|
-
children,
|
|
19
|
-
...restProps
|
|
20
|
-
}: Props = $props();
|
|
21
|
-
|
|
22
|
-
const colorClasses = {
|
|
23
|
-
gray: "text-gray-900 dark:text-gray-300",
|
|
24
|
-
green: "text-green-700 dark:text-green-500",
|
|
25
|
-
red: "text-red-700 dark:text-red-500",
|
|
26
|
-
disabled: "text-gray-400 dark:text-gray-500"
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
let labelClass = $derived(`${defaultClass} ${colorClasses[color] || colorClasses.gray} ${className}`.trim());
|
|
30
|
-
</script>
|
|
31
|
-
|
|
32
|
-
{#if show}
|
|
33
|
-
<!-- svelte-ignore a11y_label_has_associated_control -->
|
|
34
|
-
<label {...restProps} class={labelClass}>{#if children}{@render children()}{/if}</label>
|
|
35
|
-
{:else}
|
|
36
|
-
{#if children}{@render children()}{/if}
|
|
37
|
-
{/if}
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
color?: 'gray' | 'green' | 'red' | 'disabled';
|
|
6
|
+
defaultClass?: string;
|
|
7
|
+
show?: boolean;
|
|
8
|
+
class?: string;
|
|
9
|
+
children?: Snippet;
|
|
10
|
+
[key: string]: unknown;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
let {
|
|
14
|
+
color = "gray",
|
|
15
|
+
defaultClass = "text-sm rtl:text-right font-medium block",
|
|
16
|
+
show = true,
|
|
17
|
+
class: className = "",
|
|
18
|
+
children,
|
|
19
|
+
...restProps
|
|
20
|
+
}: Props = $props();
|
|
21
|
+
|
|
22
|
+
const colorClasses = {
|
|
23
|
+
gray: "text-gray-900 dark:text-gray-300",
|
|
24
|
+
green: "text-green-700 dark:text-green-500",
|
|
25
|
+
red: "text-red-700 dark:text-red-500",
|
|
26
|
+
disabled: "text-gray-400 dark:text-gray-500"
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
let labelClass = $derived(`${defaultClass} ${colorClasses[color] || colorClasses.gray} ${className}`.trim());
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
{#if show}
|
|
33
|
+
<!-- svelte-ignore a11y_label_has_associated_control -->
|
|
34
|
+
<label {...restProps} class={labelClass}>{#if children}{@render children()}{/if}</label>
|
|
35
|
+
{:else}
|
|
36
|
+
{#if children}{@render children()}{/if}
|
|
37
|
+
{/if}
|
|
@@ -1,95 +1,99 @@
|
|
|
1
|
-
import { render, screen, fireEvent } from '@testing-library/svelte';
|
|
2
|
-
import userEvent from '@testing-library/user-event';
|
|
3
|
-
import { expect, describe, test } from 'vitest';
|
|
4
|
-
import ModalTestWrapper from './ModalTestWrapper.svelte';
|
|
5
|
-
|
|
6
|
-
function setupTest(args) {
|
|
7
|
-
const user = userEvent.setup();
|
|
8
|
-
const { component } = render(ModalTestWrapper, { props: { ...args } });
|
|
9
|
-
return { user, component };
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
describe('Modal Component Tests', () => {
|
|
13
|
-
// Note: Modal renders both mobile sheet and desktop centered versions
|
|
14
|
-
// CSS hides one based on viewport, but in tests both are in DOM
|
|
15
|
-
// Use getAllByText and check that at least one exists
|
|
16
|
-
|
|
17
|
-
test('Renders Modal when show is true', () => {
|
|
18
|
-
setupTest({
|
|
19
|
-
show: true,
|
|
20
|
-
title: 'Test Title',
|
|
21
|
-
description: 'Test Description',
|
|
22
|
-
warningText: 'Test Warning'
|
|
23
|
-
});
|
|
24
|
-
// Modal renders both mobile and desktop versions, so use getAllByText
|
|
25
|
-
expect(screen.getAllByText('Test Title').length).toBeGreaterThan(0);
|
|
26
|
-
expect(screen.getAllByText(
|
|
27
|
-
expect(screen.getAllByText(
|
|
28
|
-
expect(screen.getAllByRole('button', { name: /Cancel/i }).length).toBeGreaterThan(0);
|
|
29
|
-
expect(screen.getAllByRole('button', { name: /Confirm/i }).length).toBeGreaterThan(0);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
test('Does not render Modal when show is false', () => {
|
|
33
|
-
setupTest({
|
|
34
|
-
show: false,
|
|
35
|
-
title: 'Test Title',
|
|
36
|
-
description: 'Test Description',
|
|
37
|
-
warningText: 'Test Warning'
|
|
38
|
-
});
|
|
39
|
-
expect(screen.queryByText('Test Title')).not.toBeInTheDocument();
|
|
40
|
-
expect(screen.queryByText('Test Description')).not.toBeInTheDocument();
|
|
41
|
-
expect(screen.queryByText('Test Warning')).not.toBeInTheDocument();
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
test('Displays the correct title, description, and warning text', () => {
|
|
45
|
-
const title = 'Correct Title';
|
|
46
|
-
const description = 'Correct Description';
|
|
47
|
-
const warningText = 'Correct Warning';
|
|
48
|
-
setupTest({
|
|
49
|
-
show: true,
|
|
50
|
-
title,
|
|
51
|
-
description,
|
|
52
|
-
warningText,
|
|
53
|
-
});
|
|
54
|
-
// Modal renders both mobile and desktop versions
|
|
55
|
-
expect(screen.getAllByText(title).length).toBeGreaterThan(0);
|
|
56
|
-
expect(screen.getAllByText(
|
|
57
|
-
expect(screen.getAllByText(
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
test('Dispatches cancel event on escape key press', async () => {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
// Press Escape key
|
|
74
|
-
await fireEvent.keyDown(window, { key: 'Escape' });
|
|
75
|
-
|
|
76
|
-
// Cancel
|
|
77
|
-
expect(
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
test('Prevents propagation of click events within modal', async () => {
|
|
81
|
-
const { user } = setupTest({
|
|
82
|
-
show: true,
|
|
83
|
-
title: 'Test Title'
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
// Find the modal
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
modalContent.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
1
|
+
import { render, screen, fireEvent } from '@testing-library/svelte';
|
|
2
|
+
import userEvent from '@testing-library/user-event';
|
|
3
|
+
import { expect, describe, test, vi } from 'vitest';
|
|
4
|
+
import ModalTestWrapper from './ModalTestWrapper.svelte';
|
|
5
|
+
|
|
6
|
+
function setupTest(args) {
|
|
7
|
+
const user = userEvent.setup();
|
|
8
|
+
const { component, rerender } = render(ModalTestWrapper, { props: { ...args } });
|
|
9
|
+
return { user, component, rerender };
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
describe('Modal Component Tests', () => {
|
|
13
|
+
// Note: Modal renders both mobile sheet and desktop centered versions
|
|
14
|
+
// CSS hides one based on viewport, but in tests both are in DOM
|
|
15
|
+
// Use getAllByText and check that at least one exists
|
|
16
|
+
|
|
17
|
+
test('Renders Modal when show is true', () => {
|
|
18
|
+
setupTest({
|
|
19
|
+
show: true,
|
|
20
|
+
title: 'Test Title',
|
|
21
|
+
description: 'Test Description',
|
|
22
|
+
warningText: 'Test Warning'
|
|
23
|
+
});
|
|
24
|
+
// Modal renders both mobile and desktop versions, so use getAllByText
|
|
25
|
+
expect(screen.getAllByText((content, element) => content.includes('Test Title')).length).toBeGreaterThan(0);
|
|
26
|
+
expect(screen.getAllByText((content, element) => content.includes('Test Description')).length).toBeGreaterThan(0);
|
|
27
|
+
expect(screen.getAllByText((content, element) => content.includes('Test Warning')).length).toBeGreaterThan(0);
|
|
28
|
+
expect(screen.getAllByRole('button', { name: /Cancel/i }).length).toBeGreaterThan(0);
|
|
29
|
+
expect(screen.getAllByRole('button', { name: /Confirm/i }).length).toBeGreaterThan(0);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('Does not render Modal when show is false', () => {
|
|
33
|
+
setupTest({
|
|
34
|
+
show: false,
|
|
35
|
+
title: 'Test Title',
|
|
36
|
+
description: 'Test Description',
|
|
37
|
+
warningText: 'Test Warning'
|
|
38
|
+
});
|
|
39
|
+
expect(screen.queryByText('Test Title')).not.toBeInTheDocument();
|
|
40
|
+
expect(screen.queryByText('Test Description')).not.toBeInTheDocument();
|
|
41
|
+
expect(screen.queryByText('Test Warning')).not.toBeInTheDocument();
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test('Displays the correct title, description, and warning text', () => {
|
|
45
|
+
const title = 'Correct Title';
|
|
46
|
+
const description = 'Correct Description';
|
|
47
|
+
const warningText = 'Correct Warning';
|
|
48
|
+
setupTest({
|
|
49
|
+
show: true,
|
|
50
|
+
title,
|
|
51
|
+
description,
|
|
52
|
+
warningText,
|
|
53
|
+
});
|
|
54
|
+
// Modal renders both mobile and desktop versions
|
|
55
|
+
expect(screen.getAllByText((content) => content.includes(title)).length).toBeGreaterThan(0);
|
|
56
|
+
expect(screen.getAllByText((content) => content.includes(description)).length).toBeGreaterThan(0);
|
|
57
|
+
expect(screen.getAllByText((content) => content.includes(warningText)).length).toBeGreaterThan(0);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
test('Dispatches cancel event on escape key press', async () => {
|
|
61
|
+
// Create a mock function to track cancel calls
|
|
62
|
+
const oncancel = vi.fn();
|
|
63
|
+
|
|
64
|
+
const { user } = setupTest({
|
|
65
|
+
show: true,
|
|
66
|
+
title: 'Test Title',
|
|
67
|
+
oncancel
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Verify modal is open
|
|
71
|
+
expect(screen.getAllByText((content) => content.includes('Test Title')).length).toBeGreaterThan(0);
|
|
72
|
+
|
|
73
|
+
// Press Escape key
|
|
74
|
+
await fireEvent.keyDown(window, { key: 'Escape' });
|
|
75
|
+
|
|
76
|
+
// Cancel callback should be called
|
|
77
|
+
expect(oncancel).toHaveBeenCalled();
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
test('Prevents propagation of click events within modal', async () => {
|
|
81
|
+
const { user } = setupTest({
|
|
82
|
+
show: true,
|
|
83
|
+
title: 'Test Title'
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// Find the modal content (first instance)
|
|
87
|
+
const modalElements = screen.getAllByText((content) => content.includes('Test Title'));
|
|
88
|
+
expect(modalElements.length).toBeGreaterThan(0);
|
|
89
|
+
|
|
90
|
+
const modalContent = modalElements[0].closest('.md\\:hidden, .hidden');
|
|
91
|
+
if (modalContent) {
|
|
92
|
+
const clickEvent = new MouseEvent('click', { bubbles: true });
|
|
93
|
+
modalContent.dispatchEvent(clickEvent);
|
|
94
|
+
|
|
95
|
+
// Modal should still be visible
|
|
96
|
+
expect(screen.getAllByText((content) => content.includes('Test Title')).length).toBeGreaterThan(0);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
3
|
-
|
|
4
|
-
import ModalProgress from "./Modal.svelte";
|
|
5
|
-
|
|
6
|
-
const { Story } = defineMeta({
|
|
7
|
-
title: "Components/Modal/ModalProgress",
|
|
8
|
-
component: ModalProgress,
|
|
9
|
-
});
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<script>
|
|
13
|
-
let show1 = $state(false);
|
|
14
|
-
let show2 = $state(false);
|
|
15
|
-
let show3 = $state(false);
|
|
16
|
-
</script>
|
|
17
|
-
|
|
18
|
-
<Story name="Basic Modal">
|
|
19
|
-
<button
|
|
20
|
-
onclick={() => (show1 = true)}
|
|
21
|
-
class="px-4 py-2 bg-primary text-white rounded-lg"
|
|
22
|
-
>
|
|
23
|
-
Open Basic Modal
|
|
24
|
-
</button>
|
|
25
|
-
<ModalProgress bind:show={show1}>
|
|
26
|
-
{#snippet header()}
|
|
27
|
-
<h2 class="text-xl font-semibold mb-2">Modal Title</h2>
|
|
28
|
-
{/snippet}
|
|
29
|
-
{#snippet body()}
|
|
30
|
-
<p class="text-gray-500 dark:text-gray-400">This is the modal body content.</p>
|
|
31
|
-
{/snippet}
|
|
32
|
-
{#snippet footer()}
|
|
33
|
-
<button
|
|
34
|
-
onclick={() => (show1 = false)}
|
|
35
|
-
class="px-4 py-2 bg-gray-600 text-white rounded-lg"
|
|
36
|
-
>
|
|
37
|
-
Close
|
|
38
|
-
</button>
|
|
39
|
-
{/snippet}
|
|
40
|
-
</ModalProgress>
|
|
41
|
-
</Story>
|
|
42
|
-
|
|
43
|
-
<Story name="Processing State">
|
|
44
|
-
<button
|
|
45
|
-
onclick={() => (show2 = true)}
|
|
46
|
-
class="px-4 py-2 bg-primary text-white rounded-lg"
|
|
47
|
-
>
|
|
48
|
-
Open Processing Modal
|
|
49
|
-
</button>
|
|
50
|
-
<ModalProgress bind:show={show2} isProcessing={true}>
|
|
51
|
-
{#snippet body()}
|
|
52
|
-
<div class="flex flex-col items-center gap-4">
|
|
53
|
-
<div
|
|
54
|
-
class="animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600"
|
|
55
|
-
></div>
|
|
56
|
-
<p class="text-gray-500 dark:text-gray-400">Processing your request...</p>
|
|
57
|
-
</div>
|
|
58
|
-
{/snippet}
|
|
59
|
-
</ModalProgress>
|
|
60
|
-
</Story>
|
|
61
|
-
|
|
62
|
-
<Story name="Success State">
|
|
63
|
-
<button
|
|
64
|
-
onclick={() => (show3 = true)}
|
|
65
|
-
class="px-4 py-2 bg-green-600 text-white rounded-lg"
|
|
66
|
-
>
|
|
67
|
-
Open Success Modal
|
|
68
|
-
</button>
|
|
69
|
-
<ModalProgress bind:show={show3} isSuccess={true}>
|
|
70
|
-
{#snippet body()}
|
|
71
|
-
<div class="flex flex-col items-center gap-4 text-center">
|
|
72
|
-
<div class="text-green-600 dark:text-green-400 text-5xl">✓</div>
|
|
73
|
-
<h3 class="text-xl font-semibold">Success!</h3>
|
|
74
|
-
<p class="text-gray-500 dark:text-gray-400">Your action was completed successfully.</p>
|
|
75
|
-
</div>
|
|
76
|
-
{/snippet}
|
|
77
|
-
{#snippet footer()}
|
|
78
|
-
<button
|
|
79
|
-
onclick={() => (show3 = false)}
|
|
80
|
-
class="px-4 py-2 bg-green-600 text-white rounded-lg"
|
|
81
|
-
>
|
|
82
|
-
Done
|
|
83
|
-
</button>
|
|
84
|
-
{/snippet}
|
|
85
|
-
</ModalProgress>
|
|
86
|
-
</Story>
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
3
|
+
|
|
4
|
+
import ModalProgress from "./Modal.svelte";
|
|
5
|
+
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
title: "Components/Modal/ModalProgress",
|
|
8
|
+
component: ModalProgress,
|
|
9
|
+
});
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<script>
|
|
13
|
+
let show1 = $state(false);
|
|
14
|
+
let show2 = $state(false);
|
|
15
|
+
let show3 = $state(false);
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<Story name="Basic Modal">
|
|
19
|
+
<button
|
|
20
|
+
onclick={() => (show1 = true)}
|
|
21
|
+
class="px-4 py-2 bg-primary text-white rounded-lg"
|
|
22
|
+
>
|
|
23
|
+
Open Basic Modal
|
|
24
|
+
</button>
|
|
25
|
+
<ModalProgress bind:show={show1}>
|
|
26
|
+
{#snippet header()}
|
|
27
|
+
<h2 class="text-xl font-semibold mb-2">Modal Title</h2>
|
|
28
|
+
{/snippet}
|
|
29
|
+
{#snippet body()}
|
|
30
|
+
<p class="text-gray-500 dark:text-gray-400">This is the modal body content.</p>
|
|
31
|
+
{/snippet}
|
|
32
|
+
{#snippet footer()}
|
|
33
|
+
<button
|
|
34
|
+
onclick={() => (show1 = false)}
|
|
35
|
+
class="px-4 py-2 bg-gray-600 text-white rounded-lg"
|
|
36
|
+
>
|
|
37
|
+
Close
|
|
38
|
+
</button>
|
|
39
|
+
{/snippet}
|
|
40
|
+
</ModalProgress>
|
|
41
|
+
</Story>
|
|
42
|
+
|
|
43
|
+
<Story name="Processing State">
|
|
44
|
+
<button
|
|
45
|
+
onclick={() => (show2 = true)}
|
|
46
|
+
class="px-4 py-2 bg-primary text-white rounded-lg"
|
|
47
|
+
>
|
|
48
|
+
Open Processing Modal
|
|
49
|
+
</button>
|
|
50
|
+
<ModalProgress bind:show={show2} isProcessing={true}>
|
|
51
|
+
{#snippet body()}
|
|
52
|
+
<div class="flex flex-col items-center gap-4">
|
|
53
|
+
<div
|
|
54
|
+
class="animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600"
|
|
55
|
+
></div>
|
|
56
|
+
<p class="text-gray-500 dark:text-gray-400">Processing your request...</p>
|
|
57
|
+
</div>
|
|
58
|
+
{/snippet}
|
|
59
|
+
</ModalProgress>
|
|
60
|
+
</Story>
|
|
61
|
+
|
|
62
|
+
<Story name="Success State">
|
|
63
|
+
<button
|
|
64
|
+
onclick={() => (show3 = true)}
|
|
65
|
+
class="px-4 py-2 bg-green-600 text-white rounded-lg"
|
|
66
|
+
>
|
|
67
|
+
Open Success Modal
|
|
68
|
+
</button>
|
|
69
|
+
<ModalProgress bind:show={show3} isSuccess={true}>
|
|
70
|
+
{#snippet body()}
|
|
71
|
+
<div class="flex flex-col items-center gap-4 text-center">
|
|
72
|
+
<div class="text-green-600 dark:text-green-400 text-5xl">✓</div>
|
|
73
|
+
<h3 class="text-xl font-semibold">Success!</h3>
|
|
74
|
+
<p class="text-gray-500 dark:text-gray-400">Your action was completed successfully.</p>
|
|
75
|
+
</div>
|
|
76
|
+
{/snippet}
|
|
77
|
+
{#snippet footer()}
|
|
78
|
+
<button
|
|
79
|
+
onclick={() => (show3 = false)}
|
|
80
|
+
class="px-4 py-2 bg-green-600 text-white rounded-lg"
|
|
81
|
+
>
|
|
82
|
+
Done
|
|
83
|
+
</button>
|
|
84
|
+
{/snippet}
|
|
85
|
+
</ModalProgress>
|
|
86
|
+
</Story>
|