@trieoh/identityx-sdk-ts 0.11.7 → 0.11.9
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/cjs/react.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
'use strict';var react=require('react'),envoyFetchTs=require('@trieoh/envoy-fetch-ts'),jsxRuntime=require('react/jsx-runtime'),ri=require('react-icons/ri'),go=require('react-icons/go'),im=require('react-icons/im'),fa=require('react-icons/fa'),uaParserJs=require('ua-parser-js');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;function ge(e,o){if(o.startsWith("http"))return o;let t=e.replace(/\/$/,""),r=o.replace(/^\//,"");return `${t}/${r}`}var V={isAuthenticated:false,isInitializing:true},ve=new Set,Ie=()=>ve.forEach(e=>e()),v={subscribe:e=>(ve.add(e),()=>ve.delete(e)),getSnapshot:()=>V,getServerSnapshot:()=>V,set:e=>{V={...V,...e},Ie();},reset:()=>{V={isAuthenticated:false,isInitializing:false},Ie();}};typeof window<"u"&&window.addEventListener("storage",e=>{if(e.key==="trieoh_access_expiry")if(!e.newValue)v.reset();else {let o=parseInt(e.newValue,10),t=!isNaN(o)&&o>Date.now();v.set({isAuthenticated:t,isInitializing:false});}});var w={getItem:e=>typeof window<"u"?localStorage.getItem(e):null,setItem:(e,o)=>{typeof window<"u"&&localStorage.setItem(e,o);},removeItem:e=>{typeof window<"u"&&localStorage.removeItem(e);}},K={getItem:e=>typeof window<"u"?sessionStorage.getItem(e):null,setItem:(e,o)=>{typeof window<"u"&&sessionStorage.setItem(e,o);},removeItem:e=>{typeof window<"u"&&sessionStorage.removeItem(e);}},A={get:e=>{if(typeof window>"u")return null;let o=e+"=",t=document.cookie.split(";");for(let r=0;r<t.length;r++){let s=t[r];for(;s.charAt(0)===" ";)s=s.substring(1,s.length);if(s.indexOf(o)===0)return s.substring(o.length,s.length)}return null},set:(e,o,t={})=>{if(typeof window>"u")return;let{expires:r,path:s="/",domain:i,secure:n=window.location.protocol==="https:",sameSite:c=n?"None":"Lax"}=t,a=window.location.hostname==="localhost",d=[`${e}=${o}`,i&&!a?`Domain=${i}`:"",`Path=${s}`,`SameSite=${c}`,n?"Secure":"",r?`expires=${r}`:""];document.cookie=d.filter(Boolean).join("; ");},remove:(e,o)=>{A.set(e,"",{expires:"Thu, 01 Jan 1970 00:00:00 GMT",domain:o});}};var re="trieoh_access_token",D={getAccessToken:()=>K.getItem(re),setAccessToken:e=>{e?K.setItem(re,e):K.removeItem(re);},clear:()=>{K.removeItem(re);}};var F=null,_e="trieoh_access_expiry",ne="trieoh_refresh_expiry",ie="trieoh_refresh_domain";function Ae(e){if(typeof window>"u")return null;let o=window.location.hostname;if(e)try{let t=e;return t.startsWith("http")&&(t=new URL(t).hostname),t}catch{return e}return o}function Ce(e){try{let o=e.split(".")[1];return JSON.parse(atob(o))}catch{return null}}function Y(e){let{access_token_string:o,refresh_token_string:t,access_expires_at:r,refresh_expires_at:s}=e,i=Ce(o);if(!i){envoyFetchTs.logger.error("Failed to decode tokens");return}D.setAccessToken(o);let n=new Date(s).getTime(),c=new Date(r).getTime(),a=Ae(e.domain);A.set("refresh_token",t,{expires:new Date(n).toUTCString(),domain:a}),F={access_data:i,refresh_expiry_date:n},w.setItem(_e,String(c)),w.setItem(ne,String(n)),a?w.setItem(ie,a):w.removeItem(ie),v.set({isAuthenticated:true,isInitializing:false}),envoyFetchTs.logger.log("Auth session saved");}function j(){if(F)return F;let e=D.getAccessToken();if(!e)return null;let o=Ce(e);if(!o||o.exp*1e3<=Date.now())return null;let t=w.getItem(ne);return t?(F={access_data:o,refresh_expiry_date:parseInt(t,10)},F):null}function ke(e,o){try{let t=w.getItem(e);if(!t)return !0;let r=parseInt(t,10);return isNaN(r)?!0:r-Date.now()<=o*1e3}catch(t){return envoyFetchTs.logger.warn("Error reading expiry:",t),true}}var xe=(e=30)=>ke(_e,e),ae=(e=10)=>ke(ne,e);function U(){F=null,D.clear(),w.removeItem(_e),w.removeItem(ne);let e=w.getItem(ie)||Ae();A.remove("refresh_token",e),w.removeItem(ie),v.reset(),envoyFetchTs.logger.log("Auth tokens and claims cleared");}function Pe(){let e=j();return e?e.access_data.sub:null}function je(){let e=typeof window>"u",o=typeof ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('react.js', document.baseURI).href)) })<"u"&&undefined?undefined:{},t=typeof process<"u"?process.env:{},r=o.VITE_TRIEOH_AUTH_PROJECT_ID||t.NEXT_PUBLIC_TRIEOH_AUTH_PROJECT_ID||t.PUBLIC_TRIEOH_AUTH_PROJECT_ID||"",s=e&&t.TRIEOH_AUTH_API_KEY||"";return {PROJECT_ID:r,API_KEY:s,BASE_URL:"https://api.trieauth.trieoh.com"}}var le=null,be={};function De(e){be={...be,...e},le=null;}function ye(){return le||(le={...je(),...be}),le}var _={get PROJECT_ID(){return ye().PROJECT_ID},get BASE_URL(){return ye().BASE_URL}};var ce=class{constructor(o){this.isRefreshing=false;this.refreshPromise=null;this.baseURL=o?.baseURL||_.BASE_URL,this.authBaseURL=o?.authBaseURL||this.baseURL,this.onTokenRefreshed=o?.onTokenRefreshed,this.onRefreshFailed=o?.onRefreshFailed;}async refreshToken(){return this.isRefreshing&&this.refreshPromise?this.refreshPromise:(this.isRefreshing=true,this.refreshPromise=(async()=>{try{let o=await envoyFetchTs.simpleFetch(ge(this.authBaseURL,"/auth/refresh"),{method:"POST",credentials:"include"});if(o.code!==200||!o.data)throw o.code!==503&&U(),new Error(o.message||"Failed to refresh token");Y(o.data);let t=j();t&&this.onTokenRefreshed?.(t),envoyFetchTs.logger.log("Token refreshed successfully");}catch(o){throw envoyFetchTs.logger.warn("Failed to refresh token:",o),U(),this.onRefreshFailed?.(o),o}finally{this.isRefreshing=false,this.refreshPromise=null;}})(),this.refreshPromise)}async beforeRequest(){if(ae()){U();return}let o=!!D.getAccessToken(),t=!!A.get("refresh_token");if(!o&&t||o&&xe(30))try{await this.refreshToken();}catch(r){envoyFetchTs.logger.warn("Proactive refresh failed:",r);}}async fetch(o,t){let r=t?.requiresAuth!==false,s=o.includes("/auth/refresh");r&&!s&&!t?.skipRefresh&&await this.beforeRequest();let i=ge(this.baseURL,o),n=async()=>{let a=D.getAccessToken(),d=new Headers(t?.headers);return r&&a&&d.set("Authorization",`Bearer ${a}`),d.has("Content-Type")||d.set("Content-Type","application/json"),fetch(i,{...t,headers:d,credentials:"include"})},c=await n();if(c.status===401&&r&&!s&&xe(30)){envoyFetchTs.logger.log("401 detected and token is expiring/expired, attempting refresh...");try{await this.refreshToken(),c=await n();}catch{envoyFetchTs.logger.error("Retry failed after refresh error");}}return c}};function O(e){if(!e)return;let{requiresAuth:o,skipRefresh:t,...r}=e,s={};return o!==void 0&&(s.requiresAuth=o),t!==void 0&&(s.skipRefresh=t),{...r,adapterInit:{...r.adapterInit,...s}}}var ue=class{constructor(o,t,r,s){this.interceptor=new ce({baseURL:o,authBaseURL:t,onTokenRefreshed:r}),this.client=envoyFetchTs.createDefaultFetchClient({...s,adapter:this.interceptor.fetch.bind(this.interceptor)});}request(o,t){return this.client.request(o,O(t))}get(o,t){return this.client.get(o,O(t))}post(o,t,r){return this.client.post(o,t,O(r))}put(o,t,r){return this.client.put(o,t,O(r))}patch(o,t,r){return this.client.patch(o,t,O(r))}delete(o,t,r){return this.client.delete(o,t,O(r))}query(o,t){return this.client.query(o,O(t))}};var H=()=>{if(!_.PROJECT_ID||_.PROJECT_ID.trim()==="")throw new Error("[TRIEOH SDK] Project ID is missing. Please set PUBLIC_TRIEOH_AUTH_PROJECT_ID, NEXT_PUBLIC_TRIEOH_AUTH_PROJECT_ID or VITE_TRIEOH_AUTH_PROJECT_ID.")};var Oe=(e,o)=>({login:async(t,r)=>{_.PROJECT_ID&&H();let s=`/auth/login${_.PROJECT_ID?`?project_id=${_.PROJECT_ID}`:""}`,i=await e.post(s,{email:t,password:r},{requiresAuth:false});return i.success&&(Y(i.data),o?.onLogin?.()),i},register:async(t,r)=>{let s={requiresAuth:false},i=`/auth/register${_.PROJECT_ID?`?project_id=${_.PROJECT_ID}`:""}`;_.PROJECT_ID&&H();let n=await e.post(i,{email:t,password:r},s);return n.success&&o?.onRegister?.(),n},logout:async t=>{let r=`/auth/logout${_.PROJECT_ID?`?project_id=${_.PROJECT_ID}`:""}`,s=await e.post(r);return (s.success||t?.forceLogout)&&U(),s},refresh:async()=>{let t=await e.post("/auth/refresh",void 0,{skipRefresh:true});return t.success&&(Y(t.data),o?.onRefresh?.()),t},sessions:async()=>e.get("/sessions"),currentSession:async()=>e.get("/sessions/me"),revokeASession:async t=>e.delete(`/sessions/${t}`),revokeSessions:async(t=false)=>{let r=t?"/sessions":"/sessions/others";return e.delete(r)},profile:()=>Pe(),sendForgotPassword:async t=>{let r={requiresAuth:false},s=await(async()=>_.PROJECT_ID?(H(),e.post("/account/forgot-password",{email:t,project_id:_.PROJECT_ID},r)):e.post("/account/forgot-password",{email:t},r))();return s.success&&o?.onForgotPassword?.(),s},resetPassword:async(t,r)=>e.post(`/account/reset-password?token=${t}`,{new_password:r},{requiresAuth:false}),verifyEmail:async()=>{let t=await e.get("/account/verify",{requiresAuth:false});return t.success&&o?.onVerify?.(),t},resendVerifyEmail:async()=>e.post("/account/verify/resend"),health:async()=>e.get("/health",{requiresAuth:false}),authHealth:async()=>e.get("/protected/health")});var Be=react.createContext(null);function wo({children:e,baseURL:o,projectId:t,isProjectMode:r=true,fallback:s,waitSession:i=true,clientConfig:n,onLogin:c,onForgotPassword:a,onRegister:d,onVerify:h,onRefresh:u}){let f=react.useRef(false),{isAuthenticated:m,isInitializing:p}=react.useSyncExternalStore(v.subscribe,v.getSnapshot,v.getServerSnapshot);react.useEffect(()=>{De({...t?{PROJECT_ID:t}:{},...o?{BASE_URL:o}:{}});},[t,o]);let y=react.useCallback(k=>{v.set({isAuthenticated:!!k.access_data,isInitializing:false}),u?.();},[u]),b=react.useMemo(()=>new ue(o,void 0,y,n),[o,y,n]),x=react.useMemo(()=>Oe(b,{onLogin:c,onForgotPassword:a,onRegister:d,onVerify:h,onRefresh:u}),[b,c,a,d,h,u]);react.useEffect(()=>{r&&H(),(async()=>{if(f.current)return;if(f.current=true,j()){v.set({isAuthenticated:true,isInitializing:false});return}if(!!!A.get("refresh_token")||ae()){v.reset(),v.set({isInitializing:false});return}envoyFetchTs.logger.log("No cached claims, attempting silent refresh...");try{(await x.refresh()).success?(v.set({isAuthenticated:!0,isInitializing:!1}),envoyFetchTs.logger.log("Session restored.")):(v.reset(),envoyFetchTs.logger.warn("No active session."));}catch{v.reset(),envoyFetchTs.logger.warn("Could not restore session (offline?).");}finally{v.set({isInitializing:false});}})();},[x,r]);let I=react.useMemo(()=>({auth:x,isAuthenticated:m,isInitializing:p,isProjectMode:r}),[x,m,p,r]);return i&&p?s??null:jsxRuntime.jsx(Be.Provider,{value:I,children:e})}function R(){let e=react.useContext(Be);if(!e)throw new Error("useAuth must be used inside <AuthProvider>");return e}function X(e,{insertAt:o}={}){if(!e||typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",o==="top"&&t.firstChild?t.insertBefore(r,t.firstChild):t.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e));}X(`@import"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap";:root{--trieoh-primary: oklch(.1139 .0789 264.05);--trieoh-secondary: oklch(.7975 .1018 262.7);--trieoh-neutral1: oklch(.9702 0 0);--trieoh-neutral2: oklch(.1944 .0051 248.09);--trieoh-radius-full: 50%;--trieoh-text-sm: .75rem;--trieoh-text-base: .875rem;--trieoh-text-xl: 1.25rem;--trieoh-text-2xl: 1.5rem;--trieoh-text-3xl: 1.875rem;--trieoh-text-6xl: 3.75rem}
|
|
2
|
-
`);X(`.trieoh{font-family:Inter,sans-serif}.trieoh-input{position:relative;width:100%;display:flex;flex-direction:column;gap:.25rem;color:var(--trieoh-neutral2)}.trieoh-input__label{font-size:1rem;font-weight:600}.trieoh-input__container{display:flex;justify-content:space-between;align-items:center;padding:.0625rem .625rem;gap:.625rem;border-bottom:solid .125rem var(--trieoh-neutral2)}.trieoh-input__container--error{border-color:#e53935!important}.trieoh-input__container-field{min-width:10rem;flex:1;font-size:var(--trieoh-text-base);font-weight:300;color:var(--trieoh-neutral2);-webkit-appearance:none;background:none;outline:none;border:none;box-shadow:none!important;padding:.125rem 0}.trieoh-input__container-icon{cursor:pointer;flex-shrink:0;-webkit-user-select:none;user-select:none}.trieoh-input__hint{font-size:.75rem;color:#6b7280;transition:opacity .2s ease-in-out}.trieoh-input__hint .hint-part{transition:color .12s ease,text-decoration .12s ease,opacity .12s ease;opacity:.95;margin:.125rem}.trieoh-input__hint .hint-part.passed{text-decoration:line-through;opacity:.6;color:#10b981}.trieoh-input__hint .hint-part.failed-on-submit{color:#e53935;font-weight:600;opacity:1}.trieoh-button{--trieoh-button-color: var(--trieoh-neutral2);width:100%;height:3.25rem;font-size:var(--trieoh-text-xl);font-weight:600;color:var(--trieoh-button-color);outline:none;background:none;position:relative;overflow:hidden;min-width:10rem;flex-shrink:0;border:.125rem solid var(--trieoh-button-color);cursor:pointer;padding:0 1.5rem;transition:transform .5s}.trieoh-button--all-rounded{border-radius:.25rem}.trieoh-button:hover{transform:scale(102%)}.trieoh-button:active{transform:scale(99%)}.trieoh-button[disabled],.trieoh-button--logout[disabled]{opacity:.6;cursor:not-allowed;transform:none!important}.trieoh-button--loading:after{content:"";position:absolute;top:0;left:-150%;width:150%;height:100%;background:linear-gradient(120deg,transparent 0%,color-mix(in oklab,var(--trieoh-button-color) 40%,white 15%) 40%,transparent 80%);animation:trieoh-shine 1.5s infinite}@keyframes trieoh-shine{0%{left:-150%}to{left:150%}}.trieoh-button--logout{border:none;background:none;cursor:pointer;--trieoh-button-color: oklch(.628 .2577 29.23);display:flex;align-items:end;gap:.25rem;font-size:var(--trieoh-text-base);font-weight:500;color:var(--trieoh-button-color);transition:transform .2s}.trieoh-button--logout:hover{transform:scale(1.05)}.trieoh-button--logout:active{transform:scale(.98)}.trieoh-avacard{display:flex;flex-direction:column;align-items:center}.trieoh-avacard__container{display:flex;justify-content:center;align-items:center;padding:.5rem;background-color:#d9d9d94d;border-radius:var(--trieoh-radius-full);margin-bottom:.625rem}.trieoh-avacard__content{width:64px;height:64px;padding:.625rem;background-color:var(--trieoh-neutral1);border-radius:var(--trieoh-radius-full);box-shadow:0 .25rem 1rem #00000040}.trieoh-avacard__title{text-align:center;font-size:var(--trieoh-text-xl);font-weight:500;margin:0}.trieoh-avacard__sub-title{text-align:center;font-size:.875rem;font-weight:300;opacity:.6}.trieoh-card{display:flex;flex-direction:column;width:100%;max-width:30rem;min-width:15rem;max-height:max(75dvh,32rem);overflow:hidden;gap:1.25rem;align-items:center;background-color:var(--trieoh-neutral1);color:var(--trieoh-neutral2);padding:1.25rem 1.5rem;box-shadow:0 .25rem .25rem #00000040;transition:transform .15s ease}.trieoh-card--full-rounded{border-radius:.25rem}.trieoh-card__fields{width:100%;display:flex;flex-direction:column;gap:.625rem;flex:1 1 auto;overflow-y:auto;margin-bottom:.5rem}.trieoh-card__divider{display:flex;align-items:center;gap:.625rem;width:100%;font-size:var(--trieoh-text-base);font-weight:600;opacity:.6}.trieoh-card__divider hr{flex:1}.trieoh-card__other{font-size:var(--trieoh-text-sm);font-weight:600}.trieoh-card__other span{cursor:pointer;color:var(--trieoh-secondary);transition:color .2s}.trieoh-card__other span:hover{color:var(--trieoh-primary)}.trieoh-copyright{font-size:var(--trieoh-text-xl);font-weight:500}.trieoh-copyright--xs{font-size:var(--trieoh-text-sm)}.trieoh-copyright--sm{font-size:var(--trieoh-text-base)}.trieoh-copyright--md{font-size:var(--trieoh-text-xl)}.trieoh-copyright--lg{font-size:var(--trieoh-text-2xl)}.trieoh-copyright--xl{font-size:var(--trieoh-text-3xl)}.trieoh-copyright--2xl{font-size:var(--trieoh-text-6xl)}.trieoh-sessions{width:100%;min-width:20rem;margin:.5rem;container-type:inline-size;background-color:var(--trieoh-neutral1);color:var(--trieoh-neutral2);padding:1.5rem .5rem;border-radius:.5rem}.trieoh-sessions__header{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;text-align:center;gap:1rem;box-sizing:border-box;padding:0 .75rem}.trieoh-sessions__header div{flex:0 1 auto;max-width:25rem}.trieoh-sessions__header div h3{font-weight:600;font-size:var(--trieoh-text-2xl);margin:0;margin-bottom:.25rem}.trieoh-sessions__header div p{font-weight:200;font-size:var(--trieoh-text-base);margin:0}.trieoh-sessions__header button{max-width:14rem;padding:1rem 0;height:auto;font-size:var(--trieoh-text-base)}.trieoh-sessions__content{margin-top:1rem}.trieoh-sessions__empty{display:block;border-top:1px solid rgba(0,0,0,.3);padding:1.25rem .75rem;text-align:center;font-weight:600}.trieoh-session{border-top:1px solid rgba(0,0,0,.3);padding:1.25rem .75rem;color:var(--trieoh-neutral2)}.trieoh-session__content{position:relative;display:flex;flex-direction:column;align-items:center;gap:.5rem;flex:1;text-align:center}.trieoh-session__info{display:flex;flex-direction:column;min-width:0}.trieoh-session__meta{display:inline-flex;flex-direction:column;font-size:var(--trieoh-text-sm);font-weight:200}.trieoh-session h3{font-size:var(--trieoh-text-base);font-weight:600;margin:0}.trieoh-session span strong{color:var(--trieoh-primary);font-weight:400}.trieoh-session__content svg:last-child{position:absolute;top:0;right:0;cursor:pointer;opacity:.6;transition:opacity .2s,transform .15s}.trieoh-session__content svg:last-child:hover{opacity:1;transform:scale(1.05)}.trieoh-session__content svg:last-child:active{transform:scale(.95)}@container (min-width: 640px){.trieoh-sessions__header{justify-content:space-between;text-align:left;gap:2rem}.trieoh-session{flex-direction:row;text-align:left}.trieoh-session__content{flex-direction:row;align-items:center;gap:1rem;text-align:left}.trieoh-session__meta{flex-direction:row;gap:.5rem;align-items:center}}
|
|
3
|
-
`);function S({name:e,label:o,placeholder:t,type:r="text",value:s,onValueChange:i,onBlur:n,autoComplete:c,rulesStatus:a=[],submitted:d=false,inputRef:h}){let[u,f]=react.useState(false),m=a.some(p=>!p.passed);return jsxRuntime.jsxs("div",{className:"trieoh trieoh-input",children:[jsxRuntime.jsx("label",{htmlFor:e,className:"trieoh-input__label",children:o}),jsxRuntime.jsxs("div",{className:(m&&d?"trieoh-input__container--error ":"")+"trieoh-input__container",children:[jsxRuntime.jsx("input",{type:u?"text":r,name:e,id:e,placeholder:t,value:s,onChange:p=>i&&i(p.target.value),onBlur:n,autoComplete:c,"aria-invalid":m&&d,ref:h,className:"trieoh-input__container-field"}),r==="password"&&(u?jsxRuntime.jsx(ri.RiEyeCloseLine,{className:"trieoh-input__container-icon",size:24,onClick:()=>f(false)}):jsxRuntime.jsx(ri.RiEyeLine,{className:"trieoh-input__container-icon",size:24,onClick:()=>f(true)}))]}),jsxRuntime.jsx("div",{className:"trieoh-input__hint",children:a.map((p,y)=>{let b=["hint-part",p.passed?"passed":"",!p.passed&&d?"failed-on-submit":""].filter(Boolean).join(" ");return jsxRuntime.jsx("p",{className:b,children:p.message},p.id??y)})})]})}function L({label:e,onSubmit:o,loading:t}){return jsxRuntime.jsx("button",{type:"submit",onClick:o,disabled:t,className:`trieoh trieoh-button trieoh-button--all-rounded
|
|
4
|
-
${t?"trieoh-button--loading":""}`,children:e})}function B({mainText:e,subText:o}){return jsxRuntime.jsxs("div",{className:"trieoh trieoh-avacard",children:[jsxRuntime.jsx("div",{className:"trieoh-avacard__container",children:jsxRuntime.jsx(go.GoPerson,{className:"trieoh-avacard__content",size:70})}),jsxRuntime.jsx("h3",{className:"trieoh-avacard__title",children:e}),jsxRuntime.jsx("span",{className:"trieoh-avacard__sub-title",children:o})]})}function T(e,o){return e.map(t=>({id:t.id,message:t.message,passed:!!t.test(o)}))}function ct({onSuccess:e,onFailed:o,signUpRedirect:t,forgotPasswordRedirect:r,emailRules:s}){let[i,n]=react.useState(""),[c,a]=react.useState(""),[d,h]=react.useState(false),[u,f]=react.useState(false),m=react.useRef(null),p=react.useRef(null),{auth:y}=R(),b={email:s||[{message:"Digite um e-mail v\xE1lido, ex: exemplo@dominio.com",test:P=>/\S+@\S+\.\S+/.test(P)}],password:[]},x=T(b.email,i),I=T(b.password,c);return jsxRuntime.jsxs("form",{className:"trieoh trieoh-card trieoh-card--full-rounded",children:[jsxRuntime.jsx(B,{mainText:"Fa\xE7a login na sua conta",subText:"Insira seus dados para fazer login"}),jsxRuntime.jsxs("div",{className:"trieoh-card__fields",children:[jsxRuntime.jsx(S,{label:"Email",name:"email",placeholder:"teste@gmail.com",autoComplete:"email",type:"email",value:i,onValueChange:n,inputRef:m,rulesStatus:x,submitted:d}),jsxRuntime.jsx(S,{label:"Senha",name:"password",placeholder:"**********",autoComplete:"current-password",type:"password",value:c,onValueChange:a,inputRef:p,rulesStatus:I,submitted:d})]}),jsxRuntime.jsx(L,{label:"Entrar",onSubmit:async P=>{P.preventDefault(),h(true);let q=x.some(g=>!g.passed),te=I.some(g=>!g.passed);if(q){m.current?.focus();return}if(te){p.current?.focus();return}f(true);let $=await y.login(i,c);$.success?e&&await e($.message):o&&await o($.message,$.trace),f(false);},loading:u}),r&&jsxRuntime.jsx("span",{className:"trieoh-card__other",style:{textAlign:"center",cursor:"pointer"},children:jsxRuntime.jsx("span",{onClick:r,children:"Esqueceu sua senha?"})}),t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"trieoh-card__divider",children:[jsxRuntime.jsx("hr",{}),"OU",jsxRuntime.jsx("hr",{})]}),jsxRuntime.jsxs("span",{className:"trieoh-card__other",children:["Ainda n\xE3o possui uma conta? ",jsxRuntime.jsx("span",{onClick:t,children:"Cadastra-se"})]})]})]})}function dt({onSuccess:e,onFailed:o,loginRedirect:t,emailRules:r,passwordRules:s}){let[i,n]=react.useState(""),[c,a]=react.useState(""),[d,h]=react.useState(""),[u,f]=react.useState(false),[m,p]=react.useState(false),y=react.useRef(null),b=react.useRef(null),x=react.useRef(null),{auth:I}=R(),k={email:r||[{message:"Digite um e-mail v\xE1lido, ex: exemplo@dominio.com",test:g=>/\S+@\S+\.\S+/.test(g)}],password:s||[{message:"M\xEDnimo de 8 caracteres.",test:g=>g.length>=8},{message:"Deve conter uma letra mai\xFAscula.",test:g=>/[A-Z]/.test(g)},{message:"Inclua pelo menos um caractere especial, ex: ! @ # $ % & * . ,",test:g=>/[!@#$%^&*(),.?":{}|<>_\-+=~`;/\\[\]]/.test(g)},{message:"Deve conter um n\xFAmero.",test:g=>/\d/.test(g)}],confirmPassword:[{message:"Senhas n\xE3o conferem.",test:g=>g===c}]},P=T(k.email,i),q=T(k.password,c),te=T(k.confirmPassword,d);return jsxRuntime.jsxs("form",{className:"trieoh trieoh-card trieoh-card--full-rounded",children:[jsxRuntime.jsx(B,{mainText:"Crie sua conta",subText:"Insira seus dados para come\xE7ar"}),jsxRuntime.jsxs("div",{className:"trieoh-card__fields",children:[jsxRuntime.jsx(S,{label:"Email",name:"email",placeholder:"teste@gmail.com",autoComplete:"email",type:"email",value:i,onValueChange:n,inputRef:y,rulesStatus:P,submitted:u}),jsxRuntime.jsx(S,{label:"Senha",name:"password",placeholder:"**********",autoComplete:"new-password",type:"password",value:c,onValueChange:a,inputRef:b,rulesStatus:q,submitted:u}),jsxRuntime.jsx(S,{label:"Confirme a Senha",name:"confirm-password",placeholder:"**********",autoComplete:"new-password",type:"password",value:d,onValueChange:h,inputRef:x,rulesStatus:te,submitted:u})]}),jsxRuntime.jsx(L,{label:"Criar Conta",onSubmit:async g=>{g.preventDefault(),f(true);let Ve=P.some(J=>!J.passed),Ke=q.some(J=>!J.passed),Ye=te.some(J=>!J.passed);if(Ve){y.current?.focus();return}if(Ke){b.current?.focus();return}if(Ye){x.current?.focus();return}p(true);let oe=await I.register(i,c);oe.success?e&&await e(oe.message):o&&await o(oe.message,oe.trace),p(false);},loading:m}),t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"trieoh-card__divider",children:[jsxRuntime.jsx("hr",{}),"OU",jsxRuntime.jsx("hr",{})]}),jsxRuntime.jsxs("span",{className:"trieoh-card__other",children:["J\xE1 possui uma conta? ",jsxRuntime.jsx("span",{onClick:t,children:"Entre"})]})]})]})}function pt({size:e}){let o=e?`trieoh-copyright--${e}`:"";return jsxRuntime.jsxs("span",{className:`trieoh trieoh-copyright ${o}`,children:["\xA9 ",new Date().getFullYear()," TrieOH"]})}function vt({onSuccess:e,onFailed:o,forceLogout:t}){let{auth:r}=R(),[s,i]=react.useState(false);return jsxRuntime.jsxs("button",{onClick:async c=>{if(c.preventDefault(),s)return;i(true);let a=await r.logout({forceLogout:t});a.success?e&&await e(a.message):o&&await o(a.message,a.trace),i(false);},type:"button",disabled:s,className:"trieoh trieoh-button--logout",children:[jsxRuntime.jsx(im.ImExit,{size:24})," ",jsxRuntime.jsx("span",{children:"Log out"})]})}var He={mobile:fa.FaMobileAlt,tablet:fa.FaTabletAlt,desktop:fa.FaDesktop};function Me(e){let{device:o,os:t,browser:r}=uaParserJs.UAParser(e);return {deviceType:o.type??"desktop",os:t.name,browser:r.name}}function ze(e){let o=Me(e);return {device:St(o.deviceType),os:o.os,browser:o.browser}}function St(e){if(!e)return "desktop";switch(e){case "mobile":return "mobile";case "tablet":return "tablet";default:return "desktop"}}function qe(e){let o=Date.now()-new Date(e).getTime(),t=Math.floor(o/1e3),r=Math.floor(t/60),s=Math.floor(r/60),i=Math.floor(s/24),n=Math.floor(i/7);return t<60?"agora mesmo":r<60?`${r} minutos atr\xE1s`:s<24?`${s} horas atr\xE1s`:i<7?`${i} dias atr\xE1s`:`${n} semanas atr\xE1s`}function Re({is_current:e,session_id:o,user_agent:t,issued_at:r,user_ip:s,onClick:i}){let n=ze(t),c=He[n.device];return jsxRuntime.jsx("div",{className:"trieoh-session",children:jsxRuntime.jsxs("div",{className:"trieoh-session__content",children:[jsxRuntime.jsx(c,{size:40}),jsxRuntime.jsxs("div",{className:"trieoh-session__info",children:[jsxRuntime.jsxs("h3",{children:[n.browser," - ",n.os]}),jsxRuntime.jsxs("span",{className:"trieoh-session__meta",children:[e&&jsxRuntime.jsx("strong",{children:"\u2022 Sess\xE3o Atual \u2022"}),jsxRuntime.jsx("span",{children:`${s} - ${qe(r)}`})]})]}),!e&&jsxRuntime.jsx(fa.FaTrashAlt,{size:20,color:"red",onClick:a=>i(a,o)})]})})}function Et({revokeAll:e=false,onSuccess:o}){let{auth:t}=R(),[r,s]=react.useState(false),[i,n]=react.useState([]),c=async()=>{let h=await t.sessions();if(h.success){let u=t.profile()?.session_id,f=h.data.sort((m,p)=>m.session_id===u?-1:p.session_id===u?1:0);n(f);}};react.useEffect(()=>{c();},[]);let a=async(h,u)=>{h.preventDefault();let f=i.find(m=>m.session_id===u);if(f){n(i.filter(m=>m.session_id!==u));try{(await t.revokeASession(u)).success||n(p=>[...p,f]);}catch{n(m=>[...m,f]);}}};return jsxRuntime.jsxs("div",{className:"trieoh trieoh-sessions",children:[jsxRuntime.jsxs("div",{className:"trieoh-sessions__header",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h3",{children:"Navegadores e Dispositivos"}),jsxRuntime.jsx("p",{children:"Esses navegadores e dispositivos est\xE3o atualmente conectados \xE0 sua conta. Remova quaisquer dispositivos n\xE3o autorizados."})]}),jsxRuntime.jsx("button",{type:"submit",onClick:async h=>{if(h.preventDefault(),r)return;s(true);let u=await t.revokeSessions(e),f=t.profile()?.session_id;u.success&&(n(e?[]:i.filter(m=>m.session_id===f)),o&&o(u.message)),s(false);},disabled:r,className:`trieoh trieoh-button trieoh-button--all-rounded
|
|
5
|
-
${r?"trieoh-button--loading":""}`,children:"Revogar todas as sess\xF5es"})]}),jsxRuntime.jsx("div",{className:"trieoh-sessions__content",children:i.length>0?i.map(h=>jsxRuntime.jsx(Re,{...h,is_current:t.profile()?.session_id===h.session_id,onClick:a},h.session_id)):jsxRuntime.jsx("span",{className:"trieoh-sessions__empty",children:"Nenhuma Sess\xE3o Dispon\xEDvel"})})]})}function Je({onSuccess:e,onFailed:o,loginRedirect:t,emailRules:r}){let[s,i]=react.useState(""),[n,c]=react.useState(false),[a,d]=react.useState(false),h=react.useRef(null),{auth:u}=R(),m=T({email:r||[{message:"Digite um e-mail v\xE1lido, ex: exemplo@dominio.com",test:y=>/\S+@\S+\.\S+/.test(y)}]}.email,s);return jsxRuntime.jsxs("form",{className:"trieoh trieoh-card trieoh-card--full-rounded",children:[jsxRuntime.jsx(B,{mainText:"Esqueci a senha",subText:"Insira seu e-mail para receber um link de redefini\xE7\xE3o."}),jsxRuntime.jsx("div",{className:"trieoh-card__fields",children:jsxRuntime.jsx(S,{label:"Email",name:"email",placeholder:"teste@gmail.com",autoComplete:"email",type:"email",value:s,onValueChange:i,inputRef:h,rulesStatus:m,submitted:n})}),jsxRuntime.jsx(L,{label:a?"Enviando...":"Enviar link de redefini\xE7\xE3o",onSubmit:async y=>{if(y.preventDefault(),c(true),m.some(I=>!I.passed)){h.current?.focus();return}d(true);let x=await u.sendForgotPassword(s);x.success?e&&await e(x.message):o&&await o(x.message,x.trace),d(false);},loading:a}),t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"trieoh-card__divider",children:[jsxRuntime.jsx("hr",{}),"OU",jsxRuntime.jsx("hr",{})]}),jsxRuntime.jsxs("span",{className:"trieoh-card__other",children:["Lembrou-se da sua senha? ",jsxRuntime.jsx("span",{onClick:t,children:"Login"})]})]})]})}exports.AuthProvider=wo;exports.BasicInputField=S;exports.BasicLogoutButton=vt;exports.Copyright=pt;exports.ForgotPassword=Je;exports.Sessions=Et;exports.SignIn=ct;exports.SignUp=dt;exports.useAuth=R;//# sourceMappingURL=react.js.map
|
|
1
|
+
'use strict';var react=require('react'),envoyFetchTs=require('@trieoh/envoy-fetch-ts'),jsxRuntime=require('react/jsx-runtime'),ri=require('react-icons/ri'),go=require('react-icons/go'),im=require('react-icons/im'),fa=require('react-icons/fa'),uaParserJs=require('ua-parser-js'),fi=require('react-icons/fi');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;function we(e,t){if(t.startsWith("http"))return t;let r=e.replace(/\/$/,""),o=t.replace(/^\//,"");return `${r}/${o}`}var K={isAuthenticated:false,isInitializing:true},xe=new Set,Le=()=>xe.forEach(e=>e()),x={subscribe:e=>(xe.add(e),()=>xe.delete(e)),getSnapshot:()=>K,getServerSnapshot:()=>K,set:e=>{K={...K,...e},Le();},reset:()=>{K={isAuthenticated:false,isInitializing:false},Le();}};typeof window<"u"&&window.addEventListener("storage",e=>{if(e.key==="trieoh_access_expiry")if(!e.newValue)x.reset();else {let t=parseInt(e.newValue,10),r=!isNaN(t)&&t>Date.now();x.set({isAuthenticated:r,isInitializing:false});}});var A={getItem:e=>typeof window<"u"?localStorage.getItem(e):null,setItem:(e,t)=>{typeof window<"u"&&localStorage.setItem(e,t);},removeItem:e=>{typeof window<"u"&&localStorage.removeItem(e);}},Y={getItem:e=>typeof window<"u"?sessionStorage.getItem(e):null,setItem:(e,t)=>{typeof window<"u"&&sessionStorage.setItem(e,t);},removeItem:e=>{typeof window<"u"&&sessionStorage.removeItem(e);}},D={get:e=>{if(typeof window>"u")return null;let t=e+"=",r=document.cookie.split(";");for(let o=0;o<r.length;o++){let i=r[o];for(;i.charAt(0)===" ";)i=i.substring(1,i.length);if(i.indexOf(t)===0)return i.substring(t.length,i.length)}return null},set:(e,t,r={})=>{if(typeof window>"u")return;let{expires:o,path:i="/",domain:s,secure:n=window.location.protocol==="https:",sameSite:l=n?"None":"Lax"}=r,a=window.location.hostname==="localhost",m=[`${e}=${t}`,s&&!a?`Domain=${s}`:"",`Path=${i}`,`SameSite=${l}`,n?"Secure":"",o?`expires=${o}`:""];document.cookie=m.filter(Boolean).join("; ");},remove:(e,t)=>{D.set(e,"",{expires:"Thu, 01 Jan 1970 00:00:00 GMT",domain:t});}};var ie="trieoh_access_token",B={getAccessToken:()=>Y.getItem(ie),setAccessToken:e=>{e?Y.setItem(ie,e):Y.removeItem(ie);},clear:()=>{Y.removeItem(ie);}};var z=null,be="trieoh_access_expiry",ae="trieoh_refresh_expiry",ne="trieoh_refresh_domain";function De(e){if(typeof window>"u")return null;let t=window.location.hostname;if(e)try{let r=e;return r.startsWith("http")&&(r=new URL(r).hostname),r}catch{return e}return t}function Oe(e){try{let t=e.split(".")[1];return JSON.parse(atob(t))}catch{return null}}function G(e){let{access_token_string:t,refresh_token_string:r,access_expires_at:o,refresh_expires_at:i}=e,s=Oe(t);if(!s){envoyFetchTs.logger.error("Failed to decode tokens");return}B.setAccessToken(t);let n=new Date(i).getTime(),l=new Date(o).getTime(),a=De(e.domain);D.set("refresh_token",r,{expires:new Date(n).toUTCString(),domain:a}),z={access_data:s,refresh_expiry_date:n},A.setItem(be,String(l)),A.setItem(ae,String(n)),a?A.setItem(ne,a):A.removeItem(ne),x.set({isAuthenticated:true,isInitializing:false}),envoyFetchTs.logger.log("Auth session saved");}function X(){if(z)return z;let e=B.getAccessToken();if(!e)return null;let t=Oe(e);if(!t||t.exp*1e3<=Date.now())return null;let r=A.getItem(ae);return r?(z={access_data:t,refresh_expiry_date:parseInt(r,10)},z):null}function Me(e,t){try{let r=A.getItem(e);if(!r)return !0;let o=parseInt(r,10);return isNaN(o)?!0:o-Date.now()<=t*1e3}catch(r){return envoyFetchTs.logger.warn("Error reading expiry:",r),true}}var ye=(e=30)=>Me(be,e),le=(e=10)=>Me(ae,e);function V(){z=null,B.clear(),A.removeItem(be),A.removeItem(ae);let e=A.getItem(ne)||De();D.remove("refresh_token",e),A.removeItem(ne),x.reset(),envoyFetchTs.logger.log("Auth tokens and claims cleared");}function Be(){let e=X();return e?e.access_data.sub:null}function ot(){let e=typeof window>"u",t=typeof ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('react.js', document.baseURI).href)) })<"u"&&undefined?undefined:{},r=typeof process<"u"?process.env:{},o=t.VITE_TRIEOH_AUTH_PROJECT_ID||r.NEXT_PUBLIC_TRIEOH_AUTH_PROJECT_ID||r.PUBLIC_TRIEOH_AUTH_PROJECT_ID||"",i=e&&r.TRIEOH_AUTH_API_KEY||"";return {PROJECT_ID:o,API_KEY:i,BASE_URL:"https://api.trieauth.trieoh.com"}}var ce=null,Re={};function Fe(e){Re={...Re,...e},ce=null;}function Se(){return ce||(ce={...ot(),...Re}),ce}var b={get PROJECT_ID(){return Se().PROJECT_ID},get BASE_URL(){return Se().BASE_URL}};var ue=class{constructor(t){this.isRefreshing=false;this.refreshPromise=null;this.baseURL=t?.baseURL||b.BASE_URL,this.authBaseURL=t?.authBaseURL||this.baseURL,this.onTokenRefreshed=t?.onTokenRefreshed,this.onRefreshFailed=t?.onRefreshFailed;}async refreshToken(){return this.isRefreshing&&this.refreshPromise?this.refreshPromise:(this.isRefreshing=true,this.refreshPromise=(async()=>{try{let t=await envoyFetchTs.simpleFetch(we(this.authBaseURL,"/auth/refresh"),{method:"POST",credentials:"include"});if(t.code!==200||!t.data)throw t.code!==503&&V(),new Error(t.message||"Failed to refresh token");G(t.data);let r=X();r&&this.onTokenRefreshed?.(r),envoyFetchTs.logger.log("Token refreshed successfully");}catch(t){throw envoyFetchTs.logger.warn("Failed to refresh token:",t),V(),this.onRefreshFailed?.(t),t}finally{this.isRefreshing=false,this.refreshPromise=null;}})(),this.refreshPromise)}async beforeRequest(){if(le()){V();return}let t=!!B.getAccessToken(),r=!!D.get("refresh_token");if(!t&&r||t&&ye(30))try{await this.refreshToken();}catch(o){envoyFetchTs.logger.warn("Proactive refresh failed:",o);}}async fetch(t,r){let o=r?.requiresAuth!==false,i=t.includes("/auth/refresh");o&&!i&&!r?.skipRefresh&&await this.beforeRequest();let s=we(this.baseURL,t),n=async()=>{let a=B.getAccessToken(),m=new Headers(r?.headers);return o&&a&&m.set("Authorization",`Bearer ${a}`),m.has("Content-Type")||m.set("Content-Type","application/json"),fetch(s,{...r,headers:m,credentials:"include"})},l=await n();if(l.status===401&&o&&!i&&ye(30)){envoyFetchTs.logger.log("401 detected and token is expiring/expired, attempting refresh...");try{await this.refreshToken(),l=await n();}catch{envoyFetchTs.logger.error("Retry failed after refresh error");}}return l}};function F(e){if(!e)return;let{requiresAuth:t,skipRefresh:r,...o}=e,i={};return t!==void 0&&(i.requiresAuth=t),r!==void 0&&(i.skipRefresh=r),{...o,adapterInit:{...o.adapterInit,...i}}}var me=class{constructor(t,r,o,i){this.interceptor=new ue({baseURL:t,authBaseURL:r,onTokenRefreshed:o}),this.client=envoyFetchTs.createDefaultFetchClient({...i,adapter:this.interceptor.fetch.bind(this.interceptor)});}request(t,r){return this.client.request(t,F(r))}get(t,r){return this.client.get(t,F(r))}post(t,r,o){return this.client.post(t,r,F(o))}put(t,r,o){return this.client.put(t,r,F(o))}patch(t,r,o){return this.client.patch(t,r,F(o))}delete(t,r,o){return this.client.delete(t,r,F(o))}query(t,r){return this.client.query(t,F(r))}};var q=()=>{if(!b.PROJECT_ID||b.PROJECT_ID.trim()==="")throw new Error("[TRIEOH SDK] Project ID is missing. Please set PUBLIC_TRIEOH_AUTH_PROJECT_ID, NEXT_PUBLIC_TRIEOH_AUTH_PROJECT_ID or VITE_TRIEOH_AUTH_PROJECT_ID.")};var Ue=(e,t)=>({login:async(r,o)=>{b.PROJECT_ID&&q();let i=`/auth/login${b.PROJECT_ID?`?project_id=${b.PROJECT_ID}`:""}`,s=await e.post(i,{email:r,password:o},{requiresAuth:false});return s.success&&(G(s.data),t?.onLogin?.(s)),s},register:async(r,o)=>{let i={requiresAuth:false},s=`/auth/register${b.PROJECT_ID?`?project_id=${b.PROJECT_ID}`:""}`;b.PROJECT_ID&&q();let n=await e.post(s,{email:r,password:o},i);return n.success&&t?.onRegister?.(n),n},logout:async r=>{let o=`/auth/logout${b.PROJECT_ID?`?project_id=${b.PROJECT_ID}`:""}`,i=await e.post(o);return (i.success||r?.forceLogout)&&V(),i},refresh:async()=>{let r=await e.post("/auth/refresh",void 0,{skipRefresh:true});return r.success&&(G(r.data),t?.onRefresh?.(r)),r},sessions:async()=>e.get("/sessions"),currentSession:async()=>e.get("/sessions/me"),revokeASession:async r=>e.delete(`/sessions/${r}`),revokeSessions:async(r=false)=>{let o=r?"/sessions":"/sessions/others";return e.delete(o)},profile:()=>Be(),sendForgotPassword:async r=>{let o={requiresAuth:false};return b.PROJECT_ID?(q(),e.post("/account/forgot-password",{email:r,project_id:b.PROJECT_ID},o)):e.post("/account/forgot-password",{email:r},o)},resetPassword:async(r,o)=>{let i=await e.post(`/account/reset-password?token=${r}`,{new_password:o},{requiresAuth:false});return i.success&&t?.onResetPassword?.(i),i},verifyEmail:async r=>{let o=`/account/verify?token=${r}`,i=await e.post(o);return i.success&&t?.onVerify?.(i),i},resendVerifyEmail:async()=>e.post("/account/verify/resend"),health:async()=>e.get("/health",{requiresAuth:false}),authHealth:async()=>e.get("/protected/health")});var ze=react.createContext(null);function Hr({children:e,baseURL:t,projectId:r,isProjectMode:o=true,fallback:i,waitSession:s=true,clientConfig:n,onLogin:l,onResetPassword:a,onRegister:m,onVerify:f,onRefresh:p}){let h=react.useRef(false),{isAuthenticated:d,isInitializing:c}=react.useSyncExternalStore(x.subscribe,x.getSnapshot,x.getServerSnapshot);react.useEffect(()=>{Fe({...r?{PROJECT_ID:r}:{},...t?{BASE_URL:t}:{}});},[r,t]);let S=react.useCallback(L=>{x.set({isAuthenticated:!!L.access_data,isInitializing:false}),p?.();},[p]),R=react.useMemo(()=>new me(t,void 0,S,n),[t,S,n]),w=react.useMemo(()=>Ue(R,{onLogin:l,onResetPassword:a,onRegister:m,onVerify:f,onRefresh:p}),[R,l,a,m,f,p]);react.useEffect(()=>{o&&q(),(async()=>{if(h.current)return;if(h.current=true,X()){x.set({isAuthenticated:true,isInitializing:false});return}if(!!!D.get("refresh_token")||le()){x.reset(),x.set({isInitializing:false});return}envoyFetchTs.logger.log("No cached claims, attempting silent refresh...");try{(await w.refresh()).success?(x.set({isAuthenticated:!0,isInitializing:!1}),envoyFetchTs.logger.log("Session restored.")):(x.reset(),envoyFetchTs.logger.warn("No active session."));}catch{x.reset(),envoyFetchTs.logger.warn("Could not restore session (offline?).");}finally{x.set({isInitializing:false});}})();},[w,o]);let C=react.useMemo(()=>({auth:w,isAuthenticated:d,isInitializing:c,isProjectMode:o}),[w,d,c,o]);return s&&c?i??null:jsxRuntime.jsx(ze.Provider,{value:C,children:e})}function y(){let e=react.useContext(ze);if(!e)throw new Error("useAuth must be used inside <AuthProvider>");return e}function Ee(e,{insertAt:t}={}){if(typeof document>"u")return;let r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",t==="top"&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e));}Ee(`/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing: .25rem;--font-weight-extralight: 200;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--radius-lg: .5rem;--ease-in-out: cubic-bezier(.4, 0, .2, 1);--animate-spin: spin 1s linear infinite;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono);--color-trieoh-primary: oklch(.1139 .0789 264.05);--color-trieoh-secondary: oklch(.7975 .1018 262.7);--color-trieoh-neutral1: oklch(.9702 0 0);--color-trieoh-neutral2: oklch(.1944 .0051 248.09);--radius-trieoh-full: 50%;--font-inter: "Inter", sans-serif}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor;@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.\\@container{container-type:inline-size}.trieoh-button-loading{&:after{content:"";position:absolute;top:0;left:-150%;width:150%;height:100%;background:linear-gradient(120deg,transparent 0%,var(--trieoh-neutral2) 40%,transparent 80%);@supports (color: color-mix(in lab,red,red)){background:linear-gradient(120deg,transparent 0%,color-mix(in oklab,var(--trieoh-neutral2) 40%,white 15%) 40%,transparent 80%)}animation:trieoh-shine 1.5s infinite}}.absolute{position:absolute}.relative{position:relative}.top-0{top:calc(var(--spacing) * 0)}.right-0{right:calc(var(--spacing) * 0)}.m-0{margin:calc(var(--spacing) * 0)}.m-2{margin:calc(var(--spacing) * 2)}.m-\\[0\\.125rem\\]{margin:.125rem}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-\\[0\\.625rem\\]{margin-bottom:.625rem}.box-border{box-sizing:border-box}.block{display:block}.contents{display:contents}.flex{display:flex}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-\\[3\\.25rem\\]{height:3.25rem}.h-\\[64px\\]{height:64px}.h-auto{height:auto}.h-full{height:100%}.max-h-\\[max\\(75dvh\\,32rem\\)\\]{max-height:max(75dvh,32rem)}.min-h-screen{min-height:100vh}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-\\[64px\\]{width:64px}.w-full{width:100%}.max-w-\\[14rem\\]{max-width:14rem}.max-w-\\[25rem\\]{max-width:25rem}.max-w-\\[30rem\\]{max-width:30rem}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\\[10rem\\]{min-width:10rem}.min-w-\\[15rem\\]{min-width:15rem}.min-w-\\[20rem\\]{min-width:20rem}.flex-1{flex:1}.flex-\\[0_1_auto\\]{flex:0 1 auto}.flex-\\[1_1_auto\\]{flex:1 1 auto}.shrink-0{flex-shrink:0}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.appearance-none{appearance:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-\\[0\\.625rem\\]{gap:.625rem}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-\\[0\\.25rem\\]{border-radius:.25rem}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-trieoh-full{border-radius:var(--radius-trieoh-full)}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-none{--tw-border-style: none;border-style:none}.\\!border-\\[\\#e53935\\]{border-color:#e53935!important}.border-\\[rgba\\(0\\,0\\,0\\,0\\.3\\)\\]{border-color:#0000004d}.border-trieoh-neutral2{border-color:var(--color-trieoh-neutral2)}.border-trieoh-secondary{border-color:var(--color-trieoh-secondary)}.bg-\\[oklch\\(0\\.8853_0_0\\/30\\%\\)\\]{background-color:#d9d9d94d}.bg-transparent{background-color:transparent}.bg-trieoh-neutral1{background-color:var(--color-trieoh-neutral1)}.bg-trieoh-secondary\\/10{background-color:color-mix(in srgb,oklch(.7975 .1018 262.7) 10%,transparent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-trieoh-secondary) 10%,transparent)}}.p-2{padding:calc(var(--spacing) * 2)}.p-6{padding:calc(var(--spacing) * 6)}.p-\\[0\\.625rem\\]{padding:.625rem}.p-\\[1\\.5rem_0\\.5rem\\]{padding:1.5rem .5rem}.p-\\[1\\.25rem_0\\.75rem\\]{padding:1.25rem .75rem}.p-\\[1\\.25rem_1\\.5rem\\]{padding:1.25rem 1.5rem}.p-\\[1rem_0\\]{padding:1rem 0}.px-\\[0\\.75rem\\]{padding-inline:.75rem}.px-\\[0\\.625rem\\]{padding-inline:.625rem}.px-\\[1\\.5rem\\]{padding-inline:1.5rem}.py-4{padding-block:calc(var(--spacing) * 4)}.py-\\[0\\.125rem\\]{padding-block:.125rem}.py-\\[0\\.0625rem\\]{padding-block:.0625rem}.text-center{text-align:center}.font-inter{font-family:var(--font-inter)}.text-\\[0\\.75rem\\]{font-size:.75rem}.text-\\[0\\.875rem\\]{font-size:.875rem}.text-\\[1rem\\]{font-size:1rem}.font-extralight{--tw-font-weight: var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-light{--tw-font-weight: var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight: var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-\\[\\#6b7280\\]{color:#6b7280}.text-\\[\\#10b981\\]{color:#10b981}.text-\\[\\#e53935\\]{color:#e53935}.text-\\[oklch\\(0\\.628_0\\.2577_29\\.23\\)\\]{color:red}.text-trieoh-neutral2{color:var(--color-trieoh-neutral2)}.text-trieoh-primary{color:var(--color-trieoh-primary)}.text-trieoh-secondary{color:var(--color-trieoh-secondary)}.line-through{text-decoration-line:line-through}.opacity-50{opacity:50%}.opacity-60{opacity:60%}.opacity-95{opacity:95%}.opacity-100{opacity:100%}.\\!shadow-none{--tw-shadow: 0 0 #0000 !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-\\[0_0\\.25rem_0\\.25rem_0_rgba\\(0\\,0\\,0\\,0\\.25\\)\\]{--tw-shadow: 0 .25rem .25rem 0 var(--tw-shadow-color, rgba(0,0,0,.25));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0\\.25rem_1rem_rgba\\(0\\,0\\,0\\,0\\.25\\)\\]{--tw-shadow: 0 .25rem 1rem var(--tw-shadow-color, rgba(0,0,0,.25));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition-\\[color\\,text-decoration\\,opacity\\]{transition-property:color,text-decoration,opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.duration-150{--tw-duration: .15s;transition-duration:.15s}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-500{--tw-duration: .5s;transition-duration:.5s}.duration-\\[120ms\\]{--tw-duration: .12s;transition-duration:.12s}.ease-in-out{--tw-ease: var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style: none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.hover\\:scale-\\[1\\.02\\]{&:hover{@media(hover:hover){scale:1.02}}}.hover\\:scale-\\[1\\.05\\]{&:hover{@media(hover:hover){scale:1.05}}}.hover\\:text-trieoh-primary{&:hover{@media(hover:hover){color:var(--color-trieoh-primary)}}}.hover\\:opacity-100{&:hover{@media(hover:hover){opacity:100%}}}.active\\:scale-\\[0\\.95\\]{&:active{scale:.95}}.active\\:scale-\\[0\\.98\\]{&:active{scale:.98}}.active\\:scale-\\[0\\.99\\]{&:active{scale:.99}}.disabled\\:\\!transform-none{&:disabled{transform:none!important}}.disabled\\:cursor-not-allowed{&:disabled{cursor:not-allowed}}.disabled\\:opacity-60{&:disabled{opacity:60%}}.\\@\\[640px\\]\\:flex-row{@container (width >= 640px){flex-direction:row}}.\\@\\[640px\\]\\:items-center{@container (width >= 640px){align-items:center}}.\\@\\[640px\\]\\:justify-between{@container (width >= 640px){justify-content:space-between}}.\\@\\[640px\\]\\:gap-2{@container (width >= 640px){gap:calc(var(--spacing) * 2)}}.\\@\\[640px\\]\\:gap-4{@container (width >= 640px){gap:calc(var(--spacing) * 4)}}.\\@\\[640px\\]\\:gap-8{@container (width >= 640px){gap:calc(var(--spacing) * 8)}}.\\@\\[640px\\]\\:text-left{@container (width >= 640px){text-align:left}}}@import url(https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap);@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@keyframes spin{to{transform:rotate(360deg)}}@keyframes trieoh-shine{0%{left:-150%}to{left:150%}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-duration: initial;--tw-ease: initial}}}
|
|
2
|
+
`);function _({name:e,label:t,placeholder:r,type:o="text",value:i,onValueChange:s,onBlur:n,autoComplete:l,rulesStatus:a=[],submitted:m=false,inputRef:f}){let[p,h]=react.useState(false),d=a.some(c=>!c.passed);return jsxRuntime.jsxs("div",{className:"font-inter relative w-full flex flex-col gap-1 text-trieoh-neutral2",children:[jsxRuntime.jsx("label",{htmlFor:e,className:"text-[1rem] font-semibold",children:t}),jsxRuntime.jsxs("div",{className:`flex justify-between items-center px-[0.625rem] py-[0.0625rem] gap-[0.625rem] border-b-2 border-trieoh-neutral2 ${d&&m?"!border-[#e53935]":""}`,children:[jsxRuntime.jsx("input",{type:p?"text":o,name:e,id:e,placeholder:r,value:i,onChange:c=>s&&s(c.target.value),onBlur:n,autoComplete:l,"aria-invalid":d&&m,ref:f,className:"min-w-[10rem] flex-1 text-trieoh-base font-light text-trieoh-neutral2 appearance-none bg-transparent outline-none border-none !shadow-none py-[0.125rem]"}),o==="password"&&(p?jsxRuntime.jsx(ri.RiEyeCloseLine,{className:"cursor-pointer shrink-0 select-none",size:24,onClick:()=>h(false)}):jsxRuntime.jsx(ri.RiEyeLine,{className:"cursor-pointer shrink-0 select-none",size:24,onClick:()=>h(true)}))]}),jsxRuntime.jsx("div",{className:"text-[0.75rem] text-[#6b7280] transition-opacity duration-200 ease-in-out",children:a.map((c,S)=>{let R=["transition-[color,text-decoration,opacity] duration-[120ms] ease opacity-95 m-[0.125rem]",c.passed?"line-through opacity-60 text-[#10b981]":"",!c.passed&&m?"text-[#e53935] font-semibold opacity-100":""].filter(Boolean).join(" ");return jsxRuntime.jsx("p",{className:R,children:c.message},c.id??S)})})]})}function E({label:e,onSubmit:t,loading:r}){return jsxRuntime.jsx("button",{type:"submit",onClick:t,disabled:r,className:`font-inter w-full h-[3.25rem] text-trieoh-xl font-semibold outline-none bg-transparent relative overflow-hidden min-w-[10rem] shrink-0 border-2 border-trieoh-neutral2 text-trieoh-neutral2 cursor-pointer px-[1.5rem] transition-transform duration-500 rounded-[0.25rem] hover:scale-[1.02] active:scale-[0.99] disabled:opacity-60 disabled:cursor-not-allowed disabled:!transform-none ${r?"trieoh-button-loading":""}`,children:e})}function k({mainText:e,subText:t}){return jsxRuntime.jsxs("div",{className:"font-inter flex flex-col items-center",children:[jsxRuntime.jsx("div",{className:"flex justify-center items-center p-2 bg-[oklch(0.8853_0_0/30%)] rounded-trieoh-full mb-[0.625rem]",children:jsxRuntime.jsx(go.GoPerson,{className:"w-[64px] h-[64px] p-[0.625rem] bg-trieoh-neutral1 rounded-trieoh-full shadow-[0_0.25rem_1rem_rgba(0,0,0,0.25)]",size:70})}),jsxRuntime.jsx("h3",{className:"text-center text-trieoh-xl font-medium m-0",children:e}),jsxRuntime.jsx("span",{className:"text-center text-[0.875rem] font-light opacity-60",children:t})]})}function T(e,t){return e.map(r=>({id:r.id,message:r.message,passed:!!r.test(t)}))}function wt({onSuccess:e,onFailed:t,signUpRedirect:r,forgotPasswordRedirect:o,emailRules:i}){let[s,n]=react.useState(""),[l,a]=react.useState(""),[m,f]=react.useState(false),[p,h]=react.useState(false),d=react.useRef(null),c=react.useRef(null),{auth:S}=y(),R={email:i||[{message:"Digite um e-mail v\xE1lido, ex: exemplo@dominio.com",test:v=>/\S+@\S+\.\S+/.test(v)}],password:[]},w=T(R.email,s),C=T(R.password,l);return jsxRuntime.jsxs("form",{className:"font-inter flex flex-col w-full max-w-[30rem] min-w-[15rem] max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-trieoh-neutral1 text-trieoh-neutral2 p-[1.25rem_1.5rem] shadow-[0_0.25rem_0.25rem_0_rgba(0,0,0,0.25)] transition-transform duration-150 ease-in-out rounded-[0.25rem]",children:[jsxRuntime.jsx(k,{mainText:"Fa\xE7a login na sua conta",subText:"Insira seus dados para fazer login"}),jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-[0.625rem] flex-[1_1_auto] overflow-y-auto mb-2",children:[jsxRuntime.jsx(_,{label:"Email",name:"email",placeholder:"teste@gmail.com",autoComplete:"email",type:"email",value:s,onValueChange:n,inputRef:d,rulesStatus:w,submitted:m}),jsxRuntime.jsx(_,{label:"Senha",name:"password",placeholder:"**********",autoComplete:"current-password",type:"password",value:l,onValueChange:a,inputRef:c,rulesStatus:C,submitted:m})]}),jsxRuntime.jsx(E,{label:"Entrar",onSubmit:async v=>{v.preventDefault(),f(true);let M=w.some(g=>!g.passed),H=C.some(g=>!g.passed);if(M){d.current?.focus();return}if(H){c.current?.focus();return}h(true);let P=await S.login(s,l);P.success?e&&await e(P.message):t&&await t(P.message,P.trace),h(false);},loading:p}),o&&jsxRuntime.jsx("span",{className:"text-trieoh-sm font-semibold text-center cursor-pointer",children:jsxRuntime.jsx("span",{className:"cursor-pointer text-trieoh-secondary transition-colors duration-200 hover:text-trieoh-primary",onClick:o,children:"Esqueceu sua senha?"})}),r&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-[0.625rem] w-full text-trieoh-base font-semibold opacity-60",children:[jsxRuntime.jsx("hr",{className:"flex-1"}),"OU",jsxRuntime.jsx("hr",{className:"flex-1"})]}),jsxRuntime.jsxs("span",{className:"text-trieoh-sm font-semibold",children:["Ainda n\xE3o possui uma conta? ",jsxRuntime.jsx("span",{className:"cursor-pointer text-trieoh-secondary transition-colors duration-200 hover:text-trieoh-primary",onClick:r,children:"Cadastra-se"})]})]})]})}function bt({onSuccess:e,onFailed:t,loginRedirect:r,emailRules:o,passwordRules:i}){let[s,n]=react.useState(""),[l,a]=react.useState(""),[m,f]=react.useState(""),[p,h]=react.useState(false),[d,c]=react.useState(false),S=react.useRef(null),R=react.useRef(null),w=react.useRef(null),{auth:C}=y(),L={email:o||[{message:"Digite um e-mail v\xE1lido, ex: exemplo@dominio.com",test:g=>/\S+@\S+\.\S+/.test(g)}],password:i||[{message:"M\xEDnimo de 8 caracteres.",test:g=>g.length>=8},{message:"Deve conter uma letra mai\xFAscula.",test:g=>/[A-Z]/.test(g)},{message:"Inclua pelo menos um caractere especial, ex: ! @ # $ % & * . ,",test:g=>/[!@#$%^&*(),.?":{}|<>_\-+=~`;/\\[\]]/.test(g)},{message:"Deve conter um n\xFAmero.",test:g=>/\d/.test(g)}],confirmPassword:[{message:"Senhas n\xE3o conferem.",test:g=>g===l}]},v=T(L.email,s),M=T(L.password,l),H=T(L.confirmPassword,m);return jsxRuntime.jsxs("form",{className:"font-inter flex flex-col w-full max-w-[30rem] min-w-[15rem] max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-trieoh-neutral1 text-trieoh-neutral2 p-[1.25rem_1.5rem] shadow-[0_0.25rem_0.25rem_0_rgba(0,0,0,0.25)] transition-transform duration-150 ease-in-out rounded-[0.25rem]",children:[jsxRuntime.jsx(k,{mainText:"Crie sua conta",subText:"Insira seus dados para come\xE7ar"}),jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-[0.625rem] flex-[1_1_auto] overflow-y-auto mb-2",children:[jsxRuntime.jsx(_,{label:"Email",name:"email",placeholder:"teste@gmail.com",autoComplete:"email",type:"email",value:s,onValueChange:n,inputRef:S,rulesStatus:v,submitted:p}),jsxRuntime.jsx(_,{label:"Senha",name:"password",placeholder:"**********",autoComplete:"new-password",type:"password",value:l,onValueChange:a,inputRef:R,rulesStatus:M,submitted:p}),jsxRuntime.jsx(_,{label:"Confirme a Senha",name:"confirm-password",placeholder:"**********",autoComplete:"new-password",type:"password",value:m,onValueChange:f,inputRef:w,rulesStatus:H,submitted:p})]}),jsxRuntime.jsx(E,{label:"Criar Conta",onSubmit:async g=>{g.preventDefault(),h(true);let et=v.some(j=>!j.passed),tt=M.some(j=>!j.passed),rt=H.some(j=>!j.passed);if(et){S.current?.focus();return}if(tt){R.current?.focus();return}if(rt){w.current?.focus();return}c(true);let oe=await C.register(s,l);oe.success?e&&await e(oe.message):t&&await t(oe.message,oe.trace),c(false);},loading:d}),r&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-[0.625rem] w-full text-trieoh-base font-semibold opacity-60",children:[jsxRuntime.jsx("hr",{className:"flex-1"}),"OU",jsxRuntime.jsx("hr",{className:"flex-1"})]}),jsxRuntime.jsxs("span",{className:"text-trieoh-sm font-semibold",children:["J\xE1 possui uma conta? ",jsxRuntime.jsx("span",{className:"cursor-pointer text-trieoh-secondary transition-colors duration-200 hover:text-trieoh-primary",onClick:r,children:"Entre"})]})]})]})}var St={xs:"text-trieoh-sm",sm:"text-trieoh-base",md:"text-trieoh-xl",lg:"text-trieoh-2xl",xl:"text-trieoh-3xl","2xl":"text-trieoh-6xl"};function Rt({size:e}){let t=e?St[e]:"text-trieoh-xl";return jsxRuntime.jsxs("span",{className:`font-inter font-medium ${t}`,children:["\xA9 ",new Date().getFullYear()," TrieOH"]})}function Tt({onSuccess:e,onFailed:t,forceLogout:r}){let{auth:o}=y(),[i,s]=react.useState(false);return jsxRuntime.jsxs("button",{onClick:async l=>{if(l.preventDefault(),i)return;s(true);let a=await o.logout({forceLogout:r});a.success?e&&await e(a.message):t&&await t(a.message,a.trace),s(false);},type:"button",disabled:i,className:"font-inter border-none bg-transparent cursor-pointer flex items-end gap-1 text-trieoh-base font-medium text-[oklch(0.628_0.2577_29.23)] transition-transform duration-200 hover:scale-[1.05] active:scale-[0.98] disabled:opacity-60 disabled:cursor-not-allowed disabled:!transform-none",children:[jsxRuntime.jsx(im.ImExit,{size:24})," ",jsxRuntime.jsx("span",{children:"Log out"})]})}var Je={mobile:fa.FaMobileAlt,tablet:fa.FaTabletAlt,desktop:fa.FaDesktop};function je(e){let{device:t,os:r,browser:o}=uaParserJs.UAParser(e);return {deviceType:t.type??"desktop",os:r.name,browser:o.name}}function Ke(e){let t=je(e);return {device:Lt(t.deviceType),os:t.os,browser:t.browser}}function Lt(e){if(!e)return "desktop";switch(e){case "mobile":return "mobile";case "tablet":return "tablet";default:return "desktop"}}function Ye(e){let t=Date.now()-new Date(e).getTime(),r=Math.floor(t/1e3),o=Math.floor(r/60),i=Math.floor(o/60),s=Math.floor(i/24),n=Math.floor(s/7);return r<60?"agora mesmo":o<60?`${o} minutos atr\xE1s`:i<24?`${i} horas atr\xE1s`:s<7?`${s} dias atr\xE1s`:`${n} semanas atr\xE1s`}function Te({is_current:e,session_id:t,user_agent:r,issued_at:o,user_ip:i,onClick:s}){let n=Ke(r),l=Je[n.device];return jsxRuntime.jsx("div",{className:"border-t border-[rgba(0,0,0,0.3)] p-[1.25rem_0.75rem] text-trieoh-neutral2",children:jsxRuntime.jsxs("div",{className:"relative flex flex-col items-center gap-2 flex-1 text-center @[640px]:flex-row @[640px]:items-center @[640px]:gap-4 @[640px]:text-left",children:[jsxRuntime.jsx(l,{size:40}),jsxRuntime.jsxs("div",{className:"flex flex-col min-w-0",children:[jsxRuntime.jsxs("h3",{className:"text-trieoh-base font-semibold m-0",children:[n.browser," - ",n.os]}),jsxRuntime.jsxs("span",{className:"inline-flex flex-col text-trieoh-sm font-extralight @[640px]:flex-row @[640px]:gap-2 @[640px]:items-center",children:[e&&jsxRuntime.jsx("strong",{className:"text-trieoh-primary font-normal",children:"\u2022 Sess\xE3o Atual \u2022"}),jsxRuntime.jsx("span",{children:`${i} - ${Ye(o)}`})]})]}),!e&&jsxRuntime.jsx(fa.FaTrashAlt,{size:20,color:"red",onClick:a=>s(a,t),className:"absolute top-0 right-0 cursor-pointer opacity-60 transition-[opacity,transform] duration-200 hover:opacity-100 hover:scale-[1.05] active:scale-[0.95]"})]})})}function Mt({revokeAll:e=false,onSuccess:t}){let{auth:r}=y(),[o,i]=react.useState(false),[s,n]=react.useState([]),l=async()=>{let f=await r.sessions();if(f.success){let p=r.profile()?.session_id,h=f.data.sort((d,c)=>d.session_id===p?-1:c.session_id===p?1:0);n(h);}};react.useEffect(()=>{l();},[]);let a=async(f,p)=>{f.preventDefault();let h=s.find(d=>d.session_id===p);if(h){n(s.filter(d=>d.session_id!==p));try{(await r.revokeASession(p)).success||n(c=>[...c,h]);}catch{n(d=>[...d,h]);}}};return jsxRuntime.jsxs("div",{className:"font-inter w-full min-w-[20rem] m-2 @container bg-trieoh-neutral1 text-trieoh-neutral2 p-[1.5rem_0.5rem] rounded-lg",children:[jsxRuntime.jsxs("div",{className:"w-full flex flex-wrap items-center justify-center text-center gap-4 box-border px-[0.75rem] @[640px]:justify-between @[640px]:text-left @[640px]:gap-8",children:[jsxRuntime.jsxs("div",{className:"flex-[0_1_auto] max-w-[25rem]",children:[jsxRuntime.jsx("h3",{className:"font-semibold text-trieoh-2xl m-0 mb-1",children:"Navegadores e Dispositivos"}),jsxRuntime.jsx("p",{className:"font-extralight text-trieoh-base m-0",children:"Esses navegadores e dispositivos est\xE3o atualmente conectados \xE0 sua conta. Remova quaisquer dispositivos n\xE3o autorizados."})]}),jsxRuntime.jsx("button",{type:"submit",onClick:async f=>{if(f.preventDefault(),o)return;i(true);let p=await r.revokeSessions(e),h=r.profile()?.session_id;p.success&&(n(e?[]:s.filter(d=>d.session_id===h)),t&&t(p.message)),i(false);},disabled:o,className:`font-inter w-full max-w-[14rem] p-[1rem_0] h-auto text-trieoh-base font-semibold outline-none bg-transparent relative overflow-hidden shrink-0 border-2 border-trieoh-neutral2 text-trieoh-neutral2 cursor-pointer transition-transform duration-500 rounded-[0.25rem] hover:scale-[1.02] active:scale-[0.99] disabled:opacity-60 disabled:cursor-not-allowed disabled:!transform-none ${o?"trieoh-button-loading":""}`,children:"Revogar todas as sess\xF5es"})]}),jsxRuntime.jsx("div",{className:"mt-4",children:s.length>0?s.map(f=>jsxRuntime.jsx(Te,{...f,is_current:r.profile()?.session_id===f.session_id,onClick:a},f.session_id)):jsxRuntime.jsx("span",{className:"block border-t border-[rgba(0,0,0,0.3)] p-[1.25rem_0.75rem] text-center font-semibold",children:"Nenhuma Sess\xE3o Dispon\xEDvel"})})]})}function Xe({onSuccess:e,onFailed:t,loginRedirect:r,emailRules:o}){let[i,s]=react.useState(""),[n,l]=react.useState(false),[a,m]=react.useState(false),f=react.useRef(null),{auth:p}=y(),d=T({email:o||[{message:"Digite um e-mail v\xE1lido, ex: exemplo@dominio.com",test:S=>/\S+@\S+\.\S+/.test(S)}]}.email,i);return jsxRuntime.jsxs("form",{className:"font-inter flex flex-col w-full max-w-[30rem] min-w-[15rem] max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-trieoh-neutral1 text-trieoh-neutral2 p-[1.25rem_1.5rem] shadow-[0_0.25rem_0.25rem_0_rgba(0,0,0,0.25)] transition-transform duration-150 ease-in-out rounded-[0.25rem]",children:[jsxRuntime.jsx(k,{mainText:"Esqueci a senha",subText:"Insira seu e-mail para receber um link de redefini\xE7\xE3o."}),jsxRuntime.jsx("div",{className:"w-full flex flex-col gap-[0.625rem] flex-[1_1_auto] overflow-y-auto mb-2",children:jsxRuntime.jsx(_,{label:"Email",name:"email",placeholder:"teste@gmail.com",autoComplete:"email",type:"email",value:i,onValueChange:s,inputRef:f,rulesStatus:d,submitted:n})}),jsxRuntime.jsx(E,{label:a?"Enviando...":"Enviar link de redefini\xE7\xE3o",onSubmit:async S=>{if(S.preventDefault(),l(true),d.some(C=>!C.passed)){f.current?.focus();return}m(true);let w=await p.sendForgotPassword(i);w.success?e&&await e(w.message):t&&await t(w.message,w.trace),m(false);},loading:a}),r&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-[0.625rem] w-full text-trieoh-base font-semibold opacity-60",children:[jsxRuntime.jsx("hr",{className:"flex-1"}),"OU",jsxRuntime.jsx("hr",{className:"flex-1"})]}),jsxRuntime.jsxs("span",{className:"text-trieoh-sm font-semibold",children:["Lembrou-se da sua senha? ",jsxRuntime.jsx("span",{className:"cursor-pointer text-trieoh-secondary transition-colors duration-200 hover:text-trieoh-primary",onClick:r,children:"Login"})]})]})]})}function Ut({token:e,onSuccess:t,onFailed:r,loginRedirect:o,passwordRules:i}){let[s,n]=react.useState(""),[l,a]=react.useState(""),[m,f]=react.useState(false),[p,h]=react.useState(false),d=react.useRef(null),c=react.useRef(null),{auth:S}=y(),R={password:i||[{message:"M\xEDnimo de 8 caracteres.",test:v=>v.length>=8},{message:"Deve conter uma letra mai\xFAscula.",test:v=>/[A-Z]/.test(v)},{message:"Inclua pelo menos um caractere especial, ex: ! @ # $ % & * . ,",test:v=>/[!@#$%^&*(),.?":{}|<>_\-+=~`;/\\[\]]/.test(v)},{message:"Deve conter um n\xFAmero.",test:v=>/\d/.test(v)}],confirmPassword:[{message:"Senhas n\xE3o conferem.",test:v=>v===s}]},w=T(R.password,s),C=T(R.confirmPassword,l);return jsxRuntime.jsxs("form",{className:"font-inter flex flex-col w-full max-w-[30rem] min-w-[15rem] max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-trieoh-neutral1 text-trieoh-neutral2 p-[1.25rem_1.5rem] shadow-[0_0.25rem_0.25rem_0_rgba(0,0,0,0.25)] transition-transform duration-150 ease-in-out rounded-[0.25rem]",children:[jsxRuntime.jsx(k,{mainText:"Redefinir Senha",subText:"Crie uma nova senha para sua conta"}),jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-[0.625rem] flex-[1_1_auto] overflow-y-auto mb-2",children:[jsxRuntime.jsx(_,{label:"Nova Senha",name:"password",placeholder:"**********",autoComplete:"new-password",type:"password",value:s,onValueChange:n,inputRef:d,rulesStatus:w,submitted:m}),jsxRuntime.jsx(_,{label:"Confirme a Nova Senha",name:"confirm-password",placeholder:"**********",autoComplete:"new-password",type:"password",value:l,onValueChange:a,inputRef:c,rulesStatus:C,submitted:m})]}),jsxRuntime.jsx(E,{label:"Redefinir Senha",onSubmit:async v=>{v.preventDefault(),f(true);let M=w.some(g=>!g.passed),H=C.some(g=>!g.passed);if(M){d.current?.focus();return}if(H){c.current?.focus();return}h(true);let P=await S.resetPassword(e,s);P.success?t&&await t(P.message):r&&await r(P.message,P.trace),h(false);},loading:p}),o&&jsxRuntime.jsxs("span",{className:"text-trieoh-sm font-semibold",children:["Lembrou-se da sua senha? ",jsxRuntime.jsx("span",{className:"cursor-pointer text-trieoh-secondary transition-colors duration-200 hover:text-trieoh-primary",onClick:o,children:"Login"})]})]})}function $t(e,t,r){let[o,i]=react.useState(true),[s,n]=react.useState("verifying"),[l,a]=react.useState("Verificando seu e-mail..."),{auth:m}=y(),f=react.useRef(false),p=async()=>{if(!f.current){f.current=true,i(true),n("verifying");try{if(m.profile()?.is_verified){n("already_verified"),a("Seu e-mail j\xE1 est\xE1 verificado."),i(!1);return}let c=await m.verifyEmail(e);c.success?(await m.refresh(),n("success"),a(c.message||"E-mail verificado com sucesso!"),t&&await t(c.message)):(n("error"),a(c.message||"Falha na verifica\xE7\xE3o do e-mail."),r&&await r(c.message,c.trace));}catch{n("error"),a("Ocorreu um erro inesperado durante a verifica\xE7\xE3o.");}finally{i(false);}}};return react.useEffect(()=>{e&&!f.current&&p();},[e]),{loading:o,status:s,message:l,onRetry:d=>{d.preventDefault(),f.current=false,p();},setStatus:n,setLoading:i,setMessage:a}}function Jt({token:e,onSuccess:t,onFailed:r}){let{loading:o,status:i,message:s,onRetry:n}=$t(e,t,r);return jsxRuntime.jsx("div",{className:"font-inter flex flex-col w-full h-full min-h-screen items-center justify-center bg-trieoh-neutral1 text-trieoh-neutral2 p-6",children:jsxRuntime.jsxs("div",{className:"w-full max-w-[30rem] flex flex-col gap-8 items-center bg-trieoh-neutral1 text-trieoh-neutral2 p-[1.25rem_1.5rem] shadow-[0_0.25rem_0.25rem_0_rgba(0,0,0,0.25)] rounded-[0.25rem]",children:[jsxRuntime.jsx(k,{mainText:i==="verifying"?"Verificando...":i==="error"?"Ops! Falha na verifica\xE7\xE3o":"Tudo pronto!",subText:s}),i==="verifying"&&jsxRuntime.jsx("div",{className:"w-full flex justify-center py-4",children:jsxRuntime.jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-trieoh-secondary"})}),i==="error"&&jsxRuntime.jsx("div",{className:"w-full flex flex-col gap-6 items-center",children:jsxRuntime.jsx("div",{className:"w-full mt-2",children:jsxRuntime.jsx(E,{label:"Tentar novamente",onSubmit:n,loading:o})})}),(i==="success"||i==="already_verified")&&jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-4 items-center",children:[jsxRuntime.jsx("div",{className:"w-16 h-16 flex items-center justify-center rounded-full bg-trieoh-secondary/10 text-trieoh-secondary",children:i==="success"?jsxRuntime.jsx(fi.FiCheck,{size:40}):jsxRuntime.jsx(fi.FiInfo,{size:40})}),jsxRuntime.jsx("p",{className:"text-trieoh-sm font-semibold opacity-50 text-center",children:"Voc\xEA j\xE1 pode fechar esta janela ou continuar navegando em sua conta."})]})]})})}function jt({onSuccess:e,onFailed:t}){let[r,o]=react.useState(false),[i,s]=react.useState(false),{auth:n}=y();return jsxRuntime.jsxs("div",{className:"font-inter flex flex-col w-full max-w-[30rem] min-w-[15rem] max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-trieoh-neutral1 text-trieoh-neutral2 p-[1.25rem_1.5rem] shadow-[0_0.25rem_0.25rem_0_rgba(0,0,0,0.25)] transition-transform duration-150 ease-in-out rounded-[0.25rem]",children:[jsxRuntime.jsx(k,{mainText:"Reenviar Verifica\xE7\xE3o",subText:"N\xE3o recebeu o e-mail de verifica\xE7\xE3o? Clique no bot\xE3o abaixo para reenviar."}),jsxRuntime.jsx(E,{label:i?"E-mail Reenviado":"Reenviar E-mail de Verifica\xE7\xE3o",onSubmit:async()=>{o(true);let a=await n.resendVerifyEmail();a.success?(s(true),e&&await e(a.message)):t&&await t(a.message,a.trace),o(false);},loading:r}),i&&jsxRuntime.jsx("p",{className:"text-trieoh-sm font-semibold text-trieoh-secondary",children:"Um novo link de verifica\xE7\xE3o foi enviado para seu e-mail."})]})}exports.AuthProvider=Hr;exports.BasicInputField=_;exports.BasicLogoutButton=Tt;exports.Copyright=Rt;exports.ForgotPassword=Xe;exports.ResendVerifyEmail=jt;exports.ResetPassword=Ut;exports.Sessions=Mt;exports.SignIn=wt;exports.SignUp=bt;exports.VerifyEmail=Jt;exports.useAuth=y;//# sourceMappingURL=react.js.map
|
|
6
3
|
//# sourceMappingURL=react.js.map
|