(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,75505,e=>{"use strict";var t=e.i(43476),r=e.i(71645),a=e.i(49550),l=e.i(29803),s=e.i(1851),n=e.i(81092);function i(e,t){let r=(0,n.toDate)(e,t?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function d(e,t){let r=(0,n.toDate)(e,t?.in),a=r.getMonth();return r.setFullYear(r.getFullYear(),a+1,0),r.setHours(23,59,59,999),r}var o=e.i(45110),c=e.i(77241),u=e.i(85890);let g=({events:e,onDateSelect:a,selectedDate:l,className:n=""})=>{let[g,x]=(0,r.useState)(l),h=r.default.useMemo(()=>{let t=new Map;for(let r of e){let e=new Date(r.eventTime).toISOString().slice(0,10),a=t.get(e);a?a.push(r):t.set(e,[r])}return t},[e]);return(0,t.jsxs)("div",{className:`bg-white dark:bg-gray-800 rounded-lg shadow-sm p-4 ${n}`,children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsx)("button",{onClick:()=>x(new Date(g.getFullYear(),g.getMonth()-1,1)),className:"p-2 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700",children:"←"}),(0,t.jsx)("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:(0,s.format)(g,"MMMM yyyy")}),(0,t.jsx)("button",{onClick:()=>x(new Date(g.getFullYear(),g.getMonth()+1,1)),className:"p-2 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700",children:"→"})]}),(()=>{let e=[],r=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];for(let a=0;a<7;a++)e.push((0,t.jsx)("div",{className:"text-center font-medium text-gray-600 dark:text-gray-300 py-2",children:r[a]},a));return(0,t.jsx)("div",{className:"grid grid-cols-7 gap-1 mb-1",children:e})})(),(()=>{let e=i(g),r=d(e),l=function(e){let{start:t,end:r}=function(e,t){let[r,a]=(0,o.normalizeDates)(e,t.start,t.end);return{start:r,end:a}}(void 0,e),a=+t>+r,l=a?+t:+r,s=a?r:t;s.setHours(0,0,0,0);let n=(void 0)??1;if(!n)return[];n<0&&(n=-n,a=!a);let i=[];for(;+s<=l;)i.push((0,c.constructFrom)(t,s)),s.setDate(s.getDate()+n),s.setHours(0,0,0,0);return a?i.reverse():i}({start:i(e),end:d(r)}),n=[];l.forEach((r,l)=>{let i=r.toISOString().slice(0,10),d=h.get(i)??[],g=function(e,t){let[r,a]=(0,o.normalizeDates)(void 0,e,t);return r.getFullYear()===a.getFullYear()&&r.getMonth()===a.getMonth()}(r,e),x=function(e,t){let[r,a]=(0,o.normalizeDates)(void 0,e,t);return+(0,u.startOfDay)(r)==+(0,u.startOfDay)(a)}((0,c.constructFrom)(r,r),(0,c.constructFrom)(r,Date.now()));n.push((0,t.jsxs)("div",{onClick:()=>a(r),role:"button",tabIndex:0,className:` min-h-24 p-2 border border-gray-200 dark:border-gray-700 rounded-lg cursor-pointer ${!g?"bg-gray-50 dark:bg-gray-800 text-gray-400 dark:text-gray-500":"bg-white dark:bg-gray-900"} ${x?"ring-2 ring-blue-500":""} hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors `,children:[(0,t.jsx)("div",{className:"text-right",children:(0,t.jsx)("span",{className:`inline-flex items-center justify-center w-6 h-6 rounded-full text-sm ${x?"bg-blue-500 text-white":""}`,children:(0,s.format)(r,"d")})}),(0,t.jsxs)("div",{className:"mt-1 space-y-1 max-h-20 overflow-y-auto",children:[d.slice(0,3).map(e=>(0,t.jsx)("div",{className:"text-xs truncate bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200 px-2 py-1 rounded",children:e.title},e.id)),d.length>3&&(0,t.jsxs)("div",{className:"text-xs text-gray-500 dark:text-gray-400",children:["+",d.length-3," more"]})]})]},l))});let x=[];for(let e=0;e{let n=e.filter(e=>{let t=new Date(e.eventTime);return t.getDate()===r.getDate()&&t.getMonth()===r.getMonth()&&t.getFullYear()===r.getFullYear()});return 0===n.length?(0,t.jsx)("div",{className:`text-center py-8 text-gray-500 dark:text-gray-400 ${l}`,children:(0,t.jsxs)("p",{children:["No events scheduled for ",(0,s.format)(r,"MMMM d, yyyy")]})}):(0,t.jsxs)("div",{className:`space-y-4 ${l}`,children:[(0,t.jsxs)("h3",{className:"text-lg font-medium text-gray-900 dark:text-white",children:["Events for ",(0,s.format)(r,"MMMM d, yyyy")]}),(0,t.jsx)("div",{className:"space-y-3",children:n.map(e=>(0,t.jsx)(x.default,{event:e,originStation:a},e.id))})]})},m=new(e.i(63261)).ApiClient;var b=e.i(8639);let y=({onLoadCalendar:e,loading:a,error:l,className:s=""})=>{let[n,i]=(0,r.useState)(""),d=async t=>{t.preventDefault(),n.trim()&&await e(n.trim())};return(0,t.jsx)("div",{className:`p-4 ${s}`,children:(0,t.jsxs)("form",{onSubmit:d,className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{htmlFor:"calendar-url",className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Calendar URL"}),(0,t.jsx)("input",{id:"calendar-url",type:"url",value:n,onChange:e=>i(e.target.value),placeholder:"https://example.com/calendar.ics",className:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:text-white",required:!0})]}),l&&(0,t.jsx)("div",{role:"alert",className:"text-red-600 text-sm",children:l}),(0,t.jsx)(b.default,{type:"submit",disabled:a,children:(0,t.jsx)(t.Fragment,{children:"Load Calendar"})})]})})},f=({onLoadCalendar:e,loading:a,error:l,className:s=""})=>{let n=(0,r.useRef)(null),[i,d]=(0,r.useState)(!1),o=async t=>{try{await e(t),n.current&&(n.current.value="")}catch(e){console.error("Error uploading file:",e)}};return(0,t.jsxs)("div",{className:`p-4 ${s}`,children:[(0,t.jsxs)("div",{className:`border-2 border-dashed rounded-lg p-8 text-center cursor-pointer ${i?"border-blue-500 bg-blue-50":"border-gray-300"}`,onDragEnter:e=>{e.preventDefault(),e.stopPropagation(),d(!0)},onDragLeave:e=>{e.preventDefault(),e.stopPropagation(),d(!1)},onDragOver:e=>{e.preventDefault(),e.stopPropagation(),d(!0)},onDrop:e=>{e.preventDefault(),e.stopPropagation(),d(!1);let t=e.dataTransfer.files;t.length>0&&o(t[0])},onClick:()=>n.current?.click(),children:[(0,t.jsx)("input",{type:"file",ref:n,onChange:e=>{let t=e.target.files?.[0];t&&o(t)},accept:".ics",className:"hidden"}),a?(0,t.jsx)(t.Fragment,{children:"Loading calendar..."}):(0,t.jsx)(t.Fragment,{children:"Click to upload or drag and drop an .ics file here"})]}),l&&(0,t.jsx)("div",{className:"mt-4 text-red-600 text-sm",children:l}),(0,t.jsx)(b.default,{onClick:()=>n.current?.click(),disabled:a,children:(0,t.jsx)(t.Fragment,{children:"Select File"})})]})},p=({className:e=""})=>{let[l,s]=(0,r.useState)("url"),{events:n,loading:i,error:d,fetchCalendarFromUrl:o,parseCalendarFromFile:c}=function(e=14){let[t,a]=(0,r.useState)([]),[l,s]=(0,r.useState)(!1),[n,i]=(0,r.useState)(null),d=(0,r.useCallback)(async t=>{s(!0),i(null);try{let r=await m.fetchCalendar(t,e);a(r)}catch(e){i(e instanceof Error?e.message:"Failed to fetch calendar")}finally{s(!1)}},[e]),o=(0,r.useCallback)(async e=>{s(!0),i(null);try{let t=await e.text(),r=await m.parseCalendarIcs(t);a(r)}catch(e){i(e instanceof Error?e.message:"Failed to parse calendar file")}finally{s(!1)}},[]),c=(0,r.useCallback)(e=>{let r=new Map;t.forEach(e=>{r.set(e.id,e)}),e.forEach(e=>{r.set(e.id,e)}),a(Array.from(r.values()))},[t]);return{events:t,loading:l,error:n,fetchCalendarFromUrl:d,parseCalendarFromFile:o,mergeEvents:c,setEvents:a}}(),{mergeEvents:u}=(0,a.useEventsStore)();(0,r.useEffect)(()=>{n.length>0&&u(n)},[n,u]);let g=async e=>{"string"==typeof e?await o(e):await c(e)};return(0,t.jsxs)("div",{className:`bg-white dark:bg-gray-800 rounded-lg shadow-sm overflow-hidden ${e}`,children:[(0,t.jsx)("div",{className:"p-4 border-b border-gray-200 dark:border-gray-700",children:(0,t.jsx)("div",{className:"flex items-center justify-between",children:(0,t.jsx)("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:"Import Calendar"})})}),(0,t.jsxs)("div",{className:"p-4",children:[(0,t.jsx)("div",{className:"border-b border-gray-200 dark:border-gray-700 mb-4",children:(0,t.jsxs)("nav",{className:"-mb-px flex space-x-8","aria-label":"Tabs",children:[(0,t.jsx)("button",{className:`pb-2 px-1 border-b-2 font-medium text-sm ${"url"===l?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300"}`,onClick:()=>s("url"),disabled:i,children:"URL"}),(0,t.jsx)("button",{className:`pb-2 px-1 border-b-2 font-medium text-sm ${"file"===l?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300"}`,onClick:()=>s("file"),disabled:i,children:"File"})]})}),"url"===l?(0,t.jsx)(y,{onLoadCalendar:e=>g(e),loading:i,error:d}):(0,t.jsx)(f,{onLoadCalendar:e=>g(e),loading:i,error:d})]})]})};e.s(["default",0,function(){let{events:e}=(0,a.useEventsStore)(),{station:s}=(0,l.useOriginStation)(),[n,i]=r.default.useState(new Date);return(0,t.jsxs)("div",{className:"max-w-6xl mx-auto p-4",children:[(0,t.jsxs)("div",{className:"mb-6",children:[(0,t.jsx)("h1",{className:"text-3xl font-bold text-gray-900 dark:text-white",children:"Calendar"}),(0,t.jsx)("p",{className:"text-gray-600 dark:text-gray-400",children:"View and manage your events"})]}),(0,t.jsx)("div",{className:"mb-6",children:(0,t.jsx)(p,{})}),(0,t.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[(0,t.jsx)("div",{className:"lg:col-span-2",children:(0,t.jsx)(g,{events:e,onDateSelect:i,selectedDate:n})}),(0,t.jsx)("div",{children:(0,t.jsx)(h,{events:e,date:n,originStation:s})})]})]})}],75505)}]);