@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,62 +1,62 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
/**
|
|
3
|
-
* Accordion Component - Flowbite Native (Pure Tailwind)
|
|
4
|
-
*
|
|
5
|
-
* Props:
|
|
6
|
-
* multiple: boolean - Allow multiple items open at once
|
|
7
|
-
* flush: boolean - Remove outer border/radius (Flowbite flush variant)
|
|
8
|
-
*/
|
|
9
|
-
import type { Snippet } from 'svelte';
|
|
10
|
-
import { setContext } from "svelte";
|
|
11
|
-
import { writable } from "svelte/store";
|
|
12
|
-
|
|
13
|
-
interface Props {
|
|
14
|
-
multiple?: boolean;
|
|
15
|
-
flush?: boolean;
|
|
16
|
-
class?: string;
|
|
17
|
-
children?: Snippet;
|
|
18
|
-
[key: string]: unknown;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
let {
|
|
22
|
-
multiple = false,
|
|
23
|
-
flush = false,
|
|
24
|
-
class: className = "",
|
|
25
|
-
children,
|
|
26
|
-
...restProps
|
|
27
|
-
}: Props = $props();
|
|
28
|
-
|
|
29
|
-
// Store to track which items are open
|
|
30
|
-
const openItems = writable(new Set<string>());
|
|
31
|
-
|
|
32
|
-
// Context for child AccordionItem components
|
|
33
|
-
// Use getters to capture current prop values (not initial values)
|
|
34
|
-
setContext("accordion", {
|
|
35
|
-
openItems,
|
|
36
|
-
get multiple() { return multiple; },
|
|
37
|
-
get flush() { return flush; },
|
|
38
|
-
toggle: (id: string) => {
|
|
39
|
-
openItems.update((items) => {
|
|
40
|
-
if (items.has(id)) {
|
|
41
|
-
items.delete(id);
|
|
42
|
-
} else {
|
|
43
|
-
if (!multiple) {
|
|
44
|
-
items.clear();
|
|
45
|
-
}
|
|
46
|
-
items.add(id);
|
|
47
|
-
}
|
|
48
|
-
return new Set(items);
|
|
49
|
-
});
|
|
50
|
-
},
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
// Flowbite-native classes
|
|
54
|
-
// Note: overflow-hidden was removed to allow dropdowns/menus inside accordion items to render outside the container
|
|
55
|
-
let containerClasses = $derived(flush
|
|
56
|
-
? "divide-y divide-gray-200 dark:divide-gray-700"
|
|
57
|
-
: "border border-gray-200 dark:border-gray-700 rounded-lg divide-y divide-gray-200 dark:divide-gray-700");
|
|
58
|
-
</script>
|
|
59
|
-
|
|
60
|
-
<div class="{containerClasses} {className}" data-accordion={multiple ? "open" : "collapse"} {...restProps}>
|
|
61
|
-
{#if children}{@render children()}{/if}
|
|
62
|
-
</div>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* Accordion Component - Flowbite Native (Pure Tailwind)
|
|
4
|
+
*
|
|
5
|
+
* Props:
|
|
6
|
+
* multiple: boolean - Allow multiple items open at once
|
|
7
|
+
* flush: boolean - Remove outer border/radius (Flowbite flush variant)
|
|
8
|
+
*/
|
|
9
|
+
import type { Snippet } from 'svelte';
|
|
10
|
+
import { setContext } from "svelte";
|
|
11
|
+
import { writable } from "svelte/store";
|
|
12
|
+
|
|
13
|
+
interface Props {
|
|
14
|
+
multiple?: boolean;
|
|
15
|
+
flush?: boolean;
|
|
16
|
+
class?: string;
|
|
17
|
+
children?: Snippet;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let {
|
|
22
|
+
multiple = false,
|
|
23
|
+
flush = false,
|
|
24
|
+
class: className = "",
|
|
25
|
+
children,
|
|
26
|
+
...restProps
|
|
27
|
+
}: Props = $props();
|
|
28
|
+
|
|
29
|
+
// Store to track which items are open
|
|
30
|
+
const openItems = writable(new Set<string>());
|
|
31
|
+
|
|
32
|
+
// Context for child AccordionItem components
|
|
33
|
+
// Use getters to capture current prop values (not initial values)
|
|
34
|
+
setContext("accordion", {
|
|
35
|
+
openItems,
|
|
36
|
+
get multiple() { return multiple; },
|
|
37
|
+
get flush() { return flush; },
|
|
38
|
+
toggle: (id: string) => {
|
|
39
|
+
openItems.update((items) => {
|
|
40
|
+
if (items.has(id)) {
|
|
41
|
+
items.delete(id);
|
|
42
|
+
} else {
|
|
43
|
+
if (!multiple) {
|
|
44
|
+
items.clear();
|
|
45
|
+
}
|
|
46
|
+
items.add(id);
|
|
47
|
+
}
|
|
48
|
+
return new Set(items);
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// Flowbite-native classes
|
|
54
|
+
// Note: overflow-hidden was removed to allow dropdowns/menus inside accordion items to render outside the container
|
|
55
|
+
let containerClasses = $derived(flush
|
|
56
|
+
? "divide-y divide-gray-200 dark:divide-gray-700"
|
|
57
|
+
: "border border-gray-200 dark:border-gray-700 rounded-lg divide-y divide-gray-200 dark:divide-gray-700");
|
|
58
|
+
</script>
|
|
59
|
+
|
|
60
|
+
<div class="{containerClasses} {className}" data-accordion={multiple ? "open" : "collapse"} {...restProps}>
|
|
61
|
+
{#if children}{@render children()}{/if}
|
|
62
|
+
</div>
|
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
/**
|
|
3
|
-
* AccordionItem Component - Flowbite Native (Pure Tailwind)
|
|
4
|
-
*
|
|
5
|
-
* Props:
|
|
6
|
-
* open: boolean - Start expanded
|
|
7
|
-
* border: boolean - Show bottom border (Flowbite API)
|
|
8
|
-
* borderOpenClass: string - Additional classes when open
|
|
9
|
-
*/
|
|
10
|
-
import type { Snippet } from 'svelte';
|
|
11
|
-
import { getContext, onMount } from "svelte";
|
|
12
|
-
import { safeSlide } from "../../utils/transitions.js";
|
|
13
|
-
import type { Writable } from "svelte/store";
|
|
14
|
-
import { ChevronUpOutline } from "../Icons";
|
|
15
|
-
import { typography } from "../../tokens/typography";
|
|
16
|
-
|
|
17
|
-
const defaultLabels = {
|
|
18
|
-
accordionItem: 'Accordion Item',
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
interface Props {
|
|
22
|
-
open?: boolean;
|
|
23
|
-
class?: string;
|
|
24
|
-
border?: boolean;
|
|
25
|
-
borderOpenClass?: string;
|
|
26
|
-
header?: Snippet;
|
|
27
|
-
children?: Snippet;
|
|
28
|
-
labels?: Partial<typeof defaultLabels>;
|
|
29
|
-
[key: string]: unknown;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
let {
|
|
33
|
-
open = false,
|
|
34
|
-
class: className = "",
|
|
35
|
-
border = true,
|
|
36
|
-
borderOpenClass = "",
|
|
37
|
-
header,
|
|
38
|
-
children,
|
|
39
|
-
labels: userLabels = {},
|
|
40
|
-
...restProps
|
|
41
|
-
}: Props = $props();
|
|
42
|
-
|
|
43
|
-
let labels = $derived({ ...defaultLabels, ...userLabels });
|
|
44
|
-
|
|
45
|
-
const { openItems, toggle, flush } = getContext<{
|
|
46
|
-
openItems: Writable<Set<string>>;
|
|
47
|
-
toggle: (id: string) => void;
|
|
48
|
-
flush: boolean;
|
|
49
|
-
}>("accordion");
|
|
50
|
-
|
|
51
|
-
// Generate unique ID for this item
|
|
52
|
-
let id = Math.random().toString(36).substring(2, 9);
|
|
53
|
-
|
|
54
|
-
onMount(() => {
|
|
55
|
-
if (open) {
|
|
56
|
-
toggle(id);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
let isOpen = $derived($openItems.has(id));
|
|
61
|
-
|
|
62
|
-
function handleClick() {
|
|
63
|
-
toggle(id);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Flowbite-native header classes
|
|
67
|
-
let headerClasses = $derived([
|
|
68
|
-
"flex items-center justify-between w-full p-5 font-medium text-left",
|
|
69
|
-
typography.smMuted,
|
|
70
|
-
"bg-gray-100 dark:bg-gray-800",
|
|
71
|
-
"hover:bg-gray-200 dark:hover:bg-gray-700",
|
|
72
|
-
"focus:outline-hidden",
|
|
73
|
-
"gap-3",
|
|
74
|
-
isOpen ? "bg-gray-100 dark:bg-gray-800" : "",
|
|
75
|
-
].join(" "));
|
|
76
|
-
</script>
|
|
77
|
-
|
|
78
|
-
<div class="{className} {isOpen && borderOpenClass ? borderOpenClass : ''}" {...restProps}>
|
|
79
|
-
<h2>
|
|
80
|
-
<button
|
|
81
|
-
type="button"
|
|
82
|
-
class={headerClasses}
|
|
83
|
-
aria-expanded={isOpen}
|
|
84
|
-
onclick={handleClick}
|
|
85
|
-
>
|
|
86
|
-
<span class={typography.body}>
|
|
87
|
-
{#if header}{@render header()}{:else}{labels.accordionItem}{/if}
|
|
88
|
-
</span>
|
|
89
|
-
<!-- Flowbite arrow icon -->
|
|
90
|
-
<ChevronUpOutline class="w-3 h-3 shrink-0 transition-transform duration-200 {isOpen ? 'rotate-180' : ''}" />
|
|
91
|
-
</button>
|
|
92
|
-
</h2>
|
|
93
|
-
|
|
94
|
-
{#if isOpen}
|
|
95
|
-
<div transition:safeSlide={{ duration: 200 }}>
|
|
96
|
-
<div class="p-5 {flush ? '' : 'border border-t-0 border-gray-200 dark:border-gray-700'}">
|
|
97
|
-
<p class={typography.bodyMuted}>
|
|
98
|
-
{#if children}{@render children()}{/if}
|
|
99
|
-
</p>
|
|
100
|
-
</div>
|
|
101
|
-
</div>
|
|
102
|
-
{/if}
|
|
103
|
-
</div>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* AccordionItem Component - Flowbite Native (Pure Tailwind)
|
|
4
|
+
*
|
|
5
|
+
* Props:
|
|
6
|
+
* open: boolean - Start expanded
|
|
7
|
+
* border: boolean - Show bottom border (Flowbite API)
|
|
8
|
+
* borderOpenClass: string - Additional classes when open
|
|
9
|
+
*/
|
|
10
|
+
import type { Snippet } from 'svelte';
|
|
11
|
+
import { getContext, onMount } from "svelte";
|
|
12
|
+
import { safeSlide } from "../../utils/transitions.js";
|
|
13
|
+
import type { Writable } from "svelte/store";
|
|
14
|
+
import { ChevronUpOutline } from "../Icons";
|
|
15
|
+
import { typography } from "../../tokens/typography";
|
|
16
|
+
|
|
17
|
+
const defaultLabels = {
|
|
18
|
+
accordionItem: 'Accordion Item',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
interface Props {
|
|
22
|
+
open?: boolean;
|
|
23
|
+
class?: string;
|
|
24
|
+
border?: boolean;
|
|
25
|
+
borderOpenClass?: string;
|
|
26
|
+
header?: Snippet;
|
|
27
|
+
children?: Snippet;
|
|
28
|
+
labels?: Partial<typeof defaultLabels>;
|
|
29
|
+
[key: string]: unknown;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
let {
|
|
33
|
+
open = false,
|
|
34
|
+
class: className = "",
|
|
35
|
+
border = true,
|
|
36
|
+
borderOpenClass = "",
|
|
37
|
+
header,
|
|
38
|
+
children,
|
|
39
|
+
labels: userLabels = {},
|
|
40
|
+
...restProps
|
|
41
|
+
}: Props = $props();
|
|
42
|
+
|
|
43
|
+
let labels = $derived({ ...defaultLabels, ...userLabels });
|
|
44
|
+
|
|
45
|
+
const { openItems, toggle, flush } = getContext<{
|
|
46
|
+
openItems: Writable<Set<string>>;
|
|
47
|
+
toggle: (id: string) => void;
|
|
48
|
+
flush: boolean;
|
|
49
|
+
}>("accordion");
|
|
50
|
+
|
|
51
|
+
// Generate unique ID for this item
|
|
52
|
+
let id = Math.random().toString(36).substring(2, 9);
|
|
53
|
+
|
|
54
|
+
onMount(() => {
|
|
55
|
+
if (open) {
|
|
56
|
+
toggle(id);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
let isOpen = $derived($openItems.has(id));
|
|
61
|
+
|
|
62
|
+
function handleClick() {
|
|
63
|
+
toggle(id);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Flowbite-native header classes
|
|
67
|
+
let headerClasses = $derived([
|
|
68
|
+
"flex items-center justify-between w-full p-5 font-medium text-left",
|
|
69
|
+
typography.smMuted,
|
|
70
|
+
"bg-gray-100 dark:bg-gray-800",
|
|
71
|
+
"hover:bg-gray-200 dark:hover:bg-gray-700",
|
|
72
|
+
"focus:outline-hidden",
|
|
73
|
+
"gap-3",
|
|
74
|
+
isOpen ? "bg-gray-100 dark:bg-gray-800" : "",
|
|
75
|
+
].join(" "));
|
|
76
|
+
</script>
|
|
77
|
+
|
|
78
|
+
<div class="{className} {isOpen && borderOpenClass ? borderOpenClass : ''}" {...restProps}>
|
|
79
|
+
<h2>
|
|
80
|
+
<button
|
|
81
|
+
type="button"
|
|
82
|
+
class={headerClasses}
|
|
83
|
+
aria-expanded={isOpen}
|
|
84
|
+
onclick={handleClick}
|
|
85
|
+
>
|
|
86
|
+
<span class={typography.body}>
|
|
87
|
+
{#if header}{@render header()}{:else}{labels.accordionItem}{/if}
|
|
88
|
+
</span>
|
|
89
|
+
<!-- Flowbite arrow icon -->
|
|
90
|
+
<ChevronUpOutline class="w-3 h-3 shrink-0 transition-transform duration-200 {isOpen ? 'rotate-180' : ''}" />
|
|
91
|
+
</button>
|
|
92
|
+
</h2>
|
|
93
|
+
|
|
94
|
+
{#if isOpen}
|
|
95
|
+
<div transition:safeSlide={{ duration: 200 }}>
|
|
96
|
+
<div class="p-5 {flush ? '' : 'border border-t-0 border-gray-200 dark:border-gray-700'}">
|
|
97
|
+
<p class={typography.bodyMuted}>
|
|
98
|
+
{#if children}{@render children()}{/if}
|
|
99
|
+
</p>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
{/if}
|
|
103
|
+
</div>
|
|
@@ -1,107 +1,107 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
/**
|
|
3
|
-
* Test wrapper for AccordionItem
|
|
4
|
-
* Provides the necessary accordion context that AccordionItem expects
|
|
5
|
-
*/
|
|
6
|
-
import type { Snippet } from 'svelte';
|
|
7
|
-
import { setContext } from 'svelte';
|
|
8
|
-
import { writable } from 'svelte/store';
|
|
9
|
-
import AccordionItem from './AccordionItem.svelte';
|
|
10
|
-
|
|
11
|
-
interface Props {
|
|
12
|
-
/** Allow multiple items open at once */
|
|
13
|
-
multiple?: boolean;
|
|
14
|
-
/** Remove outer border/radius (Flowbite flush variant) */
|
|
15
|
-
flush?: boolean;
|
|
16
|
-
/** Initial open state of the item */
|
|
17
|
-
open?: boolean;
|
|
18
|
-
/** Show bottom border */
|
|
19
|
-
border?: boolean;
|
|
20
|
-
/** Additional classes when open */
|
|
21
|
-
borderOpenClass?: string;
|
|
22
|
-
/** Custom class for the item */
|
|
23
|
-
class?: string;
|
|
24
|
-
/** Header snippet */
|
|
25
|
-
header?: Snippet;
|
|
26
|
-
/** Children snippet */
|
|
27
|
-
children?: Snippet;
|
|
28
|
-
/** Expose the openItems store for testing */
|
|
29
|
-
openItems?: import('svelte/store').Writable<Set<string>> | null;
|
|
30
|
-
/** Expose the toggle function for testing */
|
|
31
|
-
toggleFn?: ((id: string) => void) | null;
|
|
32
|
-
/** Data attributes for testing */
|
|
33
|
-
'data-testid'?: string;
|
|
34
|
-
'data-custom'?: string;
|
|
35
|
-
[key: string]: unknown;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
let {
|
|
39
|
-
multiple = false,
|
|
40
|
-
flush = false,
|
|
41
|
-
open = false,
|
|
42
|
-
border = true,
|
|
43
|
-
borderOpenClass = '',
|
|
44
|
-
class: className = '',
|
|
45
|
-
header,
|
|
46
|
-
children,
|
|
47
|
-
openItems: exposedOpenItems = $bindable(null),
|
|
48
|
-
toggleFn: exposedToggleFn = $bindable(null),
|
|
49
|
-
'data-testid': dataTestId,
|
|
50
|
-
'data-custom': dataCustom,
|
|
51
|
-
...restProps
|
|
52
|
-
}: Props = $props();
|
|
53
|
-
|
|
54
|
-
// Create the accordion context
|
|
55
|
-
const openItems = writable(new Set<string>());
|
|
56
|
-
|
|
57
|
-
// Expose openItems to parent for testing
|
|
58
|
-
exposedOpenItems = openItems;
|
|
59
|
-
|
|
60
|
-
const toggle = (id: string) => {
|
|
61
|
-
openItems.update((items) => {
|
|
62
|
-
if (items.has(id)) {
|
|
63
|
-
items.delete(id);
|
|
64
|
-
} else {
|
|
65
|
-
if (!multiple) {
|
|
66
|
-
items.clear();
|
|
67
|
-
}
|
|
68
|
-
items.add(id);
|
|
69
|
-
}
|
|
70
|
-
return new Set(items);
|
|
71
|
-
});
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
// Expose toggle function to parent for testing
|
|
75
|
-
exposedToggleFn = toggle;
|
|
76
|
-
|
|
77
|
-
setContext("accordion", {
|
|
78
|
-
openItems,
|
|
79
|
-
toggle,
|
|
80
|
-
get flush() { return flush; }
|
|
81
|
-
});
|
|
82
|
-
</script>
|
|
83
|
-
|
|
84
|
-
<AccordionItem
|
|
85
|
-
{open}
|
|
86
|
-
{border}
|
|
87
|
-
{borderOpenClass}
|
|
88
|
-
class={className}
|
|
89
|
-
data-testid={dataTestId}
|
|
90
|
-
data-custom={dataCustom}
|
|
91
|
-
{...restProps}
|
|
92
|
-
>
|
|
93
|
-
{#snippet header()}
|
|
94
|
-
{#if header}
|
|
95
|
-
{@render header()}
|
|
96
|
-
{:else}
|
|
97
|
-
Test Header
|
|
98
|
-
{/if}
|
|
99
|
-
{/snippet}
|
|
100
|
-
{#snippet children()}
|
|
101
|
-
{#if children}
|
|
102
|
-
{@render children()}
|
|
103
|
-
{:else}
|
|
104
|
-
Test Content
|
|
105
|
-
{/if}
|
|
106
|
-
{/snippet}
|
|
107
|
-
</AccordionItem>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* Test wrapper for AccordionItem
|
|
4
|
+
* Provides the necessary accordion context that AccordionItem expects
|
|
5
|
+
*/
|
|
6
|
+
import type { Snippet } from 'svelte';
|
|
7
|
+
import { setContext } from 'svelte';
|
|
8
|
+
import { writable } from 'svelte/store';
|
|
9
|
+
import AccordionItem from './AccordionItem.svelte';
|
|
10
|
+
|
|
11
|
+
interface Props {
|
|
12
|
+
/** Allow multiple items open at once */
|
|
13
|
+
multiple?: boolean;
|
|
14
|
+
/** Remove outer border/radius (Flowbite flush variant) */
|
|
15
|
+
flush?: boolean;
|
|
16
|
+
/** Initial open state of the item */
|
|
17
|
+
open?: boolean;
|
|
18
|
+
/** Show bottom border */
|
|
19
|
+
border?: boolean;
|
|
20
|
+
/** Additional classes when open */
|
|
21
|
+
borderOpenClass?: string;
|
|
22
|
+
/** Custom class for the item */
|
|
23
|
+
class?: string;
|
|
24
|
+
/** Header snippet */
|
|
25
|
+
header?: Snippet;
|
|
26
|
+
/** Children snippet */
|
|
27
|
+
children?: Snippet;
|
|
28
|
+
/** Expose the openItems store for testing */
|
|
29
|
+
openItems?: import('svelte/store').Writable<Set<string>> | null;
|
|
30
|
+
/** Expose the toggle function for testing */
|
|
31
|
+
toggleFn?: ((id: string) => void) | null;
|
|
32
|
+
/** Data attributes for testing */
|
|
33
|
+
'data-testid'?: string;
|
|
34
|
+
'data-custom'?: string;
|
|
35
|
+
[key: string]: unknown;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
let {
|
|
39
|
+
multiple = false,
|
|
40
|
+
flush = false,
|
|
41
|
+
open = false,
|
|
42
|
+
border = true,
|
|
43
|
+
borderOpenClass = '',
|
|
44
|
+
class: className = '',
|
|
45
|
+
header,
|
|
46
|
+
children,
|
|
47
|
+
openItems: exposedOpenItems = $bindable(null),
|
|
48
|
+
toggleFn: exposedToggleFn = $bindable(null),
|
|
49
|
+
'data-testid': dataTestId,
|
|
50
|
+
'data-custom': dataCustom,
|
|
51
|
+
...restProps
|
|
52
|
+
}: Props = $props();
|
|
53
|
+
|
|
54
|
+
// Create the accordion context
|
|
55
|
+
const openItems = writable(new Set<string>());
|
|
56
|
+
|
|
57
|
+
// Expose openItems to parent for testing
|
|
58
|
+
exposedOpenItems = openItems;
|
|
59
|
+
|
|
60
|
+
const toggle = (id: string) => {
|
|
61
|
+
openItems.update((items) => {
|
|
62
|
+
if (items.has(id)) {
|
|
63
|
+
items.delete(id);
|
|
64
|
+
} else {
|
|
65
|
+
if (!multiple) {
|
|
66
|
+
items.clear();
|
|
67
|
+
}
|
|
68
|
+
items.add(id);
|
|
69
|
+
}
|
|
70
|
+
return new Set(items);
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// Expose toggle function to parent for testing
|
|
75
|
+
exposedToggleFn = toggle;
|
|
76
|
+
|
|
77
|
+
setContext("accordion", {
|
|
78
|
+
openItems,
|
|
79
|
+
toggle,
|
|
80
|
+
get flush() { return flush; }
|
|
81
|
+
});
|
|
82
|
+
</script>
|
|
83
|
+
|
|
84
|
+
<AccordionItem
|
|
85
|
+
{open}
|
|
86
|
+
{border}
|
|
87
|
+
{borderOpenClass}
|
|
88
|
+
class={className}
|
|
89
|
+
data-testid={dataTestId}
|
|
90
|
+
data-custom={dataCustom}
|
|
91
|
+
{...restProps}
|
|
92
|
+
>
|
|
93
|
+
{#snippet header()}
|
|
94
|
+
{#if header}
|
|
95
|
+
{@render header()}
|
|
96
|
+
{:else}
|
|
97
|
+
Test Header
|
|
98
|
+
{/if}
|
|
99
|
+
{/snippet}
|
|
100
|
+
{#snippet children()}
|
|
101
|
+
{#if children}
|
|
102
|
+
{@render children()}
|
|
103
|
+
{:else}
|
|
104
|
+
Test Content
|
|
105
|
+
{/if}
|
|
106
|
+
{/snippet}
|
|
107
|
+
</AccordionItem>
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
/**
|
|
3
|
-
* Test wrapper for Accordion toggle context coverage.
|
|
4
|
-
* Renders a real Accordion with two AccordionItems so the toggle function
|
|
5
|
-
* and its branches (add, delete, single-mode clear) are exercised.
|
|
6
|
-
*/
|
|
7
|
-
import Accordion from './Accordion.svelte';
|
|
8
|
-
import AccordionItem from './AccordionItem.svelte';
|
|
9
|
-
|
|
10
|
-
interface Props {
|
|
11
|
-
multiple?: boolean;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
let { multiple = false }: Props = $props();
|
|
15
|
-
</script>
|
|
16
|
-
|
|
17
|
-
<Accordion {multiple}>
|
|
18
|
-
{#snippet children()}
|
|
19
|
-
<AccordionItem>
|
|
20
|
-
{#snippet header()}Item 1{/snippet}
|
|
21
|
-
{#snippet children()}Content 1{/snippet}
|
|
22
|
-
</AccordionItem>
|
|
23
|
-
<AccordionItem>
|
|
24
|
-
{#snippet header()}Item 2{/snippet}
|
|
25
|
-
{#snippet children()}Content 2{/snippet}
|
|
26
|
-
</AccordionItem>
|
|
27
|
-
{/snippet}
|
|
28
|
-
</Accordion>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* Test wrapper for Accordion toggle context coverage.
|
|
4
|
+
* Renders a real Accordion with two AccordionItems so the toggle function
|
|
5
|
+
* and its branches (add, delete, single-mode clear) are exercised.
|
|
6
|
+
*/
|
|
7
|
+
import Accordion from './Accordion.svelte';
|
|
8
|
+
import AccordionItem from './AccordionItem.svelte';
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
multiple?: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
let { multiple = false }: Props = $props();
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<Accordion {multiple}>
|
|
18
|
+
{#snippet children()}
|
|
19
|
+
<AccordionItem>
|
|
20
|
+
{#snippet header()}Item 1{/snippet}
|
|
21
|
+
{#snippet children()}Content 1{/snippet}
|
|
22
|
+
</AccordionItem>
|
|
23
|
+
<AccordionItem>
|
|
24
|
+
{#snippet header()}Item 2{/snippet}
|
|
25
|
+
{#snippet children()}Content 2{/snippet}
|
|
26
|
+
</AccordionItem>
|
|
27
|
+
{/snippet}
|
|
28
|
+
</Accordion>
|