1import{u as $}from"./app-1To86AzH.js";import{_ as g}from"./index-B_Re349R.js";import{u as A}from"./useDateFormatting-CXf-kpeJ.js";import{d as B,q as d,x as U,l as S,U as n,_ as a,O as l,L as b,a0 as m,u as o,b4 as Y,aj as T,$ as i,b5 as q,b6 as K,F as R,V as Z,a8 as G,P as u,b3 as H,M as r}from"./icons-Bgx76RDF.js";import{_ as J}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./reka-ui-CxQDcGDz.js";import"./utils-CDN07tui.js";const Q={class:"min-h-screen bg-gradient-to-br from-neutral-50 to-neutral-100 dark:from-neutral-900 dark:to-neutral-800"},W={class:"container mx-auto px-4 py-8"},X={class:"bg-white dark:bg-neutral-800 rounded-lg shadow-sm border border-neutral-200 dark:border-neutral-700 mb-6"},ee={class:"flex items-center justify-between p-4"},te={class:"flex items-center gap-2 text-lg font-semibold text-neutral-900 dark:text-white"},se={key:0,class:"text-center py-12"},ae={key:1,class:"bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg p-4 mb-6"},ne={class:"flex items-center gap-2 text-red-800 dark:text-red-200"},re={class:"font-medium"},oe={key:2,class:"bg-white dark:bg-neutral-800 rounded-lg shadow-sm border border-neutral-200 dark:border-neutral-700"},le={key:0,class:"text-center py-12"},ie={key:1,class:"divide-y divide-neutral-200 dark:divide-neutral-700"},de={class:"flex items-start gap-4"},ue={class:"flex-shrink-0 text-center min-w-[100px]"},ce={class:"text-sm font-medium text-neutral-900 dark:text-white"},me={class:"text-xs text-neutral-500 dark:text-neutral-400"},xe={key:0,class:"inline-flex items-center gap-1 mt-1 px-2 py-1 bg-red-100 dark:bg-red-900/30 text-red-800 dark:text-red-200 text-xs rounded-full"},he={class:"flex-1 min-w-0"},_e={class:"flex items-start justify-between gap-4"},fe={class:"flex-1"},pe={class:"text-lg font-semibold text-neutral-900 dark:text-white mb-1"},ve={class:"flex items-center gap-3 mb-2"},ge={class:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-neutral-100 dark:bg-neutral-700 text-neutral-800 dark:text-neutral-200"},be={key:0,class:"text-sm text-neutral-500 dark:text-neutral-400"},we={key:0},ke={key:1},ye={key:2}
1,De={key:0,class:"text-neutral-600 dark:text-neutral-300 text-sm leading-relaxed"},Se={key:0,class:"flex-shrink-0"},Te=B({__name:"ProgramScheduleVibe",setup(Ce){const v=$(),C=d(v.props.todaySchedule||[]),N=d(v.props.tomorrowSchedule||[]),w=d(v.props.initialDate),c=d(new Date(w.value||new Date().toISOString().split("T")[0])),x=d(new Map),h=d(!1),_=d(null),{formatDate:P,formatTime:F,isToday:I}=A(),V=e=>{const t=new Date;return t.setDate(t.getDate()+1),e.getDate()===t.getDate()&&e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()};U(()=>{const e=new Date(w.value),t=new Date(e);t.setDate(t.getDate()+1),x.value.set(f(e),C.value),x.value.set(f(t),N.value)});const f=e=>!e||isNaN(e.getTime())?new Date().toISOString().split("T")[0]:e.toISOString().split("T")[0],k=S(()=>{const e=f(c.value);return x.value.get(e)||[]}),E=S(()=>{const e=c.value;return!e||isNaN(e.getTime())||I(e.toISOString())?"Today":V(e)?"Tomorrow":P(e.toISOString())}),y=async e=>{const t=f(e);if(!x.value.has(t)){h.value=!0,_.value=null;try{const s=await fetch(`/api/schedule?date=${t}`),p=await s.json();if(s.ok)x.value.set(t,p.schedule);else throw new Error(p.message||"Failed to load schedule")}catch(s){_.value=s instanceof Error?s.message:"Failed to load schedule",console.error("Error loading schedule:",s)}finally{h.value=!1}}},M=async()=>{const e=new Date(c.value);
1e.setDate(e.getDate()-1),c.value=e,await y(e)},O=async()=>{const e=new Date(c.value);e.setDate(e.getDate()+1),c.value=e,await y(e)},D=e=>{const t=new Date,s=new Date(e.start_time),p=new Date(e.end_time);return t>=s&&t<=p},L=e=>{const t=new Date,s=new Date(e.end_time);return t>s},j=e=>{const t=new Date(e.start_time),s=new Date(e.end_time);return Math.round((s.getTime()-t.getTime())/(1e3*60))},z=e=>e.replace(/([A-Z])/g," $1").replace(/^./,t=>t.toUpperCase());return(e,t)=>(r(),n("div",Q,[a("div",W,[t[7]||(t[7]=a("div",{class:"text-center mb-8"},[a("h1",{class:"text-3xl md:text-4xl font-bold text-neutral-900 dark:text-white mb-2"}," Program Schedule "),a("p",{class:"text-neutral-600 dark:text-neutral-300"}," Stay up to date with our programming lineup ")],-1)),a("div",X,[a("div",ee,[l(o(g),{onClick:M,variant:"outline",size:"sm",disabled:h.value,class:"flex items-center gap-2"},{default:b(()=>[l(o(Y),{class:"h-4 w-4"}),t[0]||(t[0]=m(" Previous Day ",-1))]),_:1},8,["disabled"]),a("div",te,[l(o(T),{class:"h-5 w-5"}),m(" "+i(E.value),1)]),l(o(g),{onClick:O,variant:"outline",size:"sm",disabled:h.value,class:"flex items-center gap-2"},{default:b(()=>[t[1]||(t[1]=m(" Next Day ",-1)),l(o(q),{class:"h-4 w-4"})]),_:1},8,["disabled"])])]),h.value?(r(),n("div",se,[...t[2]||(t[2]=[a("div",{class:"inline-flex items-center gap-2 text-neutral-600 dar
1k:text-neutral-300"},[a("div",{class:"animate-spin rounded-full h-6 w-6 border-b-2 border-blue-600"}),m(" Loading schedule... ")],-1)])])):_.value?(r(),n("div",ae,[a("div",ne,[l(o(K),{class:"h-5 w-5"}),a("span",re,"Error loading schedule: "+i(_.value),1)])])):(r(),n("div",oe,[k.value.length===0?(r(),n("div",le,[l(o(T),{class:"h-12 w-12 mx-auto mb-4 text-neutral-400"}),t[3]||(t[3]=a("h3",{class:"text-lg font-medium text-neutral-900 dark:text-white mb-2"}," No programs scheduled ",-1)),t[4]||(t[4]=a("p",{class:"text-neutral-600 dark:text-neutral-300"}," There are no programs scheduled for this date. ",-1))])):(r(),n("div",ie,[(r(!0),n(R,null,Z(k.value,s=>(r(),n("div",{key:s.id,class:G(["p-6 hover:bg-neutral-50 dark:hover:bg-neutral-700/50 transition-colors",{"bg-blue-50 dark:bg-blue-900/20 border-l-4 border-blue-500":D(s),"opacity-60":L(s)}])},[a("div",de,[a("div",ue,[a("div",ce,i(o(F)(s.start_time)),1),a("div",me,i(j(s))+"min ",1),D(s)?(r(),n("div",xe,[...t[5]||(t[5]=[a("div",{class:"w-2 h-2 bg-red-500 rounded-full animate-pulse"},null,-1),m(" LIVE ",-1)])])):u("",!0)]),a("div",he,[a("div",_e,[a("div",fe,[a("h3",pe,i(s.program_title),1),a("div",ve,[a("span",ge,i(z(s.program_type??"")),1),s.season||s.episode?(r(),n("span",be,[s.season?(r(),n("span",we,"Season "+i(s.season),1)):u("",!0),s.season&&s.episode?(r(),n("span",ke," ⢠")):u("",!0),s.episode?(r(),n("span",ye,"Episode "+i(s.episode),1)):u("",!0)])):u("",!0)]),s.program_description?(r(),n("p",De,i(s.program_description),1)):u("",!0)]),s.trailer_link?(r(),n("div",Se,[l(o(g),{size:"sm",variant:"outline",href:s.trailer_link,target:"_blank",class:"flex items-center gap-2"},{default:b(()=>[l(o(H),{class:"h-4 w-4"}),t[6]||(t[6]=m(" Trailer ",-1))]),_:1},8,["href"])])):u("",!0)])])])],2))),128))]))]))])]))}}),Oe=J(Te,[["__scopeId","data-v-5bf3da5c"]]);export{Oe 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.