@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,267 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { render } from '@testing-library/svelte';
|
|
3
|
+
import Stack from '../Stack.svelte';
|
|
4
|
+
describe('Stack', () => {
|
|
5
|
+
describe('basic rendering', () => {
|
|
6
|
+
it('renders as a div by default', () => {
|
|
7
|
+
const { container } = render(Stack);
|
|
8
|
+
expect(container.querySelector('div')).toBeTruthy();
|
|
9
|
+
});
|
|
10
|
+
it('applies flex and flex-col classes by default', () => {
|
|
11
|
+
const { container } = render(Stack);
|
|
12
|
+
const div = container.querySelector('div');
|
|
13
|
+
expect(div?.classList.contains('flex')).toBe(true);
|
|
14
|
+
expect(div?.classList.contains('flex-col')).toBe(true);
|
|
15
|
+
});
|
|
16
|
+
it('applies default gap-4 class', () => {
|
|
17
|
+
const { container } = render(Stack);
|
|
18
|
+
const div = container.querySelector('div');
|
|
19
|
+
expect(div?.classList.contains('gap-4')).toBe(true);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
describe('direction prop', () => {
|
|
23
|
+
it('applies flex-col for vertical direction', () => {
|
|
24
|
+
const { container } = render(Stack, { direction: 'vertical' });
|
|
25
|
+
const div = container.querySelector('div');
|
|
26
|
+
expect(div?.classList.contains('flex-col')).toBe(true);
|
|
27
|
+
expect(div?.classList.contains('flex-row')).toBe(false);
|
|
28
|
+
});
|
|
29
|
+
it('applies flex-row for horizontal direction', () => {
|
|
30
|
+
const { container } = render(Stack, { direction: 'horizontal' });
|
|
31
|
+
const div = container.querySelector('div');
|
|
32
|
+
expect(div?.classList.contains('flex-row')).toBe(true);
|
|
33
|
+
expect(div?.classList.contains('flex-col')).toBe(false);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
describe('gap prop', () => {
|
|
37
|
+
describe('numeric values', () => {
|
|
38
|
+
it('applies gap-0 for gap="0"', () => {
|
|
39
|
+
const { container } = render(Stack, { gap: '0' });
|
|
40
|
+
const div = container.querySelector('div');
|
|
41
|
+
expect(div?.classList.contains('gap-0')).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
it('applies gap-1 for gap="1"', () => {
|
|
44
|
+
const { container } = render(Stack, { gap: '1' });
|
|
45
|
+
const div = container.querySelector('div');
|
|
46
|
+
expect(div?.classList.contains('gap-1')).toBe(true);
|
|
47
|
+
});
|
|
48
|
+
it('applies gap-8 for gap="8"', () => {
|
|
49
|
+
const { container } = render(Stack, { gap: '8' });
|
|
50
|
+
const div = container.querySelector('div');
|
|
51
|
+
expect(div?.classList.contains('gap-8')).toBe(true);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('semantic values', () => {
|
|
55
|
+
it('applies gap-4 for gap="content"', () => {
|
|
56
|
+
const { container } = render(Stack, { gap: 'content' });
|
|
57
|
+
const div = container.querySelector('div');
|
|
58
|
+
expect(div?.classList.contains('gap-4')).toBe(true);
|
|
59
|
+
});
|
|
60
|
+
it('applies gap-6 for gap="section"', () => {
|
|
61
|
+
const { container } = render(Stack, { gap: 'section' });
|
|
62
|
+
const div = container.querySelector('div');
|
|
63
|
+
expect(div?.classList.contains('gap-6')).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
it('applies gap-8 for gap="layout"', () => {
|
|
66
|
+
const { container } = render(Stack, { gap: 'layout' });
|
|
67
|
+
const div = container.querySelector('div');
|
|
68
|
+
expect(div?.classList.contains('gap-8')).toBe(true);
|
|
69
|
+
});
|
|
70
|
+
it('applies gap-12 for gap="page"', () => {
|
|
71
|
+
const { container } = render(Stack, { gap: 'page' });
|
|
72
|
+
const div = container.querySelector('div');
|
|
73
|
+
expect(div?.classList.contains('gap-12')).toBe(true);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe('legacy values', () => {
|
|
77
|
+
it('applies gap-0 for gap="none"', () => {
|
|
78
|
+
const { container } = render(Stack, { gap: 'none' });
|
|
79
|
+
const div = container.querySelector('div');
|
|
80
|
+
expect(div?.classList.contains('gap-0')).toBe(true);
|
|
81
|
+
});
|
|
82
|
+
it('applies gap-2 for gap="sm"', () => {
|
|
83
|
+
const { container } = render(Stack, { gap: 'sm' });
|
|
84
|
+
const div = container.querySelector('div');
|
|
85
|
+
expect(div?.classList.contains('gap-2')).toBe(true);
|
|
86
|
+
});
|
|
87
|
+
it('applies gap-4 for gap="md"', () => {
|
|
88
|
+
const { container } = render(Stack, { gap: 'md' });
|
|
89
|
+
const div = container.querySelector('div');
|
|
90
|
+
expect(div?.classList.contains('gap-4')).toBe(true);
|
|
91
|
+
});
|
|
92
|
+
it('applies gap-6 for gap="lg"', () => {
|
|
93
|
+
const { container } = render(Stack, { gap: 'lg' });
|
|
94
|
+
const div = container.querySelector('div');
|
|
95
|
+
expect(div?.classList.contains('gap-6')).toBe(true);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe('align prop', () => {
|
|
100
|
+
it('applies items-start for align="start"', () => {
|
|
101
|
+
const { container } = render(Stack, { align: 'start' });
|
|
102
|
+
const div = container.querySelector('div');
|
|
103
|
+
expect(div?.classList.contains('items-start')).toBe(true);
|
|
104
|
+
});
|
|
105
|
+
it('applies items-center for align="center"', () => {
|
|
106
|
+
const { container } = render(Stack, { align: 'center' });
|
|
107
|
+
const div = container.querySelector('div');
|
|
108
|
+
expect(div?.classList.contains('items-center')).toBe(true);
|
|
109
|
+
});
|
|
110
|
+
it('applies items-end for align="end"', () => {
|
|
111
|
+
const { container } = render(Stack, { align: 'end' });
|
|
112
|
+
const div = container.querySelector('div');
|
|
113
|
+
expect(div?.classList.contains('items-end')).toBe(true);
|
|
114
|
+
});
|
|
115
|
+
it('applies items-stretch for align="stretch"', () => {
|
|
116
|
+
const { container } = render(Stack, { align: 'stretch' });
|
|
117
|
+
const div = container.querySelector('div');
|
|
118
|
+
expect(div?.classList.contains('items-stretch')).toBe(true);
|
|
119
|
+
});
|
|
120
|
+
it('applies items-baseline for align="baseline"', () => {
|
|
121
|
+
const { container } = render(Stack, { align: 'baseline' });
|
|
122
|
+
const div = container.querySelector('div');
|
|
123
|
+
expect(div?.classList.contains('items-baseline')).toBe(true);
|
|
124
|
+
});
|
|
125
|
+
it('does not apply align class when prop is not provided', () => {
|
|
126
|
+
const { container } = render(Stack);
|
|
127
|
+
const div = container.querySelector('div');
|
|
128
|
+
const hasAlignClass = Array.from(div?.classList || []).some(c => c.startsWith('items-'));
|
|
129
|
+
expect(hasAlignClass).toBe(false);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
describe('justify prop', () => {
|
|
133
|
+
it('applies justify-start for justify="start"', () => {
|
|
134
|
+
const { container } = render(Stack, { justify: 'start' });
|
|
135
|
+
const div = container.querySelector('div');
|
|
136
|
+
expect(div?.classList.contains('justify-start')).toBe(true);
|
|
137
|
+
});
|
|
138
|
+
it('applies justify-center for justify="center"', () => {
|
|
139
|
+
const { container } = render(Stack, { justify: 'center' });
|
|
140
|
+
const div = container.querySelector('div');
|
|
141
|
+
expect(div?.classList.contains('justify-center')).toBe(true);
|
|
142
|
+
});
|
|
143
|
+
it('applies justify-end for justify="end"', () => {
|
|
144
|
+
const { container } = render(Stack, { justify: 'end' });
|
|
145
|
+
const div = container.querySelector('div');
|
|
146
|
+
expect(div?.classList.contains('justify-end')).toBe(true);
|
|
147
|
+
});
|
|
148
|
+
it('applies justify-between for justify="between"', () => {
|
|
149
|
+
const { container } = render(Stack, { justify: 'between' });
|
|
150
|
+
const div = container.querySelector('div');
|
|
151
|
+
expect(div?.classList.contains('justify-between')).toBe(true);
|
|
152
|
+
});
|
|
153
|
+
it('applies justify-around for justify="around"', () => {
|
|
154
|
+
const { container } = render(Stack, { justify: 'around' });
|
|
155
|
+
const div = container.querySelector('div');
|
|
156
|
+
expect(div?.classList.contains('justify-around')).toBe(true);
|
|
157
|
+
});
|
|
158
|
+
it('applies justify-evenly for justify="evenly"', () => {
|
|
159
|
+
const { container } = render(Stack, { justify: 'evenly' });
|
|
160
|
+
const div = container.querySelector('div');
|
|
161
|
+
expect(div?.classList.contains('justify-evenly')).toBe(true);
|
|
162
|
+
});
|
|
163
|
+
it('does not apply justify class when prop is not provided', () => {
|
|
164
|
+
const { container } = render(Stack);
|
|
165
|
+
const div = container.querySelector('div');
|
|
166
|
+
const hasJustifyClass = Array.from(div?.classList || []).some(c => c.startsWith('justify-'));
|
|
167
|
+
expect(hasJustifyClass).toBe(false);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
describe('wrap prop', () => {
|
|
171
|
+
it('does not apply flex-wrap by default', () => {
|
|
172
|
+
const { container } = render(Stack);
|
|
173
|
+
const div = container.querySelector('div');
|
|
174
|
+
expect(div?.classList.contains('flex-wrap')).toBe(false);
|
|
175
|
+
});
|
|
176
|
+
it('applies flex-wrap when wrap=true', () => {
|
|
177
|
+
const { container } = render(Stack, { wrap: true });
|
|
178
|
+
const div = container.querySelector('div');
|
|
179
|
+
expect(div?.classList.contains('flex-wrap')).toBe(true);
|
|
180
|
+
});
|
|
181
|
+
it('does not apply flex-wrap when wrap=false', () => {
|
|
182
|
+
const { container } = render(Stack, { wrap: false });
|
|
183
|
+
const div = container.querySelector('div');
|
|
184
|
+
expect(div?.classList.contains('flex-wrap')).toBe(false);
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
describe('as prop', () => {
|
|
188
|
+
it('renders as div by default', () => {
|
|
189
|
+
const { container } = render(Stack);
|
|
190
|
+
expect(container.querySelector('div')).toBeTruthy();
|
|
191
|
+
expect(container.querySelector('section')).toBeFalsy();
|
|
192
|
+
});
|
|
193
|
+
it('renders as section when as="section"', () => {
|
|
194
|
+
const { container } = render(Stack, { as: 'section' });
|
|
195
|
+
expect(container.querySelector('section')).toBeTruthy();
|
|
196
|
+
expect(container.querySelector('div')).toBeFalsy();
|
|
197
|
+
});
|
|
198
|
+
it('renders as article when as="article"', () => {
|
|
199
|
+
const { container } = render(Stack, { as: 'article' });
|
|
200
|
+
expect(container.querySelector('article')).toBeTruthy();
|
|
201
|
+
});
|
|
202
|
+
it('renders as aside when as="aside"', () => {
|
|
203
|
+
const { container } = render(Stack, { as: 'aside' });
|
|
204
|
+
expect(container.querySelector('aside')).toBeTruthy();
|
|
205
|
+
});
|
|
206
|
+
it('renders as main when as="main"', () => {
|
|
207
|
+
const { container } = render(Stack, { as: 'main' });
|
|
208
|
+
expect(container.querySelector('main')).toBeTruthy();
|
|
209
|
+
});
|
|
210
|
+
it('renders as nav when as="nav"', () => {
|
|
211
|
+
const { container } = render(Stack, { as: 'nav' });
|
|
212
|
+
expect(container.querySelector('nav')).toBeTruthy();
|
|
213
|
+
});
|
|
214
|
+
it('renders as ul when as="ul"', () => {
|
|
215
|
+
const { container } = render(Stack, { as: 'ul' });
|
|
216
|
+
expect(container.querySelector('ul')).toBeTruthy();
|
|
217
|
+
});
|
|
218
|
+
it('renders as ol when as="ol"', () => {
|
|
219
|
+
const { container } = render(Stack, { as: 'ol' });
|
|
220
|
+
expect(container.querySelector('ol')).toBeTruthy();
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
describe('class prop', () => {
|
|
224
|
+
it('applies custom classes', () => {
|
|
225
|
+
const { container } = render(Stack, { class: 'custom-class' });
|
|
226
|
+
const div = container.querySelector('div');
|
|
227
|
+
expect(div?.classList.contains('custom-class')).toBe(true);
|
|
228
|
+
});
|
|
229
|
+
it('preserves default classes when adding custom classes', () => {
|
|
230
|
+
const { container } = render(Stack, { class: 'custom-class' });
|
|
231
|
+
const div = container.querySelector('div');
|
|
232
|
+
expect(div?.classList.contains('flex')).toBe(true);
|
|
233
|
+
expect(div?.classList.contains('flex-col')).toBe(true);
|
|
234
|
+
expect(div?.classList.contains('gap-4')).toBe(true);
|
|
235
|
+
expect(div?.classList.contains('custom-class')).toBe(true);
|
|
236
|
+
});
|
|
237
|
+
it('supports multiple custom classes', () => {
|
|
238
|
+
const { container } = render(Stack, { class: 'class-a class-b class-c' });
|
|
239
|
+
const div = container.querySelector('div');
|
|
240
|
+
expect(div?.classList.contains('class-a')).toBe(true);
|
|
241
|
+
expect(div?.classList.contains('class-b')).toBe(true);
|
|
242
|
+
expect(div?.classList.contains('class-c')).toBe(true);
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
describe('combined props', () => {
|
|
246
|
+
it('applies all props correctly together', () => {
|
|
247
|
+
const { container } = render(Stack, {
|
|
248
|
+
direction: 'horizontal',
|
|
249
|
+
gap: 'section',
|
|
250
|
+
align: 'center',
|
|
251
|
+
justify: 'between',
|
|
252
|
+
wrap: true,
|
|
253
|
+
as: 'nav',
|
|
254
|
+
class: 'my-nav',
|
|
255
|
+
});
|
|
256
|
+
const nav = container.querySelector('nav');
|
|
257
|
+
expect(nav).toBeTruthy();
|
|
258
|
+
expect(nav?.classList.contains('flex')).toBe(true);
|
|
259
|
+
expect(nav?.classList.contains('flex-row')).toBe(true);
|
|
260
|
+
expect(nav?.classList.contains('gap-6')).toBe(true);
|
|
261
|
+
expect(nav?.classList.contains('items-center')).toBe(true);
|
|
262
|
+
expect(nav?.classList.contains('justify-between')).toBe(true);
|
|
263
|
+
expect(nav?.classList.contains('flex-wrap')).toBe(true);
|
|
264
|
+
expect(nav?.classList.contains('my-nav')).toBe(true);
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formOptions.spec.d.ts","sourceRoot":"","sources":["../../src/lib/constants/formOptions.spec.
|
|
1
|
+
{"version":3,"file":"formOptions.spec.d.ts","sourceRoot":"","sources":["../../src/lib/constants/formOptions.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,88 +1,75 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
2
|
import { GENDER_OPTIONS, ETHNICITY_OPTIONS } from './formOptions.js';
|
|
3
|
-
|
|
4
3
|
describe('formOptions', () => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
describe('GENDER_OPTIONS', () => {
|
|
5
|
+
it('exports gender options array', () => {
|
|
6
|
+
expect(GENDER_OPTIONS).toBeDefined();
|
|
7
|
+
expect(Array.isArray(GENDER_OPTIONS)).toBe(true);
|
|
8
|
+
});
|
|
9
|
+
it('has three options', () => {
|
|
10
|
+
expect(GENDER_OPTIONS.length).toBe(3);
|
|
11
|
+
});
|
|
12
|
+
it('contains Male option with value 1', () => {
|
|
13
|
+
const male = GENDER_OPTIONS.find(opt => opt.name === 'Male');
|
|
14
|
+
expect(male).toBeDefined();
|
|
15
|
+
expect(male.value).toBe(1);
|
|
16
|
+
});
|
|
17
|
+
it('contains Female option with value 2', () => {
|
|
18
|
+
const female = GENDER_OPTIONS.find(opt => opt.name === 'Female');
|
|
19
|
+
expect(female).toBeDefined();
|
|
20
|
+
expect(female.value).toBe(2);
|
|
21
|
+
});
|
|
22
|
+
it('contains Non-Binary option with value 3', () => {
|
|
23
|
+
const nonBinary = GENDER_OPTIONS.find(opt => opt.name === 'Non-Binary');
|
|
24
|
+
expect(nonBinary).toBeDefined();
|
|
25
|
+
expect(nonBinary.value).toBe(3);
|
|
26
|
+
});
|
|
27
|
+
it('each option has name and value properties', () => {
|
|
28
|
+
GENDER_OPTIONS.forEach(option => {
|
|
29
|
+
expect(option).toHaveProperty('name');
|
|
30
|
+
expect(option).toHaveProperty('value');
|
|
31
|
+
expect(typeof option.name).toBe('string');
|
|
32
|
+
expect(typeof option.value).toBe('number');
|
|
33
|
+
});
|
|
34
|
+
});
|
|
9
35
|
});
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
36
|
+
describe('ETHNICITY_OPTIONS', () => {
|
|
37
|
+
it('exports ethnicity options array', () => {
|
|
38
|
+
expect(ETHNICITY_OPTIONS).toBeDefined();
|
|
39
|
+
expect(Array.isArray(ETHNICITY_OPTIONS)).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
it('has seven options', () => {
|
|
42
|
+
expect(ETHNICITY_OPTIONS.length).toBe(7);
|
|
43
|
+
});
|
|
44
|
+
it('contains all expected ethnicities', () => {
|
|
45
|
+
const names = ETHNICITY_OPTIONS.map(opt => opt.name);
|
|
46
|
+
expect(names).toContain('American Indian or Alaska Native');
|
|
47
|
+
expect(names).toContain('Asian');
|
|
48
|
+
expect(names).toContain('Black or African American');
|
|
49
|
+
expect(names).toContain('Hispanic or Latino');
|
|
50
|
+
expect(names).toContain('Middle Eastern or North African');
|
|
51
|
+
expect(names).toContain('Native Hawaiian or Pacific Islander');
|
|
52
|
+
expect(names).toContain('White');
|
|
53
|
+
});
|
|
54
|
+
it('has values 0 through 6', () => {
|
|
55
|
+
const values = ETHNICITY_OPTIONS.map(opt => opt.value).sort((a, b) => a - b);
|
|
56
|
+
expect(values).toEqual([0, 1, 2, 3, 4, 5, 6]);
|
|
57
|
+
});
|
|
58
|
+
it('each option has name and value properties', () => {
|
|
59
|
+
ETHNICITY_OPTIONS.forEach(option => {
|
|
60
|
+
expect(option).toHaveProperty('name');
|
|
61
|
+
expect(option).toHaveProperty('value');
|
|
62
|
+
expect(typeof option.name).toBe('string');
|
|
63
|
+
expect(typeof option.value).toBe('number');
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
it('American Indian or Alaska Native has value 0', () => {
|
|
67
|
+
const option = ETHNICITY_OPTIONS.find(opt => opt.name === 'American Indian or Alaska Native');
|
|
68
|
+
expect(option.value).toBe(0);
|
|
69
|
+
});
|
|
70
|
+
it('White has value 6', () => {
|
|
71
|
+
const option = ETHNICITY_OPTIONS.find(opt => opt.name === 'White');
|
|
72
|
+
expect(option.value).toBe(6);
|
|
73
|
+
});
|
|
13
74
|
});
|
|
14
|
-
|
|
15
|
-
it('contains Male option with value 1', () => {
|
|
16
|
-
const male = GENDER_OPTIONS.find(opt => opt.name === 'Male');
|
|
17
|
-
expect(male).toBeDefined();
|
|
18
|
-
expect(male.value).toBe(1);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('contains Female option with value 2', () => {
|
|
22
|
-
const female = GENDER_OPTIONS.find(opt => opt.name === 'Female');
|
|
23
|
-
expect(female).toBeDefined();
|
|
24
|
-
expect(female.value).toBe(2);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('contains Non-Binary option with value 3', () => {
|
|
28
|
-
const nonBinary = GENDER_OPTIONS.find(opt => opt.name === 'Non-Binary');
|
|
29
|
-
expect(nonBinary).toBeDefined();
|
|
30
|
-
expect(nonBinary.value).toBe(3);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('each option has name and value properties', () => {
|
|
34
|
-
GENDER_OPTIONS.forEach(option => {
|
|
35
|
-
expect(option).toHaveProperty('name');
|
|
36
|
-
expect(option).toHaveProperty('value');
|
|
37
|
-
expect(typeof option.name).toBe('string');
|
|
38
|
-
expect(typeof option.value).toBe('number');
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
describe('ETHNICITY_OPTIONS', () => {
|
|
44
|
-
it('exports ethnicity options array', () => {
|
|
45
|
-
expect(ETHNICITY_OPTIONS).toBeDefined();
|
|
46
|
-
expect(Array.isArray(ETHNICITY_OPTIONS)).toBe(true);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it('has seven options', () => {
|
|
50
|
-
expect(ETHNICITY_OPTIONS.length).toBe(7);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it('contains all expected ethnicities', () => {
|
|
54
|
-
const names = ETHNICITY_OPTIONS.map(opt => opt.name);
|
|
55
|
-
expect(names).toContain('American Indian or Alaska Native');
|
|
56
|
-
expect(names).toContain('Asian');
|
|
57
|
-
expect(names).toContain('Black or African American');
|
|
58
|
-
expect(names).toContain('Hispanic or Latino');
|
|
59
|
-
expect(names).toContain('Middle Eastern or North African');
|
|
60
|
-
expect(names).toContain('Native Hawaiian or Pacific Islander');
|
|
61
|
-
expect(names).toContain('White');
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it('has values 0 through 6', () => {
|
|
65
|
-
const values = ETHNICITY_OPTIONS.map(opt => opt.value).sort((a, b) => a - b);
|
|
66
|
-
expect(values).toEqual([0, 1, 2, 3, 4, 5, 6]);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
it('each option has name and value properties', () => {
|
|
70
|
-
ETHNICITY_OPTIONS.forEach(option => {
|
|
71
|
-
expect(option).toHaveProperty('name');
|
|
72
|
-
expect(option).toHaveProperty('value');
|
|
73
|
-
expect(typeof option.name).toBe('string');
|
|
74
|
-
expect(typeof option.value).toBe('number');
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
it('American Indian or Alaska Native has value 0', () => {
|
|
79
|
-
const option = ETHNICITY_OPTIONS.find(opt => opt.name === 'American Indian or Alaska Native');
|
|
80
|
-
expect(option.value).toBe(0);
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it('White has value 6', () => {
|
|
84
|
-
const option = ETHNICITY_OPTIONS.find(opt => opt.name === 'White');
|
|
85
|
-
expect(option.value).toBe(6);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
75
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
-
import { formatDateRange, formatDayOfWeek, formatEventDate, formatEventDateTime, formatEventTime, formatMonth, formatNotificationTime, formatRelativeTime, formatTimeRange, getDateInTimezone, getDateParts, getHourInTimezone, } from '../format';
|
|
2
|
+
import { formatCleanTimeRange, formatDateRange, formatDayOfWeek, formatEventDate, formatEventDateTime, formatEventTime, formatHour, formatMonth, formatNotificationTime, formatRelativeTime, formatTimeRange, getDateInTimezone, getDateParts, getHourInTimezone, isToday, } from '../format';
|
|
3
3
|
import { DateTimeError, DateTimeErrorCode } from '../types';
|
|
4
4
|
describe('format utilities', () => {
|
|
5
5
|
describe('formatEventTime', () => {
|
|
@@ -265,4 +265,84 @@ describe('format utilities', () => {
|
|
|
265
265
|
expect(getDateInTimezone(utc, 'America/Los_Angeles')).toBe('2023-12-24');
|
|
266
266
|
});
|
|
267
267
|
});
|
|
268
|
+
describe('formatHour', () => {
|
|
269
|
+
it('formats morning hours correctly', () => {
|
|
270
|
+
expect(formatHour(8)).toBe('8 AM');
|
|
271
|
+
expect(formatHour(11)).toBe('11 AM');
|
|
272
|
+
});
|
|
273
|
+
it('formats afternoon hours correctly', () => {
|
|
274
|
+
expect(formatHour(13)).toBe('1 PM');
|
|
275
|
+
expect(formatHour(20)).toBe('8 PM');
|
|
276
|
+
expect(formatHour(23)).toBe('11 PM');
|
|
277
|
+
});
|
|
278
|
+
it('formats midnight correctly', () => {
|
|
279
|
+
expect(formatHour(0)).toBe('12 AM');
|
|
280
|
+
});
|
|
281
|
+
it('formats noon correctly', () => {
|
|
282
|
+
expect(formatHour(12)).toBe('12 PM');
|
|
283
|
+
});
|
|
284
|
+
it('handles edge case of 24', () => {
|
|
285
|
+
// 24 % 12 = 0, and 24 >= 12, so it shows 12 PM
|
|
286
|
+
// This is technically valid behavior - callers should normalize to 0-23
|
|
287
|
+
expect(formatHour(24)).toBe('12 PM');
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
describe('isToday', () => {
|
|
291
|
+
beforeEach(() => {
|
|
292
|
+
vi.useFakeTimers();
|
|
293
|
+
vi.setSystemTime(new Date('2023-12-25T12:00:00Z'));
|
|
294
|
+
});
|
|
295
|
+
afterEach(() => {
|
|
296
|
+
vi.useRealTimers();
|
|
297
|
+
});
|
|
298
|
+
it('returns true for today in the specified timezone', () => {
|
|
299
|
+
// Current time is Dec 25, 12:00 UTC = Dec 25, 4:00 AM in LA
|
|
300
|
+
const todayInLA = '2023-12-25T20:00:00Z'; // Dec 25, 12:00 PM in LA
|
|
301
|
+
expect(isToday(todayInLA, 'America/Los_Angeles')).toBe(true);
|
|
302
|
+
});
|
|
303
|
+
it('returns false for yesterday', () => {
|
|
304
|
+
const yesterday = '2023-12-24T12:00:00Z';
|
|
305
|
+
expect(isToday(yesterday, 'America/Los_Angeles')).toBe(false);
|
|
306
|
+
});
|
|
307
|
+
it('returns false for tomorrow', () => {
|
|
308
|
+
const tomorrow = '2023-12-26T12:00:00Z';
|
|
309
|
+
expect(isToday(tomorrow, 'America/Los_Angeles')).toBe(false);
|
|
310
|
+
});
|
|
311
|
+
it('handles timezone boundary correctly', () => {
|
|
312
|
+
// 3 AM UTC on Dec 25 = 7 PM Dec 24 in LA
|
|
313
|
+
// Current "now" is Dec 25, 12:00 UTC = Dec 25, 4:00 AM in LA
|
|
314
|
+
const utc = '2023-12-25T03:00:00Z';
|
|
315
|
+
expect(isToday(utc, 'America/Los_Angeles')).toBe(false); // It's Dec 24 in LA
|
|
316
|
+
});
|
|
317
|
+
it('throws on invalid timezone', () => {
|
|
318
|
+
expect(() => isToday('2023-12-25T12:00:00Z', 'Invalid/Zone')).toThrow();
|
|
319
|
+
});
|
|
320
|
+
});
|
|
321
|
+
describe('formatCleanTimeRange', () => {
|
|
322
|
+
it('omits minutes when times are on the hour', () => {
|
|
323
|
+
// 3 AM UTC = 7 PM in LA, 6 AM UTC = 10 PM in LA
|
|
324
|
+
const start = '2023-12-25T03:00:00Z';
|
|
325
|
+
const end = '2023-12-25T06:00:00Z';
|
|
326
|
+
expect(formatCleanTimeRange(start, end, 'America/Los_Angeles')).toBe('7 PM - 10 PM');
|
|
327
|
+
});
|
|
328
|
+
it('includes minutes when not on the hour', () => {
|
|
329
|
+
const start = '2023-12-25T03:30:00Z';
|
|
330
|
+
const end = '2023-12-25T06:00:00Z';
|
|
331
|
+
expect(formatCleanTimeRange(start, end, 'America/Los_Angeles')).toBe('7:30 PM - 10 PM');
|
|
332
|
+
});
|
|
333
|
+
it('handles both times with minutes', () => {
|
|
334
|
+
const start = '2023-12-25T03:15:00Z';
|
|
335
|
+
const end = '2023-12-25T06:45:00Z';
|
|
336
|
+
expect(formatCleanTimeRange(start, end, 'America/Los_Angeles')).toBe('7:15 PM - 10:45 PM');
|
|
337
|
+
});
|
|
338
|
+
it('handles midnight correctly', () => {
|
|
339
|
+
// 8 AM UTC = midnight in LA
|
|
340
|
+
const start = '2023-12-25T08:00:00Z';
|
|
341
|
+
const end = '2023-12-25T10:00:00Z';
|
|
342
|
+
expect(formatCleanTimeRange(start, end, 'America/Los_Angeles')).toBe('12 AM - 2 AM');
|
|
343
|
+
});
|
|
344
|
+
it('throws on invalid inputs', () => {
|
|
345
|
+
expect(() => formatCleanTimeRange('invalid', '2023-12-25T06:00:00Z', 'America/Los_Angeles')).toThrow();
|
|
346
|
+
});
|
|
347
|
+
});
|
|
268
348
|
});
|
|
@@ -155,4 +155,78 @@ export declare function getHourInTimezone(utcIso: ISODateString, timezone: Timez
|
|
|
155
155
|
* @returns Date string in YYYY-MM-DD format
|
|
156
156
|
*/
|
|
157
157
|
export declare function getDateInTimezone(utcIso: ISODateString, timezone: TimezoneId): string;
|
|
158
|
+
/**
|
|
159
|
+
* Formats an hour number (0-23) to a display string with AM/PM.
|
|
160
|
+
* This is a simple utility that doesn't require timezone since it works
|
|
161
|
+
* with a raw hour number, not a datetime.
|
|
162
|
+
*
|
|
163
|
+
* @param hour - Hour number (0-23)
|
|
164
|
+
* @returns Formatted hour string (e.g., "8 PM", "12 AM")
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* formatHour(8) // "8 AM"
|
|
168
|
+
* formatHour(20) // "8 PM"
|
|
169
|
+
* formatHour(0) // "12 AM"
|
|
170
|
+
* formatHour(12) // "12 PM"
|
|
171
|
+
*/
|
|
172
|
+
export declare function formatHour(hour: number): string;
|
|
173
|
+
/**
|
|
174
|
+
* Checks if a UTC datetime represents today in the specified timezone.
|
|
175
|
+
*
|
|
176
|
+
* @param utcIso - UTC ISO datetime string
|
|
177
|
+
* @param timezone - IANA timezone ID
|
|
178
|
+
* @returns True if the date is today in the given timezone
|
|
179
|
+
* @throws {DateTimeError} If timezone or ISO string is invalid
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* isToday('2025-01-04T19:00:00Z', 'America/Los_Angeles')
|
|
183
|
+
* // true (if today is Jan 4, 2025 in LA)
|
|
184
|
+
*/
|
|
185
|
+
export declare function isToday(utcIso: ISODateString, timezone: TimezoneId): boolean;
|
|
186
|
+
/**
|
|
187
|
+
* Formats a date for simple display (e.g., lists, dropdowns).
|
|
188
|
+
* Format: "Jan 15, 2024"
|
|
189
|
+
*
|
|
190
|
+
* This is a convenience function that defaults to UTC when no timezone is provided.
|
|
191
|
+
* For timezone-aware formatting, use formatEventDate instead.
|
|
192
|
+
*
|
|
193
|
+
* @param utcIso - UTC ISO datetime string
|
|
194
|
+
* @param timezone - Optional IANA timezone ID (defaults to 'UTC')
|
|
195
|
+
* @returns Formatted date string (e.g., "Jan 15, 2024")
|
|
196
|
+
* @throws {DateTimeError} If ISO string is invalid
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* formatShortDate('2024-01-15T20:30:00Z')
|
|
200
|
+
* // "Jan 15, 2024" (in UTC)
|
|
201
|
+
*
|
|
202
|
+
* formatShortDate('2024-01-15T20:30:00Z', 'America/Los_Angeles')
|
|
203
|
+
* // "Jan 15, 2024" (in LA timezone)
|
|
204
|
+
*/
|
|
205
|
+
export declare function formatShortDate(utcIso: ISODateString, timezone?: TimezoneId): string;
|
|
206
|
+
/**
|
|
207
|
+
* Formats a time range with clean formatting (omits :00 minutes).
|
|
208
|
+
* More compact display for times on the hour.
|
|
209
|
+
*
|
|
210
|
+
* @param startUtc - Start time as UTC ISO string
|
|
211
|
+
* @param endUtc - End time as UTC ISO string
|
|
212
|
+
* @param timezone - IANA timezone ID
|
|
213
|
+
* @returns Formatted time range (e.g., "8 PM - 11 PM" or "8:30 PM - 11 PM")
|
|
214
|
+
* @throws {DateTimeError} If timezone or ISO strings are invalid
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* formatCleanTimeRange(
|
|
218
|
+
* '2023-12-25T03:00:00Z',
|
|
219
|
+
* '2023-12-25T06:00:00Z',
|
|
220
|
+
* 'America/Los_Angeles'
|
|
221
|
+
* )
|
|
222
|
+
* // "7 PM - 10 PM" (times are on the hour, so no :00)
|
|
223
|
+
*
|
|
224
|
+
* formatCleanTimeRange(
|
|
225
|
+
* '2023-12-25T03:30:00Z',
|
|
226
|
+
* '2023-12-25T06:00:00Z',
|
|
227
|
+
* 'America/Los_Angeles'
|
|
228
|
+
* )
|
|
229
|
+
* // "7:30 PM - 10 PM"
|
|
230
|
+
*/
|
|
231
|
+
export declare function formatCleanTimeRange(startUtc: ISODateString, endUtc: ISODateString, timezone: TimezoneId): string;
|
|
158
232
|
//# sourceMappingURL=format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/datetime/format.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,UAAU,EACX,MAAM,SAAS,CAAC;AA4CjB;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAMR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAOR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAiBR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CAIR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CA4BR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CAoDR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,SAAS,CASX;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CAkBR;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,EACpB,KAAK,GAAE,OAAc,GACpB,MAAM,CAMR;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,EACpB,KAAK,GAAE,OAAc,GACpB,MAAM,CAMR;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CAGR"}
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/datetime/format.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,UAAU,EACX,MAAM,SAAS,CAAC;AA4CjB;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAMR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAOR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAiBR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CAIR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CA4BR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CAoDR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,SAAS,CASX;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CAkBR;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,EACpB,KAAK,GAAE,OAAc,GACpB,MAAM,CAMR;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,EACpB,KAAK,GAAE,OAAc,GACpB,MAAM,CAMR;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CAGR;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,OAAO,CAST;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,QAAQ,GAAE,UAAkB,GAC3B,MAAM,CAGR;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,UAAU,GACnB,MAAM,CAgBR"}
|