2 lines
5.4 KiB
JavaScript
2 lines
5.4 KiB
JavaScript
|
import{r as u,j as a,o as h,d as A,u as T,f as M,N as S,c as $}from"./index-f45b8810.js";import{$ as I,a as E,b as L,c as R,d as D,B as f,u as q,L as B,h as O}from"./fetch.client-5aab1c76.js";import{L as U,E as V}from"./label-979d47e9.js";function _(e,t){let{inputElementType:r="input",isDisabled:o=!1,isRequired:s=!1,isReadOnly:n=!1,validationState:i,isInvalid:d=!1,type:l="text",value:c,defaultValue:y,onChange:b=()=>{}}=e,{focusableProps:w}=I(e,t),{labelProps:p,fieldProps:P,descriptionProps:v,errorMessageProps:j}=E(e),C=L(e,{labelable:!0});const k={type:l,pattern:e.pattern};var m;return R(t,(m=c??y)!==null&&m!==void 0?m:"",b),{labelProps:p,inputProps:D(C,r==="input"&&k,{disabled:o,readOnly:n,"aria-required":s||void 0,"aria-invalid":d||i==="invalid"||void 0,"aria-errormessage":e["aria-errormessage"],"aria-activedescendant":e["aria-activedescendant"],"aria-autocomplete":e["aria-autocomplete"],"aria-haspopup":e["aria-haspopup"],value:e.value,defaultValue:e.value?void 0:e.defaultValue,onChange:N=>b(N.target.value),autoComplete:e.autoComplete,maxLength:e.maxLength,minLength:e.minLength,name:e.name,placeholder:e.placeholder,inputMode:e.inputMode,onCopy:e.onCopy,onCut:e.onCut,onPaste:e.onPaste,onCompositionEnd:e.onCompositionEnd,onCompositionStart:e.onCompositionStart,onCompositionUpdate:e.onCompositionUpdate,onSelect:e.onSelect,onBeforeInput:e.onBeforeInput,onInput:e.onInput,...w,...P}),descriptionProps:v,errorMessageProps:j}}const x=u.forwardRef(({errorMessage:e,...t},r)=>a.jsx("input",{ref:r,...t,className:h("w-full p-1.5 px-3 rounded-md border outline-none disabled:cursor-not-allowed disabled:opacity-80","transition-colors placeholder:opacity-50","bg-white dark:bg-secondary dark:text-white","border-gray-200 dark:border-quinary focus:border-gray-800 dark:focus:border-gray-500",e&&"border-red-500 dark:border-red-500 focus:border-red-700 dark:focus:border-red-700",t.className)}));x.displayName="Input";const g=u.forwardRef(({errorMessage:e,...t},r)=>a.jsx("textarea",{ref:r,...t,className:h("w-full p-1.5 px-3 rounded-md border outline-none disabled:cursor-not-allowed disabled:opacity-80 resize-y","min-h-[3em] transition-colors placeholder:opacity-50","bg-white dark:bg-secondary dark:text-white","border-gray-200 dark:border-quinary focus:border-gray-800 dark:focus:border-gray-500",e&&"border-red-500 dark:border-red-500 focus:border-red-700 dark:focus:border-red-700",t.className)}));g.displayName="Textarea";function F({inputRef:e}){const[t,r]=u.useState(!1),o=A.useTranslations("Common");function s(){e.current&&(e.current.type=t?"password":"text",r(n=>!n))}return a.jsx(f,{onPress:s,size:"xs",className:"absolute bg-gray-300 top-[32px] right-1 dark:bg-tertiary w-fit",children:o(t?"hide":"show")})}function z(e){const t=u.useRef(null),r=e.inputRef??t,{labelProps:o,inputProps:s,errorMessageProps:n}=_({...e,inputElementType:e.isTextarea?"textarea":"input"},r);return a.jsxs("div",{className:h("relative text-field flex flex-col mb-3",e.className),children:[a.jsx(U,{...e,labelProps:o}),e.isTextarea?a.jsx(g,{errorMessage:e.errorMessage,ref:r,...s}):a.jsx(x,{errorMessage:e.errorMessage,ref:r,...s}),e.children,e.type==="password"&&!e.isTextarea?a.jsx(F,{inputRef:r}):null,e.errorMessage&&a.jsx(V,{errorMessage:e.errorMessage,errorMessageProps:n})]})}function H(){var s;const{hide:e,data:t}=T(),r=q({mutationKey:["authentication"],onSuccess(n,i){e(),M(S.OnAuthenticationFlowSuccess,i),$({title:"Authentication Success",message:"You have successfully authenticated with SnailyCAD."})},mutationFn:async n=>{if(!(t!=null&&t.url))throw new Error("SnailyCAD API URL not provided in server.cfg.");const{data:i,error:d,errorMessage:l}=await O({url:t.url,path:"/user/api-token/validate",method:"POST",data:n});if(l||d||!i)throw l==="invalidToken"?new Error("An invalid Personal API Token was provided."):new Error("Could not verify your Personal API Token.");return i}});async function o(n){n.preventDefault();const d=n.currentTarget.elements.namedItem("api_token");d&&await r.mutateAsync({token:d.value})}return a.jsxs("div",{className:"w-[48em] rounded-md bg-primary p
|