1import{d as v,K as o,c as g,$ as e,a2 as c,Q as _,ae as y,af as k,ag as w,ah as T,ai as S,aj as R,ak as $,al as B,am as j,an as P,a1 as z,o as A,R as C,_ as E,u as s,a as b,F,a5 as I,r as p}from"./vendor-wW6RjdZI.js";import{g as r,S as M}from"./vendor-motion-BegG8UXh.js";import{_ as N}from"./DecodingText.vue_vue_type_script_setup_true_lang-BWbb-NQ4.js";import{t as V}from"./portfolio-C3sI-Y8q.js";const D={class:"flex items-center gap-3 rounded-2xl border border-white/10 bg-slate-800/35 px-3 py-2.5 sm:px-4 sm:py-3"},H={class:"flex size-9 shrink-0 items-center justify-center rounded-xl bg-white shadow-inner shadow-slate-900/15 sm:size-10",role:"presentation"},K={class:"m-auto h-5 w-5 sm:h-6 sm:w-6",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},L=["d","fill"],O={class:"min-w-0 text-xs font-medium leading-snug text-slate-100 sm:text-sm"},Q=v({__name:"TechIcon",props:{skill:{}},setup(m){const t=m,f={"Vue 3":P,"Angular.js":j,"Node.js":B,TypeScript:$,"Tailwind CSS":R,Express:S,Pinia:T,MongoDB:w,PHP:k,"Application Security":y},a=_(()=>f[t.skill.name]),l=_(()=>`#${a.value.hex}`);return(i,n)=>(o(),g("div",D,[e("div",H,[(o(),g("svg",K,[e("path",{d:a.value.path,fill:l.value},null,8,L)]))]),e("span",O,c(m.skill.name),1)]))}}),U={class:"grid gap-16 lg:grid-cols-2 lg:gap-24"},W={class:"mb-4 text-sm uppercase tracking-[0.2em] text-cyan-400"},q={class:"space-y-6 text-base text-slate-300 sm:text-lg"},G={class:"rounded-3xl border border-white/10 bg-slate-900/40 p-8 backdrop-blur-xl md:p-10"},J={class:"mb-8 text-xs font-bold uppercase tracking-[0.25em] text-cyan-300/80"},X={class:"grid grid-cols-2 gap-4 sm:grid-cols-3"},se=v({__name:"AboutSection",setup(m){r.registerPlugin(M);const{t,locale:f}=z(),a=p(null),l=p(null),i=p(null),n=p(null);let d;return A(()=>{C(()=>{d=r.context(()=>{const x=a.value;x&&(l.value&&r.fromTo(l.value,{y:80,opacity:0},{y:0,opacity:1,ease:"none",scrollTrigger:{trigger:x,start:"top 90%",end:"top 60%",scrub:1}}),i.value&&r.fromTo(i.value.children,{y:60,opacity:0},{y:0,opacity:1,stagger:.1,ease:"none",scrollTrigger:{trigger:i.value,start:"top 85%",end:"top 55%",scrub:1}}),n.value&&r.fromTo(n.value,{y:100,opacity:0},{y:0,opacity:1,ease:"none",scrollTrigger:{trigger:n.value,start:"top 92%",end:"top 65%",scrub:1}}))},a.value||void 0)})}),E(()=>{d==null||d.revert()}),(x,u)=>(o(),g("section",{id:"about",ref_key:"sectionRef",ref:a,class:"relative mx-auto max-w-7xl px-4 py-24 sm:snap-start sm:px-6 md:py-32"},[e("div",U,[e("div",{ref_key:"textRef",ref:i},[e("p",W,c(s(t)("about.tag")),1),e("div",{ref_key:"headingRef",ref:l},[(o(),b(N,{key:s(f),as:"h2",text:s(t)("about.title"),duration:1600,"content-class":"mb-8 text-3xl font-bold leading-tight text-white sm:text-4xl md:text-5xl"},null,8,["text"]))],512),e("div",q,[e("p",null,c(s(t)("about.p1")),1),e("p",null,c(s(t)("about.p2")),1)])],512),e("div",{ref_key:"techRef",ref:n,class:"relative"},[e("div",G,[e("p",J,c(s(t)("about.techStack")),1),e("div",X,[(o(!0),g(F,null,I(s(V),h=>(o(),b(Q,{key:h.name,skill:h},null,8,["skill"]))),128))])]),u[0]||(u[0]=e("div",{class:"absolute -right-4 -top-4 -z-10 h-32 w-32 rounded-full bg-cyan-500/10 blur-3xl"},null,-1)),u[1]||(u[1]=e("div",{class:"absolute -bottom-4 -left-4 -z-10 h-32 w-32 rounded-full bg-violet-500/10 blur-3xl"},null,-1))],512)])],512))}});export{se as default};
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.