@evolve.ui/core-components 1.0.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/Accordion--J93KLdp.d.cts +38 -0
- package/Accordion--J93KLdp.d.cts.map +1 -0
- package/Accordion-CdgdzUNC.d.mts +38 -0
- package/Accordion-CdgdzUNC.d.mts.map +1 -0
- package/AddressDisplay-C6av_Ava.d.cts +40 -0
- package/AddressDisplay-C6av_Ava.d.cts.map +1 -0
- package/AddressDisplay-C6av_Ava.d.mts +40 -0
- package/AddressDisplay-C6av_Ava.d.mts.map +1 -0
- package/AddressDisplay-CI1h4Pyv.cjs +1504 -0
- package/AddressDisplay-CI1h4Pyv.cjs.map +1 -0
- package/AddressDisplay-D5p9wJT6.mjs +1499 -0
- package/AddressDisplay-D5p9wJT6.mjs.map +1 -0
- package/AutomatedCarousel-BbH74siI.d.mts +48 -0
- package/AutomatedCarousel-BbH74siI.d.mts.map +1 -0
- package/AutomatedCarousel-CmVyxeSl.mjs +274 -0
- package/AutomatedCarousel-CmVyxeSl.mjs.map +1 -0
- package/AutomatedCarousel-Dhr1za_D.d.cts +48 -0
- package/AutomatedCarousel-Dhr1za_D.d.cts.map +1 -0
- package/AutomatedCarousel-ylYqkHPX.cjs +281 -0
- package/AutomatedCarousel-ylYqkHPX.cjs.map +1 -0
- package/Badge/ItemBadge.cjs +75 -0
- package/Badge/ItemBadge.cjs.map +1 -0
- package/Badge/ItemBadge.d.cts +2 -0
- package/Badge/ItemBadge.d.mts +2 -0
- package/Badge/ItemBadge.mjs +71 -0
- package/Badge/ItemBadge.mjs.map +1 -0
- package/Badge/LiveStatusBadge.cjs +78 -0
- package/Badge/LiveStatusBadge.cjs.map +1 -0
- package/Badge/LiveStatusBadge.d.cts +2 -0
- package/Badge/LiveStatusBadge.d.mts +2 -0
- package/Badge/LiveStatusBadge.mjs +74 -0
- package/Badge/LiveStatusBadge.mjs.map +1 -0
- package/Badge-C1BBu1fH.d.mts +71 -0
- package/Badge-C1BBu1fH.d.mts.map +1 -0
- package/Badge-lOH4Ssq_.d.cts +71 -0
- package/Badge-lOH4Ssq_.d.cts.map +1 -0
- package/Badge.cjs +72 -0
- package/Badge.cjs.map +1 -0
- package/Badge.d.cts +2 -0
- package/Badge.d.mts +2 -0
- package/Badge.mjs +68 -0
- package/Badge.mjs.map +1 -0
- package/BannerNotification-D9Sfa2si.cjs +156 -0
- package/BannerNotification-D9Sfa2si.cjs.map +1 -0
- package/BannerNotification-DM78PllX.d.cts +59 -0
- package/BannerNotification-DM78PllX.d.cts.map +1 -0
- package/BannerNotification-DM78PllX.d.mts +59 -0
- package/BannerNotification-DM78PllX.d.mts.map +1 -0
- package/BannerNotification-DzprO7bZ.mjs +151 -0
- package/BannerNotification-DzprO7bZ.mjs.map +1 -0
- package/BottomSheet-ZV_eq3xt.mjs +1708 -0
- package/BottomSheet-ZV_eq3xt.mjs.map +1 -0
- package/BottomSheet-emWP9Fct.cjs +1715 -0
- package/BottomSheet-emWP9Fct.cjs.map +1 -0
- package/Breadcrumbs-7jTSZ7NM.cjs +98 -0
- package/Breadcrumbs-7jTSZ7NM.cjs.map +1 -0
- package/Breadcrumbs-CopNM2AH.d.cts +30 -0
- package/Breadcrumbs-CopNM2AH.d.cts.map +1 -0
- package/Breadcrumbs-CopNM2AH.d.mts +30 -0
- package/Breadcrumbs-CopNM2AH.d.mts.map +1 -0
- package/Breadcrumbs-blgWG9cP.mjs +93 -0
- package/Breadcrumbs-blgWG9cP.mjs.map +1 -0
- package/Button-B9vfIXTi.d.cts +12 -0
- package/Button-B9vfIXTi.d.cts.map +1 -0
- package/Button-Bitf-VVv.d.mts +12 -0
- package/Button-Bitf-VVv.d.mts.map +1 -0
- package/Button.cjs +102 -0
- package/Button.cjs.map +1 -0
- package/Button.d.cts +2 -0
- package/Button.d.mts +2 -0
- package/Button.mjs +98 -0
- package/Button.mjs.map +1 -0
- package/Button.types-CjidejRG.d.cts +79 -0
- package/Button.types-CjidejRG.d.cts.map +1 -0
- package/Button.types-CyzsUcMe.d.mts +79 -0
- package/Button.types-CyzsUcMe.d.mts.map +1 -0
- package/Callout-BDrz5jjK.d.mts +45 -0
- package/Callout-BDrz5jjK.d.mts.map +1 -0
- package/Callout-BiFCfawA.d.cts +45 -0
- package/Callout-BiFCfawA.d.cts.map +1 -0
- package/Callout-DrWwRGi4.cjs +132 -0
- package/Callout-DrWwRGi4.cjs.map +1 -0
- package/Callout-Olv0CM82.mjs +127 -0
- package/Callout-Olv0CM82.mjs.map +1 -0
- package/Callout.cjs +8 -0
- package/Callout.d.cts +2 -0
- package/Callout.d.mts +2 -0
- package/Callout.mjs +4 -0
- package/CardGrid-BhfrwrN0.d.cts +72 -0
- package/CardGrid-BhfrwrN0.d.cts.map +1 -0
- package/CardGrid-BpX_oOS4.mjs +175 -0
- package/CardGrid-BpX_oOS4.mjs.map +1 -0
- package/CardGrid-CHZSF83h.d.mts +72 -0
- package/CardGrid-CHZSF83h.d.mts.map +1 -0
- package/CardGrid-CXi9XvDo.cjs +180 -0
- package/CardGrid-CXi9XvDo.cjs.map +1 -0
- package/Carousel-8CbTiwMk.mjs +462 -0
- package/Carousel-8CbTiwMk.mjs.map +1 -0
- package/Carousel-Du89BCCK.cjs +487 -0
- package/Carousel-Du89BCCK.cjs.map +1 -0
- package/CheckCircle-BcTMEm4l.mjs +42 -0
- package/CheckCircle-BcTMEm4l.mjs.map +1 -0
- package/CheckCircle-BjBbSga6.cjs +49 -0
- package/CheckCircle-BjBbSga6.cjs.map +1 -0
- package/Checkbox.cjs +13 -0
- package/Checkbox.d.cts +2 -0
- package/Checkbox.d.mts +2 -0
- package/Checkbox.mjs +3 -0
- package/Chip-UMJoX3ST.d.cts +38 -0
- package/Chip-UMJoX3ST.d.cts.map +1 -0
- package/Chip-giQtR8GC.d.mts +38 -0
- package/Chip-giQtR8GC.d.mts.map +1 -0
- package/ChipGroup-DIyCVKZm.d.cts +24 -0
- package/ChipGroup-DIyCVKZm.d.cts.map +1 -0
- package/ChipGroup-VGpv5cHt.d.mts +24 -0
- package/ChipGroup-VGpv5cHt.d.mts.map +1 -0
- package/ChoiceListItem-BqZ3bIj9.mjs +168 -0
- package/ChoiceListItem-BqZ3bIj9.mjs.map +1 -0
- package/ChoiceListItem-D_74Zcpd.cjs +209 -0
- package/ChoiceListItem-D_74Zcpd.cjs.map +1 -0
- package/Collapsible-Bbs4SWEA.d.cts +18 -0
- package/Collapsible-Bbs4SWEA.d.cts.map +1 -0
- package/Collapsible-Bbs4SWEA.d.mts +18 -0
- package/Collapsible-Bbs4SWEA.d.mts.map +1 -0
- package/Confetti--vMcCOQ7.cjs +166 -0
- package/Confetti--vMcCOQ7.cjs.map +1 -0
- package/Confetti-Csdjmzfv.mjs +161 -0
- package/Confetti-Csdjmzfv.mjs.map +1 -0
- package/ContentPager-AM9sSsgG.d.cts +37 -0
- package/ContentPager-AM9sSsgG.d.cts.map +1 -0
- package/ContentPager-B9UIPahb.mjs +138 -0
- package/ContentPager-B9UIPahb.mjs.map +1 -0
- package/ContentPager-BJo1L64Y.cjs +158 -0
- package/ContentPager-BJo1L64Y.cjs.map +1 -0
- package/ContentPager-DuxgJP42.d.mts +37 -0
- package/ContentPager-DuxgJP42.d.mts.map +1 -0
- package/CookieConsent-CIwm0bTz.mjs +401 -0
- package/CookieConsent-CIwm0bTz.mjs.map +1 -0
- package/CookieConsent-PIglB_bb.cjs +430 -0
- package/CookieConsent-PIglB_bb.cjs.map +1 -0
- package/Countdown-BaqV0LJL.d.mts +45 -0
- package/Countdown-BaqV0LJL.d.mts.map +1 -0
- package/Countdown-D4-QPv6V.cjs +181 -0
- package/Countdown-D4-QPv6V.cjs.map +1 -0
- package/Countdown-Dw5j-JJ4.d.cts +45 -0
- package/Countdown-Dw5j-JJ4.d.cts.map +1 -0
- package/Countdown-Hiu5EYUI.mjs +174 -0
- package/Countdown-Hiu5EYUI.mjs.map +1 -0
- package/Countdown.types-B7yecprx.d.cts +8 -0
- package/Countdown.types-B7yecprx.d.cts.map +1 -0
- package/Countdown.types-B7yecprx.d.mts +8 -0
- package/Countdown.types-B7yecprx.d.mts.map +1 -0
- package/CreditCardIcon-DirCX2rx.d.cts +29 -0
- package/CreditCardIcon-DirCX2rx.d.cts.map +1 -0
- package/CreditCardIcon-DirCX2rx.d.mts +29 -0
- package/CreditCardIcon-DirCX2rx.d.mts.map +1 -0
- package/CreditCardIcon-OqdAEE3e.cjs +281 -0
- package/CreditCardIcon-OqdAEE3e.cjs.map +1 -0
- package/CreditCardIcon-rpcjx4S_.mjs +270 -0
- package/CreditCardIcon-rpcjx4S_.mjs.map +1 -0
- package/DateInput-B8XQZPTx.d.cts +34 -0
- package/DateInput-B8XQZPTx.d.cts.map +1 -0
- package/DateInput-CfNmywqQ.d.mts +34 -0
- package/DateInput-CfNmywqQ.d.mts.map +1 -0
- package/DatePickerTarget-BcX_noF3.d.cts +14 -0
- package/DatePickerTarget-BcX_noF3.d.cts.map +1 -0
- package/DatePickerTarget-BcX_noF3.d.mts +14 -0
- package/DatePickerTarget-BcX_noF3.d.mts.map +1 -0
- package/DatePickerTarget-CKni-6Rq.mjs +14 -0
- package/DatePickerTarget-CKni-6Rq.mjs.map +1 -0
- package/DatePickerTarget-D_gR7380.cjs +25 -0
- package/DatePickerTarget-D_gR7380.cjs.map +1 -0
- package/Drawer-9HFG45OA.cjs +259 -0
- package/Drawer-9HFG45OA.cjs.map +1 -0
- package/Drawer-BkCPfK6P.mjs +254 -0
- package/Drawer-BkCPfK6P.mjs.map +1 -0
- package/Drawer-CFZbwg0R.d.cts +231 -0
- package/Drawer-CFZbwg0R.d.cts.map +1 -0
- package/Drawer-CFZbwg0R.d.mts +231 -0
- package/Drawer-CFZbwg0R.d.mts.map +1 -0
- package/EducationalPopover-CLNgGomH.d.cts +48 -0
- package/EducationalPopover-CLNgGomH.d.cts.map +1 -0
- package/EducationalPopover-DP63Yqlm.d.mts +48 -0
- package/EducationalPopover-DP63Yqlm.d.mts.map +1 -0
- package/FavoriteButton-BRY8FVpV.d.mts +142 -0
- package/FavoriteButton-BRY8FVpV.d.mts.map +1 -0
- package/FavoriteButton-CC3qL0lR.mjs +199 -0
- package/FavoriteButton-CC3qL0lR.mjs.map +1 -0
- package/FavoriteButton-CowOPoqo.d.cts +142 -0
- package/FavoriteButton-CowOPoqo.d.cts.map +1 -0
- package/FavoriteButton-DliYzkfu.cjs +204 -0
- package/FavoriteButton-DliYzkfu.cjs.map +1 -0
- package/FeatureFlagDevToolsUI-B13AuQ2A.mjs +276 -0
- package/FeatureFlagDevToolsUI-B13AuQ2A.mjs.map +1 -0
- package/FeatureFlagDevToolsUI-CutvngLI.d.cts +39 -0
- package/FeatureFlagDevToolsUI-CutvngLI.d.cts.map +1 -0
- package/FeatureFlagDevToolsUI-CutvngLI.d.mts +39 -0
- package/FeatureFlagDevToolsUI-CutvngLI.d.mts.map +1 -0
- package/FeatureFlagDevToolsUI-MBFES3GM.cjs +281 -0
- package/FeatureFlagDevToolsUI-MBFES3GM.cjs.map +1 -0
- package/FileUpload--e_UJ_ek.cjs +1771 -0
- package/FileUpload--e_UJ_ek.cjs.map +1 -0
- package/FileUpload-p_pl9NXr.mjs +1706 -0
- package/FileUpload-p_pl9NXr.mjs.map +1 -0
- package/FormLabel-D4602qfd.d.cts +140 -0
- package/FormLabel-D4602qfd.d.cts.map +1 -0
- package/FormLabel-D4602qfd.d.mts +140 -0
- package/FormLabel-D4602qfd.d.mts.map +1 -0
- package/IconBase-C_Lx9rDx.d.cts +89 -0
- package/IconBase-C_Lx9rDx.d.cts.map +1 -0
- package/IconBase-C_Lx9rDx.d.mts +89 -0
- package/IconBase-C_Lx9rDx.d.mts.map +1 -0
- package/IconButton-DHTn5DQ_.d.mts +40 -0
- package/IconButton-DHTn5DQ_.d.mts.map +1 -0
- package/IconButton-Df9usxq_.d.cts +40 -0
- package/IconButton-Df9usxq_.d.cts.map +1 -0
- package/IconButton.cjs +68 -0
- package/IconButton.cjs.map +1 -0
- package/IconButton.d.cts +2 -0
- package/IconButton.d.mts +2 -0
- package/IconButton.mjs +64 -0
- package/IconButton.mjs.map +1 -0
- package/Icons/CreditCardIcon.cjs +7 -0
- package/Icons/CreditCardIcon.d.cts +2 -0
- package/Icons/CreditCardIcon.d.mts +2 -0
- package/Icons/CreditCardIcon.mjs +2 -0
- package/Icons/IconBase.cjs +60 -0
- package/Icons/IconBase.cjs.map +1 -0
- package/Icons/IconBase.d.cts +2 -0
- package/Icons/IconBase.d.mts +2 -0
- package/Icons/IconBase.mjs +54 -0
- package/Icons/IconBase.mjs.map +1 -0
- package/Icons/anyIcon.cjs +0 -0
- package/Icons/anyIcon.d.cts +2 -0
- package/Icons/anyIcon.d.mts +2 -0
- package/Icons/anyIcon.mjs +1 -0
- package/Icons/socialIcons/appleSocialIcon.cjs +48 -0
- package/Icons/socialIcons/appleSocialIcon.cjs.map +1 -0
- package/Icons/socialIcons/appleSocialIcon.d.cts +19 -0
- package/Icons/socialIcons/appleSocialIcon.d.cts.map +1 -0
- package/Icons/socialIcons/appleSocialIcon.d.mts +19 -0
- package/Icons/socialIcons/appleSocialIcon.d.mts.map +1 -0
- package/Icons/socialIcons/appleSocialIcon.mjs +42 -0
- package/Icons/socialIcons/appleSocialIcon.mjs.map +1 -0
- package/Icons/socialIcons/facebookSocialIcon.cjs +41 -0
- package/Icons/socialIcons/facebookSocialIcon.cjs.map +1 -0
- package/Icons/socialIcons/facebookSocialIcon.d.cts +14 -0
- package/Icons/socialIcons/facebookSocialIcon.d.cts.map +1 -0
- package/Icons/socialIcons/facebookSocialIcon.d.mts +14 -0
- package/Icons/socialIcons/facebookSocialIcon.d.mts.map +1 -0
- package/Icons/socialIcons/facebookSocialIcon.mjs +36 -0
- package/Icons/socialIcons/facebookSocialIcon.mjs.map +1 -0
- package/Icons/socialIcons/googleSocialIcon.cjs +135 -0
- package/Icons/socialIcons/googleSocialIcon.cjs.map +1 -0
- package/Icons/socialIcons/googleSocialIcon.d.cts +19 -0
- package/Icons/socialIcons/googleSocialIcon.d.cts.map +1 -0
- package/Icons/socialIcons/googleSocialIcon.d.mts +19 -0
- package/Icons/socialIcons/googleSocialIcon.d.mts.map +1 -0
- package/Icons/socialIcons/googleSocialIcon.mjs +129 -0
- package/Icons/socialIcons/googleSocialIcon.mjs.map +1 -0
- package/Icons.cjs +5489 -0
- package/Icons.cjs.map +1 -0
- package/Icons.d.cts +2 -0
- package/Icons.d.mts +2 -0
- package/Icons.mjs +5335 -0
- package/Icons.mjs.map +1 -0
- package/ImageCluster-BXaQi8SB.d.cts +24 -0
- package/ImageCluster-BXaQi8SB.d.cts.map +1 -0
- package/ImageCluster-BXaQi8SB.d.mts +24 -0
- package/ImageCluster-BXaQi8SB.d.mts.map +1 -0
- package/ImageSlider-BidXfnLj.cjs +861 -0
- package/ImageSlider-BidXfnLj.cjs.map +1 -0
- package/ImageSlider-CDrg_TbL.mjs +838 -0
- package/ImageSlider-CDrg_TbL.mjs.map +1 -0
- package/InfoIconTooltip-CZax9TVq.d.cts +27 -0
- package/InfoIconTooltip-CZax9TVq.d.cts.map +1 -0
- package/InfoIconTooltip-Ca4AHkY2.d.mts +27 -0
- package/InfoIconTooltip-Ca4AHkY2.d.mts.map +1 -0
- package/InfoIconTooltip.cjs +29 -0
- package/InfoIconTooltip.cjs.map +1 -0
- package/InfoIconTooltip.d.cts +2 -0
- package/InfoIconTooltip.d.mts +2 -0
- package/InfoIconTooltip.mjs +25 -0
- package/InfoIconTooltip.mjs.map +1 -0
- package/InlineButton-CRLbNJZ3.d.mts +68 -0
- package/InlineButton-CRLbNJZ3.d.mts.map +1 -0
- package/InlineButton-DoXGLiSE.d.cts +68 -0
- package/InlineButton-DoXGLiSE.d.cts.map +1 -0
- package/InlineNotification--hYpy2m2.d.cts +18 -0
- package/InlineNotification--hYpy2m2.d.cts.map +1 -0
- package/InlineNotification--hYpy2m2.d.mts +18 -0
- package/InlineNotification--hYpy2m2.d.mts.map +1 -0
- package/Input.cjs +104 -0
- package/Input.cjs.map +1 -0
- package/Input.d.cts +2 -0
- package/Input.d.mts +2 -0
- package/Input.mjs +100 -0
- package/Input.mjs.map +1 -0
- package/ItemBadge-D1S8YsIy.d.cts +46 -0
- package/ItemBadge-D1S8YsIy.d.cts.map +1 -0
- package/ItemBadge-D1S8YsIy.d.mts +46 -0
- package/ItemBadge-D1S8YsIy.d.mts.map +1 -0
- package/JumpMenu-BXYZnPIH.cjs +499 -0
- package/JumpMenu-BXYZnPIH.cjs.map +1 -0
- package/JumpMenu-DcZjAiej.mjs +494 -0
- package/JumpMenu-DcZjAiej.mjs.map +1 -0
- package/Links-Ch0YdIz6.d.cts +214 -0
- package/Links-Ch0YdIz6.d.cts.map +1 -0
- package/Links-Ch0YdIz6.d.mts +214 -0
- package/Links-Ch0YdIz6.d.mts.map +1 -0
- package/LiveStatusBadge-D1TX11B6.d.cts +53 -0
- package/LiveStatusBadge-D1TX11B6.d.cts.map +1 -0
- package/LiveStatusBadge-D1TX11B6.d.mts +53 -0
- package/LiveStatusBadge-D1TX11B6.d.mts.map +1 -0
- package/Loading-B9LLlAyM.d.cts +19 -0
- package/Loading-B9LLlAyM.d.cts.map +1 -0
- package/Loading-B9LLlAyM.d.mts +19 -0
- package/Loading-B9LLlAyM.d.mts.map +1 -0
- package/Loading-BL7_u25j.cjs +47 -0
- package/Loading-BL7_u25j.cjs.map +1 -0
- package/Loading-BenQpF_w.mjs +42 -0
- package/Loading-BenQpF_w.mjs.map +1 -0
- package/LoadingSpinner-BWwhuAGb.d.mts +16 -0
- package/LoadingSpinner-BWwhuAGb.d.mts.map +1 -0
- package/LoadingSpinner-DjC4uC_2.d.cts +16 -0
- package/LoadingSpinner-DjC4uC_2.d.cts.map +1 -0
- package/LoadingSpinner.cjs +25 -0
- package/LoadingSpinner.cjs.map +1 -0
- package/LoadingSpinner.d.cts +2 -0
- package/LoadingSpinner.d.mts +2 -0
- package/LoadingSpinner.mjs +21 -0
- package/LoadingSpinner.mjs.map +1 -0
- package/Menu-ClUogmwE.cjs +385 -0
- package/Menu-ClUogmwE.cjs.map +1 -0
- package/Menu-Cxu8CaX1.mjs +368 -0
- package/Menu-Cxu8CaX1.mjs.map +1 -0
- package/Modal-C6gatdtT.mjs +301 -0
- package/Modal-C6gatdtT.mjs.map +1 -0
- package/Modal-CiBqXyiK.cjs +306 -0
- package/Modal-CiBqXyiK.cjs.map +1 -0
- package/Modal-DM0aXJZ5.d.cts +265 -0
- package/Modal-DM0aXJZ5.d.cts.map +1 -0
- package/Modal-DM0aXJZ5.d.mts +265 -0
- package/Modal-DM0aXJZ5.d.mts.map +1 -0
- package/ModalTarget-CD0Nmzfb.d.cts +14 -0
- package/ModalTarget-CD0Nmzfb.d.cts.map +1 -0
- package/ModalTarget-CD0Nmzfb.d.mts +14 -0
- package/ModalTarget-CD0Nmzfb.d.mts.map +1 -0
- package/NotificationBadge-B442UBjI.d.cts +22 -0
- package/NotificationBadge-B442UBjI.d.cts.map +1 -0
- package/NotificationBadge-B442UBjI.d.mts +22 -0
- package/NotificationBadge-B442UBjI.d.mts.map +1 -0
- package/Pagination-DIpGKMLz.mjs +386 -0
- package/Pagination-DIpGKMLz.mjs.map +1 -0
- package/Pagination-bAtbN478.cjs +409 -0
- package/Pagination-bAtbN478.cjs.map +1 -0
- package/PhoneInput-B5pkpkdt.mjs +398 -0
- package/PhoneInput-B5pkpkdt.mjs.map +1 -0
- package/PhoneInput-BXnkBME4.d.mts +70 -0
- package/PhoneInput-BXnkBME4.d.mts.map +1 -0
- package/PhoneInput-Bkrbrins.d.cts +70 -0
- package/PhoneInput-Bkrbrins.d.cts.map +1 -0
- package/PhoneInput-CUMPOSxJ.cjs +408 -0
- package/PhoneInput-CUMPOSxJ.cjs.map +1 -0
- package/ProgressCircle-B2dfVdH-.d.cts +50 -0
- package/ProgressCircle-B2dfVdH-.d.cts.map +1 -0
- package/ProgressCircle-BC81D9sU.cjs +196 -0
- package/ProgressCircle-BC81D9sU.cjs.map +1 -0
- package/ProgressCircle-CxrflaLd.d.mts +50 -0
- package/ProgressCircle-CxrflaLd.d.mts.map +1 -0
- package/ProgressCircle-ae8cvZhe.mjs +191 -0
- package/ProgressCircle-ae8cvZhe.mjs.map +1 -0
- package/ProgressSteps-C3xJUDTs.d.mts +32 -0
- package/ProgressSteps-C3xJUDTs.d.mts.map +1 -0
- package/ProgressSteps-Ls0XahjM.d.cts +32 -0
- package/ProgressSteps-Ls0XahjM.d.cts.map +1 -0
- package/Radio.cjs +13 -0
- package/Radio.d.cts +2 -0
- package/Radio.d.mts +2 -0
- package/Radio.mjs +3 -0
- package/SaveConfetti-DI0MTd63.mjs +179 -0
- package/SaveConfetti-DI0MTd63.mjs.map +1 -0
- package/SaveConfetti-DSJtuE3b.cjs +184 -0
- package/SaveConfetti-DSJtuE3b.cjs.map +1 -0
- package/SearchInput-DYIPC8Cd.d.cts +126 -0
- package/SearchInput-DYIPC8Cd.d.cts.map +1 -0
- package/SearchInput-IfEWePDQ.d.mts +126 -0
- package/SearchInput-IfEWePDQ.d.mts.map +1 -0
- package/SegmentedControl-B5FZ0uX8.cjs +107 -0
- package/SegmentedControl-B5FZ0uX8.cjs.map +1 -0
- package/SegmentedControl-DHf4SQQL.mjs +96 -0
- package/SegmentedControl-DHf4SQQL.mjs.map +1 -0
- package/Select-BXDjzyDs.cjs +248 -0
- package/Select-BXDjzyDs.cjs.map +1 -0
- package/Select-BkZu8OLs.mjs +241 -0
- package/Select-BkZu8OLs.mjs.map +1 -0
- package/Select-g4yFQq1-.d.mts +36 -0
- package/Select-g4yFQq1-.d.mts.map +1 -0
- package/Select-ghtIe-gD.d.cts +36 -0
- package/Select-ghtIe-gD.d.cts.map +1 -0
- package/SelectAsync-267GxTnI.d.cts +11 -0
- package/SelectAsync-267GxTnI.d.cts.map +1 -0
- package/SelectAsync-CLcESc8k.d.mts +11 -0
- package/SelectAsync-CLcESc8k.d.mts.map +1 -0
- package/SelectAsyncCreatable-B2gB_MWk.d.mts +11 -0
- package/SelectAsyncCreatable-B2gB_MWk.d.mts.map +1 -0
- package/SelectAsyncCreatable-BhuvLhbk.d.cts +11 -0
- package/SelectAsyncCreatable-BhuvLhbk.d.cts.map +1 -0
- package/SelectCreatable-C87i1L43.d.cts +11 -0
- package/SelectCreatable-C87i1L43.d.cts.map +1 -0
- package/SelectCreatable-CNVa1sx-.d.mts +11 -0
- package/SelectCreatable-CNVa1sx-.d.mts.map +1 -0
- package/SingleCard-DPaHU2wR.d.mts +19 -0
- package/SingleCard-DPaHU2wR.d.mts.map +1 -0
- package/SingleCard-X1dP0AHZ.d.cts +19 -0
- package/SingleCard-X1dP0AHZ.d.cts.map +1 -0
- package/Skeleton-40Vi20JV.d.cts +15 -0
- package/Skeleton-40Vi20JV.d.cts.map +1 -0
- package/Skeleton-40Vi20JV.d.mts +15 -0
- package/Skeleton-40Vi20JV.d.mts.map +1 -0
- package/SplitButton-DK-LdIwN.d.cts +80 -0
- package/SplitButton-DK-LdIwN.d.cts.map +1 -0
- package/SplitButton-DK-LdIwN.d.mts +80 -0
- package/SplitButton-DK-LdIwN.d.mts.map +1 -0
- package/SplitButton-DcmmLW8j.cjs +184 -0
- package/SplitButton-DcmmLW8j.cjs.map +1 -0
- package/SplitButton-WE5ymwCQ.mjs +179 -0
- package/SplitButton-WE5ymwCQ.mjs.map +1 -0
- package/StarRating-CRGx_jeU.mjs +81 -0
- package/StarRating-CRGx_jeU.mjs.map +1 -0
- package/StarRating-Dski54FS.cjs +86 -0
- package/StarRating-Dski54FS.cjs.map +1 -0
- package/StarRating-Dx1nbkcG.d.mts +89 -0
- package/StarRating-Dx1nbkcG.d.mts.map +1 -0
- package/StarRating-TfkOMATk.d.cts +89 -0
- package/StarRating-TfkOMATk.d.cts.map +1 -0
- package/SuggestionChip-BLq_0VFE.d.cts +13 -0
- package/SuggestionChip-BLq_0VFE.d.cts.map +1 -0
- package/SuggestionChip-CilkTYTJ.d.mts +13 -0
- package/SuggestionChip-CilkTYTJ.d.mts.map +1 -0
- package/Table-CLlDragJ.cjs +500 -0
- package/Table-CLlDragJ.cjs.map +1 -0
- package/Table-M-rANdMt.mjs +495 -0
- package/Table-M-rANdMt.mjs.map +1 -0
- package/Tabs-DRT-IQZk.d.cts +41 -0
- package/Tabs-DRT-IQZk.d.cts.map +1 -0
- package/Tabs-DRT-IQZk.d.mts +41 -0
- package/Tabs-DRT-IQZk.d.mts.map +1 -0
- package/Text-BVoakc0X.d.cts +63 -0
- package/Text-BVoakc0X.d.cts.map +1 -0
- package/Text-OlyNC1yj.d.mts +63 -0
- package/Text-OlyNC1yj.d.mts.map +1 -0
- package/TextArea-C-a06VpC.d.cts +58 -0
- package/TextArea-C-a06VpC.d.cts.map +1 -0
- package/TextArea-CTHcW_IE.d.mts +58 -0
- package/TextArea-CTHcW_IE.d.mts.map +1 -0
- package/TextInput-BhkeQZh4.d.cts +47 -0
- package/TextInput-BhkeQZh4.d.cts.map +1 -0
- package/TextInput-CWCeR18b.d.mts +47 -0
- package/TextInput-CWCeR18b.d.mts.map +1 -0
- package/Thumbnails-B-eOrf55.d.cts +226 -0
- package/Thumbnails-B-eOrf55.d.cts.map +1 -0
- package/Thumbnails-B-eOrf55.d.mts +226 -0
- package/Thumbnails-B-eOrf55.d.mts.map +1 -0
- package/TimePickerTarget-BHceCsfc.cjs +25 -0
- package/TimePickerTarget-BHceCsfc.cjs.map +1 -0
- package/TimePickerTarget-DlbryTho.mjs +14 -0
- package/TimePickerTarget-DlbryTho.mjs.map +1 -0
- package/TimePickerTarget-pYRxAfb2.d.cts +14 -0
- package/TimePickerTarget-pYRxAfb2.d.cts.map +1 -0
- package/TimePickerTarget-pYRxAfb2.d.mts +14 -0
- package/TimePickerTarget-pYRxAfb2.d.mts.map +1 -0
- package/Toast-CPEKESLZ.cjs +107 -0
- package/Toast-CPEKESLZ.cjs.map +1 -0
- package/Toast-CdUaFVpt.mjs +96 -0
- package/Toast-CdUaFVpt.mjs.map +1 -0
- package/ToggleSwitch-D-HRkEg2.d.cts +60 -0
- package/ToggleSwitch-D-HRkEg2.d.cts.map +1 -0
- package/ToggleSwitch-D-HRkEg2.d.mts +60 -0
- package/ToggleSwitch-D-HRkEg2.d.mts.map +1 -0
- package/Tooltip-D6_5Rsmd.d.cts +21 -0
- package/Tooltip-D6_5Rsmd.d.cts.map +1 -0
- package/Tooltip-D6_5Rsmd.d.mts +21 -0
- package/Tooltip-D6_5Rsmd.d.mts.map +1 -0
- package/Tooltip.cjs +38 -0
- package/Tooltip.cjs.map +1 -0
- package/Tooltip.d.cts +2 -0
- package/Tooltip.d.mts +2 -0
- package/Tooltip.mjs +26 -0
- package/Tooltip.mjs.map +1 -0
- package/Typography/InlineButton.cjs +63 -0
- package/Typography/InlineButton.cjs.map +1 -0
- package/Typography/InlineButton.d.cts +2 -0
- package/Typography/InlineButton.d.mts +2 -0
- package/Typography/InlineButton.mjs +59 -0
- package/Typography/InlineButton.mjs.map +1 -0
- package/Typography/Links.cjs +62 -0
- package/Typography/Links.cjs.map +1 -0
- package/Typography/Links.d.cts +2 -0
- package/Typography/Links.d.mts +2 -0
- package/Typography/Links.mjs +51 -0
- package/Typography/Links.mjs.map +1 -0
- package/Typography/Text.cjs +178 -0
- package/Typography/Text.cjs.map +1 -0
- package/Typography/Text.d.cts +2 -0
- package/Typography/Text.d.mts +2 -0
- package/Typography/Text.mjs +163 -0
- package/Typography/Text.mjs.map +1 -0
- package/ViewMore-BBoUvo7p.cjs +138 -0
- package/ViewMore-BBoUvo7p.cjs.map +1 -0
- package/ViewMore-BrZPuE4E.mjs +133 -0
- package/ViewMore-BrZPuE4E.mjs.map +1 -0
- package/ViewMore-DKC9SYL4.d.cts +93 -0
- package/ViewMore-DKC9SYL4.d.cts.map +1 -0
- package/ViewMore-DKC9SYL4.d.mts +93 -0
- package/ViewMore-DKC9SYL4.d.mts.map +1 -0
- package/WebRTCPlayer-C-sTtskR.mjs +940 -0
- package/WebRTCPlayer-C-sTtskR.mjs.map +1 -0
- package/WebRTCPlayer-CssffyCM.cjs +983 -0
- package/WebRTCPlayer-CssffyCM.cjs.map +1 -0
- package/accordion.cjs +126 -0
- package/accordion.cjs.map +1 -0
- package/accordion.d.cts +2 -0
- package/accordion.d.mts +2 -0
- package/accordion.mjs +120 -0
- package/accordion.mjs.map +1 -0
- package/addressDisplay.cjs +7 -0
- package/addressDisplay.d.cts +2 -0
- package/addressDisplay.d.mts +2 -0
- package/addressDisplay.mjs +3 -0
- package/anyIcon-C3IQzJJ9.d.cts +7 -0
- package/anyIcon-C3IQzJJ9.d.cts.map +1 -0
- package/anyIcon-eR07wvJb.d.mts +7 -0
- package/anyIcon-eR07wvJb.d.mts.map +1 -0
- package/automatedCarousel.cjs +7 -0
- package/automatedCarousel.d.cts +2 -0
- package/automatedCarousel.d.mts +2 -0
- package/automatedCarousel.mjs +3 -0
- package/bannerNotification.cjs +7 -0
- package/bannerNotification.d.cts +2 -0
- package/bannerNotification.d.mts +2 -0
- package/bannerNotification.mjs +3 -0
- package/bottomSheet.cjs +7 -0
- package/bottomSheet.d.cts +2 -0
- package/bottomSheet.d.mts +2 -0
- package/bottomSheet.mjs +3 -0
- package/breadcrumbs.cjs +7 -0
- package/breadcrumbs.d.cts +2 -0
- package/breadcrumbs.d.mts +2 -0
- package/breadcrumbs.mjs +3 -0
- package/breakpoints.cjs +53 -0
- package/breakpoints.cjs.map +1 -0
- package/breakpoints.d.cts +2 -0
- package/breakpoints.d.mts +2 -0
- package/breakpoints.mjs +46 -0
- package/breakpoints.mjs.map +1 -0
- package/buttonColorClasses-B7OU4aQA.mjs +22 -0
- package/buttonColorClasses-B7OU4aQA.mjs.map +1 -0
- package/buttonColorClasses-C3hg1at8.cjs +93 -0
- package/buttonColorClasses-C3hg1at8.cjs.map +1 -0
- package/card/cardGrid.cjs +7 -0
- package/card/cardGrid.d.cts +2 -0
- package/card/cardGrid.d.mts +2 -0
- package/card/cardGrid.mjs +3 -0
- package/card/components/createBadge.cjs +27 -0
- package/card/components/createBadge.cjs.map +1 -0
- package/card/components/createBadge.d.cts +2 -0
- package/card/components/createBadge.d.mts +2 -0
- package/card/components/createBadge.mjs +23 -0
- package/card/components/createBadge.mjs.map +1 -0
- package/card/components/createFavoriteButton.cjs +31 -0
- package/card/components/createFavoriteButton.cjs.map +1 -0
- package/card/components/createFavoriteButton.d.cts +2 -0
- package/card/components/createFavoriteButton.d.mts +2 -0
- package/card/components/createFavoriteButton.mjs +27 -0
- package/card/components/createFavoriteButton.mjs.map +1 -0
- package/card/components/createImage.cjs +44 -0
- package/card/components/createImage.cjs.map +1 -0
- package/card/components/createImage.d.cts +2 -0
- package/card/components/createImage.d.mts +2 -0
- package/card/components/createImage.mjs +40 -0
- package/card/components/createImage.mjs.map +1 -0
- package/card/components/createInfo.cjs +61 -0
- package/card/components/createInfo.cjs.map +1 -0
- package/card/components/createInfo.d.cts +2 -0
- package/card/components/createInfo.d.mts +2 -0
- package/card/components/createInfo.mjs +56 -0
- package/card/components/createInfo.mjs.map +1 -0
- package/card/components/createName.cjs +43 -0
- package/card/components/createName.cjs.map +1 -0
- package/card/components/createName.d.cts +2 -0
- package/card/components/createName.d.mts +2 -0
- package/card/components/createName.mjs +39 -0
- package/card/components/createName.mjs.map +1 -0
- package/card/components/createPriceStatus.cjs +77 -0
- package/card/components/createPriceStatus.cjs.map +1 -0
- package/card/components/createPriceStatus.d.cts +2 -0
- package/card/components/createPriceStatus.d.mts +2 -0
- package/card/components/createPriceStatus.mjs +70 -0
- package/card/components/createPriceStatus.mjs.map +1 -0
- package/card/factory.cjs +7 -0
- package/card/factory.d.cts +3 -0
- package/card/factory.d.mts +3 -0
- package/card/factory.mjs +3 -0
- package/card/singleCard.cjs +18 -0
- package/card/singleCard.cjs.map +1 -0
- package/card/singleCard.d.cts +2 -0
- package/card/singleCard.d.mts +2 -0
- package/card/singleCard.mjs +14 -0
- package/card/singleCard.mjs.map +1 -0
- package/cardFactory-B0Ah0Qb8.mjs +102 -0
- package/cardFactory-B0Ah0Qb8.mjs.map +1 -0
- package/cardFactory-CEKTSSXs.d.cts +37 -0
- package/cardFactory-CEKTSSXs.d.cts.map +1 -0
- package/cardFactory-DTU3jY-R.cjs +107 -0
- package/cardFactory-DTU3jY-R.cjs.map +1 -0
- package/cardFactory-Z5a675Nr.d.mts +37 -0
- package/cardFactory-Z5a675Nr.d.mts.map +1 -0
- package/carousel.cjs +10 -0
- package/carousel.d.cts +2 -0
- package/carousel.d.mts +2 -0
- package/carousel.mjs +3 -0
- package/chipTypes-Bi0ZROty.d.cts +109 -0
- package/chipTypes-Bi0ZROty.d.cts.map +1 -0
- package/chipTypes-Bi0ZROty.d.mts +109 -0
- package/chipTypes-Bi0ZROty.d.mts.map +1 -0
- package/chips/chip.cjs +102 -0
- package/chips/chip.cjs.map +1 -0
- package/chips/chip.d.cts +2 -0
- package/chips/chip.d.mts +2 -0
- package/chips/chip.mjs +98 -0
- package/chips/chip.mjs.map +1 -0
- package/chips/chipGroup.cjs +127 -0
- package/chips/chipGroup.cjs.map +1 -0
- package/chips/chipGroup.d.cts +2 -0
- package/chips/chipGroup.d.mts +2 -0
- package/chips/chipGroup.mjs +123 -0
- package/chips/chipGroup.mjs.map +1 -0
- package/chips/suggestion.cjs +20 -0
- package/chips/suggestion.cjs.map +1 -0
- package/chips/suggestion.d.cts +2 -0
- package/chips/suggestion.d.mts +2 -0
- package/chips/suggestion.mjs +16 -0
- package/chips/suggestion.mjs.map +1 -0
- package/chips/types.cjs +1 -0
- package/chips/types.d.cts +2 -0
- package/chips/types.d.mts +2 -0
- package/chips/types.mjs +2 -0
- package/chips.cjs +12 -0
- package/chips.d.cts +5 -0
- package/chips.d.mts +5 -0
- package/chips.mjs +6 -0
- package/collapsible.cjs +47 -0
- package/collapsible.cjs.map +1 -0
- package/collapsible.d.cts +2 -0
- package/collapsible.d.mts +2 -0
- package/collapsible.mjs +43 -0
- package/collapsible.mjs.map +1 -0
- package/components-BPFB_cmZ.mjs +346 -0
- package/components-BPFB_cmZ.mjs.map +1 -0
- package/components-CL4KcKF0.cjs +393 -0
- package/components-CL4KcKF0.cjs.map +1 -0
- package/confetti.cjs +7 -0
- package/confetti.d.cts +2 -0
- package/confetti.d.mts +2 -0
- package/confetti.mjs +3 -0
- package/contentPager.cjs +9 -0
- package/contentPager.d.cts +2 -0
- package/contentPager.d.mts +2 -0
- package/contentPager.mjs +3 -0
- package/context--_0mDNFa.d.cts +24 -0
- package/context--_0mDNFa.d.cts.map +1 -0
- package/context--_0mDNFa.d.mts +24 -0
- package/context--_0mDNFa.d.mts.map +1 -0
- package/cookieConsent.cjs +11 -0
- package/cookieConsent.d.cts +2 -0
- package/cookieConsent.d.mts +2 -0
- package/cookieConsent.mjs +3 -0
- package/countdown/types.cjs +1 -0
- package/countdown/types.d.cts +2 -0
- package/countdown/types.d.mts +2 -0
- package/countdown/types.mjs +2 -0
- package/countdown.cjs +7 -0
- package/countdown.d.cts +2 -0
- package/countdown.d.mts +2 -0
- package/countdown.mjs +3 -0
- package/createBadge-CYumy92O.d.mts +19 -0
- package/createBadge-CYumy92O.d.mts.map +1 -0
- package/createBadge-LFbUXGlB.d.cts +19 -0
- package/createBadge-LFbUXGlB.d.cts.map +1 -0
- package/createFavoriteButton-8xbCWiTD.d.mts +21 -0
- package/createFavoriteButton-8xbCWiTD.d.mts.map +1 -0
- package/createFavoriteButton-Bnp0UOEq.d.cts +21 -0
- package/createFavoriteButton-Bnp0UOEq.d.cts.map +1 -0
- package/createImage-BYnNgRok.d.mts +26 -0
- package/createImage-BYnNgRok.d.mts.map +1 -0
- package/createImage-DYLD7AJb.d.cts +26 -0
- package/createImage-DYLD7AJb.d.cts.map +1 -0
- package/createInfo-C9sqGWBq.d.mts +44 -0
- package/createInfo-C9sqGWBq.d.mts.map +1 -0
- package/createInfo-USBqE7Tt.d.cts +44 -0
- package/createInfo-USBqE7Tt.d.cts.map +1 -0
- package/createName-DB7BL9GP.d.cts +26 -0
- package/createName-DB7BL9GP.d.cts.map +1 -0
- package/createName-U7oHRNVL.d.mts +26 -0
- package/createName-U7oHRNVL.d.mts.map +1 -0
- package/createPriceStatus-C-amebFt.d.cts +30 -0
- package/createPriceStatus-C-amebFt.d.cts.map +1 -0
- package/createPriceStatus-DBWT6ob8.d.mts +30 -0
- package/createPriceStatus-DBWT6ob8.d.mts.map +1 -0
- package/dateInput.cjs +98 -0
- package/dateInput.cjs.map +1 -0
- package/dateInput.d.cts +2 -0
- package/dateInput.d.mts +2 -0
- package/dateInput.mjs +94 -0
- package/dateInput.mjs.map +1 -0
- package/datePicker-DQ32Z8yo.mjs +136 -0
- package/datePicker-DQ32Z8yo.mjs.map +1 -0
- package/datePicker-DaYegd15.cjs +141 -0
- package/datePicker-DaYegd15.cjs.map +1 -0
- package/datePicker.cjs +9 -0
- package/datePicker.d.cts +3 -0
- package/datePicker.d.mts +3 -0
- package/datePicker.mjs +4 -0
- package/dateTimeInput/utils.cjs +8 -0
- package/dateTimeInput/utils.d.cts +2 -0
- package/dateTimeInput/utils.d.mts +2 -0
- package/dateTimeInput/utils.mjs +3 -0
- package/drawer.cjs +7 -0
- package/drawer.d.cts +2 -0
- package/drawer.d.mts +2 -0
- package/drawer.mjs +3 -0
- package/educationalPopover.cjs +110 -0
- package/educationalPopover.cjs.map +1 -0
- package/educationalPopover.d.cts +2 -0
- package/educationalPopover.d.mts +2 -0
- package/educationalPopover.mjs +106 -0
- package/educationalPopover.mjs.map +1 -0
- package/effectEventListener-DmVY5Sgy.cjs +16 -0
- package/effectEventListener-DmVY5Sgy.cjs.map +1 -0
- package/effectEventListener-WApakaup.mjs +11 -0
- package/effectEventListener-WApakaup.mjs.map +1 -0
- package/favoriteButton.cjs +7 -0
- package/favoriteButton.d.cts +2 -0
- package/favoriteButton.d.mts +2 -0
- package/favoriteButton.mjs +3 -0
- package/featureFlagProvider-Cl66ibpA.cjs +25 -0
- package/featureFlagProvider-Cl66ibpA.cjs.map +1 -0
- package/featureFlagProvider-_wGBROhw.mjs +14 -0
- package/featureFlagProvider-_wGBROhw.mjs.map +1 -0
- package/featureFlags/devTools/FeatureFlagDevToolsUI.cjs +7 -0
- package/featureFlags/devTools/FeatureFlagDevToolsUI.d.cts +2 -0
- package/featureFlags/devTools/FeatureFlagDevToolsUI.d.mts +2 -0
- package/featureFlags/devTools/FeatureFlagDevToolsUI.mjs +3 -0
- package/featureFlags/devTools/getFeatureFlagCookieOverrides.cjs +27 -0
- package/featureFlags/devTools/getFeatureFlagCookieOverrides.cjs.map +1 -0
- package/featureFlags/devTools/getFeatureFlagCookieOverrides.d.cts +15 -0
- package/featureFlags/devTools/getFeatureFlagCookieOverrides.d.cts.map +1 -0
- package/featureFlags/devTools/getFeatureFlagCookieOverrides.d.mts +15 -0
- package/featureFlags/devTools/getFeatureFlagCookieOverrides.d.mts.map +1 -0
- package/featureFlags/devTools/getFeatureFlagCookieOverrides.mjs +23 -0
- package/featureFlags/devTools/getFeatureFlagCookieOverrides.mjs.map +1 -0
- package/featureFlags/hooks.cjs +9 -0
- package/featureFlags/hooks.d.cts +2 -0
- package/featureFlags/hooks.d.mts +2 -0
- package/featureFlags/hooks.mjs +4 -0
- package/fileUpload/hooks.cjs +8 -0
- package/fileUpload/hooks.d.cts +2 -0
- package/fileUpload/hooks.d.mts +2 -0
- package/fileUpload/hooks.mjs +3 -0
- package/fileUpload/testUtils/mockFilesAndImages.cjs +68 -0
- package/fileUpload/testUtils/mockFilesAndImages.cjs.map +1 -0
- package/fileUpload/testUtils/mockFilesAndImages.d.cts +19 -0
- package/fileUpload/testUtils/mockFilesAndImages.d.cts.map +1 -0
- package/fileUpload/testUtils/mockFilesAndImages.d.mts +19 -0
- package/fileUpload/testUtils/mockFilesAndImages.d.mts.map +1 -0
- package/fileUpload/testUtils/mockFilesAndImages.mjs +52 -0
- package/fileUpload/testUtils/mockFilesAndImages.mjs.map +1 -0
- package/fileUpload/testUtils/testUtils.cjs +91 -0
- package/fileUpload/testUtils/testUtils.cjs.map +1 -0
- package/fileUpload/testUtils/testUtils.d.cts +13 -0
- package/fileUpload/testUtils/testUtils.d.cts.map +1 -0
- package/fileUpload/testUtils/testUtils.d.mts +13 -0
- package/fileUpload/testUtils/testUtils.d.mts.map +1 -0
- package/fileUpload/testUtils/testUtils.mjs +81 -0
- package/fileUpload/testUtils/testUtils.mjs.map +1 -0
- package/fileUpload/types.cjs +31 -0
- package/fileUpload/types.cjs.map +1 -0
- package/fileUpload/types.d.cts +2 -0
- package/fileUpload/types.d.mts +2 -0
- package/fileUpload/types.mjs +26 -0
- package/fileUpload/types.mjs.map +1 -0
- package/fileUpload.cjs +24 -0
- package/fileUpload.d.cts +4 -0
- package/fileUpload.d.mts +4 -0
- package/fileUpload.mjs +4 -0
- package/formLabel.cjs +108 -0
- package/formLabel.cjs.map +1 -0
- package/formLabel.d.cts +2 -0
- package/formLabel.d.mts +2 -0
- package/formLabel.mjs +103 -0
- package/formLabel.mjs.map +1 -0
- package/grid.cjs +128 -0
- package/grid.cjs.map +1 -0
- package/grid.d.cts +3 -0
- package/grid.d.mts +3 -0
- package/grid.mjs +118 -0
- package/grid.mjs.map +1 -0
- package/gridHighlighter-BU9PvG5f.d.cts +29 -0
- package/gridHighlighter-BU9PvG5f.d.cts.map +1 -0
- package/gridHighlighter-BU9PvG5f.d.mts +29 -0
- package/gridHighlighter-BU9PvG5f.d.mts.map +1 -0
- package/gridHighlighter-BcGNd3EE.mjs +55 -0
- package/gridHighlighter-BcGNd3EE.mjs.map +1 -0
- package/gridHighlighter-BiSMM7lW.cjs +66 -0
- package/gridHighlighter-BiSMM7lW.cjs.map +1 -0
- package/hooks/usePrevious.cjs +21 -0
- package/hooks/usePrevious.cjs.map +1 -0
- package/hooks/usePrevious.d.cts +2 -0
- package/hooks/usePrevious.d.mts +2 -0
- package/hooks/usePrevious.mjs +17 -0
- package/hooks/usePrevious.mjs.map +1 -0
- package/hooks-8VsDqwlb.cjs +672 -0
- package/hooks-8VsDqwlb.cjs.map +1 -0
- package/hooks-BudbgYTF.mjs +22 -0
- package/hooks-BudbgYTF.mjs.map +1 -0
- package/hooks-D4sJ62Xl.mjs +607 -0
- package/hooks-D4sJ62Xl.mjs.map +1 -0
- package/hooks-DDMD_CDN.cjs +27 -0
- package/hooks-DDMD_CDN.cjs.map +1 -0
- package/horizontalScrollFadeMixin-BBr1qJpj.mjs +38 -0
- package/horizontalScrollFadeMixin-BBr1qJpj.mjs.map +1 -0
- package/horizontalScrollFadeMixin-ChYR-9hE.cjs +43 -0
- package/horizontalScrollFadeMixin-ChYR-9hE.cjs.map +1 -0
- package/imageCluster.cjs +54 -0
- package/imageCluster.cjs.map +1 -0
- package/imageCluster.d.cts +2 -0
- package/imageCluster.d.mts +2 -0
- package/imageCluster.mjs +50 -0
- package/imageCluster.mjs.map +1 -0
- package/imageSlider.cjs +10 -0
- package/imageSlider.d.cts +2 -0
- package/imageSlider.d.mts +2 -0
- package/imageSlider.mjs +3 -0
- package/index-3V0Y3AU3.d.mts +25 -0
- package/index-3V0Y3AU3.d.mts.map +1 -0
- package/index-9649Aqry.d.cts +84 -0
- package/index-9649Aqry.d.cts.map +1 -0
- package/index-9649Aqry.d.mts +84 -0
- package/index-9649Aqry.d.mts.map +1 -0
- package/index-B-GVogfk2.d.mts +519 -0
- package/index-B-GVogfk2.d.mts.map +1 -0
- package/index-BAR19_eg.d.cts +494 -0
- package/index-BAR19_eg.d.cts.map +1 -0
- package/index-BAR19_eg.d.mts +494 -0
- package/index-BAR19_eg.d.mts.map +1 -0
- package/index-BIbZcTRq.d.cts +236 -0
- package/index-BIbZcTRq.d.cts.map +1 -0
- package/index-BVb-FJDo.d.mts +322 -0
- package/index-BVb-FJDo.d.mts.map +1 -0
- package/index-BXz3rMMk.d.cts +322 -0
- package/index-BXz3rMMk.d.cts.map +1 -0
- package/index-Bm-eSWuV.d.mts +75 -0
- package/index-Bm-eSWuV.d.mts.map +1 -0
- package/index-BsA0Oogf.d.cts +75 -0
- package/index-BsA0Oogf.d.cts.map +1 -0
- package/index-Bu7c6X7O.d.mts +117 -0
- package/index-Bu7c6X7O.d.mts.map +1 -0
- package/index-BvJOKeoD.d.cts +94 -0
- package/index-BvJOKeoD.d.cts.map +1 -0
- package/index-BvJOKeoD.d.mts +94 -0
- package/index-BvJOKeoD.d.mts.map +1 -0
- package/index-ByYgcpRS.d.cts +1644 -0
- package/index-ByYgcpRS.d.cts.map +1 -0
- package/index-ByZJ4iMT2.d.mts +143 -0
- package/index-ByZJ4iMT2.d.mts.map +1 -0
- package/index-BzN9RaXe.d.cts +117 -0
- package/index-BzN9RaXe.d.cts.map +1 -0
- package/index-C1knx8x3.d.cts +8 -0
- package/index-C1knx8x3.d.cts.map +1 -0
- package/index-C1knx8x3.d.mts +8 -0
- package/index-C1knx8x3.d.mts.map +1 -0
- package/index-CEUCcUr8.d.mts +26 -0
- package/index-CEUCcUr8.d.mts.map +1 -0
- package/index-CQb7B4U7.d.mts +25 -0
- package/index-CQb7B4U7.d.mts.map +1 -0
- package/index-CTGvafCc.d.mts +68 -0
- package/index-CTGvafCc.d.mts.map +1 -0
- package/index-CTfIOH2Z2.d.cts +519 -0
- package/index-CTfIOH2Z2.d.cts.map +1 -0
- package/index-CXbRJmrm.d.cts +49 -0
- package/index-CXbRJmrm.d.cts.map +1 -0
- package/index-CXbRJmrm.d.mts +49 -0
- package/index-CXbRJmrm.d.mts.map +1 -0
- package/index-Co9X1Vty.d.cts +25 -0
- package/index-Co9X1Vty.d.cts.map +1 -0
- package/index-D1Zpm1h7.d.cts +58 -0
- package/index-D1Zpm1h7.d.cts.map +1 -0
- package/index-D1Zpm1h7.d.mts +58 -0
- package/index-D1Zpm1h7.d.mts.map +1 -0
- package/index-D2HDrkK3.d.cts +172 -0
- package/index-D2HDrkK3.d.cts.map +1 -0
- package/index-D2HDrkK3.d.mts +172 -0
- package/index-D2HDrkK3.d.mts.map +1 -0
- package/index-D8NtFEaq.d.cts +193 -0
- package/index-D8NtFEaq.d.cts.map +1 -0
- package/index-D8NtFEaq.d.mts +193 -0
- package/index-D8NtFEaq.d.mts.map +1 -0
- package/index-DBYqF9Sr.d.cts +39 -0
- package/index-DBYqF9Sr.d.cts.map +1 -0
- package/index-DS-jIZFO.d.mts +1644 -0
- package/index-DS-jIZFO.d.mts.map +1 -0
- package/index-DTEgNDXq.d.mts +111 -0
- package/index-DTEgNDXq.d.mts.map +1 -0
- package/index-DTEgNDXq2.d.cts +111 -0
- package/index-DTEgNDXq2.d.cts.map +1 -0
- package/index-DUdcrvAe.d.cts +26 -0
- package/index-DUdcrvAe.d.cts.map +1 -0
- package/index-DUdcrvAe.d.mts +26 -0
- package/index-DUdcrvAe.d.mts.map +1 -0
- package/index-DwA_GqJq.d.cts +26 -0
- package/index-DwA_GqJq.d.cts.map +1 -0
- package/index-MX_CgDGs.d.cts +147 -0
- package/index-MX_CgDGs.d.cts.map +1 -0
- package/index-MX_CgDGs.d.mts +147 -0
- package/index-MX_CgDGs.d.mts.map +1 -0
- package/index-NeSBj5ci.d.cts +200 -0
- package/index-NeSBj5ci.d.cts.map +1 -0
- package/index-NeSBj5ci.d.mts +200 -0
- package/index-NeSBj5ci.d.mts.map +1 -0
- package/index-XZwBshBM.d.cts +177 -0
- package/index-XZwBshBM.d.cts.map +1 -0
- package/index-XZwBshBM.d.mts +177 -0
- package/index-XZwBshBM.d.mts.map +1 -0
- package/index-dpfLYhgI.d.mts +39 -0
- package/index-dpfLYhgI.d.mts.map +1 -0
- package/index-kchg551L.d.cts +25 -0
- package/index-kchg551L.d.cts.map +1 -0
- package/index-l7Awc0i3.d.cts +68 -0
- package/index-l7Awc0i3.d.cts.map +1 -0
- package/index-ojxI7tqs.d.cts +143 -0
- package/index-ojxI7tqs.d.cts.map +1 -0
- package/index-otqj7yHa.d.mts +236 -0
- package/index-otqj7yHa.d.mts.map +1 -0
- package/index.cjs +472 -0
- package/index.d.cts +101 -0
- package/index.d.mts +101 -0
- package/index.mjs +99 -0
- package/inlineNotification.cjs +82 -0
- package/inlineNotification.cjs.map +1 -0
- package/inlineNotification.d.cts +2 -0
- package/inlineNotification.d.mts +2 -0
- package/inlineNotification.mjs +78 -0
- package/inlineNotification.mjs.map +1 -0
- package/intl/utils.cjs +41 -0
- package/intl/utils.cjs.map +1 -0
- package/intl/utils.d.cts +18 -0
- package/intl/utils.d.cts.map +1 -0
- package/intl/utils.d.mts +18 -0
- package/intl/utils.d.mts.map +1 -0
- package/intl/utils.mjs +34 -0
- package/intl/utils.mjs.map +1 -0
- package/intl.cjs +34 -0
- package/intl.d.cts +5 -0
- package/intl.d.mts +5 -0
- package/intl.mjs +6 -0
- package/jumpMenu.cjs +7 -0
- package/jumpMenu.d.cts +2 -0
- package/jumpMenu.d.mts +2 -0
- package/jumpMenu.mjs +3 -0
- package/loading.cjs +7 -0
- package/loading.d.cts +2 -0
- package/loading.d.mts +2 -0
- package/loading.mjs +3 -0
- package/menu.cjs +9 -0
- package/menu.d.cts +2 -0
- package/menu.d.mts +2 -0
- package/menu.mjs +3 -0
- package/menuContext-4P6eKzkH.mjs +14 -0
- package/menuContext-4P6eKzkH.mjs.map +1 -0
- package/menuContext-B6MhMBDf.cjs +25 -0
- package/menuContext-B6MhMBDf.cjs.map +1 -0
- package/mixins-CoXneD1m.mjs +235 -0
- package/mixins-CoXneD1m.mjs.map +1 -0
- package/mixins-D56ptENc.cjs +282 -0
- package/mixins-D56ptENc.cjs.map +1 -0
- package/mixins.cjs +13 -0
- package/mixins.d.cts +2 -0
- package/mixins.d.mts +2 -0
- package/mixins.mjs +2 -0
- package/modal/components.cjs +16 -0
- package/modal/components.d.cts +3 -0
- package/modal/components.d.mts +3 -0
- package/modal/components.mjs +4 -0
- package/modal/context.cjs +26 -0
- package/modal/context.cjs.map +1 -0
- package/modal/context.d.cts +2 -0
- package/modal/context.d.mts +2 -0
- package/modal/context.mjs +21 -0
- package/modal/context.mjs.map +1 -0
- package/modal/useCloseModal.cjs +103 -0
- package/modal/useCloseModal.cjs.map +1 -0
- package/modal/useCloseModal.d.cts +2 -0
- package/modal/useCloseModal.d.mts +2 -0
- package/modal/useCloseModal.mjs +98 -0
- package/modal/useCloseModal.mjs.map +1 -0
- package/modal.cjs +7 -0
- package/modal.d.cts +2 -0
- package/modal.d.mts +2 -0
- package/modal.mjs +3 -0
- package/nodeEnv-B4v61vkJ.mjs +6 -0
- package/nodeEnv-B4v61vkJ.mjs.map +1 -0
- package/nodeEnv-BdQ-HyQz.cjs +11 -0
- package/nodeEnv-BdQ-HyQz.cjs.map +1 -0
- package/notificationBadge.cjs +24 -0
- package/notificationBadge.cjs.map +1 -0
- package/notificationBadge.d.cts +2 -0
- package/notificationBadge.d.mts +2 -0
- package/notificationBadge.mjs +20 -0
- package/notificationBadge.mjs.map +1 -0
- package/package.json +73 -0
- package/pagination.cjs +10 -0
- package/pagination.d.cts +2 -0
- package/pagination.d.mts +2 -0
- package/pagination.mjs +3 -0
- package/phoneInput.cjs +34 -0
- package/phoneInput.d.cts +5 -0
- package/phoneInput.d.mts +5 -0
- package/phoneInput.mjs +6 -0
- package/progressCircle.cjs +7 -0
- package/progressCircle.d.cts +2 -0
- package/progressCircle.d.mts +2 -0
- package/progressCircle.mjs +3 -0
- package/progressSteps.cjs +92 -0
- package/progressSteps.cjs.map +1 -0
- package/progressSteps.d.cts +2 -0
- package/progressSteps.d.mts +2 -0
- package/progressSteps.mjs +88 -0
- package/progressSteps.mjs.map +1 -0
- package/providers.cjs +333 -0
- package/providers.cjs.map +1 -0
- package/providers.d.cts +5 -0
- package/providers.d.mts +5 -0
- package/providers.mjs +292 -0
- package/providers.mjs.map +1 -0
- package/rolldown-runtime-D6vf50IK.cjs +28 -0
- package/saveConfetti.cjs +7 -0
- package/saveConfetti.d.cts +2 -0
- package/saveConfetti.d.mts +2 -0
- package/saveConfetti.mjs +3 -0
- package/searchInput.cjs +92 -0
- package/searchInput.cjs.map +1 -0
- package/searchInput.d.cts +2 -0
- package/searchInput.d.mts +2 -0
- package/searchInput.mjs +88 -0
- package/searchInput.mjs.map +1 -0
- package/segmentedControl.cjs +8 -0
- package/segmentedControl.d.cts +2 -0
- package/segmentedControl.d.mts +2 -0
- package/segmentedControl.mjs +3 -0
- package/select.cjs +9 -0
- package/select.d.cts +2 -0
- package/select.d.mts +2 -0
- package/select.mjs +3 -0
- package/selectAsync.cjs +20 -0
- package/selectAsync.cjs.map +1 -0
- package/selectAsync.d.cts +2 -0
- package/selectAsync.d.mts +2 -0
- package/selectAsync.mjs +14 -0
- package/selectAsync.mjs.map +1 -0
- package/selectAsyncCreatable.cjs +19 -0
- package/selectAsyncCreatable.cjs.map +1 -0
- package/selectAsyncCreatable.d.cts +2 -0
- package/selectAsyncCreatable.d.mts +2 -0
- package/selectAsyncCreatable.mjs +13 -0
- package/selectAsyncCreatable.mjs.map +1 -0
- package/selectComponents.cjs +12 -0
- package/selectComponents.d.cts +2 -0
- package/selectComponents.d.mts +2 -0
- package/selectComponents.mjs +3 -0
- package/selectCreatable.cjs +19 -0
- package/selectCreatable.cjs.map +1 -0
- package/selectCreatable.d.cts +2 -0
- package/selectCreatable.d.mts +2 -0
- package/selectCreatable.mjs +13 -0
- package/selectCreatable.mjs.map +1 -0
- package/sharedProps-D7PSXdXt.d.mts +16 -0
- package/sharedProps-D7PSXdXt.d.mts.map +1 -0
- package/sharedProps-DPhLON6O.d.cts +16 -0
- package/sharedProps-DPhLON6O.d.cts.map +1 -0
- package/skeleton.cjs +24 -0
- package/skeleton.cjs.map +1 -0
- package/skeleton.d.cts +2 -0
- package/skeleton.d.mts +2 -0
- package/skeleton.mjs +18 -0
- package/skeleton.mjs.map +1 -0
- package/spacing.cjs +27 -0
- package/spacing.cjs.map +1 -0
- package/spacing.d.cts +13 -0
- package/spacing.d.cts.map +1 -0
- package/spacing.d.mts +13 -0
- package/spacing.d.mts.map +1 -0
- package/spacing.mjs +15 -0
- package/spacing.mjs.map +1 -0
- package/splitButton.cjs +7 -0
- package/splitButton.d.cts +2 -0
- package/splitButton.d.mts +2 -0
- package/splitButton.mjs +3 -0
- package/starRating.cjs +7 -0
- package/starRating.d.cts +2 -0
- package/starRating.d.mts +2 -0
- package/starRating.mjs +3 -0
- package/table.cjs +7 -0
- package/table.d.cts +2 -0
- package/table.d.mts +2 -0
- package/table.mjs +3 -0
- package/tabs.cjs +191 -0
- package/tabs.cjs.map +1 -0
- package/tabs.d.cts +2 -0
- package/tabs.d.mts +2 -0
- package/tabs.mjs +187 -0
- package/tabs.mjs.map +1 -0
- package/textArea.cjs +75 -0
- package/textArea.cjs.map +1 -0
- package/textArea.d.cts +2 -0
- package/textArea.d.mts +2 -0
- package/textArea.mjs +71 -0
- package/textArea.mjs.map +1 -0
- package/textInput.cjs +7 -0
- package/textInput.d.cts +2 -0
- package/textInput.d.mts +2 -0
- package/textInput.mjs +3 -0
- package/timePicker-BPrJk5TQ.mjs +376 -0
- package/timePicker-BPrJk5TQ.mjs.map +1 -0
- package/timePicker-Bs25zweI.cjs +381 -0
- package/timePicker-Bs25zweI.cjs.map +1 -0
- package/timePicker.cjs +9 -0
- package/timePicker.d.cts +3 -0
- package/timePicker.d.mts +3 -0
- package/timePicker.mjs +4 -0
- package/toast.cjs +8 -0
- package/toast.d.cts +2 -0
- package/toast.d.mts +2 -0
- package/toast.mjs +3 -0
- package/toggleSwitch.cjs +95 -0
- package/toggleSwitch.cjs.map +1 -0
- package/toggleSwitch.d.cts +2 -0
- package/toggleSwitch.d.mts +2 -0
- package/toggleSwitch.mjs +91 -0
- package/toggleSwitch.mjs.map +1 -0
- package/types-rTX1-GHe.d.cts +8 -0
- package/types-rTX1-GHe.d.cts.map +1 -0
- package/types-rTX1-GHe.d.mts +8 -0
- package/types-rTX1-GHe.d.mts.map +1 -0
- package/types-wcNSa96H.d.cts +60 -0
- package/types-wcNSa96H.d.cts.map +1 -0
- package/types-wcNSa96H.d.mts +60 -0
- package/types-wcNSa96H.d.mts.map +1 -0
- package/useCloseModal-CIPrwKwM.d.cts +26 -0
- package/useCloseModal-CIPrwKwM.d.cts.map +1 -0
- package/useCloseModal-CIPrwKwM.d.mts +26 -0
- package/useCloseModal-CIPrwKwM.d.mts.map +1 -0
- package/useFeatureFlags--GRuT9Qc.cjs +24 -0
- package/useFeatureFlags--GRuT9Qc.cjs.map +1 -0
- package/useFeatureFlags-Dmf_37f8.mjs +19 -0
- package/useFeatureFlags-Dmf_37f8.mjs.map +1 -0
- package/useIntersectionObserver-Q6Y3c3sz.mjs +47 -0
- package/useIntersectionObserver-Q6Y3c3sz.mjs.map +1 -0
- package/useIntersectionObserver-oYkZjzFF.cjs +52 -0
- package/useIntersectionObserver-oYkZjzFF.cjs.map +1 -0
- package/usePrevious-DLOWI2sB.d.cts +8 -0
- package/usePrevious-DLOWI2sB.d.cts.map +1 -0
- package/usePrevious-DLOWI2sB.d.mts +8 -0
- package/usePrevious-DLOWI2sB.d.mts.map +1 -0
- package/utils/dateTimeFormat.cjs +217 -0
- package/utils/dateTimeFormat.cjs.map +1 -0
- package/utils/dateTimeFormat.d.cts +176 -0
- package/utils/dateTimeFormat.d.cts.map +1 -0
- package/utils/dateTimeFormat.d.mts +176 -0
- package/utils/dateTimeFormat.d.mts.map +1 -0
- package/utils/dateTimeFormat.mjs +199 -0
- package/utils/dateTimeFormat.mjs.map +1 -0
- package/utils/formatFileSize.cjs +24 -0
- package/utils/formatFileSize.cjs.map +1 -0
- package/utils/formatFileSize.d.cts +5 -0
- package/utils/formatFileSize.d.cts.map +1 -0
- package/utils/formatFileSize.d.mts +5 -0
- package/utils/formatFileSize.d.mts.map +1 -0
- package/utils/formatFileSize.mjs +20 -0
- package/utils/formatFileSize.mjs.map +1 -0
- package/utils-C6Ngn6x9.mjs +23 -0
- package/utils-C6Ngn6x9.mjs.map +1 -0
- package/utils-CvmfGpqu.cjs +34 -0
- package/utils-CvmfGpqu.cjs.map +1 -0
- package/viewMore.cjs +7 -0
- package/viewMore.d.cts +2 -0
- package/viewMore.d.mts +2 -0
- package/viewMore.mjs +3 -0
- package/webRTCPlayer.cjs +13 -0
- package/webRTCPlayer.d.cts +2 -0
- package/webRTCPlayer.d.mts +2 -0
- package/webRTCPlayer.mjs +3 -0
- package/windowSizeProvider-BMaATFiZ.cjs +147 -0
- package/windowSizeProvider-BMaATFiZ.cjs.map +1 -0
- package/windowSizeProvider-sYwAqaOy.mjs +64 -0
- package/windowSizeProvider-sYwAqaOy.mjs.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BottomSheet-emWP9Fct.cjs","names":["BodySecondary","H2","useLayoutEffectSafely","useEffect","ResizeObserver","animated","BottomSheet","nodeEnv","BottomSheetOverlay","_BottomSheet"],"sources":["../src/BottomSheet/components/SheetDescription/SheetDescription.tsx","../src/BottomSheet/components/SheetTitle/SheetTitle.tsx","../src/BottomSheet/components/BottomSheetBackdrop/BottomSheetBackdrop.tsx","../src/BottomSheet/components/BottomSheetContentArea/BottomSheetContentArea.tsx","../src/BottomSheet/components/BottomSheetOverlay/BottomSheetOverlayTranslate3d.tsx","../src/BottomSheet/hooks/useAriaHider.tsx","../src/BottomSheet/hooks/useFocusTrap.tsx","../src/BottomSheet/hooks/useLayoutEffect.tsx","../src/BottomSheet/hooks/useOptimizedScrollState.tsx","../src/BottomSheet/hooks/useReady.tsx","../src/BottomSheet/hooks/useReducedMotion.tsx","../src/BottomSheet/hooks/useScrollLock.tsx","../src/BottomSheet/utils.ts","../src/BottomSheet/hooks/useSnapPoints.tsx","../src/BottomSheet/hooks/useSpring.tsx","../src/BottomSheet/hooks/useSpringInterpolationsTranslate3d.tsx","../src/BottomSheet/hooks/useDragHandler.tsx","../src/BottomSheet/hooks/useBottomSheetServices.tsx","../src/BottomSheet/state/atoms.ts","../src/BottomSheet/state/useBottomSheetStateMachine.ts","../src/BottomSheet/BottomSheet.tsx","../src/BottomSheet/index.tsx"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport { BodySecondary } from '../../../Typography/Text/Text';\n\ntype Props = {\n children: ReactNode;\n className?: string;\n id?: string;\n};\n\nexport const SheetDescription = ({ children, className, id }: Props) => {\n return (\n <BodySecondary\n className={className}\n color=\"secondary\"\n data-testid=\"sheet-description\"\n id={id}\n >\n {children}\n </BodySecondary>\n );\n};\n","import { ReactNode } from 'react';\n\nimport { H2 } from '../../../Typography/Text/Text';\n\ntype Props = {\n children: ReactNode;\n className?: string;\n id?: string;\n};\n\nexport const SheetTitle = ({ children, className, id }: Props) => {\n return (\n <H2\n className={className}\n data-testid=\"sheet-title\"\n id={id}\n >\n {children}\n </H2>\n );\n};\n","import { cn } from '@evolve.ui/theme-system';\nimport React from 'react';\n\nimport type { DragBind } from '../../types';\n\n/**\n * Props for the BottomSheetBackdrop component\n */\ntype Props = {\n /** Drag bind function for backdrop interactions */\n bind: DragBind;\n /** Whether the backdrop should be rendered */\n blocking: boolean;\n};\n\n/**\n * BottomSheetBackdrop handles the backdrop overlay that appears behind the sheet\n */\nexport const BottomSheetBackdrop = ({ bind, blocking }: Props) => {\n if (!blocking) {\n return null;\n }\n\n return (\n <div\n className={cn(\n // Positioning - cover entire viewport\n 'fixed inset-0',\n // Extend beyond safe areas for mobile\n '-bottom-[60px] -top-[60px]',\n // Background\n 'bg-background-overlay',\n // Interaction\n 'cursor-pointer',\n // Touch optimizations\n 'touch-none select-none',\n // Opacity (always visible, parent controls overall opacity)\n 'opacity-100'\n )}\n // This component needs to be placed outside bottom-sheet, as bottom-sheet uses transform and thus creates a new context\n // that clips this element to the container, not allowing it to cover the full page.\n data-testid=\"rsbs-backdrop\"\n key=\"backdrop\"\n {...bind({ closeOnTap: true })}\n />\n );\n};\n","import { cn } from '@evolve.ui/theme-system';\nimport { memo, ReactNode, RefObject, useEffect, useLayoutEffect, useState } from 'react';\n\n/**\n * Props for the BottomSheetContentArea component\n */\ntype Props = {\n /** The main content to display */\n children: ReactNode;\n /** Reference to the content container */\n contentRef: RefObject<HTMLDivElement | null>;\n /** Whether to disable the BottomSheet's own scrolling (useful when children handle their own scrolling) */\n disableScroll?: boolean;\n /** Reference to the scroll container */\n scrollRef: RefObject<HTMLDivElement | null>;\n};\n\n/**\n * BottomSheetContentArea handles the scrollable content area of the sheet\n * Memoized to prevent unnecessary re-renders when parent state changes\n */\nexport const BottomSheetContentArea = memo<Props>(({ children, contentRef, disableScroll = false, scrollRef }) => {\n // Delay disableScroll to allow initial measurement\n const [isDisableScrollActive, setIsDisableScrollActive] = useState(false);\n\n useEffect(() => {\n if (disableScroll) {\n // Delay enabling disableScroll until after opening animation completes\n const timer = setTimeout(() => {\n setIsDisableScrollActive(true);\n }, 200); // Match typical BottomSheet opening animation duration\n\n return () => clearTimeout(timer);\n }\n setIsDisableScrollActive(false);\n return undefined;\n }, [disableScroll]);\n\n useLayoutEffect(() => {\n if (!scrollRef.current) {\n return;\n }\n\n // Reset scroll position immediately\n scrollRef.current.scrollTop = 0;\n\n // Sometimes you need a short delay if layout/paint hasn't happened yet\n const timer = setTimeout(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollTop = 0;\n }\n }, 50);\n\n return () => clearTimeout(timer);\n }, [scrollRef]);\n\n return (\n <div\n className={cn(\n // Layout - flexible scrollable area\n 'min-h-0 flex-shrink flex-grow',\n // When disableScroll is active (after delay), make this a flex container for children to handle their own scrolling\n {\n 'flex flex-col overflow-hidden': isDisableScrollActive,\n 'overflow-auto overscroll-contain': !isDisableScrollActive,\n },\n // Focus\n 'focus:outline-none'\n )}\n data-testid=\"rsbs-scroll\"\n key=\"scroll\"\n ref={scrollRef}\n >\n <div\n className={cn(\n // Content container\n {\n 'flex min-h-0 flex-grow flex-col': isDisableScrollActive, // Allow children to handle their own scrolling\n 'overflow-hidden': !isDisableScrollActive, // Ensures margin collapse works correctly for height measurements\n }\n )}\n data-testid=\"rsbs-content\"\n ref={contentRef}\n >\n {children}\n </div>\n </div>\n );\n});\n\n// Add display name for better debugging\nBottomSheetContentArea.displayName = 'BottomSheetContentArea';\n","import { cn, wrapVarRgb } from '@evolve.ui/theme-system';\nimport { memo, ReactNode, RefObject } from 'react';\n\nimport type { DragBind } from '../../types';\n\nimport { SheetDescription, SheetTitle } from '..';\nimport { BottomSheetContentArea } from '../BottomSheetContentArea/BottomSheetContentArea';\n\n/**\n * Props for the BottomSheetOverlayTranslate3d component\n */\ntype Props = {\n /** Drag bind function */\n bind: DragBind;\n /** The main content to display */\n children: ReactNode;\n /** Reference to the content container */\n contentRef: RefObject<HTMLDivElement | null>;\n /** Whether to disable the BottomSheet's own scrolling (useful when children handle their own scrolling) */\n disableScroll?: boolean;\n /** Footer content */\n footer?: ReactNode;\n /** Reference to the footer container */\n footerRef: RefObject<HTMLDivElement | null>;\n /** Header configuration */\n header?: {\n description: ReactNode;\n title: ReactNode;\n };\n /** Reference to the header container */\n headerRef: RefObject<HTMLDivElement | null>;\n /** Whether the content is scrollable */\n isScrollable: boolean;\n /** Whether the content is scrolled to the bottom */\n isScrolledToBottom: boolean;\n /** Dismiss handler function */\n onDismiss?: () => void;\n /** Reference to the overlay container */\n overlayRef: RefObject<HTMLDivElement | null>;\n /** Reference to the scroll container */\n scrollRef: RefObject<HTMLDivElement | null>;\n};\n\n/**\n * EXPERIMENTAL: BottomSheetOverlayTranslate3d - GPU-accelerated version using translate3d\n *\n * This version uses a static height and translate3d transforms for better performance.\n * Key differences from the original:\n * 1. Static height instead of animated height\n * 2. translate3d for positioning (GPU accelerated)\n * 3. Optimized for mobile device performance\n * 4. Memoized to prevent unnecessary re-renders\n */\nexport const BottomSheetOverlayTranslate3d = memo<Props>(\n ({\n bind,\n children,\n contentRef,\n disableScroll,\n footer,\n footerRef,\n header,\n headerRef,\n isScrollable,\n isScrolledToBottom,\n onDismiss,\n overlayRef,\n scrollRef,\n }: Props) => {\n return (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n <div\n aria-describedby={header?.description ? 'bottom-sheet-description' : undefined}\n aria-label={header?.title ? undefined : 'Bottom Sheet'}\n aria-labelledby={header?.title ? 'bottom-sheet-title' : undefined}\n aria-modal=\"true\"\n className={cn(\n // Base styling\n 'bg-background-primary p-md',\n // Layout\n 'flex flex-col',\n // Position relative for absolute drag handle\n 'relative',\n // Border radius (dynamic via CSS custom property with fallback)\n 'rounded-t-xl',\n // Focus outline\n 'hui-focus-visible-outline focus:outline-none',\n // EXPERIMENTAL: Static height instead of animated height\n 'h-[var(--rsbs-overlay-h-static,100vh)]',\n // EXPERIMENTAL: translate3d for GPU acceleration\n // Using transform-gpu class to enable GPU acceleration\n 'transform-gpu',\n // Performance optimizations - specify only transform for will-change\n 'will-change-transform',\n // Drag handle positioned at the very top\n 'before:absolute before:left-1/2 before:top-2xs before:block',\n 'before:h-2xs before:w-9 before:-translate-x-1/2 before:rounded-sm',\n 'before:bg-icon-secondary/20 before:content-[\"\"]'\n )}\n key=\"overlay\"\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n // Always stop propagation, to avoid weirdness for bottom sheets inside other bottom sheets\n event.stopPropagation();\n if (onDismiss) {\n onDismiss();\n }\n }\n }}\n ref={overlayRef}\n role=\"dialog\"\n style={{\n // EXPERIMENTAL: Apply translate3d transform via CSS custom property\n // Fallback uses the static height variable to ensure proper initial positioning\n transform:\n 'var(--rsbs-overlay-translate3d, translate3d(0, var(--rsbs-overlay-h-static, 100vh), 0))',\n }}\n tabIndex={-1}\n >\n {/* Absolute drag area overlay - covers the top section including visual handle */}\n <div\n className={cn(\n // Position absolutely to overlay the top section\n 'absolute left-0 right-0 top-0',\n // Height to cover visual handle + top padding space (4px + 8px + extra touch area)\n 'h-md',\n // Make it draggable\n 'cursor-ns-resize select-none',\n // Z-index to be above content but allow header text to be selectable\n 'z-10'\n )}\n style={{ touchAction: 'none' }}\n {...bind()}\n />\n\n {/* Header content - normal layout */}\n {header && (\n <div\n className=\"flex flex-col gap-2xs pb-sm\"\n key=\"header\"\n ref={headerRef}\n >\n <SheetTitle id=\"bottom-sheet-title\">{header.title}</SheetTitle>\n <SheetDescription id=\"bottom-sheet-description\">{header.description}</SheetDescription>\n </div>\n )}\n\n {/* If no header, still need ref for measurements */}\n {!header && (\n <div\n className=\"hidden\"\n ref={headerRef}\n />\n )}\n\n <BottomSheetContentArea\n contentRef={contentRef}\n disableScroll={disableScroll}\n scrollRef={scrollRef}\n >\n {children}\n </BottomSheetContentArea>\n\n {/* Footer area - always render for padding and gradient overlay */}\n <div\n className={cn(\n // Base styling - always apply padding and ensure minimum height\n 'relative flex-shrink-0',\n footer ? 'pt-lg' : 'min-h-[1px] pb-md',\n // Footer specific drag behavior - only when footer exists\n footer && 'cursor-ns-resize'\n )}\n key=\"footer\"\n ref={footerRef}\n style={footer ? { touchAction: 'none' } : undefined}\n {...(footer ? bind() : {})}\n >\n {/* Gradient overlay - show when scrollable and not at bottom */}\n {!disableScroll && isScrollable && !isScrolledToBottom && (\n <div\n className=\"pointer-events-none absolute -top-[42px] left-0 right-0 h-xl w-full\"\n data-testid=\"gradient-overlay\"\n style={{\n background: `linear-gradient(to bottom, transparent, ${wrapVarRgb('--color-background-primary')})`,\n }}\n />\n )}\n {footer}\n </div>\n </div>\n );\n }\n);\n\n// Add display name for better debugging\nBottomSheetOverlayTranslate3d.displayName = 'BottomSheetOverlayTranslate3d';\n","import { RefObject, useDebugValue, useEffect, useRef } from 'react';\n\n// Handle hiding and restoring aria-hidden attributes\nexport const useAriaHider = ({ enabled, targetRef }: { enabled: boolean; targetRef: RefObject<Element> }) => {\n // eslint-disable-next-line func-call-spacing\n const ref = useRef<{ activate: () => void; deactivate: () => void }>({\n activate: () => {\n throw new TypeError('Tried to activate aria hider too early');\n },\n deactivate: () => {},\n });\n\n useDebugValue(enabled ? 'Enabled' : 'Disabled');\n\n useEffect(() => {\n if (!enabled) {\n ref.current.deactivate();\n ref.current = { activate: () => {}, deactivate: () => {} };\n return;\n }\n\n const target = targetRef.current;\n let active = false;\n let originalValues: (null | string)[] = [];\n let rootNodes: Element[] = [];\n\n ref.current = {\n activate: () => {\n if (active) {\n return;\n }\n active = true;\n\n // For fixed positioned elements (like BottomSheet), we need to hide siblings at the body level\n // but exclude the target element itself and its ancestors\n const targetElement = target;\n\n // Find all elements to potentially hide\n const candidates = Array.from(document.querySelectorAll('body > *'));\n\n candidates.forEach((node) => {\n // Don't hide the target element itself\n if (node === targetElement) {\n return;\n }\n\n // Don't hide if target is a descendant of this node (prevents hiding containers)\n if (node.contains(targetElement)) {\n return;\n }\n\n // Don't hide if already hidden\n const attr = node.getAttribute('aria-hidden');\n const alreadyHidden = attr !== null && attr !== 'false';\n if (alreadyHidden) {\n return;\n }\n\n // Don't hide script, style, or other non-interactive elements\n const tagName = node.tagName.toLowerCase();\n if (['script', 'style', 'meta', 'title', 'link'].includes(tagName)) {\n return;\n }\n\n originalValues.push(attr);\n rootNodes.push(node);\n node.setAttribute('aria-hidden', 'true');\n });\n },\n deactivate: () => {\n if (!active) {\n return;\n }\n active = false;\n\n rootNodes.forEach((node, index) => {\n const originalValue = originalValues[index];\n if (originalValue === null) {\n node.removeAttribute('aria-hidden');\n } else {\n node.setAttribute('aria-hidden', originalValue);\n }\n });\n originalValues = [];\n rootNodes = [];\n },\n };\n }, [targetRef, enabled]);\n\n return ref;\n};\n","import { RefObject, useDebugValue, useEffect, useRef } from 'react';\n\n/**\n * Lightweight focus trap implementation without external dependencies\n * Provides basic focus management for modal/sheet components\n */\nexport const useFocusTrap = ({\n enabled,\n fallbackRef,\n initialFocusRef,\n targetRef,\n}: {\n enabled: boolean;\n fallbackRef: RefObject<HTMLElement>;\n initialFocusRef?: RefObject<HTMLElement>;\n targetRef: RefObject<HTMLElement>;\n}) => {\n // eslint-disable-next-line func-call-spacing\n const ref = useRef<{ activate: () => void; deactivate: () => void }>({\n activate: () => {\n throw new TypeError('Tried to activate focus trap too early');\n },\n deactivate: () => {},\n });\n const previousActiveElement = useRef<Element | null>(null);\n\n useDebugValue(enabled ? 'Enabled' : 'Disabled');\n\n useEffect(() => {\n if (!enabled) {\n ref.current.deactivate();\n ref.current = { activate: () => {}, deactivate: () => {} };\n return;\n }\n\n const target = targetRef.current;\n let active = false;\n\n const getFocusableElements = (container: HTMLElement): HTMLElement[] => {\n const focusableSelectors = [\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'textarea:not([disabled])',\n 'select:not([disabled])',\n 'a[href]',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(', ');\n\n return Array.from(container.querySelectorAll(focusableSelectors)) as HTMLElement[];\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain, @typescript-eslint/no-unnecessary-condition\n if (!active || !target || e.key !== 'Tab') {\n return;\n }\n\n const focusableElements = getFocusableElements(target);\n if (focusableElements.length === 0) {\n return;\n }\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n e.preventDefault();\n lastElement.focus();\n }\n } else if (document.activeElement === lastElement) {\n e.preventDefault();\n firstElement.focus();\n }\n };\n\n ref.current = {\n activate: () => {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain, @typescript-eslint/no-unnecessary-condition\n if (active || !target) {\n return;\n }\n active = true;\n\n // Store the previously focused element\n previousActiveElement.current = document.activeElement;\n\n // Add event listener for tab trapping\n document.addEventListener('keydown', handleKeyDown);\n },\n deactivate: () => {\n if (!active) {\n return;\n }\n active = false;\n\n // Remove event listener\n document.removeEventListener('keydown', handleKeyDown);\n\n // Restore focus to previously focused element\n if (\n previousActiveElement.current &&\n typeof (previousActiveElement.current as HTMLElement).focus === 'function'\n ) {\n (previousActiveElement.current as HTMLElement).focus();\n }\n previousActiveElement.current = null;\n },\n };\n }, [enabled, fallbackRef, initialFocusRef, targetRef]);\n\n return ref;\n};\n","import { useEffect, useLayoutEffect as useLayoutEffectSafely } from 'react';\n\n// Ensure the name used in components is useLayoutEffect so the eslint react hooks plugin works\nexport const useLayoutEffect = typeof window !== 'undefined' ? useLayoutEffectSafely : useEffect;\n","import { RefObject, useCallback, useEffect, useRef, useState } from 'react';\n\n/**\n * Custom hook for optimized scroll state management\n * Reduces re-renders and improves performance for scroll tracking\n */\nexport const useOptimizedScrollState = (scrollRef: RefObject<HTMLDivElement | null>, ready: boolean) => {\n const [isScrollable, setIsScrollable] = useState(false);\n const [isScrolledToBottom, setIsScrolledToBottom] = useState(false);\n\n // Function to check if content is scrollable and if we're at the bottom\n // Memoized with throttling for better performance\n const checkScrollState = useCallback(() => {\n const elem = scrollRef.current;\n if (!elem) {\n return;\n }\n\n const { clientHeight, scrollHeight, scrollTop } = elem;\n const scrollable = scrollHeight > clientHeight;\n const atBottom = Math.abs(scrollHeight - clientHeight - scrollTop) < 1;\n\n // Only update state if values actually changed to prevent unnecessary re-renders\n setIsScrollable((prev) => (prev !== scrollable ? scrollable : prev));\n setIsScrolledToBottom((prev) => (prev !== atBottom ? atBottom : prev));\n }, [scrollRef]);\n\n const checkScrollStateRef = useRef(checkScrollState);\n checkScrollStateRef.current = checkScrollState;\n\n // Set up scroll listener and initial check with optimized throttling\n useEffect(() => {\n const elem = scrollRef.current;\n if (!elem || !ready) {\n return;\n }\n\n checkScrollState();\n\n // Use requestAnimationFrame for scroll throttling instead of setTimeout\n let scrollRaf: number | null = null;\n let resizeRaf: number | null = null;\n\n const throttledScrollCheck = () => {\n if (scrollRaf !== null) {\n return;\n }\n scrollRaf = requestAnimationFrame(() => {\n checkScrollStateRef.current();\n scrollRaf = null;\n });\n };\n\n const throttledResizeCheck = () => {\n if (resizeRaf !== null) {\n return;\n }\n resizeRaf = requestAnimationFrame(() => {\n checkScrollStateRef.current();\n resizeRaf = null;\n });\n };\n\n // Use passive listeners for better scroll performance\n elem.addEventListener('scroll', throttledScrollCheck, { passive: true });\n\n const resizeObserver = new ResizeObserver(throttledResizeCheck);\n resizeObserver.observe(elem);\n\n return () => {\n elem.removeEventListener('scroll', throttledScrollCheck);\n if (scrollRaf !== null) {\n cancelAnimationFrame(scrollRaf);\n }\n if (resizeRaf !== null) {\n cancelAnimationFrame(resizeRaf);\n }\n resizeObserver.disconnect();\n };\n }, [ready, scrollRef, checkScrollState]);\n\n return {\n checkScrollState,\n isScrollable,\n isScrolledToBottom,\n };\n};\n","/* eslint-disable no-console */\n// Keeps track of wether everything is good to go or not, in the most efficient way possible\n\nimport { useCallback, useEffect, useState } from 'react';\n\nexport const useReady = () => {\n const [ready, setReady] = useState(false);\n const [readyMap, updateReadyMap] = useState<{ [key: string]: boolean }>({});\n\n const registerReady = useCallback((key: string) => {\n // Register the check we're gonna wait for until it's ready\n updateReadyMap((ready) => ({ ...ready, [key]: false }));\n\n return () => {\n // Set it to ready\n updateReadyMap((ready) => ({ ...ready, [key]: true }));\n };\n }, []);\n\n useEffect(() => {\n const states = Object.values(readyMap);\n\n if (states.length === 0) {\n return;\n }\n\n const isReady = states.every(Boolean);\n if (isReady) {\n setReady(true);\n }\n }, [readyMap]);\n\n return { ready, registerReady };\n};\n","import { useDebugValue, useEffect, useMemo, useRef } from 'react';\n\nexport const useReducedMotion = () => {\n const mql = useMemo(\n () => (typeof window !== 'undefined' ? window.matchMedia('(prefers-reduced-motion: reduce)') : null),\n []\n );\n const ref = useRef(mql?.matches);\n\n useDebugValue(ref.current ? 'reduce' : 'no-preference');\n\n useEffect(() => {\n const handler = (event: MediaQueryListEvent) => {\n ref.current = event.matches;\n };\n mql?.addEventListener('change', handler);\n\n return () => mql?.removeEventListener('change', handler);\n }, [mql]);\n\n return ref;\n};\n","import { RefObject, useDebugValue, useEffect, useRef } from 'react';\n\n/**\n * Lightweight scroll lock implementation without external dependencies\n * Handle scroll locking to ensure a good dragging experience on Android and iOS.\n *\n * On iOS the following may happen if scroll isn't locked:\n * - When dragging the sheet the background gets dragged at the same time.\n * - When dragging the page scroll is also affected, causing the drag to feel buggy and \"slow\".\n *\n * On Android it causes the chrome toolbar to pop down as you drag down, and hide as you drag up.\n * When it's in between two toolbar states it causes the framerate to drop way below 60fps on\n * the bottom sheet drag interaction.\n */\nexport const useScrollLock = ({\n enabled,\n reserveScrollBarGap,\n targetRef,\n}: {\n enabled: boolean;\n reserveScrollBarGap: boolean;\n targetRef: RefObject<Element>;\n}) => {\n // eslint-disable-next-line func-call-spacing\n const ref = useRef<{ activate: () => void; deactivate: () => void }>({\n activate: () => {\n throw new TypeError('Tried to activate scroll lock too early');\n },\n deactivate: () => {},\n });\n const originalStyles = useRef<{\n overflow: string;\n paddingRight: string;\n position: string;\n } | null>(null);\n\n useDebugValue(enabled ? 'Enabled' : 'Disabled');\n\n useEffect(() => {\n if (!enabled) {\n ref.current.deactivate();\n ref.current = { activate: () => {}, deactivate: () => {} };\n return;\n }\n\n let active = false;\n\n const getScrollbarWidth = (): number => {\n const scrollDiv = document.createElement('div');\n scrollDiv.style.cssText =\n 'width: 100px; height: 100px; overflow: scroll; position: absolute; top: -9999px;';\n document.body.appendChild(scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n };\n\n const preventTouchMove = (e: TouchEvent) => {\n const target = e.target as Element;\n // Allow touch move on elements marked as scrollable or within the target ref\n if (\n target.closest('[data-body-scroll-lock-ignore]') ||\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/prefer-optional-chain\n (targetRef.current && targetRef.current.contains(target))\n ) {\n return;\n }\n e.preventDefault();\n };\n\n ref.current = {\n activate: () => {\n if (active) {\n return;\n }\n active = true;\n\n const body = document.body;\n const html = document.documentElement;\n\n // Store original styles\n originalStyles.current = {\n overflow: body.style.overflow,\n paddingRight: body.style.paddingRight,\n position: body.style.position,\n };\n\n // Calculate scrollbar width if we need to reserve space\n let scrollbarWidth = 0;\n if (reserveScrollBarGap && window.innerWidth > html.clientWidth) {\n scrollbarWidth = getScrollbarWidth();\n }\n\n // Apply scroll lock styles\n body.style.overflow = 'hidden';\n if (scrollbarWidth > 0) {\n body.style.paddingRight = `${scrollbarWidth}px`;\n }\n\n // Prevent touch scrolling on mobile\n document.addEventListener('touchmove', preventTouchMove, { passive: false });\n\n // Prevent scroll restoration on iOS\n if (typeof window !== 'undefined' && 'scrollY' in window) {\n const scrollY = window.scrollY;\n body.style.position = 'fixed';\n body.style.top = `-${scrollY}px`;\n body.style.width = '100%';\n }\n },\n deactivate: () => {\n if (!active) {\n return;\n }\n active = false;\n\n const body = document.body;\n\n // Remove touch move listener\n document.removeEventListener('touchmove', preventTouchMove);\n\n // Restore original styles\n if (originalStyles.current) {\n body.style.overflow = originalStyles.current.overflow;\n body.style.paddingRight = originalStyles.current.paddingRight;\n\n // Restore scroll position on iOS\n if (body.style.position === 'fixed') {\n const scrollY = parseInt(body.style.top || '0', 10) * -1;\n body.style.position = originalStyles.current.position;\n body.style.top = '';\n body.style.width = '';\n window.scrollTo(0, scrollY);\n }\n }\n\n originalStyles.current = null;\n },\n };\n }, [enabled, targetRef, reserveScrollBarGap]);\n\n return ref;\n};\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-self-compare */\n\n// stolen from lodash\nexport const clamp = (number: number, lower: number, upper: number) => {\n number = Number(number);\n lower = Number(lower);\n upper = Number(upper);\n lower = lower === lower ? lower : 0;\n upper = upper === upper ? upper : 0;\n if (number === number) {\n number = number <= upper ? number : upper;\n number = number >= lower ? number : lower;\n }\n return number;\n};\n\n// Mwahaha easiest way to filter out NaN I ever saw! >:3\nexport const deleteNaN = (arr: number[]) => {\n const set = new Set(arr);\n set.delete(NaN);\n return [...set];\n};\n\nexport const roundAndCheckForNaN = (unrounded: number) => {\n const rounded = Math.round(unrounded);\n if (Number.isNaN(unrounded)) {\n throw new TypeError('Found a NaN! Check your snapPoints / defaultSnap / snapTo ');\n }\n\n return rounded;\n};\n\n// Validate, sanitize, round and dedupe snap points, as well as extracting the minSnap and maxSnap points\nexport const processSnapPoints = (unsafeSnaps: number | number[], maxHeight: number) => {\n // @ts-expect-error - we're not sure what the type of unsafeSnaps is, but we know it's a number or an array of numbers\n const safeSnaps = [].concat(unsafeSnaps).map(roundAndCheckForNaN);\n\n // Get actual viewport height for hard capping\n const viewportHeight = typeof window !== 'undefined' ? window.innerHeight : maxHeight;\n // Use the smaller of maxHeight or actual viewport height as the absolute limit\n const absoluteMaxHeight = Math.min(maxHeight, viewportHeight);\n\n const snapPointsDedupedSet = safeSnaps.reduce((acc, snapPoint) => {\n acc.add(clamp(snapPoint, 0, absoluteMaxHeight));\n return acc;\n }, new Set<number>());\n\n const snapPoints = Array.from(snapPointsDedupedSet);\n\n const minSnap = Math.min(...snapPoints);\n if (Number.isNaN(minSnap)) {\n throw new TypeError('minSnap is NaN');\n }\n const maxSnap = Math.max(...snapPoints);\n if (Number.isNaN(maxSnap)) {\n throw new TypeError('maxSnap is NaN');\n }\n\n return {\n maxSnap,\n minSnap,\n snapPoints,\n };\n};\n","import { ResizeObserver, ResizeObserverEntry } from '@juggle/resize-observer';\nimport { ResizeObserverOptions } from '@juggle/resize-observer/lib/ResizeObserverOptions';\nimport { RefObject, useCallback, useDebugValue, useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { defaultSnapProps, ResizeSource, snapPoints } from '../types';\n\nimport { processSnapPoints, roundAndCheckForNaN } from '../utils';\nimport { useLayoutEffect } from './useLayoutEffect';\nimport { useReady } from './useReady';\n\nexport const useSnapPoints = ({\n contentRef,\n controlledMaxHeight,\n controlledMinHeight,\n footerEnabled,\n footerRef,\n getSnapPoints,\n headerEnabled,\n headerRef,\n heightRef,\n lastSnapRef,\n ready,\n registerReady,\n resizeSourceRef,\n}: {\n contentRef: RefObject<Element>;\n controlledMaxHeight?: number;\n controlledMinHeight?: number;\n footerEnabled: boolean;\n footerRef: RefObject<Element>;\n getSnapPoints: snapPoints;\n headerEnabled: boolean;\n headerRef: RefObject<Element>;\n heightRef: RefObject<number>;\n lastSnapRef: RefObject<number>;\n ready: boolean;\n registerReady: ReturnType<typeof useReady>['registerReady'];\n resizeSourceRef: RefObject<ResizeSource>;\n}) => {\n const { footerHeight, headerHeight, maxHeight, minHeight } = useDimensions({\n contentRef: contentRef,\n controlledMaxHeight,\n controlledMinHeight,\n footerEnabled,\n footerRef,\n headerEnabled,\n headerRef,\n registerReady,\n resizeSourceRef,\n });\n\n const { maxSnap, minSnap, snapPoints } = processSnapPoints(\n ready\n ? getSnapPoints({\n footerHeight,\n headerHeight,\n height: heightRef.current,\n maxHeight,\n minHeight,\n })\n : [0],\n maxHeight\n );\n\n const findSnap = useCallback(\n (numberOrCallback: number | ((state: defaultSnapProps) => number), velocity?: number) => {\n let unsafeSearch: number;\n if (typeof numberOrCallback === 'function') {\n unsafeSearch = numberOrCallback({\n footerHeight,\n headerHeight,\n height: heightRef.current,\n lastSnap: lastSnapRef.current,\n maxHeight,\n minHeight,\n snapPoints,\n });\n } else {\n unsafeSearch = numberOrCallback;\n }\n const querySnap = roundAndCheckForNaN(unsafeSearch);\n\n // If velocity is provided and significant, consider direction for smarter snapping\n // But be much more conservative to avoid aggressive \"pushing\" behavior\n if (velocity && Math.abs(velocity) > 0.3) {\n // Higher threshold for velocity-based snapping\n const currentSnap = heightRef.current || 0;\n const direction = velocity > 0 ? 1 : -1; // positive velocity = upward motion\n\n // Find snaps in the direction of movement\n const snapsInDirection = snapPoints.filter((snap) =>\n direction > 0 ? snap > currentSnap : snap < currentSnap\n );\n\n if (snapsInDirection.length > 0) {\n // If moving with significant velocity, prefer the next snap in that direction\n const targetSnap = direction > 0 ? Math.min(...snapsInDirection) : Math.max(...snapsInDirection);\n\n // But only if the query position is reasonably close to that direction\n const distanceToTarget = Math.abs(targetSnap - querySnap);\n const distanceToClosest = Math.abs(\n snapPoints.reduce(\n (prev, curr) => (Math.abs(curr - querySnap) < Math.abs(prev - querySnap) ? curr : prev),\n minSnap\n ) - querySnap\n );\n\n // Be much more conservative - only use velocity-based snap if it's very close\n // and the velocity is really significant\n if (distanceToTarget < distanceToClosest * 1.2 && Math.abs(velocity) > 0.5) {\n return targetSnap;\n }\n }\n }\n\n // Fallback to closest snap point\n return snapPoints.reduce(\n (prev, curr) => (Math.abs(curr - querySnap) < Math.abs(prev - querySnap) ? curr : prev),\n minSnap\n );\n },\n [snapPoints, minSnap, footerHeight, headerHeight, heightRef, lastSnapRef, maxHeight, minHeight]\n );\n\n useDebugValue(`minSnap: ${minSnap}, maxSnap:${maxSnap}`);\n\n return { findSnap, maxHeight, maxSnap, minSnap };\n};\n\nfunction useDimensions({\n contentRef,\n controlledMaxHeight,\n controlledMinHeight = 300,\n footerEnabled,\n footerRef,\n headerEnabled,\n headerRef,\n registerReady,\n resizeSourceRef,\n}: {\n contentRef: RefObject<Element>;\n controlledMaxHeight?: number;\n controlledMinHeight?: number;\n footerEnabled: boolean;\n footerRef: RefObject<Element>;\n headerEnabled: boolean;\n headerRef: RefObject<Element>;\n registerReady: ReturnType<typeof useReady>['registerReady'];\n resizeSourceRef: RefObject<ResizeSource>;\n}) {\n const setReady = useMemo(() => registerReady('contentHeight'), [registerReady]);\n const maxHeight = useMaxHeight(controlledMaxHeight, registerReady, resizeSourceRef);\n\n // Note: Future optimization could forward props instead of checking refs for enabled state\n const headerHeight = useElementSizeObserver(headerRef, {\n enabled: headerEnabled,\n label: 'headerHeight',\n resizeSourceRef,\n });\n const contentHeight = useElementSizeObserver(contentRef, {\n enabled: true,\n label: 'contentHeight',\n resizeSourceRef,\n });\n const footerHeight = useElementSizeObserver(footerRef, {\n enabled: footerEnabled,\n label: 'footerHeight',\n resizeSourceRef,\n });\n\n // Use the larger of calculated minHeight or controlled minHeight\n // Ensure the calculated minHeight never exceeds maxHeight (which now includes viewport buffer)\n const calculatedMinHeight =\n Math.min(maxHeight - headerHeight - footerHeight, contentHeight) + headerHeight + footerHeight;\n const minHeight = Math.min(Math.max(calculatedMinHeight, controlledMinHeight), maxHeight);\n\n useDebugValue(`minHeight: ${minHeight}`);\n\n const ready = contentHeight > 0;\n useEffect(() => {\n if (ready) {\n setReady();\n }\n }, [ready, setReady]);\n\n return {\n footerHeight,\n headerHeight,\n maxHeight,\n minHeight,\n };\n}\n\nconst observerOptions: ResizeObserverOptions = {\n // And the user hides or shows the Safari browser toolbar\n box: 'border-box',\n};\n/**\n * Hook for determining the size of an element using the Resize Observer API.\n *\n * @param ref - A React ref to an element\n */\nfunction useElementSizeObserver(\n ref: RefObject<Element>,\n {\n enabled,\n label,\n resizeSourceRef,\n }: {\n enabled: boolean;\n label: string;\n resizeSourceRef: RefObject<ResizeSource>;\n }\n): number {\n const [size, setSize] = useState(0);\n const rafRef = useRef<number>(0);\n const lastSizeRef = useRef<number>(0);\n\n useDebugValue(`${label}: ${size}`);\n\n const handleResize = useCallback(\n (entries: ResizeObserverEntry[]) => {\n // Cancel any pending RAF to throttle updates\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n }\n\n rafRef.current = requestAnimationFrame(() => {\n // we only observe one element, so accessing the first entry here is fine\n const entry = entries[0];\n const newSize = entry.borderBoxSize[0]?.blockSize || entry.contentRect.height;\n\n // Only update if size actually changed by a meaningful amount (1px threshold)\n if (Math.abs(newSize - lastSizeRef.current) >= 1) {\n lastSizeRef.current = newSize;\n setSize(newSize);\n resizeSourceRef.current = 'element';\n }\n\n rafRef.current = 0;\n });\n },\n [resizeSourceRef]\n );\n\n useLayoutEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!ref.current || !enabled) {\n return;\n }\n\n const element = ref.current;\n const resizeObserver = new ResizeObserver(handleResize);\n\n // Get initial size synchronously for faster startup\n const initialRect = element.getBoundingClientRect();\n if (initialRect.height > 0 && lastSizeRef.current === 0) {\n lastSizeRef.current = initialRect.height;\n setSize(initialRect.height);\n }\n\n resizeObserver.observe(element, observerOptions);\n\n return () => {\n resizeObserver.disconnect();\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n }\n };\n }, [ref, handleResize, enabled]);\n\n return enabled ? size : 0;\n}\n\n// Blazingly keep track of the current viewport height without blocking the thread, keeping that sweet 60fps on smartphones\nfunction useMaxHeight(\n controlledMaxHeight: number | undefined,\n registerReady: ReturnType<typeof useReady>['registerReady'],\n resizeSourceRef: RefObject<ResizeSource>\n) {\n const setReady = useMemo(() => registerReady('maxHeight'), [registerReady]);\n\n // Helper function to calculate safe viewport height with buffer\n const getSafeViewportHeight = useCallback((viewportHeight: number) => {\n // Apply a buffer to ensure bottom sheet never exceeds viewport height\n // Use 64px buffer (approximately the height of mobile browser chrome/status bar)\n const VIEWPORT_BUFFER = 64;\n return Math.max(viewportHeight - VIEWPORT_BUFFER, 300); // Minimum 300px height\n }, []);\n\n const [maxHeight, setMaxHeight] = useState(() => {\n const viewportHeight = typeof window !== 'undefined' ? window.innerHeight : 0;\n\n if (controlledMaxHeight) {\n const controlledHeight = roundAndCheckForNaN(controlledMaxHeight);\n // Always cap controlled height at actual viewport height\n return Math.min(controlledHeight, viewportHeight);\n }\n\n return getSafeViewportHeight(viewportHeight);\n });\n\n const ready = maxHeight > 0;\n const raf = useRef(0);\n\n useDebugValue(controlledMaxHeight ? 'controlled' : 'auto');\n\n useEffect(() => {\n if (ready) {\n setReady();\n }\n }, [ready, setReady]);\n\n useLayoutEffect(() => {\n // Handle controlled max height with viewport capping\n if (controlledMaxHeight) {\n const controlledHeight = roundAndCheckForNaN(controlledMaxHeight);\n // Always cap controlled height at actual viewport height\n const cappedHeight = Math.min(controlledHeight, window.innerHeight);\n setMaxHeight(cappedHeight);\n resizeSourceRef.current = 'maxheightprop';\n\n return;\n }\n\n const handleResize = () => {\n if (raf.current) {\n // bail to throttle the amount of resize changes\n return;\n }\n\n // throttle state changes using rAF\n raf.current = requestAnimationFrame(() => {\n const safeHeight = getSafeViewportHeight(window.innerHeight);\n setMaxHeight(safeHeight);\n resizeSourceRef.current = 'window';\n\n raf.current = 0;\n });\n };\n\n window.addEventListener('resize', handleResize);\n const initialSafeHeight = getSafeViewportHeight(window.innerHeight);\n setMaxHeight(initialSafeHeight);\n resizeSourceRef.current = 'window';\n setReady();\n\n return () => {\n window.removeEventListener('resize', handleResize);\n cancelAnimationFrame(raf.current);\n };\n }, [controlledMaxHeight, setReady, resizeSourceRef, getSafeViewportHeight]);\n\n return maxHeight;\n}\n","import { useSpring as useReactSpring } from '@react-spring/web';\n\n// Behold, the engine of it all!\n// Put in this file befause it makes it easier to type and I'm lazy! :D\n\nexport const useSpring = () => {\n const [spring, api] = useReactSpring(() => ({\n config: {\n // Increase friction for less oscillation\n friction: 32,\n // Prevent spring from overshooting its target, eliminating final bounce\n overshootClamping: true,\n // End animation sooner when displacement is below this threshold (increased from 0.01)\n restDisplacementThreshold: 0.1,\n // End animation sooner when speed drops below this threshold (increased from 2)\n restSpeedThreshold: 10,\n // Increase tension slightly for snappier animations\n tension: 280,\n },\n maxHeight: 0,\n maxSnap: 0,\n minSnap: 0,\n y: 0,\n }));\n\n return [spring, api] as const;\n};\n\nexport type Spring = ReturnType<typeof useSpring>[0];\nexport type SpringAPI = ReturnType<typeof useSpring>[1];\n\n/** The animated values the sheet's spring tracks. */\ntype SpringTargetValues = {\n maxHeight?: number;\n maxSnap?: number;\n minSnap?: number;\n y?: number;\n};\n\n/** The subset of spring props the sheet animates via `api.start` / `asyncSet`. */\nexport type SpringSetOptions = SpringTargetValues & {\n config?: { velocity?: number };\n from?: SpringTargetValues;\n immediate?: boolean;\n onRest?: (result?: unknown) => void;\n to?: SpringTargetValues;\n};\n","import { to } from '@react-spring/web';\nimport { CSSProperties, useMemo } from 'react';\n\nimport type { Spring } from './useSpring';\n\n/**\n * `CSSProperties` widened to admit the sheet's `--rsbs-*` custom properties, whose\n * values are react-spring interpolations rather than plain strings.\n */\ntype SpringInterpolationStyles = CSSProperties & Record<`--rsbs-${string}`, unknown>;\n\n/**\n * Experimental translate3d-based interpolations for GPU-accelerated bottom sheet animations.\n * This approach uses a static height and translates the entire sheet vertically using translate3d,\n * which leverages GPU acceleration for better performance on mobile devices.\n */\nexport const useSpringInterpolationsTranslate3d = ({ spring }: { spring: Spring }): SpringInterpolationStyles => {\n // Memoize interpolation functions to prevent recreation on every render\n const interpolations = useMemo(() => {\n // Border radius animation - same as original\n const interpolateBorderRadius = to([spring.y, spring.maxHeight], (y, maxHeight) => {\n const clamped = Math.max(0, Math.min(16, maxHeight - y));\n return `${Math.round(clamped)}px`;\n });\n\n /**\n * EXPERIMENTAL: Static height calculation\n * Instead of animating height, we calculate the maximum height once and keep it static.\n * This avoids expensive height recalculations during animation.\n */\n const interpolateStaticHeight = to([spring.maxSnap], (maxSnap) => {\n return `${Math.round(maxSnap)}px`;\n });\n\n /**\n * EXPERIMENTAL: translate3d Y positioning\n * This is the core of the GPU acceleration approach.\n * We translate the entire bottom sheet vertically using translate3d.\n *\n * Logic based on spring system expectations:\n * - When closed (y = 0): translate3d(0, maxSnap, 0) - hidden below viewport\n * - When open (y = current snap): translate3d(0, 0, 0) - visible at normal position\n * - During drag: interpolate between positions based on current y value\n */\n const interpolateTranslate3d = to([spring.y, spring.maxSnap], (y, maxSnap) => {\n // The spring system uses:\n // y = 0 for closed state (hidden)\n // y = snap value for open state (visible)\n\n // Fallback for when maxSnap isn't ready yet\n const safeMaxSnap = maxSnap || (typeof window !== 'undefined' ? window.innerHeight : 800);\n\n // When y = 0 (closed): we want translate down by maxSnap (hide sheet)\n // When y = snap (open): we want translate3d(0, 0, 0) (show sheet)\n\n if (y === 0) {\n // Closed state - translate down by full height to hide\n return `translate3d(0, ${Math.round(safeMaxSnap)}px, 0)`;\n }\n\n // Open state - calculate how much to show based on y value\n // y represents the desired height, so we translate up to show that much\n const offset = Math.max(0, safeMaxSnap - y);\n return `translate3d(0, ${Math.round(offset)}px, 0)`;\n });\n\n // Anti-gap filler - same as original\n const interpolateFiller = to([spring.y, spring.maxSnap], (y, maxSnap) => {\n return Math.max(0, Math.ceil(y - maxSnap));\n });\n\n // Content and backdrop opacity - simplified to always 1 for performance\n const interpolateContentOpacity = to([spring.y], () => 1);\n const interpolateBackdrop = to([spring.y], () => 1);\n\n return {\n interpolateBackdrop,\n interpolateBorderRadius,\n interpolateContentOpacity,\n interpolateFiller,\n interpolateStaticHeight,\n interpolateTranslate3d,\n };\n }, [spring.y, spring.maxSnap, spring.maxHeight]);\n\n // Return CSS properties optimized for GPU acceleration\n return {\n // Content fade-in effect\n '--rsbs-content-opacity': interpolations.interpolateContentOpacity,\n // Backdrop fade-in\n '--rsbs-backdrop-opacity': interpolations.interpolateBackdrop,\n // Anti-gap scaling\n '--rsbs-antigap-scale-y': interpolations.interpolateFiller,\n // EXPERIMENTAL: Static height instead of animated height\n '--rsbs-overlay-h-static': interpolations.interpolateStaticHeight,\n // EXPERIMENTAL: translate3d for GPU acceleration\n '--rsbs-overlay-translate3d': interpolations.interpolateTranslate3d,\n // Border radius animation\n '--rsbs-overlay-rounded': interpolations.interpolateBorderRadius,\n };\n};\n","import { rubberbandIfOutOfBounds } from '@use-gesture/react';\nimport { RefObject, useCallback, useEffect, useRef } from 'react';\n\nimport type { BottomSheetEvent, SnapPayload } from '../state/atoms';\nimport type { Spring, SpringAPI } from './useSpring';\n\n/**\n * The subset of use-gesture's drag state the handler reads.\n * Structurally compatible with `FullGestureState<'drag'>`, so the handler can be\n * passed straight to `useDrag` without widening any parameter to `any`.\n */\nexport type DragState = {\n args?: { closeOnTap?: boolean }[];\n cancel: () => void;\n direction?: [number, number];\n down?: boolean;\n first?: boolean;\n last?: boolean;\n memo?: number;\n movement?: [number, number];\n tap?: boolean;\n velocity?: [number, number];\n};\n\n/**\n * Props for the drag handler hook\n */\ntype UseDragHandlerProps = {\n /** Spring API object for controlling animations */\n api: SpringAPI;\n /** Reference to track if dragging is allowed */\n canDragRef: RefObject<boolean>;\n /** Reference to the current max height value */\n maxHeightRef: RefObject<number>;\n /** Reference to the current max snap value */\n maxSnapRef: RefObject<number>;\n /** Reference to the current min snap value */\n minSnapRef: RefObject<number>;\n /** Dismiss handler function */\n onDismiss?: () => void;\n /** Reference to track if scrolling should be prevented */\n preventScrollingRef: RefObject<boolean>;\n /** Function to send events to the state machine */\n send: (event: BottomSheetEvent['type'], payload?: SnapPayload) => void;\n /** Spring object with current values */\n spring: Spring;\n};\n\n/**\n * Custom hook to handle drag interactions for the bottom sheet\n */\nexport const useDragHandler = ({\n api,\n canDragRef,\n maxHeightRef,\n maxSnapRef,\n minSnapRef,\n onDismiss,\n preventScrollingRef,\n send,\n spring,\n}: UseDragHandlerProps) => {\n // Create stable refs for the functions to avoid recreating the drag handler\n const sendRef = useRef(send);\n const apiRef = useRef(api);\n const onDismissRef = useRef(onDismiss);\n const springRef = useRef(spring);\n\n // Performance optimization: Throttle drag updates using RAF\n const rafRef = useRef<number>(0);\n const lastUpdateRef = useRef<number>(0);\n\n // DEBUGGING: Track active timers and RAF calls\n const activeTimersRef = useRef<Set<ReturnType<typeof setTimeout>>>(new Set());\n const activeRAFsRef = useRef<Set<number>>(new Set());\n\n // Cleanup function to clear all pending timers and RAF calls\n const cleanupPendingCalls = useCallback(() => {\n // Clear all pending RAF calls\n activeRAFsRef.current.forEach((id) => {\n cancelAnimationFrame(id);\n });\n activeRAFsRef.current.clear();\n\n // Clear all pending timers\n activeTimersRef.current.forEach((id) => {\n clearTimeout(id);\n });\n activeTimersRef.current.clear();\n\n // Clear the main RAF ref\n if (rafRef.current) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = 0;\n }\n }, []);\n\n // Cleanup on unmount - force cleanup of all pending operations\n useEffect(() => {\n return () => {\n cleanupPendingCalls();\n };\n }, [cleanupPendingCalls]);\n\n // Update refs when functions change\n sendRef.current = send;\n apiRef.current = api;\n onDismissRef.current = onDismiss;\n springRef.current = spring;\n\n const handleDrag = useCallback(\n (state: DragState) => {\n // Clean up any pending timers/RAF at the start of each drag operation\n if (state?.first) {\n cleanupPendingCalls();\n }\n\n // Optimize: Avoid destructuring and use direct property access to reduce object creation\n const args = state?.args || [];\n const cancel = state?.cancel;\n const direction = state?.direction?.[1] || 0; // Only need Y direction\n const down = state?.down;\n const first = state?.first;\n const last = state?.last;\n const memo = state?.memo ?? (springRef.current.y.get() as number);\n const movement = state?.movement || [0, 0];\n const tap = state?.tap;\n const velocity = state?.velocity || [0, 0];\n\n // Extract closeOnTap from args if available, default to false\n const closeOnTap = args[0]?.closeOnTap || false;\n const _my = movement[1];\n const velocityY = velocity[1]; // Extract y-component of velocity\n const my = _my * -1;\n\n // Cancel the drag operation if the canDrag state changed\n if (!canDragRef.current) {\n cancel();\n return memo;\n }\n\n if (onDismissRef.current && closeOnTap && tap) {\n cancel();\n // Runs onDismiss in a timeout to avoid tap events on the backdrop from triggering click events on elements underneath\n const timerId = setTimeout(() => {\n activeTimersRef.current.delete(timerId);\n onDismissRef.current?.();\n }, 0);\n activeTimersRef.current.add(timerId);\n return memo;\n }\n\n // Filter out taps\n if (tap) {\n return memo;\n }\n\n // Note: Content dragging has been removed - only header/handle area can drag the sheet\n\n const rawY = memo + my;\n // More natural velocity prediction with proper deceleration\n // Use a smaller multiplier and consider the velocity direction more carefully\n const velocityFactor = Math.min(Math.abs(velocityY), 2); // Cap velocity influence\n const predictedDistance = my * velocityFactor * 0.3; // Much gentler prediction\n // Allow going below minSnap for close detection, but clamp for normal snapping\n const unclamped = rawY + predictedDistance;\n const predictedY = onDismissRef.current\n ? Math.min(maxSnapRef.current, unclamped) // Allow below minSnap if dismissible\n : Math.max(minSnapRef.current, Math.min(maxSnapRef.current, unclamped)); // Normal clamping\n\n if (!down && onDismissRef.current && direction > 0 && rawY + predictedDistance < minSnapRef.current / 2) {\n cancel();\n onDismissRef.current();\n return memo;\n }\n\n const newY = down\n ? // Handle rubberband when min and max snap points are equal (single snap point)\n !onDismissRef.current && minSnapRef.current === maxSnapRef.current\n ? // For single snap point, create symmetric rubberband effect\n rubberbandIfOutOfBounds(\n rawY,\n minSnapRef.current * 0.5, // Allow some downward stretch\n minSnapRef.current * 1.5, // Allow some upward stretch\n 0.55\n )\n : rubberbandIfOutOfBounds(\n rawY,\n onDismissRef.current ? 0 : minSnapRef.current,\n maxSnapRef.current,\n 0.55\n )\n : predictedY;\n\n // Since content dragging is disabled, we don't need to prevent scrolling\n preventScrollingRef.current = false;\n\n if (first) {\n sendRef.current('DRAG');\n }\n\n if (last) {\n // Add small delay to prevent rapid state changes\n const timerId1 = setTimeout(() => {\n activeTimersRef.current.delete(timerId1);\n // Check if should close instead of snap\n // Use unclamped position for close detection\n const closePosition = rawY + my * velocityFactor * 0.3;\n const shouldClose =\n onDismissRef.current &&\n // Close if dragged significantly below minSnap\n (closePosition < minSnapRef.current * 0.75 ||\n // Close if moving downward with significant velocity\n (velocityY < -0.5 && closePosition < minSnapRef.current));\n\n if (shouldClose) {\n // Call onDismiss directly like the backdrop click does\n // This triggers the same close animation as clicking the backdrop\n cancel();\n const timerId2 = setTimeout(() => {\n activeTimersRef.current.delete(timerId2);\n onDismissRef.current?.();\n }, 0);\n activeTimersRef.current.add(timerId2);\n } else {\n sendRef.current('SNAP', {\n source: 'dragging',\n velocity: Math.abs(velocityY) > 0.01 ? Math.abs(velocityY) : 0.5,\n y: newY,\n });\n }\n }, 0);\n activeTimersRef.current.add(timerId1);\n\n return memo;\n }\n\n // Performance optimization: Throttle spring updates to ~60fps during dragging\n const now = performance.now();\n if (now - lastUpdateRef.current < 16) {\n // ~60fps throttling\n // Cancel any pending RAF and schedule new one\n if (rafRef.current) {\n activeRAFsRef.current.delete(rafRef.current);\n cancelAnimationFrame(rafRef.current);\n }\n\n rafRef.current = requestAnimationFrame(() => {\n activeRAFsRef.current.delete(rafRef.current);\n apiRef.current.start({\n config: { velocity: velocityY },\n immediate: true,\n maxHeight: maxHeightRef.current,\n maxSnap: maxSnapRef.current,\n minSnap: minSnapRef.current,\n y: newY,\n });\n lastUpdateRef.current = performance.now();\n rafRef.current = 0;\n });\n activeRAFsRef.current.add(rafRef.current);\n } else {\n // Update immediately if enough time has passed\n apiRef.current.start({\n config: { velocity: velocityY },\n immediate: true,\n maxHeight: maxHeightRef.current,\n maxSnap: maxSnapRef.current,\n minSnap: minSnapRef.current,\n y: newY,\n });\n lastUpdateRef.current = now;\n }\n\n return memo;\n },\n [canDragRef, preventScrollingRef, minSnapRef, maxSnapRef, maxHeightRef, cleanupPendingCalls]\n // Removed spring.y from deps since we access it via spring.y.get() inside the callback\n );\n\n return { handleDrag };\n};\n","import { RefObject, useCallback } from 'react';\n\nimport type { BottomSheetServices } from '../state/useBottomSheetStateMachine';\nimport type { ResizeSource, SpringEvent } from '../types';\nimport type { SpringSetOptions } from './useSpring';\n\n/**\n * Props for the bottom sheet services hook\n */\ntype UseBottomSheetServicesProps = {\n /** Aria hider ref with activate/deactivate methods */\n ariaHiderRef: RefObject<{ activate: () => void; deactivate: () => void }>;\n /** Async spring setter function */\n asyncSet: (config: SpringSetOptions) => Promise<void>;\n /** Reference to track if dragging is allowed */\n canDragRef: RefObject<boolean>;\n /** Reference to the default snap value */\n defaultSnapRef: RefObject<number>;\n /** Reference to the find snap function */\n findSnapRef: RefObject<(y: number, velocity?: number) => number>;\n /** Focus trap ref with activate/deactivate methods */\n focusTrapRef: RefObject<{ activate: () => void; deactivate: () => void }>;\n /** Reference to the current height */\n heightRef: RefObject<number>;\n /** Reference to the last snap value */\n lastSnapRef: RefObject<number | null>;\n /** Reference to the current max height value */\n maxHeightRef: RefObject<number>;\n /** Reference to the current max snap value */\n maxSnapRef: RefObject<number>;\n /** Reference to the current min snap value */\n minSnapRef: RefObject<number>;\n /** Spring cancel callback ref */\n onSpringCancelRef: RefObject<((event: SpringEvent) => void) | undefined>;\n /** Spring end callback ref */\n onSpringEndRef: RefObject<((event: SpringEvent) => void) | undefined>;\n /** Spring start callback ref */\n onSpringStartRef: RefObject<((event: SpringEvent) => void) | undefined>;\n /** Reference to check if reduced motion is preferred */\n prefersReducedMotion: RefObject<boolean | undefined>;\n /** Reference to track resize source */\n resizeSourceRef: RefObject<ResizeSource>;\n /** Scroll lock ref with activate/deactivate methods */\n scrollLockRef: RefObject<{ activate: () => void; deactivate: () => void }>;\n};\n\n/**\n * Custom hook to provide state machine services for the bottom sheet\n */\nexport const useBottomSheetServices = ({\n ariaHiderRef,\n asyncSet,\n canDragRef,\n defaultSnapRef,\n findSnapRef,\n focusTrapRef,\n heightRef,\n lastSnapRef,\n maxHeightRef,\n maxSnapRef,\n minSnapRef,\n onSpringEndRef,\n onSpringStartRef,\n prefersReducedMotion,\n resizeSourceRef,\n scrollLockRef,\n}: UseBottomSheetServicesProps) => {\n const services = useCallback(\n (): BottomSheetServices => ({\n activate: async () => {\n canDragRef.current = true;\n await Promise.all(\n [\n scrollLockRef.current.activate(),\n focusTrapRef.current.activate(),\n ariaHiderRef.current.activate(),\n ].filter(Boolean)\n );\n },\n closeSmoothly: async () => {\n // Avoid animating the height property on close and stay within FLIP bounds by upping the minSnap\n asyncSet({\n immediate: true,\n minSnap: heightRef.current,\n });\n\n heightRef.current = 0;\n\n await asyncSet({\n immediate: prefersReducedMotion.current || false,\n maxHeight: maxHeightRef.current,\n maxSnap: maxSnapRef.current,\n y: 0,\n });\n },\n deactivate: async () => {\n // Deactivate focus trap to restore focus (if any element was previously focused)\n focusTrapRef.current.deactivate();\n\n // Deactivate scroll lock and aria hider\n scrollLockRef.current.deactivate();\n ariaHiderRef.current.deactivate();\n\n canDragRef.current = false;\n },\n onCloseEnd: async () => {\n // Final cleanup after close animation completes\n // The spring end callback has already been called by this point\n },\n onCloseStart: async () => onSpringStartRef.current?.({ type: 'CLOSE' }),\n onOpenEnd: async () => onSpringEndRef.current?.({ type: 'OPEN' }),\n onOpenStart: async () => onSpringStartRef.current?.({ type: 'OPEN' }),\n onResizeEnd: async () =>\n onSpringEndRef.current?.({\n source: resizeSourceRef.current,\n type: 'RESIZE',\n }),\n onResizeStart: async () =>\n onSpringStartRef.current?.({\n source: resizeSourceRef.current,\n type: 'RESIZE',\n }),\n onSnapEnd: async (context) =>\n onSpringEndRef.current?.({\n source: context.snapSource || 'custom',\n type: 'SNAP',\n }),\n onSnapStart: async (context) =>\n onSpringStartRef.current?.({\n source: context.snapSource || 'custom',\n type: 'SNAP',\n }),\n openImmediately: async () => {\n heightRef.current = defaultSnapRef.current;\n await asyncSet({\n immediate: true,\n maxHeight: maxHeightRef.current,\n maxSnap: maxSnapRef.current,\n // Using defaultSnapRef instead of minSnapRef to avoid animating `height` on open\n minSnap: defaultSnapRef.current,\n y: defaultSnapRef.current,\n });\n },\n openSmoothly: async () => {\n // Use fallback values if measurements aren't ready yet for faster initial render\n const maxHeight = maxHeightRef.current || (typeof window !== 'undefined' ? window.innerHeight : 800);\n const defaultSnap = defaultSnapRef.current || 300; // Fallback to reasonable default\n const maxSnap = maxSnapRef.current || maxHeight;\n\n // MOBILE OPTIMIZATION: Single animation instead of double animation\n // This eliminates the jarring transition that causes FPS drops on mobile\n heightRef.current = defaultSnap;\n\n await asyncSet({\n // Start from closed position and animate to open in one smooth motion\n from: { maxHeight, maxSnap, minSnap: defaultSnap, y: 0 },\n immediate: prefersReducedMotion.current || false,\n to: { maxHeight, maxSnap, minSnap: defaultSnap, y: defaultSnap },\n });\n },\n renderVisuallyHidden: async () => {\n // Use fallback values if measurements aren't ready yet\n const maxHeight = maxHeightRef.current || (typeof window !== 'undefined' ? window.innerHeight : 800);\n const defaultSnap = defaultSnapRef.current || 300;\n const maxSnap = maxSnapRef.current || maxHeight;\n\n await asyncSet({\n immediate: true,\n maxHeight,\n maxSnap,\n // Using defaultSnapRef instead of minSnapRef to avoid animating `height` on open\n minSnap: defaultSnap,\n y: defaultSnap,\n });\n },\n resizeSmoothly: async () => {\n const snap = findSnapRef.current(heightRef.current);\n heightRef.current = snap;\n lastSnapRef.current = snap;\n await asyncSet({\n immediate: resizeSourceRef.current === 'element' ? prefersReducedMotion.current || false : true,\n maxHeight: maxHeightRef.current,\n maxSnap: maxSnapRef.current,\n minSnap: minSnapRef.current,\n y: snap,\n });\n },\n snapSmoothly: async (context) => {\n const snap = findSnapRef.current(context.y || 0, context.velocity);\n\n heightRef.current = snap;\n lastSnapRef.current = snap;\n await asyncSet({\n config: { velocity: context.velocity || 1 },\n immediate: prefersReducedMotion.current || false,\n maxHeight: maxHeightRef.current,\n maxSnap: maxSnapRef.current,\n minSnap: minSnapRef.current,\n y: snap,\n });\n },\n }),\n [\n canDragRef,\n heightRef,\n lastSnapRef,\n defaultSnapRef,\n maxHeightRef,\n maxSnapRef,\n minSnapRef,\n findSnapRef,\n resizeSourceRef,\n prefersReducedMotion,\n asyncSet,\n scrollLockRef,\n focusTrapRef,\n ariaHiderRef,\n onSpringStartRef,\n onSpringEndRef,\n ]\n );\n\n return services;\n};\n","import { atom } from 'jotai';\n\n/**\n * Bottom sheet state types\n */\nexport type BottomSheetState = 'closed' | 'opening' | 'open' | 'closing' | 'dragging' | 'snapping' | 'resizing';\n\nexport type BottomSheetEvent =\n | { type: 'OPEN' }\n | { type: 'CLOSE' }\n | { type: 'DRAG' }\n | { type: 'RESIZE' }\n | {\n payload: {\n source: 'dragging' | 'custom' | string;\n velocity: number;\n y: number;\n };\n type: 'SNAP';\n };\n\n/** The payload shape carried by SNAP events. */\nexport type SnapPayload = Extract<BottomSheetEvent, { type: 'SNAP' }>['payload'];\n\nexport type BottomSheetContext = {\n initialState: 'OPEN' | 'CLOSED';\n snapSource?: 'dragging' | 'custom' | string;\n velocity?: number;\n y?: number;\n};\n\n/**\n * Core state atoms\n */\nexport const bottomSheetStateAtom = atom<BottomSheetState>('closed');\nexport const bottomSheetContextAtom = atom<BottomSheetContext>({ initialState: 'CLOSED' });\n\n/**\n * Derived state atoms\n */\nexport const isOpenAtom = atom((get) => {\n const state = get(bottomSheetStateAtom);\n return (\n state === 'open' || state === 'opening' || state === 'dragging' || state === 'snapping' || state === 'resizing'\n );\n});\n\nexport const isClosedAtom = atom((get) => {\n const state = get(bottomSheetStateAtom);\n return state === 'closed';\n});\n\nexport const isTransitioningAtom = atom((get) => {\n const state = get(bottomSheetStateAtom);\n return state === 'opening' || state === 'closing' || state === 'snapping' || state === 'resizing';\n});\n\nexport const isDraggingAtom = atom((get) => {\n const state = get(bottomSheetStateAtom);\n return state === 'dragging';\n});\n\n/**\n * Action atoms for state transitions\n */\nexport const sendEventAtom = atom(null, (get, set, event: BottomSheetEvent) => {\n const currentState = get(bottomSheetStateAtom);\n const context = get(bottomSheetContextAtom);\n\n // Add guards to prevent rapid state changes\n switch (event.type) {\n case 'OPEN':\n if (currentState === 'closed' || currentState === 'closing') {\n set(bottomSheetStateAtom, 'opening');\n }\n break;\n\n case 'CLOSE':\n if (currentState !== 'closed' && currentState !== 'closing') {\n set(bottomSheetStateAtom, 'closing');\n }\n break;\n\n case 'DRAG':\n // Only allow drag if not already in a transitional state\n if (\n currentState === 'open' ||\n (currentState === 'opening' && context.initialState === 'OPEN') ||\n currentState === 'snapping' ||\n currentState === 'resizing'\n ) {\n set(bottomSheetStateAtom, 'dragging');\n }\n break;\n\n case 'SNAP':\n // Only allow snap from dragging or stable open state\n if (currentState === 'dragging' || currentState === 'open') {\n // Batch the context and state updates to prevent multiple renders\n const newContext = {\n ...context,\n snapSource: event.payload.source,\n velocity: event.payload.velocity,\n y: event.payload.y,\n };\n\n set(bottomSheetContextAtom, newContext);\n set(bottomSheetStateAtom, 'snapping');\n }\n break;\n\n case 'RESIZE':\n // Only allow resize from stable states\n if (currentState === 'open') {\n set(bottomSheetStateAtom, 'resizing');\n }\n break;\n\n default:\n break;\n }\n});\n\n/**\n * Transition completion atoms\n */\nexport const completeTransitionAtom = atom(null, (get, set, targetState: BottomSheetState) => {\n const currentState = get(bottomSheetStateAtom);\n\n // Only complete transitions if we're currently in a transitioning state\n if (get(isTransitioningAtom) || currentState === 'dragging') {\n set(bottomSheetStateAtom, targetState);\n }\n});\n\n/**\n * Reset atom for cleanup\n */\nexport const resetStateAtom = atom(null, (get, set, initialState: 'OPEN' | 'CLOSED' = 'CLOSED') => {\n set(bottomSheetStateAtom, initialState === 'OPEN' ? 'open' : 'closed');\n set(bottomSheetContextAtom, {\n initialState,\n snapSource: undefined,\n velocity: undefined,\n y: undefined,\n });\n});\n","import { useAtom, useAtomValue, useSetAtom } from 'jotai';\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport {\n type BottomSheetContext,\n bottomSheetContextAtom,\n type BottomSheetEvent,\n type BottomSheetState,\n bottomSheetStateAtom,\n completeTransitionAtom,\n isClosedAtom,\n isDraggingAtom,\n isOpenAtom,\n isTransitioningAtom,\n resetStateAtom,\n sendEventAtom,\n type SnapPayload,\n} from './atoms';\n\n/**\n * Services interface matching the XState pattern\n */\nexport interface BottomSheetServices {\n activate: () => Promise<void>;\n closeSmoothly: () => Promise<void>;\n deactivate: () => Promise<void>;\n onCloseEnd: () => Promise<void>;\n onCloseStart: () => Promise<void>;\n onOpenEnd: () => Promise<void>;\n onOpenStart: () => Promise<void>;\n onResizeEnd: () => Promise<void>;\n onResizeStart: () => Promise<void>;\n onSnapEnd: (context: BottomSheetContext) => Promise<void>;\n onSnapStart: (context: BottomSheetContext) => Promise<void>;\n openImmediately: () => Promise<void>;\n openSmoothly: () => Promise<void>;\n renderVisuallyHidden: () => Promise<void>;\n resizeSmoothly: () => Promise<void>;\n snapSmoothly: (context: BottomSheetContext) => Promise<void>;\n}\n\n/**\n * Actions interface matching the XState pattern\n */\nexport interface BottomSheetActions {\n onCloseCancel: () => void;\n onCloseEnd: () => void;\n onOpenCancel: () => void;\n onOpenEnd: () => void;\n onResizeCancel: () => void;\n onResizeEnd: () => void;\n onSnapCancel: (context: BottomSheetContext) => void;\n onSnapEnd: (context: BottomSheetContext) => void;\n}\n\n/**\n * Hook that provides bottom sheet state machine functionality using Jotai\n */\nexport const useBottomSheetStateMachine = (\n services: BottomSheetServices,\n actions: BottomSheetActions,\n initialContext: BottomSheetContext\n) => {\n const [state] = useAtom(bottomSheetStateAtom);\n const [context, setContext] = useAtom(bottomSheetContextAtom);\n const sendEvent = useSetAtom(sendEventAtom);\n const completeTransition = useSetAtom(completeTransitionAtom);\n const resetState = useSetAtom(resetStateAtom);\n\n const isOpen = useAtomValue(isOpenAtom);\n const isClosed = useAtomValue(isClosedAtom);\n const isTransitioning = useAtomValue(isTransitioningAtom);\n const isDragging = useAtomValue(isDraggingAtom);\n\n // Track previous state for transition logic\n const prevStateRef = useRef<BottomSheetState>(state);\n const servicesRef = useRef(services);\n const actionsRef = useRef(actions);\n\n // Update refs when services/actions change\n useEffect(() => {\n servicesRef.current = services;\n actionsRef.current = actions;\n }, [services, actions]);\n\n // Initialize context only once on mount\n useEffect(() => {\n setContext(initialContext);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [setContext]); // Only depend on setContext, not initialContext to avoid infinite loops\n\n // Handle state transitions and side effects\n useEffect(() => {\n const currentServices = servicesRef.current;\n const currentActions = actionsRef.current;\n const prevState = prevStateRef.current;\n const currentContext = context; // Capture context at the time of effect\n\n const handleStateTransition = async () => {\n try {\n switch (state) {\n case 'opening':\n if (prevState === 'closed') {\n await currentServices.onOpenStart();\n\n if (currentContext.initialState === 'OPEN') {\n await currentServices.renderVisuallyHidden();\n await currentServices.activate();\n await currentServices.openImmediately();\n } else {\n await currentServices.renderVisuallyHidden();\n await currentServices.activate();\n await currentServices.openSmoothly();\n }\n\n await currentServices.onOpenEnd();\n completeTransition('open');\n } else if (prevState === 'closing') {\n // Cancelled close, resume opening\n currentActions.onCloseCancel();\n await currentServices.onOpenStart();\n await currentServices.renderVisuallyHidden();\n await currentServices.activate();\n await currentServices.openSmoothly();\n await currentServices.onOpenEnd();\n completeTransition('open');\n }\n break;\n\n case 'closing':\n if (prevState !== 'closed') {\n if (prevState === 'opening') {\n currentActions.onOpenCancel();\n } else if (prevState === 'resizing') {\n currentActions.onResizeCancel();\n } else if (prevState === 'snapping') {\n currentActions.onSnapCancel(currentContext);\n }\n\n await currentServices.onCloseStart();\n await currentServices.deactivate();\n await currentServices.closeSmoothly();\n await currentServices.onCloseEnd();\n currentActions.onCloseEnd();\n completeTransition('closed');\n }\n break;\n\n case 'resizing':\n if (prevState === 'open' || prevState === 'opening') {\n await currentServices.onResizeStart();\n await currentServices.resizeSmoothly();\n await currentServices.onResizeEnd();\n completeTransition('open');\n }\n break;\n\n case 'snapping':\n // 'dragging' → snap on release; 'open' → the imperative snapTo API.\n // (Upstream only serviced the dragging path, so snapTo from a resting\n // sheet entered 'snapping' and stalled without ever animating.)\n if (prevState === 'dragging' || prevState === 'open') {\n await currentServices.onSnapStart(currentContext);\n await currentServices.snapSmoothly(currentContext);\n await currentServices.onSnapEnd(currentContext);\n completeTransition('open');\n }\n break;\n\n case 'dragging':\n // Dragging is handled by gesture handlers, no async operations needed\n if (prevState === 'opening') {\n currentActions.onOpenEnd();\n } else if (prevState === 'closing') {\n currentActions.onCloseCancel();\n } else if (prevState === 'resizing') {\n currentActions.onResizeCancel();\n } else if (prevState === 'snapping') {\n currentActions.onSnapCancel(currentContext);\n }\n break;\n case 'closed':\n case 'open':\n default:\n break;\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Bottom sheet state transition error:', error);\n // On error, try to recover to a stable state\n if (state === 'opening' || state === 'closing' || state === 'resizing' || state === 'snapping') {\n completeTransition(state === 'closing' ? 'closed' : 'open');\n }\n }\n };\n\n if (prevState !== state) {\n handleStateTransition();\n prevStateRef.current = state;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state, completeTransition]); // Removed context from dependencies\n\n // Send event function with proper typing\n const send = useCallback(\n (type: BottomSheetEvent['type'], payload?: SnapPayload) => {\n if (type === 'SNAP' && payload) {\n sendEvent({ payload, type: 'SNAP' });\n } else {\n sendEvent({ type } as BottomSheetEvent);\n }\n },\n [sendEvent]\n );\n\n // Reset function for cleanup\n const reset = useCallback(\n (initialState: 'OPEN' | 'CLOSED' = 'CLOSED') => {\n resetState(initialState);\n prevStateRef.current = initialState === 'OPEN' ? 'open' : 'closed';\n },\n [resetState]\n );\n\n return {\n // Current state\n current: {\n context,\n matches: (stateName: string) => state === stateName,\n value: state,\n },\n isClosed,\n isDragging,\n\n // Derived state\n isOpen,\n isTransitioning,\n reset,\n\n // Actions\n send,\n\n // State value for easy access\n state,\n };\n};\n","//\n// GPU-accelerated BottomSheet using translate3d transforms for better mobile performance\n//\n// This component uses static height and translate3d transforms instead of height animations\n// for improved performance on mobile devices. Key improvements:\n// - GPU acceleration through translate3d\n// - Static height calculation (no height animations)\n// - Reduced layout thrashing\n// - Optimized for mobile performance\n\nimport { cn } from '@evolve.ui/theme-system';\nimport { animated } from '@react-spring/web';\nimport { useDrag } from '@use-gesture/react';\nimport {\n FC,\n forwardRef,\n HTMLProps,\n RefObject,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport type { SpringSetOptions } from './hooks/useSpring';\nimport type { defaultSnapProps, Props, RefHandles, ResizeSource, SnapPointProps } from './types';\n\nimport { nodeEnv } from '../utils/nodeEnv';\nimport { BottomSheetBackdrop, BottomSheetOverlay } from './components';\nimport {\n useAriaHider,\n useBottomSheetServices,\n useDragHandler,\n useFocusTrap,\n useLayoutEffect,\n useOptimizedScrollState,\n useReady,\n useReducedMotion,\n useScrollLock,\n useSnapPoints,\n useSpring,\n useSpringInterpolationsTranslate3d,\n} from './hooks';\nimport { type BottomSheetActions, useBottomSheetStateMachine } from './state/useBottomSheetStateMachine';\n\n// react-spring 9.7.5's animated.div drops `children` from its props under TS 6 — alias\n// it to a plain div component type (runtime identical), same adaptation as ContentPager.\ntype AnimatedDivProps = Omit<HTMLProps<HTMLDivElement>, 'style'> & { style?: object };\nconst AnimatedDiv = animated.div as unknown as FC<AnimatedDivProps>;\n\n/**\n * BottomSheet - GPU-accelerated version using translate3d transforms\n *\n * Key features:\n * - Uses translate3d for positioning instead of height + translateY\n * - Static height calculation for better performance\n * - Optimized for mobile device GPU acceleration\n * - Reduced layout thrashing during animations\n * - Viewport height limiting with 64px buffer to prevent sheet from exceeding screen bounds\n * - Hard cap at actual viewport height for all maxHeight props and snap points\n */\nexport const BottomSheet = forwardRef<\n RefHandles,\n {\n initialState: 'OPEN' | 'CLOSED';\n lastSnapRef: RefObject<number | null>;\n /**\n * Preload the sheet measurements and setup when closed for faster opening.\n * Useful when you know a sheet will be opened soon.\n */\n preload?: boolean;\n } & Props\n>(function BottomSheetInternal(\n {\n children,\n className,\n defaultSnap: getDefaultSnap = _defaultSnap,\n disableScroll = false,\n footer,\n header,\n initialFocusRef,\n initialState,\n lastSnapRef,\n maxHeight: controlledMaxHeight,\n minHeight: controlledMinHeight = 300,\n onCloseEnd,\n onDismiss,\n onSpringCancel,\n onSpringEnd,\n onSpringStart,\n open: _open,\n preload = false,\n scrollLocking = true,\n snapPoints: getSnapPoints = _snapPoints,\n style,\n ...props\n },\n forwardRef\n) {\n // Before any animations can start we need to measure a few things\n const { ready, registerReady } = useReady();\n\n // Controls the drag handler, used by spring operations that happen outside the render loop in React\n const canDragRef = useRef(false);\n\n // Callback refs to avoid breaking the sheet when callbacks change\n const onCloseEndRef = useRef(onCloseEnd);\n const onSpringStartRef = useRef(onSpringStart);\n const onSpringCancelRef = useRef(onSpringCancel);\n const onSpringEndRef = useRef(onSpringEnd);\n useEffect(() => {\n onCloseEndRef.current = onCloseEnd;\n onSpringStartRef.current = onSpringStart;\n onSpringCancelRef.current = onSpringCancel;\n onSpringEndRef.current = onSpringEnd;\n }, [onCloseEnd, onSpringCancel, onSpringStart, onSpringEnd]);\n\n // The animation engine\n const [spring, api] = useSpring();\n\n // Use Tailwind transitions for fade animation like Drawer/Modal components\n const [showContent, setShowContent] = useState(_open);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const scrollRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const headerRef = useRef<HTMLDivElement>(null);\n const footerRef = useRef<HTMLDivElement>(null);\n const overlayRef = useRef<HTMLDivElement | null>(null);\n\n // Keeps track of the current height, or the height transitioning to\n const heightRef = useRef(0);\n const resizeSourceRef = useRef<ResizeSource>('window');\n const preventScrollingRef = useRef(false);\n\n // Use optimized scroll state hook for better performance\n const { isScrollable, isScrolledToBottom } = useOptimizedScrollState(scrollRef, ready);\n\n const prefersReducedMotion = useReducedMotion();\n\n // Plugins\n const scrollLockRef = useScrollLock({\n enabled: ready && scrollLocking,\n reserveScrollBarGap: true,\n targetRef: scrollRef as RefObject<Element>,\n });\n const ariaHiderRef = useAriaHider({\n enabled: ready,\n targetRef: containerRef as RefObject<Element>,\n });\n\n const focusTrapRef = useFocusTrap({\n enabled: ready && initialFocusRef !== false,\n fallbackRef: overlayRef as RefObject<HTMLElement>,\n initialFocusRef: initialFocusRef || undefined,\n targetRef: containerRef as RefObject<HTMLElement>,\n });\n\n const { findSnap, maxHeight, maxSnap, minSnap } = useSnapPoints({\n contentRef: contentRef as RefObject<Element>,\n controlledMaxHeight,\n controlledMinHeight,\n footerEnabled: Boolean(footer),\n footerRef: footerRef as RefObject<Element>,\n getSnapPoints: getSnapPoints as (props: SnapPointProps) => number[],\n headerEnabled: Boolean(header),\n headerRef: headerRef as RefObject<Element>,\n heightRef,\n lastSnapRef: lastSnapRef as RefObject<number>,\n ready,\n registerReady,\n resizeSourceRef,\n });\n\n // Setup refs for full control over when side effects execute\n const maxHeightRef = useRef(maxHeight);\n const minSnapRef = useRef(minSnap);\n const maxSnapRef = useRef(maxSnap);\n const findSnapRef = useRef(findSnap);\n const defaultSnapRef = useRef(0);\n\n // Sync refs with current state\n useLayoutEffect(() => {\n maxHeightRef.current = maxHeight;\n maxSnapRef.current = maxSnap;\n minSnapRef.current = minSnap;\n findSnapRef.current = findSnap;\n defaultSnapRef.current = findSnap(getDefaultSnap);\n }, [findSnap, getDefaultSnap, maxHeight, maxSnap, minSnap]);\n\n // Mobile-optimized spring animation with translate3d focus\n const asyncSet = useCallback(\n ({ onRest, ...opts }: SpringSetOptions) => {\n return new Promise<void>((resolve) =>\n api.start({\n ...opts,\n onRest: (result: unknown) => {\n resolve();\n onRest?.(result);\n },\n })\n );\n },\n [api]\n );\n // Define services for the state machine using the custom hook\n const services = useBottomSheetServices({\n ariaHiderRef,\n asyncSet,\n canDragRef,\n defaultSnapRef,\n findSnapRef,\n focusTrapRef,\n heightRef,\n lastSnapRef,\n maxHeightRef,\n maxSnapRef,\n minSnapRef,\n onSpringCancelRef,\n onSpringEndRef,\n onSpringStartRef,\n prefersReducedMotion,\n resizeSourceRef,\n scrollLockRef,\n });\n\n // Define actions for the state machine\n const actions = useCallback(\n (): BottomSheetActions => ({\n onCloseCancel: () => onSpringCancelRef.current?.({ type: 'CLOSE' }),\n onCloseEnd: () => {\n onSpringEndRef.current?.({ type: 'CLOSE' });\n onCloseEndRef.current?.();\n },\n onOpenCancel: () => onSpringCancelRef.current?.({ type: 'OPEN' }),\n onOpenEnd: () => onSpringEndRef.current?.({ type: 'OPEN' }),\n onResizeCancel: () =>\n onSpringCancelRef.current?.({\n source: resizeSourceRef.current,\n type: 'RESIZE',\n }),\n onResizeEnd: () =>\n onSpringEndRef.current?.({\n source: resizeSourceRef.current,\n type: 'RESIZE',\n }),\n onSnapCancel: (context) =>\n onSpringCancelRef.current?.({\n source: context.snapSource || 'custom',\n type: 'SNAP',\n }),\n onSnapEnd: (context) =>\n onSpringEndRef.current?.({\n source: context.snapSource || 'custom',\n type: 'SNAP',\n }),\n }),\n []\n );\n\n // Memoize the initial context to prevent infinite loops\n const initialContext = useMemo(() => ({ initialState }), [initialState]);\n\n // Use the Jotai-based state machine\n const { current, reset, send } = useBottomSheetStateMachine(services(), actions(), initialContext);\n\n useEffect(() => {\n if (_open) {\n send('OPEN');\n } else {\n // IMPORTANT: Blur any focused element within the sheet BEFORE deactivating aria-hider\n // This prevents the warning: \"Blocked aria-hidden on an element because its descendant retained focus\"\n // This happens when user clicks a button (e.g., Cancel) which triggers close while button has focus\n const activeElement = document.activeElement;\n if (activeElement instanceof HTMLElement && containerRef.current?.contains(activeElement)) {\n activeElement.blur();\n }\n send('CLOSE');\n }\n }, [_open, send, current.value]);\n\n // Control content visibility for Tailwind fade animation\n useEffect(() => {\n if (_open) {\n setShowContent(true);\n } else {\n const timeoutId = setTimeout(() => setShowContent(false), 50);\n return () => clearTimeout(timeoutId);\n }\n return undefined;\n }, [_open]);\n\n useLayoutEffect(() => {\n // Adjust the height whenever the snap points are changed due to resize events\n if (maxHeight || maxSnap || minSnap) {\n send('RESIZE');\n }\n }, [maxHeight, maxSnap, minSnap, send]);\n\n useEffect(\n () => () => {\n // Cleanup effects on unmount\n try {\n scrollLockRef.current.deactivate();\n } catch (e) {\n if (nodeEnv !== 'production') {\n // eslint-disable-next-line no-console\n console.error('❌ ScrollLock deactivation error:', e);\n }\n }\n\n try {\n focusTrapRef.current.deactivate();\n } catch (e) {\n if (nodeEnv !== 'production') {\n // eslint-disable-next-line no-console\n console.error('❌ FocusTrap deactivation error:', e);\n }\n }\n\n try {\n ariaHiderRef.current.deactivate();\n } catch (e) {\n if (nodeEnv !== 'production') {\n // eslint-disable-next-line no-console\n console.error('❌ AriaHider deactivation error:', e);\n }\n }\n\n try {\n api.stop();\n } catch (e) {\n if (nodeEnv !== 'production') {\n // eslint-disable-next-line no-console\n console.error('❌ Spring API stop error:', e);\n }\n }\n\n // Reset state machine to ensure clean state on remount\n try {\n reset('CLOSED');\n } catch (e) {\n if (nodeEnv !== 'production') {\n // eslint-disable-next-line no-console\n console.error('❌ State machine reset error:', e);\n }\n }\n },\n [api, ariaHiderRef, focusTrapRef, reset, scrollLockRef]\n );\n\n useImperativeHandle(\n forwardRef,\n () => ({\n get height() {\n return heightRef.current;\n },\n snapTo: (numberOrCallback, { source = 'custom', velocity = 1 } = {}) => {\n // Pass the payload flat: `send` wraps it into the SNAP event itself.\n // (Upstream nested it under `payload`, double-wrapping the event so the\n // reducer read undefined values — surfaced when `send` gained real types.)\n send('SNAP', {\n source,\n velocity,\n y: findSnapRef.current(numberOrCallback, velocity),\n });\n },\n }),\n [send]\n );\n\n // Use the custom drag handler hook\n const { handleDrag } = useDragHandler({\n api,\n canDragRef,\n maxHeightRef,\n maxSnapRef,\n minSnapRef,\n onDismiss,\n preventScrollingRef,\n send,\n spring,\n });\n\n // Memoize drag configuration to prevent recreation\n const dragConfig = useMemo(\n () => ({\n filterTaps: true,\n rubberband: true,\n threshold: 5,\n }),\n []\n );\n\n const bind = useDrag(handleDrag, dragConfig);\n\n if (nodeEnv === 'development') {\n if (Number.isNaN(maxSnapRef.current)) {\n throw new TypeError('maxSnapRef is NaN!!');\n }\n if (Number.isNaN(minSnapRef.current)) {\n throw new TypeError('minSnapRef is NaN!!');\n }\n }\n\n // Use translate3d interpolations for GPU acceleration\n const interpolations = useSpringInterpolationsTranslate3d({ spring });\n\n return (\n <AnimatedDiv\n {...props}\n className={cn(\n // Base positioning and layout\n 'fixed bottom-0 left-0 right-0 z-[10001]',\n // Touch and interaction optimizations\n 'touch-none select-none',\n // Transition - faster transition when preloaded\n preload ? 'transition-opacity duration-150' : 'transition-opacity duration-300',\n {\n 'opacity-0': !showContent,\n 'opacity-100': showContent,\n },\n className\n )}\n ref={containerRef}\n style={{\n // Use translate3d interpolations\n ...interpolations,\n ...style,\n ...(preload && !_open && { pointerEvents: 'none', visibility: 'hidden' }),\n }}\n >\n <BottomSheetBackdrop\n bind={bind}\n blocking\n />\n {/* Anti-gap filler */}\n <div\n className={cn(\n 'fixed bottom-0 left-0 right-0',\n 'h-px bg-background-primary',\n 'origin-bottom',\n 'scale-y-[var(--rsbs-antigap-scale-y,0)]',\n 'pointer-events-none',\n 'will-change-transform'\n )}\n />\n <BottomSheetOverlay\n bind={bind}\n contentRef={contentRef}\n disableScroll={disableScroll}\n footer={footer}\n footerRef={footerRef}\n header={header}\n headerRef={headerRef}\n isScrollable={isScrollable}\n isScrolledToBottom={isScrolledToBottom}\n onDismiss={onDismiss}\n overlayRef={overlayRef}\n scrollRef={scrollRef}\n >\n {children}\n </BottomSheetOverlay>\n </AnimatedDiv>\n );\n});\n\n// Default prop values that are callbacks, and it's nice to save some memory and reuse their instances since they're pure\nfunction _defaultSnap({ lastSnap, snapPoints }: defaultSnapProps) {\n return lastSnap ?? Math.min(...snapPoints);\n}\nfunction _snapPoints({ minHeight }: SnapPointProps) {\n return minHeight;\n}\n","import { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport type { Props, RefHandles, SpringEvent } from './types';\n\n/* eslint-disable react/jsx-pascal-case */\nimport { BottomSheet as _BottomSheet } from './BottomSheet';\nimport { useLayoutEffect } from './hooks';\n\nexport type { RefHandles as BottomSheetRef, Props as BottomSheetProps } from './types';\n\n/**\n * BottomSheet component with SSR support and proper animation lifecycle management\n */\nexport const BottomSheet = forwardRef<RefHandles, Props>(function BottomSheet(\n { onCloseEnd, onDismiss, onSpringEnd, onSpringStart, ...props },\n ref\n) {\n // === Component State ===\n // Mounted state helps with SSR and ensures accessibility (no tabbing/screen reader access when closed)\n const [mounted, setMounted] = useState(false);\n const [modalTarget, setModalTarget] = useState<HTMLElement | null>(null);\n\n // === Animation State ===\n // Internal state to manage animation lifecycle separate from the open prop\n const [isAnimating, setIsAnimating] = useState(false);\n // Track if we're in the middle of an opening animation\n const [isOpening, setIsOpening] = useState(false);\n // Internal state to handle initial delay for proper transitions\n const [shouldShow, setShouldShow] = useState(false);\n\n // === Refs for State Management ===\n const timerRef = useRef<ReturnType<typeof requestAnimationFrame>>(0);\n // The last snap point for remembering user-defined height\n const lastSnapRef = useRef(0);\n // Track if we should call onDismiss after close animation completes\n const shouldCallOnDismiss = useRef(false);\n // Track last action time to prevent rapid successive calls\n const lastActionTime = useRef(0);\n // Track if we're in a force-closed state to ignore all spring events\n const isForceClosedRef = useRef(false);\n\n // Initial state determines animation behavior on mount\n const initialStateRef = useRef<'OPEN' | 'CLOSED'>('CLOSED');\n\n // Find the modal target element\n useEffect(() => {\n const target = document.querySelector('.hui-modal-target');\n\n if (!target) {\n throw new Error('Modal target not found, add one in the DOM tree.');\n }\n\n setModalTarget(target as HTMLElement);\n }, []);\n\n // === Helper Functions ===\n // Start the close transition (similar to Drawer pattern)\n const startCloseTransition = useCallback((callOnDismiss: boolean = false) => {\n setIsAnimating(true);\n shouldCallOnDismiss.current = callOnDismiss;\n }, []);\n\n // Handle internal onDismiss that calls the original onDismiss immediately\n // Memoized to prevent unnecessary re-renders\n const handleInternalDismiss = useCallback(() => {\n const now = Date.now();\n const DEBOUNCE_MS = 150; // Increased debounce time for stress testing\n\n // Prevent dismiss during opening animations or rapid successive calls\n // Allow dismiss during closing animations (drag-to-close scenario)\n if (isOpening || isAnimating || now - lastActionTime.current < DEBOUNCE_MS) {\n return;\n }\n\n lastActionTime.current = now;\n isForceClosedRef.current = true;\n\n onDismiss?.();\n }, [onDismiss, isOpening, isAnimating]);\n\n // === Effects ===\n // Close the sheet when the open prop changes to false\n useEffect(() => {\n if (mounted && !props.open && !isAnimating) {\n startCloseTransition(false);\n }\n }, [mounted, props.open, isAnimating, startCloseTransition]);\n\n // Handle mounting and opening state - supports cases where sheet appears already open\n useLayoutEffect(() => {\n if (props.open) {\n // Prevent rapid re-mounting during stress testing\n const now = Date.now();\n if (now - lastActionTime.current < 50) {\n return undefined; // Skip if too rapid\n }\n\n cancelAnimationFrame(timerRef.current);\n setMounted(true);\n // Reset all state when opening\n setIsAnimating(false);\n setIsOpening(true);\n shouldCallOnDismiss.current = false;\n lastActionTime.current = now;\n isForceClosedRef.current = false;\n\n // Add initial delay for proper transition\n // Use requestAnimationFrame to ensure DOM is ready for transition\n const delayId = requestAnimationFrame(() => {\n // Double-check we're still supposed to be open\n if (props.open) {\n setShouldShow(true);\n }\n });\n\n // Cleanup function will clear the delay\n return () => {\n cancelAnimationFrame(delayId);\n initialStateRef.current = 'CLOSED';\n setShouldShow(false);\n };\n }\n\n // Reset shouldShow when not open\n setShouldShow(false);\n return undefined;\n }, [props.open]);\n\n const handleSpringStart = useCallback(\n async function handleSpringStart(event: SpringEvent) {\n // Only process events for open component or CLOSE events\n if (!props.open && event.type !== 'CLOSE') {\n return;\n }\n\n await onSpringStart?.(event);\n\n if (event.type === 'OPEN') {\n // Cancel any pending unmount when opening\n cancelAnimationFrame(timerRef.current);\n }\n },\n [onSpringStart, props.open]\n );\n\n const handleSpringEnd = useCallback(\n async function handleSpringEnd(event: SpringEvent) {\n // Only process CLOSE events when force-closed, or any event when open\n const shouldIgnore = (isForceClosedRef.current || !props.open) && event.type !== 'CLOSE';\n if (shouldIgnore) {\n return;\n }\n\n await onSpringEnd?.(event);\n\n if (event.type === 'OPEN') {\n setIsOpening(false);\n } else if (event.type === 'CLOSE') {\n // Reset all animation state and unmount\n setIsAnimating(false);\n setIsOpening(false);\n shouldCallOnDismiss.current = false;\n timerRef.current = requestAnimationFrame(() => setMounted(false));\n }\n },\n [onSpringEnd, props.open]\n );\n\n // Fallback unmounting - ensures component unmounts even if spring callback fails\n useEffect(() => {\n if (!props.open && mounted) {\n const fallbackTimeoutId = setTimeout(() => {\n // Only unmount if we're still in the closed state after timeout\n if (!props.open) {\n cancelAnimationFrame(timerRef.current);\n setMounted(false);\n setIsAnimating(false);\n shouldCallOnDismiss.current = false;\n isForceClosedRef.current = true;\n }\n }, 500);\n\n return () => clearTimeout(fallbackTimeoutId);\n }\n return undefined;\n }, [props.open, mounted]);\n\n // Cleanup effect - let React handle DOM cleanup naturally\n useEffect(() => {\n return () => {\n // Minimal cleanup - only clear empty modal targets to prevent memory leaks\n // Let React handle the component unmounting naturally\n setTimeout(() => {\n try {\n const modalTarget = document.querySelector('.hui-modal-target');\n // Only clean if modal target is completely empty and we're sure React is done\n if (modalTarget && modalTarget.children.length === 0) {\n modalTarget.innerHTML = '';\n }\n } catch {\n // Ignore cleanup errors during rapid state changes\n }\n }, 200); // Longer delay to avoid race conditions with React\n };\n }, []); // Only run on component unmount\n\n // === Early Return for SSR and Unmounted State ===\n if (!mounted || !modalTarget) {\n return null;\n }\n\n // === Render ===\n // Extract onDismiss from props to avoid conflicts with internal handler\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { onDismiss: _, ...bottomSheetProps } = props as Props & { onDismiss?: () => void };\n\n return createPortal(\n <div\n aria-hidden={!props.open}\n role=\"presentation\"\n >\n <_BottomSheet\n {...bottomSheetProps}\n initialState={initialStateRef.current}\n lastSnapRef={lastSnapRef}\n onCloseEnd={onCloseEnd}\n onDismiss={handleInternalDismiss}\n onSpringEnd={handleSpringEnd}\n onSpringStart={handleSpringStart}\n open={shouldShow}\n ref={ref}\n />\n </div>,\n modalTarget\n );\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
const require_Icons = require("./Icons.cjs");
|
|
2
|
+
const require_Typography_Links = require("./Typography/Links.cjs");
|
|
3
|
+
let _evolve_ui_theme_system = require("@evolve.ui/theme-system");
|
|
4
|
+
let react = require("react");
|
|
5
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
6
|
+
//#region src/hooks/useHorizontalScrollFade.ts
|
|
7
|
+
const useHorizontalScrollFade = (offset = 8) => {
|
|
8
|
+
const [shouldShowLeftFade, setShouldShowLeftFade] = (0, react.useState)(false);
|
|
9
|
+
const [shouldShowRightFade, setShouldShowRightFade] = (0, react.useState)(true);
|
|
10
|
+
const calculateFadeFromElement = (0, react.useCallback)((elem) => {
|
|
11
|
+
const remainingOnLeft = elem.scrollLeft;
|
|
12
|
+
const remainingOnRight = elem.scrollWidth - elem.scrollLeft - elem.clientWidth;
|
|
13
|
+
setShouldShowLeftFade(remainingOnLeft > offset);
|
|
14
|
+
setShouldShowRightFade(remainingOnRight > offset);
|
|
15
|
+
}, [offset]);
|
|
16
|
+
const ref = (0, react.useCallback)((ref) => {
|
|
17
|
+
if (ref === null) return;
|
|
18
|
+
const handleScroll = () => calculateFadeFromElement(ref);
|
|
19
|
+
calculateFadeFromElement(ref);
|
|
20
|
+
ref.addEventListener("scroll", handleScroll);
|
|
21
|
+
return () => {
|
|
22
|
+
ref.removeEventListener("scroll", handleScroll);
|
|
23
|
+
};
|
|
24
|
+
}, [calculateFadeFromElement]);
|
|
25
|
+
return {
|
|
26
|
+
leftFadeClass: shouldShowLeftFade ? "before:content-[\"\"] before:absolute before:w-12 before:left-0 before:bottom-0 before:top-0 before:bg-gradient-to-r before:from-background-primary" : "",
|
|
27
|
+
ref,
|
|
28
|
+
rightFadeClass: shouldShowRightFade ? "after:content-[\"\"] after:absolute after:w-12 after:right-0 after:bottom-0 after:top-0 after:bg-gradient-to-l after:from-background-primary" : ""
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/Breadcrumbs/Breadcrumbs.tsx
|
|
33
|
+
const Breadcrumbs = ({ "aria-label": ariaLabel = "breadcrumbs", backHref, backText = "Back", breadcrumbs: propBreadcrumbs, className, onClick, showBackLink = false }) => {
|
|
34
|
+
const { leftFadeClass, ref, rightFadeClass } = useHorizontalScrollFade();
|
|
35
|
+
const backNode = (0, react.useMemo)(() => showBackLink ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_Typography_Links.SubtleWeakLink, {
|
|
36
|
+
"aria-label": `Navigate to ${backText}`,
|
|
37
|
+
className: "flex items-center",
|
|
38
|
+
href: backHref,
|
|
39
|
+
onClick: (e) => {
|
|
40
|
+
e.preventDefault();
|
|
41
|
+
onClick(backHref, backText);
|
|
42
|
+
},
|
|
43
|
+
size: "xs",
|
|
44
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icons.ArrowLeft, {
|
|
45
|
+
className: "mr-1 max-h-[14px] min-h-[14px] min-w-[14px] max-w-[14px]",
|
|
46
|
+
color: "primary",
|
|
47
|
+
role: "none",
|
|
48
|
+
size: "xs"
|
|
49
|
+
}), backText]
|
|
50
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "mx-2 h-3 border-l border-border-secondary" })] }) : null, [
|
|
51
|
+
showBackLink,
|
|
52
|
+
backHref,
|
|
53
|
+
backText,
|
|
54
|
+
onClick
|
|
55
|
+
]);
|
|
56
|
+
const breadcrumbs = (0, react.useMemo)(() => {
|
|
57
|
+
if (!propBreadcrumbs) return null;
|
|
58
|
+
const breadcrumbs = [];
|
|
59
|
+
propBreadcrumbs.forEach(({ href, label }, i) => {
|
|
60
|
+
breadcrumbs.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Typography_Links.SubtleWeakLink, {
|
|
61
|
+
"aria-label": `Navigate to ${label}`,
|
|
62
|
+
href,
|
|
63
|
+
onClick: (e) => {
|
|
64
|
+
e.preventDefault();
|
|
65
|
+
onClick(href, label);
|
|
66
|
+
},
|
|
67
|
+
size: "xs",
|
|
68
|
+
children: label
|
|
69
|
+
}, href));
|
|
70
|
+
if (i !== propBreadcrumbs.length - 1) breadcrumbs.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icons.CaretRight, {
|
|
71
|
+
className: "mx-1 max-h-[14px] min-h-[14px] min-w-[14px] max-w-[14px]",
|
|
72
|
+
color: "primary",
|
|
73
|
+
role: "none",
|
|
74
|
+
size: "xs"
|
|
75
|
+
}, `separator-${i}`));
|
|
76
|
+
});
|
|
77
|
+
return breadcrumbs;
|
|
78
|
+
}, [propBreadcrumbs, onClick]);
|
|
79
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
80
|
+
className: (0, _evolve_ui_theme_system.cn)("relative -ml-2", className),
|
|
81
|
+
"data-hui-id": "Breadcrumbs",
|
|
82
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("nav", {
|
|
83
|
+
"aria-label": ariaLabel,
|
|
84
|
+
className: (0, _evolve_ui_theme_system.cn)("scrollbar-hide flex flex-row items-center overflow-x-auto whitespace-nowrap p-2", leftFadeClass, rightFadeClass),
|
|
85
|
+
ref,
|
|
86
|
+
children: [backNode, breadcrumbs]
|
|
87
|
+
})
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
//#endregion
|
|
91
|
+
Object.defineProperty(exports, "Breadcrumbs", {
|
|
92
|
+
enumerable: true,
|
|
93
|
+
get: function() {
|
|
94
|
+
return Breadcrumbs;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
//# sourceMappingURL=Breadcrumbs-7jTSZ7NM.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumbs-7jTSZ7NM.cjs","names":["SubtleWeakLink","ArrowLeft","CaretRight"],"sources":["../src/hooks/useHorizontalScrollFade.ts","../src/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nexport const useHorizontalScrollFade = (offset: number = 8) => {\n const [shouldShowLeftFade, setShouldShowLeftFade] = useState(false);\n const [shouldShowRightFade, setShouldShowRightFade] = useState(true);\n\n const calculateFadeFromElement = useCallback(\n (elem: HTMLElement) => {\n const remainingOnLeft = elem.scrollLeft;\n const remainingOnRight = elem.scrollWidth - elem.scrollLeft - elem.clientWidth;\n setShouldShowLeftFade(remainingOnLeft > offset);\n setShouldShowRightFade(remainingOnRight > offset);\n },\n [offset]\n );\n\n const ref = useCallback(\n (ref: HTMLDivElement | null) => {\n if (ref === null) {\n return;\n }\n\n const handleScroll = () => calculateFadeFromElement(ref);\n\n calculateFadeFromElement(ref);\n ref.addEventListener('scroll', handleScroll);\n\n return () => {\n ref.removeEventListener('scroll', handleScroll);\n };\n },\n [calculateFadeFromElement]\n );\n\n const leftFadeClass = shouldShowLeftFade\n ? 'before:content-[\"\"] before:absolute before:w-12 before:left-0 before:bottom-0 before:top-0 before:bg-gradient-to-r before:from-background-primary'\n : '';\n\n const rightFadeClass = shouldShowRightFade\n ? 'after:content-[\"\"] after:absolute after:w-12 after:right-0 after:bottom-0 after:top-0 after:bg-gradient-to-l after:from-background-primary'\n : '';\n\n return { leftFadeClass, ref, rightFadeClass };\n};\n","import { cn } from '@evolve.ui/theme-system';\nimport { ReactElement, useMemo } from 'react';\n\nimport { useHorizontalScrollFade } from '../hooks/useHorizontalScrollFade';\nimport { ArrowLeft, CaretRight } from '../Icons';\nimport { SubtleWeakLink } from '../Typography/Links/Links';\n\ntype Props = {\n 'aria-label'?: string;\n breadcrumbs?: {\n href: string;\n label: string;\n }[];\n className?: string;\n onClick: (href: string, label: string) => void;\n} & (\n | {\n backHref?: string;\n backText?: string;\n showBackLink?: false;\n }\n | {\n backHref: string;\n backText: string;\n showBackLink: true;\n }\n);\n\nexport const Breadcrumbs = ({\n 'aria-label': ariaLabel = 'breadcrumbs',\n backHref,\n backText = 'Back',\n breadcrumbs: propBreadcrumbs,\n className,\n onClick,\n showBackLink = false,\n}: Props) => {\n const { leftFadeClass, ref, rightFadeClass } = useHorizontalScrollFade();\n\n const backNode = useMemo(\n () =>\n showBackLink ? (\n <>\n <SubtleWeakLink\n aria-label={`Navigate to ${backText}`}\n className=\"flex items-center\"\n href={backHref}\n onClick={(e) => {\n e.preventDefault();\n onClick(backHref!, backText!);\n }}\n size=\"xs\"\n >\n <ArrowLeft\n className=\"mr-1 max-h-[14px] min-h-[14px] min-w-[14px] max-w-[14px]\"\n color=\"primary\"\n role=\"none\"\n size=\"xs\"\n />\n {backText}\n </SubtleWeakLink>\n <div className=\"mx-2 h-3 border-l border-border-secondary\"></div>\n </>\n ) : null,\n [showBackLink, backHref, backText, onClick]\n );\n\n const breadcrumbs = useMemo(() => {\n if (!propBreadcrumbs) {\n return null;\n }\n\n const breadcrumbs: ReactElement[] = [];\n\n propBreadcrumbs.forEach(({ href, label }, i) => {\n breadcrumbs.push(\n <SubtleWeakLink\n aria-label={`Navigate to ${label}`}\n href={href}\n key={href}\n onClick={(e) => {\n e.preventDefault();\n onClick(href, label);\n }}\n size=\"xs\"\n >\n {label}\n </SubtleWeakLink>\n );\n\n if (i !== propBreadcrumbs.length - 1) {\n breadcrumbs.push(\n <CaretRight\n className=\"mx-1 max-h-[14px] min-h-[14px] min-w-[14px] max-w-[14px]\"\n color=\"primary\"\n key={`separator-${i}`}\n role=\"none\"\n size=\"xs\"\n />\n );\n }\n });\n\n return breadcrumbs;\n }, [propBreadcrumbs, onClick]);\n\n return (\n <div\n className={cn('relative -ml-2', className)}\n data-hui-id=\"Breadcrumbs\"\n >\n <nav\n aria-label={ariaLabel}\n className={cn(\n 'scrollbar-hide flex flex-row items-center overflow-x-auto whitespace-nowrap p-2',\n leftFadeClass,\n rightFadeClass\n )}\n ref={ref}\n >\n {backNode}\n {breadcrumbs}\n </nav>\n </div>\n );\n};\n"],"mappings":";;;;;;AAEA,MAAa,2BAA2B,SAAiB,MAAM;CAC3D,MAAM,CAAC,oBAAoB,0BAAA,GAAA,MAAA,SAAA,CAAkC,KAAK;CAClE,MAAM,CAAC,qBAAqB,2BAAA,GAAA,MAAA,SAAA,CAAmC,IAAI;CAEnE,MAAM,4BAAA,GAAA,MAAA,YAAA,EACD,SAAsB;EACnB,MAAM,kBAAkB,KAAK;EAC7B,MAAM,mBAAmB,KAAK,cAAc,KAAK,aAAa,KAAK;EACnE,sBAAsB,kBAAkB,MAAM;EAC9C,uBAAuB,mBAAmB,MAAM;CACpD,GACA,CAAC,MAAM,CACX;CAEA,MAAM,OAAA,GAAA,MAAA,YAAA,EACD,QAA+B;EAC5B,IAAI,QAAQ,MACR;EAGJ,MAAM,qBAAqB,yBAAyB,GAAG;EAEvD,yBAAyB,GAAG;EAC5B,IAAI,iBAAiB,UAAU,YAAY;EAE3C,aAAa;GACT,IAAI,oBAAoB,UAAU,YAAY;EAClD;CACJ,GACA,CAAC,wBAAwB,CAC7B;CAUA,OAAO;EAAE,eARa,qBAChB,wJACA;EAMkB;EAAK,gBAJN,sBACjB,iJACA;CAEsC;AAChD;;;ACfA,MAAa,eAAe,EACxB,cAAc,YAAY,eAC1B,UACA,WAAW,QACX,aAAa,iBACb,WACA,SACA,eAAe,YACN;CACT,MAAM,EAAE,eAAe,KAAK,mBAAmB,wBAAwB;CAEvE,MAAM,YAAA,GAAA,MAAA,QAAA,OAEE,eACI,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA,CACI,iBAAA,GAAA,kBAAA,KAAA,CAACA,yBAAAA,gBAAD;EACI,cAAY,eAAe;EAC3B,WAAU;EACV,MAAM;EACN,UAAU,MAAM;GACZ,EAAE,eAAe;GACjB,QAAQ,UAAW,QAAS;EAChC;EACA,MAAK;YART,CAUI,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,WAAD;GACI,WAAU;GACV,OAAM;GACN,MAAK;GACL,MAAK;EACR,CAAA,GACA,QACW;KAChB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAK,WAAU,4CAAiD,CAAA,CAClE,EAAA,CAAA,IACF,MACR;EAAC;EAAc;EAAU;EAAU;CAAO,CAC9C;CAEA,MAAM,eAAA,GAAA,MAAA,QAAA,OAA4B;EAC9B,IAAI,CAAC,iBACD,OAAO;EAGX,MAAM,cAA8B,CAAC;EAErC,gBAAgB,SAAS,EAAE,MAAM,SAAS,MAAM;GAC5C,YAAY,KACR,iBAAA,GAAA,kBAAA,IAAA,CAACD,yBAAAA,gBAAD;IACI,cAAY,eAAe;IACrB;IAEN,UAAU,MAAM;KACZ,EAAE,eAAe;KACjB,QAAQ,MAAM,KAAK;IACvB;IACA,MAAK;cAEJ;GACW,GARP,IAQO,CACpB;GAEA,IAAI,MAAM,gBAAgB,SAAS,GAC/B,YAAY,KACR,iBAAA,GAAA,kBAAA,IAAA,CAACE,cAAAA,YAAD;IACI,WAAU;IACV,OAAM;IAEN,MAAK;IACL,MAAK;GACR,GAHQ,aAAa,GAGrB,CACL;EAER,CAAC;EAED,OAAO;CACX,GAAG,CAAC,iBAAiB,OAAO,CAAC;CAE7B,OACI,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACI,YAAA,GAAA,wBAAA,GAAA,CAAc,kBAAkB,SAAS;EACzC,eAAY;YAEZ,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GACI,cAAY;GACZ,YAAA,GAAA,wBAAA,GAAA,CACI,mFACA,eACA,cACJ;GACK;aAPT,CASK,UACA,WACA;;CACJ,CAAA;AAEb"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/Breadcrumbs/Breadcrumbs.d.ts
|
|
2
|
+
type Props = {
|
|
3
|
+
'aria-label'?: string;
|
|
4
|
+
breadcrumbs?: {
|
|
5
|
+
href: string;
|
|
6
|
+
label: string;
|
|
7
|
+
}[];
|
|
8
|
+
className?: string;
|
|
9
|
+
onClick: (href: string, label: string) => void;
|
|
10
|
+
} & ({
|
|
11
|
+
backHref?: string;
|
|
12
|
+
backText?: string;
|
|
13
|
+
showBackLink?: false;
|
|
14
|
+
} | {
|
|
15
|
+
backHref: string;
|
|
16
|
+
backText: string;
|
|
17
|
+
showBackLink: true;
|
|
18
|
+
});
|
|
19
|
+
declare const Breadcrumbs: ({
|
|
20
|
+
"aria-label": ariaLabel,
|
|
21
|
+
backHref,
|
|
22
|
+
backText,
|
|
23
|
+
breadcrumbs: propBreadcrumbs,
|
|
24
|
+
className,
|
|
25
|
+
onClick,
|
|
26
|
+
showBackLink
|
|
27
|
+
}: Props) => import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { Breadcrumbs as t };
|
|
30
|
+
//# sourceMappingURL=Breadcrumbs-CopNM2AH.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumbs-CopNM2AH.d.cts","names":[],"sources":["../src/Breadcrumbs/Breadcrumbs.tsx"],"mappings":";KAOK,KAAA;EACD,YAAA;EACA,WAAA;IACI,IAAA;IACA,KAAA;EAAA;EAEJ,SAAA;EACA,OAAA,GAAU,IAAA,UAAc,KAAA;AAAA;EAGlB,QAAA;EACA,QAAA;EACA,YAAA;AAAA;EAGA,QAAA;EACA,QAAA;EACA,YAAA;AAAA;AAAA,cAIG,WAAA;EAAA,cAAe,SAAA;EAAA,QAAA;EAAA,QAAA;EAAA,WAAA,EAAA,eAAA;EAAA,SAAA;EAAA,OAAA;EAAA;AAAA,GAQzB,KAAA,iCAAK,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/Breadcrumbs/Breadcrumbs.d.ts
|
|
2
|
+
type Props = {
|
|
3
|
+
'aria-label'?: string;
|
|
4
|
+
breadcrumbs?: {
|
|
5
|
+
href: string;
|
|
6
|
+
label: string;
|
|
7
|
+
}[];
|
|
8
|
+
className?: string;
|
|
9
|
+
onClick: (href: string, label: string) => void;
|
|
10
|
+
} & ({
|
|
11
|
+
backHref?: string;
|
|
12
|
+
backText?: string;
|
|
13
|
+
showBackLink?: false;
|
|
14
|
+
} | {
|
|
15
|
+
backHref: string;
|
|
16
|
+
backText: string;
|
|
17
|
+
showBackLink: true;
|
|
18
|
+
});
|
|
19
|
+
declare const Breadcrumbs: ({
|
|
20
|
+
"aria-label": ariaLabel,
|
|
21
|
+
backHref,
|
|
22
|
+
backText,
|
|
23
|
+
breadcrumbs: propBreadcrumbs,
|
|
24
|
+
className,
|
|
25
|
+
onClick,
|
|
26
|
+
showBackLink
|
|
27
|
+
}: Props) => import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { Breadcrumbs as t };
|
|
30
|
+
//# sourceMappingURL=Breadcrumbs-CopNM2AH.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumbs-CopNM2AH.d.mts","names":[],"sources":["../src/Breadcrumbs/Breadcrumbs.tsx"],"mappings":";KAOK,KAAA;EACD,YAAA;EACA,WAAA;IACI,IAAA;IACA,KAAA;EAAA;EAEJ,SAAA;EACA,OAAA,GAAU,IAAA,UAAc,KAAA;AAAA;EAGlB,QAAA;EACA,QAAA;EACA,YAAA;AAAA;EAGA,QAAA;EACA,QAAA;EACA,YAAA;AAAA;AAAA,cAIG,WAAA;EAAA,cAAe,SAAA;EAAA,QAAA;EAAA,QAAA;EAAA,WAAA,EAAA,eAAA;EAAA,SAAA;EAAA,OAAA;EAAA;AAAA,GAQzB,KAAA,iCAAK,GAAA,CAAA,OAAA"}
|