@nocios/crudify-components 2.0.14 → 2.0.18
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/chunk-7KKREBUP.mjs +1 -0
- package/dist/chunk-FHKFZDEG.js +1 -0
- package/dist/components.js +1 -1
- package/dist/components.mjs +1 -1
- package/dist/index.d.mts +2 -282
- package/dist/index.d.ts +2 -282
- package/dist/index.js +2 -2
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-KFA34SUS.js +0 -1
- package/dist/chunk-NXCJZPEQ.mjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as Jr,i as Yr,j as he,l as be,n as Zr,o as Qr,r as eo}from"./chunk-PTUSZGL4.mjs";import{g as J}from"./chunk-JAPL7EZJ.mjs";import{a as x,b as Kr,d as qr,f as Gr,p as Xr}from"./chunk-4ILUXVPW.mjs";var ge={es:{},en:{}},Rs=()=>Object.keys(ge),Ss=e=>ge[e]||ge.es;import Ye from"@nocios/crudify-sdk";var ro="crudify_translations_",xt=3600*1e3;function oo(e){let r=0;for(let o=0;o<e.length;o++){let t=e.charCodeAt(o);r=(r<<5)-r+t,r=r&r}return Math.abs(r).toString(36)}var mr=class e{constructor(){this.enableDebug=!1;this.initializationPromise=null;this.isInitialized=!1}static getInstance(){return e.instance||(e.instance=new e),e.instance}setDebug(r){this.enableDebug=r}async ensureCrudifyInitialized(r,o){if(!this.isInitialized)return this.initializationPromise?(this.enableDebug&&x.debug("[TranslationService] Waiting for crudify initialization..."),this.initializationPromise):(this.enableDebug&&x.debug("[TranslationService] Initializing crudify SDK..."),this.initializationPromise=(async()=>{try{let t=Ye.getTokenData();if(t&&t.endpoint){this.enableDebug&&x.debug("[TranslationService] Crudify already initialized"),this.isInitialized=!0;return}Ye.config(o);let i=await Ye.init(r,this.enableDebug?"debug":"none");if(i.success===!1)throw new Error(`Failed to initialize crudify: ${JSON.stringify(i.errors||"Unknown error")}`);this.isInitialized=!0,this.enableDebug&&x.debug("[TranslationService] Crudify SDK initialized successfully")}catch(t){throw x.error("[TranslationService] Failed to initialize crudify",t instanceof Error?t:{message:String(t)}),this.initializationPromise=null,t}})(),this.initializationPromise)}async fetchTranslations(r){let{apiKey:o,featureKeys:t,crudifyEnv:i="stg",urlTranslations:n}=r;this.enableDebug&&x.debug("[TranslationService] fetchTranslations called with:",{apiKeyHash:oo(o),crudifyEnv:i,featureKeys:t,hasUrlTranslations:!!n});let l=this.getFromCache(o),a=l?this.isCacheExpired(l):!0;if(l&&!a)return this.enableDebug&&x.debug("[TranslationService] Using cached translations"),this.mergeWithUrlTranslations(l.data.translations,n);try{await this.ensureCrudifyInitialized(o,i)}catch(u){return x.error("[TranslationService] Failed to initialize crudify",u instanceof Error?u:{message:String(u)}),l?(x.warn("[TranslationService] Using expired cache (init failed)"),this.mergeWithUrlTranslations(l.data.translations,n)):(x.warn("[TranslationService] Using critical bundle (init failed)"),this.getCriticalTranslationsOnly())}try{this.enableDebug&&x.debug("[TranslationService] Fetching from API via crudify SDK");let u=await this.fetchFromAPI(t);this.hasDataChanged(l,u)||!l?this.saveToCache(o,u):this.refreshCacheTimestamp(o);let d=this.mergeWithUrlTranslations(u.translations,n);return this.enableDebug&&x.debug("[TranslationService] Translations loaded:",{languages:Object.keys(d),keysCount:d[Object.keys(d)[0]]?Object.keys(d[Object.keys(d)[0]]).length:0}),d}catch(u){return x.error("[TranslationService] API fetch failed",u instanceof Error?u:{message:String(u)}),l?(x.warn("[TranslationService] Using expired cache as fallback"),this.mergeWithUrlTranslations(l.data.translations,n)):(x.warn("[TranslationService] Using critical bundle translations"),this.getCriticalTranslationsOnly())}}async fetchFromAPI(r){let o=await Ye.getTranslation(r);if(!o.success)throw new Error(`Crudify API error: ${o.errors?JSON.stringify(o.errors):"Unknown error"}`);if(!o.data)throw new Error("No translation data in response");return o.data}mergeWithUrlTranslations(r,o){if(!o||Object.keys(o).length===0)return r;let t={};return Object.keys(r).forEach(i=>{t[i]={...r[i],...o}}),t}hasDataChanged(r,o){if(!r||r.data.timestamp!==o.timestamp)return!0;let t=this.hashData(o.translations);return r.dataHash!==t}hashData(r){let o=JSON.stringify(r),t=0;for(let i=0;i<o.length;i++){let n=o.charCodeAt(i);t=(t<<5)-t+n,t=t&t}return t.toString(36)}saveToCache(r,o){try{let t=this.getCacheKey(r),i={data:o,cachedAt:Date.now(),dataHash:this.hashData(o.translations)};localStorage.setItem(t,JSON.stringify(i)),this.enableDebug&&x.debug("[TranslationService] Saved to cache:",{cacheKey:t})}catch(t){x.error("[TranslationService] Failed to save cache",t instanceof Error?t:{message:String(t)})}}getFromCache(r){try{let o=this.getCacheKey(r),t=localStorage.getItem(o);return t?JSON.parse(t):null}catch(o){return x.error("[TranslationService] Failed to read cache",o instanceof Error?o:{message:String(o)}),null}}refreshCacheTimestamp(r){try{let o=this.getFromCache(r);if(o){o.cachedAt=Date.now();let t=this.getCacheKey(r);localStorage.setItem(t,JSON.stringify(o))}}catch(o){x.error("[TranslationService] Failed to refresh cache timestamp",o instanceof Error?o:{message:String(o)})}}isCacheExpired(r){return Date.now()-r.cachedAt>xt}hasValidCache(r){let o=this.getFromCache(r);return o?!this.isCacheExpired(o):!1}getCacheKey(r){return`${ro}${oo(r)}`}getCriticalTranslationsOnly(){return ge}invalidateCache(r){let o=this.getCacheKey(r);localStorage.removeItem(o),this.enableDebug&&x.debug("[TranslationService] Cache invalidated:",{cacheKey:o})}async prefetchTranslations(r){try{await this.fetchTranslations(r),this.enableDebug&&x.debug("[TranslationService] Prefetch completed")}catch(o){x.error("[TranslationService] Prefetch failed",o instanceof Error?o:{message:String(o)})}}clearAllCaches(){try{let o=Object.keys(localStorage).filter(t=>t.startsWith(ro));o.forEach(t=>localStorage.removeItem(t)),this.enableDebug&&x.debug(`[TranslationService] Cleared ${o.length} cache entries`)}catch(r){x.error("[TranslationService] Failed to clear caches",r instanceof Error?r:{message:String(r)})}}},Ze=mr.getInstance();import{createContext as wt,useContext as Ct,useEffect as io,useState as Le,useMemo as to,useCallback as vt}from"react";import{Fragment as Tt,jsx as er}from"react/jsx-runtime";var Qe=null,fr=!1,so=wt(null);function no(e,r,o){return{...e,...r,...o||{}}}function Pt(e,r,o,t,i){io(()=>{if(!t||!e||!r)return;let n=o||typeof window<"u"&&window.i18next||typeof window<"u"&&window.i18n;if(!n||!n.addResourceBundle){i&&x.debug("[TranslationsProvider] i18next not found, skipping auto-sync");return}i&&x.debug("[TranslationsProvider] Auto-syncing translations with i18next",{languages:Object.keys(e),currentLanguage:r}),Object.keys(e).forEach(l=>{e[l]&&Object.keys(e[l]).length>0&&(n.addResourceBundle(l,"translation",e[l],!0,!0),i&&x.debug(`[TranslationsProvider] Synced ${Object.keys(e[l]).length} keys for language: ${l}`))}),n.language!==r&&n.changeLanguage&&(n.changeLanguage(r),i&&x.debug(`[TranslationsProvider] Changed i18next language to: ${r}`))},[e,r,o,t,i])}var Us=({children:e,apiKey:r,crudifyEnv:o="prod",featureKeys:t,language:i="es",devTranslations:n,translationUrl:l,enableDebug:a=!1,skipAutoInit:u=!0,autoSyncI18n:h=!0,i18nInstance:d,loadingFallback:b,waitForInitialLoad:w=!0})=>{let c=to(()=>qr({publicApiKey:r,env:o,featureKeys:t,enableDebug:a}),[r,o,t,a]),s=c.publicApiKey||"",y=c.env||o||"prod",g=c.featureKeys||t,[m,f]=Le({}),[v,k]=Le(!0),[z,p]=Le(!0),[C,I]=Le(null),[A,Y]=Le(void 0),[le,Q]=Le(!1),ne=vt(async()=>{if(!s){a&&x.debug("[TranslationsProvider] No apiKey - skipping translation fetch"),k(!1),p(!1);return}if(le){a&&x.debug("[TranslationsProvider] Skipping reload - using fallback translations");return}if(Ze.hasValidCache(s)&&z&&(a&&x.debug("[TranslationsProvider] Valid cache found - not blocking initial render"),p(!1)),fr&&Qe){a&&x.debug("[TranslationsProvider] Fetch already in progress, waiting for existing promise");try{let R=await Qe;f(R),k(!1);return}catch{a&&x.warn("[TranslationsProvider] Global fetch failed, retrying")}}fr=!0,k(!0),I(null);let V;if(l)try{a&&x.debug(`[TranslationsProvider] Fetching translations from URL: ${l}`);let R=await fetch(l);if(!R.ok)throw new Error(`Failed to fetch translations: ${R.statusText}`);V=await R.json(),Y(V),a&&x.debug("[TranslationsProvider] URL translations loaded:",{keysCount:V?Object.keys(V).length:0})}catch(R){x.error("[TranslationsProvider] Failed to load URL translations",R instanceof Error?R:{message:String(R)}),V=void 0,Y(void 0)}let ee=(async()=>{try{Ze.setDebug(a);let R=await Ze.fetchTranslations({apiKey:s,crudifyEnv:y,featureKeys:g,urlTranslations:V}),S={};return Object.keys(R).forEach(W=>{let ie=ge[W]||{},re=R[W]||{};S[W]=no(ie,re,n)}),a&&x.debug("[TranslationsProvider] Loaded translations:",{languages:Object.keys(S),keysCount:Object.keys(S[i]||{}).length}),S}catch(R){x.error("[TranslationsProvider] Failed to load",R instanceof Error?R:{message:String(R)}),I(R instanceof Error?R.message:String(R)),Q(!0);let S={};return Object.keys(ge).forEach(W=>{let ie=ge[W],re=V||A||{};S[W]=no(ie,re,n)}),a&&x.debug("[TranslationsProvider] Using fallback translations (critical + URL)"),S}})();Qe=ee;try{let R=await ee;f(R)}finally{k(!1),p(!1),fr=!1,setTimeout(()=>{Qe=null},1e3)}},[s,y,g,l,n,a,i,le]);io(()=>{ne();let H=setInterval(ne,3600*1e3);return()=>clearInterval(H)},[ne]);let Oe=to(()=>(H,V)=>{let R=(m[i]||{})[H];if(!R){let S=Object.keys(m);for(let W of S)if(m[W][H]){R=m[W][H];break}}return R||(a&&x.warn(`[TranslationsProvider] Missing translation: "${H}"`),R=H),V&&typeof R=="string"&&Object.entries(V).forEach(([S,W])=>{let ie=new RegExp(`{{${S}}}`,"g");R=R.replace(ie,String(W))}),R},[m,i,a]);Pt(m,i,d,h,a);let Ie={t:Oe,language:i,availableLanguages:Object.keys(m),translations:m,isLoading:v,error:C,refreshTranslations:ne};return s?w&&z&&v?b||er("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:er("div",{children:"Loading translations..."})}):er(so.Provider,{value:Ie,children:e}):(a&&x.warn("[TranslationsProvider] No API key available. Skipping translations. Provide apiKey via props or ensure cookies are set by Lambda."),er(Tt,{children:e}))},Me=()=>{let e=Ct(so);if(!e)throw new Error("useTranslations must be used within TranslationsProvider");return e};var Rt=/^[a-zA-Z0-9\-_./\?=&%#]+$/,St=[/^https?:\/\//i,/^ftp:\/\//i,/^\/\//,/javascript:/i,/data:/i,/vbscript:/i,/about:/i,/\.\.\//,/\.\.\\/,/%2e%2e%2f/i,/%2e%2e%5c/i,/%2f%2f/i,/%5c%5c/i,/[\x00-\x1f\x7f-\x9f]/,/\\/],ao=(e,r="/")=>{if(!e||typeof e!="string")return r;let o=e.trim();if(!o)return r;if(!o.startsWith("/"))return x.warn("Open redirect blocked (relative path)",{path:e}),r;if(!Rt.test(o))return x.warn("Open redirect blocked (invalid characters)",{path:e}),r;let t=o.toLowerCase();for(let n of St)if(n.test(t))return x.warn("Open redirect blocked (dangerous pattern)",{path:e}),r;let i=o.split("?")[0].split("/").filter(Boolean);if(i.length===0)return o;for(let n of i)if(n===".."||n.includes(":")||n.length>100)return x.warn("Open redirect blocked (suspicious path part)",{part:n}),r;return o},kt=[/^files\.nocios\.link$/,/^files\.crudia\.com$/,/^[a-z0-9][a-z0-9-]*\.nocios\.link$/,/^[a-z0-9][a-z0-9-]*\.crudia\.com$/],lo=(e,r="/")=>{if(!e||typeof e!="string")return r;let o=e.trim();if(!o)return r;if(o.startsWith("/"))return ao(o,r);try{if(o.includes("..")||o.includes("//",8))return x.warn("Redirect blocked (dangerous path pattern)",{url:o}),r;let t=new URL(o);if(t.protocol!=="https:")return x.warn("Redirect blocked (non-HTTPS protocol)",{url:o}),r;let i=t.hostname.toLowerCase();return kt.some(l=>l.test(i))?o:(x.warn("Redirect blocked (untrusted domain)",{url:o,hostname:i}),r)}catch{return x.warn("Redirect blocked (invalid URL)",{url:o}),r}},Hs=(e,r="/")=>{try{let t=(typeof e=="string"?new URLSearchParams(e):e).get("redirect");if(!t)return r;let i=decodeURIComponent(t);return ao(i,r)}catch(o){return x.warn("Error parsing redirect parameter",o instanceof Error?{errorMessage:o.message}:{message:String(o)}),r}};import{Box as co,Typography as Et}from"@mui/material";import It from"@mui/icons-material/CheckCircle";import At from"@mui/icons-material/RadioButtonUnchecked";import{jsx as Ne,jsxs as Dt}from"react/jsx-runtime";var Lt=({message:e,valid:r})=>Dt(co,{sx:{display:"flex",alignItems:"center",gap:.5,py:.25},children:[r?Ne(It,{sx:{fontSize:16,color:"success.main"}}):Ne(At,{sx:{fontSize:16,color:"text.disabled"}}),Ne(Et,{variant:"caption",sx:{color:r?"success.main":"text.secondary",transition:"color 0.2s ease"},children:e})]}),Ft=({requirements:e,show:r=!0})=>!r||e.length===0?null:Ne(co,{sx:{mt:.5,mb:1,px:.5},children:e.map((o,t)=>Ne(Lt,{message:o.message,valid:o.valid},t))}),uo=Ft;var Bt=/[A-Z]/,_t=/[a-z]/,zt=/[0-9]/,Ot=/[!@#$%^&*()_+\-=\[\]{}|;:,.<>?]/,Ut=/^[A-Za-z0-9]+$/;function po(e,r){return r.map(o=>{let t=!0;switch(o.type){case"minLength":t=e.length>=Number(o.value??0);break;case"alphanumeric":t=e.length>0&&Ut.test(e);break;case"uppercase":t=Bt.test(e);break;case"lowercase":t=_t.test(e);break;case"number":t=zt.test(e);break;case"special":t=Ot.test(e);break;default:t=!0}return{message:o.message,valid:t,enforce:!!o.enforce}})}function go(e){return e.filter(r=>r.enforce).every(r=>r.valid)}var mo=[{type:"minLength",value:8,message:"passwordRequirements.minLength",enforce:!0},{type:"uppercase",message:"passwordRequirements.uppercase",enforce:!0},{type:"lowercase",message:"passwordRequirements.lowercase",enforce:!0},{type:"number",message:"passwordRequirements.number",enforce:!0},{type:"special",message:"passwordRequirements.special",enforce:!0}];import{Box as Rn,Typography as Sn}from"@mui/material";import{createContext as Nt,useContext as Wt,useMemo as hr}from"react";import{useState as yr,useEffect as Mt}from"react";var fo=(e,r)=>{let[o,t]=yr({}),[i,n]=yr(!1),[l,a]=yr(null);return Mt(()=>{if(r&&Object.keys(r).length>0){t(r),n(!1),a(null);return}if(!e){t({}),n(!1),a(null);return}let u=!1;return n(!0),a(null),fetch(e).then(h=>{if(!h.ok)throw new Error(`Failed to load translations: ${h.status}`);return h.json()}).then(h=>{u||(t(h),n(!1))}).catch(h=>{u||(x.error("[I18nProvider] Failed to load translations from URL",h instanceof Error?h:{message:String(h),url:e}),a(h instanceof Error?h.message:String(h)),t({}),n(!1))}),()=>{u=!0}},[e,r]),{translations:o,loading:i,error:l}};import{jsx as yo}from"react/jsx-runtime";var ho=Nt(null),Ht=()=>{try{return Me()}catch{return null}},Vt=(e,r)=>{if(r.includes(".")){let o=r.split(".").reduce((t,i)=>t&&typeof t=="object"?t[i]:void 0,e);if(o!==void 0)return o}if(e&&e[r])return e[r]},bo=({children:e,translations:r,translationsUrl:o,language:t="en"})=>{let n=Ht()?.translations?.[t]||{},{translations:l,loading:a}=fo(o,r),u=hr(()=>({...n,...l,...r||{}}),[n,l,r]),h=hr(()=>(b,w)=>{let c=Vt(u,b);return c==null&&(c=b),w&&typeof c=="string"&&Object.entries(w).forEach(([s,y])=>{c=c.replace(new RegExp(`{{${s}}}`,"g"),y)}),typeof c=="string"?c:b},[u]),d=hr(()=>({t:h,language:t}),[h,t]);return a?yo("div",{children:"Loading translations..."}):yo(ho.Provider,{value:d,children:e})},oe=()=>{let e=Wt(ho);if(!e)throw new Error("useTranslation must be used within I18nProvider");return e};import{createContext as $t,useContext as jt,useReducer as Kt,useEffect as br,useCallback as qt}from"react";import{jsx as Xt}from"react/jsx-runtime";var xo={currentScreen:"login",searchParams:{},formData:{username:"",password:"",email:"",code:"",newPassword:"",confirmPassword:""},loading:!1,errors:{global:[]},emailSent:!1,codeAlreadyExists:!1,codeValidated:!1,fromCodeVerification:!1,config:{}};function Gt(e,r){switch(r.type){case"SET_SCREEN":let o={...e,currentScreen:r.payload.screen,searchParams:r.payload.params||e.searchParams,errors:{global:[]}},t=new URLSearchParams(o.searchParams),i=t.toString()?`?${t.toString()}`:window.location.pathname;try{window.history.replaceState({},"",i)}catch{}return o;case"SET_SEARCH_PARAMS":return{...e,searchParams:r.payload};case"CLEAR_SEARCH_PARAMS":return{...e,searchParams:{}};case"UPDATE_FORM_DATA":return{...e,formData:{...e.formData,...r.payload},errors:{...e.errors,...Object.keys(r.payload).reduce((n,l)=>({...n,[l]:void 0}),{})}};case"SET_LOADING":return{...e,loading:r.payload};case"SET_ERRORS":return{...e,errors:{...e.errors,...r.payload}};case"CLEAR_ERRORS":return{...e,errors:{global:[]}};case"SET_EMAIL_SENT":return{...e,emailSent:r.payload};case"SET_CODE_ALREADY_EXISTS":return{...e,codeAlreadyExists:r.payload};case"SET_CODE_VALIDATED":return{...e,codeValidated:r.payload};case"SET_FROM_CODE_VERIFICATION":return{...e,fromCodeVerification:r.payload};case"RESET_FORM":return{...e,formData:xo.formData,errors:{global:[]},loading:!1,emailSent:!1,codeAlreadyExists:!1,codeValidated:!1,fromCodeVerification:!1};case"INIT_CONFIG":return{...e,config:r.payload};default:return e}}var wo=$t(void 0),Co=({children:e,initialScreen:r="login",config:o,autoReadFromCookies:t=!0})=>{let[i,n]=Kt(Gt,{...xo,currentScreen:r});br(()=>{n({type:"INIT_CONFIG",payload:(()=>{let s={};if(t)try{let y=Kr();y.configSource!=="none"&&y.logo&&(s.logo=y.logo)}catch(y){x.error("Error reading configuration",y instanceof Error?y:{message:String(y)})}return{publicApiKey:o?.publicApiKey,env:o?.env,appName:o?.appName,logo:o?.logo||s.logo,loginActions:o?.loginActions}})()})},[o,t]),br(()=>{let c=new URLSearchParams(window.location.search),s={};c.forEach((y,g)=>{s[g]=y}),Object.keys(s).length>0&&n({type:"SET_SEARCH_PARAMS",payload:s}),r==="checkCode"&&s.email&&n({type:"UPDATE_FORM_DATA",payload:{email:s.email,code:s.code||""}}),r==="resetPassword"&&s.link&&n({type:"SET_SEARCH_PARAMS",payload:s})},[r]),br(()=>{let c=Gr.subscribe(s=>{(s.type==="LOGOUT"||s.type==="SESSION_EXPIRED")&&(x.debug("LoginStateProvider: Clearing state due to auth event",{type:s.type}),n({type:"CLEAR_SEARCH_PARAMS"}),n({type:"RESET_FORM"}))});return()=>c()},[]);let l=(c,s)=>{n({type:"SET_SCREEN",payload:{screen:c,params:s}})},a=c=>{n({type:"UPDATE_FORM_DATA",payload:c})},u=(c,s)=>{n({type:"SET_ERRORS",payload:{[c]:s}})},h=()=>{n({type:"CLEAR_ERRORS"})},d=c=>{n({type:"SET_LOADING",payload:c})},b=qt(()=>{n({type:"CLEAR_SEARCH_PARAMS"})},[]),w={state:i,dispatch:n,setScreen:l,updateFormData:a,setFieldError:u,clearErrors:h,setLoading:d,clearSearchParams:b};return Xt(wo.Provider,{value:w,children:e})},rr=()=>{let e=jt(wo);if(e===void 0)throw new Error("useLoginState must be used within a LoginStateProvider");return e};import{useEffect as Jt,useRef as Yt}from"react";import{Typography as xr,TextField as vo,Button as Zt,Box as We,CircularProgress as Qt,Alert as en,Link as Po}from"@mui/material";import{Fragment as on,jsx as te,jsxs as He}from"react/jsx-runtime";var rn=({onScreenChange:e,onExternalNavigate:r,onLoginSuccess:o,onError:t,redirectUrl:i="/"})=>{let{state:n,updateFormData:l,setFieldError:a,clearErrors:u,setLoading:h}=rr(),{login:d}=be(),b=oe(),{t:w}=b,c="i18n"in b?b.i18n:void 0,s=Yt(null),y=Xr(w,{currentLanguage:c?.language,enableDebug:!1}),g=()=>{if(n.searchParams.redirect)try{let p=decodeURIComponent(n.searchParams.redirect);return lo(p,i||"/")}catch{}return i||"/"};Jt(()=>{let p=setTimeout(()=>{s.current&&s.current.focus()},100);return()=>clearTimeout(p)},[]);let m=p=>y.translateError({code:p.code,message:p.message,field:p.field}),f=async()=>{if(!n.loading){if(!n.formData.username.trim()){a("username",w("login.usernameRequired"));return}if(!n.formData.password.trim()){a("password",w("login.passwordRequired"));return}u(),h(!0);try{let p=await d(n.formData.username,n.formData.password);if(h(!1),p.success){let C=g();o&&o(p.data,C)}else{let C=p.rawResponse||p;v(C)}}catch(p){h(!1);let I=J(p).map(m);a("global",I),t&&t(I.join(", "))}}},v=p=>{let C=J(p),I=[];C.forEach(A=>{A.field?a(A.field,m(A)):I.push(m(A))}),I.length>0&&a("global",I)};return He(on,{children:[He(We,{component:"form",noValidate:!0,onSubmit:p=>{p.preventDefault(),f()},onKeyDown:p=>{p.key==="Enter"&&!n.loading&&(p.preventDefault(),f())},sx:{width:"100%",display:"flex",flexDirection:"column",gap:2},children:[He(We,{sx:{mb:1},children:[te(xr,{variant:"body2",component:"label",htmlFor:"email",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:w("login.usernameOrEmailLabel")}),te(vo,{fullWidth:!0,id:"email",name:"email",type:"email",value:n.formData.username,disabled:n.loading,onChange:p=>l({username:p.target.value}),error:!!n.errors.username,helperText:n.errors.username,autoComplete:"email",placeholder:w("login.usernameOrEmailPlaceholder"),inputRef:s,required:!0})]}),He(We,{sx:{mb:1},children:[te(xr,{variant:"body2",component:"label",htmlFor:"password",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:w("login.passwordLabel")}),te(vo,{fullWidth:!0,id:"password",name:"password",type:"password",value:n.formData.password,disabled:n.loading,onChange:p=>l({password:p.target.value}),error:!!n.errors.password,helperText:n.errors.password,autoComplete:"current-password",placeholder:w("login.passwordPlaceholder"),required:!0})]}),n.config.loginActions?.includes("forgotPassword")&&te(We,{sx:{display:"flex",justifyContent:"flex-end",alignItems:"center"},children:te(Po,{sx:{cursor:"pointer"},onClick:()=>{e?.("forgotPassword",n.searchParams)},variant:"body2",color:"secondary",children:w("login.forgotPasswordLink")})}),te(Zt,{disabled:n.loading,type:"submit",fullWidth:!0,variant:"contained",color:"primary",sx:{mt:1,mb:2},children:n.loading?te(Qt,{size:20}):w("login.loginButton")})]}),te(We,{children:n.errors.global&&n.errors.global.length>0&&n.errors.global.map((p,C)=>te(en,{variant:"filled",sx:{mt:2},severity:"error",children:te("div",{children:p})},C))}),n.config.loginActions?.includes("createUser")&&He(xr,{variant:"body2",align:"center",sx:{color:"text.secondary",mt:3},children:[w("login.noAccountPrompt")," ",te(Po,{sx:{cursor:"pointer"},onClick:()=>{let C=`/public/users/create${Object.keys(n.searchParams).length>0?`?${new URLSearchParams(n.searchParams).toString()}`:""}`;r?.(C)},fontWeight:"medium",color:"secondary",children:w("login.signUpLink")})]})]})},To=rn;import{useState as Fe,useEffect as tn,useRef as nn}from"react";import{Typography as De,TextField as sn,Button as Ro,Box as xe,CircularProgress as an,Alert as ln,Link as wr}from"@mui/material";import{Fragment as So,jsx as N,jsxs as Se}from"react/jsx-runtime";var cn=({onScreenChange:e,onError:r})=>{let{crudify:o}=he(),[t,i]=Fe(""),[n,l]=Fe(!1),[a,u]=Fe([]),[h,d]=Fe(null),[b,w]=Fe(!1),[c,s]=Fe(!1),y=nn(null),{t:g}=oe();tn(()=>{y.current&&!b&&!c&&y.current.focus()},[b,c]);let m=C=>{let I=[`errors.auth.${C.code}`,`errors.data.${C.code}`,`errors.system.${C.code}`,`errors.${C.code}`,`forgotPassword.${C.code.toLowerCase()}`];for(let A of I){let Y=g(A);if(Y!==A)return Y}return C.message||g("base.errors.errorUnknown")},f=C=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(C),v=async()=>{if(!(n||!o)){if(u([]),d(null),!t){d(g("forgotPassword.emailRequired"));return}if(!f(t)){d(g("forgotPassword.invalidEmail"));return}l(!0);try{let C=[{operation:"requestPasswordReset",data:{email:t}}],I=await o.transaction(C);if(I.success)I.data&&I.data.existingCodeValid?s(!0):w(!0);else{let Y=J(I).map(m);u(Y)}}catch(C){let A=J(C).map(m);u(A),r&&r(A.join(", "))}finally{l(!1)}}},k=()=>{e?.("login")},z=()=>{if(b||c){e?.("checkCode",{email:t});return}if(!t){d(g("forgotPassword.emailRequired"));return}if(!f(t)){d(g("forgotPassword.invalidEmail"));return}e?.("checkCode",{email:t})};return b||c?N(So,{children:Se(xe,{sx:{width:"100%",display:"flex",flexDirection:"column",gap:2,textAlign:"center"},children:[Se(xe,{sx:{mb:2},children:[N(De,{variant:"h5",component:"h1",sx:{mb:1,fontWeight:600},children:g(c?"forgotPassword.codeAlreadyExistsMessage":"forgotPassword.emailSentMessage")}),N(De,{variant:"body2",sx:{color:c?"success.main":"grey.600"},children:g("forgotPassword.checkEmailInstructions")})]}),N(Ro,{type:"button",onClick:z,fullWidth:!0,variant:"contained",color:"primary",sx:{mt:2,mb:2},children:g("forgotPassword.enterCodeLink")}),N(xe,{sx:{display:"flex",justifyContent:"center",alignItems:"center"},children:N(wr,{sx:{cursor:"pointer"},onClick:k,variant:"body2",color:"secondary",children:g("base.btn.back")})})]})}):Se(So,{children:[Se(xe,{component:"form",noValidate:!0,onSubmit:C=>{C.preventDefault(),v()},sx:{width:"100%",display:"flex",flexDirection:"column",gap:2},children:[Se(xe,{sx:{mb:2},children:[N(De,{variant:"h5",component:"h1",sx:{mb:1,fontWeight:600},children:g("forgotPassword.title")}),N(De,{variant:"body2",sx:{color:"grey.600"},children:g("forgotPassword.instructions")})]}),Se(xe,{sx:{mb:1},children:[N(De,{variant:"body2",component:"label",htmlFor:"email",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:g("forgotPassword.emailLabel")}),N(sn,{fullWidth:!0,id:"email",name:"email",type:"email",value:t,disabled:n,onChange:C=>i(C.target.value),error:!!h,helperText:h,autoComplete:"email",placeholder:g("forgotPassword.emailPlaceholder"),required:!0,autoFocus:!0,inputRef:y})]}),N(Ro,{disabled:n,type:"submit",fullWidth:!0,variant:"contained",color:"primary",sx:{mt:2,mb:2},children:n?N(an,{size:20}):g("forgotPassword.sendCodeButton")}),Se(xe,{sx:{display:"flex",justifyContent:"center",alignItems:"center",gap:2},children:[N(wr,{sx:{cursor:"pointer"},onClick:k,variant:"body2",color:"secondary",children:g("base.btn.back")}),N(De,{variant:"body2",sx:{color:"grey.400"},children:"\u2022"}),N(wr,{sx:{cursor:"pointer"},onClick:z,variant:"body2",color:"secondary",children:g("login.alreadyHaveCodeLink")})]})]}),N(xe,{children:a.length>0&&a.map((C,I)=>N(ln,{variant:"filled",sx:{mt:2},severity:"error",children:C},I))})]})},ko=cn;import{useState as $,useEffect as Eo,useMemo as Cr}from"react";import{Typography as or,TextField as Io,Button as dn,Box as we,CircularProgress as Ao,Alert as Lo,Link as un,IconButton as Fo,InputAdornment as Do}from"@mui/material";import Bo from"@mui/icons-material/Visibility";import _o from"@mui/icons-material/VisibilityOff";import{Fragment as gn,jsx as F,jsxs as Ve}from"react/jsx-runtime";var pn=({onScreenChange:e,onError:r,searchParams:o,onResetSuccess:t,passwordRules:i})=>{let{crudify:n}=he(),[l,a]=$(""),[u,h]=$(""),[d,b]=$(!1),[w,c]=$([]),[s,y]=$(null),[g,m]=$(null),[f,v]=$(""),[k,z]=$(""),[p,C]=$(!1),[I,A]=$(!0),[Y,le]=$(!1),[Q,ne]=$(null),[Oe,Ie]=$(!1),[H,V]=$(!1),[ee,R]=$(!1),{t:S}=oe(),W=Cr(()=>(i||mo).map(D=>({...D,message:S(D.message)})),[i,S]),ie=Cr(()=>po(l,W),[l,W]),re=Cr(()=>go(ie),[ie]),Ue=l===u,Re=E=>{let D=[`errors.auth.${E.code}`,`errors.data.${E.code}`,`errors.system.${E.code}`,`errors.${E.code}`,`resetPassword.${E.code.toLowerCase()}`];for(let M of D){let q=S(M);if(q!==M)return q}return E.message||S("base.errors.errorUnknown")},Ae=E=>o?o instanceof URLSearchParams?o.get(E):o[E]||null:null;Eo(()=>{if(o){if(o){let E=Ae("fromCodeVerification"),D=Ae("email"),M=Ae("code");if(E==="true"&&D&&M){v(D),z(M),C(!0),le(!0),A(!1);return}let q=Ae("link");if(q)try{let G=decodeURIComponent(q),[X,ye]=G.split("/");if(X&&ye&&X.length===6){z(X),v(ye),C(!1),ne({email:ye,code:X});return}}catch{}if(D&&M){v(D),z(M),C(!1),ne({email:D,code:M});return}}c([S("resetPassword.invalidCode")]),A(!1),setTimeout(()=>e?.("forgotPassword"),3e3)}},[o,n,S,e]),Eo(()=>{n&&Q&&!Oe&&(Ie(!0),(async(D,M)=>{try{let q=[{operation:"validatePasswordResetCode",data:{email:D,codePassword:M}}],G=await n.transaction(q);if(G.data&&Array.isArray(G.data)){let X=G.data[0];if(X&&X.response&&X.response.status==="OK"){le(!0);return}}if(G.success)le(!0);else{let ye=J(G).map(Re);c(ye),setTimeout(()=>e?.("forgotPassword"),3e3)}}catch(q){let X=J(q).map(Re);c(X),setTimeout(()=>e?.("forgotPassword"),3e3)}finally{A(!1),ne(null),Ie(!1)}})(Q.email,Q.code))},[n,Q,S,e]);let Xe=async()=>{if(d||!n)return;c([]),y(null),m(null);let E=!1;if(l?re||(y(S("resetPassword.passwordRequirementsNotMet")),E=!0):(y(S("resetPassword.newPasswordRequired")),E=!0),u?Ue||(m(S("resetPassword.passwordsDoNotMatch")),E=!0):(m(S("resetPassword.confirmPasswordRequired")),E=!0),!E){b(!0);try{let D=[{operation:"validateAndResetPassword",data:{email:f,codePassword:k,newPassword:l}}],M=await n.transaction(D);if(M.success)c([]),setTimeout(()=>{t?.()},1e3);else{let G=J(M).map(Re);c(G)}}catch(D){let q=J(D).map(Re);c(q),r&&r(q.join(", "))}b(!1)}},Or=()=>{p?e?.("checkCode",{email:f}):e?.("forgotPassword")};return I?F(we,{sx:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:"300px"},children:F(Ao,{})}):Y?Ve(gn,{children:[Ve(we,{component:"form",noValidate:!0,sx:{width:"100%",display:"flex",flexDirection:"column",gap:2},children:[Ve(we,{sx:{mb:2},children:[F(or,{variant:"h5",component:"h1",sx:{mb:1,fontWeight:600},children:S("resetPassword.title")}),F(or,{variant:"body2",sx:{color:"grey.600"},children:S("resetPassword.instructions")})]}),Ve(we,{sx:{mb:1},children:[F(or,{variant:"body2",component:"label",htmlFor:"newPassword",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:S("resetPassword.newPasswordLabel")}),F(Io,{fullWidth:!0,id:"newPassword",name:"newPassword",type:H?"text":"password",value:l,disabled:d,onChange:E=>a(E.target.value),error:!!s,helperText:s,autoComplete:"new-password",placeholder:S("resetPassword.newPasswordPlaceholder"),required:!0,InputProps:{endAdornment:F(Do,{position:"end",children:F(Fo,{"aria-label":S(H?"base.btn.hidePassword":"base.btn.showPassword"),onClick:()=>V(!H),edge:"end",size:"small",disabled:d,children:H?F(_o,{}):F(Bo,{})})})}}),F(uo,{requirements:ie,show:l.length>0})]}),Ve(we,{sx:{mb:1},children:[F(or,{variant:"body2",component:"label",htmlFor:"confirmPassword",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:S("resetPassword.confirmPasswordLabel")}),F(Io,{fullWidth:!0,id:"confirmPassword",name:"confirmPassword",type:ee?"text":"password",value:u,disabled:d,onChange:E=>h(E.target.value),error:!!g,helperText:g,autoComplete:"new-password",placeholder:S("resetPassword.confirmPasswordPlaceholder"),required:!0,InputProps:{endAdornment:F(Do,{position:"end",children:F(Fo,{"aria-label":S(ee?"base.btn.hidePassword":"base.btn.showPassword"),onClick:()=>R(!ee),edge:"end",size:"small",disabled:d,children:ee?F(_o,{}):F(Bo,{})})})}})]}),F(dn,{disabled:d||!re||!Ue||!l||!u,type:"button",onClick:Xe,fullWidth:!0,variant:"contained",color:"primary",sx:{mt:2,mb:2},children:d?F(Ao,{size:20}):S("resetPassword.resetPasswordButton")}),F(we,{sx:{display:"flex",justifyContent:"center",alignItems:"center"},children:F(un,{sx:{cursor:"pointer"},onClick:Or,variant:"body2",color:"secondary",children:S("base.btn.back")})})]}),F(we,{children:w.length>0&&w.map((E,D)=>F(Lo,{variant:"filled",sx:{mt:2},severity:"error",children:E},D))})]}):F(we,{children:w.length>0&&w.map((E,D)=>F(Lo,{variant:"filled",sx:{mt:2},severity:"error",children:E},D))})},zo=pn;import{useState as $e,useEffect as Oo,useRef as mn}from"react";import{Typography as vr,TextField as fn,Button as yn,Box as je,CircularProgress as hn,Alert as bn,Link as xn}from"@mui/material";import{Fragment as Cn,jsx as de,jsxs as tr}from"react/jsx-runtime";var wn=({onScreenChange:e,onError:r,searchParams:o})=>{let{crudify:t}=he(),[i,n]=$e(""),[l,a]=$e(!1),[u,h]=$e([]),[d,b]=$e(null),[w,c]=$e(""),s=mn(null),{t:y}=oe(),g=p=>o?o instanceof URLSearchParams?o.get(p):o[p]||null:null,m=p=>{let C=[`errors.auth.${p.code}`,`errors.data.${p.code}`,`errors.system.${p.code}`,`errors.${p.code}`,`checkCode.${p.code.toLowerCase()}`];for(let I of C){let A=y(I);if(A!==I)return A}return p.message||y("base.errors.errorUnknown")};Oo(()=>{let p=g("email");p?c(p):e?.("forgotPassword")},[o,e]),Oo(()=>{s.current&&s.current.focus()},[]);let f=async()=>{if(!(l||!t)){if(h([]),b(null),!i){b(y("checkCode.codeRequired"));return}if(i.length!==6){b(y("checkCode.codeRequired"));return}a(!0);try{let p=[{operation:"validatePasswordResetCode",data:{email:w,codePassword:i}}],C=await t.transaction(p);if(C.success)e?.("resetPassword",{email:w,code:i,fromCodeVerification:"true"});else{let A=J(C).map(m);h(A),a(!1)}}catch(p){let I=J(p).map(m);h(I),a(!1),r&&r(I.join(", "))}}},v=()=>{e?.("forgotPassword")},k=p=>{let C=p.target.value.replace(/\D/g,"").slice(0,6);n(C)};return tr(Cn,{children:[tr(je,{component:"form",noValidate:!0,onSubmit:p=>{p.preventDefault(),f()},sx:{width:"100%",display:"flex",flexDirection:"column",gap:2},children:[tr(je,{sx:{mb:2},children:[de(vr,{variant:"h5",component:"h1",sx:{mb:1,fontWeight:600},children:y("checkCode.title")}),de(vr,{variant:"body2",sx:{color:"grey.600"},children:y("checkCode.instructions")})]}),tr(je,{sx:{mb:1},children:[de(vr,{variant:"body2",component:"label",htmlFor:"code",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:y("checkCode.codeLabel")}),de(fn,{fullWidth:!0,id:"code",name:"code",type:"text",value:i,disabled:l,onChange:k,error:!!d,helperText:d,placeholder:y("checkCode.codePlaceholder"),inputProps:{maxLength:6,style:{textAlign:"center",fontSize:"1.5rem",letterSpacing:"0.4rem"}},required:!0,autoFocus:!0,inputRef:s})]}),de(yn,{disabled:l||i.length!==6,type:"submit",fullWidth:!0,variant:"contained",color:"primary",sx:{mt:2,mb:2},children:l?de(hn,{size:20}):y("checkCode.verifyButton")}),de(je,{sx:{display:"flex",justifyContent:"center",alignItems:"center"},children:de(xn,{sx:{cursor:"pointer"},onClick:v,variant:"body2",color:"secondary",children:y("base.btn.back")})})]}),de(je,{children:u.length>0&&u.map((p,C)=>de(bn,{sx:{mt:2},severity:"error",children:p},C))})]})},Uo=wn;import{Box as vn,CircularProgress as Pn,Alert as Mo,Typography as Pr}from"@mui/material";import{Fragment as Tn,jsx as Be,jsxs as No}from"react/jsx-runtime";var Wo=({children:e,fallback:r})=>{let{isLoading:o,error:t,isInitialized:i}=he(),{t:n}=oe();return o?r||No(vn,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"200px",gap:2},children:[Be(Pn,{}),Be(Pr,{variant:"body2",color:"text.secondary",children:n("login.initializing")!=="login.initializing"?n("login.initializing"):"Initializing..."})]}):t?Be(Mo,{severity:"error",sx:{mt:2},children:No(Pr,{variant:"body2",children:[n("login.initializationError")!=="login.initializationError"?n("login.initializationError"):"Initialization error",":"," ",t]})}):i?Be(Tn,{children:e}):Be(Mo,{severity:"warning",sx:{mt:2},children:Be(Pr,{variant:"body2",children:n("login.notInitialized")!=="login.notInitialized"?n("login.notInitialized"):"System not initialized"})})};import{jsx as se,jsxs as In}from"react/jsx-runtime";var kn=({onScreenChange:e,onExternalNavigate:r,onLoginSuccess:o,onError:t,redirectUrl:i="/",passwordRules:n})=>{let{t:l}=oe(),{state:a,setScreen:u}=rr(),{config:h}=be(),{showNotification:d}=Jr(),b=(c,s)=>{let y=s;c==="login"?y={}:c==="forgotPassword"&&!s&&(y={}),u(c,y),e?.(c,y)},w=()=>{let c={onScreenChange:b,onExternalNavigate:r,onError:t,redirectUrl:i};switch(a.currentScreen){case"forgotPassword":return se(ko,{...c});case"checkCode":return se(Uo,{...c,searchParams:a.searchParams});case"resetPassword":return se(zo,{...c,searchParams:a.searchParams,passwordRules:n,onResetSuccess:()=>{let s=l("resetPassword.successMessage");d(s,"success"),b("login")}});default:return se(To,{...c,onLoginSuccess:o})}};return In(Wo,{children:[se(Rn,{sx:{display:"flex",justifyContent:"center",mb:3},children:se("img",{src:h.logo||"https://logos.crudia.com/nocios-default.png",alt:l("login.logoAlt"),style:{width:"100%",maxWidth:"150px",height:"auto"},onError:c=>{let s=c.target;s.src="https://logos.crudia.com/nocios-default.png"}})}),!h.logo&&h.appName&&se(Sn,{variant:"h6",component:"h1",sx:{textAlign:"center",mb:2},children:h.appName}),w()]})},En=({translations:e,translationsUrl:r,language:o="en",initialScreen:t="login",autoReadFromCookies:i=!0,...n})=>{let{config:l}=be();return se(bo,{translations:e,translationsUrl:r,language:o,children:se(Yr,{config:l,children:se(Co,{config:l,initialScreen:t,autoReadFromCookies:i,children:se(kn,{...n})})})})},ul=En;import{Box as Z,Card as Ho,CardContent as Vo,Typography as ae,Chip as nr,Avatar as An,Divider as Ln,CircularProgress as Fn,Alert as $o,List as Dn,ListItem as Tr,ListItemText as Rr,ListItemIcon as Bn,Collapse as _n,IconButton as Sr}from"@mui/material";import{Person as zn,Email as On,Badge as Un,Security as Mn,Schedule as Nn,AccountCircle as Wn,ExpandMore as Hn,ExpandLess as Vn,Info as $n}from"@mui/icons-material";import{useState as jn}from"react";import{Fragment as Gn,jsx as T,jsxs as B}from"react/jsx-runtime";var Kn=({showExtendedData:e=!0,showProfileCard:r=!0,autoRefresh:o=!0})=>{let{userProfile:t,loading:i,error:n,extendedData:l,refreshProfile:a}=Zr({autoFetch:o,retryOnError:!0,maxRetries:3}),[u,h]=jn(!1);if(i)return B(Z,{display:"flex",justifyContent:"center",alignItems:"center",p:3,children:[T(Fn,{}),T(ae,{variant:"body2",sx:{ml:2},children:"Cargando perfil de usuario..."})]});if(n)return B($o,{severity:"error",action:T(Sr,{color:"inherit",size:"small",onClick:a,children:T(ae,{variant:"caption",children:"Reintentar"})}),children:["Error al cargar el perfil: ",n]});if(!t)return T($o,{severity:"warning",children:"No se encontr\xF3 informaci\xF3n del usuario"});let d=l?.displayData||{},b=l?.totalFields||0,w=f=>{if(!f)return"No disponible";try{return new Date(f).toLocaleString("es-ES",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return f}},c=(f,v)=>v==null?"No disponible":typeof v=="boolean"?v?"S\xED":"No":Array.isArray(v)?v.length>0?v.join(", "):"Ninguno":typeof v=="object"?JSON.stringify(v,null,2):String(v),s=[{key:"id",label:"ID",icon:T(Un,{})},{key:"email",label:"Email",icon:T(On,{})},{key:"username",label:"Usuario",icon:T(zn,{})},{key:"fullName",label:"Nombre completo",icon:T(Wn,{})},{key:"role",label:"Rol",icon:T(Mn,{})}],y=[{key:"firstName",label:"Nombre"},{key:"lastName",label:"Apellido"},{key:"isActive",label:"Activo"},{key:"lastLogin",label:"\xDAltimo login"},{key:"createdAt",label:"Creado"},{key:"updatedAt",label:"Actualizado"}],g=[...s.map(f=>f.key),...y.map(f=>f.key),"permissions"],m=Object.keys(d).filter(f=>!g.includes(f)).map(f=>({key:f,label:f}));return B(Z,{children:[r&&T(Ho,{sx:{mb:2},children:B(Vo,{children:[B(Z,{display:"flex",alignItems:"center",mb:2,children:[T(An,{src:d.avatar,sx:{width:56,height:56,mr:2},children:d.fullName?.[0]||d.username?.[0]||d.email?.[0]}),B(Z,{children:[T(ae,{variant:"h6",children:d.fullName||d.username||d.email}),T(ae,{variant:"body2",color:"text.secondary",children:d.role||"Usuario"}),d.isActive!==void 0&&T(nr,{label:d.isActive?"Activo":"Inactivo",color:d.isActive?"success":"error",size:"small",sx:{mt:.5}})]})]}),T(Z,{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(250px, 1fr))",gap:2,children:s.map(({key:f,label:v,icon:k})=>d[f]?B(Z,{display:"flex",alignItems:"center",children:[T(Z,{sx:{mr:1,color:"text.secondary"},children:k}),B(Z,{children:[T(ae,{variant:"caption",color:"text.secondary",children:v}),T(ae,{variant:"body2",children:c(f,d[f])})]})]},f):null)}),d.permissions&&Array.isArray(d.permissions)&&d.permissions.length>0&&B(Z,{mt:2,children:[T(ae,{variant:"caption",color:"text.secondary",display:"block",children:"Permisos"}),B(Z,{display:"flex",flexWrap:"wrap",gap:.5,mt:.5,children:[d.permissions.slice(0,5).map((f,v)=>T(nr,{label:f,size:"small",variant:"outlined"},v)),d.permissions.length>5&&T(nr,{label:`+${d.permissions.length-5} m\xE1s`,size:"small"})]})]})]})}),e&&T(Ho,{children:B(Vo,{children:[B(Z,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2,children:[B(ae,{variant:"h6",display:"flex",alignItems:"center",children:[T($n,{sx:{mr:1}}),"Informaci\xF3n Detallada"]}),T(nr,{label:`${b} campos totales`,size:"small"})]}),B(Dn,{dense:!0,children:[y.map(({key:f,label:v})=>d[f]!==void 0&&B(Tr,{divider:!0,children:[T(Bn,{children:T(Nn,{fontSize:"small"})}),T(Rr,{primary:v,secondary:f.includes("At")||f.includes("Login")?w(d[f]):c(f,d[f])})]},f)),m.length>0&&B(Gn,{children:[T(Ln,{sx:{my:1}}),T(Tr,{children:T(Rr,{primary:B(Z,{display:"flex",justifyContent:"space-between",alignItems:"center",children:[B(ae,{variant:"subtitle2",children:["Campos Personalizados (",m.length,")"]}),T(Sr,{size:"small",onClick:()=>h(!u),children:u?T(Vn,{}):T(Hn,{})})]})})}),T(_n,{in:u,children:m.map(({key:f,label:v})=>T(Tr,{sx:{pl:4},children:T(Rr,{primary:v,secondary:c(f,d[f])})},f))})]})]}),B(Z,{mt:2,display:"flex",justifyContent:"space-between",alignItems:"center",children:[B(ae,{variant:"caption",color:"text.secondary",children:["\xDAltima actualizaci\xF3n: ",w(d.updatedAt)]}),T(Sr,{size:"small",onClick:a,disabled:i,children:T(ae,{variant:"caption",children:"Actualizar"})})]})]})})]})},qn=Kn;var jo=["create","read","update","delete"],Ko=["create","read","update","delete"];import{useRef as hi}from"react";import{useTranslation as bi}from"react-i18next";import{Box as ar,Typography as Qo,Button as xi,Stack as wi,Alert as et,Divider as Ci}from"@mui/material";import{Add as vi}from"@mui/icons-material";import{forwardRef as ni}from"react";import{useTranslation as ii}from"react-i18next";import{Box as ke,FormControl as si,InputLabel as ai,Select as li,MenuItem as ci,IconButton as di,Typography as _e,FormHelperText as ui,Stack as sr,Paper as Zo,Divider as pi,Button as Ar}from"@mui/material";import{Delete as gi,SelectAll as mi,ClearAll as fi}from"@mui/icons-material";import{useState as qo,useEffect as Go,useRef as Xo}from"react";import{useTranslation as Xn}from"react-i18next";import{Box as ir,Typography as Ke,Button as Jo,Stack as kr,FormControlLabel as Jn,FormHelperText as Yo,Switch as Yn,ToggleButton as Er,ToggleButtonGroup as Zn}from"@mui/material";import{CheckCircle as Qn,Cancel as ei,SelectAll as ri,ClearAll as oi}from"@mui/icons-material";import{jsx as O,jsxs as Ce}from"react/jsx-runtime";var ti=({value:e,onChange:r,availableFields:o,error:t,disabled:i=!1})=>{let{t:n}=Xn(),[l,a]=qo("custom"),[u,h]=qo(!1),d=Xo(null);Go(()=>{u&&d.current?.scrollIntoView({behavior:"smooth",block:"start"})},[u]);let b=Xo(!1);Go(()=>{let g=e||{allow:[],owner_allow:[],deny:[]},m=new Set(o),f=(g.allow||[]).filter(p=>m.has(p)),v=(g.owner_allow||[]).filter(p=>m.has(p)),k=(g.deny||[]).filter(p=>m.has(p));o.forEach(p=>{!f.includes(p)&&!v.includes(p)&&!k.includes(p)&&k.push(p)});let z={allow:f,owner_allow:v,deny:k};JSON.stringify(z)!==JSON.stringify(g)&&r(z),f.length===o.length?a("all"):k.length===o.length?a("none"):a("custom")},[o,e]);let w=()=>{b.current=!0,r({allow:[...o],owner_allow:[],deny:[]}),a("all"),setTimeout(()=>{b.current=!1},0)},c=()=>{b.current=!0,r({allow:[],owner_allow:[],deny:[...o]}),a("none"),setTimeout(()=>{b.current=!1},0)},s=g=>e?.allow?.includes(g)?"allow":e?.owner_allow?.includes(g)?"owner_allow":"deny",y=(g,m)=>{b.current=!0;let f=new Set(e?.allow||[]),v=new Set(e?.owner_allow||[]),k=new Set(e?.deny||[]);f.delete(g),v.delete(g),k.delete(g),m==="allow"&&f.add(g),m==="owner_allow"&&v.add(g),m==="deny"&&k.add(g),r({allow:Array.from(f),owner_allow:Array.from(v),deny:Array.from(k)}),a("custom"),setTimeout(()=>{b.current=!1},0)};return o.length===0?Ce(ir,{children:[O(Ke,{variant:"body2",color:"text.secondary",sx:{mb:1},children:n("publicPolicies.fields.conditions.label")}),O(Ke,{variant:"body2",color:"text.secondary",sx:{fontStyle:"italic"},children:n("publicPolicies.fields.conditions.noFieldsAvailable")}),t&&O(Yo,{error:!0,sx:{mt:1},children:t})]}):Ce(ir,{children:[O(Ke,{variant:"body2",color:"text.secondary",sx:{mb:2},children:n("publicPolicies.fields.conditions.label")}),Ce(kr,{direction:"row",spacing:1,alignItems:"center",sx:{mb:u?3:1},children:[O(Jo,{variant:l==="all"?"contained":"outlined",startIcon:O(ri,{}),onClick:w,disabled:i,size:"small",sx:{minWidth:120,...l==="all"&&{backgroundColor:"#16a34a","&:hover":{backgroundColor:"#15803d"}}},children:n("publicPolicies.fields.conditions.allFields")}),O(Jo,{variant:l==="none"?"contained":"outlined",startIcon:O(oi,{}),onClick:c,disabled:i,size:"small",sx:{minWidth:120,...l==="none"&&{backgroundColor:"#cf222e","&:hover":{backgroundColor:"#bc1f2c"}}},children:n("publicPolicies.fields.conditions.noFields")}),O(ir,{sx:{display:"flex",alignItems:"center",px:1.5,py:.35,borderRadius:"999px",backgroundColor:"#f3f4f6",border:"1px solid #d1d9e0"},children:O(Jn,{control:O(Yn,{size:"small",checked:u,onChange:()=>h(g=>!g),disabled:i,color:"primary",sx:{transform:"scale(1.15)",transformOrigin:"center",m:0}}),label:n("publicPolicies.fields.conditions.customEdit"),labelPlacement:"end",sx:{ml:0,".MuiFormControlLabel-label":{fontSize:"0.75rem"}}})})]}),u&&Ce(ir,{ref:d,sx:{p:2,border:"1px solid #d1d9e0",borderRadius:1,backgroundColor:"#f6f8fa"},children:[O(Ke,{variant:"body2",color:"text.secondary",sx:{mb:2},children:n("publicPolicies.fields.conditions.help")}),O(kr,{spacing:1,children:o.map(g=>{let m=s(g);return Ce(kr,{direction:"row",spacing:1,alignItems:"center",children:[O(Ke,{variant:"body2",sx:{minWidth:100,fontFamily:"monospace"},children:g}),Ce(Zn,{value:m,exclusive:!0,size:"small",children:[Ce(Er,{value:"allow",onClick:()=>y(g,"allow"),disabled:i,sx:{px:2,color:m==="allow"?"#ffffff":"#6b7280",backgroundColor:m==="allow"?"#16a34a":"#f3f4f6",borderColor:m==="allow"?"#16a34a":"#d1d5db","&:hover":{backgroundColor:m==="allow"?"#15803d":"#e5e7eb",borderColor:m==="allow"?"#15803d":"#9ca3af"},"&.Mui-selected":{backgroundColor:"#16a34a",color:"#ffffff","&:hover":{backgroundColor:"#15803d"}}},children:[O(Qn,{sx:{fontSize:16,mr:.5}}),n("publicPolicies.fields.conditions.states.allow")]}),O(Er,{value:"owner_allow",onClick:()=>y(g,"owner_allow"),disabled:i,sx:{px:2,color:m==="owner_allow"?"#ffffff":"#6b7280",backgroundColor:m==="owner_allow"?"#0ea5e9":"#f3f4f6",borderColor:m==="owner_allow"?"#0ea5e9":"#d1d5db","&:hover":{backgroundColor:m==="owner_allow"?"#0284c7":"#e5e7eb",borderColor:m==="owner_allow"?"#0284c7":"#9ca3af"},"&.Mui-selected":{backgroundColor:"#0ea5e9",color:"#ffffff","&:hover":{backgroundColor:"#0284c7"}}},children:n("publicPolicies.fields.conditions.states.ownerAllow")}),Ce(Er,{value:"deny",onClick:()=>y(g,"deny"),disabled:i,sx:{px:2,color:m==="deny"?"#ffffff":"#6b7280",backgroundColor:m==="deny"?"#dc2626":"#f3f4f6",borderColor:m==="deny"?"#dc2626":"#d1d5db","&:hover":{backgroundColor:m==="deny"?"#b91c1c":"#e5e7eb",borderColor:m==="deny"?"#b91c1c":"#9ca3af"},"&.Mui-selected":{backgroundColor:"#dc2626",color:"#ffffff","&:hover":{backgroundColor:"#b91c1c"}}},children:[O(ei,{sx:{fontSize:16,mr:.5}}),n("publicPolicies.fields.conditions.states.deny")]})]})]},g)})})]}),t&&O(Yo,{error:!0,sx:{mt:1},children:t})]})},Ir=ti;import{jsx as U,jsxs as j}from"react/jsx-runtime";var yi=ni(({policy:e,onChange:r,onRemove:o,availableFields:t,isSubmitting:i=!1,usedActions:n,error:l},a)=>{let{t:u}=ii(),h=new Set(Array.from(n||[]));h.delete(e.action);let d=jo.map(b=>({value:b,label:u(`publicPolicies.fields.action.options.${b}`)}));return j(Zo,{ref:a,sx:{p:3,border:"1px solid #d1d9e0",borderRadius:2,position:"relative",backgroundColor:"#ffffff"},children:[j(ke,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",mb:3},children:[U(_e,{variant:"subtitle1",sx:{fontWeight:600,color:"#111418",fontSize:"1rem"},children:u("publicPolicies.policyTitle")}),U(di,{onClick:o,size:"small",disabled:i,"aria-label":u("publicPolicies.removePolicy"),sx:{color:"#656d76","&:hover":{color:"#cf222e",backgroundColor:"rgba(207, 34, 46, 0.1)"}},children:U(gi,{})})]}),j(sr,{spacing:1,children:[U(sr,{direction:{xs:"column",md:"row"},spacing:2,children:U(ke,{sx:{flex:1,minWidth:200},children:j(si,{fullWidth:!0,children:[U(ai,{children:u("publicPolicies.fields.action.label")}),U(li,{value:e.action,label:u("publicPolicies.fields.action.label"),disabled:i,onChange:b=>{let w=b.target.value,c={...e,action:w};w==="delete"?(c.permission="deny",delete c.fields):(c.fields={allow:[],owner_allow:[],deny:t},delete c.permission),r(c)},sx:{backgroundColor:"#ffffff","&:hover .MuiOutlinedInput-notchedOutline":{borderColor:"#8c959f"},"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"#0969da",borderWidth:2}},children:d.map(b=>{let w=h.has(b.value);return U(ci,{value:b.value,disabled:w,children:b.label},b.value)})}),l&&U(ui,{error:!0,children:l})]})})}),e.action==="delete"?j(ke,{children:[U(_e,{variant:"body2",color:"text.secondary",sx:{mb:2},children:u("publicPolicies.fields.conditions.label")}),j(sr,{direction:"row",spacing:1,sx:{mb:1},children:[U(Ar,{variant:e.permission==="*"?"contained":"outlined",startIcon:U(mi,{}),onClick:()=>r({...e,permission:"*"}),disabled:i,size:"small",sx:{minWidth:140,whiteSpace:"nowrap",...e.permission==="*"&&{backgroundColor:"#16a34a","&:hover":{backgroundColor:"#15803d"}}},children:u("publicPolicies.fields.conditions.allFields")}),U(Ar,{variant:e.permission==="owner"?"contained":"outlined",onClick:()=>r({...e,permission:"owner"}),disabled:i,size:"small",sx:{minWidth:140,whiteSpace:"nowrap",...e.permission==="owner"&&{backgroundColor:"#0ea5e9","&:hover":{backgroundColor:"#0284c7"}}},children:u("publicPolicies.fields.conditions.states.ownerAllow")}),U(Ar,{variant:e.permission==="deny"?"contained":"outlined",startIcon:U(fi,{}),onClick:()=>r({...e,permission:"deny"}),disabled:i,size:"small",sx:{minWidth:140,whiteSpace:"nowrap",...e.permission==="deny"&&{backgroundColor:"#cf222e","&:hover":{backgroundColor:"#bc1f2c"}}},children:u("publicPolicies.fields.conditions.noFields")})]})]}):U(Ir,{value:e.fields||{allow:[],owner_allow:[],deny:[]},onChange:b=>r({...e,fields:b}),availableFields:t,disabled:i}),U(Zo,{variant:"outlined",sx:{p:2,backgroundColor:"#f9fafb"},children:e.action==="delete"?j(_e,{variant:"body2",sx:{fontFamily:"monospace",color:"text.secondary"},children:[j(ke,{component:"span",sx:{color:e.permission==="*"?"#16a34a":e.permission==="owner"?"#0ea5e9":"#dc2626"},children:[u("publicPolicies.fields.conditions.states.allow"),":"]})," ",e.permission||"-"]}):j(sr,{spacing:.5,divider:U(pi,{sx:{borderColor:"#e5e7eb"}}),children:[j(_e,{variant:"body2",sx:{fontFamily:"monospace",color:"text.secondary"},children:[j(ke,{component:"span",sx:{color:"#16a34a"},children:[u("publicPolicies.fields.conditions.states.allow"),":"]})," ",(e?.fields?.allow||[]).join(", ")||"-"]}),j(_e,{variant:"body2",sx:{fontFamily:"monospace",color:"text.secondary"},children:[j(ke,{component:"span",sx:{color:"#0ea5e9"},children:[u("publicPolicies.fields.conditions.states.ownerAllow"),":"]})," ",(e?.fields?.owner_allow||[]).join(", ")||"-"]}),j(_e,{variant:"body2",sx:{fontFamily:"monospace",color:"text.secondary"},children:[j(ke,{component:"span",sx:{color:"#dc2626"},children:[u("publicPolicies.fields.conditions.states.deny"),":"]})," ",(e?.fields?.deny||[]).join(", ")||"-"]})]})})]})]})}),Lr=yi;import{Fragment as Ri,jsx as ue,jsxs as lr}from"react/jsx-runtime";var Pi=()=>typeof globalThis<"u"&&globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`,Ti=({policies:e,onChange:r,availableFields:o,errors:t,isSubmitting:i=!1})=>{let{t:n}=bi(),l=hi({}),a=new Set((e||[]).map(s=>s.action).filter(Boolean)),u=Ko.filter(s=>!a.has(s)),h=u.length>0,d=()=>{let s=u[0]||"create",y={id:Pi(),action:s};s==="delete"?y.permission="deny":y.fields={allow:[],owner_allow:[],deny:o};let g=[...e||[],y];r(g),setTimeout(()=>{let m=g.length-1,f=l.current[m];f&&f.scrollIntoView({behavior:"smooth",block:"center"})},100)},b=s=>{let y=[...e];y.splice(s,1),r(y)},w=(()=>{if(!t)return null;if(typeof t=="string")return t;let s=t._error;return typeof s=="string"?s:null})(),c=new Set((e||[]).map(s=>s.action));return lr(Ri,{children:[ue(Ci,{sx:{borderColor:"#e0e4e7"}}),lr(ar,{children:[ue(ar,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:3,children:lr(ar,{children:[ue(Qo,{variant:"h6",sx:{fontWeight:600,color:"#111418",mb:1},children:n("publicPolicies.title")}),ue(Qo,{variant:"body2",color:"text.secondary",sx:{fontSize:"0.875rem"},children:n("publicPolicies.description")})]})}),w&&ue(et,{severity:"error",sx:{mb:3},children:w}),lr(wi,{spacing:3,children:[(e||[]).length===0?ue(et,{severity:"info",children:n("publicPolicies.noPolicies")}):e.map((s,y)=>ue(Lr,{ref:g=>{l.current[y]=g},policy:s,onChange:g=>{let m=[...e];m[y]=g,r(m)},onRemove:()=>b(y),availableFields:o,isSubmitting:i,usedActions:c,error:typeof t=="object"&&t!==null&&!("_error"in t)&&s.id in t?t[s.id]:void 0},s.id)),h&&ue(ar,{children:ue(xi,{type:"button",variant:"outlined",startIcon:ue(vi,{}),onClick:d,disabled:i,sx:{borderColor:"#d0d7de",color:"#656d76","&:hover":{borderColor:"#8c959f",backgroundColor:"transparent"}},children:n("publicPolicies.addPolicy")})})]})]})]})},Xl=Ti;import{useState as Fr}from"react";import{Button as cr,TextField as rt,Box as ze,Alert as qe,Typography as ve,CircularProgress as Dr}from"@mui/material";import{jsx as _,jsxs as me}from"react/jsx-runtime";function oc(){let[e,r]=Fr(""),[o,t]=Fr(""),[i,n]=Fr(!1),{isAuthenticated:l,isLoading:a,error:u,login:h,logout:d,refreshTokens:b,clearError:w,isExpiringSoon:c,expiresIn:s}=be(),y=async f=>{if(f.preventDefault(),!e||!o)return;(await h(e,o)).success&&(r(""),t(""),n(!1))},g=async()=>{await d()},m=async()=>{await b()};return l?me(ze,{sx:{maxWidth:600,mx:"auto",p:3},children:[_(ve,{variant:"h4",gutterBottom:!0,children:"Welcome! \u{1F389}"}),_(qe,{severity:"success",sx:{mb:3},children:"You are successfully logged in with Refresh Token Pattern enabled"}),me(ze,{sx:{mb:3,p:2,bgcolor:"background.paper",border:1,borderColor:"divider",borderRadius:1},children:[_(ve,{variant:"h6",gutterBottom:!0,children:"Token Status"}),me(ve,{variant:"body2",color:"text.secondary",children:["Access Token expires in: ",Math.round(s/1e3/60)," minutes"]}),c&&_(qe,{severity:"warning",sx:{mt:1},children:"Token expires soon - automatic refresh will happen"})]}),me(ze,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[_(cr,{variant:"contained",onClick:m,disabled:a,startIcon:a?_(Dr,{size:16}):null,children:"Refresh Tokens"}),_(cr,{variant:"outlined",color:"error",onClick:g,disabled:a,children:"Logout"})]}),u&&_(qe,{severity:"error",sx:{mt:2},onClose:w,children:u})]}):me(ze,{sx:{maxWidth:400,mx:"auto",p:3},children:[_(ve,{variant:"h4",gutterBottom:!0,align:"center",children:"Login with Refresh Tokens"}),_(qe,{severity:"info",sx:{mb:3},children:"This demo shows the new Refresh Token Pattern with automatic session management"}),i?me("form",{onSubmit:y,children:[_(rt,{fullWidth:!0,label:"Email",type:"email",value:e,onChange:f=>r(f.target.value),margin:"normal",required:!0,autoComplete:"email"}),_(rt,{fullWidth:!0,label:"Password",type:"password",value:o,onChange:f=>t(f.target.value),margin:"normal",required:!0,autoComplete:"current-password"}),_(cr,{type:"submit",fullWidth:!0,variant:"contained",size:"large",disabled:a,startIcon:a?_(Dr,{size:16}):null,sx:{mt:3,mb:2},children:a?"Logging in...":"Login"})]}):_(cr,{fullWidth:!0,variant:"contained",size:"large",onClick:()=>n(!0),sx:{mt:2},children:"Show Login Form"}),u&&_(qe,{severity:"error",sx:{mt:2},onClose:w,children:u})]})}function tc(){let{isAuthenticated:e,isLoading:r,isExpiringSoon:o,expiresIn:t}=be();return r?me(ze,{sx:{display:"flex",alignItems:"center",gap:1},children:[_(Dr,{size:16}),_(ve,{variant:"caption",children:"Loading session..."})]}):e?me(ze,{children:[_(ve,{variant:"caption",color:"success.main",children:"\u2713 Authenticated"}),o&&me(ve,{variant:"caption",color:"warning.main",display:"block",children:["\u26A0 Token expires in ",Math.round(t/1e3/60)," min"]})]}):_(ve,{variant:"caption",color:"text.secondary",children:"Not logged in"})}import Si from"@mui/material/TextField";import ki from"@mui/material/CircularProgress";import ot from"@mui/material/InputAdornment";import Ei from"@mui/material/IconButton";import Ii from"@mui/icons-material/Refresh";import{jsx as Pe}from"react/jsx-runtime";var Ai=e=>e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/javascript:/gi,"").replace(/on\w+\s*=/gi,"").replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi,""),Li=({html:e})=>Pe("span",{dangerouslySetInnerHTML:{__html:Ai(e)}}),pc=({config:e,value:r,onChange:o,label:t,error:i=!1,helperText:n,readOnly:l=!1,disabled:a=!1})=>{let{value:u,loading:h,error:d,regenerate:b}=Qr(e,{autoFetch:!r,onSuccess:m=>{o?.(m)}}),w=r||u,c=i||!!d,s=d||n,y=c&&s&&(s.toLowerCase().includes("duplicate")||s.toLowerCase().includes("duplicado")||s.toLowerCase().includes("duplicada")||s.toLowerCase().includes("unique")||s.toLowerCase().includes("\xFAnico")||s.toLowerCase().includes("unico")||s.toLowerCase().includes("\xFAnica")||s.toLowerCase().includes("unica")||s.toLowerCase().includes("already exists")||s.toLowerCase().includes("ya existe")||s.toLowerCase().includes("e11000"));return Pe(Si,{label:t,fullWidth:!0,value:w,error:c,helperText:s?Pe(Li,{html:s}):" ",disabled:a,InputProps:{readOnly:!0,startAdornment:h?Pe(ot,{position:"start",children:Pe(ki,{size:20})}):void 0,endAdornment:y&&!h?Pe(ot,{position:"end",children:Pe(Ei,{edge:"end",onClick:async()=>{!a&&!h&&await b()},disabled:a,size:"small",color:"error","aria-label":"regenerar c\xF3digo",title:"Regenerar c\xF3digo",children:Pe(Ii,{})})}):void 0}})};import Br,{useCallback as fe,useRef as tt,useState as Ge}from"react";import Ee from"@mui/material/Box";import Te from"@mui/material/Typography";import _r from"@mui/material/IconButton";import Fi from"@mui/material/LinearProgress";import dr from"@mui/material/CircularProgress";import it from"@mui/material/Chip";import Di from"@mui/material/Paper";import Bi from"@mui/material/List";import _i from"@mui/material/ListItem";import zi from"@mui/material/ListItemText";import Oi from"@mui/material/ListItemSecondaryAction";import Ui from"@mui/material/FormHelperText";import Mi from"@mui/material/Dialog";import Ni from"@mui/material/DialogTitle";import Wi from"@mui/material/DialogContent";import Hi from"@mui/material/DialogActions";import nt from"@mui/material/Button";import Vi from"@mui/icons-material/CloudUpload";import $i from"@mui/icons-material/InsertDriveFile";import ji from"@mui/icons-material/Image";import Ki from"@mui/icons-material/PictureAsPdf";import qi from"@mui/icons-material/Delete";import Gi from"@mui/icons-material/Refresh";import Xi from"@mui/icons-material/Restore";import Ji from"@mui/icons-material/CheckCircle";import Yi from"@mui/icons-material/Error";import $c from"@mui/icons-material/BrokenImage";import{jsx as P,jsxs as pe}from"react/jsx-runtime";var Zi=e=>e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/javascript:/gi,"").replace(/on\w+\s*=/gi,"").replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi,""),Qi=e=>{if(e===0)return"0 B";let r=1024,o=["B","KB","MB","GB"],t=Math.floor(Math.log(e)/Math.log(r));return`${parseFloat((e/Math.pow(r,t)).toFixed(1))} ${o[t]}`},es=e=>e.startsWith("image/")?P(ji,{color:"primary"}):e==="application/pdf"?P(Ki,{color:"error"}):P($i,{color:"action"}),rs=(e,r)=>{switch(e){case"completed":return P(Ji,{color:"success",fontSize:"small"});case"error":return P(Yi,{color:"error",fontSize:"small"});case"uploading":case"pending":return P(dr,{size:16});case"removing":return P(dr,{size:16,color:"error"});case"pendingDeletion":return P(it,{label:r("base.file.pendingDeletion"),size:"small",color:"warning",variant:"outlined",sx:{fontSize:"0.65rem",height:20}});default:return null}},os=({file:e,baseUrl:r,disabled:o,onRemove:t,onRestore:i,onRetry:n})=>{let{t:l}=Me(),[a,u]=Ge(!1),h=e.status==="pendingDeletion",d=!o&&e.status!=="uploading"&&e.status!=="removing"&&!h,b=!o&&h,w=!o&&e.status==="error"&&e.file,c=e.contentType.startsWith("image/"),s=e.visibility==="public"||e.filePath?.startsWith("public/")||e.filePath?.startsWith(r),g=!e.filePath||!s?null:e.filePath.startsWith("http://")||e.filePath.startsWith("https://")||e.filePath.startsWith(r)?e.filePath:`${r}${e.filePath}`,m=e.status==="completed"&&g,f=()=>c&&m&&!a?P(Ee,{component:m?"a":"div",href:g||void 0,target:"_blank",rel:"noopener noreferrer",sx:{width:48,height:48,borderRadius:1,overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"center",bgcolor:"grey.100",border:"1px solid",borderColor:"divider",cursor:m?"pointer":"default",transition:"all 0.2s ease",flexShrink:0,"&:hover":m?{borderColor:"primary.main",transform:"scale(1.05)"}:{}},children:P("img",{src:g,alt:e.name,style:{width:"100%",height:"100%",objectFit:"cover"},onError:()=>u(!0)})}):P(Ee,{component:m?"a":"div",href:g||void 0,target:"_blank",rel:"noopener noreferrer",sx:{width:48,height:48,borderRadius:1,display:"flex",alignItems:"center",justifyContent:"center",bgcolor:"grey.50",border:"1px solid",borderColor:"divider",cursor:m?"pointer":"default",transition:"all 0.2s ease",flexShrink:0,textDecoration:"none","&:hover":m?{borderColor:"primary.main",bgcolor:"action.hover"}:{}},children:es(e.contentType)});return pe(_i,{sx:{borderRadius:1,mb:.5,bgcolor:e.status==="error"?"error.lighter":"background.paper",border:"1px solid",borderColor:e.status==="error"?"error.light":"divider",gap:1.5},children:[f(),P(zi,{primary:pe(Ee,{sx:{display:"flex",alignItems:"center",gap:1},children:[P(Te,{variant:"body2",noWrap:!0,sx:{maxWidth:200,overflow:"hidden",textOverflow:"ellipsis",textDecoration:h?"line-through":"none",opacity:h?.6:1},children:e.name}),rs(e.status,l)]}),secondary:pe(Ee,{sx:{opacity:h?.6:1},children:[e.size>0&&P(Te,{variant:"caption",color:"text.secondary",children:Qi(e.size)}),e.status==="uploading"&&P(Fi,{variant:"determinate",value:e.progress,sx:{mt:.5,height:4,borderRadius:2}}),e.status==="error"&&e.errorMessage&&P(Te,{variant:"caption",color:"error",display:"block",children:e.errorMessage}),m&&P(Te,{variant:"caption",color:"primary",display:"block",component:"a",href:g||void 0,target:"_blank",rel:"noopener noreferrer",sx:{cursor:"pointer",textDecoration:"underline","&:hover":{textDecoration:"none"}},children:l(c?"base.file.clickToPreview":"base.file.clickToDownload")})]})}),pe(Oi,{children:[w&&P(_r,{edge:"end",size:"small",onClick:()=>n(e.id),color:"primary",title:l("base.file.restore"),children:P(Gi,{fontSize:"small"})}),b&&P(_r,{edge:"end",size:"small",onClick:()=>i(e.id),color:"primary",title:l("base.file.restore"),children:P(Xi,{fontSize:"small"})}),d&&P(_r,{edge:"end",size:"small",onClick:()=>t(e.id),color:"error",title:l("base.file.delete"),children:P(qi,{fontSize:"small"})})]})]})};var qc=({label:e,accept:r,maxFileSize:o=10*1024*1024,multiple:t=!1,maxFiles:i,minFiles:n=0,required:l=!1,disabled:a=!1,error:u=!1,helperText:h,onChange:d,onValidation:b,initialFiles:w,placeholder:c,showFileList:s=!0,visibility:y="private",showPreview:g=!0,baseUrl:m,onDeletionHandlersReady:f,mode:v="create"})=>{let{t:k}=Me(),z=tt(null),[p,C]=Ge(!1),[I,A]=Ge(!1),[Y,le]=Ge(null),[Q,ne]=Ge(!1),Oe=t?i:1,Ie=l?Math.max(n,1):n,H={acceptedTypes:r,maxFileSize:o,maxFiles:Oe,minFiles:Ie,visibility:y,mode:v,onFilesChange:L=>{let ce=L.filter(Je=>Je.status==="completed"&&Je.filePath).map(Je=>{let gr=Je.filePath;return gr.startsWith("/")?gr:`/${gr}`});d?.(ce)}},{files:V,isUploading:ee,addFiles:R,removeFile:S,restoreFile:W,retryUpload:ie,isValid:re,validationError:Ue,validationErrorKey:Re,validationErrorParams:Ae,initializeFiles:Xe,isTouched:Or,markAsTouched:E,isSubmitted:D,markAsSubmitted:M,getPreviewUrl:q,commitDeletions:G,restorePendingDeletions:X,hasPendingDeletions:ye,deleteFileImmediately:Ur,activeFiles:Ps,activeFileCount:ct,waitForUploads:Mr,completedFilePaths:Nr}=eo(H),Wr=fe(()=>Nr,[Nr]),Hr=tt(!1);Br.useEffect(()=>{w&&w.length>0&&!Hr.current&&(Hr.current=!0,Xe(w,m))},[w,Xe,m]),Br.useEffect(()=>{b?.(re,Ue)},[re,Ue,b]),Br.useEffect(()=>{f?.({commitDeletions:G,restorePendingDeletions:X,hasPendingDeletions:ye,markAsSubmitted:M,isValid:re,isUploading:ee,waitForUploads:Mr,getCompletedFilePaths:Wr})},[f,G,X,ye,M,re,ee,Mr,Wr]);let dt=fe(L=>{E();let ce=L.target.files;ce&&ce.length>0&&R(ce),z.current&&(z.current.value="")},[R,E]),ut=fe(()=>{a||z.current?.click()},[a]),pt=fe(L=>{L.preventDefault(),L.stopPropagation(),a||C(!0)},[a]),gt=fe(L=>{L.preventDefault(),L.stopPropagation(),C(!1)},[]),mt=fe(L=>{if(L.preventDefault(),L.stopPropagation(),C(!1),a)return;E();let ce=L.dataTransfer.files;ce&&ce.length>0&&R(ce)},[a,R,E]),ft=fe(async L=>{(await S(L)).needsConfirmation&&(le(L),A(!0))},[S]),yt=fe(async()=>{if(Y){ne(!0);try{let L=await Ur(Y);L.success||x.error("Error deleting file",{error:L.error})}finally{ne(!1),A(!1),le(null)}}},[Y,Ur]),Vr=fe(()=>{A(!1),le(null)},[]),ht=r?.join(",")||"",bt=!a&&(t||ct===0),$r=D&&!re,pr=u||$r,jr=h||($r&&Re?k(Re,Ae):null);return pe(Ee,{sx:{width:"100%"},children:[e&&pe(Te,{variant:"body2",sx:{mb:1,fontWeight:500,color:pr?"error.main":"text.primary"},children:[e,l&&P("span",{style:{color:"red"},children:" *"})]}),P("input",{ref:z,type:"file",accept:ht,multiple:t,onChange:dt,disabled:a,style:{display:"none"}}),bt&&pe(Di,{variant:"outlined",onClick:ut,onDragOver:pt,onDragLeave:gt,onDrop:mt,sx:{p:3,textAlign:"center",cursor:a?"not-allowed":"pointer",borderStyle:"dashed",borderWidth:2,borderColor:p?"primary.main":pr?"error.main":"divider",bgcolor:p?"primary.lighter":a?"action.disabledBackground":"background.paper",transition:"all 0.2s ease","&:hover":a?{}:{borderColor:"primary.main",bgcolor:"action.hover"}},children:[P(Vi,{sx:{fontSize:48,color:p?"primary.main":a?"action.disabled":"action.active",mb:1}}),P(Te,{variant:"body2",color:a?"text.disabled":"text.secondary",children:c||k(p?"base.file.dropHere":"base.file.dragOrClick")}),r&&r.length>0&&!p&&P(Ee,{sx:{mt:1,display:"flex",gap:.5,justifyContent:"center",flexWrap:"wrap"},children:r.map(L=>P(it,{label:L.split("/")[1]?.toUpperCase()||L,size:"small",variant:"outlined",sx:{fontSize:"0.7rem"}},L))})]}),s&&V.length>0&&P(Bi,{dense:!0,sx:{mt:1,p:0},children:V.map(L=>P(os,{file:L,baseUrl:m,disabled:a,onRemove:ft,onRestore:W,onRetry:ie},L.id))}),ee&&pe(Ee,{sx:{display:"flex",alignItems:"center",gap:1,mt:1},children:[P(dr,{size:16}),P(Te,{variant:"caption",color:"text.secondary",children:k("base.file.uploading")})]}),jr&&P(Ui,{error:pr,sx:{mt:.5},dangerouslySetInnerHTML:{__html:Zi(jr)}}),pe(Mi,{open:I,onClose:Q?void 0:Vr,children:[P(Ni,{children:k("base.file.confirmDelete.title")}),P(Wi,{children:P(Te,{children:k("base.file.confirmDelete.message")})}),pe(Hi,{children:[P(nt,{onClick:Vr,disabled:Q,children:k("base.file.confirmDelete.cancel")}),P(nt,{onClick:yt,color:"error",variant:"contained",disabled:Q,startIcon:Q?P(dr,{size:16,color:"inherit"}):void 0,children:k(Q?"base.file.deleting":"base.file.confirmDelete.confirm")})]})]})]})};import{useCallback as ts,useRef as ns,useEffect as is}from"react";import st from"@mui/material/Box";import at from"@mui/material/Typography";import lt from"@mui/material/FormHelperText";import{MDXEditor as ss,headingsPlugin as as,listsPlugin as ls,quotePlugin as cs,thematicBreakPlugin as ds,markdownShortcutPlugin as us,linkPlugin as ps,linkDialogPlugin as gs,tablePlugin as ms,toolbarPlugin as fs,UndoRedo as ys,BoldItalicUnderlineToggles as hs,BlockTypeSelect as bs,CreateLink as xs,InsertTable as ws,ListsToggle as Cs,Separator as ur}from"@mdxeditor/editor";import"@mdxeditor/editor/style.css";import{Fragment as vs,jsx as K,jsxs as zr}from"react/jsx-runtime";var td=({label:e,value:r="",onChange:o,required:t=!1,disabled:i=!1,error:n=!1,helperText:l,placeholder:a="Write here...",minHeight:u=200,maxHeight:h=500})=>{let d=ns(null);is(()=>{d.current&&d.current.getMarkdown()!==r&&d.current.setMarkdown(r||"")},[r]);let b=ts(w=>{o?.(w)},[o]);return zr(st,{sx:{width:"100%"},children:[e&&zr(at,{component:"label",sx:{display:"block",mb:.5,fontSize:"0.875rem",fontWeight:500,color:n?"error.main":"text.primary"},children:[e,t&&K(at,{component:"span",color:"error.main",sx:{ml:.5},children:"*"})]}),K(st,{sx:{border:1,borderColor:n?"error.main":"divider",borderRadius:1,overflow:"hidden",opacity:i?.6:1,pointerEvents:i?"none":"auto","& .mdxeditor":{minHeight:u,maxHeight:h,overflow:"auto"},"& .mdxeditor-toolbar":{borderBottom:1,borderColor:"divider",backgroundColor:"background.default"},"& .mdxeditor-root-contenteditable":{padding:2,minHeight:u-50}},children:K(ss,{ref:d,markdown:r||"",onChange:b,placeholder:a,readOnly:i,plugins:[as(),ls(),cs(),ds(),us(),ps(),gs(),ms(),fs({toolbarContents:()=>zr(vs,{children:[K(ys,{}),K(ur,{}),K(hs,{}),K(ur,{}),K(bs,{}),K(ur,{}),K(Cs,{}),K(ur,{}),K(xs,{}),K(ws,{})]})})]})}),l&&K(lt,{error:n,sx:{mx:0,mt:.5},children:l}),!l&&K(lt,{sx:{mx:0,mt:.5},children:"\xA0"})]})};export{ge as a,Rs as b,Ss as c,mr as d,Ze as e,Us as f,Me as g,ao as h,lo as i,Hs as j,uo as k,po as l,go as m,mo as n,ul as o,qn as p,jo as q,Ko as r,Xl as s,oc as t,tc as u,pc as v,qc as w,td as x};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk6ONAT4QUjs = require('./chunk-6ONAT4QU.js');var _chunkNSV6ECYOjs = require('./chunk-NSV6ECYO.js');var _chunkCR5KJUSTjs = require('./chunk-CR5KJUST.js');var ge={es:{},en:{}},Rs= exports.b =()=>Object.keys(ge),Ss= exports.c =e=>ge[e]||ge.es;var _crudifysdk = require('@nocios/crudify-sdk'); var _crudifysdk2 = _interopRequireDefault(_crudifysdk);var ro="crudify_translations_",xt=3600*1e3;function oo(e){let r=0;for(let o=0;o<e.length;o++){let t=e.charCodeAt(o);r=(r<<5)-r+t,r=r&r}return Math.abs(r).toString(36)}var mr=class e{constructor(){this.enableDebug=!1;this.initializationPromise=null;this.isInitialized=!1}static getInstance(){return e.instance||(e.instance=new e),e.instance}setDebug(r){this.enableDebug=r}async ensureCrudifyInitialized(r,o){if(!this.isInitialized)return this.initializationPromise?(this.enableDebug&&_chunkCR5KJUSTjs.a.debug("[TranslationService] Waiting for crudify initialization..."),this.initializationPromise):(this.enableDebug&&_chunkCR5KJUSTjs.a.debug("[TranslationService] Initializing crudify SDK..."),this.initializationPromise=(async()=>{try{let t=_crudifysdk2.default.getTokenData();if(t&&t.endpoint){this.enableDebug&&_chunkCR5KJUSTjs.a.debug("[TranslationService] Crudify already initialized"),this.isInitialized=!0;return}_crudifysdk2.default.config(o);let i=await _crudifysdk2.default.init(r,this.enableDebug?"debug":"none");if(i.success===!1)throw new Error(`Failed to initialize crudify: ${JSON.stringify(i.errors||"Unknown error")}`);this.isInitialized=!0,this.enableDebug&&_chunkCR5KJUSTjs.a.debug("[TranslationService] Crudify SDK initialized successfully")}catch(t){throw _chunkCR5KJUSTjs.a.error("[TranslationService] Failed to initialize crudify",t instanceof Error?t:{message:String(t)}),this.initializationPromise=null,t}})(),this.initializationPromise)}async fetchTranslations(r){let{apiKey:o,featureKeys:t,crudifyEnv:i="stg",urlTranslations:n}=r;this.enableDebug&&_chunkCR5KJUSTjs.a.debug("[TranslationService] fetchTranslations called with:",{apiKeyHash:oo(o),crudifyEnv:i,featureKeys:t,hasUrlTranslations:!!n});let l=this.getFromCache(o),a=l?this.isCacheExpired(l):!0;if(l&&!a)return this.enableDebug&&_chunkCR5KJUSTjs.a.debug("[TranslationService] Using cached translations"),this.mergeWithUrlTranslations(l.data.translations,n);try{await this.ensureCrudifyInitialized(o,i)}catch(u){return _chunkCR5KJUSTjs.a.error("[TranslationService] Failed to initialize crudify",u instanceof Error?u:{message:String(u)}),l?(_chunkCR5KJUSTjs.a.warn("[TranslationService] Using expired cache (init failed)"),this.mergeWithUrlTranslations(l.data.translations,n)):(_chunkCR5KJUSTjs.a.warn("[TranslationService] Using critical bundle (init failed)"),this.getCriticalTranslationsOnly())}try{this.enableDebug&&_chunkCR5KJUSTjs.a.debug("[TranslationService] Fetching from API via crudify SDK");let u=await this.fetchFromAPI(t);this.hasDataChanged(l,u)||!l?this.saveToCache(o,u):this.refreshCacheTimestamp(o);let d=this.mergeWithUrlTranslations(u.translations,n);return this.enableDebug&&_chunkCR5KJUSTjs.a.debug("[TranslationService] Translations loaded:",{languages:Object.keys(d),keysCount:d[Object.keys(d)[0]]?Object.keys(d[Object.keys(d)[0]]).length:0}),d}catch(u){return _chunkCR5KJUSTjs.a.error("[TranslationService] API fetch failed",u instanceof Error?u:{message:String(u)}),l?(_chunkCR5KJUSTjs.a.warn("[TranslationService] Using expired cache as fallback"),this.mergeWithUrlTranslations(l.data.translations,n)):(_chunkCR5KJUSTjs.a.warn("[TranslationService] Using critical bundle translations"),this.getCriticalTranslationsOnly())}}async fetchFromAPI(r){let o=await _crudifysdk2.default.getTranslation(r);if(!o.success)throw new Error(`Crudify API error: ${o.errors?JSON.stringify(o.errors):"Unknown error"}`);if(!o.data)throw new Error("No translation data in response");return o.data}mergeWithUrlTranslations(r,o){if(!o||Object.keys(o).length===0)return r;let t={};return Object.keys(r).forEach(i=>{t[i]={...r[i],...o}}),t}hasDataChanged(r,o){if(!r||r.data.timestamp!==o.timestamp)return!0;let t=this.hashData(o.translations);return r.dataHash!==t}hashData(r){let o=JSON.stringify(r),t=0;for(let i=0;i<o.length;i++){let n=o.charCodeAt(i);t=(t<<5)-t+n,t=t&t}return t.toString(36)}saveToCache(r,o){try{let t=this.getCacheKey(r),i={data:o,cachedAt:Date.now(),dataHash:this.hashData(o.translations)};localStorage.setItem(t,JSON.stringify(i)),this.enableDebug&&_chunkCR5KJUSTjs.a.debug("[TranslationService] Saved to cache:",{cacheKey:t})}catch(t){_chunkCR5KJUSTjs.a.error("[TranslationService] Failed to save cache",t instanceof Error?t:{message:String(t)})}}getFromCache(r){try{let o=this.getCacheKey(r),t=localStorage.getItem(o);return t?JSON.parse(t):null}catch(o){return _chunkCR5KJUSTjs.a.error("[TranslationService] Failed to read cache",o instanceof Error?o:{message:String(o)}),null}}refreshCacheTimestamp(r){try{let o=this.getFromCache(r);if(o){o.cachedAt=Date.now();let t=this.getCacheKey(r);localStorage.setItem(t,JSON.stringify(o))}}catch(o){_chunkCR5KJUSTjs.a.error("[TranslationService] Failed to refresh cache timestamp",o instanceof Error?o:{message:String(o)})}}isCacheExpired(r){return Date.now()-r.cachedAt>xt}hasValidCache(r){let o=this.getFromCache(r);return o?!this.isCacheExpired(o):!1}getCacheKey(r){return`${ro}${oo(r)}`}getCriticalTranslationsOnly(){return ge}invalidateCache(r){let o=this.getCacheKey(r);localStorage.removeItem(o),this.enableDebug&&_chunkCR5KJUSTjs.a.debug("[TranslationService] Cache invalidated:",{cacheKey:o})}async prefetchTranslations(r){try{await this.fetchTranslations(r),this.enableDebug&&_chunkCR5KJUSTjs.a.debug("[TranslationService] Prefetch completed")}catch(o){_chunkCR5KJUSTjs.a.error("[TranslationService] Prefetch failed",o instanceof Error?o:{message:String(o)})}}clearAllCaches(){try{let o=Object.keys(localStorage).filter(t=>t.startsWith(ro));o.forEach(t=>localStorage.removeItem(t)),this.enableDebug&&_chunkCR5KJUSTjs.a.debug(`[TranslationService] Cleared ${o.length} cache entries`)}catch(r){_chunkCR5KJUSTjs.a.error("[TranslationService] Failed to clear caches",r instanceof Error?r:{message:String(r)})}}},Ze= exports.e =mr.getInstance();var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _jsxruntime = require('react/jsx-runtime');var Qe=null,fr=!1,so=_react.createContext.call(void 0, null);function no(e,r,o){return{...e,...r,...o||{}}}function Pt(e,r,o,t,i){_react.useEffect.call(void 0, ()=>{if(!t||!e||!r)return;let n=o||typeof window<"u"&&window.i18next||typeof window<"u"&&window.i18n;if(!n||!n.addResourceBundle){i&&_chunkCR5KJUSTjs.a.debug("[TranslationsProvider] i18next not found, skipping auto-sync");return}i&&_chunkCR5KJUSTjs.a.debug("[TranslationsProvider] Auto-syncing translations with i18next",{languages:Object.keys(e),currentLanguage:r}),Object.keys(e).forEach(l=>{e[l]&&Object.keys(e[l]).length>0&&(n.addResourceBundle(l,"translation",e[l],!0,!0),i&&_chunkCR5KJUSTjs.a.debug(`[TranslationsProvider] Synced ${Object.keys(e[l]).length} keys for language: ${l}`))}),n.language!==r&&n.changeLanguage&&(n.changeLanguage(r),i&&_chunkCR5KJUSTjs.a.debug(`[TranslationsProvider] Changed i18next language to: ${r}`))},[e,r,o,t,i])}var Us=({children:e,apiKey:r,crudifyEnv:o="prod",featureKeys:t,language:i="es",devTranslations:n,translationUrl:l,enableDebug:a=!1,skipAutoInit:u=!0,autoSyncI18n:h=!0,i18nInstance:d,loadingFallback:b,waitForInitialLoad:w=!0})=>{let c=_react.useMemo.call(void 0, ()=>_chunkCR5KJUSTjs.d.call(void 0, {publicApiKey:r,env:o,featureKeys:t,enableDebug:a}),[r,o,t,a]),s=c.publicApiKey||"",y=c.env||o||"prod",g=c.featureKeys||t,[m,f]=_react.useState.call(void 0, {}),[v,k]=_react.useState.call(void 0, !0),[z,p]=_react.useState.call(void 0, !0),[C,I]=_react.useState.call(void 0, null),[A,Y]=_react.useState.call(void 0, void 0),[le,Q]=_react.useState.call(void 0, !1),ne=_react.useCallback.call(void 0, async()=>{if(!s){a&&_chunkCR5KJUSTjs.a.debug("[TranslationsProvider] No apiKey - skipping translation fetch"),k(!1),p(!1);return}if(le){a&&_chunkCR5KJUSTjs.a.debug("[TranslationsProvider] Skipping reload - using fallback translations");return}if(Ze.hasValidCache(s)&&z&&(a&&_chunkCR5KJUSTjs.a.debug("[TranslationsProvider] Valid cache found - not blocking initial render"),p(!1)),fr&&Qe){a&&_chunkCR5KJUSTjs.a.debug("[TranslationsProvider] Fetch already in progress, waiting for existing promise");try{let R=await Qe;f(R),k(!1);return}catch (e2){a&&_chunkCR5KJUSTjs.a.warn("[TranslationsProvider] Global fetch failed, retrying")}}fr=!0,k(!0),I(null);let V;if(l)try{a&&_chunkCR5KJUSTjs.a.debug(`[TranslationsProvider] Fetching translations from URL: ${l}`);let R=await fetch(l);if(!R.ok)throw new Error(`Failed to fetch translations: ${R.statusText}`);V=await R.json(),Y(V),a&&_chunkCR5KJUSTjs.a.debug("[TranslationsProvider] URL translations loaded:",{keysCount:V?Object.keys(V).length:0})}catch(R){_chunkCR5KJUSTjs.a.error("[TranslationsProvider] Failed to load URL translations",R instanceof Error?R:{message:String(R)}),V=void 0,Y(void 0)}let ee=(async()=>{try{Ze.setDebug(a);let R=await Ze.fetchTranslations({apiKey:s,crudifyEnv:y,featureKeys:g,urlTranslations:V}),S={};return Object.keys(R).forEach(W=>{let ie=ge[W]||{},re=R[W]||{};S[W]=no(ie,re,n)}),a&&_chunkCR5KJUSTjs.a.debug("[TranslationsProvider] Loaded translations:",{languages:Object.keys(S),keysCount:Object.keys(S[i]||{}).length}),S}catch(R){_chunkCR5KJUSTjs.a.error("[TranslationsProvider] Failed to load",R instanceof Error?R:{message:String(R)}),I(R instanceof Error?R.message:String(R)),Q(!0);let S={};return Object.keys(ge).forEach(W=>{let ie=ge[W],re=V||A||{};S[W]=no(ie,re,n)}),a&&_chunkCR5KJUSTjs.a.debug("[TranslationsProvider] Using fallback translations (critical + URL)"),S}})();Qe=ee;try{let R=await ee;f(R)}finally{k(!1),p(!1),fr=!1,setTimeout(()=>{Qe=null},1e3)}},[s,y,g,l,n,a,i,le]);_react.useEffect.call(void 0, ()=>{ne();let H=setInterval(ne,3600*1e3);return()=>clearInterval(H)},[ne]);let Oe=_react.useMemo.call(void 0, ()=>(H,V)=>{let R=(m[i]||{})[H];if(!R){let S=Object.keys(m);for(let W of S)if(m[W][H]){R=m[W][H];break}}return R||(a&&_chunkCR5KJUSTjs.a.warn(`[TranslationsProvider] Missing translation: "${H}"`),R=H),V&&typeof R=="string"&&Object.entries(V).forEach(([S,W])=>{let ie=new RegExp(`{{${S}}}`,"g");R=R.replace(ie,String(W))}),R},[m,i,a]);Pt(m,i,d,h,a);let Ie={t:Oe,language:i,availableLanguages:Object.keys(m),translations:m,isLoading:v,error:C,refreshTranslations:ne};return s?w&&z&&v?b||_jsxruntime.jsx.call(void 0, "div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:_jsxruntime.jsx.call(void 0, "div",{children:"Loading translations..."})}):_jsxruntime.jsx.call(void 0, so.Provider,{value:Ie,children:e}):(a&&_chunkCR5KJUSTjs.a.warn("[TranslationsProvider] No API key available. Skipping translations. Provide apiKey via props or ensure cookies are set by Lambda."),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}))},Me= exports.g =()=>{let e=_react.useContext.call(void 0, so);if(!e)throw new Error("useTranslations must be used within TranslationsProvider");return e};var Rt=/^[a-zA-Z0-9\-_./\?=&%#]+$/,St=[/^https?:\/\//i,/^ftp:\/\//i,/^\/\//,/javascript:/i,/data:/i,/vbscript:/i,/about:/i,/\.\.\//,/\.\.\\/,/%2e%2e%2f/i,/%2e%2e%5c/i,/%2f%2f/i,/%5c%5c/i,/[\x00-\x1f\x7f-\x9f]/,/\\/],ao= exports.h =(e,r="/")=>{if(!e||typeof e!="string")return r;let o=e.trim();if(!o)return r;if(!o.startsWith("/"))return _chunkCR5KJUSTjs.a.warn("Open redirect blocked (relative path)",{path:e}),r;if(!Rt.test(o))return _chunkCR5KJUSTjs.a.warn("Open redirect blocked (invalid characters)",{path:e}),r;let t=o.toLowerCase();for(let n of St)if(n.test(t))return _chunkCR5KJUSTjs.a.warn("Open redirect blocked (dangerous pattern)",{path:e}),r;let i=o.split("?")[0].split("/").filter(Boolean);if(i.length===0)return o;for(let n of i)if(n===".."||n.includes(":")||n.length>100)return _chunkCR5KJUSTjs.a.warn("Open redirect blocked (suspicious path part)",{part:n}),r;return o},kt=[/^files\.nocios\.link$/,/^files\.crudia\.com$/,/^[a-z0-9][a-z0-9-]*\.nocios\.link$/,/^[a-z0-9][a-z0-9-]*\.crudia\.com$/],lo= exports.i =(e,r="/")=>{if(!e||typeof e!="string")return r;let o=e.trim();if(!o)return r;if(o.startsWith("/"))return ao(o,r);try{if(o.includes("..")||o.includes("//",8))return _chunkCR5KJUSTjs.a.warn("Redirect blocked (dangerous path pattern)",{url:o}),r;let t=new URL(o);if(t.protocol!=="https:")return _chunkCR5KJUSTjs.a.warn("Redirect blocked (non-HTTPS protocol)",{url:o}),r;let i=t.hostname.toLowerCase();return kt.some(l=>l.test(i))?o:(_chunkCR5KJUSTjs.a.warn("Redirect blocked (untrusted domain)",{url:o,hostname:i}),r)}catch (e3){return _chunkCR5KJUSTjs.a.warn("Redirect blocked (invalid URL)",{url:o}),r}},Hs= exports.j =(e,r="/")=>{try{let t=(typeof e=="string"?new URLSearchParams(e):e).get("redirect");if(!t)return r;let i=decodeURIComponent(t);return ao(i,r)}catch(o){return _chunkCR5KJUSTjs.a.warn("Error parsing redirect parameter",o instanceof Error?{errorMessage:o.message}:{message:String(o)}),r}};var _material = require('@mui/material');var _CheckCircle = require('@mui/icons-material/CheckCircle'); var _CheckCircle2 = _interopRequireDefault(_CheckCircle);var _RadioButtonUnchecked = require('@mui/icons-material/RadioButtonUnchecked'); var _RadioButtonUnchecked2 = _interopRequireDefault(_RadioButtonUnchecked);var Lt=({message:e,valid:r})=>_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{display:"flex",alignItems:"center",gap:.5,py:.25},children:[r?_jsxruntime.jsx.call(void 0, _CheckCircle2.default,{sx:{fontSize:16,color:"success.main"}}):_jsxruntime.jsx.call(void 0, _RadioButtonUnchecked2.default,{sx:{fontSize:16,color:"text.disabled"}}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",sx:{color:r?"success.main":"text.secondary",transition:"color 0.2s ease"},children:e})]}),Ft=({requirements:e,show:r=!0})=>!r||e.length===0?null:_jsxruntime.jsx.call(void 0, _material.Box,{sx:{mt:.5,mb:1,px:.5},children:e.map((o,t)=>_jsxruntime.jsx.call(void 0, Lt,{message:o.message,valid:o.valid},t))}),uo= exports.k =Ft;var Bt=/[A-Z]/,_t=/[a-z]/,zt=/[0-9]/,Ot=/[!@#$%^&*()_+\-=\[\]{}|;:,.<>?]/,Ut=/^[A-Za-z0-9]+$/;function po(e,r){return r.map(o=>{let t=!0;switch(o.type){case"minLength":t=e.length>=Number(_nullishCoalesce(o.value, () => (0)));break;case"alphanumeric":t=e.length>0&&Ut.test(e);break;case"uppercase":t=Bt.test(e);break;case"lowercase":t=_t.test(e);break;case"number":t=zt.test(e);break;case"special":t=Ot.test(e);break;default:t=!0}return{message:o.message,valid:t,enforce:!!o.enforce}})}function go(e){return e.filter(r=>r.enforce).every(r=>r.valid)}var mo=[{type:"minLength",value:8,message:"passwordRequirements.minLength",enforce:!0},{type:"uppercase",message:"passwordRequirements.uppercase",enforce:!0},{type:"lowercase",message:"passwordRequirements.lowercase",enforce:!0},{type:"number",message:"passwordRequirements.number",enforce:!0},{type:"special",message:"passwordRequirements.special",enforce:!0}];var fo=(e,r)=>{let[o,t]=_react.useState.call(void 0, {}),[i,n]=_react.useState.call(void 0, !1),[l,a]=_react.useState.call(void 0, null);return _react.useEffect.call(void 0, ()=>{if(r&&Object.keys(r).length>0){t(r),n(!1),a(null);return}if(!e){t({}),n(!1),a(null);return}let u=!1;return n(!0),a(null),fetch(e).then(h=>{if(!h.ok)throw new Error(`Failed to load translations: ${h.status}`);return h.json()}).then(h=>{u||(t(h),n(!1))}).catch(h=>{u||(_chunkCR5KJUSTjs.a.error("[I18nProvider] Failed to load translations from URL",h instanceof Error?h:{message:String(h),url:e}),a(h instanceof Error?h.message:String(h)),t({}),n(!1))}),()=>{u=!0}},[e,r]),{translations:o,loading:i,error:l}};var ho=_react.createContext.call(void 0, null),Ht=()=>{try{return Me()}catch (e4){return null}},Vt=(e,r)=>{if(r.includes(".")){let o=r.split(".").reduce((t,i)=>t&&typeof t=="object"?t[i]:void 0,e);if(o!==void 0)return o}if(e&&e[r])return e[r]},bo=({children:e,translations:r,translationsUrl:o,language:t="en"})=>{let n=_optionalChain([Ht, 'call', _2 => _2(), 'optionalAccess', _3 => _3.translations, 'optionalAccess', _4 => _4[t]])||{},{translations:l,loading:a}=fo(o,r),u=_react.useMemo.call(void 0, ()=>({...n,...l,...r||{}}),[n,l,r]),h=_react.useMemo.call(void 0, ()=>(b,w)=>{let c=Vt(u,b);return c==null&&(c=b),w&&typeof c=="string"&&Object.entries(w).forEach(([s,y])=>{c=c.replace(new RegExp(`{{${s}}}`,"g"),y)}),typeof c=="string"?c:b},[u]),d=_react.useMemo.call(void 0, ()=>({t:h,language:t}),[h,t]);return a?_jsxruntime.jsx.call(void 0, "div",{children:"Loading translations..."}):_jsxruntime.jsx.call(void 0, ho.Provider,{value:d,children:e})},oe=()=>{let e=_react.useContext.call(void 0, ho);if(!e)throw new Error("useTranslation must be used within I18nProvider");return e};var xo={currentScreen:"login",searchParams:{},formData:{username:"",password:"",email:"",code:"",newPassword:"",confirmPassword:""},loading:!1,errors:{global:[]},emailSent:!1,codeAlreadyExists:!1,codeValidated:!1,fromCodeVerification:!1,config:{}};function Gt(e,r){switch(r.type){case"SET_SCREEN":let o={...e,currentScreen:r.payload.screen,searchParams:r.payload.params||e.searchParams,errors:{global:[]}},t=new URLSearchParams(o.searchParams),i=t.toString()?`?${t.toString()}`:window.location.pathname;try{window.history.replaceState({},"",i)}catch (e5){}return o;case"SET_SEARCH_PARAMS":return{...e,searchParams:r.payload};case"CLEAR_SEARCH_PARAMS":return{...e,searchParams:{}};case"UPDATE_FORM_DATA":return{...e,formData:{...e.formData,...r.payload},errors:{...e.errors,...Object.keys(r.payload).reduce((n,l)=>({...n,[l]:void 0}),{})}};case"SET_LOADING":return{...e,loading:r.payload};case"SET_ERRORS":return{...e,errors:{...e.errors,...r.payload}};case"CLEAR_ERRORS":return{...e,errors:{global:[]}};case"SET_EMAIL_SENT":return{...e,emailSent:r.payload};case"SET_CODE_ALREADY_EXISTS":return{...e,codeAlreadyExists:r.payload};case"SET_CODE_VALIDATED":return{...e,codeValidated:r.payload};case"SET_FROM_CODE_VERIFICATION":return{...e,fromCodeVerification:r.payload};case"RESET_FORM":return{...e,formData:xo.formData,errors:{global:[]},loading:!1,emailSent:!1,codeAlreadyExists:!1,codeValidated:!1,fromCodeVerification:!1};case"INIT_CONFIG":return{...e,config:r.payload};default:return e}}var wo=_react.createContext.call(void 0, void 0),Co=({children:e,initialScreen:r="login",config:o,autoReadFromCookies:t=!0})=>{let[i,n]=_react.useReducer.call(void 0, Gt,{...xo,currentScreen:r});_react.useEffect.call(void 0, ()=>{n({type:"INIT_CONFIG",payload:(()=>{let s={};if(t)try{let y=_chunkCR5KJUSTjs.b.call(void 0, );y.configSource!=="none"&&y.logo&&(s.logo=y.logo)}catch(y){_chunkCR5KJUSTjs.a.error("Error reading configuration",y instanceof Error?y:{message:String(y)})}return{publicApiKey:_optionalChain([o, 'optionalAccess', _5 => _5.publicApiKey]),env:_optionalChain([o, 'optionalAccess', _6 => _6.env]),appName:_optionalChain([o, 'optionalAccess', _7 => _7.appName]),logo:_optionalChain([o, 'optionalAccess', _8 => _8.logo])||s.logo,loginActions:_optionalChain([o, 'optionalAccess', _9 => _9.loginActions])}})()})},[o,t]),_react.useEffect.call(void 0, ()=>{let c=new URLSearchParams(window.location.search),s={};c.forEach((y,g)=>{s[g]=y}),Object.keys(s).length>0&&n({type:"SET_SEARCH_PARAMS",payload:s}),r==="checkCode"&&s.email&&n({type:"UPDATE_FORM_DATA",payload:{email:s.email,code:s.code||""}}),r==="resetPassword"&&s.link&&n({type:"SET_SEARCH_PARAMS",payload:s})},[r]),_react.useEffect.call(void 0, ()=>{let c=_chunkCR5KJUSTjs.f.subscribe(s=>{(s.type==="LOGOUT"||s.type==="SESSION_EXPIRED")&&(_chunkCR5KJUSTjs.a.debug("LoginStateProvider: Clearing state due to auth event",{type:s.type}),n({type:"CLEAR_SEARCH_PARAMS"}),n({type:"RESET_FORM"}))});return()=>c()},[]);let l=(c,s)=>{n({type:"SET_SCREEN",payload:{screen:c,params:s}})},a=c=>{n({type:"UPDATE_FORM_DATA",payload:c})},u=(c,s)=>{n({type:"SET_ERRORS",payload:{[c]:s}})},h=()=>{n({type:"CLEAR_ERRORS"})},d=c=>{n({type:"SET_LOADING",payload:c})},b=_react.useCallback.call(void 0, ()=>{n({type:"CLEAR_SEARCH_PARAMS"})},[]),w={state:i,dispatch:n,setScreen:l,updateFormData:a,setFieldError:u,clearErrors:h,setLoading:d,clearSearchParams:b};return _jsxruntime.jsx.call(void 0, wo.Provider,{value:w,children:e})},rr=()=>{let e=_react.useContext.call(void 0, wo);if(e===void 0)throw new Error("useLoginState must be used within a LoginStateProvider");return e};var rn=({onScreenChange:e,onExternalNavigate:r,onLoginSuccess:o,onError:t,redirectUrl:i="/"})=>{let{state:n,updateFormData:l,setFieldError:a,clearErrors:u,setLoading:h}=rr(),{login:d}=_chunk6ONAT4QUjs.l.call(void 0, ),b=oe(),{t:w}=b,c="i18n"in b?b.i18n:void 0,s=_react.useRef.call(void 0, null),y=_chunkCR5KJUSTjs.p.call(void 0, w,{currentLanguage:_optionalChain([c, 'optionalAccess', _10 => _10.language]),enableDebug:!1}),g=()=>{if(n.searchParams.redirect)try{let p=decodeURIComponent(n.searchParams.redirect);return lo(p,i||"/")}catch (e6){}return i||"/"};_react.useEffect.call(void 0, ()=>{let p=setTimeout(()=>{s.current&&s.current.focus()},100);return()=>clearTimeout(p)},[]);let m=p=>y.translateError({code:p.code,message:p.message,field:p.field}),f=async()=>{if(!n.loading){if(!n.formData.username.trim()){a("username",w("login.usernameRequired"));return}if(!n.formData.password.trim()){a("password",w("login.passwordRequired"));return}u(),h(!0);try{let p=await d(n.formData.username,n.formData.password);if(h(!1),p.success){let C=g();o&&o(p.data,C)}else{let C=p.rawResponse||p;v(C)}}catch(p){h(!1);let I=_chunkNSV6ECYOjs.g.call(void 0, p).map(m);a("global",I),t&&t(I.join(", "))}}},v=p=>{let C=_chunkNSV6ECYOjs.g.call(void 0, p),I=[];C.forEach(A=>{A.field?a(A.field,m(A)):I.push(m(A))}),I.length>0&&a("global",I)};return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"form",noValidate:!0,onSubmit:p=>{p.preventDefault(),f()},onKeyDown:p=>{p.key==="Enter"&&!n.loading&&(p.preventDefault(),f())},sx:{width:"100%",display:"flex",flexDirection:"column",gap:2},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",component:"label",htmlFor:"email",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:w("login.usernameOrEmailLabel")}),_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,id:"email",name:"email",type:"email",value:n.formData.username,disabled:n.loading,onChange:p=>l({username:p.target.value}),error:!!n.errors.username,helperText:n.errors.username,autoComplete:"email",placeholder:w("login.usernameOrEmailPlaceholder"),inputRef:s,required:!0})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",component:"label",htmlFor:"password",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:w("login.passwordLabel")}),_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,id:"password",name:"password",type:"password",value:n.formData.password,disabled:n.loading,onChange:p=>l({password:p.target.value}),error:!!n.errors.password,helperText:n.errors.password,autoComplete:"current-password",placeholder:w("login.passwordPlaceholder"),required:!0})]}),_optionalChain([n, 'access', _11 => _11.config, 'access', _12 => _12.loginActions, 'optionalAccess', _13 => _13.includes, 'call', _14 => _14("forgotPassword")])&&_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"flex-end",alignItems:"center"},children:_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:()=>{_optionalChain([e, 'optionalCall', _15 => _15("forgotPassword",n.searchParams)])},variant:"body2",color:"secondary",children:w("login.forgotPasswordLink")})}),_jsxruntime.jsx.call(void 0, _material.Button,{disabled:n.loading,type:"submit",fullWidth:!0,variant:"contained",color:"primary",sx:{mt:1,mb:2},children:n.loading?_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:20}):w("login.loginButton")})]}),_jsxruntime.jsx.call(void 0, _material.Box,{children:n.errors.global&&n.errors.global.length>0&&n.errors.global.map((p,C)=>_jsxruntime.jsx.call(void 0, _material.Alert,{variant:"filled",sx:{mt:2},severity:"error",children:_jsxruntime.jsx.call(void 0, "div",{children:p})},C))}),_optionalChain([n, 'access', _16 => _16.config, 'access', _17 => _17.loginActions, 'optionalAccess', _18 => _18.includes, 'call', _19 => _19("createUser")])&&_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",align:"center",sx:{color:"text.secondary",mt:3},children:[w("login.noAccountPrompt")," ",_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:()=>{let C=`/public/users/create${Object.keys(n.searchParams).length>0?`?${new URLSearchParams(n.searchParams).toString()}`:""}`;_optionalChain([r, 'optionalCall', _20 => _20(C)])},fontWeight:"medium",color:"secondary",children:w("login.signUpLink")})]})]})},To=rn;var cn=({onScreenChange:e,onError:r})=>{let{crudify:o}=_chunk6ONAT4QUjs.j.call(void 0, ),[t,i]=_react.useState.call(void 0, ""),[n,l]=_react.useState.call(void 0, !1),[a,u]=_react.useState.call(void 0, []),[h,d]=_react.useState.call(void 0, null),[b,w]=_react.useState.call(void 0, !1),[c,s]=_react.useState.call(void 0, !1),y=_react.useRef.call(void 0, null),{t:g}=oe();_react.useEffect.call(void 0, ()=>{y.current&&!b&&!c&&y.current.focus()},[b,c]);let m=C=>{let I=[`errors.auth.${C.code}`,`errors.data.${C.code}`,`errors.system.${C.code}`,`errors.${C.code}`,`forgotPassword.${C.code.toLowerCase()}`];for(let A of I){let Y=g(A);if(Y!==A)return Y}return C.message||g("base.errors.errorUnknown")},f=C=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(C),v=async()=>{if(!(n||!o)){if(u([]),d(null),!t){d(g("forgotPassword.emailRequired"));return}if(!f(t)){d(g("forgotPassword.invalidEmail"));return}l(!0);try{let C=[{operation:"requestPasswordReset",data:{email:t}}],I=await o.transaction(C);if(I.success)I.data&&I.data.existingCodeValid?s(!0):w(!0);else{let Y=_chunkNSV6ECYOjs.g.call(void 0, I).map(m);u(Y)}}catch(C){let A=_chunkNSV6ECYOjs.g.call(void 0, C).map(m);u(A),r&&r(A.join(", "))}finally{l(!1)}}},k=()=>{_optionalChain([e, 'optionalCall', _21 => _21("login")])},z=()=>{if(b||c){_optionalChain([e, 'optionalCall', _22 => _22("checkCode",{email:t})]);return}if(!t){d(g("forgotPassword.emailRequired"));return}if(!f(t)){d(g("forgotPassword.invalidEmail"));return}_optionalChain([e, 'optionalCall', _23 => _23("checkCode",{email:t})])};return b||c?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{width:"100%",display:"flex",flexDirection:"column",gap:2,textAlign:"center"},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:2},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h5",component:"h1",sx:{mb:1,fontWeight:600},children:g(c?"forgotPassword.codeAlreadyExistsMessage":"forgotPassword.emailSentMessage")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{color:c?"success.main":"grey.600"},children:g("forgotPassword.checkEmailInstructions")})]}),_jsxruntime.jsx.call(void 0, _material.Button,{type:"button",onClick:z,fullWidth:!0,variant:"contained",color:"primary",sx:{mt:2,mb:2},children:g("forgotPassword.enterCodeLink")}),_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center"},children:_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:k,variant:"body2",color:"secondary",children:g("base.btn.back")})})]})}):_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"form",noValidate:!0,onSubmit:C=>{C.preventDefault(),v()},sx:{width:"100%",display:"flex",flexDirection:"column",gap:2},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:2},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h5",component:"h1",sx:{mb:1,fontWeight:600},children:g("forgotPassword.title")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{color:"grey.600"},children:g("forgotPassword.instructions")})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",component:"label",htmlFor:"email",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:g("forgotPassword.emailLabel")}),_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,id:"email",name:"email",type:"email",value:t,disabled:n,onChange:C=>i(C.target.value),error:!!h,helperText:h,autoComplete:"email",placeholder:g("forgotPassword.emailPlaceholder"),required:!0,autoFocus:!0,inputRef:y})]}),_jsxruntime.jsx.call(void 0, _material.Button,{disabled:n,type:"submit",fullWidth:!0,variant:"contained",color:"primary",sx:{mt:2,mb:2},children:n?_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:20}):g("forgotPassword.sendCodeButton")}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center",gap:2},children:[_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:k,variant:"body2",color:"secondary",children:g("base.btn.back")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{color:"grey.400"},children:"\u2022"}),_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:z,variant:"body2",color:"secondary",children:g("login.alreadyHaveCodeLink")})]})]}),_jsxruntime.jsx.call(void 0, _material.Box,{children:a.length>0&&a.map((C,I)=>_jsxruntime.jsx.call(void 0, _material.Alert,{variant:"filled",sx:{mt:2},severity:"error",children:C},I))})]})},ko=cn;var _Visibility = require('@mui/icons-material/Visibility'); var _Visibility2 = _interopRequireDefault(_Visibility);var _VisibilityOff = require('@mui/icons-material/VisibilityOff'); var _VisibilityOff2 = _interopRequireDefault(_VisibilityOff);var pn=({onScreenChange:e,onError:r,searchParams:o,onResetSuccess:t,passwordRules:i})=>{let{crudify:n}=_chunk6ONAT4QUjs.j.call(void 0, ),[l,a]=_react.useState.call(void 0, ""),[u,h]=_react.useState.call(void 0, ""),[d,b]=_react.useState.call(void 0, !1),[w,c]=_react.useState.call(void 0, []),[s,y]=_react.useState.call(void 0, null),[g,m]=_react.useState.call(void 0, null),[f,v]=_react.useState.call(void 0, ""),[k,z]=_react.useState.call(void 0, ""),[p,C]=_react.useState.call(void 0, !1),[I,A]=_react.useState.call(void 0, !0),[Y,le]=_react.useState.call(void 0, !1),[Q,ne]=_react.useState.call(void 0, null),[Oe,Ie]=_react.useState.call(void 0, !1),[H,V]=_react.useState.call(void 0, !1),[ee,R]=_react.useState.call(void 0, !1),{t:S}=oe(),W=_react.useMemo.call(void 0, ()=>(i||mo).map(D=>({...D,message:S(D.message)})),[i,S]),ie=_react.useMemo.call(void 0, ()=>po(l,W),[l,W]),re=_react.useMemo.call(void 0, ()=>go(ie),[ie]),Ue=l===u,Re=E=>{let D=[`errors.auth.${E.code}`,`errors.data.${E.code}`,`errors.system.${E.code}`,`errors.${E.code}`,`resetPassword.${E.code.toLowerCase()}`];for(let M of D){let q=S(M);if(q!==M)return q}return E.message||S("base.errors.errorUnknown")},Ae=E=>o?o instanceof URLSearchParams?o.get(E):o[E]||null:null;_react.useEffect.call(void 0, ()=>{if(o){if(o){let E=Ae("fromCodeVerification"),D=Ae("email"),M=Ae("code");if(E==="true"&&D&&M){v(D),z(M),C(!0),le(!0),A(!1);return}let q=Ae("link");if(q)try{let G=decodeURIComponent(q),[X,ye]=G.split("/");if(X&&ye&&X.length===6){z(X),v(ye),C(!1),ne({email:ye,code:X});return}}catch (e7){}if(D&&M){v(D),z(M),C(!1),ne({email:D,code:M});return}}c([S("resetPassword.invalidCode")]),A(!1),setTimeout(()=>_optionalChain([e, 'optionalCall', _24 => _24("forgotPassword")]),3e3)}},[o,n,S,e]),_react.useEffect.call(void 0, ()=>{n&&Q&&!Oe&&(Ie(!0),(async(D,M)=>{try{let q=[{operation:"validatePasswordResetCode",data:{email:D,codePassword:M}}],G=await n.transaction(q);if(G.data&&Array.isArray(G.data)){let X=G.data[0];if(X&&X.response&&X.response.status==="OK"){le(!0);return}}if(G.success)le(!0);else{let ye=_chunkNSV6ECYOjs.g.call(void 0, G).map(Re);c(ye),setTimeout(()=>_optionalChain([e, 'optionalCall', _25 => _25("forgotPassword")]),3e3)}}catch(q){let X=_chunkNSV6ECYOjs.g.call(void 0, q).map(Re);c(X),setTimeout(()=>_optionalChain([e, 'optionalCall', _26 => _26("forgotPassword")]),3e3)}finally{A(!1),ne(null),Ie(!1)}})(Q.email,Q.code))},[n,Q,S,e]);let Xe=async()=>{if(d||!n)return;c([]),y(null),m(null);let E=!1;if(l?re||(y(S("resetPassword.passwordRequirementsNotMet")),E=!0):(y(S("resetPassword.newPasswordRequired")),E=!0),u?Ue||(m(S("resetPassword.passwordsDoNotMatch")),E=!0):(m(S("resetPassword.confirmPasswordRequired")),E=!0),!E){b(!0);try{let D=[{operation:"validateAndResetPassword",data:{email:f,codePassword:k,newPassword:l}}],M=await n.transaction(D);if(M.success)c([]),setTimeout(()=>{_optionalChain([t, 'optionalCall', _27 => _27()])},1e3);else{let G=_chunkNSV6ECYOjs.g.call(void 0, M).map(Re);c(G)}}catch(D){let q=_chunkNSV6ECYOjs.g.call(void 0, D).map(Re);c(q),r&&r(q.join(", "))}b(!1)}},Or=()=>{p?_optionalChain([e, 'optionalCall', _28 => _28("checkCode",{email:f})]):_optionalChain([e, 'optionalCall', _29 => _29("forgotPassword")])};return I?_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:"300px"},children:_jsxruntime.jsx.call(void 0, _material.CircularProgress,{})}):Y?_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"form",noValidate:!0,sx:{width:"100%",display:"flex",flexDirection:"column",gap:2},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:2},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h5",component:"h1",sx:{mb:1,fontWeight:600},children:S("resetPassword.title")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{color:"grey.600"},children:S("resetPassword.instructions")})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",component:"label",htmlFor:"newPassword",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:S("resetPassword.newPasswordLabel")}),_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,id:"newPassword",name:"newPassword",type:H?"text":"password",value:l,disabled:d,onChange:E=>a(E.target.value),error:!!s,helperText:s,autoComplete:"new-password",placeholder:S("resetPassword.newPasswordPlaceholder"),required:!0,InputProps:{endAdornment:_jsxruntime.jsx.call(void 0, _material.InputAdornment,{position:"end",children:_jsxruntime.jsx.call(void 0, _material.IconButton,{"aria-label":S(H?"base.btn.hidePassword":"base.btn.showPassword"),onClick:()=>V(!H),edge:"end",size:"small",disabled:d,children:H?_jsxruntime.jsx.call(void 0, _VisibilityOff2.default,{}):_jsxruntime.jsx.call(void 0, _Visibility2.default,{})})})}}),_jsxruntime.jsx.call(void 0, uo,{requirements:ie,show:l.length>0})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",component:"label",htmlFor:"confirmPassword",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:S("resetPassword.confirmPasswordLabel")}),_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,id:"confirmPassword",name:"confirmPassword",type:ee?"text":"password",value:u,disabled:d,onChange:E=>h(E.target.value),error:!!g,helperText:g,autoComplete:"new-password",placeholder:S("resetPassword.confirmPasswordPlaceholder"),required:!0,InputProps:{endAdornment:_jsxruntime.jsx.call(void 0, _material.InputAdornment,{position:"end",children:_jsxruntime.jsx.call(void 0, _material.IconButton,{"aria-label":S(ee?"base.btn.hidePassword":"base.btn.showPassword"),onClick:()=>R(!ee),edge:"end",size:"small",disabled:d,children:ee?_jsxruntime.jsx.call(void 0, _VisibilityOff2.default,{}):_jsxruntime.jsx.call(void 0, _Visibility2.default,{})})})}})]}),_jsxruntime.jsx.call(void 0, _material.Button,{disabled:d||!re||!Ue||!l||!u,type:"button",onClick:Xe,fullWidth:!0,variant:"contained",color:"primary",sx:{mt:2,mb:2},children:d?_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:20}):S("resetPassword.resetPasswordButton")}),_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center"},children:_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:Or,variant:"body2",color:"secondary",children:S("base.btn.back")})})]}),_jsxruntime.jsx.call(void 0, _material.Box,{children:w.length>0&&w.map((E,D)=>_jsxruntime.jsx.call(void 0, _material.Alert,{variant:"filled",sx:{mt:2},severity:"error",children:E},D))})]}):_jsxruntime.jsx.call(void 0, _material.Box,{children:w.length>0&&w.map((E,D)=>_jsxruntime.jsx.call(void 0, _material.Alert,{variant:"filled",sx:{mt:2},severity:"error",children:E},D))})},zo=pn;var wn=({onScreenChange:e,onError:r,searchParams:o})=>{let{crudify:t}=_chunk6ONAT4QUjs.j.call(void 0, ),[i,n]=_react.useState.call(void 0, ""),[l,a]=_react.useState.call(void 0, !1),[u,h]=_react.useState.call(void 0, []),[d,b]=_react.useState.call(void 0, null),[w,c]=_react.useState.call(void 0, ""),s=_react.useRef.call(void 0, null),{t:y}=oe(),g=p=>o?o instanceof URLSearchParams?o.get(p):o[p]||null:null,m=p=>{let C=[`errors.auth.${p.code}`,`errors.data.${p.code}`,`errors.system.${p.code}`,`errors.${p.code}`,`checkCode.${p.code.toLowerCase()}`];for(let I of C){let A=y(I);if(A!==I)return A}return p.message||y("base.errors.errorUnknown")};_react.useEffect.call(void 0, ()=>{let p=g("email");p?c(p):_optionalChain([e, 'optionalCall', _30 => _30("forgotPassword")])},[o,e]),_react.useEffect.call(void 0, ()=>{s.current&&s.current.focus()},[]);let f=async()=>{if(!(l||!t)){if(h([]),b(null),!i){b(y("checkCode.codeRequired"));return}if(i.length!==6){b(y("checkCode.codeRequired"));return}a(!0);try{let p=[{operation:"validatePasswordResetCode",data:{email:w,codePassword:i}}],C=await t.transaction(p);if(C.success)_optionalChain([e, 'optionalCall', _31 => _31("resetPassword",{email:w,code:i,fromCodeVerification:"true"})]);else{let A=_chunkNSV6ECYOjs.g.call(void 0, C).map(m);h(A),a(!1)}}catch(p){let I=_chunkNSV6ECYOjs.g.call(void 0, p).map(m);h(I),a(!1),r&&r(I.join(", "))}}},v=()=>{_optionalChain([e, 'optionalCall', _32 => _32("forgotPassword")])},k=p=>{let C=p.target.value.replace(/\D/g,"").slice(0,6);n(C)};return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"form",noValidate:!0,onSubmit:p=>{p.preventDefault(),f()},sx:{width:"100%",display:"flex",flexDirection:"column",gap:2},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:2},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h5",component:"h1",sx:{mb:1,fontWeight:600},children:y("checkCode.title")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{color:"grey.600"},children:y("checkCode.instructions")})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",component:"label",htmlFor:"code",sx:{display:"block",fontWeight:500,color:"grey.700",mb:.5},children:y("checkCode.codeLabel")}),_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,id:"code",name:"code",type:"text",value:i,disabled:l,onChange:k,error:!!d,helperText:d,placeholder:y("checkCode.codePlaceholder"),inputProps:{maxLength:6,style:{textAlign:"center",fontSize:"1.5rem",letterSpacing:"0.4rem"}},required:!0,autoFocus:!0,inputRef:s})]}),_jsxruntime.jsx.call(void 0, _material.Button,{disabled:l||i.length!==6,type:"submit",fullWidth:!0,variant:"contained",color:"primary",sx:{mt:2,mb:2},children:l?_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:20}):y("checkCode.verifyButton")}),_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"center",alignItems:"center"},children:_jsxruntime.jsx.call(void 0, _material.Link,{sx:{cursor:"pointer"},onClick:v,variant:"body2",color:"secondary",children:y("base.btn.back")})})]}),_jsxruntime.jsx.call(void 0, _material.Box,{children:u.length>0&&u.map((p,C)=>_jsxruntime.jsx.call(void 0, _material.Alert,{sx:{mt:2},severity:"error",children:p},C))})]})},Uo=wn;var Wo=({children:e,fallback:r})=>{let{isLoading:o,error:t,isInitialized:i}=_chunk6ONAT4QUjs.j.call(void 0, ),{t:n}=oe();return o?r||_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"200px",gap:2},children:[_jsxruntime.jsx.call(void 0, _material.CircularProgress,{}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",children:n("login.initializing")!=="login.initializing"?n("login.initializing"):"Initializing..."})]}):t?_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"error",sx:{mt:2},children:_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",children:[n("login.initializationError")!=="login.initializationError"?n("login.initializationError"):"Initialization error",":"," ",t]})}):i?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e}):_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"warning",sx:{mt:2},children:_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",children:n("login.notInitialized")!=="login.notInitialized"?n("login.notInitialized"):"System not initialized"})})};var kn=({onScreenChange:e,onExternalNavigate:r,onLoginSuccess:o,onError:t,redirectUrl:i="/",passwordRules:n})=>{let{t:l}=oe(),{state:a,setScreen:u}=rr(),{config:h}=_chunk6ONAT4QUjs.l.call(void 0, ),{showNotification:d}=_chunk6ONAT4QUjs.g.call(void 0, ),b=(c,s)=>{let y=s;c==="login"?y={}:c==="forgotPassword"&&!s&&(y={}),u(c,y),_optionalChain([e, 'optionalCall', _33 => _33(c,y)])},w=()=>{let c={onScreenChange:b,onExternalNavigate:r,onError:t,redirectUrl:i};switch(a.currentScreen){case"forgotPassword":return _jsxruntime.jsx.call(void 0, ko,{...c});case"checkCode":return _jsxruntime.jsx.call(void 0, Uo,{...c,searchParams:a.searchParams});case"resetPassword":return _jsxruntime.jsx.call(void 0, zo,{...c,searchParams:a.searchParams,passwordRules:n,onResetSuccess:()=>{let s=l("resetPassword.successMessage");d(s,"success"),b("login")}});default:return _jsxruntime.jsx.call(void 0, To,{...c,onLoginSuccess:o})}};return _jsxruntime.jsxs.call(void 0, Wo,{children:[_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"center",mb:3},children:_jsxruntime.jsx.call(void 0, "img",{src:h.logo||"https://logos.crudia.com/nocios-default.png",alt:l("login.logoAlt"),style:{width:"100%",maxWidth:"150px",height:"auto"},onError:c=>{let s=c.target;s.src="https://logos.crudia.com/nocios-default.png"}})}),!h.logo&&h.appName&&_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h6",component:"h1",sx:{textAlign:"center",mb:2},children:h.appName}),w()]})},En=({translations:e,translationsUrl:r,language:o="en",initialScreen:t="login",autoReadFromCookies:i=!0,...n})=>{let{config:l}=_chunk6ONAT4QUjs.l.call(void 0, );return _jsxruntime.jsx.call(void 0, bo,{translations:e,translationsUrl:r,language:o,children:_jsxruntime.jsx.call(void 0, _chunk6ONAT4QUjs.i,{config:l,children:_jsxruntime.jsx.call(void 0, Co,{config:l,initialScreen:t,autoReadFromCookies:i,children:_jsxruntime.jsx.call(void 0, kn,{...n})})})})},ul= exports.o =En;var _iconsmaterial = require('@mui/icons-material');var Kn=({showExtendedData:e=!0,showProfileCard:r=!0,autoRefresh:o=!0})=>{let{userProfile:t,loading:i,error:n,extendedData:l,refreshProfile:a}=_chunk6ONAT4QUjs.n.call(void 0, {autoFetch:o,retryOnError:!0,maxRetries:3}),[u,h]=_react.useState.call(void 0, !1);if(i)return _jsxruntime.jsxs.call(void 0, _material.Box,{display:"flex",justifyContent:"center",alignItems:"center",p:3,children:[_jsxruntime.jsx.call(void 0, _material.CircularProgress,{}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{ml:2},children:"Cargando perfil de usuario..."})]});if(n)return _jsxruntime.jsxs.call(void 0, _material.Alert,{severity:"error",action:_jsxruntime.jsx.call(void 0, _material.IconButton,{color:"inherit",size:"small",onClick:a,children:_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",children:"Reintentar"})}),children:["Error al cargar el perfil: ",n]});if(!t)return _jsxruntime.jsx.call(void 0, _material.Alert,{severity:"warning",children:"No se encontr\xF3 informaci\xF3n del usuario"});let d=_optionalChain([l, 'optionalAccess', _34 => _34.displayData])||{},b=_optionalChain([l, 'optionalAccess', _35 => _35.totalFields])||0,w=f=>{if(!f)return"No disponible";try{return new Date(f).toLocaleString("es-ES",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch (e8){return f}},c=(f,v)=>v==null?"No disponible":typeof v=="boolean"?v?"S\xED":"No":Array.isArray(v)?v.length>0?v.join(", "):"Ninguno":typeof v=="object"?JSON.stringify(v,null,2):String(v),s=[{key:"id",label:"ID",icon:_jsxruntime.jsx.call(void 0, _iconsmaterial.Badge,{})},{key:"email",label:"Email",icon:_jsxruntime.jsx.call(void 0, _iconsmaterial.Email,{})},{key:"username",label:"Usuario",icon:_jsxruntime.jsx.call(void 0, _iconsmaterial.Person,{})},{key:"fullName",label:"Nombre completo",icon:_jsxruntime.jsx.call(void 0, _iconsmaterial.AccountCircle,{})},{key:"role",label:"Rol",icon:_jsxruntime.jsx.call(void 0, _iconsmaterial.Security,{})}],y=[{key:"firstName",label:"Nombre"},{key:"lastName",label:"Apellido"},{key:"isActive",label:"Activo"},{key:"lastLogin",label:"\xDAltimo login"},{key:"createdAt",label:"Creado"},{key:"updatedAt",label:"Actualizado"}],g=[...s.map(f=>f.key),...y.map(f=>f.key),"permissions"],m=Object.keys(d).filter(f=>!g.includes(f)).map(f=>({key:f,label:f}));return _jsxruntime.jsxs.call(void 0, _material.Box,{children:[r&&_jsxruntime.jsx.call(void 0, _material.Card,{sx:{mb:2},children:_jsxruntime.jsxs.call(void 0, _material.CardContent,{children:[_jsxruntime.jsxs.call(void 0, _material.Box,{display:"flex",alignItems:"center",mb:2,children:[_jsxruntime.jsx.call(void 0, _material.Avatar,{src:d.avatar,sx:{width:56,height:56,mr:2},children:_optionalChain([d, 'access', _36 => _36.fullName, 'optionalAccess', _37 => _37[0]])||_optionalChain([d, 'access', _38 => _38.username, 'optionalAccess', _39 => _39[0]])||_optionalChain([d, 'access', _40 => _40.email, 'optionalAccess', _41 => _41[0]])}),_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h6",children:d.fullName||d.username||d.email}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",children:d.role||"Usuario"}),d.isActive!==void 0&&_jsxruntime.jsx.call(void 0, _material.Chip,{label:d.isActive?"Activo":"Inactivo",color:d.isActive?"success":"error",size:"small",sx:{mt:.5}})]})]}),_jsxruntime.jsx.call(void 0, _material.Box,{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(250px, 1fr))",gap:2,children:s.map(({key:f,label:v,icon:k})=>d[f]?_jsxruntime.jsxs.call(void 0, _material.Box,{display:"flex",alignItems:"center",children:[_jsxruntime.jsx.call(void 0, _material.Box,{sx:{mr:1,color:"text.secondary"},children:k}),_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",color:"text.secondary",children:v}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",children:c(f,d[f])})]})]},f):null)}),d.permissions&&Array.isArray(d.permissions)&&d.permissions.length>0&&_jsxruntime.jsxs.call(void 0, _material.Box,{mt:2,children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",color:"text.secondary",display:"block",children:"Permisos"}),_jsxruntime.jsxs.call(void 0, _material.Box,{display:"flex",flexWrap:"wrap",gap:.5,mt:.5,children:[d.permissions.slice(0,5).map((f,v)=>_jsxruntime.jsx.call(void 0, _material.Chip,{label:f,size:"small",variant:"outlined"},v)),d.permissions.length>5&&_jsxruntime.jsx.call(void 0, _material.Chip,{label:`+${d.permissions.length-5} m\xE1s`,size:"small"})]})]})]})}),e&&_jsxruntime.jsx.call(void 0, _material.Card,{children:_jsxruntime.jsxs.call(void 0, _material.CardContent,{children:[_jsxruntime.jsxs.call(void 0, _material.Box,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2,children:[_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"h6",display:"flex",alignItems:"center",children:[_jsxruntime.jsx.call(void 0, _iconsmaterial.Info,{sx:{mr:1}}),"Informaci\xF3n Detallada"]}),_jsxruntime.jsx.call(void 0, _material.Chip,{label:`${b} campos totales`,size:"small"})]}),_jsxruntime.jsxs.call(void 0, _material.List,{dense:!0,children:[y.map(({key:f,label:v})=>d[f]!==void 0&&_jsxruntime.jsxs.call(void 0, _material.ListItem,{divider:!0,children:[_jsxruntime.jsx.call(void 0, _material.ListItemIcon,{children:_jsxruntime.jsx.call(void 0, _iconsmaterial.Schedule,{fontSize:"small"})}),_jsxruntime.jsx.call(void 0, _material.ListItemText,{primary:v,secondary:f.includes("At")||f.includes("Login")?w(d[f]):c(f,d[f])})]},f)),m.length>0&&_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, _material.Divider,{sx:{my:1}}),_jsxruntime.jsx.call(void 0, _material.ListItem,{children:_jsxruntime.jsx.call(void 0, _material.ListItemText,{primary:_jsxruntime.jsxs.call(void 0, _material.Box,{display:"flex",justifyContent:"space-between",alignItems:"center",children:[_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"subtitle2",children:["Campos Personalizados (",m.length,")"]}),_jsxruntime.jsx.call(void 0, _material.IconButton,{size:"small",onClick:()=>h(!u),children:u?_jsxruntime.jsx.call(void 0, _iconsmaterial.ExpandLess,{}):_jsxruntime.jsx.call(void 0, _iconsmaterial.ExpandMore,{})})]})})}),_jsxruntime.jsx.call(void 0, _material.Collapse,{in:u,children:m.map(({key:f,label:v})=>_jsxruntime.jsx.call(void 0, _material.ListItem,{sx:{pl:4},children:_jsxruntime.jsx.call(void 0, _material.ListItemText,{primary:v,secondary:c(f,d[f])})},f))})]})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{mt:2,display:"flex",justifyContent:"space-between",alignItems:"center",children:[_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"caption",color:"text.secondary",children:["\xDAltima actualizaci\xF3n: ",w(d.updatedAt)]}),_jsxruntime.jsx.call(void 0, _material.IconButton,{size:"small",onClick:a,disabled:i,children:_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",children:"Actualizar"})})]})]})})]})},qn= exports.p =Kn;var jo=["create","read","update","delete"],Ko= exports.r =["create","read","update","delete"];var _reacti18next = require('react-i18next');var ti=({value:e,onChange:r,availableFields:o,error:t,disabled:i=!1})=>{let{t:n}=_reacti18next.useTranslation.call(void 0, ),[l,a]=_react.useState.call(void 0, "custom"),[u,h]=_react.useState.call(void 0, !1),d=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{u&&_optionalChain([d, 'access', _42 => _42.current, 'optionalAccess', _43 => _43.scrollIntoView, 'call', _44 => _44({behavior:"smooth",block:"start"})])},[u]);let b=_react.useRef.call(void 0, !1);_react.useEffect.call(void 0, ()=>{let g=e||{allow:[],owner_allow:[],deny:[]},m=new Set(o),f=(g.allow||[]).filter(p=>m.has(p)),v=(g.owner_allow||[]).filter(p=>m.has(p)),k=(g.deny||[]).filter(p=>m.has(p));o.forEach(p=>{!f.includes(p)&&!v.includes(p)&&!k.includes(p)&&k.push(p)});let z={allow:f,owner_allow:v,deny:k};JSON.stringify(z)!==JSON.stringify(g)&&r(z),f.length===o.length?a("all"):k.length===o.length?a("none"):a("custom")},[o,e]);let w=()=>{b.current=!0,r({allow:[...o],owner_allow:[],deny:[]}),a("all"),setTimeout(()=>{b.current=!1},0)},c=()=>{b.current=!0,r({allow:[],owner_allow:[],deny:[...o]}),a("none"),setTimeout(()=>{b.current=!1},0)},s=g=>_optionalChain([e, 'optionalAccess', _45 => _45.allow, 'optionalAccess', _46 => _46.includes, 'call', _47 => _47(g)])?"allow":_optionalChain([e, 'optionalAccess', _48 => _48.owner_allow, 'optionalAccess', _49 => _49.includes, 'call', _50 => _50(g)])?"owner_allow":"deny",y=(g,m)=>{b.current=!0;let f=new Set(_optionalChain([e, 'optionalAccess', _51 => _51.allow])||[]),v=new Set(_optionalChain([e, 'optionalAccess', _52 => _52.owner_allow])||[]),k=new Set(_optionalChain([e, 'optionalAccess', _53 => _53.deny])||[]);f.delete(g),v.delete(g),k.delete(g),m==="allow"&&f.add(g),m==="owner_allow"&&v.add(g),m==="deny"&&k.add(g),r({allow:Array.from(f),owner_allow:Array.from(v),deny:Array.from(k)}),a("custom"),setTimeout(()=>{b.current=!1},0)};return o.length===0?_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",sx:{mb:1},children:n("publicPolicies.fields.conditions.label")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",sx:{fontStyle:"italic"},children:n("publicPolicies.fields.conditions.noFieldsAvailable")}),t&&_jsxruntime.jsx.call(void 0, _material.FormHelperText,{error:!0,sx:{mt:1},children:t})]}):_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2},children:n("publicPolicies.fields.conditions.label")}),_jsxruntime.jsxs.call(void 0, _material.Stack,{direction:"row",spacing:1,alignItems:"center",sx:{mb:u?3:1},children:[_jsxruntime.jsx.call(void 0, _material.Button,{variant:l==="all"?"contained":"outlined",startIcon:_jsxruntime.jsx.call(void 0, _iconsmaterial.SelectAll,{}),onClick:w,disabled:i,size:"small",sx:{minWidth:120,...l==="all"&&{backgroundColor:"#16a34a","&:hover":{backgroundColor:"#15803d"}}},children:n("publicPolicies.fields.conditions.allFields")}),_jsxruntime.jsx.call(void 0, _material.Button,{variant:l==="none"?"contained":"outlined",startIcon:_jsxruntime.jsx.call(void 0, _iconsmaterial.ClearAll,{}),onClick:c,disabled:i,size:"small",sx:{minWidth:120,...l==="none"&&{backgroundColor:"#cf222e","&:hover":{backgroundColor:"#bc1f2c"}}},children:n("publicPolicies.fields.conditions.noFields")}),_jsxruntime.jsx.call(void 0, _material.Box,{sx:{display:"flex",alignItems:"center",px:1.5,py:.35,borderRadius:"999px",backgroundColor:"#f3f4f6",border:"1px solid #d1d9e0"},children:_jsxruntime.jsx.call(void 0, _material.FormControlLabel,{control:_jsxruntime.jsx.call(void 0, _material.Switch,{size:"small",checked:u,onChange:()=>h(g=>!g),disabled:i,color:"primary",sx:{transform:"scale(1.15)",transformOrigin:"center",m:0}}),label:n("publicPolicies.fields.conditions.customEdit"),labelPlacement:"end",sx:{ml:0,".MuiFormControlLabel-label":{fontSize:"0.75rem"}}})})]}),u&&_jsxruntime.jsxs.call(void 0, _material.Box,{ref:d,sx:{p:2,border:"1px solid #d1d9e0",borderRadius:1,backgroundColor:"#f6f8fa"},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2},children:n("publicPolicies.fields.conditions.help")}),_jsxruntime.jsx.call(void 0, _material.Stack,{spacing:1,children:o.map(g=>{let m=s(g);return _jsxruntime.jsxs.call(void 0, _material.Stack,{direction:"row",spacing:1,alignItems:"center",children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",sx:{minWidth:100,fontFamily:"monospace"},children:g}),_jsxruntime.jsxs.call(void 0, _material.ToggleButtonGroup,{value:m,exclusive:!0,size:"small",children:[_jsxruntime.jsxs.call(void 0, _material.ToggleButton,{value:"allow",onClick:()=>y(g,"allow"),disabled:i,sx:{px:2,color:m==="allow"?"#ffffff":"#6b7280",backgroundColor:m==="allow"?"#16a34a":"#f3f4f6",borderColor:m==="allow"?"#16a34a":"#d1d5db","&:hover":{backgroundColor:m==="allow"?"#15803d":"#e5e7eb",borderColor:m==="allow"?"#15803d":"#9ca3af"},"&.Mui-selected":{backgroundColor:"#16a34a",color:"#ffffff","&:hover":{backgroundColor:"#15803d"}}},children:[_jsxruntime.jsx.call(void 0, _iconsmaterial.CheckCircle,{sx:{fontSize:16,mr:.5}}),n("publicPolicies.fields.conditions.states.allow")]}),_jsxruntime.jsx.call(void 0, _material.ToggleButton,{value:"owner_allow",onClick:()=>y(g,"owner_allow"),disabled:i,sx:{px:2,color:m==="owner_allow"?"#ffffff":"#6b7280",backgroundColor:m==="owner_allow"?"#0ea5e9":"#f3f4f6",borderColor:m==="owner_allow"?"#0ea5e9":"#d1d5db","&:hover":{backgroundColor:m==="owner_allow"?"#0284c7":"#e5e7eb",borderColor:m==="owner_allow"?"#0284c7":"#9ca3af"},"&.Mui-selected":{backgroundColor:"#0ea5e9",color:"#ffffff","&:hover":{backgroundColor:"#0284c7"}}},children:n("publicPolicies.fields.conditions.states.ownerAllow")}),_jsxruntime.jsxs.call(void 0, _material.ToggleButton,{value:"deny",onClick:()=>y(g,"deny"),disabled:i,sx:{px:2,color:m==="deny"?"#ffffff":"#6b7280",backgroundColor:m==="deny"?"#dc2626":"#f3f4f6",borderColor:m==="deny"?"#dc2626":"#d1d5db","&:hover":{backgroundColor:m==="deny"?"#b91c1c":"#e5e7eb",borderColor:m==="deny"?"#b91c1c":"#9ca3af"},"&.Mui-selected":{backgroundColor:"#dc2626",color:"#ffffff","&:hover":{backgroundColor:"#b91c1c"}}},children:[_jsxruntime.jsx.call(void 0, _iconsmaterial.Cancel,{sx:{fontSize:16,mr:.5}}),n("publicPolicies.fields.conditions.states.deny")]})]})]},g)})})]}),t&&_jsxruntime.jsx.call(void 0, _material.FormHelperText,{error:!0,sx:{mt:1},children:t})]})},Ir=ti;var yi=_react.forwardRef.call(void 0, ({policy:e,onChange:r,onRemove:o,availableFields:t,isSubmitting:i=!1,usedActions:n,error:l},a)=>{let{t:u}=_reacti18next.useTranslation.call(void 0, ),h=new Set(Array.from(n||[]));h.delete(e.action);let d=jo.map(b=>({value:b,label:u(`publicPolicies.fields.action.options.${b}`)}));return _jsxruntime.jsxs.call(void 0, _material.Paper,{ref:a,sx:{p:3,border:"1px solid #d1d9e0",borderRadius:2,position:"relative",backgroundColor:"#ffffff"},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",mb:3},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"subtitle1",sx:{fontWeight:600,color:"#111418",fontSize:"1rem"},children:u("publicPolicies.policyTitle")}),_jsxruntime.jsx.call(void 0, _material.IconButton,{onClick:o,size:"small",disabled:i,"aria-label":u("publicPolicies.removePolicy"),sx:{color:"#656d76","&:hover":{color:"#cf222e",backgroundColor:"rgba(207, 34, 46, 0.1)"}},children:_jsxruntime.jsx.call(void 0, _iconsmaterial.Delete,{})})]}),_jsxruntime.jsxs.call(void 0, _material.Stack,{spacing:1,children:[_jsxruntime.jsx.call(void 0, _material.Stack,{direction:{xs:"column",md:"row"},spacing:2,children:_jsxruntime.jsx.call(void 0, _material.Box,{sx:{flex:1,minWidth:200},children:_jsxruntime.jsxs.call(void 0, _material.FormControl,{fullWidth:!0,children:[_jsxruntime.jsx.call(void 0, _material.InputLabel,{children:u("publicPolicies.fields.action.label")}),_jsxruntime.jsx.call(void 0, _material.Select,{value:e.action,label:u("publicPolicies.fields.action.label"),disabled:i,onChange:b=>{let w=b.target.value,c={...e,action:w};w==="delete"?(c.permission="deny",delete c.fields):(c.fields={allow:[],owner_allow:[],deny:t},delete c.permission),r(c)},sx:{backgroundColor:"#ffffff","&:hover .MuiOutlinedInput-notchedOutline":{borderColor:"#8c959f"},"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"#0969da",borderWidth:2}},children:d.map(b=>{let w=h.has(b.value);return _jsxruntime.jsx.call(void 0, _material.MenuItem,{value:b.value,disabled:w,children:b.label},b.value)})}),l&&_jsxruntime.jsx.call(void 0, _material.FormHelperText,{error:!0,children:l})]})})}),e.action==="delete"?_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",sx:{mb:2},children:u("publicPolicies.fields.conditions.label")}),_jsxruntime.jsxs.call(void 0, _material.Stack,{direction:"row",spacing:1,sx:{mb:1},children:[_jsxruntime.jsx.call(void 0, _material.Button,{variant:e.permission==="*"?"contained":"outlined",startIcon:_jsxruntime.jsx.call(void 0, _iconsmaterial.SelectAll,{}),onClick:()=>r({...e,permission:"*"}),disabled:i,size:"small",sx:{minWidth:140,whiteSpace:"nowrap",...e.permission==="*"&&{backgroundColor:"#16a34a","&:hover":{backgroundColor:"#15803d"}}},children:u("publicPolicies.fields.conditions.allFields")}),_jsxruntime.jsx.call(void 0, _material.Button,{variant:e.permission==="owner"?"contained":"outlined",onClick:()=>r({...e,permission:"owner"}),disabled:i,size:"small",sx:{minWidth:140,whiteSpace:"nowrap",...e.permission==="owner"&&{backgroundColor:"#0ea5e9","&:hover":{backgroundColor:"#0284c7"}}},children:u("publicPolicies.fields.conditions.states.ownerAllow")}),_jsxruntime.jsx.call(void 0, _material.Button,{variant:e.permission==="deny"?"contained":"outlined",startIcon:_jsxruntime.jsx.call(void 0, _iconsmaterial.ClearAll,{}),onClick:()=>r({...e,permission:"deny"}),disabled:i,size:"small",sx:{minWidth:140,whiteSpace:"nowrap",...e.permission==="deny"&&{backgroundColor:"#cf222e","&:hover":{backgroundColor:"#bc1f2c"}}},children:u("publicPolicies.fields.conditions.noFields")})]})]}):_jsxruntime.jsx.call(void 0, Ir,{value:e.fields||{allow:[],owner_allow:[],deny:[]},onChange:b=>r({...e,fields:b}),availableFields:t,disabled:i}),_jsxruntime.jsx.call(void 0, _material.Paper,{variant:"outlined",sx:{p:2,backgroundColor:"#f9fafb"},children:e.action==="delete"?_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",sx:{fontFamily:"monospace",color:"text.secondary"},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"span",sx:{color:e.permission==="*"?"#16a34a":e.permission==="owner"?"#0ea5e9":"#dc2626"},children:[u("publicPolicies.fields.conditions.states.allow"),":"]})," ",e.permission||"-"]}):_jsxruntime.jsxs.call(void 0, _material.Stack,{spacing:.5,divider:_jsxruntime.jsx.call(void 0, _material.Divider,{sx:{borderColor:"#e5e7eb"}}),children:[_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",sx:{fontFamily:"monospace",color:"text.secondary"},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"span",sx:{color:"#16a34a"},children:[u("publicPolicies.fields.conditions.states.allow"),":"]})," ",(_optionalChain([e, 'optionalAccess', _54 => _54.fields, 'optionalAccess', _55 => _55.allow])||[]).join(", ")||"-"]}),_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",sx:{fontFamily:"monospace",color:"text.secondary"},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"span",sx:{color:"#0ea5e9"},children:[u("publicPolicies.fields.conditions.states.ownerAllow"),":"]})," ",(_optionalChain([e, 'optionalAccess', _56 => _56.fields, 'optionalAccess', _57 => _57.owner_allow])||[]).join(", ")||"-"]}),_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",sx:{fontFamily:"monospace",color:"text.secondary"},children:[_jsxruntime.jsxs.call(void 0, _material.Box,{component:"span",sx:{color:"#dc2626"},children:[u("publicPolicies.fields.conditions.states.deny"),":"]})," ",(_optionalChain([e, 'optionalAccess', _58 => _58.fields, 'optionalAccess', _59 => _59.deny])||[]).join(", ")||"-"]})]})})]})]})}),Lr=yi;var Pi=()=>typeof globalThis<"u"&&_optionalChain([globalThis, 'access', _60 => _60.crypto, 'optionalAccess', _61 => _61.randomUUID])?globalThis.crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`,Ti=({policies:e,onChange:r,availableFields:o,errors:t,isSubmitting:i=!1})=>{let{t:n}=_reacti18next.useTranslation.call(void 0, ),l=_react.useRef.call(void 0, {}),a=new Set((e||[]).map(s=>s.action).filter(Boolean)),u=Ko.filter(s=>!a.has(s)),h=u.length>0,d=()=>{let s=u[0]||"create",y={id:Pi(),action:s};s==="delete"?y.permission="deny":y.fields={allow:[],owner_allow:[],deny:o};let g=[...e||[],y];r(g),setTimeout(()=>{let m=g.length-1,f=l.current[m];f&&f.scrollIntoView({behavior:"smooth",block:"center"})},100)},b=s=>{let y=[...e];y.splice(s,1),r(y)},w=(()=>{if(!t)return null;if(typeof t=="string")return t;let s=t._error;return typeof s=="string"?s:null})(),c=new Set((e||[]).map(s=>s.action));return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, _material.Divider,{sx:{borderColor:"#e0e4e7"}}),_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Box,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:3,children:_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h6",sx:{fontWeight:600,color:"#111418",mb:1},children:n("publicPolicies.title")}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",sx:{fontSize:"0.875rem"},children:n("publicPolicies.description")})]})}),w&&_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"error",sx:{mb:3},children:w}),_jsxruntime.jsxs.call(void 0, _material.Stack,{spacing:3,children:[(e||[]).length===0?_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"info",children:n("publicPolicies.noPolicies")}):e.map((s,y)=>_jsxruntime.jsx.call(void 0, Lr,{ref:g=>{l.current[y]=g},policy:s,onChange:g=>{let m=[...e];m[y]=g,r(m)},onRemove:()=>b(y),availableFields:o,isSubmitting:i,usedActions:c,error:typeof t=="object"&&t!==null&&!("_error"in t)&&s.id in t?t[s.id]:void 0},s.id)),h&&_jsxruntime.jsx.call(void 0, _material.Box,{children:_jsxruntime.jsx.call(void 0, _material.Button,{type:"button",variant:"outlined",startIcon:_jsxruntime.jsx.call(void 0, _iconsmaterial.Add,{}),onClick:d,disabled:i,sx:{borderColor:"#d0d7de",color:"#656d76","&:hover":{borderColor:"#8c959f",backgroundColor:"transparent"}},children:n("publicPolicies.addPolicy")})})]})]})]})},Xl= exports.s =Ti;function oc(){let[e,r]=_react.useState.call(void 0, ""),[o,t]=_react.useState.call(void 0, ""),[i,n]=_react.useState.call(void 0, !1),{isAuthenticated:l,isLoading:a,error:u,login:h,logout:d,refreshTokens:b,clearError:w,isExpiringSoon:c,expiresIn:s}=_chunk6ONAT4QUjs.l.call(void 0, ),y=async f=>{if(f.preventDefault(),!e||!o)return;(await h(e,o)).success&&(r(""),t(""),n(!1))},g=async()=>{await d()},m=async()=>{await b()};return l?_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{maxWidth:600,mx:"auto",p:3},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h4",gutterBottom:!0,children:"Welcome! \u{1F389}"}),_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"success",sx:{mb:3},children:"You are successfully logged in with Refresh Token Pattern enabled"}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{mb:3,p:2,bgcolor:"background.paper",border:1,borderColor:"divider",borderRadius:1},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h6",gutterBottom:!0,children:"Token Status"}),_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"body2",color:"text.secondary",children:["Access Token expires in: ",Math.round(s/1e3/60)," minutes"]}),c&&_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"warning",sx:{mt:1},children:"Token expires soon - automatic refresh will happen"})]}),_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[_jsxruntime.jsx.call(void 0, _material.Button,{variant:"contained",onClick:m,disabled:a,startIcon:a?_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:16}):null,children:"Refresh Tokens"}),_jsxruntime.jsx.call(void 0, _material.Button,{variant:"outlined",color:"error",onClick:g,disabled:a,children:"Logout"})]}),u&&_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"error",sx:{mt:2},onClose:w,children:u})]}):_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{maxWidth:400,mx:"auto",p:3},children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"h4",gutterBottom:!0,align:"center",children:"Login with Refresh Tokens"}),_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"info",sx:{mb:3},children:"This demo shows the new Refresh Token Pattern with automatic session management"}),i?_jsxruntime.jsxs.call(void 0, "form",{onSubmit:y,children:[_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,label:"Email",type:"email",value:e,onChange:f=>r(f.target.value),margin:"normal",required:!0,autoComplete:"email"}),_jsxruntime.jsx.call(void 0, _material.TextField,{fullWidth:!0,label:"Password",type:"password",value:o,onChange:f=>t(f.target.value),margin:"normal",required:!0,autoComplete:"current-password"}),_jsxruntime.jsx.call(void 0, _material.Button,{type:"submit",fullWidth:!0,variant:"contained",size:"large",disabled:a,startIcon:a?_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:16}):null,sx:{mt:3,mb:2},children:a?"Logging in...":"Login"})]}):_jsxruntime.jsx.call(void 0, _material.Button,{fullWidth:!0,variant:"contained",size:"large",onClick:()=>n(!0),sx:{mt:2},children:"Show Login Form"}),u&&_jsxruntime.jsx.call(void 0, _material.Alert,{severity:"error",sx:{mt:2},onClose:w,children:u})]})}function tc(){let{isAuthenticated:e,isLoading:r,isExpiringSoon:o,expiresIn:t}=_chunk6ONAT4QUjs.l.call(void 0, );return r?_jsxruntime.jsxs.call(void 0, _material.Box,{sx:{display:"flex",alignItems:"center",gap:1},children:[_jsxruntime.jsx.call(void 0, _material.CircularProgress,{size:16}),_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",children:"Loading session..."})]}):e?_jsxruntime.jsxs.call(void 0, _material.Box,{children:[_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",color:"success.main",children:"\u2713 Authenticated"}),o&&_jsxruntime.jsxs.call(void 0, _material.Typography,{variant:"caption",color:"warning.main",display:"block",children:["\u26A0 Token expires in ",Math.round(t/1e3/60)," min"]})]}):_jsxruntime.jsx.call(void 0, _material.Typography,{variant:"caption",color:"text.secondary",children:"Not logged in"})}var _TextField = require('@mui/material/TextField'); var _TextField2 = _interopRequireDefault(_TextField);var _CircularProgress = require('@mui/material/CircularProgress'); var _CircularProgress2 = _interopRequireDefault(_CircularProgress);var _InputAdornment = require('@mui/material/InputAdornment'); var _InputAdornment2 = _interopRequireDefault(_InputAdornment);var _IconButton = require('@mui/material/IconButton'); var _IconButton2 = _interopRequireDefault(_IconButton);var _Refresh = require('@mui/icons-material/Refresh'); var _Refresh2 = _interopRequireDefault(_Refresh);var Ai=e=>e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/javascript:/gi,"").replace(/on\w+\s*=/gi,"").replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi,""),Li=({html:e})=>_jsxruntime.jsx.call(void 0, "span",{dangerouslySetInnerHTML:{__html:Ai(e)}}),pc= exports.v =({config:e,value:r,onChange:o,label:t,error:i=!1,helperText:n,readOnly:l=!1,disabled:a=!1})=>{let{value:u,loading:h,error:d,regenerate:b}=_chunk6ONAT4QUjs.o.call(void 0, e,{autoFetch:!r,onSuccess:m=>{_optionalChain([o, 'optionalCall', _62 => _62(m)])}}),w=r||u,c=i||!!d,s=d||n,y=c&&s&&(s.toLowerCase().includes("duplicate")||s.toLowerCase().includes("duplicado")||s.toLowerCase().includes("duplicada")||s.toLowerCase().includes("unique")||s.toLowerCase().includes("\xFAnico")||s.toLowerCase().includes("unico")||s.toLowerCase().includes("\xFAnica")||s.toLowerCase().includes("unica")||s.toLowerCase().includes("already exists")||s.toLowerCase().includes("ya existe")||s.toLowerCase().includes("e11000"));return _jsxruntime.jsx.call(void 0, _TextField2.default,{label:t,fullWidth:!0,value:w,error:c,helperText:s?_jsxruntime.jsx.call(void 0, Li,{html:s}):" ",disabled:a,InputProps:{readOnly:!0,startAdornment:h?_jsxruntime.jsx.call(void 0, _InputAdornment2.default,{position:"start",children:_jsxruntime.jsx.call(void 0, _CircularProgress2.default,{size:20})}):void 0,endAdornment:y&&!h?_jsxruntime.jsx.call(void 0, _InputAdornment2.default,{position:"end",children:_jsxruntime.jsx.call(void 0, _IconButton2.default,{edge:"end",onClick:async()=>{!a&&!h&&await b()},disabled:a,size:"small",color:"error","aria-label":"regenerar c\xF3digo",title:"Regenerar c\xF3digo",children:_jsxruntime.jsx.call(void 0, _Refresh2.default,{})})}):void 0}})};var _Box = require('@mui/material/Box'); var _Box2 = _interopRequireDefault(_Box);var _Typography = require('@mui/material/Typography'); var _Typography2 = _interopRequireDefault(_Typography);var _LinearProgress = require('@mui/material/LinearProgress'); var _LinearProgress2 = _interopRequireDefault(_LinearProgress);var _Chip = require('@mui/material/Chip'); var _Chip2 = _interopRequireDefault(_Chip);var _Paper = require('@mui/material/Paper'); var _Paper2 = _interopRequireDefault(_Paper);var _List = require('@mui/material/List'); var _List2 = _interopRequireDefault(_List);var _ListItem = require('@mui/material/ListItem'); var _ListItem2 = _interopRequireDefault(_ListItem);var _ListItemText = require('@mui/material/ListItemText'); var _ListItemText2 = _interopRequireDefault(_ListItemText);var _ListItemSecondaryAction = require('@mui/material/ListItemSecondaryAction'); var _ListItemSecondaryAction2 = _interopRequireDefault(_ListItemSecondaryAction);var _FormHelperText = require('@mui/material/FormHelperText'); var _FormHelperText2 = _interopRequireDefault(_FormHelperText);var _Dialog = require('@mui/material/Dialog'); var _Dialog2 = _interopRequireDefault(_Dialog);var _DialogTitle = require('@mui/material/DialogTitle'); var _DialogTitle2 = _interopRequireDefault(_DialogTitle);var _DialogContent = require('@mui/material/DialogContent'); var _DialogContent2 = _interopRequireDefault(_DialogContent);var _DialogActions = require('@mui/material/DialogActions'); var _DialogActions2 = _interopRequireDefault(_DialogActions);var _Button = require('@mui/material/Button'); var _Button2 = _interopRequireDefault(_Button);var _CloudUpload = require('@mui/icons-material/CloudUpload'); var _CloudUpload2 = _interopRequireDefault(_CloudUpload);var _InsertDriveFile = require('@mui/icons-material/InsertDriveFile'); var _InsertDriveFile2 = _interopRequireDefault(_InsertDriveFile);var _Image = require('@mui/icons-material/Image'); var _Image2 = _interopRequireDefault(_Image);var _PictureAsPdf = require('@mui/icons-material/PictureAsPdf'); var _PictureAsPdf2 = _interopRequireDefault(_PictureAsPdf);var _Delete = require('@mui/icons-material/Delete'); var _Delete2 = _interopRequireDefault(_Delete);var _Restore = require('@mui/icons-material/Restore'); var _Restore2 = _interopRequireDefault(_Restore);var _Error = require('@mui/icons-material/Error'); var _Error2 = _interopRequireDefault(_Error);var _BrokenImage = require('@mui/icons-material/BrokenImage'); var _BrokenImage2 = _interopRequireDefault(_BrokenImage);var Zi=e=>e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/javascript:/gi,"").replace(/on\w+\s*=/gi,"").replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi,""),Qi=e=>{if(e===0)return"0 B";let r=1024,o=["B","KB","MB","GB"],t=Math.floor(Math.log(e)/Math.log(r));return`${parseFloat((e/Math.pow(r,t)).toFixed(1))} ${o[t]}`},es=e=>e.startsWith("image/")?_jsxruntime.jsx.call(void 0, _Image2.default,{color:"primary"}):e==="application/pdf"?_jsxruntime.jsx.call(void 0, _PictureAsPdf2.default,{color:"error"}):_jsxruntime.jsx.call(void 0, _InsertDriveFile2.default,{color:"action"}),rs=(e,r)=>{switch(e){case"completed":return _jsxruntime.jsx.call(void 0, _CheckCircle2.default,{color:"success",fontSize:"small"});case"error":return _jsxruntime.jsx.call(void 0, _Error2.default,{color:"error",fontSize:"small"});case"uploading":case"pending":return _jsxruntime.jsx.call(void 0, _CircularProgress2.default,{size:16});case"removing":return _jsxruntime.jsx.call(void 0, _CircularProgress2.default,{size:16,color:"error"});case"pendingDeletion":return _jsxruntime.jsx.call(void 0, _Chip2.default,{label:r("base.file.pendingDeletion"),size:"small",color:"warning",variant:"outlined",sx:{fontSize:"0.65rem",height:20}});default:return null}},os=({file:e,baseUrl:r,disabled:o,onRemove:t,onRestore:i,onRetry:n})=>{let{t:l}=Me(),[a,u]=_react.useState.call(void 0, !1),h=e.status==="pendingDeletion",d=!o&&e.status!=="uploading"&&e.status!=="removing"&&!h,b=!o&&h,w=!o&&e.status==="error"&&e.file,c=e.contentType.startsWith("image/"),s=e.visibility==="public"||_optionalChain([e, 'access', _63 => _63.filePath, 'optionalAccess', _64 => _64.startsWith, 'call', _65 => _65("public/")])||_optionalChain([e, 'access', _66 => _66.filePath, 'optionalAccess', _67 => _67.startsWith, 'call', _68 => _68(r)]),g=!e.filePath||!s?null:e.filePath.startsWith("http://")||e.filePath.startsWith("https://")||e.filePath.startsWith(r)?e.filePath:`${r}${e.filePath}`,m=e.status==="completed"&&g,f=()=>c&&m&&!a?_jsxruntime.jsx.call(void 0, _Box2.default,{component:m?"a":"div",href:g||void 0,target:"_blank",rel:"noopener noreferrer",sx:{width:48,height:48,borderRadius:1,overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"center",bgcolor:"grey.100",border:"1px solid",borderColor:"divider",cursor:m?"pointer":"default",transition:"all 0.2s ease",flexShrink:0,"&:hover":m?{borderColor:"primary.main",transform:"scale(1.05)"}:{}},children:_jsxruntime.jsx.call(void 0, "img",{src:g,alt:e.name,style:{width:"100%",height:"100%",objectFit:"cover"},onError:()=>u(!0)})}):_jsxruntime.jsx.call(void 0, _Box2.default,{component:m?"a":"div",href:g||void 0,target:"_blank",rel:"noopener noreferrer",sx:{width:48,height:48,borderRadius:1,display:"flex",alignItems:"center",justifyContent:"center",bgcolor:"grey.50",border:"1px solid",borderColor:"divider",cursor:m?"pointer":"default",transition:"all 0.2s ease",flexShrink:0,textDecoration:"none","&:hover":m?{borderColor:"primary.main",bgcolor:"action.hover"}:{}},children:es(e.contentType)});return _jsxruntime.jsxs.call(void 0, _ListItem2.default,{sx:{borderRadius:1,mb:.5,bgcolor:e.status==="error"?"error.lighter":"background.paper",border:"1px solid",borderColor:e.status==="error"?"error.light":"divider",gap:1.5},children:[f(),_jsxruntime.jsx.call(void 0, _ListItemText2.default,{primary:_jsxruntime.jsxs.call(void 0, _Box2.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[_jsxruntime.jsx.call(void 0, _Typography2.default,{variant:"body2",noWrap:!0,sx:{maxWidth:200,overflow:"hidden",textOverflow:"ellipsis",textDecoration:h?"line-through":"none",opacity:h?.6:1},children:e.name}),rs(e.status,l)]}),secondary:_jsxruntime.jsxs.call(void 0, _Box2.default,{sx:{opacity:h?.6:1},children:[e.size>0&&_jsxruntime.jsx.call(void 0, _Typography2.default,{variant:"caption",color:"text.secondary",children:Qi(e.size)}),e.status==="uploading"&&_jsxruntime.jsx.call(void 0, _LinearProgress2.default,{variant:"determinate",value:e.progress,sx:{mt:.5,height:4,borderRadius:2}}),e.status==="error"&&e.errorMessage&&_jsxruntime.jsx.call(void 0, _Typography2.default,{variant:"caption",color:"error",display:"block",children:e.errorMessage}),m&&_jsxruntime.jsx.call(void 0, _Typography2.default,{variant:"caption",color:"primary",display:"block",component:"a",href:g||void 0,target:"_blank",rel:"noopener noreferrer",sx:{cursor:"pointer",textDecoration:"underline","&:hover":{textDecoration:"none"}},children:l(c?"base.file.clickToPreview":"base.file.clickToDownload")})]})}),_jsxruntime.jsxs.call(void 0, _ListItemSecondaryAction2.default,{children:[w&&_jsxruntime.jsx.call(void 0, _IconButton2.default,{edge:"end",size:"small",onClick:()=>n(e.id),color:"primary",title:l("base.file.restore"),children:_jsxruntime.jsx.call(void 0, _Refresh2.default,{fontSize:"small"})}),b&&_jsxruntime.jsx.call(void 0, _IconButton2.default,{edge:"end",size:"small",onClick:()=>i(e.id),color:"primary",title:l("base.file.restore"),children:_jsxruntime.jsx.call(void 0, _Restore2.default,{fontSize:"small"})}),d&&_jsxruntime.jsx.call(void 0, _IconButton2.default,{edge:"end",size:"small",onClick:()=>t(e.id),color:"error",title:l("base.file.delete"),children:_jsxruntime.jsx.call(void 0, _Delete2.default,{fontSize:"small"})})]})]})};var qc=({label:e,accept:r,maxFileSize:o=10*1024*1024,multiple:t=!1,maxFiles:i,minFiles:n=0,required:l=!1,disabled:a=!1,error:u=!1,helperText:h,onChange:d,onValidation:b,initialFiles:w,placeholder:c,showFileList:s=!0,visibility:y="private",showPreview:g=!0,baseUrl:m,onDeletionHandlersReady:f,mode:v="create"})=>{let{t:k}=Me(),z=_react.useRef.call(void 0, null),[p,C]=_react.useState.call(void 0, !1),[I,A]=_react.useState.call(void 0, !1),[Y,le]=_react.useState.call(void 0, null),[Q,ne]=_react.useState.call(void 0, !1),Oe=t?i:1,Ie=l?Math.max(n,1):n,H={acceptedTypes:r,maxFileSize:o,maxFiles:Oe,minFiles:Ie,visibility:y,mode:v,onFilesChange:L=>{let ce=L.filter(Je=>Je.status==="completed"&&Je.filePath).map(Je=>{let gr=Je.filePath;return gr.startsWith("/")?gr:`/${gr}`});_optionalChain([d, 'optionalCall', _69 => _69(ce)])}},{files:V,isUploading:ee,addFiles:R,removeFile:S,restoreFile:W,retryUpload:ie,isValid:re,validationError:Ue,validationErrorKey:Re,validationErrorParams:Ae,initializeFiles:Xe,isTouched:Or,markAsTouched:E,isSubmitted:D,markAsSubmitted:M,getPreviewUrl:q,commitDeletions:G,restorePendingDeletions:X,hasPendingDeletions:ye,deleteFileImmediately:Ur,activeFiles:Ps,activeFileCount:ct,waitForUploads:Mr,completedFilePaths:Nr}=_chunk6ONAT4QUjs.r.call(void 0, H),Wr=_react.useCallback.call(void 0, ()=>Nr,[Nr]),Hr=_react.useRef.call(void 0, !1);_react2.default.useEffect(()=>{w&&w.length>0&&!Hr.current&&(Hr.current=!0,Xe(w,m))},[w,Xe,m]),_react2.default.useEffect(()=>{_optionalChain([b, 'optionalCall', _70 => _70(re,Ue)])},[re,Ue,b]),_react2.default.useEffect(()=>{_optionalChain([f, 'optionalCall', _71 => _71({commitDeletions:G,restorePendingDeletions:X,hasPendingDeletions:ye,markAsSubmitted:M,isValid:re,isUploading:ee,waitForUploads:Mr,getCompletedFilePaths:Wr})])},[f,G,X,ye,M,re,ee,Mr,Wr]);let dt=_react.useCallback.call(void 0, L=>{E();let ce=L.target.files;ce&&ce.length>0&&R(ce),z.current&&(z.current.value="")},[R,E]),ut=_react.useCallback.call(void 0, ()=>{a||_optionalChain([z, 'access', _72 => _72.current, 'optionalAccess', _73 => _73.click, 'call', _74 => _74()])},[a]),pt=_react.useCallback.call(void 0, L=>{L.preventDefault(),L.stopPropagation(),a||C(!0)},[a]),gt=_react.useCallback.call(void 0, L=>{L.preventDefault(),L.stopPropagation(),C(!1)},[]),mt=_react.useCallback.call(void 0, L=>{if(L.preventDefault(),L.stopPropagation(),C(!1),a)return;E();let ce=L.dataTransfer.files;ce&&ce.length>0&&R(ce)},[a,R,E]),ft=_react.useCallback.call(void 0, async L=>{(await S(L)).needsConfirmation&&(le(L),A(!0))},[S]),yt=_react.useCallback.call(void 0, async()=>{if(Y){ne(!0);try{let L=await Ur(Y);L.success||_chunkCR5KJUSTjs.a.error("Error deleting file",{error:L.error})}finally{ne(!1),A(!1),le(null)}}},[Y,Ur]),Vr=_react.useCallback.call(void 0, ()=>{A(!1),le(null)},[]),ht=_optionalChain([r, 'optionalAccess', _75 => _75.join, 'call', _76 => _76(",")])||"",bt=!a&&(t||ct===0),$r=D&&!re,pr=u||$r,jr=h||($r&&Re?k(Re,Ae):null);return _jsxruntime.jsxs.call(void 0, _Box2.default,{sx:{width:"100%"},children:[e&&_jsxruntime.jsxs.call(void 0, _Typography2.default,{variant:"body2",sx:{mb:1,fontWeight:500,color:pr?"error.main":"text.primary"},children:[e,l&&_jsxruntime.jsx.call(void 0, "span",{style:{color:"red"},children:" *"})]}),_jsxruntime.jsx.call(void 0, "input",{ref:z,type:"file",accept:ht,multiple:t,onChange:dt,disabled:a,style:{display:"none"}}),bt&&_jsxruntime.jsxs.call(void 0, _Paper2.default,{variant:"outlined",onClick:ut,onDragOver:pt,onDragLeave:gt,onDrop:mt,sx:{p:3,textAlign:"center",cursor:a?"not-allowed":"pointer",borderStyle:"dashed",borderWidth:2,borderColor:p?"primary.main":pr?"error.main":"divider",bgcolor:p?"primary.lighter":a?"action.disabledBackground":"background.paper",transition:"all 0.2s ease","&:hover":a?{}:{borderColor:"primary.main",bgcolor:"action.hover"}},children:[_jsxruntime.jsx.call(void 0, _CloudUpload2.default,{sx:{fontSize:48,color:p?"primary.main":a?"action.disabled":"action.active",mb:1}}),_jsxruntime.jsx.call(void 0, _Typography2.default,{variant:"body2",color:a?"text.disabled":"text.secondary",children:c||k(p?"base.file.dropHere":"base.file.dragOrClick")}),r&&r.length>0&&!p&&_jsxruntime.jsx.call(void 0, _Box2.default,{sx:{mt:1,display:"flex",gap:.5,justifyContent:"center",flexWrap:"wrap"},children:r.map(L=>_jsxruntime.jsx.call(void 0, _Chip2.default,{label:_optionalChain([L, 'access', _77 => _77.split, 'call', _78 => _78("/"), 'access', _79 => _79[1], 'optionalAccess', _80 => _80.toUpperCase, 'call', _81 => _81()])||L,size:"small",variant:"outlined",sx:{fontSize:"0.7rem"}},L))})]}),s&&V.length>0&&_jsxruntime.jsx.call(void 0, _List2.default,{dense:!0,sx:{mt:1,p:0},children:V.map(L=>_jsxruntime.jsx.call(void 0, os,{file:L,baseUrl:m,disabled:a,onRemove:ft,onRestore:W,onRetry:ie},L.id))}),ee&&_jsxruntime.jsxs.call(void 0, _Box2.default,{sx:{display:"flex",alignItems:"center",gap:1,mt:1},children:[_jsxruntime.jsx.call(void 0, _CircularProgress2.default,{size:16}),_jsxruntime.jsx.call(void 0, _Typography2.default,{variant:"caption",color:"text.secondary",children:k("base.file.uploading")})]}),jr&&_jsxruntime.jsx.call(void 0, _FormHelperText2.default,{error:pr,sx:{mt:.5},dangerouslySetInnerHTML:{__html:Zi(jr)}}),_jsxruntime.jsxs.call(void 0, _Dialog2.default,{open:I,onClose:Q?void 0:Vr,children:[_jsxruntime.jsx.call(void 0, _DialogTitle2.default,{children:k("base.file.confirmDelete.title")}),_jsxruntime.jsx.call(void 0, _DialogContent2.default,{children:_jsxruntime.jsx.call(void 0, _Typography2.default,{children:k("base.file.confirmDelete.message")})}),_jsxruntime.jsxs.call(void 0, _DialogActions2.default,{children:[_jsxruntime.jsx.call(void 0, _Button2.default,{onClick:Vr,disabled:Q,children:k("base.file.confirmDelete.cancel")}),_jsxruntime.jsx.call(void 0, _Button2.default,{onClick:yt,color:"error",variant:"contained",disabled:Q,startIcon:Q?_jsxruntime.jsx.call(void 0, _CircularProgress2.default,{size:16,color:"inherit"}):void 0,children:k(Q?"base.file.deleting":"base.file.confirmDelete.confirm")})]})]})]})};var _editor = require('@mdxeditor/editor');require('@mdxeditor/editor/style.css');var td=({label:e,value:r="",onChange:o,required:t=!1,disabled:i=!1,error:n=!1,helperText:l,placeholder:a="Write here...",minHeight:u=200,maxHeight:h=500})=>{let d=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{d.current&&d.current.getMarkdown()!==r&&d.current.setMarkdown(r||"")},[r]);let b=_react.useCallback.call(void 0, w=>{_optionalChain([o, 'optionalCall', _82 => _82(w)])},[o]);return _jsxruntime.jsxs.call(void 0, _Box2.default,{sx:{width:"100%"},children:[e&&_jsxruntime.jsxs.call(void 0, _Typography2.default,{component:"label",sx:{display:"block",mb:.5,fontSize:"0.875rem",fontWeight:500,color:n?"error.main":"text.primary"},children:[e,t&&_jsxruntime.jsx.call(void 0, _Typography2.default,{component:"span",color:"error.main",sx:{ml:.5},children:"*"})]}),_jsxruntime.jsx.call(void 0, _Box2.default,{sx:{border:1,borderColor:n?"error.main":"divider",borderRadius:1,overflow:"hidden",opacity:i?.6:1,pointerEvents:i?"none":"auto","& .mdxeditor":{minHeight:u,maxHeight:h,overflow:"auto"},"& .mdxeditor-toolbar":{borderBottom:1,borderColor:"divider",backgroundColor:"background.default"},"& .mdxeditor-root-contenteditable":{padding:2,minHeight:u-50}},children:_jsxruntime.jsx.call(void 0, _editor.MDXEditor,{ref:d,markdown:r||"",onChange:b,placeholder:a,readOnly:i,plugins:[_editor.headingsPlugin.call(void 0, ),_editor.listsPlugin.call(void 0, ),_editor.quotePlugin.call(void 0, ),_editor.thematicBreakPlugin.call(void 0, ),_editor.markdownShortcutPlugin.call(void 0, ),_editor.linkPlugin.call(void 0, ),_editor.linkDialogPlugin.call(void 0, ),_editor.tablePlugin.call(void 0, ),_editor.toolbarPlugin.call(void 0, {toolbarContents:()=>_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, _editor.UndoRedo,{}),_jsxruntime.jsx.call(void 0, _editor.Separator,{}),_jsxruntime.jsx.call(void 0, _editor.BoldItalicUnderlineToggles,{}),_jsxruntime.jsx.call(void 0, _editor.Separator,{}),_jsxruntime.jsx.call(void 0, _editor.BlockTypeSelect,{}),_jsxruntime.jsx.call(void 0, _editor.Separator,{}),_jsxruntime.jsx.call(void 0, _editor.ListsToggle,{}),_jsxruntime.jsx.call(void 0, _editor.Separator,{}),_jsxruntime.jsx.call(void 0, _editor.CreateLink,{}),_jsxruntime.jsx.call(void 0, _editor.InsertTable,{})]})})]})}),l&&_jsxruntime.jsx.call(void 0, _FormHelperText2.default,{error:n,sx:{mx:0,mt:.5},children:l}),!l&&_jsxruntime.jsx.call(void 0, _FormHelperText2.default,{sx:{mx:0,mt:.5},children:"\xA0"})]})};exports.a = ge; exports.b = Rs; exports.c = Ss; exports.d = mr; exports.e = Ze; exports.f = Us; exports.g = Me; exports.h = ao; exports.i = lo; exports.j = Hs; exports.k = uo; exports.l = po; exports.m = go; exports.n = mo; exports.o = ul; exports.p = qn; exports.q = jo; exports.r = Ko; exports.s = Xl; exports.t = oc; exports.u = tc; exports.v = pc; exports.w = qc; exports.x = td;
|
package/dist/components.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkFHKFZDEGjs = require('./chunk-FHKFZDEG.js');var _chunk6ONAT4QUjs = require('./chunk-6ONAT4QU.js');require('./chunk-NSV6ECYO.js');require('./chunk-CR5KJUST.js');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');function z({showBelowMinutes:f=5,position:m="bottom-right",colorNormal:c="#ed6c02",colorCritical:x="#d32f2f",style:u,className:g}={}){let{isAuthenticated:o,tokens:t}=_chunk6ONAT4QUjs.e.call(void 0, ),[i,y]=_react.useState.call(void 0, 0),[h,C]=_react.useState.call(void 0, 100);if(_react.useEffect.call(void 0, ()=>{if(!o||!t)return;let v=setInterval(()=>{let P=Date.now(),p=t.expiresAt-P,w=900*1e3;y(Math.max(0,p)),C(Math.max(0,p/w*100))},1e3);return()=>clearInterval(v)},[o,t]),!o||i<=0)return null;let e=Math.floor(i/6e4),S=Math.floor(i%6e4/1e3);if(e>=f)return null;let s=e<2,a=s?x:c,b={"top-left":{top:"16px",left:"16px"},"top-right":{top:"16px",right:"16px"},"bottom-left":{bottom:"16px",left:"16px"},"bottom-right":{bottom:"16px",right:"16px"}}[m];return _jsxruntime.jsxs.call(void 0, "div",{className:g,style:{position:"fixed",...b,padding:"12px 16px",backgroundColor:"white",borderRadius:"8px",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.15)",minWidth:"200px",zIndex:9999,fontFamily:"system-ui, -apple-system, sans-serif",...u},children:[_jsxruntime.jsxs.call(void 0, "div",{style:{marginBottom:"8px"},children:[_jsxruntime.jsx.call(void 0, "div",{style:{fontSize:"12px",fontWeight:600,color:a,marginBottom:"4px"},children:s?"\u26A0\uFE0F Sesi\xF3n expirando":"\u23F0 Sesi\xF3n por expirar"}),_jsxruntime.jsxs.call(void 0, "div",{style:{fontSize:"14px",color:"#333",fontWeight:500},children:[e,":",S.toString().padStart(2,"0")]})]}),_jsxruntime.jsx.call(void 0, "div",{style:{width:"100%",height:"6px",backgroundColor:"#e0e0e0",borderRadius:"3px",overflow:"hidden"},children:_jsxruntime.jsx.call(void 0, "div",{style:{width:`${h}%`,height:"100%",backgroundColor:a,transition:"width 1s linear"}})})]})}exports.CrudiaAutoGenerate = _chunkFHKFZDEGjs.v; exports.CrudiaFileField = _chunkFHKFZDEGjs.w; exports.CrudiaMarkdownField = _chunkFHKFZDEGjs.x; exports.CrudifyLogin = _chunkFHKFZDEGjs.o; exports.GlobalNotificationProvider = _chunk6ONAT4QUjs.f; exports.LoginComponent = _chunkFHKFZDEGjs.t; exports.Policies = _chunkFHKFZDEGjs.s; exports.SessionStatus = _chunkFHKFZDEGjs.u; exports.SessionTimeIndicator = z; exports.UserProfileDisplay = _chunkFHKFZDEGjs.p; exports.useGlobalNotification = _chunk6ONAT4QUjs.g;
|
package/dist/components.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as N,p as T,s as M,t as k,u as G,v as L,w as A,x as R}from"./chunk-
|
|
1
|
+
import{o as N,p as T,s as M,t as k,u as G,v as L,w as A,x as R}from"./chunk-7KKREBUP.mjs";import{e as d,f as F,g as I}from"./chunk-PTUSZGL4.mjs";import"./chunk-JAPL7EZJ.mjs";import"./chunk-4ILUXVPW.mjs";import{useEffect as B,useState as l}from"react";import{jsx as r,jsxs as n}from"react/jsx-runtime";function z({showBelowMinutes:f=5,position:m="bottom-right",colorNormal:c="#ed6c02",colorCritical:x="#d32f2f",style:u,className:g}={}){let{isAuthenticated:o,tokens:t}=d(),[i,y]=l(0),[h,C]=l(100);if(B(()=>{if(!o||!t)return;let v=setInterval(()=>{let P=Date.now(),p=t.expiresAt-P,w=900*1e3;y(Math.max(0,p)),C(Math.max(0,p/w*100))},1e3);return()=>clearInterval(v)},[o,t]),!o||i<=0)return null;let e=Math.floor(i/6e4),S=Math.floor(i%6e4/1e3);if(e>=f)return null;let s=e<2,a=s?x:c,b={"top-left":{top:"16px",left:"16px"},"top-right":{top:"16px",right:"16px"},"bottom-left":{bottom:"16px",left:"16px"},"bottom-right":{bottom:"16px",right:"16px"}}[m];return n("div",{className:g,style:{position:"fixed",...b,padding:"12px 16px",backgroundColor:"white",borderRadius:"8px",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.15)",minWidth:"200px",zIndex:9999,fontFamily:"system-ui, -apple-system, sans-serif",...u},children:[n("div",{style:{marginBottom:"8px"},children:[r("div",{style:{fontSize:"12px",fontWeight:600,color:a,marginBottom:"4px"},children:s?"\u26A0\uFE0F Sesi\xF3n expirando":"\u23F0 Sesi\xF3n por expirar"}),n("div",{style:{fontSize:"14px",color:"#333",fontWeight:500},children:[e,":",S.toString().padStart(2,"0")]})]}),r("div",{style:{width:"100%",height:"6px",backgroundColor:"#e0e0e0",borderRadius:"3px",overflow:"hidden"},children:r("div",{style:{width:`${h}%`,height:"100%",backgroundColor:a,transition:"width 1s linear"}})})]})}export{L as CrudiaAutoGenerate,A as CrudiaFileField,R as CrudiaMarkdownField,N as CrudifyLogin,F as GlobalNotificationProvider,k as LoginComponent,M as Policies,G as SessionStatus,z as SessionTimeIndicator,T as UserProfileDisplay,I as useGlobalNotification};
|