@oneclick.dev/cms-core-modules 0.0.124 → 0.0.126

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 (149) hide show
  1. package/dist/AppointmentListTable-CWzbwqR-.js +1 -0
  2. package/dist/AppointmentListTable-DoZuBstk.mjs +270 -0
  3. package/dist/ContentEditor-BlNbqkAz.js +324 -0
  4. package/dist/{ContentEditor-DX1bTQKs.mjs → ContentEditor-D754iLJS.mjs} +8074 -27026
  5. package/dist/{Detail-B7pe808q.mjs → Detail-BOxWQ1QQ.mjs} +2 -2
  6. package/dist/{Detail-B_Q7Qkuz.mjs → Detail-BfKW0uZE.mjs} +2 -2
  7. package/dist/Detail-DFVu2F38.mjs +11 -0
  8. package/dist/{Detail-t3tOcy3X.js → Detail-DJea_fCd.js} +1 -1
  9. package/dist/{Detail-CNiLIEh9.js → Detail-DPJacXfm.js} +1 -1
  10. package/dist/Detail-DSLZ7_bM.js +1 -0
  11. package/dist/{Detail-BESGmY7z.js → Detail-DUGThL9Y.js} +1 -1
  12. package/dist/{Detail-DNxAzeCs.mjs → Detail-D_LlEeHu.mjs} +2 -2
  13. package/dist/Overview-0hFXiuYo.js +1 -0
  14. package/dist/Overview-BTx5LF4J.js +1 -0
  15. package/dist/Overview-CCu2PHai.mjs +289 -0
  16. package/dist/Overview-D2u-leeO.js +1 -0
  17. package/dist/Overview-D_2wozCG.mjs +1733 -0
  18. package/dist/Overview-Dffo-zH4.mjs +11 -0
  19. package/dist/{TableCalculationWidget-CrqcLGfU.mjs → TableCalculationWidget-B_LFoOYm.mjs} +3 -3
  20. package/dist/{TableCalculationWidget-CkQPrVUd.js → TableCalculationWidget-CahOIcbk.js} +1 -1
  21. package/dist/TableDataWidget-BwqWFH4A.js +1 -0
  22. package/dist/TableDataWidget-RsVxcDsL.mjs +112 -0
  23. package/dist/TableOverviewCard-BPWCqo56.js +1 -0
  24. package/dist/{TableOverviewCard-Ci0d4o4w.mjs → TableOverviewCard-D667DDag.mjs} +113 -127
  25. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C3XiOXgb.js +1 -0
  26. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-sp0TLio0.mjs +547 -0
  27. package/dist/{TableRowActionCard-BhdnnPaq.mjs → TableRowActionCard-BPYJ-Kjy.mjs} +95 -101
  28. package/dist/TableRowActionCard-Bnqj1YIe.js +1 -0
  29. package/dist/TableView-CwhZ9YN2.js +4 -0
  30. package/dist/TableView-DX9PKS8N.mjs +9673 -0
  31. package/dist/TemplateBuilder.vue_vue_type_script_setup_true_lang-BgDdzbLe.js +1 -0
  32. package/dist/TemplateBuilder.vue_vue_type_script_setup_true_lang-D85V4nrQ.mjs +2886 -0
  33. package/dist/cms-core-modules.css +1 -1
  34. package/dist/dateRangePresets-CaPVagHY.mjs +453 -0
  35. package/dist/dateRangePresets-gxQCiZ6c.js +1 -0
  36. package/dist/index-6hZ6MYY6.js +1 -0
  37. package/dist/index-BVmmicu3.mjs +14 -0
  38. package/dist/index-ChHD_1Cf.js +144 -0
  39. package/dist/index-CvV4nVWI.js +1 -0
  40. package/dist/index-DH2z0W_w.mjs +19012 -0
  41. package/dist/index-DZKzj48V.mjs +17 -0
  42. package/dist/index.cjs.js +1 -1
  43. package/dist/index.mjs +237 -103
  44. package/dist/orders-C_sz8J9b.js +1 -0
  45. package/dist/{orders-BfTLIm7U.mjs → orders-Cgdggzvx.mjs} +84 -84
  46. package/dist/server-handlers.cjs.js +1 -1
  47. package/dist/server-handlers.mjs +2055 -1123
  48. package/dist/src/appointments/chat-components/AppointmentListTable.vue.d.ts +3 -0
  49. package/dist/src/appointments/index.d.ts +93 -3
  50. package/dist/src/appointments/reservation-summary.d.ts +48 -0
  51. package/dist/src/appointments/server.d.ts +1 -0
  52. package/dist/src/appointments/tools.d.ts +93 -3
  53. package/dist/src/filezone/config.d.ts +31 -0
  54. package/dist/src/filezone/index.d.ts +43 -0
  55. package/dist/src/filezone/index.vue.d.ts +2 -0
  56. package/dist/src/filezone/metadata.d.ts +2 -0
  57. package/dist/src/filezone/pages/Overview.vue.d.ts +4 -0
  58. package/dist/src/filezone/permissions.d.ts +5 -0
  59. package/dist/src/filezone/routes.d.ts +5 -0
  60. package/dist/src/filezone/server.d.ts +36 -0
  61. package/dist/src/index.d.ts +2 -0
  62. package/dist/src/mailTemplates/builder-types.d.ts +40 -0
  63. package/dist/src/mailTemplates/components/BlockRenderer.vue.d.ts +24 -0
  64. package/dist/src/mailTemplates/components/DesignPanel.vue.d.ts +13 -0
  65. package/dist/src/mailTemplates/components/EmailCanvas.vue.d.ts +44 -0
  66. package/dist/src/mailTemplates/components/RichTextEditor.vue.d.ts +10 -0
  67. package/dist/src/mailTemplates/components/RightSidebar.vue.d.ts +18 -0
  68. package/dist/src/mailTemplates/components/SettingsPanel.vue.d.ts +15 -0
  69. package/dist/src/mailTemplates/components/TemplateBuilder.vue.d.ts +2 -0
  70. package/dist/src/mailTemplates/components/TemplateList.vue.d.ts +19 -1
  71. package/dist/src/mailTemplates/components/rich-text.d.ts +6 -0
  72. package/dist/src/mailTemplates/config.d.ts +10 -4
  73. package/dist/src/mailTemplates/defaults.d.ts +10 -0
  74. package/dist/src/mailTemplates/editor-state.d.ts +21 -0
  75. package/dist/src/mailTemplates/index.d.ts +11 -5
  76. package/dist/src/mailTemplates/index.vue.d.ts +2 -4
  77. package/dist/src/mailTemplates/metadata.d.ts +1 -1
  78. package/dist/src/mailTemplates/pages/Detail.vue.d.ts +1 -13
  79. package/dist/src/mailTemplates/pages/Overview.vue.d.ts +1 -13
  80. package/dist/src/mailTemplates/server.d.ts +23 -0
  81. package/dist/src/server-handlers.d.ts +4 -0
  82. package/dist/src/table/badge-filter-utils.d.ts +8 -0
  83. package/dist/src/table/chat-components/TableOverviewCard.vue.d.ts +2 -7
  84. package/dist/src/table/chat-components/TableResultView.vue.d.ts +3 -7
  85. package/dist/src/table/components/TableDisplayCell.vue.d.ts +8 -0
  86. package/dist/src/table/components/columns/BadgeColumnSettings.vue.d.ts +9 -0
  87. package/dist/src/table/components/columns/ColumnColorSelect.vue.d.ts +11 -0
  88. package/dist/src/table/components/columns/ColumnDisplaySettings.vue.d.ts +9 -0
  89. package/dist/src/table/components/columns/ColumnTypeSelect.vue.d.ts +11 -0
  90. package/dist/src/table/components/columns/ColumnValueSourceInput.vue.d.ts +15 -0
  91. package/dist/src/table/components/columns/DialogTableColumnItem.vue.d.ts +8 -11
  92. package/dist/src/table/components/columns/ProgressColumnSettings.vue.d.ts +8 -0
  93. package/dist/src/table/components/stats/StatDialog.vue.d.ts +6 -10
  94. package/dist/src/table/components/stats/Stats.vue.d.ts +9 -15
  95. package/dist/src/table/composables/useTableClock.d.ts +4 -0
  96. package/dist/src/table/display-utils.d.ts +35 -0
  97. package/dist/src/table/row-value.d.ts +1 -0
  98. package/dist/src/table/stat-utils.d.ts +9 -0
  99. package/dist/src/table/tool-utils.d.ts +1 -1
  100. package/dist/src/table/types.d.ts +54 -1
  101. package/dist/src/whatsappBusiness/analytics.d.ts +4 -0
  102. package/dist/src/whatsappBusiness/components/AccountPanel.vue.d.ts +2 -0
  103. package/dist/src/whatsappBusiness/components/InsightsPanel.vue.d.ts +5 -0
  104. package/dist/src/whatsappBusiness/components/TemplateDialog.vue.d.ts +14 -0
  105. package/dist/src/whatsappBusiness/components/TemplatesPanel.vue.d.ts +5 -0
  106. package/dist/src/whatsappBusiness/components/presentation.d.ts +4 -0
  107. package/dist/src/whatsappBusiness/config.d.ts +51 -0
  108. package/dist/src/whatsappBusiness/connection.d.ts +77 -0
  109. package/dist/src/whatsappBusiness/index.d.ts +63 -0
  110. package/dist/src/whatsappBusiness/index.vue.d.ts +5 -0
  111. package/dist/src/whatsappBusiness/metadata.d.ts +2 -0
  112. package/dist/src/whatsappBusiness/pages/Overview.vue.d.ts +2 -0
  113. package/dist/src/whatsappBusiness/permissions.d.ts +5 -0
  114. package/dist/src/whatsappBusiness/provider.d.ts +21 -0
  115. package/dist/src/whatsappBusiness/routes.d.ts +5 -0
  116. package/dist/src/whatsappBusiness/server.d.ts +14 -0
  117. package/dist/src/whatsappBusiness/templates.d.ts +94 -0
  118. package/dist/src/whatsappBusiness/types.d.ts +162 -0
  119. package/dist/{tool-sandbox-DoF1PsyS.js → tool-sandbox-BSkKdH7V.js} +1 -1
  120. package/dist/{tool-sandbox-DdkMLkDK.mjs → tool-sandbox-DU9b1B7v.mjs} +1 -1
  121. package/dist/{types-ibC3-e1N.mjs → types-B5MifmeF.mjs} +339 -273
  122. package/dist/types-D5dgTskW.js +1 -0
  123. package/dist/{useTableAgentTools-D5mzGf3A.js → useTableAgentTools-BrUot49I.js} +1 -1
  124. package/dist/{useTableAgentTools-DcN3kYRL.mjs → useTableAgentTools-r5InEI4p.mjs} +8 -8
  125. package/dist/{vee-validate-zod-BQElPD0m.js → vee-validate-zod-CWZwNTWE.js} +1 -1
  126. package/dist/{vee-validate-zod-CN16K2x9.mjs → vee-validate-zod-D0WaDgDZ.mjs} +1 -1
  127. package/package.json +2 -2
  128. package/src/appointments/tools.ts +52 -2
  129. package/dist/AppointmentListTable-DZJNmTMb.mjs +0 -177
  130. package/dist/AppointmentListTable-Dieu9US_.js +0 -1
  131. package/dist/ContentEditor-BcIUumah.js +0 -467
  132. package/dist/Detail-Byk781b4.mjs +0 -26
  133. package/dist/Detail-mvSGbnFU.js +0 -1
  134. package/dist/Overview-BDlBCUI_.js +0 -1
  135. package/dist/Overview-Su8ZUbMs.mjs +0 -26
  136. package/dist/TableDataWidget-7qvC3Egd.js +0 -1
  137. package/dist/TableDataWidget-DMTSoGRO.mjs +0 -121
  138. package/dist/TableOverviewCard-AFq-puJs.js +0 -1
  139. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs +0 -534
  140. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js +0 -1
  141. package/dist/TableRowActionCard-IzB6tNN-.js +0 -1
  142. package/dist/TableView-6mdrL3zx.js +0 -4
  143. package/dist/TableView-Du5nOE6R.mjs +0 -8228
  144. package/dist/TemplateList.vue_vue_type_script_setup_true_lang-B_AtWnHa.js +0 -1
  145. package/dist/TemplateList.vue_vue_type_script_setup_true_lang-Cmovy7kk.mjs +0 -40
  146. package/dist/dateRangePresets-B-l5b_wR.mjs +0 -48
  147. package/dist/dateRangePresets-CPWqst_x.js +0 -1
  148. package/dist/orders-DUa2PVoa.js +0 -1
  149. package/dist/types-BMraG1kN.js +0 -1
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),p=require("./vee-validate-zod-BQElPD0m.js"),E=require("./countries-CgZ081No.js"),b=require("lucide-vue-next"),S=require("@oneclick.dev/cms-kit"),B=require("./index-ijdf0d9-.js"),C=require("./types-BMraG1kN.js"),F={class:"flex flex-col gap-4"},L={class:"flex flex-col gap-2"},R={key:0,class:"text-red-500 text-sm mt-1"},z={class:"flex flex-col gap-4"},U={class:"flex flex-col gap-2"},j={key:0,class:"text-red-500 text-sm mt-1"},P={class:"flex flex-col gap-4"},q={class:"flex flex-col gap-2"},G={key:0,class:"text-red-500 text-sm mt-1"},A=e.defineComponent({__name:"Main",setup($){const c=e.inject("isLoadingCompleted",e.ref(!1)),{errors:o}=p.useFormContext(),{value:r}=p.useField("title"),{value:n}=p.useField("description"),{value:l}=p.useField("price");return(d,t)=>{const a=e.resolveComponent("Label"),u=e.resolveComponent("Input"),m=e.resolveComponent("Textarea"),N=e.resolveComponent("CardContent"),w=e.resolveComponent("Card");return e.openBlock(),e.createBlock(w,null,{default:e.withCtx(()=>[e.createVNode(N,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[e.createElementVNode("div",F,[e.createElementVNode("div",L,[e.createVNode(a,{for:"title",class:"text-sm"},{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode("Name",-1)])]),_:1}),e.createVNode(u,{type:"text",id:"title",placeholder:e.unref(c)?"Fast shipping":"",modelValue:e.unref(r),"onUpdate:modelValue":t[0]||(t[0]=g=>e.isRef(r)?r.value=g:null)},null,8,["placeholder","modelValue"]),e.unref(o).title?(e.openBlock(),e.createElementBlock("p",R,e.toDisplayString(e.unref(o).title),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",z,[e.createElementVNode("div",U,[e.createVNode(a,{for:"description",class:"text-sm"},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode("Description (optional)",-1)])]),_:1}),e.createVNode(m,{id:"description",placeholder:e.unref(c)?"Ships next day":"",modelValue:e.unref(n),"onUpdate:modelValue":t[1]||(t[1]=g=>e.isRef(n)?n.value=g:null)},null,8,["placeholder","modelValue"]),e.unref(o).description?(e.openBlock(),e.createElementBlock("p",j,e.toDisplayString(e.unref(o).description),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",P,[e.createElementVNode("div",q,[e.createVNode(a,{for:"price",class:"text-sm"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("Price",-1)])]),_:1}),e.createVNode(u,{type:"number",min:"0",id:"price",placeholder:e.unref(c)?"Free":"",modelValue:e.unref(l),"onUpdate:modelValue":t[2]||(t[2]=g=>e.isRef(l)?l.value=g:null),class:"no-spinner"},null,8,["placeholder","modelValue"]),e.unref(o).price?(e.openBlock(),e.createElementBlock("p",G,e.toDisplayString(e.unref(o).price),1)):e.createCommentVNode("",!0)])])]),_:1})]),_:1})}}}),J={class:"flex flex-col gap-4"},K={class:"flex flex-col gap-2"},W={class:"truncate"},X={class:"relative w-full max-w-sm items-center"},Z={class:"absolute start-0 inset-y-0 flex items-center justify-center px-3"},H={class:"truncate"},Q={key:0,class:"text-red-500 text-sm mt-1"},Y={key:0},ee={class:"group flex items-center gap-2 bg-muted/50 rounded-md mb-1 p-2"},te={class:"w-6"},oe={class:"text-muted-foreground group-hover:text-black dark:group-hover:text-white"},ne=e.defineComponent({__name:"Countries",setup($){const{errors:c}=p.useFormContext(),{value:o}=p.useField("countries");return e.watch(o,r=>{let n=r?.sort((d,t)=>!d||!t?0:E.rawCountries.find(a=>a.cca2===d)?.name.common.localeCompare(E.rawCountries.find(a=>a.cca2===t)?.name.common)),l=!0;for(let d=0;d<r.length;d++)if(r[d]!==o.value[d]){l=!1;break}l||(o.value=n)}),(r,n)=>{const l=e.resolveComponent("Label"),d=e.resolveComponent("Button"),t=e.resolveComponent("ComboboxTrigger"),a=e.resolveComponent("ComboboxAnchor"),u=e.resolveComponent("ComboboxInput"),m=e.resolveComponent("ComboboxEmpty"),N=e.resolveComponent("ComboboxItemIndicator"),w=e.resolveComponent("ComboboxItem"),g=e.resolveComponent("ComboboxGroup"),f=e.resolveComponent("ComboboxList"),O=e.resolveComponent("Combobox"),T=e.resolveComponent("CardContent"),k=e.resolveComponent("Card");return e.openBlock(),e.createBlock(k,null,{default:e.withCtx(()=>[e.createVNode(T,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[n[3]||(n[3]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Countries",-1)),e.createElementVNode("div",J,[e.createElementVNode("div",K,[e.createVNode(l,{class:"text-sm mb-2"},{default:e.withCtx(()=>[...n[1]||(n[1]=[e.createTextVNode("For which countries should this option be available?",-1)])]),_:1}),e.createVNode(O,{modelValue:e.unref(o),"onUpdate:modelValue":n[0]||(n[0]=x=>e.isRef(o)?o.value=x:null),multiple:!0},{default:e.withCtx(()=>[e.createVNode(a,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(t,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(d,{variant:"outline",class:"justify-between"},{default:e.withCtx(()=>[e.createElementVNode("span",W,e.toDisplayString(e.unref(o)?.length>0?e.unref(o).slice(0,4).map(x=>e.unref(E.rawCountries).find(h=>h.cca2===x)?.name.common).join(", "):"Select countries"),1),e.createVNode(e.unref(b.ChevronsUpDown),{class:"ml-2 size-4 shrink-0 opacity-50"})]),_:1})]),_:1})]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",X,[e.createVNode(u,{class:"pl-9 focus-visible:ring-0 border-0 border-b rounded-none h-10",placeholder:"Find country..."}),e.createElementVNode("span",Z,[e.createVNode(e.unref(b.Search),{class:"size-4 text-muted-foreground"})])]),e.createVNode(m,null,{default:e.withCtx(()=>[...n[2]||(n[2]=[e.createTextVNode(" No countries found. ",-1)])]),_:1}),e.createVNode(g,{class:"max-h-72 overflow-y-scroll"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(E.rawCountries),x=>(e.openBlock(),e.createBlock(w,{key:x.cca2,value:x.cca2},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(x.flag)+" ",1),e.createElementVNode("span",H,e.toDisplayString(x.name.common),1),e.createVNode(N,null,{default:e.withCtx(()=>[e.createVNode(e.unref(b.Check),{class:"size-4"})]),_:1})]),_:2},1032,["value"]))),128))]),_:1})]),_:1})]),_:1},8,["modelValue"]),e.unref(c).countries?(e.openBlock(),e.createElementBlock("p",Q,e.toDisplayString(e.unref(c).countries),1)):e.createCommentVNode("",!0)])]),e.unref(o)?.length>0?(e.openBlock(),e.createElementBlock("div",Y,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o),x=>(e.openBlock(),e.createElementBlock("div",ee,[e.createElementVNode("div",te,e.toDisplayString(e.unref(E.rawCountries).find(h=>h.cca2===x)?.flag),1),e.createElementVNode("p",oe,e.toDisplayString(e.unref(E.rawCountries).find(h=>h.cca2===x)?.name.common),1),e.createVNode(d,{variant:"ghost",size:"icon",onClick:h=>o.value=e.unref(o).filter(I=>I!==x),class:"hidden group-hover:flex ml-auto size-6"},{default:e.withCtx(()=>[e.createVNode(e.unref(b.X),{class:"size-3"})]),_:1},8,["onClick"])]))),256))])):e.createCommentVNode("",!0)]),_:1})]),_:1})}}}),le={class:"flex items-center space-x-2"},se={class:"flex items-center space-x-2"},re={class:"flex items-center space-x-2"},ie={key:0,class:"flex gap-2 w-full mt-4"},ae={class:"flex flex-col gap-4 w-full"},ce={class:"flex flex-col gap-2"},de={class:"relative"},ue={key:0,class:"text-red-500 text-sm mt-1"},pe={class:"flex flex-col gap-4 w-full"},me={class:"flex flex-col gap-2"},fe={class:"relative"},xe={key:0,class:"text-red-500 text-sm mt-1"},_e={key:1,class:"flex gap-2 w-full mt-4"},Ce={class:"flex flex-col gap-4 w-full"},Ve={class:"flex flex-col gap-2"},ve={class:"relative"},Ne={key:0,class:"text-red-500 text-sm mt-1"},ge={class:"flex flex-col gap-4 w-full"},be={class:"flex flex-col gap-2"},he={class:"relative"},we={key:0,class:"text-red-500 text-sm mt-1"},ke=e.defineComponent({__name:"Condition",setup($){const c=e.inject("isLoadingCompleted",e.ref(!1)),{errors:o}=p.useFormContext(),{value:r}=p.useField("condition"),{value:n}=p.useField("condition_min"),{value:l}=p.useField("condition_max");return(d,t)=>{const a=e.resolveComponent("RadioGroupItem"),u=e.resolveComponent("Label"),m=e.resolveComponent("RadioGroup"),N=e.resolveComponent("Input"),w=e.resolveComponent("CardContent"),g=e.resolveComponent("Card");return e.openBlock(),e.createBlock(g,null,{default:e.withCtx(()=>[e.createVNode(w,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[t[16]||(t[16]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Condition",-1)),t[17]||(t[17]=e.createElementVNode("p",null," Specify when this option should be available ",-1)),e.createVNode(m,{"default-value":"always",modelValue:e.unref(r),"onUpdate:modelValue":t[0]||(t[0]=f=>e.isRef(r)?r.value=f:null),class:e.normalizeClass(["flex flex-col transition-all duration-300",{"opacity-0 pointer-events-none":!e.unref(c)}])},{default:e.withCtx(()=>[e.createElementVNode("div",le,[e.createVNode(a,{id:"always",value:"always"}),e.createVNode(u,{for:"always"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("Always",-1)])]),_:1})]),e.createElementVNode("div",se,[e.createVNode(a,{id:"weight_based",value:"weight_based"}),e.createVNode(u,{for:"weight_based"},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("Weight based",-1)])]),_:1})]),e.createElementVNode("div",re,[e.createVNode(a,{id:"price_based",value:"price_based"}),e.createVNode(u,{for:"price_based"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Price based",-1)])]),_:1})])]),_:1},8,["modelValue","class"]),e.unref(r)==="weight_based"?(e.openBlock(),e.createElementBlock("div",ie,[e.createElementVNode("div",ae,[e.createElementVNode("div",ce,[e.createVNode(u,{for:"condition_min",class:"text-sm"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Minimum weight",-1)])]),_:1}),e.createElementVNode("div",de,[e.createVNode(N,{type:"number",id:"condition_min",min:"0",placeholder:"0",modelValue:e.unref(n),"onUpdate:modelValue":t[1]||(t[1]=f=>e.isRef(n)?n.value=f:null),class:"no-spinner pr-10"},null,8,["modelValue"]),t[9]||(t[9]=e.createElementVNode("span",{class:"absolute pointer-events-none top-1/2 right-3 -translate-y-1/2 text-sm text-muted-foreground"},"kg",-1))]),e.unref(o).condition_min?(e.openBlock(),e.createElementBlock("p",ue,e.toDisplayString(e.unref(o).condition_min),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",pe,[e.createElementVNode("div",me,[e.createVNode(u,{for:"condition_max",class:"text-sm"},{default:e.withCtx(()=>[...t[10]||(t[10]=[e.createTextVNode("Maximum weight",-1)])]),_:1}),e.createElementVNode("div",fe,[e.createVNode(N,{type:"number",id:"condition_max",min:"0",placeholder:"No limit",modelValue:e.unref(l),"onUpdate:modelValue":t[2]||(t[2]=f=>e.isRef(l)?l.value=f:null),class:"no-spinner pr-10"},null,8,["modelValue"]),t[11]||(t[11]=e.createElementVNode("span",{class:"absolute pointer-events-none top-1/2 right-3 -translate-y-1/2 text-sm text-muted-foreground"},"kg",-1))]),e.unref(o).condition_max?(e.openBlock(),e.createElementBlock("p",xe,e.toDisplayString(e.unref(o).condition_max),1)):e.createCommentVNode("",!0)])])])):e.unref(r)==="price_based"?(e.openBlock(),e.createElementBlock("div",_e,[e.createElementVNode("div",Ce,[e.createElementVNode("div",Ve,[e.createVNode(u,{for:"condition_min",class:"text-sm"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode("Minimum price",-1)])]),_:1}),e.createElementVNode("div",ve,[e.createVNode(N,{type:"number",id:"condition_min",min:"0",placeholder:"0, 00",modelValue:e.unref(n),"onUpdate:modelValue":t[3]||(t[3]=f=>e.isRef(n)?n.value=f:null),class:"no-spinner pl-8"},null,8,["modelValue"]),t[13]||(t[13]=e.createElementVNode("span",{class:"absolute pointer-events-none top-1/2 left-3 -translate-y-1/2 text-sm text-muted-foreground"},"€",-1))]),e.unref(o).condition_min?(e.openBlock(),e.createElementBlock("p",Ne,e.toDisplayString(e.unref(o).condition_min),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",ge,[e.createElementVNode("div",be,[e.createVNode(u,{for:"condition_max",class:"text-sm"},{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode("Maximum price",-1)])]),_:1}),e.createElementVNode("div",he,[e.createVNode(N,{type:"number",id:"condition_max",min:"0",placeholder:"No limit",modelValue:e.unref(l),"onUpdate:modelValue":t[4]||(t[4]=f=>e.isRef(l)?l.value=f:null),class:"no-spinner pl-8"},null,8,["modelValue"]),t[15]||(t[15]=e.createElementVNode("span",{class:"absolute pointer-events-none top-1/2 left-3 -translate-y-1/2 text-sm text-muted-foreground"},"€",-1))]),e.unref(o).condition_max?(e.openBlock(),e.createElementBlock("p",we,e.toDisplayString(e.unref(o).condition_max),1)):e.createCommentVNode("",!0)])])])):e.createCommentVNode("",!0)]),_:1})]),_:1})}}}),ye={class:"flex gap-2 rounded-lg p-2 bg-white text-black overflow-hidden shadow border"},Ee={class:"w-full overflow-hidden"},Be={class:"truncate"},$e={key:0,class:"text-sm text-muted-foreground"},Se={class:"ml-auto shrink-0"},Te={class:"font-bold"},Oe=e.defineComponent({__name:"Example",setup($){const{value:c}=p.useField("title"),{value:o}=p.useField("description"),{value:r}=p.useField("price");return(n,l)=>{const d=e.resolveComponent("CardContent"),t=e.resolveComponent("Card");return e.openBlock(),e.createBlock(t,null,{default:e.withCtx(()=>[e.createVNode(d,null,{default:e.withCtx(()=>[l[1]||(l[1]=e.createElementVNode("p",{class:"text-md font-semibold mb-2"},"Example",-1)),e.createElementVNode("div",ye,[l[0]||(l[0]=e.createElementVNode("div",{class:"pt-1 shrink-0"},[e.createElementVNode("div",{class:"size-4 rounded-full bg-primary flex items-center justify-center"},[e.createElementVNode("div",{class:"size-2 rounded-full bg-white"})])],-1)),e.createElementVNode("div",Ee,[e.createElementVNode("p",Be,e.toDisplayString(e.unref(c)||"Option Name"),1),e.unref(o)?(e.openBlock(),e.createElementBlock("p",$e,e.toDisplayString(e.unref(o)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Se,[e.createElementVNode("p",Te,e.toDisplayString(e.unref(r)?"€"+e.unref(r).toFixed(2):"FREE"),1)])])]),_:1})]),_:1})}}}),Ie={class:"relative @container"},De={class:"flex flex-row gap-4 justify-between max-w-5xl mx-auto mt-4 mb-6"},Me={class:"flex items-center"},Fe={class:"text-lg font-semibold mx-2"},Le={class:"flex flex-col @3xl:flex-row gap-4 max-w-5xl mx-auto pb-24"},Re={class:"flex flex-col gap-4 w-full @3xl:w-2/3"},ze={class:"flex flex-col gap-4 w-full @3xl:w-1/3"},Ue={key:0,class:"fixed bottom-4 left-0 md:left-12 right-0 min-w-xs max-w-5xl w-[calc(100%-2rem)] md:w-[calc(100%-5rem)] xl:w-[calc(100%-2rem)] h-16 border border-white/10 backdrop-blur-sm border-t border-border flex items-center justify-center px-4 mx-auto z-[9999] rounded-xl overflow-hidden shadow bg-[radial-gradient(#ffffff80,transparent)] dark:bg-[radial-gradient(#00000080,transparent)]"},je={class:"w-full max-w-5xl flex items-center justify-end mx-auto"},Pe=e.defineComponent({__name:"Detail",props:{config:{type:Object,required:!0}},setup($){const c=$,{hasPermission:o,hasAnyPermission:r}=S.useModulePermissions(),{params:n,navigateTo:l}=S.useModuleRoute(),{confirm:d}=S.useConfirmation(),t=S.useFirebaseIntegration(c.config.project),a=e.computed(()=>!n.value.optionId||n.value.optionId==="new"),u=e.ref(!1),m=e.ref(!1),N=p.toTypedSchema(C.objectType({id:C.stringType().optional(),status:C.stringType().optional(),title:C.stringType().min(1,"Title is required"),description:C.stringType().optional(),price:C.preprocessType(i=>i===""?void 0:i,C.coerce.number().positive("Must be positive").optional()),countries:C.arrayType(C.stringType()).optional(),condition:C.stringType(),condition_min:C.preprocessType(i=>i===""?void 0:i,C.coerce.number().positive("Must be positive").optional()),condition_max:C.preprocessType(i=>i===""?void 0:i,C.coerce.number().positive("Must be positive").optional())})),{handleSubmit:w,errors:g,values:f,setValues:O}=p.useForm({validationSchema:N,initialValues:{status:"published",countries:[],condition:"always"}});S.useModuleBreadcrumbs(()=>[{text:f.title??"New Option"}]);const T=w(async i=>{m.value=!0;let s=await k()||[];if(a.value){let _=JSON.parse(JSON.stringify(i));_.id=crypto.randomUUID();const v=[...s,_],V=c.config.shippingOptionsCollection.split(":");await t.update(V[0],null,{[V[1]]:v}),l(_.id),B.toast.success("Shipping option created")}else{let _=JSON.parse(JSON.stringify(i));const v=s.map(y=>y.id===n.value.optionId?_:y),V=c.config.shippingOptionsCollection.split(":");await t.update(V[0],null,{[V[1]]:v}),l(`${n.value.optionId}`),B.toast.success("Shipping option updated")}m.value=!1}),k=async()=>{if(!c.config.shippingOptionsCollection)return[];const i=c.config.shippingOptionsCollection.split(":");return i.length!==2?[]:(await t.get(i[0]))?.[i[1]]||[]},x=async()=>{const s=(await k()).find(_=>_.id===n.value.optionId);O(s),u.value=!0},h=async()=>{try{let s={...[...await k()||[]].find(y=>y.id===n.value.optionId)};s.id=crypto.randomUUID(),s.status="published",s.title=s.title+" (copy)";const v=[...await k()||[],s],V=c.config.shippingOptionsCollection.split(":");await t.update(V[0],null,{[V[1]]:v}),l(s.id),B.toast.success("Option duplicated")}catch{B.toast.error("Failed to duplicate option")}},I=async()=>{if(await d("Are you sure you want to delete this option?"))try{const s=await k()||[];if(s.length===0||!n.value.optionId)throw new Error("Error loading values");const _=s.filter(V=>V.id!==n.value.optionId),v=c.config.shippingOptionsCollection.split(":");await t.update(v[0],null,{[v[1]]:_}),l(""),B.toast.success("Option deleted")}catch{B.toast.error("Failed to delete option")}};return e.onMounted(()=>{a.value?u.value=!0:x()}),e.provide("isLoadingCompleted",u),(i,s)=>{const _=e.resolveComponent("Button"),v=e.resolveComponent("MenubarTrigger"),V=e.resolveComponent("MenubarMenu"),y=e.resolveComponent("MenubarItem"),D=e.resolveComponent("MenubarContent"),M=e.resolveComponent("Menubar");return e.openBlock(),e.createElementBlock("div",Ie,[e.createElementVNode("div",De,[e.createElementVNode("div",Me,[e.createVNode(_,{variant:"ghost",onClick:s[0]||(s[0]=qe=>e.unref(l)(""))},{default:e.withCtx(()=>[e.createVNode(e.unref(b.Tag),{class:"size-4"})]),_:1}),e.createVNode(e.unref(b.ChevronRight),{class:"size-3"}),e.createElementVNode("h1",Fe,e.toDisplayString(a.value?"New Option":e.unref(f).title),1)]),a.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(M,{key:0,class:"bg-sidebar"},{default:e.withCtx(()=>[e.unref(o)("create-collection")?(e.openBlock(),e.createBlock(V,{key:0},{default:e.withCtx(()=>[e.createVNode(v,{onClick:h},{default:e.withCtx(()=>[...s[1]||(s[1]=[e.createTextVNode("Duplicate",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.unref(r)("edit-collection","delete-option")?(e.openBlock(),e.createBlock(V,{key:1},{default:e.withCtx(()=>[e.createVNode(v,null,{default:e.withCtx(()=>[...s[2]||(s[2]=[e.createTextVNode("More actions",-1)])]),_:1}),e.createVNode(D,null,{default:e.withCtx(()=>[e.unref(o)("delete-option")?(e.openBlock(),e.createBlock(y,{key:0,variant:"destructive",onClick:I},{default:e.withCtx(()=>[e.createVNode(e.unref(b.Trash),{class:"size-4"}),s[3]||(s[3]=e.createTextVNode(" Delete option ",-1))]),_:1})):e.createCommentVNode("",!0)]),_:1})]),_:1})):e.createCommentVNode("",!0)]),_:1}))]),e.createElementVNode("div",Le,[e.createElementVNode("div",Re,[e.createVNode(A),e.createVNode(ne),e.createVNode(ke)]),e.createElementVNode("div",ze,[e.createVNode(Oe)])]),e.unref(r)("create-option","edit-option")?(e.openBlock(),e.createElementBlock("div",Ue,[e.createElementVNode("div",je,[a.value&&e.unref(o)("create-option")?(e.openBlock(),e.createBlock(_,{key:0,onClick:e.unref(T),disabled:m.value},{default:e.withCtx(()=>[m.value?(e.openBlock(),e.createBlock(e.unref(b.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(m.value?"Creating":"Create")+" New Option ",1)]),_:1},8,["onClick","disabled"])):e.unref(o)("edit-option")?(e.openBlock(),e.createBlock(_,{key:1,onClick:e.unref(T),disabled:m.value},{default:e.withCtx(()=>[m.value?(e.openBlock(),e.createBlock(e.unref(b.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(m.value?"Saving":"Save")+" Changes ",1)]),_:1},8,["onClick","disabled"])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)])}}});exports.default=Pe;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),p=require("./vee-validate-zod-CWZwNTWE.js"),E=require("./countries-CgZ081No.js"),b=require("lucide-vue-next"),S=require("@oneclick.dev/cms-kit"),B=require("./index-ijdf0d9-.js"),C=require("./types-D5dgTskW.js"),F={class:"flex flex-col gap-4"},L={class:"flex flex-col gap-2"},R={key:0,class:"text-red-500 text-sm mt-1"},z={class:"flex flex-col gap-4"},U={class:"flex flex-col gap-2"},j={key:0,class:"text-red-500 text-sm mt-1"},P={class:"flex flex-col gap-4"},q={class:"flex flex-col gap-2"},G={key:0,class:"text-red-500 text-sm mt-1"},A=e.defineComponent({__name:"Main",setup($){const c=e.inject("isLoadingCompleted",e.ref(!1)),{errors:o}=p.useFormContext(),{value:r}=p.useField("title"),{value:n}=p.useField("description"),{value:l}=p.useField("price");return(d,t)=>{const a=e.resolveComponent("Label"),u=e.resolveComponent("Input"),m=e.resolveComponent("Textarea"),N=e.resolveComponent("CardContent"),w=e.resolveComponent("Card");return e.openBlock(),e.createBlock(w,null,{default:e.withCtx(()=>[e.createVNode(N,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[e.createElementVNode("div",F,[e.createElementVNode("div",L,[e.createVNode(a,{for:"title",class:"text-sm"},{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode("Name",-1)])]),_:1}),e.createVNode(u,{type:"text",id:"title",placeholder:e.unref(c)?"Fast shipping":"",modelValue:e.unref(r),"onUpdate:modelValue":t[0]||(t[0]=g=>e.isRef(r)?r.value=g:null)},null,8,["placeholder","modelValue"]),e.unref(o).title?(e.openBlock(),e.createElementBlock("p",R,e.toDisplayString(e.unref(o).title),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",z,[e.createElementVNode("div",U,[e.createVNode(a,{for:"description",class:"text-sm"},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode("Description (optional)",-1)])]),_:1}),e.createVNode(m,{id:"description",placeholder:e.unref(c)?"Ships next day":"",modelValue:e.unref(n),"onUpdate:modelValue":t[1]||(t[1]=g=>e.isRef(n)?n.value=g:null)},null,8,["placeholder","modelValue"]),e.unref(o).description?(e.openBlock(),e.createElementBlock("p",j,e.toDisplayString(e.unref(o).description),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",P,[e.createElementVNode("div",q,[e.createVNode(a,{for:"price",class:"text-sm"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("Price",-1)])]),_:1}),e.createVNode(u,{type:"number",min:"0",id:"price",placeholder:e.unref(c)?"Free":"",modelValue:e.unref(l),"onUpdate:modelValue":t[2]||(t[2]=g=>e.isRef(l)?l.value=g:null),class:"no-spinner"},null,8,["placeholder","modelValue"]),e.unref(o).price?(e.openBlock(),e.createElementBlock("p",G,e.toDisplayString(e.unref(o).price),1)):e.createCommentVNode("",!0)])])]),_:1})]),_:1})}}}),J={class:"flex flex-col gap-4"},K={class:"flex flex-col gap-2"},W={class:"truncate"},X={class:"relative w-full max-w-sm items-center"},Z={class:"absolute start-0 inset-y-0 flex items-center justify-center px-3"},H={class:"truncate"},Q={key:0,class:"text-red-500 text-sm mt-1"},Y={key:0},ee={class:"group flex items-center gap-2 bg-muted/50 rounded-md mb-1 p-2"},te={class:"w-6"},oe={class:"text-muted-foreground group-hover:text-black dark:group-hover:text-white"},ne=e.defineComponent({__name:"Countries",setup($){const{errors:c}=p.useFormContext(),{value:o}=p.useField("countries");return e.watch(o,r=>{let n=r?.sort((d,t)=>!d||!t?0:E.rawCountries.find(a=>a.cca2===d)?.name.common.localeCompare(E.rawCountries.find(a=>a.cca2===t)?.name.common)),l=!0;for(let d=0;d<r.length;d++)if(r[d]!==o.value[d]){l=!1;break}l||(o.value=n)}),(r,n)=>{const l=e.resolveComponent("Label"),d=e.resolveComponent("Button"),t=e.resolveComponent("ComboboxTrigger"),a=e.resolveComponent("ComboboxAnchor"),u=e.resolveComponent("ComboboxInput"),m=e.resolveComponent("ComboboxEmpty"),N=e.resolveComponent("ComboboxItemIndicator"),w=e.resolveComponent("ComboboxItem"),g=e.resolveComponent("ComboboxGroup"),f=e.resolveComponent("ComboboxList"),O=e.resolveComponent("Combobox"),T=e.resolveComponent("CardContent"),k=e.resolveComponent("Card");return e.openBlock(),e.createBlock(k,null,{default:e.withCtx(()=>[e.createVNode(T,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[n[3]||(n[3]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Countries",-1)),e.createElementVNode("div",J,[e.createElementVNode("div",K,[e.createVNode(l,{class:"text-sm mb-2"},{default:e.withCtx(()=>[...n[1]||(n[1]=[e.createTextVNode("For which countries should this option be available?",-1)])]),_:1}),e.createVNode(O,{modelValue:e.unref(o),"onUpdate:modelValue":n[0]||(n[0]=x=>e.isRef(o)?o.value=x:null),multiple:!0},{default:e.withCtx(()=>[e.createVNode(a,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(t,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(d,{variant:"outline",class:"justify-between"},{default:e.withCtx(()=>[e.createElementVNode("span",W,e.toDisplayString(e.unref(o)?.length>0?e.unref(o).slice(0,4).map(x=>e.unref(E.rawCountries).find(h=>h.cca2===x)?.name.common).join(", "):"Select countries"),1),e.createVNode(e.unref(b.ChevronsUpDown),{class:"ml-2 size-4 shrink-0 opacity-50"})]),_:1})]),_:1})]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",X,[e.createVNode(u,{class:"pl-9 focus-visible:ring-0 border-0 border-b rounded-none h-10",placeholder:"Find country..."}),e.createElementVNode("span",Z,[e.createVNode(e.unref(b.Search),{class:"size-4 text-muted-foreground"})])]),e.createVNode(m,null,{default:e.withCtx(()=>[...n[2]||(n[2]=[e.createTextVNode(" No countries found. ",-1)])]),_:1}),e.createVNode(g,{class:"max-h-72 overflow-y-scroll"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(E.rawCountries),x=>(e.openBlock(),e.createBlock(w,{key:x.cca2,value:x.cca2},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(x.flag)+" ",1),e.createElementVNode("span",H,e.toDisplayString(x.name.common),1),e.createVNode(N,null,{default:e.withCtx(()=>[e.createVNode(e.unref(b.Check),{class:"size-4"})]),_:1})]),_:2},1032,["value"]))),128))]),_:1})]),_:1})]),_:1},8,["modelValue"]),e.unref(c).countries?(e.openBlock(),e.createElementBlock("p",Q,e.toDisplayString(e.unref(c).countries),1)):e.createCommentVNode("",!0)])]),e.unref(o)?.length>0?(e.openBlock(),e.createElementBlock("div",Y,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o),x=>(e.openBlock(),e.createElementBlock("div",ee,[e.createElementVNode("div",te,e.toDisplayString(e.unref(E.rawCountries).find(h=>h.cca2===x)?.flag),1),e.createElementVNode("p",oe,e.toDisplayString(e.unref(E.rawCountries).find(h=>h.cca2===x)?.name.common),1),e.createVNode(d,{variant:"ghost",size:"icon",onClick:h=>o.value=e.unref(o).filter(I=>I!==x),class:"hidden group-hover:flex ml-auto size-6"},{default:e.withCtx(()=>[e.createVNode(e.unref(b.X),{class:"size-3"})]),_:1},8,["onClick"])]))),256))])):e.createCommentVNode("",!0)]),_:1})]),_:1})}}}),le={class:"flex items-center space-x-2"},se={class:"flex items-center space-x-2"},re={class:"flex items-center space-x-2"},ie={key:0,class:"flex gap-2 w-full mt-4"},ae={class:"flex flex-col gap-4 w-full"},ce={class:"flex flex-col gap-2"},de={class:"relative"},ue={key:0,class:"text-red-500 text-sm mt-1"},pe={class:"flex flex-col gap-4 w-full"},me={class:"flex flex-col gap-2"},fe={class:"relative"},xe={key:0,class:"text-red-500 text-sm mt-1"},_e={key:1,class:"flex gap-2 w-full mt-4"},Ce={class:"flex flex-col gap-4 w-full"},Ve={class:"flex flex-col gap-2"},ve={class:"relative"},Ne={key:0,class:"text-red-500 text-sm mt-1"},ge={class:"flex flex-col gap-4 w-full"},be={class:"flex flex-col gap-2"},he={class:"relative"},we={key:0,class:"text-red-500 text-sm mt-1"},ke=e.defineComponent({__name:"Condition",setup($){const c=e.inject("isLoadingCompleted",e.ref(!1)),{errors:o}=p.useFormContext(),{value:r}=p.useField("condition"),{value:n}=p.useField("condition_min"),{value:l}=p.useField("condition_max");return(d,t)=>{const a=e.resolveComponent("RadioGroupItem"),u=e.resolveComponent("Label"),m=e.resolveComponent("RadioGroup"),N=e.resolveComponent("Input"),w=e.resolveComponent("CardContent"),g=e.resolveComponent("Card");return e.openBlock(),e.createBlock(g,null,{default:e.withCtx(()=>[e.createVNode(w,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[t[16]||(t[16]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Condition",-1)),t[17]||(t[17]=e.createElementVNode("p",null," Specify when this option should be available ",-1)),e.createVNode(m,{"default-value":"always",modelValue:e.unref(r),"onUpdate:modelValue":t[0]||(t[0]=f=>e.isRef(r)?r.value=f:null),class:e.normalizeClass(["flex flex-col transition-all duration-300",{"opacity-0 pointer-events-none":!e.unref(c)}])},{default:e.withCtx(()=>[e.createElementVNode("div",le,[e.createVNode(a,{id:"always",value:"always"}),e.createVNode(u,{for:"always"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("Always",-1)])]),_:1})]),e.createElementVNode("div",se,[e.createVNode(a,{id:"weight_based",value:"weight_based"}),e.createVNode(u,{for:"weight_based"},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("Weight based",-1)])]),_:1})]),e.createElementVNode("div",re,[e.createVNode(a,{id:"price_based",value:"price_based"}),e.createVNode(u,{for:"price_based"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Price based",-1)])]),_:1})])]),_:1},8,["modelValue","class"]),e.unref(r)==="weight_based"?(e.openBlock(),e.createElementBlock("div",ie,[e.createElementVNode("div",ae,[e.createElementVNode("div",ce,[e.createVNode(u,{for:"condition_min",class:"text-sm"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Minimum weight",-1)])]),_:1}),e.createElementVNode("div",de,[e.createVNode(N,{type:"number",id:"condition_min",min:"0",placeholder:"0",modelValue:e.unref(n),"onUpdate:modelValue":t[1]||(t[1]=f=>e.isRef(n)?n.value=f:null),class:"no-spinner pr-10"},null,8,["modelValue"]),t[9]||(t[9]=e.createElementVNode("span",{class:"absolute pointer-events-none top-1/2 right-3 -translate-y-1/2 text-sm text-muted-foreground"},"kg",-1))]),e.unref(o).condition_min?(e.openBlock(),e.createElementBlock("p",ue,e.toDisplayString(e.unref(o).condition_min),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",pe,[e.createElementVNode("div",me,[e.createVNode(u,{for:"condition_max",class:"text-sm"},{default:e.withCtx(()=>[...t[10]||(t[10]=[e.createTextVNode("Maximum weight",-1)])]),_:1}),e.createElementVNode("div",fe,[e.createVNode(N,{type:"number",id:"condition_max",min:"0",placeholder:"No limit",modelValue:e.unref(l),"onUpdate:modelValue":t[2]||(t[2]=f=>e.isRef(l)?l.value=f:null),class:"no-spinner pr-10"},null,8,["modelValue"]),t[11]||(t[11]=e.createElementVNode("span",{class:"absolute pointer-events-none top-1/2 right-3 -translate-y-1/2 text-sm text-muted-foreground"},"kg",-1))]),e.unref(o).condition_max?(e.openBlock(),e.createElementBlock("p",xe,e.toDisplayString(e.unref(o).condition_max),1)):e.createCommentVNode("",!0)])])])):e.unref(r)==="price_based"?(e.openBlock(),e.createElementBlock("div",_e,[e.createElementVNode("div",Ce,[e.createElementVNode("div",Ve,[e.createVNode(u,{for:"condition_min",class:"text-sm"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode("Minimum price",-1)])]),_:1}),e.createElementVNode("div",ve,[e.createVNode(N,{type:"number",id:"condition_min",min:"0",placeholder:"0, 00",modelValue:e.unref(n),"onUpdate:modelValue":t[3]||(t[3]=f=>e.isRef(n)?n.value=f:null),class:"no-spinner pl-8"},null,8,["modelValue"]),t[13]||(t[13]=e.createElementVNode("span",{class:"absolute pointer-events-none top-1/2 left-3 -translate-y-1/2 text-sm text-muted-foreground"},"€",-1))]),e.unref(o).condition_min?(e.openBlock(),e.createElementBlock("p",Ne,e.toDisplayString(e.unref(o).condition_min),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",ge,[e.createElementVNode("div",be,[e.createVNode(u,{for:"condition_max",class:"text-sm"},{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode("Maximum price",-1)])]),_:1}),e.createElementVNode("div",he,[e.createVNode(N,{type:"number",id:"condition_max",min:"0",placeholder:"No limit",modelValue:e.unref(l),"onUpdate:modelValue":t[4]||(t[4]=f=>e.isRef(l)?l.value=f:null),class:"no-spinner pl-8"},null,8,["modelValue"]),t[15]||(t[15]=e.createElementVNode("span",{class:"absolute pointer-events-none top-1/2 left-3 -translate-y-1/2 text-sm text-muted-foreground"},"€",-1))]),e.unref(o).condition_max?(e.openBlock(),e.createElementBlock("p",we,e.toDisplayString(e.unref(o).condition_max),1)):e.createCommentVNode("",!0)])])])):e.createCommentVNode("",!0)]),_:1})]),_:1})}}}),ye={class:"flex gap-2 rounded-lg p-2 bg-white text-black overflow-hidden shadow border"},Ee={class:"w-full overflow-hidden"},Be={class:"truncate"},$e={key:0,class:"text-sm text-muted-foreground"},Se={class:"ml-auto shrink-0"},Te={class:"font-bold"},Oe=e.defineComponent({__name:"Example",setup($){const{value:c}=p.useField("title"),{value:o}=p.useField("description"),{value:r}=p.useField("price");return(n,l)=>{const d=e.resolveComponent("CardContent"),t=e.resolveComponent("Card");return e.openBlock(),e.createBlock(t,null,{default:e.withCtx(()=>[e.createVNode(d,null,{default:e.withCtx(()=>[l[1]||(l[1]=e.createElementVNode("p",{class:"text-md font-semibold mb-2"},"Example",-1)),e.createElementVNode("div",ye,[l[0]||(l[0]=e.createElementVNode("div",{class:"pt-1 shrink-0"},[e.createElementVNode("div",{class:"size-4 rounded-full bg-primary flex items-center justify-center"},[e.createElementVNode("div",{class:"size-2 rounded-full bg-white"})])],-1)),e.createElementVNode("div",Ee,[e.createElementVNode("p",Be,e.toDisplayString(e.unref(c)||"Option Name"),1),e.unref(o)?(e.openBlock(),e.createElementBlock("p",$e,e.toDisplayString(e.unref(o)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Se,[e.createElementVNode("p",Te,e.toDisplayString(e.unref(r)?"€"+e.unref(r).toFixed(2):"FREE"),1)])])]),_:1})]),_:1})}}}),Ie={class:"relative @container"},De={class:"flex flex-row gap-4 justify-between max-w-5xl mx-auto mt-4 mb-6"},Me={class:"flex items-center"},Fe={class:"text-lg font-semibold mx-2"},Le={class:"flex flex-col @3xl:flex-row gap-4 max-w-5xl mx-auto pb-24"},Re={class:"flex flex-col gap-4 w-full @3xl:w-2/3"},ze={class:"flex flex-col gap-4 w-full @3xl:w-1/3"},Ue={key:0,class:"fixed bottom-4 left-0 md:left-12 right-0 min-w-xs max-w-5xl w-[calc(100%-2rem)] md:w-[calc(100%-5rem)] xl:w-[calc(100%-2rem)] h-16 border border-white/10 backdrop-blur-sm border-t border-border flex items-center justify-center px-4 mx-auto z-[9999] rounded-xl overflow-hidden shadow bg-[radial-gradient(#ffffff80,transparent)] dark:bg-[radial-gradient(#00000080,transparent)]"},je={class:"w-full max-w-5xl flex items-center justify-end mx-auto"},Pe=e.defineComponent({__name:"Detail",props:{config:{type:Object,required:!0}},setup($){const c=$,{hasPermission:o,hasAnyPermission:r}=S.useModulePermissions(),{params:n,navigateTo:l}=S.useModuleRoute(),{confirm:d}=S.useConfirmation(),t=S.useFirebaseIntegration(c.config.project),a=e.computed(()=>!n.value.optionId||n.value.optionId==="new"),u=e.ref(!1),m=e.ref(!1),N=p.toTypedSchema(C.objectType({id:C.stringType().optional(),status:C.stringType().optional(),title:C.stringType().min(1,"Title is required"),description:C.stringType().optional(),price:C.preprocessType(i=>i===""?void 0:i,C.coerce.number().positive("Must be positive").optional()),countries:C.arrayType(C.stringType()).optional(),condition:C.stringType(),condition_min:C.preprocessType(i=>i===""?void 0:i,C.coerce.number().positive("Must be positive").optional()),condition_max:C.preprocessType(i=>i===""?void 0:i,C.coerce.number().positive("Must be positive").optional())})),{handleSubmit:w,errors:g,values:f,setValues:O}=p.useForm({validationSchema:N,initialValues:{status:"published",countries:[],condition:"always"}});S.useModuleBreadcrumbs(()=>[{text:f.title??"New Option"}]);const T=w(async i=>{m.value=!0;let s=await k()||[];if(a.value){let _=JSON.parse(JSON.stringify(i));_.id=crypto.randomUUID();const v=[...s,_],V=c.config.shippingOptionsCollection.split(":");await t.update(V[0],null,{[V[1]]:v}),l(_.id),B.toast.success("Shipping option created")}else{let _=JSON.parse(JSON.stringify(i));const v=s.map(y=>y.id===n.value.optionId?_:y),V=c.config.shippingOptionsCollection.split(":");await t.update(V[0],null,{[V[1]]:v}),l(`${n.value.optionId}`),B.toast.success("Shipping option updated")}m.value=!1}),k=async()=>{if(!c.config.shippingOptionsCollection)return[];const i=c.config.shippingOptionsCollection.split(":");return i.length!==2?[]:(await t.get(i[0]))?.[i[1]]||[]},x=async()=>{const s=(await k()).find(_=>_.id===n.value.optionId);O(s),u.value=!0},h=async()=>{try{let s={...[...await k()||[]].find(y=>y.id===n.value.optionId)};s.id=crypto.randomUUID(),s.status="published",s.title=s.title+" (copy)";const v=[...await k()||[],s],V=c.config.shippingOptionsCollection.split(":");await t.update(V[0],null,{[V[1]]:v}),l(s.id),B.toast.success("Option duplicated")}catch{B.toast.error("Failed to duplicate option")}},I=async()=>{if(await d("Are you sure you want to delete this option?"))try{const s=await k()||[];if(s.length===0||!n.value.optionId)throw new Error("Error loading values");const _=s.filter(V=>V.id!==n.value.optionId),v=c.config.shippingOptionsCollection.split(":");await t.update(v[0],null,{[v[1]]:_}),l(""),B.toast.success("Option deleted")}catch{B.toast.error("Failed to delete option")}};return e.onMounted(()=>{a.value?u.value=!0:x()}),e.provide("isLoadingCompleted",u),(i,s)=>{const _=e.resolveComponent("Button"),v=e.resolveComponent("MenubarTrigger"),V=e.resolveComponent("MenubarMenu"),y=e.resolveComponent("MenubarItem"),D=e.resolveComponent("MenubarContent"),M=e.resolveComponent("Menubar");return e.openBlock(),e.createElementBlock("div",Ie,[e.createElementVNode("div",De,[e.createElementVNode("div",Me,[e.createVNode(_,{variant:"ghost",onClick:s[0]||(s[0]=qe=>e.unref(l)(""))},{default:e.withCtx(()=>[e.createVNode(e.unref(b.Tag),{class:"size-4"})]),_:1}),e.createVNode(e.unref(b.ChevronRight),{class:"size-3"}),e.createElementVNode("h1",Fe,e.toDisplayString(a.value?"New Option":e.unref(f).title),1)]),a.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(M,{key:0,class:"bg-sidebar"},{default:e.withCtx(()=>[e.unref(o)("create-collection")?(e.openBlock(),e.createBlock(V,{key:0},{default:e.withCtx(()=>[e.createVNode(v,{onClick:h},{default:e.withCtx(()=>[...s[1]||(s[1]=[e.createTextVNode("Duplicate",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.unref(r)("edit-collection","delete-option")?(e.openBlock(),e.createBlock(V,{key:1},{default:e.withCtx(()=>[e.createVNode(v,null,{default:e.withCtx(()=>[...s[2]||(s[2]=[e.createTextVNode("More actions",-1)])]),_:1}),e.createVNode(D,null,{default:e.withCtx(()=>[e.unref(o)("delete-option")?(e.openBlock(),e.createBlock(y,{key:0,variant:"destructive",onClick:I},{default:e.withCtx(()=>[e.createVNode(e.unref(b.Trash),{class:"size-4"}),s[3]||(s[3]=e.createTextVNode(" Delete option ",-1))]),_:1})):e.createCommentVNode("",!0)]),_:1})]),_:1})):e.createCommentVNode("",!0)]),_:1}))]),e.createElementVNode("div",Le,[e.createElementVNode("div",Re,[e.createVNode(A),e.createVNode(ne),e.createVNode(ke)]),e.createElementVNode("div",ze,[e.createVNode(Oe)])]),e.unref(r)("create-option","edit-option")?(e.openBlock(),e.createElementBlock("div",Ue,[e.createElementVNode("div",je,[a.value&&e.unref(o)("create-option")?(e.openBlock(),e.createBlock(_,{key:0,onClick:e.unref(T),disabled:m.value},{default:e.withCtx(()=>[m.value?(e.openBlock(),e.createBlock(e.unref(b.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(m.value?"Creating":"Create")+" New Option ",1)]),_:1},8,["onClick","disabled"])):e.unref(o)("edit-option")?(e.openBlock(),e.createBlock(_,{key:1,onClick:e.unref(T),disabled:m.value},{default:e.withCtx(()=>[m.value?(e.openBlock(),e.createBlock(e.unref(b.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(m.value?"Saving":"Save")+" Changes ",1)]),_:1},8,["onClick","disabled"])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)])}}});exports.default=Pe;
@@ -1,10 +1,10 @@
1
1
  import { defineComponent as B, inject as Q, ref as R, resolveComponent as i, openBlock as d, createBlock as O, withCtx as s, createVNode as n, createElementVNode as o, createTextVNode as v, isRef as N, unref as e, createElementBlock as b, toDisplayString as _, createCommentVNode as f, watch as ee, Fragment as X, renderList as H, normalizeClass as te, computed as oe, onMounted as ne, provide as se } from "vue";
2
- import { u as W, a as S, t as le, b as ie } from "./vee-validate-zod-CN16K2x9.mjs";
2
+ import { u as W, a as S, t as le, b as ie } from "./vee-validate-zod-D0WaDgDZ.mjs";
3
3
  import { r as F } from "./countries-BTPvmrsb.mjs";
4
4
  import { ChevronsUpDown as ae, Search as de, Check as re, X as ce, Tag as ue, ChevronRight as pe, Trash as me, Loader2 as K } from "lucide-vue-next";
5
5
  import { useModulePermissions as fe, useModuleRoute as _e, useConfirmation as xe, useFirebaseIntegration as ve, useModuleBreadcrumbs as be } from "@oneclick.dev/cms-kit";
6
6
  import { t as j } from "./index-RLz1QPrf.mjs";
7
- import { o as ge, p as J, c as q, s as E, a as he } from "./types-ibC3-e1N.mjs";
7
+ import { o as ge, p as J, c as q, s as E, a as he } from "./types-B5MifmeF.mjs";
8
8
  const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2" }, ye = {
9
9
  key: 0,
10
10
  class: "text-red-500 text-sm mt-1"
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),t=require("./TemplateBuilder.vue_vue_type_script_setup_true_lang-BgDdzbLe.js"),r=e.defineComponent({__name:"Overview",setup(_){return(n,u)=>(e.openBlock(),e.createBlock(t._sfc_main))}});exports.default=r;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),r=require("lucide-vue-next"),x=require("@oneclick.dev/cms-kit"),S={class:"mx-auto flex w-full min-w-0 max-w-6xl flex-1 flex-col px-4 py-6 sm:px-6 sm:py-10 lg:px-8"},U={class:"flex flex-wrap items-start justify-between gap-4"},L={key:0,class:"mt-8 rounded-xl border border-dashed p-10 text-center"},j={key:0,role:"alert",class:"mt-6 flex items-start gap-2 rounded-lg border border-destructive/30 bg-destructive/5 p-3 text-sm text-destructive"},R={key:1,role:"status",class:"mt-6 rounded-lg border border-emerald-300/50 bg-emerald-50 p-3 text-sm text-emerald-800 dark:bg-emerald-950/40 dark:text-emerald-300"},A={class:"flex flex-col items-center text-center"},I={class:"flex size-11 items-center justify-center rounded-full bg-muted"},P=["disabled"],q={class:"mt-8 min-w-0"},K={class:"flex items-center justify-between border-b pb-4"},O={class:"min-w-0"},W=["title"],Y={class:"text-sm text-muted-foreground"},Z={key:0,role:"status",class:"flex items-center justify-center gap-2 py-16 text-sm text-muted-foreground"},G={key:1,class:"py-16 text-center text-sm text-muted-foreground"},H={key:2,class:"divide-y"},J={class:"flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted"},Q={class:"min-w-0 flex-1"},X=["title","onClick"],ee=["title"],te={key:2,class:"mt-0.5 text-xs text-muted-foreground"},oe={key:0,class:"ml-auto flex shrink-0 gap-2"},le=["href","aria-label"],ne=["href","aria-label"],re={key:3,class:"border-t py-5 text-center"},ae=e.defineComponent({__name:"Overview",setup(se){const B=x.useModuleApi(),{moduleId:_}=x.useModuleRoute(),{hasPermission:$,isAdmin:D}=x.useModulePermissions();x.useModuleBreadcrumbs(()=>[]);const y=e.computed(()=>$("view-files")),g=e.computed(()=>D()),i=e.ref([]),a=e.ref(""),p=e.ref(null),s=e.ref(!1),d=e.ref(!1),f=e.ref(!1),b=e.ref(""),c=e.ref(""),v=e.ref(""),k=e.ref(null);function V(l,t){const n=l;return n?.data?.statusMessage||n?.message||t}async function u(l=!0){if(!y.value||s.value)return;s.value=!0,c.value="";const t=l?null:p.value;try{const n=new URLSearchParams;a.value&&n.set("folder",a.value),t&&n.set("cursor",t);const o=await B.get(`/files?${n}`);i.value=l?o.files:[...i.value,...o.files],p.value=o.nextCursor}catch(n){c.value=V(n,"Files could not be loaded.")}finally{s.value=!1}}async function N(l){if(!l||!g.value||d.value)return;const t=Array.from(l);if(!t.length)return;d.value=!0,c.value="",v.value="";let n=0;try{for(const[o,m]of t.entries()){if(!m.size||m.size>25*1024*1024)throw new Error(`${m.name} must be between 1 byte and 25 MB.`);b.value=`Uploading ${o+1} of ${t.length}…`;const E=new FormData;E.append("file",m),await B.post(`/files?folder=${encodeURIComponent(a.value)}`,{body:E}),n++}v.value=`${n} ${n===1?"file":"files"} uploaded.`}catch(o){c.value=`${n} of ${t.length} uploaded. ${V(o,"Upload failed.")}`}finally{k.value&&(k.value.value=""),b.value="",d.value=!1,n&&await u()}}function F(l){f.value=!1,l.preventDefault(),g.value&&N(l.dataTransfer?.files||null)}function h(l){a.value=l,i.value=[],p.value=null,u()}function w(l,t){return`/api/v1/modules/${encodeURIComponent(_)}/files/content?path=${encodeURIComponent(l.path)}${t?"&view=1":""}`}function z(l){return/^(application\/pdf|image\/(jpeg|png|gif|webp))$/.test(l.content_type||"")}function T(l){return l.directory?r.Folder:l.content_type?.startsWith("image/")?r.FileImage:l.content_type==="application/pdf"||l.content_type?.startsWith("text/")?r.FileText:r.File}function M(l){return l<1024?`${l} B`:l<1024*1024?`${(l/1024).toFixed(1)} KB`:`${(l/(1024*1024)).toFixed(1)} MB`}function C(l){if(!l)return"";const t=new Date(l);return Number.isNaN(t.getTime())?"":t.toLocaleDateString()}return e.onMounted(()=>u()),(l,t)=>{const n=e.resolveComponent("Button");return e.openBlock(),e.createElementBlock("main",S,[e.createElementVNode("header",U,[t[8]||(t[8]=e.createElementVNode("div",null,[e.createElementVNode("h1",{class:"text-2xl font-semibold tracking-tight sm:text-3xl"},"File Zone"),e.createElementVNode("p",{class:"mt-2 text-sm leading-6 text-muted-foreground"},"Files shared with people who have access to this module.")],-1)),y.value?(e.openBlock(),e.createBlock(n,{key:0,variant:"outline",size:"sm",disabled:s.value||d.value,onClick:t[0]||(t[0]=o=>u())},{default:e.withCtx(()=>[e.createVNode(e.unref(r.RefreshCw),{class:e.normalizeClass(["size-4",{"animate-spin":s.value}])},null,8,["class"]),t[7]||(t[7]=e.createTextVNode(" Refresh ",-1))]),_:1},8,["disabled"])):e.createCommentVNode("",!0)]),y.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[c.value?(e.openBlock(),e.createElementBlock("div",j,[e.createVNode(e.unref(r.AlertCircle),{class:"mt-0.5 size-4 shrink-0"}),e.createTextVNode(e.toDisplayString(c.value),1)])):e.createCommentVNode("",!0),v.value?(e.openBlock(),e.createElementBlock("p",R,e.toDisplayString(v.value),1)):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createElementBlock("section",{key:2,class:e.normalizeClass(["mt-7 rounded-xl border border-dashed p-6 sm:p-8",f.value?"border-primary bg-primary/5":"border-border"]),onDragover:t[3]||(t[3]=e.withModifiers(o=>f.value=!0,["prevent"])),onDragleave:t[4]||(t[4]=e.withModifiers(o=>f.value=!1,["prevent"])),onDrop:F},[e.createElementVNode("div",A,[e.createElementVNode("div",I,[e.createVNode(e.unref(r.UploadCloud),{class:"size-5 text-muted-foreground"})]),t[10]||(t[10]=e.createElementVNode("h2",{class:"mt-3 font-medium"},"Upload files for your team",-1)),t[11]||(t[11]=e.createElementVNode("p",{class:"mt-1 text-sm text-muted-foreground"},"Choose files or drop them here. Maximum 25 MB per file.",-1)),e.createElementVNode("input",{ref_key:"picker",ref:k,class:"sr-only",type:"file",multiple:"","aria-label":"Choose files to upload",disabled:d.value,onChange:t[1]||(t[1]=o=>N(o.target.files))},null,40,P),e.createVNode(n,{class:"mt-4",disabled:d.value,onClick:t[2]||(t[2]=o=>k.value?.click())},{default:e.withCtx(()=>[d.value?(e.openBlock(),e.createBlock(e.unref(r.Loader2),{key:0,class:"size-4 animate-spin"})):(e.openBlock(),e.createBlock(e.unref(r.UploadCloud),{key:1,class:"size-4"})),e.createTextVNode(" "+e.toDisplayString(b.value||"Choose files"),1)]),_:1},8,["disabled"])])],34)):e.createCommentVNode("",!0),e.createElementVNode("section",q,[e.createElementVNode("div",K,[e.createElementVNode("div",O,[t[12]||(t[12]=e.createElementVNode("h2",{class:"text-base font-semibold"},"Connected files",-1)),a.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mt-1 text-sm text-primary hover:underline",onClick:t[5]||(t[5]=o=>h(a.value.split("/").slice(0,-1).join("/")))},"← Back to parent folder")):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createElementBlock("p",{key:1,class:"truncate text-xs text-muted-foreground",title:a.value},e.toDisplayString(a.value),9,W)):e.createCommentVNode("",!0)]),e.createElementVNode("span",Y,e.toDisplayString(i.value.length)+" loaded",1)]),s.value&&!i.value.length?(e.openBlock(),e.createElementBlock("div",Z,[e.createVNode(e.unref(r.Loader2),{class:"size-4 animate-spin"}),t[13]||(t[13]=e.createTextVNode(" Loading files…",-1))])):!i.value.length&&!c.value?(e.openBlock(),e.createElementBlock("div",G,"This folder is empty.")):(e.openBlock(),e.createElementBlock("ul",H,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,o=>(e.openBlock(),e.createElementBlock("li",{key:o.path,class:"flex min-w-0 flex-wrap items-center gap-3 py-4 sm:flex-nowrap"},[e.createElementVNode("div",J,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(T(o)),{class:"size-5 text-muted-foreground"}))]),e.createElementVNode("div",Q,[o.directory?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"block max-w-full truncate text-left text-sm font-medium hover:underline",title:o.name,onClick:m=>h(o.path)},e.toDisplayString(o.name),9,X)):(e.openBlock(),e.createElementBlock("p",{key:1,class:"truncate text-sm font-medium",title:o.name},e.toDisplayString(o.name),9,ee)),o.directory?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",te,[e.createTextVNode(e.toDisplayString(M(o.size_bytes)),1),C(o.modified_at)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" · "+e.toDisplayString(C(o.modified_at)),1)],64)):e.createCommentVNode("",!0)]))]),o.directory?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",oe,[z(o)?(e.openBlock(),e.createBlock(n,{key:0,"as-child":"",variant:"outline",size:"sm"},{default:e.withCtx(()=>[e.createElementVNode("a",{href:w(o,!0),target:"_blank",rel:"noopener noreferrer","aria-label":`View ${o.name}`},[e.createVNode(e.unref(r.Eye),{class:"size-4"}),t[14]||(t[14]=e.createTextVNode(" View",-1))],8,le)]),_:2},1024)):e.createCommentVNode("",!0),e.createVNode(n,{"as-child":"",variant:"outline",size:"sm"},{default:e.withCtx(()=>[e.createElementVNode("a",{href:w(o,!1),"aria-label":`Download ${o.name}`},[e.createVNode(e.unref(r.Download),{class:"size-4"}),t[15]||(t[15]=e.createTextVNode(" Download",-1))],8,ne)]),_:2},1024)]))]))),128))])),p.value?(e.openBlock(),e.createElementBlock("div",re,[e.createVNode(n,{variant:"outline",disabled:s.value,onClick:t[6]||(t[6]=o=>u(!1))},{default:e.withCtx(()=>[s.value?(e.openBlock(),e.createBlock(e.unref(r.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),t[16]||(t[16]=e.createTextVNode(" Load more",-1))]),_:1},8,["disabled"])])):e.createCommentVNode("",!0)])],64)):(e.openBlock(),e.createElementBlock("section",L,[...t[9]||(t[9]=[e.createElementVNode("h2",{class:"font-medium"},"You cannot view these files",-1),e.createElementVNode("p",{class:"mt-2 text-sm text-muted-foreground"},"Ask an administrator for access and the View and download files permission.",-1)])]))])}}});exports.default=ae;
@@ -0,0 +1,289 @@
1
+ import { defineComponent as G, computed as I, ref as i, onMounted as H, resolveComponent as J, openBlock as o, createElementBlock as a, createElementVNode as n, createBlock as g, withCtx as k, createVNode as d, unref as m, normalizeClass as T, createTextVNode as c, createCommentVNode as r, Fragment as D, toDisplayString as f, withModifiers as E, renderList as Q, resolveDynamicComponent as X } from "vue";
2
+ import { RefreshCw as ee, AlertCircle as te, UploadCloud as P, Loader2 as M, Eye as se, Download as oe, Folder as le, FileImage as ne, FileText as ae, File as re } from "lucide-vue-next";
3
+ import { useModuleApi as ie, useModuleRoute as ue, useModulePermissions as de, useModuleBreadcrumbs as me } from "@oneclick.dev/cms-kit";
4
+ const ce = { class: "mx-auto flex w-full min-w-0 max-w-6xl flex-1 flex-col px-4 py-6 sm:px-6 sm:py-10 lg:px-8" }, fe = { class: "flex flex-wrap items-start justify-between gap-4" }, pe = {
5
+ key: 0,
6
+ class: "mt-8 rounded-xl border border-dashed p-10 text-center"
7
+ }, ve = {
8
+ key: 0,
9
+ role: "alert",
10
+ class: "mt-6 flex items-start gap-2 rounded-lg border border-destructive/30 bg-destructive/5 p-3 text-sm text-destructive"
11
+ }, xe = {
12
+ key: 1,
13
+ role: "status",
14
+ class: "mt-6 rounded-lg border border-emerald-300/50 bg-emerald-50 p-3 text-sm text-emerald-800 dark:bg-emerald-950/40 dark:text-emerald-300"
15
+ }, ye = { class: "flex flex-col items-center text-center" }, ge = { class: "flex size-11 items-center justify-center rounded-full bg-muted" }, be = ["disabled"], he = { class: "mt-8 min-w-0" }, ke = { class: "flex items-center justify-between border-b pb-4" }, we = { class: "min-w-0" }, _e = ["title"], $e = { class: "text-sm text-muted-foreground" }, Ce = {
16
+ key: 0,
17
+ role: "status",
18
+ class: "flex items-center justify-center gap-2 py-16 text-sm text-muted-foreground"
19
+ }, ze = {
20
+ key: 1,
21
+ class: "py-16 text-center text-sm text-muted-foreground"
22
+ }, Fe = {
23
+ key: 2,
24
+ class: "divide-y"
25
+ }, Be = { class: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted" }, De = { class: "min-w-0 flex-1" }, Me = ["title", "onClick"], Ue = ["title"], Le = {
26
+ key: 2,
27
+ class: "mt-0.5 text-xs text-muted-foreground"
28
+ }, Ve = {
29
+ key: 0,
30
+ class: "ml-auto flex shrink-0 gap-2"
31
+ }, je = ["href", "aria-label"], Ne = ["href", "aria-label"], Re = {
32
+ key: 3,
33
+ class: "border-t py-5 text-center"
34
+ }, Pe = /* @__PURE__ */ G({
35
+ __name: "Overview",
36
+ setup(Ae) {
37
+ const U = ie(), { moduleId: S } = ue(), { hasPermission: W, isAdmin: K } = de();
38
+ me(() => []);
39
+ const z = I(() => W("view-files")), F = I(() => K()), v = i([]), u = i(""), w = i(null), p = i(!1), x = i(!1), _ = i(!1), B = i(""), y = i(""), $ = i(""), C = i(null);
40
+ function L(s, e) {
41
+ const l = s;
42
+ return l?.data?.statusMessage || l?.message || e;
43
+ }
44
+ async function b(s = !0) {
45
+ if (!z.value || p.value) return;
46
+ p.value = !0, y.value = "";
47
+ const e = s ? null : w.value;
48
+ try {
49
+ const l = new URLSearchParams();
50
+ u.value && l.set("folder", u.value), e && l.set("cursor", e);
51
+ const t = await U.get(`/files?${l}`);
52
+ v.value = s ? t.files : [...v.value, ...t.files], w.value = t.nextCursor;
53
+ } catch (l) {
54
+ y.value = L(l, "Files could not be loaded.");
55
+ } finally {
56
+ p.value = !1;
57
+ }
58
+ }
59
+ async function V(s) {
60
+ if (!s || !F.value || x.value) return;
61
+ const e = Array.from(s);
62
+ if (!e.length) return;
63
+ x.value = !0, y.value = "", $.value = "";
64
+ let l = 0;
65
+ try {
66
+ for (const [t, h] of e.entries()) {
67
+ if (!h.size || h.size > 25 * 1024 * 1024)
68
+ throw new Error(`${h.name} must be between 1 byte and 25 MB.`);
69
+ B.value = `Uploading ${t + 1} of ${e.length}…`;
70
+ const A = new FormData();
71
+ A.append("file", h), await U.post(`/files?folder=${encodeURIComponent(u.value)}`, { body: A }), l++;
72
+ }
73
+ $.value = `${l} ${l === 1 ? "file" : "files"} uploaded.`;
74
+ } catch (t) {
75
+ y.value = `${l} of ${e.length} uploaded. ${L(t, "Upload failed.")}`;
76
+ } finally {
77
+ C.value && (C.value.value = ""), B.value = "", x.value = !1, l && await b();
78
+ }
79
+ }
80
+ function O(s) {
81
+ _.value = !1, s.preventDefault(), F.value && V(s.dataTransfer?.files || null);
82
+ }
83
+ function j(s) {
84
+ u.value = s, v.value = [], w.value = null, b();
85
+ }
86
+ function N(s, e) {
87
+ return `/api/v1/modules/${encodeURIComponent(S)}/files/content?path=${encodeURIComponent(s.path)}${e ? "&view=1" : ""}`;
88
+ }
89
+ function Y(s) {
90
+ return /^(application\/pdf|image\/(jpeg|png|gif|webp))$/.test(s.content_type || "");
91
+ }
92
+ function Z(s) {
93
+ return s.directory ? le : s.content_type?.startsWith("image/") ? ne : s.content_type === "application/pdf" || s.content_type?.startsWith("text/") ? ae : re;
94
+ }
95
+ function q(s) {
96
+ return s < 1024 ? `${s} B` : s < 1024 * 1024 ? `${(s / 1024).toFixed(1)} KB` : `${(s / (1024 * 1024)).toFixed(1)} MB`;
97
+ }
98
+ function R(s) {
99
+ if (!s) return "";
100
+ const e = new Date(s);
101
+ return Number.isNaN(e.getTime()) ? "" : e.toLocaleDateString();
102
+ }
103
+ return H(() => b()), (s, e) => {
104
+ const l = J("Button");
105
+ return o(), a("main", ce, [
106
+ n("header", fe, [
107
+ e[8] || (e[8] = n("div", null, [
108
+ n("h1", { class: "text-2xl font-semibold tracking-tight sm:text-3xl" }, "File Zone"),
109
+ n("p", { class: "mt-2 text-sm leading-6 text-muted-foreground" }, "Files shared with people who have access to this module.")
110
+ ], -1)),
111
+ z.value ? (o(), g(l, {
112
+ key: 0,
113
+ variant: "outline",
114
+ size: "sm",
115
+ disabled: p.value || x.value,
116
+ onClick: e[0] || (e[0] = (t) => b())
117
+ }, {
118
+ default: k(() => [
119
+ d(m(ee), {
120
+ class: T(["size-4", { "animate-spin": p.value }])
121
+ }, null, 8, ["class"]),
122
+ e[7] || (e[7] = c(" Refresh ", -1))
123
+ ]),
124
+ _: 1
125
+ }, 8, ["disabled"])) : r("", !0)
126
+ ]),
127
+ z.value ? (o(), a(D, { key: 1 }, [
128
+ y.value ? (o(), a("div", ve, [
129
+ d(m(te), { class: "mt-0.5 size-4 shrink-0" }),
130
+ c(f(y.value), 1)
131
+ ])) : r("", !0),
132
+ $.value ? (o(), a("p", xe, f($.value), 1)) : r("", !0),
133
+ F.value ? (o(), a("section", {
134
+ key: 2,
135
+ class: T(["mt-7 rounded-xl border border-dashed p-6 sm:p-8", _.value ? "border-primary bg-primary/5" : "border-border"]),
136
+ onDragover: e[3] || (e[3] = E((t) => _.value = !0, ["prevent"])),
137
+ onDragleave: e[4] || (e[4] = E((t) => _.value = !1, ["prevent"])),
138
+ onDrop: O
139
+ }, [
140
+ n("div", ye, [
141
+ n("div", ge, [
142
+ d(m(P), { class: "size-5 text-muted-foreground" })
143
+ ]),
144
+ e[10] || (e[10] = n("h2", { class: "mt-3 font-medium" }, "Upload files for your team", -1)),
145
+ e[11] || (e[11] = n("p", { class: "mt-1 text-sm text-muted-foreground" }, "Choose files or drop them here. Maximum 25 MB per file.", -1)),
146
+ n("input", {
147
+ ref_key: "picker",
148
+ ref: C,
149
+ class: "sr-only",
150
+ type: "file",
151
+ multiple: "",
152
+ "aria-label": "Choose files to upload",
153
+ disabled: x.value,
154
+ onChange: e[1] || (e[1] = (t) => V(t.target.files))
155
+ }, null, 40, be),
156
+ d(l, {
157
+ class: "mt-4",
158
+ disabled: x.value,
159
+ onClick: e[2] || (e[2] = (t) => C.value?.click())
160
+ }, {
161
+ default: k(() => [
162
+ x.value ? (o(), g(m(M), {
163
+ key: 0,
164
+ class: "size-4 animate-spin"
165
+ })) : (o(), g(m(P), {
166
+ key: 1,
167
+ class: "size-4"
168
+ })),
169
+ c(" " + f(B.value || "Choose files"), 1)
170
+ ]),
171
+ _: 1
172
+ }, 8, ["disabled"])
173
+ ])
174
+ ], 34)) : r("", !0),
175
+ n("section", he, [
176
+ n("div", ke, [
177
+ n("div", we, [
178
+ e[12] || (e[12] = n("h2", { class: "text-base font-semibold" }, "Connected files", -1)),
179
+ u.value ? (o(), a("button", {
180
+ key: 0,
181
+ type: "button",
182
+ class: "mt-1 text-sm text-primary hover:underline",
183
+ onClick: e[5] || (e[5] = (t) => j(u.value.split("/").slice(0, -1).join("/")))
184
+ }, "← Back to parent folder")) : r("", !0),
185
+ u.value ? (o(), a("p", {
186
+ key: 1,
187
+ class: "truncate text-xs text-muted-foreground",
188
+ title: u.value
189
+ }, f(u.value), 9, _e)) : r("", !0)
190
+ ]),
191
+ n("span", $e, f(v.value.length) + " loaded", 1)
192
+ ]),
193
+ p.value && !v.value.length ? (o(), a("div", Ce, [
194
+ d(m(M), { class: "size-4 animate-spin" }),
195
+ e[13] || (e[13] = c(" Loading files…", -1))
196
+ ])) : !v.value.length && !y.value ? (o(), a("div", ze, "This folder is empty.")) : (o(), a("ul", Fe, [
197
+ (o(!0), a(D, null, Q(v.value, (t) => (o(), a("li", {
198
+ key: t.path,
199
+ class: "flex min-w-0 flex-wrap items-center gap-3 py-4 sm:flex-nowrap"
200
+ }, [
201
+ n("div", Be, [
202
+ (o(), g(X(Z(t)), { class: "size-5 text-muted-foreground" }))
203
+ ]),
204
+ n("div", De, [
205
+ t.directory ? (o(), a("button", {
206
+ key: 0,
207
+ type: "button",
208
+ class: "block max-w-full truncate text-left text-sm font-medium hover:underline",
209
+ title: t.name,
210
+ onClick: (h) => j(t.path)
211
+ }, f(t.name), 9, Me)) : (o(), a("p", {
212
+ key: 1,
213
+ class: "truncate text-sm font-medium",
214
+ title: t.name
215
+ }, f(t.name), 9, Ue)),
216
+ t.directory ? r("", !0) : (o(), a("p", Le, [
217
+ c(f(q(t.size_bytes)), 1),
218
+ R(t.modified_at) ? (o(), a(D, { key: 0 }, [
219
+ c(" · " + f(R(t.modified_at)), 1)
220
+ ], 64)) : r("", !0)
221
+ ]))
222
+ ]),
223
+ t.directory ? r("", !0) : (o(), a("div", Ve, [
224
+ Y(t) ? (o(), g(l, {
225
+ key: 0,
226
+ "as-child": "",
227
+ variant: "outline",
228
+ size: "sm"
229
+ }, {
230
+ default: k(() => [
231
+ n("a", {
232
+ href: N(t, !0),
233
+ target: "_blank",
234
+ rel: "noopener noreferrer",
235
+ "aria-label": `View ${t.name}`
236
+ }, [
237
+ d(m(se), { class: "size-4" }),
238
+ e[14] || (e[14] = c(" View", -1))
239
+ ], 8, je)
240
+ ]),
241
+ _: 2
242
+ }, 1024)) : r("", !0),
243
+ d(l, {
244
+ "as-child": "",
245
+ variant: "outline",
246
+ size: "sm"
247
+ }, {
248
+ default: k(() => [
249
+ n("a", {
250
+ href: N(t, !1),
251
+ "aria-label": `Download ${t.name}`
252
+ }, [
253
+ d(m(oe), { class: "size-4" }),
254
+ e[15] || (e[15] = c(" Download", -1))
255
+ ], 8, Ne)
256
+ ]),
257
+ _: 2
258
+ }, 1024)
259
+ ]))
260
+ ]))), 128))
261
+ ])),
262
+ w.value ? (o(), a("div", Re, [
263
+ d(l, {
264
+ variant: "outline",
265
+ disabled: p.value,
266
+ onClick: e[6] || (e[6] = (t) => b(!1))
267
+ }, {
268
+ default: k(() => [
269
+ p.value ? (o(), g(m(M), {
270
+ key: 0,
271
+ class: "size-4 animate-spin"
272
+ })) : r("", !0),
273
+ e[16] || (e[16] = c(" Load more", -1))
274
+ ]),
275
+ _: 1
276
+ }, 8, ["disabled"])
277
+ ])) : r("", !0)
278
+ ])
279
+ ], 64)) : (o(), a("section", pe, [...e[9] || (e[9] = [
280
+ n("h2", { class: "font-medium" }, "You cannot view these files", -1),
281
+ n("p", { class: "mt-2 text-sm text-muted-foreground" }, "Ask an administrator for access and the View and download files permission.", -1)
282
+ ])]))
283
+ ]);
284
+ };
285
+ }
286
+ });
287
+ export {
288
+ Pe as default
289
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),p=require("lucide-vue-next"),P=require("@oneclick.dev/cms-kit"),G=require("./index-ijdf0d9-.js");function O(x,E){const l=x;return l?.data?.statusMessage||l?.statusMessage||E}function _(x){return x==null||x===""?"Not available":String(x).replaceAll("_"," ").toLowerCase().replace(/^./,E=>E.toUpperCase())}function Q(x){return typeof x=="number"&&Number.isFinite(x)?new Intl.NumberFormat().format(x):"Not available"}function J(x,E){if(!x)return"Not available";const l=new Date(typeof x=="number"?x*1e3:x);return Number.isNaN(l.getTime())?"Not available":l.toLocaleDateString(void 0,{dateStyle:"medium",...E?{timeZone:E}:{}})}const te={key:0,role:"status",class:"flex items-center justify-center gap-2 py-16 text-sm text-muted-foreground"},oe={class:"grid min-w-0 gap-6 md:grid-cols-[minmax(0,1.25fr)_minmax(0,1fr)]"},ae={key:0,class:"min-w-0 space-y-4"},le={class:"space-y-2"},ne={class:"grid grid-cols-2 gap-3"},se={class:"space-y-2"},re={class:"space-y-2"},de={class:"space-y-2"},ie={key:0,class:"space-y-2"},ue={class:"space-y-2"},ce={key:1,class:"space-y-3 rounded-lg border p-3"},me={class:"space-y-2"},pe={class:"space-y-3"},ve={class:"flex items-center justify-between gap-2"},fe={class:"text-xs leading-5 text-muted-foreground"},xe={class:"flex items-center gap-2"},Ve={class:"space-y-2"},Ne={key:0,class:"space-y-2"},ge={key:1,class:"space-y-2"},ye={key:1,class:"min-w-0 space-y-5"},be={class:"grid grid-cols-2 gap-5 text-sm"},Ce={class:"mt-1 font-medium"},we={class:"mt-1 font-medium"},ke={class:"mt-1 font-medium"},_e={class:"mt-1 font-medium"},Ee={key:1,class:"rounded-lg border bg-muted/30 p-3 text-sm leading-6 text-muted-foreground"},he={href:"https://business.facebook.com/wa/manage/message-templates/",target:"_blank",rel:"noopener noreferrer",class:"flex items-center gap-1.5 text-sm underline underline-offset-4"},Be={class:"min-w-0 self-start rounded-xl border bg-muted/40 p-4"},Te={class:"overflow-hidden rounded-lg border bg-background shadow-sm"},Se={key:0,class:"whitespace-pre-wrap break-words px-4 pt-4 text-sm font-semibold"},De={key:1,class:"whitespace-pre-wrap break-words p-4 text-sm leading-6"},$e={key:2,class:"whitespace-pre-wrap break-words px-4 pb-4 text-xs text-muted-foreground"},Me={key:3,class:"border-t"},Ae={key:4,class:"m-3 rounded border border-dashed p-3 text-sm text-muted-foreground"},Re={key:1,class:"mt-5 rounded-lg border bg-muted/30 p-3 text-sm leading-6 text-muted-foreground"},Le=e.defineComponent({__name:"TemplateDialog",props:{open:{type:Boolean},template:{},canManage:{type:Boolean}},emits:["update:open","saved"],setup(x,{emit:E}){const l=x,V=E,y=P.useModuleApi(),n=e.ref(null),v=e.ref(!1),a=e.ref(!1),u=e.ref(!1),f=e.ref(""),r=e.ref(o()),N=e.computed(()=>[...new Set(Array.from(r.value.bodyText.matchAll(/\{\{(\d+)\}\}/g),c=>Number(c[1])))].sort((c,t)=>c-t).slice(0,20)),g=e.ref({}),m=e.computed(()=>!n.value&&!u.value&&(r.value.buttons?.length||0)<(r.value.buttons?.some(c=>c.type!=="QUICK_REPLY")?2:3)),h=e.computed(()=>v.value?[...r.value.headerText?[{type:"HEADER",format:"TEXT",text:r.value.headerText}]:[],{type:"BODY",text:r.value.bodyText||"Your message will appear here."},...r.value.footerText?[{type:"FOOTER",text:r.value.footerText}]:[],...r.value.buttons?.length?[{type:"BUTTONS",buttons:r.value.buttons}]:[]]:n.value?.components||[]);function o(){return{name:"",language:"en_US",category:"UTILITY",headerText:"",headerExample:"",bodyText:"",bodyExamples:[],footerText:"",buttons:[]}}function I(c){return"Example for {{"+c+"}}"}function L(c){r.value=JSON.parse(JSON.stringify(c)),r.value.buttons||=[],g.value=Object.fromEntries((c.bodyExamples||[]).map((t,w)=>[w+1,t]))}e.watch(()=>[l.open,l.template?.id],async([c],t,w)=>{let b=!1;if(w(()=>{b=!0}),!!c&&(a.value=!1,f.value="",n.value=l.template,v.value=!l.template,L(l.template?.draft||o()),!!l.template)){a.value=!0;try{const B=await y.get(`/templates/${encodeURIComponent(l.template.id)}`,{query:{name:l.template.name}});if(b)return;n.value=B,B.draft&&L(B.draft)}catch(B){b||(f.value=O(B,"The latest template could not be loaded. Reopen it to try again."))}finally{b||(a.value=!1)}}});function U(c,t){if(n.value||u.value)return;const w=r.value.buttons?.[c]?.text||"";let b={type:"QUICK_REPLY",text:w};t==="URL"&&(b={type:"URL",text:w,url:""}),t==="PHONE_NUMBER"&&(b={type:"PHONE_NUMBER",text:w,phoneNumber:""}),r.value.buttons&&(r.value.buttons[c]=b)}function C(c,t){const w=(r.value.buttons||[]).filter((b,B)=>B!==c);return t==="QUICK_REPLY"?w.every(b=>b.type==="QUICK_REPLY"):w.every(b=>b.type!=="QUICK_REPLY"&&b.type!==t)}function s(){if(!m.value)return;const c=r.value.buttons||=[];c.some(t=>t.type==="URL")?c.push({type:"PHONE_NUMBER",text:"",phoneNumber:""}):c.some(t=>t.type==="PHONE_NUMBER")?c.push({type:"URL",text:"",url:""}):c.push({type:"QUICK_REPLY",text:""})}async function S(){if(!(u.value||!l.canManage||n.value&&!n.value.editable)){u.value=!0,f.value="";try{const c={...r.value,bodyExamples:N.value.map(w=>g.value[w]||"")};if(!(n.value?await y.patch(`/templates/${encodeURIComponent(n.value.id)}`,{body:c}):await y.post("/templates",{body:c})).success)throw new Error("Mutation unsuccessful");G.toast.success("Template submitted to Meta"),V("saved"),V("update:open",!1)}catch(c){f.value=O(c,"The template could not be submitted. Review the fields and try again.")}finally{u.value=!1}}}function M(c){u.value||V("update:open",c)}return(c,t)=>{const w=e.resolveComponent("ResponsiveModalTitle"),b=e.resolveComponent("ResponsiveModalDescription"),B=e.resolveComponent("ResponsiveModalHeader"),z=e.resolveComponent("AlertTitle"),F=e.resolveComponent("AlertDescription"),A=e.resolveComponent("Alert"),D=e.resolveComponent("Label"),T=e.resolveComponent("Input"),H=e.resolveComponent("SelectValue"),q=e.resolveComponent("SelectTrigger"),$=e.resolveComponent("SelectItem"),j=e.resolveComponent("SelectContent"),Y=e.resolveComponent("Select"),K=e.resolveComponent("Textarea"),d=e.resolveComponent("Button"),W=e.resolveComponent("ResponsiveModalFooter"),X=e.resolveComponent("ResponsiveModalScrollContent"),Z=e.resolveComponent("ResponsiveModal");return e.openBlock(),e.createBlock(Z,{open:x.open,"onUpdate:open":M},{default:e.withCtx(()=>[e.createVNode(X,{class:"sm:max-w-4xl"},{default:e.withCtx(()=>[e.createVNode(B,null,{default:e.withCtx(()=>[e.createVNode(w,{class:"break-all"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.value?n.value.name:"New message template"),1)]),_:1}),e.createVNode(b,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.value?"Submit a standard text template for Meta approval.":"Review this template and its current approval status."),1)]),_:1})]),_:1}),a.value?(e.openBlock(),e.createElementBlock("div",te,[e.createVNode(e.unref(p.Loader2),{class:"size-4 animate-spin"}),t[9]||(t[9]=e.createTextVNode("Loading template…",-1))])):(e.openBlock(),e.createElementBlock("form",{key:1,class:"py-5",onSubmit:e.withModifiers(S,["prevent"])},[f.value?(e.openBlock(),e.createBlock(A,{key:0,variant:"destructive",class:"mb-5"},{default:e.withCtx(()=>[e.createVNode(e.unref(p.AlertCircle)),e.createVNode(z,null,{default:e.withCtx(()=>[...t[10]||(t[10]=[e.createTextVNode("Template unavailable",-1)])]),_:1}),e.createVNode(F,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.value),1)]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createElementVNode("div",oe,[v.value?(e.openBlock(),e.createElementBlock("div",ae,[e.createElementVNode("div",le,[e.createVNode(D,{for:"wa-template-name"},{default:e.withCtx(()=>[...t[11]||(t[11]=[e.createTextVNode("Name",-1)])]),_:1}),e.createVNode(T,{id:"wa-template-name",modelValue:r.value.name,"onUpdate:modelValue":t[0]||(t[0]=i=>r.value.name=i),pattern:"[a-z0-9_]+",maxlength:"512",placeholder:"appointment_reminder",disabled:!!n.value||u.value,required:""},null,8,["modelValue","disabled"]),t[12]||(t[12]=e.createElementVNode("p",{class:"text-xs text-muted-foreground"},"Lowercase letters, numbers, and underscores. Existing names cannot change.",-1))]),e.createElementVNode("div",ne,[e.createElementVNode("div",se,[e.createVNode(D,{for:"wa-template-language"},{default:e.withCtx(()=>[...t[13]||(t[13]=[e.createTextVNode("Language code",-1)])]),_:1}),e.createVNode(T,{id:"wa-template-language",modelValue:r.value.language,"onUpdate:modelValue":t[1]||(t[1]=i=>r.value.language=i),placeholder:"en_US",disabled:!!n.value||u.value,required:""},null,8,["modelValue","disabled"]),t[14]||(t[14]=e.createElementVNode("p",{class:"text-xs text-muted-foreground"},"Meta code, e.g. en_US, nl, fr.",-1))]),e.createElementVNode("div",re,[e.createVNode(D,{for:"wa-template-category"},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode("Category",-1)])]),_:1}),e.createVNode(Y,{modelValue:r.value.category,"onUpdate:modelValue":t[2]||(t[2]=i=>r.value.category=i),disabled:!!n.value||u.value},{default:e.withCtx(()=>[e.createVNode(q,{id:"wa-template-category"},{default:e.withCtx(()=>[e.createVNode(H)]),_:1}),e.createVNode(j,null,{default:e.withCtx(()=>[e.createVNode($,{value:"UTILITY"},{default:e.withCtx(()=>[...t[16]||(t[16]=[e.createTextVNode("Utility",-1)])]),_:1}),e.createVNode($,{value:"MARKETING"},{default:e.withCtx(()=>[...t[17]||(t[17]=[e.createTextVNode("Marketing",-1)])]),_:1})]),_:1})]),_:1},8,["modelValue","disabled"])])]),e.createElementVNode("div",de,[e.createVNode(D,{for:"wa-template-header"},{default:e.withCtx(()=>[...t[18]||(t[18]=[e.createTextVNode("Header ",-1),e.createElementVNode("span",{class:"font-normal text-muted-foreground"},"(optional)",-1)])]),_:1}),e.createVNode(T,{id:"wa-template-header",modelValue:r.value.headerText,"onUpdate:modelValue":t[3]||(t[3]=i=>r.value.headerText=i),maxlength:"60",disabled:u.value},null,8,["modelValue","disabled"])]),r.value.headerText?.includes("{{1}}")?(e.openBlock(),e.createElementBlock("div",ie,[e.createVNode(D,{for:"wa-template-header-example"},{default:e.withCtx(()=>[...t[19]||(t[19]=[e.createTextVNode("Header variable example",-1)])]),_:1}),e.createVNode(T,{id:"wa-template-header-example",modelValue:r.value.headerExample,"onUpdate:modelValue":t[4]||(t[4]=i=>r.value.headerExample=i),placeholder:"Example for {{1}}",disabled:u.value,required:""},null,8,["modelValue","disabled"])])):e.createCommentVNode("",!0),e.createElementVNode("div",ue,[e.createVNode(D,{for:"wa-template-body"},{default:e.withCtx(()=>[...t[20]||(t[20]=[e.createTextVNode("Message",-1)])]),_:1}),e.createVNode(K,{id:"wa-template-body",modelValue:r.value.bodyText,"onUpdate:modelValue":t[5]||(t[5]=i=>r.value.bodyText=i),rows:"6",maxlength:"1024",placeholder:"Hello {{1}}, your appointment is on {{2}}.",disabled:u.value,required:""},null,8,["modelValue","disabled"]),t[21]||(t[21]=e.createElementVNode("p",{class:"text-xs leading-5 text-muted-foreground"},[e.createTextVNode("Use numbered variables such as "),e.createElementVNode("code",null,"{{1}}"),e.createTextVNode(" and "),e.createElementVNode("code",null,"{{2}}"),e.createTextVNode(", in order. Provide sample values for Meta’s review.")],-1))]),N.value.length?(e.openBlock(),e.createElementBlock("div",ce,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,i=>(e.openBlock(),e.createElementBlock("div",{key:i,class:"space-y-2"},[e.createVNode(D,{for:`wa-example-${i}`},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(I(i)),1)]),_:2},1032,["for"]),e.createVNode(T,{id:`wa-example-${i}`,modelValue:g.value[i],"onUpdate:modelValue":k=>g.value[i]=k,disabled:u.value,required:""},null,8,["id","modelValue","onUpdate:modelValue","disabled"])]))),128)),t[22]||(t[22]=e.createElementVNode("p",{class:"text-xs text-muted-foreground"},"Use fictional examples rather than customer details.",-1))])):e.createCommentVNode("",!0),e.createElementVNode("div",me,[e.createVNode(D,{for:"wa-template-footer"},{default:e.withCtx(()=>[...t[23]||(t[23]=[e.createTextVNode("Footer ",-1),e.createElementVNode("span",{class:"font-normal text-muted-foreground"},"(optional)",-1)])]),_:1}),e.createVNode(T,{id:"wa-template-footer",modelValue:r.value.footerText,"onUpdate:modelValue":t[6]||(t[6]=i=>r.value.footerText=i),maxlength:"60",disabled:u.value},null,8,["modelValue","disabled"])]),e.createElementVNode("div",pe,[e.createElementVNode("div",ve,[t[25]||(t[25]=e.createElementVNode("h3",{class:"text-sm font-medium"},[e.createTextVNode("Buttons "),e.createElementVNode("span",{class:"font-normal text-muted-foreground"},"(optional)")],-1)),e.createVNode(d,{type:"button",variant:"outline",size:"sm",disabled:!m.value,onClick:s},{default:e.withCtx(()=>[e.createVNode(e.unref(p.Plus),{class:"size-3.5"}),t[24]||(t[24]=e.createTextVNode("Add",-1))]),_:1},8,["disabled"])]),e.createElementVNode("p",fe,e.toDisplayString(n.value?"Existing button types and positions are preserved for your automations. Create a new template to change the button structure.":"Up to three quick replies, or one website and one phone button."),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value.buttons,(i,k)=>(e.openBlock(),e.createElementBlock("div",{key:k,class:"space-y-3 rounded-lg border p-3"},[e.createElementVNode("div",xe,[e.createVNode(Y,{"model-value":i.type,disabled:!!n.value||u.value,"onUpdate:modelValue":R=>U(k,R)},{default:e.withCtx(()=>[e.createVNode(q,{"aria-label":`Button ${k+1} type`},{default:e.withCtx(()=>[e.createVNode(H)]),_:1},8,["aria-label"]),e.createVNode(j,null,{default:e.withCtx(()=>[e.createVNode($,{value:"QUICK_REPLY",disabled:!C(k,"QUICK_REPLY")},{default:e.withCtx(()=>[...t[26]||(t[26]=[e.createTextVNode("Quick reply",-1)])]),_:1},8,["disabled"]),e.createVNode($,{value:"URL",disabled:!C(k,"URL")},{default:e.withCtx(()=>[...t[27]||(t[27]=[e.createTextVNode("Website",-1)])]),_:1},8,["disabled"]),e.createVNode($,{value:"PHONE_NUMBER",disabled:!C(k,"PHONE_NUMBER")},{default:e.withCtx(()=>[...t[28]||(t[28]=[e.createTextVNode("Phone number",-1)])]),_:1},8,["disabled"])]),_:2},1024)]),_:2},1032,["model-value","disabled","onUpdate:modelValue"]),e.createVNode(d,{type:"button",variant:"ghost",size:"icon",class:"shrink-0","aria-label":`Remove button ${k+1}`,disabled:!!n.value||u.value,onClick:R=>r.value.buttons?.splice(k,1)},{default:e.withCtx(()=>[e.createVNode(e.unref(p.Trash2),{class:"size-4"})]),_:1},8,["aria-label","disabled","onClick"])]),e.createElementVNode("div",Ve,[e.createVNode(D,{for:`wa-button-${k}`},{default:e.withCtx(()=>[...t[29]||(t[29]=[e.createTextVNode("Button text",-1)])]),_:1},8,["for"]),e.createVNode(T,{id:`wa-button-${k}`,modelValue:i.text,"onUpdate:modelValue":R=>i.text=R,maxlength:"25",disabled:u.value,required:""},null,8,["id","modelValue","onUpdate:modelValue","disabled"])]),i.type==="URL"?(e.openBlock(),e.createElementBlock("div",Ne,[e.createVNode(D,{for:`wa-button-url-${k}`},{default:e.withCtx(()=>[...t[30]||(t[30]=[e.createTextVNode("Website URL",-1)])]),_:1},8,["for"]),e.createVNode(T,{id:`wa-button-url-${k}`,modelValue:i.url,"onUpdate:modelValue":R=>i.url=R,type:"url",placeholder:"https://example.com",disabled:u.value,required:""},null,8,["id","modelValue","onUpdate:modelValue","disabled"]),t[31]||(t[31]=e.createElementVNode("p",{class:"text-xs text-muted-foreground"},"Use a fixed HTTPS URL without variables.",-1))])):e.createCommentVNode("",!0),i.type==="PHONE_NUMBER"?(e.openBlock(),e.createElementBlock("div",ge,[e.createVNode(D,{for:`wa-button-phone-${k}`},{default:e.withCtx(()=>[...t[32]||(t[32]=[e.createTextVNode("Phone number",-1)])]),_:1},8,["for"]),e.createVNode(T,{id:`wa-button-phone-${k}`,modelValue:i.phoneNumber,"onUpdate:modelValue":R=>i.phoneNumber=R,type:"tel",placeholder:"+32470000000",disabled:u.value,required:""},null,8,["id","modelValue","onUpdate:modelValue","disabled"])])):e.createCommentVNode("",!0)]))),128))])])):n.value?(e.openBlock(),e.createElementBlock("div",ye,[e.createElementVNode("dl",be,[e.createElementVNode("div",null,[t[33]||(t[33]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Status",-1)),e.createElementVNode("dd",Ce,e.toDisplayString(e.unref(_)(n.value.status)),1)]),e.createElementVNode("div",null,[t[34]||(t[34]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Category",-1)),e.createElementVNode("dd",we,e.toDisplayString(e.unref(_)(n.value.category)),1)]),e.createElementVNode("div",null,[t[35]||(t[35]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Language",-1)),e.createElementVNode("dd",ke,e.toDisplayString(n.value.language),1)]),e.createElementVNode("div",null,[t[36]||(t[36]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Quality",-1)),e.createElementVNode("dd",_e,e.toDisplayString(e.unref(_)(n.value.quality)),1)])]),n.value.rejectionReason?(e.openBlock(),e.createBlock(A,{key:0,variant:"destructive"},{default:e.withCtx(()=>[e.createVNode(e.unref(p.AlertCircle)),e.createVNode(z,null,{default:e.withCtx(()=>[...t[37]||(t[37]=[e.createTextVNode("Meta review feedback",-1)])]),_:1}),e.createVNode(F,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.value.rejectionReason),1)]),_:1})]),_:1})):e.createCommentVNode("",!0),n.value.editable?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",Ee,e.toDisplayString(n.value.editReason||"This template uses a format that must be managed in Meta."),1)),x.canManage&&n.value.editable&&n.value.draft&&!f.value?(e.openBlock(),e.createBlock(d,{key:2,type:"button",variant:"outline",onClick:t[7]||(t[7]=i=>v.value=!0)},{default:e.withCtx(()=>[e.createVNode(e.unref(p.Pencil),{class:"size-4"}),t[38]||(t[38]=e.createTextVNode("Edit template",-1))]),_:1})):e.createCommentVNode("",!0),e.createElementVNode("a",he,[t[39]||(t[39]=e.createTextVNode("Open Meta template manager",-1)),e.createVNode(e.unref(p.ExternalLink),{class:"size-3.5"})])])):e.createCommentVNode("",!0),e.createElementVNode("aside",Be,[t[40]||(t[40]=e.createElementVNode("h3",{class:"mb-3 text-xs font-medium uppercase tracking-wide text-muted-foreground"},"Message preview",-1)),e.createElementVNode("div",Te,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(i,k)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:k},[i.type==="HEADER"&&i.text?(e.openBlock(),e.createElementBlock("p",Se,e.toDisplayString(i.text),1)):i.type==="BODY"?(e.openBlock(),e.createElementBlock("p",De,e.toDisplayString(i.text),1)):i.type==="FOOTER"?(e.openBlock(),e.createElementBlock("p",$e,e.toDisplayString(i.text),1)):i.type==="BUTTONS"?(e.openBlock(),e.createElementBlock("div",Me,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.buttons,(R,ee)=>(e.openBlock(),e.createElementBlock("p",{key:ee,class:"break-words border-b px-4 py-3 text-center text-sm last:border-0"},e.toDisplayString(R.text||"Button text"),1))),128))])):(e.openBlock(),e.createElementBlock("div",Ae,e.toDisplayString(e.unref(_)(i.format||i.type))+" component · preview unavailable",1))],64))),128))]),t[41]||(t[41]=e.createElementVNode("p",{class:"mt-3 text-xs leading-5 text-muted-foreground"},"Preview only. Variables are filled by your sending application.",-1))])]),v.value?(e.openBlock(),e.createElementBlock("p",Re,e.toDisplayString(n.value?"Edits are sent to Meta and may affect existing Firebase automations. Keep the same variables and their meaning. Create a new template if its parameters need to change.":"Meta decides approval and may update the category. This template becomes usable after approval."),1)):e.createCommentVNode("",!0),e.createVNode(W,{class:"mt-5 gap-2"},{default:e.withCtx(()=>[e.createVNode(d,{type:"button",variant:"outline",disabled:u.value,onClick:t[8]||(t[8]=i=>M(!1))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.value?"Cancel":"Close"),1)]),_:1},8,["disabled"]),v.value&&x.canManage?(e.openBlock(),e.createBlock(d,{key:0,type:"submit",disabled:u.value||!r.value.name.trim()||!r.value.bodyText.trim()},{default:e.withCtx(()=>[u.value?(e.openBlock(),e.createBlock(e.unref(p.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(e.toDisplayString(u.value?"Submitting…":"Submit to Meta"),1)]),_:1},8,["disabled"])):e.createCommentVNode("",!0)]),_:1})],32))]),_:1})]),_:1},8,["open"])}}}),Ue={class:"min-w-0"},Pe={class:"flex flex-wrap items-start justify-between gap-4"},Ie={class:"space-y-2"},ze={class:"space-y-2"},He={key:0,role:"status",class:"mt-6 flex items-center justify-center gap-2 rounded-xl border py-20 text-sm text-muted-foreground"},Oe={key:2,class:"mt-6 rounded-xl border border-dashed px-6 py-16 text-center"},Fe={class:"mt-3 font-medium"},qe={class:"mx-auto mt-2 max-w-md text-sm leading-6 text-muted-foreground"},je={key:3,class:"mt-6 overflow-hidden rounded-xl border"},Ye=["onClick"],Qe=["title"],Ke={class:"mt-1 block truncate text-xs text-muted-foreground sm:hidden"},We={class:"mt-1 hidden text-xs text-muted-foreground sm:block md:hidden"},Je={key:4,class:"mt-4 flex flex-wrap items-center justify-between gap-3 text-sm text-muted-foreground"},Ge={class:"flex gap-2"},Xe=e.defineComponent({__name:"TemplatesPanel",props:{canManage:{type:Boolean}},setup(x){const E=P.useModuleApi(),l=e.ref([]),V=e.ref(!1),y=e.ref(""),n=e.ref(""),v=e.ref("ALL"),a=e.ref(""),u=e.ref("ALL"),f=e.ref(null),r=e.ref(null),N=e.ref([]),g=e.ref(!1),m=e.ref(null);async function h(C=f.value){if(V.value)return!1;V.value=!0,y.value="";try{const s={};C&&(s.after=C),a.value&&(s.search=a.value),u.value!=="ALL"&&(s.status=u.value);const S=await E.get("/templates",{query:s});return l.value=S.templates,r.value=S.nextCursor,f.value=C,!0}catch(s){return l.value=[],y.value=O(s,"Templates could not be loaded from Meta."),!1}finally{V.value=!1}}async function o(){V.value||(a.value=n.value.trim(),u.value=v.value,N.value=[],f.value=null,await h(null))}async function I(){if(!r.value||V.value)return;const C=f.value;await h(r.value)&&N.value.push(C)}async function L(){!N.value.length||V.value||await h(N.value[N.value.length-1])&&N.value.pop()}function U(C){m.value=C,g.value=!0}return e.onMounted(()=>h(null)),(C,s)=>{const S=e.resolveComponent("Button"),M=e.resolveComponent("Label"),c=e.resolveComponent("Input"),t=e.resolveComponent("SelectValue"),w=e.resolveComponent("SelectTrigger"),b=e.resolveComponent("SelectItem"),B=e.resolveComponent("SelectContent"),z=e.resolveComponent("Select"),F=e.resolveComponent("AlertTitle"),A=e.resolveComponent("AlertDescription"),D=e.resolveComponent("Alert"),T=e.resolveComponent("TableHead"),H=e.resolveComponent("TableRow"),q=e.resolveComponent("TableHeader"),$=e.resolveComponent("TableCell"),j=e.resolveComponent("Badge"),Y=e.resolveComponent("TableBody"),K=e.resolveComponent("Table");return e.openBlock(),e.createElementBlock("section",Ue,[e.createElementVNode("div",Pe,[s[7]||(s[7]=e.createElementVNode("div",null,[e.createElementVNode("h2",{class:"text-lg font-semibold"},"Message templates"),e.createElementVNode("p",{class:"mt-1 text-sm leading-6 text-muted-foreground"},"Templates are shared by all numbers in this business account. Changes are submitted to Meta for review.")],-1)),x.canManage?(e.openBlock(),e.createBlock(S,{key:0,class:"shrink-0",onClick:s[0]||(s[0]=d=>U(null))},{default:e.withCtx(()=>[e.createVNode(e.unref(p.Plus),{class:"size-4"}),s[6]||(s[6]=e.createTextVNode("New template",-1))]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("form",{class:"mt-5 grid items-end gap-3 sm:grid-cols-[minmax(0,1fr)_11rem_auto]",onSubmit:e.withModifiers(o,["prevent"])},[e.createElementVNode("div",Ie,[e.createVNode(M,{for:"wa-template-search"},{default:e.withCtx(()=>[...s[8]||(s[8]=[e.createTextVNode("Search templates",-1)])]),_:1}),e.createVNode(c,{id:"wa-template-search",modelValue:n.value,"onUpdate:modelValue":s[1]||(s[1]=d=>n.value=d),type:"search",placeholder:"Search name or message",disabled:V.value},null,8,["modelValue","disabled"])]),e.createElementVNode("div",ze,[e.createVNode(M,{for:"wa-template-status"},{default:e.withCtx(()=>[...s[9]||(s[9]=[e.createTextVNode("Status",-1)])]),_:1}),e.createVNode(z,{modelValue:v.value,"onUpdate:modelValue":s[2]||(s[2]=d=>v.value=d),disabled:V.value},{default:e.withCtx(()=>[e.createVNode(w,{id:"wa-template-status"},{default:e.withCtx(()=>[e.createVNode(t)]),_:1}),e.createVNode(B,null,{default:e.withCtx(()=>[e.createVNode(b,{value:"ALL"},{default:e.withCtx(()=>[...s[10]||(s[10]=[e.createTextVNode("All statuses",-1)])]),_:1}),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["APPROVED","PENDING","REJECTED","PAUSED","DISABLED","IN_APPEAL"],d=>e.createVNode(b,{key:d,value:d},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(_)(d)),1)]),_:2},1032,["value"])),64))]),_:1})]),_:1},8,["modelValue","disabled"])]),e.createVNode(S,{type:"submit",variant:"outline",disabled:V.value},{default:e.withCtx(()=>[e.createVNode(e.unref(p.Search),{class:"size-4"}),s[11]||(s[11]=e.createTextVNode("Search",-1))]),_:1},8,["disabled"])],32),V.value?(e.openBlock(),e.createElementBlock("div",He,[e.createVNode(e.unref(p.Loader2),{class:"size-4 animate-spin"}),s[12]||(s[12]=e.createTextVNode("Loading templates…",-1))])):y.value?(e.openBlock(),e.createBlock(D,{key:1,variant:"destructive",class:"mt-6"},{default:e.withCtx(()=>[e.createVNode(e.unref(p.AlertCircle)),e.createVNode(F,null,{default:e.withCtx(()=>[...s[13]||(s[13]=[e.createTextVNode("Templates unavailable",-1)])]),_:1}),e.createVNode(A,{class:"space-y-3"},{default:e.withCtx(()=>[e.createElementVNode("p",null,e.toDisplayString(y.value),1),e.createVNode(S,{size:"sm",variant:"outline",onClick:s[3]||(s[3]=d=>h())},{default:e.withCtx(()=>[...s[14]||(s[14]=[e.createTextVNode("Try again",-1)])]),_:1})]),_:1})]),_:1})):l.value.length?(e.openBlock(),e.createElementBlock("div",je,[e.createVNode(K,{class:"table-fixed"},{default:e.withCtx(()=>[e.createVNode(q,null,{default:e.withCtx(()=>[e.createVNode(H,null,{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[...s[15]||(s[15]=[e.createTextVNode("Template",-1)])]),_:1}),e.createVNode(T,{class:"hidden w-36 sm:table-cell"},{default:e.withCtx(()=>[...s[16]||(s[16]=[e.createTextVNode("Category",-1)])]),_:1}),e.createVNode(T,{class:"hidden w-24 md:table-cell"},{default:e.withCtx(()=>[...s[17]||(s[17]=[e.createTextVNode("Language",-1)])]),_:1}),e.createVNode(T,{class:"w-28"},{default:e.withCtx(()=>[...s[18]||(s[18]=[e.createTextVNode("Status",-1)])]),_:1}),e.createVNode(T,{class:"hidden w-32 lg:table-cell"},{default:e.withCtx(()=>[...s[19]||(s[19]=[e.createTextVNode("Quality",-1)])]),_:1})]),_:1})]),_:1}),e.createVNode(Y,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,d=>(e.openBlock(),e.createBlock(H,{key:d.id},{default:e.withCtx(()=>[e.createVNode($,null,{default:e.withCtx(()=>[e.createElementVNode("button",{type:"button",class:"w-full rounded text-left outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:W=>U(d)},[e.createElementVNode("span",{class:"block truncate font-medium underline-offset-4 hover:underline",title:d.name},e.toDisplayString(d.name),9,Qe),e.createElementVNode("span",Ke,e.toDisplayString(e.unref(_)(d.category))+" · "+e.toDisplayString(d.language),1),e.createElementVNode("span",We,e.toDisplayString(d.language),1)],8,Ye)]),_:2},1024),e.createVNode($,{class:"hidden sm:table-cell"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(_)(d.category)),1)]),_:2},1024),e.createVNode($,{class:"hidden md:table-cell"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.language),1)]),_:2},1024),e.createVNode($,null,{default:e.withCtx(()=>[e.createVNode(j,{variant:"outline",class:e.normalizeClass(["max-w-full whitespace-normal break-words",d.status==="APPROVED"?"text-emerald-700 dark:text-emerald-300":d.status==="REJECTED"?"text-destructive":""])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(_)(d.status)),1)]),_:2},1032,["class"])]),_:2},1024),e.createVNode($,{class:"hidden lg:table-cell text-muted-foreground"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(_)(d.quality)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})])):(e.openBlock(),e.createElementBlock("div",Oe,[e.createVNode(e.unref(p.FileText),{class:"mx-auto size-7 text-muted-foreground"}),e.createElementVNode("h3",Fe,e.toDisplayString(a.value||u.value!=="ALL"?"No matching templates":"No message templates yet"),1),e.createElementVNode("p",qe,e.toDisplayString(a.value||u.value!=="ALL"?"Try a different search or choose another status.":"Create your first text template here, or manage more advanced formats in Meta."),1)])),!y.value&&(l.value.length||N.value.length)?(e.openBlock(),e.createElementBlock("div",Je,[e.createElementVNode("p",null,"Page "+e.toDisplayString(N.value.length+1)+" · "+e.toDisplayString(l.value.length)+" templates",1),e.createElementVNode("div",Ge,[e.createVNode(S,{variant:"outline",size:"sm",disabled:!N.value.length||V.value,onClick:L},{default:e.withCtx(()=>[e.createVNode(e.unref(p.ChevronLeft),{class:"size-4"}),s[20]||(s[20]=e.createTextVNode("Previous",-1))]),_:1},8,["disabled"]),e.createVNode(S,{variant:"outline",size:"sm",disabled:!r.value||V.value,onClick:I},{default:e.withCtx(()=>[s[21]||(s[21]=e.createTextVNode("Next",-1)),e.createVNode(e.unref(p.ChevronRight),{class:"size-4"})]),_:1},8,["disabled"])])])):e.createCommentVNode("",!0),e.createVNode(Le,{open:g.value,template:m.value,"can-manage":x.canManage,"onUpdate:open":s[4]||(s[4]=d=>g.value=d),onSaved:s[5]||(s[5]=d=>h())},null,8,["open","template","can-manage"])])}}}),Ze={class:"min-w-0 space-y-6"},et={class:"flex flex-wrap items-start justify-between gap-4"},tt={class:"w-40 space-y-2"},ot={key:0,role:"status",class:"flex items-center justify-center gap-2 rounded-xl border py-20 text-sm text-muted-foreground"},at={class:"space-y-4"},lt={class:"mt-1 text-sm text-muted-foreground"},nt={key:0,class:"grid gap-4 sm:grid-cols-2"},st={class:"rounded-xl border p-5"},rt={class:"flex items-center justify-between gap-3 text-sm text-muted-foreground"},dt={class:"mt-3 text-3xl font-semibold tracking-tight"},it={class:"rounded-xl border p-5"},ut={class:"flex items-center justify-between gap-3 text-sm text-muted-foreground"},ct={class:"mt-3 text-3xl font-semibold tracking-tight"},mt={key:1,class:"rounded-xl border border-dashed p-5"},pt={class:"font-medium"},vt={class:"mt-1 text-sm leading-6 text-muted-foreground"},ft={key:2,class:"text-sm text-muted-foreground"},xt={class:"space-y-4 border-t pt-6"},Vt={class:"flex flex-wrap items-start justify-between gap-3"},Nt={key:0,class:"flex flex-wrap items-center justify-between gap-4 rounded-xl border p-5"},gt={key:1,class:"rounded-xl border border-dashed p-6"},yt={class:"mt-1 text-sm leading-6 text-muted-foreground"},bt={key:2,class:"rounded-xl border border-dashed p-8 text-center"},Ct={class:"mt-1 text-sm leading-6 text-muted-foreground"},wt={key:3,class:"overflow-hidden rounded-xl border"},kt=["title"],_t={class:"mt-1 text-xs text-muted-foreground"},Et={key:4,class:"text-sm text-muted-foreground"},ht=e.defineComponent({__name:"InsightsPanel",props:{canManage:{type:Boolean}},setup(x){const E=P.useModuleApi(),{config:l}=P.useModule(),V=String(e.unref(l)?.defaultDays||"30"),y=e.ref(["7","30","90"].includes(V)?V:"30"),n=e.ref(null),v=e.ref(!1),a=e.ref(""),u=e.ref(!1),f=e.ref(!1),r=e.ref("");let N=0;async function g(){const h=++N;v.value=!0,a.value="";try{const o=await E.get("/insights",{query:{days:Number(y.value)}});h===N&&(n.value=o)}catch(o){h===N&&(a.value=O(o,"Insights could not be loaded from Meta."))}finally{h===N&&(v.value=!1)}}async function m(){if(!f.value){f.value=!0,r.value="";try{await E.post("/insights/enable",{body:{confirm:!0}}),u.value=!1,G.toast.success("Template insights enabled"),await g()}catch(h){r.value=O(h,"Template insights could not be enabled.")}finally{f.value=!1}}}return e.watch(y,g),e.onMounted(g),e.onUnmounted(()=>{N++}),(h,o)=>{const I=e.resolveComponent("Label"),L=e.resolveComponent("SelectValue"),U=e.resolveComponent("SelectTrigger"),C=e.resolveComponent("SelectItem"),s=e.resolveComponent("SelectContent"),S=e.resolveComponent("Select"),M=e.resolveComponent("AlertTitle"),c=e.resolveComponent("Button"),t=e.resolveComponent("AlertDescription"),w=e.resolveComponent("Alert"),b=e.resolveComponent("Badge"),B=e.resolveComponent("TableHead"),z=e.resolveComponent("TableRow"),F=e.resolveComponent("TableHeader"),A=e.resolveComponent("TableCell"),D=e.resolveComponent("TableBody"),T=e.resolveComponent("Table"),H=e.resolveComponent("ResponsiveModalTitle"),q=e.resolveComponent("ResponsiveModalDescription"),$=e.resolveComponent("ResponsiveModalHeader"),j=e.resolveComponent("ResponsiveModalFooter"),Y=e.resolveComponent("ResponsiveModalScrollContent"),K=e.resolveComponent("ResponsiveModal");return e.openBlock(),e.createElementBlock("section",Ze,[e.createElementVNode("div",et,[o[8]||(o[8]=e.createElementVNode("div",null,[e.createElementVNode("h2",{class:"text-lg font-semibold"},"Messaging insights"),e.createElementVNode("p",{class:"mt-1 text-sm leading-6 text-muted-foreground"},"Aggregated activity reported by Meta. Recent results may take time to appear.")],-1)),e.createElementVNode("div",tt,[e.createVNode(I,{for:"wa-insights-period",class:"sr-only"},{default:e.withCtx(()=>[...o[4]||(o[4]=[e.createTextVNode("Insights period",-1)])]),_:1}),e.createVNode(S,{modelValue:y.value,"onUpdate:modelValue":o[0]||(o[0]=d=>y.value=d)},{default:e.withCtx(()=>[e.createVNode(U,{id:"wa-insights-period"},{default:e.withCtx(()=>[e.createVNode(L)]),_:1}),e.createVNode(s,null,{default:e.withCtx(()=>[e.createVNode(C,{value:"7"},{default:e.withCtx(()=>[...o[5]||(o[5]=[e.createTextVNode("Last 7 days",-1)])]),_:1}),e.createVNode(C,{value:"30"},{default:e.withCtx(()=>[...o[6]||(o[6]=[e.createTextVNode("Last 30 days",-1)])]),_:1}),e.createVNode(C,{value:"90"},{default:e.withCtx(()=>[...o[7]||(o[7]=[e.createTextVNode("Last 90 days",-1)])]),_:1})]),_:1})]),_:1},8,["modelValue"])])]),v.value?(e.openBlock(),e.createElementBlock("div",ot,[e.createVNode(e.unref(p.Loader2),{class:"size-4 animate-spin"}),o[9]||(o[9]=e.createTextVNode("Loading insights…",-1))])):a.value?(e.openBlock(),e.createBlock(w,{key:1,variant:"destructive"},{default:e.withCtx(()=>[e.createVNode(e.unref(p.AlertCircle)),e.createVNode(M,null,{default:e.withCtx(()=>[...o[10]||(o[10]=[e.createTextVNode("Insights unavailable",-1)])]),_:1}),e.createVNode(t,{class:"space-y-3"},{default:e.withCtx(()=>[e.createElementVNode("p",null,e.toDisplayString(a.value),1),e.createVNode(c,{variant:"outline",size:"sm",onClick:g},{default:e.withCtx(()=>[...o[11]||(o[11]=[e.createTextVNode("Try again",-1)])]),_:1})]),_:1})]),_:1})):n.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("section",at,[e.createElementVNode("div",null,[o[12]||(o[12]=e.createElementVNode("h3",{class:"font-medium"},"Selected phone number",-1)),e.createElementVNode("p",lt,e.toDisplayString(n.value.phoneNumber)+" · "+e.toDisplayString(e.unref(J)(n.value.start,"UTC"))+" – "+e.toDisplayString(e.unref(J)(n.value.end-1,"UTC"))+" · UTC",1)]),n.value.messages.state!=="unavailable"&&n.value.messages.data?(e.openBlock(),e.createElementBlock("div",nt,[e.createElementVNode("div",st,[e.createElementVNode("p",rt,[o[13]||(o[13]=e.createTextVNode("Messages sent",-1)),e.createVNode(e.unref(p.Send),{class:"size-4"})]),e.createElementVNode("p",dt,e.toDisplayString(e.unref(Q)(n.value.messages.data.sent)),1)]),e.createElementVNode("div",it,[e.createElementVNode("p",ut,[o[14]||(o[14]=e.createTextVNode("Messages delivered",-1)),e.createVNode(e.unref(p.CheckCheck),{class:"size-4"})]),e.createElementVNode("p",ct,e.toDisplayString(e.unref(Q)(n.value.messages.data.delivered)),1)])])):(e.openBlock(),e.createElementBlock("div",mt,[e.createElementVNode("p",pt,"Message volume "+e.toDisplayString(n.value.messages.state==="empty"?"has no data":"unavailable"),1),e.createElementVNode("p",vt,e.toDisplayString(n.value.messages.reason||"Meta has not returned message volume for this phone and period."),1)])),n.value.messages.state==="empty"&&n.value.messages.data?(e.openBlock(),e.createElementBlock("p",ft,e.toDisplayString(n.value.messages.reason||"No message activity was reported for this period."),1)):e.createCommentVNode("",!0)]),e.createElementVNode("section",xt,[e.createElementVNode("div",Vt,[o[16]||(o[16]=e.createElementVNode("div",null,[e.createElementVNode("h3",{class:"font-medium"},"Template performance"),e.createElementVNode("p",{class:"mt-1 text-sm leading-6 text-muted-foreground"},"Across all phone numbers in this WhatsApp Business account.")],-1)),e.createVNode(b,{variant:"outline"},{default:e.withCtx(()=>[...o[15]||(o[15]=[e.createTextVNode("Account-wide",-1)])]),_:1})]),n.value.enabled!==!0&&n.value.canEnable&&x.canManage?(e.openBlock(),e.createElementBlock("div",Nt,[o[18]||(o[18]=e.createElementVNode("div",{class:"max-w-xl"},[e.createElementVNode("p",{class:"font-medium"},"Enable template insights"),e.createElementVNode("p",{class:"mt-1 text-sm leading-6 text-muted-foreground"},"Meta requires an account-level opt-in before sharing template performance. This setting cannot be reversed.")],-1)),e.createVNode(c,{variant:"outline",onClick:o[1]||(o[1]=d=>u.value=!0)},{default:e.withCtx(()=>[...o[17]||(o[17]=[e.createTextVNode("Review and enable",-1)])]),_:1})])):e.createCommentVNode("",!0),n.value.templates.state==="unavailable"?(e.openBlock(),e.createElementBlock("div",gt,[e.createVNode(e.unref(p.BarChart3),{class:"size-5 text-muted-foreground"}),o[19]||(o[19]=e.createElementVNode("h4",{class:"mt-3 font-medium"},"Template insights unavailable",-1)),e.createElementVNode("p",yt,e.toDisplayString(n.value.templates.reason||"Meta has not made these metrics available for this account."),1)])):n.value.templates.data?.templates.length?(e.openBlock(),e.createElementBlock("div",wt,[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(F,null,{default:e.withCtx(()=>[e.createVNode(z,null,{default:e.withCtx(()=>[e.createVNode(B,{class:"min-w-48"},{default:e.withCtx(()=>[...o[21]||(o[21]=[e.createTextVNode("Template",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...o[22]||(o[22]=[e.createTextVNode("Sent",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...o[23]||(o[23]=[e.createTextVNode("Delivered",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...o[24]||(o[24]=[e.createTextVNode("Read",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...o[25]||(o[25]=[e.createTextVNode("Clicks",-1)])]),_:1})]),_:1})]),_:1}),e.createVNode(D,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value.templates.data.templates,d=>(e.openBlock(),e.createBlock(z,{key:d.id},{default:e.withCtx(()=>[e.createVNode(A,null,{default:e.withCtx(()=>[e.createElementVNode("p",{class:"max-w-72 truncate font-medium",title:d.name},e.toDisplayString(d.name),9,kt),e.createElementVNode("p",_t,e.toDisplayString(d.language),1)]),_:2},1024),e.createVNode(A,{class:"whitespace-nowrap text-right tabular-nums"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(Q)(d.sent)),1)]),_:2},1024),e.createVNode(A,{class:"whitespace-nowrap text-right tabular-nums"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(Q)(d.delivered)),1)]),_:2},1024),e.createVNode(A,{class:"whitespace-nowrap text-right tabular-nums"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(Q)(d.read)),1)]),_:2},1024),e.createVNode(A,{class:"whitespace-nowrap text-right tabular-nums"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(Q)(d.clicked)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})])):(e.openBlock(),e.createElementBlock("div",bt,[e.createVNode(e.unref(p.BarChart3),{class:"mx-auto size-6 text-muted-foreground"}),o[20]||(o[20]=e.createElementVNode("h4",{class:"mt-3 font-medium"},"No template performance for this period",-1)),e.createElementVNode("p",Ct,e.toDisplayString(n.value.templates.reason||"Metrics will appear when Meta reports activity for your templates."),1)])),n.value.templates.data?.truncated?(e.openBlock(),e.createElementBlock("p",Et,"Meta returned a limited set of templates. These results do not represent every template in the account.")):e.createCommentVNode("",!0),o[26]||(o[26]=e.createElementVNode("p",{class:"text-xs leading-5 text-muted-foreground"},"“Not available” means Meta did not return that metric. Availability depends on template type, account eligibility, and Meta’s reporting rules.",-1))])],64)):e.createCommentVNode("",!0),e.createVNode(K,{open:u.value,"onUpdate:open":o[3]||(o[3]=d=>!f.value&&(u.value=d))},{default:e.withCtx(()=>[e.createVNode(Y,{class:"sm:max-w-lg"},{default:e.withCtx(()=>[e.createVNode($,null,{default:e.withCtx(()=>[e.createVNode(H,null,{default:e.withCtx(()=>[...o[27]||(o[27]=[e.createTextVNode("Enable template insights for this account?",-1)])]),_:1}),e.createVNode(q,null,{default:e.withCtx(()=>[...o[28]||(o[28]=[e.createTextVNode("This opts your entire WhatsApp Business account into Meta’s template performance reporting. Meta does not allow template insights to be disabled after activation.",-1)])]),_:1})]),_:1}),r.value?(e.openBlock(),e.createBlock(w,{key:0,variant:"destructive",class:"mt-5"},{default:e.withCtx(()=>[e.createVNode(e.unref(p.AlertCircle)),e.createVNode(M,null,{default:e.withCtx(()=>[...o[29]||(o[29]=[e.createTextVNode("Could not enable insights",-1)])]),_:1}),e.createVNode(t,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value),1)]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createVNode(j,{class:"mt-5 gap-2"},{default:e.withCtx(()=>[e.createVNode(c,{variant:"outline",disabled:f.value,onClick:o[2]||(o[2]=d=>u.value=!1)},{default:e.withCtx(()=>[...o[30]||(o[30]=[e.createTextVNode("Cancel",-1)])]),_:1},8,["disabled"]),e.createVNode(c,{disabled:f.value,onClick:m},{default:e.withCtx(()=>[f.value?(e.openBlock(),e.createBlock(e.unref(p.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),o[31]||(o[31]=e.createTextVNode("Enable account insights",-1))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])])}}}),Bt={class:"space-y-5"},Tt={key:0,role:"status",class:"flex items-center justify-center gap-2 rounded-xl border py-20 text-sm text-muted-foreground"},St={key:2,class:"grid gap-5 md:grid-cols-2"},Dt={class:"min-w-0 rounded-xl border p-5"},$t={key:0,class:"mt-4 space-y-4 text-sm"},Mt={class:"mt-1 font-medium"},At={class:"mt-1 break-words"},Rt={class:"grid grid-cols-2 gap-4"},Lt={class:"mt-1"},Ut={class:"mt-1 break-words"},Pt={class:"mt-1 break-all font-mono text-xs"},It={key:1,class:"mt-3 text-sm leading-6 text-muted-foreground"},zt={class:"min-w-0 rounded-xl border p-5"},Ht={key:0,class:"mt-4 grid grid-cols-2 gap-4 text-sm"},Ot={class:"col-span-2"},Ft={class:"mt-1 break-words font-medium"},qt={class:"mt-1 break-words"},jt={class:"mt-1 break-words"},Yt={class:"mt-1 break-words"},Qt={class:"mt-1"},Kt={class:"col-span-2"},Wt={class:"mt-1 break-all font-mono text-xs"},Jt={key:1,class:"mt-3 text-sm leading-6 text-muted-foreground"},Gt={class:"min-w-0 rounded-xl border p-5"},Xt={class:"mt-4 text-sm"},Zt={class:"mt-1 font-medium"},eo={key:0,class:"mt-4 divide-y border-t text-sm"},to={class:"text-muted-foreground"},oo={key:1,class:"mt-3 text-sm leading-6 text-muted-foreground"},ao={class:"min-w-0 rounded-xl border p-5"},lo={key:0,class:"mt-4 space-y-4 text-sm"},no={class:"mt-1 whitespace-pre-wrap break-words"},so={key:0},ro={class:"mt-1 whitespace-pre-wrap break-words"},io={class:"mt-1"},uo={class:"mt-1 break-words"},co={class:"mt-1 whitespace-pre-wrap break-words"},mo={key:1},po={key:1,class:"mt-3 text-sm leading-6 text-muted-foreground"},vo=e.defineComponent({__name:"AccountPanel",setup(x){const E=P.useModuleApi(),l=e.ref(null),V=e.ref(!1),y=e.ref("");async function n(){V.value=!0,y.value="";try{l.value=await E.get("/overview")}catch(v){y.value=O(v,"Account details could not be loaded from Meta.")}finally{V.value=!1}}return e.onMounted(n),(v,a)=>{const u=e.resolveComponent("AlertTitle"),f=e.resolveComponent("Button"),r=e.resolveComponent("AlertDescription"),N=e.resolveComponent("Alert");return e.openBlock(),e.createElementBlock("section",Bt,[a[25]||(a[25]=e.createElementVNode("div",null,[e.createElementVNode("h2",{class:"text-lg font-semibold"},"Account and phone number"),e.createElementVNode("p",{class:"mt-1 text-sm leading-6 text-muted-foreground"},"Current business information, quality, and sending availability reported by Meta.")],-1)),V.value?(e.openBlock(),e.createElementBlock("div",Tt,[e.createVNode(e.unref(p.Loader2),{class:"size-4 animate-spin"}),a[0]||(a[0]=e.createTextVNode("Loading account details…",-1))])):y.value?(e.openBlock(),e.createBlock(N,{key:1,variant:"destructive"},{default:e.withCtx(()=>[e.createVNode(e.unref(p.AlertCircle)),e.createVNode(u,null,{default:e.withCtx(()=>[...a[1]||(a[1]=[e.createTextVNode("Account unavailable",-1)])]),_:1}),e.createVNode(r,{class:"space-y-3"},{default:e.withCtx(()=>[e.createElementVNode("p",null,e.toDisplayString(y.value),1),e.createVNode(f,{variant:"outline",size:"sm",onClick:n},{default:e.withCtx(()=>[...a[2]||(a[2]=[e.createTextVNode("Try again",-1)])]),_:1})]),_:1})]),_:1})):l.value?(e.openBlock(),e.createElementBlock("div",St,[e.createElementVNode("section",Dt,[a[8]||(a[8]=e.createElementVNode("h3",{class:"font-semibold"},"Selected phone number",-1)),l.value.phone.data?(e.openBlock(),e.createElementBlock("dl",$t,[e.createElementVNode("div",null,[a[3]||(a[3]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Phone number",-1)),e.createElementVNode("dd",Mt,e.toDisplayString(l.value.phone.data.displayPhoneNumber||"Not available"),1)]),e.createElementVNode("div",null,[a[4]||(a[4]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Verified name",-1)),e.createElementVNode("dd",At,e.toDisplayString(l.value.phone.data.verifiedName||"Not available"),1)]),e.createElementVNode("div",Rt,[e.createElementVNode("div",null,[a[5]||(a[5]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Quality rating",-1)),e.createElementVNode("dd",Lt,e.toDisplayString(e.unref(_)(l.value.phone.data.qualityRating)),1)]),e.createElementVNode("div",null,[a[6]||(a[6]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Verification",-1)),e.createElementVNode("dd",Ut,e.toDisplayString(e.unref(_)(l.value.phone.data.verificationStatus)),1)])]),e.createElementVNode("div",null,[a[7]||(a[7]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Phone number ID",-1)),e.createElementVNode("dd",Pt,e.toDisplayString(l.value.phone.data.id),1)])])):(e.openBlock(),e.createElementBlock("p",It,e.toDisplayString(l.value.phone.reason||"Phone details are not available."),1))]),e.createElementVNode("section",zt,[a[15]||(a[15]=e.createElementVNode("h3",{class:"font-semibold"},"Business account",-1)),l.value.account.data?(e.openBlock(),e.createElementBlock("dl",Ht,[e.createElementVNode("div",Ot,[a[9]||(a[9]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Name",-1)),e.createElementVNode("dd",Ft,e.toDisplayString(l.value.account.data.name||"Not available"),1)]),e.createElementVNode("div",null,[a[10]||(a[10]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Account status",-1)),e.createElementVNode("dd",qt,e.toDisplayString(e.unref(_)(l.value.account.data.status)),1)]),e.createElementVNode("div",null,[a[11]||(a[11]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Review status",-1)),e.createElementVNode("dd",jt,e.toDisplayString(e.unref(_)(l.value.account.data.reviewStatus)),1)]),e.createElementVNode("div",null,[a[12]||(a[12]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Business verification",-1)),e.createElementVNode("dd",Yt,e.toDisplayString(e.unref(_)(l.value.account.data.verificationStatus)),1)]),e.createElementVNode("div",null,[a[13]||(a[13]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Currency",-1)),e.createElementVNode("dd",Qt,e.toDisplayString(l.value.account.data.currency||"Not available"),1)]),e.createElementVNode("div",Kt,[a[14]||(a[14]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Account ID",-1)),e.createElementVNode("dd",Wt,e.toDisplayString(l.value.account.data.id),1)])])):(e.openBlock(),e.createElementBlock("p",Jt,e.toDisplayString(l.value.account.reason||"Business account details are not available."),1))]),e.createElementVNode("section",Gt,[a[17]||(a[17]=e.createElementVNode("h3",{class:"font-semibold"},"Sending health",-1)),l.value.health.data?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("dl",Xt,[a[16]||(a[16]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Can send messages",-1)),e.createElementVNode("dd",Zt,e.toDisplayString(e.unref(_)(l.value.health.data.canSendMessage)),1)]),l.value.health.data.entities.length?(e.openBlock(),e.createElementBlock("ul",eo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value.health.data.entities,(g,m)=>(e.openBlock(),e.createElementBlock("li",{key:`${g.id}-${m}`,class:"flex flex-wrap justify-between gap-2 py-3"},[e.createElementVNode("span",to,e.toDisplayString(e.unref(_)(g.type)),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(_)(g.canSendMessage)),1)]))),128))])):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",oo,e.toDisplayString(l.value.health.reason||"Meta has not returned sending health for this account."),1))]),e.createElementVNode("section",ao,[a[24]||(a[24]=e.createElementVNode("h3",{class:"font-semibold"},"Business profile",-1)),l.value.profile.data?(e.openBlock(),e.createElementBlock("dl",lo,[e.createElementVNode("div",null,[a[18]||(a[18]=e.createElementVNode("dt",{class:"text-muted-foreground"},"About",-1)),e.createElementVNode("dd",no,e.toDisplayString(l.value.profile.data.about||"Not provided"),1)]),l.value.profile.data.description?(e.openBlock(),e.createElementBlock("div",so,[a[19]||(a[19]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Description",-1)),e.createElementVNode("dd",ro,e.toDisplayString(l.value.profile.data.description),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",null,[a[20]||(a[20]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Industry",-1)),e.createElementVNode("dd",io,e.toDisplayString(e.unref(_)(l.value.profile.data.vertical)),1)]),e.createElementVNode("div",null,[a[21]||(a[21]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Email",-1)),e.createElementVNode("dd",uo,e.toDisplayString(l.value.profile.data.email||"Not provided"),1)]),e.createElementVNode("div",null,[a[22]||(a[22]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Address",-1)),e.createElementVNode("dd",co,e.toDisplayString(l.value.profile.data.address||"Not provided"),1)]),l.value.profile.data.websites.length?(e.openBlock(),e.createElementBlock("div",mo,[a[23]||(a[23]=e.createElementVNode("dt",{class:"text-muted-foreground"},"Websites",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value.profile.data.websites,g=>(e.openBlock(),e.createElementBlock("dd",{key:g,class:"mt-1 break-all"},e.toDisplayString(g),1))),128))])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("p",po,e.toDisplayString(l.value.profile.reason||"The business profile is not available."),1))])])):e.createCommentVNode("",!0)])}}}),fo={class:"mx-auto flex w-full min-w-0 max-w-7xl flex-1 flex-col px-4 py-6 sm:px-6 sm:py-10 lg:px-8"},xo={class:"flex flex-wrap items-start justify-between gap-4"},Vo={class:"flex flex-wrap items-center gap-3"},No={key:0,class:"mt-1 text-sm font-medium"},go={class:"ml-2 font-normal text-muted-foreground"},yo={key:0,class:"mt-8 rounded-xl border border-dashed p-8 text-center"},bo={key:2,role:"status",class:"flex items-center justify-center gap-2 py-24 text-sm text-muted-foreground"},Co={key:3,class:"mt-8 rounded-xl border border-dashed p-8 text-center sm:p-12"},wo=e.defineComponent({__name:"Overview",setup(x){const E=P.useModuleApi(),{hasPermission:l}=P.useModulePermissions();P.useModuleBreadcrumbs(()=>[]);const V=e.computed(()=>l("view-whatsapp")),y=e.computed(()=>l("manage-whatsapp-templates")),n=e.computed(()=>l("manage-whatsapp-insights")),v=e.ref(null),a=e.ref(!1),u=e.ref(""),f=e.ref("templates"),r=e.ref(0);async function N(){if(V.value){a.value=!0,u.value="";try{v.value=await E.get("/connection"),r.value++}catch(g){u.value=O(g,"The WhatsApp connection could not be loaded.")}finally{a.value=!1}}}return e.onMounted(N),(g,m)=>{const h=e.resolveComponent("Badge"),o=e.resolveComponent("Button"),I=e.resolveComponent("AlertTitle"),L=e.resolveComponent("AlertDescription"),U=e.resolveComponent("Alert"),C=e.resolveComponent("TabsTrigger"),s=e.resolveComponent("TabsList"),S=e.resolveComponent("TabsContent"),M=e.resolveComponent("Tabs");return e.openBlock(),e.createElementBlock("main",fo,[e.createElementVNode("header",xo,[e.createElementVNode("div",null,[e.createElementVNode("div",Vo,[m[2]||(m[2]=e.createElementVNode("h1",{class:"text-2xl font-semibold tracking-tight sm:text-3xl"},"WhatsApp Business",-1)),v.value?.connected?(e.openBlock(),e.createBlock(h,{key:0,variant:"outline",class:"gap-1.5"},{default:e.withCtx(()=>[...m[1]||(m[1]=[e.createElementVNode("span",{class:"size-1.5 rounded-full bg-emerald-500"},null,-1),e.createTextVNode(" Connected ",-1)])]),_:1})):e.createCommentVNode("",!0)]),m[3]||(m[3]=e.createElementVNode("p",{class:"mt-2 text-sm leading-6 text-muted-foreground"}," Manage your message templates and follow their performance. ",-1)),v.value?.connected?(e.openBlock(),e.createElementBlock("p",No,[e.createTextVNode(e.toDisplayString(v.value.verifiedName||"Connected business")+" ",1),e.createElementVNode("span",go,e.toDisplayString(v.value.displayPhoneNumber),1)])):e.createCommentVNode("",!0)]),V.value?(e.openBlock(),e.createBlock(o,{key:0,variant:"outline",size:"sm",disabled:a.value,onClick:N},{default:e.withCtx(()=>[e.createVNode(e.unref(p.RefreshCw),{class:e.normalizeClass(["size-4",{"animate-spin":a.value}])},null,8,["class"]),m[4]||(m[4]=e.createTextVNode(" Refresh ",-1))]),_:1},8,["disabled"])):e.createCommentVNode("",!0)]),V.value?u.value?(e.openBlock(),e.createBlock(U,{key:1,variant:"destructive",class:"mt-8"},{default:e.withCtx(()=>[e.createVNode(e.unref(p.AlertCircle)),e.createVNode(I,null,{default:e.withCtx(()=>[...m[7]||(m[7]=[e.createTextVNode("Connection unavailable",-1)])]),_:1}),e.createVNode(L,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.value),1)]),_:1})]),_:1})):a.value&&!v.value?(e.openBlock(),e.createElementBlock("div",bo,[e.createVNode(e.unref(p.Loader2),{class:"size-4 animate-spin"}),m[8]||(m[8]=e.createTextVNode(" Loading your connection… ",-1))])):v.value&&!v.value.connected?(e.openBlock(),e.createElementBlock("section",Co,[e.createVNode(e.unref(p.Smartphone),{class:"mx-auto size-7 text-muted-foreground"}),m[9]||(m[9]=e.createElementVNode("h2",{class:"mt-4 font-semibold"},"Select your WhatsApp integration",-1)),m[10]||(m[10]=e.createElementVNode("p",{class:"mx-auto mt-2 max-w-lg text-sm leading-6 text-muted-foreground"}," Add a WhatsApp Business account in your Studio project integrations, then select it in this module’s settings. A Studio administrator can set this up for you. ",-1))])):v.value?.connected?(e.openBlock(),e.createBlock(M,{key:4,modelValue:f.value,"onUpdate:modelValue":m[0]||(m[0]=c=>f.value=c),class:"mt-7 min-w-0"},{default:e.withCtx(()=>[e.createVNode(s,{class:"mb-5 grid h-auto w-full grid-cols-3 sm:w-auto sm:self-start"},{default:e.withCtx(()=>[e.createVNode(C,{value:"templates",class:"gap-2 px-2 py-2 sm:px-4"},{default:e.withCtx(()=>[e.createVNode(e.unref(p.FileText),{class:"hidden size-4 sm:block"}),m[11]||(m[11]=e.createTextVNode("Templates",-1))]),_:1}),e.createVNode(C,{value:"insights",class:"gap-2 px-2 py-2 sm:px-4"},{default:e.withCtx(()=>[e.createVNode(e.unref(p.BarChart3),{class:"hidden size-4 sm:block"}),m[12]||(m[12]=e.createTextVNode("Insights",-1))]),_:1}),e.createVNode(C,{value:"account",class:"gap-2 px-2 py-2 sm:px-4"},{default:e.withCtx(()=>[e.createVNode(e.unref(p.Smartphone),{class:"hidden size-4 sm:block"}),m[13]||(m[13]=e.createTextVNode("Account",-1))]),_:1})]),_:1}),e.createVNode(S,{value:"templates"},{default:e.withCtx(()=>[v.value.connected&&f.value==="templates"?(e.openBlock(),e.createBlock(Xe,{key:r.value,"can-manage":y.value},null,8,["can-manage"])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(S,{value:"insights"},{default:e.withCtx(()=>[v.value.connected&&f.value==="insights"?(e.openBlock(),e.createBlock(ht,{key:r.value,"can-manage":n.value},null,8,["can-manage"])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(S,{value:"account"},{default:e.withCtx(()=>[v.value.connected&&f.value==="account"?(e.openBlock(),e.createBlock(vo,{key:r.value})):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["modelValue"])):e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("section",yo,[e.createVNode(e.unref(p.ShieldAlert),{class:"mx-auto size-6 text-muted-foreground"}),m[5]||(m[5]=e.createElementVNode("h2",{class:"mt-3 font-medium"},"You cannot view this WhatsApp account",-1)),m[6]||(m[6]=e.createElementVNode("p",{class:"mt-2 text-sm text-muted-foreground"},"Ask a Studio administrator for the View WhatsApp permission.",-1))]))])}}});exports.default=wo;