@oneclick.dev/cms-core-modules 0.0.105 → 0.0.106

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.
Files changed (73) hide show
  1. package/dist/{Acquisition-CPlZzUBo.mjs → Acquisition-B2pM5vSp.mjs} +2 -2
  2. package/dist/{Acquisition-Br1Pfny3.js → Acquisition-Dt2rREU8.js} +1 -1
  3. package/dist/{Audience-BfkrmBuQ.js → Audience-Bs7b0TNm.js} +1 -1
  4. package/dist/{Audience-DTblSAiL.mjs → Audience-VLnUsQvW.mjs} +2 -2
  5. package/dist/{ContentEditor-B1nfKG_5.mjs → ContentEditor-BNLEv-qJ.mjs} +3119 -3098
  6. package/dist/{ContentEditor-DdFU8piH.js → ContentEditor-BUvvqfG1.js} +36 -36
  7. package/dist/{Create-qPeQxkdl.js → Create-89z41K73.js} +1 -1
  8. package/dist/{Create-BRBh0xjM.mjs → Create-Cn_Eufga.mjs} +5 -1
  9. package/dist/{Entries-C8UJkrVC.mjs → Entries-BdhUyJR5.mjs} +1 -1
  10. package/dist/{Entries-BaS6H6ak.js → Entries-CEXM_SkO.js} +1 -1
  11. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Ceoje52V.js +1 -0
  12. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-DMGcRmm-.mjs +1255 -0
  13. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-COrK1j0S.js +1 -0
  14. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-Vb3q8EVv.mjs +330 -0
  15. package/dist/{Overview-CpHhuiaV.js → Overview-Bn1Xx3_j.js} +1 -1
  16. package/dist/{Overview-BrCwozey.js → Overview-DC9io1bk.js} +1 -1
  17. package/dist/Overview-Di84CsR5.mjs +476 -0
  18. package/dist/Overview-UoZHUMUz.js +1 -0
  19. package/dist/{Overview-kaMhsIUq.mjs → Overview-ejh4vUMT.mjs} +3 -3
  20. package/dist/{Overview-D_T3K6aq.mjs → Overview-lWAyyenp.mjs} +1 -1
  21. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CuwREvXD.js +349 -0
  22. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-GYNZ_yhD.mjs +3077 -0
  23. package/dist/{SeoHealth-BzcWd_w7.mjs → SeoHealth-DsbVdd2l.mjs} +3 -3
  24. package/dist/SeoHealth-az1YuNF2.js +1 -0
  25. package/dist/{TableView-DXmEF6pY.mjs → TableView-Bm6HaRHm.mjs} +1 -1
  26. package/dist/{TableView-CPAw3h8g.js → TableView-DQW0A1oG.js} +1 -1
  27. package/dist/agenda-IOqtALWf.js +1 -0
  28. package/dist/agenda-neyeLWv-.mjs +1165 -0
  29. package/dist/cms-core-modules.css +1 -1
  30. package/dist/{index-C4YUVWzJ.js → index-A2kp8Isi.js} +6 -6
  31. package/dist/{index-BuzLn4Km.js → index-B5aBwdxY.js} +2 -2
  32. package/dist/{index-p5Uqu8c2.mjs → index-BRdCrvcz.mjs} +52 -47
  33. package/dist/{index-D3L8WAJI.js → index-BiT55eU0.js} +2 -2
  34. package/dist/{index-CMk3uhUt.mjs → index-Bvxc5xv_.mjs} +153 -147
  35. package/dist/{index-DQYBP8Js.js → index-G7cIlnGN.js} +4 -4
  36. package/dist/{index-DjDCYQ_6.mjs → index-X6LV64jK.mjs} +102 -101
  37. package/dist/{index-_2lRVt_k.mjs → index-uOkqO74I.mjs} +105 -107
  38. package/dist/index-unsDfNYv.mjs +1187 -0
  39. package/dist/index-vHmvbEwa.js +35 -0
  40. package/dist/index.cjs.js +1 -1
  41. package/dist/index.mjs +14 -14
  42. package/dist/interpolation-CHn59tIC.js +1 -0
  43. package/dist/interpolation-w7IRDJwK.mjs +180 -0
  44. package/dist/orders-C65SlpJy.mjs +618 -0
  45. package/dist/orders-XVzWAgG1.js +1 -0
  46. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +11 -2
  47. package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +55 -0
  48. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +6 -1
  49. package/dist/src/appointments/components/edit/NewReservationDialog/CustomerInformation.vue.d.ts +10 -0
  50. package/dist/src/appointments/components/edit/NewReservationDialog/NewReservationDialog.vue.d.ts +25 -1
  51. package/dist/src/appointments/components/edit/NewReservationDialog/QuickReservationAdder.vue.d.ts +26 -0
  52. package/dist/src/appointments/components/edit/NewReservationDialog/ReservationLines.vue.d.ts +31 -0
  53. package/dist/src/appointments/components/edit/dashboard/Timeline.vue.d.ts +3 -1
  54. package/dist/src/appointments/composables/useHorizontalScroll.d.ts +20 -0
  55. package/dist/src/lib/interpolation.d.ts +6 -0
  56. package/package.json +2 -2
  57. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-9Q7TMm4u.mjs +0 -401
  58. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-DiNzGl-q.js +0 -1
  59. package/dist/Overview-BYMrsZjM.mjs +0 -332
  60. package/dist/Overview-t0pG5xjA.js +0 -1
  61. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-Cz_22Oce.mjs +0 -2927
  62. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-DPPNc-Z5.js +0 -349
  63. package/dist/SeoHealth-09sEOu3G.js +0 -1
  64. package/dist/agenda-BNG05SAq.js +0 -1
  65. package/dist/agenda-D1RxMxBS.mjs +0 -1152
  66. package/dist/index-BtujSJeg.js +0 -35
  67. package/dist/index-dOdMm1pV.mjs +0 -1105
  68. package/dist/interpolation-DEDSLETn.mjs +0 -128
  69. package/dist/interpolation-DERg6Lwt.js +0 -1
  70. package/dist/orders-CzzcFQha.mjs +0 -559
  71. package/dist/orders-ETtbA4aQ.js +0 -1
  72. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +0 -110
  73. package/dist/src/appointments/pages/edit/orders.vue.d.ts +0 -98
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),x=require("@oneclick.dev/cms-kit"),i=require("lucide-vue-next"),y=require("./ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CuwREvXD.js"),te=require("./EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js"),oe=require("./OrderDetailDialog.vue_vue_type_script_setup_true_lang-COrK1j0S.js"),ne=require("./_plugin-vue_export-helper-BHFhmbuH.js"),ae={class:"space-y-6"},re={class:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4"},se={class:"text-2xl font-semibold tracking-tight flex items-center gap-2"},le={class:"flex gap-1 border rounded-lg p-1 w-fit"},ce={class:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4"},ie={class:"flex items-center gap-1"},de={class:"flex items-center gap-1"},ue={class:"flex items-center gap-2"},me={class:"flex items-center gap-1"},pe={class:"mt-2 text-sm text-muted-foreground"},fe={class:"orders-date-trigger"},ve={class:"relative mb-4"},ge={key:0,class:"mb-3 text-sm text-muted-foreground"},xe={key:1,class:"flex items-center justify-center py-8"},_e={key:2,class:"text-center py-8 text-muted-foreground"},ke={key:3,class:"text-center py-8 text-muted-foreground"},ye={key:4,class:"space-y-2"},he=["onClick"],Ne={class:"flex items-start justify-between"},Ve={class:"flex-1"},we={class:"font-medium"},be={class:"text-sm text-muted-foreground"},De={class:"text-sm text-muted-foreground"},Ee={class:"flex items-center gap-4 flex-wrap mt-1"},Ce={class:"flex items-center gap-2 text-xs text-muted-foreground"},Be={class:"flex items-center gap-2 text-xs text-muted-foreground"},Se={key:0,class:"flex items-center gap-1 text-xs text-muted-foreground"},Ie={class:"flex items-center gap-2 mt-1 text-xs text-muted-foreground"},Pe={class:"text-right"},Te={key:0,class:"inline-block px-2 py-1 text-xs rounded-full bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"},ze={key:1,class:"inline-block px-2 py-1 text-xs rounded-full bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},Oe={key:2,class:"inline-block px-2 py-1 text-xs rounded-full bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},je={key:3,class:"inline-block px-2 py-1 text-xs rounded-full bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"},Ae={key:4,class:"inline-block px-2 py-1 text-xs rounded-full bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},Re={key:5,class:"inline-block px-2 py-1 text-xs rounded-full bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},Fe={key:6,class:"inline-block px-2 py-1 text-xs rounded-full bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"},Ue={key:7,class:"text-sm font-medium mt-1"},qe=["onClick"],Le={class:"flex items-start justify-between"},Me={class:"flex-1"},$e={class:"flex items-center gap-2"},He={class:"font-medium"},Ye={class:"text-sm text-muted-foreground"},Ke={class:"text-sm text-muted-foreground"},Qe={class:"flex items-center gap-2 mt-1 text-xs text-muted-foreground"},Xe={class:"text-right"},Ge={key:0,class:"inline-block px-2 py-1 text-xs rounded-full bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"},Je={key:1,class:"inline-block px-2 py-1 text-xs rounded-full bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},We={key:2,class:"inline-block px-2 py-1 text-xs rounded-full bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"},Ze={class:"text-sm font-medium mt-1"},et=["onClick"],tt={class:"flex items-center justify-between"},ot={class:"flex items-center gap-4 flex-wrap"},nt={class:"flex items-center gap-2 text-xs text-muted-foreground"},at={class:"flex items-center gap-2 text-xs text-muted-foreground"},rt={key:0,class:"flex items-center gap-1 text-xs text-muted-foreground"},st={key:0,class:"text-right flex items-center gap-2"},lt={key:0,class:"inline-block px-2 py-1 text-xs rounded-full bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},ct={key:1,class:"inline-block px-2 py-1 text-xs rounded-full bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"},it={key:2,class:"inline-block px-2 py-1 text-xs rounded-full bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},dt={key:3,class:"inline-block px-2 py-1 text-xs rounded-full bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},ut={key:4,class:"inline-block px-2 py-1 text-xs rounded-full bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"},mt={key:5,class:"text-sm font-medium"},pt=e.defineComponent({__name:"orders",setup(vt){const P=x.useRoute();x.useRouter();const T=x.useOverlayParams(),{params:z}=x.useModuleRoute(),{config:h}=x.useModule(),w=x.useFirebaseIntegration(h.project),u=e.ref([]),b=e.ref([]),_=e.ref(!0),N=e.ref(null),D=e.computed(()=>N?.value?.metadataSchema||[]),p=e.ref(""),k=e.ref(null),E=e.ref(null),g=e.ref("confirmed"),f=new Date,l=e.ref(new Date),O=e.ref(null),q=e.computed(()=>({date:j(l.value),resource:null}));e.provide("event",q);const C=e.computed({get:()=>j(l.value),set:t=>{if(!t){l.value=new Date;return}l.value=new Date(`${t}T00:00:00`)}}),L=()=>{const t=O.value;if(t){if(typeof t.showPicker=="function"){t.showPicker();return}t.focus(),t.click()}},M=e.computed(()=>{const t=new Date(f);t.setDate(f.getDate()-1);const o=new Date(f);return o.setDate(f.getDate()+1),l.value.toDateString()===f.toDateString()?"Today":l.value.toDateString()===t.toDateString()?"Yesterday":l.value.toDateString()===o.toDateString()?"Tomorrow":l.value.toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric"})}),$=()=>{const t=new Date(l.value);t.setDate(t.getDate()-1),l.value=t},H=()=>{const t=new Date(l.value);t.setDate(t.getDate()+1),t<=f&&(l.value=t)},Y=e.computed(()=>{const t=new Date(l.value);return t.setDate(t.getDate()+1),t<=f}),K=()=>{l.value=new Date},j=t=>{const o=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0");return`${o}-${a}-${s}`},A=t=>t?new Date(t).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}):"",R=t=>t?new Date(t).toLocaleDateString("en-US",{weekday:"short",month:"short",day:"numeric"}):"",F=(t,o)=>{const a=b.value.find(d=>d.id===o.resourceId),s=t.id||t.orderId||o.orderId||"";return{customerInfo:t.customerInfo,amountDue:t.amountDue,amountPaid:t.amountPaid,status:t.status,reservationStatus:o.status,subtotal:t.subtotal,total:t.total,discount:t.discount,id:s,res_id:o.id,resourceId:o.resourceId,spots:o.spots,date:o.date,createdAt:t.createdAt,startTime:o.timeslot?.startTime,endTime:o.timeslot?.endTime,reservationPrice:o.totalPrice,reservationBasePrice:o.basePrice,reservationAddOnsPrice:o.addOnsPrice,pricingOptionId:o.pricingOptionId,pricingOption:o.pricingOption,resourceName:a?.name||"Unknown",resourceColor:a?.color,metadata:t.metadata||{},reservationMetadata:o.metadata||{},adjustments:t.adjustments||[],reservationAdjustments:o.adjustments||[]}},B=async()=>{await e.nextTick(),await new Promise(t=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>t());return}t()})},S=e.computed(()=>p.value.trim()?new y.Fuse(u.value,{keys:["customerInfo.firstName","customerInfo.lastName","customerInfo.email","customerInfo.phone","resourceName"],threshold:.3,ignoreLocation:!0}).search(p.value).map(o=>o.item):u.value),Q=e.computed(()=>{const t=new Map;for(const o of S.value){t.has(o.id)||t.set(o.id,{id:o.id,customerInfo:o.customerInfo,status:o.status,createdAt:o.createdAt,metadata:o.metadata||{},reservations:[],adjustments:o.adjustments||[],totalPrice:0,totalSpots:0});const a=t.get(o.id);a.reservations.push(o),a.totalPrice=typeof o.total=="number"?o.total:a.totalPrice+(o.reservationPrice||0),a.totalSpots+=o.spots||0}return Array.from(t.values())}),V=e.computed(()=>({spots:u.value.reduce((t,o)=>t+(o.spots||0),0),bookings:u.value.length,revenue:u.value.reduce((t,o)=>t+(o.reservationPrice||0),0)})),X=()=>{p.value=""},G=async()=>{try{const t=z.value.id,o=await w.get(h.agendaCollection,t);N.value=o,b.value=o?.resources?.filter(a=>a.isActive)||[]}catch(t){console.error("Error loading resources:",t),b.value=[]}},v=async()=>{_.value=!0,u.value=[];try{const t=z.value.id,o=new Date(l.value);o.setHours(0,0,0,0);const a=new Date(l.value);a.setHours(23,59,59,999);const s=await w.find(h.reservationsCollection,{filters:[{field:"agendaId",operator:"==",value:t},{field:"createdAt",operator:">=",value:o.toISOString()},{field:"createdAt",operator:"<=",value:a.toISOString()},{field:"status",operator:"==",value:g.value}]});let d=[];s.forEach(c=>{(c.reservations||[]).forEach(I=>{d.push(F(c,I))})}),u.value=d.sort((c,m)=>(m.createdAt||"").localeCompare(c.createdAt||""))}catch(t){console.error("Error loading orders:",t),u.value=[]}finally{_.value=!1}},J=async()=>{await G(),await v()},U=async(t,o)=>{const a=await w.get(h.reservationsCollection,t);if(!a)return;const s={...a,id:a.id||t},d=(s.reservations||[]).map(c=>F(s,c));if(o){const c=d.find(m=>m.res_id===o);if(!c)return;await B(),k.value?.openDialog(c);return}d.length&&(await B(),E.value?.openDialog({id:s.id,customerInfo:s.customerInfo,status:s.status,createdAt:s.createdAt,metadata:s.metadata||{},reservations:d,adjustments:s.adjustments||[],totalPrice:typeof s.total=="number"?s.total:d.reduce((c,m)=>c+(m.reservationPrice||0),0),totalSpots:d.reduce((c,m)=>c+(m.spots||0),0)}))},W=async t=>{await B(),k.value?.openDialog(t)};return J(),e.onMounted(async()=>{const t=T.value.orderId||P.query.orderId,o=T.value.reservationId||P.query.reservationId;if(t){const a=new URL(window.location.href);a.searchParams.delete("orderId"),a.searchParams.delete("reservationId"),window.history.replaceState(window.history.state,"",a.toString()),await U(t,o)}}),e.watch(l,()=>{v()}),e.watch(g,()=>{v()}),(t,o)=>{const a=e.resolveComponent("Button"),s=e.resolveComponent("Badge"),d=e.resolveComponent("CardTitle"),c=e.resolveComponent("CardDescription"),m=e.resolveComponent("CardHeader"),I=e.resolveComponent("Input"),Z=e.resolveComponent("CardContent"),ee=e.resolveComponent("Card");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(te._sfc_main,null,{default:e.withCtx(()=>[e.createElementVNode("div",ae,[e.createElementVNode("div",re,[e.createElementVNode("div",null,[e.createElementVNode("h1",se,[e.createVNode(e.unref(i.ShoppingBag),{class:"size-6"}),o[4]||(o[4]=e.createTextVNode(" Orders ",-1))]),o[5]||(o[5]=e.createElementVNode("p",{class:"text-muted-foreground text-sm mt-1"}," View orders by when they were placed ",-1))])]),e.createElementVNode("div",le,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["confirmed","pending","cancelled"],n=>e.createVNode(a,{key:n,variant:e.unref(g)===n?"default":"ghost",size:"sm",class:"capitalize",onClick:r=>g.value=n},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n),1)]),_:2},1032,["variant","onClick"])),64))]),e.createVNode(ee,null,{default:e.withCtx(()=>[e.createVNode(m,null,{default:e.withCtx(()=>[e.createElementVNode("div",ce,[e.createElementVNode("div",null,[e.createVNode(d,{class:"flex items-center gap-2"},{default:e.withCtx(()=>[o[6]||(o[6]=e.createTextVNode(" Orders received ",-1)),e.unref(V).bookings>0?(e.openBlock(),e.createBlock(s,{key:0,variant:"secondary"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(V).bookings),1)]),_:1})):e.createCommentVNode("",!0)]),_:1}),e.createVNode(c,{class:"flex items-center gap-4 mt-1"},{default:e.withCtx(()=>[e.createElementVNode("span",ie,[e.createVNode(e.unref(i.Users),{size:14}),e.createTextVNode(" "+e.toDisplayString(e.unref(V).spots)+" spots ",1)]),e.createElementVNode("span",de," €"+e.toDisplayString(e.unref(V).revenue.toFixed(2))+e.toDisplayString(e.unref(g)==="pending"?" pending ":e.unref(g)==="cancelled"?" cancelled ":" ")+"revenue ",1)]),_:1})]),e.createElementVNode("div",ue,[e.createElementVNode("div",me,[e.createVNode(a,{variant:"outline",size:"icon",class:"size-8",onClick:$},{default:e.withCtx(()=>[e.createVNode(e.unref(i.ChevronLeft),{size:16})]),_:1}),e.createVNode(a,{variant:"outline",size:"sm",class:"h-8 px-3 text-xs",onClick:K},{default:e.withCtx(()=>[...o[7]||(o[7]=[e.createTextVNode(" Today ",-1)])]),_:1}),e.createVNode(a,{variant:"outline",size:"icon",class:"size-8",onClick:H,disabled:!e.unref(Y)},{default:e.withCtx(()=>[e.createVNode(e.unref(i.ChevronRight),{size:16})]),_:1},8,["disabled"])]),e.createVNode(a,{variant:"outline",size:"icon",onClick:v,disabled:e.unref(_)},{default:e.withCtx(()=>[e.createVNode(e.unref(i.RefreshCw),{size:16,class:e.normalizeClass({"animate-spin":e.unref(_)})},null,8,["class"])]),_:1},8,["disabled"])])]),e.createElementVNode("div",pe,[e.createElementVNode("div",fe,[e.createVNode(a,{type:"button",variant:"outline",onClick:L},{default:e.withCtx(()=>[e.createVNode(e.unref(i.CalendarIcon),{class:"size-4"}),e.createTextVNode(" "+e.toDisplayString(e.unref(M)),1)]),_:1}),e.withDirectives(e.createElementVNode("input",{ref_key:"dateInputRef",ref:O,"onUpdate:modelValue":o[0]||(o[0]=n=>e.isRef(C)?C.value=n:null),type:"date",class:"orders-date-picker","aria-label":"Select order date"},null,512),[[e.vModelText,e.unref(C)]])])])]),_:1}),e.createVNode(Z,null,{default:e.withCtx(()=>[e.createElementVNode("div",ve,[e.createVNode(e.unref(i.Search),{size:16,class:"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"}),e.createVNode(I,{modelValue:e.unref(p),"onUpdate:modelValue":o[1]||(o[1]=n=>e.isRef(p)?p.value=n:null),placeholder:"Search by name, email, or phone...",class:"pl-9 pr-9"},null,8,["modelValue"]),e.unref(p)?(e.openBlock(),e.createBlock(a,{key:0,variant:"ghost",size:"icon",class:"absolute right-1 top-1/2 -translate-y-1/2 h-7 w-7",onClick:X},{default:e.withCtx(()=>[e.createVNode(e.unref(i.X),{size:14})]),_:1})):e.createCommentVNode("",!0)]),e.unref(p)?(e.openBlock(),e.createElementBlock("div",ge," Showing "+e.toDisplayString(e.unref(S).length)+" of "+e.toDisplayString(e.unref(u).length)+" orders ",1)):e.createCommentVNode("",!0),e.unref(_)?(e.openBlock(),e.createElementBlock("div",xe,[...o[8]||(o[8]=[e.createElementVNode("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"},null,-1)])])):e.unref(u).length===0?(e.openBlock(),e.createElementBlock("div",_e,[e.createVNode(e.unref(i.ShoppingBag),{class:"size-12 mx-auto mb-3 opacity-50"}),o[9]||(o[9]=e.createElementVNode("p",null,"No orders received on this day",-1))])):e.unref(S).length===0?(e.openBlock(),e.createElementBlock("div",ke," No orders match your search ")):(e.openBlock(),e.createElementBlock("div",ye,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Q),n=>(e.openBlock(),e.createElementBlock("div",{key:n.id,class:"border rounded-lg overflow-hidden shadow-sm"},[n.reservations.length===1?(e.openBlock(),e.createElementBlock("div",{key:0,class:"p-3 hover:bg-muted/50 transition-colors cursor-pointer",onClick:r=>e.unref(k)?.openDialog(n.reservations[0])},[e.createElementVNode("div",Ne,[e.createElementVNode("div",Ve,[e.createElementVNode("div",we,e.toDisplayString(n.customerInfo?.firstName||n.customerInfo?.lastName?[n.customerInfo?.firstName,n.customerInfo?.lastName].filter(Boolean).join(" "):"Unknown Customer"),1),e.createElementVNode("div",be,e.toDisplayString(n.customerInfo?.email),1),e.createElementVNode("div",De,e.toDisplayString(n.customerInfo?.phone),1),e.createElementVNode("div",Ee,[e.createElementVNode("div",Ce,[e.createVNode(e.unref(i.CalendarIcon),{size:12}),e.createElementVNode("span",null,e.toDisplayString(R(n.reservations[0].date))+" · "+e.toDisplayString(n.reservations[0].startTime)+" - "+e.toDisplayString(n.reservations[0].endTime),1)]),e.createElementVNode("div",Be,[e.createVNode(e.unref(i.Users),{size:12}),e.createElementVNode("span",null,e.toDisplayString(n.reservations[0].spots)+" spots",1)]),n.reservations[0].resourceName?(e.openBlock(),e.createElementBlock("div",Se,[e.createElementVNode("div",{class:"w-3 h-3 rounded-full",style:e.normalizeStyle({backgroundColor:n.reservations[0].resourceColor||"#6b7280"})},null,4),e.createElementVNode("span",null,e.toDisplayString(n.reservations[0].resourceName),1)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ie,[e.createVNode(e.unref(i.Clock),{size:12}),e.createElementVNode("span",null,"Ordered at "+e.toDisplayString(A(n.createdAt)),1)]),e.createVNode(y._sfc_main,{metadata:{...n.reservations[0].metadata,...n.reservations[0].reservationMetadata},schema:e.unref(D),"display-filter":["highlight","badge"],compact:"",class:"mt-1"},null,8,["metadata","schema"])]),e.createElementVNode("div",Pe,[n.reservations[0].status==="pending"?(e.openBlock(),e.createElementBlock("span",Te,"Pending")):n.reservations[0].status==="cancelled"?(e.openBlock(),e.createElementBlock("span",ze,"Cancelled")):n.reservations[0].reservationStatus==="needs_approval"?(e.openBlock(),e.createElementBlock("span",Oe,"Needs Approval")):n.reservations[0].reservationStatus==="approved"?(e.openBlock(),e.createElementBlock("span",je,"Approved")):n.reservations[0].reservationStatus==="cancelled"?(e.openBlock(),e.createElementBlock("span",Ae,"Cancelled")):n.reservations[0].reservationStatus==="rejected"?(e.openBlock(),e.createElementBlock("span",Re,"Rejected")):(e.openBlock(),e.createElementBlock("span",Fe,"Pending")),n.reservations[0].reservationPrice||n.reservations[0].reservationPrice===0?(e.openBlock(),e.createElementBlock("div",Ue," €"+e.toDisplayString(n.reservations[0].reservationPrice.toFixed(2)),1)):e.createCommentVNode("",!0)])])],8,he)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",{class:"p-3 bg-muted/30 hover:bg-muted/50 transition-colors cursor-pointer",onClick:r=>e.unref(E)?.openDialog(n)},[e.createElementVNode("div",Le,[e.createElementVNode("div",Me,[e.createElementVNode("div",$e,[e.createElementVNode("div",He,e.toDisplayString(n.customerInfo?.firstName||n.customerInfo?.lastName?[n.customerInfo?.firstName,n.customerInfo?.lastName].filter(Boolean).join(" "):"Unknown Customer"),1),e.createVNode(s,{variant:"secondary",class:"text-xs"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.reservations.length)+" reservations ",1)]),_:2},1024)]),e.createElementVNode("div",Ye,e.toDisplayString(n.customerInfo?.email),1),e.createElementVNode("div",Ke,e.toDisplayString(n.customerInfo?.phone),1),e.createElementVNode("div",Qe,[e.createVNode(e.unref(i.Clock),{size:12}),e.createElementVNode("span",null,"Ordered at "+e.toDisplayString(A(n.createdAt)),1)]),e.createVNode(y._sfc_main,{metadata:n.metadata,schema:e.unref(D),"display-filter":["highlight","badge"],compact:"",class:"mt-1"},null,8,["metadata","schema"])]),e.createElementVNode("div",Xe,[n.status==="pending"?(e.openBlock(),e.createElementBlock("span",Ge,"Pending")):n.status==="cancelled"?(e.openBlock(),e.createElementBlock("span",Je,"Cancelled")):(e.openBlock(),e.createElementBlock("span",We,"Confirmed")),e.createElementVNode("div",Ze," €"+e.toDisplayString(n.totalPrice.toFixed(2)),1)])])],8,qe),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.reservations,r=>(e.openBlock(),e.createElementBlock("div",{key:r.res_id,class:"p-3 border-t bg-muted/50 dark:bg-transparent dark:hover:bg-muted/50 transition-colors cursor-pointer",onClick:gt=>e.unref(k)?.openDialog(r)},[e.createElementVNode("div",tt,[e.createElementVNode("div",ot,[e.createElementVNode("div",nt,[e.createVNode(e.unref(i.CalendarIcon),{size:12}),e.createElementVNode("span",null,e.toDisplayString(R(r.date))+" · "+e.toDisplayString(r.startTime)+" - "+e.toDisplayString(r.endTime),1)]),e.createElementVNode("div",at,[e.createVNode(e.unref(i.Users),{size:12}),e.createElementVNode("span",null,e.toDisplayString(r.spots)+" spots",1)]),r.resourceName?(e.openBlock(),e.createElementBlock("div",rt,[e.createElementVNode("div",{class:"w-3 h-3 rounded-full",style:e.normalizeStyle({backgroundColor:r.resourceColor||"#6b7280"})},null,4),e.createElementVNode("span",null,e.toDisplayString(r.resourceName),1)])):e.createCommentVNode("",!0)]),r.status==="confirmed"?(e.openBlock(),e.createElementBlock("div",st,[r.reservationStatus==="needs_approval"?(e.openBlock(),e.createElementBlock("span",lt,"Needs Approval")):r.reservationStatus==="approved"?(e.openBlock(),e.createElementBlock("span",ct,"Approved")):r.reservationStatus==="cancelled"?(e.openBlock(),e.createElementBlock("span",it,"Cancelled")):r.reservationStatus==="rejected"?(e.openBlock(),e.createElementBlock("span",dt,"Rejected")):(e.openBlock(),e.createElementBlock("span",ut,"Pending")),r.reservationPrice||r.reservationPrice===0?(e.openBlock(),e.createElementBlock("div",mt," €"+e.toDisplayString(r.reservationPrice.toFixed(2)),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),e.createVNode(y._sfc_main,{metadata:r.reservationMetadata,schema:e.unref(D),"display-filter":["highlight","badge"],compact:"",class:"mt-1"},null,8,["metadata","schema"])],8,et))),128))],64))]))),128))]))]),_:1})]),_:1})])]),_:1}),e.createVNode(y._sfc_main$1,{ref_key:"reservationDetailDialog",ref:k,"agenda-data":e.unref(N),"show-order-link":"",onCancelled:v,onConfirmed:v,onRejected:v,onOpenOrder:o[2]||(o[2]=n=>U(n))},null,8,["agenda-data"]),e.createVNode(oe._sfc_main,{ref_key:"orderDetailDialog",ref:E,"agenda-data":e.unref(N),onOpenReservation:o[3]||(o[3]=n=>W(n))},null,8,["agenda-data"])],64)}}}),ft=ne._export_sfc(pt,[["__scopeId","data-v-b75d229e"]]);exports.default=ft;
@@ -30,17 +30,22 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
30
30
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
31
31
  reservationDetailDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
32
32
  agendaData: any;
33
+ showOrderLink?: boolean;
33
34
  }> & Readonly<{
34
35
  onConfirmed?: (() => any) | undefined;
35
36
  onCancelled?: (() => any) | undefined;
36
37
  onRejected?: (() => any) | undefined;
38
+ onOpenOrder?: ((orderId: string) => any) | undefined;
37
39
  }>, {
38
40
  openDialog: (order: any) => void;
39
41
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
40
42
  confirmed: () => any;
41
43
  cancelled: () => any;
42
44
  rejected: () => any;
43
- }, import('vue').PublicProps, {}, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
45
+ openOrder: (orderId: string) => any;
46
+ }, import('vue').PublicProps, {
47
+ showOrderLink: boolean;
48
+ }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
44
49
  cancelReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
45
50
  onConfirm?: ((...args: any[]) => any) | undefined;
46
51
  }>, {
@@ -116,12 +121,16 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
116
121
  Defaults: {};
117
122
  }, Readonly<{
118
123
  agendaData: any;
124
+ showOrderLink?: boolean;
119
125
  }> & Readonly<{
120
126
  onConfirmed?: (() => any) | undefined;
121
127
  onCancelled?: (() => any) | undefined;
122
128
  onRejected?: (() => any) | undefined;
129
+ onOpenOrder?: ((orderId: string) => any) | undefined;
123
130
  }>, {
124
131
  openDialog: (order: any) => void;
125
- }, {}, {}, {}, {}> | null;
132
+ }, {}, {}, {}, {
133
+ showOrderLink: boolean;
134
+ }> | null;
126
135
  }, HTMLDivElement>;
127
136
  export default _default;
@@ -0,0 +1,55 @@
1
+ interface AdjustmentLine {
2
+ label?: string;
3
+ type?: string;
4
+ value: number;
5
+ }
6
+ interface ReservationLine {
7
+ id: string;
8
+ res_id?: string;
9
+ customerInfo?: {
10
+ firstName?: string;
11
+ lastName?: string;
12
+ email?: string;
13
+ phone?: string;
14
+ };
15
+ status?: string;
16
+ reservationStatus?: string;
17
+ createdAt?: string;
18
+ date?: string;
19
+ startTime?: string;
20
+ endTime?: string;
21
+ spots?: number;
22
+ total?: number;
23
+ subtotal?: number;
24
+ discount?: number;
25
+ amountPaid?: number;
26
+ amountDue?: number;
27
+ reservationPrice?: number;
28
+ pricingOption?: any;
29
+ resourceName?: string;
30
+ resourceColor?: string;
31
+ metadata?: Record<string, any>;
32
+ reservationMetadata?: Record<string, any>;
33
+ }
34
+ interface OrderGroup {
35
+ id: string;
36
+ customerInfo?: ReservationLine['customerInfo'];
37
+ status?: string;
38
+ createdAt?: string;
39
+ metadata?: Record<string, any>;
40
+ reservations: ReservationLine[];
41
+ adjustments?: AdjustmentLine[];
42
+ totalPrice: number;
43
+ totalSpots: number;
44
+ }
45
+ type __VLS_Props = {
46
+ agendaData: any;
47
+ };
48
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {
49
+ openDialog: (order: OrderGroup) => void;
50
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
51
+ openReservation: (reservation: ReservationLine) => any;
52
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
53
+ onOpenReservation?: ((reservation: ReservationLine) => any) | undefined;
54
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
55
+ export default _default;
@@ -1,5 +1,6 @@
1
1
  type __VLS_Props = {
2
2
  agendaData: any;
3
+ showOrderLink?: boolean;
3
4
  };
4
5
  declare const _default: import('vue').DefineComponent<__VLS_Props, {
5
6
  openDialog: (order: any) => void;
@@ -7,11 +8,15 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
7
8
  confirmed: () => any;
8
9
  cancelled: () => any;
9
10
  rejected: () => any;
11
+ openOrder: (orderId: string) => any;
10
12
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
11
13
  onConfirmed?: (() => any) | undefined;
12
14
  onCancelled?: (() => any) | undefined;
13
15
  onRejected?: (() => any) | undefined;
14
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
16
+ onOpenOrder?: ((orderId: string) => any) | undefined;
17
+ }>, {
18
+ showOrderLink: boolean;
19
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
15
20
  cancelReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
16
21
  onConfirm?: ((...args: any[]) => any) | undefined;
17
22
  }>, {
@@ -0,0 +1,10 @@
1
+ type CustomerInfoValue = string | boolean;
2
+ type __VLS_Props = {
3
+ agendaData?: any;
4
+ };
5
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {
6
+ getCustomerInfo: () => Record<string, CustomerInfoValue>;
7
+ reset: () => void;
8
+ validateForm: () => boolean;
9
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
10
+ export default _default;
@@ -1,2 +1,26 @@
1
- declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
1
+ type __VLS_Props = {
2
+ agendaData?: any;
3
+ };
4
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
5
+ customerInformationRef: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
6
+ agendaData?: any;
7
+ }> & Readonly<{}>, {
8
+ getCustomerInfo: () => Record<string, string | boolean>;
9
+ reset: () => void;
10
+ validateForm: () => boolean;
11
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, HTMLDivElement, import('vue').ComponentProvideOptions, {
12
+ P: {};
13
+ B: {};
14
+ D: {};
15
+ C: {};
16
+ M: {};
17
+ Defaults: {};
18
+ }, Readonly<{
19
+ agendaData?: any;
20
+ }> & Readonly<{}>, {
21
+ getCustomerInfo: () => Record<string, string | boolean>;
22
+ reset: () => void;
23
+ validateForm: () => boolean;
24
+ }, {}, {}, {}, {}> | null;
25
+ }, any>;
2
26
  export default _default;
@@ -0,0 +1,26 @@
1
+ type __VLS_Props = {
2
+ agendaData?: any;
3
+ surface?: 'card' | 'popover';
4
+ };
5
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
6
+ add: (payload: {
7
+ date: any;
8
+ resourceId: string;
9
+ pricingOptionId: string;
10
+ startTimes: string[];
11
+ spots: number;
12
+ }) => any;
13
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
14
+ onAdd?: ((payload: {
15
+ date: any;
16
+ resourceId: string;
17
+ pricingOptionId: string;
18
+ startTimes: string[];
19
+ spots: number;
20
+ }) => any) | undefined;
21
+ }>, {
22
+ surface: "card" | "popover";
23
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
24
+ hourScrollContainer: HTMLDivElement;
25
+ }, HTMLDivElement>;
26
+ export default _default;
@@ -0,0 +1,31 @@
1
+ interface ReservationForm {
2
+ id: string;
3
+ spots: number;
4
+ paid: number;
5
+ resourceId: string;
6
+ pricingOption: string;
7
+ date: string;
8
+ dateValue?: any;
9
+ startTime: string;
10
+ }
11
+ interface QuickReservationPayload {
12
+ date: any;
13
+ resourceId: string;
14
+ pricingOptionId: string;
15
+ startTimes: string[];
16
+ spots: number;
17
+ }
18
+ type __VLS_Props = {
19
+ modelValue: ReservationForm[];
20
+ agendaData?: any;
21
+ };
22
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
23
+ "update:modelValue": (value: ReservationForm[]) => any;
24
+ add: () => any;
25
+ "quick-add": (payload: QuickReservationPayload) => any;
26
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
27
+ "onUpdate:modelValue"?: ((value: ReservationForm[]) => any) | undefined;
28
+ onAdd?: (() => any) | undefined;
29
+ "onQuick-add"?: ((payload: QuickReservationPayload) => any) | undefined;
30
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
31
+ export default _default;
@@ -30,5 +30,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
30
30
  "onUpdate:modelValue"?: ((value: Date) => any) | undefined;
31
31
  "onUpdate:viewMode"?: ((value: "single" | "stacked") => any) | undefined;
32
32
  "onUpdate:selectedResource"?: ((value: string | null) => any) | undefined;
33
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
33
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
34
+ dateInputRef: HTMLInputElement;
35
+ }, any>;
34
36
  export default _default;
@@ -0,0 +1,20 @@
1
+ export interface UseHorizontalScrollOptions {
2
+ dragSpeed?: number;
3
+ dragThreshold?: number;
4
+ edgeThreshold?: number;
5
+ ignoreDragSelector?: string;
6
+ observeMutations?: boolean;
7
+ scrollStep?: number;
8
+ }
9
+ export declare function useHorizontalScroll(options?: UseHorizontalScrollOptions): {
10
+ canScrollLeft: globalThis.ComputedRef<boolean>;
11
+ canScrollRight: globalThis.ComputedRef<boolean>;
12
+ containerRef: globalThis.Ref<HTMLElement | null, HTMLElement | null>;
13
+ isDragging: globalThis.Ref<boolean, boolean>;
14
+ isScrollable: globalThis.Ref<boolean, boolean>;
15
+ refresh: () => void;
16
+ scrollNext: () => void;
17
+ scrollPrev: () => void;
18
+ showLeftShadow: globalThis.Ref<boolean, boolean>;
19
+ showRightShadow: globalThis.Ref<boolean, boolean>;
20
+ };
@@ -1,5 +1,11 @@
1
1
  export declare function interpolateTemplateFromVariableContext(template: string, variableContext: Variable[]): unknown;
2
2
  export declare function interpolateTemplateFromVariableObject(template: string, variableContext: Record<string, any>, mode?: 'text' | 'js'): unknown;
3
+ interface InterpolationSegment {
4
+ start: number;
5
+ end: number;
6
+ expression: string;
7
+ }
8
+ export declare function findInterpolationSegments(template: string): InterpolationSegment[];
3
9
  interface Variable {
4
10
  name: string;
5
11
  type: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneclick.dev/cms-core-modules",
3
- "version": "0.0.105",
3
+ "version": "0.0.106",
4
4
  "main": "dist/index.cjs.js",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",
@@ -28,7 +28,7 @@
28
28
  "peerDependencies": {
29
29
  "@formkit/drag-and-drop": "^0.5.3",
30
30
  "@internationalized/date": "^3.8.0",
31
- "@oneclick.dev/cms-kit": "0.0.117",
31
+ "@oneclick.dev/cms-kit": "0.0.118",
32
32
  "@tanstack/vue-table": "^8.21.3",
33
33
  "@vee-validate/zod": "^4.15.0",
34
34
  "@vue-flow/core": "^1.48.1",