@evolve.ui/core-components 1.0.1 → 1.1.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/evolve-ui.entries.json +556 -0
- package/fileUpload/testUtils/mockFilesAndImages.d.cts +3 -3
- package/fileUpload/testUtils/mockFilesAndImages.d.cts.map +1 -1
- package/fileUpload/testUtils/mockFilesAndImages.d.mts +3 -3
- package/fileUpload/testUtils/mockFilesAndImages.d.mts.map +1 -1
- package/fileUpload/testUtils/testUtils.d.cts +1 -1
- package/fileUpload/testUtils/testUtils.d.cts.map +1 -1
- package/fileUpload/testUtils/testUtils.d.mts +1 -1
- package/fileUpload/testUtils/testUtils.d.mts.map +1 -1
- package/package.json +2 -2
- package/src/Accordion/Accordion.tsx +233 -0
- package/src/AddressDisplay/AddressDisplay.tsx +43 -0
- package/src/AddressDisplay/components/addressComponents.tsx +111 -0
- package/src/AddressDisplay/components/addressField.tsx +25 -0
- package/src/AddressDisplay/components/addressSection.tsx +8 -0
- package/src/AddressDisplay/components/getCountryValue.tsx +31 -0
- package/src/AddressDisplay/types.ts +26 -0
- package/src/AutomatedCarousel/AutomatedCarousel.tsx +163 -0
- package/src/AutomatedCarousel/automatedCarousel.types.ts +7 -0
- package/src/AutomatedCarousel/components/CarouselProgressBar/CarouselProgressBar.tsx +139 -0
- package/src/AutomatedCarousel/components/CarouselProgressBar/components/CarouselProgressBarUnit/CarouselProgressBarUnit.tsx +165 -0
- package/src/Badge/Badge.tsx +104 -0
- package/src/Badge/Badge.types.ts +58 -0
- package/src/Badge/ItemBadge.tsx +97 -0
- package/src/Badge/LiveStatusBadge.tsx +93 -0
- package/src/BannerNotification/BannerNotification.tsx +157 -0
- package/src/BannerNotification/components/BannerNotificationSkeleton.tsx +39 -0
- package/src/BannerNotification/components/CalloutIcon/BannerIcon.tsx +48 -0
- package/src/BannerNotification/utils/getRandomTooltipId.ts +3 -0
- package/src/BottomSheet/BottomSheet.tsx +476 -0
- package/src/BottomSheet/components/BottomSheetBackdrop/BottomSheetBackdrop.tsx +47 -0
- package/src/BottomSheet/components/BottomSheetContentArea/BottomSheetContentArea.tsx +92 -0
- package/src/BottomSheet/components/BottomSheetOverlay/BottomSheetOverlayTranslate3d.tsx +196 -0
- package/src/BottomSheet/components/SheetDescription/SheetDescription.tsx +22 -0
- package/src/BottomSheet/components/SheetTitle/SheetTitle.tsx +21 -0
- package/src/BottomSheet/components/index.tsx +5 -0
- package/src/BottomSheet/hooks/index.tsx +13 -0
- package/src/BottomSheet/hooks/useAriaHider.tsx +91 -0
- package/src/BottomSheet/hooks/useBottomSheetServices.tsx +224 -0
- package/src/BottomSheet/hooks/useDragHandler.tsx +282 -0
- package/src/BottomSheet/hooks/useFocusTrap.tsx +113 -0
- package/src/BottomSheet/hooks/useLayoutEffect.tsx +4 -0
- package/src/BottomSheet/hooks/useOptimizedResizeObserver.tsx +94 -0
- package/src/BottomSheet/hooks/useOptimizedScrollState.tsx +87 -0
- package/src/BottomSheet/hooks/useReady.tsx +34 -0
- package/src/BottomSheet/hooks/useReducedMotion.tsx +22 -0
- package/src/BottomSheet/hooks/useScrollLock.tsx +143 -0
- package/src/BottomSheet/hooks/useSnapPoints.tsx +355 -0
- package/src/BottomSheet/hooks/useSpring.tsx +47 -0
- package/src/BottomSheet/hooks/useSpringInterpolationsTranslate3d.tsx +101 -0
- package/src/BottomSheet/index.tsx +237 -0
- package/src/BottomSheet/state/atoms.ts +147 -0
- package/src/BottomSheet/state/useBottomSheetStateMachine.ts +246 -0
- package/src/BottomSheet/types.ts +172 -0
- package/src/BottomSheet/utils.ts +65 -0
- package/src/Breadcrumbs/Breadcrumbs.tsx +126 -0
- package/src/Button/Button.tsx +164 -0
- package/src/Button/Button.types.ts +80 -0
- package/src/Button/buttonColorClasses.ts +53 -0
- package/src/Callout/Callout.tsx +136 -0
- package/src/Callout/Callout.types.ts +29 -0
- package/src/Callout/components/CalloutIcon/CalloutIcon.tsx +56 -0
- package/src/Card/CardGrid.tsx +263 -0
- package/src/Card/SingleCard.tsx +22 -0
- package/src/Card/cardFactory.tsx +176 -0
- package/src/Card/components/createBadge.tsx +34 -0
- package/src/Card/components/createFavoriteButton.tsx +40 -0
- package/src/Card/components/createImage.tsx +64 -0
- package/src/Card/components/createInfo.tsx +84 -0
- package/src/Card/components/createName.tsx +63 -0
- package/src/Card/components/createPriceStatus.tsx +100 -0
- package/src/Card/components/types.ts +4 -0
- package/src/Card/hooks/useCardVisibilityTracking.ts +82 -0
- package/src/Card/sharedProps.ts +12 -0
- package/src/Card/types.ts +62 -0
- package/src/Carousel/Carousel.tsx +513 -0
- package/src/Carousel/Carousel.types.ts +43 -0
- package/src/Carousel/Carousel.utils.ts +63 -0
- package/src/Carousel/components/DotButton/DotButton.tsx +42 -0
- package/src/Carousel/components/NavigationButtons/NavigationButtons.tsx +77 -0
- package/src/Carousel/components/TitleSection/TitleSection.tsx +61 -0
- package/src/Carousel/components/TitleSection/components/SubHeaderLeft/SubHeaderLeft.tsx +53 -0
- package/src/Carousel/components/TitleSection/components/Title/Title.tsx +46 -0
- package/src/Carousel/index.ts +2 -0
- package/src/Carousel/testUtils.ts +10 -0
- package/src/Chips/Chip.tsx +153 -0
- package/src/Chips/ChipGroup.tsx +173 -0
- package/src/Chips/SuggestionChip.tsx +15 -0
- package/src/Chips/chipTypes.ts +113 -0
- package/src/Chips/index.ts +4 -0
- package/src/ChoiceListItem/Checkbox.tsx +69 -0
- package/src/ChoiceListItem/Radio.tsx +61 -0
- package/src/ChoiceListItem/choiceListItem.tsx +99 -0
- package/src/ChoiceListItem/common.tsx +148 -0
- package/src/ChoiceListItem/index.ts +3 -0
- package/src/Collapsible/Collapsible.tsx +58 -0
- package/src/Confetti/Confetti.tsx +270 -0
- package/src/Confetti/index.ts +2 -0
- package/src/ContentPager/ContentPager.tsx +189 -0
- package/src/ContentPager/components/Page.tsx +24 -0
- package/src/CookieConsent/components/CookieCategoryRow/CookieCategoryRow.tsx +30 -0
- package/src/CookieConsent/components/CookieConsent/CookieConsent.tsx +74 -0
- package/src/CookieConsent/components/CookieConsentBanner/CookieConsentBanner.tsx +51 -0
- package/src/CookieConsent/components/CookieConsentModal/CookieConsentModal.tsx +64 -0
- package/src/CookieConsent/hooks/useCookieConsent.ts +170 -0
- package/src/CookieConsent/hooks/useCookieConsentState.ts +142 -0
- package/src/CookieConsent/index.ts +16 -0
- package/src/CookieConsent/types/cookieConsent.types.ts +79 -0
- package/src/CookieConsent/types/index.ts +7 -0
- package/src/Countdown/Countdown.tsx +161 -0
- package/src/Countdown/Countdown.types.ts +4 -0
- package/src/Countdown/hooks/useGetCountdown.ts +103 -0
- package/src/DateTimeInput/dateInput/DateInput.tsx +199 -0
- package/src/DateTimeInput/datePicker/DatePicker.tsx +138 -0
- package/src/DateTimeInput/datePicker/components/calendar/Calendar.tsx +72 -0
- package/src/DateTimeInput/datePicker/index.ts +2 -0
- package/src/DateTimeInput/timeInput/TimeInput.tsx +128 -0
- package/src/DateTimeInput/timePicker/TimePicker.tsx +118 -0
- package/src/DateTimeInput/timePicker/components/TimePopover/AmPmSwitch.tsx +103 -0
- package/src/DateTimeInput/timePicker/components/TimePopover/TimeFieldInput.tsx +26 -0
- package/src/DateTimeInput/timePicker/components/TimePopover/TimePopover.tsx +84 -0
- package/src/DateTimeInput/timePicker/components/TimePopover/TimePopover.utils.ts +67 -0
- package/src/DateTimeInput/timePicker/components/TimePopover/TimePopoverActions.tsx +26 -0
- package/src/DateTimeInput/timePicker/index.ts +2 -0
- package/src/DateTimeInput/utils/getDisplayDate.ts +15 -0
- package/src/DateTimeInput/utils/getDisplayTime.ts +15 -0
- package/src/DateTimeInput/utils/index.ts +2 -0
- package/src/DateTimeInput/utils/parseTimeValue.ts +54 -0
- package/src/Drawer/Drawer.tsx +446 -0
- package/src/Drawer/atoms.ts +4 -0
- package/src/Drawer/components/DialogActions/DialogActions.tsx +33 -0
- package/src/Drawer/components/DialogContent/DialogContent.tsx +80 -0
- package/src/Drawer/components/DialogHeader/DialogHeader.tsx +68 -0
- package/src/EducationalPopover/EducationalPopover.tsx +174 -0
- package/src/FavoriteButton/FavoriteButton.tsx +64 -0
- package/src/FavoriteButton/components/IconOnlyFavoriteButton/IconOnlyFavoriteButton.tsx +80 -0
- package/src/FavoriteButton/components/LabeledAnimatedFavoriteButton/LabeledAnimatedFavoriteButton.tsx +179 -0
- package/src/FavoriteButton/components/LabeledFavoriteButton/LabeledFavoriteButton.tsx +71 -0
- package/src/FavoriteButton/components/SmallHeartStraightIcon/SmallHeartStraightIcon.tsx +14 -0
- package/src/FavoriteButton/hooks/useFavoriteButtonState.ts +30 -0
- package/src/FavoriteButton/index.ts +2 -0
- package/src/FavoriteButton/types/favoriteButton.ts +87 -0
- package/src/FeatureFlags/devTools/FeatureFlagDevToolsUI.tsx +226 -0
- package/src/FeatureFlags/devTools/getFeatureFlagCookieOverrides.ts +30 -0
- package/src/FeatureFlags/devTools/utils/cookies.ts +169 -0
- package/src/FeatureFlags/hooks/index.ts +2 -0
- package/src/FeatureFlags/hooks/useFeatureFlag.tsx +19 -0
- package/src/FeatureFlags/hooks/useFeatureFlags.tsx +15 -0
- package/src/FileUpload/components/FileCard/FileCard.tsx +50 -0
- package/src/FileUpload/components/FileDropzone/FileDropzone.tsx +221 -0
- package/src/FileUpload/components/FileDropzone/components/DropzoneContent/DropzoneContent.tsx +28 -0
- package/src/FileUpload/components/FileDropzone/components/DropzoneContent/DropzoneText.tsx +81 -0
- package/src/FileUpload/components/FileDropzone/components/FileDropzoneDebugger/FileDropzoneDebugger.tsx +40 -0
- package/src/FileUpload/components/FileDropzone/components/FileDropzoneDebugger/FileRejectionsDisplay.tsx +110 -0
- package/src/FileUpload/components/FileDropzoneOverlay/FileDropzoneOverlay.tsx +183 -0
- package/src/FileUpload/components/FileDropzoneOverlay/components/OverlayDropzoneContent.tsx +146 -0
- package/src/FileUpload/components/FileDropzoneOverlay/components/OverlayDropzoneDragText.tsx +42 -0
- package/src/FileUpload/components/FileDropzoneOverlay/styles.ts +79 -0
- package/src/FileUpload/components/FilePreviewList/FilePreviewList.tsx +251 -0
- package/src/FileUpload/components/FilePreviewList/virtualizerComponents/FilePreviewVirtualizedList/FilePreviewVirtualizedList.tsx +88 -0
- package/src/FileUpload/components/FileUpload/FileUpload.tsx +63 -0
- package/src/FileUpload/components/FileUploadCanvas/FileUploadCanvas.tsx +125 -0
- package/src/FileUpload/components/GridFileCard/GridFileCard.tsx +364 -0
- package/src/FileUpload/components/GridFileCard/utils/sortable.ts +48 -0
- package/src/FileUpload/components/ListFileCard/ListFileCard.tsx +259 -0
- package/src/FileUpload/components/types.ts +78 -0
- package/src/FileUpload/hooks/filePreview/useImageFilePreviewUrl.ts +62 -0
- package/src/FileUpload/hooks/index.ts +11 -0
- package/src/FileUpload/hooks/upload/useHandleDragEnter/useHandleDragEnter.ts +154 -0
- package/src/FileUpload/hooks/upload/useHandleDrop/createFileRejectionHelpers.ts +273 -0
- package/src/FileUpload/hooks/upload/useHandleDrop/useHandleDrop.ts +153 -0
- package/src/FileUpload/hooks/upload/useUploadAvailability/useUploadAvailability.ts +44 -0
- package/src/FileUpload/hooks/validation/createDropzoneValidator.ts +41 -0
- package/src/FileUpload/hooks/validation/useFileValidation.ts +25 -0
- package/src/FileUpload/hooks/validation/useFileValidationLogic.ts +107 -0
- package/src/FileUpload/hooks/validation/useValidationMessages.ts +92 -0
- package/src/FileUpload/hooks/validation/useValidationState.ts +171 -0
- package/src/FileUpload/index.ts +57 -0
- package/src/FileUpload/providers/FileUploadProvider.tsx +219 -0
- package/src/FileUpload/providers/UploadValidationProvider.tsx +159 -0
- package/src/FileUpload/testUtils/mockFilesAndImages.ts +64 -0
- package/src/FileUpload/testUtils/testUtils.ts +111 -0
- package/src/FileUpload/types/commonTypes.ts +267 -0
- package/src/FileUpload/types/index.ts +31 -0
- package/src/FileUpload/types/sharedTypes.ts +159 -0
- package/src/FileUpload/utils/constants.ts +79 -0
- package/src/FileUpload/utils/createMessageContext.ts +180 -0
- package/src/FileUpload/utils/getFileExtensionsFromAcceptedTypes.ts +73 -0
- package/src/FileUpload/utils/getFilePluralizationText.ts +68 -0
- package/src/FileUpload/utils/getMimeTypes.ts +26 -0
- package/src/FileUpload/utils/messageUtils.ts +41 -0
- package/src/FileUpload/utils/styles.ts +68 -0
- package/src/FormLabel/FormLabel.tsx +212 -0
- package/src/IconButton/IconButton.tsx +154 -0
- package/src/Icons/CreditCardIcon/CreditCardIcon.tsx +73 -0
- package/src/Icons/CreditCardIcon/cardIcons.tsx +270 -0
- package/src/Icons/IconBase.tsx +133 -0
- package/src/Icons/anyIcon.ts +3 -0
- package/src/Icons/generatedIcons/Archive.tsx +48 -0
- package/src/Icons/generatedIcons/ArrowClockwise.tsx +48 -0
- package/src/Icons/generatedIcons/ArrowDown.tsx +48 -0
- package/src/Icons/generatedIcons/ArrowLeft.tsx +48 -0
- package/src/Icons/generatedIcons/ArrowRight.tsx +48 -0
- package/src/Icons/generatedIcons/ArrowSquareOut.tsx +51 -0
- package/src/Icons/generatedIcons/ArrowSquareRight.tsx +51 -0
- package/src/Icons/generatedIcons/ArrowUp.tsx +48 -0
- package/src/Icons/generatedIcons/ArrowsCounterClockwise.tsx +48 -0
- package/src/Icons/generatedIcons/ArrowsLeftRight.tsx +48 -0
- package/src/Icons/generatedIcons/ArrowsOutCardinal.tsx +48 -0
- package/src/Icons/generatedIcons/Bank.tsx +48 -0
- package/src/Icons/generatedIcons/Bell.tsx +51 -0
- package/src/Icons/generatedIcons/BookBookmark.tsx +51 -0
- package/src/Icons/generatedIcons/BookmarksSimple.tsx +51 -0
- package/src/Icons/generatedIcons/Broadcast.tsx +48 -0
- package/src/Icons/generatedIcons/CalendarBlank.tsx +48 -0
- package/src/Icons/generatedIcons/CalendarStar.tsx +51 -0
- package/src/Icons/generatedIcons/Camera.tsx +51 -0
- package/src/Icons/generatedIcons/CaretDown.tsx +48 -0
- package/src/Icons/generatedIcons/CaretLeft.tsx +48 -0
- package/src/Icons/generatedIcons/CaretRight.tsx +48 -0
- package/src/Icons/generatedIcons/CaretUp.tsx +48 -0
- package/src/Icons/generatedIcons/Certificate.tsx +51 -0
- package/src/Icons/generatedIcons/ChartBar.tsx +48 -0
- package/src/Icons/generatedIcons/Check.tsx +51 -0
- package/src/Icons/generatedIcons/CheckCircle.tsx +48 -0
- package/src/Icons/generatedIcons/CirclesFour.tsx +51 -0
- package/src/Icons/generatedIcons/Clock.tsx +48 -0
- package/src/Icons/generatedIcons/ClockCountdown.tsx +48 -0
- package/src/Icons/generatedIcons/Close.tsx +51 -0
- package/src/Icons/generatedIcons/CloudArrowUp.tsx +51 -0
- package/src/Icons/generatedIcons/CloudWarning.tsx +51 -0
- package/src/Icons/generatedIcons/Code.tsx +48 -0
- package/src/Icons/generatedIcons/Compass.tsx +51 -0
- package/src/Icons/generatedIcons/Confetti.tsx +51 -0
- package/src/Icons/generatedIcons/Copy.tsx +48 -0
- package/src/Icons/generatedIcons/CornersOut.tsx +48 -0
- package/src/Icons/generatedIcons/CreditCard.tsx +48 -0
- package/src/Icons/generatedIcons/Crown.tsx +51 -0
- package/src/Icons/generatedIcons/CrownSimple.tsx +51 -0
- package/src/Icons/generatedIcons/CurrencyCircleDollar.tsx +48 -0
- package/src/Icons/generatedIcons/CurrencyDollarSimple.tsx +51 -0
- package/src/Icons/generatedIcons/Desktop.tsx +51 -0
- package/src/Icons/generatedIcons/Detective.tsx +51 -0
- package/src/Icons/generatedIcons/DotOutline.tsx +46 -0
- package/src/Icons/generatedIcons/DotsSixVertical.tsx +51 -0
- package/src/Icons/generatedIcons/DotsThreeOutline.tsx +51 -0
- package/src/Icons/generatedIcons/DotsThreeOutlineVertical.tsx +51 -0
- package/src/Icons/generatedIcons/DownloadSimple.tsx +51 -0
- package/src/Icons/generatedIcons/EnvelopeSimple.tsx +48 -0
- package/src/Icons/generatedIcons/Eraser.tsx +51 -0
- package/src/Icons/generatedIcons/Eye.tsx +51 -0
- package/src/Icons/generatedIcons/EyeSlash.tsx +51 -0
- package/src/Icons/generatedIcons/FacebookLogo.tsx +48 -0
- package/src/Icons/generatedIcons/FileArchive.tsx +48 -0
- package/src/Icons/generatedIcons/FileArrowDown.tsx +48 -0
- package/src/Icons/generatedIcons/FileCsv.tsx +48 -0
- package/src/Icons/generatedIcons/FilePdf.tsx +48 -0
- package/src/Icons/generatedIcons/FileText.tsx +48 -0
- package/src/Icons/generatedIcons/Files.tsx +51 -0
- package/src/Icons/generatedIcons/Fire.tsx +51 -0
- package/src/Icons/generatedIcons/Flag.tsx +51 -0
- package/src/Icons/generatedIcons/FlagBannerFold.tsx +48 -0
- package/src/Icons/generatedIcons/FloppyDisk.tsx +51 -0
- package/src/Icons/generatedIcons/Gauge.tsx +51 -0
- package/src/Icons/generatedIcons/Gavel.tsx +51 -0
- package/src/Icons/generatedIcons/Gear.tsx +51 -0
- package/src/Icons/generatedIcons/GlobeHemisphereWest.tsx +51 -0
- package/src/Icons/generatedIcons/GoogleLogo.tsx +48 -0
- package/src/Icons/generatedIcons/GridNine.tsx +51 -0
- package/src/Icons/generatedIcons/HandCoins.tsx +51 -0
- package/src/Icons/generatedIcons/HandbagSimple.tsx +51 -0
- package/src/Icons/generatedIcons/Headset.tsx +51 -0
- package/src/Icons/generatedIcons/HeartStraight.tsx +51 -0
- package/src/Icons/generatedIcons/HourglassLow.tsx +48 -0
- package/src/Icons/generatedIcons/House.tsx +51 -0
- package/src/Icons/generatedIcons/Image.tsx +51 -0
- package/src/Icons/generatedIcons/ImageSquare.tsx +51 -0
- package/src/Icons/generatedIcons/ImagesSquare.tsx +51 -0
- package/src/Icons/generatedIcons/Info.tsx +48 -0
- package/src/Icons/generatedIcons/InstagramLogo.tsx +51 -0
- package/src/Icons/generatedIcons/Lightning.tsx +48 -0
- package/src/Icons/generatedIcons/Link.tsx +51 -0
- package/src/Icons/generatedIcons/LinkedinLogo.tsx +51 -0
- package/src/Icons/generatedIcons/List.tsx +48 -0
- package/src/Icons/generatedIcons/Lock.tsx +51 -0
- package/src/Icons/generatedIcons/LockOpen.tsx +51 -0
- package/src/Icons/generatedIcons/MagnifyingGlass.tsx +48 -0
- package/src/Icons/generatedIcons/MapPin.tsx +51 -0
- package/src/Icons/generatedIcons/MapPinSimpleArea.tsx +48 -0
- package/src/Icons/generatedIcons/Medal.tsx +48 -0
- package/src/Icons/generatedIcons/Megaphone.tsx +48 -0
- package/src/Icons/generatedIcons/Minus.tsx +45 -0
- package/src/Icons/generatedIcons/Money.tsx +51 -0
- package/src/Icons/generatedIcons/Notches.tsx +48 -0
- package/src/Icons/generatedIcons/NotePencil.tsx +48 -0
- package/src/Icons/generatedIcons/Package.tsx +51 -0
- package/src/Icons/generatedIcons/PaintBrush.tsx +51 -0
- package/src/Icons/generatedIcons/PaperPlaneTilt.tsx +51 -0
- package/src/Icons/generatedIcons/Paperclip.tsx +51 -0
- package/src/Icons/generatedIcons/Pause.tsx +51 -0
- package/src/Icons/generatedIcons/PencilLine.tsx +51 -0
- package/src/Icons/generatedIcons/PencilRuler.tsx +51 -0
- package/src/Icons/generatedIcons/PencilSimple.tsx +51 -0
- package/src/Icons/generatedIcons/Phone.tsx +51 -0
- package/src/Icons/generatedIcons/PinterestLogo.tsx +51 -0
- package/src/Icons/generatedIcons/Play.tsx +51 -0
- package/src/Icons/generatedIcons/Plus.tsx +51 -0
- package/src/Icons/generatedIcons/PlusCircle.tsx +48 -0
- package/src/Icons/generatedIcons/Printer.tsx +51 -0
- package/src/Icons/generatedIcons/Question.tsx +48 -0
- package/src/Icons/generatedIcons/Receipt.tsx +51 -0
- package/src/Icons/generatedIcons/Rows.tsx +51 -0
- package/src/Icons/generatedIcons/SealCheck.tsx +51 -0
- package/src/Icons/generatedIcons/SelectionSlash.tsx +48 -0
- package/src/Icons/generatedIcons/ShareNetwork.tsx +51 -0
- package/src/Icons/generatedIcons/ShieldCheck.tsx +51 -0
- package/src/Icons/generatedIcons/ShieldStar.tsx +51 -0
- package/src/Icons/generatedIcons/ShoppingCart.tsx +48 -0
- package/src/Icons/generatedIcons/ShuffleAngular.tsx +48 -0
- package/src/Icons/generatedIcons/SidebarSimple.tsx +48 -0
- package/src/Icons/generatedIcons/SlidersHorizontal.tsx +51 -0
- package/src/Icons/generatedIcons/Smiley.tsx +48 -0
- package/src/Icons/generatedIcons/Sparkle.tsx +51 -0
- package/src/Icons/generatedIcons/SpinnerGap.tsx +48 -0
- package/src/Icons/generatedIcons/StackPlus.tsx +48 -0
- package/src/Icons/generatedIcons/Star.tsx +51 -0
- package/src/Icons/generatedIcons/Storefront.tsx +51 -0
- package/src/Icons/generatedIcons/Swap.tsx +51 -0
- package/src/Icons/generatedIcons/Tag.tsx +51 -0
- package/src/Icons/generatedIcons/ThumbsDown.tsx +48 -0
- package/src/Icons/generatedIcons/ThumbsUp.tsx +48 -0
- package/src/Icons/generatedIcons/Toolbox.tsx +48 -0
- package/src/Icons/generatedIcons/Trash.tsx +48 -0
- package/src/Icons/generatedIcons/TrendUp.tsx +48 -0
- package/src/Icons/generatedIcons/Trophy.tsx +51 -0
- package/src/Icons/generatedIcons/Truck.tsx +51 -0
- package/src/Icons/generatedIcons/UploadSimple.tsx +51 -0
- package/src/Icons/generatedIcons/User.tsx +48 -0
- package/src/Icons/generatedIcons/Users.tsx +48 -0
- package/src/Icons/generatedIcons/UsersThree.tsx +51 -0
- package/src/Icons/generatedIcons/VideoCamera.tsx +51 -0
- package/src/Icons/generatedIcons/Warning.tsx +51 -0
- package/src/Icons/generatedIcons/WarningCircle.tsx +48 -0
- package/src/Icons/generatedIcons/WifiHigh.tsx +51 -0
- package/src/Icons/generatedIcons/XCircle.tsx +48 -0
- package/src/Icons/generatedIcons/XLogo.tsx +48 -0
- package/src/Icons/generatedIcons/YoutubeLogo.tsx +51 -0
- package/src/Icons/importedIcons.ts +152 -0
- package/src/Icons/index.ts +149 -0
- package/src/Icons/socialIcons/appleSocialIcon.tsx +50 -0
- package/src/Icons/socialIcons/facebookSocialIcon.tsx +41 -0
- package/src/Icons/socialIcons/googleSocialIcon.tsx +134 -0
- package/src/ImageCluster/ImageCluster.tsx +125 -0
- package/src/ImageSlider/ImageSlider.tsx +582 -0
- package/src/ImageSlider/ImageSlider.types.ts +90 -0
- package/src/ImageSlider/components/IndexIndicator/IndexIndicator.tsx +21 -0
- package/src/ImageSlider/components/NavigationButtons/NavigationButtons.tsx +113 -0
- package/src/ImageSlider/components/ResponsiveImage/ResponsiveImage.tsx +114 -0
- package/src/ImageSlider/components/ResponsiveImage/index.ts +1 -0
- package/src/ImageSlider/components/Thumbnails/Thumbnails.tsx +184 -0
- package/src/ImageSlider/constants.ts +59 -0
- package/src/ImageSlider/hooks/index.ts +3 -0
- package/src/ImageSlider/hooks/useImageSlider.ts +57 -0
- package/src/ImageSlider/hooks/useImageSliderNavigation.ts +133 -0
- package/src/ImageSlider/hooks/useImageSliderScrollHandler.ts +171 -0
- package/src/ImageSlider/index.ts +3 -0
- package/src/ImageSlider/utils/imageOptimization.ts +97 -0
- package/src/ImageSlider/utils/index.ts +1 -0
- package/src/InlineNotification/InlineNotification.tsx +95 -0
- package/src/JumpMenu/JumpMenu.tsx +395 -0
- package/src/JumpMenu/components/JumpMenuItem/JumpMenuItem.tsx +62 -0
- package/src/JumpMenu/hooks/useContainerTracking.ts +171 -0
- package/src/JumpMenu/hooks/useIntersectionObserver.ts +77 -0
- package/src/JumpMenu/hooks/useKeyboardNavigation.ts +102 -0
- package/src/JumpMenu/hooks/useResizeObserver.ts +53 -0
- package/src/JumpMenu/hooks/useSectionObserver.ts +102 -0
- package/src/JumpMenu/index.ts +2 -0
- package/src/JumpMenu/types/index.ts +19 -0
- package/src/Loading/Loading.tsx +39 -0
- package/src/Loading/components/LoadingDot/LoadingDot.tsx +16 -0
- package/src/LoadingSpinner/LoadingSpinner.tsx +20 -0
- package/src/Menu/Menu.tsx +372 -0
- package/src/Menu/components/MenuDivider/MenuDivider.tsx +5 -0
- package/src/Menu/components/MenuItem/MenuItem.tsx +298 -0
- package/src/Menu/context/menuContext.tsx +20 -0
- package/src/Menu/hooks/useMenu.tsx +18 -0
- package/src/Menu/index.ts +3 -0
- package/src/Modal/ComposableModal.tsx +313 -0
- package/src/Modal/Modal.tsx +231 -0
- package/src/Modal/components/BackButton/BackButton.tsx +43 -0
- package/src/Modal/components/Backdrop/Backdrop.tsx +62 -0
- package/src/Modal/components/CloseButton/CloseButton.tsx +55 -0
- package/src/Modal/components/ModalActions/ModalActions.tsx +135 -0
- package/src/Modal/components/ModalContent/ModalContent.tsx +163 -0
- package/src/Modal/components/ModalHeader/ModalHeader.tsx +84 -0
- package/src/Modal/components/ModalHeader/hooks/useHeaderAnimation.tsx +49 -0
- package/src/Modal/components/ModalProgressSteps/ModalProgressSteps.tsx +26 -0
- package/src/Modal/components/ModalSubTitle/ModalSubTitle.tsx +29 -0
- package/src/Modal/components/ModalTitle/ModalTitle.tsx +22 -0
- package/src/Modal/components/PreventModalScroll/PreventModalScroll.tsx +106 -0
- package/src/Modal/components/index.ts +12 -0
- package/src/Modal/context.ts +33 -0
- package/src/Modal/hooks/useCloseModal.ts +133 -0
- package/src/NotificationBadge/NotificationBadge.tsx +34 -0
- package/src/Pagination/AdvancedPagination.tsx +48 -0
- package/src/Pagination/Pagination.tsx +216 -0
- package/src/Pagination/components/AdvancedPaginator/AdvancedPaginator.tsx +52 -0
- package/src/Pagination/components/AdvancedPaginator/components/PageSelect/PageSelect.tsx +43 -0
- package/src/Pagination/components/ItemCountDisplay/ItemCountDisplay.tsx +32 -0
- package/src/Pagination/components/ItemCountSelect/ItemCountSelect.tsx +33 -0
- package/src/Pagination/index.tsx +3 -0
- package/src/Pagination/paginationProvider.tsx +234 -0
- package/src/Pagination/utils.tsx +36 -0
- package/src/PhoneInput/PhoneInput.tsx +509 -0
- package/src/PhoneInput/useDropdownLogic.tsx +163 -0
- package/src/ProgressCircle/ProgressCircle.tsx +246 -0
- package/src/ProgressCircle/hooks/useProgressStatusTransitions.ts +49 -0
- package/src/ProgressCircle/utils/progressCircle.constants.ts +27 -0
- package/src/ProgressSteps/ProgressSteps.tsx +160 -0
- package/src/SaveConfetti/SaveConfetti.tsx +277 -0
- package/src/SaveConfetti/index.ts +2 -0
- package/src/SearchInput/SearchInput.tsx +236 -0
- package/src/SegmentedControl/SegmentedControl.tsx +111 -0
- package/src/SegmentedControl/SegmentedControlGroup.tsx +94 -0
- package/src/SegmentedControl/index.ts +4 -0
- package/src/Select/Select.tsx +154 -0
- package/src/Select/SelectAsync.tsx +13 -0
- package/src/Select/SelectAsyncCreatable.tsx +14 -0
- package/src/Select/SelectCreatable.tsx +12 -0
- package/src/Select/reexportedComponents.tsx +5 -0
- package/src/Select/selectComponents.tsx +306 -0
- package/src/Skeleton/Skeleton.tsx +13 -0
- package/src/SplitButton/SplitButton.tsx +298 -0
- package/src/SplitButton/SplitButtonTrigger.tsx +55 -0
- package/src/StarRating/StarRating.tsx +165 -0
- package/src/StarRating/components/StarComponent/StarComponent.tsx +44 -0
- package/src/Table/Table.tsx +474 -0
- package/src/Table/components/TableHeader/TableHeader.tsx +166 -0
- package/src/Table/components/TablePagination/TablePagination.tsx +18 -0
- package/src/Table/components/TablePagination/components/ItemCountDisplay/ItemCountDisplay.tsx +17 -0
- package/src/Table/components/TablePagination/components/ItemCountSelect/ItemCountSelect.tsx +31 -0
- package/src/Table/components/TablePagination/components/TablePaginator/TablePaginator.tsx +37 -0
- package/src/Table/components/TablePagination/components/TablePaginator/components/PageSelect/PageSelect.tsx +32 -0
- package/src/Table/components/TableRow/TableRows.tsx +147 -0
- package/src/Table/components/TableRow/components/TableRowCell/TableRowCell.tsx +49 -0
- package/src/Table/components/TableShadow/TableShadow.tsx +46 -0
- package/src/Table/index.ts +2 -0
- package/src/Table/sharedState.ts +30 -0
- package/src/Table/sharedStyles.ts +1 -0
- package/src/Table/types.ts +55 -0
- package/src/Tabs/Tabs.tsx +358 -0
- package/src/TextArea/TextArea.tsx +157 -0
- package/src/TextInput/TextInput.tsx +173 -0
- package/src/Toast/Toast.tsx +64 -0
- package/src/Toast/components/ToastContainer/ToastContainer.tsx +48 -0
- package/src/Toast/index.ts +2 -0
- package/src/Toast/types/role.ts +1 -0
- package/src/Toast/utils/getIcon.tsx +41 -0
- package/src/ToggleSwitch/ToggleSwitch.tsx +188 -0
- package/src/Tooltip/InfoIconTooltip.tsx +47 -0
- package/src/Tooltip/Tooltip.tsx +41 -0
- package/src/Typography/InlineButton/InlineButton.tsx +166 -0
- package/src/Typography/Links/Links.tsx +113 -0
- package/src/Typography/Text/Text.tsx +239 -0
- package/src/ViewMore/ViewMore.tsx +226 -0
- package/src/WebRTCPlayer/WebRTCPlayer.tsx +325 -0
- package/src/WebRTCPlayer/adaptor/NativeWebRTCAdaptor.ts +588 -0
- package/src/WebRTCPlayer/hooks/useWebRTCStream.ts +571 -0
- package/src/WebRTCPlayer/index.ts +22 -0
- package/src/WebRTCPlayer/types.ts +95 -0
- package/src/breakpoints/index.tsx +1 -0
- package/src/breakpoints/utils.tsx +50 -0
- package/src/declarations.d.ts +7 -0
- package/src/grid/gridHighlighter.tsx +83 -0
- package/src/grid/index.ts +3 -0
- package/src/grid/pageGrid.tsx +37 -0
- package/src/grid/useSubGridCSS.tsx +214 -0
- package/src/hooks/useHorizontalScrollFade.ts +44 -0
- package/src/hooks/usePrevious.ts +14 -0
- package/src/index.ts +351 -0
- package/src/intl/index.ts +4 -0
- package/src/intl/utils.ts +67 -0
- package/src/mixins/horizontalScrollFadeMixin.ts +56 -0
- package/src/mixins/index.ts +18 -0
- package/src/mixins/propMixins.ts +389 -0
- package/src/providers/createContextProvider.ts +22 -0
- package/src/providers/designSystemProvider.tsx +218 -0
- package/src/providers/errorBoundaryProvider.tsx +179 -0
- package/src/providers/featureFlagProvider.tsx +18 -0
- package/src/providers/gridSizeProvider.tsx +23 -0
- package/src/providers/index.ts +12 -0
- package/src/providers/linkProvider.tsx +32 -0
- package/src/providers/normalize.tsx +93 -0
- package/src/providers/targets/DatePickerTarget.tsx +10 -0
- package/src/providers/targets/ModalTarget.tsx +14 -0
- package/src/providers/targets/TimePickerTarget.tsx +10 -0
- package/src/providers/themeContext.tsx +24 -0
- package/src/providers/windowSizeProvider.tsx +125 -0
- package/src/spacing/index.ts +1 -0
- package/src/spacing/spacing.ts +11 -0
- package/src/utils/countriesWithISOCodes.ts +1419 -0
- package/src/utils/dateTimeFormat.ts +257 -0
- package/src/utils/effectEventListener.ts +11 -0
- package/src/utils/formatFileSize.ts +18 -0
- package/src/utils/isClientSide.ts +1 -0
- package/src/utils/keepTransition.ts +15 -0
- package/src/utils/nodeEnv.ts +9 -0
- package/src/utils/smoothScrollTo.ts +47 -0
- package/src/utils/utilityTypes.ts +13 -0
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { formatDistance, fromUnixTime, isToday as isTodayDateFns, isYesterday as isYesterdayDateFns } from 'date-fns';
|
|
2
|
+
import { format } from 'date-fns-tz';
|
|
3
|
+
|
|
4
|
+
export type TimeUnit = number | Date;
|
|
5
|
+
|
|
6
|
+
export const safeFromUnixTime = (time?: TimeUnit): Date => {
|
|
7
|
+
let date = new Date();
|
|
8
|
+
try {
|
|
9
|
+
// return a valid date if the value is falsey
|
|
10
|
+
if (!time) {
|
|
11
|
+
return date;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Check to see if time is a Date;
|
|
15
|
+
// @ts-expect-error - since time can be either a number or a date we will have a ts error checking this
|
|
16
|
+
if (typeof time.getMonth === 'function') {
|
|
17
|
+
return time as Date;
|
|
18
|
+
} else if (typeof time === 'number') {
|
|
19
|
+
date = fromUnixTime(time);
|
|
20
|
+
|
|
21
|
+
// in the case that the number is a JS style timestamp the date will be way in the future and so we should use new Date instead
|
|
22
|
+
if (date.getFullYear() > 10000) {
|
|
23
|
+
return new Date(time);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return date;
|
|
28
|
+
} catch (error) {
|
|
29
|
+
// eslint-disable-next-line no-console
|
|
30
|
+
console.log(error);
|
|
31
|
+
}
|
|
32
|
+
return date;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Formats the given timestamp into a string representation of month, day, year, and time.
|
|
37
|
+
*
|
|
38
|
+
* @param {number | Date} timestamp The timestamp to format, as a number or Date object.
|
|
39
|
+
* @param {boolean} [short=false] - Optional. If true, the date format will be abbreviated (e.g., "MMM d").
|
|
40
|
+
* @param {boolean} [timeZone="America/Denver"] - Optional. The time zone to use for the formatted date string.
|
|
41
|
+
* Otherwise, it will be in the long format (e.g., "MMMM d, yyyy, h:mm a zz").
|
|
42
|
+
* @returns {string} The formatted date string, e.g., "July 24, 2024, 3:38 PM MDT" for long format or "Jul 24" for short format.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* // Returns "July 24, 2024, 3:38 PM MDT"
|
|
46
|
+
* formatTimestamp(new Date(), { short: false, timeZone: 'America/Denver' });
|
|
47
|
+
*/
|
|
48
|
+
export const getMonthDayYearTime = (
|
|
49
|
+
timestamp: TimeUnit,
|
|
50
|
+
options: { short?: boolean; timeZone?: string } = {}
|
|
51
|
+
): string => {
|
|
52
|
+
return format(safeFromUnixTime(timestamp), `${options.short ? 'MMM' : 'MMMM'} d, yyyy, h:mm a zz`, {
|
|
53
|
+
timeZone: options.timeZone,
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Formats the given timestamp into a string representation of month, day, and year.
|
|
59
|
+
*
|
|
60
|
+
* @param {number | Date} timestamp - The timestamp to format, as a number or Date object.
|
|
61
|
+
* @param {boolean} [options.short=false] - If true, the month format will be abbreviated (e.g., "MMM"). Otherwise, it will be in the long format (e.g., "MMMM").
|
|
62
|
+
* @returns {string} The formatted string representation of the timestamp in the format "MMM d, yyyy" or "MMMM d, yyyy".
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* // Returns "July 24, 2024"
|
|
66
|
+
* getMonthDayYear(new Date(2024, 6, 24));
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
export const getMonthDayYear = (timestamp: TimeUnit, options: { short?: boolean } = {}): string =>
|
|
70
|
+
format(safeFromUnixTime(timestamp), `${options.short ? 'MMM' : 'MMMM'} d, yyyy`);
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Formats the given timestamp into a string representation of day, month, and year.
|
|
74
|
+
*
|
|
75
|
+
* @param {number | Date} timestamp - The timestamp to format, as a number or Date object.
|
|
76
|
+
* @param {boolean} [options.short=false] - If true, the month format will be abbreviated (e.g., "MMM"). Otherwise, it will be in the long format (e.g., "MMMM").
|
|
77
|
+
* @returns {string} The formatted string representation of the timestamp in the format "d MMM yyyy" or "d MMMM yyyy".
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* // Returns "24 July 2024"
|
|
81
|
+
* getDayMonthYear(new Date(2024, 6, 24));
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
export const getDayMonthYear = (timestamp: TimeUnit, options: { short?: boolean } = {}): string =>
|
|
85
|
+
format(safeFromUnixTime(timestamp), `d ${options.short ? 'MMM' : 'MMMM'} yyyy`);
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Formats the given timestamp into a string representation of day, month, year, and time.
|
|
89
|
+
*
|
|
90
|
+
* @param {number | Date} timestamp - The timestamp to format, as a number or Date object.
|
|
91
|
+
* @param {boolean} [short=false] - Optional. If true, the date format will be abbreviated (e.g., "d MMM").
|
|
92
|
+
* @param {boolean} [timeZone="America/Denver"] - Optional. The time zone to use for the formatted date string.
|
|
93
|
+
* Otherwise, it will be in the long format (e.g., "dd MMMM, yyyy, h:mm a").
|
|
94
|
+
* @returns {string} The formatted string representation of the timestamp.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* // Returns "24 July, 2024, 3:38 PM"
|
|
98
|
+
* formatDateTime(new Date(), {short: false, timeZone: 'America/Denver'});
|
|
99
|
+
*/
|
|
100
|
+
export const getDayMonthYearTime = (
|
|
101
|
+
timestamp: TimeUnit,
|
|
102
|
+
options: { short?: boolean; timeZone?: string } = {}
|
|
103
|
+
): string =>
|
|
104
|
+
format(safeFromUnixTime(timestamp), `${options.short ? 'd MMM' : 'dd MMMM'} yyyy, h:mm a zz`, {
|
|
105
|
+
timeZone: options.timeZone,
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Formats the given timestamp into a string representation of month and day.
|
|
110
|
+
*
|
|
111
|
+
* @param {number | Date} timestamp - The timestamp to format, as a number or Date object.
|
|
112
|
+
* @returns {string} The formatted string representation of the timestamp in the format "MMMM d".
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* // Returns "July 24"
|
|
116
|
+
* formatMonthDay(new Date());
|
|
117
|
+
*/
|
|
118
|
+
export const getMonthDay = (timestamp: TimeUnit): string => format(safeFromUnixTime(timestamp), 'MMMM dd');
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Formats the given timestamp into a string representation of month and day (abbreviated).
|
|
122
|
+
*
|
|
123
|
+
* @param {number | Date} timestamp - The timestamp to format, as a number or Date object.
|
|
124
|
+
* @returns {string} The formatted string representation of the timestamp in the format "MMM d".
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* // Returns "Jul 24"
|
|
128
|
+
* formatMonthDayAbbreviated(new Date());
|
|
129
|
+
*
|
|
130
|
+
*/
|
|
131
|
+
export const getMonthDayShort = (timestamp: TimeUnit): string => format(safeFromUnixTime(timestamp), 'MMM dd');
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Formats the given timestamp into a string representation of day and month (abbreviated).
|
|
135
|
+
*
|
|
136
|
+
* @param {number | Date} timestamp - The timestamp to format, as a number or Date object.
|
|
137
|
+
* @returns {string} The formatted string representation of the timestamp in the format "dd MMM".
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* // Returns "24 Jul"
|
|
141
|
+
* getDayMonthShort(new Date());
|
|
142
|
+
*/
|
|
143
|
+
export const getDayMonthShort = (timestamp: TimeUnit): string => format(safeFromUnixTime(timestamp), 'dd MMM');
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Formats the given timestamp into a string representation of day and month (abbreviated).
|
|
147
|
+
*
|
|
148
|
+
* @param {number | Date} timestamp - The timestamp to format, as a number or Date object.
|
|
149
|
+
* @returns {string} The formatted string representation of the timestamp in the format "dd MMMM".
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* // Returns "24 July"
|
|
153
|
+
* getDayMonthShort(new Date());
|
|
154
|
+
*/
|
|
155
|
+
export const getDayMonth = (timestamp: TimeUnit): string => format(safeFromUnixTime(timestamp), 'dd MMMM');
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Formats the given timestamp into a string representation of ISO date and time.
|
|
159
|
+
*
|
|
160
|
+
* @param {number | Date} timestamp - The timestamp to format, as a number or Date object.
|
|
161
|
+
* @param {Object} [options={}] - Optional settings.
|
|
162
|
+
* @param {string} [options.timeZone] - The time zone to use for formatting. Defaults to the local time zone if not specified.
|
|
163
|
+
* @returns {string} The formatted string representation of the timestamp in the format "yyyy-MM-dd h:mm a zz".
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* // Returns "2024-07-24 3:38 PM UTC" with specified time zone
|
|
167
|
+
* getISODateTime(new Date(), { timeZone: 'UTC' });
|
|
168
|
+
*/
|
|
169
|
+
export const getISODateTime = (timestamp: TimeUnit, options: { short?: boolean; timeZone?: string } = {}): string =>
|
|
170
|
+
options.short
|
|
171
|
+
? format(safeFromUnixTime(timestamp), 'yyyy-MM-dd', { timeZone: options.timeZone })
|
|
172
|
+
: format(safeFromUnixTime(timestamp), 'yyyy-MM-dd h:mm a zz', { timeZone: options.timeZone });
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Formats the given timestamp into a string representation of time.
|
|
176
|
+
*
|
|
177
|
+
* @param {number | Date} timestamp - The timestamp to format, as a number or Date object.
|
|
178
|
+
* @param {string} [options.timeZone] - The time zone to use for formatting. Defaults to the local time zone if not specified.
|
|
179
|
+
* @returns {string} The formatted string representation of the timestamp in the format "h:mm a zz".
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* // Returns "3:38 PM UTC" with specified time zone
|
|
183
|
+
* getTime(new Date(), { timeZone: 'UTC' });
|
|
184
|
+
*/
|
|
185
|
+
export const getTime = (timestamp: TimeUnit, options: { timeZone?: string } = {}): string =>
|
|
186
|
+
format(safeFromUnixTime(timestamp), 'h:mm a zz', { timeZone: options.timeZone });
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Formats the given timestamp into a string representation of the date in 'MM/dd/yyyy' format.
|
|
190
|
+
*
|
|
191
|
+
* @param {number | Date} timestamp - The timestamp to format, as a number or Date object.
|
|
192
|
+
* @returns {string} The formatted string representation of the timestamp in 'MM/dd/yyyy' format.
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* // Returns "07/24/2024"
|
|
196
|
+
* getSimpleDate(new Date(2024, 6, 24));
|
|
197
|
+
*/
|
|
198
|
+
|
|
199
|
+
export const getSimpleDate = (timestamp: TimeUnit): string => format(safeFromUnixTime(timestamp), 'MM/dd/yyyy');
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Calculates the time distance between a given timestamp and the current time.
|
|
203
|
+
* @param timestamp - The timestamp to calculate the distance from.
|
|
204
|
+
* @param short - Optional. If true, returns the short version of the time distance.
|
|
205
|
+
* @returns The time distance between the timestamp and the current time.
|
|
206
|
+
*/
|
|
207
|
+
export const formatTimeDistance = (timestamp: TimeUnit, options: { short?: boolean } = { short: false }) => {
|
|
208
|
+
const { short } = options;
|
|
209
|
+
const safeDate = safeFromUnixTime(timestamp);
|
|
210
|
+
|
|
211
|
+
const diff = new Date().getTime() - safeDate.getTime();
|
|
212
|
+
|
|
213
|
+
return formatDistance(safeFromUnixTime(timestamp), new Date(), {
|
|
214
|
+
addSuffix: Boolean(options.short),
|
|
215
|
+
locale: {
|
|
216
|
+
formatDistance: (token, count, options) => {
|
|
217
|
+
const isInTheFutureText = options?.comparison === 1 && !short ? 'In ' : '';
|
|
218
|
+
const inThePastText = options?.comparison === -1 && !short ? ' ago' : '';
|
|
219
|
+
let timeText = '';
|
|
220
|
+
|
|
221
|
+
if (token === 'lessThanXMinutes') {
|
|
222
|
+
const seconds = Math.round(Math.abs(diff / 1000));
|
|
223
|
+
timeText = short ? `${seconds}s` : seconds === 1 ? '1 second' : `${seconds} seconds`;
|
|
224
|
+
} else if (token === 'xMinutes') {
|
|
225
|
+
timeText = short ? `${count}m` : count === 1 ? '1 minute' : `${count} minutes`;
|
|
226
|
+
} else if (token === 'aboutXHours') {
|
|
227
|
+
timeText = short ? `${count}h` : count === 1 ? '1 hour' : `${count} hours`;
|
|
228
|
+
} else if (token === 'xDays' && count <= 7) {
|
|
229
|
+
if (count === 7) {
|
|
230
|
+
timeText = '1 week';
|
|
231
|
+
} else {
|
|
232
|
+
timeText = short ? `${count}d` : count === 1 ? '1 day' : `${count} days`;
|
|
233
|
+
}
|
|
234
|
+
} else {
|
|
235
|
+
return short ? getMonthDayShort(safeDate) : getMonthDayYear(safeDate);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
return `${isInTheFutureText}${timeText}${inThePastText}`;
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Determines whether the given timestamp represents a date that is today.
|
|
246
|
+
* @param timestamp - The timestamp to check.
|
|
247
|
+
* @returns A boolean indicating whether the timestamp represents a date that is today.
|
|
248
|
+
*/
|
|
249
|
+
|
|
250
|
+
export const isToday = (timestamp: TimeUnit): boolean => isTodayDateFns(safeFromUnixTime(timestamp));
|
|
251
|
+
/**
|
|
252
|
+
* Determines whether the given timestamp represents a date that is yesterday.
|
|
253
|
+
*
|
|
254
|
+
* @param timestamp - The timestamp to check.
|
|
255
|
+
* @returns A boolean indicating whether the timestamp represents a date that is yesterday.
|
|
256
|
+
*/
|
|
257
|
+
export const isYesterday = (timestamp: TimeUnit): boolean => isYesterdayDateFns(safeFromUnixTime(timestamp));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const effectEventListener = <T extends Window | Document, P extends Parameters<T['addEventListener']>>(
|
|
2
|
+
target: T,
|
|
3
|
+
event: P[0],
|
|
4
|
+
callback: P[1]
|
|
5
|
+
) => {
|
|
6
|
+
target.addEventListener(event, callback);
|
|
7
|
+
|
|
8
|
+
return () => {
|
|
9
|
+
target.removeEventListener(event, callback);
|
|
10
|
+
};
|
|
11
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const FILE_SIZE_UNITS = ['B', 'KB', 'MB', 'GB', 'TB'] as const;
|
|
2
|
+
|
|
3
|
+
export const formatFileSize = (bytes: number): string => {
|
|
4
|
+
if (bytes === 0) {
|
|
5
|
+
return '0 B';
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const exp = Math.floor(Math.log(bytes) / Math.log(1024));
|
|
9
|
+
const clampedExp = Math.min(exp, FILE_SIZE_UNITS.length - 1);
|
|
10
|
+
const size = bytes / Math.pow(1024, clampedExp);
|
|
11
|
+
const unit = FILE_SIZE_UNITS[clampedExp];
|
|
12
|
+
|
|
13
|
+
// For numbers less than 10, show one decimal place
|
|
14
|
+
// For larger numbers, round to whole number
|
|
15
|
+
const formatted = size < 10 ? size.toFixed(1) : Math.round(size);
|
|
16
|
+
|
|
17
|
+
return `${formatted} ${unit}`;
|
|
18
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const isClientSide = typeof window !== 'undefined';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare const process:
|
|
2
|
+
| {
|
|
3
|
+
env?: {
|
|
4
|
+
KEEP_TRANSITION?: string;
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
| undefined;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Test-only escape hatch, read at call time: Drawer specs set
|
|
11
|
+
* `process.env.KEEP_TRANSITION = 'true'` at runtime to opt back into CSS
|
|
12
|
+
* transitions. Unlike `nodeEnv` (a module-load-time read), a call-time read
|
|
13
|
+
* sees that mutation.
|
|
14
|
+
*/
|
|
15
|
+
export const keepTransition = () => (typeof process === 'undefined' ? undefined : process.env?.KEEP_TRANSITION);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Easing function for smooth scroll animation
|
|
3
|
+
* Uses cubic easing in-out curve
|
|
4
|
+
* @param t - Progress value between 0 and 1
|
|
5
|
+
* @returns Eased progress value
|
|
6
|
+
*/
|
|
7
|
+
const easeInOutCubic = (t: number): number => {
|
|
8
|
+
return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Smoothly scrolls the window to a specific vertical position using requestAnimationFrame
|
|
13
|
+
* @param targetY - The target vertical scroll position in pixels
|
|
14
|
+
* @param duration - The duration of the scroll animation in milliseconds (defaults to 300ms)
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* // Scroll to 500px from the top over 300ms
|
|
19
|
+
* smoothScrollTo(500);
|
|
20
|
+
*
|
|
21
|
+
* // Scroll to top of an element with custom duration
|
|
22
|
+
* const element = document.getElementById('my-element');
|
|
23
|
+
* if (element) {
|
|
24
|
+
* const targetY = element.getBoundingClientRect().top + window.scrollY;
|
|
25
|
+
* smoothScrollTo(targetY, 500);
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export const smoothScrollTo = (targetY: number, duration: number = 300): void => {
|
|
30
|
+
const startY = window.scrollY;
|
|
31
|
+
const distance = targetY - startY;
|
|
32
|
+
const startTime = performance.now();
|
|
33
|
+
|
|
34
|
+
const scroll = (currentTime: number) => {
|
|
35
|
+
const elapsed = currentTime - startTime;
|
|
36
|
+
const progress = Math.min(elapsed / duration, 1);
|
|
37
|
+
const easeProgress = easeInOutCubic(progress);
|
|
38
|
+
|
|
39
|
+
window.scrollTo(0, startY + distance * easeProgress);
|
|
40
|
+
|
|
41
|
+
if (progress < 1) {
|
|
42
|
+
requestAnimationFrame(scroll);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
requestAnimationFrame(scroll);
|
|
47
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allows for string replacement for typed string literals!
|
|
3
|
+
*
|
|
4
|
+
* Example: `Replace<'text' | 'toxt', 'xt', 'm'> -> 'tem' | 'tom'`
|
|
5
|
+
*
|
|
6
|
+
* @see https://stackoverflow.com/questions/71352751/string-replace-when-creating-string-literal-union-type-in-typescript
|
|
7
|
+
*/
|
|
8
|
+
export type Replace<
|
|
9
|
+
T extends string,
|
|
10
|
+
S extends string,
|
|
11
|
+
D extends string,
|
|
12
|
+
A extends string = '',
|
|
13
|
+
> = T extends `${infer L}${S}${infer R}` ? Replace<R, S, D, `${A}${L}${D}`> : `${A}${T}`;
|