@stanfordspezi/spezi-web-design-system
Version:
Stanford Biodesign Digital Health Spezi Web Design System
2 lines (1 loc) • 2.85 kB
JavaScript
"use strict";const s=require("react/jsx-runtime"),C=require("./index-DwV9MiDB.js"),B=require("react"),k=require("./index-Df0u7aLq.js"),y=require("./index-k79m3Yno.js"),O=require("./index-DYxWvftI.js"),I=require("./index-CHmT0J_P.js"),P=require("./index-4XkuMsix.js");function M(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const c=M(B);var b="Switch",[$,F]=k.createContextScope(b),[z,H]=$(b),R=c.forwardRef((e,r)=>{const{__scopeSwitch:t,name:n,checked:o,defaultChecked:m,required:d,disabled:a,value:u="on",onCheckedChange:w,form:i,...S}=e,[l,p]=c.useState(null),v=y.useComposedRefs(r,f=>p(f)),x=c.useRef(!1),g=l?i||!!l.closest("form"):!0,[h,E]=k.useControllableState({prop:o,defaultProp:m??!1,onChange:w,caller:b});return s.jsxs(z,{scope:t,checked:h,disabled:a,children:[s.jsx(P.Primitive.button,{type:"button",role:"switch","aria-checked":h,"aria-required":d,"data-state":q(h),"data-disabled":a?"":void 0,disabled:a,value:u,...S,ref:v,onClick:k.composeEventHandlers(e.onClick,f=>{E(T=>!T),g&&(x.current=f.isPropagationStopped(),x.current||f.stopPropagation())})}),g&&s.jsx(N,{control:l,bubbles:!x.current,name:n,value:u,checked:h,required:d,disabled:a,form:i,style:{transform:"translateX(-100%)"}})]})});R.displayName=b;var _="SwitchThumb",j=c.forwardRef((e,r)=>{const{__scopeSwitch:t,...n}=e,o=H(_,t);return s.jsx(P.Primitive.span,{"data-state":q(o.checked),"data-disabled":o.disabled?"":void 0,...n,ref:r})});j.displayName=_;var A="SwitchBubbleInput",N=c.forwardRef(({__scopeSwitch:e,control:r,checked:t,bubbles:n=!0,...o},m)=>{const d=c.useRef(null),a=y.useComposedRefs(d,m),u=O.usePrevious(t),w=I.useSize(r);return c.useEffect(()=>{const i=d.current;if(!i)return;const S=window.HTMLInputElement.prototype,p=Object.getOwnPropertyDescriptor(S,"checked").set;if(u!==t&&p){const v=new Event("click",{bubbles:n});p.call(i,t),i.dispatchEvent(v)}},[u,t,n]),s.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:t,...o,tabIndex:-1,ref:a,style:{...o.style,...w,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});N.displayName=A;function q(e){return e?"checked":"unchecked"}var D=R,U=j;const L=({className:e,...r})=>s.jsx(D,{className:C.cn("focus-ring data-[state=checked]:bg-primary data-[state=unchecked]:bg-input peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-xs transition disabled:cursor-not-allowed disabled:opacity-50",e),...r,children:s.jsx(U,{className:C.cn("bg-surface-primary pointer-events-none block size-4 rounded-full shadow-lg ring-0 transition data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})});exports.Switch=L;