@getmicdrop/svelte-components 5.4.0 → 5.4.2
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/PublicCard/PublicCard.svelte +1 -0
- package/dist/calendar/PublicCard/PublicCard.svelte.d.ts.map +1 -1
- package/dist/calendar/index.d.ts +9 -0
- package/dist/calendar/index.d.ts.map +1 -0
- package/dist/calendar/index.js +15 -0
- package/dist/components/Layout/Grid.spec.d.ts +2 -0
- package/dist/components/Layout/Grid.spec.d.ts.map +1 -0
- package/dist/components/Layout/Grid.spec.js +230 -0
- package/dist/components/Layout/Grid.svelte +19 -27
- package/dist/components/Layout/Grid.svelte.d.ts +16 -6
- package/dist/components/Layout/Grid.svelte.d.ts.map +1 -1
- package/dist/components/Layout/Stack.spec.d.ts +2 -0
- package/dist/components/Layout/Stack.spec.d.ts.map +1 -0
- package/dist/components/Layout/Stack.spec.js +257 -0
- package/dist/components/Layout/Stack.svelte +13 -51
- package/dist/components/Layout/Stack.svelte.d.ts +4 -6
- package/dist/components/Layout/Stack.svelte.d.ts.map +1 -1
- package/dist/components/Layout/__tests__/Grid.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/Grid.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/Grid.test.js +246 -0
- package/dist/components/Layout/__tests__/Stack.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/Stack.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/Stack.test.js +267 -0
- package/dist/constants/formOptions.spec.d.ts.map +1 -1
- package/dist/constants/formOptions.spec.js +69 -82
- package/dist/datetime/__tests__/format.test.js +81 -1
- package/dist/datetime/format.d.ts +74 -0
- package/dist/datetime/format.d.ts.map +1 -1
- package/dist/datetime/format.js +104 -0
- package/dist/datetime/index.d.ts +1 -1
- package/dist/datetime/index.d.ts.map +1 -1
- package/dist/datetime/index.js +1 -1
- package/dist/datetime/timezone.d.ts.map +1 -1
- package/dist/datetime/timezone.js +2 -0
- package/dist/datetime/types.d.ts +4 -0
- package/dist/datetime/types.d.ts.map +1 -1
- package/dist/forms/createFormStore.svelte.d.ts.map +1 -1
- package/dist/forms/createFormStore.svelte.js +3 -2
- package/dist/index.d.ts +4 -112
- package/dist/index.js +8 -184
- package/dist/index.spec.d.ts +2 -0
- package/dist/index.spec.d.ts.map +1 -0
- package/dist/index.spec.js +370 -0
- package/dist/patterns/data/DataTable.svelte +2 -2
- package/dist/patterns/data/index.d.ts +4 -0
- package/dist/patterns/data/index.d.ts.map +1 -0
- package/dist/patterns/data/index.js +4 -0
- package/dist/patterns/forms/FormValidationSummary.spec.d.ts.map +1 -1
- package/dist/patterns/forms/FormValidationSummary.spec.js +162 -184
- package/dist/patterns/forms/FormValidationSummary.stories.svelte +6 -6
- package/dist/patterns/forms/FormValidationSummary.svelte +11 -4
- package/dist/patterns/forms/FormValidationSummary.svelte.d.ts +8 -16
- package/dist/patterns/forms/FormValidationSummary.svelte.d.ts.map +1 -1
- package/dist/patterns/forms/index.d.ts +5 -0
- package/dist/patterns/forms/index.d.ts.map +1 -0
- package/dist/patterns/forms/index.js +5 -0
- package/dist/patterns/index.d.ts +6 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +18 -0
- package/dist/patterns/layout/Stack.svelte +50 -34
- package/dist/patterns/layout/Stack.svelte.d.ts +35 -21
- package/dist/patterns/layout/Stack.svelte.d.ts.map +1 -1
- package/dist/patterns/layout/index.d.ts +5 -0
- package/dist/patterns/layout/index.d.ts.map +1 -0
- package/dist/patterns/layout/index.js +6 -0
- package/dist/patterns/navigation/BottomNav.spec.d.ts.map +1 -1
- package/dist/patterns/navigation/BottomNav.spec.js +85 -111
- package/dist/patterns/navigation/BottomNav.svelte +15 -5
- package/dist/patterns/navigation/BottomNav.svelte.d.ts +10 -10
- package/dist/patterns/navigation/BottomNav.svelte.d.ts.map +1 -1
- package/dist/patterns/navigation/Header.spec.d.ts.map +1 -1
- package/dist/patterns/navigation/Header.spec.js +147 -189
- package/dist/patterns/navigation/Header.svelte +20 -5
- package/dist/patterns/navigation/Header.svelte.d.ts +12 -19
- package/dist/patterns/navigation/Header.svelte.d.ts.map +1 -1
- package/dist/patterns/navigation/index.d.ts +3 -0
- package/dist/patterns/navigation/index.d.ts.map +1 -0
- package/dist/patterns/navigation/index.js +3 -0
- package/dist/patterns/page/PageHeader.svelte +17 -4
- package/dist/patterns/page/PageHeader.svelte.d.ts +12 -18
- package/dist/patterns/page/PageHeader.svelte.d.ts.map +1 -1
- package/dist/patterns/page/PageLoader.svelte +14 -2
- package/dist/patterns/page/PageLoader.svelte.d.ts +9 -20
- package/dist/patterns/page/PageLoader.svelte.d.ts.map +1 -1
- package/dist/patterns/page/SectionHeader.svelte +12 -2
- package/dist/patterns/page/SectionHeader.svelte.d.ts +8 -17
- package/dist/patterns/page/SectionHeader.svelte.d.ts.map +1 -1
- package/dist/patterns/page/index.d.ts +5 -0
- package/dist/patterns/page/index.d.ts.map +1 -0
- package/dist/patterns/page/index.js +5 -0
- package/dist/primitives/Accordion/Accordion.svelte +3 -2
- package/dist/primitives/Accordion/Accordion.svelte.d.ts.map +1 -1
- package/dist/primitives/Alert/Alert.svelte +10 -11
- package/dist/primitives/Alert/Alert.svelte.d.ts +2 -1
- package/dist/primitives/Alert/Alert.svelte.d.ts.map +1 -1
- package/dist/primitives/Badges/Badge.svelte +15 -58
- package/dist/primitives/Badges/Badge.svelte.d.ts +4 -2
- package/dist/primitives/Badges/Badge.svelte.d.ts.map +1 -1
- package/dist/primitives/Button/Button.svelte +37 -69
- package/dist/primitives/Button/Button.svelte.d.ts +10 -26
- package/dist/primitives/Button/Button.svelte.d.ts.map +1 -1
- package/dist/primitives/Drawer/Drawer.stories.svelte +10 -10
- package/dist/primitives/Drawer/Drawer.svelte +32 -10
- package/dist/primitives/Drawer/Drawer.svelte.d.ts +12 -31
- package/dist/primitives/Drawer/Drawer.svelte.d.ts.map +1 -1
- package/dist/primitives/Dropdown/Dropdown.svelte +29 -17
- package/dist/primitives/Dropdown/Dropdown.svelte.d.ts +9 -18
- package/dist/primitives/Dropdown/Dropdown.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/ArrowLeft.svelte +3 -2
- package/dist/primitives/Icons/ArrowLeft.svelte.d.ts +2 -0
- package/dist/primitives/Icons/ArrowLeft.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/ArrowRight.svelte +3 -2
- package/dist/primitives/Icons/ArrowRight.svelte.d.ts +2 -0
- package/dist/primitives/Icons/ArrowRight.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Availability.svelte +8 -7
- package/dist/primitives/Icons/Availability.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Availability.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Back.svelte +8 -7
- package/dist/primitives/Icons/Back.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Back.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/CheckCircle.svelte +8 -7
- package/dist/primitives/Icons/CheckCircle.svelte.d.ts +2 -0
- package/dist/primitives/Icons/CheckCircle.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/CheckCircleOutline.svelte +3 -2
- package/dist/primitives/Icons/CheckCircleOutline.svelte.d.ts +2 -0
- package/dist/primitives/Icons/CheckCircleOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/CheckCircleSolid.svelte +12 -10
- package/dist/primitives/Icons/CheckCircleSolid.svelte.d.ts +4 -0
- package/dist/primitives/Icons/CheckCircleSolid.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/CheckOutline.svelte +15 -13
- package/dist/primitives/Icons/CheckOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/CheckOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/ChevronDownOutline.svelte +14 -12
- package/dist/primitives/Icons/ChevronDownOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/ChevronDownOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/ChevronLeft.svelte +8 -7
- package/dist/primitives/Icons/ChevronLeft.svelte.d.ts +2 -0
- package/dist/primitives/Icons/ChevronLeft.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/ChevronLeftOutline.svelte +14 -12
- package/dist/primitives/Icons/ChevronLeftOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/ChevronLeftOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/ChevronRight.svelte +8 -7
- package/dist/primitives/Icons/ChevronRight.svelte.d.ts +2 -0
- package/dist/primitives/Icons/ChevronRight.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/ChevronRightOutline.svelte +14 -12
- package/dist/primitives/Icons/ChevronRightOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/ChevronRightOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/ChevronUpOutline.svelte +14 -12
- package/dist/primitives/Icons/ChevronUpOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/ChevronUpOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/CloseCircleOutline.svelte +14 -12
- package/dist/primitives/Icons/CloseCircleOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/CloseCircleOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/CloseOutline.svelte +14 -12
- package/dist/primitives/Icons/CloseOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/CloseOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Copy.svelte +3 -2
- package/dist/primitives/Icons/Copy.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Copy.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Cross.svelte +3 -2
- package/dist/primitives/Icons/Cross.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Cross.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/DotsHorizontalOutline.svelte +12 -10
- package/dist/primitives/Icons/DotsHorizontalOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/DotsHorizontalOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/DownArrow.svelte +3 -2
- package/dist/primitives/Icons/DownArrow.svelte.d.ts +2 -0
- package/dist/primitives/Icons/DownArrow.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/ErrorCircle.svelte +8 -7
- package/dist/primitives/Icons/ErrorCircle.svelte.d.ts +2 -0
- package/dist/primitives/Icons/ErrorCircle.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/ExclamationCircleOutline.svelte +14 -12
- package/dist/primitives/Icons/ExclamationCircleOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/ExclamationCircleOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/ExclamationTriangleOutline.svelte +14 -12
- package/dist/primitives/Icons/ExclamationTriangleOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/ExclamationTriangleOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/EyeOutline.svelte +14 -12
- package/dist/primitives/Icons/EyeOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/EyeOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/EyeSlashOutline.svelte +14 -12
- package/dist/primitives/Icons/EyeSlashOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/EyeSlashOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/FacebookIcon.svelte +3 -1
- package/dist/primitives/Icons/FacebookIcon.svelte.d.ts +2 -0
- package/dist/primitives/Icons/FacebookIcon.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/FileCopyOutline.svelte +14 -12
- package/dist/primitives/Icons/FileCopyOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/FileCopyOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Home.svelte +3 -2
- package/dist/primitives/Icons/Home.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Home.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/HomeSolid.svelte +12 -10
- package/dist/primitives/Icons/HomeSolid.svelte.d.ts +4 -0
- package/dist/primitives/Icons/HomeSolid.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Icon.spec.js +2 -2
- package/dist/primitives/Icons/Icon.svelte +19 -3
- package/dist/primitives/Icons/Icon.svelte.d.ts +5 -3
- package/dist/primitives/Icons/Icon.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Icons.spec.d.ts +8 -0
- package/dist/primitives/Icons/Icons.spec.d.ts.map +1 -0
- package/dist/primitives/Icons/Icons.spec.js +291 -0
- package/dist/primitives/Icons/ImageOutline.svelte +5 -3
- package/dist/primitives/Icons/ImageOutline.svelte.d.ts +6 -2
- package/dist/primitives/Icons/ImageOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Info.svelte +3 -2
- package/dist/primitives/Icons/Info.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Info.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/InfoCircleOutline.svelte +14 -12
- package/dist/primitives/Icons/InfoCircleOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/InfoCircleOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/InstagramIcon.svelte +3 -1
- package/dist/primitives/Icons/InstagramIcon.svelte.d.ts +2 -0
- package/dist/primitives/Icons/InstagramIcon.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/LogoInstagram.svelte +3 -3
- package/dist/primitives/Icons/LogoInstagram.svelte.d.ts +4 -2
- package/dist/primitives/Icons/LogoInstagram.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Message.svelte +3 -2
- package/dist/primitives/Icons/Message.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Message.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/MinusOutline.svelte +14 -12
- package/dist/primitives/Icons/MinusOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/MinusOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/MoonIcon.svelte +3 -1
- package/dist/primitives/Icons/MoonIcon.svelte.d.ts +2 -0
- package/dist/primitives/Icons/MoonIcon.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/More.svelte +8 -7
- package/dist/primitives/Icons/More.svelte.d.ts +2 -0
- package/dist/primitives/Icons/More.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/MoreHori.spec.js +3 -3
- package/dist/primitives/Icons/MoreHori.svelte +3 -2
- package/dist/primitives/Icons/MoreHori.svelte.d.ts +2 -0
- package/dist/primitives/Icons/MoreHori.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Notification.svelte +8 -7
- package/dist/primitives/Icons/Notification.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Notification.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Payment.svelte +8 -7
- package/dist/primitives/Icons/Payment.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Payment.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/PlusOutline.svelte +14 -12
- package/dist/primitives/Icons/PlusOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/PlusOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Profile.svelte +8 -7
- package/dist/primitives/Icons/Profile.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Profile.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Reload.svelte +3 -2
- package/dist/primitives/Icons/Reload.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Reload.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/SearchOutline.svelte +14 -12
- package/dist/primitives/Icons/SearchOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/SearchOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/ShareOutline.svelte +14 -12
- package/dist/primitives/Icons/ShareOutline.svelte.d.ts +4 -0
- package/dist/primitives/Icons/ShareOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Shows.svelte +8 -7
- package/dist/primitives/Icons/Shows.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Shows.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/Signout.svelte +8 -7
- package/dist/primitives/Icons/Signout.svelte.d.ts +2 -0
- package/dist/primitives/Icons/Signout.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/SunIcon.svelte +3 -1
- package/dist/primitives/Icons/SunIcon.svelte.d.ts +2 -0
- package/dist/primitives/Icons/SunIcon.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/TiktokIcon.svelte +3 -1
- package/dist/primitives/Icons/TiktokIcon.svelte.d.ts +2 -0
- package/dist/primitives/Icons/TiktokIcon.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/TrashBinOutline.svelte +5 -3
- package/dist/primitives/Icons/TrashBinOutline.svelte.d.ts +6 -2
- package/dist/primitives/Icons/TrashBinOutline.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/TwitterIcon.svelte +3 -1
- package/dist/primitives/Icons/TwitterIcon.svelte.d.ts +2 -0
- package/dist/primitives/Icons/TwitterIcon.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/WarningIcon.spec.js +4 -4
- package/dist/primitives/Icons/WarningIcon.svelte +6 -6
- package/dist/primitives/Icons/WarningIcon.svelte.d.ts +6 -2
- package/dist/primitives/Icons/WarningIcon.svelte.d.ts.map +1 -1
- package/dist/primitives/Icons/iconTestUtils.d.ts +162 -0
- package/dist/primitives/Icons/iconTestUtils.d.ts.map +1 -0
- package/dist/primitives/Icons/iconTestUtils.js +160 -0
- package/dist/primitives/Icons/index.d.ts +56 -54
- package/dist/primitives/Icons/index.d.ts.map +1 -1
- package/dist/primitives/Icons/index.js +59 -61
- package/dist/primitives/Icons/types.d.ts +31 -0
- package/dist/primitives/Icons/types.d.ts.map +1 -0
- package/dist/primitives/Icons/types.js +8 -0
- package/dist/primitives/Input/Input.svelte +7 -20
- package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
- package/dist/primitives/Input/Select.svelte +35 -18
- package/dist/primitives/Input/Select.svelte.d.ts +16 -24
- package/dist/primitives/Input/Select.svelte.d.ts.map +1 -1
- package/dist/primitives/Input/Textarea.svelte +35 -9
- package/dist/primitives/Input/Textarea.svelte.d.ts +20 -39
- package/dist/primitives/Input/Textarea.svelte.d.ts.map +1 -1
- package/dist/primitives/Skeleton/Skeleton.svelte +4 -10
- package/dist/primitives/Skeleton/Skeleton.svelte.d.ts +2 -1
- package/dist/primitives/Skeleton/Skeleton.svelte.d.ts.map +1 -1
- package/dist/primitives/Spinner/Spinner.svelte +10 -23
- package/dist/primitives/Spinner/Spinner.svelte.d.ts +4 -2
- package/dist/primitives/Spinner/Spinner.svelte.d.ts.map +1 -1
- package/dist/primitives/Tabs/TabItem.svelte +3 -2
- package/dist/primitives/Tabs/TabItem.svelte.d.ts.map +1 -1
- package/dist/primitives/Tabs/Tabs.svelte +2 -1
- package/dist/primitives/Tabs/Tabs.svelte.d.ts.map +1 -1
- package/dist/primitives/ValidationError.stories.svelte +10 -9
- package/dist/primitives/ValidationError.svelte +1 -1
- package/dist/primitives/index.d.ts +31 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +81 -0
- package/dist/recipes/ImageUploader/ImageUploader.svelte +62 -83
- package/dist/recipes/ImageUploader/ImageUploader.svelte.d.ts.map +1 -1
- package/dist/recipes/SuperLogin/SuperLogin.svelte +18 -17
- package/dist/recipes/SuperLogin/SuperLogin.svelte.d.ts.map +1 -1
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte +25 -6
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte.d.ts +7 -1
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte.d.ts.map +1 -1
- package/dist/recipes/feedback/ErrorDisplay.stories.svelte +2 -1
- package/dist/recipes/feedback/ErrorDisplay.svelte +34 -5
- package/dist/recipes/feedback/ErrorDisplay.svelte.d.ts +7 -0
- package/dist/recipes/feedback/ErrorDisplay.svelte.d.ts.map +1 -1
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +14 -5
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte.d.ts +2 -2
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte.d.ts.map +1 -1
- package/dist/recipes/feedback/index.d.ts +4 -0
- package/dist/recipes/feedback/index.d.ts.map +1 -0
- package/dist/recipes/feedback/index.js +4 -0
- package/dist/recipes/fields/SelectField.svelte +1 -1
- package/dist/recipes/fields/SelectField.svelte.d.ts +4 -1
- package/dist/recipes/fields/SelectField.svelte.d.ts.map +1 -1
- package/dist/recipes/fields/TextareaField.svelte +2 -2
- package/dist/recipes/fields/TextareaField.svelte.d.ts +6 -2
- package/dist/recipes/fields/TextareaField.svelte.d.ts.map +1 -1
- package/dist/recipes/index.d.ts +8 -0
- package/dist/recipes/index.d.ts.map +1 -0
- package/dist/recipes/index.js +24 -0
- package/dist/recipes/inputs/MultiSelect.svelte +56 -24
- package/dist/recipes/inputs/MultiSelect.svelte.d.ts +17 -26
- package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/OTPInput.svelte +25 -10
- package/dist/recipes/inputs/OTPInput.svelte.d.ts +15 -20
- package/dist/recipes/inputs/OTPInput.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/PasswordInput.svelte +42 -21
- package/dist/recipes/inputs/PasswordInput.svelte.d.ts +27 -34
- package/dist/recipes/inputs/PasswordInput.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +15 -6
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts +8 -16
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +6 -1
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +4 -4
- package/dist/recipes/inputs/Search.svelte +29 -12
- package/dist/recipes/inputs/Search.svelte.d.ts +16 -32
- package/dist/recipes/inputs/Search.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/SelectDropdown.svelte +26 -18
- package/dist/recipes/inputs/SelectDropdown.svelte.d.ts +12 -18
- package/dist/recipes/inputs/SelectDropdown.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/index.d.ts +8 -0
- package/dist/recipes/inputs/index.d.ts.map +1 -0
- package/dist/recipes/inputs/index.js +8 -0
- package/dist/recipes/modals/index.d.ts +7 -0
- package/dist/recipes/modals/index.d.ts.map +1 -0
- package/dist/recipes/modals/index.js +7 -0
- package/dist/stories/ButtonAuditDashboard.svelte +23 -18
- package/dist/stories/ButtonAuditDashboard.svelte.d.ts.map +1 -1
- package/dist/stories/PatternsGallery.svelte +66 -55
- package/dist/stories/PatternsGallery.svelte.d.ts.map +1 -1
- package/dist/stories/PrimitivesGallery.svelte +13 -13
- package/dist/stories/RecipesGallery.svelte +85 -55
- package/dist/stories/RecipesGallery.svelte.d.ts.map +1 -1
- package/dist/stripe/index.d.ts +8 -0
- package/dist/stripe/index.d.ts.map +1 -0
- package/dist/stripe/index.js +7 -0
- package/dist/stripe/useStripeTheme.svelte.d.ts +79 -0
- package/dist/stripe/useStripeTheme.svelte.d.ts.map +1 -0
- package/dist/stripe/useStripeTheme.svelte.js +138 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +1 -0
- package/dist/telemetry.server.d.ts.map +1 -1
- package/dist/telemetry.server.js +1 -0
- package/dist/telemetry.server.spec.js +1 -0
- package/dist/telemetry.spec.js +1 -0
- package/dist/tokens/__tests__/sizing.test.d.ts +2 -0
- package/dist/tokens/__tests__/sizing.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/sizing.test.js +307 -0
- package/dist/tokens/__tests__/spacing.test.d.ts +2 -0
- package/dist/tokens/__tests__/spacing.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/spacing.test.js +178 -0
- package/dist/tokens/__tests__/variants.test.d.ts +2 -0
- package/dist/tokens/__tests__/variants.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/variants.test.js +329 -0
- package/dist/tokens/index.d.ts +3 -0
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +16 -0
- package/dist/tokens/sizing.d.ts +118 -0
- package/dist/tokens/sizing.d.ts.map +1 -0
- package/dist/tokens/sizing.js +125 -0
- package/dist/tokens/spacing.d.ts +105 -0
- package/dist/tokens/spacing.d.ts.map +1 -1
- package/dist/tokens/spacing.js +76 -0
- package/dist/tokens/variants.d.ts +78 -0
- package/dist/tokens/variants.d.ts.map +1 -0
- package/dist/tokens/variants.js +89 -0
- package/dist/utils/__tests__/auth.test.d.ts +2 -0
- package/dist/utils/__tests__/auth.test.d.ts.map +1 -0
- package/dist/utils/__tests__/auth.test.js +431 -0
- package/dist/utils/__tests__/formatters.test.d.ts +2 -0
- package/dist/utils/__tests__/formatters.test.d.ts.map +1 -0
- package/dist/utils/__tests__/formatters.test.js +73 -0
- package/dist/utils/auth.d.ts +46 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +195 -0
- package/dist/utils/formatters.d.ts +13 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/formatters.js +24 -0
- package/package.json +14 -2
- package/dist/patterns/layout/Grid.svelte +0 -35
- package/dist/patterns/layout/Grid.svelte.d.ts +0 -18
- package/dist/patterns/layout/Grid.svelte.d.ts.map +0 -1
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/svelte';
|
|
2
|
+
import { expect, describe, test } from 'vitest';
|
|
3
|
+
import Stack from './Stack.svelte';
|
|
4
|
+
describe('Stack Component', () => {
|
|
5
|
+
describe('Basic Rendering', () => {
|
|
6
|
+
test('renders with default props', () => {
|
|
7
|
+
const { container } = render(Stack);
|
|
8
|
+
const stack = container.querySelector('div');
|
|
9
|
+
expect(stack).toBeInTheDocument();
|
|
10
|
+
expect(stack).toHaveClass('flex', 'flex-col', 'gap-4');
|
|
11
|
+
});
|
|
12
|
+
test('renders as flex container', () => {
|
|
13
|
+
const { container } = render(Stack);
|
|
14
|
+
expect(container.querySelector('div')).toHaveClass('flex');
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe('Direction', () => {
|
|
18
|
+
test('vertical direction applies flex-col', () => {
|
|
19
|
+
const { container } = render(Stack, { direction: 'vertical' });
|
|
20
|
+
expect(container.querySelector('div')).toHaveClass('flex-col');
|
|
21
|
+
});
|
|
22
|
+
test('horizontal direction applies flex-row', () => {
|
|
23
|
+
const { container } = render(Stack, { direction: 'horizontal' });
|
|
24
|
+
expect(container.querySelector('div')).toHaveClass('flex-row');
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('Gap - Semantic Names', () => {
|
|
28
|
+
test('tight gap (4px)', () => {
|
|
29
|
+
const { container } = render(Stack, { gap: 'tight' });
|
|
30
|
+
expect(container.querySelector('div')).toHaveClass('gap-1');
|
|
31
|
+
});
|
|
32
|
+
test('compact gap (6px)', () => {
|
|
33
|
+
const { container } = render(Stack, { gap: 'compact' });
|
|
34
|
+
expect(container.querySelector('div')).toHaveClass('gap-1.5');
|
|
35
|
+
});
|
|
36
|
+
test('item gap (8px)', () => {
|
|
37
|
+
const { container } = render(Stack, { gap: 'item' });
|
|
38
|
+
expect(container.querySelector('div')).toHaveClass('gap-2');
|
|
39
|
+
});
|
|
40
|
+
test('group gap (12px)', () => {
|
|
41
|
+
const { container } = render(Stack, { gap: 'group' });
|
|
42
|
+
expect(container.querySelector('div')).toHaveClass('gap-3');
|
|
43
|
+
});
|
|
44
|
+
test('content gap (16px) - default', () => {
|
|
45
|
+
const { container } = render(Stack, { gap: 'content' });
|
|
46
|
+
expect(container.querySelector('div')).toHaveClass('gap-4');
|
|
47
|
+
});
|
|
48
|
+
test('section gap (24px)', () => {
|
|
49
|
+
const { container } = render(Stack, { gap: 'section' });
|
|
50
|
+
expect(container.querySelector('div')).toHaveClass('gap-6');
|
|
51
|
+
});
|
|
52
|
+
test('layout gap (32px)', () => {
|
|
53
|
+
const { container } = render(Stack, { gap: 'layout' });
|
|
54
|
+
expect(container.querySelector('div')).toHaveClass('gap-8');
|
|
55
|
+
});
|
|
56
|
+
test('page gap (48px)', () => {
|
|
57
|
+
const { container } = render(Stack, { gap: 'page' });
|
|
58
|
+
expect(container.querySelector('div')).toHaveClass('gap-12');
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe('Gap - Numeric Values', () => {
|
|
62
|
+
test('gap 0', () => {
|
|
63
|
+
const { container } = render(Stack, { gap: '0' });
|
|
64
|
+
expect(container.querySelector('div')).toHaveClass('gap-0');
|
|
65
|
+
});
|
|
66
|
+
test('gap 1', () => {
|
|
67
|
+
const { container } = render(Stack, { gap: '1' });
|
|
68
|
+
expect(container.querySelector('div')).toHaveClass('gap-1');
|
|
69
|
+
});
|
|
70
|
+
test('gap 2', () => {
|
|
71
|
+
const { container } = render(Stack, { gap: '2' });
|
|
72
|
+
expect(container.querySelector('div')).toHaveClass('gap-2');
|
|
73
|
+
});
|
|
74
|
+
test('gap 4 (default)', () => {
|
|
75
|
+
const { container } = render(Stack, { gap: '4' });
|
|
76
|
+
expect(container.querySelector('div')).toHaveClass('gap-4');
|
|
77
|
+
});
|
|
78
|
+
test('gap 8', () => {
|
|
79
|
+
const { container } = render(Stack, { gap: '8' });
|
|
80
|
+
expect(container.querySelector('div')).toHaveClass('gap-8');
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
describe('Gap - Legacy Aliases (Deprecated)', () => {
|
|
84
|
+
test('none gap (legacy)', () => {
|
|
85
|
+
const { container } = render(Stack, { gap: 'none' });
|
|
86
|
+
expect(container.querySelector('div')).toHaveClass('gap-0');
|
|
87
|
+
});
|
|
88
|
+
test('xs gap (legacy)', () => {
|
|
89
|
+
const { container } = render(Stack, { gap: 'xs' });
|
|
90
|
+
expect(container.querySelector('div')).toHaveClass('gap-1');
|
|
91
|
+
});
|
|
92
|
+
test('sm gap (legacy)', () => {
|
|
93
|
+
const { container } = render(Stack, { gap: 'sm' });
|
|
94
|
+
expect(container.querySelector('div')).toHaveClass('gap-2');
|
|
95
|
+
});
|
|
96
|
+
test('md gap (legacy)', () => {
|
|
97
|
+
const { container } = render(Stack, { gap: 'md' });
|
|
98
|
+
expect(container.querySelector('div')).toHaveClass('gap-4');
|
|
99
|
+
});
|
|
100
|
+
test('lg gap (legacy)', () => {
|
|
101
|
+
const { container } = render(Stack, { gap: 'lg' });
|
|
102
|
+
expect(container.querySelector('div')).toHaveClass('gap-6');
|
|
103
|
+
});
|
|
104
|
+
test('xl gap (legacy)', () => {
|
|
105
|
+
const { container } = render(Stack, { gap: 'xl' });
|
|
106
|
+
expect(container.querySelector('div')).toHaveClass('gap-8');
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
describe('Alignment', () => {
|
|
110
|
+
test('align start', () => {
|
|
111
|
+
const { container } = render(Stack, { align: 'start' });
|
|
112
|
+
expect(container.querySelector('div')).toHaveClass('items-start');
|
|
113
|
+
});
|
|
114
|
+
test('align center', () => {
|
|
115
|
+
const { container } = render(Stack, { align: 'center' });
|
|
116
|
+
expect(container.querySelector('div')).toHaveClass('items-center');
|
|
117
|
+
});
|
|
118
|
+
test('align end', () => {
|
|
119
|
+
const { container } = render(Stack, { align: 'end' });
|
|
120
|
+
expect(container.querySelector('div')).toHaveClass('items-end');
|
|
121
|
+
});
|
|
122
|
+
test('align stretch', () => {
|
|
123
|
+
const { container } = render(Stack, { align: 'stretch' });
|
|
124
|
+
expect(container.querySelector('div')).toHaveClass('items-stretch');
|
|
125
|
+
});
|
|
126
|
+
test('align baseline', () => {
|
|
127
|
+
const { container } = render(Stack, { align: 'baseline' });
|
|
128
|
+
expect(container.querySelector('div')).toHaveClass('items-baseline');
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
describe('Justify', () => {
|
|
132
|
+
test('justify start', () => {
|
|
133
|
+
const { container } = render(Stack, { justify: 'start' });
|
|
134
|
+
expect(container.querySelector('div')).toHaveClass('justify-start');
|
|
135
|
+
});
|
|
136
|
+
test('justify center', () => {
|
|
137
|
+
const { container } = render(Stack, { justify: 'center' });
|
|
138
|
+
expect(container.querySelector('div')).toHaveClass('justify-center');
|
|
139
|
+
});
|
|
140
|
+
test('justify end', () => {
|
|
141
|
+
const { container } = render(Stack, { justify: 'end' });
|
|
142
|
+
expect(container.querySelector('div')).toHaveClass('justify-end');
|
|
143
|
+
});
|
|
144
|
+
test('justify between', () => {
|
|
145
|
+
const { container } = render(Stack, { justify: 'between' });
|
|
146
|
+
expect(container.querySelector('div')).toHaveClass('justify-between');
|
|
147
|
+
});
|
|
148
|
+
test('justify around', () => {
|
|
149
|
+
const { container } = render(Stack, { justify: 'around' });
|
|
150
|
+
expect(container.querySelector('div')).toHaveClass('justify-around');
|
|
151
|
+
});
|
|
152
|
+
test('justify evenly', () => {
|
|
153
|
+
const { container } = render(Stack, { justify: 'evenly' });
|
|
154
|
+
expect(container.querySelector('div')).toHaveClass('justify-evenly');
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
describe('Wrap', () => {
|
|
158
|
+
test('wrap false by default', () => {
|
|
159
|
+
const { container } = render(Stack);
|
|
160
|
+
expect(container.querySelector('div')).not.toHaveClass('flex-wrap');
|
|
161
|
+
});
|
|
162
|
+
test('wrap true adds flex-wrap', () => {
|
|
163
|
+
const { container } = render(Stack, { wrap: true });
|
|
164
|
+
expect(container.querySelector('div')).toHaveClass('flex-wrap');
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe('Semantic Elements (as prop)', () => {
|
|
168
|
+
test('renders as div by default', () => {
|
|
169
|
+
const { container } = render(Stack);
|
|
170
|
+
expect(container.querySelector('div')).toBeInTheDocument();
|
|
171
|
+
});
|
|
172
|
+
test('renders as section', () => {
|
|
173
|
+
const { container } = render(Stack, { as: 'section' });
|
|
174
|
+
expect(container.querySelector('section')).toBeInTheDocument();
|
|
175
|
+
});
|
|
176
|
+
test('renders as article', () => {
|
|
177
|
+
const { container } = render(Stack, { as: 'article' });
|
|
178
|
+
expect(container.querySelector('article')).toBeInTheDocument();
|
|
179
|
+
});
|
|
180
|
+
test('renders as aside', () => {
|
|
181
|
+
const { container } = render(Stack, { as: 'aside' });
|
|
182
|
+
expect(container.querySelector('aside')).toBeInTheDocument();
|
|
183
|
+
});
|
|
184
|
+
test('renders as main', () => {
|
|
185
|
+
const { container } = render(Stack, { as: 'main' });
|
|
186
|
+
expect(container.querySelector('main')).toBeInTheDocument();
|
|
187
|
+
});
|
|
188
|
+
test('renders as nav', () => {
|
|
189
|
+
const { container } = render(Stack, { as: 'nav' });
|
|
190
|
+
expect(container.querySelector('nav')).toBeInTheDocument();
|
|
191
|
+
});
|
|
192
|
+
test('renders as ul', () => {
|
|
193
|
+
const { container } = render(Stack, { as: 'ul' });
|
|
194
|
+
expect(container.querySelector('ul')).toBeInTheDocument();
|
|
195
|
+
});
|
|
196
|
+
test('renders as ol', () => {
|
|
197
|
+
const { container } = render(Stack, { as: 'ol' });
|
|
198
|
+
expect(container.querySelector('ol')).toBeInTheDocument();
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
describe('Custom Class', () => {
|
|
202
|
+
test('accepts custom class', () => {
|
|
203
|
+
const { container } = render(Stack, { class: 'custom-class' });
|
|
204
|
+
expect(container.querySelector('div')).toHaveClass('custom-class');
|
|
205
|
+
});
|
|
206
|
+
test('merges custom class with generated classes', () => {
|
|
207
|
+
const { container } = render(Stack, { class: 'custom-class', gap: 'section' });
|
|
208
|
+
const stack = container.querySelector('div');
|
|
209
|
+
expect(stack).toHaveClass('custom-class');
|
|
210
|
+
expect(stack).toHaveClass('flex');
|
|
211
|
+
expect(stack).toHaveClass('gap-6');
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
describe('Rest Props', () => {
|
|
215
|
+
test('passes through data attributes', () => {
|
|
216
|
+
const { container } = render(Stack, { 'data-testid': 'my-stack' });
|
|
217
|
+
expect(container.querySelector('[data-testid="my-stack"]')).toBeInTheDocument();
|
|
218
|
+
});
|
|
219
|
+
test('passes through aria attributes', () => {
|
|
220
|
+
const { container } = render(Stack, { 'aria-label': 'Stack container' });
|
|
221
|
+
expect(container.querySelector('[aria-label="Stack container"]')).toBeInTheDocument();
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
describe('Combined Props', () => {
|
|
225
|
+
test('horizontal layout with center alignment and between justify', () => {
|
|
226
|
+
const { container } = render(Stack, {
|
|
227
|
+
direction: 'horizontal',
|
|
228
|
+
align: 'center',
|
|
229
|
+
justify: 'between',
|
|
230
|
+
gap: 'section'
|
|
231
|
+
});
|
|
232
|
+
const stack = container.querySelector('div');
|
|
233
|
+
expect(stack).toHaveClass('flex-row');
|
|
234
|
+
expect(stack).toHaveClass('items-center');
|
|
235
|
+
expect(stack).toHaveClass('justify-between');
|
|
236
|
+
expect(stack).toHaveClass('gap-6');
|
|
237
|
+
});
|
|
238
|
+
test('vertical layout as section with page gap', () => {
|
|
239
|
+
const { container } = render(Stack, {
|
|
240
|
+
direction: 'vertical',
|
|
241
|
+
as: 'section',
|
|
242
|
+
gap: 'page'
|
|
243
|
+
});
|
|
244
|
+
const stack = container.querySelector('section');
|
|
245
|
+
expect(stack).toHaveClass('flex-col');
|
|
246
|
+
expect(stack).toHaveClass('gap-12');
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
describe('Stack Deprecated Wrapper (patterns/layout/Stack)', () => {
|
|
251
|
+
// Note: The patterns version re-exports the components version
|
|
252
|
+
// These tests verify backward compatibility
|
|
253
|
+
test('deprecated wrapper imports work', async () => {
|
|
254
|
+
const DeprecatedStack = await import('../../patterns/layout/Stack.svelte');
|
|
255
|
+
expect(DeprecatedStack.default).toBeDefined();
|
|
256
|
+
});
|
|
257
|
+
});
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { Snippet } from 'svelte';
|
|
3
|
+
import {
|
|
4
|
+
gapMap,
|
|
5
|
+
alignScale,
|
|
6
|
+
justifyScale,
|
|
7
|
+
type GapKey,
|
|
8
|
+
type AlignKey,
|
|
9
|
+
type JustifyKey,
|
|
10
|
+
} from '../../tokens/spacing';
|
|
3
11
|
|
|
4
|
-
type GapValue = 'tight' | 'compact' | 'item' | 'group' | 'content' | 'section' | 'layout' | 'page' | '0' | '1' | '1.5' | '2' | '3' | '4' | '6' | '8' | '12' | '16';
|
|
5
12
|
type Direction = 'vertical' | 'horizontal';
|
|
6
|
-
type Align = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
|
|
7
|
-
type Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
|
|
8
13
|
type ElementType = 'div' | 'section' | 'article' | 'aside' | 'main' | 'nav' | 'ul' | 'ol';
|
|
9
14
|
|
|
10
15
|
interface Props {
|
|
11
|
-
gap?:
|
|
16
|
+
gap?: GapKey;
|
|
12
17
|
direction?: Direction;
|
|
13
|
-
align?:
|
|
14
|
-
justify?:
|
|
18
|
+
align?: AlignKey;
|
|
19
|
+
justify?: JustifyKey;
|
|
15
20
|
wrap?: boolean;
|
|
16
21
|
as?: ElementType;
|
|
17
22
|
class?: string;
|
|
@@ -31,55 +36,12 @@
|
|
|
31
36
|
...restProps
|
|
32
37
|
}: Props = $props();
|
|
33
38
|
|
|
34
|
-
const semanticGapMap: Record<string, string> = {
|
|
35
|
-
'tight': 'gap-1',
|
|
36
|
-
'compact': 'gap-1.5',
|
|
37
|
-
'item': 'gap-2',
|
|
38
|
-
'group': 'gap-3',
|
|
39
|
-
'content': 'gap-4',
|
|
40
|
-
'section': 'gap-6',
|
|
41
|
-
'layout': 'gap-8',
|
|
42
|
-
'page': 'gap-12',
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
const numericGapMap: Record<string, string> = {
|
|
46
|
-
'0': 'gap-0',
|
|
47
|
-
'1': 'gap-1',
|
|
48
|
-
'1.5': 'gap-1.5',
|
|
49
|
-
'2': 'gap-2',
|
|
50
|
-
'3': 'gap-3',
|
|
51
|
-
'4': 'gap-4',
|
|
52
|
-
'6': 'gap-6',
|
|
53
|
-
'8': 'gap-8',
|
|
54
|
-
'12': 'gap-12',
|
|
55
|
-
'16': 'gap-16'
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
const gapMap = { ...numericGapMap, ...semanticGapMap };
|
|
59
|
-
|
|
60
|
-
const alignMap: Record<string, string> = {
|
|
61
|
-
start: 'items-start',
|
|
62
|
-
center: 'items-center',
|
|
63
|
-
end: 'items-end',
|
|
64
|
-
stretch: 'items-stretch',
|
|
65
|
-
baseline: 'items-baseline'
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
const justifyMap: Record<string, string> = {
|
|
69
|
-
start: 'justify-start',
|
|
70
|
-
center: 'justify-center',
|
|
71
|
-
end: 'justify-end',
|
|
72
|
-
between: 'justify-between',
|
|
73
|
-
around: 'justify-around',
|
|
74
|
-
evenly: 'justify-evenly'
|
|
75
|
-
};
|
|
76
|
-
|
|
77
39
|
let classes = $derived([
|
|
78
40
|
'flex',
|
|
79
41
|
direction === 'vertical' ? 'flex-col' : 'flex-row',
|
|
80
42
|
gapMap[gap] || 'gap-4',
|
|
81
|
-
align ?
|
|
82
|
-
justify ?
|
|
43
|
+
align ? alignScale[align] : '',
|
|
44
|
+
justify ? justifyScale[justify] : '',
|
|
83
45
|
wrap ? 'flex-wrap' : '',
|
|
84
46
|
className
|
|
85
47
|
].filter(Boolean).join(' '));
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import type { Snippet } from 'svelte';
|
|
2
|
-
|
|
2
|
+
import { type GapKey, type AlignKey, type JustifyKey } from '../../tokens/spacing';
|
|
3
3
|
type Direction = 'vertical' | 'horizontal';
|
|
4
|
-
type Align = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
|
|
5
|
-
type Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
|
|
6
4
|
type ElementType = 'div' | 'section' | 'article' | 'aside' | 'main' | 'nav' | 'ul' | 'ol';
|
|
7
5
|
interface Props {
|
|
8
|
-
gap?:
|
|
6
|
+
gap?: GapKey;
|
|
9
7
|
direction?: Direction;
|
|
10
|
-
align?:
|
|
11
|
-
justify?:
|
|
8
|
+
align?: AlignKey;
|
|
9
|
+
justify?: JustifyKey;
|
|
12
10
|
wrap?: boolean;
|
|
13
11
|
as?: ElementType;
|
|
14
12
|
class?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stack.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Layout/Stack.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"Stack.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Layout/Stack.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAIH,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAG9B,KAAK,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAC3C,KAAK,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1F,UAAU,KAAK;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAqCH,QAAA,MAAM,KAAK,2CAAwC,CAAC;AACpD,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AACtC,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grid.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/Layout/__tests__/Grid.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { render } from '@testing-library/svelte';
|
|
3
|
+
import Grid from '../Grid.svelte';
|
|
4
|
+
describe('Grid', () => {
|
|
5
|
+
describe('basic rendering', () => {
|
|
6
|
+
it('renders as a div by default', () => {
|
|
7
|
+
const { container } = render(Grid);
|
|
8
|
+
expect(container.querySelector('div')).toBeTruthy();
|
|
9
|
+
});
|
|
10
|
+
it('applies grid class', () => {
|
|
11
|
+
const { container } = render(Grid);
|
|
12
|
+
const div = container.querySelector('div');
|
|
13
|
+
expect(div?.classList.contains('grid')).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
it('applies default gap-4 class', () => {
|
|
16
|
+
const { container } = render(Grid);
|
|
17
|
+
const div = container.querySelector('div');
|
|
18
|
+
expect(div?.classList.contains('gap-4')).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
it('applies default 3-column responsive layout', () => {
|
|
21
|
+
const { container } = render(Grid);
|
|
22
|
+
const div = container.querySelector('div');
|
|
23
|
+
expect(div?.classList.contains('grid-cols-1')).toBe(true);
|
|
24
|
+
expect(div?.classList.contains('md:grid-cols-2')).toBe(true);
|
|
25
|
+
expect(div?.classList.contains('lg:grid-cols-3')).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('cols prop', () => {
|
|
29
|
+
it('applies single column layout for cols="1"', () => {
|
|
30
|
+
const { container } = render(Grid, { cols: '1' });
|
|
31
|
+
const div = container.querySelector('div');
|
|
32
|
+
expect(div?.classList.contains('grid-cols-1')).toBe(true);
|
|
33
|
+
expect(div?.classList.contains('md:grid-cols-2')).toBe(false);
|
|
34
|
+
});
|
|
35
|
+
it('applies 2-column responsive layout for cols="2"', () => {
|
|
36
|
+
const { container } = render(Grid, { cols: '2' });
|
|
37
|
+
const div = container.querySelector('div');
|
|
38
|
+
expect(div?.classList.contains('grid-cols-1')).toBe(true);
|
|
39
|
+
expect(div?.classList.contains('md:grid-cols-2')).toBe(true);
|
|
40
|
+
expect(div?.classList.contains('lg:grid-cols-3')).toBe(false);
|
|
41
|
+
});
|
|
42
|
+
it('applies 3-column responsive layout for cols="3"', () => {
|
|
43
|
+
const { container } = render(Grid, { cols: '3' });
|
|
44
|
+
const div = container.querySelector('div');
|
|
45
|
+
expect(div?.classList.contains('grid-cols-1')).toBe(true);
|
|
46
|
+
expect(div?.classList.contains('md:grid-cols-2')).toBe(true);
|
|
47
|
+
expect(div?.classList.contains('lg:grid-cols-3')).toBe(true);
|
|
48
|
+
});
|
|
49
|
+
it('applies 4-column responsive layout for cols="4"', () => {
|
|
50
|
+
const { container } = render(Grid, { cols: '4' });
|
|
51
|
+
const div = container.querySelector('div');
|
|
52
|
+
expect(div?.classList.contains('grid-cols-1')).toBe(true);
|
|
53
|
+
expect(div?.classList.contains('sm:grid-cols-2')).toBe(true);
|
|
54
|
+
expect(div?.classList.contains('lg:grid-cols-4')).toBe(true);
|
|
55
|
+
});
|
|
56
|
+
it('applies 5-column responsive layout for cols="5"', () => {
|
|
57
|
+
const { container } = render(Grid, { cols: '5' });
|
|
58
|
+
const div = container.querySelector('div');
|
|
59
|
+
expect(div?.classList.contains('grid-cols-1')).toBe(true);
|
|
60
|
+
expect(div?.classList.contains('sm:grid-cols-2')).toBe(true);
|
|
61
|
+
expect(div?.classList.contains('lg:grid-cols-5')).toBe(true);
|
|
62
|
+
});
|
|
63
|
+
it('applies 6-column responsive layout for cols="6"', () => {
|
|
64
|
+
const { container } = render(Grid, { cols: '6' });
|
|
65
|
+
const div = container.querySelector('div');
|
|
66
|
+
expect(div?.classList.contains('grid-cols-1')).toBe(true);
|
|
67
|
+
expect(div?.classList.contains('sm:grid-cols-2')).toBe(true);
|
|
68
|
+
expect(div?.classList.contains('md:grid-cols-3')).toBe(true);
|
|
69
|
+
expect(div?.classList.contains('lg:grid-cols-6')).toBe(true);
|
|
70
|
+
});
|
|
71
|
+
it('applies 12-column layout for cols="12"', () => {
|
|
72
|
+
const { container } = render(Grid, { cols: '12' });
|
|
73
|
+
const div = container.querySelector('div');
|
|
74
|
+
expect(div?.classList.contains('grid-cols-12')).toBe(true);
|
|
75
|
+
});
|
|
76
|
+
it('applies auto-fit layout with inline style for cols="auto"', () => {
|
|
77
|
+
const { container } = render(Grid, { cols: 'auto' });
|
|
78
|
+
const div = container.querySelector('div');
|
|
79
|
+
expect(div?.getAttribute('style')).toContain('grid-template-columns');
|
|
80
|
+
expect(div?.getAttribute('style')).toContain('auto-fit');
|
|
81
|
+
expect(div?.getAttribute('style')).toContain('minmax');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe('minWidth prop (for auto columns)', () => {
|
|
85
|
+
it('uses default minWidth of 280px', () => {
|
|
86
|
+
const { container } = render(Grid, { cols: 'auto' });
|
|
87
|
+
const div = container.querySelector('div');
|
|
88
|
+
expect(div?.getAttribute('style')).toContain('280px');
|
|
89
|
+
});
|
|
90
|
+
it('applies custom minWidth', () => {
|
|
91
|
+
const { container } = render(Grid, { cols: 'auto', minWidth: '300px' });
|
|
92
|
+
const div = container.querySelector('div');
|
|
93
|
+
expect(div?.getAttribute('style')).toContain('300px');
|
|
94
|
+
});
|
|
95
|
+
it('ignores minWidth when cols is not "auto"', () => {
|
|
96
|
+
const { container } = render(Grid, { cols: '3', minWidth: '400px' });
|
|
97
|
+
const div = container.querySelector('div');
|
|
98
|
+
expect(div?.getAttribute('style')).toBeFalsy();
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
describe('gap prop', () => {
|
|
102
|
+
describe('numeric values', () => {
|
|
103
|
+
it('applies gap-0 for gap="0"', () => {
|
|
104
|
+
const { container } = render(Grid, { gap: '0' });
|
|
105
|
+
const div = container.querySelector('div');
|
|
106
|
+
expect(div?.classList.contains('gap-0')).toBe(true);
|
|
107
|
+
});
|
|
108
|
+
it('applies gap-6 for gap="6"', () => {
|
|
109
|
+
const { container } = render(Grid, { gap: '6' });
|
|
110
|
+
const div = container.querySelector('div');
|
|
111
|
+
expect(div?.classList.contains('gap-6')).toBe(true);
|
|
112
|
+
});
|
|
113
|
+
it('applies gap-8 for gap="8"', () => {
|
|
114
|
+
const { container } = render(Grid, { gap: '8' });
|
|
115
|
+
const div = container.querySelector('div');
|
|
116
|
+
expect(div?.classList.contains('gap-8')).toBe(true);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe('semantic values', () => {
|
|
120
|
+
it('applies gap-4 for gap="content"', () => {
|
|
121
|
+
const { container } = render(Grid, { gap: 'content' });
|
|
122
|
+
const div = container.querySelector('div');
|
|
123
|
+
expect(div?.classList.contains('gap-4')).toBe(true);
|
|
124
|
+
});
|
|
125
|
+
it('applies gap-6 for gap="section"', () => {
|
|
126
|
+
const { container } = render(Grid, { gap: 'section' });
|
|
127
|
+
const div = container.querySelector('div');
|
|
128
|
+
expect(div?.classList.contains('gap-6')).toBe(true);
|
|
129
|
+
});
|
|
130
|
+
it('applies gap-8 for gap="layout"', () => {
|
|
131
|
+
const { container } = render(Grid, { gap: 'layout' });
|
|
132
|
+
const div = container.querySelector('div');
|
|
133
|
+
expect(div?.classList.contains('gap-8')).toBe(true);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
describe('grid-specific semantic values', () => {
|
|
137
|
+
it('applies gap-4 for gap="tight"', () => {
|
|
138
|
+
const { container } = render(Grid, { gap: 'tight' });
|
|
139
|
+
const div = container.querySelector('div');
|
|
140
|
+
expect(div?.classList.contains('gap-4')).toBe(true);
|
|
141
|
+
});
|
|
142
|
+
it('applies gap-6 for gap="standard"', () => {
|
|
143
|
+
const { container } = render(Grid, { gap: 'standard' });
|
|
144
|
+
const div = container.querySelector('div');
|
|
145
|
+
expect(div?.classList.contains('gap-6')).toBe(true);
|
|
146
|
+
});
|
|
147
|
+
it('applies gap-8 for gap="spacious"', () => {
|
|
148
|
+
const { container } = render(Grid, { gap: 'spacious' });
|
|
149
|
+
const div = container.querySelector('div');
|
|
150
|
+
expect(div?.classList.contains('gap-8')).toBe(true);
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
describe('legacy values', () => {
|
|
154
|
+
it('applies gap-0 for gap="none"', () => {
|
|
155
|
+
const { container } = render(Grid, { gap: 'none' });
|
|
156
|
+
const div = container.querySelector('div');
|
|
157
|
+
expect(div?.classList.contains('gap-0')).toBe(true);
|
|
158
|
+
});
|
|
159
|
+
it('applies gap-2 for gap="sm"', () => {
|
|
160
|
+
const { container } = render(Grid, { gap: 'sm' });
|
|
161
|
+
const div = container.querySelector('div');
|
|
162
|
+
expect(div?.classList.contains('gap-2')).toBe(true);
|
|
163
|
+
});
|
|
164
|
+
it('applies gap-4 for gap="md"', () => {
|
|
165
|
+
const { container } = render(Grid, { gap: 'md' });
|
|
166
|
+
const div = container.querySelector('div');
|
|
167
|
+
expect(div?.classList.contains('gap-4')).toBe(true);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
describe('as prop', () => {
|
|
172
|
+
it('renders as div by default', () => {
|
|
173
|
+
const { container } = render(Grid);
|
|
174
|
+
expect(container.querySelector('div')).toBeTruthy();
|
|
175
|
+
expect(container.querySelector('section')).toBeFalsy();
|
|
176
|
+
});
|
|
177
|
+
it('renders as section when as="section"', () => {
|
|
178
|
+
const { container } = render(Grid, { as: 'section' });
|
|
179
|
+
expect(container.querySelector('section')).toBeTruthy();
|
|
180
|
+
expect(container.querySelector('div')).toBeFalsy();
|
|
181
|
+
});
|
|
182
|
+
it('renders as ul when as="ul"', () => {
|
|
183
|
+
const { container } = render(Grid, { as: 'ul' });
|
|
184
|
+
expect(container.querySelector('ul')).toBeTruthy();
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
describe('class prop', () => {
|
|
188
|
+
it('applies custom classes', () => {
|
|
189
|
+
const { container } = render(Grid, { class: 'custom-grid' });
|
|
190
|
+
const div = container.querySelector('div');
|
|
191
|
+
expect(div?.classList.contains('custom-grid')).toBe(true);
|
|
192
|
+
});
|
|
193
|
+
it('preserves default classes when adding custom classes', () => {
|
|
194
|
+
const { container } = render(Grid, { class: 'custom-grid' });
|
|
195
|
+
const div = container.querySelector('div');
|
|
196
|
+
expect(div?.classList.contains('grid')).toBe(true);
|
|
197
|
+
expect(div?.classList.contains('gap-4')).toBe(true);
|
|
198
|
+
expect(div?.classList.contains('custom-grid')).toBe(true);
|
|
199
|
+
});
|
|
200
|
+
it('supports multiple custom classes', () => {
|
|
201
|
+
const { container } = render(Grid, { class: 'class-a class-b' });
|
|
202
|
+
const div = container.querySelector('div');
|
|
203
|
+
expect(div?.classList.contains('class-a')).toBe(true);
|
|
204
|
+
expect(div?.classList.contains('class-b')).toBe(true);
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
describe('combined props', () => {
|
|
208
|
+
it('applies all props correctly together', () => {
|
|
209
|
+
const { container } = render(Grid, {
|
|
210
|
+
cols: '4',
|
|
211
|
+
gap: 'section',
|
|
212
|
+
as: 'section',
|
|
213
|
+
class: 'my-grid',
|
|
214
|
+
});
|
|
215
|
+
const section = container.querySelector('section');
|
|
216
|
+
expect(section).toBeTruthy();
|
|
217
|
+
expect(section?.classList.contains('grid')).toBe(true);
|
|
218
|
+
expect(section?.classList.contains('gap-6')).toBe(true);
|
|
219
|
+
expect(section?.classList.contains('lg:grid-cols-4')).toBe(true);
|
|
220
|
+
expect(section?.classList.contains('my-grid')).toBe(true);
|
|
221
|
+
});
|
|
222
|
+
it('handles auto columns with custom gap', () => {
|
|
223
|
+
const { container } = render(Grid, {
|
|
224
|
+
cols: 'auto',
|
|
225
|
+
gap: 'spacious',
|
|
226
|
+
minWidth: '320px',
|
|
227
|
+
});
|
|
228
|
+
const div = container.querySelector('div');
|
|
229
|
+
expect(div?.classList.contains('grid')).toBe(true);
|
|
230
|
+
expect(div?.classList.contains('gap-8')).toBe(true);
|
|
231
|
+
expect(div?.getAttribute('style')).toContain('320px');
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
describe('12-column layout grid', () => {
|
|
235
|
+
it('applies fixed 12-column layout without responsive classes', () => {
|
|
236
|
+
const { container } = render(Grid, { cols: '12', gap: 'none' });
|
|
237
|
+
const div = container.querySelector('div');
|
|
238
|
+
expect(div?.classList.contains('grid-cols-12')).toBe(true);
|
|
239
|
+
expect(div?.classList.contains('gap-0')).toBe(true);
|
|
240
|
+
// Should not have responsive column classes
|
|
241
|
+
expect(div?.classList.contains('sm:grid-cols-2')).toBe(false);
|
|
242
|
+
expect(div?.classList.contains('md:grid-cols-3')).toBe(false);
|
|
243
|
+
expect(div?.classList.contains('lg:grid-cols-6')).toBe(false);
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stack.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/Layout/__tests__/Stack.test.ts"],"names":[],"mappings":""}
|