ape-calendar 0.2.0 → 0.5.0

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/README.md CHANGED
@@ -38,6 +38,187 @@ const { state, actions } = useCalendarState()
38
38
  />
39
39
  ```
40
40
 
41
+ ## Toolbar & view controller
42
+
43
+ The calendar stays fully controlled (the consumer owns `activeView` / `selectedDate`). `useCalendarController` encapsulates the standard navigation behavior so every portal behaves the same — spread its handlers onto `CalendarToolbar` and `MacroCalendar`:
44
+
45
+ - **Hoy** → today in **day** view (re-pressing it falls back to **week**).
46
+ - Picking a day from **month** or **list** → that day's **week**.
47
+ - prev/next step by the current view; `periodLabel` is localized for you.
48
+
49
+ ```tsx
50
+ import {
51
+ CalendarToolbar,
52
+ MacroCalendar,
53
+ StatusFilterSelect,
54
+ EventTypeChip,
55
+ Select,
56
+ useCalendarController,
57
+ } from 'ape-calendar'
58
+
59
+ const cal = useCalendarController({ initialView: 'week', firstDay: 1, locale: 'es-CO' })
60
+
61
+ <CalendarToolbar
62
+ activeView={cal.activeView}
63
+ onChangeView={cal.onChangeView}
64
+ onNavigate={cal.onNavigate}
65
+ todayActive={cal.todayActive}
66
+ periodLabel={cal.periodLabel}
67
+ views={['month', 'week', 'list']} // month ▦ · calendar(day/week) ▤ · list ☰
68
+ filtersSlot={
69
+ <>
70
+ <StatusFilterSelect placeholder="Estado del evento" options={statusOptions} selected={selectedStatuses} onToggle={toggleStatus} />
71
+ {selectedTypes.map(t => <EventTypeChip key={t} label={labels[t]} onRemove={() => clearType(t)} />)}
72
+ <Select placeholder="Regional" options={regionalOptions} value={regional} onChange={setRegional} />
73
+ </>
74
+ }
75
+ />
76
+
77
+ <MacroCalendar
78
+ events={events}
79
+ activeView={cal.activeView}
80
+ selectedDate={cal.selectedDate}
81
+ onDateSelected={cal.onSelectDate}
82
+ onSwitchToDay={cal.onSelectDate}
83
+ onVisibleRangeChange={cal.onVisibleRangeChange}
84
+ /* …event callbacks (onEditEvent, onDeleteEvent, onEventTimeChange) */
85
+ />
86
+ ```
87
+
88
+ The `day` view has no dedicated switcher button — it is reached via **Hoy**. The filters (status, type chips, regional) are composed by the consumer into `filtersSlot`; the library provides the building blocks (`Select`, `StatusFilterSelect`, `EventTypeChip`) but never owns the filtering.
89
+
90
+ ## Theming (CSS variables)
91
+
92
+ All colors and a few layout tokens are driven by `--cal-*` CSS variables declared on
93
+ `:root`. Override them on any parent scope (e.g. `.my-app`, `:root`, or the element you
94
+ wrap the calendar in) to retheme — no Tailwind config or build step required.
95
+
96
+ ### Status — base colors
97
+
98
+ | Variable | Default |
99
+ | ------------------------- | --------- |
100
+ | `--cal-status-default` | `#cbd5e1` |
101
+ | `--cal-status-draft` | `#D4D4D4` |
102
+ | `--cal-status-published` | `#39A900` |
103
+ | `--cal-status-scheduled` | `#005DCA` |
104
+ | `--cal-status-archived` | `#D4D4D4` |
105
+ | `--cal-status-cancelled` | `#8C1712` |
106
+ | `--cal-status-finalizado` | `#9747FC` |
107
+ | `--cal-status-selected` | `#005DCA` |
108
+
109
+ ### Status — chip / block surfaces + text
110
+
111
+ Each status exposes `bg`, `bg-hover`, and `text` (e.g. `--cal-status-draft-bg`).
112
+
113
+ | Status | `-bg` | `-bg-hover` | `-text` |
114
+ | ------------ | --------- | ----------- | --------- |
115
+ | `draft` | `#fafafa` | `#f4f4f5` | `#52525b` |
116
+ | `published` | `#ecfdf3` | `#d1fadf` | `#1d6b00` |
117
+ | `scheduled` | `#e8f1fd` | `#cfe0fb` | `#003a82` |
118
+ | `archived` | `#fafafa` | `#f4f4f5` | `#52525b` |
119
+ | `cancelled` | `#fdecec` | `#fbd2d2` | `#5c0f0c` |
120
+ | `finalizado` | `#f4ebff` | `#e6d3ff` | `#4b1a8a` |
121
+
122
+ ### Surfaces, text & UI
123
+
124
+ | Variable | Default |
125
+ | ---------------------- | -------------------- |
126
+ | `--cal-surface` | `#ffffff` |
127
+ | `--cal-surface-subtle` | `#f8fafc` |
128
+ | `--cal-mini-surface` | `#f1f5f9` |
129
+ | `--cal-macro-surface` | `var(--cal-surface)` |
130
+ | `--cal-border` | `#e2e8f0` |
131
+ | `--cal-text` | `#0f172a` |
132
+ | `--cal-text-muted` | `#64748b` |
133
+ | `--cal-text-faint` | `#94a3b8` |
134
+ | `--cal-primary` | `#1d4ed8` |
135
+ | `--cal-primary-hover` | `#1e40af` |
136
+ | `--cal-danger` | `#dc2626` |
137
+ | `--cal-danger-bg` | `#fef2f2` |
138
+ | `--cal-focus-ring` | `#93c5fd` |
139
+
140
+ ### FullCalendar bridge tokens
141
+
142
+ Scoped under `.cal-macro-root .fc` so they never leak to other FullCalendar instances.
143
+
144
+ | Variable | Default |
145
+ | -------------------------- | --------- |
146
+ | `--cal-fc-border` | `#e6effa` |
147
+ | `--cal-fc-slot-height` | `52px` |
148
+ | `--cal-fc-text` | `#334155` |
149
+ | `--cal-fc-font-size` | `0.75rem` |
150
+ | `--cal-fc-small-font-size` | `0.7rem` |
151
+
152
+ ## Optional capabilities
153
+
154
+ The library is **flexible like FullCalendar** — every visual capability is opt-in via a prop or slot. Omit it and nothing extra renders or costs.
155
+
156
+ ### Availability band (`availability`)
157
+
158
+ `MacroCalendar` accepts an optional `availability: AvailabilitySchedule` (`{ daysOfWeek: number[]; startTime: 'HH:mm'; endTime: 'HH:mm' }[]`). When provided, it paints a subtle colored "horario de atención" band in the time-grid views (week/day), via recurring background events. When omitted, no band renders. Theme it through `--cal-availability-bg`.
159
+
160
+ ```tsx
161
+ const availability = [
162
+ { daysOfWeek: [1, 2, 3, 4, 5], startTime: '08:00', endTime: '17:00' },
163
+ ]
164
+
165
+ <MacroCalendar availability={availability} ... />
166
+ ```
167
+
168
+ The configuration UI for this schedule lives in `ape-calendar-form` as `AvailabilityScheduleDialog` — also opt-in.
169
+
170
+ ### Agenda day header slot (`renderAgendaDayHeader`)
171
+
172
+ The list view (`activeView === 'list'`, rendered by `EventAgendaList`) exposes a per-day header slot. Use it to surface availability pills ("Horario de atención" / "No tenemos atención") or any other per-day annotation. The library does **not** derive this from `availability` — your portal decides what to show.
173
+
174
+ ```tsx
175
+ <MacroCalendar
176
+ availability={availability}
177
+ renderAgendaDayHeader={(date, { hasEvents }) => {
178
+ const slot = availability.find(s => s.daysOfWeek.includes(date.getDay()))
179
+ return slot
180
+ ? <span>Horario de atención · {slot.startTime}–{slot.endTime}</span>
181
+ : <span>No tenemos atención</span>
182
+ }}
183
+ ...
184
+ />
185
+ ```
186
+
187
+ `EventAgendaList` is also exported standalone for portals that want to compose the agenda in a custom layout.
188
+
189
+ ### Drag granularity (`slotDuration` / `snapDuration`)
190
+
191
+ Both props are optional, default `'00:30:00'` and `'00:15:00'`. Override per portal needs (e.g. `snapDuration="00:05:00"` for tighter resize, or `'01:00:00'` for hour-only steps).
192
+
193
+ ## Messages
194
+
195
+ User-facing strings are passed via the `messages` prop. Some fields are plain strings,
196
+ others are callbacks — the table below documents the exact shape per component.
197
+
198
+ ### `MacroCalendar` — `MacroCalendarMessages`
199
+
200
+ | Field | Type | Default |
201
+ | ----------------- | -------------------------------------------------------------------------------- | --------------- |
202
+ | `moreLink` | `string \| ((count: number) => string)` — the string form interpolates `{count}` | `+{count} more` |
203
+ | `allDayText` | `string` | `'All day'` |
204
+ | `todayHeaderAria` | `string` | `'Today'` |
205
+
206
+ ```tsx
207
+ // both are valid:
208
+ <MacroCalendar messages={{ moreLink: '+{count} más' }} />
209
+ <MacroCalendar messages={{ moreLink: count => `+${count} más` }} />
210
+ ```
211
+
212
+ ### `MoreEventsPopover` — `MoreEventsPopoverMessages`
213
+
214
+ All fields are callbacks.
215
+
216
+ | Field | Type |
217
+ | ------------ | --------------------------- |
218
+ | `header` | `(count: number) => string` |
219
+ | `editAria` | `(title: string) => string` |
220
+ | `deleteAria` | `(title: string) => string` |
221
+
41
222
  ## Companion package
42
223
 
43
224
  For event creation/edit forms, install [`ape-calendar-form`](https://www.npmjs.com/package/ape-calendar-form).
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var Ce=Object.create;var tt=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var Pe=Object.getOwnPropertyNames;var be=Object.getPrototypeOf,De=Object.prototype.hasOwnProperty;var xe=(t,e)=>{for(var a in e)tt(t,a,{get:e[a],enumerable:!0})},St=(t,e,a,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Pe(e))!De.call(t,r)&&r!==a&&tt(t,r,{get:()=>e[r],enumerable:!(n=Se(e,r))||n.enumerable});return t};var h=(t,e,a)=>(a=t!=null?Ce(be(t)):{},St(e||!t||!t.__esModule?tt(a,"default",{value:t,enumerable:!0}):a,t)),_e=t=>St(tt({},"__esModule",{value:!0}),t);var $e={};xe($e,{APE_CALENDAR_ROOT_CLASS:()=>N,Button:()=>z,CalendarToolbar:()=>te,DayEventDot:()=>pt,EmptyEventsState:()=>se,EventBlockContent:()=>nt,EventChipMonth:()=>it,EventChipPopover:()=>st,EventStatusBadge:()=>G,EventTypeChip:()=>ae,MacroCalendar:()=>Ut,MiniMonthCalendar:()=>Xt,MoreEventsPopover:()=>lt,Popover:()=>w,PopoverAnchor:()=>K,PopoverClose:()=>wt,PopoverContent:()=>T,PopoverPortal:()=>Lt,PopoverTrigger:()=>rt,SlotContextActions:()=>ee,formatDurationLabel:()=>xt,formatHourLabel:()=>P,getEventDayKeys:()=>bt,getEventDayStatuses:()=>Dt,isSameDay:()=>Pt,mapEventToCalendarInput:()=>et,toDayKey:()=>A});module.exports=_e($e);var f=require("react"),Ot=h(require("@fullcalendar/react"),1),It=h(require("@fullcalendar/daygrid"),1),Ft=h(require("@fullcalendar/timegrid"),1),zt=h(require("@fullcalendar/interaction"),1),Ht=h(require("@fullcalendar/core/locales/es"),1),$t=require("motion/react"),Vt=require("lucide-react"),Gt=h(require("clsx"),1);var A=t=>{let e=t.getFullYear(),a=`${t.getMonth()+1}`.padStart(2,"0"),n=`${t.getDate()}`.padStart(2,"0");return`${e}-${a}-${n}`},Pt=(t,e)=>A(t)===A(e),bt=t=>new Set(t.map(e=>A(e.startDate))),Dt=t=>t.reduce((e,a)=>{if(!a.status)return e;let n=A(a.startDate),r=e.get(n)??[];return r.includes(a.status)||e.set(n,[...r,a.status]),e},new Map),et=t=>({id:t.id,title:t.title,start:t.startAt,end:t.endAt,allDay:t.isAllDay??!1,extendedProps:{status:t.status,location:t.location,description:t.description,durationMinutes:t.durationMinutes}}),P=(t,e="es-CO",a={hour:"2-digit",minute:"2-digit",hour12:!1})=>t.toLocaleTimeString(e,a),xt=(t,e={})=>{let a=e.min??"min",n=e.h??"h";if(t<60)return`${t} ${a}`;let r=Math.floor(t/60),s=t%60;return s===0?`${r} ${n}`:`${r} ${n} ${s} ${a}`};var N="ape-calendar";var L=require("react");var Nt=require("react/jsx-runtime"),_t=(0,L.createContext)(null),Mt=()=>(0,L.useContext)(_t);function ot({children:t}){let[e,a]=(0,L.useState)(null);return(0,L.useEffect)(()=>{if(typeof document>"u")return;let n=document.createElement("div");return n.className=N,n.dataset.apeCalendarPortalRoot="true",document.body.appendChild(n),a(n),()=>{n.parentNode&&n.parentNode.removeChild(n)}},[]),(0,Nt.jsx)(_t.Provider,{value:e,children:t})}var U=require("lucide-react");var at=require("lucide-react"),At=h(require("clsx"),1),I=require("react/jsx-runtime"),Me={draft:(0,I.jsx)("span",{className:"cal-status-badge__dot","data-status":"draft"}),published:(0,I.jsx)(at.Rocket,{size:11,"aria-hidden":!0}),scheduled:(0,I.jsx)(at.CalendarClock,{size:11,"aria-hidden":!0}),archived:(0,I.jsx)("span",{className:"cal-status-badge__dot","data-status":"archived"})},Ne=t=>t.charAt(0).toUpperCase()+t.slice(1),G=({status:t,labels:e,icons:a,className:n})=>{let r=e?.[t]??Ne(t),s=a?.[t]??Me[t];return(0,I.jsxs)("span",{className:(0,At.default)("cal-status-badge",n),"data-status":t,children:[s,r]})};var C=require("react/jsx-runtime"),Ae={edit:t=>`Edit event ${t}`,delete:t=>`Delete event ${t}`},nt=({event:t,onEdit:e,onDelete:a,locale:n="es-CO",statusLabels:r,messages:s})=>{let i={...Ae,...s},g=t.status??"";return(0,C.jsxs)("article",{className:"cal-event-block","data-status":g,children:[(0,C.jsx)("div",{className:"cal-event-block__header",children:t.status&&(0,C.jsx)(G,{status:t.status,labels:r})}),(0,C.jsx)("p",{className:"cal-event-block__title",children:t.title}),(0,C.jsxs)("p",{className:"cal-event-block__time",children:[(0,C.jsx)(U.Clock,{size:10,"aria-hidden":!0}),(0,C.jsxs)("span",{children:[P(t.startDate,n)," -"," ",P(t.endDate,n)]})]}),(0,C.jsxs)("div",{className:"cal-event-block__actions",children:[(0,C.jsx)("button",{type:"button","aria-label":i.edit(t.title),onClick:c=>{c.stopPropagation(),e(t)},className:"cal-event-block__action-button",children:(0,C.jsx)(U.SquarePen,{size:11})}),(0,C.jsx)("button",{type:"button","aria-label":i.delete(t.title),onClick:c=>{c.stopPropagation(),a(t)},className:"cal-event-block__action-button cal-event-block__action-button--danger",children:(0,C.jsx)(U.Trash2,{size:11})})]})]})};var R=require("lucide-react");var b=h(require("@radix-ui/react-popover"),1),Tt=require("react"),kt=h(require("clsx"),1);var ft=require("react/jsx-runtime"),w=b.Root,rt=b.Trigger,K=b.Anchor,Lt=b.Portal,wt=b.Close,T=(0,Tt.forwardRef)(({className:t,align:e="center",sideOffset:a=4,...n},r)=>{let s=Mt();return(0,ft.jsx)(b.Portal,{container:s??void 0,children:(0,ft.jsx)(b.Content,{ref:r,align:e,sideOffset:a,className:(0,kt.default)("cal-popover-content",t),...n})})});T.displayName="PopoverContent";var p=require("react/jsx-runtime"),Te={weekday:"long",day:"2-digit",month:"long"},ke={edit:"Edit",delete:"Delete",editAria:t=>`Edit event ${t}`,deleteAria:t=>`Delete event ${t}`},st=({event:t,onEdit:e,onDelete:a,children:n,locale:r="es-CO",statusLabels:s,renderEventMeta:i,messages:g,dayHeaderOptions:c})=>{let E={...ke,...g},M=new Intl.DateTimeFormat(r,c??Te).format(t.startDate),O=`${P(t.startDate,r)} \u2013 ${P(t.endDate,r)}`;return(0,p.jsxs)(w,{children:[(0,p.jsx)(rt,{asChild:!0,children:n}),(0,p.jsxs)(T,{align:"start",sideOffset:6,collisionPadding:12,className:"cal-chip-popover",onClick:d=>d.stopPropagation(),children:[(0,p.jsxs)("header",{className:"cal-chip-popover__header",children:[(0,p.jsxs)("div",{className:"cal-chip-popover__header-info",children:[(0,p.jsx)("p",{className:"cal-chip-popover__day",children:M}),(0,p.jsx)("h3",{className:"cal-chip-popover__title",children:t.title})]}),t.status&&(0,p.jsx)(G,{status:t.status,labels:s})]}),(0,p.jsxs)("dl",{className:"cal-chip-popover__meta",children:[(0,p.jsxs)("div",{className:"cal-chip-popover__meta-row",children:[(0,p.jsx)(R.Clock,{size:12,"aria-hidden":!0}),(0,p.jsx)("span",{children:O})]}),i&&(0,p.jsx)("div",{className:"cal-chip-popover__meta-row cal-chip-popover__meta-row--wrap",children:i(t)}),t.location&&(0,p.jsxs)("div",{className:"cal-chip-popover__meta-row cal-chip-popover__meta-row--start",children:[(0,p.jsx)(R.MapPin,{size:12,"aria-hidden":!0}),(0,p.jsx)("span",{className:"cal-chip-popover__clamp-2",children:t.location})]})]}),t.description&&(0,p.jsx)("p",{className:"cal-chip-popover__description",children:t.description}),(0,p.jsxs)("footer",{className:"cal-chip-popover__footer",children:[(0,p.jsxs)("button",{type:"button","aria-label":E.editAria(t.title),onClick:d=>{d.stopPropagation(),e(t)},className:"cal-chip-popover__action",children:[(0,p.jsx)(R.SquarePen,{size:12}),E.edit]}),(0,p.jsxs)("button",{type:"button","aria-label":E.deleteAria(t.title),onClick:d=>{d.stopPropagation(),a(t)},className:"cal-chip-popover__action cal-chip-popover__action--danger",children:[(0,p.jsx)(R.Trash2,{size:12}),E.delete]})]})]})]})};var F=require("react/jsx-runtime"),it=({event:t,onEdit:e,onDelete:a,locale:n="es-CO",statusLabels:r,renderEventMeta:s,messages:i,triggerAria:g=c=>`Show event details ${c}`})=>{let c=P(t.startDate,n),E=t.status??"";return(0,F.jsx)(st,{event:t,onEdit:e,onDelete:a,locale:n,statusLabels:r,renderEventMeta:s,messages:i,children:(0,F.jsxs)("button",{type:"button","aria-label":g(t.title),onClick:D=>D.stopPropagation(),className:"cal-chip-month","data-status":E,children:[(0,F.jsx)("span",{className:"cal-chip-month__dot","aria-hidden":!0}),(0,F.jsx)("span",{className:"cal-chip-month__time",children:c}),(0,F.jsx)("span",{className:"cal-chip-month__title",children:t.title})]})})};var Rt=require("react"),q=require("lucide-react");var v=require("react/jsx-runtime"),Le={weekday:"long",day:"2-digit",month:"long"},we={header:t=>`${t} events in this slot`,editAria:t=>`Edit event ${t}`,deleteAria:t=>`Delete event ${t}`},Re=({events:t,anchor:e,open:a,onOpenChange:n,onEdit:r,onDelete:s,locale:i="es-CO",messages:g,dayHeaderOptions:c})=>{let E=(0,Rt.useMemo)(()=>({current:e}),[e]),D={...we,...g},O=new Intl.DateTimeFormat(i,c??Le).format(t[0].startDate);return(0,v.jsxs)(w,{open:a,onOpenChange:n,children:[(0,v.jsx)(K,{virtualRef:E}),(0,v.jsxs)(T,{align:"start",sideOffset:6,collisionPadding:12,className:"cal-more-popover",onClick:d=>d.stopPropagation(),children:[(0,v.jsxs)("header",{className:"cal-more-popover__header",children:[(0,v.jsx)("p",{className:"cal-more-popover__day",children:O}),(0,v.jsx)("h3",{className:"cal-more-popover__title",children:D.header(t.length)})]}),(0,v.jsx)("ul",{className:"cal-more-popover__list",children:t.map(d=>(0,v.jsxs)("li",{className:"cal-more-popover__item",children:[(0,v.jsx)("span",{className:"cal-more-popover__dot","data-status":d.status??"","aria-hidden":!0}),(0,v.jsxs)("div",{className:"cal-more-popover__item-body",children:[(0,v.jsx)("p",{className:"cal-more-popover__item-title",children:d.title}),(0,v.jsxs)("p",{className:"cal-more-popover__item-time",children:[(0,v.jsx)(q.Clock,{size:10,"aria-hidden":!0}),P(d.startDate,i)," \u2013"," ",P(d.endDate,i)]})]}),(0,v.jsxs)("div",{className:"cal-more-popover__item-actions",children:[(0,v.jsx)("button",{type:"button","aria-label":D.editAria(d.title),onClick:k=>{k.stopPropagation(),n(!1),r(d)},className:"cal-more-popover__action",children:(0,v.jsx)(q.SquarePen,{size:12})}),(0,v.jsx)("button",{type:"button","aria-label":D.deleteAria(d.title),onClick:k=>{k.stopPropagation(),n(!1),s(d)},className:"cal-more-popover__action cal-more-popover__action--danger",children:(0,v.jsx)(q.Trash2,{size:12})})]})]},d.id))})]})]})},lt=t=>!t.anchor||t.events.length===0?null:(0,v.jsx)(Re,{...t,anchor:t.anchor});var y=require("react/jsx-runtime"),Bt={day:"timeGridDay",week:"timeGridWeek",month:"dayGridMonth"},Be=220,Oe={moreLink:t=>`+${t} more`,allDayText:"All day",todayHeaderAria:"Today"},Ut=({events:t,activeView:e,selectedDate:a,highlightEventIds:n=[],onDeleteEvent:r,onEditEvent:s,onEventTimeChange:i,onDateClick:g,onDateSelected:c,onVisibleRangeChange:E,onSwitchToDay:D,locale:M="es-CO",fullCalendarLocale:O=Ht.default,firstDay:d=1,statusLabels:k,renderEventMeta:ut,messages:J,immutableStatuses:m,className:$})=>{let V=(0,f.useRef)(null),X=(0,f.useRef)(null),Z=(0,f.useRef)(!0),[vt,Et]=(0,f.useState)(null),Ct=(0,$t.useReducedMotion)(),gt=(0,f.useMemo)(()=>({...Oe,...J}),[J]),ie=(0,f.useMemo)(()=>new Set(n),[n]),j=(0,f.useMemo)(()=>new Map(t.map(o=>[o.id,o])),[t]),le=(0,f.useMemo)(()=>t.map(et),[t]),pe=(0,f.useMemo)(()=>new Intl.DateTimeFormat(M,{weekday:"short"}),[M]),ce=(0,f.useMemo)(()=>new Set(m??["archived"]),[m]);(0,f.useEffect)(()=>{Et(null);let o=V.current?.getApi();if(!o)return;let l=!1;return queueMicrotask(()=>{if(l)return;let u=Bt[e];o.view.type!==u&&o.changeView(u),o.getDate().toDateString()!==a.toDateString()&&o.gotoDate(a)}),()=>{l=!0}},[e,a]),(0,f.useEffect)(()=>{if(Z.current){Z.current=!1;return}Ct||!X.current||X.current.animate([{opacity:.88,transform:"translateY(5px)"},{opacity:1,transform:"translateY(0)"}],{duration:Be,easing:"cubic-bezier(0.22, 1, 0.36, 1)",fill:"both"})},[e,Ct]);let de=o=>E(o.start,o.end),me=o=>{c(o.date),g(o.date,{x:o.jsEvent.clientX,y:o.jsEvent.clientY})},ue=o=>{let l=o.jsEvent?{x:o.jsEvent.clientX,y:o.jsEvent.clientY}:{x:window.innerWidth/2,y:window.innerHeight/2};c(o.start),g(o.start,l)},ve=o=>{let l=j.get(o.event.id);return l?o.view.type==="dayGridMonth"||o.event.allDay?(0,y.jsx)(it,{event:l,onEdit:s,onDelete:r,locale:M,statusLabels:k,renderEventMeta:ut}):(0,y.jsx)(nt,{event:l,onEdit:s,onDelete:r,locale:M,statusLabels:k}):(0,y.jsx)("p",{className:"cal-event-fallback",children:o.event.title})},Ee=o=>{ie.has(o.event.id)&&(o.el.classList.add("cal-event-highlight-enter"),window.setTimeout(()=>o.el.classList.remove("cal-event-highlight-enter"),650))},ge=(o,l,u)=>{if(u)return u.toISOString();let x=new Date(l),Q=o.durationMinutes??60;return x.setMinutes(x.getMinutes()+Q),x.toISOString()},fe=o=>{let l=j.get(o.event.id),u=o.event.start;if(!l||!u){o.revert();return}i({event:l,startAt:u.toISOString(),endAt:ge(l,u,o.event.end),revert:o.revert})},he=o=>{let l=j.get(o.event.id),u=o.event.start,x=o.event.end;if(!l||!u||!x){o.revert();return}if(x<=u){o.revert();return}i({event:l,startAt:u.toISOString(),endAt:x.toISOString(),revert:o.revert})},ye=({date:o,isToday:l})=>{let u=pe.format(o).replace(".","");return(0,y.jsxs)("div",{className:"cal-day-header",children:[(0,y.jsx)("span",{className:"cal-day-header__number","data-today":l,"aria-label":l?gt.todayHeaderAria:void 0,children:o.getDate()}),(0,y.jsx)("span",{className:"cal-day-header__weekday",children:u})]})};return(0,y.jsx)(ot,{children:(0,y.jsx)("div",{className:(0,Gt.default)(N,"cal-macro-root",$),children:(0,y.jsxs)("div",{ref:X,className:"cal-macro-surface",children:[(0,y.jsx)(Vt.CalendarDays,{className:"cal-macro-corner-icon",size:20,"aria-hidden":!0}),(0,y.jsx)(Ot.default,{ref:V,plugins:[It.default,Ft.default,zt.default],locale:O,initialView:Bt[e],height:"100%",expandRows:!0,firstDay:d,allDaySlot:!1,allDayText:gt.allDayText,selectable:!0,selectMirror:!0,editable:!0,eventStartEditable:!0,eventDurationEditable:!0,eventResizableFromStart:!0,dayMaxEvents:!0,eventMaxStack:3,moreLinkContent:o=>(0,y.jsx)("span",{className:"cal-more-link",children:gt.moreLink(o.num)}),moreLinkClick:o=>{if(o.view.type==="dayGridMonth")return D(o.date),"none";let l=o.allSegs.map(Q=>j.get(Q.event.id)).filter(Q=>!!Q),u=o.jsEvent.target,x=u instanceof Element?u.closest(".fc-more-link"):null;return x&&l.length>0&&Et({events:l,anchor:x}),"none"},nowIndicator:!0,slotDuration:"01:00:00",slotLabelInterval:"01:00:00",slotLabelFormat:{hour:"2-digit",minute:"2-digit",hour12:!1},slotMinTime:"00:00:00",slotMaxTime:"24:00:00",slotEventOverlap:!1,eventMinHeight:28,eventShortHeight:48,headerToolbar:!1,events:le,eventDrop:fe,eventResize:he,eventDidMount:Ee,dragScroll:!0,eventDragMinDistance:8,dragRevertDuration:420,longPressDelay:380,selectLongPressDelay:380,eventAllow:(o,l)=>{if(!l)return!1;let u=l.extendedProps.status;return typeof u=="string"?!ce.has(u):!0},datesSet:de,dateClick:me,select:ue,dayHeaderContent:ye,eventContent:ve}),(0,y.jsx)(lt,{events:vt?.events??[],anchor:vt?.anchor??null,open:!!vt,onOpenChange:o=>{o||Et(null)},onEdit:s,onDelete:r,locale:M})]})})})};var Kt=require("react"),qt=require("react-day-picker"),Wt=require("react-day-picker/locale"),ct=require("lucide-react"),Yt=h(require("clsx"),1);var ht=h(require("clsx"),1),W=require("react/jsx-runtime"),pt=({statuses:t,isSelected:e=!1,statusColors:a,className:n,maxDots:r=2})=>t.length===0&&!e?(0,W.jsx)("span",{className:(0,ht.default)("cal-day-dot-empty",n),"aria-hidden":!0}):(0,W.jsxs)("span",{className:(0,ht.default)("cal-day-dot-row",n),"aria-hidden":!0,children:[e&&(0,W.jsx)("span",{className:"cal-day-dot cal-day-dot--selected"}),t.slice(0,r).map(s=>{let i=a?.[s];return(0,W.jsx)("span",{className:"cal-day-dot","data-status":s,style:i?{backgroundColor:i}:void 0},s)})]});var S=require("react/jsx-runtime"),Ie={previousMonth:"Previous month",nextMonth:"Next month"},Xt=({selectedDate:t,visibleMonth:e,eventDayStatuses:a,onSelectDate:n,onMonthChange:r,locale:s="es-CO",pickerLocale:i=Wt.es,messages:g,statusColors:c,className:E})=>{let D={...Ie,...g},{monthNameFormat:M,yearFormat:O,weekdayFormat:d}=(0,Kt.useMemo)(()=>({monthNameFormat:new Intl.DateTimeFormat(s,{month:"long"}),yearFormat:new Intl.DateTimeFormat(s,{year:"numeric"}),weekdayFormat:new Intl.DateTimeFormat(s,{weekday:"short"})}),[s]),k=m=>{let $=M.format(m);return`${$.charAt(0).toUpperCase()+$.slice(1)} ${O.format(m)}`},ut=()=>{let m=new Date(e);m.setMonth(m.getMonth()-1),r(m)},J=()=>{let m=new Date(e);m.setMonth(m.getMonth()+1),r(m)};return(0,S.jsx)(ot,{children:(0,S.jsxs)("div",{className:(0,Yt.default)(N,"cal-mini-root",E),children:[(0,S.jsxs)("div",{className:"cal-mini-header",children:[(0,S.jsx)("button",{type:"button","aria-label":D.previousMonth,onClick:ut,className:"cal-mini-nav-button",children:(0,S.jsx)(ct.ChevronLeft,{size:14,"aria-hidden":!0})}),(0,S.jsx)("h2",{className:"cal-mini-caption",children:k(e)}),(0,S.jsx)("button",{type:"button","aria-label":D.nextMonth,onClick:J,className:"cal-mini-nav-button",children:(0,S.jsx)(ct.ChevronRight,{size:14,"aria-hidden":!0})})]}),(0,S.jsx)(qt.DayPicker,{mode:"single",locale:i,selected:t,month:e,onMonthChange:r,formatters:{formatWeekdayName:m=>d.format(m).charAt(0).toUpperCase()},onSelect:m=>{m&&n(m)},hideNavigation:!0,captionLayout:"label",className:"cal-mini-grid",classNames:{months:"cal-mini-months",month:"cal-mini-month",month_caption:"cal-mini-month-caption",caption_label:"cal-mini-caption-label",month_grid:"cal-mini-month-grid",weekdays:"cal-mini-weekdays",weekday:"cal-mini-weekday",week:"cal-mini-week",day:"cal-mini-day",day_button:"cal-mini-day-button",outside:"cal-mini-day--outside",today:"cal-mini-day--today"},components:{DayButton:({day:m,...$})=>{let V=A(m.date),X=a.get(V)??[],Z=A(t)===V;return(0,S.jsxs)("button",{...$,children:[(0,S.jsx)("span",{children:m.date.getDate()}),(0,S.jsx)(pt,{statuses:X,isSelected:Z,statusColors:c})]})}}})]})})};var dt=require("motion/react"),yt=require("lucide-react"),jt=h(require("clsx"),1);var Qt=require("react"),Jt=h(require("clsx"),1),Y=require("react/jsx-runtime"),z=(0,Qt.forwardRef)(({variant:t="primary",size:e="md",rounded:a="md",leftIcon:n,rightIcon:r,className:s,children:i,type:g="button",...c},E)=>(0,Y.jsxs)("button",{ref:E,type:g,"data-variant":t,"data-size":e,"data-rounded":a,className:(0,Jt.default)("cal-button",s),...c,children:[n&&(0,Y.jsx)("span",{className:"cal-button__icon",children:n}),i&&(0,Y.jsx)("span",{className:"cal-button__label",children:i}),r&&(0,Y.jsx)("span",{className:"cal-button__icon",children:r})]}));z.displayName="Button";var _=require("react/jsx-runtime"),Fe={day:"Day",week:"Week",month:"Month"},Zt={groupAriaLabel:"Calendar view",newEvent:"New event"},ze=["day","week","month"],te=({activeView:t,onChangeView:e,onNewEvent:a,messages:n,className:r})=>{let s={...Fe,...n?.views},i=n?.groupAriaLabel??Zt.groupAriaLabel,g=n?.newEvent??Zt.newEvent;return(0,_.jsxs)("div",{className:(0,jt.default)(N,"cal-toolbar",r),children:[(0,_.jsx)(dt.LayoutGroup,{id:"cal-toolbar-view-tabs",children:(0,_.jsx)("div",{className:"cal-toolbar__tabs",role:"group","aria-label":i,children:ze.map(c=>{let E=t===c;return(0,_.jsxs)("button",{type:"button",onClick:()=>e(c),className:"cal-toolbar__tab","data-active":E,children:[E&&(0,_.jsx)(dt.motion.span,{layoutId:"cal-toolbar-indicator",className:"cal-toolbar__indicator",transition:{type:"spring",stiffness:380,damping:34}}),(0,_.jsxs)("span",{className:"cal-toolbar__tab-label",children:[(0,_.jsx)(yt.CalendarDays,{size:14,className:"cal-toolbar__tab-icon","aria-hidden":!0}),s[c]]})]},c)})})}),a&&(0,_.jsx)(z,{variant:"primary",size:"md",rounded:"full",onClick:a,leftIcon:(0,_.jsx)(yt.CalendarDays,{size:18,"aria-hidden":!0}),children:g})]})};var B=require("react/jsx-runtime"),He={heading:"Event actions"},ee=({state:t,actions:e,onClose:a,onSelectAction:n,messages:r})=>{if(!t.point||!t.date)return null;let s={...He,...r};return(0,B.jsxs)(w,{open:t.isOpen,onOpenChange:i=>!i&&a(),children:[(0,B.jsx)(K,{asChild:!0,children:(0,B.jsx)("span",{className:"cal-slot-anchor",style:{left:t.point.x,top:t.point.y},"aria-hidden":!0})}),(0,B.jsxs)(T,{align:"start",sideOffset:8,className:"cal-slot-popover",onEscapeKeyDown:a,children:[(0,B.jsx)("p",{className:"cal-slot-popover__heading",children:s.heading}),e.map(i=>(0,B.jsx)(z,{type:"button",variant:"ghost",size:"sm",leftIcon:i.icon,className:"cal-slot-popover__action",onClick:()=>n({type:i.type,date:t.date}),children:i.label},i.type))]})]})};var oe=h(require("clsx"),1),mt=require("react/jsx-runtime"),ae=({label:t,icon:e,className:a})=>(0,mt.jsxs)("span",{className:(0,oe.default)("cal-type-chip",a),children:[e&&(0,mt.jsx)("span",{className:"cal-type-chip__icon",children:e}),t]});var ne=require("lucide-react"),re=h(require("clsx"),1),H=require("react/jsx-runtime"),se=({title:t="No events to display",description:e="Adjust filters or create a new event to populate the calendar.",icon:a,className:n})=>(0,H.jsxs)("div",{className:(0,re.default)("cal-empty-state",n),children:[(0,H.jsx)("span",{className:"cal-empty-state__icon","aria-hidden":!0,children:a??(0,H.jsx)(ne.CalendarDays,{size:20})}),(0,H.jsx)("p",{className:"cal-empty-state__title",children:t}),(0,H.jsx)("p",{className:"cal-empty-state__description",children:e})]});0&&(module.exports={APE_CALENDAR_ROOT_CLASS,Button,CalendarToolbar,DayEventDot,EmptyEventsState,EventBlockContent,EventChipMonth,EventChipPopover,EventStatusBadge,EventTypeChip,MacroCalendar,MiniMonthCalendar,MoreEventsPopover,Popover,PopoverAnchor,PopoverClose,PopoverContent,PopoverPortal,PopoverTrigger,SlotContextActions,formatDurationLabel,formatHourLabel,getEventDayKeys,getEventDayStatuses,isSameDay,mapEventToCalendarInput,toDayKey});
1
+ "use strict";var ea=Object.create;var fe=Object.defineProperty;var ta=Object.getOwnPropertyDescriptor;var aa=Object.getOwnPropertyNames;var oa=Object.getPrototypeOf,na=Object.prototype.hasOwnProperty;var sa=(e,t)=>{for(var a in t)fe(e,a,{get:t[a],enumerable:!0})},We=(e,t,a,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of aa(t))!na.call(e,n)&&n!==a&&fe(e,n,{get:()=>t[n],enumerable:!(o=ta(t,n))||o.enumerable});return e};var D=(e,t,a)=>(a=e!=null?ea(oa(e)):{},We(t||!e||!e.__esModule?fe(a,"default",{value:e,enumerable:!0}):a,e)),ra=e=>We(fe({},"__esModule",{value:!0}),e);var Na={};sa(Na,{APE_CALENDAR_ROOT_CLASS:()=>B,Button:()=>Q,CalendarToolbar:()=>Pt,DayEventDot:()=>Te,EmptyEventsState:()=>De,EventAgendaList:()=>Pe,EventBlockContent:()=>xe,EventChipMonth:()=>Ae,EventChipPopover:()=>Ne,EventListRow:()=>_e,EventStatusBadge:()=>Y,EventTypeChip:()=>Bt,EventTypeFilterList:()=>Nt,MacroCalendar:()=>yt,MiniMonthCalendar:()=>St,MoreEventsPopover:()=>Me,Popover:()=>$,PopoverAnchor:()=>ie,PopoverClose:()=>st,PopoverContent:()=>H,PopoverPortal:()=>nt,PopoverTrigger:()=>re,Select:()=>Re,SlotContextActions:()=>Lt,StatusFilterSelect:()=>Tt,formatDurationLabel:()=>Ye,formatHourLabel:()=>P,getEventDayKeys:()=>Ke,getEventDayStatuses:()=>qe,getWeekRange:()=>j,isSameDay:()=>ve,mapAvailabilityToBackgroundEvents:()=>Ce,mapAvailabilityToBusinessHours:()=>Xe,mapEventToCalendarInput:()=>he,shiftDate:()=>Se,toDayKey:()=>z,useCalendarController:()=>Ft});module.exports=ra(Na);var _=require("react"),lt=D(require("@fullcalendar/react"),1),ct=D(require("@fullcalendar/daygrid"),1),pt=D(require("@fullcalendar/timegrid"),1),dt=D(require("@fullcalendar/interaction"),1),mt=D(require("@fullcalendar/core/locales/es"),1),ut=require("motion/react"),vt=require("lucide-react"),gt=D(require("clsx"),1);var z=e=>{let t=e.getFullYear(),a=`${e.getMonth()+1}`.padStart(2,"0"),o=`${e.getDate()}`.padStart(2,"0");return`${t}-${a}-${o}`},ve=(e,t)=>z(e)===z(t),Ke=e=>new Set(e.map(t=>z(t.startDate))),qe=e=>e.reduce((t,a)=>{if(!a.status)return t;let o=z(a.startDate),n=t.get(o)??[];return n.includes(a.status)||t.set(o,[...n,a.status]),t},new Map),he=e=>({id:e.id,title:e.title,start:e.startAt,end:e.endAt,allDay:e.isAllDay??!1,extendedProps:{status:e.status,location:e.location,description:e.description,durationMinutes:e.durationMinutes}}),P=(e,t="es-CO",a={hour:"2-digit",minute:"2-digit",hour12:!1})=>e.toLocaleTimeString(t,a),Ye=(e,t={})=>{let a=t.min??"min",o=t.h??"h";if(e<60)return`${e} ${a}`;let n=Math.floor(e/60),r=e%60;return r===0?`${n} ${o}`:`${n} ${o} ${r} ${a}`},Xe=e=>e.map(t=>({daysOfWeek:t.daysOfWeek,startTime:t.startTime,endTime:t.endTime})),Ce=e=>e.map((t,a)=>({id:`cal-availability-${a}`,daysOfWeek:t.daysOfWeek,startTime:t.startTime,endTime:t.endTime,display:"background",classNames:["cal-availability-band"],editable:!1})),j=(e,t=1)=>{let a=new Date(e);a.setHours(0,0,0,0);let o=(a.getDay()-t+7)%7;a.setDate(a.getDate()-o);let n=new Date(a);return n.setDate(n.getDate()+7),{start:a,end:n}},Se=(e,t,a)=>{if(a==="today")return new Date;let o=new Date(e),n=a==="next"?1:-1;switch(t){case"month":o.setMonth(o.getMonth()+n);break;case"week":case"list":o.setDate(o.getDate()+n*7);break;case"day":o.setDate(o.getDate()+n);break}return o};var B="ape-calendar";var K=require("react");var Ze=require("react/jsx-runtime"),Qe=(0,K.createContext)(null),Je=()=>(0,K.useContext)(Qe);function be({children:e}){let[t,a]=(0,K.useState)(null);return(0,K.useEffect)(()=>{if(typeof document>"u")return;let o=document.createElement("div");return o.className=B,o.dataset.apeCalendarPortalRoot="true",document.body.appendChild(o),a(o),()=>{o.parentNode&&o.parentNode.removeChild(o)}},[]),(0,Ze.jsx)(Qe.Provider,{value:t,children:e})}var ne=require("react"),Ie=D(require("clsx"),1);var je=require("lucide-react"),et=D(require("clsx"),1),ee=require("react/jsx-runtime"),De=({title:e="No events to display",description:t="Adjust filters or create a new event to populate the calendar.",icon:a,className:o})=>(0,ee.jsxs)("div",{className:(0,et.default)("cal-empty-state",o),children:[(0,ee.jsx)("span",{className:"cal-empty-state__icon","aria-hidden":!0,children:a??(0,ee.jsx)(je.CalendarDays,{size:20})}),(0,ee.jsx)("p",{className:"cal-empty-state__title",children:e}),(0,ee.jsx)("p",{className:"cal-empty-state__description",children:t})]});var oe=require("lucide-react");var q=require("lucide-react"),tt=D(require("clsx"),1),U=require("react/jsx-runtime"),ia={draft:(0,U.jsx)("span",{className:"cal-status-badge__dot","data-status":"draft"}),published:(0,U.jsx)(q.Rocket,{size:11,"aria-hidden":!0}),scheduled:(0,U.jsx)(q.CalendarClock,{size:11,"aria-hidden":!0}),archived:(0,U.jsx)("span",{className:"cal-status-badge__dot","data-status":"archived"}),cancelled:(0,U.jsx)(q.Ban,{size:11,"aria-hidden":!0}),finalizado:(0,U.jsx)(q.CircleCheck,{size:11,"aria-hidden":!0})},la=e=>e.charAt(0).toUpperCase()+e.slice(1),Y=({status:e,labels:t,icons:a,className:o})=>{let n=t?.[e]??la(e),r=a?.[e]??ia[e];return(0,U.jsxs)("span",{className:(0,tt.default)("cal-status-badge",o),"data-status":e,children:[r,n]})};var x=require("react/jsx-runtime"),ca={edit:e=>`Edit event ${e}`,delete:e=>`Delete event ${e}`},_e=({event:e,onEdit:t,onDelete:a,locale:o="es-CO",statusLabels:n,renderEventMeta:r,messages:i})=>{let d={...ca,...i},c=e.status??"";return(0,x.jsxs)("div",{className:"cal-list-row","data-status":c,children:[(0,x.jsxs)("span",{className:"cal-list-row__time-chip","aria-label":"event time",children:[(0,x.jsx)(oe.Clock,{size:12,"aria-hidden":!0}),(0,x.jsxs)("span",{children:[P(e.startDate,o)," - ",P(e.endDate,o)]})]}),(0,x.jsxs)("div",{className:"cal-list-row__body",children:[(0,x.jsx)("p",{className:"cal-list-row__title",children:e.title}),r&&(0,x.jsx)("div",{className:"cal-list-row__meta",children:r(e)})]}),(0,x.jsxs)("div",{className:"cal-list-row__aside",children:[e.status&&(0,x.jsx)(Y,{status:e.status,labels:n}),(0,x.jsxs)("div",{className:"cal-list-row__actions",children:[(0,x.jsx)("button",{type:"button","aria-label":d.edit(e.title),onClick:m=>{m.stopPropagation(),t(e)},className:"cal-list-row__action-button",children:(0,x.jsx)(oe.SquarePen,{size:13})}),(0,x.jsx)("button",{type:"button","aria-label":d.delete(e.title),onClick:m=>{m.stopPropagation(),a(e)},className:"cal-list-row__action-button cal-list-row__action-button--danger",children:(0,x.jsx)(oe.Trash2,{size:13})})]})]})]})};var N=require("react/jsx-runtime"),pa={noEvents:"No events to display",noEventsForDay:"No events"},da=e=>{let t=[],a=new Date(e.start);a.setHours(0,0,0,0);let o=new Date(e.end);for(o.setHours(0,0,0,0);a<o;)t.push(new Date(a)),a.setDate(a.getDate()+1);return t},Pe=({events:e,range:t,locale:a="es-CO",statusLabels:o,renderEventMeta:n,renderDayHeader:r,onEditEvent:i,onDeleteEvent:d,messages:c,className:m})=>{let S=(0,ne.useMemo)(()=>da(t),[t]),p=(0,ne.useMemo)(()=>{let g=new Map;for(let l of e){let E=z(l.startDate),T=g.get(E)??[];T.push(l),g.set(E,T)}for(let l of g.values())l.sort((E,T)=>E.startDate.getTime()-T.startDate.getTime());return g},[e]),b=(0,ne.useMemo)(()=>new Intl.DateTimeFormat(a,{day:"2-digit"}),[a]),u=(0,ne.useMemo)(()=>new Intl.DateTimeFormat(a,{month:"short"}),[a]),M=(0,ne.useMemo)(()=>new Intl.DateTimeFormat(a,{weekday:"short"}),[a]),I={...pa,...c};return e.length===0&&!r?(0,N.jsx)("div",{className:(0,Ie.default)(B,"cal-agenda",m),children:(0,N.jsx)(De,{title:I.noEvents})}):(0,N.jsx)("div",{className:(0,Ie.default)(B,"cal-agenda",m),children:S.map(g=>{let l=z(g),E=p.get(l)??[],T=E.length>0,G=r?.(g,{hasEvents:T,events:E});return!T&&!G?null:(0,N.jsxs)("section",{className:"cal-agenda-day",children:[(0,N.jsxs)("aside",{className:"cal-agenda-day__anchor",children:[(0,N.jsx)("span",{className:"cal-agenda-day__month",children:u.format(g).replace(".","")}),(0,N.jsx)("span",{className:"cal-agenda-day__number",children:b.format(g)}),(0,N.jsx)("span",{className:"cal-agenda-day__weekday",children:M.format(g).replace(".","")})]}),(0,N.jsxs)("div",{className:"cal-agenda-day__body",children:[G&&(0,N.jsx)("div",{className:"cal-agenda-day__header",children:G}),T?(0,N.jsx)("ul",{className:"cal-agenda-day__events",children:E.map(ye=>(0,N.jsx)("li",{className:"cal-agenda-day__event-item",children:(0,N.jsx)(_e,{event:ye,onEdit:i,onDelete:d,locale:a,statusLabels:o,renderEventMeta:n,messages:c})},ye.id))}):(0,N.jsx)("p",{className:"cal-agenda-day__empty",children:I.noEventsForDay})]})]},l)})})};var se=require("lucide-react");var k=require("react/jsx-runtime"),ma={edit:e=>`Edit event ${e}`,delete:e=>`Delete event ${e}`},xe=({event:e,onEdit:t,onDelete:a,locale:o="es-CO",statusLabels:n,messages:r})=>{let i={...ma,...r},d=e.status??"";return(0,k.jsxs)("article",{className:"cal-event-block","data-status":d,children:[(0,k.jsx)("div",{className:"cal-event-block__header",children:e.status&&(0,k.jsx)(Y,{status:e.status,labels:n})}),(0,k.jsx)("p",{className:"cal-event-block__title",children:e.title}),(0,k.jsxs)("p",{className:"cal-event-block__time",children:[(0,k.jsx)(se.Clock,{size:10,"aria-hidden":!0}),(0,k.jsxs)("span",{children:[P(e.startDate,o)," - ",P(e.endDate,o)]})]}),(0,k.jsxs)("div",{className:"cal-event-block__actions",children:[(0,k.jsx)("button",{type:"button","aria-label":i.edit(e.title),onClick:c=>{c.stopPropagation(),t(e)},className:"cal-event-block__action-button",children:(0,k.jsx)(se.SquarePen,{size:11})}),(0,k.jsx)("button",{type:"button","aria-label":i.delete(e.title),onClick:c=>{c.stopPropagation(),a(e)},className:"cal-event-block__action-button cal-event-block__action-button--danger",children:(0,k.jsx)(se.Trash2,{size:11})})]})]})};var X=require("lucide-react");var F=D(require("@radix-ui/react-popover"),1),at=require("react"),ot=D(require("clsx"),1);var ze=require("react/jsx-runtime"),$=F.Root,re=F.Trigger,ie=F.Anchor,nt=F.Portal,st=F.Close,H=(0,at.forwardRef)(({className:e,align:t="center",sideOffset:a=4,...o},n)=>{let r=Je();return(0,ze.jsx)(F.Portal,{container:r??void 0,children:(0,ze.jsx)(F.Content,{ref:n,align:t,sideOffset:a,className:(0,ot.default)("cal-popover-content",e),...o})})});H.displayName="PopoverContent";var y=require("react/jsx-runtime"),ua={weekday:"long",day:"2-digit",month:"long"},va={edit:"Edit",delete:"Delete",editAria:e=>`Edit event ${e}`,deleteAria:e=>`Delete event ${e}`},Ne=({event:e,onEdit:t,onDelete:a,children:o,locale:n="es-CO",statusLabels:r,renderEventMeta:i,messages:d,dayHeaderOptions:c})=>{let m={...va,...d},p=new Intl.DateTimeFormat(n,c??ua).format(e.startDate),b=`${P(e.startDate,n)} \u2013 ${P(e.endDate,n)}`;return(0,y.jsxs)($,{children:[(0,y.jsx)(re,{asChild:!0,children:o}),(0,y.jsxs)(H,{align:"start",sideOffset:6,collisionPadding:12,className:"cal-chip-popover",onClick:u=>u.stopPropagation(),children:[(0,y.jsxs)("header",{className:"cal-chip-popover__header",children:[(0,y.jsxs)("div",{className:"cal-chip-popover__header-info",children:[(0,y.jsx)("p",{className:"cal-chip-popover__day",children:p}),(0,y.jsx)("h3",{className:"cal-chip-popover__title",children:e.title})]}),e.status&&(0,y.jsx)(Y,{status:e.status,labels:r})]}),(0,y.jsxs)("dl",{className:"cal-chip-popover__meta",children:[(0,y.jsxs)("div",{className:"cal-chip-popover__meta-row",children:[(0,y.jsx)(X.Clock,{size:12,"aria-hidden":!0}),(0,y.jsx)("span",{children:b})]}),i&&(0,y.jsx)("div",{className:"cal-chip-popover__meta-row cal-chip-popover__meta-row--wrap",children:i(e)}),e.location&&(0,y.jsxs)("div",{className:"cal-chip-popover__meta-row cal-chip-popover__meta-row--start",children:[(0,y.jsx)(X.MapPin,{size:12,"aria-hidden":!0}),(0,y.jsx)("span",{className:"cal-chip-popover__clamp-2",children:e.location})]})]}),e.description&&(0,y.jsx)("p",{className:"cal-chip-popover__description",children:e.description}),(0,y.jsxs)("footer",{className:"cal-chip-popover__footer",children:[(0,y.jsxs)("button",{type:"button","aria-label":m.editAria(e.title),onClick:u=>{u.stopPropagation(),t(e)},className:"cal-chip-popover__action",children:[(0,y.jsx)(X.SquarePen,{size:12}),m.edit]}),(0,y.jsxs)("button",{type:"button","aria-label":m.deleteAria(e.title),onClick:u=>{u.stopPropagation(),a(e)},className:"cal-chip-popover__action cal-chip-popover__action--danger",children:[(0,y.jsx)(X.Trash2,{size:12}),m.delete]})]})]})]})};var te=require("react/jsx-runtime"),Ae=({event:e,onEdit:t,onDelete:a,locale:o="es-CO",statusLabels:n,renderEventMeta:r,messages:i,triggerAria:d=c=>`Show event details ${c}`})=>{let c=P(e.startDate,o),m=e.status??"";return(0,te.jsx)(Ne,{event:e,onEdit:t,onDelete:a,locale:o,statusLabels:n,renderEventMeta:r,messages:i,children:(0,te.jsxs)("button",{type:"button","aria-label":d(e.title),onClick:S=>S.stopPropagation(),className:"cal-chip-month","data-status":m,children:[(0,te.jsx)("span",{className:"cal-chip-month__dot","aria-hidden":!0}),(0,te.jsx)("span",{className:"cal-chip-month__time",children:c}),(0,te.jsx)("span",{className:"cal-chip-month__title",children:e.title})]})})};var rt=require("react"),le=require("lucide-react");var C=require("react/jsx-runtime"),ga={weekday:"long",day:"2-digit",month:"long"},ya={header:e=>`${e} events in this slot`,editAria:e=>`Edit event ${e}`,deleteAria:e=>`Delete event ${e}`},Ea=({events:e,anchor:t,open:a,onOpenChange:o,onEdit:n,onDelete:r,locale:i="es-CO",messages:d,dayHeaderOptions:c})=>{let m=(0,rt.useMemo)(()=>({current:t}),[t]),S={...ya,...d},b=new Intl.DateTimeFormat(i,c??ga).format(e[0].startDate);return(0,C.jsxs)($,{open:a,onOpenChange:o,children:[(0,C.jsx)(ie,{virtualRef:m}),(0,C.jsxs)(H,{align:"start",sideOffset:6,collisionPadding:12,className:"cal-more-popover",onClick:u=>u.stopPropagation(),children:[(0,C.jsxs)("header",{className:"cal-more-popover__header",children:[(0,C.jsx)("p",{className:"cal-more-popover__day",children:b}),(0,C.jsx)("h3",{className:"cal-more-popover__title",children:S.header(e.length)})]}),(0,C.jsx)("ul",{className:"cal-more-popover__list",children:e.map(u=>(0,C.jsxs)("li",{className:"cal-more-popover__item",children:[(0,C.jsx)("span",{className:"cal-more-popover__dot","data-status":u.status??"","aria-hidden":!0}),(0,C.jsxs)("div",{className:"cal-more-popover__item-body",children:[(0,C.jsx)("p",{className:"cal-more-popover__item-title",children:u.title}),(0,C.jsxs)("p",{className:"cal-more-popover__item-time",children:[(0,C.jsx)(le.Clock,{size:10,"aria-hidden":!0}),P(u.startDate,i)," \u2013"," ",P(u.endDate,i)]})]}),(0,C.jsxs)("div",{className:"cal-more-popover__item-actions",children:[(0,C.jsx)("button",{type:"button","aria-label":S.editAria(u.title),onClick:M=>{M.stopPropagation(),o(!1),n(u)},className:"cal-more-popover__action",children:(0,C.jsx)(le.SquarePen,{size:12})}),(0,C.jsx)("button",{type:"button","aria-label":S.deleteAria(u.title),onClick:M=>{M.stopPropagation(),o(!1),r(u)},className:"cal-more-popover__action cal-more-popover__action--danger",children:(0,C.jsx)(le.Trash2,{size:12})})]})]},u.id))})]})]})},Me=e=>!e.anchor||e.events.length===0?null:(0,C.jsx)(Ea,{...e,anchor:e.anchor});var A=require("react/jsx-runtime"),it={day:"timeGridDay",week:"timeGridWeek",month:"dayGridMonth"},fa=220,ha={moreLink:e=>`+${e} more`,allDayText:"All day",todayHeaderAria:"Today",noEvents:"No events to display"},yt=({events:e,activeView:t,selectedDate:a,highlightEventIds:o=[],onDeleteEvent:n,onEditEvent:r,onEventTimeChange:i,onDateClick:d,onDateSelected:c,onVisibleRangeChange:m,onSwitchToDay:S,locale:p="es-CO",fullCalendarLocale:b=mt.default,firstDay:u=1,availability:M,statusLabels:I,renderEventMeta:g,renderDayHeader:l,renderAgendaDayHeader:E,messages:T,immutableStatuses:me,eventAllow:G,height:ye="100%",highlightDurationMs:He=650,slotDuration:Ot="00:30:00",snapDuration:It="00:15:00",className:zt})=>{let $e=(0,_.useRef)(null),Be=(0,_.useRef)(null),Ue=(0,_.useRef)(!0),[Fe,Oe]=(0,_.useState)(null),Ge=(0,ut.useReducedMotion)(),ae=(0,_.useMemo)(()=>({...ha,...T}),[T]),Vt=s=>typeof ae.moreLink=="function"?ae.moreLink(s):ae.moreLink.replace("{count}",String(s)),Ht=(0,_.useMemo)(()=>new Set(o),[o]),ue=(0,_.useMemo)(()=>new Map(e.map(s=>[s.id,s])),[e]),$t=(0,_.useMemo)(()=>{let s=e.map(he);return M&&(t==="week"||t==="day")?[...s,...Ce(M)]:s},[e,M,t]),Ut=(0,_.useMemo)(()=>new Intl.DateTimeFormat(p,{weekday:"short"}),[p]),Gt=(0,_.useMemo)(()=>new Set(me??["archived"]),[me]);(0,_.useEffect)(()=>{if(Oe(null),t==="list")return;let s=$e.current?.getApi();if(!s)return;let v=!1;return queueMicrotask(()=>{if(v)return;let h=it[t];s.view.type!==h&&s.changeView(h),s.getDate().toDateString()!==a.toDateString()&&s.gotoDate(a)}),()=>{v=!0}},[t,a]);let Ee=(0,_.useMemo)(()=>j(a,u),[a,u]);(0,_.useEffect)(()=>{t==="list"&&m(Ee.start,Ee.end)},[t,Ee]),(0,_.useEffect)(()=>{if(Ue.current){Ue.current=!1;return}Ge||!Be.current||Be.current.animate([{opacity:.88,transform:"translateY(5px)"},{opacity:1,transform:"translateY(0)"}],{duration:fa,easing:"cubic-bezier(0.22, 1, 0.36, 1)",fill:"both"})},[t,Ge]);let Wt=s=>m(s.start,s.end),Kt=s=>{c(s.date),d(s.date,{x:s.jsEvent.clientX,y:s.jsEvent.clientY})},qt=s=>{let v=s.jsEvent?{x:s.jsEvent.clientX,y:s.jsEvent.clientY}:{x:window.innerWidth/2,y:window.innerHeight/2};c(s.start),d(s.start,v)},Yt=s=>{let v=ue.get(s.event.id);return v?s.view.type==="dayGridMonth"||s.event.allDay?(0,A.jsx)(Ae,{event:v,onEdit:r,onDelete:n,locale:p,statusLabels:I,renderEventMeta:g}):(0,A.jsx)(xe,{event:v,onEdit:r,onDelete:n,locale:p,statusLabels:I}):(0,A.jsx)("p",{className:"cal-event-fallback",children:s.event.title})},Xt=s=>{Ht.has(s.event.id)&&(s.el.style.setProperty("--cal-highlight-duration",`${He}ms`),s.el.classList.add("cal-event-highlight-enter"),window.setTimeout(()=>s.el.classList.remove("cal-event-highlight-enter"),He))},Qt=(s,v,h)=>{if(h)return h.toISOString();let L=new Date(v),W=s.durationMinutes??60;return L.setMinutes(L.getMinutes()+W),L.toISOString()},Jt=s=>{let v=ue.get(s.event.id),h=s.event.start;if(!v||!h){s.revert();return}i({event:v,startAt:h.toISOString(),endAt:Qt(v,h,s.event.end),revert:s.revert})},Zt=s=>{let v=ue.get(s.event.id),h=s.event.start,L=s.event.end;if(!v||!h||!L){s.revert();return}if(L<=h){s.revert();return}i({event:v,startAt:h.toISOString(),endAt:L.toISOString(),revert:s.revert})},jt=({date:s,isToday:v})=>{if(l)return l(s,{isToday:v});let h=Ut.format(s).replace(".","");return(0,A.jsxs)("div",{className:"cal-day-header",children:[(0,A.jsx)("span",{className:"cal-day-header__number","data-today":v,"aria-label":v?ae.todayHeaderAria:void 0,children:s.getDate()}),(0,A.jsx)("span",{className:"cal-day-header__weekday",children:h})]})};return(0,A.jsx)(be,{children:(0,A.jsx)("div",{className:(0,gt.default)(B,"cal-macro-root",zt),children:(0,A.jsxs)("div",{ref:Be,className:"cal-macro-surface",children:[(0,A.jsx)(vt.CalendarDays,{className:"cal-macro-corner-icon",size:20,"aria-hidden":!0}),t==="list"?(0,A.jsx)(Pe,{events:e,range:Ee,locale:p,statusLabels:I,renderEventMeta:g,renderDayHeader:E,onEditEvent:r,onDeleteEvent:n,messages:{noEvents:ae.noEvents}}):(0,A.jsx)(lt.default,{ref:$e,plugins:[ct.default,pt.default,dt.default],locale:b,initialView:it[t],height:ye,expandRows:!0,firstDay:u,allDaySlot:!1,allDayText:ae.allDayText,selectable:!0,selectMirror:!0,editable:!0,eventStartEditable:!0,eventDurationEditable:!0,eventResizableFromStart:!0,dayMaxEvents:!0,eventMaxStack:3,moreLinkContent:s=>(0,A.jsx)("span",{className:"cal-more-link",children:Vt(s.num)}),moreLinkClick:s=>{if(s.view.type==="dayGridMonth")return S(s.date),"none";let v=s.allSegs.map(W=>ue.get(W.event.id)).filter(W=>!!W),h=s.jsEvent.target,L=h instanceof Element?h.closest(".fc-more-link"):null;return L&&v.length>0&&Oe({events:v,anchor:L}),"none"},nowIndicator:!0,slotDuration:Ot,snapDuration:It,slotLabelInterval:"01:00:00",slotLabelFormat:{hour:"2-digit",minute:"2-digit",hour12:!1},slotMinTime:"00:00:00",slotMaxTime:"24:00:00",slotEventOverlap:!1,eventMinHeight:28,eventShortHeight:48,headerToolbar:!1,events:$t,eventDrop:Jt,eventResize:Zt,eventDidMount:Xt,dragScroll:!0,eventDragMinDistance:8,dragRevertDuration:420,longPressDelay:380,selectLongPressDelay:380,eventAllow:(s,v)=>{if(!v)return!1;let h=v.extendedProps.status,L=typeof h=="string"?!Gt.has(h):!0;if(!L||!G)return L;let W=ue.get(v.id);return W?G(W,s.startStr,s.endStr):!0},datesSet:Wt,dateClick:Kt,select:qt,dayHeaderContent:jt,eventContent:Yt}),(0,A.jsx)(Me,{events:Fe?.events??[],anchor:Fe?.anchor??null,open:!!Fe,onOpenChange:s=>{s||Oe(null)},onEdit:r,onDelete:n,locale:p})]})})})};var Et=require("react"),ft=require("react-day-picker"),ht=require("react-day-picker/locale"),we=require("lucide-react"),Ct=D(require("clsx"),1);var Ve=D(require("clsx"),1),ce=require("react/jsx-runtime"),Te=({statuses:e,isSelected:t=!1,statusColors:a,className:o,maxDots:n=2})=>e.length===0&&!t?(0,ce.jsx)("span",{className:(0,Ve.default)("cal-day-dot-empty",o),"aria-hidden":!0}):(0,ce.jsxs)("span",{className:(0,Ve.default)("cal-day-dot-row",o),"aria-hidden":!0,children:[t&&(0,ce.jsx)("span",{className:"cal-day-dot cal-day-dot--selected"}),e.slice(0,n).map(r=>{let i=a?.[r];return(0,ce.jsx)("span",{className:"cal-day-dot","data-status":r,style:i?{backgroundColor:i}:void 0},r)})]});var R=require("react/jsx-runtime"),Ca={previousMonth:"Previous month",nextMonth:"Next month"},St=({selectedDate:e,visibleMonth:t,eventDayStatuses:a,onSelectDate:o,onMonthChange:n,locale:r="es-CO",pickerLocale:i=ht.es,messages:d,statusColors:c,className:m})=>{let S={...Ca,...d},{monthNameFormat:p,yearFormat:b,weekdayFormat:u}=(0,Et.useMemo)(()=>({monthNameFormat:new Intl.DateTimeFormat(r,{month:"long"}),yearFormat:new Intl.DateTimeFormat(r,{year:"numeric"}),weekdayFormat:new Intl.DateTimeFormat(r,{weekday:"short"})}),[r]),M=l=>{let E=p.format(l);return`${E.charAt(0).toUpperCase()+E.slice(1)} ${b.format(l)}`},I=()=>{let l=new Date(t);l.setMonth(l.getMonth()-1),n(l)},g=()=>{let l=new Date(t);l.setMonth(l.getMonth()+1),n(l)};return(0,R.jsx)(be,{children:(0,R.jsxs)("div",{className:(0,Ct.default)(B,"cal-mini-root",m),children:[(0,R.jsxs)("div",{className:"cal-mini-header",children:[(0,R.jsx)("button",{type:"button","aria-label":S.previousMonth,onClick:I,className:"cal-mini-nav-button",children:(0,R.jsx)(we.ChevronLeft,{size:14,"aria-hidden":!0})}),(0,R.jsx)("h2",{className:"cal-mini-caption",children:M(t)}),(0,R.jsx)("button",{type:"button","aria-label":S.nextMonth,onClick:g,className:"cal-mini-nav-button",children:(0,R.jsx)(we.ChevronRight,{size:14,"aria-hidden":!0})})]}),(0,R.jsx)(ft.DayPicker,{mode:"single",locale:i,selected:e,month:t,onMonthChange:n,formatters:{formatWeekdayName:l=>u.format(l).charAt(0).toUpperCase()},onSelect:l=>{l&&o(l)},hideNavigation:!0,captionLayout:"label",className:"cal-mini-grid",classNames:{months:"cal-mini-months",month:"cal-mini-month",month_caption:"cal-mini-month-caption",caption_label:"cal-mini-caption-label",month_grid:"cal-mini-month-grid",weekdays:"cal-mini-weekdays",weekday:"cal-mini-weekday",week:"cal-mini-week",day:"cal-mini-day",day_button:"cal-mini-day-button",outside:"cal-mini-day--outside",today:"cal-mini-day--today"},components:{DayButton:({day:l,...E})=>{let T=z(l.date),me=a.get(T)??[],G=z(e)===T;return(0,R.jsxs)("button",{...E,children:[(0,R.jsx)("span",{children:l.date.getDate()}),(0,R.jsx)(Te,{statuses:me,isSelected:G,statusColors:c})]})}}})]})})};var Le=require("motion/react"),O=require("lucide-react"),_t=D(require("clsx"),1);var bt=require("react"),Dt=D(require("clsx"),1),pe=require("react/jsx-runtime"),Q=(0,bt.forwardRef)(({variant:e="primary",size:t="md",rounded:a="md",leftIcon:o,rightIcon:n,className:r,children:i,type:d="button",...c},m)=>(0,pe.jsxs)("button",{ref:m,type:d,"data-variant":e,"data-size":t,"data-rounded":a,className:(0,Dt.default)("cal-button",r),...c,children:[o&&(0,pe.jsx)("span",{className:"cal-button__icon",children:o}),i&&(0,pe.jsx)("span",{className:"cal-button__label",children:i}),n&&(0,pe.jsx)("span",{className:"cal-button__icon",children:n})]}));Q.displayName="Button";var f=require("react/jsx-runtime"),Sa={list:"List",day:"Day",week:"Week",month:"Month"},ba={list:(0,f.jsx)(O.List,{size:14,className:"cal-toolbar__tab-icon","aria-hidden":!0}),day:(0,f.jsx)(O.CalendarDays,{size:14,className:"cal-toolbar__tab-icon","aria-hidden":!0}),week:(0,f.jsx)(O.Columns3,{size:14,className:"cal-toolbar__tab-icon","aria-hidden":!0}),month:(0,f.jsx)(O.LayoutGrid,{size:14,className:"cal-toolbar__tab-icon","aria-hidden":!0})},ge={groupAriaLabel:"Calendar view",newEvent:"New event",today:"Today",previous:"Previous",next:"Next"},Da=["month","week","list"],_a=(e,t)=>e===t||e==="week"&&t==="day",Pt=({activeView:e,onChangeView:t,views:a=Da,onNavigate:o,todayActive:n=!1,periodLabel:r,filtersSlot:i,onNewEvent:d,messages:c,className:m})=>{let S={...Sa,...c?.views},p=c?.groupAriaLabel??ge.groupAriaLabel,b=c?.newEvent??ge.newEvent,u=c?.today??ge.today,M=c?.previous??ge.previous,I=c?.next??ge.next;return(0,f.jsxs)("div",{className:(0,_t.default)(B,"cal-toolbar",m),children:[o&&(0,f.jsxs)("div",{className:"cal-toolbar__nav",children:[(0,f.jsx)(Q,{variant:"outline",size:"sm",rounded:"full","data-active":n,"aria-pressed":n,onClick:()=>o("today"),children:u}),(0,f.jsx)("button",{type:"button",className:"cal-toolbar__nav-button","aria-label":M,onClick:()=>o("prev"),children:(0,f.jsx)(O.ChevronLeft,{size:18,"aria-hidden":!0})}),(0,f.jsx)("button",{type:"button",className:"cal-toolbar__nav-button","aria-label":I,onClick:()=>o("next"),children:(0,f.jsx)(O.ChevronRight,{size:18,"aria-hidden":!0})}),r&&(0,f.jsx)("span",{className:"cal-toolbar__period",children:r})]}),i&&(0,f.jsx)("div",{className:"cal-toolbar__filters",children:i}),(0,f.jsx)(Le.LayoutGroup,{id:"cal-toolbar-view-tabs",children:(0,f.jsx)("div",{className:"cal-toolbar__tabs",role:"group","aria-label":p,children:a.map(g=>{let l=_a(g,e);return(0,f.jsxs)("button",{type:"button",onClick:()=>t(g),className:"cal-toolbar__tab","data-active":l,"aria-label":S[g],"aria-pressed":l,title:S[g],children:[l&&(0,f.jsx)(Le.motion.span,{layoutId:"cal-toolbar-indicator",className:"cal-toolbar__indicator",transition:{type:"spring",stiffness:380,damping:34}}),(0,f.jsx)("span",{className:"cal-toolbar__tab-label",children:ba[g]})]},g)})})}),d&&(0,f.jsx)(Q,{variant:"primary",size:"md",rounded:"full",onClick:d,leftIcon:(0,f.jsx)(O.CalendarDays,{size:18,"aria-hidden":!0}),children:b})]})};var xt=D(require("clsx"),1),J=require("react/jsx-runtime"),Nt=({items:e,selectedIds:t,onToggle:a,className:o})=>{let n=new Set(t);return(0,J.jsx)("div",{className:(0,xt.default)("cal-type-filter",o),role:"group",children:e.map(r=>{let i=n.has(r.id);return(0,J.jsxs)("button",{type:"button",className:"cal-type-filter__item","data-selected":i,"aria-pressed":i,onClick:()=>a(r.id),children:[r.icon?(0,J.jsx)("span",{className:"cal-type-filter__icon",children:r.icon}):(0,J.jsx)("span",{className:"cal-type-filter__dot",style:r.color?{backgroundColor:r.color}:void 0}),(0,J.jsx)("span",{className:"cal-type-filter__label",children:r.label}),typeof r.count=="number"&&(0,J.jsx)("span",{className:"cal-type-filter__count",children:r.count})]},r.id)})})};var At=require("react"),ke=require("lucide-react"),Mt=D(require("clsx"),1);var w=require("react/jsx-runtime"),Re=e=>{let{placeholder:t,options:a,align:o="start",className:n}=e,[r,i]=(0,At.useState)(!1),d=e.multiple?new Set(e.value):new Set(e.value?[e.value]:[]),c=d.size,m=!e.multiple&&e.value?a.find(p=>p.value===e.value)?.label:void 0,S=p=>{if(e.multiple){e.onToggle(p);return}let b=e.clearable!==!1&&e.value===p?null:p;e.onChange(b),i(!1)};return(0,w.jsxs)($,{open:r,onOpenChange:i,children:[(0,w.jsx)(re,{asChild:!0,children:(0,w.jsxs)("button",{type:"button",className:(0,Mt.default)("cal-select__trigger",n),"data-open":r,"data-active":c>0,"aria-label":e["aria-label"]??t,children:[(0,w.jsx)("span",{className:"cal-select__placeholder",children:t}),m&&(0,w.jsx)("span",{className:"cal-select__value",children:m}),e.multiple&&c>0&&(0,w.jsx)("span",{className:"cal-select__badge",children:c}),(0,w.jsx)(ke.ChevronDown,{size:14,className:"cal-select__chevron","aria-hidden":!0})]})}),(0,w.jsx)(H,{className:"cal-select__panel",align:o,role:"listbox","aria-multiselectable":e.multiple??!1,children:a.map(p=>{let b=d.has(p.value);return(0,w.jsxs)("button",{type:"button",role:"option","aria-selected":b,className:"cal-select__option","data-selected":b,onClick:()=>S(p.value),children:[p.icon?(0,w.jsx)("span",{className:"cal-select__option-icon",children:p.icon}):p.color?(0,w.jsx)("span",{className:"cal-select__dot",style:{backgroundColor:p.color}}):null,(0,w.jsx)("span",{className:"cal-select__option-label",children:p.label}),b&&(0,w.jsx)(ke.Check,{size:14,className:"cal-select__check","aria-hidden":!0})]},p.value)})})]})};var wt=require("react/jsx-runtime"),Tt=({options:e,selected:t,onToggle:a,placeholder:o="Estado del evento",className:n})=>{let r=e.map(i=>({value:i.status,label:i.label,color:i.color}));return(0,wt.jsx)(Re,{multiple:!0,placeholder:o,options:r,value:t,onToggle:a,className:n})};var Z=require("react/jsx-runtime"),Pa={heading:"Event actions"},Lt=({state:e,actions:t,onClose:a,onSelectAction:o,messages:n})=>{if(!e.point||!e.date)return null;let r={...Pa,...n};return(0,Z.jsxs)($,{open:e.isOpen,onOpenChange:i=>!i&&a(),children:[(0,Z.jsx)(ie,{asChild:!0,children:(0,Z.jsx)("span",{className:"cal-slot-anchor",style:{left:e.point.x,top:e.point.y},"aria-hidden":!0})}),(0,Z.jsxs)(H,{align:"start",sideOffset:8,className:"cal-slot-popover",onEscapeKeyDown:a,children:[(0,Z.jsx)("p",{className:"cal-slot-popover__heading",children:r.heading}),t.map(i=>(0,Z.jsx)(Q,{type:"button",variant:"ghost",size:"sm",leftIcon:i.icon,className:"cal-slot-popover__action",onClick:()=>o({type:i.type,date:e.date}),children:i.label},i.type))]})]})};var kt=require("lucide-react"),Rt=D(require("clsx"),1),de=require("react/jsx-runtime"),Bt=({label:e,icon:t,onRemove:a,removeLabel:o="Remove",className:n})=>(0,de.jsxs)("span",{className:(0,Rt.default)("cal-type-chip",a&&"cal-type-chip--removable",n),children:[t&&(0,de.jsx)("span",{className:"cal-type-chip__icon",children:t}),e,a&&(0,de.jsx)("button",{type:"button",className:"cal-type-chip__remove","aria-label":`${o} ${e}`,onClick:a,children:(0,de.jsx)(kt.X,{size:12,"aria-hidden":!0})})]});var V=require("react");var Ft=({initialView:e="week",initialDate:t,firstDay:a=1,locale:o="es-CO"}={})=>{let[n,r]=(0,V.useState)(e),[i,d]=(0,V.useState)(()=>t??new Date),[c,m]=(0,V.useState)(()=>j(t??new Date,a)),S=n==="day"&&ve(i,new Date),p=(0,V.useCallback)(()=>{r(l=>l==="day"&&ve(i,new Date)?"week":"day"),d(new Date)},[i]),b=(0,V.useCallback)(l=>{if(l==="today"){p();return}d(E=>Se(E,n,l))},[n,p]),u=(0,V.useCallback)(l=>{r(l)},[]),M=(0,V.useCallback)(l=>{d(l),r(E=>E==="month"||E==="list"?"week":E)},[]),I=(0,V.useCallback)((l,E)=>{m({start:l,end:E})},[]),g=(0,V.useMemo)(()=>xa(n,i,a,o),[n,i,a,o]);return{activeView:n,selectedDate:i,visibleRange:c,periodLabel:g,todayActive:S,onChangeView:u,onNavigate:b,onSelectDate:M,onVisibleRangeChange:I,onToday:p,setActiveView:r,setSelectedDate:d}},xa=(e,t,a,o)=>{if(e==="day")return new Intl.DateTimeFormat(o,{weekday:"long",day:"numeric",month:"long"}).format(t);if(e==="month")return new Intl.DateTimeFormat(o,{month:"long",year:"numeric"}).format(t);let{start:n,end:r}=j(t,a),i=new Date(r);return i.setDate(i.getDate()-1),`${new Intl.DateTimeFormat(o,{day:"numeric",month:"short"}).formatRange(n,i)} ${n.getFullYear()}`};0&&(module.exports={APE_CALENDAR_ROOT_CLASS,Button,CalendarToolbar,DayEventDot,EmptyEventsState,EventAgendaList,EventBlockContent,EventChipMonth,EventChipPopover,EventListRow,EventStatusBadge,EventTypeChip,EventTypeFilterList,MacroCalendar,MiniMonthCalendar,MoreEventsPopover,Popover,PopoverAnchor,PopoverClose,PopoverContent,PopoverPortal,PopoverTrigger,Select,SlotContextActions,StatusFilterSelect,formatDurationLabel,formatHourLabel,getEventDayKeys,getEventDayStatuses,getWeekRange,isSameDay,mapAvailabilityToBackgroundEvents,mapAvailabilityToBusinessHours,mapEventToCalendarInput,shiftDate,toDayKey,useCalendarController});
2
2
  //# sourceMappingURL=index.cjs.map