@getmicdrop/svelte-components 5.18.0 → 5.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/calendar/AboutShow/AboutShow.svelte +191 -187
- package/dist/calendar/AboutShow/AboutShow.svelte.d.ts +2 -2
- package/dist/calendar/AboutShow/AboutShow.svelte.d.ts.map +1 -1
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte +801 -780
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte.d.ts +4 -0
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte.d.ts.map +1 -1
- package/dist/calendar/FAQs/FAQs.svelte +88 -77
- package/dist/calendar/FAQs/FAQs.svelte.d.ts +6 -4
- package/dist/calendar/FAQs/FAQs.svelte.d.ts.map +1 -1
- package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +140 -125
- package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte.d.ts +2 -0
- package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte.d.ts.map +1 -1
- package/dist/calendar/OrderSummary/OrderSummary.spec.js +3 -3
- package/dist/calendar/OrderSummary/OrderSummary.svelte +461 -457
- package/dist/calendar/OrderSummary/OrderSummary.svelte.d.ts +4 -2
- package/dist/calendar/OrderSummary/OrderSummary.svelte.d.ts.map +1 -1
- package/dist/calendar/PublicCard/PublicCard.svelte +164 -155
- package/dist/calendar/PublicCard/PublicCard.svelte.d.ts +4 -0
- package/dist/calendar/PublicCard/PublicCard.svelte.d.ts.map +1 -1
- package/dist/calendar/ShowCard/ShowCard.svelte +180 -166
- package/dist/calendar/ShowCard/ShowCard.svelte.d.ts +4 -0
- package/dist/calendar/ShowCard/ShowCard.svelte.d.ts.map +1 -1
- package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +80 -72
- package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte.d.ts +4 -0
- package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte.d.ts.map +1 -1
- package/dist/calendar/index.js +15 -15
- package/dist/components/Heading.spec.js +89 -89
- package/dist/components/Heading.svelte +60 -60
- package/dist/components/Layout/AppShell.svelte +104 -104
- package/dist/components/Layout/ContentSection.svelte +80 -80
- package/dist/components/Layout/Grid.svelte +101 -101
- package/dist/components/Layout/Heading.svelte +81 -81
- package/dist/components/Layout/PageContainer.svelte +69 -69
- package/dist/components/Layout/Responsive.svelte +75 -75
- package/dist/components/Layout/Section.svelte +80 -80
- package/dist/components/Layout/ShowOnDesktop.svelte +37 -37
- package/dist/components/Layout/ShowOnMobile.svelte +37 -37
- package/dist/components/Layout/Sidebar.svelte +108 -108
- package/dist/components/Layout/Stack.spec.js +1 -1
- package/dist/components/Layout/Stack.svelte +52 -52
- package/dist/components/Layout/Text.svelte +87 -87
- package/dist/components/Layout/TwoColumn.svelte +108 -108
- package/dist/components/Text.spec.js +89 -89
- package/dist/components/Text.svelte +53 -53
- package/dist/config.js +151 -151
- package/dist/config.spec.js +29 -29
- package/dist/constants/formOptions.js +48 -48
- package/dist/constants/validation.js +91 -91
- package/dist/constants/validation.spec.js +64 -64
- package/dist/datetime/README.md +323 -323
- package/dist/datetime/__tests__/format.test.js +1 -1
- package/dist/datetime/__tests__/parse.test.js +1 -1
- package/dist/datetime/__tests__/timezone.test.js +1 -1
- package/dist/datetime/parse.js +1 -1
- package/dist/forms/createFormStore.svelte.js +1 -0
- package/dist/forms/createFormStore.svelte.spec.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +66 -57
- package/dist/index.spec.js +369 -369
- package/dist/patterns/chat/ChatActivityNotice.spec.js +59 -59
- package/dist/patterns/chat/ChatActivityNotice.svelte +41 -41
- package/dist/patterns/chat/ChatBubble.spec.js +91 -91
- package/dist/patterns/chat/ChatBubble.svelte +103 -95
- package/dist/patterns/chat/ChatBubble.svelte.d.ts +6 -4
- package/dist/patterns/chat/ChatBubble.svelte.d.ts.map +1 -1
- package/dist/patterns/chat/ChatContainer.spec.js +30 -30
- package/dist/patterns/chat/ChatContainer.svelte +46 -46
- package/dist/patterns/chat/ChatDateDivider.spec.js +30 -30
- package/dist/patterns/chat/ChatDateDivider.svelte +27 -27
- package/dist/patterns/chat/ChatInvitationBubble.spec.js +46 -46
- package/dist/patterns/chat/ChatInvitationBubble.svelte +46 -37
- package/dist/patterns/chat/ChatInvitationBubble.svelte.d.ts +6 -3
- package/dist/patterns/chat/ChatInvitationBubble.svelte.d.ts.map +1 -1
- package/dist/patterns/chat/ChatInvitationNotice.spec.js +32 -32
- package/dist/patterns/chat/ChatInvitationNotice.svelte +36 -27
- package/dist/patterns/chat/ChatInvitationNotice.svelte.d.ts +6 -3
- package/dist/patterns/chat/ChatInvitationNotice.svelte.d.ts.map +1 -1
- package/dist/patterns/chat/ChatMessageGroup.spec.js +58 -58
- package/dist/patterns/chat/ChatMessageGroup.svelte +57 -57
- package/dist/patterns/chat/ChatSlotUpdate.spec.js +65 -65
- package/dist/patterns/chat/ChatSlotUpdate.svelte +46 -46
- package/dist/patterns/chat/ChatStatusBadge.spec.js +79 -79
- package/dist/patterns/chat/ChatStatusBadge.svelte +91 -91
- package/dist/patterns/chat/ChatStatusTransition.spec.js +81 -81
- package/dist/patterns/chat/ChatStatusTransition.svelte +64 -64
- package/dist/patterns/chat/ChatTextBubble.spec.js +35 -35
- package/dist/patterns/chat/ChatTextBubble.svelte +41 -41
- package/dist/patterns/chat/index.js +22 -22
- package/dist/patterns/data/DataGrid.svelte +45 -45
- package/dist/patterns/data/DataList.svelte +24 -24
- package/dist/patterns/data/DataTable.svelte +45 -45
- package/dist/patterns/data/index.js +4 -4
- package/dist/patterns/forms/FormActions.spec.js +95 -95
- package/dist/patterns/forms/FormActions.stories.svelte +97 -97
- package/dist/patterns/forms/FormActions.svelte +46 -46
- package/dist/patterns/forms/FormGrid.svelte +33 -33
- package/dist/patterns/forms/FormSection.svelte +32 -32
- package/dist/patterns/forms/FormValidationSummary.stories.svelte +97 -97
- package/dist/patterns/forms/FormValidationSummary.svelte +82 -74
- package/dist/patterns/forms/FormValidationSummary.svelte.d.ts +5 -3
- package/dist/patterns/forms/FormValidationSummary.svelte.d.ts.map +1 -1
- package/dist/patterns/forms/index.js +5 -5
- package/dist/patterns/index.js +21 -21
- package/dist/patterns/layout/Sidebar.svelte +39 -39
- package/dist/patterns/layout/SidebarTestWrapper.svelte +34 -34
- package/dist/patterns/layout/SidebarTestWrapper.svelte.d.ts +1 -1
- package/dist/patterns/layout/Stack.svelte +61 -61
- package/dist/patterns/layout/index.js +29 -29
- package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
- package/dist/patterns/navigation/BottomNav.svelte +82 -74
- package/dist/patterns/navigation/BottomNav.svelte.d.ts +10 -9
- package/dist/patterns/navigation/BottomNav.svelte.d.ts.map +1 -1
- package/dist/patterns/navigation/Header.stories.svelte +77 -77
- package/dist/patterns/navigation/Header.svelte +263 -251
- package/dist/patterns/navigation/Header.svelte.d.ts +17 -9
- package/dist/patterns/navigation/Header.svelte.d.ts.map +1 -1
- package/dist/patterns/navigation/index.js +3 -3
- package/dist/patterns/page/PageHeader.svelte +49 -49
- package/dist/patterns/page/PageLayout.svelte +40 -40
- package/dist/patterns/page/PageLoader.spec.js +57 -57
- package/dist/patterns/page/PageLoader.stories.svelte +137 -137
- package/dist/patterns/page/PageLoader.svelte +62 -53
- package/dist/patterns/page/PageLoader.svelte.d.ts +6 -3
- package/dist/patterns/page/PageLoader.svelte.d.ts.map +1 -1
- package/dist/patterns/page/SectionHeader.svelte +51 -51
- package/dist/patterns/page/index.js +5 -5
- package/dist/presets/badges.js +112 -112
- package/dist/presets/buttons.js +76 -76
- package/dist/presets/index.js +9 -9
- package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
- package/dist/primitives/Accordion/Accordion.svelte +62 -62
- package/dist/primitives/Accordion/AccordionItem.svelte +103 -95
- package/dist/primitives/Accordion/AccordionItem.svelte.d.ts +6 -4
- package/dist/primitives/Accordion/AccordionItem.svelte.d.ts.map +1 -1
- package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte +107 -107
- package/dist/primitives/Accordion/AccordionToggleWrapper.test.svelte +28 -28
- package/dist/primitives/Alert/Alert.spec.js +173 -173
- package/dist/primitives/Alert/Alert.stories.svelte +88 -88
- package/dist/primitives/Alert/Alert.svelte +72 -64
- package/dist/primitives/Alert/Alert.svelte.d.ts +6 -4
- package/dist/primitives/Alert/Alert.svelte.d.ts.map +1 -1
- package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
- package/dist/primitives/Avatar/Avatar.svelte +66 -66
- package/dist/primitives/AvatarButton/AvatarButton.svelte +57 -57
- package/dist/primitives/Badges/Badge.spec.js +144 -144
- package/dist/primitives/Badges/Badge.stories.svelte +86 -86
- package/dist/primitives/Badges/Badge.svelte +99 -99
- package/dist/primitives/BottomSheet/BottomSheet.spec.js +238 -238
- package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
- package/dist/primitives/BottomSheet/BottomSheet.svelte +115 -115
- package/dist/primitives/BottomSheet/BottomSheetWithActions.test.svelte +20 -20
- package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +123 -123
- package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
- package/dist/primitives/Breadcrumb/Breadcrumb.svelte +107 -99
- package/dist/primitives/Breadcrumb/Breadcrumb.svelte.d.ts +13 -9
- package/dist/primitives/Breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
- package/dist/primitives/Button/Button.spec.js +225 -225
- package/dist/primitives/Button/Button.stories.svelte +76 -76
- package/dist/primitives/Button/Button.svelte +278 -278
- package/dist/primitives/Button/ButtonGroup.spec.js +44 -44
- package/dist/primitives/Button/ButtonGroup.svelte +50 -50
- package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -146
- package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
- package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
- package/dist/primitives/Card.spec.js +49 -49
- package/dist/primitives/Card.stories.svelte +22 -22
- package/dist/primitives/Card.svelte +28 -28
- package/dist/primitives/CardAction/CardAction.svelte +68 -68
- package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
- package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
- package/dist/primitives/DarkModeToggle.spec.js +390 -390
- package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
- package/dist/primitives/DarkModeToggle.svelte +147 -136
- package/dist/primitives/DarkModeToggle.svelte.d.ts +9 -3
- package/dist/primitives/DarkModeToggle.svelte.d.ts.map +1 -1
- package/dist/primitives/Drawer/Drawer.stories.svelte +100 -100
- package/dist/primitives/Drawer/Drawer.svelte +224 -224
- package/dist/primitives/Drawer/DrawerTestWrapper.svelte +86 -86
- package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
- package/dist/primitives/Dropdown/Dropdown.svelte +179 -170
- package/dist/primitives/Dropdown/Dropdown.svelte.d.ts +7 -4
- package/dist/primitives/Dropdown/Dropdown.svelte.d.ts.map +1 -1
- package/dist/primitives/Dropdown/DropdownDivider.spec.js +30 -30
- package/dist/primitives/Dropdown/DropdownDivider.svelte +9 -9
- package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
- package/dist/primitives/Dropdown/DropdownItemTestWrapper.svelte +43 -43
- package/dist/primitives/Helper/Helper.spec.js +57 -57
- package/dist/primitives/Helper/Helper.svelte +33 -33
- package/dist/primitives/Icons/ArrowLeft.svelte +21 -21
- package/dist/primitives/Icons/ArrowRight.svelte +21 -21
- package/dist/primitives/Icons/Availability.svelte +27 -27
- package/dist/primitives/Icons/Back.svelte +27 -27
- package/dist/primitives/Icons/CheckCircle.svelte +19 -19
- package/dist/primitives/Icons/CheckCircleOutline.svelte +28 -28
- package/dist/primitives/Icons/ChevronLeft.svelte +17 -17
- package/dist/primitives/Icons/ChevronRight.svelte +17 -17
- package/dist/primitives/Icons/Copy.svelte +28 -28
- package/dist/primitives/Icons/Cross.svelte +18 -18
- package/dist/primitives/Icons/DownArrow.svelte +21 -21
- package/dist/primitives/Icons/ErrorCircle.svelte +19 -19
- package/dist/primitives/Icons/FacebookIcon.svelte +15 -15
- package/dist/primitives/Icons/Home.svelte +28 -28
- package/dist/primitives/Icons/Icon.spec.js +175 -175
- package/dist/primitives/Icons/Icon.stories.svelte +100 -100
- package/dist/primitives/Icons/Icon.svelte +79 -79
- package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
- package/dist/primitives/Icons/ImageOutline.svelte +21 -21
- package/dist/primitives/Icons/Info.svelte +20 -20
- package/dist/primitives/Icons/InstagramIcon.svelte +21 -21
- package/dist/primitives/Icons/LogoInstagram.svelte +15 -15
- package/dist/primitives/Icons/Message.svelte +28 -28
- package/dist/primitives/Icons/MoonIcon.svelte +18 -18
- package/dist/primitives/Icons/More.svelte +34 -34
- package/dist/primitives/Icons/MoreHori.spec.js +67 -67
- package/dist/primitives/Icons/MoreHori.svelte +35 -35
- package/dist/primitives/Icons/Notification.svelte +27 -27
- package/dist/primitives/Icons/Payment.svelte +27 -27
- package/dist/primitives/Icons/Profile.svelte +34 -34
- package/dist/primitives/Icons/Reload.svelte +42 -42
- package/dist/primitives/Icons/Shows.svelte +34 -34
- package/dist/primitives/Icons/Signout.svelte +34 -34
- package/dist/primitives/Icons/SunIcon.svelte +21 -21
- package/dist/primitives/Icons/TiktokIcon.svelte +15 -15
- package/dist/primitives/Icons/TrashBinOutline.svelte +21 -21
- package/dist/primitives/Icons/TwitterIcon.svelte +15 -15
- package/dist/primitives/Icons/WarningIcon.spec.js +30 -30
- package/dist/primitives/Icons/WarningIcon.svelte +24 -24
- package/dist/primitives/Input/Input.spec.js +1237 -1237
- package/dist/primitives/Input/Input.stories.svelte +139 -139
- package/dist/primitives/Input/Input.svelte +444 -431
- package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
- package/dist/primitives/Input/Select.spec.js +632 -632
- package/dist/primitives/Input/Select.stories.svelte +112 -112
- package/dist/primitives/Input/Select.svelte +252 -252
- package/dist/primitives/Input/Textarea.stories.svelte +137 -137
- package/dist/primitives/Input/Textarea.svelte +105 -105
- package/dist/primitives/Label/Label.svelte +37 -37
- package/dist/primitives/LandingButton/LandingButton.spec.js +61 -61
- package/dist/primitives/LandingButton/LandingButton.svelte +92 -92
- package/dist/primitives/MenuItem/MenuItem.spec.js +130 -130
- package/dist/primitives/MenuItem/MenuItem.svelte +85 -85
- package/dist/primitives/Modal/Modal.spec.js +314 -314
- package/dist/primitives/Modal/Modal.stories.svelte +86 -86
- package/dist/primitives/Modal/Modal.svelte +181 -181
- package/dist/primitives/NavItem/NavItem.spec.js +97 -97
- package/dist/primitives/NavItem/NavItem.svelte +75 -75
- package/dist/primitives/NumberInput/NumberInput.svelte +113 -105
- package/dist/primitives/NumberInput/NumberInput.svelte.d.ts.map +1 -1
- package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
- package/dist/primitives/Pagination/Pagination.svelte +275 -261
- package/dist/primitives/Pagination/Pagination.svelte.d.ts +14 -6
- package/dist/primitives/Pagination/Pagination.svelte.d.ts.map +1 -1
- package/dist/primitives/Radio/Radio.stories.svelte +80 -80
- package/dist/primitives/Radio/Radio.svelte +67 -67
- package/dist/primitives/SearchResultItem/SearchResultItem.spec.js +78 -78
- package/dist/primitives/SearchResultItem/SearchResultItem.svelte +109 -109
- package/dist/primitives/SidebarToggle/SidebarToggle.spec.js +61 -61
- package/dist/primitives/SidebarToggle/SidebarToggle.svelte +55 -55
- package/dist/primitives/Skeleton/CardPlaceholder.svelte +96 -87
- package/dist/primitives/Skeleton/CardPlaceholder.svelte.d.ts +8 -5
- package/dist/primitives/Skeleton/CardPlaceholder.svelte.d.ts.map +1 -1
- package/dist/primitives/Skeleton/ImagePlaceholder.svelte +68 -59
- package/dist/primitives/Skeleton/ImagePlaceholder.svelte.d.ts +8 -5
- package/dist/primitives/Skeleton/ImagePlaceholder.svelte.d.ts.map +1 -1
- package/dist/primitives/Skeleton/ListPlaceholder.svelte +85 -76
- package/dist/primitives/Skeleton/ListPlaceholder.svelte.d.ts +8 -5
- package/dist/primitives/Skeleton/ListPlaceholder.svelte.d.ts.map +1 -1
- package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
- package/dist/primitives/Skeleton/Skeleton.svelte +55 -46
- package/dist/primitives/Skeleton/Skeleton.svelte.d.ts +7 -4
- package/dist/primitives/Skeleton/Skeleton.svelte.d.ts.map +1 -1
- package/dist/primitives/Spinner/Spinner.spec.js +84 -84
- package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
- package/dist/primitives/Spinner/Spinner.svelte +52 -44
- package/dist/primitives/Spinner/Spinner.svelte.d.ts +6 -4
- package/dist/primitives/Spinner/Spinner.svelte.d.ts.map +1 -1
- package/dist/primitives/Tabs/TabItem.svelte +52 -52
- package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
- package/dist/primitives/Tabs/Tabs.svelte +137 -137
- package/dist/primitives/Toggle.spec.js +221 -221
- package/dist/primitives/Toggle.stories.svelte +92 -92
- package/dist/primitives/Toggle.svelte +141 -141
- package/dist/primitives/ToggleTestWrapper.svelte +30 -30
- package/dist/primitives/Tooltip/Tooltip.spec.js +126 -126
- package/dist/primitives/Tooltip/Tooltip.svelte +83 -83
- package/dist/primitives/Typography/Typography.svelte +53 -53
- package/dist/primitives/ValidationError.spec.js +103 -103
- package/dist/primitives/ValidationError.stories.svelte +112 -112
- package/dist/primitives/ValidationError.svelte +29 -29
- package/dist/primitives/index.js +113 -113
- package/dist/recipes/CropImage/CropImage.spec.js +208 -208
- package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
- package/dist/recipes/CropImage/CropImage.svelte +241 -241
- package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
- package/dist/recipes/ImageUploader/ImageUploader.svelte +994 -992
- package/dist/recipes/ImageUploader/ImageUploader.svelte.d.ts +1 -0
- package/dist/recipes/ImageUploader/ImageUploader.svelte.d.ts.map +1 -1
- package/dist/recipes/SuperLogin/SuperLogin.svelte +25 -23
- package/dist/recipes/SuperLogin/SuperLogin.svelte.d.ts.map +1 -1
- package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte +75 -66
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte.d.ts +7 -4
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte.d.ts.map +1 -1
- package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
- package/dist/recipes/feedback/ErrorDisplay.stories.svelte +113 -113
- package/dist/recipes/feedback/ErrorDisplay.svelte +67 -67
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -133
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +176 -176
- package/dist/recipes/feedback/index.js +4 -4
- package/dist/recipes/fields/CheckboxField.svelte +85 -85
- package/dist/recipes/fields/FormField.svelte +58 -58
- package/dist/recipes/fields/RadioGroup.svelte +95 -95
- package/dist/recipes/fields/SelectField.svelte +82 -82
- package/dist/recipes/fields/TextareaField.svelte +101 -101
- package/dist/recipes/fields/ToggleField.svelte +60 -60
- package/dist/recipes/fields/index.js +7 -7
- package/dist/recipes/index.js +24 -24
- package/dist/recipes/inputs/MultiSelect.spec.js +263 -263
- package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
- package/dist/recipes/inputs/MultiSelect.svelte +291 -283
- package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/OTPInput.spec.js +251 -251
- package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
- package/dist/recipes/inputs/OTPInput.svelte +128 -117
- package/dist/recipes/inputs/OTPInput.svelte.d.ts +14 -12
- package/dist/recipes/inputs/OTPInput.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/PasswordInput.svelte +130 -121
- package/dist/recipes/inputs/PasswordInput.svelte.d.ts +7 -4
- package/dist/recipes/inputs/PasswordInput.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +142 -131
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts +8 -3
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/PhoneInput.svelte +254 -258
- package/dist/recipes/inputs/PhoneInput.svelte.d.ts +0 -2
- package/dist/recipes/inputs/PhoneInput.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +170 -170
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +349 -336
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts +21 -16
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/Search.svelte +110 -102
- package/dist/recipes/inputs/Search.svelte.d.ts +7 -5
- package/dist/recipes/inputs/Search.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/index.js +8 -8
- package/dist/recipes/inputs/phoneInput/CountrySelector.svelte +240 -297
- package/dist/recipes/inputs/phoneInput/CountrySelector.svelte.d.ts +0 -2
- package/dist/recipes/inputs/phoneInput/CountrySelector.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/phoneInput/countryData.d.ts +0 -2
- package/dist/recipes/inputs/phoneInput/countryData.d.ts.map +1 -1
- package/dist/recipes/inputs/phoneInput/countryData.js +3 -3
- package/dist/recipes/modals/AlertModal.svelte +139 -130
- package/dist/recipes/modals/AlertModal.svelte.d.ts +4 -2
- package/dist/recipes/modals/AlertModal.svelte.d.ts.map +1 -1
- package/dist/recipes/modals/ConfirmationModal.spec.js +396 -396
- package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
- package/dist/recipes/modals/ConfirmationModal.svelte +169 -162
- package/dist/recipes/modals/ConfirmationModal.svelte.d.ts +2 -0
- package/dist/recipes/modals/ConfirmationModal.svelte.d.ts.map +1 -1
- package/dist/recipes/modals/InputModal.svelte +194 -182
- package/dist/recipes/modals/InputModal.svelte.d.ts +6 -4
- package/dist/recipes/modals/InputModal.svelte.d.ts.map +1 -1
- package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
- package/dist/recipes/modals/ModalStateManager.svelte +77 -77
- package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
- package/dist/recipes/modals/StatusModal.svelte +216 -206
- package/dist/recipes/modals/StatusModal.svelte.d.ts +4 -2
- package/dist/recipes/modals/StatusModal.svelte.d.ts.map +1 -1
- package/dist/recipes/modals/index.js +7 -7
- package/dist/schemas/common.js +1 -1
- package/dist/schemas/event.d.ts +4 -4
- package/dist/schemas/event.js +1 -1
- package/dist/schemas/order.d.ts +2 -2
- package/dist/schemas/order.js +1 -0
- package/dist/schemas/performer.js +1 -1
- package/dist/schemas/promo.d.ts +4 -4
- package/dist/schemas/promo.js +2 -2
- package/dist/schemas/ticket.js +1 -1
- package/dist/schemas/user.js +2 -1
- package/dist/services/event.service.d.ts +11 -0
- package/dist/services/event.service.d.ts.map +1 -0
- package/dist/services/event.service.js +64 -0
- package/dist/services/event.service.spec.d.ts +2 -0
- package/dist/services/event.service.spec.d.ts.map +1 -0
- package/dist/services/event.service.spec.js +168 -0
- package/dist/services/{ShowService.d.ts → show.service.d.ts} +47 -47
- package/dist/services/show.service.d.ts.map +1 -0
- package/dist/services/show.service.js +115 -0
- package/dist/services/show.service.spec.d.ts +2 -0
- package/dist/services/show.service.spec.d.ts.map +1 -0
- package/dist/services/show.service.spec.js +242 -0
- package/dist/stores/auth.d.ts +8 -8
- package/dist/stores/auth.svelte.spec.js +1 -1
- package/dist/stores/index.js +9 -9
- package/dist/stores/toaster.d.ts +3 -3
- package/dist/stores/toaster.js +13 -13
- package/dist/stores/toaster.spec.js +59 -59
- package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
- package/dist/stories/ButtonAuditReview.svelte +427 -427
- package/dist/stories/PatternsGallery.stories.svelte +19 -19
- package/dist/stories/PatternsGallery.svelte +399 -399
- package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
- package/dist/stories/PrimitivesGallery.svelte +756 -756
- package/dist/stories/RecipesGallery.stories.svelte +19 -19
- package/dist/stories/RecipesGallery.svelte +454 -454
- package/dist/stories/button-audit-manifest.json +11186 -11186
- package/dist/tailwind/preset.cjs +82 -82
- package/dist/telemetry.js +402 -402
- package/dist/telemetry.server.js +212 -212
- package/dist/telemetry.server.spec.js +437 -437
- package/dist/telemetry.spec.js +1173 -1173
- package/dist/tokens/tokens.css +87 -87
- package/dist/tokens/typography-base.css +163 -163
- package/dist/tokens/utilities.css +353 -353
- package/dist/utils/__tests__/auth.test.js +431 -431
- package/dist/utils/apiConfig.d.ts +29 -29
- package/dist/utils/apiConfig.js +117 -117
- package/dist/utils/apiConfig.spec.js +219 -219
- package/dist/utils/assets.d.ts +3 -0
- package/dist/utils/assets.d.ts.map +1 -0
- package/dist/utils/assets.js +3 -0
- package/dist/utils/auth.d.ts +46 -46
- package/dist/utils/auth.js +195 -195
- package/dist/utils/classNames.d.ts +10 -0
- package/dist/utils/classNames.d.ts.map +1 -0
- package/dist/utils/classNames.js +15 -0
- package/dist/utils/cookieHelpers.d.ts +40 -0
- package/dist/utils/cookieHelpers.d.ts.map +1 -0
- package/dist/utils/cookieHelpers.js +102 -0
- package/dist/utils/dateHelpers.d.ts +71 -0
- package/dist/utils/dateHelpers.d.ts.map +1 -0
- package/dist/utils/dateHelpers.js +253 -0
- package/dist/utils/eventFormatters.d.ts +9 -0
- package/dist/utils/eventFormatters.d.ts.map +1 -0
- package/dist/utils/eventFormatters.js +96 -0
- package/dist/utils/fetchHelpers.d.ts +17 -0
- package/dist/utils/fetchHelpers.d.ts.map +1 -0
- package/dist/utils/fetchHelpers.js +44 -0
- package/dist/utils/formatters.d.ts +62 -0
- package/dist/utils/formatters.d.ts.map +1 -1
- package/dist/utils/formatters.js +128 -0
- package/dist/utils/formatters.spec.js +128 -1
- package/dist/utils/greetings.js +187 -187
- package/dist/utils/greetings.spec.js +337 -337
- package/dist/utils/haptic.spec.js +1 -1
- package/dist/utils/imageValidation.js +121 -121
- package/dist/utils/imageValidation.spec.js +223 -223
- package/dist/utils/permissions.d.ts +9 -0
- package/dist/utils/permissions.d.ts.map +1 -0
- package/dist/utils/permissions.js +93 -0
- package/dist/utils/portal.d.ts +11 -11
- package/dist/utils/portal.js +25 -25
- package/dist/utils/portal.spec.js +143 -143
- package/dist/utils/stringHelpers.d.ts +17 -0
- package/dist/utils/stringHelpers.d.ts.map +1 -0
- package/dist/utils/stringHelpers.js +38 -0
- package/dist/utils/transitions.js +4 -4
- package/dist/utils/utils/utils.d.ts +2 -73
- package/dist/utils/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils/utils.js +3 -3
- package/dist/utils/utils/utils.spec.js +698 -698
- package/dist/utils/utils.d.ts +41 -98
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +59 -693
- package/dist/utils/utils.spec.js +643 -643
- package/package.json +301 -297
- package/dist/services/EventService.d.ts +0 -5
- package/dist/services/EventService.d.ts.map +0 -1
- package/dist/services/EventService.js +0 -79
- package/dist/services/EventService.spec.d.ts +0 -2
- package/dist/services/EventService.spec.d.ts.map +0 -1
- package/dist/services/EventService.spec.js +0 -217
- package/dist/services/ShowService.d.ts.map +0 -1
- package/dist/services/ShowService.js +0 -144
- package/dist/services/ShowService.spec.d.ts +0 -2
- package/dist/services/ShowService.spec.d.ts.map +0 -1
- package/dist/services/ShowService.spec.js +0 -345
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// DATE/TIME FORMATTING UTILITIES
|
|
3
|
+
// ============================================
|
|
4
|
+
/**
|
|
5
|
+
* Convert a value to a date string using Date.toDateString().
|
|
6
|
+
* Returns null if the value is falsy.
|
|
7
|
+
*/
|
|
8
|
+
export function convertToDate(value) {
|
|
9
|
+
return value ? new Date(value).toDateString() : null;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Convert an ISO date string to a local Date using UTC components (date only, no time).
|
|
13
|
+
*/
|
|
14
|
+
export function convertToCustomDateFormat(isoString) {
|
|
15
|
+
const date = new Date(isoString);
|
|
16
|
+
const year = date.getUTCFullYear();
|
|
17
|
+
const month = date.getUTCMonth();
|
|
18
|
+
const day = date.getUTCDate();
|
|
19
|
+
return new Date(year, month, day);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Convert an ISO date string to a UTC Date preserving hours and minutes.
|
|
23
|
+
*/
|
|
24
|
+
export function convertToCustomDateTimeFormat(isoDateString) {
|
|
25
|
+
const date = new Date(isoDateString);
|
|
26
|
+
return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes()));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Format a date string's time as "H:MM AM/PM" using UTC hours.
|
|
30
|
+
*/
|
|
31
|
+
export function formatHour(dateString) {
|
|
32
|
+
const date = new Date(dateString);
|
|
33
|
+
const hour = date.getUTCHours();
|
|
34
|
+
const minutes = date.getUTCMinutes();
|
|
35
|
+
const suffix = hour >= 12 ? "PM" : "AM";
|
|
36
|
+
const displayHour = hour % 12 || 12;
|
|
37
|
+
const displayMinutes = minutes < 10 ? "0" + minutes : minutes;
|
|
38
|
+
return `${displayHour}:${displayMinutes} ${suffix}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Format a date as short form: "Thu, Oct 24".
|
|
42
|
+
*/
|
|
43
|
+
export function formattedDate(date) {
|
|
44
|
+
const options = {
|
|
45
|
+
weekday: "short",
|
|
46
|
+
month: "short",
|
|
47
|
+
day: "2-digit",
|
|
48
|
+
};
|
|
49
|
+
return new Date(date).toLocaleDateString("en-US", options);
|
|
50
|
+
}
|
|
51
|
+
/** Get the ordinal suffix (st, nd, rd, th) for a day of the month. */
|
|
52
|
+
function getOrdinalSuffix(day) {
|
|
53
|
+
if (day >= 11 && day <= 13)
|
|
54
|
+
return "th";
|
|
55
|
+
switch (day % 10) {
|
|
56
|
+
case 1:
|
|
57
|
+
return "st";
|
|
58
|
+
case 2:
|
|
59
|
+
return "nd";
|
|
60
|
+
case 3:
|
|
61
|
+
return "rd";
|
|
62
|
+
default:
|
|
63
|
+
return "th";
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Format a date as long form with ordinal: "Thursday, October 24th, 2024".
|
|
68
|
+
*/
|
|
69
|
+
export function formattedFullDate(date) {
|
|
70
|
+
const options = {
|
|
71
|
+
weekday: "long",
|
|
72
|
+
month: "long",
|
|
73
|
+
day: "numeric",
|
|
74
|
+
year: "numeric",
|
|
75
|
+
};
|
|
76
|
+
const formatted = new Date(date).toLocaleDateString("en-US", options);
|
|
77
|
+
const day = new Date(date).getDate();
|
|
78
|
+
const ordinalSuffix = getOrdinalSuffix(day);
|
|
79
|
+
return formatted.replace(/\d+/, day + ordinalSuffix);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Format a datetime string using Intl.DateTimeFormat with timezone support.
|
|
83
|
+
*/
|
|
84
|
+
export const formatDateTime = (dateTimeString, timeZone = "UTC") => {
|
|
85
|
+
const options = {
|
|
86
|
+
weekday: "short",
|
|
87
|
+
year: "numeric",
|
|
88
|
+
month: "short",
|
|
89
|
+
day: "numeric",
|
|
90
|
+
hour: "numeric",
|
|
91
|
+
minute: "numeric",
|
|
92
|
+
hour12: true,
|
|
93
|
+
timeZone: timeZone,
|
|
94
|
+
};
|
|
95
|
+
const date = new Date(dateTimeString);
|
|
96
|
+
return new Intl.DateTimeFormat("en-US", options).format(date);
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Format a start datetime as a single "H:MM AM/PM" time string (UTC).
|
|
100
|
+
*/
|
|
101
|
+
export const formatTimeline = (startDateTime) => {
|
|
102
|
+
const formatHourInternal = (date) => {
|
|
103
|
+
let hours = date.getUTCHours();
|
|
104
|
+
const minutes = date.getUTCMinutes();
|
|
105
|
+
const suffix = hours >= 12 ? "PM" : "AM";
|
|
106
|
+
hours = hours % 12 || 12;
|
|
107
|
+
return `${hours}:${minutes < 10 ? "0" + minutes : minutes} ${suffix}`;
|
|
108
|
+
};
|
|
109
|
+
const start = formatHourInternal(new Date(startDateTime));
|
|
110
|
+
return `${start}`;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Format a time range as "H:MM AM - H:MM PM" (UTC).
|
|
114
|
+
*/
|
|
115
|
+
export function formatTimeRange(startDate, endDate) {
|
|
116
|
+
const start = new Date(startDate);
|
|
117
|
+
const end = new Date(endDate);
|
|
118
|
+
function formatTime(date) {
|
|
119
|
+
let hours = date.getUTCHours();
|
|
120
|
+
const minutes = date.getUTCMinutes();
|
|
121
|
+
const ampm = hours >= 12 ? "PM" : "AM";
|
|
122
|
+
hours = hours % 12;
|
|
123
|
+
hours = hours ? hours : 12;
|
|
124
|
+
const minutesStr = minutes < 10 ? "0" + minutes : minutes;
|
|
125
|
+
return hours + ":" + minutesStr + " " + ampm;
|
|
126
|
+
}
|
|
127
|
+
const startTime = formatTime(start);
|
|
128
|
+
const endTime = formatTime(end);
|
|
129
|
+
return `${startTime} - ${endTime}`;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get an array of date strings between two dates (inclusive), formatted as "YYYY-M-D".
|
|
133
|
+
*/
|
|
134
|
+
export function getDateRange(startDate, endDate) {
|
|
135
|
+
const start = new Date(startDate);
|
|
136
|
+
const end = new Date(endDate);
|
|
137
|
+
const dateArray = [];
|
|
138
|
+
const currentDate = new Date(start);
|
|
139
|
+
while (currentDate <= end) {
|
|
140
|
+
dateArray.push(`${currentDate.getUTCFullYear()}-${currentDate.getUTCMonth() + 1}-${currentDate.getUTCDate()}`);
|
|
141
|
+
currentDate.setUTCDate(currentDate.getUTCDate() + 1);
|
|
142
|
+
}
|
|
143
|
+
return dateArray;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get abbreviated day of week from a date string (e.g., "Mon", "Tue").
|
|
147
|
+
*/
|
|
148
|
+
export const getDay = (dateString) => {
|
|
149
|
+
const days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
150
|
+
const date = new Date(dateString);
|
|
151
|
+
return days[date.getUTCDay()];
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Get abbreviated month from a date string (e.g., "Jan", "Feb").
|
|
155
|
+
*/
|
|
156
|
+
export const getMonth = (dateString) => {
|
|
157
|
+
const months = [
|
|
158
|
+
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
|
159
|
+
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
|
|
160
|
+
];
|
|
161
|
+
const date = new Date(dateString);
|
|
162
|
+
return months[date.getUTCMonth()];
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Get the day of the month (1-31) from a date string.
|
|
166
|
+
*/
|
|
167
|
+
export const getDateOfMonth = (dateString) => {
|
|
168
|
+
const date = new Date(dateString);
|
|
169
|
+
return date.getUTCDate();
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* Relative time string (e.g., "5 minutes ago", "2 days ago").
|
|
173
|
+
*/
|
|
174
|
+
export function timeAgo(date) {
|
|
175
|
+
const now = new Date();
|
|
176
|
+
const seconds = Math.floor((now.getTime() - new Date(date).getTime()) / 1000);
|
|
177
|
+
const minutes = Math.floor(seconds / 60);
|
|
178
|
+
const hours = Math.floor(minutes / 60);
|
|
179
|
+
const days = Math.floor(hours / 24);
|
|
180
|
+
const months = Math.floor(days / 30);
|
|
181
|
+
const years = Math.floor(months / 12);
|
|
182
|
+
if (seconds < 60) {
|
|
183
|
+
return `${seconds} second${seconds !== 1 ? "s" : ""} ago`;
|
|
184
|
+
}
|
|
185
|
+
else if (minutes < 60) {
|
|
186
|
+
return `${minutes} minute${minutes !== 1 ? "s" : ""} ago`;
|
|
187
|
+
}
|
|
188
|
+
else if (hours < 24) {
|
|
189
|
+
return `${hours} hour${hours !== 1 ? "s" : ""} ago`;
|
|
190
|
+
}
|
|
191
|
+
else if (days < 30) {
|
|
192
|
+
return `${days} day${days !== 1 ? "s" : ""} ago`;
|
|
193
|
+
}
|
|
194
|
+
else if (months < 12) {
|
|
195
|
+
return `${months} month${months !== 1 ? "s" : ""} ago`;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
return `${years} year${years !== 1 ? "s" : ""} ago`;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Get day options: weekdays if "weeks", or numbered days 1-31 with ordinal suffixes.
|
|
203
|
+
*/
|
|
204
|
+
export function getDays(params) {
|
|
205
|
+
if (params === "weeks") {
|
|
206
|
+
return [
|
|
207
|
+
{ value: "monday", label: "Monday" },
|
|
208
|
+
{ value: "tuesday", label: "Tuesday" },
|
|
209
|
+
{ value: "wednesday", label: "Wednesday" },
|
|
210
|
+
{ value: "thursday", label: "Thursday" },
|
|
211
|
+
{ value: "friday", label: "Friday" },
|
|
212
|
+
];
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
return Array.from({ length: 31 }, (_, i) => {
|
|
216
|
+
const day = i + 1;
|
|
217
|
+
const suffix = day % 10 === 1 && day !== 11
|
|
218
|
+
? "st"
|
|
219
|
+
: day % 10 === 2 && day !== 12
|
|
220
|
+
? "nd"
|
|
221
|
+
: day % 10 === 3 && day !== 13
|
|
222
|
+
? "rd"
|
|
223
|
+
: "th";
|
|
224
|
+
return {
|
|
225
|
+
value: day.toString(),
|
|
226
|
+
label: day + suffix,
|
|
227
|
+
};
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Get numeric options based on time unit: 12 for months, 10 for weeks, 31 for days.
|
|
233
|
+
*/
|
|
234
|
+
export function getDaysNumberOptions(timeUnit) {
|
|
235
|
+
if (timeUnit === "months") {
|
|
236
|
+
return Array.from({ length: 12 }, (_, i) => ({
|
|
237
|
+
value: (i + 1).toString(),
|
|
238
|
+
label: (i + 1).toString(),
|
|
239
|
+
}));
|
|
240
|
+
}
|
|
241
|
+
else if (timeUnit === "weeks") {
|
|
242
|
+
return Array.from({ length: 10 }, (_, i) => ({
|
|
243
|
+
value: (i + 1).toString(),
|
|
244
|
+
label: (i + 1).toString(),
|
|
245
|
+
}));
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
return Array.from({ length: 31 }, (_, i) => ({
|
|
249
|
+
value: (i + 1).toString(),
|
|
250
|
+
label: (i + 1).toString(),
|
|
251
|
+
}));
|
|
252
|
+
}
|
|
253
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const getRoleFromRoleOnStage: (roleOnStage: number | undefined) => string;
|
|
2
|
+
/**
|
|
3
|
+
* Format an event performer invite or event-performer join into a normalized show object.
|
|
4
|
+
* Handles both V1 (EventPerformer with event.Event) and V2 (PerformerInvite with event.event) shapes.
|
|
5
|
+
*/
|
|
6
|
+
export declare const formatEvent: (event: Record<string, any>) => Record<string, any>;
|
|
7
|
+
export declare const formatRosterEventPerformerInvite: (event: Record<string, any>) => Record<string, any>;
|
|
8
|
+
export declare const formatVenue: (event: Record<string, any>) => Record<string, any>;
|
|
9
|
+
//# sourceMappingURL=eventFormatters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventFormatters.d.ts","sourceRoot":"","sources":["../../src/lib/utils/eventFormatters.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,sBAAsB,GAAI,aAAa,MAAM,GAAG,SAAS,KAAG,MAExE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CA4C1E,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAAI,OAAO,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAc/F,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAmB1E,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { formatTimeRange, getDateRange } from "./dateHelpers";
|
|
2
|
+
// ============================================
|
|
3
|
+
// EVENT FORMATTING UTILITIES
|
|
4
|
+
// ============================================
|
|
5
|
+
/** Map roleOnStage numeric value to role name string. */
|
|
6
|
+
const ROLE_ON_STAGE_MAP = {
|
|
7
|
+
0: "Performer",
|
|
8
|
+
1: "Host",
|
|
9
|
+
2: "Headliner",
|
|
10
|
+
3: "Feature",
|
|
11
|
+
4: "Special Guest",
|
|
12
|
+
5: "Opener",
|
|
13
|
+
6: "Guest",
|
|
14
|
+
7: "Teacher",
|
|
15
|
+
8: "Assistant",
|
|
16
|
+
};
|
|
17
|
+
export const getRoleFromRoleOnStage = (roleOnStage) => {
|
|
18
|
+
return ROLE_ON_STAGE_MAP[roleOnStage] || "Performer";
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Format an event performer invite or event-performer join into a normalized show object.
|
|
22
|
+
* Handles both V1 (EventPerformer with event.Event) and V2 (PerformerInvite with event.event) shapes.
|
|
23
|
+
*/
|
|
24
|
+
export const formatEvent = (event) => {
|
|
25
|
+
// V2 uses lowercase "event", V1 uses uppercase "Event"
|
|
26
|
+
const eventData = event.event || event.Event;
|
|
27
|
+
// Get venue stage name (the physical stage at the venue, e.g., "Main Room", "Showroom")
|
|
28
|
+
// Not to be confused with performer's stage name (their performance alias)
|
|
29
|
+
const venueStageName = eventData?.stage?.name || eventData?.stage?.googleName || eventData?.googleName || "";
|
|
30
|
+
const venueAddress = eventData?.venue?.address || "";
|
|
31
|
+
const role = getRoleFromRoleOnStage(event.roleOnStage);
|
|
32
|
+
// Get custom booking notification message from venue (set in venue edit page)
|
|
33
|
+
const bookingMessage = eventData?.venue?.booking_notification || "No additional details available.";
|
|
34
|
+
// V2 returns "status" string, V1 returns numeric "acceptedState"
|
|
35
|
+
const status = event.status || (event.acceptedState !== undefined
|
|
36
|
+
? { 0: "invited", 2: "confirmed", 1: "declined", 3: "declined", 4: "cancelled" }[event.acceptedState]
|
|
37
|
+
: "unknown");
|
|
38
|
+
const setLength = event.setLength ?? 0;
|
|
39
|
+
return {
|
|
40
|
+
eventId: eventData?.ID,
|
|
41
|
+
venueId: eventData?.venue?.ID,
|
|
42
|
+
title: eventData?.title,
|
|
43
|
+
role: role,
|
|
44
|
+
startDateTime: eventData?.startDateTime,
|
|
45
|
+
status: status,
|
|
46
|
+
doorsOpenTime: eventData?.doorsOpenTime,
|
|
47
|
+
spotDuration: `${setLength} min spot`,
|
|
48
|
+
venueName: eventData?.venue?.name,
|
|
49
|
+
location: venueAddress,
|
|
50
|
+
id: event.invitationId || String(event.id || event.ID),
|
|
51
|
+
image: eventData?.image,
|
|
52
|
+
details: {
|
|
53
|
+
venue: eventData?.venue?.name,
|
|
54
|
+
stageName: venueStageName,
|
|
55
|
+
address: venueAddress,
|
|
56
|
+
setLength: `${setLength} min`,
|
|
57
|
+
eventDetails: bookingMessage,
|
|
58
|
+
},
|
|
59
|
+
lastUpdated: event.updatedAt || event.UpdatedAt,
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
export const formatRosterEventPerformerInvite = (event) => {
|
|
63
|
+
return {
|
|
64
|
+
venueId: event.venueId,
|
|
65
|
+
role: event.role || "Performer",
|
|
66
|
+
acceptedState: event.acceptedState,
|
|
67
|
+
name: event.Venue.name,
|
|
68
|
+
shortVenue: `${event.Venue.firstName} ${event.Venue.lastName} - ${event.Venue.role}`,
|
|
69
|
+
location: `${event.Venue.address}`,
|
|
70
|
+
id: event.invitationId,
|
|
71
|
+
lastUpdated: event.UpdatedAt,
|
|
72
|
+
image: event.Venue.image,
|
|
73
|
+
hasAvailability: true,
|
|
74
|
+
invitationAccepted: event.acceptedState === 2,
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
export const formatVenue = (event) => {
|
|
78
|
+
return {
|
|
79
|
+
venueId: event.Event.venueId,
|
|
80
|
+
name: event.Event.venue.name,
|
|
81
|
+
image: event.Event.venue.squareImageUrl || event.Event.venue.image,
|
|
82
|
+
location: `${event.Event.venue.address}`,
|
|
83
|
+
start: event.Event.startDateTime,
|
|
84
|
+
end: event.Event.endDateTime,
|
|
85
|
+
doorOpen: event.Event.doorsOpenTime,
|
|
86
|
+
email: event.Event.venue.email,
|
|
87
|
+
phone: event.Event.venue.phone,
|
|
88
|
+
description: event.Event.venue.description,
|
|
89
|
+
instagram: event.Event.venue.instagram,
|
|
90
|
+
facebook: event.Event.venue.facebook,
|
|
91
|
+
twitter: event.Event.venue.twitter,
|
|
92
|
+
lastUpdated: event.UpdatedAt,
|
|
93
|
+
timeRange: formatTimeRange(event.Event.startDateTime, event.Event.endDateTime),
|
|
94
|
+
dateRange: getDateRange(event.Event.startDateTime, event.Event.endDateTime),
|
|
95
|
+
};
|
|
96
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
interface FetchResult<T = unknown> {
|
|
2
|
+
data: T | null;
|
|
3
|
+
error: string | null;
|
|
4
|
+
}
|
|
5
|
+
interface PostResult<T = unknown> extends FetchResult<T> {
|
|
6
|
+
ok: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Fetch data from an API endpoint with error handling.
|
|
10
|
+
*/
|
|
11
|
+
export declare function fetchData<T = unknown>(endpoint: string, options?: RequestInit): Promise<FetchResult<T>>;
|
|
12
|
+
/**
|
|
13
|
+
* Post JSON data to an API endpoint.
|
|
14
|
+
*/
|
|
15
|
+
export declare function postData<T = unknown>(endpoint: string, data: unknown): Promise<PostResult<T>>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=fetchHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchHelpers.d.ts","sourceRoot":"","sources":["../../src/lib/utils/fetchHelpers.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW,CAAC,CAAC,GAAG,OAAO;IAC/B,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,UAAU,UAAU,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IACtD,EAAE,EAAE,OAAO,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,CAAC,GAAG,OAAO,EACzC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAiBzB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,OAAO,EACxC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAkBxB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// DATA FETCHING UTILITIES
|
|
3
|
+
// ============================================
|
|
4
|
+
/**
|
|
5
|
+
* Fetch data from an API endpoint with error handling.
|
|
6
|
+
*/
|
|
7
|
+
export async function fetchData(endpoint, options = {}) {
|
|
8
|
+
try {
|
|
9
|
+
const res = await fetch(endpoint, {
|
|
10
|
+
headers: { "Content-Type": "application/json", ...options.headers },
|
|
11
|
+
...options,
|
|
12
|
+
});
|
|
13
|
+
if (!res.ok) {
|
|
14
|
+
const errorText = await res.text().catch(() => "Unknown error");
|
|
15
|
+
throw new Error(errorText || `Request failed with status ${res.status}`);
|
|
16
|
+
}
|
|
17
|
+
const data = await res.json();
|
|
18
|
+
return { data, error: null };
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
return { data: null, error: err.message };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Post JSON data to an API endpoint.
|
|
26
|
+
*/
|
|
27
|
+
export async function postData(endpoint, data) {
|
|
28
|
+
try {
|
|
29
|
+
const res = await fetch(endpoint, {
|
|
30
|
+
method: "POST",
|
|
31
|
+
headers: { "Content-Type": "application/json" },
|
|
32
|
+
body: JSON.stringify(data),
|
|
33
|
+
});
|
|
34
|
+
const responseData = await res.json().catch(() => ({}));
|
|
35
|
+
return {
|
|
36
|
+
data: responseData,
|
|
37
|
+
error: res.ok ? null : (responseData?.message || "Request failed"),
|
|
38
|
+
ok: res.ok,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
return { data: null, error: err.message, ok: false };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -1,3 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rounds a number to 2 decimal places (cents precision).
|
|
3
|
+
* Use after any arithmetic on currency values to avoid IEEE 754 drift.
|
|
4
|
+
* e.g. roundCurrency(167.79999999999) → 167.8
|
|
5
|
+
*/
|
|
6
|
+
export declare function roundCurrency(value: number): number;
|
|
7
|
+
/**
|
|
8
|
+
* Formats a currency value using Intl.NumberFormat.
|
|
9
|
+
* Returns empty string for null/undefined.
|
|
10
|
+
*
|
|
11
|
+
* @param value - Amount in dollars (e.g. 25.5)
|
|
12
|
+
* @param currency - ISO 4217 currency code (default: 'USD')
|
|
13
|
+
* @param locale - BCP 47 locale tag (default: 'en-US')
|
|
14
|
+
* @returns Formatted string (e.g. "$25.50")
|
|
15
|
+
*/
|
|
16
|
+
export declare function formatCurrency(value: number | null | undefined, currency?: string, locale?: string): string;
|
|
17
|
+
type DateInput = Date | string | number | null | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Formats a date according to a locale.
|
|
20
|
+
* Default output: abbreviated month, day, year (e.g. "Dec 15, 2025" in en-US).
|
|
21
|
+
*
|
|
22
|
+
* @param value - Date, ISO string, or epoch ms
|
|
23
|
+
* @param options - Intl.DateTimeFormatOptions overrides
|
|
24
|
+
* @param locale - BCP 47 locale tag (default: 'en-US')
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatDate(value: DateInput, options?: Intl.DateTimeFormatOptions, locale?: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Formats a date with time.
|
|
29
|
+
* Default output: abbreviated month, day, year, hour, minute
|
|
30
|
+
* (e.g. "Dec 15, 2025, 3:30 PM" in en-US).
|
|
31
|
+
*
|
|
32
|
+
* @param value - Date, ISO string, or epoch ms
|
|
33
|
+
* @param options - Intl.DateTimeFormatOptions overrides
|
|
34
|
+
* @param locale - BCP 47 locale tag (default: 'en-US')
|
|
35
|
+
*/
|
|
36
|
+
export declare function formatDateTime(value: DateInput, options?: Intl.DateTimeFormatOptions, locale?: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Formats time-only.
|
|
39
|
+
* Default output: hour and minute (e.g. "3:30 PM" in en-US).
|
|
40
|
+
*
|
|
41
|
+
* @param value - Date, ISO string, or epoch ms
|
|
42
|
+
* @param options - Intl.DateTimeFormatOptions overrides
|
|
43
|
+
* @param locale - BCP 47 locale tag (default: 'en-US')
|
|
44
|
+
*/
|
|
45
|
+
export declare function formatTime(value: DateInput, options?: Intl.DateTimeFormatOptions, locale?: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Formats a number according to a locale.
|
|
48
|
+
* Returns empty string for null/undefined.
|
|
49
|
+
*
|
|
50
|
+
* @param value - Number to format
|
|
51
|
+
* @param options - Intl.NumberFormatOptions overrides
|
|
52
|
+
* @param locale - BCP 47 locale tag (default: 'en-US')
|
|
53
|
+
*/
|
|
54
|
+
export declare function formatNumber(value: number | null | undefined, options?: Intl.NumberFormatOptions, locale?: string): string;
|
|
55
|
+
/**
|
|
56
|
+
* Truncates a string to maxLength characters, appending "..." when truncated.
|
|
57
|
+
*
|
|
58
|
+
* @param title - Text to truncate
|
|
59
|
+
* @param maxLength - Maximum character count before truncation (default: 50)
|
|
60
|
+
*/
|
|
61
|
+
export declare function truncateTitle(title: string, maxLength?: number): string;
|
|
1
62
|
/**
|
|
2
63
|
* Format a credit card number with spaces every 4 digits
|
|
3
64
|
* @param value - Raw input (digits only)
|
|
@@ -10,4 +71,5 @@ export declare function formatCreditCardNumber(value: string): string;
|
|
|
10
71
|
* @returns Formatted phone number (e.g., "123-456-7890")
|
|
11
72
|
*/
|
|
12
73
|
export declare function formatPhoneNumber(value: string): string;
|
|
74
|
+
export {};
|
|
13
75
|
//# sourceMappingURL=formatters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/lib/utils/formatters.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/lib/utils/formatters.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,QAAQ,SAAQ,EAChB,MAAM,SAAU,GACf,MAAM,CAMR;AAMD,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAY3D;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,EACpC,MAAM,SAAU,GACf,MAAM,CASR;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,EACpC,MAAM,SAAU,GACf,MAAM,CAWR;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,EACpC,MAAM,SAAU,GACf,MAAM,CAQR;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAClC,MAAM,SAAU,GACf,MAAM,CAGR;AAMD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,MAAM,CAKnE;AAMD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOvD"}
|
package/dist/utils/formatters.js
CHANGED
|
@@ -1,3 +1,131 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Currency
|
|
3
|
+
// =============================================================================
|
|
4
|
+
/**
|
|
5
|
+
* Rounds a number to 2 decimal places (cents precision).
|
|
6
|
+
* Use after any arithmetic on currency values to avoid IEEE 754 drift.
|
|
7
|
+
* e.g. roundCurrency(167.79999999999) → 167.8
|
|
8
|
+
*/
|
|
9
|
+
export function roundCurrency(value) {
|
|
10
|
+
return Math.round(value * 100) / 100;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Formats a currency value using Intl.NumberFormat.
|
|
14
|
+
* Returns empty string for null/undefined.
|
|
15
|
+
*
|
|
16
|
+
* @param value - Amount in dollars (e.g. 25.5)
|
|
17
|
+
* @param currency - ISO 4217 currency code (default: 'USD')
|
|
18
|
+
* @param locale - BCP 47 locale tag (default: 'en-US')
|
|
19
|
+
* @returns Formatted string (e.g. "$25.50")
|
|
20
|
+
*/
|
|
21
|
+
export function formatCurrency(value, currency = 'USD', locale = 'en-US') {
|
|
22
|
+
if (value === null || value === undefined)
|
|
23
|
+
return '';
|
|
24
|
+
return new Intl.NumberFormat(locale, {
|
|
25
|
+
style: 'currency',
|
|
26
|
+
currency,
|
|
27
|
+
}).format(value);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Converts various date input types to a Date object.
|
|
31
|
+
* Returns null for invalid or missing inputs.
|
|
32
|
+
*/
|
|
33
|
+
function toDate(value) {
|
|
34
|
+
if (value === null || value === undefined)
|
|
35
|
+
return null;
|
|
36
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
37
|
+
return isNaN(date.getTime()) ? null : date;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Formats a date according to a locale.
|
|
41
|
+
* Default output: abbreviated month, day, year (e.g. "Dec 15, 2025" in en-US).
|
|
42
|
+
*
|
|
43
|
+
* @param value - Date, ISO string, or epoch ms
|
|
44
|
+
* @param options - Intl.DateTimeFormatOptions overrides
|
|
45
|
+
* @param locale - BCP 47 locale tag (default: 'en-US')
|
|
46
|
+
*/
|
|
47
|
+
export function formatDate(value, options, locale = 'en-US') {
|
|
48
|
+
const date = toDate(value);
|
|
49
|
+
if (!date)
|
|
50
|
+
return '';
|
|
51
|
+
const defaults = {
|
|
52
|
+
year: 'numeric',
|
|
53
|
+
month: 'short',
|
|
54
|
+
day: 'numeric',
|
|
55
|
+
};
|
|
56
|
+
return new Intl.DateTimeFormat(locale, { ...defaults, ...options }).format(date);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Formats a date with time.
|
|
60
|
+
* Default output: abbreviated month, day, year, hour, minute
|
|
61
|
+
* (e.g. "Dec 15, 2025, 3:30 PM" in en-US).
|
|
62
|
+
*
|
|
63
|
+
* @param value - Date, ISO string, or epoch ms
|
|
64
|
+
* @param options - Intl.DateTimeFormatOptions overrides
|
|
65
|
+
* @param locale - BCP 47 locale tag (default: 'en-US')
|
|
66
|
+
*/
|
|
67
|
+
export function formatDateTime(value, options, locale = 'en-US') {
|
|
68
|
+
const date = toDate(value);
|
|
69
|
+
if (!date)
|
|
70
|
+
return '';
|
|
71
|
+
const defaults = {
|
|
72
|
+
year: 'numeric',
|
|
73
|
+
month: 'short',
|
|
74
|
+
day: 'numeric',
|
|
75
|
+
hour: 'numeric',
|
|
76
|
+
minute: '2-digit',
|
|
77
|
+
};
|
|
78
|
+
return new Intl.DateTimeFormat(locale, { ...defaults, ...options }).format(date);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Formats time-only.
|
|
82
|
+
* Default output: hour and minute (e.g. "3:30 PM" in en-US).
|
|
83
|
+
*
|
|
84
|
+
* @param value - Date, ISO string, or epoch ms
|
|
85
|
+
* @param options - Intl.DateTimeFormatOptions overrides
|
|
86
|
+
* @param locale - BCP 47 locale tag (default: 'en-US')
|
|
87
|
+
*/
|
|
88
|
+
export function formatTime(value, options, locale = 'en-US') {
|
|
89
|
+
const date = toDate(value);
|
|
90
|
+
if (!date)
|
|
91
|
+
return '';
|
|
92
|
+
const defaults = {
|
|
93
|
+
hour: 'numeric',
|
|
94
|
+
minute: '2-digit',
|
|
95
|
+
};
|
|
96
|
+
return new Intl.DateTimeFormat(locale, { ...defaults, ...options }).format(date);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Formats a number according to a locale.
|
|
100
|
+
* Returns empty string for null/undefined.
|
|
101
|
+
*
|
|
102
|
+
* @param value - Number to format
|
|
103
|
+
* @param options - Intl.NumberFormatOptions overrides
|
|
104
|
+
* @param locale - BCP 47 locale tag (default: 'en-US')
|
|
105
|
+
*/
|
|
106
|
+
export function formatNumber(value, options, locale = 'en-US') {
|
|
107
|
+
if (value === null || value === undefined)
|
|
108
|
+
return '';
|
|
109
|
+
return new Intl.NumberFormat(locale, options).format(value);
|
|
110
|
+
}
|
|
111
|
+
// =============================================================================
|
|
112
|
+
// Text
|
|
113
|
+
// =============================================================================
|
|
114
|
+
/**
|
|
115
|
+
* Truncates a string to maxLength characters, appending "..." when truncated.
|
|
116
|
+
*
|
|
117
|
+
* @param title - Text to truncate
|
|
118
|
+
* @param maxLength - Maximum character count before truncation (default: 50)
|
|
119
|
+
*/
|
|
120
|
+
export function truncateTitle(title, maxLength = 50) {
|
|
121
|
+
if (title.length > maxLength) {
|
|
122
|
+
return title.slice(0, maxLength) + '...';
|
|
123
|
+
}
|
|
124
|
+
return title;
|
|
125
|
+
}
|
|
126
|
+
// =============================================================================
|
|
127
|
+
// Input formatting (credit card, phone)
|
|
128
|
+
// =============================================================================
|
|
1
129
|
/**
|
|
2
130
|
* Format a credit card number with spaces every 4 digits
|
|
3
131
|
* @param value - Raw input (digits only)
|