@oneclick.dev/cms-core-modules 0.0.115 → 0.0.116

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 (87) hide show
  1. package/dist/{ContentEditor-MctMvN7D.js → ContentEditor-CsbOFg3a.js} +52 -52
  2. package/dist/{ContentEditor-C5yNNLeV.mjs → ContentEditor-Df5uWpVC.mjs} +10337 -8677
  3. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-gozJKXvM.js +1 -0
  4. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-pDO9b4Pv.mjs +77 -0
  5. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BHeMJ6nr.mjs +1476 -0
  6. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-C2zwt5UF.js +1 -0
  7. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BYSeUW_V.js +925 -0
  8. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DwAUYR8p.mjs +5021 -0
  9. package/dist/Overview-CBahJviK.js +1 -0
  10. package/dist/Overview-CVQ1pkuD.mjs +527 -0
  11. package/dist/TableView-Csv5Lycy.mjs +6234 -0
  12. package/dist/TableView-Cwal0BPW.js +4 -0
  13. package/dist/agenda-BSdlrfxv.mjs +1253 -0
  14. package/dist/agenda-Bev1mO7E.js +1 -0
  15. package/dist/availability-ClBGVgE9.js +1 -0
  16. package/dist/availability-D8JdA4rP.mjs +274 -0
  17. package/dist/booking-data-Px7XCIfU.mjs +1024 -0
  18. package/dist/booking-data-aMS1p_3g.js +1 -0
  19. package/dist/cms-core-modules.css +1 -1
  20. package/dist/exceptions-CqityDo9.mjs +651 -0
  21. package/dist/exceptions-DXqc0Nza.js +1 -0
  22. package/dist/index-CM4eaK5T.mjs +1245 -0
  23. package/dist/index-DliTZzwI.js +35 -0
  24. package/dist/index.cjs.js +1 -1
  25. package/dist/index.mjs +12 -11
  26. package/dist/orders-1swJVKw2.js +1 -0
  27. package/dist/orders-D41GbzIa.mjs +624 -0
  28. package/dist/payment-BJHgpaeT.js +1 -0
  29. package/dist/payment-D5j-68Ig.mjs +1278 -0
  30. package/dist/refunds-D9nTeD2d.mjs +436 -0
  31. package/dist/refunds-oVB2Opib.js +1 -0
  32. package/dist/resources-8WouFvJe.js +1 -0
  33. package/dist/resources-B-D5MUhV.mjs +975 -0
  34. package/dist/server-handlers.cjs.js +1 -1
  35. package/dist/server-handlers.mjs +626 -515
  36. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +146 -5
  37. package/dist/src/appointments/components/edit/EventDialog/CancelRefundReservationDialog.vue.d.ts +33 -0
  38. package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +26 -8
  39. package/dist/src/appointments/components/edit/EventDialog/RefundDetailsDisplay.vue.d.ts +8 -0
  40. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +91 -5
  41. package/dist/src/appointments/components/edit/EventDialog/TransferReservationDialog.vue.d.ts +20 -3
  42. package/dist/src/appointments/components/edit/NewReservationDialog/ReservationLines.vue.d.ts +5 -0
  43. package/dist/src/appointments/components/edit/OrderMetadataDisplay.vue.d.ts +20 -2
  44. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +240 -0
  45. package/dist/src/appointments/composables/useAgendaMetadataSchema.d.ts +37 -0
  46. package/dist/src/appointments/pages/edit/orders.vue.d.ts +225 -0
  47. package/dist/src/appointments/pages/edit/refunds.vue.d.ts +2 -0
  48. package/dist/src/appointments/server.d.ts +2 -0
  49. package/dist/src/appointments/types.d.ts +6 -0
  50. package/dist/src/appointments/utils/printReservation.d.ts +65 -3
  51. package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/Table.d.ts +36 -0
  52. package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/Table.vue.d.ts +95 -0
  53. package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/TableCell.d.ts +13 -0
  54. package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/TableHeader.d.ts +6 -0
  55. package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/TableRow.d.ts +6 -0
  56. package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/index.d.ts +4 -0
  57. package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/TableMenu.vue.d.ts +13 -0
  58. package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/index.d.ts +14 -0
  59. package/package.json +2 -2
  60. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs +0 -76
  61. package/dist/EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js +0 -1
  62. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Baqy-rTT.js +0 -1
  63. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Dx4Bpa2m.mjs +0 -1263
  64. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-COrK1j0S.js +0 -1
  65. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-Vb3q8EVv.mjs +0 -330
  66. package/dist/Overview-98nkJUWN.mjs +0 -481
  67. package/dist/Overview-Dl8cMlsr.js +0 -1
  68. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CuwREvXD.js +0 -349
  69. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-GYNZ_yhD.mjs +0 -3077
  70. package/dist/TableView-CVfkyj1k.js +0 -4
  71. package/dist/TableView-zDx0IegJ.mjs +0 -6096
  72. package/dist/agenda-BaJu3-1c.js +0 -1
  73. package/dist/agenda-BwVY_8oM.mjs +0 -1165
  74. package/dist/availability-CMrRa5y2.mjs +0 -269
  75. package/dist/availability-Cf2YfMwM.js +0 -1
  76. package/dist/booking-data-DgJd0BcM.mjs +0 -889
  77. package/dist/booking-data-Di5GmH_8.js +0 -1
  78. package/dist/exceptions-B6P9UiCj.js +0 -1
  79. package/dist/exceptions-De9-FvdP.mjs +0 -646
  80. package/dist/index-DL6orwdK.js +0 -35
  81. package/dist/index-hH3e-IYz.mjs +0 -1187
  82. package/dist/orders-C65SlpJy.mjs +0 -618
  83. package/dist/orders-XVzWAgG1.js +0 -1
  84. package/dist/payment-C3ohkehF.mjs +0 -1080
  85. package/dist/payment-Dfr-Ro-a.js +0 -1
  86. package/dist/resources-CxeFd57z.js +0 -1
  87. package/dist/resources-DwYxn2Vi.mjs +0 -811
@@ -1 +0,0 @@
1
- "use strict";const e=require("vue"),a=require("lucide-vue-next"),g=require("./ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CuwREvXD.js"),M={key:0,class:"space-y-6 py-4"},T={class:"space-y-3"},P={class:"bg-muted/30 rounded-lg p-4 space-y-3"},$={class:"flex items-center gap-3"},j={class:"h-10 w-10 rounded-full bg-primary/10 flex items-center justify-center"},O={class:"font-medium"},I={class:"grid gap-2 text-sm"},U={key:0,class:"flex items-center gap-2 text-muted-foreground"},F=["href"],A={key:1,class:"flex items-center gap-2 text-muted-foreground"},L=["href"],q={class:"space-y-3"},H={class:"grid grid-cols-2 gap-3"},G={class:"bg-muted/30 rounded-lg p-3"},J={class:"flex items-center gap-2 text-muted-foreground mb-1"},K={class:"font-medium"},Q={class:"bg-muted/30 rounded-lg p-3"},W={class:"flex items-center gap-2 text-muted-foreground mb-1"},X={class:"font-medium"},Y={class:"bg-muted/30 rounded-lg p-3 col-span-2"},Z={class:"flex items-center gap-2 text-muted-foreground mb-1"},ee={class:"font-medium"},te={class:"space-y-3"},oe={class:"space-y-2"},ne=["onClick"],se={class:"flex items-start justify-between gap-3"},ae={class:"min-w-0 flex-1 space-y-2"},le={class:"flex items-center gap-2 flex-wrap"},re={key:0,class:"inline-flex items-center gap-1 text-xs text-muted-foreground"},de={class:"grid gap-1 text-sm"},ce={class:"flex items-center gap-2 text-muted-foreground"},ie={class:"flex items-center gap-2 text-muted-foreground"},ue={class:"flex items-center gap-2 text-muted-foreground"},me={key:0,class:"flex items-center gap-2 text-muted-foreground"},pe={class:"shrink-0 text-right flex items-center gap-2"},ge={class:"text-sm font-semibold"},fe={class:"space-y-3"},ve={class:"bg-muted/30 rounded-lg p-4 space-y-3"},Ne={class:"space-y-2 text-sm"},_e={class:"flex justify-between"},xe={key:0,class:"flex justify-between"},Ve={key:1,class:"grid gap-2"},Ee={class:"text-muted-foreground"},ye={key:2,class:"flex justify-between text-green-600 dark:text-green-400"},ke={class:"flex justify-between font-semibold"},be={class:"space-y-2 text-sm"},he={key:0,class:"flex justify-between"},Ce={class:"text-muted-foreground flex items-center gap-1.5"},De={class:"text-green-600 dark:text-green-400"},Se={key:1,class:"flex justify-between"},we={class:"text-muted-foreground flex items-center gap-1.5"},Be={class:"text-orange-600 dark:text-orange-400 font-medium"},Re=e.defineComponent({__name:"OrderDetailDialog",props:{agendaData:{}},emits:["openReservation"],setup(f,{expose:v,emit:N}){const _=f,x=N,d=e.ref(!1),s=e.ref(null),u=e.computed(()=>_.agendaData?.metadataSchema||[]),V=o=>{!o?.id||!o.reservations?.length||(s.value=o,d.value=!0)},E=e.computed(()=>{const o=s.value?.customerInfo;return o&&[o.firstName,o.lastName].filter(Boolean).join(" ")||"Unknown Customer"}),l=e.computed(()=>{const o=s.value?.reservations?.[0];return{subtotal:o?.subtotal,discount:o?.discount,amountPaid:o?.amountPaid,amountDue:o?.amountDue}}),y=e.computed(()=>s.value?.reservations.reduce((o,t)=>o+(t.reservationPrice||0),0)||0),r=o=>o==null||typeof o!="number"?"-":`€${o.toFixed(2)}`,k=o=>o.type==="percent"?`${o.value}%`:`${o.value<0?"-":"+"}${r(Math.abs(o.value))}`,b=o=>{if(!o)return"-";const t=new Date(o);return Number.isNaN(t.getTime())?o:t.toLocaleDateString("en-US",{weekday:"short",month:"short",day:"numeric",year:"numeric"})},h=o=>{if(!o)return"-";const t=new Date(o);return Number.isNaN(t.getTime())?o:t.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1})},i=o=>{switch(o){case"pending":return{label:"Pending",class:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"};case"cancelled":return{label:"Cancelled",class:"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"};case"needs_approval":return{label:"Needs Approval",class:"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"};case"rejected":return{label:"Rejected",class:"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"};case"approved":return{label:"Approved",class:"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"};case"confirmed":return{label:"Confirmed",class:"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"};default:return{label:o||"Unknown",class:"bg-muted text-muted-foreground"}}},m=o=>{let t=o.status;const c=o.reservationStatus;return t==="confirmed"&&["needs_approval","rejected","approved","cancelled"].includes(c||"")&&(t=c),i(t)},C=o=>{const t=o.id||s.value?.id;t&&(d.value=!1,x("openReservation",{...o,id:t}))};return v({openDialog:V}),(o,t)=>{const c=e.resolveComponent("ResponsiveModalTitle"),D=e.resolveComponent("ResponsiveModalDescription"),S=e.resolveComponent("ResponsiveModalHeader"),p=e.resolveComponent("Separator"),w=e.resolveComponent("Button"),B=e.resolveComponent("ResponsiveModalFooter"),R=e.resolveComponent("ResponsiveModalScrollContent"),z=e.resolveComponent("ResponsiveModal");return e.openBlock(),e.createBlock(z,{open:d.value,"onUpdate:open":t[1]||(t[1]=n=>d.value=n)},{default:e.withCtx(()=>[e.createVNode(R,{class:"sm:max-w-2xl"},{default:e.withCtx(()=>[e.createVNode(S,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"flex items-center gap-3"},{default:e.withCtx(()=>[t[2]||(t[2]=e.createElementVNode("span",null,"Order Details",-1)),e.createElementVNode("span",{class:e.normalizeClass(["px-2.5 py-1 text-xs font-medium rounded-full",i(s.value?.status).class])},e.toDisplayString(i(s.value?.status).label),3)]),_:1}),e.createVNode(D,null,{default:e.withCtx(()=>[e.createTextVNode(" Order #"+e.toDisplayString(s.value?.id?.slice(0,8)||"-"),1)]),_:1})]),_:1}),s.value?(e.openBlock(),e.createElementBlock("div",M,[e.createVNode(g._sfc_main,{metadata:s.value.metadata,schema:u.value,scope:"order"},null,8,["metadata","schema"]),e.createElementVNode("div",T,[t[3]||(t[3]=e.createElementVNode("h3",{class:"text-sm font-semibold text-muted-foreground uppercase tracking-wide"},"Customer",-1)),e.createElementVNode("div",P,[e.createElementVNode("div",$,[e.createElementVNode("div",j,[e.createVNode(e.unref(a.User),{size:20,class:"text-primary"})]),e.createElementVNode("div",null,[e.createElementVNode("p",O,e.toDisplayString(E.value),1)])]),e.createElementVNode("div",I,[s.value.customerInfo?.email?(e.openBlock(),e.createElementBlock("div",U,[e.createVNode(e.unref(a.Mail),{size:14}),e.createElementVNode("a",{href:`mailto:${s.value.customerInfo.email}`,class:"hover:text-foreground transition-colors"},e.toDisplayString(s.value.customerInfo.email),9,F)])):e.createCommentVNode("",!0),s.value.customerInfo?.phone?(e.openBlock(),e.createElementBlock("div",A,[e.createVNode(e.unref(a.Phone),{size:14}),e.createElementVNode("a",{href:`tel:${s.value.customerInfo.phone}`,class:"hover:text-foreground transition-colors"},e.toDisplayString(s.value.customerInfo.phone),9,L)])):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",q,[t[7]||(t[7]=e.createElementVNode("h3",{class:"text-sm font-semibold text-muted-foreground uppercase tracking-wide"},"Order Summary",-1)),e.createElementVNode("div",H,[e.createElementVNode("div",G,[e.createElementVNode("div",J,[e.createVNode(e.unref(a.ShoppingBag),{size:14}),t[4]||(t[4]=e.createElementVNode("span",{class:"text-xs"},"Reservations",-1))]),e.createElementVNode("p",K,e.toDisplayString(s.value.reservations.length),1)]),e.createElementVNode("div",Q,[e.createElementVNode("div",W,[e.createVNode(e.unref(a.Users),{size:14}),t[5]||(t[5]=e.createElementVNode("span",{class:"text-xs"},"Spots",-1))]),e.createElementVNode("p",X,e.toDisplayString(s.value.totalSpots),1)]),e.createElementVNode("div",Y,[e.createElementVNode("div",Z,[e.createVNode(e.unref(a.Clock),{size:14}),t[6]||(t[6]=e.createElementVNode("span",{class:"text-xs"},"Ordered at",-1))]),e.createElementVNode("p",ee,e.toDisplayString(h(s.value.createdAt)),1)])])]),e.createElementVNode("div",te,[t[8]||(t[8]=e.createElementVNode("h3",{class:"text-sm font-semibold text-muted-foreground uppercase tracking-wide"},"Reservations",-1)),e.createElementVNode("div",oe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value.reservations,n=>(e.openBlock(),e.createElementBlock("button",{key:n.res_id||n.id,type:"button",class:"w-full text-left bg-muted/30 rounded-lg p-4 transition-colors hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:ze=>C(n)},[e.createElementVNode("div",se,[e.createElementVNode("div",ae,[e.createElementVNode("div",le,[e.createElementVNode("span",{class:e.normalizeClass(["px-2 py-1 text-xs font-medium rounded-full",m(n).class])},e.toDisplayString(m(n).label),3),n.resourceName?(e.openBlock(),e.createElementBlock("span",re,[e.createElementVNode("span",{class:"w-3 h-3 rounded-full",style:e.normalizeStyle({backgroundColor:n.resourceColor||"#6b7280"})},null,4),e.createTextVNode(" "+e.toDisplayString(n.resourceName),1)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",de,[e.createElementVNode("div",ce,[e.createVNode(e.unref(a.Calendar),{size:14}),e.createElementVNode("span",null,e.toDisplayString(b(n.date)),1)]),e.createElementVNode("div",ie,[e.createVNode(e.unref(a.Clock),{size:14}),e.createElementVNode("span",null,e.toDisplayString(n.startTime||"-")+" - "+e.toDisplayString(n.endTime||"-"),1)]),e.createElementVNode("div",ue,[e.createVNode(e.unref(a.Users),{size:14}),e.createElementVNode("span",null,e.toDisplayString(n.spots||1)+" "+e.toDisplayString(n.spots===1?"person":"people"),1)]),n.pricingOption?(e.openBlock(),e.createElementBlock("div",me,[e.createVNode(e.unref(a.Tag),{size:14}),e.createElementVNode("span",null,e.toDisplayString(n.pricingOption.name),1)])):e.createCommentVNode("",!0)]),e.createVNode(g._sfc_main,{metadata:n.reservationMetadata,schema:u.value,"display-filter":["highlight","badge"],compact:""},null,8,["metadata","schema"])]),e.createElementVNode("div",pe,[e.createElementVNode("div",null,[e.createElementVNode("p",ge,e.toDisplayString(r(n.reservationPrice)),1)]),e.createVNode(e.unref(a.ChevronRight),{size:16,class:"text-muted-foreground"})])])],8,ne))),128))])]),e.createElementVNode("div",fe,[t[15]||(t[15]=e.createElementVNode("h3",{class:"text-sm font-semibold text-muted-foreground uppercase tracking-wide"},"Payment",-1)),e.createElementVNode("div",ve,[e.createElementVNode("div",Ne,[e.createElementVNode("div",_e,[t[9]||(t[9]=e.createElementVNode("span",{class:"text-muted-foreground"},"Reservations",-1)),e.createElementVNode("span",null,e.toDisplayString(r(y.value)),1)]),l.value.subtotal!==void 0&&l.value.subtotal!==s.value.totalPrice?(e.openBlock(),e.createElementBlock("div",xe,[t[10]||(t[10]=e.createElementVNode("span",{class:"text-muted-foreground"},"Subtotal",-1)),e.createElementVNode("span",null,e.toDisplayString(r(l.value.subtotal)),1)])):e.createCommentVNode("",!0),s.value.adjustments&&s.value.adjustments.length?(e.openBlock(),e.createElementBlock("div",Ve,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value.adjustments,n=>(e.openBlock(),e.createElementBlock("div",{key:`${n.label}-${n.type}-${n.value}`,class:"flex justify-between"},[e.createElementVNode("span",Ee,e.toDisplayString(n.label),1),e.createElementVNode("span",null,e.toDisplayString(k(n)),1)]))),128))])):e.createCommentVNode("",!0),l.value.discount?(e.openBlock(),e.createElementBlock("div",ye,[t[11]||(t[11]=e.createElementVNode("span",null,"Discount",-1)),e.createElementVNode("span",null,"-"+e.toDisplayString(r(l.value.discount)),1)])):e.createCommentVNode("",!0)]),e.createVNode(p),e.createElementVNode("div",ke,[t[12]||(t[12]=e.createElementVNode("span",null,"Order Total",-1)),e.createElementVNode("span",null,e.toDisplayString(r(s.value.totalPrice)),1)]),l.value.amountPaid!==void 0||l.value.amountDue!==void 0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(p),e.createElementVNode("div",be,[l.value.amountPaid!==void 0?(e.openBlock(),e.createElementBlock("div",he,[e.createElementVNode("span",Ce,[e.createVNode(e.unref(a.CreditCard),{size:14}),t[13]||(t[13]=e.createTextVNode(" Amount paid ",-1))]),e.createElementVNode("span",De,e.toDisplayString(r(l.value.amountPaid)),1)])):e.createCommentVNode("",!0),l.value.amountDue!==void 0&&l.value.amountDue>0?(e.openBlock(),e.createElementBlock("div",Se,[e.createElementVNode("span",we,[e.createVNode(e.unref(a.Receipt),{size:14}),t[14]||(t[14]=e.createTextVNode(" Amount due ",-1))]),e.createElementVNode("span",Be,e.toDisplayString(r(l.value.amountDue)),1)])):e.createCommentVNode("",!0)])],64)):e.createCommentVNode("",!0)])])])):e.createCommentVNode("",!0),e.createVNode(B,null,{default:e.withCtx(()=>[e.createVNode(w,{variant:"outline",onClick:t[0]||(t[0]=n=>d.value=!1)},{default:e.withCtx(()=>[...t[16]||(t[16]=[e.createTextVNode("Close",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])}}});exports._sfc_main=Re;
@@ -1,330 +0,0 @@
1
- import { defineComponent as K, ref as C, computed as x, resolveComponent as p, openBlock as r, createBlock as Q, withCtx as f, createVNode as l, createElementVNode as e, normalizeClass as R, toDisplayString as a, createTextVNode as v, createElementBlock as i, unref as d, createCommentVNode as c, Fragment as h, renderList as D, normalizeStyle as W } from "vue";
2
- import { User as X, Mail as Y, Phone as Z, ShoppingBag as ee, Users as S, Clock as N, Calendar as te, Tag as se, ChevronRight as oe, CreditCard as ne, Receipt as ae } from "lucide-vue-next";
3
- import { _ as z } from "./ReservationDetailDialog.vue_vue_type_script_setup_true_lang-GYNZ_yhD.mjs";
4
- const le = {
5
- key: 0,
6
- class: "space-y-6 py-4"
7
- }, re = { class: "space-y-3" }, ie = { class: "bg-muted/30 rounded-lg p-4 space-y-3" }, de = { class: "flex items-center gap-3" }, ue = { class: "h-10 w-10 rounded-full bg-primary/10 flex items-center justify-center" }, ce = { class: "font-medium" }, me = { class: "grid gap-2 text-sm" }, pe = {
8
- key: 0,
9
- class: "flex items-center gap-2 text-muted-foreground"
10
- }, fe = ["href"], ge = {
11
- key: 1,
12
- class: "flex items-center gap-2 text-muted-foreground"
13
- }, ve = ["href"], _e = { class: "space-y-3" }, xe = { class: "grid grid-cols-2 gap-3" }, be = { class: "bg-muted/30 rounded-lg p-3" }, he = { class: "flex items-center gap-2 text-muted-foreground mb-1" }, ye = { class: "font-medium" }, ke = { class: "bg-muted/30 rounded-lg p-3" }, we = { class: "flex items-center gap-2 text-muted-foreground mb-1" }, Ce = { class: "font-medium" }, Re = { class: "bg-muted/30 rounded-lg p-3 col-span-2" }, De = { class: "flex items-center gap-2 text-muted-foreground mb-1" }, Se = { class: "font-medium" }, Ne = { class: "space-y-3" }, ze = { class: "space-y-2" }, Me = ["onClick"], Pe = { class: "flex items-start justify-between gap-3" }, $e = { class: "min-w-0 flex-1 space-y-2" }, Te = { class: "flex items-center gap-2 flex-wrap" }, je = {
14
- key: 0,
15
- class: "inline-flex items-center gap-1 text-xs text-muted-foreground"
16
- }, Oe = { class: "grid gap-1 text-sm" }, Ie = { class: "flex items-center gap-2 text-muted-foreground" }, Ue = { class: "flex items-center gap-2 text-muted-foreground" }, Be = { class: "flex items-center gap-2 text-muted-foreground" }, Ae = {
17
- key: 0,
18
- class: "flex items-center gap-2 text-muted-foreground"
19
- }, Fe = { class: "shrink-0 text-right flex items-center gap-2" }, Ve = { class: "text-sm font-semibold" }, Le = { class: "space-y-3" }, Ee = { class: "bg-muted/30 rounded-lg p-4 space-y-3" }, He = { class: "space-y-2 text-sm" }, qe = { class: "flex justify-between" }, Ge = {
20
- key: 0,
21
- class: "flex justify-between"
22
- }, Je = {
23
- key: 1,
24
- class: "grid gap-2"
25
- }, Ke = { class: "text-muted-foreground" }, Qe = {
26
- key: 2,
27
- class: "flex justify-between text-green-600 dark:text-green-400"
28
- }, We = { class: "flex justify-between font-semibold" }, Xe = { class: "space-y-2 text-sm" }, Ye = {
29
- key: 0,
30
- class: "flex justify-between"
31
- }, Ze = { class: "text-muted-foreground flex items-center gap-1.5" }, et = { class: "text-green-600 dark:text-green-400" }, tt = {
32
- key: 1,
33
- class: "flex justify-between"
34
- }, st = { class: "text-muted-foreground flex items-center gap-1.5" }, ot = { class: "text-orange-600 dark:text-orange-400 font-medium" }, it = /* @__PURE__ */ K({
35
- __name: "OrderDetailDialog",
36
- props: {
37
- agendaData: {}
38
- },
39
- emits: ["openReservation"],
40
- setup(M, { expose: P, emit: $ }) {
41
- const T = M, j = $, g = C(!1), n = C(null), y = x(() => T.agendaData?.metadataSchema || []), O = (s) => {
42
- !s?.id || !s.reservations?.length || (n.value = s, g.value = !0);
43
- }, I = x(() => {
44
- const s = n.value?.customerInfo;
45
- return s && [s.firstName, s.lastName].filter(Boolean).join(" ") || "Unknown Customer";
46
- }), u = x(() => {
47
- const s = n.value?.reservations?.[0];
48
- return {
49
- subtotal: s?.subtotal,
50
- discount: s?.discount,
51
- amountPaid: s?.amountPaid,
52
- amountDue: s?.amountDue
53
- };
54
- }), U = x(() => n.value?.reservations.reduce((s, t) => s + (t.reservationPrice || 0), 0) || 0), m = (s) => s == null || typeof s != "number" ? "-" : `€${s.toFixed(2)}`, B = (s) => s.type === "percent" ? `${s.value}%` : `${s.value < 0 ? "-" : "+"}${m(Math.abs(s.value))}`, A = (s) => {
55
- if (!s) return "-";
56
- const t = new Date(s);
57
- return Number.isNaN(t.getTime()) ? s : t.toLocaleDateString("en-US", {
58
- weekday: "short",
59
- month: "short",
60
- day: "numeric",
61
- year: "numeric"
62
- });
63
- }, F = (s) => {
64
- if (!s) return "-";
65
- const t = new Date(s);
66
- return Number.isNaN(t.getTime()) ? s : t.toLocaleTimeString("en-US", {
67
- hour: "2-digit",
68
- minute: "2-digit",
69
- hour12: !1
70
- });
71
- }, b = (s) => {
72
- switch (s) {
73
- case "pending":
74
- return { label: "Pending", class: "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400" };
75
- case "cancelled":
76
- return { label: "Cancelled", class: "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400" };
77
- case "needs_approval":
78
- return { label: "Needs Approval", class: "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400" };
79
- case "rejected":
80
- return { label: "Rejected", class: "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400" };
81
- case "approved":
82
- return { label: "Approved", class: "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400" };
83
- case "confirmed":
84
- return { label: "Confirmed", class: "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400" };
85
- default:
86
- return { label: s || "Unknown", class: "bg-muted text-muted-foreground" };
87
- }
88
- }, k = (s) => {
89
- let t = s.status;
90
- const _ = s.reservationStatus;
91
- return t === "confirmed" && ["needs_approval", "rejected", "approved", "cancelled"].includes(_ || "") && (t = _), b(t);
92
- }, V = (s) => {
93
- const t = s.id || n.value?.id;
94
- t && (g.value = !1, j("openReservation", { ...s, id: t }));
95
- };
96
- return P({
97
- openDialog: O
98
- }), (s, t) => {
99
- const _ = p("ResponsiveModalTitle"), L = p("ResponsiveModalDescription"), E = p("ResponsiveModalHeader"), w = p("Separator"), H = p("Button"), q = p("ResponsiveModalFooter"), G = p("ResponsiveModalScrollContent"), J = p("ResponsiveModal");
100
- return r(), Q(J, {
101
- open: g.value,
102
- "onUpdate:open": t[1] || (t[1] = (o) => g.value = o)
103
- }, {
104
- default: f(() => [
105
- l(G, { class: "sm:max-w-2xl" }, {
106
- default: f(() => [
107
- l(E, null, {
108
- default: f(() => [
109
- l(_, { class: "flex items-center gap-3" }, {
110
- default: f(() => [
111
- t[2] || (t[2] = e("span", null, "Order Details", -1)),
112
- e("span", {
113
- class: R(["px-2.5 py-1 text-xs font-medium rounded-full", b(n.value?.status).class])
114
- }, a(b(n.value?.status).label), 3)
115
- ]),
116
- _: 1
117
- }),
118
- l(L, null, {
119
- default: f(() => [
120
- v(" Order #" + a(n.value?.id?.slice(0, 8) || "-"), 1)
121
- ]),
122
- _: 1
123
- })
124
- ]),
125
- _: 1
126
- }),
127
- n.value ? (r(), i("div", le, [
128
- l(z, {
129
- metadata: n.value.metadata,
130
- schema: y.value,
131
- scope: "order"
132
- }, null, 8, ["metadata", "schema"]),
133
- e("div", re, [
134
- t[3] || (t[3] = e("h3", { class: "text-sm font-semibold text-muted-foreground uppercase tracking-wide" }, "Customer", -1)),
135
- e("div", ie, [
136
- e("div", de, [
137
- e("div", ue, [
138
- l(d(X), {
139
- size: 20,
140
- class: "text-primary"
141
- })
142
- ]),
143
- e("div", null, [
144
- e("p", ce, a(I.value), 1)
145
- ])
146
- ]),
147
- e("div", me, [
148
- n.value.customerInfo?.email ? (r(), i("div", pe, [
149
- l(d(Y), { size: 14 }),
150
- e("a", {
151
- href: `mailto:${n.value.customerInfo.email}`,
152
- class: "hover:text-foreground transition-colors"
153
- }, a(n.value.customerInfo.email), 9, fe)
154
- ])) : c("", !0),
155
- n.value.customerInfo?.phone ? (r(), i("div", ge, [
156
- l(d(Z), { size: 14 }),
157
- e("a", {
158
- href: `tel:${n.value.customerInfo.phone}`,
159
- class: "hover:text-foreground transition-colors"
160
- }, a(n.value.customerInfo.phone), 9, ve)
161
- ])) : c("", !0)
162
- ])
163
- ])
164
- ]),
165
- e("div", _e, [
166
- t[7] || (t[7] = e("h3", { class: "text-sm font-semibold text-muted-foreground uppercase tracking-wide" }, "Order Summary", -1)),
167
- e("div", xe, [
168
- e("div", be, [
169
- e("div", he, [
170
- l(d(ee), { size: 14 }),
171
- t[4] || (t[4] = e("span", { class: "text-xs" }, "Reservations", -1))
172
- ]),
173
- e("p", ye, a(n.value.reservations.length), 1)
174
- ]),
175
- e("div", ke, [
176
- e("div", we, [
177
- l(d(S), { size: 14 }),
178
- t[5] || (t[5] = e("span", { class: "text-xs" }, "Spots", -1))
179
- ]),
180
- e("p", Ce, a(n.value.totalSpots), 1)
181
- ]),
182
- e("div", Re, [
183
- e("div", De, [
184
- l(d(N), { size: 14 }),
185
- t[6] || (t[6] = e("span", { class: "text-xs" }, "Ordered at", -1))
186
- ]),
187
- e("p", Se, a(F(n.value.createdAt)), 1)
188
- ])
189
- ])
190
- ]),
191
- e("div", Ne, [
192
- t[8] || (t[8] = e("h3", { class: "text-sm font-semibold text-muted-foreground uppercase tracking-wide" }, "Reservations", -1)),
193
- e("div", ze, [
194
- (r(!0), i(h, null, D(n.value.reservations, (o) => (r(), i("button", {
195
- key: o.res_id || o.id,
196
- type: "button",
197
- class: "w-full text-left bg-muted/30 rounded-lg p-4 transition-colors hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
198
- onClick: (nt) => V(o)
199
- }, [
200
- e("div", Pe, [
201
- e("div", $e, [
202
- e("div", Te, [
203
- e("span", {
204
- class: R(["px-2 py-1 text-xs font-medium rounded-full", k(o).class])
205
- }, a(k(o).label), 3),
206
- o.resourceName ? (r(), i("span", je, [
207
- e("span", {
208
- class: "w-3 h-3 rounded-full",
209
- style: W({ backgroundColor: o.resourceColor || "#6b7280" })
210
- }, null, 4),
211
- v(" " + a(o.resourceName), 1)
212
- ])) : c("", !0)
213
- ]),
214
- e("div", Oe, [
215
- e("div", Ie, [
216
- l(d(te), { size: 14 }),
217
- e("span", null, a(A(o.date)), 1)
218
- ]),
219
- e("div", Ue, [
220
- l(d(N), { size: 14 }),
221
- e("span", null, a(o.startTime || "-") + " - " + a(o.endTime || "-"), 1)
222
- ]),
223
- e("div", Be, [
224
- l(d(S), { size: 14 }),
225
- e("span", null, a(o.spots || 1) + " " + a(o.spots === 1 ? "person" : "people"), 1)
226
- ]),
227
- o.pricingOption ? (r(), i("div", Ae, [
228
- l(d(se), { size: 14 }),
229
- e("span", null, a(o.pricingOption.name), 1)
230
- ])) : c("", !0)
231
- ]),
232
- l(z, {
233
- metadata: o.reservationMetadata,
234
- schema: y.value,
235
- "display-filter": ["highlight", "badge"],
236
- compact: ""
237
- }, null, 8, ["metadata", "schema"])
238
- ]),
239
- e("div", Fe, [
240
- e("div", null, [
241
- e("p", Ve, a(m(o.reservationPrice)), 1)
242
- ]),
243
- l(d(oe), {
244
- size: 16,
245
- class: "text-muted-foreground"
246
- })
247
- ])
248
- ])
249
- ], 8, Me))), 128))
250
- ])
251
- ]),
252
- e("div", Le, [
253
- t[15] || (t[15] = e("h3", { class: "text-sm font-semibold text-muted-foreground uppercase tracking-wide" }, "Payment", -1)),
254
- e("div", Ee, [
255
- e("div", He, [
256
- e("div", qe, [
257
- t[9] || (t[9] = e("span", { class: "text-muted-foreground" }, "Reservations", -1)),
258
- e("span", null, a(m(U.value)), 1)
259
- ]),
260
- u.value.subtotal !== void 0 && u.value.subtotal !== n.value.totalPrice ? (r(), i("div", Ge, [
261
- t[10] || (t[10] = e("span", { class: "text-muted-foreground" }, "Subtotal", -1)),
262
- e("span", null, a(m(u.value.subtotal)), 1)
263
- ])) : c("", !0),
264
- n.value.adjustments && n.value.adjustments.length ? (r(), i("div", Je, [
265
- (r(!0), i(h, null, D(n.value.adjustments, (o) => (r(), i("div", {
266
- key: `${o.label}-${o.type}-${o.value}`,
267
- class: "flex justify-between"
268
- }, [
269
- e("span", Ke, a(o.label), 1),
270
- e("span", null, a(B(o)), 1)
271
- ]))), 128))
272
- ])) : c("", !0),
273
- u.value.discount ? (r(), i("div", Qe, [
274
- t[11] || (t[11] = e("span", null, "Discount", -1)),
275
- e("span", null, "-" + a(m(u.value.discount)), 1)
276
- ])) : c("", !0)
277
- ]),
278
- l(w),
279
- e("div", We, [
280
- t[12] || (t[12] = e("span", null, "Order Total", -1)),
281
- e("span", null, a(m(n.value.totalPrice)), 1)
282
- ]),
283
- u.value.amountPaid !== void 0 || u.value.amountDue !== void 0 ? (r(), i(h, { key: 0 }, [
284
- l(w),
285
- e("div", Xe, [
286
- u.value.amountPaid !== void 0 ? (r(), i("div", Ye, [
287
- e("span", Ze, [
288
- l(d(ne), { size: 14 }),
289
- t[13] || (t[13] = v(" Amount paid ", -1))
290
- ]),
291
- e("span", et, a(m(u.value.amountPaid)), 1)
292
- ])) : c("", !0),
293
- u.value.amountDue !== void 0 && u.value.amountDue > 0 ? (r(), i("div", tt, [
294
- e("span", st, [
295
- l(d(ae), { size: 14 }),
296
- t[14] || (t[14] = v(" Amount due ", -1))
297
- ]),
298
- e("span", ot, a(m(u.value.amountDue)), 1)
299
- ])) : c("", !0)
300
- ])
301
- ], 64)) : c("", !0)
302
- ])
303
- ])
304
- ])) : c("", !0),
305
- l(q, null, {
306
- default: f(() => [
307
- l(H, {
308
- variant: "outline",
309
- onClick: t[0] || (t[0] = (o) => g.value = !1)
310
- }, {
311
- default: f(() => [...t[16] || (t[16] = [
312
- v("Close", -1)
313
- ])]),
314
- _: 1
315
- })
316
- ]),
317
- _: 1
318
- })
319
- ]),
320
- _: 1
321
- })
322
- ]),
323
- _: 1
324
- }, 8, ["open"]);
325
- };
326
- }
327
- });
328
- export {
329
- it as _
330
- };