@purpur/library 9.0.8 → 9.0.10
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/CHANGELOG.json +42 -0
- package/CHANGELOG.md +21 -1
- package/dist/LICENSE.txt +7 -7
- package/dist/{autocomplete-DJ3zbA0m.mjs → autocomplete-Dn503hFM.mjs} +2 -2
- package/dist/{autocomplete-DJ3zbA0m.mjs.map → autocomplete-Dn503hFM.mjs.map} +1 -1
- package/dist/{autocomplete-B_OBQM2h.js → autocomplete-Dy8YL7Mo.js} +2 -2
- package/dist/{autocomplete-B_OBQM2h.js.map → autocomplete-Dy8YL7Mo.js.map} +1 -1
- package/dist/autocomplete.cjs.js +1 -1
- package/dist/autocomplete.es.js +1 -1
- package/dist/button-Cv7NlYbv.mjs +109 -0
- package/dist/button-Cv7NlYbv.mjs.map +1 -0
- package/dist/button-Dqxdc3nC.js +2 -0
- package/dist/button-Dqxdc3nC.js.map +1 -0
- package/dist/button.cjs.js +1 -1
- package/dist/button.es.js +1 -1
- package/dist/{calendar-BSdvi_DA.js → calendar-C-F-pVCe.js} +2 -2
- package/dist/{calendar-BSdvi_DA.js.map → calendar-C-F-pVCe.js.map} +1 -1
- package/dist/{calendar-9p_aA7KY.mjs → calendar-DWpnuylk.mjs} +2 -2
- package/dist/{calendar-9p_aA7KY.mjs.map → calendar-DWpnuylk.mjs.map} +1 -1
- package/dist/calendar.cjs.js +1 -1
- package/dist/calendar.es.js +1 -1
- package/dist/components/button/src/button.d.ts +66 -3
- package/dist/components/button/src/button.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer-container.d.ts +2 -0
- package/dist/components/drawer/src/drawer-container.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer-content.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer-frame.d.ts +2 -1
- package/dist/components/drawer/src/drawer-frame.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer-handle.d.ts +2 -1
- package/dist/components/drawer/src/drawer-handle.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer-header.d.ts +2 -0
- package/dist/components/drawer/src/drawer-header.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer-scroll-area.d.ts +2 -0
- package/dist/components/drawer/src/drawer-scroll-area.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer.context.d.ts +6 -2
- package/dist/components/drawer/src/drawer.context.d.ts.map +1 -1
- package/dist/components/drawer/src/drawer.d.ts +3 -0
- package/dist/components/drawer/src/drawer.d.ts.map +1 -1
- package/dist/components/drawer/src/types.d.ts +1 -0
- package/dist/components/drawer/src/types.d.ts.map +1 -1
- package/dist/components/notification/src/notification.d.ts +2 -1
- package/dist/components/notification/src/notification.d.ts.map +1 -1
- package/dist/components-metadata.js +1 -0
- package/dist/{date-field-Ch2lM7-P.mjs → date-field-DACXrowI.mjs} +2 -2
- package/dist/{date-field-Ch2lM7-P.mjs.map → date-field-DACXrowI.mjs.map} +1 -1
- package/dist/{date-field-DTI5mQkg.js → date-field-Z3LKO4b7.js} +2 -2
- package/dist/{date-field-DTI5mQkg.js.map → date-field-Z3LKO4b7.js.map} +1 -1
- package/dist/date-field.cjs.js +1 -1
- package/dist/date-field.es.js +1 -1
- package/dist/{date-picker-Dk39IXG5.js → date-picker-5Gr_cEqA.js} +2 -2
- package/dist/{date-picker-Dk39IXG5.js.map → date-picker-5Gr_cEqA.js.map} +1 -1
- package/dist/{date-picker-Bt3IaH23.mjs → date-picker-CdVUA8NC.mjs} +4 -4
- package/dist/{date-picker-Bt3IaH23.mjs.map → date-picker-CdVUA8NC.mjs.map} +1 -1
- package/dist/date-picker.cjs.js +1 -1
- package/dist/date-picker.es.js +1 -1
- package/dist/drawer-UdK-u7IX.js +2 -0
- package/dist/drawer-UdK-u7IX.js.map +1 -0
- package/dist/drawer-Vi9H2O3N.mjs +562 -0
- package/dist/drawer-Vi9H2O3N.mjs.map +1 -0
- package/dist/drawer.cjs.js +1 -1
- package/dist/drawer.es.js +1 -1
- package/dist/{hero-banner-B5HKmkXc.mjs → hero-banner-BjwICxaJ.mjs} +2 -2
- package/dist/{hero-banner-B5HKmkXc.mjs.map → hero-banner-BjwICxaJ.mjs.map} +1 -1
- package/dist/{hero-banner-OnNSuxNT.js → hero-banner-yGRM4OlS.js} +2 -2
- package/dist/{hero-banner-OnNSuxNT.js.map → hero-banner-yGRM4OlS.js.map} +1 -1
- package/dist/hero-banner.cjs.js +1 -1
- package/dist/hero-banner.es.js +1 -1
- package/dist/illustrative-icon/assets/json/cart-checkmark-duocolor-animated.json.d.ts +1 -1
- package/dist/illustrative-icon/assets/json/cart-checkmark-offblack-animated.json.d.ts +1 -1
- package/dist/illustrative-icon/assets/json/checkmark-duocolor-animated.json.d.ts +1 -1
- package/dist/illustrative-icon/assets/json/checkmark-offblack-animated.json.d.ts +1 -1
- package/dist/illustrative-icon/assets/json/document-checkmark-duocolor-animated.json.d.ts +1 -1
- package/dist/illustrative-icon/assets/json/document-checkmark-offblack-animated.json.d.ts +1 -1
- package/dist/illustrative-icon/assets/json/support-checkmark-duocolor-animated.json.d.ts +1 -1
- package/dist/illustrative-icon/assets/json/support-checkmark-offblack-animated.json.d.ts +1 -1
- package/dist/illustrative-icon/assets/json/user-checkmark-duocolor-animated.json.d.ts +1 -1
- package/dist/illustrative-icon/assets/json/user-checkmark-offblack-animated.json.d.ts +1 -1
- package/dist/illustrative-icon/components/cart-checkmark-duocolor-animated.cjs.js +1 -1
- package/dist/illustrative-icon/components/cart-checkmark-duocolor-animated.cjs.js.map +1 -1
- package/dist/illustrative-icon/components/cart-checkmark-duocolor-animated.es.js +1 -1
- package/dist/illustrative-icon/components/cart-checkmark-offblack-animated.cjs.js +1 -1
- package/dist/illustrative-icon/components/cart-checkmark-offblack-animated.cjs.js.map +1 -1
- package/dist/illustrative-icon/components/cart-checkmark-offblack-animated.es.js +1 -1
- package/dist/illustrative-icon/components/checkmark-duocolor-animated.cjs.js +1 -1
- package/dist/illustrative-icon/components/checkmark-duocolor-animated.cjs.js.map +1 -1
- package/dist/illustrative-icon/components/checkmark-duocolor-animated.es.js +1 -1
- package/dist/illustrative-icon/components/checkmark-offblack-animated.cjs.js +1 -1
- package/dist/illustrative-icon/components/checkmark-offblack-animated.cjs.js.map +1 -1
- package/dist/illustrative-icon/components/checkmark-offblack-animated.es.js +1 -1
- package/dist/illustrative-icon/components/document-checkmark-duocolor-animated.cjs.js +2 -2
- package/dist/illustrative-icon/components/document-checkmark-duocolor-animated.es.js +2 -2
- package/dist/illustrative-icon/components/document-checkmark-offblack-animated.cjs.js +2 -2
- package/dist/illustrative-icon/components/document-checkmark-offblack-animated.es.js +2 -2
- package/dist/illustrative-icon/components/support-checkmark-duocolor-animated.cjs.js +1 -1
- package/dist/illustrative-icon/components/support-checkmark-duocolor-animated.cjs.js.map +1 -1
- package/dist/illustrative-icon/components/support-checkmark-duocolor-animated.es.js +1 -1
- package/dist/illustrative-icon/components/support-checkmark-offblack-animated.cjs.js +1 -1
- package/dist/illustrative-icon/components/support-checkmark-offblack-animated.cjs.js.map +1 -1
- package/dist/illustrative-icon/components/support-checkmark-offblack-animated.es.js +1 -1
- package/dist/illustrative-icon/components/user-checkmark-duocolor-animated.cjs.js +1 -1
- package/dist/illustrative-icon/components/user-checkmark-duocolor-animated.es.js +1 -1
- package/dist/illustrative-icon/components/user-checkmark-offblack-animated.cjs.js +1 -1
- package/dist/illustrative-icon/components/user-checkmark-offblack-animated.es.js +1 -1
- package/dist/libraries/theme/src/theme-props.d.ts +1 -0
- package/dist/libraries/theme/src/theme-props.d.ts.map +1 -1
- package/dist/libraries/tokens/dist/border/variables.d.ts +1 -0
- package/dist/libraries/tokens/dist/border/variables.dark.d.ts +1 -0
- package/dist/library.cjs.js +1 -1
- package/dist/library.es.js +465 -464
- package/dist/{modal-CQiJ98iI.js → modal-DMeRO1wE.js} +2 -2
- package/dist/{modal-CQiJ98iI.js.map → modal-DMeRO1wE.js.map} +1 -1
- package/dist/{modal-B1eJu9HN.mjs → modal-fTWvPEPW.mjs} +2 -2
- package/dist/{modal-B1eJu9HN.mjs.map → modal-fTWvPEPW.mjs.map} +1 -1
- package/dist/modal.cjs.js +1 -1
- package/dist/modal.es.js +1 -1
- package/dist/{notification-BtcM7Ndu.mjs → notification-BvoL7BIW.mjs} +60 -51
- package/dist/notification-BvoL7BIW.mjs.map +1 -0
- package/dist/notification-DE1pvk9W.js +2 -0
- package/dist/notification-DE1pvk9W.js.map +1 -0
- package/dist/{notification-banner-CbKcE7o4.mjs → notification-banner-C4gkkSlf.mjs} +2 -2
- package/dist/{notification-banner-CbKcE7o4.mjs.map → notification-banner-C4gkkSlf.mjs.map} +1 -1
- package/dist/{notification-banner-B0CUuKZn.js → notification-banner-COH7wJu2.js} +2 -2
- package/dist/{notification-banner-B0CUuKZn.js.map → notification-banner-COH7wJu2.js.map} +1 -1
- package/dist/notification-banner.cjs.js +1 -1
- package/dist/notification-banner.es.js +1 -1
- package/dist/notification.cjs.js +1 -1
- package/dist/notification.es.js +1 -1
- package/dist/{popover-D6k4-oO1.js → popover-BnUVNqSi.js} +2 -2
- package/dist/{popover-D6k4-oO1.js.map → popover-BnUVNqSi.js.map} +1 -1
- package/dist/{popover-D3b2gHm-.mjs → popover-lxTyKALA.mjs} +2 -2
- package/dist/{popover-D3b2gHm-.mjs.map → popover-lxTyKALA.mjs.map} +1 -1
- package/dist/popover.cjs.js +1 -1
- package/dist/popover.es.js +1 -1
- package/dist/purpur.css +1 -1
- package/dist/{quantity-selector-Bc-4Dnpc.js → quantity-selector-D28He6R8.js} +2 -2
- package/dist/{quantity-selector-Bc-4Dnpc.js.map → quantity-selector-D28He6R8.js.map} +1 -1
- package/dist/{quantity-selector-Djf8APeL.mjs → quantity-selector-w10wKMmT.mjs} +3 -3
- package/dist/{quantity-selector-Djf8APeL.mjs.map → quantity-selector-w10wKMmT.mjs.map} +1 -1
- package/dist/quantity-selector.cjs.js +1 -1
- package/dist/quantity-selector.es.js +1 -1
- package/dist/{search-field-0CBoxcNH.js → search-field-CNpJp3Tg.js} +2 -2
- package/dist/{search-field-0CBoxcNH.js.map → search-field-CNpJp3Tg.js.map} +1 -1
- package/dist/{search-field-aP_i6Nr0.mjs → search-field-CWqLnqdo.mjs} +3 -3
- package/dist/{search-field-aP_i6Nr0.mjs.map → search-field-CWqLnqdo.mjs.map} +1 -1
- package/dist/search-field.cjs.js +1 -1
- package/dist/search-field.es.js +1 -1
- package/dist/{stepper-CTdGj87I.mjs → stepper-B351hexi.mjs} +3 -3
- package/dist/{stepper-CTdGj87I.mjs.map → stepper-B351hexi.mjs.map} +1 -1
- package/dist/{stepper-BaoOY4Ea.js → stepper-Cb4_9D2h.js} +2 -2
- package/dist/{stepper-BaoOY4Ea.js.map → stepper-Cb4_9D2h.js.map} +1 -1
- package/dist/stepper.cjs.js +1 -1
- package/dist/stepper.es.js +1 -1
- package/dist/{table-TdOPMFoP.js → table-CJijBJsy.js} +2 -2
- package/dist/{table-TdOPMFoP.js.map → table-CJijBJsy.js.map} +1 -1
- package/dist/{table-D7qthqj_.mjs → table-YR-bpfU0.mjs} +5 -5
- package/dist/{table-D7qthqj_.mjs.map → table-YR-bpfU0.mjs.map} +1 -1
- package/dist/table.cjs.js +1 -1
- package/dist/table.es.js +1 -1
- package/dist/{text-field-9zPmL99g.mjs → text-field-BMDf8j-K.mjs} +2 -2
- package/dist/{text-field-9zPmL99g.mjs.map → text-field-BMDf8j-K.mjs.map} +1 -1
- package/dist/{text-field-CKCwxTJX.js → text-field-CiLEj0Fq.js} +2 -2
- package/dist/{text-field-CKCwxTJX.js.map → text-field-CiLEj0Fq.js.map} +1 -1
- package/dist/text-field.cjs.js +1 -1
- package/dist/text-field.es.js +1 -1
- package/dist/tokens/border/variables.css +1 -0
- package/dist/tokens/border/variables.d.ts +1 -0
- package/dist/tokens/border/variables.dark.css +1 -0
- package/dist/tokens/border/variables.dark.d.ts +1 -0
- package/dist/tokens/border/variables.dark.js +1 -0
- package/dist/tokens/border/variables.dark.json +1 -0
- package/dist/tokens/border/variables.dark.scss +1 -0
- package/dist/tokens/border/variables.js +1 -0
- package/dist/tokens/border/variables.json +1 -0
- package/dist/tokens/border/variables.scss +1 -0
- package/dist/tokens.cjs.js +1 -1
- package/dist/tokens.cjs.js.map +1 -1
- package/dist/tokens.es.js +337 -336
- package/dist/tokens.es.js.map +1 -1
- package/dist/{tooltip-BtGtu3ph.mjs → tooltip-BHsVKFJ3.mjs} +2 -2
- package/dist/{tooltip-BtGtu3ph.mjs.map → tooltip-BHsVKFJ3.mjs.map} +1 -1
- package/dist/{tooltip-eUP35j3v.js → tooltip-B_qTqtcF.js} +2 -2
- package/dist/{tooltip-eUP35j3v.js.map → tooltip-B_qTqtcF.js.map} +1 -1
- package/dist/tooltip.cjs.js +1 -1
- package/dist/tooltip.es.js +1 -1
- package/package.json +21 -21
- package/tokens/border/variables.css +1 -0
- package/tokens/border/variables.d.ts +1 -0
- package/tokens/border/variables.dark.css +1 -0
- package/tokens/border/variables.dark.d.ts +1 -0
- package/tokens/border/variables.dark.js +1 -0
- package/tokens/border/variables.dark.json +1 -0
- package/tokens/border/variables.dark.scss +1 -0
- package/tokens/border/variables.js +1 -0
- package/tokens/border/variables.json +1 -0
- package/tokens/border/variables.scss +1 -0
- package/dist/button-BxdChrq-.js +0 -2
- package/dist/button-BxdChrq-.js.map +0 -1
- package/dist/button-D-BBdNhd.mjs +0 -105
- package/dist/button-D-BBdNhd.mjs.map +0 -1
- package/dist/drawer-B6j8nfAY.mjs +0 -530
- package/dist/drawer-B6j8nfAY.mjs.map +0 -1
- package/dist/drawer-CJsLdd2x.js +0 -2
- package/dist/drawer-CJsLdd2x.js.map +0 -1
- package/dist/notification-BtcM7Ndu.mjs.map +0 -1
- package/dist/notification-Dsg3Vzfi.js +0 -2
- package/dist/notification-Dsg3Vzfi.js.map +0 -1
package/dist/date-picker.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./date-picker-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./date-picker-5Gr_cEqA.js");exports.DatePicker=e.DatePicker;
|
|
2
2
|
//# sourceMappingURL=date-picker.cjs.js.map
|
package/dist/date-picker.es.js
CHANGED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const r=require("react/jsx-runtime"),l=require("react"),x=require("./index-2cFVyGXq.js"),A=require("./bind-DeUYJ6m9.js"),O=require("./button-Dqxdc3nC.js"),H=require("./heading-drD5ugCC.js"),dr=require("./chevron-left.es-B0vPg5XM.js"),cr=require("./close.es-VL3lKi1O.js"),K=require("./visually-hidden-C2CKovZx.js"),M=require("./index-CoR7YA3H.js"),B=l.createContext(null),pr="_slideUp_9zrj7_1",_r="_slideDown_9zrj7_1",lr="_slideInRight_9zrj7_1",wr="_slideInLeft_9zrj7_1",hr="_slideOutRight_9zrj7_1",fr="_slideOutLeft_9zrj7_1",mr="_fadeIn_9zrj7_1",jr="_fadeOut_9zrj7_1",yr={"purpur-drawer-content":"_purpur-drawer-content_9zrj7_1",slideUp:pr,slideDown:_r,"purpur-drawer-content--left":"_purpur-drawer-content--left_9zrj7_21","purpur-drawer-content--right":"_purpur-drawer-content--right_9zrj7_24","purpur-drawer-content--fit-to-content":"_purpur-drawer-content--fit-to-content_9zrj7_27",slideInRight:lr,slideInLeft:wr,slideOutRight:hr,slideOutLeft:fr,"purpur-drawer-content__content-container":"_purpur-drawer-content__content-container_9zrj7_63","purpur-drawer-content__description":"_purpur-drawer-content__description_9zrj7_68","purpur-drawer-content--ai":"_purpur-drawer-content--ai_9zrj7_78","purpur-drawer-overlay":"_purpur-drawer-overlay_9zrj7_82",fadeIn:mr,fadeOut:jr},xr={"purpur-drawer-container--header":"_purpur-drawer-container--header_1csed_1","purpur-drawer-container--ai":"_purpur-drawer-container--ai_1csed_4","purpur-drawer-container--body":"_purpur-drawer-container--body_1csed_7","purpur-drawer-container--sticky":"_purpur-drawer-container--sticky_1csed_15","purpur-drawer-container--footer":"_purpur-drawer-container--footer_1csed_23"},$r=A.c.bind(xr),Y="purpur-drawer-container",S=l.forwardRef(({["data-testid"]:e="purpur-drawer-container",children:a,className:n,drawerVariant:s="default",variant:u="body",stickyFooter:p,...o},i)=>{const d=$r([Y,{[`${Y}--${u}`]:u,[`${Y}--sticky`]:p,[`${Y}--ai`]:s==="ai"},n]);return r.jsx("div",{className:d,"data-testid":e,ref:i,...o,children:a})});S.displayName="DrawerContainer";const vr={"purpur-drawer-frame":"_purpur-drawer-frame_vjt35_1","purpur-drawer-frame--ai":"_purpur-drawer-frame--ai_vjt35_11","purpur-drawer-frame--without-back-button":"_purpur-drawer-frame--without-back-button_vjt35_14","purpur-drawer-frame__header":"_purpur-drawer-frame__header_vjt35_14","purpur-drawer-frame--with-back-button":"_purpur-drawer-frame--with-back-button_vjt35_17","purpur-drawer-frame--left":"_purpur-drawer-frame--left_vjt35_21","purpur-drawer-frame--right":"_purpur-drawer-frame--right_vjt35_25","purpur-drawer-frame--sticky-footer":"_purpur-drawer-frame--sticky-footer_vjt35_36","purpur-drawer-frame__body":"_purpur-drawer-frame__body_vjt35_42","purpur-drawer-frame--fit-to-content":"_purpur-drawer-frame--fit-to-content_vjt35_46","purpur-drawer-frame__footer":"_purpur-drawer-frame__footer_vjt35_55","purpur-drawer-frame__content-container":"_purpur-drawer-frame__content-container_vjt35_58","purpur-drawer-frame__content-container--no-footer":"_purpur-drawer-frame__content-container--no-footer_vjt35_63"},gr={"purpur-drawer-handle":"_purpur-drawer-handle_lz3ca_1","purpur-drawer-handle--ai":"_purpur-drawer-handle--ai_lz3ca_22"},br=(e,a,n,s,u,p)=>({onPointerDown:t=>{e.current={y:t.clientY}},onPointerMove:t=>{if(!e.current)return;const c=t.clientY-e.current.y,w=!!a.current,j=Math.max(0,c),h=t.pointerType==="touch"?10:2,_={y:j},$={originalEvent:t,delta:_};w?(a.current=_,s($)):W(_,0)?(a.current=_,n(),t.target.setPointerCapture(t.pointerId)):Math.abs(c)>h&&(e.current=null)},onPointerUp:t=>{const c=a.current,w=t.target;if(w.hasPointerCapture(t.pointerId)&&w.releasePointerCapture(t.pointerId),a.current=null,e.current=null,c){const j=t.currentTarget,h={originalEvent:t,delta:c};W(c,0)&&c.y>200?p(h):u(),j.addEventListener("click",_=>_.preventDefault(),{once:!0})}}}),W=(e,a=0)=>Math.abs(e.y)>a,Nr=A.c.bind(gr),X="purpur-drawer-handle",G=l.forwardRef(({["data-testid"]:e="purpur-drawer-handle",className:a,onSwipeStart:n,onSwipeMove:s,onSwipeCancel:u,onSwipeEnd:p,variant:o="default",...i},d)=>{const t=Nr([X,{[`${X}--ai`]:o==="ai"},a]),c=l.useRef(null),w=l.useRef(null),{onPointerDown:j,onPointerMove:h,onPointerUp:_}=br(w,c,n,s,u,p);return r.jsx("div",{className:t,"data-testid":e,onPointerDown:j,onPointerMove:h,onPointerUp:_,ref:d,...i})});G.displayName="DrawerHandle";const Dr={"purpur-drawer-header":"_purpur-drawer-header_1iujy_1","purpur-drawer-header__row":"_purpur-drawer-header__row_1iujy_4","purpur-drawer-header__row--with-back-button":"_purpur-drawer-header__row--with-back-button_1iujy_7","purpur-drawer-header__left":"_purpur-drawer-header__left_1iujy_10","purpur-drawer-header__right":"_purpur-drawer-header__right_1iujy_13","purpur-drawer-header__close-button":"_purpur-drawer-header__close-button_1iujy_16","purpur-drawer-header__back-button--only-icon":"_purpur-drawer-header__back-button--only-icon_1iujy_27"},z=A.c.bind(Dr),g="purpur-drawer-header",J=l.forwardRef(({["data-testid"]:e="purpur-drawer-header",backButton:a,backButtonText:n,backButtonOnlyIcon:s,className:u,closeButtonAriaLabel:p,headerContent:o,onBackButtonClick:i,onCloseClick:d,title:t,variant:c="default",...w},j)=>{const h=z([g,{[`${g}--ai`]:c==="ai"},u]),_=!!(a&&n&&i),$=c==="ai",D=d?l.Fragment:x.Close;return r.jsxs("div",{className:h,"data-testid":e,ref:j,...w,children:[r.jsxs("div",{className:z([`${g}__row`,{[`${g}__row--with-back-button`]:_}]),"data-testid":`${e}-row`,children:[r.jsx("div",{className:z(`${g}__left`),children:_?r.jsxs(O.Button,{"aria-label":s?n:"",className:z([`${g}__back-button`,{[`${g}__back-button--only-icon`]:s}]),"data-testid":`${e}-back-button`,iconOnly:s,negative:$,onClick:i,size:"sm",variant:s?O.BUTTON_VARIANT.TERTIARY_PURPLE:O.BUTTON_VARIANT.TEXT,children:[r.jsx(dr.l,{size:"sm"}),!s&&n]}):o?r.jsxs(r.Fragment,{children:[o,r.jsx(K.VisuallyHidden,{asChild:!0,children:r.jsx(x.Title,{children:t})})]}):r.jsx(x.Title,{asChild:!0,children:r.jsx(H.Heading,{"data-testid":`${e}-title`,negative:$,tag:"h2",variant:H.DisplayVariant.DISPLAY10,tabIndex:-1,children:t})})}),r.jsx("div",{className:z(`${g}__right`),children:r.jsx(D,{...d?{}:{asChild:!0},children:r.jsx(O.Button,{"aria-label":p,className:z(`${g}__close-button`),iconOnly:!0,negative:$,onClick:d,size:"sm",variant:O.BUTTON_VARIANT.TERTIARY_PURPLE,children:r.jsx(cr.r,{size:"sm"})})})})]}),_&&(o?r.jsxs(r.Fragment,{children:[o,r.jsx(K.VisuallyHidden,{asChild:!0,children:r.jsx(x.Title,{children:t})})]}):r.jsx(x.Title,{asChild:!0,children:r.jsx(H.Heading,{"data-testid":`${e}-title-with-back-button`,negative:$,tag:"h2",tabIndex:-1,variant:H.DisplayVariant.DISPLAY10,children:t})}))]})});J.displayName="DrawerHeader";const zr={"purpur-drawer-scroll-area__root":"_purpur-drawer-scroll-area__root_vzgxi_1","purpur-drawer-scroll-area__root--fit-to-content":"_purpur-drawer-scroll-area__root--fit-to-content_vzgxi_4","purpur-drawer-scroll-area__viewport":"_purpur-drawer-scroll-area__viewport_vzgxi_10","purpur-drawer-scroll-area__scrollbar":"_purpur-drawer-scroll-area__scrollbar_vzgxi_14","purpur-drawer-scroll-area--ai":"_purpur-drawer-scroll-area--ai_vzgxi_25","purpur-drawer-scroll-area__thumb":"_purpur-drawer-scroll-area__thumb_vzgxi_29"},V=A.c.bind(zr),N="purpur-drawer-scroll-area",k=l.forwardRef(({["data-testid"]:e="purpur-drawer-scroll-area",children:a,className:n,drawerVariant:s="default",fitToContent:u=!1,...p},o)=>{const i=V([N,{[`${N}--ai`]:s==="ai"},n]);return r.jsx("div",{className:i,"data-testid":e,ref:o,...p,children:r.jsxs(M.Root,{className:V(`${N}__root`,{[`${N}__root--fit-to-content`]:u}),children:[r.jsx(M.Viewport,{className:V(`${N}__viewport`),children:a}),r.jsx(M.Scrollbar,{className:V(`${N}__scrollbar`),orientation:"vertical",children:r.jsx(M.Thumb,{className:V(`${N}__thumb`)})})]})})});k.displayName="DrawerScrollArea";const P=A.c.bind(vr),m="purpur-drawer-frame",Q=l.forwardRef(({["data-testid"]:e="purpur-drawer-frame",backButton:a,backButtonText:n,backButtonOnlyIcon:s,children:u,className:p,closeButtonAriaLabel:o,fitToContent:i=!1,footerContent:d,headerContent:t,onBackButtonClick:c,onCloseClick:w,onSwipeStart:j,onSwipeMove:h,onSwipeCancel:_,onSwipeEnd:$,title:D,stickyFooter:v,position:E="right",variant:f="default",...C},L)=>{const q=!!(a&&n&&c),T=f==="ai",U=P([m,{[`${m}--fit-to-content`]:i,[`${m}--sticky-footer`]:v,[`${m}--left`]:E==="left",[`${m}--right`]:E==="right",[`${m}--without-back-button`]:!q,[`${m}--with-back-button`]:q,[`${m}--ai`]:T},p]);return r.jsxs("div",{className:U,"data-testid":e,ref:L,...C,children:[r.jsx(G,{onSwipeStart:j,onSwipeMove:h,onSwipeCancel:_,onSwipeEnd:$,variant:f}),r.jsx(S,{className:P(`${m}__header`),variant:"header",stickyFooter:v,drawerVariant:f,children:r.jsx(J,{title:D,headerContent:t,backButtonOnlyIcon:s,backButton:a,backButtonText:n,closeButtonAriaLabel:o,onBackButtonClick:c,onCloseClick:w,variant:f})}),v?r.jsxs(r.Fragment,{children:[r.jsx(k,{className:P(`${m}__body`),"data-testid":`${e}-sticky-footer-scroll-area`,fitToContent:i,drawerVariant:f,children:r.jsx(S,{stickyFooter:!0,drawerVariant:f,children:u})}),d&&r.jsx(S,{className:P(`${m}__footer`),"data-testid":`${e}-sticky-footer`,variant:"footer",stickyFooter:v,drawerVariant:f,children:d})]}):r.jsx(k,{className:P(`${m}__body`),"data-testid":`${e}-scroll-area`,fitToContent:i,drawerVariant:f,children:r.jsxs("div",{className:P([`${m}__content-container`,{[`${m}__content-container--no-footer`]:!d}]),children:[r.jsx(S,{stickyFooter:v,drawerVariant:f,children:u}),d&&r.jsx(S,{"data-testid":`${e}-footer`,stickyFooter:v,variant:"footer",drawerVariant:f,children:d})]})})]})});Q.displayName="DrawerFrame";const Pr=(e,a)=>({onSwipeStart:()=>{e.current&&e.current.setAttribute("data-swipe","start")},onSwipeMove:o=>{if(!e.current)return;const{y:i}=o.delta;e.current.setAttribute("data-swipe","move"),e.current.style.setProperty("--purpur-drawer-swipe-move-y",`${i}px`)},onSwipeCancel:()=>{e.current&&(e.current.setAttribute("data-swipe","cancel"),e.current.style.removeProperty("--purpur-drawer-swipe-move-y"),e.current.style.removeProperty("--purpur-drawer-swipe-end-y"))},onSwipeEnd:o=>{if(!e.current)return;const{y:i}=o.delta;e.current.setAttribute("data-swipe","end"),e.current.style.removeProperty("--purpur-drawer-swipe-move-y"),e.current.style.setProperty("--purpur-drawer-swipe-end-y",`${i}px`),a?.(!1)}}),R=A.c.bind(yr),b="purpur-drawer-content",Z=l.forwardRef(({["data-testid"]:e="purpur-drawer-content",backButton:a=!1,backButtonText:n,backButtonOnlyIcon:s=!1,bodyText:u,children:p,className:o,closeButtonAriaLabel:i,disableCloseOnClickOutside:d=!1,fitToContent:t=!1,footerContent:c,headerContent:w,onBackButtonClick:j,onCloseClick:h,stickyFooter:_=!1,title:$,zIndex:D,position:v="right",...E},f)=>{const C=l.useContext(B),L=C?.variant??"default",q=R([b,{[`${b}--fit-to-content`]:t,[`${b}--left`]:v==="left",[`${b}--right`]:v==="right",[`${b}--ai`]:L==="ai"},o]),T=l.useRef(null),U=l.useRef(null),er=y=>{U.current=y,typeof f=="function"?f(y):f&&(f.current=y)},{onSwipeStart:tr,onSwipeMove:ar,onSwipeCancel:nr,onSwipeEnd:sr}=Pr(U,C?.onOpenChange??null),ur=y=>{if(d){y.preventDefault();return}h&&(y.preventDefault(),h())},or=y=>{h&&(y.preventDefault(),h())},ir=()=>{const y=T.current;if(y){const F=y.querySelector("h2");F&&setTimeout(()=>{F.focus()})}};return r.jsx(x.Portal,{children:r.jsx(x.Overlay,{className:R("purpur-drawer-overlay"),style:D?{zIndex:D}:void 0,"data-testid":`${e}-overlay`,children:r.jsx(x.Content,{onPointerDownOutside:ur,onEscapeKeyDown:or,onOpenAutoFocus:ir,className:q,"data-testid":e,ref:er,...!u&&{"aria-describedby":void 0},...E,children:r.jsx(Q,{backButton:a,backButtonText:n,backButtonOnlyIcon:s,closeButtonAriaLabel:i,className:R(`${b}__drawer-frame`),fitToContent:t,footerContent:c,headerContent:w,ref:T,onBackButtonClick:j,onCloseClick:h,onSwipeStart:tr,onSwipeMove:ar,onSwipeCancel:nr,onSwipeEnd:sr,stickyFooter:_,title:$,position:v,variant:L,children:u?r.jsxs("div",{className:R(`${b}__content-container`),children:[r.jsx(x.Description,{className:R(`${b}__description`),"data-testid":`${e}-description`,children:u}),r.jsx("div",{children:p})]}):p})})})})});Z.displayName="DrawerContent";const rr=l.forwardRef(({["data-testid"]:e="purpur-drawer-trigger",children:a,...n},s)=>r.jsx(x.Trigger,{asChild:!0,"data-testid":e,ref:s,...n,children:a}));rr.displayName="DrawerTrigger";const I=({["data-testid"]:e="purpur-drawer",children:a,className:n,onOpenChange:s,open:u=!1,variant:p="default",...o})=>{const[i,d]=l.useState(u),t=w=>{d(w),s?.(w)};l.useEffect(()=>{d(u)},[u]);const c={onOpenChange:t,variant:p};return r.jsx(B.Provider,{value:c,children:r.jsx("div",{className:n,"data-testid":e,...o,children:r.jsx(x.Root,{open:i,onOpenChange:t,children:a})})})};I.Trigger=rr;I.Content=Z;I.displayName="Drawer";exports.Drawer=I;
|
|
2
|
+
//# sourceMappingURL=drawer-UdK-u7IX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawer-UdK-u7IX.js","sources":["../../../components/drawer/src/drawer.context.ts","../../../components/drawer/src/drawer-container.tsx","../../../components/drawer/src/use-swipe-tracking.hook.ts","../../../components/drawer/src/drawer-handle.tsx","../../../components/drawer/src/drawer-header.tsx","../../../components/drawer/src/drawer-scroll-area.tsx","../../../components/drawer/src/drawer-frame.tsx","../../../components/drawer/src/use-swipe-to-dismiss.hook.ts","../../../components/drawer/src/drawer-content.tsx","../../../components/drawer/src/drawer-trigger.tsx","../../../components/drawer/src/drawer.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nimport { type DrawerVariant, type OpenHandlerFunction } from \"./types\";\n\nexport type DrawerContextValue = {\n onOpenChange: OpenHandlerFunction;\n variant: DrawerVariant;\n};\n\nexport const DrawerContext = createContext<DrawerContextValue | null>(null);\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-container.module.scss\";\nimport { type DrawerVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerContainerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n drawerVariant?: DrawerVariant;\n stickyFooter: boolean;\n variant?: \"header\" | \"body\" | \"footer\";\n};\n\nconst rootClassName = \"purpur-drawer-container\";\n\nexport const DrawerContainer = forwardRef<HTMLDivElement, DrawerContainerProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-container\",\n children,\n className,\n drawerVariant = \"default\",\n variant = \"body\",\n stickyFooter,\n ...props\n },\n ref\n ) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--sticky`]: stickyFooter,\n [`${rootClassName}--ai`]: drawerVariant === \"ai\",\n },\n className,\n ]);\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n {children}\n </div>\n );\n }\n);\n\nDrawerContainer.displayName = \"DrawerContainer\";\n","import type { PointerEvent, RefObject } from \"react\";\n\nimport { type SwipeEvent } from \"./types\";\n\ntype UseSwipeTracking = {\n onPointerDown(event: PointerEvent): void;\n onPointerMove(event: PointerEvent): void;\n onPointerUp(event: PointerEvent): void;\n};\n\nexport const useSwipeTracking = (\n pointerStartRef: RefObject<{ y: number } | null>,\n swipeDeltaRef: RefObject<{ y: number } | null>,\n onSwipeStart: () => void,\n onSwipeMove: (event: SwipeEvent) => void,\n onSwipeCancel: () => void,\n onSwipeEnd: (event: SwipeEvent) => void\n): UseSwipeTracking => {\n const onPointerDown = (event: PointerEvent) => {\n pointerStartRef.current = { y: event.clientY };\n };\n const onPointerMove = (event: PointerEvent) => {\n if (!pointerStartRef.current) {\n return;\n }\n const y = event.clientY - pointerStartRef.current.y;\n const hasSwipeMoveStarted = Boolean(swipeDeltaRef.current);\n const clampedY = Math.max(0, y);\n const moveStartBuffer = event.pointerType === \"touch\" ? 10 : 2;\n const delta = { y: clampedY };\n const eventDetail = { originalEvent: event, delta };\n if (hasSwipeMoveStarted) {\n swipeDeltaRef.current = delta;\n onSwipeMove(eventDetail);\n } else if (isDeltaInDirection(delta, 0)) {\n swipeDeltaRef.current = delta;\n onSwipeStart();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n } else if (Math.abs(y) > moveStartBuffer) {\n // User is swiping in wrong direction so we disable swipe gesture\n // for the current pointer down interaction\n pointerStartRef.current = null;\n }\n };\n const onPointerUp = (event: PointerEvent) => {\n const delta = swipeDeltaRef.current;\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n swipeDeltaRef.current = null;\n pointerStartRef.current = null;\n if (delta) {\n const swipeHandle = event.currentTarget;\n const eventDetail = { originalEvent: event, delta };\n if (isDeltaInDirection(delta, 0) && delta.y > 200) {\n onSwipeEnd(eventDetail);\n } else {\n onSwipeCancel();\n }\n // Prevent click event from triggering on items within the drawer when\n // pointer up is part of a swipe gesture\n swipeHandle.addEventListener(\"click\", (event) => event.preventDefault(), {\n once: true,\n });\n }\n };\n return {\n onPointerDown,\n onPointerMove,\n onPointerUp,\n };\n};\n\nconst isDeltaInDirection = (delta: { y: number }, threshold = 0) => {\n const deltaY = Math.abs(delta.y);\n return deltaY > threshold;\n};\n","import React, { forwardRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-handle.module.scss\";\nimport { type DrawerVariant, type SwipeEvent } from \"./types\";\nimport { useSwipeTracking } from \"./use-swipe-tracking.hook\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerHandleProps = Omit<BaseProps, \"children\"> & {\n onSwipeStart(): void;\n onSwipeMove(event: SwipeEvent): void;\n onSwipeCancel(): void;\n onSwipeEnd(event: SwipeEvent): void;\n variant?: DrawerVariant;\n};\n\nconst rootClassName = \"purpur-drawer-handle\";\n\nexport const DrawerHandle = forwardRef<HTMLDivElement, DrawerHandleProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-handle\",\n className,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n variant = \"default\",\n ...props\n },\n ref\n ) => {\n const classes = cx([rootClassName, { [`${rootClassName}--ai`]: variant === \"ai\" }, className]);\n const pointerStartRef = React.useRef<{ y: number } | null>(null);\n const swipeDeltaRef = React.useRef<{ y: number } | null>(null);\n const { onPointerDown, onPointerMove, onPointerUp } = useSwipeTracking(\n swipeDeltaRef,\n pointerStartRef,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd\n );\n\n return (\n <div\n className={classes}\n data-testid={dataTestId}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n ref={ref}\n {...props}\n />\n );\n }\n);\n\nDrawerHandle.displayName = \"DrawerHandle\";\n","import React, { forwardRef } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { DisplayVariant, Heading } from \"@purpur/heading\";\nimport { IconChevronLeft } from \"@purpur/icon/chevron-left\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { VisuallyHidden } from \"@purpur/visually-hidden\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-header.module.scss\";\nimport { type DrawerVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerHeaderProps = Omit<BaseProps, \"children\"> & {\n backButton: boolean;\n backButtonText?: string;\n backButtonOnlyIcon: boolean;\n closeButtonAriaLabel: string;\n headerContent?: React.ReactNode;\n onBackButtonClick?: () => void;\n onCloseClick?: () => void;\n title: string;\n variant?: DrawerVariant;\n};\n\nconst rootClassName = \"purpur-drawer-header\";\n\nexport const DrawerHeader = forwardRef<HTMLDivElement, DrawerHeaderProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-header\",\n backButton,\n backButtonText,\n backButtonOnlyIcon,\n className,\n closeButtonAriaLabel,\n headerContent,\n onBackButtonClick,\n onCloseClick,\n title,\n variant = \"default\",\n ...props\n },\n ref\n ) => {\n const classes = cx([rootClassName, { [`${rootClassName}--ai`]: variant === \"ai\" }, className]);\n const hasBackButton = !!(backButton && backButtonText && onBackButtonClick);\n const isAi = variant === \"ai\";\n\n const CloseButtonWrapper = onCloseClick ? React.Fragment : RadixDialog.Close;\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n <div\n className={cx([\n `${rootClassName}__row`,\n {\n [`${rootClassName}__row--with-back-button`]: hasBackButton,\n },\n ])}\n data-testid={`${dataTestId}-row`}\n >\n <div className={cx(`${rootClassName}__left`)}>\n {hasBackButton ? (\n <Button\n aria-label={backButtonOnlyIcon ? backButtonText : \"\"}\n className={cx([\n `${rootClassName}__back-button`,\n {\n [`${rootClassName}__back-button--only-icon`]: backButtonOnlyIcon,\n },\n ])}\n data-testid={`${dataTestId}-back-button`}\n iconOnly={backButtonOnlyIcon}\n negative={isAi}\n onClick={onBackButtonClick}\n size=\"sm\"\n variant={backButtonOnlyIcon ? BUTTON_VARIANT.TERTIARY_PURPLE : BUTTON_VARIANT.TEXT}\n >\n <IconChevronLeft size=\"sm\" />\n {!backButtonOnlyIcon && backButtonText}\n </Button>\n ) : headerContent ? (\n <>\n {headerContent}\n <VisuallyHidden asChild>\n <RadixDialog.Title>{title}</RadixDialog.Title>\n </VisuallyHidden>\n </>\n ) : (\n <RadixDialog.Title asChild>\n <Heading\n data-testid={`${dataTestId}-title`}\n negative={isAi}\n tag=\"h2\"\n variant={DisplayVariant.DISPLAY10}\n tabIndex={-1}\n >\n {title}\n </Heading>\n </RadixDialog.Title>\n )}\n </div>\n\n <div className={cx(`${rootClassName}__right`)}>\n <CloseButtonWrapper {...(onCloseClick ? {} : { asChild: true })}>\n <Button\n aria-label={closeButtonAriaLabel}\n className={cx(`${rootClassName}__close-button`)}\n iconOnly\n negative={isAi}\n onClick={onCloseClick}\n size=\"sm\"\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n >\n <IconClose size=\"sm\" />\n </Button>\n </CloseButtonWrapper>\n </div>\n </div>\n {hasBackButton &&\n (headerContent ? (\n <>\n {headerContent}\n <VisuallyHidden asChild>\n <RadixDialog.Title>{title}</RadixDialog.Title>\n </VisuallyHidden>\n </>\n ) : (\n <RadixDialog.Title asChild>\n <Heading\n data-testid={`${dataTestId}-title-with-back-button`}\n negative={isAi}\n tag=\"h2\"\n tabIndex={-1}\n variant={DisplayVariant.DISPLAY10}\n >\n {title}\n </Heading>\n </RadixDialog.Title>\n ))}\n </div>\n );\n }\n);\n\nDrawerHeader.displayName = \"DrawerHeader\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixScrollArea from \"@radix-ui/react-scroll-area\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./drawer-scroll-area.module.scss\";\nimport { type DrawerVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerScrollAreaProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n drawerVariant?: DrawerVariant;\n fitToContent?: boolean;\n};\n\nconst rootClassName = \"purpur-drawer-scroll-area\";\n\nexport const DrawerScrollArea = forwardRef<HTMLDivElement, DrawerScrollAreaProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-scroll-area\",\n children,\n className,\n drawerVariant = \"default\",\n fitToContent = false,\n ...props\n },\n ref\n ) => {\n const classes = cx([\n rootClassName,\n { [`${rootClassName}--ai`]: drawerVariant === \"ai\" },\n className,\n ]);\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n <RadixScrollArea.Root\n className={cx(`${rootClassName}__root`, {\n [`${rootClassName}__root--fit-to-content`]: fitToContent,\n })}\n >\n <RadixScrollArea.Viewport className={cx(`${rootClassName}__viewport`)}>\n {children}\n </RadixScrollArea.Viewport>\n <RadixScrollArea.Scrollbar\n className={cx(`${rootClassName}__scrollbar`)}\n orientation=\"vertical\"\n >\n <RadixScrollArea.Thumb className={cx(`${rootClassName}__thumb`)} />\n </RadixScrollArea.Scrollbar>\n </RadixScrollArea.Root>\n </div>\n );\n }\n);\n\nDrawerScrollArea.displayName = \"DrawerScrollArea\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport { DrawerContainer } from \"./drawer-container\";\nimport styles from \"./drawer-frame.module.scss\";\nimport { DrawerHandle } from \"./drawer-handle\";\nimport { DrawerHeader } from \"./drawer-header\";\nimport { DrawerScrollArea } from \"./drawer-scroll-area\";\nimport { type DrawerVariant, type Position, type SwipeEvent } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type DrawerFrameProps = Omit<BaseProps, \"children\"> & {\n backButton: boolean;\n backButtonText?: string;\n backButtonOnlyIcon: boolean;\n children: ReactNode;\n closeButtonAriaLabel: string;\n fitToContent?: boolean;\n footerContent?: ReactNode;\n headerContent?: ReactNode;\n onBackButtonClick?: () => void;\n onCloseClick?: () => void;\n onSwipeStart(): void;\n onSwipeMove(event: SwipeEvent): void;\n onSwipeCancel(): void;\n onSwipeEnd(event: SwipeEvent): void;\n stickyFooter: boolean;\n title: string;\n position?: Position;\n variant?: DrawerVariant;\n};\n\nconst rootClassName = \"purpur-drawer-frame\";\n\nexport const DrawerFrame = forwardRef<HTMLDivElement, DrawerFrameProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-frame\",\n backButton,\n backButtonText,\n backButtonOnlyIcon,\n children,\n className,\n closeButtonAriaLabel,\n fitToContent = false,\n footerContent,\n headerContent,\n onBackButtonClick,\n onCloseClick,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n title,\n stickyFooter,\n position = \"right\",\n variant = \"default\",\n ...props\n },\n ref\n ) => {\n const hasBackButton = !!(backButton && backButtonText && onBackButtonClick);\n const isAi = variant === \"ai\";\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--fit-to-content`]: fitToContent,\n [`${rootClassName}--sticky-footer`]: stickyFooter,\n [`${rootClassName}--left`]: position === \"left\",\n [`${rootClassName}--right`]: position === \"right\",\n [`${rootClassName}--without-back-button`]: !hasBackButton,\n [`${rootClassName}--with-back-button`]: hasBackButton,\n [`${rootClassName}--ai`]: isAi,\n },\n className,\n ]);\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n <DrawerHandle\n onSwipeStart={onSwipeStart}\n onSwipeMove={onSwipeMove}\n onSwipeCancel={onSwipeCancel}\n onSwipeEnd={onSwipeEnd}\n variant={variant}\n />\n <DrawerContainer\n className={cx(`${rootClassName}__header`)}\n variant=\"header\"\n stickyFooter={stickyFooter}\n drawerVariant={variant}\n >\n <DrawerHeader\n title={title}\n headerContent={headerContent}\n backButtonOnlyIcon={backButtonOnlyIcon}\n backButton={backButton}\n backButtonText={backButtonText}\n closeButtonAriaLabel={closeButtonAriaLabel}\n onBackButtonClick={onBackButtonClick}\n onCloseClick={onCloseClick}\n variant={variant}\n />\n </DrawerContainer>\n {stickyFooter ? (\n <>\n <DrawerScrollArea\n className={cx(`${rootClassName}__body`)}\n data-testid={`${dataTestId}-sticky-footer-scroll-area`}\n fitToContent={fitToContent}\n drawerVariant={variant}\n >\n <DrawerContainer stickyFooter drawerVariant={variant}>\n {children}\n </DrawerContainer>\n </DrawerScrollArea>\n {footerContent && (\n <DrawerContainer\n className={cx(`${rootClassName}__footer`)}\n data-testid={`${dataTestId}-sticky-footer`}\n variant=\"footer\"\n stickyFooter={stickyFooter}\n drawerVariant={variant}\n >\n {footerContent}\n </DrawerContainer>\n )}\n </>\n ) : (\n <DrawerScrollArea\n className={cx(`${rootClassName}__body`)}\n data-testid={`${dataTestId}-scroll-area`}\n fitToContent={fitToContent}\n drawerVariant={variant}\n >\n <div\n className={cx([\n `${rootClassName}__content-container`,\n { [`${rootClassName}__content-container--no-footer`]: !footerContent },\n ])}\n >\n <DrawerContainer stickyFooter={stickyFooter} drawerVariant={variant}>\n {children}\n </DrawerContainer>\n {footerContent && (\n <DrawerContainer\n data-testid={`${dataTestId}-footer`}\n stickyFooter={stickyFooter}\n variant=\"footer\"\n drawerVariant={variant}\n >\n {footerContent}\n </DrawerContainer>\n )}\n </div>\n </DrawerScrollArea>\n )}\n </div>\n );\n }\n);\n\nDrawerFrame.displayName = \"DrawerFrame\";\n","import type { RefObject } from \"react\";\n\nimport { type SwipeEvent } from \"./types\";\n\ntype UseSwipeToDismiss = {\n onSwipeStart(): void;\n onSwipeMove(event: SwipeEvent): void;\n onSwipeCancel(): void;\n onSwipeEnd(event: SwipeEvent): void;\n};\n\nexport const useSwipeToDismiss = <T extends HTMLElement>(\n containerRef: RefObject<T | null>,\n handleOpenChange: ((open: boolean) => void) | null\n): UseSwipeToDismiss => {\n const onSwipeStart = () => {\n if (!containerRef.current) {\n return;\n }\n containerRef.current.setAttribute(\"data-swipe\", \"start\");\n };\n const onSwipeMove = (event: SwipeEvent) => {\n if (!containerRef.current) {\n return;\n }\n const { y } = event.delta;\n containerRef.current.setAttribute(\"data-swipe\", \"move\");\n containerRef.current.style.setProperty(\"--purpur-drawer-swipe-move-y\", `${y}px`);\n };\n const onSwipeCancel = () => {\n if (!containerRef.current) {\n return;\n }\n containerRef.current.setAttribute(\"data-swipe\", \"cancel\");\n containerRef.current.style.removeProperty(\"--purpur-drawer-swipe-move-y\");\n containerRef.current.style.removeProperty(\"--purpur-drawer-swipe-end-y\");\n };\n const onSwipeEnd = (event: SwipeEvent) => {\n if (!containerRef.current) {\n return;\n }\n const { y } = event.delta;\n containerRef.current.setAttribute(\"data-swipe\", \"end\");\n containerRef.current.style.removeProperty(\"--purpur-drawer-swipe-move-y\");\n containerRef.current.style.setProperty(\"--purpur-drawer-swipe-end-y\", `${y}px`);\n handleOpenChange?.(false);\n };\n\n return {\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n };\n};\n","import React, { forwardRef, type ReactNode, useContext, useRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\nimport c from \"classnames/bind\";\n\nimport { DrawerContext } from \"./drawer.context\";\nimport styles from \"./drawer-content.module.scss\";\nimport { DrawerFrame } from \"./drawer-frame\";\nimport { type Position } from \"./types\";\nimport { useSwipeToDismiss } from \"./use-swipe-to-dismiss.hook\";\n\nconst cx = c.bind(styles);\n\nexport type WithBackButton = {\n backButton: boolean;\n backButtonText: string;\n backButtonOnlyIcon?: boolean;\n onBackButtonClick: () => void;\n};\n\nexport type WithoutBackButton = {\n backButton?: never;\n backButtonText?: never;\n backButtonOnlyIcon?: never;\n onBackButtonClick?: never;\n};\n\nexport type DrawerContentProps = Omit<BaseProps, \"children\"> & {\n bodyText?: string;\n children: ReactNode;\n closeButtonAriaLabel: string;\n disableCloseOnClickOutside?: boolean;\n /**\n * If true, the drawer height will fit to its content on small screens.\n */\n fitToContent?: boolean;\n footerContent?: ReactNode;\n headerContent?: ReactNode;\n onCloseClick?: () => void;\n stickyFooter?: boolean;\n title: string;\n zIndex?: number;\n position?: Position;\n} & (WithoutBackButton | WithBackButton);\n\nconst rootClassName = \"purpur-drawer-content\";\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-drawer-content\",\n backButton = false,\n backButtonText,\n backButtonOnlyIcon = false,\n bodyText,\n children,\n className,\n closeButtonAriaLabel,\n disableCloseOnClickOutside = false,\n fitToContent = false,\n footerContent,\n headerContent,\n onBackButtonClick,\n onCloseClick,\n stickyFooter = false,\n title,\n zIndex,\n position = \"right\",\n ...props\n },\n ref\n ) => {\n const drawerContext = useContext(DrawerContext);\n const variant = drawerContext?.variant ?? \"default\";\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--fit-to-content`]: fitToContent,\n [`${rootClassName}--left`]: position === \"left\",\n [`${rootClassName}--right`]: position === \"right\",\n [`${rootClassName}--ai`]: variant === \"ai\",\n },\n className,\n ]);\n\n const drawerFrameRef = useRef<HTMLDivElement>(null);\n const internalDrawerContentRef = useRef<HTMLDivElement>(null);\n\n const setRef = (node: HTMLDivElement | null) => {\n internalDrawerContentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n\n const { onSwipeStart, onSwipeMove, onSwipeCancel, onSwipeEnd } = useSwipeToDismiss(\n internalDrawerContentRef,\n drawerContext?.onOpenChange ?? null\n );\n\n const handlePointerDownOutside = (event: CustomEvent<{ originalEvent: PointerEvent }>) => {\n if (disableCloseOnClickOutside) {\n event.preventDefault();\n return;\n }\n\n if (onCloseClick) {\n event.preventDefault();\n onCloseClick();\n }\n };\n\n const handleEscapeKeyDown = (event: KeyboardEvent) => {\n if (onCloseClick) {\n event.preventDefault();\n onCloseClick();\n }\n };\n\n const handleInitialFocus = () => {\n const frame = drawerFrameRef.current;\n if (frame) {\n const heading = frame.querySelector(\"h2\");\n\n heading &&\n setTimeout(() => {\n heading.focus();\n });\n }\n };\n\n return (\n <RadixDialog.Portal>\n <RadixDialog.Overlay\n className={cx(\"purpur-drawer-overlay\")}\n style={zIndex ? { zIndex } : undefined}\n data-testid={`${dataTestId}-overlay`}\n >\n <RadixDialog.Content\n onPointerDownOutside={handlePointerDownOutside}\n onEscapeKeyDown={handleEscapeKeyDown}\n onOpenAutoFocus={handleInitialFocus}\n className={classes}\n data-testid={dataTestId}\n ref={setRef}\n {...(!bodyText && { [\"aria-describedby\"]: undefined })}\n {...props}\n >\n <DrawerFrame\n backButton={backButton}\n backButtonText={backButtonText}\n backButtonOnlyIcon={backButtonOnlyIcon}\n closeButtonAriaLabel={closeButtonAriaLabel}\n className={cx(`${rootClassName}__drawer-frame`)}\n fitToContent={fitToContent}\n footerContent={footerContent}\n headerContent={headerContent}\n ref={drawerFrameRef}\n onBackButtonClick={onBackButtonClick}\n onCloseClick={onCloseClick}\n onSwipeStart={onSwipeStart}\n onSwipeMove={onSwipeMove}\n onSwipeCancel={onSwipeCancel}\n onSwipeEnd={onSwipeEnd}\n stickyFooter={stickyFooter}\n title={title}\n position={position}\n variant={variant}\n >\n {bodyText ? (\n <div className={cx(`${rootClassName}__content-container`)}>\n <RadixDialog.Description\n className={cx(`${rootClassName}__description`)}\n data-testid={`${dataTestId}-description`}\n >\n {bodyText}\n </RadixDialog.Description>\n <div>{children}</div>\n </div>\n ) : (\n children\n )}\n </DrawerFrame>\n </RadixDialog.Content>\n </RadixDialog.Overlay>\n </RadixDialog.Portal>\n );\n }\n);\n\nDrawerContent.displayName = \"DrawerContent\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\n\nexport type DrawerTriggerProps = Omit<BaseProps<\"button\">, \"children\"> & {\n children: ReactNode;\n};\n\nexport const DrawerTrigger = forwardRef<HTMLButtonElement, DrawerTriggerProps>(\n ({ [\"data-testid\"]: dataTestId = \"purpur-drawer-trigger\", children, ...props }, ref) => {\n return (\n <RadixDialog.Trigger asChild data-testid={dataTestId} ref={ref} {...props}>\n {children}\n </RadixDialog.Trigger>\n );\n }\n);\n\nDrawerTrigger.displayName = \"DrawerTrigger\";\n","import React, { type ReactNode, useEffect } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport * as RadixDialog from \"@radix-ui/react-dialog\";\n\nimport { DrawerContext } from \"./drawer.context\";\nimport { DrawerContent } from \"./drawer-content\";\nimport { DrawerTrigger } from \"./drawer-trigger\";\nimport { type DrawerVariant } from \"./types\";\n\nexport type { DrawerVariant };\n\nexport type DrawerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n onOpenChange?: (open: boolean) => void;\n open: boolean;\n variant?: DrawerVariant;\n};\n\nexport type DrawerComponent<P> = React.FunctionComponent<P> & {\n Trigger: typeof DrawerTrigger;\n Content: typeof DrawerContent;\n};\n\nexport const Drawer: DrawerComponent<DrawerProps> = ({\n [\"data-testid\"]: dataTestId = \"purpur-drawer\",\n children,\n className,\n onOpenChange,\n open = false,\n variant = \"default\",\n ...props\n}: DrawerProps) => {\n const [_open, _setOpen] = React.useState(open);\n\n const handleOpenChange = (newOpen: boolean) => {\n _setOpen(newOpen);\n onOpenChange?.(newOpen);\n };\n\n useEffect(() => {\n _setOpen(open);\n }, [open]);\n\n const contextValue = { onOpenChange: handleOpenChange, variant };\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <div className={className} data-testid={dataTestId} {...props}>\n <RadixDialog.Root open={_open} onOpenChange={handleOpenChange}>\n {children}\n </RadixDialog.Root>\n </div>\n </DrawerContext.Provider>\n );\n};\n\nDrawer.Trigger = DrawerTrigger;\nDrawer.Content = DrawerContent;\nDrawer.displayName = \"Drawer\";\n"],"names":["DrawerContext","createContext","cx","c","styles","rootClassName","DrawerContainer","forwardRef","dataTestId","children","className","drawerVariant","variant","stickyFooter","props","ref","classes","jsx","useSwipeTracking","pointerStartRef","swipeDeltaRef","onSwipeStart","onSwipeMove","onSwipeCancel","onSwipeEnd","event","y","hasSwipeMoveStarted","clampedY","moveStartBuffer","delta","eventDetail","isDeltaInDirection","target","swipeHandle","threshold","DrawerHandle","React","onPointerDown","onPointerMove","onPointerUp","DrawerHeader","backButton","backButtonText","backButtonOnlyIcon","closeButtonAriaLabel","headerContent","onBackButtonClick","onCloseClick","title","hasBackButton","isAi","CloseButtonWrapper","RadixDialog.Close","jsxs","Button","BUTTON_VARIANT","IconChevronLeft","Fragment","VisuallyHidden","RadixDialog.Title","Heading","DisplayVariant","IconClose","DrawerScrollArea","fitToContent","RadixScrollArea.Root","RadixScrollArea.Viewport","RadixScrollArea.Scrollbar","RadixScrollArea.Thumb","DrawerFrame","footerContent","position","useSwipeToDismiss","containerRef","handleOpenChange","DrawerContent","bodyText","disableCloseOnClickOutside","zIndex","drawerContext","useContext","drawerFrameRef","useRef","internalDrawerContentRef","setRef","node","handlePointerDownOutside","handleEscapeKeyDown","handleInitialFocus","frame","heading","RadixDialog.Portal","RadixDialog.Overlay","RadixDialog.Content","RadixDialog.Description","DrawerTrigger","RadixDialog.Trigger","Drawer","onOpenChange","open","_open","_setOpen","newOpen","useEffect","contextValue","RadixDialog.Root"],"mappings":"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"}
|