@getmicdrop/svelte-components 5.21.0 → 5.21.1
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.js +10 -10
- package/dist/calendar/AboutShow/AboutShow.svelte +191 -191
- package/dist/calendar/Calendar/MiniMonthCalendar.spec.js +9 -8
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte +800 -803
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte.d.ts.map +1 -1
- package/dist/calendar/FAQs/FAQs.spec.js +6 -6
- package/dist/calendar/FAQs/FAQs.svelte +88 -88
- package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +136 -140
- package/dist/calendar/OrderSummary/OrderSummary.svelte +461 -461
- package/dist/calendar/PublicCard/PublicCard.spec.js +3 -3
- package/dist/calendar/PublicCard/PublicCard.svelte +164 -164
- package/dist/calendar/ShowCard/ShowCard.spec.js +8 -8
- package/dist/calendar/ShowCard/ShowCard.svelte +180 -180
- package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.js +4 -4
- 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 -66
- 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.spec.js +4 -4
- 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/Layout/__tests__/AppShell.test.js +5 -5
- package/dist/components/Layout/__tests__/ContentSection.test.js +1 -1
- package/dist/components/Layout/__tests__/Heading.test.js +3 -3
- package/dist/components/Layout/__tests__/PageContainer.test.js +4 -4
- package/dist/components/Layout/__tests__/Text.test.js +9 -9
- package/dist/components/Text.spec.js +89 -89
- package/dist/components/Text.svelte +64 -64
- package/dist/config.js +160 -160
- package/dist/config.spec.js +29 -29
- package/dist/constants/formOptions.js +48 -48
- 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 +1 -0
- package/dist/forms/createFormStore.svelte.spec.js +1 -0
- package/dist/index.js +85 -85
- 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.spec.js +5 -5
- package/dist/patterns/data/DataList.svelte +24 -24
- package/dist/patterns/data/DataTable.spec.js +18 -18
- 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.spec.js +4 -4
- package/dist/patterns/forms/FormSection.svelte +33 -33
- package/dist/patterns/forms/FormValidationSummary.spec.js +2 -2
- 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.spec.js +9 -9
- package/dist/patterns/navigation/Header.stories.svelte +77 -77
- package/dist/patterns/navigation/Header.svelte +261 -263
- package/dist/patterns/navigation/Header.svelte.d.ts.map +1 -1
- package/dist/patterns/navigation/index.js +3 -3
- package/dist/patterns/page/PageHeader.svelte +49 -49
- package/dist/patterns/page/PageLayout.spec.js +5 -5
- 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.spec.js +8 -8
- 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/buttons.spec.js +4 -4
- package/dist/presets/index.js +9 -9
- package/dist/primitives/Accordion/Accordion.spec.js +5 -5
- package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
- package/dist/primitives/Accordion/Accordion.svelte +62 -62
- package/dist/primitives/Accordion/AccordionItem.spec.js +19 -28
- 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.spec.js +11 -11
- package/dist/primitives/Avatar/Avatar.stories.svelte +95 -94
- package/dist/primitives/Avatar/Avatar.stories.svelte.d.ts.map +1 -1
- 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 +125 -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.spec.js +1 -1
- 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 +16 -16
- 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.spec.js +4 -4
- 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.spec.js +9 -9
- 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.spec.js +8 -15
- 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/Icons.spec.js +3 -3
- 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.spec.js +8 -8
- package/dist/primitives/Input/Textarea.stories.svelte +137 -137
- package/dist/primitives/Input/Textarea.svelte +105 -105
- package/dist/primitives/Label/Label.spec.js +20 -21
- 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.spec.js +17 -17
- package/dist/primitives/NumberInput/NumberInput.svelte +113 -113
- package/dist/primitives/Pagination/DotIndicator.svelte +66 -66
- package/dist/primitives/Pagination/Pagination.spec.js +6 -6
- package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
- package/dist/primitives/Pagination/Pagination.svelte +275 -275
- package/dist/primitives/Radio/Radio.spec.js +19 -19
- 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.spec.js +1 -1
- package/dist/primitives/Skeleton/CardPlaceholder.svelte +96 -96
- package/dist/primitives/Skeleton/ImagePlaceholder.spec.js +2 -2
- package/dist/primitives/Skeleton/ImagePlaceholder.svelte +68 -68
- package/dist/primitives/Skeleton/ListPlaceholder.spec.js +2 -2
- package/dist/primitives/Skeleton/ListPlaceholder.svelte +85 -85
- package/dist/primitives/Skeleton/Skeleton.spec.js +7 -7
- package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
- package/dist/primitives/Skeleton/Skeleton.svelte +55 -55
- package/dist/primitives/Spinner/Spinner.spec.js +83 -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.spec.js +14 -14
- package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
- package/dist/primitives/Tabs/Tabs.svelte +137 -137
- package/dist/primitives/Toggle.spec.js +219 -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.js +114 -114
- 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.spec.js +1 -1
- package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
- package/dist/recipes/ImageUploader/ImageUploader.svelte +972 -994
- package/dist/recipes/SuperLogin/SuperLogin.svelte +24 -24
- 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.spec.js +2 -2
- package/dist/recipes/fields/CheckboxField.svelte +85 -85
- package/dist/recipes/fields/FormField.spec.js +4 -4
- package/dist/recipes/fields/FormField.svelte +58 -58
- package/dist/recipes/fields/RadioGroup.spec.js +1 -1
- package/dist/recipes/fields/RadioGroup.svelte +95 -95
- package/dist/recipes/fields/SelectField.spec.js +2 -2
- package/dist/recipes/fields/SelectField.svelte +82 -82
- package/dist/recipes/fields/TextareaField.spec.js +2 -2
- package/dist/recipes/fields/TextareaField.svelte +101 -101
- package/dist/recipes/fields/ToggleField.spec.js +2 -2
- 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.spec.js +2 -2
- package/dist/recipes/inputs/PasswordInput.svelte +130 -130
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +14 -14
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +142 -142
- package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte +2 -2
- package/dist/recipes/inputs/PhoneInput.svelte +254 -254
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +10 -10
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +170 -170
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +346 -349
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/Search.spec.js +3 -3
- 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.spec.js +36 -36
- 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 -205
- package/dist/recipes/modals/InputModal.spec.js +17 -17
- 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.spec.js +7 -7
- package/dist/recipes/modals/StatusModal.svelte +216 -216
- package/dist/recipes/modals/index.js +8 -8
- package/dist/schemas/__tests__/order.test.js +1 -1
- package/dist/schemas/auth.d.ts +107 -17
- package/dist/schemas/auth.d.ts.map +1 -1
- package/dist/schemas/common.d.ts +41 -13
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/common.js +1 -1
- package/dist/schemas/event.d.ts +147 -41
- package/dist/schemas/event.d.ts.map +1 -1
- package/dist/schemas/event.js +1 -1
- package/dist/schemas/order.d.ts +208 -51
- package/dist/schemas/order.d.ts.map +1 -1
- package/dist/schemas/order.js +1 -0
- package/dist/schemas/performer.d.ts +199 -44
- package/dist/schemas/performer.d.ts.map +1 -1
- package/dist/schemas/performer.js +1 -1
- package/dist/schemas/promo.d.ts +221 -55
- package/dist/schemas/promo.d.ts.map +1 -1
- package/dist/schemas/promo.js +2 -2
- package/dist/schemas/ticket.d.ts +187 -61
- package/dist/schemas/ticket.d.ts.map +1 -1
- package/dist/schemas/ticket.js +1 -1
- package/dist/schemas/user.d.ts +114 -54
- package/dist/schemas/user.d.ts.map +1 -1
- package/dist/schemas/user.js +2 -1
- package/dist/schemas/venue.d.ts +238 -20
- package/dist/schemas/venue.d.ts.map +1 -1
- 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/ButtonAuditDashboard.spec.js +12 -12
- package/dist/stories/ButtonAuditDashboard.svelte +55 -55
- package/dist/stories/ButtonAuditReview.spec.js +8 -8
- package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
- package/dist/stories/ButtonAuditReview.svelte +427 -427
- package/dist/stories/ButtonGridView.spec.js +27 -27
- package/dist/stories/ButtonGridView.svelte +22 -22
- package/dist/stories/ButtonShowcase.spec.js +4 -4
- package/dist/stories/ButtonShowcase.svelte +119 -119
- package/dist/stories/ComponentConsolidation.stories.svelte +453 -453
- package/dist/stories/DesignSystemAudit.stories.svelte +127 -127
- package/dist/stories/PatternsGallery.spec.js +3 -3
- package/dist/stories/PatternsGallery.stories.svelte +19 -19
- package/dist/stories/PatternsGallery.svelte +399 -399
- package/dist/stories/PrimitivesGallery.spec.js +9 -9
- 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 -87
- package/dist/telemetry.js +401 -401
- package/dist/telemetry.server.js +212 -212
- package/dist/telemetry.server.spec.js +437 -437
- package/dist/telemetry.spec.js +1273 -1273
- package/dist/tokens/__tests__/typography-base.test.js +5 -5
- package/dist/tokens/__tests__/typography.test.js +32 -36
- package/dist/tokens/__tests__/variants.test.js +63 -78
- package/dist/tokens/tokens.css +87 -87
- package/dist/tokens/typography-base.css +163 -163
- package/dist/tokens/typography.d.ts +29 -29
- package/dist/tokens/typography.js +29 -29
- package/dist/tokens/utilities.css +418 -430
- package/dist/tokens/variants.d.ts +32 -32
- package/dist/tokens/variants.js +32 -32
- package/dist/utils/__tests__/auth.test.js +431 -431
- package/dist/utils/apiConfig.d.ts +29 -29
- package/dist/utils/apiConfig.js +142 -142
- package/dist/utils/auth.d.ts +46 -46
- package/dist/utils/auth.js +195 -195
- 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/portal.d.ts +11 -11
- package/dist/utils/portal.js +25 -25
- package/dist/utils/portal.spec.js +143 -143
- package/dist/utils/transitions.js +16 -16
- 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 +306 -306
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
-
import Accordion from './Accordion.svelte';
|
|
4
|
-
import AccordionItem from './AccordionItem.svelte';
|
|
5
|
-
|
|
6
|
-
const { Story } = defineMeta({
|
|
7
|
-
title: 'Primitives/Accordion',
|
|
8
|
-
component: Accordion,
|
|
9
|
-
tags: ['autodocs'],
|
|
10
|
-
parameters: {
|
|
11
|
-
docs: {
|
|
12
|
-
description: {
|
|
13
|
-
component: 'Collapsible content sections. Use AccordionItem children to create expandable sections.',
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
});
|
|
18
|
-
</script>
|
|
19
|
-
|
|
20
|
-
<Story name="Default">
|
|
21
|
-
{#snippet template()}
|
|
22
|
-
<div class="max-w-xl">
|
|
23
|
-
<Accordion>
|
|
24
|
-
<AccordionItem title="What is Micdrop?">
|
|
25
|
-
<p class="text-
|
|
26
|
-
</AccordionItem>
|
|
27
|
-
<AccordionItem title="How do I get started?">
|
|
28
|
-
<p class="text-
|
|
29
|
-
</AccordionItem>
|
|
30
|
-
<AccordionItem title="What are the fees?">
|
|
31
|
-
<p class="text-
|
|
32
|
-
</AccordionItem>
|
|
33
|
-
</Accordion>
|
|
34
|
-
</div>
|
|
35
|
-
{/snippet}
|
|
36
|
-
</Story>
|
|
37
|
-
|
|
38
|
-
<Story name="Single Item Open">
|
|
39
|
-
{#snippet template()}
|
|
40
|
-
<div class="max-w-xl">
|
|
41
|
-
<Accordion>
|
|
42
|
-
<AccordionItem title="Expanded by default" open={true}>
|
|
43
|
-
<p class="text-
|
|
44
|
-
</AccordionItem>
|
|
45
|
-
<AccordionItem title="Collapsed item">
|
|
46
|
-
<p class="text-
|
|
47
|
-
</AccordionItem>
|
|
48
|
-
</Accordion>
|
|
49
|
-
</div>
|
|
50
|
-
{/snippet}
|
|
51
|
-
</Story>
|
|
52
|
-
|
|
53
|
-
<Story name="With Rich Content">
|
|
54
|
-
{#snippet template()}
|
|
55
|
-
<div class="max-w-xl">
|
|
56
|
-
<Accordion>
|
|
57
|
-
<AccordionItem title="Features">
|
|
58
|
-
<ul class="list-disc list-inside text-
|
|
59
|
-
<li>Online ticket sales</li>
|
|
60
|
-
<li>Performer management</li>
|
|
61
|
-
<li>Show scheduling</li>
|
|
62
|
-
<li>Analytics dashboard</li>
|
|
63
|
-
</ul>
|
|
64
|
-
</AccordionItem>
|
|
65
|
-
<AccordionItem title="Pricing">
|
|
66
|
-
<div class="space-y-2">
|
|
67
|
-
<p class="text-
|
|
68
|
-
<p class="text-
|
|
69
|
-
<p class="text-
|
|
70
|
-
</div>
|
|
71
|
-
</AccordionItem>
|
|
72
|
-
</Accordion>
|
|
73
|
-
</div>
|
|
74
|
-
{/snippet}
|
|
75
|
-
</Story>
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import Accordion from './Accordion.svelte';
|
|
4
|
+
import AccordionItem from './AccordionItem.svelte';
|
|
5
|
+
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
title: 'Primitives/Accordion',
|
|
8
|
+
component: Accordion,
|
|
9
|
+
tags: ['autodocs'],
|
|
10
|
+
parameters: {
|
|
11
|
+
docs: {
|
|
12
|
+
description: {
|
|
13
|
+
component: 'Collapsible content sections. Use AccordionItem children to create expandable sections.',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<Story name="Default">
|
|
21
|
+
{#snippet template()}
|
|
22
|
+
<div class="max-w-xl">
|
|
23
|
+
<Accordion>
|
|
24
|
+
<AccordionItem title="What is Micdrop?">
|
|
25
|
+
<p class="text-text-secondary">Micdrop is a platform for comedians and venues to manage shows, ticket sales, and performer booking.</p>
|
|
26
|
+
</AccordionItem>
|
|
27
|
+
<AccordionItem title="How do I get started?">
|
|
28
|
+
<p class="text-text-secondary">Sign up for an account, set up your venue or performer profile, and start creating shows.</p>
|
|
29
|
+
</AccordionItem>
|
|
30
|
+
<AccordionItem title="What are the fees?">
|
|
31
|
+
<p class="text-text-secondary">Micdrop charges a small percentage per ticket sold. There are no monthly fees.</p>
|
|
32
|
+
</AccordionItem>
|
|
33
|
+
</Accordion>
|
|
34
|
+
</div>
|
|
35
|
+
{/snippet}
|
|
36
|
+
</Story>
|
|
37
|
+
|
|
38
|
+
<Story name="Single Item Open">
|
|
39
|
+
{#snippet template()}
|
|
40
|
+
<div class="max-w-xl">
|
|
41
|
+
<Accordion>
|
|
42
|
+
<AccordionItem title="Expanded by default" open={true}>
|
|
43
|
+
<p class="text-text-secondary">This item starts expanded.</p>
|
|
44
|
+
</AccordionItem>
|
|
45
|
+
<AccordionItem title="Collapsed item">
|
|
46
|
+
<p class="text-text-secondary">Click to expand this item.</p>
|
|
47
|
+
</AccordionItem>
|
|
48
|
+
</Accordion>
|
|
49
|
+
</div>
|
|
50
|
+
{/snippet}
|
|
51
|
+
</Story>
|
|
52
|
+
|
|
53
|
+
<Story name="With Rich Content">
|
|
54
|
+
{#snippet template()}
|
|
55
|
+
<div class="max-w-xl">
|
|
56
|
+
<Accordion>
|
|
57
|
+
<AccordionItem title="Features">
|
|
58
|
+
<ul class="list-disc list-inside text-text-secondary space-y-2">
|
|
59
|
+
<li>Online ticket sales</li>
|
|
60
|
+
<li>Performer management</li>
|
|
61
|
+
<li>Show scheduling</li>
|
|
62
|
+
<li>Analytics dashboard</li>
|
|
63
|
+
</ul>
|
|
64
|
+
</AccordionItem>
|
|
65
|
+
<AccordionItem title="Pricing">
|
|
66
|
+
<div class="space-y-2">
|
|
67
|
+
<p class="text-text-secondary"><strong>Basic:</strong> Free</p>
|
|
68
|
+
<p class="text-text-secondary"><strong>Pro:</strong> $29/month</p>
|
|
69
|
+
<p class="text-text-secondary"><strong>Enterprise:</strong> Contact us</p>
|
|
70
|
+
</div>
|
|
71
|
+
</AccordionItem>
|
|
72
|
+
</Accordion>
|
|
73
|
+
</div>
|
|
74
|
+
{/snippet}
|
|
75
|
+
</Story>
|
|
@@ -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-
|
|
57
|
-
: "border border-
|
|
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-border"
|
|
57
|
+
: "border border-border rounded-lg divide-y divide-border");
|
|
58
|
+
</script>
|
|
59
|
+
|
|
60
|
+
<div class="{containerClasses} {className}" data-accordion={multiple ? "open" : "collapse"} {...restProps}>
|
|
61
|
+
{#if children}{@render children()}{/if}
|
|
62
|
+
</div>
|
|
@@ -290,25 +290,19 @@ describe('AccordionItem - Styling (Flowbite Native)', () => {
|
|
|
290
290
|
test('button has gray background', () => {
|
|
291
291
|
const { container } = render(AccordionItemWrapper);
|
|
292
292
|
const button = container.querySelector('button');
|
|
293
|
-
expect(button).toHaveClass('bg-
|
|
293
|
+
expect(button).toHaveClass('bg-muted');
|
|
294
294
|
});
|
|
295
295
|
|
|
296
|
-
test('button has
|
|
296
|
+
test('button has token-based background', () => {
|
|
297
297
|
const { container } = render(AccordionItemWrapper);
|
|
298
298
|
const button = container.querySelector('button');
|
|
299
|
-
expect(button).toHaveClass('
|
|
299
|
+
expect(button).toHaveClass('bg-muted');
|
|
300
300
|
});
|
|
301
301
|
|
|
302
302
|
test('button has hover state', () => {
|
|
303
303
|
const { container } = render(AccordionItemWrapper);
|
|
304
304
|
const button = container.querySelector('button');
|
|
305
|
-
expect(button).toHaveClass('hover:bg-
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
test('button has dark mode hover state', () => {
|
|
309
|
-
const { container } = render(AccordionItemWrapper);
|
|
310
|
-
const button = container.querySelector('button');
|
|
311
|
-
expect(button).toHaveClass('dark:hover:bg-gray-700');
|
|
305
|
+
expect(button).toHaveClass('hover:bg-bg-tertiary');
|
|
312
306
|
});
|
|
313
307
|
|
|
314
308
|
test('content has p-5 padding', async () => {
|
|
@@ -340,7 +334,7 @@ describe('AccordionItem - Styling (Flowbite Native)', () => {
|
|
|
340
334
|
const contentWrapper = container.querySelector('p').parentElement;
|
|
341
335
|
expect(contentWrapper).toHaveClass('border');
|
|
342
336
|
expect(contentWrapper).toHaveClass('border-t-0');
|
|
343
|
-
expect(contentWrapper).toHaveClass('border-
|
|
337
|
+
expect(contentWrapper).toHaveClass('border-border');
|
|
344
338
|
});
|
|
345
339
|
});
|
|
346
340
|
|
|
@@ -360,7 +354,7 @@ describe('AccordionItem - Styling (Flowbite Native)', () => {
|
|
|
360
354
|
});
|
|
361
355
|
});
|
|
362
356
|
|
|
363
|
-
test('content has
|
|
357
|
+
test('content has token-based border', async () => {
|
|
364
358
|
const user = userEvent.setup();
|
|
365
359
|
const { container } = render(AccordionItemWrapper, {
|
|
366
360
|
props: { flush: false }
|
|
@@ -372,7 +366,7 @@ describe('AccordionItem - Styling (Flowbite Native)', () => {
|
|
|
372
366
|
|
|
373
367
|
await waitFor(() => {
|
|
374
368
|
const contentWrapper = container.querySelector('p').parentElement;
|
|
375
|
-
expect(contentWrapper).toHaveClass('
|
|
369
|
+
expect(contentWrapper).toHaveClass('border-border');
|
|
376
370
|
});
|
|
377
371
|
});
|
|
378
372
|
});
|
|
@@ -381,10 +375,9 @@ describe('AccordionItem - Typography Integration', () => {
|
|
|
381
375
|
test('header uses typography.body class', () => {
|
|
382
376
|
const { container } = render(AccordionItemWrapper);
|
|
383
377
|
const headerSpan = container.querySelector('button span');
|
|
384
|
-
// typography.body = "text-base text-
|
|
378
|
+
// typography.body = "text-base text-text-primary leading-relaxed"
|
|
385
379
|
expect(headerSpan).toHaveClass('text-base');
|
|
386
|
-
expect(headerSpan).toHaveClass('text-
|
|
387
|
-
expect(headerSpan).toHaveClass('dark:text-white');
|
|
380
|
+
expect(headerSpan).toHaveClass('text-text-primary');
|
|
388
381
|
expect(headerSpan).toHaveClass('leading-relaxed');
|
|
389
382
|
});
|
|
390
383
|
|
|
@@ -398,10 +391,9 @@ describe('AccordionItem - Typography Integration', () => {
|
|
|
398
391
|
|
|
399
392
|
await waitFor(() => {
|
|
400
393
|
const content = container.querySelector('p');
|
|
401
|
-
// typography.bodyMuted = "text-base text-
|
|
394
|
+
// typography.bodyMuted = "text-base text-muted-foreground leading-relaxed"
|
|
402
395
|
expect(content).toHaveClass('text-base');
|
|
403
|
-
expect(content).toHaveClass('text-
|
|
404
|
-
expect(content).toHaveClass('dark:text-gray-400');
|
|
396
|
+
expect(content).toHaveClass('text-muted-foreground');
|
|
405
397
|
expect(content).toHaveClass('leading-relaxed');
|
|
406
398
|
});
|
|
407
399
|
});
|
|
@@ -409,10 +401,9 @@ describe('AccordionItem - Typography Integration', () => {
|
|
|
409
401
|
test('button header text uses typography.smMuted', () => {
|
|
410
402
|
const { container } = render(AccordionItemWrapper);
|
|
411
403
|
const button = container.querySelector('button');
|
|
412
|
-
// typography.smMuted = "text-sm text-
|
|
404
|
+
// typography.smMuted = "text-sm text-muted-foreground"
|
|
413
405
|
expect(button).toHaveClass('text-sm');
|
|
414
|
-
expect(button).toHaveClass('text-
|
|
415
|
-
expect(button).toHaveClass('dark:text-gray-400');
|
|
406
|
+
expect(button).toHaveClass('text-muted-foreground');
|
|
416
407
|
});
|
|
417
408
|
});
|
|
418
409
|
|
|
@@ -420,13 +411,13 @@ describe('AccordionItem - Border Props', () => {
|
|
|
420
411
|
test('applies borderOpenClass when open', async () => {
|
|
421
412
|
const user = userEvent.setup();
|
|
422
413
|
const { container } = render(AccordionItemWrapper, {
|
|
423
|
-
props: { borderOpenClass: 'border-
|
|
414
|
+
props: { borderOpenClass: 'border-interactive-border' }
|
|
424
415
|
});
|
|
425
416
|
const button = container.querySelector('button');
|
|
426
417
|
|
|
427
418
|
// Initially closed - no borderOpenClass
|
|
428
419
|
const wrapper = container.querySelector('div');
|
|
429
|
-
expect(wrapper).not.toHaveClass('border-
|
|
420
|
+
expect(wrapper).not.toHaveClass('border-interactive-border');
|
|
430
421
|
|
|
431
422
|
// Click to open
|
|
432
423
|
await user.click(button);
|
|
@@ -434,14 +425,14 @@ describe('AccordionItem - Border Props', () => {
|
|
|
434
425
|
|
|
435
426
|
await waitFor(() => {
|
|
436
427
|
const wrapper = container.querySelector('div');
|
|
437
|
-
expect(wrapper).toHaveClass('border-
|
|
428
|
+
expect(wrapper).toHaveClass('border-interactive-border');
|
|
438
429
|
});
|
|
439
430
|
});
|
|
440
431
|
|
|
441
432
|
test('removes borderOpenClass when closed', async () => {
|
|
442
433
|
const user = userEvent.setup();
|
|
443
434
|
const { container } = render(AccordionItemWrapper, {
|
|
444
|
-
props: { open: true, borderOpenClass: 'border-
|
|
435
|
+
props: { open: true, borderOpenClass: 'border-status-error-border' }
|
|
445
436
|
});
|
|
446
437
|
|
|
447
438
|
await tick();
|
|
@@ -450,7 +441,7 @@ describe('AccordionItem - Border Props', () => {
|
|
|
450
441
|
// Initially open - has borderOpenClass
|
|
451
442
|
await waitFor(() => {
|
|
452
443
|
const wrapper = container.querySelector('div');
|
|
453
|
-
expect(wrapper).toHaveClass('border-
|
|
444
|
+
expect(wrapper).toHaveClass('border-status-error-border');
|
|
454
445
|
});
|
|
455
446
|
|
|
456
447
|
// Click to close
|
|
@@ -459,7 +450,7 @@ describe('AccordionItem - Border Props', () => {
|
|
|
459
450
|
|
|
460
451
|
await waitFor(() => {
|
|
461
452
|
const wrapper = container.querySelector('div');
|
|
462
|
-
expect(wrapper).not.toHaveClass('border-
|
|
453
|
+
expect(wrapper).not.toHaveClass('border-status-error-border');
|
|
463
454
|
});
|
|
464
455
|
});
|
|
465
456
|
|
|
@@ -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-
|
|
71
|
-
"hover:bg-
|
|
72
|
-
"focus:outline-hidden",
|
|
73
|
-
"gap-3",
|
|
74
|
-
isOpen ? "bg-
|
|
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-
|
|
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-muted",
|
|
71
|
+
"hover:bg-bg-tertiary",
|
|
72
|
+
"focus:outline-hidden",
|
|
73
|
+
"gap-3",
|
|
74
|
+
isOpen ? "bg-muted" : "",
|
|
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-border'}">
|
|
97
|
+
<p class={typography.bodyMuted}>
|
|
98
|
+
{#if children}{@render children()}{/if}
|
|
99
|
+
</p>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
{/if}
|
|
103
|
+
</div>
|