@trieoh/identityx-sdk-ts 0.12.11 → 0.12.12
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 +2 -2
- package/dist/cjs/react.js.map +1 -1
- package/dist/esm/react.d.ts +2 -2
- package/dist/esm/react.js +2 -2
- package/dist/esm/react.js.map +1 -1
- package/package.json +1 -1
package/dist/cjs/react.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';var react=require('react'),envoyFetchTs=require('@trieoh/envoy-fetch-ts'),jsxRuntime=require('react/jsx-runtime'),lucideReact=require('lucide-react'),uaParserJs=require('ua-parser-js'),sonner=require('sonner'),reactHookForm=require('react-hook-form'),zod$1=require('@hookform/resolvers/zod'),zod=require('zod'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),react$1=require('motion/react'),classVarianceAuthority=require('class-variance-authority');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;function qe(e,r){if(r.startsWith("http"))return r;let t=e.replace(/\/$/,""),o=r.replace(/^\//,"");return `${t}/${o}`}var se={isAuthenticated:false,isInitializing:true},$e=new Set,kt=()=>$e.forEach(e=>e()),P={subscribe:e=>($e.add(e),()=>$e.delete(e)),getSnapshot:()=>se,getServerSnapshot:()=>se,set:e=>{se={...se,...e},kt();},reset:()=>{se={isAuthenticated:false,isInitializing:false},kt();}};typeof window<"u"&&window.addEventListener("storage",e=>{if(e.key==="trieoh_access_expiry")if(!e.newValue)P.reset();else {let r=Number(e.newValue),t=!isNaN(r)&&r>Date.now();P.set({isAuthenticated:t,isInitializing:false});}});var V={getItem:e=>typeof window<"u"?localStorage.getItem(e):null,setItem:(e,r)=>{typeof window<"u"&&localStorage.setItem(e,r);},removeItem:e=>{typeof window<"u"&&localStorage.removeItem(e);}},ne={getItem:e=>typeof window<"u"?sessionStorage.getItem(e):null,setItem:(e,r)=>{typeof window<"u"&&sessionStorage.setItem(e,r);},removeItem:e=>{typeof window<"u"&&sessionStorage.removeItem(e);}};var Ee="trieoh_access_token",Y={getAccessToken:()=>ne.getItem(Ee),setAccessToken:e=>{e?ne.setItem(Ee,e):ne.removeItem(Ee);},clear:()=>{ne.removeItem(Ee);}};var le=null,je="trieoh_access_expiry",Ae="trieoh_refresh_expiry",Je="trieoh_refresh_token";function St(e){try{let r=e.split(".")[1];if(!r)return null;let t=r.replace(/-/g,"+").replace(/_/g,"/");for(;t.length%4;)t+="=";let o=decodeURIComponent(atob(t).split("").map(a=>"%"+("00"+a.charCodeAt(0).toString(16)).slice(-2)).join(""));return JSON.parse(o)}catch(r){return envoyFetchTs.logger.error("Error decoding JWT:",r),null}}function X(e){let{access_token:r,refresh_token:t,access_expires_at:o,refresh_expires_at:a}=e,i=St(r);if(!i){envoyFetchTs.logger.error("Failed to decode tokens");return}Y.setAccessToken(r);let s=new Date(a).getTime(),n=new Date(o).getTime();V.setItem(Je,t),V.setItem(je,String(n)),V.setItem(Ae,String(s)),le={access_data:i,refresh_expiry_date:s},P.set({isAuthenticated:true,isInitializing:false}),envoyFetchTs.logger.log("Auth session saved");}function Ke(){return V.getItem(Je)}function de(){if(le)return le;let e=Y.getAccessToken();if(!e)return null;let r=St(e);if(!r||r.exp*1e3<=Date.now())return null;let t=V.getItem(Ae);if(!t)return null;let o=Number(t);if(isNaN(o))return null;let a={access_data:r,refresh_expiry_date:o};return le=a,a}function Et(e,r){try{let t=V.getItem(e);if(!t)return !0;let o=Number(t);return isNaN(o)?!0:o-Date.now()<=r*1e3}catch(t){return envoyFetchTs.logger.warn("Error reading expiry:",t),true}}var Ye=(e=30)=>Et(je,e),Re=(e=10)=>Et(Ae,e);function pe(){le=null,Y.clear(),V.removeItem(je),V.removeItem(Ae),V.removeItem(Je),P.reset(),envoyFetchTs.logger.log("Auth tokens and claims cleared");}function At(){let e=de();return e?e.access_data.subject:null}function Zt(){let e=typeof window>"u",r=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:{},o=r.VITE_TRIEOH_AUTH_PROJECT_ID||t.NEXT_PUBLIC_TRIEOH_AUTH_PROJECT_ID||t.PUBLIC_TRIEOH_AUTH_PROJECT_ID||"",a=e&&t.TRIEOH_AUTH_API_KEY||"";return {PROJECT_ID:o,API_KEY:a,BASE_URL:"https://api.trieauth.trieoh.com"}}var Pe=null,Ge={};function Rt(e){Ge={...Ge,...e},Pe=null;}function Xe(){return Pe||(Pe={...Zt(),...Ge}),Pe}var S={get PROJECT_ID(){return Xe().PROJECT_ID},get BASE_URL(){return Xe().BASE_URL}};var Te=class{constructor(r){this.isRefreshing=false;this.refreshPromise=null;this.baseURL=r?.baseURL||S.BASE_URL,this.authBaseURL=r?.authBaseURL||this.baseURL,this.onTokenRefreshed=r?.onTokenRefreshed,this.onRefreshFailed=r?.onRefreshFailed;}async refreshToken(){return this.isRefreshing&&this.refreshPromise?this.refreshPromise:(this.isRefreshing=true,this.refreshPromise=(async()=>{let r=true;try{let t=Ke();if(!t)throw r=!0,new Error("No refresh token available");let o=await envoyFetchTs.simpleFetch(qe(this.authBaseURL,"/auth/refresh"),{method:"POST",credentials:"omit",headers:{refresh_token:t}});if(o.code!==200||!o.data)throw r=o.code!==503,new Error(o.message||"Failed to refresh token");X(o.data);let a=de();a&&this.onTokenRefreshed?.(a),envoyFetchTs.logger.log("Token refreshed successfully");}catch(t){throw envoyFetchTs.logger.warn("Failed to refresh token:",t),r&&pe(),this.onRefreshFailed?.(t),t}finally{this.isRefreshing=false,this.refreshPromise=null;}})(),this.refreshPromise)}async beforeRequest(){if(Re()){pe();return}if(!!!Y.getAccessToken()||Ye(30))try{await this.refreshToken();}catch(t){envoyFetchTs.logger.warn("Proactive refresh failed:",t);}}async fetch(r,t){let o=t?.requiresAuth!==false,a=r.includes("/auth/refresh");o&&!a&&!t?.skipRefresh&&await this.beforeRequest();let i=qe(this.baseURL,r),s=async()=>{let l=Y.getAccessToken(),d=new Headers(t?.headers);return o&&l&&d.set("Authorization",`Bearer ${l}`),d.has("Content-Type")||d.set("Content-Type","application/json"),fetch(i,{...t,headers:d,credentials:"omit"})},n=await s();if(n.status===401&&o&&!a){let l=!!Ke(),d=Ye(30);if(l&&d){envoyFetchTs.logger.log("401 detected and token is expiring/expired, attempting refresh...");try{await this.refreshToken(),n=await s();}catch{envoyFetchTs.logger.error("Retry failed after refresh error");}}}return n}};function G(e){if(!e)return;let{requiresAuth:r,skipRefresh:t,...o}=e,a={};return r!==void 0&&(a.requiresAuth=r),t!==void 0&&(a.skipRefresh=t),{...o,adapterInit:{...o.adapterInit,...a}}}var Ce=class{constructor(r,t,o,a){this.interceptor=new Te({baseURL:r,authBaseURL:t,onTokenRefreshed:o}),this.client=envoyFetchTs.createDefaultFetchClient({...a,adapter:this.interceptor.fetch.bind(this.interceptor)});}request(r,t){return this.client.request(r,G(t))}get(r,t){return this.client.get(r,G(t))}post(r,t,o){return this.client.post(r,t,G(o))}put(r,t,o){return this.client.put(r,t,G(o))}patch(r,t,o){return this.client.patch(r,t,G(o))}delete(r,t,o){return this.client.delete(r,t,G(o))}query(r,t){return this.client.query(r,G(t))}};var W=()=>{if(!S.PROJECT_ID||S.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 Pt=(e,r)=>({isSetupDone:async()=>e.get("/auth/setup",{requiresAuth:false}),setup:async(t,o)=>{S.PROJECT_ID&&W();let a=`/auth/setup${S.PROJECT_ID?`?project_id=${S.PROJECT_ID}`:""}`,i=await e.post(a,{email:t,password:o},{requiresAuth:false});return i.success&&(X(i.data),r?.onSetup?.(i)),i},login:async(t,o)=>{S.PROJECT_ID&&W();let a=`/auth/login${S.PROJECT_ID?`?project_id=${S.PROJECT_ID}`:""}`,i=await e.post(a,{email:t,password:o},{requiresAuth:false});return i.success&&(X(i.data),r?.onLogin?.(i)),i},loginWithProvider:async t=>{let o=`/auth/${t}/connect`;return await e.get(o,{requiresAuth:false})},completeProviderLogin:async(t,o)=>{let a=`/auth/${t}/callback?code=${o}`,i=await e.get(a,{requiresAuth:false});return i.success&&(X(i.data),r?.onLogin?.(i)),i},register:async(t,o)=>{let a={requiresAuth:false},i=`/auth/register${S.PROJECT_ID?`?project_id=${S.PROJECT_ID}`:""}`;S.PROJECT_ID&&W();let s=await e.post(i,{email:t,password:o},a);return s.success&&r?.onRegister?.(s),s},logout:async t=>{let o=`/auth/logout${S.PROJECT_ID?`?project_id=${S.PROJECT_ID}`:""}`,a=await e.post(o);return (a.success||t?.forceLogout)&&pe(),a},refresh:async()=>{let t=await e.post("/auth/refresh",void 0,{skipRefresh:true});return t.success&&(X(t.data),r?.onRefresh?.(t)),t},sessions:async()=>e.get("/sessions"),currentSession:async()=>e.get("/sessions/me"),revokeASession:async t=>e.delete(`/sessions/${t}`),revokeSessions:async(t=false)=>{let o=t?"/sessions":"/sessions/others";return e.delete(o)},profile:()=>At(),sendForgotPassword:async t=>{let o={requiresAuth:false};return S.PROJECT_ID?(W(),e.post("/account/forgot-password",{email:t,project_id:S.PROJECT_ID},o)):e.post("/account/forgot-password",{email:t},o)},resetPassword:async(t,o)=>{let a=await e.post(`/account/reset-password?token=${t}`,{new_password:o},{requiresAuth:false});return a.success&&r?.onResetPassword?.(a),a},verifyEmail:async t=>{let o=`/account/verify?token=${t}`,a=await e.post(o);return a.success&&r?.onVerify?.(a),a},resendVerifyEmail:async()=>e.post("/account/verify/resend"),introspect:async t=>e.get("/auth/introspect",{requiresAuth:!t,headers:t?{"X-API-KEY":t}:void 0}),health:async()=>e.get("/health",{requiresAuth:false}),authHealth:async()=>e.get("/protected/health")});var Ct=react.createContext(null);function oi({children:e,baseURL:r,projectId:t,isProjectMode:o=true,fallback:a,waitSession:i=true,clientConfig:s,onLogin:n,onSetup:l,onResetPassword:d,onRegister:p,onVerify:c,onRefresh:g}){let f=react.useRef(false),{isAuthenticated:u,isInitializing:h}=react.useSyncExternalStore(P.subscribe,P.getSnapshot,P.getServerSnapshot);react.useEffect(()=>{Rt({...t?{PROJECT_ID:t}:{},...r?{BASE_URL:r}:{}});},[t,r]);let w=react.useCallback(x=>{P.set({isAuthenticated:!!x.access_data,isInitializing:false}),g?.();},[g]),k=react.useMemo(()=>new Ce(r,void 0,w,s),[r,w,s]),C=react.useMemo(()=>Pt(k,{onLogin:n,onSetup:l,onResetPassword:d,onRegister:p,onVerify:c,onRefresh:g}),[k,n,l,d,p,c,g]);react.useEffect(()=>{o&&W(),(async()=>{if(!f.current){if(f.current=true,de()){P.set({isAuthenticated:true,isInitializing:false});return}if(Re()){P.reset(),P.set({isInitializing:false});return}envoyFetchTs.logger.log("No cached claims, attempting silent refresh...");try{await k.interceptor.refreshToken(),envoyFetchTs.logger.log("Session restored.");}catch{P.reset(),envoyFetchTs.logger.warn("Could not restore session (offline?).");}finally{P.set({isInitializing:false});}}})();},[C,o]);let K=react.useMemo(()=>({auth:C,isAuthenticated:u,isInitializing:h,isProjectMode:o}),[C,u,h,o]);return i&&h?a??null:jsxRuntime.jsx(Ct.Provider,{value:K,children:e})}function v(){let e=react.useContext(Ct);if(!e)throw new Error("useAuth must be used inside <AuthProvider>");return e}function Ze(e,{insertAt:r}={}){if(typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",r==="top"&&t.firstChild?t.insertBefore(o,t.firstChild):t.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e));}Ze(`/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties;@layer theme,base,components,utilities;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: var(--font-sans, "Inter", sans-serif);--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-green-500: oklch(72.3% .219 149.579);--color-green-600: oklch(62.7% .194 149.214);--spacing: .25rem;--container-md: 28rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-base--line-height: 1.5 ;--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--text-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl: 2.25rem;--text-4xl--line-height: calc(2.5 / 2.25);--font-weight-extralight: 200;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--tracking-tighter: -.05em;--tracking-tight: -.025em;--tracking-normal: 0em;--tracking-wide: .025em;--tracking-wider: .05em;--tracking-widest: .1em;--radius-sm: calc(var(--radius, .625rem) - 4px);--radius-md: calc(var(--radius, .625rem) - 2px);--radius-lg: var(--radius, .625rem);--radius-2xl: 1rem;--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--animate-spin: spin 1s linear infinite;--blur-sm: 8px;--blur-3xl: 64px;--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-background: var(--background, oklch(.9702 0 0));--color-foreground: var(--foreground, oklch(.1944 .0051 248.09));--color-primary: var(--primary, oklch(.7975 .1018 262.7));--color-primary-foreground: var(--primary-foreground, oklch(.9702 0 0));--color-secondary: var(--secondary, oklch(.1139 .0789 264.05));--color-secondary-foreground: var(--secondary-foreground, oklch(.9702 0 0));--color-muted: var(--muted, oklch(.9569 .0026 248.09));--color-muted-foreground: var(--muted-foreground, oklch(.5278 0 0));--color-border: var(--border, oklch(.869 .0093 248.09));--color-input: var(--input, oklch(.9145 .0062 248.09));--color-destructive: var(--destructive, oklch(.6373 .1718 28.92));--color-destructive-foreground: var(--destructive-foreground, oklch(.9851 0 0));--color-ring: var(--ring, oklch(.7975 .1018 262.7));--color-accent: var(--accent, oklch(.9326 .0313 262.7));--color-accent-foreground: var(--accent-foreground, oklch(.1944 .0051 248.09));--radius-full: 9999px}}@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}.pointer-events-none{pointer-events:none}.button-loading{&:after{content:"";position:absolute;top:0;left:-150%;width:150%;height:100%;background:linear-gradient(120deg,transparent 0%,var(--color-foreground) 40%,transparent 80%);@supports (color: color-mix(in lab,red,red)){background:linear-gradient(120deg,transparent 0%,color-mix(in oklab,var(--color-foreground) 40%,white 15%) 40%,transparent 80%)}animation:shine 1.5s infinite}}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-1\\.5{top:calc(var(--spacing) * 1.5)}.top-1\\/2{top:50%}.top-\\[-10\\%\\]{top:-10%}.right-0{right:calc(var(--spacing) * 0)}.right-3{right:calc(var(--spacing) * 3)}.right-\\[-10\\%\\]{right:-10%}.bottom-\\[-10\\%\\]{bottom:-10%}.left-3\\.5{left:calc(var(--spacing) * 3.5)}.left-\\[-10\\%\\]{left:-10%}.z-10{z-index:10}.m-0{margin:calc(var(--spacing) * 0)}.m-2{margin:calc(var(--spacing) * 2)}.m-\\[0\\.125rem\\]{margin:.125rem}.mx-1\\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mb-0\\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.box-border{box-sizing:border-box}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1{height:calc(var(--spacing) * 1)}.h-3\\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-13{height:calc(var(--spacing) * 13)}.h-16{height:calc(var(--spacing) * 16)}.h-\\[40\\%\\]{height:40%}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\\[max\\(75dvh\\,32rem\\)\\]{max-height:max(75dvh,32rem)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-112{min-height:calc(var(--spacing) * 112)}.min-h-screen{min-height:100vh}.w-3\\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-\\[40\\%\\]{width:40%}.w-full{width:100%}.max-w-56{max-width:calc(var(--spacing) * 56)}.max-w-100{max-width:calc(var(--spacing) * 100)}.max-w-120{max-width:calc(var(--spacing) * 120)}.max-w-\\[320px\\]{max-width:320px}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-60{min-width:calc(var(--spacing) * 60)}.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}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.appearance-none{appearance:none}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.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}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.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)}.space-y-1{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-4{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-5{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}}.divide-x{:where(&>:not(:last-child)){--tw-divide-x-reverse: 0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}}.divide-border\\/60{:where(&>:not(:last-child)){border-color:var(--color-border);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-border) 60%,transparent)}}}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\\[14px\\]{border-radius:14px}.rounded-full{border-radius:var(--radius-full)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.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{border-bottom-style:var(--tw-border-style);border-bottom-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-border{border-color:var(--color-border)}.border-border\\/40{border-color:var(--color-border);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-border) 40%,transparent)}}.border-border\\/50{border-color:var(--color-border);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-border) 50%,transparent)}}.border-border\\/60{border-color:var(--color-border);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-border) 60%,transparent)}}.border-destructive\\!{border-color:var(--color-destructive)!important}.border-destructive\\/50{border-color:var(--color-destructive);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-destructive) 50%,transparent)}}.border-foreground{border-color:var(--color-foreground)}.border-input{border-color:var(--color-input)}.border-primary{border-color:var(--color-primary)}.border-secondary\\/20{border-color:var(--color-secondary);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-secondary) 20%,transparent)}}.bg-background{background-color:var(--color-background)}.bg-border{background-color:var(--color-border)}.bg-destructive{background-color:var(--color-destructive)}.bg-destructive\\/5{background-color:var(--color-destructive);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-destructive) 5%,transparent)}}.bg-foreground\\/10{background-color:var(--color-foreground);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-foreground) 10%,transparent)}}.bg-muted{background-color:var(--color-muted)}.bg-muted\\/30{background-color:var(--color-muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-muted) 30%,transparent)}}.bg-muted\\/40{background-color:var(--color-muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-muted) 40%,transparent)}}.bg-muted\\/50{background-color:var(--color-muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-primary\\/10{background-color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-primary) 10%,transparent)}}.bg-primary\\/20{background-color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-primary) 20%,transparent)}}.bg-primary\\/40{background-color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-primary) 40%,transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-transparent{background-color:transparent}.p-1{padding:calc(var(--spacing) * 1)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-6{padding:calc(var(--spacing) * 6)}.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-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-px{padding-block:1px}.pt-2\\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-3\\.5{padding-bottom:calc(var(--spacing) * 3.5)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading, var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading, var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[12px\\]{font-size:12px}.leading-none{--tw-leading: 1;line-height:1}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.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)}.tracking-tight{--tw-tracking: var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking: var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking: var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking: var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking: var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.text-destructive{color:var(--color-destructive)}.text-destructive-foreground{color:var(--color-destructive-foreground)}.text-destructive\\/80{color:var(--color-destructive);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-destructive) 80%,transparent)}}.text-foreground{color:var(--color-foreground)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-primary\\/70{color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-primary) 70%,transparent)}}.text-secondary-foreground{color:var(--color-secondary-foreground)}.uppercase{text-transform:uppercase}.line-through{text-decoration-line:line-through}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0%}.opacity-50{opacity:50%}.opacity-60{opacity:60%}.opacity-95{opacity:95%}.opacity-100{opacity:100%}.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)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.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-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-primary\\/10{--tw-shadow-color: var(--color-primary);@supports (color: color-mix(in lab,red,red)){--tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-primary) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-destructive\\/20{--tw-ring-color: var(--color-destructive);@supports (color: color-mix(in lab,red,red)){--tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur-3xl{--tw-blur: blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur: blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.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-all{transition-property:all;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)}.ease-out{--tw-ease: var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style: none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-hover\\:translate-x-1{&:is(:where(.group):hover *){@media(hover:hover){--tw-translate-x: calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}}}.group-hover\\:opacity-100{&:is(:where(.group):hover *){@media(hover:hover){opacity:100%}}}.peer-placeholder-shown\\:top-3\\.5{&:is(:where(.peer):placeholder-shown~*){top:calc(var(--spacing) * 3.5)}}.peer-placeholder-shown\\:text-\\[15px\\]{&:is(:where(.peer):placeholder-shown~*){font-size:15px}}.peer-placeholder-shown\\:font-normal{&:is(:where(.peer):placeholder-shown~*){--tw-font-weight: var(--font-weight-normal);font-weight:var(--font-weight-normal)}}.peer-placeholder-shown\\:tracking-normal{&:is(:where(.peer):placeholder-shown~*){--tw-tracking: var(--tracking-normal);letter-spacing:var(--tracking-normal)}}.peer-placeholder-shown\\:text-destructive\\/60{&:is(:where(.peer):placeholder-shown~*){color:var(--color-destructive);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-destructive) 60%,transparent)}}}.peer-placeholder-shown\\:text-muted-foreground{&:is(:where(.peer):placeholder-shown~*){color:var(--color-muted-foreground)}}.peer-focus\\:top-1\\.5{&:is(:where(.peer):focus~*){top:calc(var(--spacing) * 1.5)}}.peer-focus\\:text-\\[10px\\]{&:is(:where(.peer):focus~*){font-size:10px}}.peer-focus\\:font-semibold{&:is(:where(.peer):focus~*){--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}}.peer-focus\\:tracking-wider{&:is(:where(.peer):focus~*){--tw-tracking: var(--tracking-wider);letter-spacing:var(--tracking-wider)}}.peer-focus\\:text-destructive\\/80{&:is(:where(.peer):focus~*){color:var(--color-destructive);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-destructive) 80%,transparent)}}}.peer-focus\\:text-primary\\/70{&:is(:where(.peer):focus~*){color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-primary) 70%,transparent)}}}.selection\\:bg-primary\\/10{& *::selection{background-color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-primary) 10%,transparent)}}&::selection{background-color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-primary) 10%,transparent)}}}.selection\\:text-primary{& *::selection{color:var(--color-primary)}&::selection{color:var(--color-primary)}}.placeholder\\:text-transparent{&::placeholder{color:transparent}}.hover\\:scale-\\[1\\.02\\]{&:hover{@media(hover:hover){scale:1.02}}}.hover\\:scale-\\[1\\.05\\]{&:hover{@media(hover:hover){scale:1.05}}}.hover\\:bg-accent{&:hover{@media(hover:hover){background-color:var(--color-accent)}}}.hover\\:bg-muted{&:hover{@media(hover:hover){background-color:var(--color-muted)}}}.hover\\:bg-muted\\/50{&:hover{@media(hover:hover){background-color:var(--color-muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}}}.hover\\:bg-muted\\/60{&:hover{@media(hover:hover){background-color:var(--color-muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-muted) 60%,transparent)}}}}.hover\\:text-accent-foreground{&:hover{@media(hover:hover){color:var(--color-accent-foreground)}}}.hover\\:text-foreground{&:hover{@media(hover:hover){color:var(--color-foreground)}}}.hover\\:text-primary\\/70{&:hover{@media(hover:hover){color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-primary) 70%,transparent)}}}}.hover\\:underline{&:hover{@media(hover:hover){text-decoration-line:underline}}}.hover\\:opacity-80{&:hover{@media(hover:hover){opacity:80%}}}.hover\\:opacity-90{&:hover{@media(hover:hover){opacity:90%}}}.hover\\:opacity-100{&:hover{@media(hover:hover){opacity:100%}}}.focus\\:bg-muted\\/60{&:focus{background-color:var(--color-muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-muted) 60%,transparent)}}}.focus\\:outline-none{&:focus{--tw-outline-style: none;outline-style:none}}.focus-visible\\:ring-0{&:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-visible\\:ring-1{&:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-visible\\:ring-ring{&:focus-visible{--tw-ring-color: var(--color-ring)}}.focus-visible\\:outline-none{&:focus-visible{--tw-outline-style: none;outline-style:none}}.active\\:scale-\\[0\\.95\\]{&:active{scale:.95}}.active\\:scale-\\[0\\.98\\]{&:active{scale:.98}}.active\\:scale-\\[0\\.99\\]{&:active{scale:.99}}.disabled\\:pointer-events-none{&:disabled{pointer-events:none}}.disabled\\:transform-none\\!{&:disabled{transform:none!important}}.disabled\\:cursor-not-allowed{&:disabled{cursor:not-allowed}}.disabled\\:opacity-50{&:disabled{opacity:50%}}.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);@layer base{button:not(:disabled),[role=button]:not(:disabled){cursor:pointer}}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-divide-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{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-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@property --tw-backdrop-blur{syntax: "*"; inherits: false;}@property --tw-backdrop-brightness{syntax: "*"; inherits: false;}@property --tw-backdrop-contrast{syntax: "*"; inherits: false;}@property --tw-backdrop-grayscale{syntax: "*"; inherits: false;}@property --tw-backdrop-hue-rotate{syntax: "*"; inherits: false;}@property --tw-backdrop-invert{syntax: "*"; inherits: false;}@property --tw-backdrop-opacity{syntax: "*"; inherits: false;}@property --tw-backdrop-saturate{syntax: "*"; inherits: false;}@property --tw-backdrop-sepia{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@keyframes spin{to{transform:rotate(360deg)}}@keyframes 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-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-space-y-reverse: 0;--tw-divide-x-reverse: 0;--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: 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-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-backdrop-blur: initial;--tw-backdrop-brightness: initial;--tw-backdrop-contrast: initial;--tw-backdrop-grayscale: initial;--tw-backdrop-hue-rotate: initial;--tw-backdrop-invert: initial;--tw-backdrop-opacity: initial;--tw-backdrop-saturate: initial;--tw-backdrop-sepia: initial;--tw-duration: initial;--tw-ease: initial}}}
|
|
2
|
-
`);function T({name:e,label:r,placeholder:t,type:o="text",value:a,onValueChange:i,onBlur:s,autoComplete:n,rulesStatus:l=[],submitted:d=false,inputRef:p}){let[c,g]=react.useState(false),f=l.some(u=>!u.passed);return jsxRuntime.jsxs("div",{className:"font-sans relative w-full flex flex-col gap-1 text-foreground",children:[jsxRuntime.jsx("label",{htmlFor:e,className:"text-base font-semibold",children:r}),jsxRuntime.jsxs("div",{className:`flex justify-between items-center px-2.5 py-px gap-2.5 border-b-2 border-foreground ${f&&d?"border-destructive!":""}`,children:[jsxRuntime.jsx("input",{type:c?"text":o,name:e,id:e,placeholder:t,value:a,onChange:u=>i&&i(u.target.value),onBlur:s,autoComplete:n,"aria-invalid":f&&d,ref:p,className:"min-w-40 flex-1 text-base font-light text-foreground appearance-none bg-transparent outline-none border-none shadow-none! py-0.5"}),o==="password"&&(c?jsxRuntime.jsx(lucideReact.EyeOff,{className:"cursor-pointer shrink-0 select-none",size:24,onClick:()=>g(false)}):jsxRuntime.jsx(lucideReact.Eye,{className:"cursor-pointer shrink-0 select-none",size:24,onClick:()=>g(true)}))]}),jsxRuntime.jsx("div",{className:"text-xs text-muted-foreground transition-opacity duration-200 ease-in-out",children:l.map((u,h)=>{let w=["transition-[color,text-decoration,opacity] duration-[120ms] ease opacity-95 m-[0.125rem]",u.passed?"line-through opacity-60 text-green-500":"",!u.passed&&d?"text-destructive font-semibold opacity-100":""].filter(Boolean).join(" ");return jsxRuntime.jsx("p",{className:w,children:u.message},u.id??h)})})]})}function N({label:e,onSubmit:r,loading:t}){return jsxRuntime.jsx("button",{type:"submit",onClick:r,disabled:t,className:`font-sans w-full h-13 text-xl font-semibold outline-none bg-transparent relative overflow-hidden min-w-40 shrink-0 border-2 border-foreground text-foreground cursor-pointer px-6 transition-transform duration-500 rounded-lg hover:scale-[1.02] active:scale-[0.99] disabled:opacity-60 disabled:cursor-not-allowed disabled:transform-none! ${t?"button-loading":""}`,children:e})}function I({mainText:e,subText:r}){return jsxRuntime.jsxs("div",{className:"font-sans flex flex-col items-center",children:[jsxRuntime.jsx("div",{className:"flex justify-center items-center p-2 bg-foreground/10 rounded-full mb-2.5",children:jsxRuntime.jsx(lucideReact.User,{className:"w-16 h-16 p-2.5 bg-background rounded-full shadow-[0_0.25rem_1rem_rgba(0,0,0,0.25)]",size:70})}),jsxRuntime.jsx("h3",{className:"text-center text-xl font-medium m-0",children:e}),jsxRuntime.jsx("span",{className:"text-center text-sm font-light opacity-60",children:r})]})}function L(e,r){return e.map(t=>({id:t.id,message:t.message,passed:!!t.test(r)}))}function fr({onSuccess:e,onFailed:r,signUpRedirect:t,forgotPasswordRedirect:o,emailRules:a}){let[i,s]=react.useState(""),[n,l]=react.useState(""),[d,p]=react.useState(false),[c,g]=react.useState(false),f=react.useRef(null),u=react.useRef(null),{auth:h}=v(),w={email:a||[{message:"Digite um e-mail v\xE1lido, ex: exemplo@dominio.com",test:x=>/\S+@\S+\.\S+/.test(x)}],password:[]},k=L(w.email,i),C=L(w.password,n);return jsxRuntime.jsxs("form",{className:"font-sans flex flex-col w-full max-w-120 min-w-60 max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-background text-foreground 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-lg",children:[jsxRuntime.jsx(I,{mainText:"Fa\xE7a login na sua conta",subText:"Insira seus dados para fazer login"}),jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-2.5 flex-[1_1_auto] overflow-y-auto mb-2",children:[jsxRuntime.jsx(T,{label:"Email",name:"email",placeholder:"teste@gmail.com",autoComplete:"email",type:"email",value:i,onValueChange:s,inputRef:f,rulesStatus:k,submitted:d}),jsxRuntime.jsx(T,{label:"Senha",name:"password",placeholder:"**********",autoComplete:"current-password",type:"password",value:n,onValueChange:l,inputRef:u,rulesStatus:C,submitted:d})]}),jsxRuntime.jsx(N,{label:"Entrar",onSubmit:async x=>{x.preventDefault(),p(true);let Z=k.some(y=>!y.passed),ee=C.some(y=>!y.passed);if(Z){f.current?.focus();return}if(ee){u.current?.focus();return}g(true);let z=await h.login(i,n);z.success?e&&await e(z.message):r&&await r(z.message,z.trace),g(false);},loading:c}),o&&jsxRuntime.jsx("span",{className:"text-sm font-semibold text-center cursor-pointer",children:jsxRuntime.jsx("span",{className:"cursor-pointer text-primary transition-colors duration-200 hover:opacity-80",onClick:o,children:"Esqueceu sua senha?"})}),t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 w-full text-base font-semibold opacity-60",children:[jsxRuntime.jsx("hr",{className:"flex-1"}),"OU",jsxRuntime.jsx("hr",{className:"flex-1"})]}),jsxRuntime.jsxs("span",{className:"text-sm font-semibold",children:["Ainda n\xE3o possui uma conta? ",jsxRuntime.jsx("span",{className:"cursor-pointer text-primary transition-colors duration-200 hover:opacity-80",onClick:t,children:"Cadastra-se"})]})]})]})}function hr({onSuccess:e,onFailed:r,loginRedirect:t,emailRules:o,passwordRules:a}){let[i,s]=react.useState(""),[n,l]=react.useState(""),[d,p]=react.useState(""),[c,g]=react.useState(false),[f,u]=react.useState(false),h=react.useRef(null),w=react.useRef(null),k=react.useRef(null),{auth:C}=v(),K={email:o||[{message:"Digite um e-mail v\xE1lido, ex: exemplo@dominio.com",test:y=>/\S+@\S+\.\S+/.test(y)}],password:a||[{message:"M\xEDnimo de 8 caracteres.",test:y=>y.length>=8},{message:"Deve conter uma letra mai\xFAscula.",test:y=>/[A-Z]/.test(y)},{message:"Inclua pelo menos um caractere especial, ex: ! @ # $ % & * . ,",test:y=>/[!@#$%^&*(),.?":{}|<>_\-+=~`;/\\[\]]/.test(y)},{message:"Deve conter um n\xFAmero.",test:y=>/\d/.test(y)}],confirmPassword:[{message:"Senhas n\xE3o conferem.",test:y=>y===n}]},x=L(K.email,i),Z=L(K.password,n),ee=L(K.confirmPassword,d);return jsxRuntime.jsxs("form",{className:"font-sans flex flex-col w-full max-w-120 min-w-60 max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-background text-foreground 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-lg",children:[jsxRuntime.jsx(I,{mainText:"Crie sua conta",subText:"Insira seus dados para come\xE7ar"}),jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-2.5 flex-[1_1_auto] overflow-y-auto mb-2",children:[jsxRuntime.jsx(T,{label:"Email",name:"email",placeholder:"teste@gmail.com",autoComplete:"email",type:"email",value:i,onValueChange:s,inputRef:h,rulesStatus:x,submitted:c}),jsxRuntime.jsx(T,{label:"Senha",name:"password",placeholder:"**********",autoComplete:"new-password",type:"password",value:n,onValueChange:l,inputRef:w,rulesStatus:Z,submitted:c}),jsxRuntime.jsx(T,{label:"Confirme a Senha",name:"confirm-password",placeholder:"**********",autoComplete:"new-password",type:"password",value:d,onValueChange:p,inputRef:k,rulesStatus:ee,submitted:c})]}),jsxRuntime.jsx(N,{label:"Criar Conta",onSubmit:async y=>{y.preventDefault(),g(true);let Gt=x.some(ie=>!ie.passed),Wt=Z.some(ie=>!ie.passed),Qt=ee.some(ie=>!ie.passed);if(Gt){h.current?.focus();return}if(Wt){w.current?.focus();return}if(Qt){k.current?.focus();return}u(true);let Se=await C.register(i,n);Se.success?e&&await e(Se.message):r&&await r(Se.message,Se.trace),u(false);},loading:f}),t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 w-full text-base font-semibold opacity-60",children:[jsxRuntime.jsx("hr",{className:"flex-1"}),"OU",jsxRuntime.jsx("hr",{className:"flex-1"})]}),jsxRuntime.jsxs("span",{className:"text-sm font-semibold",children:["J\xE1 possui uma conta? ",jsxRuntime.jsx("span",{className:"cursor-pointer text-primary transition-colors duration-200 hover:opacity-80",onClick:t,children:"Entre"})]})]})]})}var wr={xs:"text-xs",sm:"text-sm",md:"text-base",lg:"text-lg",xl:"text-xl","2xl":"text-2xl"};function br({size:e}){let r=e?wr[e]:"text-base";return jsxRuntime.jsxs("span",{className:`font-sans font-medium ${r}`,children:["\xA9 ",new Date().getFullYear()," TrieOH"]})}function Sr({onSuccess:e,onFailed:r,forceLogout:t}){let{auth:o}=v(),[a,i]=react.useState(false);return jsxRuntime.jsxs("button",{onClick:async n=>{if(n.preventDefault(),a)return;i(true);let l=await o.logout({forceLogout:t});l.success?e&&await e(l.message):r&&await r(l.message,l.trace),i(false);},type:"button",disabled:a,className:"font-sans border-none bg-transparent cursor-pointer flex items-end gap-1 text-base font-medium text-destructive 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(lucideReact.LogOut,{size:24})," ",jsxRuntime.jsx("span",{children:"Log out"})]})}var Lt={mobile:lucideReact.Smartphone,tablet:lucideReact.Tablet,desktop:lucideReact.Monitor};function Ft(e){let{device:r,os:t,browser:o}=uaParserJs.UAParser(e);return {deviceType:r.type??"desktop",os:t.name,browser:o.name}}function Bt(e){let r=Ft(e);return {device:Cr(r.deviceType),os:r.os,browser:r.browser}}function Cr(e){if(!e)return "desktop";switch(e){case "mobile":return "mobile";case "tablet":return "tablet";default:return "desktop"}}function Mt(e){let r=Date.now()-new Date(e).getTime(),t=Math.floor(r/1e3),o=Math.floor(t/60),a=Math.floor(o/60),i=Math.floor(a/24),s=Math.floor(i/7);return t<60?"agora mesmo":o<60?`${o} minutos atr\xE1s`:a<24?`${a} horas atr\xE1s`:i<7?`${i} dias atr\xE1s`:`${s} semanas atr\xE1s`}function tt({is_current:e,session_id:r,user_agent:t,issued_at:o,user_ip:a,onClick:i}){let s=Bt(t),n=Lt[s.device];return jsxRuntime.jsx("div",{className:"border-t border-border p-[1.25rem_0.75rem] text-foreground",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(n,{size:40}),jsxRuntime.jsxs("div",{className:"flex flex-col min-w-0",children:[jsxRuntime.jsxs("h3",{className:"text-base font-semibold m-0",children:[s.browser," - ",s.os]}),jsxRuntime.jsxs("span",{className:"inline-flex flex-col text-sm font-extralight @[640px]:flex-row @[640px]:gap-2 @[640px]:items-center",children:[e&&jsxRuntime.jsx("strong",{className:"text-primary font-normal",children:"\u2022 Sess\xE3o Atual \u2022"}),jsxRuntime.jsx("span",{children:`${a} - ${Mt(o)}`})]})]}),!e&&jsxRuntime.jsx(lucideReact.Trash2,{size:20,className:"absolute top-0 right-0 cursor-pointer text-destructive opacity-60 transition-[opacity,transform] duration-200 hover:opacity-100 hover:scale-[1.05] active:scale-[0.95]",onClick:l=>i(l,r)})]})})}function _r({revokeAll:e=false,onSuccess:r}){let{auth:t}=v(),[o,a]=react.useState(false),[i,s]=react.useState([]),n=async()=>{let p=await t.sessions();if(p.success){let c=t.profile()?.session_id,g=p.data.sort((f,u)=>f.session_id===c?-1:u.session_id===c?1:0);s(g);}};react.useEffect(()=>{n();},[]);let l=async(p,c)=>{p.preventDefault();let g=i.find(f=>f.session_id===c);if(g){s(i.filter(f=>f.session_id!==c));try{(await t.revokeASession(c)).success||s(u=>[...u,g]);}catch{s(f=>[...f,g]);}}};return jsxRuntime.jsxs("div",{className:"font-sans w-full min-w-[20rem] m-2 @container bg-background text-foreground 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-3 @[640px]:justify-between @[640px]:text-left @[640px]:gap-8",children:[jsxRuntime.jsxs("div",{className:"flex-[0_1_auto] max-w-100",children:[jsxRuntime.jsx("h3",{className:"font-semibold text-2xl m-0 mb-1",children:"Navegadores e Dispositivos"}),jsxRuntime.jsx("p",{className:"font-extralight text-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 p=>{if(p.preventDefault(),o)return;a(true);let c=await t.revokeSessions(e),g=t.profile()?.session_id;c.success&&(s(e?[]:i.filter(f=>f.session_id===g)),r&&r(c.message)),a(false);},disabled:o,className:`font-sans w-full max-w-56 p-[1rem_0] h-auto text-base font-semibold outline-none bg-transparent relative overflow-hidden shrink-0 border-2 border-foreground text-foreground cursor-pointer transition-transform duration-500 rounded-lg hover:scale-[1.02] active:scale-[0.99] disabled:opacity-60 disabled:cursor-not-allowed disabled:transform-none! ${o?"button-loading":""}`,children:"Revogar todas as sess\xF5es"})]}),jsxRuntime.jsx("div",{className:"mt-4",children:i.length>0?i.map(p=>jsxRuntime.jsx(tt,{...p,is_current:t.profile()?.session_id===p.session_id,onClick:l},p.session_id)):jsxRuntime.jsx("span",{className:"block border-t border-border p-[1.25rem_0.75rem] text-center font-semibold",children:"Nenhuma Sess\xE3o Dispon\xEDvel"})})]})}function Dt({onSuccess:e,onFailed:r,loginRedirect:t,emailRules:o}){let[a,i]=react.useState(""),[s,n]=react.useState(false),[l,d]=react.useState(false),p=react.useRef(null),{auth:c}=v(),f=L({email:o||[{message:"Digite um e-mail v\xE1lido, ex: exemplo@dominio.com",test:h=>/\S+@\S+\.\S+/.test(h)}]}.email,a);return jsxRuntime.jsxs("form",{className:"font-sans flex flex-col w-full max-w-120 min-w-60 max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-background text-foreground 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-lg",children:[jsxRuntime.jsx(I,{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-2.5 flex-[1_1_auto] overflow-y-auto mb-2",children:jsxRuntime.jsx(T,{label:"Email",name:"email",placeholder:"teste@gmail.com",autoComplete:"email",type:"email",value:a,onValueChange:i,inputRef:p,rulesStatus:f,submitted:s})}),jsxRuntime.jsx(N,{label:l?"Enviando...":"Enviar link de redefini\xE7\xE3o",onSubmit:async h=>{if(h.preventDefault(),n(true),f.some(C=>!C.passed)){p.current?.focus();return}d(true);let k=await c.sendForgotPassword(a);k.success?e&&await e(k.message):r&&await r(k.message,k.trace),d(false);},loading:l}),t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 w-full text-base font-semibold opacity-60",children:[jsxRuntime.jsx("hr",{className:"flex-1"}),"OU",jsxRuntime.jsx("hr",{className:"flex-1"})]}),jsxRuntime.jsxs("span",{className:"text-sm font-semibold",children:["Lembrou-se da sua senha? ",jsxRuntime.jsx("span",{className:"cursor-pointer text-primary transition-colors duration-200 hover:opacity-80",onClick:t,children:"Login"})]})]})]})}function Br({token:e,onSuccess:r,onFailed:t,loginRedirect:o,passwordRules:a}){let[i,s]=react.useState(""),[n,l]=react.useState(""),[d,p]=react.useState(false),[c,g]=react.useState(false),f=react.useRef(null),u=react.useRef(null),{auth:h}=v(),w={password:a||[{message:"M\xEDnimo de 8 caracteres.",test:x=>x.length>=8},{message:"Deve conter uma letra mai\xFAscula.",test:x=>/[A-Z]/.test(x)},{message:"Inclua pelo menos um caractere especial, ex: ! @ # $ % & * . ,",test:x=>/[!@#$%^&*(),.?":{}|<>_\-+=~`;/\\[\]]/.test(x)},{message:"Deve conter um n\xFAmero.",test:x=>/\d/.test(x)}],confirmPassword:[{message:"Senhas n\xE3o conferem.",test:x=>x===i}]},k=L(w.password,i),C=L(w.confirmPassword,n);return jsxRuntime.jsxs("form",{className:"font-sans flex flex-col w-full max-w-120 min-w-60 max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-background text-foreground 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-lg",children:[jsxRuntime.jsx(I,{mainText:"Redefinir Senha",subText:"Crie uma nova senha para sua conta"}),jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-2.5 flex-[1_1_auto] overflow-y-auto mb-2",children:[jsxRuntime.jsx(T,{label:"Nova Senha",name:"password",placeholder:"**********",autoComplete:"new-password",type:"password",value:i,onValueChange:s,inputRef:f,rulesStatus:k,submitted:d}),jsxRuntime.jsx(T,{label:"Confirme a Nova Senha",name:"confirm-password",placeholder:"**********",autoComplete:"new-password",type:"password",value:n,onValueChange:l,inputRef:u,rulesStatus:C,submitted:d})]}),jsxRuntime.jsx(N,{label:"Redefinir Senha",onSubmit:async x=>{x.preventDefault(),p(true);let Z=k.some(y=>!y.passed),ee=C.some(y=>!y.passed);if(Z){f.current?.focus();return}if(ee){u.current?.focus();return}g(true);let z=await h.resetPassword(e,i);z.success?r&&await r(z.message):t&&await t(z.message,z.trace),g(false);},loading:c}),o&&jsxRuntime.jsxs("span",{className:"text-sm font-semibold",children:["Lembrou-se da sua senha? ",jsxRuntime.jsx("span",{className:"cursor-pointer text-primary transition-colors duration-200 hover:opacity-80",onClick:o,children:"Login"})]})]})}function Vr(e,r,t){let[o,a]=react.useState(true),[i,s]=react.useState("verifying"),[n,l]=react.useState("Verificando seu e-mail..."),{auth:d}=v(),p=react.useRef(false),c=async()=>{if(!p.current){p.current=true,a(true),s("verifying");try{if(d.profile()?.is_verified){s("already_verified"),l("Seu e-mail j\xE1 est\xE1 verificado."),a(!1);return}let u=await d.verifyEmail(e);u.success?(await d.refresh(),s("success"),l(u.message||"E-mail verificado com sucesso!"),r&&await r(u.message)):(s("error"),l(u.message||"Falha na verifica\xE7\xE3o do e-mail."),t&&await t(u.message,u.trace));}catch{s("error"),l("Ocorreu um erro inesperado durante a verifica\xE7\xE3o.");}finally{a(false);}}};return react.useEffect(()=>{e&&!p.current&&c();},[e]),{loading:o,status:i,message:n,onRetry:f=>{f.preventDefault(),p.current=false,c();},setStatus:s,setLoading:a,setMessage:l}}function Ur({token:e,onSuccess:r,onFailed:t}){let{loading:o,status:a,message:i,onRetry:s}=Vr(e,r,t);return jsxRuntime.jsx("div",{className:"font-sans flex flex-col w-full h-full min-h-screen items-center justify-center bg-background text-foreground p-6",children:jsxRuntime.jsxs("div",{className:"w-full max-w-120 flex flex-col gap-8 items-center bg-background text-foreground p-[1.25rem_1.5rem] shadow-[0_0.25rem_0.25rem_0_rgba(0,0,0,0.25)] rounded-lg",children:[jsxRuntime.jsx(I,{mainText:a==="verifying"?"Verificando...":a==="error"?"Ops! Falha na verifica\xE7\xE3o":"Tudo pronto!",subText:i}),a==="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-primary"})}),a==="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(N,{label:"Tentar novamente",onSubmit:s,loading:o})})}),(a==="success"||a==="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-primary/10 text-primary",children:a==="success"?jsxRuntime.jsx(lucideReact.Check,{size:40}):jsxRuntime.jsx(lucideReact.Info,{size:40})}),jsxRuntime.jsx("p",{className:"text-sm font-semibold opacity-50 text-center",children:"Voc\xEA j\xE1 pode fechar esta janela ou continuar navegando em sua conta."})]})]})})}function Hr({onSuccess:e,onFailed:r}){let[t,o]=react.useState(false),[a,i]=react.useState(false),{auth:s}=v();return jsxRuntime.jsxs("div",{className:"font-sans flex flex-col w-full max-w-120 min-w-60 max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-background text-foreground 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-lg",children:[jsxRuntime.jsx(I,{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(N,{label:a?"E-mail Reenviado":"Reenviar E-mail de Verifica\xE7\xE3o",onSubmit:async()=>{o(true);let l=await s.resendVerifyEmail();l.success?(i(true),e&&await e(l.message)):r&&await r(l.message,l.trace),o(false);},loading:t}),a&&jsxRuntime.jsx("p",{className:"text-sm font-semibold text-primary",children:"Um novo link de verifica\xE7\xE3o foi enviado para seu e-mail."})]})}function M(...e){return tailwindMerge.twMerge(clsx.clsx(e))}var Ht=react.forwardRef(({label:e,id:r,type:t="text",error:o,className:a,value:i,onChange:s,onFocus:n,onBlur:l,...d},p)=>{let[c,g]=react.useState(false),f=react.useId(),u=r??f,h=t==="password";return jsxRuntime.jsxs("div",{className:"w-full font-body group relative",children:[jsxRuntime.jsx("input",{ref:p,id:u,type:h?c?"text":"password":t,value:i,placeholder:" ",onChange:s,onFocus:n,onBlur:l,className:M("peer h-13 w-full rounded-sm text-sm text-foreground outline-none","border border-secondary/20 bg-muted/40 transition-all duration-200","placeholder:text-transparent focus-visible:ring-0 focus:bg-muted/60","px-3.5 pt-4 pb-1",h&&"pr-10",o&&"bg-destructive/5 ring-1 ring-destructive/20 border-destructive/50",a),...d}),jsxRuntime.jsx("label",{htmlFor:u,className:M("pointer-events-none absolute transition-all duration-200 ease-out left-3.5","top-1.5 text-[10px] font-semibold tracking-wider text-primary/70","peer-placeholder-shown:top-3.5 peer-placeholder-shown:text-[15px] peer-placeholder-shown:font-normal peer-placeholder-shown:tracking-normal peer-placeholder-shown:text-muted-foreground","peer-focus:top-1.5 peer-focus:text-[10px] peer-focus:font-semibold peer-focus:tracking-wider peer-focus:text-primary/70",o&&"text-destructive/80",o&&"peer-placeholder-shown:text-destructive/60",o&&"peer-focus:text-destructive/80"),children:e}),h&&jsxRuntime.jsx("button",{type:"button",tabIndex:-1,onClick:()=>{g(k=>!k);},className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground transition-colors hover:text-primary/70 focus:outline-none","aria-label":c?"Ocultar senha":"Mostrar senha",children:c?jsxRuntime.jsx(lucideReact.EyeOff,{size:16}):jsxRuntime.jsx(lucideReact.Eye,{size:16})})]})});Ht.displayName="FormInput";var A=Ht;var eo=({message:e,className:r})=>jsxRuntime.jsx(react$1.AnimatePresence,{children:e&&jsxRuntime.jsx(react$1.motion.p,{initial:{opacity:0,height:0,marginTop:0},animate:{opacity:1,height:"auto",marginTop:6},exit:{opacity:0,height:0,marginTop:0},transition:{duration:.2,ease:"easeOut"},className:M("text-[11px] font-medium text-destructive tracking-tight leading-none px-1 overflow-hidden",r),children:e})}),R=eo;var ro=classVarianceAuthority.cva("inline-flex items-center justify-center whitespace-nowrap rounded-sm text-sm font-semibold transition-all focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 active:scale-[0.98]",{variants:{variant:{default:"bg-primary text-primary-foreground hover:opacity-90",destructive:"bg-destructive text-destructive-foreground hover:opacity-90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:opacity-80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-12 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),_=({className:e,variant:r,size:t,...o})=>jsxRuntime.jsx("button",{className:M(ro({variant:r,size:t,className:e})),...o});function $t(){return jsxRuntime.jsxs("div",{className:"flex items-center gap-3 py-1",children:[jsxRuntime.jsx("div",{className:"flex-1 h-px bg-border"}),jsxRuntime.jsx("span",{className:"text-xs font-medium text-muted-foreground uppercase tracking-widest select-none",children:"ou"}),jsxRuntime.jsx("div",{className:"flex-1 h-px bg-border"})]})}var io={google:{label:"Google",icon:jsxRuntime.jsxs("svg",{viewBox:"0 0 24 24",className:"w-5 h-5","aria-hidden":"true",children:[jsxRuntime.jsx("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z",fill:"#4285F4"}),jsxRuntime.jsx("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),jsxRuntime.jsx("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),jsxRuntime.jsx("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]})},github:{label:"GitHub",icon:jsxRuntime.jsx("svg",{viewBox:"0 0 24 24",className:"w-5 h-5",fill:"currentColor","aria-hidden":"true",children:jsxRuntime.jsx("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"})})}};function jt({provider:e,onClick:r,isLoading:t}){let o=io[e];return jsxRuntime.jsxs("button",{type:"button",onClick:r,disabled:t,className:M("w-full flex items-center justify-center gap-2.5 h-12 px-4 rounded-sm text-sm font-semibold","border border-input bg-background hover:bg-muted/60 transition-all","disabled:opacity-50 disabled:pointer-events-none active:scale-[0.98]"),children:[o.icon,jsxRuntime.jsxs("span",{children:["Continuar com ",o.label]})]})}var po=zod.z.object({email:zod.z.email("E-mail inv\xE1lido"),password:zod.z.string().min(1,"A senha \xE9 obrigat\xF3ria")});function dt({onSuccess:e,onFailed:r,signUpRedirect:t,forgotPasswordRedirect:o,providers:a}){let[i,s]=react.useState(false),[n,l]=react.useState(null),{auth:d}=v(),p=async h=>{l(h);try{let w=await d.loginWithProvider(h);w.success&&w.data?.url?window.location.href=w.data.url:r?await r(w.message||"Falha na autentica\xE7\xE3o"):sonner.toast.error("Falha ao conectar com provedor");}catch{sonner.toast.error("Ocorreu um erro inesperado");}finally{l(null);}},{register:c,handleSubmit:g,formState:{errors:f}}=reactHookForm.useForm({resolver:zod$1.zodResolver(po),defaultValues:{email:"",password:""}});return jsxRuntime.jsxs("form",{onSubmit:g(async h=>{s(true);try{let w=await d.login(h.email,h.password);w.success?e?await e(w.message):sonner.toast.success("Login realizado com sucesso!"):r?await r(w.message,w.trace):sonner.toast.error(w.message||"Erro ao entrar");}catch{sonner.toast.error("Ocorreu um erro inesperado");}finally{s(false);}}),className:"space-y-4",children:[jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"E-mail",type:"email",autoComplete:"email",error:!!f.email,...c("email")}),jsxRuntime.jsx(R,{message:f.email?.message})]}),jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Senha",type:"password",autoComplete:"current-password",error:!!f.password,...c("password")}),jsxRuntime.jsx(R,{message:f.password?.message})]}),o&&jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx("button",{type:"button",onClick:o,className:"text-xs text-primary hover:underline font-medium",children:"Esqueceu a senha?"})}),jsxRuntime.jsx(_,{type:"submit",disabled:i,className:"w-full flex items-center justify-center gap-2",children:i?jsxRuntime.jsx(lucideReact.Loader2,{className:"w-5 h-5 animate-spin"}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:["Entrar",jsxRuntime.jsx(lucideReact.ArrowRight,{className:"w-4 h-4"})]})}),a&&a.length>0&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx($t,{}),jsxRuntime.jsx("div",{className:"flex flex-col gap-2",children:a.map(h=>jsxRuntime.jsx(jt,{provider:h,onClick:()=>p(h),isLoading:n===h},h))})]})]})}var vo=zod.z.object({email:zod.z.email("E-mail inv\xE1lido"),password:zod.z.string().min(6,"A senha deve ter pelo menos 6 caracteres"),confirmPassword:zod.z.string()}).refine(e=>e.password===e.confirmPassword,{message:"As senhas n\xE3o coincidem",path:["confirmPassword"]});function mt({onSuccess:e,onFailed:r,signInRedirect:t}){let[o,a]=react.useState(false),{auth:i}=v(),{register:s,handleSubmit:n,formState:{errors:l}}=reactHookForm.useForm({resolver:zod$1.zodResolver(vo),defaultValues:{email:"",password:"",confirmPassword:""}});return jsxRuntime.jsxs("form",{onSubmit:n(async p=>{a(true);try{let c=await i.register(p.email,p.password);c.success?e?await e(c.message):(sonner.toast.success("Conta criada com sucesso!"),t&&t()):r?await r(c.message,c.trace):sonner.toast.error(c.message||"Erro ao criar conta");}catch{sonner.toast.error("Ocorreu um erro inesperado");}finally{a(false);}}),className:"space-y-4",children:[jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"E-mail",type:"email",autoComplete:"email",error:!!l.email,...s("email")}),jsxRuntime.jsx(R,{message:l.email?.message})]}),jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Senha",type:"password",autoComplete:"new-password",error:!!l.password,...s("password")}),jsxRuntime.jsx(R,{message:l.password?.message})]}),jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Confirmar Senha",type:"password",autoComplete:"new-password",error:!!l.confirmPassword,...s("confirmPassword")}),jsxRuntime.jsx(R,{message:l.confirmPassword?.message})]}),jsxRuntime.jsx(_,{type:"submit",disabled:o,className:"w-full flex items-center justify-center gap-2",children:o?jsxRuntime.jsx(lucideReact.Loader2,{className:"w-5 h-5 animate-spin"}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:["Criar Conta",jsxRuntime.jsx(lucideReact.ArrowRight,{className:"w-4 h-4"})]})})]})}var Eo=zod.z.object({email:zod.z.email("E-mail inv\xE1lido")});function gt({onSuccess:e,onFailed:r,signInRedirect:t}){let[o,a]=react.useState(false),{auth:i}=v(),{register:s,handleSubmit:n,formState:{errors:l}}=reactHookForm.useForm({resolver:zod$1.zodResolver(Eo),defaultValues:{email:""}});return jsxRuntime.jsxs("form",{onSubmit:n(async p=>{a(true);try{let c=await i.sendForgotPassword(p.email);c.success?e?await e(c.message):sonner.toast.success("Link de redefini\xE7\xE3o enviado com sucesso!"):r?await r(c.message,c.trace):sonner.toast.error(c.message||"Erro ao enviar link");}catch{sonner.toast.error("Ocorreu um erro inesperado");}finally{a(false);}}),className:"space-y-4",children:[jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"E-mail",type:"email",autoComplete:"email",error:!!l.email,...s("email")}),jsxRuntime.jsx(R,{message:l.email?.message})]}),jsxRuntime.jsx(_,{type:"submit",disabled:o,className:"w-full flex items-center justify-center gap-2",children:o?jsxRuntime.jsx(lucideReact.Loader2,{className:"w-5 h-5 animate-spin"}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:["Enviar link",jsxRuntime.jsx(lucideReact.ArrowRight,{className:"w-4 h-4"})]})})]})}var _o=zod.z.object({password:zod.z.string().min(6,"A senha deve ter pelo menos 6 caracteres"),confirmPassword:zod.z.string()}).refine(e=>e.password===e.confirmPassword,{message:"As senhas n\xE3o coincidem",path:["confirmPassword"]});function Lo({token:e,onSuccess:r,onFailed:t,signInRedirect:o}){let[a,i]=react.useState(false),{auth:s}=v(),{register:n,handleSubmit:l,formState:{errors:d}}=reactHookForm.useForm({resolver:zod$1.zodResolver(_o),defaultValues:{password:"",confirmPassword:""}}),p=async c=>{i(true);try{let g=await s.resetPassword(e,c.password);g.success?r?await r(g.message):sonner.toast.success("Senha redefinida com sucesso!"):t?await t(g.message,g.trace):sonner.toast.error(g.message||"Erro ao redefinir senha");}catch{sonner.toast.error("Ocorreu um erro inesperado");}finally{i(false);}};return jsxRuntime.jsxs("div",{className:"w-full max-w-md z-10 flex flex-col antialiased selection:bg-primary/10 selection:text-primary",children:[jsxRuntime.jsxs("div",{className:"text-center mb-6",children:[jsxRuntime.jsx(react$1.motion.h1,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},className:"font-heading text-3xl font-bold tracking-tight mb-2",children:"Redefinir Senha"}),jsxRuntime.jsx("p",{className:"text-muted-foreground text-sm mb-4",children:"Crie uma nova senha para sua conta"})]}),jsxRuntime.jsxs("form",{onSubmit:l(p),className:"space-y-4",children:[jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Nova Senha",type:"password",autoComplete:"new-password",error:!!d.password,...n("password")}),jsxRuntime.jsx(R,{message:d.password?.message})]}),jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Confirmar Nova Senha",type:"password",autoComplete:"new-password",error:!!d.confirmPassword,...n("confirmPassword")}),jsxRuntime.jsx(R,{message:d.confirmPassword?.message})]}),jsxRuntime.jsx(_,{type:"submit",disabled:a,className:"w-full flex items-center justify-center gap-2",children:a?jsxRuntime.jsx(lucideReact.Loader2,{className:"w-5 h-5 animate-spin"}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:["Redefinir Senha",jsxRuntime.jsx(lucideReact.ArrowRight,{className:"w-4 h-4"})]})}),o&&jsxRuntime.jsx("div",{className:"text-center mt-4",children:jsxRuntime.jsx("button",{type:"button",onClick:o,className:"text-xs text-primary font-semibold hover:underline",children:"Voltar para o login"})})]})]})}function Uo({token:e,onSuccess:r,onFailed:t,signInRedirect:o}){let[a,i]=react.useState("verifying"),[s,n]=react.useState("Verificando seu e-mail..."),[l,d]=react.useState(true),{auth:p}=v(),c=react.useRef(false),g=async()=>{if(!c.current){c.current=true,d(true),i("verifying");try{if(p.profile()?.is_verified){i("already_verified"),n("Seu e-mail j\xE1 est\xE1 verificado."),d(!1);return}let u=await p.verifyEmail(e);u.success?(await p.refresh(),i("success"),n(u.message||"E-mail verificado com sucesso!"),r&&await r(u.message)):(i("error"),n(u.message||"Falha na verifica\xE7\xE3o do e-mail."),t&&await t(u.message,u.trace));}catch{i("error"),n("Ocorreu um erro inesperado durante a verifica\xE7\xE3o.");}finally{d(false);}}};return react.useEffect(()=>{e&&!c.current&&g();},[e]),jsxRuntime.jsx("div",{className:"w-full max-w-md z-10 flex flex-col antialiased selection:bg-primary/10 selection:text-primary",children:jsxRuntime.jsxs("div",{className:"text-center mb-6",children:[jsxRuntime.jsxs(react$1.motion.div,{initial:{scale:.8,opacity:0},animate:{scale:1,opacity:1},className:"flex justify-center mb-4",children:[a==="verifying"&&jsxRuntime.jsx(lucideReact.Loader2,{className:"w-12 h-12 text-primary animate-spin"}),(a==="success"||a==="already_verified")&&jsxRuntime.jsx(lucideReact.CheckCircle2,{className:"w-12 h-12 text-green-500"}),a==="error"&&jsxRuntime.jsx(lucideReact.XCircle,{className:"w-12 h-12 text-destructive"})]}),jsxRuntime.jsx(react$1.motion.h1,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},className:"font-heading text-3xl font-bold tracking-tight mb-2",children:a==="verifying"?"Verificando...":a==="error"?"Falha na verifica\xE7\xE3o":"E-mail Verificado!"}),jsxRuntime.jsx("p",{className:"text-muted-foreground text-sm mb-6",children:s}),a==="error"&&jsxRuntime.jsx(_,{onClick:()=>{c.current=false,g();},disabled:l,className:"w-full flex items-center justify-center gap-2",children:"Tentar novamente"}),(a==="success"||a==="already_verified")&&jsxRuntime.jsxs("div",{className:"space-y-4",children:[jsxRuntime.jsx("p",{className:"text-xs text-muted-foreground",children:"Voc\xEA j\xE1 pode continuar navegando em sua conta."}),o&&jsxRuntime.jsxs(_,{onClick:o,className:"w-full flex items-center justify-center gap-2",children:["Ir para o login",jsxRuntime.jsx(lucideReact.ArrowRight,{className:"w-4 h-4"})]})]})]})})}function De({children:e,className:r,backLink:t}){return jsxRuntime.jsxs("main",{className:M("bg-background h-full text-foreground min-h-screen relative overflow-hidden","flex flex-col px-4","antialiased selection:bg-primary/10 selection:text-primary",r),children:[jsxRuntime.jsx("div",{className:"absolute top-[-10%] left-[-10%] w-[40%] h-[40%] bg-primary/20 rounded-full blur-3xl pointer-events-none"}),jsxRuntime.jsx("div",{className:"absolute bottom-[-10%] right-[-10%] w-[40%] h-[40%] bg-primary/20 rounded-full blur-3xl pointer-events-none"}),t&&jsxRuntime.jsx("div",{className:"relative z-10 pt-4",children:t}),jsxRuntime.jsx("div",{className:"relative z-10 flex-1 flex justify-center items-center",children:e})]})}var Xo=zod.z.object({email:zod.z.string().email("E-mail inv\xE1lido"),password:zod.z.string().min(8,"A senha deve ter pelo menos 8 caracteres"),confirmPassword:zod.z.string().min(1,"A confirma\xE7\xE3o de senha \xE9 obrigat\xF3ria")}).refine(e=>e.password===e.confirmPassword,{message:"As senhas n\xE3o coincidem",path:["confirmPassword"]});function Go({onSuccess:e,onFailed:r,backLink:t}){let[o,a]=react.useState(false),{auth:i}=v(),{register:s,handleSubmit:n,formState:{errors:l}}=reactHookForm.useForm({resolver:zod$1.zodResolver(Xo),defaultValues:{email:"",password:"",confirmPassword:""}}),d=async p=>{a(true);try{let c=await i.setup(p.email,p.password);c.success?e?await e(c.message):sonner.toast.success("Configura\xE7\xE3o inicial realizada com sucesso!"):r?await r(c.message,c.trace):sonner.toast.error(c.message||"Erro ao realizar setup");}catch(c){console.error(c),sonner.toast.error("Ocorreu um erro inesperado");}finally{a(false);}};return jsxRuntime.jsx(De,{backLink:t,children:jsxRuntime.jsxs("div",{className:"w-full max-w-md z-10 flex flex-col",children:[jsxRuntime.jsxs("div",{className:"mb-10 text-center",children:[jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0,y:-20},animate:{opacity:1,y:0},className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-primary/10 text-primary text-xs font-bold uppercase tracking-widest mb-4",children:[jsxRuntime.jsx(lucideReact.Sparkles,{size:14}),"Setup Inicial"]}),jsxRuntime.jsx("h1",{className:"font-heading text-4xl font-bold tracking-tight mb-3",children:"Bem-vindo ao IdentityX"}),jsxRuntime.jsx("p",{className:"text-muted-foreground text-base max-w-[320px] mx-auto",children:"Vamos come\xE7ar criando sua conta de administrador mestre."})]}),jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,scale:.98},animate:{opacity:1,scale:1},transition:{delay:.1},className:"bg-card/50 backdrop-blur-sm border border-border/40 p-1 rounded-2xl",children:jsxRuntime.jsx("div",{className:"bg-background rounded-[14px] p-6 shadow-sm",children:jsxRuntime.jsxs("form",{onSubmit:n(d),className:"space-y-5",children:[jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"E-mail do Administrador",type:"email",autoComplete:"email",error:!!l.email,...s("email")}),jsxRuntime.jsx(R,{message:l.email?.message})]}),jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Senha",type:"password",autoComplete:"new-password",error:!!l.password,...s("password")}),jsxRuntime.jsx(R,{message:l.password?.message})]}),jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Confirmar Senha",type:"password",autoComplete:"new-password",error:!!l.confirmPassword,...s("confirmPassword")}),jsxRuntime.jsx(R,{message:l.confirmPassword?.message})]}),jsxRuntime.jsx(_,{type:"submit",disabled:o,className:"w-full flex items-center justify-center gap-2 h-13 mt-4 text-base font-bold shadow-lg shadow-primary/10 group",children:o?jsxRuntime.jsx(lucideReact.Loader2,{className:"w-5 h-5 animate-spin"}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:["Finalizar Configura\xE7\xE3o",jsxRuntime.jsx(lucideReact.ArrowRight,{className:"w-4 h-4 transition-transform group-hover:translate-x-1"})]})})]})})}),jsxRuntime.jsxs("div",{className:"mt-8 text-center",children:[jsxRuntime.jsx("div",{className:"h-1 w-full bg-muted/30 rounded-full overflow-hidden",children:jsxRuntime.jsx(react$1.motion.div,{initial:{width:0},animate:{width:"100%"},transition:{duration:1.5,ease:"easeInOut"},className:"h-full bg-primary/40"})}),jsxRuntime.jsx("p",{className:"text-[10px] text-muted-foreground mt-2 font-medium uppercase tracking-tighter",children:"Passo 1 de 1 \u2022 Configurando ambiente"})]})]})})}var ea={signin:{title:"Bem-vindo de volta",subtitle:"Entre com suas credenciais para acessar a plataforma",toggleLabel:"Ainda n\xE3o tem uma conta?",toggleAction:"Cadastre-se",toggleTo:"signup"},signup:{title:"Criar sua conta",subtitle:"Preencha os dados abaixo para se cadastrar",toggleLabel:"J\xE1 possui uma conta?",toggleAction:"Fa\xE7a login",toggleTo:"signin"},"forgot-password":{title:"Recuperar senha",subtitle:"Digite seu e-mail para receber instru\xE7\xF5es",toggleLabel:"Lembrou da senha?",toggleAction:"Voltar ao login",toggleTo:"signin"}};function ta({initialView:e="signin",onLoginSuccess:r,onSignUpSuccess:t,onFailed:o,backLink:a,providers:i}){let[s,n]=react.useState(e),l=async p=>{n("signin"),t&&await t(p);},d=ea[s];return jsxRuntime.jsx(De,{backLink:a,children:jsxRuntime.jsxs("div",{className:"w-full max-w-md z-10 flex flex-col",children:[jsxRuntime.jsxs("div",{className:"text-center mb-6",children:[jsxRuntime.jsx(react$1.motion.h1,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},className:"font-heading text-3xl font-bold tracking-tight mb-2",children:d.title},s+"-h1"),jsxRuntime.jsx("p",{className:"text-muted-foreground text-sm mb-4",children:d.subtitle}),jsxRuntime.jsxs("div",{className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full bg-muted/50 border border-border/50 text-xs font-medium text-muted-foreground",children:[d.toggleLabel,jsxRuntime.jsx("button",{type:"button",onClick:()=>n(d.toggleTo),className:"text-primary font-semibold hover:underline",children:d.toggleAction})]})]}),jsxRuntime.jsx("div",{className:`relative ${i&&i.length>0?"min-h-112":"min-h-80"}`,children:jsxRuntime.jsxs(react$1.AnimatePresence,{mode:"wait",children:[s==="signin"&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},exit:{opacity:0,x:10},transition:{duration:.2},className:"absolute inset-0",children:jsxRuntime.jsx(dt,{onSuccess:r,onFailed:o,signUpRedirect:()=>n("signup"),forgotPasswordRedirect:()=>n("forgot-password"),providers:i})},"signin"),s==="signup"&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,x:10},animate:{opacity:1,x:0},exit:{opacity:0,x:-10},transition:{duration:.2},className:"absolute inset-0",children:jsxRuntime.jsx(mt,{onSuccess:l,onFailed:o,signInRedirect:()=>n("signin")})},"signup"),s==="forgot-password"&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.2},className:"absolute inset-0",children:jsxRuntime.jsx(gt,{onFailed:o,signInRedirect:()=>n("signin")})},"forgot-password")]})})]})})}var da={human:{gradient:"linear-gradient(135deg, #7F77DD, #AFA9EC)",orbBg:"#EEEDFE",orbText:"#534AB7",pillBg:"#EEEDFE",pillText:"#3C3489",pillBorder:"#AFA9EC",capBg:"#EEEDFE",capText:"#534AB7",capBorder:"#AFA9EC"},service:{gradient:"linear-gradient(135deg, #1D9E75, #5DCAA5)",orbBg:"#E1F5EE",orbText:"#0F6E56",pillBg:"#E1F5EE",pillText:"#085041",pillBorder:"#5DCAA5",capBg:"#E1F5EE",capText:"#0F6E56",capBorder:"#5DCAA5"},machine:{gradient:"linear-gradient(135deg, #BA7517, #EF9F27)",orbBg:"#FAEEDA",orbText:"#854F0B",pillBg:"#FAEEDA",pillText:"#412402",pillBorder:"#EF9F27",capBg:"#FAEEDA",capText:"#854F0B",capBorder:"#EF9F27"}};function pa({value:e}){let[r,t]=react.useState(false);return jsxRuntime.jsx("button",{onClick:()=>{!e||e==="\u2014"||navigator.clipboard.writeText(e).then(()=>{t(true),setTimeout(()=>t(false),2e3);});},"aria-label":"Copiar valor",className:"opacity-0 group-hover:opacity-100 transition-all duration-150 p-1.5 rounded-md hover:bg-muted text-muted-foreground hover:text-foreground",children:jsxRuntime.jsx(react$1.AnimatePresence,{mode:"wait",initial:false,children:r?jsxRuntime.jsx(react$1.motion.span,{initial:{scale:.7,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.7,opacity:0},transition:{duration:.15},children:jsxRuntime.jsx(lucideReact.Check,{className:"w-3.5 h-3.5 text-green-600"})},"check"):jsxRuntime.jsx(react$1.motion.span,{initial:{scale:.7,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.7,opacity:0},transition:{duration:.15},children:jsxRuntime.jsx(lucideReact.Copy,{className:"w-3.5 h-3.5"})},"copy")})})}function He({icon:e,label:r,value:t}){let o=t||"\u2014";return jsxRuntime.jsxs("div",{className:"group flex items-center justify-between px-5 py-2.5 gap-3 rounded-md mx-1.5 hover:bg-muted/50 transition-colors",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 min-w-0",children:[jsxRuntime.jsx(e,{className:"w-3.5 h-3.5 text-muted-foreground shrink-0"}),jsxRuntime.jsx("span",{className:"text-[11px] text-muted-foreground w-12 shrink-0",children:r}),jsxRuntime.jsx("span",{className:"text-[12px] font-mono text-foreground truncate",title:o,children:o})]}),jsxRuntime.jsx(pa,{value:o})]})}function ma({data:e}){let{sub:r,cred:t}=e,o=r.type??"human",a=da[o],i=r.capabilities??[],s=i.map(n=>String(n));return jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{duration:.3,ease:"easeOut"},className:"w-full rounded-2xl border border-border/60 overflow-hidden bg-card shadow-sm",children:[jsxRuntime.jsxs("div",{className:"px-5 pt-2.5 pb-3.5 border-b border-border/60",children:[jsxRuntime.jsx("p",{className:"text-base font-semibold text-foreground truncate",children:r.id??"unknown_actor"}),jsxRuntime.jsx("p",{className:"text-[12px] text-muted-foreground mb-2 truncate",children:r.email??"\u2014"}),jsxRuntime.jsxs("div",{className:"flex gap-1.5 flex-wrap",children:[jsxRuntime.jsx("span",{className:"text-[10px] font-medium uppercase tracking-wide px-2 py-0.5 rounded-full border",style:{background:a.pillBg,color:a.pillText,borderColor:a.pillBorder},children:o}),jsxRuntime.jsx("span",{className:"text-[10px] font-medium uppercase tracking-wide px-2 py-0.5 rounded-full border border-border bg-muted text-muted-foreground",children:t.type??"token"})]})]}),jsxRuntime.jsx("div",{className:"grid grid-cols-3 border-b border-border/60 divide-x divide-border/60",children:[{label:"Capabilities",value:i.length},{label:"Metadata",value:(r.metadata??[]).length},{label:"Project",value:r.project_id?.split("_")[1]?.slice(0,4)??"\u2014"}].map(n=>jsxRuntime.jsxs("div",{className:"py-3 text-center",children:[jsxRuntime.jsx("p",{className:"text-[10px] text-muted-foreground uppercase tracking-wide mb-0.5",children:n.label}),jsxRuntime.jsx("p",{className:"text-sm font-medium font-mono text-foreground",children:n.value})]},n.label))}),jsxRuntime.jsxs("div",{className:"py-1.5 border-b border-border/60",children:[jsxRuntime.jsx(He,{icon:lucideReact.User,label:"sub id",value:r.id}),jsxRuntime.jsx(He,{icon:lucideReact.FolderOpen,label:"project",value:r.project_id}),jsxRuntime.jsx(He,{icon:lucideReact.Key,label:"cred id",value:t.id}),jsxRuntime.jsx(He,{icon:lucideReact.Mail,label:"email",value:r.email})]}),s.length>0&&jsxRuntime.jsxs("div",{className:"px-5 py-3 border-b border-border/60",children:[jsxRuntime.jsx("p",{className:"text-[10px] text-muted-foreground uppercase tracking-wide mb-2",children:"Capabilities"}),jsxRuntime.jsx("div",{className:"flex flex-wrap gap-1.5",children:s.map(n=>jsxRuntime.jsx("span",{className:"text-[11px] font-mono px-2.5 py-1 rounded-full border",style:{background:a.capBg,color:a.capText,borderColor:a.capBorder},children:n},n))})]})]})}exports.AuthProvider=oi;exports.BasicInputField=T;exports.BasicLogoutButton=Sr;exports.Copyright=br;exports.ForgotPassword=Dt;exports.ModernAuth=ta;exports.ModernForgotPassword=gt;exports.ModernIntrospect=ma;exports.ModernResetPassword=Lo;exports.ModernSetup=Go;exports.ModernSignIn=dt;exports.ModernSignUp=mt;exports.ModernVerifyEmail=Uo;exports.ResendVerifyEmail=Hr;exports.ResetPassword=Br;exports.Sessions=_r;exports.SignIn=fr;exports.SignUp=hr;exports.VerifyEmail=Ur;exports.useAuth=v;//# sourceMappingURL=react.js.map
|
|
1
|
+
'use strict';var react=require('react'),envoyFetchTs=require('@trieoh/envoy-fetch-ts'),jsxRuntime=require('react/jsx-runtime'),lucideReact=require('lucide-react'),uaParserJs=require('ua-parser-js'),sonner=require('sonner'),reactHookForm=require('react-hook-form'),zod$1=require('@hookform/resolvers/zod'),zod=require('zod'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),react$1=require('motion/react'),classVarianceAuthority=require('class-variance-authority');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;function qe(e,r){if(r.startsWith("http"))return r;let t=e.replace(/\/$/,""),o=r.replace(/^\//,"");return `${t}/${o}`}var se={isAuthenticated:false,isInitializing:true},je=new Set,kt=()=>je.forEach(e=>e()),P={subscribe:e=>(je.add(e),()=>je.delete(e)),getSnapshot:()=>se,getServerSnapshot:()=>se,set:e=>{se={...se,...e},kt();},reset:()=>{se={isAuthenticated:false,isInitializing:false},kt();}};typeof window<"u"&&window.addEventListener("storage",e=>{if(e.key==="trieoh_access_expiry")if(!e.newValue)P.reset();else {let r=Number(e.newValue),t=!isNaN(r)&&r>Date.now();P.set({isAuthenticated:t,isInitializing:false});}});var V={getItem:e=>typeof window<"u"?localStorage.getItem(e):null,setItem:(e,r)=>{typeof window<"u"&&localStorage.setItem(e,r);},removeItem:e=>{typeof window<"u"&&localStorage.removeItem(e);}},ne={getItem:e=>typeof window<"u"?sessionStorage.getItem(e):null,setItem:(e,r)=>{typeof window<"u"&&sessionStorage.setItem(e,r);},removeItem:e=>{typeof window<"u"&&sessionStorage.removeItem(e);}};var Ee="trieoh_access_token",Y={getAccessToken:()=>ne.getItem(Ee),setAccessToken:e=>{e?ne.setItem(Ee,e):ne.removeItem(Ee);},clear:()=>{ne.removeItem(Ee);}};var le=null,$e="trieoh_access_expiry",Ae="trieoh_refresh_expiry",Je="trieoh_refresh_token";function St(e){try{let r=e.split(".")[1];if(!r)return null;let t=r.replace(/-/g,"+").replace(/_/g,"/");for(;t.length%4;)t+="=";let o=decodeURIComponent(atob(t).split("").map(a=>"%"+("00"+a.charCodeAt(0).toString(16)).slice(-2)).join(""));return JSON.parse(o)}catch(r){return envoyFetchTs.logger.error("Error decoding JWT:",r),null}}function X(e){let{access_token:r,refresh_token:t,access_expires_at:o,refresh_expires_at:a}=e,i=St(r);if(!i){envoyFetchTs.logger.error("Failed to decode tokens");return}Y.setAccessToken(r);let s=new Date(a).getTime(),n=new Date(o).getTime();V.setItem(Je,t),V.setItem($e,String(n)),V.setItem(Ae,String(s)),le={access_data:i,refresh_expiry_date:s},P.set({isAuthenticated:true,isInitializing:false}),envoyFetchTs.logger.log("Auth session saved");}function Ke(){return V.getItem(Je)}function de(){if(le)return le;let e=Y.getAccessToken();if(!e)return null;let r=St(e);if(!r||r.exp*1e3<=Date.now())return null;let t=V.getItem(Ae);if(!t)return null;let o=Number(t);if(isNaN(o))return null;let a={access_data:r,refresh_expiry_date:o};return le=a,a}function Et(e,r){try{let t=V.getItem(e);if(!t)return !0;let o=Number(t);return isNaN(o)?!0:o-Date.now()<=r*1e3}catch(t){return envoyFetchTs.logger.warn("Error reading expiry:",t),true}}var Ye=(e=30)=>Et($e,e),Re=(e=10)=>Et(Ae,e);function pe(){le=null,Y.clear(),V.removeItem($e),V.removeItem(Ae),V.removeItem(Je),P.reset(),envoyFetchTs.logger.log("Auth tokens and claims cleared");}function At(){let e=de();return e?e.access_data.subject:null}function Zt(){let e=typeof window>"u",r=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:{},o=r.VITE_TRIEOH_AUTH_PROJECT_ID||t.NEXT_PUBLIC_TRIEOH_AUTH_PROJECT_ID||t.PUBLIC_TRIEOH_AUTH_PROJECT_ID||"",a=e&&t.TRIEOH_AUTH_API_KEY||"";return {PROJECT_ID:o,API_KEY:a,BASE_URL:"https://api.trieauth.trieoh.com"}}var Pe=null,Ge={};function Rt(e){Ge={...Ge,...e},Pe=null;}function Xe(){return Pe||(Pe={...Zt(),...Ge}),Pe}var S={get PROJECT_ID(){return Xe().PROJECT_ID},get BASE_URL(){return Xe().BASE_URL}};var Te=class{constructor(r){this.isRefreshing=false;this.refreshPromise=null;this.baseURL=r?.baseURL||S.BASE_URL,this.authBaseURL=r?.authBaseURL||this.baseURL,this.onTokenRefreshed=r?.onTokenRefreshed,this.onRefreshFailed=r?.onRefreshFailed;}async refreshToken(){return this.isRefreshing&&this.refreshPromise?this.refreshPromise:(this.isRefreshing=true,this.refreshPromise=(async()=>{let r=true;try{let t=Ke();if(!t)throw r=!0,new Error("No refresh token available");let o=await envoyFetchTs.simpleFetch(qe(this.authBaseURL,"/auth/refresh"),{method:"POST",credentials:"omit",headers:{refresh_token:t}});if(o.code!==200||!o.data)throw r=o.code!==503,new Error(o.message||"Failed to refresh token");X(o.data);let a=de();a&&this.onTokenRefreshed?.(a),envoyFetchTs.logger.log("Token refreshed successfully");}catch(t){throw envoyFetchTs.logger.warn("Failed to refresh token:",t),r&&pe(),this.onRefreshFailed?.(t),t}finally{this.isRefreshing=false,this.refreshPromise=null;}})(),this.refreshPromise)}async beforeRequest(){if(Re()){pe();return}if(!!!Y.getAccessToken()||Ye(30))try{await this.refreshToken();}catch(t){envoyFetchTs.logger.warn("Proactive refresh failed:",t);}}async fetch(r,t){let o=t?.requiresAuth!==false,a=r.includes("/auth/refresh");o&&!a&&!t?.skipRefresh&&await this.beforeRequest();let i=qe(this.baseURL,r),s=async()=>{let l=Y.getAccessToken(),d=new Headers(t?.headers);return o&&l&&d.set("Authorization",`Bearer ${l}`),d.has("Content-Type")||d.set("Content-Type","application/json"),fetch(i,{...t,headers:d,credentials:"omit"})},n=await s();if(n.status===401&&o&&!a){let l=!!Ke(),d=Ye(30);if(l&&d){envoyFetchTs.logger.log("401 detected and token is expiring/expired, attempting refresh...");try{await this.refreshToken(),n=await s();}catch{envoyFetchTs.logger.error("Retry failed after refresh error");}}}return n}};function G(e){if(!e)return;let{requiresAuth:r,skipRefresh:t,...o}=e,a={};return r!==void 0&&(a.requiresAuth=r),t!==void 0&&(a.skipRefresh=t),{...o,adapterInit:{...o.adapterInit,...a}}}var Ce=class{constructor(r,t,o,a){this.interceptor=new Te({baseURL:r,authBaseURL:t,onTokenRefreshed:o}),this.client=envoyFetchTs.createDefaultFetchClient({...a,adapter:this.interceptor.fetch.bind(this.interceptor)});}request(r,t){return this.client.request(r,G(t))}get(r,t){return this.client.get(r,G(t))}post(r,t,o){return this.client.post(r,t,G(o))}put(r,t,o){return this.client.put(r,t,G(o))}patch(r,t,o){return this.client.patch(r,t,G(o))}delete(r,t,o){return this.client.delete(r,t,G(o))}query(r,t){return this.client.query(r,G(t))}};var W=()=>{if(!S.PROJECT_ID||S.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 Pt=(e,r)=>({isSetupDone:async()=>e.get("/auth/setup",{requiresAuth:false}),setup:async(t,o)=>{S.PROJECT_ID&&W();let a=`/auth/setup${S.PROJECT_ID?`?project_id=${S.PROJECT_ID}`:""}`,i=await e.post(a,{email:t,password:o},{requiresAuth:false});return i.success&&(X(i.data),r?.onSetup?.(i)),i},login:async(t,o)=>{S.PROJECT_ID&&W();let a=`/auth/login${S.PROJECT_ID?`?project_id=${S.PROJECT_ID}`:""}`,i=await e.post(a,{email:t,password:o},{requiresAuth:false});return i.success&&(X(i.data),r?.onLogin?.(i)),i},loginWithProvider:async t=>{let o=`/auth/${t}/connect`;return await e.get(o,{requiresAuth:false})},completeProviderLogin:async(t,o)=>{let a=`/auth/${t}/callback?code=${o}`,i=await e.get(a,{requiresAuth:false});return i.success&&(X(i.data),r?.onLogin?.(i)),i},register:async(t,o)=>{let a={requiresAuth:false},i=`/auth/register${S.PROJECT_ID?`?project_id=${S.PROJECT_ID}`:""}`;S.PROJECT_ID&&W();let s=await e.post(i,{email:t,password:o},a);return s.success&&r?.onRegister?.(s),s},logout:async t=>{let o=`/auth/logout${S.PROJECT_ID?`?project_id=${S.PROJECT_ID}`:""}`,a=await e.post(o);return (a.success||t?.forceLogout)&&pe(),a},refresh:async()=>{let t=await e.post("/auth/refresh",void 0,{skipRefresh:true});return t.success&&(X(t.data),r?.onRefresh?.(t)),t},sessions:async()=>e.get("/sessions"),currentSession:async()=>e.get("/sessions/me"),revokeASession:async t=>e.delete(`/sessions/${t}`),revokeSessions:async(t=false)=>{let o=t?"/sessions":"/sessions/others";return e.delete(o)},profile:()=>At(),sendForgotPassword:async t=>{let o={requiresAuth:false};return S.PROJECT_ID?(W(),e.post("/account/forgot-password",{email:t,project_id:S.PROJECT_ID},o)):e.post("/account/forgot-password",{email:t},o)},resetPassword:async(t,o)=>{let a=await e.post(`/account/reset-password?token=${t}`,{new_password:o},{requiresAuth:false});return a.success&&r?.onResetPassword?.(a),a},verifyEmail:async t=>{let o=`/account/verify?token=${t}`,a=await e.post(o);return a.success&&r?.onVerify?.(a),a},resendVerifyEmail:async()=>e.post("/account/verify/resend"),introspect:async t=>e.get("/auth/introspect",{requiresAuth:!t,headers:t?{"X-API-KEY":t}:void 0}),health:async()=>e.get("/health",{requiresAuth:false}),authHealth:async()=>e.get("/protected/health")});var Ct=react.createContext(null);function oi({children:e,baseURL:r,projectId:t,isProjectMode:o=true,fallback:a,waitSession:i=true,clientConfig:s,onLogin:n,onSetup:l,onResetPassword:d,onRegister:p,onVerify:c,onRefresh:g}){let f=react.useRef(false),{isAuthenticated:u,isInitializing:h}=react.useSyncExternalStore(P.subscribe,P.getSnapshot,P.getServerSnapshot);react.useEffect(()=>{Rt({...t?{PROJECT_ID:t}:{},...r?{BASE_URL:r}:{}});},[t,r]);let w=react.useCallback(x=>{P.set({isAuthenticated:!!x.access_data,isInitializing:false}),g?.();},[g]),k=react.useMemo(()=>new Ce(r,void 0,w,s),[r,w,s]),C=react.useMemo(()=>Pt(k,{onLogin:n,onSetup:l,onResetPassword:d,onRegister:p,onVerify:c,onRefresh:g}),[k,n,l,d,p,c,g]);react.useEffect(()=>{o&&W(),(async()=>{if(!f.current){if(f.current=true,de()){P.set({isAuthenticated:true,isInitializing:false});return}if(Re()){P.reset(),P.set({isInitializing:false});return}envoyFetchTs.logger.log("No cached claims, attempting silent refresh...");try{await k.interceptor.refreshToken(),envoyFetchTs.logger.log("Session restored.");}catch{P.reset(),envoyFetchTs.logger.warn("Could not restore session (offline?).");}finally{P.set({isInitializing:false});}}})();},[C,o]);let K=react.useMemo(()=>({auth:C,isAuthenticated:u,isInitializing:h,isProjectMode:o}),[C,u,h,o]);return i&&h?a??null:jsxRuntime.jsx(Ct.Provider,{value:K,children:e})}function v(){let e=react.useContext(Ct);if(!e)throw new Error("useAuth must be used inside <AuthProvider>");return e}function Ze(e,{insertAt:r}={}){if(typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",r==="top"&&t.firstChild?t.insertBefore(o,t.firstChild):t.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e));}Ze(`/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties;@layer theme,base,components,utilities;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: var(--font-sans, "Inter", sans-serif);--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-green-500: oklch(72.3% .219 149.579);--color-green-600: oklch(62.7% .194 149.214);--spacing: .25rem;--container-md: 28rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-base--line-height: 1.5 ;--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--text-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl: 2.25rem;--text-4xl--line-height: calc(2.5 / 2.25);--font-weight-extralight: 200;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--tracking-tighter: -.05em;--tracking-tight: -.025em;--tracking-normal: 0em;--tracking-wide: .025em;--tracking-wider: .05em;--tracking-widest: .1em;--radius-sm: calc(var(--radius, .625rem) - 4px);--radius-md: calc(var(--radius, .625rem) - 2px);--radius-lg: var(--radius, .625rem);--radius-2xl: 1rem;--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--animate-spin: spin 1s linear infinite;--blur-sm: 8px;--blur-3xl: 64px;--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-background: var(--background, oklch(.9702 0 0));--color-foreground: var(--foreground, oklch(.1944 .0051 248.09));--color-primary: var(--primary, oklch(.7975 .1018 262.7));--color-primary-foreground: var(--primary-foreground, oklch(.9702 0 0));--color-secondary: var(--secondary, oklch(.1139 .0789 264.05));--color-secondary-foreground: var(--secondary-foreground, oklch(.9702 0 0));--color-muted: var(--muted, oklch(.9569 .0026 248.09));--color-muted-foreground: var(--muted-foreground, oklch(.5278 0 0));--color-border: var(--border, oklch(.869 .0093 248.09));--color-input: var(--input, oklch(.9145 .0062 248.09));--color-destructive: var(--destructive, oklch(.6373 .1718 28.92));--color-destructive-foreground: var(--destructive-foreground, oklch(.9851 0 0));--color-ring: var(--ring, oklch(.7975 .1018 262.7));--color-accent: var(--accent, oklch(.9326 .0313 262.7));--color-accent-foreground: var(--accent-foreground, oklch(.1944 .0051 248.09));--radius-full: 9999px}}@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}.pointer-events-none{pointer-events:none}.button-loading{&:after{content:"";position:absolute;top:0;left:-150%;width:150%;height:100%;background:linear-gradient(120deg,transparent 0%,var(--color-foreground) 40%,transparent 80%);@supports (color: color-mix(in lab,red,red)){background:linear-gradient(120deg,transparent 0%,color-mix(in oklab,var(--color-foreground) 40%,white 15%) 40%,transparent 80%)}animation:shine 1.5s infinite}}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-1\\.5{top:calc(var(--spacing) * 1.5)}.top-1\\/2{top:50%}.top-\\[-10\\%\\]{top:-10%}.right-0{right:calc(var(--spacing) * 0)}.right-3{right:calc(var(--spacing) * 3)}.right-\\[-10\\%\\]{right:-10%}.bottom-\\[-10\\%\\]{bottom:-10%}.left-3\\.5{left:calc(var(--spacing) * 3.5)}.left-\\[-10\\%\\]{left:-10%}.z-10{z-index:10}.m-0{margin:calc(var(--spacing) * 0)}.m-2{margin:calc(var(--spacing) * 2)}.m-\\[0\\.125rem\\]{margin:.125rem}.mx-1\\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mb-0\\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.box-border{box-sizing:border-box}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1{height:calc(var(--spacing) * 1)}.h-3\\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-13{height:calc(var(--spacing) * 13)}.h-16{height:calc(var(--spacing) * 16)}.h-\\[40\\%\\]{height:40%}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\\[max\\(75dvh\\,32rem\\)\\]{max-height:max(75dvh,32rem)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-112{min-height:calc(var(--spacing) * 112)}.min-h-screen{min-height:100vh}.w-3\\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-\\[40\\%\\]{width:40%}.w-full{width:100%}.max-w-56{max-width:calc(var(--spacing) * 56)}.max-w-100{max-width:calc(var(--spacing) * 100)}.max-w-120{max-width:calc(var(--spacing) * 120)}.max-w-\\[320px\\]{max-width:320px}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-60{min-width:calc(var(--spacing) * 60)}.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}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.appearance-none{appearance:none}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.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}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.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)}.space-y-1{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-4{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-5{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}}.divide-x{:where(&>:not(:last-child)){--tw-divide-x-reverse: 0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}}.divide-border\\/60{:where(&>:not(:last-child)){border-color:var(--color-border);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-border) 60%,transparent)}}}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\\[14px\\]{border-radius:14px}.rounded-full{border-radius:var(--radius-full)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.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{border-bottom-style:var(--tw-border-style);border-bottom-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-border{border-color:var(--color-border)}.border-border\\/40{border-color:var(--color-border);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-border) 40%,transparent)}}.border-border\\/50{border-color:var(--color-border);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-border) 50%,transparent)}}.border-border\\/60{border-color:var(--color-border);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-border) 60%,transparent)}}.border-destructive\\!{border-color:var(--color-destructive)!important}.border-destructive\\/50{border-color:var(--color-destructive);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-destructive) 50%,transparent)}}.border-foreground{border-color:var(--color-foreground)}.border-input{border-color:var(--color-input)}.border-primary{border-color:var(--color-primary)}.border-secondary\\/20{border-color:var(--color-secondary);@supports (color: color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-secondary) 20%,transparent)}}.bg-background{background-color:var(--color-background)}.bg-border{background-color:var(--color-border)}.bg-destructive{background-color:var(--color-destructive)}.bg-destructive\\/5{background-color:var(--color-destructive);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-destructive) 5%,transparent)}}.bg-foreground\\/10{background-color:var(--color-foreground);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-foreground) 10%,transparent)}}.bg-muted{background-color:var(--color-muted)}.bg-muted\\/30{background-color:var(--color-muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-muted) 30%,transparent)}}.bg-muted\\/40{background-color:var(--color-muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-muted) 40%,transparent)}}.bg-muted\\/50{background-color:var(--color-muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-primary\\/10{background-color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-primary) 10%,transparent)}}.bg-primary\\/20{background-color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-primary) 20%,transparent)}}.bg-primary\\/40{background-color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-primary) 40%,transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-transparent{background-color:transparent}.p-1{padding:calc(var(--spacing) * 1)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-6{padding:calc(var(--spacing) * 6)}.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-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-px{padding-block:1px}.pt-2\\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-3\\.5{padding-bottom:calc(var(--spacing) * 3.5)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading, var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading, var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[12px\\]{font-size:12px}.leading-none{--tw-leading: 1;line-height:1}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.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)}.tracking-tight{--tw-tracking: var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking: var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking: var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking: var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking: var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.text-destructive{color:var(--color-destructive)}.text-destructive-foreground{color:var(--color-destructive-foreground)}.text-destructive\\/80{color:var(--color-destructive);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-destructive) 80%,transparent)}}.text-foreground{color:var(--color-foreground)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-primary\\/70{color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-primary) 70%,transparent)}}.text-secondary-foreground{color:var(--color-secondary-foreground)}.uppercase{text-transform:uppercase}.line-through{text-decoration-line:line-through}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0%}.opacity-50{opacity:50%}.opacity-60{opacity:60%}.opacity-95{opacity:95%}.opacity-100{opacity:100%}.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)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.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-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-primary\\/10{--tw-shadow-color: var(--color-primary);@supports (color: color-mix(in lab,red,red)){--tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-primary) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-destructive\\/20{--tw-ring-color: var(--color-destructive);@supports (color: color-mix(in lab,red,red)){--tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur-3xl{--tw-blur: blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur: blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.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-all{transition-property:all;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)}.ease-out{--tw-ease: var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style: none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-hover\\:translate-x-1{&:is(:where(.group):hover *){@media(hover:hover){--tw-translate-x: calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}}}.group-hover\\:opacity-100{&:is(:where(.group):hover *){@media(hover:hover){opacity:100%}}}.peer-placeholder-shown\\:top-3\\.5{&:is(:where(.peer):placeholder-shown~*){top:calc(var(--spacing) * 3.5)}}.peer-placeholder-shown\\:text-\\[15px\\]{&:is(:where(.peer):placeholder-shown~*){font-size:15px}}.peer-placeholder-shown\\:font-normal{&:is(:where(.peer):placeholder-shown~*){--tw-font-weight: var(--font-weight-normal);font-weight:var(--font-weight-normal)}}.peer-placeholder-shown\\:tracking-normal{&:is(:where(.peer):placeholder-shown~*){--tw-tracking: var(--tracking-normal);letter-spacing:var(--tracking-normal)}}.peer-placeholder-shown\\:text-destructive\\/60{&:is(:where(.peer):placeholder-shown~*){color:var(--color-destructive);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-destructive) 60%,transparent)}}}.peer-placeholder-shown\\:text-muted-foreground{&:is(:where(.peer):placeholder-shown~*){color:var(--color-muted-foreground)}}.peer-focus\\:top-1\\.5{&:is(:where(.peer):focus~*){top:calc(var(--spacing) * 1.5)}}.peer-focus\\:text-\\[10px\\]{&:is(:where(.peer):focus~*){font-size:10px}}.peer-focus\\:font-semibold{&:is(:where(.peer):focus~*){--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}}.peer-focus\\:tracking-wider{&:is(:where(.peer):focus~*){--tw-tracking: var(--tracking-wider);letter-spacing:var(--tracking-wider)}}.peer-focus\\:text-destructive\\/80{&:is(:where(.peer):focus~*){color:var(--color-destructive);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-destructive) 80%,transparent)}}}.peer-focus\\:text-primary\\/70{&:is(:where(.peer):focus~*){color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-primary) 70%,transparent)}}}.selection\\:bg-primary\\/10{& *::selection{background-color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-primary) 10%,transparent)}}&::selection{background-color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-primary) 10%,transparent)}}}.selection\\:text-primary{& *::selection{color:var(--color-primary)}&::selection{color:var(--color-primary)}}.placeholder\\:text-transparent{&::placeholder{color:transparent}}.hover\\:scale-\\[1\\.02\\]{&:hover{@media(hover:hover){scale:1.02}}}.hover\\:scale-\\[1\\.05\\]{&:hover{@media(hover:hover){scale:1.05}}}.hover\\:bg-accent{&:hover{@media(hover:hover){background-color:var(--color-accent)}}}.hover\\:bg-muted{&:hover{@media(hover:hover){background-color:var(--color-muted)}}}.hover\\:bg-muted\\/50{&:hover{@media(hover:hover){background-color:var(--color-muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}}}.hover\\:bg-muted\\/60{&:hover{@media(hover:hover){background-color:var(--color-muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-muted) 60%,transparent)}}}}.hover\\:text-accent-foreground{&:hover{@media(hover:hover){color:var(--color-accent-foreground)}}}.hover\\:text-foreground{&:hover{@media(hover:hover){color:var(--color-foreground)}}}.hover\\:text-primary\\/70{&:hover{@media(hover:hover){color:var(--color-primary);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--color-primary) 70%,transparent)}}}}.hover\\:underline{&:hover{@media(hover:hover){text-decoration-line:underline}}}.hover\\:opacity-80{&:hover{@media(hover:hover){opacity:80%}}}.hover\\:opacity-90{&:hover{@media(hover:hover){opacity:90%}}}.hover\\:opacity-100{&:hover{@media(hover:hover){opacity:100%}}}.focus\\:bg-muted\\/60{&:focus{background-color:var(--color-muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--color-muted) 60%,transparent)}}}.focus\\:outline-none{&:focus{--tw-outline-style: none;outline-style:none}}.focus-visible\\:ring-0{&:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-visible\\:ring-1{&:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-visible\\:ring-ring{&:focus-visible{--tw-ring-color: var(--color-ring)}}.focus-visible\\:outline-none{&:focus-visible{--tw-outline-style: none;outline-style:none}}.active\\:scale-\\[0\\.95\\]{&:active{scale:.95}}.active\\:scale-\\[0\\.98\\]{&:active{scale:.98}}.active\\:scale-\\[0\\.99\\]{&:active{scale:.99}}.disabled\\:pointer-events-none{&:disabled{pointer-events:none}}.disabled\\:transform-none\\!{&:disabled{transform:none!important}}.disabled\\:cursor-not-allowed{&:disabled{cursor:not-allowed}}.disabled\\:opacity-50{&:disabled{opacity:50%}}.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);@layer base{button:not(:disabled),[role=button]:not(:disabled){cursor:pointer}}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-divide-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{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-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@property --tw-backdrop-blur{syntax: "*"; inherits: false;}@property --tw-backdrop-brightness{syntax: "*"; inherits: false;}@property --tw-backdrop-contrast{syntax: "*"; inherits: false;}@property --tw-backdrop-grayscale{syntax: "*"; inherits: false;}@property --tw-backdrop-hue-rotate{syntax: "*"; inherits: false;}@property --tw-backdrop-invert{syntax: "*"; inherits: false;}@property --tw-backdrop-opacity{syntax: "*"; inherits: false;}@property --tw-backdrop-saturate{syntax: "*"; inherits: false;}@property --tw-backdrop-sepia{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@keyframes spin{to{transform:rotate(360deg)}}@keyframes 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-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-space-y-reverse: 0;--tw-divide-x-reverse: 0;--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: 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-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-backdrop-blur: initial;--tw-backdrop-brightness: initial;--tw-backdrop-contrast: initial;--tw-backdrop-grayscale: initial;--tw-backdrop-hue-rotate: initial;--tw-backdrop-invert: initial;--tw-backdrop-opacity: initial;--tw-backdrop-saturate: initial;--tw-backdrop-sepia: initial;--tw-duration: initial;--tw-ease: initial}}}
|
|
2
|
+
`);function T({name:e,label:r,placeholder:t,type:o="text",value:a,onValueChange:i,onBlur:s,autoComplete:n,rulesStatus:l=[],submitted:d=false,inputRef:p}){let[c,g]=react.useState(false),f=l.some(u=>!u.passed);return jsxRuntime.jsxs("div",{className:"font-sans relative w-full flex flex-col gap-1 text-foreground",children:[jsxRuntime.jsx("label",{htmlFor:e,className:"text-base font-semibold",children:r}),jsxRuntime.jsxs("div",{className:`flex justify-between items-center px-2.5 py-px gap-2.5 border-b-2 border-foreground ${f&&d?"border-destructive!":""}`,children:[jsxRuntime.jsx("input",{type:c?"text":o,name:e,id:e,placeholder:t,value:a,onChange:u=>i&&i(u.target.value),onBlur:s,autoComplete:n,"aria-invalid":f&&d,ref:p,className:"min-w-40 flex-1 text-base font-light text-foreground appearance-none bg-transparent outline-none border-none shadow-none! py-0.5"}),o==="password"&&(c?jsxRuntime.jsx(lucideReact.EyeOff,{className:"cursor-pointer shrink-0 select-none",size:24,onClick:()=>g(false)}):jsxRuntime.jsx(lucideReact.Eye,{className:"cursor-pointer shrink-0 select-none",size:24,onClick:()=>g(true)}))]}),jsxRuntime.jsx("div",{className:"text-xs text-muted-foreground transition-opacity duration-200 ease-in-out",children:l.map((u,h)=>{let w=["transition-[color,text-decoration,opacity] duration-[120ms] ease opacity-95 m-[0.125rem]",u.passed?"line-through opacity-60 text-green-500":"",!u.passed&&d?"text-destructive font-semibold opacity-100":""].filter(Boolean).join(" ");return jsxRuntime.jsx("p",{className:w,children:u.message},u.id??h)})})]})}function N({label:e,onSubmit:r,loading:t}){return jsxRuntime.jsx("button",{type:"submit",onClick:r,disabled:t,className:`font-sans w-full h-13 text-xl font-semibold outline-none bg-transparent relative overflow-hidden min-w-40 shrink-0 border-2 border-foreground text-foreground cursor-pointer px-6 transition-transform duration-500 rounded-lg hover:scale-[1.02] active:scale-[0.99] disabled:opacity-60 disabled:cursor-not-allowed disabled:transform-none! ${t?"button-loading":""}`,children:e})}function I({mainText:e,subText:r}){return jsxRuntime.jsxs("div",{className:"font-sans flex flex-col items-center",children:[jsxRuntime.jsx("div",{className:"flex justify-center items-center p-2 bg-foreground/10 rounded-full mb-2.5",children:jsxRuntime.jsx(lucideReact.User,{className:"w-16 h-16 p-2.5 bg-background rounded-full shadow-[0_0.25rem_1rem_rgba(0,0,0,0.25)]",size:70})}),jsxRuntime.jsx("h3",{className:"text-center text-xl font-medium m-0",children:e}),jsxRuntime.jsx("span",{className:"text-center text-sm font-light opacity-60",children:r})]})}function L(e,r){return e.map(t=>({id:t.id,message:t.message,passed:!!t.test(r)}))}function fr({onSuccess:e,onFailed:r,signUpRedirect:t,forgotPasswordRedirect:o,emailRules:a}){let[i,s]=react.useState(""),[n,l]=react.useState(""),[d,p]=react.useState(false),[c,g]=react.useState(false),f=react.useRef(null),u=react.useRef(null),{auth:h}=v(),w={email:a||[{message:"Digite um e-mail v\xE1lido, ex: exemplo@dominio.com",test:x=>/\S+@\S+\.\S+/.test(x)}],password:[]},k=L(w.email,i),C=L(w.password,n);return jsxRuntime.jsxs("form",{className:"font-sans flex flex-col w-full max-w-120 min-w-60 max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-background text-foreground 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-lg",children:[jsxRuntime.jsx(I,{mainText:"Fa\xE7a login na sua conta",subText:"Insira seus dados para fazer login"}),jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-2.5 flex-[1_1_auto] overflow-y-auto mb-2",children:[jsxRuntime.jsx(T,{label:"Email",name:"email",placeholder:"teste@gmail.com",autoComplete:"email",type:"email",value:i,onValueChange:s,inputRef:f,rulesStatus:k,submitted:d}),jsxRuntime.jsx(T,{label:"Senha",name:"password",placeholder:"**********",autoComplete:"current-password",type:"password",value:n,onValueChange:l,inputRef:u,rulesStatus:C,submitted:d})]}),jsxRuntime.jsx(N,{label:"Entrar",onSubmit:async x=>{x.preventDefault(),p(true);let Z=k.some(y=>!y.passed),ee=C.some(y=>!y.passed);if(Z){f.current?.focus();return}if(ee){u.current?.focus();return}g(true);let z=await h.login(i,n);z.success?e&&await e(z.message):r&&await r(z.message,z.trace),g(false);},loading:c}),o&&jsxRuntime.jsx("span",{className:"text-sm font-semibold text-center cursor-pointer",children:jsxRuntime.jsx("span",{className:"cursor-pointer text-primary transition-colors duration-200 hover:opacity-80",onClick:o,children:"Esqueceu sua senha?"})}),t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 w-full text-base font-semibold opacity-60",children:[jsxRuntime.jsx("hr",{className:"flex-1"}),"OU",jsxRuntime.jsx("hr",{className:"flex-1"})]}),jsxRuntime.jsxs("span",{className:"text-sm font-semibold",children:["Ainda n\xE3o possui uma conta? ",jsxRuntime.jsx("span",{className:"cursor-pointer text-primary transition-colors duration-200 hover:opacity-80",onClick:t,children:"Cadastra-se"})]})]})]})}function hr({onSuccess:e,onFailed:r,loginRedirect:t,emailRules:o,passwordRules:a}){let[i,s]=react.useState(""),[n,l]=react.useState(""),[d,p]=react.useState(""),[c,g]=react.useState(false),[f,u]=react.useState(false),h=react.useRef(null),w=react.useRef(null),k=react.useRef(null),{auth:C}=v(),K={email:o||[{message:"Digite um e-mail v\xE1lido, ex: exemplo@dominio.com",test:y=>/\S+@\S+\.\S+/.test(y)}],password:a||[{message:"M\xEDnimo de 8 caracteres.",test:y=>y.length>=8},{message:"Deve conter uma letra mai\xFAscula.",test:y=>/[A-Z]/.test(y)},{message:"Inclua pelo menos um caractere especial, ex: ! @ # $ % & * . ,",test:y=>/[!@#$%^&*(),.?":{}|<>_\-+=~`;/\\[\]]/.test(y)},{message:"Deve conter um n\xFAmero.",test:y=>/\d/.test(y)}],confirmPassword:[{message:"Senhas n\xE3o conferem.",test:y=>y===n}]},x=L(K.email,i),Z=L(K.password,n),ee=L(K.confirmPassword,d);return jsxRuntime.jsxs("form",{className:"font-sans flex flex-col w-full max-w-120 min-w-60 max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-background text-foreground 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-lg",children:[jsxRuntime.jsx(I,{mainText:"Crie sua conta",subText:"Insira seus dados para come\xE7ar"}),jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-2.5 flex-[1_1_auto] overflow-y-auto mb-2",children:[jsxRuntime.jsx(T,{label:"Email",name:"email",placeholder:"teste@gmail.com",autoComplete:"email",type:"email",value:i,onValueChange:s,inputRef:h,rulesStatus:x,submitted:c}),jsxRuntime.jsx(T,{label:"Senha",name:"password",placeholder:"**********",autoComplete:"new-password",type:"password",value:n,onValueChange:l,inputRef:w,rulesStatus:Z,submitted:c}),jsxRuntime.jsx(T,{label:"Confirme a Senha",name:"confirm-password",placeholder:"**********",autoComplete:"new-password",type:"password",value:d,onValueChange:p,inputRef:k,rulesStatus:ee,submitted:c})]}),jsxRuntime.jsx(N,{label:"Criar Conta",onSubmit:async y=>{y.preventDefault(),g(true);let Gt=x.some(ie=>!ie.passed),Wt=Z.some(ie=>!ie.passed),Qt=ee.some(ie=>!ie.passed);if(Gt){h.current?.focus();return}if(Wt){w.current?.focus();return}if(Qt){k.current?.focus();return}u(true);let Se=await C.register(i,n);Se.success?e&&await e(Se.message):r&&await r(Se.message,Se.trace),u(false);},loading:f}),t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 w-full text-base font-semibold opacity-60",children:[jsxRuntime.jsx("hr",{className:"flex-1"}),"OU",jsxRuntime.jsx("hr",{className:"flex-1"})]}),jsxRuntime.jsxs("span",{className:"text-sm font-semibold",children:["J\xE1 possui uma conta? ",jsxRuntime.jsx("span",{className:"cursor-pointer text-primary transition-colors duration-200 hover:opacity-80",onClick:t,children:"Entre"})]})]})]})}var wr={xs:"text-xs",sm:"text-sm",md:"text-base",lg:"text-lg",xl:"text-xl","2xl":"text-2xl"};function br({size:e}){let r=e?wr[e]:"text-base";return jsxRuntime.jsxs("span",{className:`font-sans font-medium ${r}`,children:["\xA9 ",new Date().getFullYear()," TrieOH"]})}function Sr({onSuccess:e,onFailed:r,forceLogout:t}){let{auth:o}=v(),[a,i]=react.useState(false);return jsxRuntime.jsxs("button",{onClick:async n=>{if(n.preventDefault(),a)return;i(true);let l=await o.logout({forceLogout:t});l.success?e&&await e(l.message):r&&await r(l.message,l.trace),i(false);},type:"button",disabled:a,className:"font-sans border-none bg-transparent cursor-pointer flex items-end gap-1 text-base font-medium text-destructive 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(lucideReact.LogOut,{size:24})," ",jsxRuntime.jsx("span",{children:"Log out"})]})}var Lt={mobile:lucideReact.Smartphone,tablet:lucideReact.Tablet,desktop:lucideReact.Monitor};function Ft(e){let{device:r,os:t,browser:o}=uaParserJs.UAParser(e);return {deviceType:r.type??"desktop",os:t.name,browser:o.name}}function Bt(e){let r=Ft(e);return {device:Cr(r.deviceType),os:r.os,browser:r.browser}}function Cr(e){if(!e)return "desktop";switch(e){case "mobile":return "mobile";case "tablet":return "tablet";default:return "desktop"}}function Mt(e){let r=Date.now()-new Date(e).getTime(),t=Math.floor(r/1e3),o=Math.floor(t/60),a=Math.floor(o/60),i=Math.floor(a/24),s=Math.floor(i/7);return t<60?"agora mesmo":o<60?`${o} minutos atr\xE1s`:a<24?`${a} horas atr\xE1s`:i<7?`${i} dias atr\xE1s`:`${s} semanas atr\xE1s`}function tt({is_current:e,session_id:r,user_agent:t,issued_at:o,user_ip:a,onClick:i}){let s=Bt(t),n=Lt[s.device];return jsxRuntime.jsx("div",{className:"border-t border-border p-[1.25rem_0.75rem] text-foreground",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(n,{size:40}),jsxRuntime.jsxs("div",{className:"flex flex-col min-w-0",children:[jsxRuntime.jsxs("h3",{className:"text-base font-semibold m-0",children:[s.browser," - ",s.os]}),jsxRuntime.jsxs("span",{className:"inline-flex flex-col text-sm font-extralight @[640px]:flex-row @[640px]:gap-2 @[640px]:items-center",children:[e&&jsxRuntime.jsx("strong",{className:"text-primary font-normal",children:"\u2022 Sess\xE3o Atual \u2022"}),jsxRuntime.jsx("span",{children:`${a} - ${Mt(o)}`})]})]}),!e&&jsxRuntime.jsx(lucideReact.Trash2,{size:20,className:"absolute top-0 right-0 cursor-pointer text-destructive opacity-60 transition-[opacity,transform] duration-200 hover:opacity-100 hover:scale-[1.05] active:scale-[0.95]",onClick:l=>i(l,r)})]})})}function _r({revokeAll:e=false,onSuccess:r}){let{auth:t}=v(),[o,a]=react.useState(false),[i,s]=react.useState([]),n=async()=>{let p=await t.sessions();if(p.success){let c=t.profile()?.session_id,g=p.data.sort((f,u)=>f.session_id===c?-1:u.session_id===c?1:0);s(g);}};react.useEffect(()=>{n();},[]);let l=async(p,c)=>{p.preventDefault();let g=i.find(f=>f.session_id===c);if(g){s(i.filter(f=>f.session_id!==c));try{(await t.revokeASession(c)).success||s(u=>[...u,g]);}catch{s(f=>[...f,g]);}}};return jsxRuntime.jsxs("div",{className:"font-sans w-full min-w-[20rem] m-2 @container bg-background text-foreground 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-3 @[640px]:justify-between @[640px]:text-left @[640px]:gap-8",children:[jsxRuntime.jsxs("div",{className:"flex-[0_1_auto] max-w-100",children:[jsxRuntime.jsx("h3",{className:"font-semibold text-2xl m-0 mb-1",children:"Navegadores e Dispositivos"}),jsxRuntime.jsx("p",{className:"font-extralight text-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 p=>{if(p.preventDefault(),o)return;a(true);let c=await t.revokeSessions(e),g=t.profile()?.session_id;c.success&&(s(e?[]:i.filter(f=>f.session_id===g)),r&&r(c.message)),a(false);},disabled:o,className:`font-sans w-full max-w-56 p-[1rem_0] h-auto text-base font-semibold outline-none bg-transparent relative overflow-hidden shrink-0 border-2 border-foreground text-foreground cursor-pointer transition-transform duration-500 rounded-lg hover:scale-[1.02] active:scale-[0.99] disabled:opacity-60 disabled:cursor-not-allowed disabled:transform-none! ${o?"button-loading":""}`,children:"Revogar todas as sess\xF5es"})]}),jsxRuntime.jsx("div",{className:"mt-4",children:i.length>0?i.map(p=>jsxRuntime.jsx(tt,{...p,is_current:t.profile()?.session_id===p.session_id,onClick:l},p.session_id)):jsxRuntime.jsx("span",{className:"block border-t border-border p-[1.25rem_0.75rem] text-center font-semibold",children:"Nenhuma Sess\xE3o Dispon\xEDvel"})})]})}function Dt({onSuccess:e,onFailed:r,loginRedirect:t,emailRules:o}){let[a,i]=react.useState(""),[s,n]=react.useState(false),[l,d]=react.useState(false),p=react.useRef(null),{auth:c}=v(),f=L({email:o||[{message:"Digite um e-mail v\xE1lido, ex: exemplo@dominio.com",test:h=>/\S+@\S+\.\S+/.test(h)}]}.email,a);return jsxRuntime.jsxs("form",{className:"font-sans flex flex-col w-full max-w-120 min-w-60 max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-background text-foreground 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-lg",children:[jsxRuntime.jsx(I,{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-2.5 flex-[1_1_auto] overflow-y-auto mb-2",children:jsxRuntime.jsx(T,{label:"Email",name:"email",placeholder:"teste@gmail.com",autoComplete:"email",type:"email",value:a,onValueChange:i,inputRef:p,rulesStatus:f,submitted:s})}),jsxRuntime.jsx(N,{label:l?"Enviando...":"Enviar link de redefini\xE7\xE3o",onSubmit:async h=>{if(h.preventDefault(),n(true),f.some(C=>!C.passed)){p.current?.focus();return}d(true);let k=await c.sendForgotPassword(a);k.success?e&&await e(k.message):r&&await r(k.message,k.trace),d(false);},loading:l}),t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 w-full text-base font-semibold opacity-60",children:[jsxRuntime.jsx("hr",{className:"flex-1"}),"OU",jsxRuntime.jsx("hr",{className:"flex-1"})]}),jsxRuntime.jsxs("span",{className:"text-sm font-semibold",children:["Lembrou-se da sua senha? ",jsxRuntime.jsx("span",{className:"cursor-pointer text-primary transition-colors duration-200 hover:opacity-80",onClick:t,children:"Login"})]})]})]})}function Br({token:e,onSuccess:r,onFailed:t,loginRedirect:o,passwordRules:a}){let[i,s]=react.useState(""),[n,l]=react.useState(""),[d,p]=react.useState(false),[c,g]=react.useState(false),f=react.useRef(null),u=react.useRef(null),{auth:h}=v(),w={password:a||[{message:"M\xEDnimo de 8 caracteres.",test:x=>x.length>=8},{message:"Deve conter uma letra mai\xFAscula.",test:x=>/[A-Z]/.test(x)},{message:"Inclua pelo menos um caractere especial, ex: ! @ # $ % & * . ,",test:x=>/[!@#$%^&*(),.?":{}|<>_\-+=~`;/\\[\]]/.test(x)},{message:"Deve conter um n\xFAmero.",test:x=>/\d/.test(x)}],confirmPassword:[{message:"Senhas n\xE3o conferem.",test:x=>x===i}]},k=L(w.password,i),C=L(w.confirmPassword,n);return jsxRuntime.jsxs("form",{className:"font-sans flex flex-col w-full max-w-120 min-w-60 max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-background text-foreground 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-lg",children:[jsxRuntime.jsx(I,{mainText:"Redefinir Senha",subText:"Crie uma nova senha para sua conta"}),jsxRuntime.jsxs("div",{className:"w-full flex flex-col gap-2.5 flex-[1_1_auto] overflow-y-auto mb-2",children:[jsxRuntime.jsx(T,{label:"Nova Senha",name:"password",placeholder:"**********",autoComplete:"new-password",type:"password",value:i,onValueChange:s,inputRef:f,rulesStatus:k,submitted:d}),jsxRuntime.jsx(T,{label:"Confirme a Nova Senha",name:"confirm-password",placeholder:"**********",autoComplete:"new-password",type:"password",value:n,onValueChange:l,inputRef:u,rulesStatus:C,submitted:d})]}),jsxRuntime.jsx(N,{label:"Redefinir Senha",onSubmit:async x=>{x.preventDefault(),p(true);let Z=k.some(y=>!y.passed),ee=C.some(y=>!y.passed);if(Z){f.current?.focus();return}if(ee){u.current?.focus();return}g(true);let z=await h.resetPassword(e,i);z.success?r&&await r(z.message):t&&await t(z.message,z.trace),g(false);},loading:c}),o&&jsxRuntime.jsxs("span",{className:"text-sm font-semibold",children:["Lembrou-se da sua senha? ",jsxRuntime.jsx("span",{className:"cursor-pointer text-primary transition-colors duration-200 hover:opacity-80",onClick:o,children:"Login"})]})]})}function Vr(e,r,t){let[o,a]=react.useState(true),[i,s]=react.useState("verifying"),[n,l]=react.useState("Verificando seu e-mail..."),{auth:d}=v(),p=react.useRef(false),c=async()=>{if(!p.current){p.current=true,a(true),s("verifying");try{if(d.profile()?.is_verified){s("already_verified"),l("Seu e-mail j\xE1 est\xE1 verificado."),a(!1);return}let u=await d.verifyEmail(e);u.success?(await d.refresh(),s("success"),l(u.message||"E-mail verificado com sucesso!"),r&&await r(u.message)):(s("error"),l(u.message||"Falha na verifica\xE7\xE3o do e-mail."),t&&await t(u.message,u.trace));}catch{s("error"),l("Ocorreu um erro inesperado durante a verifica\xE7\xE3o.");}finally{a(false);}}};return react.useEffect(()=>{e&&!p.current&&c();},[e]),{loading:o,status:i,message:n,onRetry:f=>{f.preventDefault(),p.current=false,c();},setStatus:s,setLoading:a,setMessage:l}}function Ur({token:e,onSuccess:r,onFailed:t}){let{loading:o,status:a,message:i,onRetry:s}=Vr(e,r,t);return jsxRuntime.jsx("div",{className:"font-sans flex flex-col w-full h-full min-h-screen items-center justify-center bg-background text-foreground p-6",children:jsxRuntime.jsxs("div",{className:"w-full max-w-120 flex flex-col gap-8 items-center bg-background text-foreground p-[1.25rem_1.5rem] shadow-[0_0.25rem_0.25rem_0_rgba(0,0,0,0.25)] rounded-lg",children:[jsxRuntime.jsx(I,{mainText:a==="verifying"?"Verificando...":a==="error"?"Ops! Falha na verifica\xE7\xE3o":"Tudo pronto!",subText:i}),a==="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-primary"})}),a==="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(N,{label:"Tentar novamente",onSubmit:s,loading:o})})}),(a==="success"||a==="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-primary/10 text-primary",children:a==="success"?jsxRuntime.jsx(lucideReact.Check,{size:40}):jsxRuntime.jsx(lucideReact.Info,{size:40})}),jsxRuntime.jsx("p",{className:"text-sm font-semibold opacity-50 text-center",children:"Voc\xEA j\xE1 pode fechar esta janela ou continuar navegando em sua conta."})]})]})})}function Hr({onSuccess:e,onFailed:r}){let[t,o]=react.useState(false),[a,i]=react.useState(false),{auth:s}=v();return jsxRuntime.jsxs("div",{className:"font-sans flex flex-col w-full max-w-120 min-w-60 max-h-[max(75dvh,32rem)] overflow-hidden gap-5 items-center bg-background text-foreground 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-lg",children:[jsxRuntime.jsx(I,{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(N,{label:a?"E-mail Reenviado":"Reenviar E-mail de Verifica\xE7\xE3o",onSubmit:async()=>{o(true);let l=await s.resendVerifyEmail();l.success?(i(true),e&&await e(l.message)):r&&await r(l.message,l.trace),o(false);},loading:t}),a&&jsxRuntime.jsx("p",{className:"text-sm font-semibold text-primary",children:"Um novo link de verifica\xE7\xE3o foi enviado para seu e-mail."})]})}function M(...e){return tailwindMerge.twMerge(clsx.clsx(e))}var Ht=react.forwardRef(({label:e,id:r,type:t="text",error:o,className:a,value:i,onChange:s,onFocus:n,onBlur:l,...d},p)=>{let[c,g]=react.useState(false),f=react.useId(),u=r??f,h=t==="password";return jsxRuntime.jsxs("div",{className:"w-full font-body group relative",children:[jsxRuntime.jsx("input",{ref:p,id:u,type:h?c?"text":"password":t,value:i,placeholder:" ",onChange:s,onFocus:n,onBlur:l,className:M("peer h-13 w-full rounded-sm text-sm text-foreground outline-none","border border-secondary/20 bg-muted/40 transition-all duration-200","placeholder:text-transparent focus-visible:ring-0 focus:bg-muted/60","px-3.5 pt-4 pb-1",h&&"pr-10",o&&"bg-destructive/5 ring-1 ring-destructive/20 border-destructive/50",a),...d}),jsxRuntime.jsx("label",{htmlFor:u,className:M("pointer-events-none absolute transition-all duration-200 ease-out left-3.5","top-1.5 text-[10px] font-semibold tracking-wider text-primary/70","peer-placeholder-shown:top-3.5 peer-placeholder-shown:text-[15px] peer-placeholder-shown:font-normal peer-placeholder-shown:tracking-normal peer-placeholder-shown:text-muted-foreground","peer-focus:top-1.5 peer-focus:text-[10px] peer-focus:font-semibold peer-focus:tracking-wider peer-focus:text-primary/70",o&&"text-destructive/80",o&&"peer-placeholder-shown:text-destructive/60",o&&"peer-focus:text-destructive/80"),children:e}),h&&jsxRuntime.jsx("button",{type:"button",tabIndex:-1,onClick:()=>{g(k=>!k);},className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground transition-colors hover:text-primary/70 focus:outline-none","aria-label":c?"Ocultar senha":"Mostrar senha",children:c?jsxRuntime.jsx(lucideReact.EyeOff,{size:16}):jsxRuntime.jsx(lucideReact.Eye,{size:16})})]})});Ht.displayName="FormInput";var A=Ht;var eo=({message:e,className:r})=>jsxRuntime.jsx(react$1.AnimatePresence,{children:e&&jsxRuntime.jsx(react$1.motion.p,{initial:{opacity:0,height:0,marginTop:0},animate:{opacity:1,height:"auto",marginTop:6},exit:{opacity:0,height:0,marginTop:0},transition:{duration:.2,ease:"easeOut"},className:M("text-[11px] font-medium text-destructive tracking-tight leading-none px-1 overflow-hidden",r),children:e})}),R=eo;var ro=classVarianceAuthority.cva("inline-flex items-center justify-center whitespace-nowrap rounded-sm text-sm font-semibold transition-all focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 active:scale-[0.98]",{variants:{variant:{default:"bg-primary text-primary-foreground hover:opacity-90",destructive:"bg-destructive text-destructive-foreground hover:opacity-90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:opacity-80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-12 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),_=({className:e,variant:r,size:t,...o})=>jsxRuntime.jsx("button",{className:M(ro({variant:r,size:t,className:e})),...o});function jt(){return jsxRuntime.jsxs("div",{className:"flex items-center gap-3 py-1",children:[jsxRuntime.jsx("div",{className:"flex-1 h-px bg-border"}),jsxRuntime.jsx("span",{className:"text-xs font-medium text-muted-foreground uppercase tracking-widest select-none",children:"ou"}),jsxRuntime.jsx("div",{className:"flex-1 h-px bg-border"})]})}var io={google:{label:"Google",icon:jsxRuntime.jsxs("svg",{viewBox:"0 0 24 24",className:"w-5 h-5","aria-hidden":"true",children:[jsxRuntime.jsx("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z",fill:"#4285F4"}),jsxRuntime.jsx("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),jsxRuntime.jsx("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),jsxRuntime.jsx("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]})},github:{label:"GitHub",icon:jsxRuntime.jsx("svg",{viewBox:"0 0 24 24",className:"w-5 h-5",fill:"currentColor","aria-hidden":"true",children:jsxRuntime.jsx("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"})})}};function $t({provider:e,onClick:r,isLoading:t}){let o=io[e];return jsxRuntime.jsxs("button",{type:"button",onClick:r,disabled:t,className:M("w-full flex items-center justify-center gap-2.5 h-12 px-4 rounded-sm text-sm font-semibold","border border-input bg-background hover:bg-muted/60 transition-all","disabled:opacity-50 disabled:pointer-events-none active:scale-[0.98]"),children:[o.icon,jsxRuntime.jsxs("span",{children:["Continuar com ",o.label]})]})}var po=zod.z.object({email:zod.z.email("E-mail inv\xE1lido"),password:zod.z.string().min(1,"A senha \xE9 obrigat\xF3ria")});function dt({onSuccess:e,onFailed:r,signUpRedirect:t,forgotPasswordRedirect:o,providers:a}){let[i,s]=react.useState(false),[n,l]=react.useState(null),{auth:d}=v(),p=async h=>{l(h);try{let w=await d.loginWithProvider(h);w.success&&w.data?.url?window.location.href=w.data.url:r?await r(w.message||"Falha na autentica\xE7\xE3o"):sonner.toast.error("Falha ao conectar com provedor");}catch{sonner.toast.error("Ocorreu um erro inesperado");}finally{l(null);}},{register:c,handleSubmit:g,formState:{errors:f}}=reactHookForm.useForm({resolver:zod$1.zodResolver(po),defaultValues:{email:"",password:""}});return jsxRuntime.jsxs("form",{onSubmit:g(async h=>{s(true);try{let w=await d.login(h.email,h.password);w.success?e?await e(w.message):sonner.toast.success("Login realizado com sucesso!"):r?await r(w.message,w.trace):sonner.toast.error(w.message||"Erro ao entrar");}catch{sonner.toast.error("Ocorreu um erro inesperado");}finally{s(false);}}),className:"space-y-4",children:[jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"E-mail",type:"email",autoComplete:"email",error:!!f.email,...c("email")}),jsxRuntime.jsx(R,{message:f.email?.message})]}),jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Senha",type:"password",autoComplete:"current-password",error:!!f.password,...c("password")}),jsxRuntime.jsx(R,{message:f.password?.message})]}),o&&jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx("button",{type:"button",onClick:o,className:"text-xs text-primary hover:underline font-medium",children:"Esqueceu a senha?"})}),jsxRuntime.jsx(_,{type:"submit",disabled:i,className:"w-full flex items-center justify-center gap-2",children:i?jsxRuntime.jsx(lucideReact.Loader2,{className:"w-5 h-5 animate-spin"}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:["Entrar",jsxRuntime.jsx(lucideReact.ArrowRight,{className:"w-4 h-4"})]})}),a&&a.length>0&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(jt,{}),jsxRuntime.jsx("div",{className:"flex flex-col gap-2",children:a.map(h=>jsxRuntime.jsx($t,{provider:h,onClick:()=>p(h),isLoading:n===h},h))})]})]})}var vo=zod.z.object({email:zod.z.email("E-mail inv\xE1lido"),password:zod.z.string().min(6,"A senha deve ter pelo menos 6 caracteres"),confirmPassword:zod.z.string()}).refine(e=>e.password===e.confirmPassword,{message:"As senhas n\xE3o coincidem",path:["confirmPassword"]});function mt({onSuccess:e,onFailed:r,signInRedirect:t}){let[o,a]=react.useState(false),{auth:i}=v(),{register:s,handleSubmit:n,formState:{errors:l}}=reactHookForm.useForm({resolver:zod$1.zodResolver(vo),defaultValues:{email:"",password:"",confirmPassword:""}});return jsxRuntime.jsxs("form",{onSubmit:n(async p=>{a(true);try{let c=await i.register(p.email,p.password);c.success?e?await e(c.message):(sonner.toast.success("Conta criada com sucesso!"),t&&t()):r?await r(c.message,c.trace):sonner.toast.error(c.message||"Erro ao criar conta");}catch{sonner.toast.error("Ocorreu um erro inesperado");}finally{a(false);}}),className:"space-y-4",children:[jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"E-mail",type:"email",autoComplete:"email",error:!!l.email,...s("email")}),jsxRuntime.jsx(R,{message:l.email?.message})]}),jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Senha",type:"password",autoComplete:"new-password",error:!!l.password,...s("password")}),jsxRuntime.jsx(R,{message:l.password?.message})]}),jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Confirmar Senha",type:"password",autoComplete:"new-password",error:!!l.confirmPassword,...s("confirmPassword")}),jsxRuntime.jsx(R,{message:l.confirmPassword?.message})]}),jsxRuntime.jsx(_,{type:"submit",disabled:o,className:"w-full flex items-center justify-center gap-2",children:o?jsxRuntime.jsx(lucideReact.Loader2,{className:"w-5 h-5 animate-spin"}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:["Criar Conta",jsxRuntime.jsx(lucideReact.ArrowRight,{className:"w-4 h-4"})]})})]})}var Eo=zod.z.object({email:zod.z.email("E-mail inv\xE1lido")});function gt({onSuccess:e,onFailed:r,signInRedirect:t}){let[o,a]=react.useState(false),{auth:i}=v(),{register:s,handleSubmit:n,formState:{errors:l}}=reactHookForm.useForm({resolver:zod$1.zodResolver(Eo),defaultValues:{email:""}});return jsxRuntime.jsxs("form",{onSubmit:n(async p=>{a(true);try{let c=await i.sendForgotPassword(p.email);c.success?e?await e(c.message):sonner.toast.success("Link de redefini\xE7\xE3o enviado com sucesso!"):r?await r(c.message,c.trace):sonner.toast.error(c.message||"Erro ao enviar link");}catch{sonner.toast.error("Ocorreu um erro inesperado");}finally{a(false);}}),className:"space-y-4",children:[jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"E-mail",type:"email",autoComplete:"email",error:!!l.email,...s("email")}),jsxRuntime.jsx(R,{message:l.email?.message})]}),jsxRuntime.jsx(_,{type:"submit",disabled:o,className:"w-full flex items-center justify-center gap-2",children:o?jsxRuntime.jsx(lucideReact.Loader2,{className:"w-5 h-5 animate-spin"}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:["Enviar link",jsxRuntime.jsx(lucideReact.ArrowRight,{className:"w-4 h-4"})]})})]})}var _o=zod.z.object({password:zod.z.string().min(6,"A senha deve ter pelo menos 6 caracteres"),confirmPassword:zod.z.string()}).refine(e=>e.password===e.confirmPassword,{message:"As senhas n\xE3o coincidem",path:["confirmPassword"]});function Lo({token:e,onSuccess:r,onFailed:t,signInRedirect:o}){let[a,i]=react.useState(false),{auth:s}=v(),{register:n,handleSubmit:l,formState:{errors:d}}=reactHookForm.useForm({resolver:zod$1.zodResolver(_o),defaultValues:{password:"",confirmPassword:""}}),p=async c=>{i(true);try{let g=await s.resetPassword(e,c.password);g.success?r?await r(g.message):sonner.toast.success("Senha redefinida com sucesso!"):t?await t(g.message,g.trace):sonner.toast.error(g.message||"Erro ao redefinir senha");}catch{sonner.toast.error("Ocorreu um erro inesperado");}finally{i(false);}};return jsxRuntime.jsxs("div",{className:"w-full max-w-md z-10 flex flex-col antialiased selection:bg-primary/10 selection:text-primary",children:[jsxRuntime.jsxs("div",{className:"text-center mb-6",children:[jsxRuntime.jsx(react$1.motion.h1,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},className:"font-heading text-3xl font-bold tracking-tight mb-2",children:"Redefinir Senha"}),jsxRuntime.jsx("p",{className:"text-muted-foreground text-sm mb-4",children:"Crie uma nova senha para sua conta"})]}),jsxRuntime.jsxs("form",{onSubmit:l(p),className:"space-y-4",children:[jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Nova Senha",type:"password",autoComplete:"new-password",error:!!d.password,...n("password")}),jsxRuntime.jsx(R,{message:d.password?.message})]}),jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Confirmar Nova Senha",type:"password",autoComplete:"new-password",error:!!d.confirmPassword,...n("confirmPassword")}),jsxRuntime.jsx(R,{message:d.confirmPassword?.message})]}),jsxRuntime.jsx(_,{type:"submit",disabled:a,className:"w-full flex items-center justify-center gap-2",children:a?jsxRuntime.jsx(lucideReact.Loader2,{className:"w-5 h-5 animate-spin"}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:["Redefinir Senha",jsxRuntime.jsx(lucideReact.ArrowRight,{className:"w-4 h-4"})]})}),o&&jsxRuntime.jsx("div",{className:"text-center mt-4",children:jsxRuntime.jsx("button",{type:"button",onClick:o,className:"text-xs text-primary font-semibold hover:underline",children:"Voltar para o login"})})]})]})}function Uo({token:e,onSuccess:r,onFailed:t,signInRedirect:o}){let[a,i]=react.useState("verifying"),[s,n]=react.useState("Verificando seu e-mail..."),[l,d]=react.useState(true),{auth:p}=v(),c=react.useRef(false),g=async()=>{if(!c.current){c.current=true,d(true),i("verifying");try{if(p.profile()?.is_verified){i("already_verified"),n("Seu e-mail j\xE1 est\xE1 verificado."),d(!1);return}let u=await p.verifyEmail(e);u.success?(await p.refresh(),i("success"),n(u.message||"E-mail verificado com sucesso!"),r&&await r(u.message)):(i("error"),n(u.message||"Falha na verifica\xE7\xE3o do e-mail."),t&&await t(u.message,u.trace));}catch{i("error"),n("Ocorreu um erro inesperado durante a verifica\xE7\xE3o.");}finally{d(false);}}};return react.useEffect(()=>{e&&!c.current&&g();},[e]),jsxRuntime.jsx("div",{className:"w-full max-w-md z-10 flex flex-col antialiased selection:bg-primary/10 selection:text-primary",children:jsxRuntime.jsxs("div",{className:"text-center mb-6",children:[jsxRuntime.jsxs(react$1.motion.div,{initial:{scale:.8,opacity:0},animate:{scale:1,opacity:1},className:"flex justify-center mb-4",children:[a==="verifying"&&jsxRuntime.jsx(lucideReact.Loader2,{className:"w-12 h-12 text-primary animate-spin"}),(a==="success"||a==="already_verified")&&jsxRuntime.jsx(lucideReact.CheckCircle2,{className:"w-12 h-12 text-green-500"}),a==="error"&&jsxRuntime.jsx(lucideReact.XCircle,{className:"w-12 h-12 text-destructive"})]}),jsxRuntime.jsx(react$1.motion.h1,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},className:"font-heading text-3xl font-bold tracking-tight mb-2",children:a==="verifying"?"Verificando...":a==="error"?"Falha na verifica\xE7\xE3o":"E-mail Verificado!"}),jsxRuntime.jsx("p",{className:"text-muted-foreground text-sm mb-6",children:s}),a==="error"&&jsxRuntime.jsx(_,{onClick:()=>{c.current=false,g();},disabled:l,className:"w-full flex items-center justify-center gap-2",children:"Tentar novamente"}),(a==="success"||a==="already_verified")&&jsxRuntime.jsxs("div",{className:"space-y-4",children:[jsxRuntime.jsx("p",{className:"text-xs text-muted-foreground",children:"Voc\xEA j\xE1 pode continuar navegando em sua conta."}),o&&jsxRuntime.jsxs(_,{onClick:o,className:"w-full flex items-center justify-center gap-2",children:["Ir para o login",jsxRuntime.jsx(lucideReact.ArrowRight,{className:"w-4 h-4"})]})]})]})})}function De({children:e,className:r,backLink:t}){return jsxRuntime.jsxs("main",{className:M("bg-background h-full text-foreground min-h-screen relative overflow-hidden","flex flex-col px-4","antialiased selection:bg-primary/10 selection:text-primary",r),children:[jsxRuntime.jsx("div",{className:"absolute top-[-10%] left-[-10%] w-[40%] h-[40%] bg-primary/20 rounded-full blur-3xl pointer-events-none"}),jsxRuntime.jsx("div",{className:"absolute bottom-[-10%] right-[-10%] w-[40%] h-[40%] bg-primary/20 rounded-full blur-3xl pointer-events-none"}),t&&jsxRuntime.jsx("div",{className:"relative z-10 pt-4",children:t}),jsxRuntime.jsx("div",{className:"relative z-10 flex-1 flex justify-center items-center",children:e})]})}var Xo=zod.z.object({email:zod.z.string().email("E-mail inv\xE1lido"),password:zod.z.string().min(8,"A senha deve ter pelo menos 8 caracteres"),confirmPassword:zod.z.string().min(1,"A confirma\xE7\xE3o de senha \xE9 obrigat\xF3ria")}).refine(e=>e.password===e.confirmPassword,{message:"As senhas n\xE3o coincidem",path:["confirmPassword"]});function Go({onSuccess:e,onFailed:r,backLink:t}){let[o,a]=react.useState(false),{auth:i}=v(),{register:s,handleSubmit:n,formState:{errors:l}}=reactHookForm.useForm({resolver:zod$1.zodResolver(Xo),defaultValues:{email:"",password:"",confirmPassword:""}}),d=async p=>{a(true);try{let c=await i.setup(p.email,p.password);c.success?e?await e(c.message):sonner.toast.success("Configura\xE7\xE3o inicial realizada com sucesso!"):r?await r(c.message,c.trace):sonner.toast.error(c.message||"Erro ao realizar setup");}catch(c){console.error(c),sonner.toast.error("Ocorreu um erro inesperado");}finally{a(false);}};return jsxRuntime.jsx(De,{backLink:t,children:jsxRuntime.jsxs("div",{className:"w-full max-w-md z-10 flex flex-col",children:[jsxRuntime.jsxs("div",{className:"mb-10 text-center",children:[jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0,y:-20},animate:{opacity:1,y:0},className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-primary/10 text-primary text-xs font-bold uppercase tracking-widest mb-4",children:[jsxRuntime.jsx(lucideReact.Sparkles,{size:14}),"Setup Inicial"]}),jsxRuntime.jsx("h1",{className:"font-heading text-4xl font-bold tracking-tight mb-3",children:"Bem-vindo ao IdentityX"}),jsxRuntime.jsx("p",{className:"text-muted-foreground text-base max-w-[320px] mx-auto",children:"Vamos come\xE7ar criando sua conta de administrador mestre."})]}),jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,scale:.98},animate:{opacity:1,scale:1},transition:{delay:.1},className:"bg-card/50 backdrop-blur-sm border border-border/40 p-1 rounded-2xl",children:jsxRuntime.jsx("div",{className:"bg-background rounded-[14px] p-6 shadow-sm",children:jsxRuntime.jsxs("form",{onSubmit:n(d),className:"space-y-5",children:[jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"E-mail do Administrador",type:"email",autoComplete:"email",error:!!l.email,...s("email")}),jsxRuntime.jsx(R,{message:l.email?.message})]}),jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Senha",type:"password",autoComplete:"new-password",error:!!l.password,...s("password")}),jsxRuntime.jsx(R,{message:l.password?.message})]}),jsxRuntime.jsxs("div",{className:"space-y-1",children:[jsxRuntime.jsx(A,{label:"Confirmar Senha",type:"password",autoComplete:"new-password",error:!!l.confirmPassword,...s("confirmPassword")}),jsxRuntime.jsx(R,{message:l.confirmPassword?.message})]}),jsxRuntime.jsx(_,{type:"submit",disabled:o,className:"w-full flex items-center justify-center gap-2 h-13 mt-4 text-base font-bold shadow-lg shadow-primary/10 group",children:o?jsxRuntime.jsx(lucideReact.Loader2,{className:"w-5 h-5 animate-spin"}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:["Finalizar Configura\xE7\xE3o",jsxRuntime.jsx(lucideReact.ArrowRight,{className:"w-4 h-4 transition-transform group-hover:translate-x-1"})]})})]})})}),jsxRuntime.jsxs("div",{className:"mt-8 text-center",children:[jsxRuntime.jsx("div",{className:"h-1 w-full bg-muted/30 rounded-full overflow-hidden",children:jsxRuntime.jsx(react$1.motion.div,{initial:{width:0},animate:{width:"100%"},transition:{duration:1.5,ease:"easeInOut"},className:"h-full bg-primary/40"})}),jsxRuntime.jsx("p",{className:"text-[10px] text-muted-foreground mt-2 font-medium uppercase tracking-tighter",children:"Passo 1 de 1 \u2022 Configurando ambiente"})]})]})})}var ea={signin:{title:"Bem-vindo de volta",subtitle:"Entre com suas credenciais para acessar a plataforma",toggleLabel:"Ainda n\xE3o tem uma conta?",toggleAction:"Cadastre-se",toggleTo:"signup"},signup:{title:"Criar sua conta",subtitle:"Preencha os dados abaixo para se cadastrar",toggleLabel:"J\xE1 possui uma conta?",toggleAction:"Fa\xE7a login",toggleTo:"signin"},"forgot-password":{title:"Recuperar senha",subtitle:"Digite seu e-mail para receber instru\xE7\xF5es",toggleLabel:"Lembrou da senha?",toggleAction:"Voltar ao login",toggleTo:"signin"}};function ta({initialView:e="signin",onLoginSuccess:r,onSignUpSuccess:t,onFailed:o,backLink:a,providers:i}){let[s,n]=react.useState(e),l=async p=>{n("signin"),t&&await t(p);},d=ea[s];return jsxRuntime.jsx(De,{backLink:a,children:jsxRuntime.jsxs("div",{className:"w-full max-w-md z-10 flex flex-col",children:[jsxRuntime.jsxs("div",{className:"text-center mb-6",children:[jsxRuntime.jsx(react$1.motion.h1,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},className:"font-heading text-3xl font-bold tracking-tight mb-2",children:d.title},s+"-h1"),jsxRuntime.jsx("p",{className:"text-muted-foreground text-sm mb-4",children:d.subtitle}),jsxRuntime.jsxs("div",{className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full bg-muted/50 border border-border/50 text-xs font-medium text-muted-foreground",children:[d.toggleLabel,jsxRuntime.jsx("button",{type:"button",onClick:()=>n(d.toggleTo),className:"text-primary font-semibold hover:underline",children:d.toggleAction})]})]}),jsxRuntime.jsx("div",{className:`relative ${i&&i.length>0?"min-h-112":"min-h-80"}`,children:jsxRuntime.jsxs(react$1.AnimatePresence,{mode:"wait",children:[s==="signin"&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},exit:{opacity:0,x:10},transition:{duration:.2},className:"absolute inset-0",children:jsxRuntime.jsx(dt,{onSuccess:r,onFailed:o,signUpRedirect:()=>n("signup"),forgotPasswordRedirect:()=>n("forgot-password"),providers:i})},"signin"),s==="signup"&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,x:10},animate:{opacity:1,x:0},exit:{opacity:0,x:-10},transition:{duration:.2},className:"absolute inset-0",children:jsxRuntime.jsx(mt,{onSuccess:l,onFailed:o,signInRedirect:()=>n("signin")})},"signup"),s==="forgot-password"&&jsxRuntime.jsx(react$1.motion.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.2},className:"absolute inset-0",children:jsxRuntime.jsx(gt,{onFailed:o,signInRedirect:()=>n("signin")})},"forgot-password")]})})]})})}var da={human:{gradient:"linear-gradient(135deg, #7F77DD, #AFA9EC)",orbBg:"#EEEDFE",orbText:"#534AB7",pillBg:"#EEEDFE",pillText:"#3C3489",pillBorder:"#AFA9EC",capBg:"#EEEDFE",capText:"#534AB7",capBorder:"#AFA9EC"},service:{gradient:"linear-gradient(135deg, #1D9E75, #5DCAA5)",orbBg:"#E1F5EE",orbText:"#0F6E56",pillBg:"#E1F5EE",pillText:"#085041",pillBorder:"#5DCAA5",capBg:"#E1F5EE",capText:"#0F6E56",capBorder:"#5DCAA5"},machine:{gradient:"linear-gradient(135deg, #BA7517, #EF9F27)",orbBg:"#FAEEDA",orbText:"#854F0B",pillBg:"#FAEEDA",pillText:"#412402",pillBorder:"#EF9F27",capBg:"#FAEEDA",capText:"#854F0B",capBorder:"#EF9F27"}};function pa({value:e}){let[r,t]=react.useState(false);return jsxRuntime.jsx("button",{onClick:()=>{!e||e==="\u2014"||navigator.clipboard.writeText(e).then(()=>{t(true),setTimeout(()=>t(false),2e3);});},"aria-label":"Copiar valor",className:"opacity-0 group-hover:opacity-100 transition-all duration-150 p-1.5 rounded-md hover:bg-muted text-muted-foreground hover:text-foreground",children:jsxRuntime.jsx(react$1.AnimatePresence,{mode:"wait",initial:false,children:r?jsxRuntime.jsx(react$1.motion.span,{initial:{scale:.7,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.7,opacity:0},transition:{duration:.15},children:jsxRuntime.jsx(lucideReact.Check,{className:"w-3.5 h-3.5 text-green-600"})},"check"):jsxRuntime.jsx(react$1.motion.span,{initial:{scale:.7,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.7,opacity:0},transition:{duration:.15},children:jsxRuntime.jsx(lucideReact.Copy,{className:"w-3.5 h-3.5"})},"copy")})})}function He({icon:e,label:r,value:t}){let o=t||"\u2014";return jsxRuntime.jsxs("div",{className:"group flex items-center justify-between px-5 py-2.5 gap-3 rounded-md mx-1.5 hover:bg-muted/50 transition-colors",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5 min-w-0",children:[jsxRuntime.jsx(e,{className:"w-3.5 h-3.5 text-muted-foreground shrink-0"}),jsxRuntime.jsx("span",{className:"text-[11px] text-muted-foreground w-12 shrink-0",children:r}),jsxRuntime.jsx("span",{className:"text-[12px] font-mono text-foreground truncate",title:o,children:o})]}),jsxRuntime.jsx(pa,{value:o})]})}function ma({data:e}){let{subject:r,cred:t}=e,o=r.type??"human",a=da[o],i=r.capabilities??[],s=i.map(n=>String(n));return jsxRuntime.jsxs(react$1.motion.div,{initial:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{duration:.3,ease:"easeOut"},className:"w-full rounded-2xl border border-border/60 overflow-hidden bg-card shadow-sm",children:[jsxRuntime.jsxs("div",{className:"px-5 pt-2.5 pb-3.5 border-b border-border/60",children:[jsxRuntime.jsx("p",{className:"text-base font-semibold text-foreground truncate",children:r.id??"unknown_actor"}),jsxRuntime.jsx("p",{className:"text-[12px] text-muted-foreground mb-2 truncate",children:r.email??"\u2014"}),jsxRuntime.jsxs("div",{className:"flex gap-1.5 flex-wrap",children:[jsxRuntime.jsx("span",{className:"text-[10px] font-medium uppercase tracking-wide px-2 py-0.5 rounded-full border",style:{background:a.pillBg,color:a.pillText,borderColor:a.pillBorder},children:o}),jsxRuntime.jsx("span",{className:"text-[10px] font-medium uppercase tracking-wide px-2 py-0.5 rounded-full border border-border bg-muted text-muted-foreground",children:t.type??"token"})]})]}),jsxRuntime.jsx("div",{className:"grid grid-cols-3 border-b border-border/60 divide-x divide-border/60",children:[{label:"Capabilities",value:i.length},{label:"Metadata",value:(r.metadata??[]).length},{label:"Project",value:r.project_id?.split("_")[1]?.slice(0,4)??"\u2014"}].map(n=>jsxRuntime.jsxs("div",{className:"py-3 text-center",children:[jsxRuntime.jsx("p",{className:"text-[10px] text-muted-foreground uppercase tracking-wide mb-0.5",children:n.label}),jsxRuntime.jsx("p",{className:"text-sm font-medium font-mono text-foreground",children:n.value})]},n.label))}),jsxRuntime.jsxs("div",{className:"py-1.5 border-b border-border/60",children:[jsxRuntime.jsx(He,{icon:lucideReact.User,label:"sub id",value:r.id}),jsxRuntime.jsx(He,{icon:lucideReact.FolderOpen,label:"project",value:r.project_id}),jsxRuntime.jsx(He,{icon:lucideReact.Key,label:"cred id",value:t.id}),jsxRuntime.jsx(He,{icon:lucideReact.Mail,label:"email",value:r.email})]}),s.length>0&&jsxRuntime.jsxs("div",{className:"px-5 py-3 border-b border-border/60",children:[jsxRuntime.jsx("p",{className:"text-[10px] text-muted-foreground uppercase tracking-wide mb-2",children:"Capabilities"}),jsxRuntime.jsx("div",{className:"flex flex-wrap gap-1.5",children:s.map(n=>jsxRuntime.jsx("span",{className:"text-[11px] font-mono px-2.5 py-1 rounded-full border",style:{background:a.capBg,color:a.capText,borderColor:a.capBorder},children:n},n))})]})]})}exports.AuthProvider=oi;exports.BasicInputField=T;exports.BasicLogoutButton=Sr;exports.Copyright=br;exports.ForgotPassword=Dt;exports.ModernAuth=ta;exports.ModernForgotPassword=gt;exports.ModernIntrospect=ma;exports.ModernResetPassword=Lo;exports.ModernSetup=Go;exports.ModernSignIn=dt;exports.ModernSignUp=mt;exports.ModernVerifyEmail=Uo;exports.ResendVerifyEmail=Hr;exports.ResetPassword=Br;exports.Sessions=_r;exports.SignIn=fr;exports.SignUp=hr;exports.VerifyEmail=Ur;exports.useAuth=v;//# sourceMappingURL=react.js.map
|
|
3
3
|
//# sourceMappingURL=react.js.map
|