1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9679],{79205:function(e,t,a){a.d(t,{Z:function(){return d}});var s=a(2265);let r=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),l=function(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return t.filter((e,t,a)=>!!e&&a.indexOf(e)===t).join(" ")};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let c=(0,s.forwardRef)((e,t)=>{let{color:a="currentColor",size:r=24,strokeWidth:c=2,absoluteStrokeWidth:d,className:i="",children:o,iconNode:x,...h}=e;return(0,s.createElement)("svg",{ref:t,...n,width:r,height:r,stroke:a,strokeWidth:d?24*Number(c)/Number(r):c,className:l("lucide",i),...h},[...x.map(e=>{let[t,a]=e;return(0,s.createElement)(t,a)}),...Array.isArray(o)?o:[o]])}),d=(e,t)=>{let a=(0,s.forwardRef)((a,n)=>{let{className:d,...i}=a;return(0,s.createElement)(c,{ref:n,iconNode:t,className:l("lucide-".concat(r(e)),d),...i})});return a.displayName="".concat(e),a}},32660:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])},33327:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("Award",[["path",{d:"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",key:"1yiouv"}],["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}]])},49322:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},98617:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("Crown",[["path",{d:"M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z",key:"1vdc57"}],["path",{d:"M5 21h14",key:"11awu3"}]])},76399:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("Flame",[["path",{d:"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z",key:"96xj49"}]])},34928:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("Layers3",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m6.08 9.5-3.5 1.6a1 1 0 0 0 0 1.81l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9a1 1 0 0 0 0-1.83l-3.5-1.59",key:"1e5n1m"}],["path",{d:"m6.08 14.5-3.5 1.6a1 1 0 0 0 0 1.81l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9a1 1 0 0 0 0-1.83l-3.5-1.59",key:"1iwflc"}]])},28124:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]])},51817:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},66337:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]])},66142:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("Medal",[["path",{d:"M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15",key:"143lza"}],["path",{d:"M11 12 5.12 2.2",key:"qhuxz6"}],["path",{d:"m13 12 5.88-9.8",key:"hbye0f"}],["path",{d:"M8 7h8",key:"i86dvs"}],["circle",{cx:"12",cy:"17",r:"5",key:"qbz8iq"}],["path",{d:"M12 18v-2h-.5",key:"fawc4q"}]])},11:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]])},82023:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]])},58896:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("Target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]])},49474:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("Trophy",[["path",{d:"M6 9H4.5a2.5 2.5 0 0 1 0-5H6",key:"17hqa7"}],["path",{d:"M18 9h1.5a2.5 2.5 0 0 0 0-5H18",key:"lmptdp"}],["path",{d:"M4 22h16",key:"57wxv0"}
1],["path",{d:"M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22",key:"1nw9bq"}],["path",{d:"M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22",key:"1np0yb"}],["path",{d:"M18 2H6v7a6 6 0 0 0 12 0V2Z",key:"u46fv3"}]])},11239:function(e,t,a){a.d(t,{Z:function(){return s}});let s=(0,a(79205).Z)("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},27648:function(e,t,a){a.d(t,{default:function(){return r.a}});var s=a(72972),r=a.n(s)},48274:function(e,t,a){a.d(t,{x:function(){return b}});var s=a(57437),r=a(2265),l=a(33327),n=a(76399),c=a(11239),d=a(79205);let i=(0,d.Z)("Footprints",[["path",{d:"M4 16v-2.38C4 11.5 2.97 10.5 3 8c.03-2.72 1.49-6 4.5-6C9.37 2 10 3.8 10 5.5c0 3.11-2 5.66-2 8.68V16a2 2 0 1 1-4 0Z",key:"1dudjm"}],["path",{d:"M20 20v-2.38c0-2.12 1.03-3.12 1-5.62-.03-2.72-1.49-6-4.5-6C14.63 6 14 7.8 14 9.5c0 3.11 2 5.66 2 8.68V20a2 2 0 1 0 4 0Z",key:"l2t8xc"}],["path",{d:"M16 17h4",key:"1dejxt"}],["path",{d:"M4 13h4",key:"1bwh8b"}]]);var o=a(58896),x=a(11),h=a(49474),u=a(28124),m=a(34928);let p=(0,d.Z)("Speech",[["path",{d:"M8.8 20v-4.1l1.9.2a2.3 2.3 0 0 0 2.164-2.1V8.3A5.37 5.37 0 0 0 2 8.25c0 2.8.656 3.054 1 4.55a5.77 5.77 0 0 1 .029 2.758L2 20",key:"11atix"}],["path",{d:"M19.8 17.8a7.5 7.5 0 0 0 .003-10.603",key:"yol142"}],["path",{d:"M17 15a3.5 3.5 0 0 0-.025-4.975",key:"ssbmkc"}]]);var f=a(98617),g=a(66142),y=a(49322),k=a(51817),v=a(66337);let j={Award:(0,s.jsx)(l.Z,{size:20}),Flame:(0,s.jsx)(n.Z,{size:20}),Zap:(0,s.jsx)(c.Z,{size:20}),Footprints:(0,s.jsx)(i,{size:20}),Target:(0,s.jsx)(o.Z,{size:20}),MessageSquare:(0,s.jsx)(x.Z,{size:20}),Trophy:(0,s.jsx)(h.Z,{size:20}),Layers:(0,s.jsx)(u.Z,{size:20}),Layers3:(0,s.jsx)(m.Z,{size:20}),Speech:(0,s.jsx)(p,{size:20}),Crown:(0,s.jsx)(f.Z,{size:20}),Medal:(0,s.jsx)(g.Z,{size:20})},Z={LESSON_COMPLETE:"Lesson completed",QUIZ_PERFECT:"Perfect quiz",SCENARIO_COMPLETE:"Scenario practice",COURSE_COMPLETE:"Course completed",STREAK_DAY:"Streak day",BADGE_AWARD:"Badge unlocked",MANUAL:"Granted by admin"};function b(e){let{apiBase:t}=e,[a,d]=(0,r.useState)(null),[i,o]=(0,r.useState)(null);if((0,r.useEffect)(()=>{let e=!1;return(async()=>{try{let a=await fetch("".concat(t,"/achievements")),s=await a.json();if(e)return;if(!a.ok)throw Error(s.error||"Failed");d(s.achievements)}catch(t){if(e)return;o(t instanceof Error?t.message:"Failed")}})(),()=>{e=!0}},[t]),i)return(0,s.jsxs)("div",{className:"flex items-start gap-2 rounded-lg border border-red-200 bg-red-50 p-3 text-[13px] text-red-800",children:[(0,s.jsx)(y.Z,{size:14,className:"mt-0.5 flex-shrink-0"}),(0,s.jsx)("span",{children:i})]});if(!a)return(0,s.jsx)(k.Z,{className:"animate-spin text-slate-400",size:20});let x=a.stats.lifetimeXp-a.stats.levelProgress.current,h=Math.max(1,a.stats.levelProgress.next-a.stats.levelProgress.current);return(0,s.jsxs)("div",{className:"space-y-8",children:[(0,s.jsxs)("div",{className:"grid grid-cols-3 gap-3",children:[(0,s.jsx)(N,{icon:(0,s.jsx)(c.Z,{size:18,className:"text-amber-500"}),label:"Level",value:"L".concat(a.stats.level),sub:"".concat(a.stats.lifetimeXp," lifetime XP")}),(0,s.jsx)(N,{icon:(0,s.jsx)(n.Z,{size:18,className:"text-orange-500"}),label:"Current streak",value:"".concat(a.stats.currentStreakDays,"d"),sub:"Longest: ".concat(a.stats.longestStreakDays,"d")}),(0,s.jsx)(N,{icon:(0,s.jsx)(l.Z,{size:18,className:"text-violet-500"}),label:"Badges earned",value:"".concat(a.earnedBadges.length),sub:"".concat(a.lockedBadges.length," more to unlock")})]}),(0,s.jsxs)("div",{className:"rounded-lg border border-slate-200 bg-white p-4",children:[(0,s.jsxs)("div",{className:"flex items-baseline justify-between mb-2",children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"text-[11px] tracking-widest uppercase text-slate-500",children:["Level ",a.stats.level," progress"]}),(0,s.jsx)("div",{className:"text-sm text-slate-700 mt-0.5",children:a.stats.levelProgress.toGo>0?"".concat(a.stats.levelProgress.toGo," XP to level ").concat(a.stats.level+1):"Max level reached"})]}),(0,s.jsxs)("div",{className:"text-[12px] text-slate-500",children:[a.stats.lifetimeXp," / ",a.stats.levelProgress.next," XP"]})]}),(0,s.jsx)("div",{className:"h-2 bg-slate-100 rounded-full overflow-hidden",children:(0,s.jsx)("div",{className:"h-full bg-gradient-to-r from-amber-400 to-amber-600",
1style:{width:"".concat(Math.min(100,Math.round(x/h*100)),"%")}})})]}),a.earnedBadges.length>0&&(0,s.jsxs)("section",{children:[(0,s.jsxs)("h2",{className:"text-[11px] tracking-widest uppercase text-slate-500 mb-3",children:["Earned (",a.earnedBadges.length,")"]}),(0,s.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-3",children:a.earnedBadges.map(e=>{var t;return(0,s.jsxs)("div",{className:"border border-emerald-200 bg-emerald-50 rounded-lg p-3",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 text-emerald-700",children:[null!==(t=j[e.icon])&&void 0!==t?t:(0,s.jsx)(l.Z,{size:20}),(0,s.jsx)("span",{className:"font-medium text-emerald-900",children:e.title})]}),(0,s.jsx)("p",{className:"text-[12px] text-slate-700 mt-1.5 leading-snug",children:e.description}),(0,s.jsx)("p",{className:"text-[11px] text-slate-500 mt-2",children:new Date(e.awardedAt).toLocaleDateString()})]},e.id)})})]}),a.lockedBadges.length>0&&(0,s.jsxs)("section",{children:[(0,s.jsxs)("h2",{className:"text-[11px] tracking-widest uppercase text-slate-500 mb-3",children:["To unlock (",a.lockedBadges.length,")"]}),(0,s.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-3",children:a.lockedBadges.map(e=>(0,s.jsxs)("div",{className:"border border-slate-200 bg-white rounded-lg p-3 opacity-60",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 text-slate-500",children:[(0,s.jsx)(v.Z,{size:16}),(0,s.jsx)("span",{className:"font-medium text-slate-700",children:e.title})]}),(0,s.jsx)("p",{className:"text-[12px] text-slate-600 mt-1.5 leading-snug",children:e.description})]},e.id))})]}),a.recentXp.length>0&&(0,s.jsxs)("section",{children:[(0,s.jsx)("h2",{className:"text-[11px] tracking-widest uppercase text-slate-500 mb-3",children:"Recent activity"}),(0,s.jsx)("ul",{className:"border border-slate-200 bg-white rounded-lg divide-y divide-slate-100",children:a.recentXp.map(e=>{var t;return(0,s.jsxs)("li",{className:"flex items-center gap-3 px-3 py-2 text-sm",children:[(0,s.jsx)(c.Z,{size:14,className:"text-amber-500 flex-shrink-0"}),(0,s.jsxs)("span",{className:"flex-1 min-w-0",children:[(0,s.jsx)("span",{className:"text-slate-900 font-medium",children:null!==(t=Z[e.source])&&void 0!==t?t:e.source}),e.note&&(0,s.jsxs)("span",{className:"text-slate-500 text-[12px] ml-2",children:["\xb7 ",e.note]})]}),(0,s.jsxs)("span",{className:"text-amber-700 font-semibold text-[13px]",children:["+",e.amount," XP"]}),(0,s.jsx)("span",{className:"text-[11px] text-slate-400 ml-2 flex-shrink-0",children:new Date(e.awardedAt).toLocaleDateString()})]},e.id)})})]}),0===a.earnedBadges.length&&0===a.recentXp.length&&0===a.lockedBadges.length&&(0,s.jsxs)("div",{className:"border border-dashed border-slate-300 rounded-lg p-10 text-center",children:[(0,s.jsx)(l.Z,{className:"mx-auto text-slate-400",size:36}),(0,s.jsx)("p",{className:"mt-3 text-sm text-slate-600 max-w-md mx-auto",children:"No achievements yet. Complete your first lesson to start earning XP and badges."})]})]})}function N(e){let{icon:t,label:a,value:r,sub:l}=e;return(0,s.jsxs)("div",{className:"border border-slate-200 bg-white rounded-lg p-3",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 text-[11px] tracking-widest uppercase text-slate-500",children:[t,a]}),(0,s.jsx)("div",{className:"text-2xl font-semibold text-slate-900 mt-1",children:r}),(0,s.jsx)("div",{className:"text-[12px] text-slate-500 mt-0.5",children:l})]})}}}]);
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.