@snagset/server 0.1.11 → 0.1.13
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/app.js +18 -1
- package/dist/app.js.map +1 -1
- package/dist/db/migrate.js +44 -0
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/migrations/0009_member_invites.sql +84 -0
- package/dist/routes/invites.js +417 -0
- package/dist/routes/invites.js.map +1 -0
- package/dist/routes/members.js +36 -68
- package/dist/routes/members.js.map +1 -1
- package/dist/routes/owner.js +5 -0
- package/dist/routes/owner.js.map +1 -1
- package/package.json +1 -1
- package/static/dashboard/assets/CompositeItem-CYCgjQYA.js +1 -0
- package/static/dashboard/assets/{ConfirmDialog-WnZ92dk2.js → ConfirmDialog-ChIOOj7I.js} +1 -1
- package/static/dashboard/assets/{CopyButton-rL26RLOJ.js → CopyButton-V7OJiMLP.js} +1 -1
- package/static/dashboard/assets/{FieldItemContext-BFJSEdB-.js → FieldItemContext-DVtdzu3C.js} +1 -1
- package/static/dashboard/assets/{InstallTag-BKIArjPk.js → InstallTag-OD-dW_hC.js} +1 -1
- package/static/dashboard/assets/{SaveState-DVHi0zeB.js → SaveState-JVgANqCr.js} +1 -1
- package/static/dashboard/assets/{_app-D2r-zfbF.js → _app-B0TJyHg-.js} +1 -1
- package/static/dashboard/assets/{_app-iK-weT5A.js → _app-Bwss1pXe.js} +12 -12
- package/static/dashboard/assets/activity-CbcgWM3L.js +1 -0
- package/static/dashboard/assets/{arrow-left-BEHXEKLy.js → arrow-left-BrmSwEeI.js} +1 -1
- package/static/dashboard/assets/{avatar-BnPBt2UW.js → avatar-CwD1_B-n.js} +1 -1
- package/static/dashboard/assets/{badge-B2rHdH8b.js → badge-DM_IoUbC.js} +1 -1
- package/static/dashboard/assets/{card-BNGTf8dq.js → card-DpmJQuox.js} +1 -1
- package/static/dashboard/assets/{check-C3gaSIDM.js → check-DNKwULUa.js} +1 -1
- package/static/dashboard/assets/{chevron-right-CLLS6JcX.js → chevron-right-ob3VZye2.js} +1 -1
- package/static/dashboard/assets/{copy-Dy7nBeu2.js → copy-CyBHfvzN.js} +1 -1
- package/static/dashboard/assets/{dialog-q6J2VL2H.js → dialog-Bys-LJLw.js} +2 -2
- package/static/dashboard/assets/{dropdown-menu-DFZrgFpI.js → dropdown-menu-Cqas_wS3.js} +2 -2
- package/static/dashboard/assets/{image-off-Bug-3iC-.js → image-off-D_65_17F.js} +1 -1
- package/static/dashboard/assets/index-Cxnlb88o.js +169 -0
- package/static/dashboard/assets/index-Ddi7bl87.css +1 -0
- package/static/dashboard/assets/invite-Cc7l9fdY.js +1 -0
- package/static/dashboard/assets/label-CwqSv8L3.js +1 -0
- package/static/dashboard/assets/{layout-grid-B3BkFR60.js → layout-grid-PTAyhqU8.js} +1 -1
- package/static/dashboard/assets/me-kMczOn0k.js +1 -0
- package/static/dashboard/assets/{parts-BTWw4Uv-.js → parts-CErghVAB.js} +1 -1
- package/static/dashboard/assets/{plus-DqdyxL8q.js → plus-BE-gOo3v.js} +1 -1
- package/static/dashboard/assets/s._site-BBRI74gv.js +1 -0
- package/static/dashboard/assets/{s._site.comments-kEGEpFR2.js → s._site.comments-CbfjF9-s.js} +3 -3
- package/static/dashboard/assets/{s._site.reviewers-C1LLoSS5.js → s._site.reviewers-BMiqVuRm.js} +1 -1
- package/static/dashboard/assets/s._site.settings-CEvRwMQt.js +1 -0
- package/static/dashboard/assets/{setup-CdZYVZmd.js → setup-CkNn_rwp.js} +1 -1
- package/static/dashboard/assets/{sign-in-CvstpETe.js → sign-in-Bz6iRxcc.js} +1 -1
- package/static/dashboard/assets/{sign-up-Cq7YvdYN.js → sign-up-QcstGuaV.js} +1 -1
- package/static/dashboard/assets/sites-DJjGT-f2.js +1 -0
- package/static/dashboard/assets/studio-mKw0u2SL.js +1 -0
- package/static/dashboard/assets/studio-qqUvuQo5.js +1 -0
- package/static/dashboard/assets/{studio.index-BTF7YIX-.js → studio.index-zjJeqf8B.js} +1 -1
- package/static/dashboard/assets/{studio.integrations-Nr_jBcXh.js → studio.integrations-C9-R6CQZ.js} +1 -1
- package/static/dashboard/assets/studio.members-BYd5gcvp.js +6 -0
- package/static/dashboard/assets/{sun-s_t6Zx3r.js → sun-DTQiNbTt.js} +1 -1
- package/static/dashboard/assets/switch-Cqqz6oQN.js +1 -0
- package/static/dashboard/assets/{table-CrWNqpP8.js → table-D_36h1Oq.js} +1 -1
- package/static/dashboard/assets/{useAriaLabelledBy-CgL3SaJd.js → useAriaLabelledBy-D-dab2TD.js} +1 -1
- package/static/dashboard/assets/{useBaseQuery-CBTINzcX.js → useBaseQuery-DmDP3Pxx.js} +1 -1
- package/static/dashboard/assets/useQuery-CKn14AcE.js +1 -0
- package/static/dashboard/assets/useRender-B_JrSXOO.js +1 -0
- package/static/dashboard/assets/{useValueChanged-B20GM2vK.js → useValueChanged--Isnj6ZH.js} +1 -1
- package/static/dashboard/assets/{users-CQwkq_Tk.js → users-CJVqlkra.js} +1 -1
- package/static/dashboard/assets/{welcome-W1YxYlGW.js → welcome-BMr4vd5V.js} +2 -2
- package/static/dashboard/assets/{you-DXZRdbGS.js → you-Bqw_r3i7.js} +1 -1
- package/static/dashboard/assets/{zod-DWEgoEmm.js → zod-BMw0fS-7.js} +1 -1
- package/static/dashboard/index.html +2 -2
- package/static/widget/snag.dock.js +1 -1
- package/static/widget/snag.screenshot.js +1 -1
- package/static/dashboard/assets/CompositeItem-Bg_GF93m.js +0 -1
- package/static/dashboard/assets/activity-CCqTW3Th.js +0 -1
- package/static/dashboard/assets/index-ClhJtAFR.css +0 -1
- package/static/dashboard/assets/index-CtyJ8ep7.js +0 -169
- package/static/dashboard/assets/label-DoQ07Q_y.js +0 -1
- package/static/dashboard/assets/me-NFjosbdz.js +0 -1
- package/static/dashboard/assets/s._site-kVvU6ucw.js +0 -1
- package/static/dashboard/assets/s._site.settings-CeKMuuRo.js +0 -1
- package/static/dashboard/assets/sites-CUWMKMCM.js +0 -1
- package/static/dashboard/assets/studio-BfA8kzFc.js +0 -1
- package/static/dashboard/assets/studio-uAl1i7Nd.js +0 -1
- package/static/dashboard/assets/studio.members-BtbPt4iX.js +0 -1
- package/static/dashboard/assets/switch-DbqX1mWE.js +0 -1
- package/static/dashboard/assets/useQuery-BPuxCfhJ.js +0 -1
- package/static/dashboard/assets/useRender-BCpbp3WG.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as o,Z as l,h as H,E as V,aN as J,X as A,e as M,d as v,k as W,aI as Z,i as Q,j as T,f as N}from"./index-CtyJ8ep7.js";function ee(t){return t?.ownerDocument||document}const te={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},ne={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},se={disabled:!1,...ne},ae={valid(t){return t===null?null:t?{"data-valid":""}:{"data-invalid":""}}},re={invalid:void 0,name:void 0,validityData:{state:te,errors:[],error:"",value:"",initialValue:null},setValidityData:l,disabled:void 0,setTouched:l,setDirty:l,setFilled:l,setFocused:l,validationMode:"onSubmit",shouldValidateOnChange:()=>!1,state:se,registerFieldControl:l,validation:{getValidationProps:(t,e=V)=>e,inputRef:{current:null},registeredInputs:new Map,registerInput:l,getInputControl:()=>null,commit:async()=>{},change:l}},oe=o.createContext(re);function _(t=!0){const e=o.useContext(oe);if(e.setValidityData===l&&!t)throw new Error(H(28));return e}const ie=o.createContext({elementRef:{current:null},formRef:{current:{fields:new Map}},errors:{},clearErrors:l,validationMode:"onSubmit",submitAttemptedRef:{current:!1}});function le(){return o.useContext(ie)}let S=0;function ue(t,e="mui"){const[n,s]=o.useState(t),u=t||n;return o.useEffect(()=>{n==null&&(S+=1,s(`${e}-${S}`))},[n,e]),u}const L=J.useId;function de(t,e){if(L!==void 0){const n=L();return t??(e?`${e}-${n}`:n)}return ue(t,e)}function ce(t){return de(t,"base-ui")}const fe=o.createContext({controlId:void 0,registerControlId:l,labelId:void 0,setLabelId:l,messageIds:[],setMessageIds:l,getDescriptionProps:t=>t});function U(){return o.useContext(fe)}function ge(t={}){const{id:e,implicit:n=!1,controlRef:s}=t,{controlId:u,registerControlId:i}=U(),a=ce(e),r=n?u:void 0,c=A(()=>Symbol()),p=o.useRef(!1),b=o.useRef(e!=null),f=M(()=>{!p.current||i===l||(p.current=!1,i(c.current,void 0))});return v(()=>{if(i===l)return;let m;if(n){const I=s?.current;W(I)&&I.closest("label")!=null?m=e??null:m=r??a}else if(e!=null)b.current=!0,m=e;else if(b.current)m=a;else{f();return}if(m===void 0){f();return}p.current=!0,i(c.current,m)},[e,s,r,i,n,a,c,f]),o.useEffect(()=>f,[f]),u??a}function pe(t){let e=t.activeElement;for(;e?.shadowRoot?.activeElement!=null;)e=e.shadowRoot.activeElement;return e}function he(t,e){if(!t||!e)return!1;const n=e.getRootNode?.();if(t.contains(e))return!0;if(n&&Z(n)){let s=e;for(;s;){if(t===s)return!0;s=s.parentNode||s.host}}return!1}function Te(t){return"composedPath"in t?t.composedPath()[0]:t.target}function me({controlled:t,default:e,name:n,state:s="value"}){const{current:u}=o.useRef(t!==void 0),[i,a]=o.useState(e),r=u?t:i,c=o.useCallback(p=>{u||a(p)},[]);return[r,c]}function be(t,e,n,s,u=!0,i){const{registerFieldControl:a}=_(),r=A(()=>Symbol());v(()=>{const c=r.current;if(!u){a(c,void 0);return}a(c,{controlRef:t,getValue:s,id:e,name:i,value:n})},[t,u,s,e,i,a,r,n]),v(()=>{const c=r.current;return()=>{a(c,void 0)}},[a,r])}const ve="none",we="trigger-press",ye="trigger-hover",Fe="trigger-focus",De="outside-press",Pe="item-press",Se="close-press",Le="focus-out",Ve="escape-key",Ae="list-navigation",Me="cancel-open",Ne="sibling-open",_e="disabled",Ue="imperative-action";function Ie(t,e,n,s){let u=!1,i=!1;const a=s??V;return{reason:t,event:e??new Event("base-ui"),cancel(){u=!0},allowPropagation(){i=!0},get isCanceled(){return u},get isPropagationAllowed(){return i},trigger:n,...a}}const Ee=o.forwardRef(function(e,n){const{render:s,className:u,id:i,name:a,value:r,disabled:c=!1,onValueChange:p,defaultValue:b,autoFocus:f=!1,style:m,...I}=e,{state:k,name:O,disabled:j,setTouched:w,setDirty:B,validityData:$,setFocused:E,setFilled:R,validationMode:K,validation:g}=_(),{clearErrors:X}=le(),C=j||c,y=O??a,Y={...k,disabled:C},{labelId:q}=U(),F=ge({id:i});v(()=>{const d=r!=null;g.inputRef.current?.value||d&&r!==""?R(!0):d&&r===""&&R(!1)},[g.inputRef,R,r]);const h=o.useRef(null);v(()=>{f&&h.current===pe(ee(h.current))&&E(!0)},[f,E]);const[z]=me({controlled:r,default:b,name:"FieldControl",state:"value"}),D=r!==void 0,P=D?z:void 0,G=M(()=>g.inputRef.current?.value);return be(g.inputRef,F,P,G,!C,a),Q("input",e,{ref:[n,h],state:Y,props:[{id:F,disabled:C,name:y,ref:g.inputRef,"aria-labelledby":q,autoFocus:f,...D?{value:P}:{defaultValue:b},onChange(d){const x=d.currentTarget.value;p?.(x,Ie(ve,d.nativeEvent)),B(x!==($.initialValue??"")),R(x!==""),d.nativeEvent.defaultPrevented||(X(y),g.change(x))},onFocus(){E(!0)},onBlur(d){w(!0),E(!1),K==="onBlur"&&g.commit(d.currentTarget.value)},onKeyDown(d){d.currentTarget.tagName==="INPUT"&&d.key==="Enter"&&(w(!0),g.commit(d.currentTarget.value))}},I,d=>g.getValidationProps(C,d)],stateAttributesMapping:ae})}),Re=o.forwardRef(function(e,n){return T.jsx(Ee,{ref:n,...e})});function ke({className:t,type:e,...n}){return T.jsx(Re,{type:e,"data-slot":"input",className:N("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",t),...n})}function Oe({className:t,...e}){return T.jsx("label",{"data-slot":"label",className:N("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t),...e})}export{ge as A,Se as B,ke as I,Oe as L,he as a,ye as b,Ie as c,_e as d,le as e,ae as f,Te as g,_ as h,Ue as i,U as j,me as k,be as l,pe as m,ve as n,ee as o,Fe as p,Ve as q,Ae as r,Le as s,we as t,ce as u,Pe as v,De as w,Ne as x,de as y,Me as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as r,Q as u,d as s}from"./useBaseQuery-CBTINzcX.js";import{y as t}from"./index-CtyJ8ep7.js";function a(e,o){return r({...e,enabled:!0,suspense:!0,throwOnError:s,placeholderData:void 0},u)}function i(){return a(t.me()).data}export{i as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as t,O as o}from"./index-CtyJ8ep7.js";const n=()=>t.jsx(o,{});export{n as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as i,h as Pe,Z as ie,$ as Me,d as de,Y as Be,E as ce,i as pe,j as e,a0 as Ge,e as U,aw as ve,aC as We,f as me,aD as qe,aE as _e,B as Z,o as Ye,aF as ze,y as Ue}from"./index-CtyJ8ep7.js";import{u as $e}from"./useQuery-BPuxCfhJ.js";import{f as De,h as Oe,j as Fe,u as Ae,A as Je,c as Qe,n as Xe,g as ye,e as Ze,k as et,l as tt,a as st,L as $,I as he}from"./label-DoQ07Q_y.js";import{O as nt,L as rt,M as ot,N as it,A as at,aL as Re,ak as Ce,ad as ae,a9 as le,aM as Ie,aN as je,ao as lt,aO as ke,aa as dt,ab as ct,aP as we,aQ as Se,aR as Ne,aS as Ee,aT as ut,aU as ft,X as pt}from"./dialog-q6J2VL2H.js";import{b as mt,u as ht,C as gt}from"./CompositeItem-Bg_GF93m.js";import{u as xt}from"./useValueChanged-B20GM2vK.js";import{u as bt}from"./FieldItemContext-BFJSEdB-.js";import{u as vt}from"./useAriaLabelledBy-CgL3SaJd.js";import{C as yt}from"./ConfirmDialog-WnZ92dk2.js";import{C as Rt}from"./CopyButton-rL26RLOJ.js";import{I as Ct}from"./InstallTag-BKIArjPk.js";import{S as It}from"./switch-DbqX1mWE.js";import{P as jt,a as ue}from"./parts-BTWw4Uv-.js";import{S as kt}from"./SaveState-DVHi0zeB.js";import{u as wt}from"./me-NFjosbdz.js";import{P as St}from"./plus-DqdyxL8q.js";import"./useBaseQuery-CBTINzcX.js";import"./check-C3gaSIDM.js";import"./copy-Dy7nBeu2.js";import"./card-BNGTf8dq.js";import"./labels--UUyt9uB.js";const Nt=i.createContext(void 0);function Et(t=!1){const r=i.useContext(Nt);if(!r&&!t)throw new Error(Pe(86));return r}function Pt(t,r){return t.matches(":disabled")?!1:!r||t.form===r?!0:t.form===null&&!t.hasAttribute("form")}function Mt(t){return t==null||t.hasAttribute("disabled")||t.getAttribute("aria-disabled")==="true"}const fe={checked(t){return t?{"data-checked":""}:{"data-unchecked":""}},...nt,...De},Te="data-composite-item-active",Le=i.createContext(void 0);function Dt(){return i.useContext(Le)}function Ot(t){if(t==null)return"";if(typeof t=="string")return t;try{return JSON.stringify(t)}catch{return String(t)}}const Ve=i.createContext(void 0);function Ft(){const t=i.useContext(Ve);if(t===void 0)throw new Error(Pe(52));return t}const At=i.forwardRef(function(r,n){const{render:a,className:u,disabled:p=!1,readOnly:d=!1,required:m=!1,"aria-labelledby":o,value:v,inputRef:H,nativeButton:h=!1,id:T,style:P,...O}=r,F=Dt(),{disabled:w,readOnly:_,required:x,form:K,checkedValue:y,touched:M=!1,validation:B,name:C,setCheckedValue:q=ie,setTouched:Y=ie,registerInputRef:s=ie}=F??{},{setTouched:g,setFilled:b,state:I,disabled:S}=Oe(),N=bt(),{labelId:L,getDescriptionProps:J}=Fe(),c=S||N.disabled||w||p,f=_||d,A=x||m,V=K,j=F?y===v:v==="",D=i.useRef(null),k=i.useRef(null),G=B?.registerInput,W=i.useCallback(R=>G?.(R,{controlRef:D,value:void 0}),[G]),Q=Me(H,k,s,W);de(()=>{k.current?.checked&&b(!0)},[b]),de(()=>{if(k.current){if(c&&j){s(null);return}s(k.current)}},[j,c,s]);const ee=Ae(),te=Je({id:T,implicit:!1,controlRef:D}),se=h?void 0:te,ne=vt(o,L,k,!h,se),re={role:"radio","aria-checked":j,"aria-labelledby":ne,[Te]:j?"":void 0,id:h?te:ee,onKeyDown(R){R.key==="Enter"&&R.preventDefault()},onClick(R){if(R.defaultPrevented||c||f)return;R.preventDefault();const X=k.current;X&&Ge(X,R)},onFocus(R){R.defaultPrevented||c||f||!M||(k.current?.click(),Y(!1))}},{getButtonProps:oe,buttonRef:l}=Be({disabled:c,native:h,composite:!1}),E={type:"radio",ref:Q,form:V,id:se,name:C,tabIndex:-1,style:C?rt:ot,"aria-hidden":!0,...v!==void 0?{value:Ot(v)}:ce,disabled:c,checked:j,required:A,readOnly:f,onChange(R){if(R.nativeEvent.defaultPrevented||c||f||v===void 0)return;const X=Qe(Xe,R.nativeEvent);q(v,X),!X.isCanceled&&g(!0)},onClick(R){R.stopPropagation()},onFocus(){D.current?.focus()}},z=i.useMemo(()=>({...I,required:A,disabled:c,readOnly:f,checked:j}),[I,c,f,j,A]),He=z,ge=F!==void 0,xe=[n,D,l],be=[re,O,oe,J,B?R=>B.getValidationProps(c,R):ce],Ke=pe("span",r,{enabled:!ge,state:z,ref:xe,props:be,stateAttributesMapping:fe});return e.jsxs(Ve.Provider,{value:He,children:[ge?e.jsx(mt,{tag:"span",render:a,className:u,style:P,state:z,refs:xe,props:be,stateAttributesMapping:fe}):Ke,e.jsx("input",{...E,suppressHydrationWarning:!0})]})}),Tt=i.forwardRef(function(r,n){const{render:a,className:u,style:p,keepMounted:d=!1,...m}=r,o=Ft(),v=o.checked,{mounted:H,transitionStatus:h,setMounted:T}=it(v),P={...o,transitionStatus:h},O=i.useRef(null),F=d||H,w=pe("span",r,{ref:[n,O],state:P,props:m,stateAttributesMapping:fe});return at({open:v,ref:O,onComplete(){v||T(!1)}}),F?w:null}),Lt=[];function Vt(t){const{loopFocus:r=!0,orientation:n="both",grid:a,onLoop:u,direction:p,highlightedIndex:d,onHighlightedIndexChange:m,rootRef:o,enableHomeAndEndKeys:v=!1,stopEventPropagation:H,disabledIndices:h,modifierKeys:T=Lt}=t,[P,O]=i.useState(0),F=a!=null,w=i.useRef(null),_=Me(w,o),x=i.useRef([]),K=i.useRef(!1),y=d??P,M=U((s,g=!1)=>{if((m??O)(s),g){const b=x.current[s];Re(w.current,b,p,n)}}),B=U(s=>{if(s.size===0||K.current)return;K.current=!0;const g=Array.from(s.keys()),b=g.find(S=>S?.hasAttribute(Te))??null,I=b?s.get(b)?.index??-1:-1;if(I!==-1)M(I);else if(Ce(g,y,h)){const S=ae(g,{disabledIndices:h});le(g,S)||M(S)}Re(w.current,b,p,n)});de(()=>{if(h==null||d!=null||!K.current)return;const s=x.current;if(Ce(s,y,h)){const g=ae(s,{disabledIndices:h});le(s,g)||M(g)}},[h,d,y,x,M]);const C=U((s,g,b)=>u?u(s,g,b,x):b),q=U(s=>{const g=s.key===Ie||s.key===je;if(!lt.has(s.key)||!v&&g||Ht(s,T)||!w.current)return;const I=p==="rtl",S=I?Ne:Ee,N=I?Ee:Ne,L=n==="vertical"?we:S,J=n==="vertical"?Se:N,c=ye(s.nativeEvent);if(c!=null&&ke(c)&&!Mt(c)){const k=c.selectionStart,G=c.selectionEnd,W=c.value;if(k==null||s.shiftKey||k!==G||s.key!==J&&k<W.length||s.key!==L&&k>0)return}let f=y;const A=dt(x,h),V=ct(x,h);a!=null&&(f=a({disabledIndices:h,elementsRef:x,event:s,highlightedIndex:y,loopFocus:r,maxIndex:V,minIndex:A,onLoop:C,orientation:n,rtl:I}));const j=n!=="vertical"&&s.key===S||n!=="horizontal"&&s.key===we,D=n!=="vertical"&&s.key===N||n!=="horizontal"&&s.key===Se;v&&(s.key===Ie?f=A:s.key===je&&(f=V)),f===y&&(j||D)&&(r&&f===V&&j?(f=A,u&&(f=u(s,y,f,x))):r&&f===A&&D?(f=V,u&&(f=u(s,y,f,x))):f=ae(x.current,{startingIndex:f,decrement:D,disabledIndices:h})),f!==y&&!le(x.current,f)&&(H&&s.stopPropagation(),(F||g||j||D)&&s.preventDefault(),M(f,!0),queueMicrotask(()=>{x.current[f]?.focus()}))});return{props:{ref:_,onFocus(s){const g=w.current,b=ye(s.nativeEvent);!g||b==null||!ke(b)||b.setSelectionRange(0,b.value.length)},onKeyDown:q},highlightedIndex:y,onHighlightedIndexChange:M,elementsRef:x,onMapChange:B,relayKeyboardEvent:q}}function Ht(t,r){for(const n of ut)if(!r.includes(n)&&t.getModifierState(n))return!0;return!1}function Kt(t){const{render:r,className:n,style:a,refs:u=ve,props:p=ve,state:d=ce,stateAttributesMapping:m,highlightedIndex:o,onHighlightedIndexChange:v,orientation:H,grid:h,loopFocus:T,onLoop:P,enableHomeAndEndKeys:O,onMapChange:F,stopEventPropagation:w=!0,rootRef:_,disabledIndices:x,modifierKeys:K,highlightItemOnHover:y=!1,tag:M="div",...B}=t,C=ht(),{props:q,highlightedIndex:Y,onHighlightedIndexChange:s,elementsRef:g,onMapChange:b,relayKeyboardEvent:I}=Vt({grid:h,loopFocus:T,onLoop:P,orientation:H,highlightedIndex:o,onHighlightedIndexChange:v,rootRef:_,stopEventPropagation:w,enableHomeAndEndKeys:O,direction:C,disabledIndices:x,modifierKeys:K}),S=pe(M,t,{state:d,ref:u,props:[q,...p,B],stateAttributesMapping:m}),N=i.useMemo(()=>({highlightedIndex:Y,onHighlightedIndexChange:s,highlightItemOnHover:y,relayKeyboardEvent:I}),[Y,s,y,I]);return e.jsx(We.Provider,{value:N,children:e.jsx(gt,{elementsRef:g,onMapChange:L=>{F?.(L),b(L)},children:S})})}const Bt=[ft],Gt=i.forwardRef(function(r,n){const{render:a,className:u,disabled:p,readOnly:d,required:m,onValueChange:o,value:v,defaultValue:H,form:h,name:T,inputRef:P,id:O,style:F,...w}=r,{setTouched:_,setFocused:x,validationMode:K,name:y,disabled:M,state:B,validation:C,setDirty:q,setFilled:Y,validityData:s}=Oe(),{labelId:g}=Fe(),{clearErrors:b,elementRef:I}=Ze(),S=Et(!0),N=M||p,L=y??T,J=Ae(O),[c,f]=et({controlled:v,default:H,name:"RadioGroup",state:"value"}),[A,V]=i.useState(!1),j=U((l,E)=>{o?.(l,E),!E.isCanceled&&f(l)}),D=C.getInputControl,k=i.useMemo(()=>({get current(){return D()}}),[D]),G=i.useRef(null),W=i.useRef(null);function Q(l){let E;return P&&(typeof P=="function"?E=P(l):P.current=l),G.current=l,E}const ee=U(l=>{if(!l||l.disabled)return;W.current||(W.current=l);const E=G.current,z=l.checked||E==null||E.disabled?Q(l):void 0;return()=>{W.current===l&&(W.current=null),G.current===l?z?(z(),G.current=null):Q(null):z?.()}}),te=U(()=>{const l=I.current;if(!l)return c??null;for(const E of C.registeredInputs.keys())if(E.checked&&Pt(E,l))return c??null;return null});tt(k,J,c??null,te,!N,T),xt(c,()=>{b(L),q(c!==s.initialValue),Y(c!=null),C.change(c);const l=W.current;c==null&&l&&!l.disabled&&Q(l)});const se=g??S?.legendId,ne={...B,disabled:N??!1,required:m??!1,readOnly:d??!1},re=i.useMemo(()=>({checkedValue:c,disabled:N,form:h,validation:C,name:L,readOnly:d,registerInputRef:ee,required:m,setCheckedValue:j,setTouched:V,touched:A}),[c,N,h,C,L,d,ee,m,j,V,A]),oe={id:O,role:"radiogroup","aria-required":m||void 0,"aria-disabled":N||void 0,"aria-readonly":d||void 0,"aria-labelledby":se,onFocus(){x(!0)},onBlur(l){st(l.currentTarget,l.relatedTarget)||(_(!0),x(!1),K==="onBlur"&&C.commit(c))},onKeyDownCapture(l){l.key.startsWith("Arrow")&&(V(!0),x(!0))}};return e.jsx(Le.Provider,{value:re,children:e.jsx(Kt,{render:a,className:u,style:F,state:ne,props:[oe,w,l=>C.getValidationProps(N??!1,l)],refs:[n],stateAttributesMapping:De,enableHomeAndEndKeys:!1,modifierKeys:Bt})})});function Wt({className:t,...r}){return e.jsx(Gt,{"data-slot":"radio-group",className:me("grid w-full gap-2",t),...r})}function qt({className:t,...r}){return e.jsx(At,{"data-slot":"radio-group-item",className:me("group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none group-has-[:focus-visible]/field-label:ring-0 group-has-[:focus-visible]/field-label:not-data-checked:border-input after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground group-has-[:focus-visible]/field-label:data-checked:border-primary dark:data-checked:bg-primary",t),...r,children:e.jsx(Tt,{"data-slot":"radio-group-indicator",className:"flex size-4 items-center justify-center",children:e.jsx("span",{className:"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground"})})})}const _t=[{id:"open",title:"Everyone on the site",note:"The toolbar appears for every visitor on the addresses above. Simplest for a staging URL nobody else knows."},{id:"link-required",title:"Only reviewers with a link",note:"You add a reviewer and send them their link. Use this when staging is publicly reachable, or when one reviewer needs revoking without shutting the whole site."}];function xs(){const{site:t}=qe.useParams(),n=wt().projects.find(o=>o.uid===t),a=$e(Ue.origins(t)),u=_e(t),[p,d]=i.useState(null),m=o=>u.mutate(o,{onSuccess:()=>d(Date.now())});return e.jsxs("div",{className:"flex flex-col gap-10 p-7",children:[e.jsx(jt,{title:"Settings",sub:n.name,actions:e.jsx(kt,{saving:u.isPending,savedAt:p})}),e.jsxs(ue,{title:"Site",description:"Its name, its ID for the tag, and where the widget may run.",children:[e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx($,{children:"Site ID"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("code",{className:"rounded-md bg-muted px-2.5 py-1.5 font-mono text-[12.5px] text-ink-soft",children:n.uid}),e.jsx(Rt,{text:n.uid,label:"Copy the site ID"})]})]}),e.jsx(Yt,{name:n.name,onSave:o=>m({name:o})}),e.jsx(zt,{domain:a.data?.domain??null,loaded:a.isSuccess,onSave:o=>m({domain:o})}),e.jsx(Ut,{list:a.data?.origins??[],loaded:a.isSuccess,hasDomain:!!a.data?.domain,onChange:o=>m({origins:o})})]}),e.jsxs(ue,{title:"Widget",description:"Whether it runs, who the toolbar appears for, and the tag itself.",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4 rounded-md border border-border px-3 py-2.5",children:[e.jsxs("div",{children:[e.jsx($,{htmlFor:"widget-on",className:"text-[13px] font-medium",children:"Widget on this site"}),e.jsx("p",{className:"m-0 mt-0.5 text-[12px] leading-normal text-muted-foreground",children:"Off hides the toolbar for everyone and refuses new comments. The tag can stay in the site's code."})]}),e.jsx(It,{id:"widget-on","aria-label":"Widget on this site",checked:n.status!=="paused",onCheckedChange:o=>m({status:o?"active":"paused"})})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx($,{children:"Who can comment"}),e.jsx(Wt,{value:n.writeMode,onValueChange:o=>m({writeMode:String(o)}),className:"gap-2",children:_t.map(o=>e.jsxs("label",{className:me("flex cursor-pointer items-start gap-2.5 rounded-md border border-border px-3 py-2.5",n.writeMode===o.id&&"border-brand bg-brand-soft"),children:[e.jsx(qt,{value:o.id,className:"mt-0.5","aria-label":o.title}),e.jsxs("span",{children:[e.jsx("span",{className:"block text-[13px] font-medium",children:o.title}),e.jsx("span",{className:"block text-[12px] leading-normal text-muted-foreground",children:o.note})]})]},o.id))})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx($,{children:"The tag"}),e.jsx(Ct,{uid:n.uid}),e.jsxs("p",{className:"m-0 text-[12px] text-muted-foreground",children:["Paste it before ",e.jsx("code",{className:"font-mono",children:"</body>"})," on every page you want reviewed."]})]})]}),e.jsx($t,{uid:t,name:n.name})]})}function Yt({name:t,onSave:r}){const[n,a]=i.useState(t);i.useEffect(()=>a(t),[t]);const u=n.trim().length>0&&n.trim()!==t;return e.jsxs("form",{className:"flex flex-col gap-1.5",onSubmit:p=>{p.preventDefault(),u&&r(n.trim())},children:[e.jsx($,{htmlFor:"site-name",children:"Name"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(he,{id:"site-name",value:n,onChange:p=>a(p.target.value)}),u&&e.jsx(Z,{type:"submit",variant:"outline",children:"Save"})]})]})}function zt({domain:t,loaded:r,onSave:n}){const[a,u]=i.useState(t??"");i.useEffect(()=>u(t??""),[t]);const p=a.trim()!==(t??"");return e.jsxs("form",{className:"flex flex-col gap-1.5",onSubmit:d=>{d.preventDefault(),p&&n(a.trim()||null)},children:[e.jsx($,{htmlFor:"site-domain",children:"Domain"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(he,{id:"site-domain",placeholder:"kilnwork.studio",value:a,onChange:d=>u(d.target.value),disabled:!r}),p&&e.jsx(Z,{type:"submit",variant:"outline",children:a.trim()?"Save domain":"Clear domain"})]}),e.jsx("p",{className:"m-0 text-[12px] text-muted-foreground",children:"Every subdomain, scheme and port of it may run the widget — staging, previews, and localhost while you build."})]})}function Ut({list:t,loaded:r,hasDomain:n,onChange:a}){const[u,p]=i.useState("");return e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx($,{htmlFor:"site-origin-add",children:"Also allowed"}),e.jsx("p",{className:"m-0 text-[12px] text-muted-foreground",children:"Exact addresses the domain does not cover — a client's other host, a preview on somebody else's suffix."}),e.jsxs("ul",{className:"m-0 flex list-none flex-col gap-1.5 p-0",children:[t.map(d=>e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx("code",{className:"rounded-md border border-border px-2 py-1 font-mono text-[12px]",children:d}),e.jsx(Z,{type:"button",variant:"ghost",size:"icon-sm","aria-label":`Remove ${d}`,disabled:t.length<=1&&!n,onClick:()=>a(t.filter(m=>m!==d)),children:e.jsx(pt,{})})]},d)),r&&t.length===0&&e.jsx("li",{className:"text-[12.5px] text-muted-foreground",children:n?"None besides the domain.":"No address yet."})]}),e.jsxs("form",{className:"flex gap-2",onSubmit:d=>{d.preventDefault();const m=u.trim();m&&(a([...t,m]),p(""))},children:[e.jsx(he,{id:"site-origin-add",placeholder:"https://staging.example.com",value:u,onChange:d=>p(d.target.value)}),e.jsxs(Z,{type:"submit",variant:"outline",disabled:!u.trim(),children:[e.jsx(St,{}),"Add"]})]})]})}function $t({uid:t,name:r}){const[n,a]=i.useState(!1),u=Ye(),p=ze(t);return e.jsxs(ue,{danger:!0,title:"Delete this site",description:e.jsxs(e.Fragment,{children:["The site stops appearing and its widget stops being served."," ",e.jsx("b",{className:"font-semibold text-foreground",children:"Nothing your client wrote is destroyed"})," — the comments stay in the database, so a mistake here is recoverable."]}),children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("p",{className:"m-0 flex-1 text-[13px] text-ink-soft",children:"You will be asked to type the site's name."}),e.jsxs(Z,{type:"button",variant:"outline",className:"border-destructive text-destructive",onClick:()=>a(!0),children:["Delete ",r,"…"]})]}),e.jsx(yt,{open:n,onOpenChange:a,title:`Delete ${r}?`,description:"The site stops appearing and its widget stops being served. Nothing your client wrote is destroyed — the comments stay in the database.",confirmLabel:"Delete",confirmWord:r,busy:p.isPending,onConfirm:()=>p.mutate(void 0,{onSuccess:()=>{a(!1),u({to:"/sites"})}})})]})}export{xs as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{P as v,r as x,j as e,B as c,L as N,o as y,t as w,p as A,A as S,C as $,D as p}from"./index-CtyJ8ep7.js";import{u as k,a as C}from"./zod-DWEgoEmm.js";import{C as _}from"./card-BNGTf8dq.js";import{E as D,G as E,I as P,H as I,J as L,K as F}from"./dialog-q6J2VL2H.js";import{L as h,I as g}from"./label-DoQ07Q_y.js";import{P as z,E as H}from"./parts-BTWw4Uv-.js";import{b as K}from"./labels--UUyt9uB.js";import{u as T}from"./me-NFjosbdz.js";import{P as f}from"./plus-DqdyxL8q.js";import{L as q}from"./layout-grid-B3BkFR60.js";import{I as B}from"./image-off-Bug-3iC-.js";import"./useBaseQuery-CBTINzcX.js";function te(){const i=T(),{add:a}=v.useSearch(),[m,r]=x.useState(!!a);x.useEffect(()=>{a&&r(!0)},[a]);const d=i.projects.reduce((s,o)=>s+o.unresolved,0),t=i.limits.projects.limit,n=t!==null&&i.projects.length>=t;return e.jsxs("div",{className:"p-7",children:[e.jsx(z,{title:"Sites",sub:i.projects.length?`${i.projects.length}${t!==null?` of ${t}`:""} site${i.projects.length===1&&t===null?"":"s"} · ${d} open`:t!==null?`0 of ${t} sites`:void 0,actions:e.jsxs(c,{onClick:()=>r(!0),disabled:n,title:n?`This studio's plan allows ${t} sites.`:void 0,children:[e.jsx(f,{}),"Add a site"]})}),i.projects.length===0?e.jsx(_,{className:"max-w-[1100px]",children:e.jsx(H,{icon:e.jsx(q,{className:"size-5"}),title:"No sites yet",action:e.jsxs(c,{onClick:()=>r(!0),children:[e.jsx(f,{}),"Add a site"]}),children:"A site is one client website. Add it, paste the tag, and comments start arriving here."})}):e.jsx("div",{className:"grid max-w-[1100px] grid-cols-1 gap-5 md:grid-cols-2 xl:grid-cols-3",children:i.projects.map(s=>e.jsxs(N,{to:"/s/$site/comments",params:{site:s.uid},className:"block overflow-hidden rounded-lg border border-border bg-card text-foreground transition-shadow hover:shadow-[0_1px_2px_rgb(24_23_22/.06),0_8px_24px_rgb(24_23_22/.08)]",children:[e.jsx("div",{className:"flex h-[150px] items-center justify-center border-b border-border bg-background",children:s.previewUrl?e.jsx("img",{src:s.previewUrl,alt:"",className:"size-full object-cover object-top"}):e.jsxs("div",{className:"flex flex-col items-center gap-1 text-[12px] text-muted-foreground",children:[e.jsx("span",{className:"flex size-8 items-center justify-center rounded-md bg-muted",children:e.jsx(B,{className:"size-4"})}),"No screenshot yet"]})}),e.jsxs("div",{className:"px-3.5 pb-3.5 pt-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-[14px] font-semibold",children:[e.jsx("span",{className:"truncate",children:s.name}),s.status==="paused"&&e.jsx("span",{className:"rounded-sm bg-muted px-1.5 py-px text-[10.5px] font-medium uppercase tracking-wide text-muted-foreground",children:"Paused"})]}),s.domain&&e.jsx("div",{className:"mt-0.5 truncate font-mono text-[12px] text-muted-foreground",children:s.domain}),e.jsx("div",{className:"mt-2 text-[12.5px] text-ink-soft",children:s.threads===0?"Nothing filed yet":`${s.unresolved} open of ${s.threads}${s.lastActivityAt?` · ${K(s.lastActivityAt)}`:""}`})]})]},s.uid))}),e.jsx(Q,{open:m,onOpenChange:r})]})}const G=$({name:p().trim().min(1,"A name"),domain:p().trim().min(1,"Its domain")});function Q({open:i,onOpenChange:a}){const m=y(),r=w(),[d,t]=x.useState(""),{register:n,handleSubmit:s,formState:o,reset:j}=k({resolver:C(G)}),b=s(async u=>{t("");try{const l=await A.createProject(u.name,"",u.domain);await r.invalidateQueries({queryKey:["me"]}),j(),a(!1),m({to:"/s/$site/comments",params:{site:l.uid}})}catch(l){t(l instanceof S?l.message:"Could not add the site.")}});return e.jsx(D,{open:i,onOpenChange:a,children:e.jsx(E,{children:e.jsxs("form",{onSubmit:b,className:"flex flex-col gap-4",noValidate:!0,children:[e.jsxs(P,{children:[e.jsx(I,{children:"Add a site"}),e.jsx(L,{children:"One client website. The tag it needs is shown right after."})]}),d&&e.jsx("p",{role:"alert",className:"m-0 rounded-md border border-destructive/40 bg-warn-soft px-3 py-2 text-[13px] text-destructive",children:d}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(h,{htmlFor:"site-name",children:"Name"}),e.jsx(g,{id:"site-name",placeholder:"Kilnwork","aria-invalid":!!o.errors.name,...n("name")})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(h,{htmlFor:"site-domain",children:"Domain"}),e.jsx(g,{id:"site-domain",placeholder:"kilnwork.studio","aria-invalid":!!o.errors.domain,...n("domain")}),e.jsx("p",{className:"m-0 text-[12px] text-muted-foreground",children:"Every subdomain, scheme and port of it may run the widget — staging, previews, and localhost while you build. Exact addresses elsewhere can be added in Settings."})]}),e.jsxs(F,{children:[e.jsx(c,{type:"button",variant:"outline",onClick:()=>a(!1),children:"Cancel"}),e.jsx(c,{type:"submit",loading:o.isSubmitting,children:o.isSubmitting?"Adding…":"Add site"})]})]})})})}export{te as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as y,y as s,T as u,p as o,U as i,Q as c}from"./index-CtyJ8ep7.js";function d(){const e=y(),r=s.me().queryKey;return u({mutationFn:a=>o.renameOrg(a),onMutate:async a=>{await e.cancelQueries({queryKey:r});const t=e.getQueryData(r);return t&&e.setQueryData(r,{...t,org:{...t.org,name:a}}),{was:t}},onError:(a,t,n)=>{n?.was&&e.setQueryData(r,n.was),i.error(c(a))},onSettled:()=>e.invalidateQueries({queryKey:r})})}function q(){const e=y(),r=s.me().queryKey;return u({mutationFn:a=>o.renameMe(a),onMutate:async a=>{await e.cancelQueries({queryKey:r});const t=e.getQueryData(r);return t&&e.setQueryData(r,{...t,user:{...t.user,name:a}}),{was:t}},onError:(a,t,n)=>{n?.was&&e.setQueryData(r,n.was),i.error(c(a))},onSettled:()=>{e.invalidateQueries({queryKey:r}),e.invalidateQueries({queryKey:s.members().queryKey})}})}function f(){return u({mutationFn:e=>o.changePassword(e.current,e.next)})}function l(){const e=y();return u({mutationFn:r=>o.addMember(r),onSuccess:r=>e.setQueryData(s.members().queryKey,r)})}function w(){const e=y(),r=s.members().queryKey;return u({mutationFn:a=>o.setMemberRole(a.email,a.role),onMutate:async({email:a,role:t})=>{await e.cancelQueries({queryKey:r});const n=e.getQueryData(r);return n&&e.setQueryData(r,{data:n.data.map(m=>m.email===a?{...m,role:t}:m)}),{was:n}},onSuccess:(a,{email:t})=>{e.setQueryData(r,a),a.data.find(n=>n.email===t)?.you&&e.invalidateQueries({queryKey:s.me().queryKey})},onError:(a,t,n)=>{n?.was&&e.setQueryData(r,n.was),i.error(c(a))}})}function D(){const e=y(),r=s.members().queryKey;return u({mutationFn:a=>o.removeMember(a),onMutate:async a=>{await e.cancelQueries({queryKey:r});const t=e.getQueryData(r);return t&&e.setQueryData(r,{data:t.data.filter(n=>n.email!==a)}),{was:t}},onSuccess:a=>e.setQueryData(r,a),onError:(a,t,n)=>{n?.was&&e.setQueryData(r,n.was),i.error(c(a))}})}export{f as a,d as b,w as c,D as d,l as e,q as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as t,O as o}from"./index-CtyJ8ep7.js";const n=()=>t.jsx(o,{});export{n as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as e,f as y,r as f,B as u,Q as N,C as A,D as h,_ as C,y as R}from"./index-CtyJ8ep7.js";import{u as T}from"./useQuery-BPuxCfhJ.js";import{u as S,a as D}from"./zod-DWEgoEmm.js";import{A as M,a as $}from"./avatar-BnPBt2UW.js";import{B as E}from"./badge-B2rHdH8b.js";import{C as F}from"./card-BNGTf8dq.js";import{X as k,E as B,G as H,I as P,H as I,J as O,K as z}from"./dialog-q6J2VL2H.js";import{L as d,I as p}from"./label-DoQ07Q_y.js";import{T as L,a as Q,b,c,d as V,e as x}from"./table-CrWNqpP8.js";import{C as _}from"./ConfirmDialog-WnZ92dk2.js";import{P as q}from"./parts-BTWw4Uv-.js";import{a as G}from"./labels--UUyt9uB.js";import{u as J}from"./me-NFjosbdz.js";import{c as K,d as X,e as Y}from"./studio-BfA8kzFc.js";import{P as U}from"./plus-DqdyxL8q.js";import"./useBaseQuery-CBTINzcX.js";import"./useRender-BCpbp3WG.js";function j({className:s,...a}){return e.jsx("select",{className:y("h-8 rounded-md border border-input bg-card px-2.5 text-[13.5px] text-foreground outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:opacity-50",s),...a})}function je(){const s=J(),a=s.user.role==="owner",n=T(R.members()),[i,o]=f.useState(!1),r=s.limits.members.limit,l=r!==null&&s.limits.members.used>=r;return e.jsxs("div",{className:"p-7",children:[e.jsx(q,{title:"Members",sub:`${a?"Owners and admins can do everything; only owners change this list.":"Owners and admins can do everything. Ask an owner to change this list."}${r!==null?` ${s.limits.members.used} of ${r} members.`:""}`,actions:a?e.jsxs(u,{onClick:()=>o(!0),disabled:l,title:l?`This studio's plan allows ${r} members.`:void 0,children:[e.jsx(U,{}),"Add member"]}):void 0}),e.jsx(F,{className:"max-w-[1040px] overflow-hidden py-0",children:e.jsxs(L,{children:[e.jsx(Q,{children:e.jsxs(b,{children:[e.jsx(c,{children:"Name"}),e.jsx(c,{children:"Email"}),e.jsx(c,{children:"Role"}),a&&e.jsx(c,{className:"w-0"})]})}),e.jsx(V,{children:(n.data?.data??[]).map(t=>e.jsx(W,{m:t,owner:a},t.email))})]})}),e.jsx("p",{className:"m-0 mt-3 max-w-[1040px] text-[12.5px] text-muted-foreground",children:"There is no invitation mail: an owner sets an initial password and hands it over, and the person changes it under You."}),a&&e.jsx(ee,{open:i,onOpenChange:o})]})}function W({m:s,owner:a}){const n=K(),i=X(),[o,r]=f.useState(!1);return e.jsxs(b,{children:[e.jsx(x,{children:e.jsxs("span",{className:"flex items-center gap-2.5",children:[e.jsx(M,{className:"size-6",children:e.jsx($,{className:"bg-brand-soft text-[10px] font-semibold text-brand",children:G(s.name,s.email)})}),e.jsx("span",{className:"font-medium",children:s.name||s.email}),s.you&&e.jsx(E,{variant:"outline",className:"text-[11px]",children:"you"})]})}),e.jsx(x,{className:"text-muted-foreground",children:s.email}),e.jsx(x,{children:a?e.jsxs(j,{"aria-label":`Role for ${s.email}`,value:s.role,onChange:l=>n.mutate({email:s.email,role:l.target.value}),children:[e.jsx("option",{value:"owner",children:"Owner"}),e.jsx("option",{value:"admin",children:"Admin"})]}):e.jsx("span",{className:"capitalize",children:s.role})}),a&&e.jsxs(x,{className:"text-right",children:[!s.you&&e.jsx(u,{variant:"ghost",size:"icon-sm","aria-label":`Remove ${s.email}`,onClick:()=>r(!0),children:e.jsx(k,{})}),e.jsx(_,{open:o,onOpenChange:r,title:`Remove ${s.name||s.email}?`,description:"Every session of theirs ends now. Nothing they wrote is destroyed.",confirmLabel:"Remove",busy:i.isPending,onConfirm:()=>{r(!1),i.mutate(s.email)}})]})]})}const Z=A({email:h().trim().email("An email address"),name:h().trim().max(120).optional(),role:C(["owner","admin"]),password:h().min(12,"At least 12 characters")});function ee({open:s,onOpenChange:a}){const n=Y(),[i,o]=f.useState(""),{register:r,handleSubmit:l,formState:t,reset:g}=S({resolver:D(Z),defaultValues:{role:"admin"}}),w=l(async m=>{o("");try{await n.mutateAsync({email:m.email,name:m.name??"",role:m.role,password:m.password}),g(),a(!1)}catch(v){o(N(v))}});return e.jsx(B,{open:s,onOpenChange:a,children:e.jsx(H,{children:e.jsxs("form",{onSubmit:w,className:"flex flex-col gap-4",noValidate:!0,children:[e.jsxs(P,{children:[e.jsx(I,{children:"Add a member"}),e.jsx(O,{children:"They sign in with this email and the password you set; there is no invitation mail, so you tell them the password yourself."})]}),i&&e.jsx("p",{role:"alert",className:"m-0 rounded-md border border-destructive/40 bg-warn-soft px-3 py-2 text-[13px] text-destructive",children:i}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(d,{htmlFor:"member-email",children:"Email"}),e.jsx(p,{id:"member-email",type:"email",autoComplete:"off","aria-invalid":!!t.errors.email,...r("email")})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(d,{htmlFor:"member-name",children:"Name"}),e.jsx(p,{id:"member-name",autoComplete:"off",...r("name")})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(d,{htmlFor:"member-role",children:"Role"}),e.jsxs(j,{id:"member-role",className:"w-full",...r("role"),children:[e.jsx("option",{value:"admin",children:"Admin"}),e.jsx("option",{value:"owner",children:"Owner"})]})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(d,{htmlFor:"member-password",children:"Initial password"}),e.jsx(p,{id:"member-password",type:"text",autoComplete:"off","aria-invalid":!!t.errors.password,...r("password")}),e.jsx("p",{className:"m-0 text-[12px] text-muted-foreground",children:"At least 12 characters — a short phrase of real words is fine. They can change it afterwards."})]}),e.jsxs(z,{children:[e.jsx(u,{type:"button",variant:"outline",onClick:()=>a(!1),children:"Cancel"}),e.jsx(u,{type:"submit",loading:t.isSubmitting,children:t.isSubmitting?"Adding…":"Add"})]})]})})})}export{je as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as i,h as ae,$ as re,d as se,Y as ie,E as ne,i as M,j as f,a0 as oe,f as de}from"./index-CtyJ8ep7.js";import{f as ce,e as le,h as ue,j as fe,u as pe,A as he,k as be,l as ge,c as me,n as ve}from"./label-DoQ07Q_y.js";import{L as ke,M as xe}from"./dialog-q6J2VL2H.js";import{u as we}from"./useAriaLabelledBy-CgL3SaJd.js";import{u as ye}from"./useValueChanged-B20GM2vK.js";const j=i.createContext(void 0);function Ce(){const r=i.useContext(j);if(r===void 0)throw new Error(ae(63));return r}const D={...ce,checked(r){return r?{"data-checked":""}:{"data-unchecked":""}}},Re=i.forwardRef(function(s,o){const{checked:k,className:F,defaultChecked:x,"aria-labelledby":m,form:p,id:L,inputRef:T,name:w,nativeButton:h=!1,onCheckedChange:V,readOnly:d=!1,required:b=!1,disabled:N=!1,render:ze,uncheckedValue:y,value:C,style:Ee,...A}=s,{clearErrors:H}=le(),{state:R,setTouched:q,setDirty:O,validityData:W,setFilled:v,setFocused:P,validationMode:Y,disabled:J,name:U,validation:c}=ue(),{labelId:_}=fe(),t=J||N,l=U??w,n=i.useRef(null),$=re(n,T,c.inputRef),g=i.useRef(null),z=pe(),E=he({id:L,implicit:!1,controlRef:g}),B=h?void 0:E,[a,G]=be({controlled:k,default:!!x,name:"Switch",state:"checked"});ge(g,z,a,void 0,!t,w),se(()=>{n.current&&v(n.current.checked)},[v]),ye(a,()=>{H(l),O(a!==W.initialValue),v(a),c.change(a)});const{getButtonProps:K,buttonRef:Q}=ie({disabled:t,native:h}),X=we(m,_,n,!h,B),Z={id:h?E:z,role:"switch","aria-checked":a,"aria-readonly":d||void 0,"aria-required":b||void 0,"aria-labelledby":X,onFocus(){t||P(!0)},onBlur(){const e=n.current;!e||t||(q(!0),P(!1),Y==="onBlur"&&c.commit(e.checked))},onClick(e){if(d||t)return;e.preventDefault();const u=n.current;u&&oe(u,e)}},ee={...c.getValidationProps(t),checked:a,disabled:t,form:p,id:B,name:l,required:b,style:l?ke:xe,tabIndex:-1,type:"checkbox","aria-hidden":!0,ref:$,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(d){e.preventDefault();return}const u=e.currentTarget.checked,S=me(ve,e.nativeEvent);V?.(u,S),!S.isCanceled&&G(u)},onClick(e){e.stopPropagation()},onFocus(){g.current?.focus()},...C!==void 0?{value:C}:ne},I=i.useMemo(()=>({...R,checked:a,disabled:t,readOnly:d,required:b}),[R,a,t,d,b]),te=M("span",s,{state:I,ref:[o,g,Q],props:[Z,A,K,e=>c.getValidationProps(t,e)],stateAttributesMapping:D});return f.jsxs(j.Provider,{value:I,children:[te,!a&&l&&y!==void 0&&f.jsx("input",{type:"hidden",form:p,name:l,value:y,disabled:t}),f.jsx("input",{...ee,suppressHydrationWarning:!0})]})}),Pe=i.forwardRef(function(s,o){const{render:k,className:F,style:x,...m}=s,p=Ce();return M("span",s,{state:p,ref:o,stateAttributesMapping:D,props:m})});function De({className:r,size:s="default",...o}){return f.jsx(Re,{"data-slot":"switch","data-size":s,className:de("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none group-has-[:focus-visible]/field-label:border-transparent group-has-[:focus-visible]/field-label:ring-0 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50",r),...o,children:f.jsx(Pe,{"data-slot":"switch-thumb",className:"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"})})}export{De as S};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as r,Q as u}from"./useBaseQuery-CBTINzcX.js";function a(e,s){return r(e,u)}export{a as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as n}from"./index-CtyJ8ep7.js";function u(e){return n(e.defaultTagName??"div",e,e)}export{u};
|