PageSourceSearch

https://terraincognitaacademy.com/assets/InstructorProfile-CXSTO0eW.js

js terraincognitaacademy.com collected 2026-10-09 22:03:11 UTC 7,926 bytes, 4 lines download raw bytes

1import{u as d,j as e}from"./query-603sR3e5.js";import{A as S}from"./AuthorName-CbBcqZth.js";import{q as $,N as I,W as y,$ as f,bD as j,c3 as v,bE as N,k as m,a3 as L,B as E,p as b,a5 as F,H as k,Y as H,s as o}from"./index-Bgl7Qh3e.js";import P from"./purify.es-BDq46o7h.js";import{C as B}from"./CourseCard-CxoyjRuH.js";import{f as O,L as h}from"./router-wEt8kAIS.js";import"./ui-vDfEnoEi.js";import"./charts-Cjj8e2PO.js";import"./supabase-V1kumFDL.js";import"./motion-DGqSTYfv.js";import"./SocialProofCounts-ji_ExnGR.js";import"./socialProofCounts-DuXFOyxf.js";import"./circle-check-2YaPu0Al.js";const Z=()=>{const{instructorId:a}=O(),{data:t,isLoading:_}=d({queryKey:["instructor",a],queryFn:async()=>{const{data:s,error:i}=await o.from("profiles").select("*").eq("id",a).single();if(i)throw i;return s}}),{data:r}=d({queryKey:["instructor-stats",a],queryFn:async()=>{const{data:s,error:i}=await o.from("course_enrollments").select("user_id, courses!inner(instructor_id)").eq("courses.instructor_id",a);if(i)throw i;const c=new Set(s?.map(p=>p.user_id)||[]).size,{data:n,error:l}=await o.from("course_reviews").select("rating, courses!inner(instructor_id)").eq("courses.instructor_id",a);if(l)throw l;const C=n&&n.length>0?n.reduce((p,A)=>p+A.rating,0)/n.length:0,{count:R,error:g}=await o.from("courses").select("*",{count:"exact",head:!0}).eq("instructor_id",a).eq("is_published",!0);if(g)throw g;return{totalStudents:c,averageRating:C,totalCourses:R||0,totalReviews:n?.length||0}}}),{data:u}=d({queryKey:["instructor-courses",a],queryFn:async()=>{const{data:s,error:i}=await o.from("courses").select("id, title, slug, short_description, thumbnail_url, level, duration, enrolled_count, price").eq("instructor_id",a).eq("is_published",!0).order("created_at",{ascending:!1});if(i)throw i;return s}}),{data:x}=d({queryKey:["instructor-reviews",a],queryFn:async()=>{const{data:s,error:i}=await o.from("course_reviews").select(`
2          *,
3          courses!inner(id, title, slug, instructor_id)
4        `).eq("courses.instructor_id",a).order("created_at",{ascending:!1}).limit(10);if(i)throw i;return await Promise.all((s||[]).map(async n=>{const{data:l}=await o.from("profiles").select("display_name, avatar_url").eq("id",n.user_id
4).single();return{...n,profile:l}}))}});if(_)return e.jsx("div",{className:"min-h-screen flex items-center justify-center",children:"Loading..."});if(!t)return e.jsx("div",{className:"min-h-screen flex items-center justify-center",children:"Instructor not found"});const w={"@context":"https://schema.org","@type":"Person","@id":`https://terraincognitaacademy.com/instructor/${a}`,name:t.display_name,description:t.bio||"Spiritual instructor at Terra Incognita Academy",image:t.avatar_url,url:`https://terraincognitaacademy.com/instructor/${a}`,jobTitle:"Spiritual Instructor",worksFor:{"@type":"EducationalOrganization",name:"Terra Incognita Academy",url:"https://terraincognitaacademy.com"},knowsAbout:["Spiritual Education","Consciousness Development","Meditation","Mystical Arts"],...r?.averageRating&&{aggregateRating:{"@type":"AggregateRating",ratingValue:r.averageRating.toFixed(1),reviewCount:r.totalReviews||0,bestRating:"5",worstRating:"1"}},alumniOf:{"@type":"EducationalOrganization",name:"Terra Incognita Academy"},sameAs:[]},q={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://terraincognitaacademy.com"},{"@type":"ListItem",position:2,name:"Instructors",item:"https://terraincognitaacademy.com/courses"},{"@type":"ListItem",position:3,name:t.display_name,item:`https://terraincognitaacademy.com/instructor/${a}`}]};return e.jsxs(e.Fragment,{children:[e.jsx($,{title:`${t.display_name} - Spiritual Instructor | ${r?.totalCourses||0} Courses`,description:t.bio?`${t.bio.substring(0,100)}... ★ ${r?.averageRating?.toFixed(1)||"5.0"} rating • ${r?.totalStudents||0}+ students • ${r?.totalCourses||0} courses. View profile & enroll!`:`Learn from ${t.display_name}. ${r?.totalCourses||0} courses, ${r?.totalStudents||0}+ students, ★ ${r?.averageRating?.toFixed(1)||"5.0"} rating. Expert spiritual instructor.`,keywords:[t.display_name||"",`${t.display_name} courses`,"spiritual instructor","spiritual teacher","consciousness teacher","meditation instructor"],url:`https://terraincognitaacademy.com/instructor/${a}`,type:"profile",author:t.display_name,schema:[w,q]}),e.jsxs("div",{className:"min-h-screen",children:[e.jsx(I,{}),e.jsx("div",{className:"py-24 px-4",children:e.jsxs("div",{className:"max-w-7xl mx-auto",children:[e.jsx("nav",{className:"mb-6 text-sm","aria-label":"Breadcrumb",children:e.jsxs("ol",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx("li",{children:e.jsx(h,{to:"/",className:"hover:text-primary transition-colors",children:"Home"})}),e.jsx("li",{children:"/"}),e.jsx("li",{children:e.jsx(h,{to:"/courses",className:"hover:text-primary transition-colors",children:"Courses"})}),e.jsx("li",{children:"/"}),e.jsx("li",{className:"text-foreground font-medium",children:t.display_name})]})}),e.jsx(y,{className:"bg-card/50 backdrop-blur-sm mb-8",children:e.jsx(f,{className:"pt-6",children:e.jsxs("div",{className:"flex flex-col md:flex-row gap-6 items-start",children:[e.jsxs(j,{className:"w-32 h-32",children:[e.jsx(v,{src:t.avatar_url,alt:t.display_name}),e.jsx(N,{className:"text-3xl",children:t.display_name?.charAt(0)||"?"})]}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h1",{className:"text-4xl font-bold mb-2",children:e.jsx(S,{name:t.display_name})}),t.bio&&e.jsx("div",{className:"prose prose-sm max-w-none text-muted-foreground mb-4",dangerouslySetInnerHTML:{__html:P.sanitize(t.bio)}}),e.jsxs("div",{className:"flex flex-wrap gap-4 mt-4",children:[e.jsxs(m,{variant:"secondary",className:"text-base py-2 px-4",children:[e.jsx(L,{className:"w-4 h-4 mr-2"}),r?.totalStudents||0," Students"]}),e.jsxs(m,{variant:"secondary",className:"text-base py-2 px-4",children:[e.jsx(E,{className:"w-4 h-4 mr-2"}),r?.totalCourses||0," Courses"]}),e.jsxs(m,{variant:"secondary",className:"text-base py-2 px-4",children:[e.jsx(b,{className:"w-4 h-4 mr-2 fill-accent text-accent"}),r?.averageRating?r.averageRating.toFixed(1):"N/A"," Rating"]}),e.jsxs(m,{variant:"secondary",className:"text-base py-2 px-4",children:[e.jsx(F,{className:"w-4 h-4 mr-2"}),r?.totalReviews||0," Reviews"]})]})]})]})})}),e.jsxs("div",{className:"mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-6",children:"Courses"}),u&&u.length>0?e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:u.map(s=>e.jsx(B,{course:s},s.id))}):e.jsx("p",{className:"text-muted-foreground",children:"No courses available yet."})]}),e.jsx(k,{className:"my-12"}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-3xl font-bold mb-6",children:"Student Reviews"}),x&&x.length>0?e.jsx("div",{className:"space-y-4",children:x.map(s=>e.jsxs(y,{className:"bg-card/50 backdrop-blur-sm",children:[e.jsx(H,{children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(j,{children:[e.jsx(v,{src:s.profile?.avatar_url}),e.jsx(N,{children:s.profile?.display_name?.charAt(0)||"?"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"font-semibold",children:s.profile?.display_name||"Anonymous"}),e.jsx(h,{to:`/courses/${s.courses.slug}`,className:"text-sm text-muted-foreground hover:text-primary transition-colors",children:s.courses.title})]})]}),e.jsx("div",{className:"flex items-center gap-1",children:Array.from({length:5}).map((i,c)=>e.jsx(b,{className:`w-4 h-4 ${c<s.rating?"fill-accent text-accent":"text-muted-foreground"}`}
4,c))})]})}),s.review_text&&e.jsx(f,{children:e.jsx("p",{className:"text-muted-foreground",children:s.review_text})})]},s.id))}):e.jsx("p",{className:"text-muted-foreground",children:"No reviews yet."})]})]})})]})]})};export{Z 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.