UNPKG

@stanfordspezi/spezi-web-design-system

Version:

Stanford Biodesign Digital Health Spezi Web Design System

2 lines (1 loc) 4.2 kB
"use strict";const i=require("react/jsx-runtime"),A=require("./index-DwV9MiDB.js"),F=require("react"),S=require("./index-k79m3Yno.js"),_=require("./index-Df0u7aLq.js"),H=require("./index-DYxWvftI.js"),L=require("./index-CHmT0J_P.js"),G=require("./index-CldYjOhY.js"),E=require("./index-4XkuMsix.js");function K(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const c=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,c.get?c:{enumerable:!0,get:()=>e[n]})}}return r.default=e,Object.freeze(r)}const d=K(F);var R="Checkbox",[U,W]=_.createContextScope(R),[X,j]=U(R);function J(e){const{__scopeCheckbox:r,checked:n,children:c,defaultChecked:s,disabled:t,form:p,name:b,onCheckedChange:u,required:k,value:C="on",internal_do_not_use_render:l}=e,[f,v]=_.useControllableState({prop:n,defaultProp:s??!1,onChange:u,caller:R}),[x,m]=d.useState(null),[g,o]=d.useState(null),a=d.useRef(!1),y=x?!!p||!!x.closest("form"):!0,P={checked:f,disabled:t,setChecked:v,control:x,setControl:m,name:b,form:p,value:C,hasConsumerStoppedPropagationRef:a,required:k,defaultChecked:h(s)?!1:s,isFormControl:y,bubbleInput:g,setBubbleInput:o};return i.jsx(X,{scope:r,...P,children:Q(l)?l(P):c})}var q="CheckboxTrigger",N=d.forwardRef(({__scopeCheckbox:e,onKeyDown:r,onClick:n,...c},s)=>{const{control:t,value:p,disabled:b,checked:u,required:k,setControl:C,setChecked:l,hasConsumerStoppedPropagationRef:f,isFormControl:v,bubbleInput:x}=j(q,e),m=S.useComposedRefs(s,C),g=d.useRef(u);return d.useEffect(()=>{const o=t==null?void 0:t.form;if(o){const a=()=>l(g.current);return o.addEventListener("reset",a),()=>o.removeEventListener("reset",a)}},[t,l]),i.jsx(E.Primitive.button,{type:"button",role:"checkbox","aria-checked":h(u)?"mixed":u,"aria-required":k,"data-state":D(u),"data-disabled":b?"":void 0,disabled:b,value:p,...c,ref:m,onKeyDown:_.composeEventHandlers(r,o=>{o.key==="Enter"&&o.preventDefault()}),onClick:_.composeEventHandlers(n,o=>{l(a=>h(a)?!0:!a),x&&v&&(f.current=o.isPropagationStopped(),f.current||o.stopPropagation())})})});N.displayName=q;var w=d.forwardRef((e,r)=>{const{__scopeCheckbox:n,name:c,checked:s,defaultChecked:t,required:p,disabled:b,value:u,onCheckedChange:k,form:C,...l}=e;return i.jsx(J,{__scopeCheckbox:n,checked:s,defaultChecked:t,disabled:b,required:p,onCheckedChange:k,name:c,form:C,value:u,internal_do_not_use_render:({isFormControl:f})=>i.jsxs(i.Fragment,{children:[i.jsx(N,{...l,ref:r,__scopeCheckbox:n}),f&&i.jsx(T,{__scopeCheckbox:n})]})})});w.displayName=R;var O="CheckboxIndicator",B=d.forwardRef((e,r)=>{const{__scopeCheckbox:n,forceMount:c,...s}=e,t=j(O,n);return i.jsx(G.Presence,{present:c||h(t.checked)||t.checked===!0,children:i.jsx(E.Primitive.span,{"data-state":D(t.checked),"data-disabled":t.disabled?"":void 0,...s,ref:r,style:{pointerEvents:"none",...e.style}})})});B.displayName=O;var M="CheckboxBubbleInput",T=d.forwardRef(({__scopeCheckbox:e,...r},n)=>{const{control:c,hasConsumerStoppedPropagationRef:s,checked:t,defaultChecked:p,required:b,disabled:u,name:k,value:C,form:l,bubbleInput:f,setBubbleInput:v}=j(M,e),x=S.useComposedRefs(n,v),m=H.usePrevious(t),g=L.useSize(c);d.useEffect(()=>{const a=f;if(!a)return;const y=window.HTMLInputElement.prototype,I=Object.getOwnPropertyDescriptor(y,"checked").set,$=!s.current;if(m!==t&&I){const z=new Event("click",{bubbles:$});a.indeterminate=h(t),I.call(a,h(t)?!1:t),a.dispatchEvent(z)}},[f,m,t,s]);const o=d.useRef(h(t)?!1:t);return i.jsx(E.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:p??o.current,required:b,disabled:u,name:k,value:C,form:l,...r,tabIndex:-1,ref:x,style:{...r.style,...g,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});T.displayName=M;function Q(e){return typeof e=="function"}function h(e){return e==="indeterminate"}function D(e){return h(e)?"indeterminate":e?"checked":"unchecked"}const V=({className:e,...r})=>i.jsx(w,{className:A.cn("focus-ring flex-center border-input peer size-4 shrink-0 rounded-sm border disabled:cursor-not-allowed disabled:opacity-50",e),...r,children:i.jsx(B,{className:"flex-center bg-primary size-2.5 rounded-xs"})});exports.Checkbox=V;