@stanfordspezi/spezi-web-design-system
Version:
Stanford Biodesign Digital Health Spezi Web Design System
2 lines (1 loc) • 2.73 kB
JavaScript
;const c=require("react/jsx-runtime"),x=require("./index-DwV9MiDB.js"),N=require("react"),w=require("./index-CLdeiAAB.js"),O=require("./index-UhBwhhTY.js"),T=require("./index-DYxWvftI.js"),M=require("./index-DZvjbfOs.js"),g=require("./index-14SsMENa.js");function $(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 a=$(N);var S="Switch",[z,L]=w.createContextScope(S),[H,I]=z(S),C=a.forwardRef((e,r)=>{const{__scopeSwitch:t,name:n,checked:o,defaultChecked:l,required:i,disabled:s,value:d="on",onCheckedChange:b,form:m,...p}=e,[u,R]=a.useState(null),q=O.useComposedRefs(r,f=>R(f)),k=a.useRef(!1),v=u?m||!!u.closest("form"):!0,[h=!1,_]=w.useControllableState({prop:o,defaultProp:l,onChange:b});return c.jsxs(H,{scope:t,checked:h,disabled:s,children:[c.jsx(g.Primitive.button,{type:"button",role:"switch","aria-checked":h,"aria-required":i,"data-state":j(h),"data-disabled":s?"":void 0,disabled:s,value:d,...p,ref:q,onClick:w.composeEventHandlers(e.onClick,f=>{_(E=>!E),v&&(k.current=f.isPropagationStopped(),k.current||f.stopPropagation())})}),v&&c.jsx(B,{control:u,bubbles:!k.current,name:n,value:d,checked:h,required:i,disabled:s,form:m,style:{transform:"translateX(-100%)"}})]})});C.displayName=S;var y="SwitchThumb",P=a.forwardRef((e,r)=>{const{__scopeSwitch:t,...n}=e,o=I(y,t);return c.jsx(g.Primitive.span,{"data-state":j(o.checked),"data-disabled":o.disabled?"":void 0,...n,ref:r})});P.displayName=y;var B=e=>{const{control:r,checked:t,bubbles:n=!0,...o}=e,l=a.useRef(null),i=T.usePrevious(t),s=M.useSize(r);return a.useEffect(()=>{const d=l.current,b=window.HTMLInputElement.prototype,p=Object.getOwnPropertyDescriptor(b,"checked").set;if(i!==t&&p){const u=new Event("click",{bubbles:n});p.call(d,t),d.dispatchEvent(u)}},[i,t,n]),c.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:t,...o,tabIndex:-1,ref:l,style:{...e.style,...s,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function j(e){return e?"checked":"unchecked"}var D=C,A=P;const F=({className:e,...r})=>c.jsx(D,{className:x.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:c.jsx(A,{className:x.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=F;