behnoo-calendar 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("vue");var t=()=>{let t=(0,e.ref)(typeof window<`u`?window.innerWidth:1024),n=(0,e.ref)(typeof window<`u`?window.innerHeight:768),r=()=>{t.value=window.innerWidth,n.value=window.innerHeight};return(0,e.onMounted)(()=>window.addEventListener(`resize`,r)),(0,e.onUnmounted)(()=>window.removeEventListener(`resize`,r)),{width:t,height:n}},n=e=>(typeof e==`object`&&e&&`value`in e?String(e.value):String(e||`fa-IR`)).replace(/[^a-zA-Z-]/g,`-`).split(`-`)[0]||`fa`,r=()=>{let t=(0,e.inject)(`calendarConfig`,(0,e.ref)({locale:`en`,calendar:`gregory`,startOfWeek:`sunday`,showHolidays:!1}));return{t:(e,n)=>{let r=t.value.locale.startsWith(`fa`);return{"calendar.dayTimes.morning":r?`صبح`:`Morning`,"calendar.dayTimes.noon":r?`ظهر`:`Noon`,"calendar.dayTimes.afternoon":r?`عصر`:`Afternoon`,"calendar.dayTimes.night":r?`شب`:`Night`,"calendar.moreItems":r?`${n?.count} مورد دیگر`:`${n?.count} More Items`,"calendar.noEvents":r?`رویدادی وجود ندارد`:`No events`,"calendar.allDay":r?`تمام روز`:`All day`,"calendar.agenda":r?`برنامه`:`Agenda`}[e]||e},config:t}},i=t=>{let r=(0,e.inject)(`calendarConfig`,(0,e.ref)({locale:`fa-IR`,calendar:`jalaali`,startOfWeek:`saturday`,showHolidays:!0})),i=t||r,a=(0,e.inject)(`calendarHolidays`,(0,e.ref)({})),o=(0,e.computed)(()=>{let e=i.value.calendar;return e===`jalaali`?`persian`:e===`islamic`?`islamic-uma`:`gregory`}),s=e=>({sunday:0,monday:1,tuesday:2,wednesday:3,thursday:4,friday:5,saturday:6})[e.toLowerCase()]??0,c=e=>{let t=new Date(e);t.setHours(12,0,0,0);let n=o.value;n===`islamic-uma`&&(n=`islamic-civil`,t.setDate(t.getDate()-1));let r=new Intl.DateTimeFormat(`en-u-ca-${n}`,{year:`numeric`,month:`numeric`,day:`numeric`}).formatToParts(t),i=e=>parseInt(r.find(t=>t.type===e)?.value||`0`);return{year:i(`year`),month:i(`month`),day:i(`day`)}},l=(0,e.computed)(()=>i.value.calendar===`gregory`?1:6),u=e=>String(e),d=e=>{let t=[`۰`,`۱`,`۲`,`۳`,`۴`,`۵`,`۶`,`۷`,`۸`,`۹`];return String(e).replace(/\d/g,e=>t[parseInt(e)]??e)},f=e=>{let t=n(i.value.locale),r=new Date(e);r.setDate(r.getDate()+-1);let s=(t,n=e)=>{let r=new Intl.DateTimeFormat(`en-u-ca-${t}`,{year:`numeric`,month:`numeric`,day:`numeric`}).formatToParts(n);return parseInt(r.find(e=>e.type===`day`)?.value||`0`)},c=s(`gregory`),l=s(`persian`),f=s(`islamic-civil`,r),p=t===`fa`||t===`ar`,m=u(c),h=p?d(l):u(l),g=p?d(f):u(f),_=i.value.calendar,v,y,b;_===`jalaali`?(v=h,y=m,b=g):_===`islamic`?(v=g,y=h,b=m):(v=m,y=h,b=g);let x=new Date,S=e.getDate()===x.getDate()&&e.getMonth()===x.getMonth()&&e.getFullYear()===x.getFullYear(),C=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`,w=a.value[C],T=w?.isHoliday||!1,E=w?.titles?.join(` - `)||null,D=e.getDay(),O=i.value.showHolidays?_===`jalaali`||_===`islamic`?D===5:D===0:!1,k=i.value.showHolidays?O||T:!1,A=o.value,j=new Intl.DateTimeFormat(`${t}-u-ca-${A}`,{weekday:`long`}).format(e),M=new Intl.DateTimeFormat(`${t}-u-ca-${A}`,{weekday:`short`}).format(e);return{date:new Date(e),primary:v,secondary:y,tertiary:b,jalaali:l,gregorian:c,ghamari:f,isToday:S,isWeekend:O,isHoliday:k,holidayTitle:E,name:j,shortName:M,dayOfWeek:D}},p=(e,t)=>{if(!e)return[];let n=[];if(t===`monthly`){let t=new Date(e.start);t.setHours(12,0,0,0);let r=c(t),a=r.month,o=r.year,l=new Date(t);for(;c(l).day!==1;)l.setDate(l.getDate()-1);let u=new Date(l);for(;;){u.setDate(u.getDate()+1);let e=c(u);if(e.month!==a||e.year!==o){u.setDate(u.getDate()-1);break}}let d=s(i.value.calendar===`gregory`?`monday`:`saturday`),p=l.getDay()-d;p<0&&(p+=7);let m=new Date(l);m.setDate(m.getDate()-p);let h=((d+6)%7-u.getDay()+7)%7,g=new Date(u);g.setDate(g.getDate()+h);let _=new Date(m);for(;_<=g;){let e=f(new Date(_)),t=c(_);n.push({...e,otherMonth:t.month!==a||t.year!==o}),_.setDate(_.getDate()+1)}}else if(t===`agenda`){let t=new Date(e.start);t.setHours(12,0,0,0);let r=c(t),i=r.month,a=r.year,o=new Date(t);for(;c(o).day!==1;)o.setDate(o.getDate()-1);let s=new Date(o);for(;;){s.setDate(s.getDate()+1);let e=c(s);if(e.month!==i||e.year!==a){s.setDate(s.getDate()-1);break}}let l=new Date(o);for(;l<=s;){let e=f(new Date(l));n.push({...e,otherMonth:!1}),l.setDate(l.getDate()+1)}}else if(t===`weekly`){let t=s(i.value.calendar===`gregory`?`monday`:`saturday`),r=new Date(e.start),a=r.getDay()-t;a<0&&(a+=7),r.setDate(r.getDate()-a);for(let e=0;e<7;e++){let t=new Date(r);t.setDate(r.getDate()+e),n.push({...f(t),otherMonth:!1})}}else if(t===`3days`)for(let t=0;t<3;t++){let r=new Date(e.start);r.setDate(r.getDate()+t),n.push({...f(r),otherMonth:!1})}else n.push({...f(new Date(e.start)),otherMonth:!1});return n},m=(0,e.computed)(()=>{let e=n(i.value.locale),t=o.value,r=l.value,a=new Date(2025,0,12+r),s=new Intl.DateTimeFormat(`${e}-u-ca-${t}`,{weekday:`narrow`}),c=new Intl.DateTimeFormat(`${e}-u-ca-${t}`,{weekday:`long`});return Array.from({length:7},(e,t)=>{let n=new Date(a);return n.setDate(a.getDate()+t),{dayOfWeek:n.getDay(),label:s.format(n),fullName:c.format(n)}})}),h=e=>{let t=n(i.value.locale),r=o.value;return{sunday:0,monday:1,tuesday:2,wednesday:3,thursday:4,friday:5,saturday:6}[new Intl.DateTimeFormat(`${t}-u-ca-${r}`,{weekday:`long`}).format(e).toLowerCase()]??0},g=()=>{let e=new Date,t=c(e),n=new Date(e);for(n.setHours(0,0,0,0);c(n).day!==t.day||c(n).month!==t.month||c(n).year!==t.year;)n.setDate(n.getDate()-1);return n},_=e=>{let t=new Date(e);t.setHours(12,0,0,0);let n=c(t),r=n.month,i=n.year;for(;n.day!==1;)t.setDate(t.getDate()-1),n=c(t);let a=new Date(t);for(;;){a.setDate(a.getDate()+1);let e=c(a);if(e.month!==r||e.year!==i){a.setDate(a.getDate()-1);break}}return a.setHours(23,59,59,999),{start:t,end:a}},v=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t.setMilliseconds(0),t},y=()=>i.value.calendar===`gregory`?1:6,b=e=>{let t=g();if(e===`daily`||e===`3days`)return v(t);if(e===`weekly`){let e=y(),n=t.getDay()-e;n<0&&(n+=7);let r=new Date(t);return r.setDate(r.getDate()-n),v(r)}c(t);let n=v(t);for(n.setHours(12,0,0,0);c(n).day!==1;)n.setDate(n.getDate()-1);return v(n)},x=(e,t)=>{let r=n(e),i=t===`jalaali`?`persian`:t===`islamic`?`islamic-civil`:`gregory`,a=c(new Date).year,o=C(1,a),s=[];for(let e=1;e<=12;e++){let t=C(e,a,o);o=new Date(t);let n=new Intl.DateTimeFormat(`${r}-u-ca-${i}`,{month:`long`}).format(t);s.push({value:e,label:n,shortLabel:n})}return s},S=(e=new Date)=>{let t=c(e);return{month:t.month,year:t.year}},C=(e,t,n)=>{let r=n?new Date(n):new Date;r.setHours(12,0,0,0);let i=c(r),a=1e3,o=0;for(;(i.year!==t||i.month!==e)&&o<a;)i.year<t||i.year===t&&i.month<e?r.setDate(r.getDate()+1):r.setDate(r.getDate()-1),i=c(r),o++;for(;i.day!==1&&o<a;)r.setDate(r.getDate()-1),i=c(r),o++;return r.setHours(0,0,0,0),r};return{getCalendarHeaders:p,getDayDetails:f,offsetPeriod:(e,t,n)=>{let r=new Date(e);if(t===`daily`)r.setDate(r.getDate()+n);else if(t===`3days`)r.setDate(r.getDate()+n*3);else if(t===`weekly`)r.setDate(r.getDate()+n*7);else{let e=c(r),t=e.month+n,i=e.year;return t<1&&(t+=12,i--),t>12&&(t-=12,i++),v(C(t,i))}return v(r)},getMonthBounds:_,getWeekDayNames:m,getParts:c,resetToToday:b,getTodayInActiveCalendar:g,getCurrentPeriodStart:e=>b(e),getCurrentMonthYear:S,getDayOfWeekIndex:h,getMonthNames:x,getFirstDayOfMonthInActiveCalendar:C}},a=(0,e.defineComponent)({name:`CalendarDayBadge`,props:{day:{type:Object,required:!0}},setup(t){return{getDayItemColor:(0,e.computed)(()=>{let e=t.day,n=`border-outline-variant bg-surface`,r=`text-on-surface/50`;return e.isToday&&(n=`bg-today border-outline-variant/0`,r=`text-surface`),(e.isWeekend||e.isHoliday)&&(r=`text-error`),{fill:n,text:r}}),getFont:(e,t)=>{if(String(t.gregorian)===t[e])return`font-latin`}}}}),o=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},s={class:`flex flex-col items-center`};function c(t,n,r,i,a,o){return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,s,[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`w-7 h-7 sm:w-8 sm:h-8 md:w-9 md:h-9 select-none border flex flex-col justify-center items-center rounded-full`,[t.getDayItemColor.fill,t.getDayItemColor.text]])},[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([[t.getFont(`tertiary`,t.day)],`leading-none opacity-70 text-[6px] sm:text-[7px] md:text-[8px]`])},(0,e.toDisplayString)(t.day.tertiary),3),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([[t.getFont(`primary`,t.day)],`leading-tight text-[11px] sm:text-xs md:text-label-md font-medium`])},(0,e.toDisplayString)(t.day.primary),3),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([[t.getFont(`secondary`,t.day)],`leading-none opacity-70 text-[6px] sm:text-[7px] md:text-[8px]`])},(0,e.toDisplayString)(t.day.secondary),3)],2)])}var l=o(a,[[`render`,c]]),u=(0,e.defineComponent)({name:`CalendarHeaderItem`,components:{CalendarDayBadge:l},props:{days:{type:Array,default:()=>[]},mode:{type:String,default:`monthly`},todayColumnIndex:{type:Number,default:-1}},setup(t){return{itemWidths:(0,e.computed)(()=>`${100/(t.days.length+(t.mode===`monthly`?0:1))}%`)}}}),d={key:0,class:`border shrink-0 w-8 sm:w-9 md:w-25 min-w-8 sm:min-w-9 md:min-w-25 max-w-8 sm:max-w-9 md:max-w-25 border-outline-variant`},f={class:`select-none text-on-surface/50 text-[9px] sm:text-[10px] md:text-label-md truncate max-w-full text-center px-0.5`},p={class:`sm:hidden`},m={class:`hidden sm:inline`};function h(t,n,r,i,a,o){let s=(0,e.resolveComponent)(`CalendarDayBadge`);return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`cal-header-row w-full items-stretch flex justify-between`,{"ltr:border-l rtl:border-r border-outline-variant":t.mode===`monthly`}])},[t.mode===`monthly`?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,d)),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.days,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`border-y rtl:border-l ltr:border-r border-outline-variant py-1.5 sm:py-2 md:py-4 flex-col flex-1 min-w-0 gap-y-1 sm:gap-y-1.5 md:gap-y-2.5 flex items-center justify-center transition-colors`,{"bg-today-column":r===t.todayColumnIndex}]),key:n.name+r},[t.mode===`monthly`?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(s,{key:0,day:n},null,8,[`day`])),(0,e.createElementVNode)(`div`,f,[(0,e.createElementVNode)(`span`,p,(0,e.toDisplayString)(n.shortName||n.name),1),(0,e.createElementVNode)(`span`,m,(0,e.toDisplayString)(n.name),1)])],2))),128))],2)}var g=o(u,[[`render`,h],[`__scopeId`,`data-v-ef2978fb`]]),_=(0,e.defineComponent)({name:`CalendarSideItem`,props:{range:{type:Object,required:!0}},setup(n){let{t:i,config:a}=r(),{width:o}=t(),s=(0,e.computed)(()=>o.value<768),c=(0,e.computed)(()=>new Intl.NumberFormat(a.value.locale.startsWith(`fa`)?`fa-IR`:`en-US`)),l=(0,e.computed)(()=>`${100/u.value.length}%`),u=(0,e.computed)(()=>{let e=[],{start:t,end:r}=n.range;for(let n=t;n<r;n++)if(s.value)e.push({raw:n,label:c.value.format(n)});else{let t=``;t=n>=1&&n<=11?`morning`:n===12?`noon`:n>=13&&n<19?`afternoon`:`night`;let r=n;n>12&&(r=n-12),n===0&&(r=12),e.push({raw:n,label:`${c.value.format(r)} ${i(`calendar.dayTimes.${t}`)}`})}return e});return{hoursList:u,itemHeights:l}}}),v={class:`w-8 sm:w-9 md:w-25 min-h-full flex flex-col ltr:border-r ltr:border-r-outline-variant rtl:border-l border-l-outline-variant`};function y(t,n,r,i,a,o){return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,v,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.hoursList,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:n.raw,style:(0,e.normalizeStyle)({height:t.itemHeights}),class:`flex items-center text-center justify-center text-[10px] sm:text-xs md:text-label-md text-on-surface/50 border-b min-h-20 border-b-outline-variant select-none`},(0,e.toDisplayString)(n.label),5))),128))])}var b=o(_,[[`render`,y]]),x=(0,e.defineComponent)({name:`CalendarPattern`,setup(){return{getX:e=>-50+(e-1)*25}}}),S={width:`100%`,height:`120%`,viewBox:`0 0 440 221`,preserveAspectRatio:`xMidYMid slice`,class:`text-surface-variant`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},C=[`x`,`transform`];function w(t,n,r,i,a,o){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,S,[((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(25,n=>(0,e.createElementVNode)(`rect`,{key:n,x:t.getX(n),y:`220.895`,width:`300`,height:`12`,transform:`rotate(-115 ${t.getX(n)} 220.895)`,fill:`currentColor`},null,8,C)),64))])}var T=o(x,[[`render`,w]]),E={"--cal-primary":{light:{r:26,g:157,b:144},dark:{r:64,g:184,b:172}},"--color-primary":{light:{r:26,g:157,b:144},dark:{r:64,g:184,b:172}},"--cal-surface":{light:{r:255,g:255,b:255},dark:{r:21,g:24,b:35}},"--color-surface":{light:{r:255,g:255,b:255},dark:{r:21,g:24,b:35}},"--cal-on-surface":{light:{r:44,g:44,b:46},dark:{r:255,g:255,b:255}},"--color-on-surface":{light:{r:44,g:44,b:46},dark:{r:255,g:255,b:255}},"--cal-error":{light:{r:229,g:43,b:22},dark:{r:234,g:85,b:69}},"--color-error":{light:{r:229,g:43,b:22},dark:{r:234,g:85,b:69}}};function D(e){if(!e||typeof e!=`string`)return null;let t=e.trim().toLowerCase();if(t.startsWith(`var(`)){let e=t.match(/var\(\s*([^,\s)]+)/),n=e?e[1]:``;if(typeof document<`u`&&n)try{let e=getComputedStyle(document.documentElement).getPropertyValue(n).trim();if(e){let t=D(e);if(t)return t}}catch{}let r=t.match(/var\([^,]+,\s*([^)]+)\)/);if(r&&r[1]){let e=D(r[1].trim());if(e)return e}return n&&E[n]?typeof document<`u`&&document.documentElement.classList.contains(`dark`)?E[n].dark:E[n].light:{r:26,g:157,b:144}}if(t.startsWith(`#`)){let e=t.slice(1);if(e.length===3||e.length===4){let t=e[0]||`0`,n=e[1]||`0`,r=e[2]||`0`,i=parseInt(t+t,16),a=parseInt(n+n,16),o=parseInt(r+r,16);if(!Number.isNaN(i)&&!Number.isNaN(a)&&!Number.isNaN(o))return{r:i,g:a,b:o}}else if(e.length===6||e.length===8){let t=parseInt(e.slice(0,2),16),n=parseInt(e.slice(2,4),16),r=parseInt(e.slice(4,6),16);if(!Number.isNaN(t)&&!Number.isNaN(n)&&!Number.isNaN(r))return{r:t,g:n,b:r}}return null}if(t.startsWith(`rgb`)){let e=t.match(/\(([^)]+)\)/);if(e&&e[1]){let t=e[1].split(/[\s,/]+/).filter(Boolean),n=t[0],r=t[1],i=t[2];if(n!==void 0&&r!==void 0&&i!==void 0){let e=n.endsWith(`%`)?parseFloat(n)/100*255:parseFloat(n),t=r.endsWith(`%`)?parseFloat(r)/100*255:parseFloat(r),a=i.endsWith(`%`)?parseFloat(i)/100*255:parseFloat(i);if(!Number.isNaN(e)&&!Number.isNaN(t)&&!Number.isNaN(a))return{r:Math.min(255,Math.max(0,Math.round(e))),g:Math.min(255,Math.max(0,Math.round(t))),b:Math.min(255,Math.max(0,Math.round(a)))}}}return null}if(t.startsWith(`hsl`)){let e=t.match(/\(([^)]+)\)/);if(e&&e[1]){let t=e[1].split(/[\s,/]+/).filter(Boolean),n=t[0],r=t[1],i=t[2];if(n!==void 0&&r!==void 0&&i!==void 0){let e=parseFloat(n),t=parseFloat(r)/100,a=parseFloat(i)/100;if(!Number.isNaN(e)&&!Number.isNaN(t)&&!Number.isNaN(a))return O(e,t,a)}}return null}let n={white:{r:255,g:255,b:255},black:{r:0,g:0,b:0},transparent:{r:255,g:255,b:255},red:{r:255,g:0,b:0},green:{r:0,g:128,b:0},blue:{r:0,g:0,b:255},yellow:{r:255,g:255,b:0},orange:{r:255,g:165,b:0},purple:{r:128,g:0,b:128},teal:{r:0,g:128,b:128},gray:{r:128,g:128,b:128},grey:{r:128,g:128,b:128}};return n[t]?n[t]:null}function O(e,t,n){let r=(e%360+360)%360,i=(1-Math.abs(2*n-1))*t,a=i*(1-Math.abs(r/60%2-1)),o=n-i/2,s=0,c=0,l=0;return r>=0&&r<60?(s=i,c=a):r>=60&&r<120?(s=a,c=i):r>=120&&r<180?(c=i,l=a):r>=180&&r<240?(c=a,l=i):r>=240&&r<300?(s=a,l=i):(s=i,l=a),{r:Math.round((s+o)*255),g:Math.round((c+o)*255),b:Math.round((l+o)*255)}}function k(e,t,n){let r=e=>{let t=Math.max(0,Math.min(255,e))/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4},i=r(e),a=r(t),o=r(n);return .2126*i+.7152*a+.0722*o}function A(e,t){let n=typeof e==`string`?D(e)??{r:0,g:0,b:0}:e,r=typeof t==`string`?D(t)??{r:255,g:255,b:255}:t,i=k(n.r,n.g,n.b),a=k(r.r,r.g,r.b),o=Math.max(i,a),s=Math.min(i,a);return(o+.05)/(s+.05)}function j(e,t){let n=t?.darkColor??`#0f172a`,r=t?.lightColor??`#ffffff`;if(!e)return r;let i=D(e)??{r:26,g:157,b:144},a=D(n)??{r:15,g:23,b:42},o=D(r)??{r:255,g:255,b:255},s=k(i.r,i.g,i.b),c=k(a.r,a.g,a.b),l=k(o.r,o.g,o.b),u=(Math.max(s,c)+.05)/(Math.min(s,c)+.05);return(Math.max(s,l)+.05)/(Math.min(s,l)+.05)>=u?r:n}var M=(0,e.defineComponent)({__name:`CalendarItemDisplay`,props:{event:{},mode:{},headers:{},hours:{},position:{},isMobile:{type:Boolean},overlapIndex:{},overlapCount:{}},emits:[`event-click`],setup(t){let n=t,r=(0,e.computed)(()=>n.event.color||`var(--cal-primary)`),i=(0,e.computed)(()=>j(r.value)),a=(0,e.computed)(()=>{if(n.mode===`monthly`)return{zIndex:10,position:`relative`};if(n.position===`static`)return{width:`100%`,height:`36px`,position:`relative`};if(!n.headers?.length||!n.hours)return{display:`none`};let e=new Date(n.event.date).toLocaleDateString(`en-CA`),t=n.headers.findIndex(t=>new Date(t.date).toLocaleDateString(`en-CA`)===e);if(t===-1||n.hours.end-n.hours.start<=0)return{display:`none`};let r=n.event.time.split(`:`).map(Number),i=(r[0]??0)+(r[1]??0)/60,a=(i-n.hours.start)*80,o=100/n.headers.length,s=n.overlapCount??1,c=n.overlapIndex??0,l=o/s,u,d;if(n.event.duration&&n.event.duration>0){let e=Math.min(i+n.event.duration/60,n.hours.end);u=`${Math.max(0,e-i)*80}px`,d=`20px`}else u=n.isMobile&&n.mode===`weekly`?`16px`:`36px`;return{top:`${a}px`,insetInlineStart:`${t*o+c*l}%`,width:`${l}%`,height:u,minHeight:d,zIndex:10,boxSizing:`border-box`}}),o=(0,e.computed)(()=>({backgroundColor:r.value,color:i.value})),s=(0,e.computed)(()=>{let e=r.value,t=i.value;return n.mode===`monthly`?{backgroundColor:e,color:t,opacity:.9,borderLeft:`4px solid ${e}`}:{backgroundColor:e,color:t}});return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{id:`event-display`,style:(0,e.normalizeStyle)(a.value),class:(0,e.normalizeClass)([t.position===`static`?``:`absolute`,t.mode===`monthly`?``:t.isMobile&&t.mode===`weekly`?`px-0.5`:`px-1 sm:px-2`]),onClick:r[0]||=(0,e.withModifiers)(e=>n.$emit(`event-click`,t.event,e),[`stop`])},[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`flex whitespace-normal items-center rounded cursor-pointer transition-transform text-[10px] sm:text-[11px] leading-tight overflow-hidden`,t.mode===`monthly`?`px-2 relative mb-1 h-6 shrink-0 whitespace-nowrap text-ellipsis w-[calc(100%-16px)]`:t.isMobile&&t.mode===`weekly`?`absolute px-1 h-full w-[calc(100%-4px)] text-[9px] leading-none`:`absolute px-2 sm:px-4 h-full w-[calc(100%-8px)] sm:w-[calc(100%-16px)] sm:rounded-md`]),style:(0,e.normalizeStyle)(s.value)},[(0,e.renderSlot)(n.$slots,`event`,{event:t.event,mode:t.mode},()=>[(0,e.createElementVNode)(`div`,{style:(0,e.normalizeStyle)(o.value),class:`w-full h-full relative z-10 flex items-center gap-x-1 truncate font-medium`},(0,e.toDisplayString)(t.event.title),5)])],6)],6))}}),ee=(0,e.defineComponent)({name:`CalendarDayHolder`,props:{day:{type:Object,required:!0},otherMonth:{type:Boolean,default:!1},events:{type:Array,default:()=>[]}},components:{CalendarDayBadge:l,CalendarPattern:T,CalendarItemDisplay:M},emits:[`open-day`,`event-click`],setup(t,{emit:n}){let{t:i}=r();return{t:i,displayedEvents:(0,e.computed)(()=>t.events.slice(0,2)),openDay:()=>{n(`open-day`,t.day)},remainingCount:(0,e.computed)(()=>t.events.length-2)}}}),te={class:`relative top-0 left-0 w-full h-full p-4 flex flex-col`},ne={key:0,class:`shrink-0`},N={id:`holder`,class:`w-full flex-1 relative flex flex-col gap-y-1.5 mt-2`},P={class:`w-full h-full pointer-events-none absolute top-0 left-0`};function F(t,n,r,i,a,o){let s=(0,e.resolveComponent)(`CalendarDayBadge`),c=(0,e.resolveComponent)(`CalendarItemDisplay`),l=(0,e.resolveComponent)(`CalendarPattern`);return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`border border-outline-variant/50 w-full relative h-full transition-colors`,[t.otherMonth?`overflow-hidden`:`overflow-visible`,t.day.isToday&&!t.otherMonth?`bg-today-column`:``]])},[(0,e.createElementVNode)(`div`,te,[t.otherMonth?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ne,[(0,e.createVNode)(s,{day:t.day},null,8,[`day`])])),(0,e.createElementVNode)(`div`,N,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.displayedEvents,r=>((0,e.openBlock)(),(0,e.createBlock)(c,{key:r.id,position:`static`,event:r,onEventClick:n[0]||=e=>t.$emit(`event-click`,e)},{event:(0,e.withCtx)(n=>[(0,e.renderSlot)(t.$slots,`event`,(0,e.mergeProps)({ref_for:!0},n))]),_:3},8,[`event`]))),128)),t.remainingCount>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,onClick:n[1]||=(...e)=>t.openDay&&t.openDay(...e),class:`w-full relative z-0 h-9 px-2 flex cursor-pointer items-center rounded-lg bg-surface-variant text-label-sm text-on-surface select-none`},(0,e.toDisplayString)(t.t(`calendar.moreItems`,{count:t.remainingCount})),1)):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`div`,P,[t.otherMonth?((0,e.openBlock)(),(0,e.createBlock)(l,{key:0,class:`absolute inset-0 z-0 pointer-events-none`})):(0,e.createCommentVNode)(``,!0)])],2)}var I=o(ee,[[`render`,F]]),L=(0,e.defineComponent)({name:`CalendarPointer`,props:{mode:{type:String,required:!0},hours:{type:Object,required:!0},headers:{type:Array,required:!0}},setup(t){let n=(0,e.ref)(new Date),r;(0,e.onMounted)(()=>{r=setInterval(()=>{n.value=new Date},6e4)}),(0,e.onUnmounted)(()=>{r&&clearInterval(r)});let i=(0,e.computed)(()=>{if(!t.headers||t.headers.length===0)return{display:`none`};let e=t.headers.findIndex(e=>e.isToday);if(e===-1)return{display:`none`};let r=n.value,i=r.getHours()+r.getMinutes()/60;if(t.mode===`monthly`){let n=Math.ceil(t.headers.length/7),r=Math.floor(e/7),a=e%7,o=100/n,s=i/24*o;return{width:`${100/7}%`,top:`${r*o+s}%`,insetInlineStart:`${a/7*100}%`,transition:``}}if(i<t.hours.start||i>t.hours.end)return{display:`none`};let a=t.headers.length,o=t.hours.end-t.hours.start;return{width:`${100/a}%`,top:`${(i-t.hours.start)/o*100}%`,insetInlineStart:`${e/a*100}%`,transition:``}});return{pointerStyle:i,isVisible:(0,e.computed)(()=>i.value.display!==`none`)}}});function R(t,n,r,i,a,o){return(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`absolute z-20 pointer-events-none -translate-y-1/2 flex items-center`,style:(0,e.normalizeStyle)(t.pointerStyle)},[...n[0]||=[(0,e.createElementVNode)(`div`,{class:`w-2.5 aspect-square rounded-full bg-error shrink-0`},null,-1),(0,e.createElementVNode)(`div`,{class:`h-0.5 flex-1 bg-error`},null,-1)]],4)),[[e.vShow,t.isVisible]])}var z=o(L,[[`render`,R]]),B=(0,e.defineComponent)({name:`MobileDayHolder`,props:{day:{type:Object,required:!0},isSelected:{type:Boolean,default:!1},events:{type:Array,default:()=>[]},expandProgress:{type:Number,default:0},isDragging:{type:Boolean,default:!1}},emits:[`select`],setup(t,{emit:n}){return{canSelect:(0,e.computed)(()=>t.events.length>0),displayedEvents:(0,e.computed)(()=>t.events.slice(0,4)),selectDay:()=>{n(`select`,t.day)},styles:(0,e.computed)(()=>t.isSelected?{border:`border-transparent`,bg:`opacity-100`,text:`text-surface`}:t.day.isToday?{border:`border-primary`,bg:`opacity-0`,text:`text-primary`}:{border:`border-transparent`,bg:`opacity-0`,text:`text-on-surface/50`})}}}),V={class:`w-full h-full absolute inset-0 left-0 top-0 flex items-center justify-center`},H={class:`w-full flex-1 relative flex justify-center`};function U(t,n,r,i,a,o){return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,{onClick:n[0]||=(...e)=>t.selectDay&&t.selectDay(...e),class:(0,e.normalizeClass)([`flex flex-col items-center justify-start gap-y-0.5 w-full overflow-hidden hw-accel-height`,[t.canSelect?`cursor-pointer`:`cursor-default`,t.isDragging?``:`transition-all duration-300 ease-out`]]),style:(0,e.normalizeStyle)({height:`${40+t.expandProgress*16}px`})},[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`relative w-8 h-8 shrink-0 rounded-full transition-all duration-200 ease-in-out aspect-square border`,t.styles.border])},[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`rounded-full w-full h-full transition-all duration-200 ease-in-out bg-on-surface`,t.styles.bg])},null,2),(0,e.createElementVNode)(`div`,V,[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`select-none text-label-md transition-all duration-200 ease-in-out`,t.styles.text])},(0,e.toDisplayString)(t.day.primary),3)])],2),(0,e.createElementVNode)(`div`,H,[t.canSelect?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:(0,e.normalizeClass)([`rounded-full aspect-square w-1.5 bg-error absolute hw-accel`,[t.isDragging?``:`transition-all duration-300 ease-out`]]),style:(0,e.normalizeStyle)({opacity:Math.max(0,1-t.expandProgress*2),transform:`scale(${Math.max(0,1-t.expandProgress*2)})`})},null,6)):(0,e.createCommentVNode)(``,!0),t.canSelect?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,class:(0,e.normalizeClass)([`w-full flex flex-col gap-y-px absolute top-0 px-0.5 hw-accel`,[t.isDragging?``:`transition-all duration-300 ease-out`]]),style:(0,e.normalizeStyle)({opacity:t.expandProgress,transform:`translateY(${(1-t.expandProgress)*6}px)`})},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.displayedEvents,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id,class:`w-full rounded-full shrink-0 min-h-1`,style:(0,e.normalizeStyle)({backgroundColor:t.color||`var(--cal-primary)`})},null,4))),128))],6)):(0,e.createCommentVNode)(``,!0)])],6)}var W=o(B,[[`render`,U],[`__scopeId`,`data-v-d90e616f`]]),G={class:`flex flex-col gap-y-1 p-3 flex-1`},K={class:`text-label-md font-semibold text-on-surface`},q={class:`text-body-sm text-on-surface/60`},J=(0,e.defineComponent)({__name:`MobileEventListItem`,props:{event:{}},emits:[`event-click`],setup(t){return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`bg-surface-variant flex flex-col rounded-lg border cursor-pointer`,onClick:r[0]||=(0,e.withModifiers)(e=>n.$emit(`event-click`,t.event,e),[`stop`])},[(0,e.createElementVNode)(`div`,G,[(0,e.renderSlot)(n.$slots,`event`,{event:t.event},()=>[(0,e.createElementVNode)(`div`,K,(0,e.toDisplayString)(t.event.title),1),(0,e.createElementVNode)(`div`,q,(0,e.toDisplayString)(t.event.time),1)])]),(0,e.createElementVNode)(`div`,{class:`w-full h-1 shrink-0 rounded-b-full rounded-t-none`,style:(0,e.normalizeStyle)({backgroundColor:t.event.color||`#3b82f6`})},null,4)]))}}),Y=(0,e.defineComponent)({name:`MobileCalendarGrid`,components:{MobileDayHolder:W,MobileEventListItem:J},props:{days:{type:Array,default:()=>[]},eventsByDay:{type:Object,required:!0},loading:{type:Boolean,default:!1}},emits:[`event-click`],setup(t){let{getWeekDayNames:n}=i(),r=(0,e.computed)(()=>n.value),a=(0,e.ref)(!1),o=(0,e.ref)([]),s=(0,e.ref)(``),c=e=>{let n=new Date(e.date).toDateString();s.value=n;let r=t.eventsByDay.get(n);r&&r.length>0?(o.value=[...r],a.value=!0):a.value=!1};(0,e.onMounted)(()=>{let e=new Date().toDateString();s.value=e;let n=t.eventsByDay.get(e);n&&n.length>0&&(o.value=[...n],a.value=!0)});let l=e=>s.value===new Date(e.date).toDateString(),u=(0,e.ref)(0),d=(0,e.ref)(!1),f=0,p=0,m=!1;function h(e){f=e,p=u.value,d.value=!0}function g(e){if(!d.value)return;let t=e-f;m||=(requestAnimationFrame(()=>{let e=p+t/120;u.value=Math.max(0,Math.min(1,e)),m=!1}),!0)}function _(){d.value=!1,u.value>.25&&p===0?u.value=1:u.value<.75&&p===1?u.value=0:u.value=p}let v=e=>{h(e.touches[0]?.clientY??0)},y=e=>{let t=e.touches[0];t&&g(t.clientY)},b=()=>{_()},x=e=>{h(e.clientY),document.addEventListener(`mousemove`,S),document.addEventListener(`mouseup`,C)},S=e=>{g(e.clientY)},C=()=>{_(),document.removeEventListener(`mousemove`,S),document.removeEventListener(`mouseup`,C)};return{isDaySelected:l,weekDays:r,selectDay:c,handleMouseDown:x,handleMouseLeave:()=>{d.value&&(_(),document.removeEventListener(`mousemove`,S),document.removeEventListener(`mouseup`,C))},selectedDate:s,showEventsList:a,progress:u,isDragging:d,handleTouchStart:v,handleTouchMove:y,handleTouchEnd:b,eventsList:o}}}),X={class:`w-full pt-6 px-4 relative flex flex-col flex-1 overflow-y-auto`},Z={class:`select-none text-[10px] text-on-surface/50 w-full flex items-center justify-between`},re={class:`font-medium`},ie={class:`w-full mt-4 grid grid-cols-7 gap-x-5 gap-y-4`},ae={key:0,class:`transition-all duration-200 ease-in-out overflow-hidden w-full mt-4 flex-1 overflow-y-auto`},oe={class:`py-2 text-on-surface text-title-sm font-bold select-none border-b border-outline-variant mb-2`},se={class:`w-full flex flex-col gap-y-2`};function ce(t,n,r,i,a,o){let s=(0,e.resolveComponent)(`MobileDayHolder`),c=(0,e.resolveComponent)(`MobileEventListItem`);return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,X,[n[6]||=(0,e.createElementVNode)(`div`,{class:`w-full fixed right-0 -translate-y-6 pointer-events-none z-50 h-6 bg-gradient-to-b from-surface to-transparent`},null,-1),(0,e.createElementVNode)(`div`,{id:`mobile-grid`,class:`w-full shrink-0 select-none`,style:{"touch-action":`pan-x`,"user-select":`none`},onTouchstart:n[0]||=(0,e.withModifiers)((...e)=>t.handleTouchStart&&t.handleTouchStart(...e),[`prevent`]),onTouchmove:n[1]||=(0,e.withModifiers)((...e)=>t.handleTouchMove&&t.handleTouchMove(...e),[`prevent`]),onTouchend:n[2]||=(...e)=>t.handleTouchEnd&&t.handleTouchEnd(...e),onMousedown:n[3]||=(0,e.withModifiers)((...e)=>t.handleMouseDown&&t.handleMouseDown(...e),[`prevent`]),onMouseleave:n[4]||=(...e)=>t.handleMouseLeave&&t.handleMouseLeave(...e)},[(0,e.createElementVNode)(`div`,Z,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.weekDays,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`aspect-square w-8 shrink-0 flex items-center justify-center`,key:t.dayOfWeek},[(0,e.createElementVNode)(`div`,re,(0,e.toDisplayString)(t.label),1)]))),128))]),(0,e.createElementVNode)(`div`,ie,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.days,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:(0,e.normalizeClass)([`transition-all duration-200 rounded-lg`,n.otherMonth?`opacity-0 pointer-events-none`:`opacity-100`,n.isToday&&!n.otherMonth?`bg-today-column`:``])},[(0,e.createVNode)(s,{"is-selected":t.isDaySelected(n),"expand-progress":t.progress,"is-dragging":t.isDragging,onSelect:t.selectDay,day:n,events:t.eventsByDay.get(new Date(n.date).toDateString())||[]},null,8,[`is-selected`,`expand-progress`,`is-dragging`,`onSelect`,`day`,`events`])],2))),128))])],32),t.showEventsList?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ae,[(0,e.createElementVNode)(`div`,oe,(0,e.toDisplayString)(t.selectedDate),1),(0,e.createElementVNode)(`div`,se,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.eventsList,r=>((0,e.openBlock)(),(0,e.createBlock)(c,{key:r.id,event:r,onEventClick:n[5]||=(e,n)=>t.$emit(`event-click`,e,n)},{event:(0,e.withCtx)(({event:n})=>[(0,e.renderSlot)(t.$slots,`event-mobile`,{event:n})]),_:2},1032,[`event`]))),128))])])):(0,e.createCommentVNode)(``,!0)])}var le=o(Y,[[`render`,ce]]),ue={class:`detail-wrapper-stub`},de=(0,e.defineComponent)({__name:`CalendarEventDetailWrapper`,emits:[`lock-scroll`],setup(t){return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ue))}}),fe=(0,e.defineComponent)({components:{MobileCalendarGrid:le,CalendarHeaderItem:g,CalendarSideItem:b,CalendarDayHolder:I,CalendarPointer:z,CalendarItemDisplay:M,CalendarEventDetailWrapper:de},props:{range:{type:Object,required:!0},mode:{type:String,default:`monthly`},hours:{type:Object,default:()=>({start:0,end:24})},events:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},dir:{type:String,default:``}},emits:[`update:mode`,`update:range`,`event-click`],setup(n,{emit:r}){let a=(0,e.computed)(()=>n.loading),{width:o}=t(),s=(0,e.computed)(()=>o.value<768),{getCalendarHeaders:c}=i(),l=(0,e.useTemplateRef)(`scrollContainer`),u=(0,e.computed)(()=>c(n.range,n.mode)),d=(0,e.computed)(()=>u.value),f=(0,e.computed)(()=>n.mode===`monthly`?d.value.slice(0,7):d.value),p=(0,e.computed)(()=>n.mode===`daily`||n.mode===`monthly`?-1:d.value.findIndex(e=>e.isToday)),m=(0,e.computed)(()=>{let e=new Map;return n.events.forEach(t=>{let n=new Date(t.date).toDateString();e.has(n)||e.set(n,[]),e.get(n)?.push(t)}),e}),h=(0,e.computed)(()=>{let e=new Map,t=u.value.filter(e=>!e.otherMonth),r=new Set(t.map(e=>new Date(e.date).toDateString()));return n.events.forEach(t=>{let n=new Date(t.date).toDateString();r.has(n)&&(e.has(n)||e.set(n,[]),e.get(n)?.push(t))}),e});function g(e){if(!e.duration||e.duration<=0)return[e];let t=e.time.split(`:`).map(Number),n=(t[0]??0)+(t[1]??0)/60;if(n+e.duration/60<=24)return[e];let r=[],i=new Date(e.date),a=0,o=n,s=e.duration;for(;s>0;){let t=Math.min(s,(24-o)*60),n=Math.floor(o),c=Math.round((o-n)*60);r.push({...e,id:`${e.id}_d${a}`,date:new Date(i.getTime()+a*864e5),time:`${String(n).padStart(2,`0`)}:${String(c).padStart(2,`0`)}`,duration:Math.round(t)}),s-=t,o=0,a++}return r}let _=(0,e.computed)(()=>{if(n.mode===`monthly`)return[];let e=new Set(d.value.map(e=>new Date(e.date).toLocaleDateString(`en-CA`)));return n.events.flatMap(g).filter(t=>{let n=new Date(t.date).toLocaleDateString(`en-CA`);return e.has(n)})}),v=(0,e.computed)(()=>{let e=[],t=[],r=new Map;for(let e of d.value)r.set(new Date(e.date).toLocaleDateString(`en-CA`),[]);for(let e of _.value)r.get(new Date(e.date).toLocaleDateString(`en-CA`))?.push(e);for(let[i,a]of r.entries()){if(!a.length)continue;let r=d.value.findIndex(e=>new Date(e.date).toLocaleDateString(`en-CA`)===i),o=a.map(e=>{let t=e.time.split(`:`).map(Number),n=(t[0]??0)+(t[1]??0)/60;return{event:e,start:n,end:e.duration?n+e.duration/60:n+.5,col:0}}).sort((e,t)=>e.start-t.start||t.end-e.end),s=[];for(let e of o){let t=s.findIndex(t=>t<=e.start);e.col=t===-1?s.length:t,s[e.col]=e.end}if(n.mode===`daily`)for(let t of o){let n=t.col;for(let e of o)e!==t&&e.start<t.end&&e.end>t.start&&(n=Math.max(n,e.col));e.push({event:t.event,overlapIndex:t.col,overlapCount:n+1})}else{for(let t of o){if(t.col>=2)continue;let n=t.col;for(let e of o)e!==t&&e.col<2&&e.start<t.end&&e.end>t.start&&(n=Math.max(n,e.col));e.push({event:t.event,overlapIndex:t.col,overlapCount:n+1})}let n=o.filter(e=>e.col>=2).sort((e,t)=>e.start-t.start),i=[];for(let e of n){let t=i[i.length-1];!t||e.start>=t.end?i.push({start:e.start,end:e.end,count:1}):(t.end=Math.max(t.end,e.end),t.count++)}for(let e of i){let n=o.filter(t=>t.col<2&&t.start<e.end&&t.end>e.start).reduce((e,t)=>Math.max(e,t.end),e.start);t.push({dayIndex:r,endDecimal:n,count:e.count})}}}return{events:e,overflows:t}}),y=(0,e.computed)(()=>v.value.events),b=(0,e.computed)(()=>v.value.overflows),x=(0,e.computed)(()=>{if(n.mode===`monthly`||_.value.length===0)return n.hours;let e=n.hours.start,t=n.hours.end;for(let n of _.value){let r=n.time.split(`:`).map(Number),i=(r[0]??0)+(r[1]??0)/60,a=n.duration?i+n.duration/60:i;e=Math.min(e,Math.floor(i)),t=Math.max(t,Math.ceil(a))}return{start:Math.max(0,e),end:Math.min(24,t)}}),S=(0,e.ref)(!1),C=e=>{S.value=e},w=e=>{let t=new Date(e.date);r(`update:range`,{start:new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0),end:new Date(t.getFullYear(),t.getMonth(),t.getDate(),23,59,59,999)}),r(`update:mode`,`daily`,t)},T=(0,e.ref)(!0);(0,e.watch)([s,()=>n.mode],()=>{T.value=s.value?n.mode!==`monthly`:!0},{immediate:!0});let E=(0,e.computed)(()=>{let e=[];for(let t=x.value.start;t<x.value.end;t++)e.push({raw:t});return e});return(0,e.watch)(()=>n.events,async()=>{if(n.mode===`monthly`||!l.value)return;await(0,e.nextTick)();let t=l.value,r=_.value.map(e=>parseInt(e.time.split(`:`)[0],10));if(r.length===0)return;r.sort((e,t)=>e-t);let i=((r[Math.floor(r.length/2)]??x.value.start)-x.value.start)*80-t.clientHeight/2+80/2;t.scrollTo({top:Math.max(0,i),behavior:`smooth`})},{deep:!0}),{isLoading:a,hoursList:E,effectiveHours:x,scrollContainer:l,headers:d,allHeaders:u,isMobile:s,displayedHeader:f,todayColumnIndex:p,monthlyEventsByDay:h,eventsByDay:m,gridEvents:y,overflowIndicators:b,scrollLocked:S,showMonthly:T,setLockScroll:C,openSpecificDay:w}}}),pe=[`dir`],me={ref:`scrollContainer`,class:`flex-1 w-full flex flex-col overflow-y-auto cal-scrollbar relative`},he={key:0,class:`sticky top-0 z-30 bg-surface shrink-0`},ge={class:`flex-1 w-full flex min-h-0`},_e={class:`flex-1 relative`},ve={class:`absolute inset-0 w-full flex flex-col pointer-events-none`},ye={class:`absolute inset-0 w-full flex pointer-events-none`},be={class:`relative min-h-full w-full`},xe=[`onClick`],Se={key:2,class:`w-full`};function Ce(t,n,r,i,a,o){let s=(0,e.resolveComponent)(`CalendarEventDetailWrapper`),c=(0,e.resolveComponent)(`CalendarHeaderItem`),l=(0,e.resolveComponent)(`CalendarSideItem`),u=(0,e.resolveComponent)(`CalendarPointer`),d=(0,e.resolveComponent)(`CalendarItemDisplay`),f=(0,e.resolveComponent)(`CalendarDayHolder`),p=(0,e.resolveComponent)(`MobileCalendarGrid`);return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`w-full h-full flex flex-col bg-surface whitespace-normal`,dir:t.dir},[(0,e.createVNode)(s,{onLockScroll:t.setLockScroll},null,8,[`onLockScroll`]),(0,e.createElementVNode)(`div`,me,[t.showMonthly?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,he,[(0,e.createVNode)(c,{class:`cal-header-row w-full border-b border-surface-variant`,mode:t.mode,days:t.displayedHeader,"today-column-index":t.todayColumnIndex},null,8,[`mode`,`days`,`today-column-index`])])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,ge,[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`shrink-0 transition-all duration-300`,[t.mode===`monthly`?`w-0 opacity-0 overflow-hidden`:`w-8 sm:w-9 md:w-25 opacity-100 h-full`]])},[(0,e.createVNode)(l,{class:`w-8 sm:w-9 md:w-25 min-h-full`,range:t.effectiveHours},null,8,[`range`])],2),(0,e.createElementVNode)(`div`,_e,[(0,e.createVNode)(e.Transition,{name:`calendar-view`,mode:`out-in`},{default:(0,e.withCtx)(()=>[t.mode===`monthly`?t.isMobile?t.mode===`monthly`&&t.isMobile?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Se,[(0,e.createVNode)(p,{loading:t.isLoading,days:t.headers,mode:t.mode,"events-by-day":t.monthlyEventsByDay,"is-other-month-func":e=>t.headers.find(t=>new Date(t.date).toDateString()===new Date(e).toDateString())?.otherMonth||!1,onEventClick:n[2]||=e=>t.$emit(`event-click`,e)},(0,e.createSlots)({_:2},[t.$slots[`event-mobile`]?{name:`event-mobile`,fn:(0,e.withCtx)(({event:n})=>[(0,e.renderSlot)(t.$slots,`event-mobile`,{event:n,mode:`monthly-mobile`},void 0,!0)]),key:`0`}:void 0]),1032,[`loading`,`days`,`mode`,`events-by-day`,`is-other-month-func`])])):(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:`month-${t.range?.start?.getTime()}`,class:`w-full grid grid-cols-7 auto-rows-[186px] overflow-hidden`},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.allHeaders,(r,i)=>((0,e.openBlock)(),(0,e.createBlock)(f,{key:i,day:r,"other-month":!!r.otherMonth,events:t.monthlyEventsByDay.get(new Date(r.date).toDateString())||[],onOpenDay:e=>t.openSpecificDay(r),onEventClick:n[1]||=e=>t.$emit(`event-click`,e)},(0,e.createSlots)({_:2},[t.$slots.event?{name:`event`,fn:(0,e.withCtx)(n=>[(0,e.renderSlot)(t.$slots,`event`,(0,e.mergeProps)({ref_for:!0},n),void 0,!0)]),key:`0`}:void 0]),1032,[`day`,`other-month`,`events`,`onOpenDay`]))),128))])):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:`time-${t.mode}-${t.range?.start?.getTime()}`,class:`w-full relative`,style:(0,e.normalizeStyle)({height:`${t.hoursList.length*80}px`})},[(0,e.createVNode)(u,{mode:t.mode,hours:t.effectiveHours,headers:t.headers},null,8,[`mode`,`hours`,`headers`]),(0,e.createElementVNode)(`div`,ve,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.effectiveHours.end-t.effectiveHours.start,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t,class:`w-full border-b border-surface-variant box-border h-20`}))),128))]),(0,e.createElementVNode)(`div`,ye,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.headers,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`h-full ltr:border-r rtl:border-l border-outline-variant flex-1 transition-colors`,{"bg-today-column":r===t.todayColumnIndex}]),key:`v`+r},null,2))),128))]),(0,e.createElementVNode)(`div`,be,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.gridEvents,r=>((0,e.openBlock)(),(0,e.createBlock)(d,{key:r.event.id,event:r.event,mode:t.mode,headers:t.headers,hours:t.effectiveHours,isMobile:t.isMobile,"overlap-index":r.overlapIndex,"overlap-count":r.overlapCount,onEventClick:n[0]||=e=>t.$emit(`event-click`,e)},(0,e.createSlots)({_:2},[t.$slots.event?{name:`event`,fn:(0,e.withCtx)(n=>[(0,e.renderSlot)(t.$slots,`event`,(0,e.mergeProps)({ref_for:!0},n),void 0,!0)]),key:`0`}:void 0]),1032,[`event`,`mode`,`headers`,`hours`,`isMobile`,`overlap-index`,`overlap-count`]))),128)),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.overflowIndicators,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:`of-${r}`,class:`absolute px-0.5 sm:px-1 z-20 pointer-events-auto`,style:(0,e.normalizeStyle)({top:`${(Math.min(n.endDecimal,t.effectiveHours.end)-t.effectiveHours.start)*80}px`,insetInlineStart:`${n.dayIndex*(100/t.headers.length)}%`,width:`${100/t.headers.length}%`})},[(0,e.createElementVNode)(`button`,{class:`w-full text-[8px] sm:text-[10px] leading-none rounded bg-surface-variant hover:bg-surface-variant/80 text-on-surface/70 px-1 sm:px-2 py-0.5 sm:py-1 truncate transition-colors`,onClick:e=>t.openSpecificDay(t.headers[n.dayIndex])},` +`+(0,e.toDisplayString)(n.count)+` more `,9,xe)],4))),128))])],4))]),_:3})])])],512)],8,pe)}var we=o(fe,[[`render`,Ce],[`__scopeId`,`data-v-6e2c33b4`]]),Te=[`dir`],Ee={ref:`scrollContainer`,class:`flex-1 w-full overflow-y-auto cal-scrollbar px-2 sm:px-4 md:px-6 py-3 sm:py-5`},De={class:`max-w-4xl mx-auto flex flex-col gap-6`},Oe={class:`agenda-section-header sticky top-0 z-10 py-1.5 flex items-center gap-3 bg-surface/95 backdrop-blur-xs`},ke={class:`rounded-full bg-surface-variant px-3 py-0.5 text-xs font-semibold text-on-surface/70 border border-outline-variant shadow-xs select-none`},Ae={class:`flex flex-col gap-3`},je={class:`agenda-date-col shrink-0 flex flex-col items-start w-24 sm:w-32 md:w-36 pt-0.5 select-none`},Me={class:`sm:hidden`},Ne={class:`hidden sm:inline`},Pe={class:`mt-1 flex items-center gap-1.5 sm:gap-2`},Fe={class:`flex flex-col text-[10px] sm:text-xs leading-none text-on-surface/50 gap-0.5`},Q={key:0,class:`opacity-70`},Ie={key:0,class:`mt-1 text-[10px] font-medium text-error truncate max-w-full`},Le={class:`agenda-events-col flex-1 min-w-0 flex flex-col gap-2`},Re=[`onClick`],ze={class:`min-w-0 flex-1 font-semibold text-xs sm:text-sm md:text-base leading-snug truncate`},Be={key:0,class:`shrink-0 text-[11px] sm:text-xs md:text-sm font-medium opacity-90 flex items-center gap-1.5 whitespace-nowrap`},Ve={key:1,class:`agenda-no-events flex items-center text-xs text-on-surface/40 italic py-2 px-3 rounded-lg border border-dashed border-outline-variant select-none`},$=o((0,e.defineComponent)({__name:`CalendarAgenda`,props:{range:{},events:{default:()=>[]},dir:{default:``}},emits:[`event-click`],setup(t){let n=t,a=(0,e.inject)(`calendarConfig`,(0,e.ref)({locale:`fa-IR`,calendar:`jalaali`,startOfWeek:`saturday`,showHolidays:!1})),{t:o}=r(),{getCalendarHeaders:s}=i(),c=(0,e.computed)(()=>{let e=String(a.value.locale||``).toLowerCase();return e.startsWith(`fa`)||e.startsWith(`ar`)}),l=(0,e.computed)(()=>n.dir?n.dir:c.value?`rtl`:`ltr`);function u(e){if(!e||typeof e!=`string`)return 0;let t=e.split(`:`).map(Number),n=t[0]??0,r=t[1]??0;return Number.isNaN(n)||Number.isNaN(r)?0:n*60+r}let d=[`۰`,`۱`,`۲`,`۳`,`۴`,`۵`,`۶`,`۷`,`۸`,`۹`];function f(e){return c.value?e.replace(/\d/g,e=>d[parseInt(e,10)]??e):e}function p(e){if(e.isFullDay)return o(`calendar.allDay`)||(c.value?`تمام روز`:`All day`);if(!e.time)return``;if(!e.duration||e.duration<=0)return f(e.time);let t=u(e.time)+e.duration,n=Math.floor(t%1440/60),r=t%60,i=`${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}`,a=f(e.time),s=f(i);return c.value?`${a} تا ${s}`:`${a} – ${s}`}function m(e){let t=e.color||`var(--cal-primary, #1a9d90)`;return{backgroundColor:t,color:j(t)}}let h=(0,e.computed)(()=>s(n.range,`agenda`));function g(e,t){if(!e.date)return!1;let n=new Date(t.date),r=new Date(n.getFullYear(),n.getMonth(),n.getDate(),0,0,0,0).getTime(),i=new Date(n.getFullYear(),n.getMonth(),n.getDate(),23,59,59,999).getTime(),a=new Date(e.date),o=u(e.time),s=new Date(a.getFullYear(),a.getMonth(),a.getDate(),0,0,0,0).getTime()+o*60*1e3,c=s;return e.duration&&e.duration>0?c=s+e.duration*60*1e3:e.isFullDay&&(c=new Date(a.getFullYear(),a.getMonth(),a.getDate(),23,59,59,999).getTime()),s<=i&&c>=r}function _(e){return n.events.filter(t=>g(t,e)).sort((e,t)=>{if(e.isFullDay&&!t.isFullDay)return-1;if(!e.isFullDay&&t.isFullDay)return 1;let n=u(e.time),r=u(t.time);return n===r?String(e.title||``).localeCompare(String(t.title||``)):n-r})}function v(e,t){let n=c.value,r=n?`fa-IR`:`en-US`,i=a.value.calendar===`jalaali`?`persian`:a.value.calendar===`islamic`?`islamic-civil`:`gregory`,o=new Intl.DateTimeFormat(`${r}-u-ca-${i}`,{day:`numeric`,month:`short`,year:`numeric`}).formatToParts(e),s=new Intl.DateTimeFormat(`${r}-u-ca-${i}`,{day:`numeric`,month:`short`,year:`numeric`}).formatToParts(t),l=o.find(e=>e.type===`day`)?.value||``,u=o.find(e=>e.type===`month`)?.value||``,d=o.find(e=>e.type===`year`)?.value||``,f=s.find(e=>e.type===`day`)?.value||``,p=s.find(e=>e.type===`month`)?.value||``,m=s.find(e=>e.type===`year`)?.value||``;return d===m&&u===p?n?`${l} – ${f} ${u}`:`${u} ${l} – ${f}`:d===m?n?`${l} ${u} – ${f} ${p}`:`${u} ${l} – ${p} ${f}`:n?`${l} ${u} ${d} – ${f} ${p} ${m}`:`${u} ${l}, ${d} – ${p} ${f}, ${d}`}let y=(0,e.computed)(()=>{let e=h.value;if(!e.length)return[];let t=[];for(let n=0;n<e.length;n+=7){let r=e.slice(n,n+7),i=r[0]?.date||new Date,a=r[r.length-1]?.date||i;t.push({id:`section-${i.getTime()}-${a.getTime()}`,rangeLabel:v(i,a),days:r.map(e=>({day:e,events:_(e)}))})}return t});return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`calendar-agenda w-full h-full flex flex-col bg-surface overflow-hidden`,dir:l.value},[(0,e.createElementVNode)(`div`,Ee,[(0,e.createElementVNode)(`div`,De,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(y.value,r=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r.id,class:`agenda-section flex flex-col gap-3`},[(0,e.createElementVNode)(`div`,Oe,[n[0]||=(0,e.createElementVNode)(`div`,{class:`h-px flex-1 bg-outline-variant`},null,-1),(0,e.createElementVNode)(`span`,ke,(0,e.toDisplayString)(r.rangeLabel),1),n[1]||=(0,e.createElementVNode)(`div`,{class:`h-px flex-1 bg-outline-variant`},null,-1)]),(0,e.createElementVNode)(`div`,Ae,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(r.days,r=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r.day.name+r.day.date.getTime(),class:(0,e.normalizeClass)([`agenda-day-row flex flex-row items-start gap-3 sm:gap-5 p-2.5 sm:p-3.5 rounded-xl border border-outline-variant/60 transition-colors`,{"bg-today-column ring-1 ring-primary/30 border-primary/40":r.day.isToday,"bg-surface":!r.day.isToday}])},[(0,e.createElementVNode)(`div`,je,[(0,e.createElementVNode)(`span`,{class:(0,e.normalizeClass)([`text-xs sm:text-sm font-semibold truncate max-w-full`,r.day.isToday?`text-primary font-bold`:`text-on-surface/80`])},[(0,e.createElementVNode)(`span`,Me,(0,e.toDisplayString)(r.day.shortName||r.day.name),1),(0,e.createElementVNode)(`span`,Ne,(0,e.toDisplayString)(r.day.name),1)],2),(0,e.createElementVNode)(`div`,Pe,[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`flex size-7 sm:size-8 items-center justify-center rounded-full text-xs sm:text-sm font-bold shadow-xs shrink-0`,[r.day.isToday?`bg-primary text-surface font-extrabold ring-2 ring-primary/30`:r.day.isWeekend||r.day.isHoliday?`bg-surface-variant text-error border border-outline-variant`:`bg-surface-variant text-on-surface border border-outline-variant`]])},(0,e.toDisplayString)(r.day.primary),3),(0,e.createElementVNode)(`div`,Fe,[(0,e.createElementVNode)(`span`,{class:(0,e.normalizeClass)({"text-error":r.day.isWeekend||r.day.isHoliday})},(0,e.toDisplayString)(r.day.secondary),3),r.day.tertiary?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Q,(0,e.toDisplayString)(r.day.tertiary),1)):(0,e.createCommentVNode)(``,!0)])]),r.day.holidayTitle?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Ie,(0,e.toDisplayString)(r.day.holidayTitle),1)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,Le,[r.events.length>0?((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,{key:0},(0,e.renderList)(r.events,r=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r.id,class:`agenda-event-card group flex items-center justify-between gap-3 rounded-lg sm:rounded-xl p-2.5 sm:px-4 sm:py-3 border border-black/10 dark:border-white/20 shadow-xs cursor-pointer transition-all hover:scale-[1.006] hover:shadow-md active:scale-[0.995]`,style:(0,e.normalizeStyle)(m(r)),onClick:e=>t.$emit(`event-click`,r)},[(0,e.renderSlot)(t.$slots,`event`,{event:r,mode:`agenda`},()=>[(0,e.createElementVNode)(`div`,ze,(0,e.toDisplayString)(r.title),1),r.time||r.isFullDay?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Be,[n[2]||=(0,e.createElementVNode)(`svg`,{class:`size-3 sm:size-3.5 opacity-80`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,e.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,e.createElementVNode)(`polyline`,{points:`12 6 12 12 16 14`})],-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(p(r)),1)])):(0,e.createCommentVNode)(``,!0)],!0)],12,Re))),128)):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ve,(0,e.toDisplayString)((0,e.unref)(o)(`calendar.noEvents`)||`No events`),1))])],2))),128))])]))),128))])],512)],8,Te))}}),[[`__scopeId`,`data-v-71fb8cbf`]]),He={key:0,class:`w-full h-full flex flex-col font-sans`,style:{color:`var(--cal-on-surface)`,background:`var(--cal-surface)`}},Ue={class:`w-full flex-1 overflow-hidden relative`},We=(0,e.defineComponent)({__name:`VueCalendar`,props:{events:{default:()=>[]},mode:{default:`monthly`},locale:{default:`en-US`},calendarType:{default:`gregory`},startOfWeek:{},hours:{default:()=>({start:0,end:24})},initialDate:{default:()=>new Date}},emits:[`update:mode`,`range-change`,`event-click`],setup(t,{expose:n,emit:r}){let a=t,o=r,s=(0,e.ref)(!1),c=(0,e.ref)(new Date(a.initialDate)),l={gregory:`gregory`,persian:`jalaali`,"islamic-uma":`islamic`},u=[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`],d=(0,e.computed)(()=>a.startOfWeek!==void 0&&a.startOfWeek>=0&&a.startOfWeek<=6?a.startOfWeek:a.calendarType===`gregory`?1:6),f=(0,e.computed)(()=>({locale:a.locale,calendar:l[a.calendarType],startOfWeek:u[d.value]??`sunday`,showHolidays:!1}));(0,e.provide)(`calendarConfig`,f),(0,e.provide)(`calendarHolidays`,(0,e.ref)({}));let{getMonthBounds:p,offsetPeriod:m}=i(f),h=(0,e.computed)(()=>{let e=new Date(c.value),t=new Date(c.value);if(a.mode===`daily`)return e.setHours(0,0,0,0),t.setHours(23,59,59,999),{start:e,end:t};if(a.mode===`3days`)return e.setHours(0,0,0,0),t.setTime(e.getTime()),t.setDate(e.getDate()+2),t.setHours(23,59,59,999),{start:e,end:t};if(a.mode===`weekly`){let n=d.value,r=e.getDay(),i=(r<n?7:0)+r-n;return e.setDate(e.getDate()-i),e.setHours(0,0,0,0),t.setTime(e.getTime()),t.setDate(e.getDate()+6),t.setHours(23,59,59,999),{start:e,end:t}}else return p(c.value)}),g=()=>{c.value=m(c.value,a.mode,1),o(`range-change`,h.value)},_=()=>{c.value=m(c.value,a.mode,-1),o(`range-change`,h.value)},v=(e,t)=>{t&&(c.value=new Date(t)),o(`update:mode`,e,t)},y=(e,t)=>{t&&(c.value=new Date(t)),o(`update:mode`,e,t)};return(0,e.watch)(()=>a.initialDate,e=>{e&&(c.value=new Date(e),o(`range-change`,h.value))}),(0,e.watch)(h,e=>{s.value&&o(`range-change`,e)}),(0,e.onMounted)(()=>{s.value=!0,o(`range-change`,h.value)}),n({goNext:g,goPrev:_,setMode:y,currentRange:h,handleModeUpdate:v}),(n,r)=>s.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,He,[(0,e.renderSlot)(n.$slots,`header`,{mode:t.mode,range:h.value,next:g,prev:_,setMode:y}),(0,e.createElementVNode)(`div`,Ue,[t.mode===`agenda`?((0,e.openBlock)(),(0,e.createBlock)($,{key:0,range:h.value,events:t.events,onEventClick:r[0]||=e=>n.$emit(`event-click`,e)},(0,e.createSlots)({_:2},[n.$slots.event?{name:`event`,fn:(0,e.withCtx)(t=>[(0,e.renderSlot)(n.$slots,`event`,(0,e.normalizeProps)((0,e.guardReactiveProps)(t)))]),key:`0`}:void 0]),1032,[`range`,`events`])):((0,e.openBlock)(),(0,e.createBlock)(we,{key:1,range:h.value,mode:t.mode,events:t.events,hours:t.hours,"onUpdate:mode":r[1]||=(e,t)=>v(e,t),onEventClick:r[2]||=e=>n.$emit(`event-click`,e),"onUpdate:range":r[3]||=e=>n.$emit(`range-change`,e)},(0,e.createSlots)({_:2},[n.$slots.event?{name:`event`,fn:(0,e.withCtx)(t=>[(0,e.renderSlot)(n.$slots,`event`,(0,e.normalizeProps)((0,e.guardReactiveProps)(t)))]),key:`0`}:void 0,n.$slots[`event-mobile`]?{name:`event-mobile`,fn:(0,e.withCtx)(t=>[(0,e.renderSlot)(n.$slots,`event-mobile`,(0,e.normalizeProps)((0,e.guardReactiveProps)(t)))]),key:`1`}:void 0]),1032,[`range`,`mode`,`events`,`hours`]))])])):(0,e.createCommentVNode)(``,!0)}});exports.CalendarAgenda=$,exports.VueCalendar=We,exports.getAccessibleTextColor=j,exports.getContrastRatio=A,exports.getRelativeLuminance=k,exports.parseColorToRgb=D;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("vue");var t=()=>{let t=(0,e.ref)(typeof window<`u`?window.innerWidth:1024),n=(0,e.ref)(typeof window<`u`?window.innerHeight:768),r=()=>{t.value=window.innerWidth,n.value=window.innerHeight};return(0,e.onMounted)(()=>window.addEventListener(`resize`,r)),(0,e.onUnmounted)(()=>window.removeEventListener(`resize`,r)),{width:t,height:n}},n=e=>(typeof e==`object`&&e&&`value`in e?String(e.value):String(e||`fa-IR`)).replace(/[^a-zA-Z-]/g,`-`).split(`-`)[0]||`fa`,r=()=>{let t=(0,e.inject)(`calendarConfig`,(0,e.ref)({locale:`en`,calendar:`gregory`,startOfWeek:`sunday`,showHolidays:!1}));return{t:(e,n)=>{let r=t.value.locale.startsWith(`fa`);return{"calendar.dayTimes.morning":r?`صبح`:`Morning`,"calendar.dayTimes.noon":r?`ظهر`:`Noon`,"calendar.dayTimes.afternoon":r?`عصر`:`Afternoon`,"calendar.dayTimes.night":r?`شب`:`Night`,"calendar.moreItems":r?`${n?.count} مورد دیگر`:`${n?.count} More Items`,"calendar.noEvents":r?`رویدادی وجود ندارد`:`No events`,"calendar.allDay":r?`تمام روز`:`All day`,"calendar.agenda":r?`برنامه`:`Agenda`}[e]||e},config:t}},i=t=>{let r=(0,e.inject)(`calendarConfig`,(0,e.ref)({locale:`fa-IR`,calendar:`jalaali`,startOfWeek:`saturday`,showHolidays:!0})),i=t||r,a=(0,e.inject)(`calendarHolidays`,(0,e.ref)({})),o=(0,e.computed)(()=>{let e=i.value.calendar;return e===`jalaali`?`persian`:e===`islamic`?`islamic-uma`:`gregory`}),s=e=>({sunday:0,monday:1,tuesday:2,wednesday:3,thursday:4,friday:5,saturday:6})[e.toLowerCase()]??0,c=e=>{let t=new Date(e);t.setHours(12,0,0,0);let n=o.value;n===`islamic-uma`&&(n=`islamic-civil`,t.setDate(t.getDate()-1));let r=new Intl.DateTimeFormat(`en-u-ca-${n}`,{year:`numeric`,month:`numeric`,day:`numeric`}).formatToParts(t),i=e=>parseInt(r.find(t=>t.type===e)?.value||`0`);return{year:i(`year`),month:i(`month`),day:i(`day`)}},l=(0,e.computed)(()=>i.value.calendar===`gregory`?1:6),u=e=>String(e),d=e=>{let t=[`۰`,`۱`,`۲`,`۳`,`۴`,`۵`,`۶`,`۷`,`۸`,`۹`];return String(e).replace(/\d/g,e=>t[parseInt(e)]??e)},f=e=>{let t=n(i.value.locale),r=new Date(e);r.setDate(r.getDate()+-1);let s=(t,n=e)=>{let r=new Intl.DateTimeFormat(`en-u-ca-${t}`,{year:`numeric`,month:`numeric`,day:`numeric`}).formatToParts(n);return parseInt(r.find(e=>e.type===`day`)?.value||`0`)},c=s(`gregory`),l=s(`persian`),f=s(`islamic-civil`,r),p=t===`fa`||t===`ar`,m=u(c),h=p?d(l):u(l),g=p?d(f):u(f),_=i.value.calendar,v,y,b;_===`jalaali`?(v=h,y=m,b=g):_===`islamic`?(v=g,y=h,b=m):(v=m,y=h,b=g);let x=new Date,S=e.getDate()===x.getDate()&&e.getMonth()===x.getMonth()&&e.getFullYear()===x.getFullYear(),C=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`,w=a.value[C],T=w?.isHoliday||!1,E=w?.titles?.join(` - `)||null,D=e.getDay(),O=i.value.showHolidays?_===`jalaali`||_===`islamic`?D===5:D===0:!1,k=i.value.showHolidays?O||T:!1,A=o.value,j=new Intl.DateTimeFormat(`${t}-u-ca-${A}`,{weekday:`long`}).format(e),M=new Intl.DateTimeFormat(`${t}-u-ca-${A}`,{weekday:`short`}).format(e);return{date:new Date(e),primary:v,secondary:y,tertiary:b,jalaali:l,gregorian:c,ghamari:f,isToday:S,isWeekend:O,isHoliday:k,holidayTitle:E,name:j,shortName:M,dayOfWeek:D}},p=(e,t)=>{if(!e)return[];let n=[];if(t===`monthly`){let t=new Date(e.start);t.setHours(12,0,0,0);let r=c(t),a=r.month,o=r.year,l=new Date(t);for(;c(l).day!==1;)l.setDate(l.getDate()-1);let u=new Date(l);for(;;){u.setDate(u.getDate()+1);let e=c(u);if(e.month!==a||e.year!==o){u.setDate(u.getDate()-1);break}}let d=s(i.value.calendar===`gregory`?`monday`:`saturday`),p=l.getDay()-d;p<0&&(p+=7);let m=new Date(l);m.setDate(m.getDate()-p);let h=((d+6)%7-u.getDay()+7)%7,g=new Date(u);g.setDate(g.getDate()+h);let _=new Date(m);for(;_<=g;){let e=f(new Date(_)),t=c(_);n.push({...e,otherMonth:t.month!==a||t.year!==o}),_.setDate(_.getDate()+1)}}else if(t===`agenda`){let t=new Date(e.start);t.setHours(12,0,0,0);let r=c(t),i=r.month,a=r.year,o=new Date(t);for(;c(o).day!==1;)o.setDate(o.getDate()-1);let s=new Date(o);for(;;){s.setDate(s.getDate()+1);let e=c(s);if(e.month!==i||e.year!==a){s.setDate(s.getDate()-1);break}}let l=new Date(o);for(;l<=s;){let e=f(new Date(l));n.push({...e,otherMonth:!1}),l.setDate(l.getDate()+1)}}else if(t===`weekly`){let t=s(i.value.calendar===`gregory`?`monday`:`saturday`),r=new Date(e.start),a=r.getDay()-t;a<0&&(a+=7),r.setDate(r.getDate()-a);for(let e=0;e<7;e++){let t=new Date(r);t.setDate(r.getDate()+e),n.push({...f(t),otherMonth:!1})}}else if(t===`3days`)for(let t=0;t<3;t++){let r=new Date(e.start);r.setDate(r.getDate()+t),n.push({...f(r),otherMonth:!1})}else n.push({...f(new Date(e.start)),otherMonth:!1});return n},m=(0,e.computed)(()=>{let e=n(i.value.locale),t=o.value,r=l.value,a=new Date(2025,0,12+r),s=new Intl.DateTimeFormat(`${e}-u-ca-${t}`,{weekday:`narrow`}),c=new Intl.DateTimeFormat(`${e}-u-ca-${t}`,{weekday:`long`});return Array.from({length:7},(e,t)=>{let n=new Date(a);return n.setDate(a.getDate()+t),{dayOfWeek:n.getDay(),label:s.format(n),fullName:c.format(n)}})}),h=e=>{let t=n(i.value.locale),r=o.value;return{sunday:0,monday:1,tuesday:2,wednesday:3,thursday:4,friday:5,saturday:6}[new Intl.DateTimeFormat(`${t}-u-ca-${r}`,{weekday:`long`}).format(e).toLowerCase()]??0},g=()=>{let e=new Date,t=c(e),n=new Date(e);for(n.setHours(0,0,0,0);c(n).day!==t.day||c(n).month!==t.month||c(n).year!==t.year;)n.setDate(n.getDate()-1);return n},_=e=>{let t=new Date(e);t.setHours(12,0,0,0);let n=c(t),r=n.month,i=n.year;for(;n.day!==1;)t.setDate(t.getDate()-1),n=c(t);let a=new Date(t);for(;;){a.setDate(a.getDate()+1);let e=c(a);if(e.month!==r||e.year!==i){a.setDate(a.getDate()-1);break}}return a.setHours(23,59,59,999),{start:t,end:a}},v=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t.setMilliseconds(0),t},y=()=>i.value.calendar===`gregory`?1:6,b=e=>{let t=g();if(e===`daily`||e===`3days`)return v(t);if(e===`weekly`){let e=y(),n=t.getDay()-e;n<0&&(n+=7);let r=new Date(t);return r.setDate(r.getDate()-n),v(r)}c(t);let n=v(t);for(n.setHours(12,0,0,0);c(n).day!==1;)n.setDate(n.getDate()-1);return v(n)},x=(e,t)=>{let r=n(e),i=t===`jalaali`?`persian`:t===`islamic`?`islamic-civil`:`gregory`,a=c(new Date).year,o=C(1,a),s=[];for(let e=1;e<=12;e++){let t=C(e,a,o);o=new Date(t);let n=new Intl.DateTimeFormat(`${r}-u-ca-${i}`,{month:`long`}).format(t);s.push({value:e,label:n,shortLabel:n})}return s},S=(e=new Date)=>{let t=c(e);return{month:t.month,year:t.year}},C=(e,t,n)=>{let r=n?new Date(n):new Date;r.setHours(12,0,0,0);let i=c(r),a=1e3,o=0;for(;(i.year!==t||i.month!==e)&&o<a;)i.year<t||i.year===t&&i.month<e?r.setDate(r.getDate()+1):r.setDate(r.getDate()-1),i=c(r),o++;for(;i.day!==1&&o<a;)r.setDate(r.getDate()-1),i=c(r),o++;return r.setHours(0,0,0,0),r};return{getCalendarHeaders:p,getDayDetails:f,offsetPeriod:(e,t,n)=>{let r=new Date(e);if(t===`daily`)r.setDate(r.getDate()+n);else if(t===`3days`)r.setDate(r.getDate()+n*3);else if(t===`weekly`)r.setDate(r.getDate()+n*7);else{let e=c(r),t=e.month+n,i=e.year;return t<1&&(t+=12,i--),t>12&&(t-=12,i++),v(C(t,i))}return v(r)},getMonthBounds:_,getWeekDayNames:m,getParts:c,resetToToday:b,getTodayInActiveCalendar:g,getCurrentPeriodStart:e=>b(e),getCurrentMonthYear:S,getDayOfWeekIndex:h,getMonthNames:x,getFirstDayOfMonthInActiveCalendar:C}},a={"--cal-primary":{light:{r:26,g:157,b:144},dark:{r:64,g:184,b:172}},"--color-primary":{light:{r:26,g:157,b:144},dark:{r:64,g:184,b:172}},"--cal-surface":{light:{r:255,g:255,b:255},dark:{r:21,g:24,b:35}},"--color-surface":{light:{r:255,g:255,b:255},dark:{r:21,g:24,b:35}},"--cal-on-surface":{light:{r:44,g:44,b:46},dark:{r:255,g:255,b:255}},"--color-on-surface":{light:{r:44,g:44,b:46},dark:{r:255,g:255,b:255}},"--cal-error":{light:{r:229,g:43,b:22},dark:{r:234,g:85,b:69}},"--color-error":{light:{r:229,g:43,b:22},dark:{r:234,g:85,b:69}}};function o(e){if(!e||typeof e!=`string`)return null;let t=e.trim().toLowerCase();if(t.startsWith(`var(`)){let e=t.match(/var\(\s*([^,\s)]+)/),n=e?e[1]:``;if(typeof document<`u`&&n)try{let e=getComputedStyle(document.documentElement).getPropertyValue(n).trim();if(e){let t=o(e);if(t)return t}}catch{}let r=t.match(/var\([^,]+,\s*([^)]+)\)/);if(r&&r[1]){let e=o(r[1].trim());if(e)return e}return n&&a[n]?typeof document<`u`&&document.documentElement.classList.contains(`dark`)?a[n].dark:a[n].light:{r:26,g:157,b:144}}if(t.startsWith(`#`)){let e=t.slice(1);if(e.length===3||e.length===4){let t=e[0]||`0`,n=e[1]||`0`,r=e[2]||`0`,i=parseInt(t+t,16),a=parseInt(n+n,16),o=parseInt(r+r,16);if(!Number.isNaN(i)&&!Number.isNaN(a)&&!Number.isNaN(o))return{r:i,g:a,b:o}}else if(e.length===6||e.length===8){let t=parseInt(e.slice(0,2),16),n=parseInt(e.slice(2,4),16),r=parseInt(e.slice(4,6),16);if(!Number.isNaN(t)&&!Number.isNaN(n)&&!Number.isNaN(r))return{r:t,g:n,b:r}}return null}if(t.startsWith(`rgb`)){let e=t.match(/\(([^)]+)\)/);if(e&&e[1]){let t=e[1].split(/[\s,/]+/).filter(Boolean),n=t[0],r=t[1],i=t[2];if(n!==void 0&&r!==void 0&&i!==void 0){let e=n.endsWith(`%`)?parseFloat(n)/100*255:parseFloat(n),t=r.endsWith(`%`)?parseFloat(r)/100*255:parseFloat(r),a=i.endsWith(`%`)?parseFloat(i)/100*255:parseFloat(i);if(!Number.isNaN(e)&&!Number.isNaN(t)&&!Number.isNaN(a))return{r:Math.min(255,Math.max(0,Math.round(e))),g:Math.min(255,Math.max(0,Math.round(t))),b:Math.min(255,Math.max(0,Math.round(a)))}}}return null}if(t.startsWith(`hsl`)){let e=t.match(/\(([^)]+)\)/);if(e&&e[1]){let t=e[1].split(/[\s,/]+/).filter(Boolean),n=t[0],r=t[1],i=t[2];if(n!==void 0&&r!==void 0&&i!==void 0){let e=parseFloat(n),t=parseFloat(r)/100,a=parseFloat(i)/100;if(!Number.isNaN(e)&&!Number.isNaN(t)&&!Number.isNaN(a))return s(e,t,a)}}return null}let n={white:{r:255,g:255,b:255},black:{r:0,g:0,b:0},transparent:{r:255,g:255,b:255},red:{r:255,g:0,b:0},green:{r:0,g:128,b:0},blue:{r:0,g:0,b:255},yellow:{r:255,g:255,b:0},orange:{r:255,g:165,b:0},purple:{r:128,g:0,b:128},teal:{r:0,g:128,b:128},gray:{r:128,g:128,b:128},grey:{r:128,g:128,b:128}};return n[t]?n[t]:null}function s(e,t,n){let r=(e%360+360)%360,i=(1-Math.abs(2*n-1))*t,a=i*(1-Math.abs(r/60%2-1)),o=n-i/2,s=0,c=0,l=0;return r>=0&&r<60?(s=i,c=a):r>=60&&r<120?(s=a,c=i):r>=120&&r<180?(c=i,l=a):r>=180&&r<240?(c=a,l=i):r>=240&&r<300?(s=a,l=i):(s=i,l=a),{r:Math.round((s+o)*255),g:Math.round((c+o)*255),b:Math.round((l+o)*255)}}function c(e,t,n){let r=e=>{let t=Math.max(0,Math.min(255,e))/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4},i=r(e),a=r(t),o=r(n);return .2126*i+.7152*a+.0722*o}function l(e,t){let n=typeof e==`string`?o(e)??{r:0,g:0,b:0}:e,r=typeof t==`string`?o(t)??{r:255,g:255,b:255}:t,i=c(n.r,n.g,n.b),a=c(r.r,r.g,r.b),s=Math.max(i,a),l=Math.min(i,a);return(s+.05)/(l+.05)}function u(e,t){let n=t?.darkColor??`#0f172a`,r=t?.lightColor??`#ffffff`;if(!e)return r;let i=o(e)??{r:26,g:157,b:144},a=o(n)??{r:15,g:23,b:42},s=o(r)??{r:255,g:255,b:255},l=c(i.r,i.g,i.b),u=c(a.r,a.g,a.b),d=c(s.r,s.g,s.b),f=(Math.max(l,u)+.05)/(Math.min(l,u)+.05);return(Math.max(l,d)+.05)/(Math.min(l,d)+.05)>=f?r:n}var d=(0,e.defineComponent)({name:`CalendarDayBadge`,props:{day:{type:Object,required:!0}},setup(t){return{getDayItemColor:(0,e.computed)(()=>{let e=t.day,n=`border-outline-variant bg-surface`,r=`text-on-surface/50`;return e.isToday&&(n=`bg-today border-outline-variant/0`,r=`text-surface`),(e.isWeekend||e.isHoliday)&&(r=`text-error`),{fill:n,text:r}}),getFont:(e,t)=>{if(String(t.gregorian)===t[e])return`font-latin`}}}}),f=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},p={class:`flex flex-col items-center`};function m(t,n,r,i,a,o){return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,p,[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`w-7 h-7 sm:w-8 sm:h-8 md:w-9 md:h-9 select-none border flex flex-col justify-center items-center rounded-full`,[t.getDayItemColor.fill,t.getDayItemColor.text]])},[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([[t.getFont(`tertiary`,t.day)],`leading-none opacity-70 text-[6px] sm:text-[7px] md:text-[8px]`])},(0,e.toDisplayString)(t.day.tertiary),3),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([[t.getFont(`primary`,t.day)],`leading-tight text-[11px] sm:text-xs md:text-label-md font-medium`])},(0,e.toDisplayString)(t.day.primary),3),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([[t.getFont(`secondary`,t.day)],`leading-none opacity-70 text-[6px] sm:text-[7px] md:text-[8px]`])},(0,e.toDisplayString)(t.day.secondary),3)],2)])}var h=f(d,[[`render`,m]]),g=(0,e.defineComponent)({name:`CalendarHeaderItem`,components:{CalendarDayBadge:h},props:{days:{type:Array,default:()=>[]},mode:{type:String,default:`monthly`},todayColumnIndex:{type:Number,default:-1}},setup(t){return{itemWidths:(0,e.computed)(()=>`${100/(t.days.length+(t.mode===`monthly`?0:1))}%`)}}}),_={key:0,class:`border shrink-0 w-8 sm:w-9 md:w-25 min-w-8 sm:min-w-9 md:min-w-25 max-w-8 sm:max-w-9 md:max-w-25 border-outline-variant`},v={class:`select-none text-on-surface/50 text-[9px] sm:text-[10px] md:text-label-md truncate max-w-full text-center px-0.5`},y={class:`sm:hidden`},b={class:`hidden sm:inline`};function x(t,n,r,i,a,o){let s=(0,e.resolveComponent)(`CalendarDayBadge`);return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`cal-header-row w-full items-stretch flex justify-between`,{"ltr:border-l rtl:border-r border-outline-variant":t.mode===`monthly`}])},[t.mode===`monthly`?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,_)),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.days,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`border-y rtl:border-l ltr:border-r border-outline-variant py-1.5 sm:py-2 md:py-4 flex-col flex-1 min-w-0 gap-y-1 sm:gap-y-1.5 md:gap-y-2.5 flex items-center justify-center transition-colors`,{"bg-today-column":r===t.todayColumnIndex}]),key:n.name+r},[t.mode===`monthly`?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createBlock)(s,{key:0,day:n},null,8,[`day`])),(0,e.createElementVNode)(`div`,v,[(0,e.createElementVNode)(`span`,y,(0,e.toDisplayString)(n.shortName||n.name),1),(0,e.createElementVNode)(`span`,b,(0,e.toDisplayString)(n.name),1)])],2))),128))],2)}var S=f(g,[[`render`,x],[`__scopeId`,`data-v-ef2978fb`]]),C=(0,e.defineComponent)({name:`CalendarSideItem`,props:{range:{type:Object,required:!0}},setup(n){let{t:i,config:a}=r(),{width:o}=t(),s=(0,e.computed)(()=>o.value<768),c=(0,e.computed)(()=>new Intl.NumberFormat(a.value.locale.startsWith(`fa`)?`fa-IR`:`en-US`)),l=(0,e.computed)(()=>`${100/u.value.length}%`),u=(0,e.computed)(()=>{let e=[],{start:t,end:r}=n.range;for(let n=t;n<r;n++)if(s.value)e.push({raw:n,label:c.value.format(n)});else{let t=``;t=n>=1&&n<=11?`morning`:n===12?`noon`:n>=13&&n<19?`afternoon`:`night`;let r=n;n>12&&(r=n-12),n===0&&(r=12),e.push({raw:n,label:`${c.value.format(r)} ${i(`calendar.dayTimes.${t}`)}`})}return e});return{hoursList:u,itemHeights:l}}}),w={class:`w-8 sm:w-9 md:w-25 min-h-full flex flex-col ltr:border-r ltr:border-r-outline-variant rtl:border-l border-l-outline-variant`};function T(t,n,r,i,a,o){return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,w,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.hoursList,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:n.raw,style:(0,e.normalizeStyle)({height:t.itemHeights}),class:`flex items-center text-center justify-center text-[10px] sm:text-xs md:text-label-md text-on-surface/50 border-b min-h-20 border-b-outline-variant select-none`},(0,e.toDisplayString)(n.label),5))),128))])}var E=f(C,[[`render`,T]]),D=(0,e.defineComponent)({name:`CalendarPattern`,setup(){return{getX:e=>-50+(e-1)*25}}}),O={width:`100%`,height:`120%`,viewBox:`0 0 440 221`,preserveAspectRatio:`xMidYMid slice`,class:`text-surface-variant`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},k=[`x`,`transform`];function A(t,n,r,i,a,o){return(0,e.openBlock)(),(0,e.createElementBlock)(`svg`,O,[((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(25,n=>(0,e.createElementVNode)(`rect`,{key:n,x:t.getX(n),y:`220.895`,width:`300`,height:`12`,transform:`rotate(-115 ${t.getX(n)} 220.895)`,fill:`currentColor`},null,8,k)),64))])}var j=f(D,[[`render`,A]]),M=(0,e.defineComponent)({__name:`CalendarItemDisplay`,props:{event:{},mode:{},headers:{},hours:{},position:{},isMobile:{type:Boolean},overlapIndex:{},overlapCount:{}},emits:[`event-click`],setup(t){let n=t,r=(0,e.computed)(()=>n.event.color||`var(--cal-primary)`),i=(0,e.computed)(()=>u(r.value)),a=(0,e.computed)(()=>{if(n.mode===`monthly`)return{zIndex:10,position:`relative`};if(n.position===`static`)return{width:`100%`,height:`36px`,position:`relative`};if(!n.headers?.length||!n.hours)return{display:`none`};let e=new Date(n.event.date).toLocaleDateString(`en-CA`),t=n.headers.findIndex(t=>new Date(t.date).toLocaleDateString(`en-CA`)===e);if(t===-1||n.hours.end-n.hours.start<=0)return{display:`none`};let r=n.event.time.split(`:`).map(Number),i=(r[0]??0)+(r[1]??0)/60,a=(i-n.hours.start)*80,o=100/n.headers.length,s=n.overlapCount??1,c=n.overlapIndex??0,l=o/s,u,d;if(n.event.duration&&n.event.duration>0){let e=Math.min(i+n.event.duration/60,n.hours.end);u=`${Math.max(0,e-i)*80}px`,d=`20px`}else u=n.isMobile&&n.mode===`weekly`?`16px`:`36px`;return{top:`${a}px`,insetInlineStart:`${t*o+c*l}%`,width:`${l}%`,height:u,minHeight:d,zIndex:10,boxSizing:`border-box`}}),o=(0,e.computed)(()=>({backgroundColor:r.value,color:i.value})),s=(0,e.computed)(()=>{let e=r.value,t=i.value;return n.mode===`monthly`?{backgroundColor:e,color:t,opacity:.9,borderLeft:`4px solid ${e}`}:{backgroundColor:e,color:t}});return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{id:`event-display`,style:(0,e.normalizeStyle)(a.value),class:(0,e.normalizeClass)([t.position===`static`?``:`absolute`,t.mode===`monthly`?``:t.isMobile&&t.mode===`weekly`?`px-0.5`:`px-1 sm:px-2`]),onClick:r[0]||=(0,e.withModifiers)(e=>n.$emit(`event-click`,t.event,e),[`stop`])},[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`flex whitespace-normal items-center rounded cursor-pointer transition-transform text-[10px] sm:text-[11px] leading-tight overflow-hidden`,t.mode===`monthly`?`px-2 relative mb-1 h-6 shrink-0 whitespace-nowrap text-ellipsis w-[calc(100%-16px)]`:t.isMobile&&t.mode===`weekly`?`absolute px-1 h-full w-[calc(100%-4px)] text-[9px] leading-none`:`absolute px-2 sm:px-4 h-full w-[calc(100%-8px)] sm:w-[calc(100%-16px)] sm:rounded-md`]),style:(0,e.normalizeStyle)(s.value)},[(0,e.renderSlot)(n.$slots,`event`,{event:t.event,mode:t.mode},()=>[(0,e.createElementVNode)(`div`,{style:(0,e.normalizeStyle)(o.value),class:`w-full h-full relative z-10 flex items-center gap-x-1 truncate font-medium`},(0,e.toDisplayString)(t.event.title),5)])],6)],6))}}),ee=(0,e.defineComponent)({name:`CalendarDayHolder`,props:{day:{type:Object,required:!0},otherMonth:{type:Boolean,default:!1},events:{type:Array,default:()=>[]}},components:{CalendarDayBadge:h,CalendarPattern:j,CalendarItemDisplay:M},emits:[`open-day`,`event-click`],setup(t,{emit:n}){let{t:i}=r();return{t:i,displayedEvents:(0,e.computed)(()=>t.events.slice(0,2)),openDay:()=>{n(`open-day`,t.day)},remainingCount:(0,e.computed)(()=>t.events.length-2)}}}),te={class:`relative top-0 left-0 w-full h-full p-4 flex flex-col`},ne={key:0,class:`shrink-0`},N={id:`holder`,class:`w-full flex-1 relative flex flex-col gap-y-1.5 mt-2`},P={class:`w-full h-full pointer-events-none absolute top-0 left-0`};function F(t,n,r,i,a,o){let s=(0,e.resolveComponent)(`CalendarDayBadge`),c=(0,e.resolveComponent)(`CalendarItemDisplay`),l=(0,e.resolveComponent)(`CalendarPattern`);return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`border border-outline-variant/50 w-full relative h-full transition-colors`,[t.otherMonth?`overflow-hidden`:`overflow-visible`,t.day.isToday&&!t.otherMonth?`bg-today-column`:``]])},[(0,e.createElementVNode)(`div`,te,[t.otherMonth?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ne,[(0,e.createVNode)(s,{day:t.day},null,8,[`day`])])),(0,e.createElementVNode)(`div`,N,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.displayedEvents,r=>((0,e.openBlock)(),(0,e.createBlock)(c,{key:r.id,position:`static`,event:r,onEventClick:n[0]||=e=>t.$emit(`event-click`,e)},{event:(0,e.withCtx)(n=>[(0,e.renderSlot)(t.$slots,`event`,(0,e.mergeProps)({ref_for:!0},n))]),_:3},8,[`event`]))),128)),t.remainingCount>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,onClick:n[1]||=(...e)=>t.openDay&&t.openDay(...e),class:`w-full relative z-0 h-9 px-2 flex cursor-pointer items-center rounded-lg bg-surface-variant text-label-sm text-on-surface select-none`},(0,e.toDisplayString)(t.t(`calendar.moreItems`,{count:t.remainingCount})),1)):(0,e.createCommentVNode)(``,!0)])]),(0,e.createElementVNode)(`div`,P,[t.otherMonth?((0,e.openBlock)(),(0,e.createBlock)(l,{key:0,class:`absolute inset-0 z-0 pointer-events-none`})):(0,e.createCommentVNode)(``,!0)])],2)}var I=f(ee,[[`render`,F]]),L=(0,e.defineComponent)({name:`CalendarPointer`,props:{mode:{type:String,required:!0},hours:{type:Object,required:!0},headers:{type:Array,required:!0}},setup(t){let n=(0,e.ref)(new Date),r;(0,e.onMounted)(()=>{r=setInterval(()=>{n.value=new Date},6e4)}),(0,e.onUnmounted)(()=>{r&&clearInterval(r)});let i=(0,e.computed)(()=>{if(!t.headers||t.headers.length===0)return{display:`none`};let e=t.headers.findIndex(e=>e.isToday);if(e===-1)return{display:`none`};let r=n.value,i=r.getHours()+r.getMinutes()/60;if(t.mode===`monthly`){let n=Math.ceil(t.headers.length/7),r=Math.floor(e/7),a=e%7,o=100/n,s=i/24*o;return{width:`${100/7}%`,top:`${r*o+s}%`,insetInlineStart:`${a/7*100}%`,transition:``}}if(i<t.hours.start||i>t.hours.end)return{display:`none`};let a=t.headers.length,o=t.hours.end-t.hours.start;return{width:`${100/a}%`,top:`${(i-t.hours.start)/o*100}%`,insetInlineStart:`${e/a*100}%`,transition:``}});return{pointerStyle:i,isVisible:(0,e.computed)(()=>i.value.display!==`none`)}}});function R(t,n,r,i,a,o){return(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`absolute z-20 pointer-events-none -translate-y-1/2 flex items-center`,style:(0,e.normalizeStyle)(t.pointerStyle)},[...n[0]||=[(0,e.createElementVNode)(`div`,{class:`w-2.5 aspect-square rounded-full bg-error shrink-0`},null,-1),(0,e.createElementVNode)(`div`,{class:`h-0.5 flex-1 bg-error`},null,-1)]],4)),[[e.vShow,t.isVisible]])}var z=f(L,[[`render`,R]]),B=(0,e.defineComponent)({name:`MobileDayHolder`,props:{day:{type:Object,required:!0},isSelected:{type:Boolean,default:!1},events:{type:Array,default:()=>[]},expandProgress:{type:Number,default:0},isDragging:{type:Boolean,default:!1}},emits:[`select`],setup(t,{emit:n}){return{canSelect:(0,e.computed)(()=>t.events.length>0),displayedEvents:(0,e.computed)(()=>t.events.slice(0,4)),selectDay:()=>{n(`select`,t.day)},styles:(0,e.computed)(()=>t.isSelected?{border:`border-transparent`,bg:`opacity-100`,text:`text-surface`}:t.day.isToday?{border:`border-primary`,bg:`opacity-0`,text:`text-primary`}:{border:`border-transparent`,bg:`opacity-0`,text:`text-on-surface/50`})}}}),V={class:`w-full h-full absolute inset-0 left-0 top-0 flex items-center justify-center`},H={class:`w-full flex-1 relative flex justify-center`};function U(t,n,r,i,a,o){return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,{onClick:n[0]||=(...e)=>t.selectDay&&t.selectDay(...e),class:(0,e.normalizeClass)([`flex flex-col items-center justify-start gap-y-0.5 w-full overflow-hidden hw-accel-height`,[t.canSelect?`cursor-pointer`:`cursor-default`,t.isDragging?``:`transition-all duration-300 ease-out`]]),style:(0,e.normalizeStyle)({height:`${40+t.expandProgress*16}px`})},[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`relative w-8 h-8 shrink-0 rounded-full transition-all duration-200 ease-in-out aspect-square border`,t.styles.border])},[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`rounded-full w-full h-full transition-all duration-200 ease-in-out bg-on-surface`,t.styles.bg])},null,2),(0,e.createElementVNode)(`div`,V,[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`select-none text-label-md transition-all duration-200 ease-in-out`,t.styles.text])},(0,e.toDisplayString)(t.day.primary),3)])],2),(0,e.createElementVNode)(`div`,H,[t.canSelect?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:(0,e.normalizeClass)([`rounded-full aspect-square w-1.5 bg-error absolute hw-accel`,[t.isDragging?``:`transition-all duration-300 ease-out`]]),style:(0,e.normalizeStyle)({opacity:Math.max(0,1-t.expandProgress*2),transform:`scale(${Math.max(0,1-t.expandProgress*2)})`})},null,6)):(0,e.createCommentVNode)(``,!0),t.canSelect?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,class:(0,e.normalizeClass)([`w-full flex flex-col gap-y-px absolute top-0 px-0.5 hw-accel`,[t.isDragging?``:`transition-all duration-300 ease-out`]]),style:(0,e.normalizeStyle)({opacity:t.expandProgress,transform:`translateY(${(1-t.expandProgress)*6}px)`})},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.displayedEvents,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t.id,class:`w-full rounded-full shrink-0 min-h-1`,style:(0,e.normalizeStyle)({backgroundColor:t.color||`var(--cal-primary)`})},null,4))),128))],6)):(0,e.createCommentVNode)(``,!0)])],6)}var W=f(B,[[`render`,U],[`__scopeId`,`data-v-d90e616f`]]),G={class:`flex flex-col gap-y-1 p-3 flex-1`},K={class:`text-label-md font-semibold text-on-surface`},q={class:`text-body-sm text-on-surface/60`},J=(0,e.defineComponent)({__name:`MobileEventListItem`,props:{event:{}},emits:[`event-click`],setup(t){return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`bg-surface-variant flex flex-col rounded-lg border cursor-pointer`,onClick:r[0]||=(0,e.withModifiers)(e=>n.$emit(`event-click`,t.event,e),[`stop`])},[(0,e.createElementVNode)(`div`,G,[(0,e.renderSlot)(n.$slots,`event`,{event:t.event},()=>[(0,e.createElementVNode)(`div`,K,(0,e.toDisplayString)(t.event.title),1),(0,e.createElementVNode)(`div`,q,(0,e.toDisplayString)(t.event.time),1)])]),(0,e.createElementVNode)(`div`,{class:`w-full h-1 shrink-0 rounded-b-full rounded-t-none`,style:(0,e.normalizeStyle)({backgroundColor:t.event.color||`#3b82f6`})},null,4)]))}}),Y=(0,e.defineComponent)({name:`MobileCalendarGrid`,components:{MobileDayHolder:W,MobileEventListItem:J},props:{days:{type:Array,default:()=>[]},eventsByDay:{type:Object,required:!0},loading:{type:Boolean,default:!1}},emits:[`event-click`],setup(t){let{getWeekDayNames:n}=i(),r=(0,e.computed)(()=>n.value),a=(0,e.ref)(!1),o=(0,e.ref)([]),s=(0,e.ref)(``),c=e=>{let n=new Date(e.date).toDateString();s.value=n;let r=t.eventsByDay.get(n);r&&r.length>0?(o.value=[...r],a.value=!0):a.value=!1};(0,e.onMounted)(()=>{let e=new Date().toDateString();s.value=e;let n=t.eventsByDay.get(e);n&&n.length>0&&(o.value=[...n],a.value=!0)});let l=e=>s.value===new Date(e.date).toDateString(),u=(0,e.ref)(0),d=(0,e.ref)(!1),f=0,p=0,m=!1;function h(e){f=e,p=u.value,d.value=!0}function g(e){if(!d.value)return;let t=e-f;m||=(requestAnimationFrame(()=>{let e=p+t/120;u.value=Math.max(0,Math.min(1,e)),m=!1}),!0)}function _(){d.value=!1,u.value>.25&&p===0?u.value=1:u.value<.75&&p===1?u.value=0:u.value=p}let v=e=>{h(e.touches[0]?.clientY??0)},y=e=>{let t=e.touches[0];t&&g(t.clientY)},b=()=>{_()},x=e=>{h(e.clientY),document.addEventListener(`mousemove`,S),document.addEventListener(`mouseup`,C)},S=e=>{g(e.clientY)},C=()=>{_(),document.removeEventListener(`mousemove`,S),document.removeEventListener(`mouseup`,C)};return{isDaySelected:l,weekDays:r,selectDay:c,handleMouseDown:x,handleMouseLeave:()=>{d.value&&(_(),document.removeEventListener(`mousemove`,S),document.removeEventListener(`mouseup`,C))},selectedDate:s,showEventsList:a,progress:u,isDragging:d,handleTouchStart:v,handleTouchMove:y,handleTouchEnd:b,eventsList:o}}}),X={class:`w-full pt-6 px-4 relative flex flex-col flex-1 overflow-y-auto`},Z={class:`select-none text-[10px] text-on-surface/50 w-full flex items-center justify-between`},re={class:`font-medium`},ie={class:`w-full mt-4 grid grid-cols-7 gap-x-5 gap-y-4`},ae={key:0,class:`transition-all duration-200 ease-in-out overflow-hidden w-full mt-4 flex-1 overflow-y-auto`},oe={class:`py-2 text-on-surface text-title-sm font-bold select-none border-b border-outline-variant mb-2`},se={class:`w-full flex flex-col gap-y-2`};function ce(t,n,r,i,a,o){let s=(0,e.resolveComponent)(`MobileDayHolder`),c=(0,e.resolveComponent)(`MobileEventListItem`);return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,X,[n[6]||=(0,e.createElementVNode)(`div`,{class:`w-full fixed right-0 -translate-y-6 pointer-events-none z-50 h-6 bg-gradient-to-b from-surface to-transparent`},null,-1),(0,e.createElementVNode)(`div`,{id:`mobile-grid`,class:`w-full shrink-0 select-none`,style:{"touch-action":`pan-x`,"user-select":`none`},onTouchstart:n[0]||=(0,e.withModifiers)((...e)=>t.handleTouchStart&&t.handleTouchStart(...e),[`prevent`]),onTouchmove:n[1]||=(0,e.withModifiers)((...e)=>t.handleTouchMove&&t.handleTouchMove(...e),[`prevent`]),onTouchend:n[2]||=(...e)=>t.handleTouchEnd&&t.handleTouchEnd(...e),onMousedown:n[3]||=(0,e.withModifiers)((...e)=>t.handleMouseDown&&t.handleMouseDown(...e),[`prevent`]),onMouseleave:n[4]||=(...e)=>t.handleMouseLeave&&t.handleMouseLeave(...e)},[(0,e.createElementVNode)(`div`,Z,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.weekDays,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`aspect-square w-8 shrink-0 flex items-center justify-center`,key:t.dayOfWeek},[(0,e.createElementVNode)(`div`,re,(0,e.toDisplayString)(t.label),1)]))),128))]),(0,e.createElementVNode)(`div`,ie,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.days,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r,class:(0,e.normalizeClass)([`transition-all duration-200 rounded-lg`,n.otherMonth?`opacity-0 pointer-events-none`:`opacity-100`,n.isToday&&!n.otherMonth?`bg-today-column`:``])},[(0,e.createVNode)(s,{"is-selected":t.isDaySelected(n),"expand-progress":t.progress,"is-dragging":t.isDragging,onSelect:t.selectDay,day:n,events:t.eventsByDay.get(new Date(n.date).toDateString())||[]},null,8,[`is-selected`,`expand-progress`,`is-dragging`,`onSelect`,`day`,`events`])],2))),128))])],32),t.showEventsList?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ae,[(0,e.createElementVNode)(`div`,oe,(0,e.toDisplayString)(t.selectedDate),1),(0,e.createElementVNode)(`div`,se,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.eventsList,r=>((0,e.openBlock)(),(0,e.createBlock)(c,{key:r.id,event:r,onEventClick:n[5]||=(e,n)=>t.$emit(`event-click`,e,n)},{event:(0,e.withCtx)(({event:n})=>[(0,e.renderSlot)(t.$slots,`event-mobile`,{event:n})]),_:2},1032,[`event`]))),128))])])):(0,e.createCommentVNode)(``,!0)])}var le=f(Y,[[`render`,ce]]),ue={class:`detail-wrapper-stub`},de=(0,e.defineComponent)({__name:`CalendarEventDetailWrapper`,emits:[`lock-scroll`],setup(t){return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ue))}}),fe=(0,e.defineComponent)({components:{MobileCalendarGrid:le,CalendarHeaderItem:S,CalendarSideItem:E,CalendarDayHolder:I,CalendarPointer:z,CalendarItemDisplay:M,CalendarEventDetailWrapper:de},props:{range:{type:Object,required:!0},mode:{type:String,default:`monthly`},hours:{type:Object,default:()=>({start:0,end:24})},events:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},dir:{type:String,default:``}},emits:[`update:mode`,`update:range`,`event-click`],setup(n,{emit:a}){let{t:o}=r(),s=(0,e.computed)(()=>o(`calendar.allDay`)||`All day`),c=(0,e.computed)(()=>n.loading),{width:l}=t(),d=(0,e.computed)(()=>l.value<768),{getCalendarHeaders:f}=i(),p=(0,e.useTemplateRef)(`scrollContainer`),m=(0,e.computed)(()=>f(n.range,n.mode)),h=(0,e.computed)(()=>m.value),g=(0,e.computed)(()=>n.mode===`monthly`?h.value.slice(0,7):h.value),_=(0,e.computed)(()=>n.mode===`daily`||n.mode===`monthly`?-1:h.value.findIndex(e=>e.isToday)),v=(0,e.computed)(()=>{let e=new Map;return n.events.forEach(t=>{let n=new Date(t.date).toDateString();e.has(n)||e.set(n,[]),e.get(n)?.push(t)}),e}),y=(0,e.computed)(()=>{let e=new Map,t=m.value.filter(e=>!e.otherMonth),r=new Set(t.map(e=>new Date(e.date).toDateString()));return n.events.forEach(t=>{let n=new Date(t.date).toDateString();r.has(n)&&(e.has(n)||e.set(n,[]),e.get(n)?.push(t))}),e});function b(e){if(!e.duration||e.duration<=0)return[e];let t=e.time.split(`:`).map(Number),n=(t[0]??0)+(t[1]??0)/60;if(n+e.duration/60<=24)return[e];let r=[],i=new Date(e.date),a=0,o=n,s=e.duration;for(;s>0;){let t=Math.min(s,(24-o)*60),n=Math.floor(o),c=Math.round((o-n)*60);r.push({...e,id:`${e.id}_d${a}`,date:new Date(i.getTime()+a*864e5),time:`${String(n).padStart(2,`0`)}:${String(c).padStart(2,`0`)}`,duration:Math.round(t)}),s-=t,o=0,a++}return r}function x(e){if(e.isFullDay)return!0;if(!e.duration)return!1;let t=new Date(e.date),n=new Date(t.getTime()+e.duration*6e4);return e.duration>=1440||t.getFullYear()!==n.getFullYear()||t.getMonth()!==n.getMonth()||t.getDate()!==n.getDate()}let S=(0,e.computed)(()=>{if(n.mode===`monthly`||!h.value.length)return{events:[],totalRows:0};let e=h.value.map(e=>{let t=new Date(e.date);return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()}),t=e[0],r=e[e.length-1],i=[];for(let a of n.events){if(!x(a))continue;let n=new Date(a.date),o=new Date(n.getFullYear(),n.getMonth(),n.getDate()).getTime(),s=new Date(n.getTime()+(a.duration??0)*6e4),c=new Date(s.getFullYear(),s.getMonth(),s.getDate()).getTime();if(s.getHours()===0&&s.getMinutes()===0&&s.getSeconds()===0&&c>o&&(c-=864e5),c<o&&(c=o),c<t||o>r)continue;let l=e.findIndex(e=>e===o);l===-1&&(l=o<t?0:e.findIndex(e=>e>=o),l===-1&&(l=0));let d=e.findIndex(e=>e===c);d===-1&&(d=c>r?e.length-1:0);let f=Math.max(0,Math.min(l,e.length-1)),p=Math.max(f,Math.min(d,e.length-1)),m=p-f+1;i.push({event:a,startIndex:f,endIndex:p,span:m,row:0,textColor:u(a.color||`var(--cal-primary)`)})}i.sort((e,t)=>e.startIndex-t.startIndex||t.span-e.span);let a=[];for(let e of i){let t=a.findIndex(t=>t<e.startIndex);t===-1?(e.row=a.length,a.push(e.endIndex)):(e.row=t,a[t]=e.endIndex)}return{events:i,totalRows:Math.max(1,a.length)}}),C=(0,e.computed)(()=>{if(n.mode===`monthly`)return[];let e=new Set(h.value.map(e=>new Date(e.date).toLocaleDateString(`en-CA`)));return n.events.filter(e=>!x(e)).flatMap(b).filter(t=>{let n=new Date(t.date).toLocaleDateString(`en-CA`);return e.has(n)})}),w=(0,e.computed)(()=>{let e=[],t=[],r=new Map;for(let e of h.value)r.set(new Date(e.date).toLocaleDateString(`en-CA`),[]);for(let e of C.value)r.get(new Date(e.date).toLocaleDateString(`en-CA`))?.push(e);for(let[i,a]of r.entries()){if(!a.length)continue;let r=h.value.findIndex(e=>new Date(e.date).toLocaleDateString(`en-CA`)===i),o=a.map(e=>{let t=e.time.split(`:`).map(Number),n=(t[0]??0)+(t[1]??0)/60;return{event:e,start:n,end:e.duration?n+e.duration/60:n+.5,col:0}}).sort((e,t)=>e.start-t.start||t.end-e.end),s=[];for(let e of o){let t=s.findIndex(t=>t<=e.start);e.col=t===-1?s.length:t,s[e.col]=e.end}if(n.mode===`daily`)for(let t of o){let n=t.col;for(let e of o)e!==t&&e.start<t.end&&e.end>t.start&&(n=Math.max(n,e.col));e.push({event:t.event,overlapIndex:t.col,overlapCount:n+1})}else{for(let t of o){if(t.col>=2)continue;let n=t.col;for(let e of o)e!==t&&e.col<2&&e.start<t.end&&e.end>t.start&&(n=Math.max(n,e.col));e.push({event:t.event,overlapIndex:t.col,overlapCount:n+1})}let n=o.filter(e=>e.col>=2).sort((e,t)=>e.start-t.start),i=[];for(let e of n){let t=i[i.length-1];!t||e.start>=t.end?i.push({start:e.start,end:e.end,count:1}):(t.end=Math.max(t.end,e.end),t.count++)}for(let e of i){let n=o.filter(t=>t.col<2&&t.start<e.end&&t.end>e.start).reduce((e,t)=>Math.max(e,t.end),e.start);t.push({dayIndex:r,endDecimal:n,count:e.count})}}}return{events:e,overflows:t}}),T=(0,e.computed)(()=>w.value.events),E=(0,e.computed)(()=>w.value.overflows),D=(0,e.computed)(()=>{if(n.mode===`monthly`||C.value.length===0)return n.hours;let e=n.hours.start,t=n.hours.end;for(let n of C.value){let r=n.time.split(`:`).map(Number),i=(r[0]??0)+(r[1]??0)/60,a=n.duration?i+n.duration/60:i;e=Math.min(e,Math.floor(i)),t=Math.max(t,Math.ceil(a))}return{start:Math.max(0,e),end:Math.min(24,t)}}),O=(0,e.ref)(!1),k=e=>{O.value=e},A=e=>{let t=new Date(e.date);a(`update:range`,{start:new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0),end:new Date(t.getFullYear(),t.getMonth(),t.getDate(),23,59,59,999)}),a(`update:mode`,`daily`,t)},j=(0,e.ref)(!0);(0,e.watch)([d,()=>n.mode],()=>{j.value=d.value?n.mode!==`monthly`:!0},{immediate:!0});let M=(0,e.computed)(()=>{let e=[];for(let t=D.value.start;t<D.value.end;t++)e.push({raw:t});return e});return(0,e.watch)(()=>n.events,async()=>{if(n.mode===`monthly`||!p.value)return;await(0,e.nextTick)();let t=p.value,r=C.value.map(e=>parseInt(e.time.split(`:`)[0],10));if(r.length===0)return;r.sort((e,t)=>e-t);let i=((r[Math.floor(r.length/2)]??D.value.start)-D.value.start)*80-t.clientHeight/2+80/2;t.scrollTo({top:Math.max(0,i),behavior:`smooth`})},{deep:!0}),{isLoading:c,hoursList:M,effectiveHours:D,scrollContainer:p,headers:h,allHeaders:m,isMobile:d,displayedHeader:g,todayColumnIndex:_,monthlyEventsByDay:y,eventsByDay:v,gridEvents:T,overflowIndicators:E,scrollLocked:O,showMonthly:j,setLockScroll:k,openSpecificDay:A,allDayLabel:s,allDayEventsWithLayout:S}}}),pe=[`dir`],me={ref:`scrollContainer`,class:`flex-1 w-full flex flex-col overflow-y-auto cal-scrollbar relative`},he={key:0,class:`sticky top-0 z-30 bg-surface shrink-0`},ge={key:0,class:`w-full flex items-stretch border-b border-outline-variant bg-surface`},_e={class:`w-8 sm:w-9 md:w-25 min-w-8 sm:min-w-9 md:min-w-25 max-w-8 sm:max-w-9 md:max-w-25 shrink-0 flex items-center justify-center border-r rtl:border-l rtl:border-r-0 border-outline-variant text-[9px] sm:text-[10px] md:text-label-sm font-medium text-on-surface/60 select-none px-1 text-center truncate`},ve={class:`absolute inset-0 w-full flex pointer-events-none`},ye=[`onClick`],be={class:`truncate`},xe={class:`flex-1 w-full flex min-h-0`},Se={class:`flex-1 relative`},Ce={class:`absolute inset-0 w-full flex flex-col pointer-events-none`},we={class:`absolute inset-0 w-full flex pointer-events-none`},Te={class:`relative min-h-full w-full`},Ee=[`onClick`],De={key:2,class:`w-full`};function Oe(t,n,r,i,a,o){let s=(0,e.resolveComponent)(`CalendarEventDetailWrapper`),c=(0,e.resolveComponent)(`CalendarHeaderItem`),l=(0,e.resolveComponent)(`CalendarSideItem`),u=(0,e.resolveComponent)(`CalendarPointer`),d=(0,e.resolveComponent)(`CalendarItemDisplay`),f=(0,e.resolveComponent)(`CalendarDayHolder`),p=(0,e.resolveComponent)(`MobileCalendarGrid`);return(0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`w-full h-full flex flex-col bg-surface whitespace-normal`,dir:t.dir},[(0,e.createVNode)(s,{onLockScroll:t.setLockScroll},null,8,[`onLockScroll`]),(0,e.createElementVNode)(`div`,me,[t.showMonthly?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,he,[(0,e.createVNode)(c,{class:`cal-header-row w-full border-b border-surface-variant`,mode:t.mode,days:t.displayedHeader,"today-column-index":t.todayColumnIndex},null,8,[`mode`,`days`,`today-column-index`]),t.mode===`monthly`?(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ge,[(0,e.createElementVNode)(`div`,_e,(0,e.toDisplayString)(t.allDayLabel),1),(0,e.createElementVNode)(`div`,{class:`flex-1 relative py-1 overflow-hidden`,style:(0,e.normalizeStyle)({minHeight:`${Math.max(1,t.allDayEventsWithLayout.totalRows)*26+6}px`})},[(0,e.createElementVNode)(`div`,ve,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.headers,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:`allday-col-`+r,class:(0,e.normalizeClass)([`h-full ltr:border-r rtl:border-l border-outline-variant flex-1 transition-colors`,{"bg-today-column":r===t.todayColumnIndex}])},null,2))),128))]),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.allDayEventsWithLayout.events,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:`allday-`+n.event.id,class:`absolute z-10 px-0.5 sm:px-1 pointer-events-auto cursor-pointer`,style:(0,e.normalizeStyle)({top:`${n.row*26+3}px`,height:`22px`,insetInlineStart:`${n.startIndex/t.headers.length*100}%`,width:`${n.span/t.headers.length*100}%`}),onClick:e=>t.$emit(`event-click`,n.event,e)},[(0,e.createElementVNode)(`div`,{class:`w-full h-full rounded px-1.5 sm:px-2 flex items-center text-[10px] sm:text-xs font-medium truncate shadow-2xs transition-all hover:brightness-95 active:scale-[0.99]`,style:(0,e.normalizeStyle)({backgroundColor:n.event.color||`var(--cal-primary)`,color:n.textColor})},[(0,e.renderSlot)(t.$slots,`event`,{event:n.event,mode:t.mode},()=>[(0,e.createElementVNode)(`span`,be,(0,e.toDisplayString)(n.event.title),1)],!0)],4)],12,ye))),128))],4)]))])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,xe,[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`shrink-0 transition-all duration-300`,[t.mode===`monthly`?`w-0 opacity-0 overflow-hidden`:`w-8 sm:w-9 md:w-25 opacity-100 h-full`]])},[(0,e.createVNode)(l,{class:`w-8 sm:w-9 md:w-25 min-h-full`,range:t.effectiveHours},null,8,[`range`])],2),(0,e.createElementVNode)(`div`,Se,[(0,e.createVNode)(e.Transition,{name:`calendar-view`,mode:`out-in`},{default:(0,e.withCtx)(()=>[t.mode===`monthly`?t.isMobile?t.mode===`monthly`&&t.isMobile?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,De,[(0,e.createVNode)(p,{loading:t.isLoading,days:t.headers,mode:t.mode,"events-by-day":t.monthlyEventsByDay,"is-other-month-func":e=>t.headers.find(t=>new Date(t.date).toDateString()===new Date(e).toDateString())?.otherMonth||!1,onEventClick:n[2]||=e=>t.$emit(`event-click`,e)},(0,e.createSlots)({_:2},[t.$slots[`event-mobile`]?{name:`event-mobile`,fn:(0,e.withCtx)(({event:n})=>[(0,e.renderSlot)(t.$slots,`event-mobile`,{event:n,mode:`monthly-mobile`},void 0,!0)]),key:`0`}:void 0]),1032,[`loading`,`days`,`mode`,`events-by-day`,`is-other-month-func`])])):(0,e.createCommentVNode)(``,!0):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:`month-${t.range?.start?.getTime()}`,class:`w-full grid grid-cols-7 auto-rows-[186px] overflow-hidden`},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.allHeaders,(r,i)=>((0,e.openBlock)(),(0,e.createBlock)(f,{key:i,day:r,"other-month":!!r.otherMonth,events:t.monthlyEventsByDay.get(new Date(r.date).toDateString())||[],onOpenDay:e=>t.openSpecificDay(r),onEventClick:n[1]||=e=>t.$emit(`event-click`,e)},(0,e.createSlots)({_:2},[t.$slots.event?{name:`event`,fn:(0,e.withCtx)(n=>[(0,e.renderSlot)(t.$slots,`event`,(0,e.mergeProps)({ref_for:!0},n),void 0,!0)]),key:`0`}:void 0]),1032,[`day`,`other-month`,`events`,`onOpenDay`]))),128))])):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:`time-${t.mode}-${t.range?.start?.getTime()}`,class:`w-full relative`,style:(0,e.normalizeStyle)({height:`${t.hoursList.length*80}px`})},[(0,e.createVNode)(u,{mode:t.mode,hours:t.effectiveHours,headers:t.headers},null,8,[`mode`,`hours`,`headers`]),(0,e.createElementVNode)(`div`,Ce,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.effectiveHours.end-t.effectiveHours.start,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:t,class:`w-full border-b border-surface-variant box-border h-20`}))),128))]),(0,e.createElementVNode)(`div`,we,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.headers,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`h-full ltr:border-r rtl:border-l border-outline-variant flex-1 transition-colors`,{"bg-today-column":r===t.todayColumnIndex}]),key:`v`+r},null,2))),128))]),(0,e.createElementVNode)(`div`,Te,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.gridEvents,r=>((0,e.openBlock)(),(0,e.createBlock)(d,{key:r.event.id,event:r.event,mode:t.mode,headers:t.headers,hours:t.effectiveHours,isMobile:t.isMobile,"overlap-index":r.overlapIndex,"overlap-count":r.overlapCount,onEventClick:n[0]||=e=>t.$emit(`event-click`,e)},(0,e.createSlots)({_:2},[t.$slots.event?{name:`event`,fn:(0,e.withCtx)(n=>[(0,e.renderSlot)(t.$slots,`event`,(0,e.mergeProps)({ref_for:!0},n),void 0,!0)]),key:`0`}:void 0]),1032,[`event`,`mode`,`headers`,`hours`,`isMobile`,`overlap-index`,`overlap-count`]))),128)),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.overflowIndicators,(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:`of-${r}`,class:`absolute px-0.5 sm:px-1 z-20 pointer-events-auto`,style:(0,e.normalizeStyle)({top:`${(Math.min(n.endDecimal,t.effectiveHours.end)-t.effectiveHours.start)*80}px`,insetInlineStart:`${n.dayIndex*(100/t.headers.length)}%`,width:`${100/t.headers.length}%`})},[(0,e.createElementVNode)(`button`,{class:`w-full text-[8px] sm:text-[10px] leading-none rounded bg-surface-variant hover:bg-surface-variant/80 text-on-surface/70 px-1 sm:px-2 py-0.5 sm:py-1 truncate transition-colors`,onClick:e=>t.openSpecificDay(t.headers[n.dayIndex])},` +`+(0,e.toDisplayString)(n.count)+` more `,9,Ee)],4))),128))])],4))]),_:3})])])],512)],8,pe)}var ke=f(fe,[[`render`,Oe],[`__scopeId`,`data-v-796ab926`]]),Ae=[`dir`],je={ref:`scrollContainer`,class:`flex-1 w-full overflow-y-auto cal-scrollbar px-2 sm:px-4 md:px-6 py-3 sm:py-5`},Me={class:`max-w-4xl mx-auto flex flex-col gap-6`},Ne={class:`agenda-section-header sticky top-0 z-10 py-1.5 flex items-center gap-3 bg-surface/95 backdrop-blur-xs`},Pe={class:`rounded-full bg-surface-variant px-3 py-0.5 text-xs font-semibold text-on-surface/70 border border-outline-variant shadow-xs select-none`},Fe={class:`flex flex-col gap-3`},Ie={class:`agenda-date-col shrink-0 flex flex-col items-start w-24 sm:w-32 md:w-36 pt-0.5 select-none`},Le={class:`sm:hidden`},Re={class:`hidden sm:inline`},ze={class:`mt-1 flex items-center gap-1.5 sm:gap-2`},Be={class:`flex flex-col text-[10px] sm:text-xs leading-none text-on-surface/50 gap-0.5`},Ve={key:0,class:`opacity-70`},He={key:0,class:`mt-1 text-[10px] font-medium text-error truncate max-w-full`},Q={class:`agenda-events-col flex-1 min-w-0 flex flex-col gap-2`},Ue=[`onClick`],We={class:`min-w-0 flex-1 font-semibold text-xs sm:text-sm md:text-base leading-snug truncate`},Ge={key:0,class:`shrink-0 text-[11px] sm:text-xs md:text-sm font-medium opacity-90 flex items-center gap-1.5 whitespace-nowrap`},Ke={key:1,class:`agenda-no-events flex items-center text-xs text-on-surface/40 italic py-2 px-3 rounded-lg border border-dashed border-outline-variant select-none`},$=f((0,e.defineComponent)({__name:`CalendarAgenda`,props:{range:{},events:{default:()=>[]},dir:{default:``}},emits:[`event-click`],setup(t){let n=t,a=(0,e.inject)(`calendarConfig`,(0,e.ref)({locale:`fa-IR`,calendar:`jalaali`,startOfWeek:`saturday`,showHolidays:!1})),{t:o}=r(),{getCalendarHeaders:s}=i(),c=(0,e.computed)(()=>{let e=String(a.value.locale||``).toLowerCase();return e.startsWith(`fa`)||e.startsWith(`ar`)}),l=(0,e.computed)(()=>n.dir?n.dir:c.value?`rtl`:`ltr`);function d(e){if(!e||typeof e!=`string`)return 0;let t=e.split(`:`).map(Number),n=t[0]??0,r=t[1]??0;return Number.isNaN(n)||Number.isNaN(r)?0:n*60+r}let f=[`۰`,`۱`,`۲`,`۳`,`۴`,`۵`,`۶`,`۷`,`۸`,`۹`];function p(e){return c.value?e.replace(/\d/g,e=>f[parseInt(e,10)]??e):e}function m(e){if(e.isFullDay)return o(`calendar.allDay`)||(c.value?`تمام روز`:`All day`);if(!e.time)return``;if(!e.duration||e.duration<=0)return p(e.time);let t=d(e.time)+e.duration,n=Math.floor(t%1440/60),r=t%60,i=`${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}`,a=p(e.time),s=p(i);return c.value?`${a} تا ${s}`:`${a} – ${s}`}function h(e){let t=e.color||`var(--cal-primary, #1a9d90)`;return{backgroundColor:t,color:u(t)}}let g=(0,e.computed)(()=>s(n.range,`agenda`));function _(e,t){if(!e.date)return!1;let n=new Date(t.date),r=new Date(n.getFullYear(),n.getMonth(),n.getDate(),0,0,0,0).getTime(),i=new Date(n.getFullYear(),n.getMonth(),n.getDate(),23,59,59,999).getTime(),a=new Date(e.date),o=d(e.time),s=new Date(a.getFullYear(),a.getMonth(),a.getDate(),0,0,0,0).getTime()+o*60*1e3,c=s;return e.duration&&e.duration>0?c=s+e.duration*60*1e3:e.isFullDay&&(c=new Date(a.getFullYear(),a.getMonth(),a.getDate(),23,59,59,999).getTime()),s<=i&&c>=r}function v(e){return n.events.filter(t=>_(t,e)).sort((e,t)=>{if(e.isFullDay&&!t.isFullDay)return-1;if(!e.isFullDay&&t.isFullDay)return 1;let n=d(e.time),r=d(t.time);return n===r?String(e.title||``).localeCompare(String(t.title||``)):n-r})}function y(e,t){let n=c.value,r=n?`fa-IR`:`en-US`,i=a.value.calendar===`jalaali`?`persian`:a.value.calendar===`islamic`?`islamic-civil`:`gregory`,o=new Intl.DateTimeFormat(`${r}-u-ca-${i}`,{day:`numeric`,month:`short`,year:`numeric`}).formatToParts(e),s=new Intl.DateTimeFormat(`${r}-u-ca-${i}`,{day:`numeric`,month:`short`,year:`numeric`}).formatToParts(t),l=o.find(e=>e.type===`day`)?.value||``,u=o.find(e=>e.type===`month`)?.value||``,d=o.find(e=>e.type===`year`)?.value||``,f=s.find(e=>e.type===`day`)?.value||``,p=s.find(e=>e.type===`month`)?.value||``,m=s.find(e=>e.type===`year`)?.value||``;return d===m&&u===p?n?`${l} – ${f} ${u}`:`${u} ${l} – ${f}`:d===m?n?`${l} ${u} – ${f} ${p}`:`${u} ${l} – ${p} ${f}`:n?`${l} ${u} ${d} – ${f} ${p} ${m}`:`${u} ${l}, ${d} – ${p} ${f}, ${d}`}let b=(0,e.computed)(()=>{let e=g.value;if(!e.length)return[];let t=[];for(let n=0;n<e.length;n+=7){let r=e.slice(n,n+7),i=r[0]?.date||new Date,a=r[r.length-1]?.date||i;t.push({id:`section-${i.getTime()}-${a.getTime()}`,rangeLabel:y(i,a),days:r.map(e=>({day:e,events:v(e)}))})}return t});return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`calendar-agenda w-full h-full flex flex-col bg-surface overflow-hidden`,dir:l.value},[(0,e.createElementVNode)(`div`,je,[(0,e.createElementVNode)(`div`,Me,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(b.value,r=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r.id,class:`agenda-section flex flex-col gap-3`},[(0,e.createElementVNode)(`div`,Ne,[n[0]||=(0,e.createElementVNode)(`div`,{class:`h-px flex-1 bg-outline-variant`},null,-1),(0,e.createElementVNode)(`span`,Pe,(0,e.toDisplayString)(r.rangeLabel),1),n[1]||=(0,e.createElementVNode)(`div`,{class:`h-px flex-1 bg-outline-variant`},null,-1)]),(0,e.createElementVNode)(`div`,Fe,[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(r.days,r=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r.day.name+r.day.date.getTime(),class:(0,e.normalizeClass)([`agenda-day-row flex flex-row items-start gap-3 sm:gap-5 p-2.5 sm:p-3.5 rounded-xl border border-outline-variant/60 transition-colors`,{"bg-today-column ring-1 ring-primary/30 border-primary/40":r.day.isToday,"bg-surface":!r.day.isToday}])},[(0,e.createElementVNode)(`div`,Ie,[(0,e.createElementVNode)(`span`,{class:(0,e.normalizeClass)([`text-xs sm:text-sm font-semibold truncate max-w-full`,r.day.isToday?`text-primary font-bold`:`text-on-surface/80`])},[(0,e.createElementVNode)(`span`,Le,(0,e.toDisplayString)(r.day.shortName||r.day.name),1),(0,e.createElementVNode)(`span`,Re,(0,e.toDisplayString)(r.day.name),1)],2),(0,e.createElementVNode)(`div`,ze,[(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`flex size-7 sm:size-8 items-center justify-center rounded-full text-xs sm:text-sm font-bold shadow-xs shrink-0`,[r.day.isToday?`bg-primary text-surface font-extrabold ring-2 ring-primary/30`:r.day.isWeekend||r.day.isHoliday?`bg-surface-variant text-error border border-outline-variant`:`bg-surface-variant text-on-surface border border-outline-variant`]])},(0,e.toDisplayString)(r.day.primary),3),(0,e.createElementVNode)(`div`,Be,[(0,e.createElementVNode)(`span`,{class:(0,e.normalizeClass)({"text-error":r.day.isWeekend||r.day.isHoliday})},(0,e.toDisplayString)(r.day.secondary),3),r.day.tertiary?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,Ve,(0,e.toDisplayString)(r.day.tertiary),1)):(0,e.createCommentVNode)(``,!0)])]),r.day.holidayTitle?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,He,(0,e.toDisplayString)(r.day.holidayTitle),1)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,Q,[r.events.length>0?((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,{key:0},(0,e.renderList)(r.events,r=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:r.id,class:`agenda-event-card group flex items-center justify-between gap-3 rounded-lg sm:rounded-xl p-2.5 sm:px-4 sm:py-3 border border-black/10 dark:border-white/20 shadow-xs cursor-pointer transition-all hover:scale-[1.006] hover:shadow-md active:scale-[0.995]`,style:(0,e.normalizeStyle)(h(r)),onClick:e=>t.$emit(`event-click`,r)},[(0,e.renderSlot)(t.$slots,`event`,{event:r,mode:`agenda`},()=>[(0,e.createElementVNode)(`div`,We,(0,e.toDisplayString)(r.title),1),r.time||r.isFullDay?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ge,[n[2]||=(0,e.createElementVNode)(`svg`,{class:`size-3 sm:size-3.5 opacity-80`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[(0,e.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,e.createElementVNode)(`polyline`,{points:`12 6 12 12 16 14`})],-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(m(r)),1)])):(0,e.createCommentVNode)(``,!0)],!0)],12,Ue))),128)):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ke,(0,e.toDisplayString)((0,e.unref)(o)(`calendar.noEvents`)||`No events`),1))])],2))),128))])]))),128))])],512)],8,Ae))}}),[[`__scopeId`,`data-v-71fb8cbf`]]),qe={key:0,class:`w-full h-full flex flex-col font-sans`,style:{color:`var(--cal-on-surface)`,background:`var(--cal-surface)`}},Je={class:`w-full flex-1 overflow-hidden relative`},Ye=(0,e.defineComponent)({__name:`VueCalendar`,props:{events:{default:()=>[]},mode:{default:`monthly`},locale:{default:`en-US`},calendarType:{default:`gregory`},startOfWeek:{},hours:{default:()=>({start:0,end:24})},initialDate:{default:()=>new Date}},emits:[`update:mode`,`range-change`,`event-click`],setup(t,{expose:n,emit:r}){let a=t,o=r,s=(0,e.ref)(!1),c=(0,e.ref)(new Date(a.initialDate)),l={gregory:`gregory`,persian:`jalaali`,"islamic-uma":`islamic`},u=[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`],d=(0,e.computed)(()=>a.startOfWeek!==void 0&&a.startOfWeek>=0&&a.startOfWeek<=6?a.startOfWeek:a.calendarType===`gregory`?1:6),f=(0,e.computed)(()=>({locale:a.locale,calendar:l[a.calendarType],startOfWeek:u[d.value]??`sunday`,showHolidays:!1}));(0,e.provide)(`calendarConfig`,f),(0,e.provide)(`calendarHolidays`,(0,e.ref)({}));let{getMonthBounds:p,offsetPeriod:m}=i(f),h=(0,e.computed)(()=>{let e=new Date(c.value),t=new Date(c.value);if(a.mode===`daily`)return e.setHours(0,0,0,0),t.setHours(23,59,59,999),{start:e,end:t};if(a.mode===`3days`)return e.setHours(0,0,0,0),t.setTime(e.getTime()),t.setDate(e.getDate()+2),t.setHours(23,59,59,999),{start:e,end:t};if(a.mode===`weekly`){let n=d.value,r=e.getDay(),i=(r<n?7:0)+r-n;return e.setDate(e.getDate()-i),e.setHours(0,0,0,0),t.setTime(e.getTime()),t.setDate(e.getDate()+6),t.setHours(23,59,59,999),{start:e,end:t}}else return p(c.value)}),g=()=>{c.value=m(c.value,a.mode,1),o(`range-change`,h.value)},_=()=>{c.value=m(c.value,a.mode,-1),o(`range-change`,h.value)},v=(e,t)=>{t&&(c.value=new Date(t)),o(`update:mode`,e,t)},y=(e,t)=>{t&&(c.value=new Date(t)),o(`update:mode`,e,t)};return(0,e.watch)(()=>a.initialDate,e=>{e&&(c.value=new Date(e),o(`range-change`,h.value))}),(0,e.watch)(h,e=>{s.value&&o(`range-change`,e)}),(0,e.onMounted)(()=>{s.value=!0,o(`range-change`,h.value)}),n({goNext:g,goPrev:_,setMode:y,currentRange:h,handleModeUpdate:v}),(n,r)=>s.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,qe,[(0,e.renderSlot)(n.$slots,`header`,{mode:t.mode,range:h.value,next:g,prev:_,setMode:y}),(0,e.createElementVNode)(`div`,Je,[t.mode===`agenda`?((0,e.openBlock)(),(0,e.createBlock)($,{key:0,range:h.value,events:t.events,onEventClick:r[0]||=e=>n.$emit(`event-click`,e)},(0,e.createSlots)({_:2},[n.$slots.event?{name:`event`,fn:(0,e.withCtx)(t=>[(0,e.renderSlot)(n.$slots,`event`,(0,e.normalizeProps)((0,e.guardReactiveProps)(t)))]),key:`0`}:void 0]),1032,[`range`,`events`])):((0,e.openBlock)(),(0,e.createBlock)(ke,{key:1,range:h.value,mode:t.mode,events:t.events,hours:t.hours,"onUpdate:mode":r[1]||=(e,t)=>v(e,t),onEventClick:r[2]||=e=>n.$emit(`event-click`,e),"onUpdate:range":r[3]||=e=>n.$emit(`range-change`,e)},(0,e.createSlots)({_:2},[n.$slots.event?{name:`event`,fn:(0,e.withCtx)(t=>[(0,e.renderSlot)(n.$slots,`event`,(0,e.normalizeProps)((0,e.guardReactiveProps)(t)))]),key:`0`}:void 0,n.$slots[`event-mobile`]?{name:`event-mobile`,fn:(0,e.withCtx)(t=>[(0,e.renderSlot)(n.$slots,`event-mobile`,(0,e.normalizeProps)((0,e.guardReactiveProps)(t)))]),key:`1`}:void 0]),1032,[`range`,`mode`,`events`,`hours`]))])])):(0,e.createCommentVNode)(``,!0)}});exports.CalendarAgenda=$,exports.VueCalendar=Ye,exports.getAccessibleTextColor=u,exports.getContrastRatio=l,exports.getRelativeLuminance=c,exports.parseColorToRgb=o;
package/dist/index.js CHANGED
@@ -292,135 +292,7 @@ var N = () => {
292
292
  getMonthNames: S,
293
293
  getFirstDayOfMonthInActiveCalendar: w
294
294
  };
295
- }, ee = l({
296
- name: "CalendarDayBadge",
297
- props: { day: {
298
- type: Object,
299
- required: !0
300
- } },
301
- setup(e) {
302
- return {
303
- getDayItemColor: n(() => {
304
- let t = e.day, n = "border-outline-variant bg-surface", r = "text-on-surface/50";
305
- return t.isToday && (n = "bg-today border-outline-variant/0", r = "text-surface"), (t.isWeekend || t.isHoliday) && (r = "text-error"), {
306
- fill: n,
307
- text: r
308
- };
309
- }),
310
- getFont: (e, t) => {
311
- if (String(t.gregorian) === t[e]) return "font-latin";
312
- }
313
- };
314
- }
315
- }), L = (e, t) => {
316
- let n = e.__vccOpts || e;
317
- for (let [e, r] of t) n[e] = r;
318
- return n;
319
- }, te = { class: "flex flex-col items-center" };
320
- function ne(e, t, n, r, i, s) {
321
- return y(), a("div", te, [o("div", { class: m(["w-7 h-7 sm:w-8 sm:h-8 md:w-9 md:h-9 select-none border flex flex-col justify-center items-center rounded-full", [e.getDayItemColor.fill, e.getDayItemColor.text]]) }, [
322
- o("div", { class: m([[e.getFont("tertiary", e.day)], "leading-none opacity-70 text-[6px] sm:text-[7px] md:text-[8px]"]) }, T(e.day.tertiary), 3),
323
- o("div", { class: m([[e.getFont("primary", e.day)], "leading-tight text-[11px] sm:text-xs md:text-label-md font-medium"]) }, T(e.day.primary), 3),
324
- o("div", { class: m([[e.getFont("secondary", e.day)], "leading-none opacity-70 text-[6px] sm:text-[7px] md:text-[8px]"]) }, T(e.day.secondary), 3)
325
- ], 2)]);
326
- }
327
- var R = /* @__PURE__ */ L(ee, [["render", ne]]), re = l({
328
- name: "CalendarHeaderItem",
329
- components: { CalendarDayBadge: R },
330
- props: {
331
- days: {
332
- type: Array,
333
- default: () => []
334
- },
335
- mode: {
336
- type: String,
337
- default: "monthly"
338
- },
339
- todayColumnIndex: {
340
- type: Number,
341
- default: -1
342
- }
343
- },
344
- setup(e) {
345
- return { itemWidths: n(() => `${100 / (e.days.length + (e.mode === "monthly" ? 0 : 1))}%`) };
346
- }
347
- }), ie = {
348
- key: 0,
349
- class: "border shrink-0 w-8 sm:w-9 md:w-25 min-w-8 sm:min-w-9 md:min-w-25 max-w-8 sm:max-w-9 md:max-w-25 border-outline-variant"
350
- }, ae = { class: "select-none text-on-surface/50 text-[9px] sm:text-[10px] md:text-label-md truncate max-w-full text-center px-0.5" }, oe = { class: "sm:hidden" }, se = { class: "hidden sm:inline" };
351
- function z(t, n, s, c, l, u) {
352
- let d = w("CalendarDayBadge");
353
- return y(), a("div", { class: m(["cal-header-row w-full items-stretch flex justify-between", { "ltr:border-l rtl:border-r border-outline-variant": t.mode === "monthly" }]) }, [t.mode === "monthly" ? i("", !0) : (y(), a("div", ie)), (y(!0), a(e, null, S(t.days, (e, n) => (y(), a("div", {
354
- class: m(["border-y rtl:border-l ltr:border-r border-outline-variant py-1.5 sm:py-2 md:py-4 flex-col flex-1 min-w-0 gap-y-1 sm:gap-y-1.5 md:gap-y-2.5 flex items-center justify-center transition-colors", { "bg-today-column": n === t.todayColumnIndex }]),
355
- key: e.name + n
356
- }, [t.mode === "monthly" ? i("", !0) : (y(), r(d, {
357
- key: 0,
358
- day: e
359
- }, null, 8, ["day"])), o("div", ae, [o("span", oe, T(e.shortName || e.name), 1), o("span", se, T(e.name), 1)])], 2))), 128))], 2);
360
- }
361
- var B = /* @__PURE__ */ L(re, [["render", z], ["__scopeId", "data-v-ef2978fb"]]), V = l({
362
- name: "CalendarSideItem",
363
- props: { range: {
364
- type: Object,
365
- required: !0
366
- } },
367
- setup(e) {
368
- let { t, config: r } = F(), { width: i } = N(), a = n(() => i.value < 768), o = n(() => new Intl.NumberFormat(r.value.locale.startsWith("fa") ? "fa-IR" : "en-US")), s = n(() => `${100 / c.value.length}%`), c = n(() => {
369
- let n = [], { start: r, end: i } = e.range;
370
- for (let e = r; e < i; e++) if (a.value) n.push({
371
- raw: e,
372
- label: o.value.format(e)
373
- });
374
- else {
375
- let r = "";
376
- r = e >= 1 && e <= 11 ? "morning" : e === 12 ? "noon" : e >= 13 && e < 19 ? "afternoon" : "night";
377
- let i = e;
378
- e > 12 && (i = e - 12), e === 0 && (i = 12), n.push({
379
- raw: e,
380
- label: `${o.value.format(i)} ${t(`calendar.dayTimes.${r}`)}`
381
- });
382
- }
383
- return n;
384
- });
385
- return {
386
- hoursList: c,
387
- itemHeights: s
388
- };
389
- }
390
- }), H = { class: "w-8 sm:w-9 md:w-25 min-h-full flex flex-col ltr:border-r ltr:border-r-outline-variant rtl:border-l border-l-outline-variant" };
391
- function U(t, n, r, i, o, s) {
392
- return y(), a("div", H, [(y(!0), a(e, null, S(t.hoursList, (e) => (y(), a("div", {
393
- key: e.raw,
394
- style: g({ height: t.itemHeights }),
395
- class: "flex items-center text-center justify-center text-[10px] sm:text-xs md:text-label-md text-on-surface/50 border-b min-h-20 border-b-outline-variant select-none"
396
- }, T(e.label), 5))), 128))]);
397
- }
398
- var W = /* @__PURE__ */ L(V, [["render", U]]), G = l({
399
- name: "CalendarPattern",
400
- setup() {
401
- return { getX: (e) => -50 + (e - 1) * 25 };
402
- }
403
- }), K = {
404
- width: "100%",
405
- height: "120%",
406
- viewBox: "0 0 440 221",
407
- preserveAspectRatio: "xMidYMid slice",
408
- class: "text-surface-variant",
409
- fill: "none",
410
- xmlns: "http://www.w3.org/2000/svg"
411
- }, ce = ["x", "transform"];
412
- function le(t, n, r, i, s, c) {
413
- return y(), a("svg", K, [(y(), a(e, null, S(25, (e) => o("rect", {
414
- key: e,
415
- x: t.getX(e),
416
- y: "220.895",
417
- width: "300",
418
- height: "12",
419
- transform: `rotate(-115 ${t.getX(e)} 220.895)`,
420
- fill: "currentColor"
421
- }, null, 8, ce)), 64))]);
422
- }
423
- var ue = /* @__PURE__ */ L(G, [["render", le]]), q = {
295
+ }, L = {
424
296
  "--cal-primary": {
425
297
  light: {
426
298
  r: 26,
@@ -518,7 +390,7 @@ var ue = /* @__PURE__ */ L(G, [["render", le]]), q = {
518
390
  }
519
391
  }
520
392
  };
521
- function J(e) {
393
+ function R(e) {
522
394
  if (!e || typeof e != "string") return null;
523
395
  let t = e.trim().toLowerCase();
524
396
  if (t.startsWith("var(")) {
@@ -526,16 +398,16 @@ function J(e) {
526
398
  if (typeof document < "u" && n) try {
527
399
  let e = getComputedStyle(document.documentElement).getPropertyValue(n).trim();
528
400
  if (e) {
529
- let t = J(e);
401
+ let t = R(e);
530
402
  if (t) return t;
531
403
  }
532
404
  } catch {}
533
405
  let r = t.match(/var\([^,]+,\s*([^)]+)\)/);
534
406
  if (r && r[1]) {
535
- let e = J(r[1].trim());
407
+ let e = R(r[1].trim());
536
408
  if (e) return e;
537
409
  }
538
- return n && q[n] ? typeof document < "u" && document.documentElement.classList.contains("dark") ? q[n].dark : q[n].light : {
410
+ return n && L[n] ? typeof document < "u" && document.documentElement.classList.contains("dark") ? L[n].dark : L[n].light : {
539
411
  r: 26,
540
412
  g: 157,
541
413
  b: 144
@@ -581,7 +453,7 @@ function J(e) {
581
453
  let t = e[1].split(/[\s,/]+/).filter(Boolean), n = t[0], r = t[1], i = t[2];
582
454
  if (n !== void 0 && r !== void 0 && i !== void 0) {
583
455
  let e = parseFloat(n), t = parseFloat(r) / 100, a = parseFloat(i) / 100;
584
- if (!Number.isNaN(e) && !Number.isNaN(t) && !Number.isNaN(a)) return de(e, t, a);
456
+ if (!Number.isNaN(e) && !Number.isNaN(t) && !Number.isNaN(a)) return z(e, t, a);
585
457
  }
586
458
  }
587
459
  return null;
@@ -650,7 +522,7 @@ function J(e) {
650
522
  };
651
523
  return n[t] ? n[t] : null;
652
524
  }
653
- function de(e, t, n) {
525
+ function z(e, t, n) {
654
526
  let r = (e % 360 + 360) % 360, i = (1 - Math.abs(2 * n - 1)) * t, a = i * (1 - Math.abs(r / 60 % 2 - 1)), o = n - i / 2, s = 0, c = 0, l = 0;
655
527
  return r >= 0 && r < 60 ? (s = i, c = a) : r >= 60 && r < 120 ? (s = a, c = i) : r >= 120 && r < 180 ? (c = i, l = a) : r >= 180 && r < 240 ? (c = a, l = i) : r >= 240 && r < 300 ? (s = a, l = i) : (s = i, l = a), {
656
528
  r: Math.round((s + o) * 255),
@@ -658,46 +530,174 @@ function de(e, t, n) {
658
530
  b: Math.round((l + o) * 255)
659
531
  };
660
532
  }
661
- function Y(e, t, n) {
533
+ function B(e, t, n) {
662
534
  let r = (e) => {
663
535
  let t = Math.max(0, Math.min(255, e)) / 255;
664
536
  return t <= .04045 ? t / 12.92 : ((t + .055) / 1.055) ** 2.4;
665
537
  }, i = r(e), a = r(t), o = r(n);
666
538
  return .2126 * i + .7152 * a + .0722 * o;
667
539
  }
668
- function fe(e, t) {
669
- let n = typeof e == "string" ? J(e) ?? {
540
+ function ee(e, t) {
541
+ let n = typeof e == "string" ? R(e) ?? {
670
542
  r: 0,
671
543
  g: 0,
672
544
  b: 0
673
- } : e, r = typeof t == "string" ? J(t) ?? {
545
+ } : e, r = typeof t == "string" ? R(t) ?? {
674
546
  r: 255,
675
547
  g: 255,
676
548
  b: 255
677
- } : t, i = Y(n.r, n.g, n.b), a = Y(r.r, r.g, r.b), o = Math.max(i, a), s = Math.min(i, a);
549
+ } : t, i = B(n.r, n.g, n.b), a = B(r.r, r.g, r.b), o = Math.max(i, a), s = Math.min(i, a);
678
550
  return (o + .05) / (s + .05);
679
551
  }
680
- function X(e, t) {
552
+ function V(e, t) {
681
553
  let n = t?.darkColor ?? "#0f172a", r = t?.lightColor ?? "#ffffff";
682
554
  if (!e) return r;
683
- let i = J(e) ?? {
555
+ let i = R(e) ?? {
684
556
  r: 26,
685
557
  g: 157,
686
558
  b: 144
687
- }, a = J(n) ?? {
559
+ }, a = R(n) ?? {
688
560
  r: 15,
689
561
  g: 23,
690
562
  b: 42
691
- }, o = J(r) ?? {
563
+ }, o = R(r) ?? {
692
564
  r: 255,
693
565
  g: 255,
694
566
  b: 255
695
- }, s = Y(i.r, i.g, i.b), c = Y(a.r, a.g, a.b), l = Y(o.r, o.g, o.b), u = (Math.max(s, c) + .05) / (Math.min(s, c) + .05);
567
+ }, s = B(i.r, i.g, i.b), c = B(a.r, a.g, a.b), l = B(o.r, o.g, o.b), u = (Math.max(s, c) + .05) / (Math.min(s, c) + .05);
696
568
  return (Math.max(s, l) + .05) / (Math.min(s, l) + .05) >= u ? r : n;
697
569
  }
698
570
  //#endregion
699
- //#region src/components/CalendarItemDisplay.vue
700
- var Z = /* @__PURE__ */ l({
571
+ //#region src/components/CalendarDayBadge.vue?vue&type=script&lang.ts
572
+ var te = l({
573
+ name: "CalendarDayBadge",
574
+ props: { day: {
575
+ type: Object,
576
+ required: !0
577
+ } },
578
+ setup(e) {
579
+ return {
580
+ getDayItemColor: n(() => {
581
+ let t = e.day, n = "border-outline-variant bg-surface", r = "text-on-surface/50";
582
+ return t.isToday && (n = "bg-today border-outline-variant/0", r = "text-surface"), (t.isWeekend || t.isHoliday) && (r = "text-error"), {
583
+ fill: n,
584
+ text: r
585
+ };
586
+ }),
587
+ getFont: (e, t) => {
588
+ if (String(t.gregorian) === t[e]) return "font-latin";
589
+ }
590
+ };
591
+ }
592
+ }), H = (e, t) => {
593
+ let n = e.__vccOpts || e;
594
+ for (let [e, r] of t) n[e] = r;
595
+ return n;
596
+ }, ne = { class: "flex flex-col items-center" };
597
+ function re(e, t, n, r, i, s) {
598
+ return y(), a("div", ne, [o("div", { class: m(["w-7 h-7 sm:w-8 sm:h-8 md:w-9 md:h-9 select-none border flex flex-col justify-center items-center rounded-full", [e.getDayItemColor.fill, e.getDayItemColor.text]]) }, [
599
+ o("div", { class: m([[e.getFont("tertiary", e.day)], "leading-none opacity-70 text-[6px] sm:text-[7px] md:text-[8px]"]) }, T(e.day.tertiary), 3),
600
+ o("div", { class: m([[e.getFont("primary", e.day)], "leading-tight text-[11px] sm:text-xs md:text-label-md font-medium"]) }, T(e.day.primary), 3),
601
+ o("div", { class: m([[e.getFont("secondary", e.day)], "leading-none opacity-70 text-[6px] sm:text-[7px] md:text-[8px]"]) }, T(e.day.secondary), 3)
602
+ ], 2)]);
603
+ }
604
+ var U = /* @__PURE__ */ H(te, [["render", re]]), W = l({
605
+ name: "CalendarHeaderItem",
606
+ components: { CalendarDayBadge: U },
607
+ props: {
608
+ days: {
609
+ type: Array,
610
+ default: () => []
611
+ },
612
+ mode: {
613
+ type: String,
614
+ default: "monthly"
615
+ },
616
+ todayColumnIndex: {
617
+ type: Number,
618
+ default: -1
619
+ }
620
+ },
621
+ setup(e) {
622
+ return { itemWidths: n(() => `${100 / (e.days.length + (e.mode === "monthly" ? 0 : 1))}%`) };
623
+ }
624
+ }), G = {
625
+ key: 0,
626
+ class: "border shrink-0 w-8 sm:w-9 md:w-25 min-w-8 sm:min-w-9 md:min-w-25 max-w-8 sm:max-w-9 md:max-w-25 border-outline-variant"
627
+ }, K = { class: "select-none text-on-surface/50 text-[9px] sm:text-[10px] md:text-label-md truncate max-w-full text-center px-0.5" }, q = { class: "sm:hidden" }, J = { class: "hidden sm:inline" };
628
+ function Y(t, n, s, c, l, u) {
629
+ let d = w("CalendarDayBadge");
630
+ return y(), a("div", { class: m(["cal-header-row w-full items-stretch flex justify-between", { "ltr:border-l rtl:border-r border-outline-variant": t.mode === "monthly" }]) }, [t.mode === "monthly" ? i("", !0) : (y(), a("div", G)), (y(!0), a(e, null, S(t.days, (e, n) => (y(), a("div", {
631
+ class: m(["border-y rtl:border-l ltr:border-r border-outline-variant py-1.5 sm:py-2 md:py-4 flex-col flex-1 min-w-0 gap-y-1 sm:gap-y-1.5 md:gap-y-2.5 flex items-center justify-center transition-colors", { "bg-today-column": n === t.todayColumnIndex }]),
632
+ key: e.name + n
633
+ }, [t.mode === "monthly" ? i("", !0) : (y(), r(d, {
634
+ key: 0,
635
+ day: e
636
+ }, null, 8, ["day"])), o("div", K, [o("span", q, T(e.shortName || e.name), 1), o("span", J, T(e.name), 1)])], 2))), 128))], 2);
637
+ }
638
+ var X = /* @__PURE__ */ H(W, [["render", Y], ["__scopeId", "data-v-ef2978fb"]]), ie = l({
639
+ name: "CalendarSideItem",
640
+ props: { range: {
641
+ type: Object,
642
+ required: !0
643
+ } },
644
+ setup(e) {
645
+ let { t, config: r } = F(), { width: i } = N(), a = n(() => i.value < 768), o = n(() => new Intl.NumberFormat(r.value.locale.startsWith("fa") ? "fa-IR" : "en-US")), s = n(() => `${100 / c.value.length}%`), c = n(() => {
646
+ let n = [], { start: r, end: i } = e.range;
647
+ for (let e = r; e < i; e++) if (a.value) n.push({
648
+ raw: e,
649
+ label: o.value.format(e)
650
+ });
651
+ else {
652
+ let r = "";
653
+ r = e >= 1 && e <= 11 ? "morning" : e === 12 ? "noon" : e >= 13 && e < 19 ? "afternoon" : "night";
654
+ let i = e;
655
+ e > 12 && (i = e - 12), e === 0 && (i = 12), n.push({
656
+ raw: e,
657
+ label: `${o.value.format(i)} ${t(`calendar.dayTimes.${r}`)}`
658
+ });
659
+ }
660
+ return n;
661
+ });
662
+ return {
663
+ hoursList: c,
664
+ itemHeights: s
665
+ };
666
+ }
667
+ }), ae = { class: "w-8 sm:w-9 md:w-25 min-h-full flex flex-col ltr:border-r ltr:border-r-outline-variant rtl:border-l border-l-outline-variant" };
668
+ function oe(t, n, r, i, o, s) {
669
+ return y(), a("div", ae, [(y(!0), a(e, null, S(t.hoursList, (e) => (y(), a("div", {
670
+ key: e.raw,
671
+ style: g({ height: t.itemHeights }),
672
+ class: "flex items-center text-center justify-center text-[10px] sm:text-xs md:text-label-md text-on-surface/50 border-b min-h-20 border-b-outline-variant select-none"
673
+ }, T(e.label), 5))), 128))]);
674
+ }
675
+ var se = /* @__PURE__ */ H(ie, [["render", oe]]), ce = l({
676
+ name: "CalendarPattern",
677
+ setup() {
678
+ return { getX: (e) => -50 + (e - 1) * 25 };
679
+ }
680
+ }), le = {
681
+ width: "100%",
682
+ height: "120%",
683
+ viewBox: "0 0 440 221",
684
+ preserveAspectRatio: "xMidYMid slice",
685
+ class: "text-surface-variant",
686
+ fill: "none",
687
+ xmlns: "http://www.w3.org/2000/svg"
688
+ }, ue = ["x", "transform"];
689
+ function de(t, n, r, i, s, c) {
690
+ return y(), a("svg", le, [(y(), a(e, null, S(25, (e) => o("rect", {
691
+ key: e,
692
+ x: t.getX(e),
693
+ y: "220.895",
694
+ width: "300",
695
+ height: "12",
696
+ transform: `rotate(-115 ${t.getX(e)} 220.895)`,
697
+ fill: "currentColor"
698
+ }, null, 8, ue)), 64))]);
699
+ }
700
+ var fe = /* @__PURE__ */ H(ce, [["render", de]]), Z = /* @__PURE__ */ l({
701
701
  __name: "CalendarItemDisplay",
702
702
  props: {
703
703
  event: {},
@@ -711,7 +711,7 @@ var Z = /* @__PURE__ */ l({
711
711
  },
712
712
  emits: ["event-click"],
713
713
  setup(e) {
714
- let t = e, r = n(() => t.event.color || "var(--cal-primary)"), i = n(() => X(r.value)), s = n(() => {
714
+ let t = e, r = n(() => t.event.color || "var(--cal-primary)"), i = n(() => V(r.value)), s = n(() => {
715
715
  if (t.mode === "monthly") return {
716
716
  zIndex: 10,
717
717
  position: "relative"
@@ -786,8 +786,8 @@ var Z = /* @__PURE__ */ l({
786
786
  }
787
787
  },
788
788
  components: {
789
- CalendarDayBadge: R,
790
- CalendarPattern: ue,
789
+ CalendarDayBadge: U,
790
+ CalendarPattern: fe,
791
791
  CalendarItemDisplay: Z
792
792
  },
793
793
  emits: ["open-day", "event-click"],
@@ -828,7 +828,7 @@ function ve(t, n, s, l, u, d) {
828
828
  class: "absolute inset-0 z-0 pointer-events-none"
829
829
  })) : i("", !0)])], 2);
830
830
  }
831
- var ye = /* @__PURE__ */ L(pe, [["render", ve]]), be = l({
831
+ var ye = /* @__PURE__ */ H(pe, [["render", ve]]), be = l({
832
832
  name: "CalendarPointer",
833
833
  props: {
834
834
  mode: {
@@ -890,7 +890,7 @@ function xe(e, t, n, r, i, s) {
890
890
  style: g(e.pointerStyle)
891
891
  }, [...t[0] ||= [o("div", { class: "w-2.5 aspect-square rounded-full bg-error shrink-0" }, null, -1), o("div", { class: "h-0.5 flex-1 bg-error" }, null, -1)]], 4)), [[O, e.isVisible]]);
892
892
  }
893
- var Se = /* @__PURE__ */ L(be, [["render", xe]]), Ce = l({
893
+ var Se = /* @__PURE__ */ H(be, [["render", xe]]), Ce = l({
894
894
  name: "MobileDayHolder",
895
895
  props: {
896
896
  day: {
@@ -963,7 +963,7 @@ function Ee(t, n, r, s, c, l) {
963
963
  style: g({ backgroundColor: e.color || "var(--cal-primary)" })
964
964
  }, null, 4))), 128))], 6)) : i("", !0)])], 6);
965
965
  }
966
- var De = /* @__PURE__ */ L(Ce, [["render", Ee], ["__scopeId", "data-v-d90e616f"]]), Oe = { class: "flex flex-col gap-y-1 p-3 flex-1" }, ke = { class: "text-label-md font-semibold text-on-surface" }, Ae = { class: "text-body-sm text-on-surface/60" }, je = l({
966
+ var De = /* @__PURE__ */ H(Ce, [["render", Ee], ["__scopeId", "data-v-d90e616f"]]), Oe = { class: "flex flex-col gap-y-1 p-3 flex-1" }, ke = { class: "text-label-md font-semibold text-on-surface" }, Ae = { class: "text-body-sm text-on-surface/60" }, je = l({
967
967
  name: "MobileCalendarGrid",
968
968
  components: {
969
969
  MobileDayHolder: De,
@@ -1112,11 +1112,11 @@ function ze(t, n, s, l, u, d) {
1112
1112
  }, 1032, ["event"]))), 128))])])) : i("", !0)
1113
1113
  ]);
1114
1114
  }
1115
- var Be = /* @__PURE__ */ L(je, [["render", ze]]), Ve = { class: "detail-wrapper-stub" }, He = l({
1115
+ var Be = /* @__PURE__ */ H(je, [["render", ze]]), Ve = { class: "detail-wrapper-stub" }, He = l({
1116
1116
  components: {
1117
1117
  MobileCalendarGrid: Be,
1118
- CalendarHeaderItem: B,
1119
- CalendarSideItem: W,
1118
+ CalendarHeaderItem: X,
1119
+ CalendarSideItem: se,
1120
1120
  CalendarDayHolder: ye,
1121
1121
  CalendarPointer: Se,
1122
1122
  CalendarItemDisplay: Z,
@@ -1163,20 +1163,20 @@ var Be = /* @__PURE__ */ L(je, [["render", ze]]), Ve = { class: "detail-wrapper-
1163
1163
  "event-click"
1164
1164
  ],
1165
1165
  setup(e, { emit: t }) {
1166
- let r = n(() => e.loading), { width: i } = N(), a = n(() => i.value < 768), { getCalendarHeaders: o } = I(), s = D("scrollContainer"), c = n(() => o(e.range, e.mode)), l = n(() => c.value), u = n(() => e.mode === "monthly" ? l.value.slice(0, 7) : l.value), d = n(() => e.mode === "daily" || e.mode === "monthly" ? -1 : l.value.findIndex((e) => e.isToday)), f = n(() => {
1166
+ let { t: r } = F(), i = n(() => r("calendar.allDay") || "All day"), a = n(() => e.loading), { width: o } = N(), s = n(() => o.value < 768), { getCalendarHeaders: c } = I(), l = D("scrollContainer"), u = n(() => c(e.range, e.mode)), d = n(() => u.value), f = n(() => e.mode === "monthly" ? d.value.slice(0, 7) : d.value), m = n(() => e.mode === "daily" || e.mode === "monthly" ? -1 : d.value.findIndex((e) => e.isToday)), h = n(() => {
1167
1167
  let t = /* @__PURE__ */ new Map();
1168
1168
  return e.events.forEach((e) => {
1169
1169
  let n = new Date(e.date).toDateString();
1170
1170
  t.has(n) || t.set(n, []), t.get(n)?.push(e);
1171
1171
  }), t;
1172
- }), m = n(() => {
1173
- let t = /* @__PURE__ */ new Map(), n = c.value.filter((e) => !e.otherMonth), r = new Set(n.map((e) => new Date(e.date).toDateString()));
1172
+ }), g = n(() => {
1173
+ let t = /* @__PURE__ */ new Map(), n = u.value.filter((e) => !e.otherMonth), r = new Set(n.map((e) => new Date(e.date).toDateString()));
1174
1174
  return e.events.forEach((e) => {
1175
1175
  let n = new Date(e.date).toDateString();
1176
1176
  r.has(n) && (t.has(n) || t.set(n, []), t.get(n)?.push(e));
1177
1177
  }), t;
1178
1178
  });
1179
- function h(e) {
1179
+ function _(e) {
1180
1180
  if (!e.duration || e.duration <= 0) return [e];
1181
1181
  let t = e.time.split(":").map(Number), n = (t[0] ?? 0) + (t[1] ?? 0) / 60;
1182
1182
  if (n + e.duration / 60 <= 24) return [e];
@@ -1193,20 +1193,63 @@ var Be = /* @__PURE__ */ L(je, [["render", ze]]), Ve = { class: "detail-wrapper-
1193
1193
  }
1194
1194
  return r;
1195
1195
  }
1196
- let g = n(() => {
1196
+ function v(e) {
1197
+ if (e.isFullDay) return !0;
1198
+ if (!e.duration) return !1;
1199
+ let t = new Date(e.date), n = new Date(t.getTime() + e.duration * 6e4);
1200
+ return e.duration >= 1440 || t.getFullYear() !== n.getFullYear() || t.getMonth() !== n.getMonth() || t.getDate() !== n.getDate();
1201
+ }
1202
+ let y = n(() => {
1203
+ if (e.mode === "monthly" || !d.value.length) return {
1204
+ events: [],
1205
+ totalRows: 0
1206
+ };
1207
+ let t = d.value.map((e) => {
1208
+ let t = new Date(e.date);
1209
+ return new Date(t.getFullYear(), t.getMonth(), t.getDate()).getTime();
1210
+ }), n = t[0], r = t[t.length - 1], i = [];
1211
+ for (let a of e.events) {
1212
+ if (!v(a)) continue;
1213
+ let e = new Date(a.date), o = new Date(e.getFullYear(), e.getMonth(), e.getDate()).getTime(), s = new Date(e.getTime() + (a.duration ?? 0) * 6e4), c = new Date(s.getFullYear(), s.getMonth(), s.getDate()).getTime();
1214
+ if (s.getHours() === 0 && s.getMinutes() === 0 && s.getSeconds() === 0 && c > o && (c -= 864e5), c < o && (c = o), c < n || o > r) continue;
1215
+ let l = t.findIndex((e) => e === o);
1216
+ l === -1 && (l = o < n ? 0 : t.findIndex((e) => e >= o), l === -1 && (l = 0));
1217
+ let u = t.findIndex((e) => e === c);
1218
+ u === -1 && (u = c > r ? t.length - 1 : 0);
1219
+ let d = Math.max(0, Math.min(l, t.length - 1)), f = Math.max(d, Math.min(u, t.length - 1)), p = f - d + 1;
1220
+ i.push({
1221
+ event: a,
1222
+ startIndex: d,
1223
+ endIndex: f,
1224
+ span: p,
1225
+ row: 0,
1226
+ textColor: V(a.color || "var(--cal-primary)")
1227
+ });
1228
+ }
1229
+ i.sort((e, t) => e.startIndex - t.startIndex || t.span - e.span);
1230
+ let a = [];
1231
+ for (let e of i) {
1232
+ let t = a.findIndex((t) => t < e.startIndex);
1233
+ t === -1 ? (e.row = a.length, a.push(e.endIndex)) : (e.row = t, a[t] = e.endIndex);
1234
+ }
1235
+ return {
1236
+ events: i,
1237
+ totalRows: Math.max(1, a.length)
1238
+ };
1239
+ }), b = n(() => {
1197
1240
  if (e.mode === "monthly") return [];
1198
- let t = new Set(l.value.map((e) => new Date(e.date).toLocaleDateString("en-CA")));
1199
- return e.events.flatMap(h).filter((e) => {
1241
+ let t = new Set(d.value.map((e) => new Date(e.date).toLocaleDateString("en-CA")));
1242
+ return e.events.filter((e) => !v(e)).flatMap(_).filter((e) => {
1200
1243
  let n = new Date(e.date).toLocaleDateString("en-CA");
1201
1244
  return t.has(n);
1202
1245
  });
1203
- }), _ = n(() => {
1246
+ }), S = n(() => {
1204
1247
  let t = [], n = [], r = /* @__PURE__ */ new Map();
1205
- for (let e of l.value) r.set(new Date(e.date).toLocaleDateString("en-CA"), []);
1206
- for (let e of g.value) r.get(new Date(e.date).toLocaleDateString("en-CA"))?.push(e);
1248
+ for (let e of d.value) r.set(new Date(e.date).toLocaleDateString("en-CA"), []);
1249
+ for (let e of b.value) r.get(new Date(e.date).toLocaleDateString("en-CA"))?.push(e);
1207
1250
  for (let [i, a] of r.entries()) {
1208
1251
  if (!a.length) continue;
1209
- let r = l.value.findIndex((e) => new Date(e.date).toLocaleDateString("en-CA") === i), o = a.map((e) => {
1252
+ let r = d.value.findIndex((e) => new Date(e.date).toLocaleDateString("en-CA") === i), o = a.map((e) => {
1210
1253
  let t = e.time.split(":").map(Number), n = (t[0] ?? 0) + (t[1] ?? 0) / 60;
1211
1254
  return {
1212
1255
  event: e,
@@ -1262,10 +1305,10 @@ var Be = /* @__PURE__ */ L(je, [["render", ze]]), Ve = { class: "detail-wrapper-
1262
1305
  events: t,
1263
1306
  overflows: n
1264
1307
  };
1265
- }), v = n(() => _.value.events), y = n(() => _.value.overflows), b = n(() => {
1266
- if (e.mode === "monthly" || g.value.length === 0) return e.hours;
1308
+ }), C = n(() => S.value.events), w = n(() => S.value.overflows), T = n(() => {
1309
+ if (e.mode === "monthly" || b.value.length === 0) return e.hours;
1267
1310
  let t = e.hours.start, n = e.hours.end;
1268
- for (let e of g.value) {
1311
+ for (let e of b.value) {
1269
1312
  let r = e.time.split(":").map(Number), i = (r[0] ?? 0) + (r[1] ?? 0) / 60, a = e.duration ? i + e.duration / 60 : i;
1270
1313
  t = Math.min(t, Math.floor(i)), n = Math.max(n, Math.ceil(a));
1271
1314
  }
@@ -1273,52 +1316,54 @@ var Be = /* @__PURE__ */ L(je, [["render", ze]]), Ve = { class: "detail-wrapper-
1273
1316
  start: Math.max(0, t),
1274
1317
  end: Math.min(24, n)
1275
1318
  };
1276
- }), S = x(!1), C = (e) => {
1277
- S.value = e;
1278
- }, w = (e) => {
1319
+ }), E = x(!1), O = (e) => {
1320
+ E.value = e;
1321
+ }, A = (e) => {
1279
1322
  let n = new Date(e.date);
1280
1323
  t("update:range", {
1281
1324
  start: new Date(n.getFullYear(), n.getMonth(), n.getDate(), 0, 0, 0, 0),
1282
1325
  end: new Date(n.getFullYear(), n.getMonth(), n.getDate(), 23, 59, 59, 999)
1283
1326
  }), t("update:mode", "daily", n);
1284
- }, T = x(!0);
1285
- k([a, () => e.mode], () => {
1286
- T.value = a.value ? e.mode !== "monthly" : !0;
1327
+ }, j = x(!0);
1328
+ k([s, () => e.mode], () => {
1329
+ j.value = s.value ? e.mode !== "monthly" : !0;
1287
1330
  }, { immediate: !0 });
1288
- let E = n(() => {
1331
+ let M = n(() => {
1289
1332
  let e = [];
1290
- for (let t = b.value.start; t < b.value.end; t++) e.push({ raw: t });
1333
+ for (let t = T.value.start; t < T.value.end; t++) e.push({ raw: t });
1291
1334
  return e;
1292
1335
  });
1293
1336
  return k(() => e.events, async () => {
1294
- if (e.mode === "monthly" || !s.value) return;
1337
+ if (e.mode === "monthly" || !l.value) return;
1295
1338
  await p();
1296
- let t = s.value, n = g.value.map((e) => parseInt(e.time.split(":")[0], 10));
1339
+ let t = l.value, n = b.value.map((e) => parseInt(e.time.split(":")[0], 10));
1297
1340
  if (n.length === 0) return;
1298
1341
  n.sort((e, t) => e - t);
1299
- let r = ((n[Math.floor(n.length / 2)] ?? b.value.start) - b.value.start) * 80 - t.clientHeight / 2 + 80 / 2;
1342
+ let r = ((n[Math.floor(n.length / 2)] ?? T.value.start) - T.value.start) * 80 - t.clientHeight / 2 + 80 / 2;
1300
1343
  t.scrollTo({
1301
1344
  top: Math.max(0, r),
1302
1345
  behavior: "smooth"
1303
1346
  });
1304
1347
  }, { deep: !0 }), {
1305
- isLoading: r,
1306
- hoursList: E,
1307
- effectiveHours: b,
1308
- scrollContainer: s,
1309
- headers: l,
1310
- allHeaders: c,
1311
- isMobile: a,
1312
- displayedHeader: u,
1313
- todayColumnIndex: d,
1314
- monthlyEventsByDay: m,
1315
- eventsByDay: f,
1316
- gridEvents: v,
1317
- overflowIndicators: y,
1318
- scrollLocked: S,
1319
- showMonthly: T,
1320
- setLockScroll: C,
1321
- openSpecificDay: w
1348
+ isLoading: a,
1349
+ hoursList: M,
1350
+ effectiveHours: T,
1351
+ scrollContainer: l,
1352
+ headers: d,
1353
+ allHeaders: u,
1354
+ isMobile: s,
1355
+ displayedHeader: f,
1356
+ todayColumnIndex: m,
1357
+ monthlyEventsByDay: g,
1358
+ eventsByDay: h,
1359
+ gridEvents: C,
1360
+ overflowIndicators: w,
1361
+ scrollLocked: E,
1362
+ showMonthly: j,
1363
+ setLockScroll: O,
1364
+ openSpecificDay: A,
1365
+ allDayLabel: i,
1366
+ allDayEventsWithLayout: y
1322
1367
  };
1323
1368
  }
1324
1369
  }), Ue = ["dir"], We = {
@@ -1327,11 +1372,14 @@ var Be = /* @__PURE__ */ L(je, [["render", ze]]), Ve = { class: "detail-wrapper-
1327
1372
  }, Ge = {
1328
1373
  key: 0,
1329
1374
  class: "sticky top-0 z-30 bg-surface shrink-0"
1330
- }, Ke = { class: "flex-1 w-full flex min-h-0" }, qe = { class: "flex-1 relative" }, Je = { class: "absolute inset-0 w-full flex flex-col pointer-events-none" }, Ye = { class: "absolute inset-0 w-full flex pointer-events-none" }, Xe = { class: "relative min-h-full w-full" }, Ze = ["onClick"], Qe = {
1375
+ }, Ke = {
1376
+ key: 0,
1377
+ class: "w-full flex items-stretch border-b border-outline-variant bg-surface"
1378
+ }, qe = { class: "w-8 sm:w-9 md:w-25 min-w-8 sm:min-w-9 md:min-w-25 max-w-8 sm:max-w-9 md:max-w-25 shrink-0 flex items-center justify-center border-r rtl:border-l rtl:border-r-0 border-outline-variant text-[9px] sm:text-[10px] md:text-label-sm font-medium text-on-surface/60 select-none px-1 text-center truncate" }, Je = { class: "absolute inset-0 w-full flex pointer-events-none" }, Ye = ["onClick"], Xe = { class: "truncate" }, Ze = { class: "flex-1 w-full flex min-h-0" }, Qe = { class: "flex-1 relative" }, $e = { class: "absolute inset-0 w-full flex flex-col pointer-events-none" }, et = { class: "absolute inset-0 w-full flex pointer-events-none" }, tt = { class: "relative min-h-full w-full" }, nt = ["onClick"], rt = {
1331
1379
  key: 2,
1332
1380
  class: "w-full"
1333
1381
  };
1334
- function $e(n, l, u, d, p, h) {
1382
+ function it(n, l, u, d, p, h) {
1335
1383
  let _ = w("CalendarEventDetailWrapper"), v = w("CalendarHeaderItem"), b = w("CalendarSideItem"), x = w("CalendarPointer"), E = w("CalendarItemDisplay"), D = w("CalendarDayHolder"), O = w("MobileCalendarGrid");
1336
1384
  return y(), a("div", {
1337
1385
  class: "w-full h-full flex flex-col bg-surface whitespace-normal",
@@ -1345,14 +1393,39 @@ function $e(n, l, u, d, p, h) {
1345
1393
  "mode",
1346
1394
  "days",
1347
1395
  "today-column-index"
1348
- ])])) : i("", !0), o("div", Ke, [o("div", { class: m(["shrink-0 transition-all duration-300", [n.mode === "monthly" ? "w-0 opacity-0 overflow-hidden" : "w-8 sm:w-9 md:w-25 opacity-100 h-full"]]) }, [c(b, {
1396
+ ]), n.mode === "monthly" ? i("", !0) : (y(), a("div", Ke, [o("div", qe, T(n.allDayLabel), 1), o("div", {
1397
+ class: "flex-1 relative py-1 overflow-hidden",
1398
+ style: g({ minHeight: `${Math.max(1, n.allDayEventsWithLayout.totalRows) * 26 + 6}px` })
1399
+ }, [o("div", Je, [(y(!0), a(e, null, S(n.headers, (e, t) => (y(), a("div", {
1400
+ key: "allday-col-" + t,
1401
+ class: m(["h-full ltr:border-r rtl:border-l border-outline-variant flex-1 transition-colors", { "bg-today-column": t === n.todayColumnIndex }])
1402
+ }, null, 2))), 128))]), (y(!0), a(e, null, S(n.allDayEventsWithLayout.events, (e) => (y(), a("div", {
1403
+ key: "allday-" + e.event.id,
1404
+ class: "absolute z-10 px-0.5 sm:px-1 pointer-events-auto cursor-pointer",
1405
+ style: g({
1406
+ top: `${e.row * 26 + 3}px`,
1407
+ height: "22px",
1408
+ insetInlineStart: `${e.startIndex / n.headers.length * 100}%`,
1409
+ width: `${e.span / n.headers.length * 100}%`
1410
+ }),
1411
+ onClick: (t) => n.$emit("event-click", e.event, t)
1412
+ }, [o("div", {
1413
+ class: "w-full h-full rounded px-1.5 sm:px-2 flex items-center text-[10px] sm:text-xs font-medium truncate shadow-2xs transition-all hover:brightness-95 active:scale-[0.99]",
1414
+ style: g({
1415
+ backgroundColor: e.event.color || "var(--cal-primary)",
1416
+ color: e.textColor
1417
+ })
1418
+ }, [C(n.$slots, "event", {
1419
+ event: e.event,
1420
+ mode: n.mode
1421
+ }, () => [o("span", Xe, T(e.event.title), 1)], !0)], 4)], 12, Ye))), 128))], 4)]))])) : i("", !0), o("div", Ze, [o("div", { class: m(["shrink-0 transition-all duration-300", [n.mode === "monthly" ? "w-0 opacity-0 overflow-hidden" : "w-8 sm:w-9 md:w-25 opacity-100 h-full"]]) }, [c(b, {
1349
1422
  class: "w-8 sm:w-9 md:w-25 min-h-full",
1350
1423
  range: n.effectiveHours
1351
- }, null, 8, ["range"])], 2), o("div", qe, [c(t, {
1424
+ }, null, 8, ["range"])], 2), o("div", Qe, [c(t, {
1352
1425
  name: "calendar-view",
1353
1426
  mode: "out-in"
1354
1427
  }, {
1355
- default: A(() => [n.mode === "monthly" ? n.isMobile ? n.mode === "monthly" && n.isMobile ? (y(), a("div", Qe, [c(O, {
1428
+ default: A(() => [n.mode === "monthly" ? n.isMobile ? n.mode === "monthly" && n.isMobile ? (y(), a("div", rt, [c(O, {
1356
1429
  loading: n.isLoading,
1357
1430
  days: n.headers,
1358
1431
  mode: n.mode,
@@ -1405,15 +1478,15 @@ function $e(n, l, u, d, p, h) {
1405
1478
  "hours",
1406
1479
  "headers"
1407
1480
  ]),
1408
- o("div", Je, [(y(!0), a(e, null, S(n.effectiveHours.end - n.effectiveHours.start, (e) => (y(), a("div", {
1481
+ o("div", $e, [(y(!0), a(e, null, S(n.effectiveHours.end - n.effectiveHours.start, (e) => (y(), a("div", {
1409
1482
  key: e,
1410
1483
  class: "w-full border-b border-surface-variant box-border h-20"
1411
1484
  }))), 128))]),
1412
- o("div", Ye, [(y(!0), a(e, null, S(n.headers, (e, t) => (y(), a("div", {
1485
+ o("div", et, [(y(!0), a(e, null, S(n.headers, (e, t) => (y(), a("div", {
1413
1486
  class: m(["h-full ltr:border-r rtl:border-l border-outline-variant flex-1 transition-colors", { "bg-today-column": t === n.todayColumnIndex }]),
1414
1487
  key: "v" + t
1415
1488
  }, null, 2))), 128))]),
1416
- o("div", Xe, [(y(!0), a(e, null, S(n.gridEvents, (e) => (y(), r(E, {
1489
+ o("div", tt, [(y(!0), a(e, null, S(n.gridEvents, (e) => (y(), r(E, {
1417
1490
  key: e.event.id,
1418
1491
  event: e.event,
1419
1492
  mode: n.mode,
@@ -1446,27 +1519,27 @@ function $e(n, l, u, d, p, h) {
1446
1519
  }, [o("button", {
1447
1520
  class: "w-full text-[8px] sm:text-[10px] leading-none rounded bg-surface-variant hover:bg-surface-variant/80 text-on-surface/70 px-1 sm:px-2 py-0.5 sm:py-1 truncate transition-colors",
1448
1521
  onClick: (t) => n.openSpecificDay(n.headers[e.dayIndex])
1449
- }, " +" + T(e.count) + " more ", 9, Ze)], 4))), 128))])
1522
+ }, " +" + T(e.count) + " more ", 9, nt)], 4))), 128))])
1450
1523
  ], 4))]),
1451
1524
  _: 3
1452
1525
  })])])], 512)], 8, Ue);
1453
1526
  }
1454
- var et = /* @__PURE__ */ L(He, [["render", $e], ["__scopeId", "data-v-6e2c33b4"]]), tt = ["dir"], nt = {
1527
+ var at = /* @__PURE__ */ H(He, [["render", it], ["__scopeId", "data-v-796ab926"]]), ot = ["dir"], st = {
1455
1528
  ref: "scrollContainer",
1456
1529
  class: "flex-1 w-full overflow-y-auto cal-scrollbar px-2 sm:px-4 md:px-6 py-3 sm:py-5"
1457
- }, rt = { class: "max-w-4xl mx-auto flex flex-col gap-6" }, it = { class: "agenda-section-header sticky top-0 z-10 py-1.5 flex items-center gap-3 bg-surface/95 backdrop-blur-xs" }, at = { class: "rounded-full bg-surface-variant px-3 py-0.5 text-xs font-semibold text-on-surface/70 border border-outline-variant shadow-xs select-none" }, ot = { class: "flex flex-col gap-3" }, st = { class: "agenda-date-col shrink-0 flex flex-col items-start w-24 sm:w-32 md:w-36 pt-0.5 select-none" }, ct = { class: "sm:hidden" }, lt = { class: "hidden sm:inline" }, ut = { class: "mt-1 flex items-center gap-1.5 sm:gap-2" }, dt = { class: "flex flex-col text-[10px] sm:text-xs leading-none text-on-surface/50 gap-0.5" }, ft = {
1530
+ }, ct = { class: "max-w-4xl mx-auto flex flex-col gap-6" }, lt = { class: "agenda-section-header sticky top-0 z-10 py-1.5 flex items-center gap-3 bg-surface/95 backdrop-blur-xs" }, ut = { class: "rounded-full bg-surface-variant px-3 py-0.5 text-xs font-semibold text-on-surface/70 border border-outline-variant shadow-xs select-none" }, dt = { class: "flex flex-col gap-3" }, ft = { class: "agenda-date-col shrink-0 flex flex-col items-start w-24 sm:w-32 md:w-36 pt-0.5 select-none" }, pt = { class: "sm:hidden" }, Q = { class: "hidden sm:inline" }, mt = { class: "mt-1 flex items-center gap-1.5 sm:gap-2" }, ht = { class: "flex flex-col text-[10px] sm:text-xs leading-none text-on-surface/50 gap-0.5" }, gt = {
1458
1531
  key: 0,
1459
1532
  class: "opacity-70"
1460
- }, pt = {
1533
+ }, _t = {
1461
1534
  key: 0,
1462
1535
  class: "mt-1 text-[10px] font-medium text-error truncate max-w-full"
1463
- }, Q = { class: "agenda-events-col flex-1 min-w-0 flex flex-col gap-2" }, mt = ["onClick"], ht = { class: "min-w-0 flex-1 font-semibold text-xs sm:text-sm md:text-base leading-snug truncate" }, gt = {
1536
+ }, vt = { class: "agenda-events-col flex-1 min-w-0 flex flex-col gap-2" }, yt = ["onClick"], bt = { class: "min-w-0 flex-1 font-semibold text-xs sm:text-sm md:text-base leading-snug truncate" }, xt = {
1464
1537
  key: 0,
1465
1538
  class: "shrink-0 text-[11px] sm:text-xs md:text-sm font-medium opacity-90 flex items-center gap-1.5 whitespace-nowrap"
1466
- }, _t = {
1539
+ }, St = {
1467
1540
  key: 1,
1468
1541
  class: "agenda-no-events flex items-center text-xs text-on-surface/40 italic py-2 px-3 rounded-lg border border-dashed border-outline-variant select-none"
1469
- }, $ = /* @__PURE__ */ L(/* @__PURE__ */ l({
1542
+ }, $ = /* @__PURE__ */ H(/* @__PURE__ */ l({
1470
1543
  __name: "CalendarAgenda",
1471
1544
  props: {
1472
1545
  range: {},
@@ -1515,7 +1588,7 @@ var et = /* @__PURE__ */ L(He, [["render", $e], ["__scopeId", "data-v-6e2c33b4"]
1515
1588
  let t = e.color || "var(--cal-primary, #1a9d90)";
1516
1589
  return {
1517
1590
  backgroundColor: t,
1518
- color: X(t)
1591
+ color: V(t)
1519
1592
  };
1520
1593
  }
1521
1594
  let w = n(() => l(r.range, "agenda"));
@@ -1564,24 +1637,24 @@ var et = /* @__PURE__ */ L(He, [["render", $e], ["__scopeId", "data-v-6e2c33b4"]
1564
1637
  return (t, n) => (y(), a("div", {
1565
1638
  class: "calendar-agenda w-full h-full flex flex-col bg-surface overflow-hidden",
1566
1639
  dir: f.value
1567
- }, [o("div", nt, [o("div", rt, [(y(!0), a(e, null, S(A.value, (r) => (y(), a("div", {
1640
+ }, [o("div", st, [o("div", ct, [(y(!0), a(e, null, S(A.value, (r) => (y(), a("div", {
1568
1641
  key: r.id,
1569
1642
  class: "agenda-section flex flex-col gap-3"
1570
- }, [o("div", it, [
1643
+ }, [o("div", lt, [
1571
1644
  n[0] ||= o("div", { class: "h-px flex-1 bg-outline-variant" }, null, -1),
1572
- o("span", at, T(r.rangeLabel), 1),
1645
+ o("span", ut, T(r.rangeLabel), 1),
1573
1646
  n[1] ||= o("div", { class: "h-px flex-1 bg-outline-variant" }, null, -1)
1574
- ]), o("div", ot, [(y(!0), a(e, null, S(r.days, (r) => (y(), a("div", {
1647
+ ]), o("div", dt, [(y(!0), a(e, null, S(r.days, (r) => (y(), a("div", {
1575
1648
  key: r.day.name + r.day.date.getTime(),
1576
1649
  class: m(["agenda-day-row flex flex-row items-start gap-3 sm:gap-5 p-2.5 sm:p-3.5 rounded-xl border border-outline-variant/60 transition-colors", {
1577
1650
  "bg-today-column ring-1 ring-primary/30 border-primary/40": r.day.isToday,
1578
1651
  "bg-surface": !r.day.isToday
1579
1652
  }])
1580
- }, [o("div", st, [
1581
- o("span", { class: m(["text-xs sm:text-sm font-semibold truncate max-w-full", r.day.isToday ? "text-primary font-bold" : "text-on-surface/80"]) }, [o("span", ct, T(r.day.shortName || r.day.name), 1), o("span", lt, T(r.day.name), 1)], 2),
1582
- o("div", ut, [o("div", { class: m(["flex size-7 sm:size-8 items-center justify-center rounded-full text-xs sm:text-sm font-bold shadow-xs shrink-0", [r.day.isToday ? "bg-primary text-surface font-extrabold ring-2 ring-primary/30" : r.day.isWeekend || r.day.isHoliday ? "bg-surface-variant text-error border border-outline-variant" : "bg-surface-variant text-on-surface border border-outline-variant"]]) }, T(r.day.primary), 3), o("div", dt, [o("span", { class: m({ "text-error": r.day.isWeekend || r.day.isHoliday }) }, T(r.day.secondary), 3), r.day.tertiary ? (y(), a("span", ft, T(r.day.tertiary), 1)) : i("", !0)])]),
1583
- r.day.holidayTitle ? (y(), a("span", pt, T(r.day.holidayTitle), 1)) : i("", !0)
1584
- ]), o("div", Q, [r.events.length > 0 ? (y(!0), a(e, { key: 0 }, S(r.events, (e) => (y(), a("div", {
1653
+ }, [o("div", ft, [
1654
+ o("span", { class: m(["text-xs sm:text-sm font-semibold truncate max-w-full", r.day.isToday ? "text-primary font-bold" : "text-on-surface/80"]) }, [o("span", pt, T(r.day.shortName || r.day.name), 1), o("span", Q, T(r.day.name), 1)], 2),
1655
+ o("div", mt, [o("div", { class: m(["flex size-7 sm:size-8 items-center justify-center rounded-full text-xs sm:text-sm font-bold shadow-xs shrink-0", [r.day.isToday ? "bg-primary text-surface font-extrabold ring-2 ring-primary/30" : r.day.isWeekend || r.day.isHoliday ? "bg-surface-variant text-error border border-outline-variant" : "bg-surface-variant text-on-surface border border-outline-variant"]]) }, T(r.day.primary), 3), o("div", ht, [o("span", { class: m({ "text-error": r.day.isWeekend || r.day.isHoliday }) }, T(r.day.secondary), 3), r.day.tertiary ? (y(), a("span", gt, T(r.day.tertiary), 1)) : i("", !0)])]),
1656
+ r.day.holidayTitle ? (y(), a("span", _t, T(r.day.holidayTitle), 1)) : i("", !0)
1657
+ ]), o("div", vt, [r.events.length > 0 ? (y(!0), a(e, { key: 0 }, S(r.events, (e) => (y(), a("div", {
1585
1658
  key: e.id,
1586
1659
  class: "agenda-event-card group flex items-center justify-between gap-3 rounded-lg sm:rounded-xl p-2.5 sm:px-4 sm:py-3 border border-black/10 dark:border-white/20 shadow-xs cursor-pointer transition-all hover:scale-[1.006] hover:shadow-md active:scale-[0.995]",
1587
1660
  style: g(b(e)),
@@ -1589,7 +1662,7 @@ var et = /* @__PURE__ */ L(He, [["render", $e], ["__scopeId", "data-v-6e2c33b4"]
1589
1662
  }, [C(t.$slots, "event", {
1590
1663
  event: e,
1591
1664
  mode: "agenda"
1592
- }, () => [o("div", ht, T(e.title), 1), e.time || e.isFullDay ? (y(), a("div", gt, [n[2] ||= o("svg", {
1665
+ }, () => [o("div", bt, T(e.title), 1), e.time || e.isFullDay ? (y(), a("div", xt, [n[2] ||= o("svg", {
1593
1666
  class: "size-3 sm:size-3.5 opacity-80",
1594
1667
  viewBox: "0 0 24 24",
1595
1668
  fill: "none",
@@ -1599,16 +1672,16 @@ var et = /* @__PURE__ */ L(He, [["render", $e], ["__scopeId", "data-v-6e2c33b4"]
1599
1672
  cx: "12",
1600
1673
  cy: "12",
1601
1674
  r: "10"
1602
- }), o("polyline", { points: "12 6 12 12 16 14" })], -1), o("span", null, T(v(e)), 1)])) : i("", !0)], !0)], 12, mt))), 128)) : (y(), a("div", _t, T(E(c)("calendar.noEvents") || "No events"), 1))])], 2))), 128))])]))), 128))])], 512)], 8, tt));
1675
+ }), o("polyline", { points: "12 6 12 12 16 14" })], -1), o("span", null, T(v(e)), 1)])) : i("", !0)], !0)], 12, yt))), 128)) : (y(), a("div", St, T(E(c)("calendar.noEvents") || "No events"), 1))])], 2))), 128))])]))), 128))])], 512)], 8, ot));
1603
1676
  }
1604
- }), [["__scopeId", "data-v-71fb8cbf"]]), vt = {
1677
+ }), [["__scopeId", "data-v-71fb8cbf"]]), Ct = {
1605
1678
  key: 0,
1606
1679
  class: "w-full h-full flex flex-col font-sans",
1607
1680
  style: {
1608
1681
  color: "var(--cal-on-surface)",
1609
1682
  background: "var(--cal-surface)"
1610
1683
  }
1611
- }, yt = { class: "w-full flex-1 overflow-hidden relative" }, bt = /* @__PURE__ */ l({
1684
+ }, wt = { class: "w-full flex-1 overflow-hidden relative" }, Tt = /* @__PURE__ */ l({
1612
1685
  __name: "VueCalendar",
1613
1686
  props: {
1614
1687
  events: { default: () => [] },
@@ -1685,13 +1758,13 @@ var et = /* @__PURE__ */ L(He, [["render", $e], ["__scopeId", "data-v-6e2c33b4"]
1685
1758
  setMode: M,
1686
1759
  currentRange: E,
1687
1760
  handleModeUpdate: j
1688
- }), (t, n) => f.value ? (y(), a("div", vt, [C(t.$slots, "header", {
1761
+ }), (t, n) => f.value ? (y(), a("div", Ct, [C(t.$slots, "header", {
1689
1762
  mode: e.mode,
1690
1763
  range: E.value,
1691
1764
  next: D,
1692
1765
  prev: O,
1693
1766
  setMode: M
1694
- }), o("div", yt, [e.mode === "agenda" ? (y(), r($, {
1767
+ }), o("div", wt, [e.mode === "agenda" ? (y(), r($, {
1695
1768
  key: 0,
1696
1769
  range: E.value,
1697
1770
  events: e.events,
@@ -1700,7 +1773,7 @@ var et = /* @__PURE__ */ L(He, [["render", $e], ["__scopeId", "data-v-6e2c33b4"]
1700
1773
  name: "event",
1701
1774
  fn: A((e) => [C(t.$slots, "event", h(u(e)))]),
1702
1775
  key: "0"
1703
- } : void 0]), 1032, ["range", "events"])) : (y(), r(et, {
1776
+ } : void 0]), 1032, ["range", "events"])) : (y(), r(at, {
1704
1777
  key: 1,
1705
1778
  range: E.value,
1706
1779
  mode: e.mode,
@@ -1726,4 +1799,4 @@ var et = /* @__PURE__ */ L(He, [["render", $e], ["__scopeId", "data-v-6e2c33b4"]
1726
1799
  }
1727
1800
  });
1728
1801
  //#endregion
1729
- export { $ as CalendarAgenda, bt as VueCalendar, X as getAccessibleTextColor, fe as getContrastRatio, Y as getRelativeLuminance, J as parseColorToRgb };
1802
+ export { $ as CalendarAgenda, Tt as VueCalendar, V as getAccessibleTextColor, ee as getContrastRatio, B as getRelativeLuminance, R as parseColorToRgb };
package/dist/style.css CHANGED
@@ -1,2 +1,2 @@
1
- :root{--color-surface:#fff;--color-surface-variant:#f8f8fa;--color-on-surface:#2c2c2e;--color-primary:#1a9d90;--color-error:#e52b16;--color-outline:#d1d0d2;--color-outline-variant:#f0f0f0;--cal-surface:#fff;--cal-surface-variant:#f8f8fa;--cal-on-surface:#2c2c2e;--cal-primary:#1a9d90;--cal-error:#e52b16;--cal-outline:#d1d0d2;--cal-outline-variant:#f0f0f0;--text-label-md:14px;--text-label-md--line-height:28px;--text-label-md--font-weight:500;--text-label-sm:12px;--text-label-sm--line-height:24px;--text-label-sm--font-weight:500;--text-body-sm:12px;--text-body-sm--line-height:24px;--text-body-sm--font-weight:400;--text-title-sm:14px;--text-title-sm--line-height:28px;--text-title-sm--font-weight:700;--cal-today-bg-light:radial-gradient(circle at 70% 0%, #10121b, #393e4d);--cal-today-bg-dark:radial-gradient(circle at 70% 0%, #d1d0d2, #9b9a9d);--cal-today-bg:var(--cal-today-bg-light);--cal-today-column-bg-light:#1a9d900d;--cal-today-column-bg-dark:#40b8ac14;--cal-today-column-bg:var(--cal-today-column-bg-light)}.dark{--color-surface:#151823;--color-surface-variant:#242836;--color-on-surface:#fff;--color-primary:#40b8ac;--color-error:#ea5545;--color-outline:#605f63;--color-outline-variant:#3a393c;--cal-surface:#151823;--cal-surface-variant:#242836;--cal-on-surface:#fff;--cal-primary:#40b8ac;--cal-error:#ea5545;--cal-outline:#605f63;--cal-outline-variant:#3a393c;--cal-today-bg:var(--cal-today-bg-dark);--cal-today-column-bg:var(--cal-today-column-bg-dark)}.bg-today{background-image:var(--cal-today-bg)}.bg-today-column{background-color:var(--cal-today-column-bg)}.cal-scrollbar{scrollbar-width:thin;scrollbar-color:var(--color-primary) var(--color-surface-variant)}.cal-scrollbar::-webkit-scrollbar{width:2px;height:2px}.cal-scrollbar::-webkit-scrollbar-track{background:var(--color-surface-variant)}.cal-scrollbar::-webkit-scrollbar-thumb{background:var(--color-primary);border-radius:10px}.english-num[data-v-ef2978fb]{font-family:"IranYekan" sans-serif!important}.hw-accel-height[data-v-d90e616f]{will-change:height}.hw-accel[data-v-d90e616f]{will-change:transform, opacity}.calendar-view-enter-active[data-v-6e2c33b4],.calendar-view-leave-active[data-v-6e2c33b4]{width:100%;transition:all .2s ease-out;top:0;left:0;position:absolute!important}.calendar-view-enter-from[data-v-6e2c33b4]{opacity:0;transform:scale(1.02)}.calendar-view-leave-to[data-v-6e2c33b4]{opacity:0;transform:scale(.98)}.fade-overlay-enter-active[data-v-6e2c33b4],.fade-overlay-leave-active[data-v-6e2c33b4]{transition:opacity .2s ease-out}.fade-overlay-enter-from[data-v-6e2c33b4],.fade-overlay-leave-to[data-v-6e2c33b4]{opacity:0}.calendar-agenda[data-v-71fb8cbf]{font-family:inherit}.agenda-day-row[data-v-71fb8cbf]{transition:all .15s ease-in-out}.agenda-event-card[data-v-71fb8cbf]{-webkit-user-select:none;user-select:none;border:1px solid #0000001a}.dark{border-color:#fff3}
1
+ :root{--color-surface:#fff;--color-surface-variant:#f8f8fa;--color-on-surface:#2c2c2e;--color-primary:#1a9d90;--color-error:#e52b16;--color-outline:#d1d0d2;--color-outline-variant:#f0f0f0;--cal-surface:#fff;--cal-surface-variant:#f8f8fa;--cal-on-surface:#2c2c2e;--cal-primary:#1a9d90;--cal-error:#e52b16;--cal-outline:#d1d0d2;--cal-outline-variant:#f0f0f0;--text-label-md:14px;--text-label-md--line-height:28px;--text-label-md--font-weight:500;--text-label-sm:12px;--text-label-sm--line-height:24px;--text-label-sm--font-weight:500;--text-body-sm:12px;--text-body-sm--line-height:24px;--text-body-sm--font-weight:400;--text-title-sm:14px;--text-title-sm--line-height:28px;--text-title-sm--font-weight:700;--cal-today-bg-light:radial-gradient(circle at 70% 0%, #10121b, #393e4d);--cal-today-bg-dark:radial-gradient(circle at 70% 0%, #d1d0d2, #9b9a9d);--cal-today-bg:var(--cal-today-bg-light);--cal-today-column-bg-light:#1a9d900d;--cal-today-column-bg-dark:#40b8ac14;--cal-today-column-bg:var(--cal-today-column-bg-light)}.dark{--color-surface:#151823;--color-surface-variant:#242836;--color-on-surface:#fff;--color-primary:#40b8ac;--color-error:#ea5545;--color-outline:#605f63;--color-outline-variant:#3a393c;--cal-surface:#151823;--cal-surface-variant:#242836;--cal-on-surface:#fff;--cal-primary:#40b8ac;--cal-error:#ea5545;--cal-outline:#605f63;--cal-outline-variant:#3a393c;--cal-today-bg:var(--cal-today-bg-dark);--cal-today-column-bg:var(--cal-today-column-bg-dark)}.bg-today{background-image:var(--cal-today-bg)}.bg-today-column{background-color:var(--cal-today-column-bg)}.cal-scrollbar{scrollbar-width:thin;scrollbar-color:var(--color-primary) var(--color-surface-variant)}.cal-scrollbar::-webkit-scrollbar{width:2px;height:2px}.cal-scrollbar::-webkit-scrollbar-track{background:var(--color-surface-variant)}.cal-scrollbar::-webkit-scrollbar-thumb{background:var(--color-primary);border-radius:10px}.english-num[data-v-ef2978fb]{font-family:"IranYekan" sans-serif!important}.hw-accel-height[data-v-d90e616f]{will-change:height}.hw-accel[data-v-d90e616f]{will-change:transform, opacity}.calendar-view-enter-active[data-v-796ab926],.calendar-view-leave-active[data-v-796ab926]{width:100%;transition:all .2s ease-out;top:0;left:0;position:absolute!important}.calendar-view-enter-from[data-v-796ab926]{opacity:0;transform:scale(1.02)}.calendar-view-leave-to[data-v-796ab926]{opacity:0;transform:scale(.98)}.fade-overlay-enter-active[data-v-796ab926],.fade-overlay-leave-active[data-v-796ab926]{transition:opacity .2s ease-out}.fade-overlay-enter-from[data-v-796ab926],.fade-overlay-leave-to[data-v-796ab926]{opacity:0}.calendar-agenda[data-v-71fb8cbf]{font-family:inherit}.agenda-day-row[data-v-71fb8cbf]{transition:all .15s ease-in-out}.agenda-event-card[data-v-71fb8cbf]{-webkit-user-select:none;user-select:none;border:1px solid #0000001a}.dark{border-color:#fff3}
2
2
  /*$vite$:1*/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "behnoo-calendar",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Multi-calendar Vue 3 component — Gregorian, Jalaali (Persian), and Islamic calendar systems",
5
5
  "keywords": [
6
6
  "vue",