@spark-ui/components 14.0.0-beta.1 → 14.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/dist/Button-B6rA3-e5.js +2 -0
- package/dist/{Button-C3xHNaGl.js.map → Button-B6rA3-e5.js.map} +1 -1
- package/dist/{Button-D32Avk2j.mjs → Button-C3C0aixy.mjs} +4 -4
- package/dist/{Button-D32Avk2j.mjs.map → Button-C3C0aixy.mjs.map} +1 -1
- package/dist/DialogContent.styles-BSfXHt21.mjs +61 -0
- package/dist/DialogContent.styles-BSfXHt21.mjs.map +1 -0
- package/dist/DialogContent.styles-bBs6l8Cy.js +2 -0
- package/dist/DialogContent.styles-bBs6l8Cy.js.map +1 -0
- package/dist/Icon-CF0W0LKr.js +2 -0
- package/dist/{Icon-Bf0XrmiR.js.map → Icon-CF0W0LKr.js.map} +1 -1
- package/dist/{Icon-D1RueiPY.mjs → Icon-Ck-dhfLd.mjs} +6 -6
- package/dist/{Icon-D1RueiPY.mjs.map → Icon-Ck-dhfLd.mjs.map} +1 -1
- package/dist/{IconButton-BY3gYXtU.mjs → IconButton-C62-axzv.mjs} +6 -6
- package/dist/{IconButton-BY3gYXtU.mjs.map → IconButton-C62-axzv.mjs.map} +1 -1
- package/dist/IconButton-D3g86WpZ.js +2 -0
- package/dist/{IconButton-Bf-EDzpI.js.map → IconButton-D3g86WpZ.js.map} +1 -1
- package/dist/Slot-D2Bbf8Gw.mjs +14 -0
- package/dist/{Slot-C98rL4yy.mjs.map → Slot-D2Bbf8Gw.mjs.map} +1 -1
- package/dist/Slot-DQ8z2zsy.js +2 -0
- package/dist/{Slot-ghrohQLA.js.map → Slot-DQ8z2zsy.js.map} +1 -1
- package/dist/Spinner-_Kffli3B.js +2 -0
- package/dist/{Spinner-DK8VEsaR.js.map → Spinner-_Kffli3B.js.map} +1 -1
- package/dist/{Spinner-CYL5kyzM.mjs → Spinner-jF3-zoh_.mjs} +3 -3
- package/dist/{Spinner-CYL5kyzM.mjs.map → Spinner-jF3-zoh_.mjs.map} +1 -1
- package/dist/{TextLink-3MEVs3No.mjs → TextLink-BuzFRWO6.mjs} +3 -3
- package/dist/{TextLink-3MEVs3No.mjs.map → TextLink-BuzFRWO6.mjs.map} +1 -1
- package/dist/TextLink-C3xDLsbC.js +2 -0
- package/dist/{TextLink-DD0VO37q.js.map → TextLink-C3xDLsbC.js.map} +1 -1
- package/dist/{VisuallyHidden-AoRh4WRK.js → VisuallyHidden-CB6Nx76j.js} +2 -2
- package/dist/{VisuallyHidden-AoRh4WRK.js.map → VisuallyHidden-CB6Nx76j.js.map} +1 -1
- package/dist/{VisuallyHidden-ByNP7ZUI.mjs → VisuallyHidden-KH1biLx-.mjs} +2 -2
- package/dist/{VisuallyHidden-ByNP7ZUI.mjs.map → VisuallyHidden-KH1biLx-.mjs.map} +1 -1
- package/dist/accordion/index.d.mts +15 -0
- package/dist/accordion/index.js +1 -1
- package/dist/accordion/index.js.map +1 -1
- package/dist/accordion/index.mjs +90 -608
- package/dist/accordion/index.mjs.map +1 -1
- package/dist/alert-dialog/AlertDialogPortal.d.ts +1 -1
- package/dist/alert-dialog/index.d.mts +38 -0
- package/dist/alert-dialog/index.js +1 -34
- package/dist/alert-dialog/index.js.map +1 -1
- package/dist/alert-dialog/index.mjs +139 -2475
- package/dist/alert-dialog/index.mjs.map +1 -1
- package/dist/avatar/index.d.mts +15 -0
- package/dist/avatar/index.js +1 -1
- package/dist/avatar/index.js.map +1 -1
- package/dist/avatar/index.mjs +4 -4
- package/dist/badge/index.d.mts +1 -0
- package/dist/badge/index.js +1 -1
- package/dist/badge/index.js.map +1 -1
- package/dist/badge/index.mjs +6 -6
- package/dist/breadcrumb/index.d.mts +12 -0
- package/dist/breadcrumb/index.js +1 -1
- package/dist/breadcrumb/index.js.map +1 -1
- package/dist/breadcrumb/index.mjs +21 -21
- package/dist/button/Button.d.ts +1 -1
- package/dist/button/index.d.mts +1 -0
- package/dist/button/index.js +1 -1
- package/dist/button/index.mjs +1 -1
- package/dist/button/variants/index.d.mts +5 -0
- package/dist/card/index.d.mts +8 -0
- package/dist/card/index.js +1 -1
- package/dist/card/index.js.map +1 -1
- package/dist/card/index.mjs +2 -2
- package/dist/carousel/index.d.mts +19 -0
- package/dist/carousel/index.js +1 -1
- package/dist/carousel/index.js.map +1 -1
- package/dist/carousel/index.mjs +3 -3
- package/dist/checkbox/index.d.mts +2 -0
- package/dist/checkbox/index.js +1 -1
- package/dist/checkbox/index.js.map +1 -1
- package/dist/checkbox/index.mjs +128 -364
- package/dist/checkbox/index.mjs.map +1 -1
- package/dist/chip/index.d.mts +15 -0
- package/dist/chip/index.js +1 -1
- package/dist/chip/index.js.map +1 -1
- package/dist/chip/index.mjs +196 -370
- package/dist/chip/index.mjs.map +1 -1
- package/dist/chip/variants/index.d.mts +3 -0
- package/dist/collapsible/index.d.mts +7 -0
- package/dist/collapsible/index.js +1 -1
- package/dist/collapsible/index.js.map +1 -1
- package/dist/collapsible/index.mjs +38 -213
- package/dist/collapsible/index.mjs.map +1 -1
- package/dist/combobox/index.d.mts +35 -0
- package/dist/combobox/index.js +1 -1
- package/dist/combobox/index.js.map +1 -1
- package/dist/combobox/index.mjs +7 -7
- package/dist/combobox/utils/index.d.mts +14 -0
- package/dist/dialog/Dialog.d.ts +13 -13
- package/dist/dialog/DialogClose.d.ts +9 -8
- package/dist/dialog/DialogContent.d.ts +4 -4
- package/dist/dialog/DialogDescription.d.ts +3 -3
- package/dist/dialog/DialogOverlay.d.ts +5 -5
- package/dist/dialog/DialogPortal.d.ts +4 -4
- package/dist/dialog/DialogTitle.d.ts +3 -3
- package/dist/dialog/DialogTrigger.d.ts +5 -9
- package/dist/dialog/index.d.mts +37 -0
- package/dist/dialog/index.js +1 -1
- package/dist/dialog/index.js.map +1 -1
- package/dist/dialog/index.mjs +149 -159
- package/dist/dialog/index.mjs.map +1 -1
- package/dist/divider/index.d.mts +6 -0
- package/dist/divider/index.js +1 -1
- package/dist/divider/index.js.map +1 -1
- package/dist/divider/index.mjs +58 -76
- package/dist/divider/index.mjs.map +1 -1
- package/dist/drawer/Drawer.d.ts +12 -19
- package/dist/drawer/DrawerClose.d.ts +9 -5
- package/dist/drawer/DrawerContent.d.ts +5 -5
- package/dist/drawer/DrawerDescription.d.ts +4 -4
- package/dist/drawer/DrawerOverlay.d.ts +5 -5
- package/dist/drawer/DrawerPortal.d.ts +4 -4
- package/dist/drawer/DrawerTitle.d.ts +5 -5
- package/dist/drawer/DrawerTrigger.d.ts +5 -5
- package/dist/drawer/index.d.mts +37 -0
- package/dist/drawer/index.d.ts +2 -0
- package/dist/drawer/index.js +1 -1
- package/dist/drawer/index.js.map +1 -1
- package/dist/drawer/index.mjs +143 -114
- package/dist/drawer/index.mjs.map +1 -1
- package/dist/drawer/useRenderSlot.d.ts +3 -0
- package/dist/dropdown/index.d.mts +29 -0
- package/dist/dropdown/index.js +1 -1
- package/dist/dropdown/index.js.map +1 -1
- package/dist/dropdown/index.mjs +5 -5
- package/dist/file-upload/index.d.mts +22 -0
- package/dist/file-upload/index.js +1 -1
- package/dist/file-upload/index.js.map +1 -1
- package/dist/file-upload/index.mjs +6 -6
- package/dist/form-field/index.d.mts +31 -0
- package/dist/form-field/index.js +1 -1
- package/dist/form-field/index.js.map +1 -1
- package/dist/form-field/index.mjs +47 -47
- package/dist/icon/index.d.mts +1 -0
- package/dist/icon/index.js +1 -1
- package/dist/icon/index.mjs +1 -1
- package/dist/icon-button/index.d.mts +1 -0
- package/dist/icon-button/index.js +1 -1
- package/dist/icon-button/index.mjs +1 -1
- package/dist/input/index.d.mts +21 -0
- package/dist/input/index.js +1 -1
- package/dist/input/index.js.map +1 -1
- package/dist/input/index.mjs +4 -4
- package/dist/input-otp/index.d.mts +14 -0
- package/dist/input-otp/index.js +1 -1
- package/dist/input-otp/index.js.map +1 -1
- package/dist/input-otp/index.mjs +139 -137
- package/dist/input-otp/index.mjs.map +1 -1
- package/dist/kbd/index.d.mts +1 -0
- package/dist/label/index.d.mts +7 -0
- package/dist/label/index.js +1 -1
- package/dist/label/index.js.map +1 -1
- package/dist/label/index.mjs +37 -2
- package/dist/label/index.mjs.map +1 -1
- package/dist/link-box/index.d.mts +9 -0
- package/dist/link-box/index.js +1 -1
- package/dist/link-box/index.js.map +1 -1
- package/dist/link-box/index.mjs +7 -7
- package/dist/pagination/index.d.mts +18 -0
- package/dist/pagination/index.js +1 -1
- package/dist/pagination/index.js.map +1 -1
- package/dist/pagination/index.mjs +126 -844
- package/dist/pagination/index.mjs.map +1 -1
- package/dist/popover/index.d.mts +17 -0
- package/dist/popover/index.js +1 -1
- package/dist/popover/index.js.map +1 -1
- package/dist/popover/index.mjs +119 -1748
- package/dist/popover/index.mjs.map +1 -1
- package/dist/portal/index.d.mts +1 -0
- package/dist/portal/index.js +1 -1
- package/dist/portal/index.js.map +1 -1
- package/dist/portal/index.mjs +3 -3
- package/dist/portal/index.mjs.map +1 -1
- package/dist/progress/index.d.mts +13 -0
- package/dist/progress/index.js +1 -6
- package/dist/progress/index.js.map +1 -1
- package/dist/progress/index.mjs +87 -162
- package/dist/progress/index.mjs.map +1 -1
- package/dist/progress-tracker/index.d.mts +10 -0
- package/dist/progress-tracker/index.js +1 -1
- package/dist/progress-tracker/index.js.map +1 -1
- package/dist/progress-tracker/index.mjs +14 -14
- package/dist/radio-group/index.d.mts +7 -0
- package/dist/radio-group/index.js +1 -1
- package/dist/radio-group/index.js.map +1 -1
- package/dist/radio-group/index.mjs +85 -312
- package/dist/radio-group/index.mjs.map +1 -1
- package/dist/rating/index.d.mts +1 -0
- package/dist/rating/index.js +1 -1
- package/dist/rating/index.js.map +1 -1
- package/dist/rating/index.mjs +11 -11
- package/dist/scrolling-list/index.d.mts +15 -0
- package/dist/scrolling-list/index.js +1 -1
- package/dist/scrolling-list/index.js.map +1 -1
- package/dist/scrolling-list/index.mjs +168 -333
- package/dist/scrolling-list/index.mjs.map +1 -1
- package/dist/segmented-gauge/index.d.mts +13 -0
- package/dist/segmented-gauge/index.js +1 -1
- package/dist/segmented-gauge/index.js.map +1 -1
- package/dist/segmented-gauge/index.mjs +1 -1
- package/dist/select/index.d.mts +21 -0
- package/dist/select/index.js +1 -1
- package/dist/select/index.js.map +1 -1
- package/dist/select/index.mjs +21 -21
- package/dist/skeleton/index.d.mts +8 -0
- package/dist/skeleton/index.js +1 -1
- package/dist/skeleton/index.js.map +1 -1
- package/dist/skeleton/index.mjs +2 -2
- package/dist/slider/Slider.d.ts +6 -1
- package/dist/slider/SliderContext.d.ts +4 -1
- package/dist/slider/index.d.mts +8 -0
- package/dist/slider/index.js +1 -1
- package/dist/slider/index.js.map +1 -1
- package/dist/slider/index.mjs +96 -496
- package/dist/slider/index.mjs.map +1 -1
- package/dist/slot/index.d.mts +1 -0
- package/dist/slot/index.js +1 -1
- package/dist/slot/index.mjs +1 -1
- package/dist/snackbar/index.d.mts +13 -0
- package/dist/snackbar/index.js +1 -1
- package/dist/snackbar/index.js.map +1 -1
- package/dist/snackbar/index.mjs +189 -1105
- package/dist/snackbar/index.mjs.map +1 -1
- package/dist/spinner/index.d.mts +1 -0
- package/dist/spinner/index.js +1 -1
- package/dist/spinner/index.mjs +1 -1
- package/dist/stepper/index.d.mts +9 -0
- package/dist/stepper/index.js +1 -7
- package/dist/stepper/index.js.map +1 -1
- package/dist/stepper/index.mjs +137 -2317
- package/dist/stepper/index.mjs.map +1 -1
- package/dist/switch/index.d.mts +1 -0
- package/dist/switch/index.js +1 -1
- package/dist/switch/index.js.map +1 -1
- package/dist/switch/index.mjs +85 -208
- package/dist/switch/index.mjs.map +1 -1
- package/dist/tabs/index.d.mts +13 -0
- package/dist/tabs/index.js +1 -1
- package/dist/tabs/index.js.map +1 -1
- package/dist/tabs/index.mjs +179 -329
- package/dist/tabs/index.mjs.map +1 -1
- package/dist/tag/index.d.mts +1 -0
- package/dist/tag/index.js +1 -1
- package/dist/tag/index.js.map +1 -1
- package/dist/tag/index.mjs +2 -2
- package/dist/tag/variants/index.d.mts +3 -0
- package/dist/text-link/index.d.mts +1 -0
- package/dist/text-link/index.js +1 -1
- package/dist/text-link/index.mjs +1 -1
- package/dist/textarea/index.d.mts +14 -0
- package/dist/textarea/index.js +1 -1
- package/dist/textarea/index.js.map +1 -1
- package/dist/textarea/index.mjs +6 -6
- package/dist/toast/index.d.mts +20 -0
- package/dist/toast/index.js +1 -1
- package/dist/toast/index.js.map +1 -1
- package/dist/toast/index.mjs +146 -1008
- package/dist/toast/index.mjs.map +1 -1
- package/dist/useRenderSlot-DATwjgpo.js +2 -0
- package/dist/useRenderSlot-DATwjgpo.js.map +1 -0
- package/dist/useRenderSlot-LwWj8QbC.mjs +10 -0
- package/dist/useRenderSlot-LwWj8QbC.mjs.map +1 -0
- package/dist/visually-hidden/index.d.mts +1 -0
- package/dist/visually-hidden/index.js +1 -1
- package/dist/visually-hidden/index.mjs +1 -1
- package/package.json +7 -6
- package/dist/Button-C3xHNaGl.js +0 -2
- package/dist/DialogContent.styles-BrhKaHc_.js +0 -2
- package/dist/DialogContent.styles-BrhKaHc_.js.map +0 -1
- package/dist/DialogContent.styles-WGWJS9dj.mjs +0 -48
- package/dist/DialogContent.styles-WGWJS9dj.mjs.map +0 -1
- package/dist/Icon-Bf0XrmiR.js +0 -2
- package/dist/IconButton-Bf-EDzpI.js +0 -2
- package/dist/Slot-C98rL4yy.mjs +0 -14
- package/dist/Slot-ghrohQLA.js +0 -2
- package/dist/Spinner-DK8VEsaR.js +0 -2
- package/dist/TextLink-DD0VO37q.js +0 -2
- package/dist/composite-Br3kM5N9.mjs +0 -40
- package/dist/composite-Br3kM5N9.mjs.map +0 -1
- package/dist/composite-fJD9R7R0.js +0 -2
- package/dist/composite-fJD9R7R0.js.map +0 -1
- package/dist/detectBrowser-Bc7rk5fI.mjs +0 -44
- package/dist/detectBrowser-Bc7rk5fI.mjs.map +0 -1
- package/dist/detectBrowser-DTbs_30X.js +0 -2
- package/dist/detectBrowser-DTbs_30X.js.map +0 -1
- package/dist/downshift.esm-Ncwetv0s.mjs +0 -3038
- package/dist/downshift.esm-Ncwetv0s.mjs.map +0 -1
- package/dist/downshift.esm-PfCOUbxq.js +0 -37
- package/dist/downshift.esm-PfCOUbxq.js.map +0 -1
- package/dist/floating-ui.utils.dom-CCN4I08l.js +0 -2
- package/dist/floating-ui.utils.dom-CCN4I08l.js.map +0 -1
- package/dist/floating-ui.utils.dom-uiDUZc_y.mjs +0 -136
- package/dist/floating-ui.utils.dom-uiDUZc_y.mjs.map +0 -1
- package/dist/index-0KYGKeVg.js +0 -2
- package/dist/index-0KYGKeVg.js.map +0 -1
- package/dist/index-1WIgmEZh.js +0 -2
- package/dist/index-1WIgmEZh.js.map +0 -1
- package/dist/index-BRi38DTc.mjs +0 -21
- package/dist/index-BRi38DTc.mjs.map +0 -1
- package/dist/index-BZAtNKwE.mjs +0 -71
- package/dist/index-BZAtNKwE.mjs.map +0 -1
- package/dist/index-BZPx6jYI.mjs +0 -9
- package/dist/index-BZPx6jYI.mjs.map +0 -1
- package/dist/index-BlkdpEIe.mjs +0 -55
- package/dist/index-BlkdpEIe.mjs.map +0 -1
- package/dist/index-BmAFn37q.mjs +0 -49
- package/dist/index-BmAFn37q.mjs.map +0 -1
- package/dist/index-C-J_tHdS.js +0 -6
- package/dist/index-C-J_tHdS.js.map +0 -1
- package/dist/index-C1qb0595.mjs +0 -28
- package/dist/index-C1qb0595.mjs.map +0 -1
- package/dist/index-C34GgsKQ.mjs +0 -54
- package/dist/index-C34GgsKQ.mjs.map +0 -1
- package/dist/index-CCKe-Mpx.mjs +0 -7
- package/dist/index-CCKe-Mpx.mjs.map +0 -1
- package/dist/index-CDBBjNXc.js +0 -2
- package/dist/index-CDBBjNXc.js.map +0 -1
- package/dist/index-CYjGhVvU.mjs +0 -243
- package/dist/index-CYjGhVvU.mjs.map +0 -1
- package/dist/index-ChLwd62c.js +0 -2
- package/dist/index-ChLwd62c.js.map +0 -1
- package/dist/index-Cjj_rUPu.js +0 -2
- package/dist/index-Cjj_rUPu.js.map +0 -1
- package/dist/index-CyMbLkj0.js +0 -2
- package/dist/index-CyMbLkj0.js.map +0 -1
- package/dist/index-DFZozV_h.mjs +0 -69
- package/dist/index-DFZozV_h.mjs.map +0 -1
- package/dist/index-DKuHkHFX.js +0 -2
- package/dist/index-DKuHkHFX.js.map +0 -1
- package/dist/index-DLHLIYPI.mjs +0 -16
- package/dist/index-DLHLIYPI.mjs.map +0 -1
- package/dist/index-DO-atGp-.js +0 -2
- package/dist/index-DO-atGp-.js.map +0 -1
- package/dist/index-DWlg8lkk.mjs +0 -179
- package/dist/index-DWlg8lkk.mjs.map +0 -1
- package/dist/index-DYxWvftI.js +0 -2
- package/dist/index-DYxWvftI.js.map +0 -1
- package/dist/index-D_lWkK39.mjs +0 -803
- package/dist/index-D_lWkK39.mjs.map +0 -1
- package/dist/index-DdkVj7D0.js +0 -18
- package/dist/index-DdkVj7D0.js.map +0 -1
- package/dist/index-De-6atSi.js +0 -2
- package/dist/index-De-6atSi.js.map +0 -1
- package/dist/index-DhGWNzsz.mjs +0 -83
- package/dist/index-DhGWNzsz.mjs.map +0 -1
- package/dist/index-Dkj4QRX8.js +0 -2
- package/dist/index-Dkj4QRX8.js.map +0 -1
- package/dist/index-DlIFg0Eu.mjs +0 -60
- package/dist/index-DlIFg0Eu.mjs.map +0 -1
- package/dist/index-DnaHaH_0.js +0 -2
- package/dist/index-DnaHaH_0.js.map +0 -1
- package/dist/index-MHF2-CYX.js +0 -2
- package/dist/index-MHF2-CYX.js.map +0 -1
- package/dist/index-MQ0c3ZX_.js +0 -2
- package/dist/index-MQ0c3ZX_.js.map +0 -1
- package/dist/index-MSR-vgWR.mjs +0 -37
- package/dist/index-MSR-vgWR.mjs.map +0 -1
- package/dist/index-VL0YEmOW.mjs +0 -125
- package/dist/index-VL0YEmOW.mjs.map +0 -1
- package/dist/index-tXqxYME3.js +0 -42
- package/dist/index-tXqxYME3.js.map +0 -1
- package/dist/inertValue-Bif5Sqs6.mjs +0 -522
- package/dist/inertValue-Bif5Sqs6.mjs.map +0 -1
- package/dist/inertValue-ShwihJSN.js +0 -5
- package/dist/inertValue-ShwihJSN.js.map +0 -1
- package/dist/useCollapsiblePanel-D1dCo0lf.js +0 -4
- package/dist/useCollapsiblePanel-D1dCo0lf.js.map +0 -1
- package/dist/useCollapsiblePanel-kbMNl4Z4.mjs +0 -287
- package/dist/useCollapsiblePanel-kbMNl4Z4.mjs.map +0 -1
- package/dist/useFocusWithin-CFNEka2I.js +0 -2
- package/dist/useFocusWithin-CFNEka2I.js.map +0 -1
- package/dist/useFocusWithin-CoL4390f.mjs +0 -796
- package/dist/useFocusWithin-CoL4390f.mjs.map +0 -1
- package/dist/useOpenChangeComplete-Dk-u_f2y.js +0 -2
- package/dist/useOpenChangeComplete-Dk-u_f2y.js.map +0 -1
- package/dist/useOpenChangeComplete-RUbg6RBw.mjs +0 -582
- package/dist/useOpenChangeComplete-RUbg6RBw.mjs.map +0 -1
- package/dist/useTransitionStatus-CktVVKxz.mjs +0 -46
- package/dist/useTransitionStatus-CktVVKxz.mjs.map +0 -1
- package/dist/useTransitionStatus-CqbEyvIj.js +0 -2
- package/dist/useTransitionStatus-CqbEyvIj.js.map +0 -1
package/dist/toast/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../node_modules/@base-ui/utils/esm/generateId.js","../../../../node_modules/@base-ui/react/esm/toast/provider/ToastProviderContext.js","../../../../node_modules/@base-ui/react/esm/toast/utils/resolvePromiseOptions.js","../../../../node_modules/@base-ui/react/esm/toast/provider/ToastProvider.js","../../../../node_modules/@base-ui/react/esm/toast/viewport/ToastViewportContext.js","../../../../node_modules/@base-ui/react/esm/toast/viewport/ToastViewportCssVars.js","../../../../node_modules/@base-ui/react/esm/toast/viewport/ToastViewport.js","../../../../node_modules/@base-ui/react/esm/toast/root/ToastRootContext.js","../../../../node_modules/@base-ui/react/esm/toast/root/ToastRootCssVars.js","../../../../node_modules/@base-ui/react/esm/toast/root/ToastRoot.js","../../../../node_modules/@base-ui/react/esm/toast/description/ToastDescription.js","../../../../node_modules/@base-ui/react/esm/toast/title/ToastTitle.js","../../../../node_modules/@base-ui/react/esm/toast/close/ToastClose.js","../../../../node_modules/@base-ui/react/esm/toast/action/ToastAction.js","../../../../node_modules/@base-ui/react/esm/utils/FloatingPortalLite.js","../../../../node_modules/@base-ui/react/esm/toast/portal/ToastPortal.js","../../../../node_modules/@base-ui/react/esm/toast/useToastManager.js","../../../../node_modules/@base-ui/react/esm/toast/createToastManager.js","../../src/toast/Toast.styles.ts","../../src/toast/Toast.tsx","../../src/toast/useToastManager.ts","../../src/toast/index.tsx"],"sourcesContent":["let counter = 0;\nexport function generateId(prefix) {\n counter += 1;\n return `${prefix}-${Math.random().toString(36).slice(2, 6)}-${counter}`;\n}","import _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const ToastContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") ToastContext.displayName = \"ToastContext\";\nexport function useToastContext() {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: useToastManager must be used within <Toast.Provider>.' : _formatErrorMessage(73));\n }\n return context;\n}","export function resolvePromiseOptions(options, result) {\n if (typeof options === 'string') {\n return {\n description: options\n };\n }\n if (typeof options === 'function') {\n const resolvedOptions = options(result);\n return typeof resolvedOptions === 'string' ? {\n description: resolvedOptions\n } : resolvedOptions;\n }\n return options;\n}","'use client';\n\nimport * as React from 'react';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { generateId } from '@base-ui/utils/generateId';\nimport { Timeout } from '@base-ui/utils/useTimeout';\nimport { activeElement, contains } from \"../../floating-ui-react/utils.js\";\nimport { ToastContext } from \"./ToastProviderContext.js\";\nimport { isFocusVisible } from \"../utils/focusVisible.js\";\nimport { resolvePromiseOptions } from \"../utils/resolvePromiseOptions.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Provides a context for creating and managing toasts.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nexport const ToastProvider = function ToastProvider(props) {\n const {\n children,\n timeout = 5000,\n limit = 3,\n toastManager\n } = props;\n const [toasts, setToasts] = React.useState([]);\n const [hovering, setHovering] = React.useState(false);\n const [focused, setFocused] = React.useState(false);\n const [prevFocusElement, setPrevFocusElement] = React.useState(null);\n if (toasts.length === 0) {\n if (hovering) {\n setHovering(false);\n }\n if (focused) {\n setFocused(false);\n }\n }\n const expanded = hovering || focused;\n const timersRef = React.useRef(new Map());\n const viewportRef = React.useRef(null);\n const windowFocusedRef = React.useRef(true);\n const isPausedRef = React.useRef(false);\n function handleFocusManagement(toastId) {\n const activeEl = activeElement(ownerDocument(viewportRef.current));\n if (!viewportRef.current || !contains(viewportRef.current, activeEl) || !isFocusVisible(activeEl)) {\n return;\n }\n const currentIndex = toasts.findIndex(toast => toast.id === toastId);\n let nextToast = null;\n\n // Try to find the next toast that isn't animating out\n let index = currentIndex + 1;\n while (index < toasts.length) {\n if (toasts[index].transitionStatus !== 'ending') {\n nextToast = toasts[index];\n break;\n }\n index += 1;\n }\n\n // Go backwards if no next toast is found\n if (!nextToast) {\n index = currentIndex - 1;\n while (index >= 0) {\n if (toasts[index].transitionStatus !== 'ending') {\n nextToast = toasts[index];\n break;\n }\n index -= 1;\n }\n }\n if (nextToast) {\n nextToast.ref?.current?.focus();\n } else {\n prevFocusElement?.focus({\n preventScroll: true\n });\n }\n }\n const pauseTimers = useStableCallback(() => {\n if (isPausedRef.current) {\n return;\n }\n isPausedRef.current = true;\n timersRef.current.forEach(timer => {\n if (timer.timeout) {\n timer.timeout.clear();\n const elapsed = Date.now() - timer.start;\n const remaining = timer.delay - elapsed;\n timer.remaining = remaining > 0 ? remaining : 0;\n }\n });\n });\n const resumeTimers = useStableCallback(() => {\n if (!isPausedRef.current) {\n return;\n }\n isPausedRef.current = false;\n timersRef.current.forEach((timer, id) => {\n timer.remaining = timer.remaining > 0 ? timer.remaining : timer.delay;\n timer.timeout ??= Timeout.create();\n timer.timeout.start(timer.remaining, () => {\n timersRef.current.delete(id);\n timer.callback();\n });\n timer.start = Date.now();\n });\n });\n const close = useStableCallback(toastId => {\n setToasts(prevToasts => {\n const toastsWithEnding = prevToasts.map(toast => toast.id === toastId ? {\n ...toast,\n transitionStatus: 'ending',\n height: 0\n } : toast);\n const activeToasts = toastsWithEnding.filter(t => t.transitionStatus !== 'ending');\n return toastsWithEnding.map(toast => {\n if (toast.transitionStatus === 'ending') {\n return toast;\n }\n const isActiveToastLimited = activeToasts.indexOf(toast) >= limit;\n return {\n ...toast,\n limited: isActiveToastLimited\n };\n });\n });\n const timer = timersRef.current.get(toastId);\n if (timer && timer.timeout) {\n timer.timeout.clear();\n timersRef.current.delete(toastId);\n }\n const toast = toasts.find(t => t.id === toastId);\n toast?.onClose?.();\n handleFocusManagement(toastId);\n if (toasts.length === 1) {\n setHovering(false);\n setFocused(false);\n }\n });\n const remove = useStableCallback(toastId => {\n setToasts(prev => prev.filter(toast => toast.id !== toastId));\n const toast = toasts.find(t => t.id === toastId);\n toast?.onRemove?.();\n });\n const scheduleTimer = useStableCallback((id, delay, callback) => {\n const start = Date.now();\n const shouldStartActive = windowFocusedRef.current && !hovering && !focused;\n const currentTimeout = shouldStartActive ? Timeout.create() : undefined;\n currentTimeout?.start(delay, () => {\n timersRef.current.delete(id);\n callback();\n });\n timersRef.current.set(id, {\n timeout: currentTimeout,\n start: shouldStartActive ? start : 0,\n delay,\n remaining: delay,\n callback\n });\n });\n const add = useStableCallback(toast => {\n const id = toast.id || generateId('toast');\n const toastToAdd = {\n ...toast,\n id,\n transitionStatus: 'starting'\n };\n setToasts(prev => {\n const updatedToasts = [toastToAdd, ...prev];\n const activeToasts = updatedToasts.filter(t => t.transitionStatus !== 'ending');\n\n // Mark oldest toasts for removal when over limit\n if (activeToasts.length > limit) {\n const excessCount = activeToasts.length - limit;\n const oldestActiveToasts = activeToasts.slice(-excessCount);\n return updatedToasts.map(t => oldestActiveToasts.some(old => old.id === t.id) ? {\n ...t,\n limited: true\n } : {\n ...t,\n limited: false\n });\n }\n return updatedToasts.map(t => ({\n ...t,\n limited: false\n }));\n });\n const duration = toastToAdd.timeout ?? timeout;\n if (toastToAdd.type !== 'loading' && duration > 0) {\n scheduleTimer(id, duration, () => close(id));\n }\n if (hovering || focused || !windowFocusedRef.current) {\n pauseTimers();\n }\n return id;\n });\n const update = useStableCallback((id, updates) => {\n setToasts(prev => prev.map(toast => toast.id === id ? {\n ...toast,\n ...updates\n } : toast));\n });\n const promise = useStableCallback((promiseValue, options) => {\n // Create a loading toast (which does not auto-dismiss).\n const loadingOptions = resolvePromiseOptions(options.loading);\n const id = add({\n ...loadingOptions,\n type: 'loading'\n });\n const handledPromise = promiseValue.then(result => {\n const successOptions = resolvePromiseOptions(options.success, result);\n update(id, {\n ...successOptions,\n type: 'success'\n });\n const successTimeout = successOptions.timeout ?? timeout;\n if (successTimeout > 0) {\n scheduleTimer(id, successTimeout, () => close(id));\n }\n if (hovering || focused || !windowFocusedRef.current) {\n pauseTimers();\n }\n return result;\n }).catch(error => {\n const errorOptions = resolvePromiseOptions(options.error, error);\n update(id, {\n ...errorOptions,\n type: 'error'\n });\n const errorTimeout = errorOptions.timeout ?? timeout;\n if (errorTimeout > 0) {\n scheduleTimer(id, errorTimeout, () => close(id));\n }\n if (hovering || focused || !windowFocusedRef.current) {\n pauseTimers();\n }\n return Promise.reject(error);\n });\n\n // Private API used exclusively by `Manager` to handoff the promise\n // back to the manager after it's handled here.\n if ({}.hasOwnProperty.call(options, 'setPromise')) {\n options.setPromise(handledPromise);\n }\n return handledPromise;\n });\n React.useEffect(function subscribeToToastManager() {\n if (!toastManager) {\n return undefined;\n }\n const unsubscribe = toastManager[' subscribe'](({\n action,\n options\n }) => {\n const id = options.id;\n if (action === 'promise' && options.promise) {\n promise(options.promise, options);\n } else if (action === 'update' && id) {\n update(id, options);\n } else if (action === 'close' && id) {\n close(id);\n } else {\n add(options);\n }\n });\n return unsubscribe;\n }, [add, update, scheduleTimer, timeout, toastManager, promise, close]);\n const contextValue = React.useMemo(() => ({\n toasts,\n setToasts,\n hovering,\n setHovering,\n focused,\n setFocused,\n expanded,\n add,\n close,\n remove,\n update,\n promise,\n pauseTimers,\n resumeTimers,\n prevFocusElement,\n setPrevFocusElement,\n viewportRef,\n scheduleTimer,\n windowFocusedRef\n }), [add, close, focused, hovering, expanded, pauseTimers, prevFocusElement, promise, remove, resumeTimers, scheduleTimer, toasts, update]);\n return /*#__PURE__*/_jsx(ToastContext.Provider, {\n value: contextValue,\n children: children\n });\n};\nif (process.env.NODE_ENV !== \"production\") ToastProvider.displayName = \"ToastProvider\";","import _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const ToastViewportContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") ToastViewportContext.displayName = \"ToastViewportContext\";\nexport function useToastViewportContext() {\n const context = React.useContext(ToastViewportContext);\n if (!context) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: ToastViewportContext is missing. Toast parts must be placed within <Toast.Viewport>.' : _formatErrorMessage(67));\n }\n return context;\n}","export let ToastViewportCssVars = /*#__PURE__*/function (ToastViewportCssVars) {\n /**\n * Indicates the height of the frontmost toast.\n * @type {number}\n */\n ToastViewportCssVars[\"frontmostHeight\"] = \"--toast-frontmost-height\";\n return ToastViewportCssVars;\n}({});","'use client';\n\nimport * as React from 'react';\nimport { ownerDocument, ownerWindow } from '@base-ui/utils/owner';\nimport { visuallyHidden } from '@base-ui/utils/visuallyHidden';\nimport { activeElement, contains, getTarget } from \"../../floating-ui-react/utils.js\";\nimport { FocusGuard } from \"../../utils/FocusGuard.js\";\nimport { ToastViewportContext } from \"./ToastViewportContext.js\";\nimport { useToastContext } from \"../provider/ToastProviderContext.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { isFocusVisible } from \"../utils/focusVisible.js\";\nimport { ToastViewportCssVars } from \"./ToastViewportCssVars.js\";\n\n/**\n * A container viewport for toasts.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ToastViewport = /*#__PURE__*/React.forwardRef(function ToastViewport(componentProps, forwardedRef) {\n const {\n render,\n className,\n children,\n ...elementProps\n } = componentProps;\n const {\n toasts,\n pauseTimers,\n resumeTimers,\n setHovering,\n setFocused,\n viewportRef,\n windowFocusedRef,\n prevFocusElement,\n setPrevFocusElement,\n expanded,\n focused\n } = useToastContext();\n const handlingFocusGuardRef = React.useRef(false);\n const markedReadyForMouseLeaveRef = React.useRef(false);\n const numToasts = toasts.length;\n const frontmostHeight = toasts[0]?.height ?? 0;\n const hasTransitioningToasts = React.useMemo(() => toasts.some(toast => toast.transitionStatus === 'ending'), [toasts]);\n\n // Listen globally for F6 so we can force-focus the viewport.\n React.useEffect(() => {\n if (!viewportRef.current) {\n return undefined;\n }\n function handleGlobalKeyDown(event) {\n if (numToasts === 0) {\n return;\n }\n if (event.key === 'F6' && event.target !== viewportRef.current) {\n event.preventDefault();\n setPrevFocusElement(activeElement(ownerDocument(viewportRef.current)));\n viewportRef.current?.focus({\n preventScroll: true\n });\n pauseTimers();\n setFocused(true);\n }\n }\n const win = ownerWindow(viewportRef.current);\n win.addEventListener('keydown', handleGlobalKeyDown);\n return () => {\n win.removeEventListener('keydown', handleGlobalKeyDown);\n };\n }, [pauseTimers, setFocused, setPrevFocusElement, numToasts, viewportRef]);\n React.useEffect(() => {\n if (!viewportRef.current || !numToasts) {\n return undefined;\n }\n const win = ownerWindow(viewportRef.current);\n function handleWindowBlur(event) {\n if (event.target !== win) {\n return;\n }\n windowFocusedRef.current = false;\n pauseTimers();\n }\n function handleWindowFocus(event) {\n if (event.relatedTarget || event.target === win) {\n return;\n }\n const target = getTarget(event);\n const activeEl = activeElement(ownerDocument(viewportRef.current));\n if (!contains(viewportRef.current, target) || !isFocusVisible(activeEl)) {\n resumeTimers();\n }\n\n // Wait for the `handleFocus` event to fire.\n setTimeout(() => {\n windowFocusedRef.current = true;\n });\n }\n win.addEventListener('blur', handleWindowBlur, true);\n win.addEventListener('focus', handleWindowFocus, true);\n return () => {\n win.removeEventListener('blur', handleWindowBlur, true);\n win.removeEventListener('focus', handleWindowFocus, true);\n };\n }, [pauseTimers, resumeTimers, viewportRef, windowFocusedRef, setFocused,\n // `viewportRef.current` isn't available on the first render,\n // since the portal node hasn't yet been created.\n // By adding this dependency, we ensure the window listeners\n // are added when toasts have been created, once the ref is available.\n numToasts]);\n React.useEffect(() => {\n const viewportNode = viewportRef.current;\n if (!viewportNode || numToasts === 0) {\n return undefined;\n }\n const doc = ownerDocument(viewportNode);\n function handlePointerDown(event) {\n if (event.pointerType !== 'touch') {\n return;\n }\n const target = getTarget(event);\n if (contains(viewportNode, target)) {\n return;\n }\n resumeTimers();\n setHovering(false);\n setFocused(false);\n }\n doc.addEventListener('pointerdown', handlePointerDown, true);\n return () => {\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n };\n }, [numToasts, resumeTimers, setFocused, setHovering, viewportRef]);\n function handleFocusGuard(event) {\n if (!viewportRef.current) {\n return;\n }\n handlingFocusGuardRef.current = true;\n\n // If we're coming off the container, move to the first toast\n if (event.relatedTarget === viewportRef.current) {\n toasts[0]?.ref?.current?.focus();\n } else {\n prevFocusElement?.focus({\n preventScroll: true\n });\n }\n }\n function handleKeyDown(event) {\n if (event.key === 'Tab' && event.shiftKey && event.target === viewportRef.current) {\n event.preventDefault();\n prevFocusElement?.focus({\n preventScroll: true\n });\n resumeTimers();\n }\n }\n React.useEffect(() => {\n if (!windowFocusedRef.current || hasTransitioningToasts || !markedReadyForMouseLeaveRef.current) {\n return;\n }\n\n // Once transitions have finished, see if a mouseleave was already triggered\n // but blocked from taking effect. If so, we can now safely resume timers and\n // collapse the viewport.\n resumeTimers();\n setHovering(false);\n markedReadyForMouseLeaveRef.current = false;\n }, [hasTransitioningToasts, resumeTimers, setHovering, windowFocusedRef]);\n function handleMouseEnter() {\n pauseTimers();\n setHovering(true);\n markedReadyForMouseLeaveRef.current = false;\n }\n function handleMouseLeave() {\n if (toasts.some(toast => toast.transitionStatus === 'ending')) {\n // When swiping to dismiss, wait until the transitions have settled\n // to avoid the viewport collapsing while the user is interacting.\n markedReadyForMouseLeaveRef.current = true;\n } else {\n resumeTimers();\n setHovering(false);\n }\n }\n function handleFocus() {\n if (handlingFocusGuardRef.current) {\n handlingFocusGuardRef.current = false;\n return;\n }\n if (focused) {\n return;\n }\n\n // Only set focused when the active element is focus-visible.\n // This prevents the viewport from staying expanded when clicking inside without\n // keyboard navigation.\n if (isFocusVisible(ownerDocument(viewportRef.current).activeElement)) {\n setFocused(true);\n pauseTimers();\n }\n }\n function handleBlur(event) {\n if (!focused || contains(viewportRef.current, event.relatedTarget)) {\n return;\n }\n setFocused(false);\n resumeTimers();\n }\n const defaultProps = {\n tabIndex: -1,\n role: 'region',\n 'aria-live': 'polite',\n 'aria-atomic': false,\n 'aria-relevant': 'additions text',\n 'aria-label': 'Notifications',\n onMouseEnter: handleMouseEnter,\n onMouseMove: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onClick: handleFocus\n };\n const state = React.useMemo(() => ({\n expanded\n }), [expanded]);\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, viewportRef],\n state,\n props: [defaultProps, {\n style: {\n [ToastViewportCssVars.frontmostHeight]: frontmostHeight ? `${frontmostHeight}px` : undefined\n }\n }, elementProps, {\n children: /*#__PURE__*/_jsxs(React.Fragment, {\n children: [numToasts > 0 && prevFocusElement && /*#__PURE__*/_jsx(FocusGuard, {\n onFocus: handleFocusGuard\n }), children, numToasts > 0 && prevFocusElement && /*#__PURE__*/_jsx(FocusGuard, {\n onFocus: handleFocusGuard\n })]\n })\n }]\n });\n const contextValue = React.useMemo(() => ({\n viewportRef\n }), [viewportRef]);\n const highPriorityToasts = React.useMemo(() => toasts.filter(toast => toast.priority === 'high'), [toasts]);\n return /*#__PURE__*/_jsxs(ToastViewportContext.Provider, {\n value: contextValue,\n children: [numToasts > 0 && prevFocusElement && /*#__PURE__*/_jsx(FocusGuard, {\n onFocus: handleFocusGuard\n }), element, !focused && highPriorityToasts.length > 0 && /*#__PURE__*/_jsx(\"div\", {\n style: visuallyHidden,\n children: highPriorityToasts.map(toast => /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n \"aria-atomic\": true,\n children: [/*#__PURE__*/_jsx(\"div\", {\n children: toast.title\n }), /*#__PURE__*/_jsx(\"div\", {\n children: toast.description\n })]\n }, toast.id))\n })]\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToastViewport.displayName = \"ToastViewport\";","import _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const ToastRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") ToastRootContext.displayName = \"ToastRootContext\";\nexport function useToastRootContext() {\n const context = React.useContext(ToastRootContext);\n if (!context) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: ToastRootContext is missing. Toast parts must be used within <Toast.Root>.' : _formatErrorMessage(66));\n }\n return context;\n}","export let ToastRootCssVars = /*#__PURE__*/function (ToastRootCssVars) {\n /**\n * Indicates the index of the toast in the list.\n * @type {number}\n */\n ToastRootCssVars[\"index\"] = \"--toast-index\";\n /**\n * Indicates the vertical pixels offset of the toast in the list when expanded.\n * @type {number}\n */\n ToastRootCssVars[\"offsetY\"] = \"--toast-offset-y\";\n /**\n * Indicates the measured natural height of the toast in pixels.\n * @type {number}\n */\n ToastRootCssVars[\"height\"] = \"--toast-height\";\n /**\n * Indicates the horizontal swipe movement of the toast.\n * @type {number}\n */\n ToastRootCssVars[\"swipeMovementX\"] = \"--toast-swipe-movement-x\";\n /**\n * Indicates the vertical swipe movement of the toast.\n * @type {number}\n */\n ToastRootCssVars[\"swipeMovementY\"] = \"--toast-swipe-movement-y\";\n return ToastRootCssVars;\n}({});","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { inertValue } from '@base-ui/utils/inertValue';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { activeElement, contains, getTarget } from \"../../floating-ui-react/utils.js\";\nimport { ToastRootContext } from \"./ToastRootContext.js\";\nimport { transitionStatusMapping } from \"../../utils/stateAttributesMapping.js\";\nimport { useToastContext } from \"../provider/ToastProviderContext.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { useOpenChangeComplete } from \"../../utils/useOpenChangeComplete.js\";\nimport { ToastRootCssVars } from \"./ToastRootCssVars.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst stateAttributesMapping = {\n ...transitionStatusMapping,\n swipeDirection(value) {\n return value ? {\n 'data-swipe-direction': value\n } : null;\n }\n};\nconst SWIPE_THRESHOLD = 40;\nconst REVERSE_CANCEL_THRESHOLD = 10;\nconst OPPOSITE_DIRECTION_DAMPING_FACTOR = 0.5;\nconst MIN_DRAG_THRESHOLD = 1;\nfunction getDisplacement(direction, deltaX, deltaY) {\n switch (direction) {\n case 'up':\n return -deltaY;\n case 'down':\n return deltaY;\n case 'left':\n return -deltaX;\n case 'right':\n return deltaX;\n default:\n return 0;\n }\n}\nfunction getElementTransform(element) {\n const computedStyle = window.getComputedStyle(element);\n const transform = computedStyle.transform;\n let translateX = 0;\n let translateY = 0;\n let scale = 1;\n if (transform && transform !== 'none') {\n const matrix = transform.match(/matrix(?:3d)?\\(([^)]+)\\)/);\n if (matrix) {\n const values = matrix[1].split(', ').map(parseFloat);\n if (values.length === 6) {\n translateX = values[4];\n translateY = values[5];\n scale = Math.sqrt(values[0] * values[0] + values[1] * values[1]);\n } else if (values.length === 16) {\n translateX = values[12];\n translateY = values[13];\n scale = values[0];\n }\n }\n }\n return {\n x: translateX,\n y: translateY,\n scale\n };\n}\n\n/**\n * Groups all parts of an individual toast.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nexport const ToastRoot = /*#__PURE__*/React.forwardRef(function ToastRoot(componentProps, forwardedRef) {\n const {\n toast,\n render,\n className,\n swipeDirection = ['down', 'right'],\n ...elementProps\n } = componentProps;\n const isAnchored = toast.positionerProps?.anchor !== undefined;\n let swipeDirections = [];\n if (!isAnchored) {\n swipeDirections = Array.isArray(swipeDirection) ? swipeDirection : [swipeDirection];\n }\n const swipeEnabled = swipeDirections.length > 0;\n const {\n toasts,\n focused,\n close,\n remove,\n setToasts,\n pauseTimers,\n expanded,\n setHovering\n } = useToastContext();\n const [currentSwipeDirection, setCurrentSwipeDirection] = React.useState(undefined);\n const [isSwiping, setIsSwiping] = React.useState(false);\n const [isRealSwipe, setIsRealSwipe] = React.useState(false);\n const [dragDismissed, setDragDismissed] = React.useState(false);\n const [dragOffset, setDragOffset] = React.useState({\n x: 0,\n y: 0\n });\n const [initialTransform, setInitialTransform] = React.useState({\n x: 0,\n y: 0,\n scale: 1\n });\n const [titleId, setTitleId] = React.useState();\n const [descriptionId, setDescriptionId] = React.useState();\n const [lockedDirection, setLockedDirection] = React.useState(null);\n const rootRef = React.useRef(null);\n const dragStartPosRef = React.useRef({\n x: 0,\n y: 0\n });\n const initialTransformRef = React.useRef({\n x: 0,\n y: 0,\n scale: 1\n });\n const intendedSwipeDirectionRef = React.useRef(undefined);\n const maxSwipeDisplacementRef = React.useRef(0);\n const cancelledSwipeRef = React.useRef(false);\n const swipeCancelBaselineRef = React.useRef({\n x: 0,\n y: 0\n });\n const isFirstPointerMoveRef = React.useRef(false);\n const domIndex = React.useMemo(() => toasts.indexOf(toast), [toast, toasts]);\n const visibleIndex = React.useMemo(() => toasts.filter(t => t.transitionStatus !== 'ending').indexOf(toast), [toast, toasts]);\n const offsetY = React.useMemo(() => {\n return toasts.slice(0, toasts.indexOf(toast)).reduce((acc, t) => acc + (t.height || 0), 0);\n }, [toasts, toast]);\n useOpenChangeComplete({\n open: toast.transitionStatus !== 'ending',\n ref: rootRef,\n onComplete() {\n if (toast.transitionStatus === 'ending') {\n remove(toast.id);\n }\n }\n });\n\n /**\n * Recalculates the natural height of the toast and updates it in the toast manager.\n * @param flushSync Whether to flush the update synchronously. Use in observer\n * callbacks to avoid visual flickers.\n */\n const recalculateHeight = useStableCallback((flushSync = false) => {\n const element = rootRef.current;\n if (!element) {\n return;\n }\n const previousHeight = element.style.height;\n element.style.height = 'auto';\n const height = element.offsetHeight;\n element.style.height = previousHeight;\n function update() {\n setToasts(prev => prev.map(t => t.id === toast.id ? {\n ...t,\n ref: rootRef,\n height,\n transitionStatus: undefined\n } : t));\n }\n if (flushSync) {\n ReactDOM.flushSync(update);\n } else {\n update();\n }\n });\n useIsoLayoutEffect(recalculateHeight, [recalculateHeight]);\n function applyDirectionalDamping(deltaX, deltaY) {\n let newDeltaX = deltaX;\n let newDeltaY = deltaY;\n if (!swipeDirections.includes('left') && !swipeDirections.includes('right')) {\n newDeltaX = deltaX > 0 ? deltaX ** OPPOSITE_DIRECTION_DAMPING_FACTOR : -(Math.abs(deltaX) ** OPPOSITE_DIRECTION_DAMPING_FACTOR);\n } else {\n if (!swipeDirections.includes('right') && deltaX > 0) {\n newDeltaX = deltaX ** OPPOSITE_DIRECTION_DAMPING_FACTOR;\n }\n if (!swipeDirections.includes('left') && deltaX < 0) {\n newDeltaX = -(Math.abs(deltaX) ** OPPOSITE_DIRECTION_DAMPING_FACTOR);\n }\n }\n if (!swipeDirections.includes('up') && !swipeDirections.includes('down')) {\n newDeltaY = deltaY > 0 ? deltaY ** OPPOSITE_DIRECTION_DAMPING_FACTOR : -(Math.abs(deltaY) ** OPPOSITE_DIRECTION_DAMPING_FACTOR);\n } else {\n if (!swipeDirections.includes('down') && deltaY > 0) {\n newDeltaY = deltaY ** OPPOSITE_DIRECTION_DAMPING_FACTOR;\n }\n if (!swipeDirections.includes('up') && deltaY < 0) {\n newDeltaY = -(Math.abs(deltaY) ** OPPOSITE_DIRECTION_DAMPING_FACTOR);\n }\n }\n return {\n x: newDeltaX,\n y: newDeltaY\n };\n }\n function handlePointerDown(event) {\n if (event.button !== 0) {\n return;\n }\n if (event.pointerType === 'touch') {\n pauseTimers();\n }\n const target = getTarget(event.nativeEvent);\n const isInteractiveElement = target ? target.closest('button,a,input,textarea,[role=\"button\"],[data-swipe-ignore]') : false;\n if (isInteractiveElement) {\n return;\n }\n cancelledSwipeRef.current = false;\n intendedSwipeDirectionRef.current = undefined;\n maxSwipeDisplacementRef.current = 0;\n dragStartPosRef.current = {\n x: event.clientX,\n y: event.clientY\n };\n swipeCancelBaselineRef.current = dragStartPosRef.current;\n if (rootRef.current) {\n const transform = getElementTransform(rootRef.current);\n initialTransformRef.current = transform;\n setInitialTransform(transform);\n setDragOffset({\n x: transform.x,\n y: transform.y\n });\n }\n setHovering(true);\n setIsSwiping(true);\n setIsRealSwipe(false);\n setLockedDirection(null);\n isFirstPointerMoveRef.current = true;\n rootRef.current?.setPointerCapture(event.pointerId);\n }\n function handlePointerMove(event) {\n if (!isSwiping) {\n return;\n }\n\n // Prevent text selection on Safari\n event.preventDefault();\n if (isFirstPointerMoveRef.current) {\n // Adjust the starting position to the current position on the first move\n // to account for the delay between pointerdown and the first pointermove on iOS.\n dragStartPosRef.current = {\n x: event.clientX,\n y: event.clientY\n };\n isFirstPointerMoveRef.current = false;\n }\n const {\n clientY,\n clientX,\n movementX,\n movementY\n } = event;\n if (movementY < 0 && clientY > swipeCancelBaselineRef.current.y || movementY > 0 && clientY < swipeCancelBaselineRef.current.y) {\n swipeCancelBaselineRef.current = {\n x: swipeCancelBaselineRef.current.x,\n y: clientY\n };\n }\n if (movementX < 0 && clientX > swipeCancelBaselineRef.current.x || movementX > 0 && clientX < swipeCancelBaselineRef.current.x) {\n swipeCancelBaselineRef.current = {\n x: clientX,\n y: swipeCancelBaselineRef.current.y\n };\n }\n const deltaX = clientX - dragStartPosRef.current.x;\n const deltaY = clientY - dragStartPosRef.current.y;\n const cancelDeltaY = clientY - swipeCancelBaselineRef.current.y;\n const cancelDeltaX = clientX - swipeCancelBaselineRef.current.x;\n if (!isRealSwipe) {\n const movementDistance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n if (movementDistance >= MIN_DRAG_THRESHOLD) {\n setIsRealSwipe(true);\n if (lockedDirection === null) {\n const hasHorizontal = swipeDirections.includes('left') || swipeDirections.includes('right');\n const hasVertical = swipeDirections.includes('up') || swipeDirections.includes('down');\n if (hasHorizontal && hasVertical) {\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n setLockedDirection(absX > absY ? 'horizontal' : 'vertical');\n }\n }\n }\n }\n let candidate;\n if (!intendedSwipeDirectionRef.current) {\n if (lockedDirection === 'vertical') {\n if (deltaY > 0) {\n candidate = 'down';\n } else if (deltaY < 0) {\n candidate = 'up';\n }\n } else if (lockedDirection === 'horizontal') {\n if (deltaX > 0) {\n candidate = 'right';\n } else if (deltaX < 0) {\n candidate = 'left';\n }\n } else if (Math.abs(deltaX) >= Math.abs(deltaY)) {\n candidate = deltaX > 0 ? 'right' : 'left';\n } else {\n candidate = deltaY > 0 ? 'down' : 'up';\n }\n if (candidate && swipeDirections.includes(candidate)) {\n intendedSwipeDirectionRef.current = candidate;\n maxSwipeDisplacementRef.current = getDisplacement(candidate, deltaX, deltaY);\n setCurrentSwipeDirection(candidate);\n }\n } else {\n const direction = intendedSwipeDirectionRef.current;\n const currentDisplacement = getDisplacement(direction, cancelDeltaX, cancelDeltaY);\n if (currentDisplacement > SWIPE_THRESHOLD) {\n cancelledSwipeRef.current = false;\n setCurrentSwipeDirection(direction);\n } else if (!(swipeDirections.includes('left') && swipeDirections.includes('right')) && !(swipeDirections.includes('up') && swipeDirections.includes('down')) && maxSwipeDisplacementRef.current - currentDisplacement >= REVERSE_CANCEL_THRESHOLD) {\n // Mark that a change-of-mind has occurred\n cancelledSwipeRef.current = true;\n }\n }\n const dampedDelta = applyDirectionalDamping(deltaX, deltaY);\n let newOffsetX = initialTransformRef.current.x;\n let newOffsetY = initialTransformRef.current.y;\n if (lockedDirection === 'horizontal') {\n if (swipeDirections.includes('left') || swipeDirections.includes('right')) {\n newOffsetX += dampedDelta.x;\n }\n } else if (lockedDirection === 'vertical') {\n if (swipeDirections.includes('up') || swipeDirections.includes('down')) {\n newOffsetY += dampedDelta.y;\n }\n } else {\n if (swipeDirections.includes('left') || swipeDirections.includes('right')) {\n newOffsetX += dampedDelta.x;\n }\n if (swipeDirections.includes('up') || swipeDirections.includes('down')) {\n newOffsetY += dampedDelta.y;\n }\n }\n setDragOffset({\n x: newOffsetX,\n y: newOffsetY\n });\n }\n function handlePointerUp(event) {\n if (!isSwiping) {\n return;\n }\n setIsSwiping(false);\n setIsRealSwipe(false);\n setLockedDirection(null);\n rootRef.current?.releasePointerCapture(event.pointerId);\n if (cancelledSwipeRef.current) {\n setDragOffset({\n x: initialTransform.x,\n y: initialTransform.y\n });\n setCurrentSwipeDirection(undefined);\n return;\n }\n let shouldClose = false;\n const deltaX = dragOffset.x - initialTransform.x;\n const deltaY = dragOffset.y - initialTransform.y;\n let dismissDirection;\n for (const direction of swipeDirections) {\n switch (direction) {\n case 'right':\n if (deltaX > SWIPE_THRESHOLD) {\n shouldClose = true;\n dismissDirection = 'right';\n }\n break;\n case 'left':\n if (deltaX < -SWIPE_THRESHOLD) {\n shouldClose = true;\n dismissDirection = 'left';\n }\n break;\n case 'down':\n if (deltaY > SWIPE_THRESHOLD) {\n shouldClose = true;\n dismissDirection = 'down';\n }\n break;\n case 'up':\n if (deltaY < -SWIPE_THRESHOLD) {\n shouldClose = true;\n dismissDirection = 'up';\n }\n break;\n default:\n break;\n }\n if (shouldClose) {\n break;\n }\n }\n if (shouldClose) {\n setCurrentSwipeDirection(dismissDirection);\n setDragDismissed(true);\n close(toast.id);\n } else {\n setDragOffset({\n x: initialTransform.x,\n y: initialTransform.y\n });\n setCurrentSwipeDirection(undefined);\n }\n }\n function handleKeyDown(event) {\n if (event.key === 'Escape') {\n if (!rootRef.current || !contains(rootRef.current, activeElement(ownerDocument(rootRef.current)))) {\n return;\n }\n close(toast.id);\n }\n }\n React.useEffect(() => {\n if (!swipeEnabled) {\n return undefined;\n }\n const element = rootRef.current;\n if (!element) {\n return undefined;\n }\n function preventDefaultTouchStart(event) {\n if (contains(element, event.target)) {\n event.preventDefault();\n }\n }\n element.addEventListener('touchmove', preventDefaultTouchStart, {\n passive: false\n });\n return () => {\n element.removeEventListener('touchmove', preventDefaultTouchStart);\n };\n }, [swipeEnabled]);\n function getDragStyles() {\n if (!isSwiping && dragOffset.x === initialTransform.x && dragOffset.y === initialTransform.y && !dragDismissed) {\n return {\n [ToastRootCssVars.swipeMovementX]: '0px',\n [ToastRootCssVars.swipeMovementY]: '0px'\n };\n }\n const deltaX = dragOffset.x - initialTransform.x;\n const deltaY = dragOffset.y - initialTransform.y;\n return {\n transition: isSwiping ? 'none' : undefined,\n // While swiping, freeze the element at its current visual transform so it doesn't snap to the\n // end position.\n transform: isSwiping ? `translateX(${dragOffset.x}px) translateY(${dragOffset.y}px) scale(${initialTransform.scale})` : undefined,\n [ToastRootCssVars.swipeMovementX]: `${deltaX}px`,\n [ToastRootCssVars.swipeMovementY]: `${deltaY}px`\n };\n }\n const isHighPriority = toast.priority === 'high';\n const defaultProps = {\n role: isHighPriority ? 'alertdialog' : 'dialog',\n tabIndex: 0,\n 'aria-modal': false,\n 'aria-labelledby': titleId,\n 'aria-describedby': descriptionId,\n 'aria-hidden': isHighPriority && !focused ? true : undefined,\n onPointerDown: swipeEnabled ? handlePointerDown : undefined,\n onPointerMove: swipeEnabled ? handlePointerMove : undefined,\n onPointerUp: swipeEnabled ? handlePointerUp : undefined,\n onKeyDown: handleKeyDown,\n inert: inertValue(toast.limited),\n style: {\n ...getDragStyles(),\n [ToastRootCssVars.index]: toast.transitionStatus === 'ending' ? domIndex : visibleIndex,\n [ToastRootCssVars.offsetY]: `${offsetY}px`,\n [ToastRootCssVars.height]: toast.height ? `${toast.height}px` : undefined\n }\n };\n const toastRoot = React.useMemo(() => ({\n rootRef,\n toast,\n titleId,\n setTitleId,\n descriptionId,\n setDescriptionId,\n swiping: isSwiping,\n swipeDirection: currentSwipeDirection,\n recalculateHeight,\n index: domIndex,\n visibleIndex,\n expanded\n }), [toast, titleId, descriptionId, isSwiping, currentSwipeDirection, recalculateHeight, domIndex, visibleIndex, expanded]);\n const state = React.useMemo(() => ({\n transitionStatus: toast.transitionStatus,\n expanded,\n limited: toast.limited || false,\n type: toast.type,\n swiping: toastRoot.swiping,\n swipeDirection: toastRoot.swipeDirection\n }), [expanded, toast.transitionStatus, toast.limited, toast.type, toastRoot.swiping, toastRoot.swipeDirection]);\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, toastRoot.rootRef],\n state,\n stateAttributesMapping,\n props: [defaultProps, elementProps]\n });\n return /*#__PURE__*/_jsx(ToastRootContext.Provider, {\n value: toastRoot,\n children: element\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToastRoot.displayName = \"ToastRoot\";","'use client';\n\nimport * as React from 'react';\nimport { useId } from '@base-ui/utils/useId';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useToastRootContext } from \"../root/ToastRootContext.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\n\n/**\n * A description that describes the toast.\n * Can be used as the default message for the toast when no title is provided.\n * Renders a `<p>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nexport const ToastDescription = /*#__PURE__*/React.forwardRef(function ToastDescription(componentProps, forwardedRef) {\n const {\n render,\n className,\n id: idProp,\n children: childrenProp,\n ...elementProps\n } = componentProps;\n const {\n toast\n } = useToastRootContext();\n const children = childrenProp ?? toast.description;\n const shouldRender = Boolean(children);\n const id = useId(idProp);\n const {\n setDescriptionId\n } = useToastRootContext();\n useIsoLayoutEffect(() => {\n if (!shouldRender) {\n return undefined;\n }\n setDescriptionId(id);\n return () => {\n setDescriptionId(undefined);\n };\n }, [shouldRender, id, setDescriptionId]);\n const state = React.useMemo(() => ({\n type: toast.type\n }), [toast.type]);\n const element = useRenderElement('p', componentProps, {\n ref: forwardedRef,\n state,\n props: {\n ...elementProps,\n id,\n children\n }\n });\n if (!shouldRender) {\n return null;\n }\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") ToastDescription.displayName = \"ToastDescription\";","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useId } from '@base-ui/utils/useId';\nimport { useToastRootContext } from \"../root/ToastRootContext.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\n\n/**\n * A title that labels the toast.\n * Renders an `<h2>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nexport const ToastTitle = /*#__PURE__*/React.forwardRef(function ToastTitle(componentProps, forwardedRef) {\n const {\n render,\n className,\n id: idProp,\n children: childrenProp,\n ...elementProps\n } = componentProps;\n const {\n toast\n } = useToastRootContext();\n const children = childrenProp ?? toast.title;\n const shouldRender = Boolean(children);\n const id = useId(idProp);\n const {\n setTitleId\n } = useToastRootContext();\n useIsoLayoutEffect(() => {\n if (!shouldRender) {\n return undefined;\n }\n setTitleId(id);\n return () => {\n setTitleId(undefined);\n };\n }, [shouldRender, id, setTitleId]);\n const state = React.useMemo(() => ({\n type: toast.type\n }), [toast.type]);\n const element = useRenderElement('h2', componentProps, {\n ref: forwardedRef,\n state,\n props: {\n ...elementProps,\n id,\n children\n }\n });\n if (!shouldRender) {\n return null;\n }\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") ToastTitle.displayName = \"ToastTitle\";","'use client';\n\nimport * as React from 'react';\nimport { useToastRootContext } from \"../root/ToastRootContext.js\";\nimport { useToastContext } from \"../provider/ToastProviderContext.js\";\nimport { useButton } from \"../../use-button/useButton.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\n\n/**\n * Closes the toast when clicked.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nexport const ToastClose = /*#__PURE__*/React.forwardRef(function ToastClose(componentProps, forwardedRef) {\n const {\n render,\n className,\n disabled,\n nativeButton = true,\n ...elementProps\n } = componentProps;\n const {\n close,\n expanded\n } = useToastContext();\n const {\n toast\n } = useToastRootContext();\n const [hasFocus, setHasFocus] = React.useState(false);\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton\n });\n const state = React.useMemo(() => ({\n type: toast.type\n }), [toast.type]);\n const element = useRenderElement('button', componentProps, {\n ref: [forwardedRef, buttonRef],\n state,\n props: [{\n 'aria-hidden': !expanded && !hasFocus,\n onClick() {\n close(toast.id);\n },\n onFocus() {\n setHasFocus(true);\n },\n onBlur() {\n setHasFocus(false);\n }\n }, elementProps, getButtonProps]\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") ToastClose.displayName = \"ToastClose\";","'use client';\n\nimport * as React from 'react';\nimport { useToastRootContext } from \"../root/ToastRootContext.js\";\nimport { useButton } from \"../../use-button/useButton.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\n\n/**\n * Performs an action when clicked.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nexport const ToastAction = /*#__PURE__*/React.forwardRef(function ToastAction(componentProps, forwardedRef) {\n const {\n render,\n className,\n disabled,\n nativeButton = true,\n ...elementProps\n } = componentProps;\n const {\n toast\n } = useToastRootContext();\n const computedChildren = toast.actionProps?.children ?? elementProps.children;\n const shouldRender = Boolean(computedChildren);\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton\n });\n const state = React.useMemo(() => ({\n type: toast.type\n }), [toast.type]);\n const element = useRenderElement('button', componentProps, {\n ref: [forwardedRef, buttonRef],\n state,\n props: [elementProps, toast.actionProps, getButtonProps, {\n children: computedChildren\n }]\n });\n if (!shouldRender) {\n return null;\n }\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") ToastAction.displayName = \"ToastAction\";","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { useFloatingPortalNode } from \"../floating-ui-react/index.js\";\n\n/**\n * `FloatingPortal` includes tabbable logic handling for focus management.\n * For components that don't need tabbable logic, use `FloatingPortalLite`.\n * @internal\n */\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const FloatingPortalLite = /*#__PURE__*/React.forwardRef(function FloatingPortalLite(componentProps, forwardedRef) {\n const {\n children,\n container,\n className,\n render,\n ...elementProps\n } = componentProps;\n const {\n portalNode,\n portalSubtree\n } = useFloatingPortalNode({\n container,\n ref: forwardedRef,\n componentProps,\n elementProps\n });\n if (!portalSubtree && !portalNode) {\n return null;\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [portalSubtree, portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode)]\n });\n});\nif (process.env.NODE_ENV !== \"production\") FloatingPortalLite.displayName = \"FloatingPortalLite\";","'use client';\n\nimport { FloatingPortalLite } from \"../../utils/FloatingPortalLite.js\";\n\n/**\n * A portal element that moves the viewport to a different part of the DOM.\n * By default, the portal element is appended to `<body>`.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nexport const ToastPortal = FloatingPortalLite;","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { ToastContext } from \"./provider/ToastProviderContext.js\";\n/**\n * Returns the array of toasts and methods to manage them.\n */\nexport function useToastManager() {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: useToastManager must be used within <Toast.Provider>.' : _formatErrorMessage(73));\n }\n const {\n toasts,\n add,\n close,\n update,\n promise\n } = context;\n return React.useMemo(() => ({\n toasts,\n add,\n close,\n update,\n promise\n }), [toasts, add, close, update, promise]);\n}","import { generateId } from '@base-ui/utils/generateId';\n/**\n * Creates a new toast manager.\n */\nexport function createToastManager() {\n const listeners = [];\n function emit(data) {\n listeners.forEach(listener => listener(data));\n }\n return {\n // This should be private aside from ToastProvider needing to access it.\n // https://x.com/drosenwasser/status/1816947740032872664\n ' subscribe': function subscribe(listener) {\n listeners.push(listener);\n return () => {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n };\n },\n add(options) {\n const id = options.id || generateId('toast');\n const toastToAdd = {\n ...options,\n id,\n transitionStatus: 'starting'\n };\n emit({\n action: 'add',\n options: toastToAdd\n });\n return id;\n },\n close(id) {\n emit({\n action: 'close',\n options: {\n id\n }\n });\n },\n update(id, updates) {\n emit({\n action: 'update',\n options: {\n ...updates,\n id\n }\n });\n },\n promise(promiseValue, options) {\n let handledPromise = promiseValue;\n emit({\n action: 'promise',\n options: {\n ...options,\n promise: promiseValue,\n setPromise(promise) {\n handledPromise = promise;\n }\n }\n });\n return handledPromise;\n }\n };\n}","import { cva, VariantProps } from 'class-variance-authority'\n\nexport const toastStyles = cva(\n [\n 'gap-lg p-md flex w-max !w-[min(400px,calc(100vw-2rem))] flex-col rounded-lg',\n 'absolute right-0 bottom-0 left-auto mr-0',\n 'bg-clip-padding shadow-md select-none',\n 'focus-visible:ring-focus focus-visible:ring-2 focus-visible:outline-none',\n 'z-[calc(1000-var(--toast-index))]',\n \"after:absolute after:bottom-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']\",\n // Stack effect while not focused\n '[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+calc(min(var(--toast-index),10)*-16px)))_scale(calc(max(0,1-(var(--toast-index)*0.1))))]',\n // Scale and translate\n 'ease-standard [transition-property:opacity,transform]',\n 'duration-400',\n // Present when the toast is animating in.\n 'data-[starting-style]:[transform:translateY(150%)]',\n // Expanded: Present when the toast is expanded in the viewport.\n 'data-[expanded]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y)))]',\n // Present when the toast is animating out.\n 'data-[ending-style]:duration-250',\n 'data-[ending-style]:opacity-0',\n 'data-[ending-style]:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]',\n 'data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n 'data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n // Limited: Present when the toast was removed due to exceeding the limit.\n 'data-[limited]:opacity-0',\n ],\n {\n variants: {\n design: {\n filled: '',\n tinted: '',\n },\n intent: {\n success: '',\n alert: '',\n error: '',\n info: '',\n neutral: '',\n main: '',\n basic: '',\n support: '',\n accent: '',\n surface: '',\n surfaceInverse: '',\n },\n },\n compoundVariants: [\n // Filled variants\n {\n design: 'filled',\n intent: 'success',\n class: ['bg-success text-on-success'],\n },\n {\n design: 'filled',\n intent: 'alert',\n class: ['bg-alert text-on-alert'],\n },\n {\n design: 'filled',\n intent: 'error',\n class: ['bg-error text-on-error'],\n },\n {\n design: 'filled',\n intent: 'info',\n class: ['bg-info text-on-info'],\n },\n {\n design: 'filled',\n intent: 'neutral',\n class: ['bg-neutral text-on-neutral'],\n },\n {\n design: 'filled',\n intent: 'main',\n class: ['bg-main text-on-main'],\n },\n {\n design: 'filled',\n intent: 'basic',\n class: ['bg-basic text-on-basic'],\n },\n {\n design: 'filled',\n intent: 'support',\n class: ['bg-support text-on-support'],\n },\n {\n design: 'filled',\n intent: 'accent',\n class: ['bg-accent text-on-accent'],\n },\n {\n design: 'filled',\n intent: 'surface',\n class: ['bg-surface text-on-surface'],\n },\n {\n design: 'filled',\n intent: 'surfaceInverse',\n class: ['bg-surface-inverse text-on-surface-inverse'],\n },\n\n // Tinted variants\n {\n design: 'tinted',\n intent: 'success',\n class: ['bg-success-container text-on-success-container'],\n },\n {\n design: 'tinted',\n intent: 'alert',\n class: ['bg-alert-container text-on-alert-container'],\n },\n {\n design: 'tinted',\n intent: 'error',\n class: ['bg-error-container text-on-error-container'],\n },\n {\n design: 'tinted',\n intent: 'info',\n class: ['bg-info-container text-on-info-container'],\n },\n {\n design: 'tinted',\n intent: 'neutral',\n class: ['bg-neutral-container text-on-neutral-container'],\n },\n {\n design: 'tinted',\n intent: 'main',\n class: ['bg-main-container text-on-main-container'],\n },\n {\n design: 'tinted',\n intent: 'basic',\n class: ['bg-basic-container text-on-basic-container'],\n },\n {\n design: 'tinted',\n intent: 'support',\n class: ['bg-support-container text-on-support-container'],\n },\n {\n design: 'tinted',\n intent: 'accent',\n class: ['bg-accent-container text-on-accent-container'],\n },\n {\n design: 'tinted',\n intent: 'surface',\n class: ['bg-surface text-on-surface'],\n },\n {\n design: 'tinted',\n intent: 'surfaceInverse',\n class: ['bg-surface-inverse text-on-surface-inverse'],\n },\n ],\n defaultVariants: {\n design: 'filled',\n intent: 'neutral',\n },\n }\n)\n\nexport const snackbarItemVariantContent = cva(\n [\n 'inline-grid items-center',\n 'col-start-1 row-start-1',\n 'pl-md pr-lg', // applying padding on the parent prevents VoiceOver on Safari from reading snackbar content 🤷\n ],\n {\n variants: {\n /**\n * Force action button displaying on a new line\n * @default false\n */\n actionOnNewline: {\n true: [\n 'grid-rows-[52px_1fr_52px]',\n 'grid-cols-[min-content_1fr_min-content]',\n \"[grid-template-areas:'icon_message_close'_'._message_.'_'action_action_action']\",\n ],\n false: [\n 'grid-cols-[min-content_1fr_min-content_min-content]',\n \"[grid-template-areas:'icon_message_action_close']\",\n ],\n },\n },\n defaultVariants: {\n actionOnNewline: false,\n },\n }\n)\n\nexport type ToastVariantProps = VariantProps<typeof toastStyles>\nexport type SnackbarItemVariantContentProps = VariantProps<typeof snackbarItemVariantContent>\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport { Button, ButtonProps } from '@spark-ui/components/button'\nimport { Icon } from '@spark-ui/components/icon'\nimport { IconButton } from '@spark-ui/components/icon-button'\nimport { Close } from '@spark-ui/icons/Close'\nimport { cx } from 'class-variance-authority'\n\nimport { toastStyles } from './Toast.styles'\nimport type { ToastData, ToastDesign, ToastIntent, ToastObject } from './types'\n\nfunction getButtonIntent(intent?: ToastIntent): ButtonProps['intent'] {\n if (intent === 'surfaceInverse') return 'surface'\n if (intent === 'surface') return 'surfaceInverse'\n if (intent === 'error') return 'danger'\n\n return intent as ButtonProps['intent']\n}\n\nfunction getCloseButtonIntent(intent?: ToastIntent): ButtonProps['intent'] {\n if (intent === 'surfaceInverse') return 'surfaceInverse'\n if (intent === 'surface') return 'surface'\n if (intent === 'error') return 'danger'\n\n return intent as ButtonProps['intent']\n}\n\nconst getActionProps = (\n action: ToastData['action'],\n { toastDesign, toastIntent }: { toastDesign?: ToastDesign; toastIntent?: ToastIntent }\n): ButtonProps => {\n if (!action) return {}\n\n const { design, intent, className, onClick, ...rest } = action\n\n return {\n design: design ?? toastDesign,\n intent: intent ?? getButtonIntent(toastIntent),\n className: cx('ml-auto', className),\n onClick,\n ...rest,\n }\n}\n\nconst getToastRootProps = (toast: ToastObject, design: ToastDesign, intent: ToastIntent) => ({\n key: toast.id,\n swipeDirection: ['down', 'right'] as ['down', 'right'],\n toast,\n className: cx(toastStyles({ design, intent })),\n style: {\n ['--gap' as string]: 'var(--spacing-md)',\n ['--offset-y' as string]:\n 'calc(var(--toast-offset-y) * -1 + (var(--toast-index) * var(--gap) * -1) + var(--toast-swipe-movement-y))',\n },\n})\n\nexport function Toast({ toast }: { toast: ToastObject }) {\n const {\n icon: ToastIcon,\n intent = 'neutral',\n design = 'filled',\n action,\n isClosable,\n closeLabel = 'Close',\n compact = false,\n } = toast.data ?? {}\n\n const ActionButton = action?.close ? BaseToast.Close : BaseToast.Action\n const actionProps = getActionProps(action, { toastDesign: design, toastIntent: intent })\n const rootProps = getToastRootProps(toast, design, intent)\n\n const getCloseButton = (className?: string) => {\n if (!isClosable) return null\n\n return (\n <BaseToast.Close\n className={className}\n render={\n <IconButton\n aria-label={closeLabel}\n design={design}\n intent={getCloseButtonIntent(intent)}\n size=\"md\"\n />\n }\n >\n <Icon>\n <Close />\n </Icon>\n </BaseToast.Close>\n )\n }\n\n const renderTitle = () => {\n // Check ToastData first for JSX, then fallback to toast.title (string)\n const title = toast.data?.title ?? toast.title\n const hasDescription = !!(toast.data?.description ?? toast.description)\n\n if (typeof title !== 'string' && title !== undefined) {\n return (\n <BaseToast.Title\n className={hasDescription ? 'text-headline-2' : 'text-body-1'}\n render={<div />}\n >\n {title}\n </BaseToast.Title>\n )\n }\n\n return <BaseToast.Title className={hasDescription ? 'text-headline-2' : 'text-body-1'} />\n }\n\n const renderDescription = () => {\n // Check ToastData first for JSX, then fallback to toast.description (string)\n const description = toast.data?.description ?? toast.description\n\n if (!description) return null\n\n if (typeof description !== 'string') {\n return (\n <BaseToast.Description className=\"text-body-1\" render={<div />}>\n {description}\n </BaseToast.Description>\n )\n }\n\n return <BaseToast.Description className=\"text-body-1\" />\n }\n\n return (\n <BaseToast.Root {...rootProps}>\n <div className={cx('flex', compact ? 'gap-lg items-center' : 'gap-md flex-col')}>\n <div className=\"gap-lg p-md flex grow items-center\">\n {/* Icon */}\n {ToastIcon && <Icon size=\"md\">{ToastIcon}</Icon>}\n {/* Title and description */}\n <div\n className={cx(\n 'gap-sm flex flex-col',\n compact && 'flex-1',\n !compact && isClosable && 'pr-3xl'\n )}\n >\n {renderTitle()}\n {renderDescription()}\n </div>\n </div>\n\n <div className={cx('flex')}>\n {/* Action button */}\n {action && (\n <ActionButton render={<Button {...actionProps} />}>{action.label}</ActionButton>\n )}\n {/* Close button - compact layout only */}\n {compact && getCloseButton()}\n </div>\n\n {/* Close button - default layout only */}\n {!compact && getCloseButton('top-md right-md absolute')}\n </div>\n </BaseToast.Root>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport * as React from 'react'\n\nimport type { UseToastManagerReturnValue } from './types'\n\nexport function useToastManager(): UseToastManagerReturnValue {\n const baseToastManager = BaseToast.useToastManager()\n\n const closeAll = React.useCallback((): void => {\n baseToastManager.toasts.forEach(({ id }) => baseToastManager.close(id))\n }, [baseToastManager])\n\n return {\n ...baseToastManager,\n closeAll,\n } as UseToastManagerReturnValue\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport { Slot } from '@spark-ui/components/slot'\nimport { cx } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { Toast } from './Toast'\nimport type { ToastData, ToastObject } from './types'\nimport { useToastManager } from './useToastManager'\n\nexport * from './types'\n\nfunction ToastList() {\n const { toasts } = useToastManager()\n\n return toasts.map(toast => <Toast key={toast.id} toast={toast} />)\n}\n\ninterface ToastProviderProps extends React.ComponentProps<typeof BaseToast.Provider> {\n children: React.ReactNode\n}\n\nexport function ToastProvider({ children, limit = 3, ...props }: ToastProviderProps) {\n return (\n <BaseToast.Provider limit={limit} {...props}>\n <BaseToast.Portal>\n <BaseToast.Viewport\n className={cx(\n 'z-toast right-lg bottom-lg text-on-surfa- fixed top-auto mx-auto flex w-fit flex-col items-end'\n )}\n >\n <ToastList />\n </BaseToast.Viewport>\n </BaseToast.Portal>\n {children}\n </BaseToast.Provider>\n )\n}\n\ninterface ToastTriggerProps\n extends Omit<React.ComponentPropsWithRef<'button'>, 'title'>,\n Pick<ToastObject, 'priority'>,\n Pick<ToastData, 'design' | 'intent' | 'icon' | 'isClosable' | 'action' | 'compact'> {\n children: React.ReactNode\n asChild?: boolean\n title: string | React.ReactNode\n description?: string | React.ReactNode\n timeout?: number\n}\n\nexport function ToastTrigger({\n children,\n onClick,\n asChild = false,\n title,\n description,\n timeout = 5000,\n design = 'filled',\n intent = 'neutral',\n isClosable = true,\n icon,\n action,\n compact,\n priority = 'low',\n}: ToastTriggerProps) {\n const toastManager = useToastManager()\n\n const Component = asChild ? Slot : 'button'\n\n function createToast(e: React.MouseEvent<HTMLButtonElement>) {\n onClick?.(e)\n toastManager.add({\n title,\n description,\n timeout,\n priority,\n data: {\n design,\n intent,\n isClosable,\n ...(icon && { icon }),\n action,\n ...(compact !== undefined && { compact }),\n },\n })\n }\n\n return (\n <Component {...(!asChild && { type: 'button' })} onClick={createToast}>\n {children}\n </Component>\n )\n}\n\nexport type ToastManager = ReturnType<typeof BaseToast.createToastManager>\n\nexport const createToastManager: () => ToastManager = BaseToast.createToastManager\n\nexport { useToastManager }\n"],"names":["counter","generateId","prefix","ToastContext","React","useToastContext","context","_formatErrorMessage","resolvePromiseOptions","options","result","resolvedOptions","ToastProvider","props","children","timeout","limit","toastManager","toasts","setToasts","hovering","setHovering","focused","setFocused","prevFocusElement","setPrevFocusElement","expanded","timersRef","viewportRef","windowFocusedRef","isPausedRef","handleFocusManagement","toastId","activeEl","activeElement","ownerDocument","contains","isFocusVisible","currentIndex","toast","nextToast","index","pauseTimers","useStableCallback","timer","elapsed","remaining","resumeTimers","id","Timeout","close","prevToasts","toastsWithEnding","activeToasts","t","isActiveToastLimited","remove","prev","scheduleTimer","delay","callback","start","shouldStartActive","currentTimeout","add","toastToAdd","updatedToasts","excessCount","oldestActiveToasts","old","duration","update","updates","promise","promiseValue","loadingOptions","handledPromise","successOptions","successTimeout","error","errorOptions","errorTimeout","action","contextValue","_jsx","ToastViewportContext","ToastViewportCssVars","ToastViewport","componentProps","forwardedRef","render","className","elementProps","handlingFocusGuardRef","markedReadyForMouseLeaveRef","numToasts","frontmostHeight","hasTransitioningToasts","handleGlobalKeyDown","event","win","ownerWindow","handleWindowBlur","handleWindowFocus","target","getTarget","viewportNode","doc","handlePointerDown","handleFocusGuard","handleKeyDown","handleMouseEnter","handleMouseLeave","handleFocus","handleBlur","defaultProps","state","element","useRenderElement","_jsxs","FocusGuard","highPriorityToasts","visuallyHidden","ToastRootContext","useToastRootContext","ToastRootCssVars","stateAttributesMapping","transitionStatusMapping","value","SWIPE_THRESHOLD","REVERSE_CANCEL_THRESHOLD","OPPOSITE_DIRECTION_DAMPING_FACTOR","MIN_DRAG_THRESHOLD","getDisplacement","direction","deltaX","deltaY","getElementTransform","transform","translateX","translateY","scale","matrix","values","ToastRoot","swipeDirection","isAnchored","swipeDirections","swipeEnabled","currentSwipeDirection","setCurrentSwipeDirection","isSwiping","setIsSwiping","isRealSwipe","setIsRealSwipe","dragDismissed","setDragDismissed","dragOffset","setDragOffset","initialTransform","setInitialTransform","titleId","setTitleId","descriptionId","setDescriptionId","lockedDirection","setLockedDirection","rootRef","dragStartPosRef","initialTransformRef","intendedSwipeDirectionRef","maxSwipeDisplacementRef","cancelledSwipeRef","swipeCancelBaselineRef","isFirstPointerMoveRef","domIndex","visibleIndex","offsetY","acc","useOpenChangeComplete","recalculateHeight","flushSync","previousHeight","height","ReactDOM","useIsoLayoutEffect","applyDirectionalDamping","newDeltaX","newDeltaY","handlePointerMove","clientY","clientX","movementX","movementY","cancelDeltaY","cancelDeltaX","hasHorizontal","hasVertical","absX","absY","candidate","currentDisplacement","dampedDelta","newOffsetX","newOffsetY","handlePointerUp","shouldClose","dismissDirection","preventDefaultTouchStart","getDragStyles","isHighPriority","inertValue","toastRoot","ToastDescription","idProp","childrenProp","shouldRender","useId","ToastTitle","ToastClose","disabled","nativeButton","hasFocus","setHasFocus","getButtonProps","buttonRef","useButton","ToastAction","computedChildren","FloatingPortalLite","container","portalNode","portalSubtree","useFloatingPortalNode","ToastPortal","useToastManager","createToastManager","listeners","emit","data","listener","toastStyles","cva","getButtonIntent","intent","getCloseButtonIntent","getActionProps","toastDesign","toastIntent","design","onClick","rest","cx","getToastRootProps","Toast","ToastIcon","isClosable","closeLabel","compact","ActionButton","BaseToast.Close","BaseToast.Action","actionProps","rootProps","getCloseButton","jsx","IconButton","Icon","Close","renderTitle","title","hasDescription","BaseToast.Title","renderDescription","description","BaseToast.Description","BaseToast.Root","jsxs","Button","baseToastManager","BaseToast.useToastManager","closeAll","ToastList","BaseToast.Provider","BaseToast.Portal","BaseToast.Viewport","ToastTrigger","asChild","icon","priority","Component","Slot","createToast","e","BaseToast.createToastManager"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/toast/Toast.styles.ts","../../src/toast/Toast.tsx","../../src/toast/useToastManager.ts","../../src/toast/index.tsx"],"sourcesContent":["import { cva, VariantProps } from 'class-variance-authority'\n\nexport const toastStyles = cva(\n [\n 'gap-lg p-md flex w-max !w-[min(400px,calc(100vw-2rem))] flex-col rounded-lg',\n 'absolute right-0 bottom-0 left-auto mr-0',\n 'bg-clip-padding shadow-md select-none',\n 'focus-visible:ring-focus focus-visible:ring-2 focus-visible:outline-none',\n 'z-[calc(1000-var(--toast-index))]',\n \"after:absolute after:bottom-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']\",\n // Stack effect while not focused\n '[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+calc(min(var(--toast-index),10)*-16px)))_scale(calc(max(0,1-(var(--toast-index)*0.1))))]',\n // Scale and translate\n 'ease-standard [transition-property:opacity,transform]',\n 'duration-400',\n // Present when the toast is animating in.\n 'data-[starting-style]:[transform:translateY(150%)]',\n // Expanded: Present when the toast is expanded in the viewport.\n 'data-[expanded]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y)))]',\n // Present when the toast is animating out.\n 'data-[ending-style]:duration-250',\n 'data-[ending-style]:opacity-0',\n 'data-[ending-style]:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]',\n 'data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n 'data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]',\n // Limited: Present when the toast was removed due to exceeding the limit.\n 'data-[limited]:opacity-0',\n ],\n {\n variants: {\n design: {\n filled: '',\n tinted: '',\n },\n intent: {\n success: '',\n alert: '',\n error: '',\n info: '',\n neutral: '',\n main: '',\n basic: '',\n support: '',\n accent: '',\n surface: '',\n surfaceInverse: '',\n },\n },\n compoundVariants: [\n // Filled variants\n {\n design: 'filled',\n intent: 'success',\n class: ['bg-success text-on-success'],\n },\n {\n design: 'filled',\n intent: 'alert',\n class: ['bg-alert text-on-alert'],\n },\n {\n design: 'filled',\n intent: 'error',\n class: ['bg-error text-on-error'],\n },\n {\n design: 'filled',\n intent: 'info',\n class: ['bg-info text-on-info'],\n },\n {\n design: 'filled',\n intent: 'neutral',\n class: ['bg-neutral text-on-neutral'],\n },\n {\n design: 'filled',\n intent: 'main',\n class: ['bg-main text-on-main'],\n },\n {\n design: 'filled',\n intent: 'basic',\n class: ['bg-basic text-on-basic'],\n },\n {\n design: 'filled',\n intent: 'support',\n class: ['bg-support text-on-support'],\n },\n {\n design: 'filled',\n intent: 'accent',\n class: ['bg-accent text-on-accent'],\n },\n {\n design: 'filled',\n intent: 'surface',\n class: ['bg-surface text-on-surface'],\n },\n {\n design: 'filled',\n intent: 'surfaceInverse',\n class: ['bg-surface-inverse text-on-surface-inverse'],\n },\n\n // Tinted variants\n {\n design: 'tinted',\n intent: 'success',\n class: ['bg-success-container text-on-success-container'],\n },\n {\n design: 'tinted',\n intent: 'alert',\n class: ['bg-alert-container text-on-alert-container'],\n },\n {\n design: 'tinted',\n intent: 'error',\n class: ['bg-error-container text-on-error-container'],\n },\n {\n design: 'tinted',\n intent: 'info',\n class: ['bg-info-container text-on-info-container'],\n },\n {\n design: 'tinted',\n intent: 'neutral',\n class: ['bg-neutral-container text-on-neutral-container'],\n },\n {\n design: 'tinted',\n intent: 'main',\n class: ['bg-main-container text-on-main-container'],\n },\n {\n design: 'tinted',\n intent: 'basic',\n class: ['bg-basic-container text-on-basic-container'],\n },\n {\n design: 'tinted',\n intent: 'support',\n class: ['bg-support-container text-on-support-container'],\n },\n {\n design: 'tinted',\n intent: 'accent',\n class: ['bg-accent-container text-on-accent-container'],\n },\n {\n design: 'tinted',\n intent: 'surface',\n class: ['bg-surface text-on-surface'],\n },\n {\n design: 'tinted',\n intent: 'surfaceInverse',\n class: ['bg-surface-inverse text-on-surface-inverse'],\n },\n ],\n defaultVariants: {\n design: 'filled',\n intent: 'neutral',\n },\n }\n)\n\nexport const snackbarItemVariantContent = cva(\n [\n 'inline-grid items-center',\n 'col-start-1 row-start-1',\n 'pl-md pr-lg', // applying padding on the parent prevents VoiceOver on Safari from reading snackbar content 🤷\n ],\n {\n variants: {\n /**\n * Force action button displaying on a new line\n * @default false\n */\n actionOnNewline: {\n true: [\n 'grid-rows-[52px_1fr_52px]',\n 'grid-cols-[min-content_1fr_min-content]',\n \"[grid-template-areas:'icon_message_close'_'._message_.'_'action_action_action']\",\n ],\n false: [\n 'grid-cols-[min-content_1fr_min-content_min-content]',\n \"[grid-template-areas:'icon_message_action_close']\",\n ],\n },\n },\n defaultVariants: {\n actionOnNewline: false,\n },\n }\n)\n\nexport type ToastVariantProps = VariantProps<typeof toastStyles>\nexport type SnackbarItemVariantContentProps = VariantProps<typeof snackbarItemVariantContent>\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport { Button, ButtonProps } from '@spark-ui/components/button'\nimport { Icon } from '@spark-ui/components/icon'\nimport { IconButton } from '@spark-ui/components/icon-button'\nimport { Close } from '@spark-ui/icons/Close'\nimport { cx } from 'class-variance-authority'\n\nimport { toastStyles } from './Toast.styles'\nimport type { ToastData, ToastDesign, ToastIntent, ToastObject } from './types'\n\nfunction getButtonIntent(intent?: ToastIntent): ButtonProps['intent'] {\n if (intent === 'surfaceInverse') return 'surface'\n if (intent === 'surface') return 'surfaceInverse'\n if (intent === 'error') return 'danger'\n\n return intent as ButtonProps['intent']\n}\n\nfunction getCloseButtonIntent(intent?: ToastIntent): ButtonProps['intent'] {\n if (intent === 'surfaceInverse') return 'surfaceInverse'\n if (intent === 'surface') return 'surface'\n if (intent === 'error') return 'danger'\n\n return intent as ButtonProps['intent']\n}\n\nconst getActionProps = (\n action: ToastData['action'],\n { toastDesign, toastIntent }: { toastDesign?: ToastDesign; toastIntent?: ToastIntent }\n): ButtonProps => {\n if (!action) return {}\n\n const { design, intent, className, onClick, ...rest } = action\n\n return {\n design: design ?? toastDesign,\n intent: intent ?? getButtonIntent(toastIntent),\n className: cx('ml-auto', className),\n onClick,\n ...rest,\n }\n}\n\nconst getToastRootProps = (toast: ToastObject, design: ToastDesign, intent: ToastIntent) => ({\n key: toast.id,\n swipeDirection: ['down', 'right'] as ['down', 'right'],\n toast,\n className: cx(toastStyles({ design, intent })),\n style: {\n ['--gap' as string]: 'var(--spacing-md)',\n ['--offset-y' as string]:\n 'calc(var(--toast-offset-y) * -1 + (var(--toast-index) * var(--gap) * -1) + var(--toast-swipe-movement-y))',\n },\n})\n\nexport function Toast({ toast }: { toast: ToastObject }) {\n const {\n icon: ToastIcon,\n intent = 'neutral',\n design = 'filled',\n action,\n isClosable,\n closeLabel = 'Close',\n compact = false,\n } = toast.data ?? {}\n\n const ActionButton = action?.close ? BaseToast.Close : BaseToast.Action\n const actionProps = getActionProps(action, { toastDesign: design, toastIntent: intent })\n const rootProps = getToastRootProps(toast, design, intent)\n\n const getCloseButton = (className?: string) => {\n if (!isClosable) return null\n\n return (\n <BaseToast.Close\n className={className}\n render={\n <IconButton\n aria-label={closeLabel}\n design={design}\n intent={getCloseButtonIntent(intent)}\n size=\"md\"\n />\n }\n >\n <Icon>\n <Close />\n </Icon>\n </BaseToast.Close>\n )\n }\n\n const renderTitle = () => {\n // Check ToastData first for JSX, then fallback to toast.title (string)\n const title = toast.data?.title ?? toast.title\n const hasDescription = !!(toast.data?.description ?? toast.description)\n\n if (typeof title !== 'string' && title !== undefined) {\n return (\n <BaseToast.Title\n className={hasDescription ? 'text-headline-2' : 'text-body-1'}\n render={<div />}\n >\n {title}\n </BaseToast.Title>\n )\n }\n\n return <BaseToast.Title className={hasDescription ? 'text-headline-2' : 'text-body-1'} />\n }\n\n const renderDescription = () => {\n // Check ToastData first for JSX, then fallback to toast.description (string)\n const description = toast.data?.description ?? toast.description\n\n if (!description) return null\n\n if (typeof description !== 'string') {\n return (\n <BaseToast.Description className=\"text-body-1\" render={<div />}>\n {description}\n </BaseToast.Description>\n )\n }\n\n return <BaseToast.Description className=\"text-body-1\" />\n }\n\n return (\n <BaseToast.Root {...rootProps}>\n <div className={cx('flex', compact ? 'gap-lg items-center' : 'gap-md flex-col')}>\n <div className=\"gap-lg p-md flex grow items-center\">\n {/* Icon */}\n {ToastIcon && <Icon size=\"md\">{ToastIcon}</Icon>}\n {/* Title and description */}\n <div\n className={cx(\n 'gap-sm flex flex-col',\n compact && 'flex-1',\n !compact && isClosable && 'pr-3xl'\n )}\n >\n {renderTitle()}\n {renderDescription()}\n </div>\n </div>\n\n <div className={cx('flex')}>\n {/* Action button */}\n {action && (\n <ActionButton render={<Button {...actionProps} />}>{action.label}</ActionButton>\n )}\n {/* Close button - compact layout only */}\n {compact && getCloseButton()}\n </div>\n\n {/* Close button - default layout only */}\n {!compact && getCloseButton('top-md right-md absolute')}\n </div>\n </BaseToast.Root>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport * as React from 'react'\n\nimport type { UseToastManagerReturnValue } from './types'\n\nexport function useToastManager(): UseToastManagerReturnValue {\n const baseToastManager = BaseToast.useToastManager()\n\n const closeAll = React.useCallback((): void => {\n baseToastManager.toasts.forEach(({ id }) => baseToastManager.close(id))\n }, [baseToastManager])\n\n return {\n ...baseToastManager,\n closeAll,\n } as UseToastManagerReturnValue\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport { Slot } from '@spark-ui/components/slot'\nimport { cx } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { Toast } from './Toast'\nimport type { ToastData, ToastObject } from './types'\nimport { useToastManager } from './useToastManager'\n\nexport * from './types'\n\nfunction ToastList() {\n const { toasts } = useToastManager()\n\n return toasts.map(toast => <Toast key={toast.id} toast={toast} />)\n}\n\ninterface ToastProviderProps extends React.ComponentProps<typeof BaseToast.Provider> {\n children: React.ReactNode\n}\n\nexport function ToastProvider({ children, limit = 3, ...props }: ToastProviderProps) {\n return (\n <BaseToast.Provider limit={limit} {...props}>\n <BaseToast.Portal>\n <BaseToast.Viewport\n className={cx(\n 'z-toast right-lg bottom-lg text-on-surfa- fixed top-auto mx-auto flex w-fit flex-col items-end'\n )}\n >\n <ToastList />\n </BaseToast.Viewport>\n </BaseToast.Portal>\n {children}\n </BaseToast.Provider>\n )\n}\n\ninterface ToastTriggerProps\n extends Omit<React.ComponentPropsWithRef<'button'>, 'title'>,\n Pick<ToastObject, 'priority'>,\n Pick<ToastData, 'design' | 'intent' | 'icon' | 'isClosable' | 'action' | 'compact'> {\n children: React.ReactNode\n asChild?: boolean\n title: string | React.ReactNode\n description?: string | React.ReactNode\n timeout?: number\n}\n\nexport function ToastTrigger({\n children,\n onClick,\n asChild = false,\n title,\n description,\n timeout = 5000,\n design = 'filled',\n intent = 'neutral',\n isClosable = true,\n icon,\n action,\n compact,\n priority = 'low',\n}: ToastTriggerProps) {\n const toastManager = useToastManager()\n\n const Component = asChild ? Slot : 'button'\n\n function createToast(e: React.MouseEvent<HTMLButtonElement>) {\n onClick?.(e)\n toastManager.add({\n title,\n description,\n timeout,\n priority,\n data: {\n design,\n intent,\n isClosable,\n ...(icon && { icon }),\n action,\n ...(compact !== undefined && { compact }),\n },\n })\n }\n\n return (\n <Component {...(!asChild && { type: 'button' })} onClick={createToast}>\n {children}\n </Component>\n )\n}\n\nexport type ToastManager = ReturnType<typeof BaseToast.createToastManager>\n\nexport const createToastManager: () => ToastManager = BaseToast.createToastManager\n\nexport { useToastManager }\n"],"names":["toastStyles","cva","getButtonIntent","intent","getCloseButtonIntent","getActionProps","action","toastDesign","toastIntent","design","className","onClick","rest","cx","getToastRootProps","toast","Toast","ToastIcon","isClosable","closeLabel","compact","ActionButton","BaseToast","actionProps","rootProps","getCloseButton","jsx","IconButton","Icon","Close","renderTitle","title","hasDescription","renderDescription","description","jsxs","Button","useToastManager","baseToastManager","closeAll","React","id","ToastList","toasts","ToastProvider","children","limit","props","ToastTrigger","asChild","timeout","icon","priority","toastManager","Component","Slot","createToast","e","createToastManager"],"mappings":"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"}
|