1import{h as O,i as H,r as m,s as _,j as e,f as I,k as i,T as P,B as w,D as T,t as p,E as x,G as E,F as z}from"./index-BbGE8qkG.js";import{S as B}from"./SiteHeader-D8I_CEt1.js";import{S as Y,a as b,A as J}from"./MultiStep-x0WWs77Z.js";import{T as F}from"./TagsInput-DXuFagIr.js";import{a as L}from"./FileUpload-cr59Z5j-.js";import{I as j}from"./input-CSJwpke0.js";import{C as W}from"./card-Ds54rD6_.js";import{S as c,a as d,b as u,c as h,d as t}from"./select-DoutvRKW.js";import{U as K,A as Q,O as X}from"./talent-match-B0YqvE3h.js";import{S as Z}from"./sparkles-CN4IEGSS.js";import{A as $}from"./arrow-right-DFEMVns7.js";import"./index-DYh2uD_S.js";const y=["Personal","Académico","Habilidades","Documentos"],ee=["JavaScript","Python","React","Node.js","SQL","Excel","Power BI","Figma","AutoCAD","SolidWorks","Git","Java","C++","Comunicación","Trabajo en equipo","Liderazgo"],re=K,v=T({full_name:x().min(2,"Nombre requerido").max(120),matricula:x().min(4,"MatrÃcula requerida").max(20,"MatrÃcula inválida").regex(/^[A-Za-z0-9-]+$/,"Solo letras, números y guiones"),phone:x().max(20).optional().or(E("")),city:x().max(80).optional().or(E("")),career:x().min(2,"Carrera requerida").max(120),quarter:z().int().min(1).max(12).optional(),bio:x().max(500).optional().or(E(""))});function pe(){const{user:n,loading:C}=O(),S=H(),[s,N]=m.useState(0),[k,q]=m.useState(!1),[V,M]=m.useState(!0),A=m.useRef(!1),[a,l]=m.useState({full_name:"",matricula:"",email:"",phone:"",city:"",career:"",quarter:1,academic_level:"",english_level:"B1",desired_opportunity:"internship",preferred_modality:"hybrid",availability:"immediate",skills:[],tools:[],interests:[],bio:"",experience:"",projects:"",linkedin_url:"",portfolio_url:"",cv_url:"",photo_url:""});m.useEffect(()=>{if(!C){if(!n){S({to:"/auth"});return}A.current||(A.current=!0,(async()=>{const{data:r}=await _.from("student_profiles").select("*").eq("user_id",n.id).maybeSingle();l(r?o=>({...o,full_name:r.full_name??"",matricula:r.matricula??"",email:r.email??n.email??"",phone:r.phone??"",city:r.city??"",career:r.career??"",quarter:r.quarter??1,academic_level:r.academic_level??"",english_level:r.english_level??"B1",desired_opportunity:r.desired_opportunity??"internship",preferred_modality:r.preferred_modality??"hybrid",availability:r.availability??"immediate",skills:r.skills??[],tools:r.tools??[],interests:r.interests??[],bio:r.bio??"",experience:r.experience??"",projects:r.projects??"",linkedin_url:r.linkedin_url??"",portfolio_url:r.portfolio_url??"",cv_url:r.cv_url??null,photo_url:r.photo_url??null}):o=>({...o,email:n.email??""})),M(!1)})())}},[n,C,S]);const G=r=>{const o=[r.full_name,r.phone,r.city,r.career,r.quarter,r.bio,r.skills.length>0,r.tools.length>0,r.interests.length>0,r.cv_url,r.photo_url,r.linkedin_url,r.portfolio_url,r.experience,r.projects],f=o.filter(Boolean).length;return Math.round(f/o.length*100)},R=()=>{if(s===0){const r=T({full_name:v.shape.full_name,matricula:v.shape.matricula,phone:v.shape.phone,city:v.shape.city}).safeParse(a);if(!r.success)return p.error(r.error.issues[0].message),!1}if(s===1){const r=T({career:v.shape.career,quarter:v.shape.quarter}).safeParse(a);if(!r.success)return p.error(r.error.issues[0].message),!1;if(!a.academic_level)return p.error("Completa tu grado académico"),!1}return!0},U=async()=>{if(n){if(!a.academic_level){p.error("Completa tu grado académico"),N(1);return}q(!0);try{const r=G(a),o={user_id:n.id,full_name:a.full_name,matricula:a.matricula.trim().toUpperCase(),email:a.email||n.email,phone:a.phone||null,city:a.city||null,career:a.career||null,quarter:a.quarter||null,academic_level:a.academic_level||null,english_level:a.english_level,desired_opportunity:a.desired_opportunity,preferred_modality:a.preferred_modality,availability:a.availability,skills:a.skills,tools:a.tools,interests:a.interests,bio:a.bio||null,experience:a.experience||null,projects:a.projects||null,linkedin_url:a.linkedin_url||null,portfolio_url:a.portfolio_url||null,cv_url:a.cv_url||null,photo_url:a.photo_url||null,completion_score:r},{data:f}=await _.from("student_profiles").select("id").eq("user_id",n.id).maybeSingle();if(f){const{error:g}=await _.from("student_profiles").update(o).eq("id",f.id);if(g)throw g}else{const{error:g}=await _.from("student_profiles").insert(o);if(g)throw g}p.success("Perfil actualizado correctamente"),S({to:"/dashboard/student"})}catch(r){p.error(r instanceof Error?r.message:"Error guardando")}finally{q(!1)}}},D=()=>{R()&&(s<y.length-1?N(s+1):U())};return C||V?e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(B,{}),e.jsx("div",{className:"container mx-auto flex h-96 items-center justify-center",children:e.jsx(I,{className:"h-6 w-6 animate-spin text-primary"})})]}):e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(B,{}),e.jsxs("div",{className:"container mx-auto max-w-3xl px-4 py-10",children:[e.jsxs("div",{className:"mb-6 text-center",children:[e.jsxs("div",{className:"mx-auto mb-3 inline-flex items-center gap-2 rounded-full bg-primary/5 px-3 py-1 text-xs font-medium text-primary",children:[e.jsx(Z,{className:"h-3 w-3"})," Tu perfil = tu match"]}),e.jsx("h1",{className:"text-2xl font-bold tracking-tight md:text-3xl",children:"Crear tu perfil de estudiante"}),e.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:"Completar más campos = mejores recomendaciones de la IA."})]}),e.jsxs(W,{className:"p-6 md:p-8",children:[e.jsx(Y,{steps:y,current:s}),s===0&&e.jsxs(b,{children:[e.jsxs("div",{children:[e.jsx(i,{htmlFor:"full_name",children:"Nombre completo *"}),e.jsx(j,{id:"full_name",value:a.full_name,onChange:r=>l({...a,full_name:r.target.value}),placeholder:"Ej. Ana Pérez Hernández"})]}),e.jsxs("div",{children:[e.jsx(i,{htmlFor:"matricula",children:"MatrÃcula UPY *"}),e.jsx(j,{id:"matricula",value:a.matricula,onChange:r=>l({...a,matricula:r.target.value.toUpperCase()}),placeholder:"Ej. 21030123",maxLength:20}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Tu matrÃcula institucional es obligatoria para validar tu perfil."})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(i,{htmlFor:"phone",children:"Teléfono"}
1),e.jsx(j,{id:"phone",value:a.phone,onChange:r=>l({...a,phone:r.target.value}),placeholder:"999 123 4567"})]}),e.jsxs("div",{children:[e.jsx(i,{htmlFor:"city",children:"Ciudad"}),e.jsx(j,{id:"city",value:a.city,onChange:r=>l({...a,city:r.target.value}),placeholder:"Mérida, Yucatán"})]})]}),e.jsxs("div",{children:[e.jsx(i,{htmlFor:"bio",children:"Bio breve"}),e.jsx(P,{id:"bio",rows:3,value:a.bio,onChange:r=>l({...a,bio:r.target.value}),placeholder:"Cuéntanos sobre ti en 2-3 lÃneas"})]})]}),s===1&&e.jsxs(b,{children:[e.jsxs("div",{children:[e.jsx(i,{htmlFor:"career",children:"Carrera *"}),e.jsxs(c,{value:a.career,onValueChange:r=>l({...a,career:r}),children:[e.jsx(d,{id:"career",children:e.jsx(u,{placeholder:"Selecciona tu carrera"})}),e.jsx(h,{children:re.map(r=>e.jsx(t,{value:r,children:r},r))})]})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(i,{htmlFor:"quarter",children:"Cuatrimestre actual"}),e.jsxs(c,{value:String(a.quarter||1),onValueChange:r=>l({...a,quarter:Number(r)}),children:[e.jsx(d,{id:"quarter",children:e.jsx(u,{})}),e.jsx(h,{children:Array.from({length:12},(r,o)=>o+1).map(r=>e.jsx(t,{value:String(r),children:r},r))})]})]}),e.jsxs("div",{children:[e.jsx(i,{children:"Nivel de inglés"}),e.jsxs(c,{value:a.english_level,onValueChange:r=>l({...a,english_level:r}),children:[e.jsx(d,{children:e.jsx(u,{})}),e.jsx(h,{children:["A1","A2","B1","B2","C1","C2"].map(r=>e.jsx(t,{value:r,children:r},r))})]})]})]}),e.jsxs("div",{children:[e.jsx(i,{htmlFor:"academic_level",children:"Grado académico *"}),e.jsxs(c,{value:a.academic_level,onValueChange:r=>l({...a,academic_level:r}),children:[e.jsx(d,{id:"academic_level",children:e.jsx(u,{placeholder:"Selecciona tu grado académico"})}),e.jsx(h,{children:Q.filter(r=>r.group==="student").map(r=>e.jsx(t,{value:r.value,children:r.label},r.value))})]}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Indica si estás cursando TSU o IngenierÃa. Es obligatorio para el matching."})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-3",children:[e.jsxs("div",{children:[e.jsx(i,{children:"Tipo de oportunidad"}),e.jsxs(c,{value:a.desired_opportunity,onValueChange:r=>l({...a,desired_opportunity:r}),children:[e.jsx(d,{children:e.jsx(u,{})}),e.jsx(h,{children:X.map(r=>e.jsx(t,{value:r.value,children:r.label},r.value))})]})]}),e.jsxs("div",{children:[e.jsx(i,{children:"Modalidad preferida"}),e.jsxs(c,{value:a.preferred_modality,onValueChange:r=>l({...a,preferred_modality:r}),children:[e.jsx(d,{children:e.jsx(u,{})}),e.jsxs(h,{children:[e.jsx(t,{value:"onsite",children:"Presencial"}),e.jsx(t,{value:"remote",children:"Remoto"}),e.jsx(t,{value:"hybrid",children:"HÃbrido"})]})]})]}),e.jsxs("div",{children:[e.jsx(i,{children:"Disponibilidad"}),e.jsxs(c,{value:a.availability,onValueChange:r=>l({...a,availability:r}),children:[e.jsx(d,{children:e.jsx(u,{})}),e.jsxs(h,{children:[e.jsx(t,{value:"immediate",children:"Inmediata"}),e.jsx(t,{value:"one_month",children:"1 mes"}),e.jsx(t,{value:"three_months",children:"3 meses"}),e.jsx(t,{value:"six_months",children:"6 meses"})]})]})]})]})]}),s===2&&e.jsxs(b,{children:[e.jsxs("div",{children:[e.jsx(i,{children:"Habilidades técnicas"}),e.jsx(F,{value:a.skills,onChange:r=>l({...a,skills:r}),placeholder:"Escribe y presiona Enter",suggestions:ee})]}),e.jsxs("div",{children:[e.jsx(i,{children:"Herramientas que dominas"}),e.jsx(F,{value:a.tools,onChange:r=>l({...a,tools:r}),placeholder:"Ej. VS Code, Notion, Photoshop..."})]}),e.jsxs("div",{children:[e.jsx(i,{children:"Ãreas de interés"}),e.jsx(F,{value:a.interests,onChange:r=>l({...a,interests:r}),placeholder:"Ej. Inteligencia artificial, UX..."})]}),e.jsxs("div",{children:[e.jsx(i,{htmlFor:"experience",children:"Experiencia previa"}),e.jsx(P,{id:"experience",rows:3,value:a.experience,onChange:r=>l({...a,experience:r.target.value}),placeholder:"Trabajos, prácticas, voluntariado..."})]}),e.jsxs("div",{children:[e.jsx(i,{htmlFor:"projects",children:"Proyectos destacados"}),e.jsx(P,{id:"projects",rows:3,value:a.projects,onChange:r=>l({...a,projects:r.target.value}),placeholder:"Describe tus mejores proyectos personales o académicos"})]})]}),s===3&&e.jsxs(b,{children:[e.jsxs("div",{children:[e.jsx(i,{children:"Foto de perfil"}
1),e.jsx(L,{bucket:"avatars",userId:n.id,value:a.photo_url,onChange:r=>l({...a,photo_url:r}),accept:"image/*",label:"Subir foto",description:"Formatos permitidos: JPG, PNG, WEBP, GIF, SVG. Máx. 25 MB."})]}),e.jsxs("div",{children:[e.jsx(i,{children:"CV (PDF) â privado"}),e.jsx(L,{bucket:"cvs",userId:n.id,value:a.cv_url,onChange:r=>l({...a,cv_url:r}),accept:".pdf",label:"Subir CV en PDF",description:"Solo archivos PDF. Máx. 25 MB.",isPublic:!1})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(i,{htmlFor:"linkedin",children:"LinkedIn"}),e.jsx(j,{id:"linkedin",type:"url",value:a.linkedin_url,onChange:r=>l({...a,linkedin_url:r.target.value}),placeholder:"https://linkedin.com/in/tu-usuario"})]}),e.jsxs("div",{children:[e.jsx(i,{htmlFor:"portfolio",children:"Portafolio / GitHub"}),e.jsx(j,{id:"portfolio",type:"url",value:a.portfolio_url,onChange:r=>l({...a,portfolio_url:r.target.value}),placeholder:"https://github.com/tu-usuario"})]})]})]}),e.jsxs("div",{className:"mt-8 flex items-center justify-between gap-3",children:[e.jsxs(w,{type:"button",variant:"ghost",onClick:()=>N(Math.max(0,s-1)),disabled:s===0||k,children:[e.jsx(J,{})," Anterior"]}),e.jsxs(w,{type:"button",variant:"hero",onClick:D,disabled:k,children:[k&&e.jsx(I,{className:"animate-spin"}),s===y.length-1?"Guardar y entrar":"Siguiente",s<y.length-1&&e.jsx($,{})]})]})]})]})]})}export{pe as component};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.