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

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 (162) hide show
  1. package/dist/{ContentEditor-CoJjsV-m.js → ContentEditor-BcIUumah.js} +63 -59
  2. package/dist/{ContentEditor-DIwqplfB.mjs → ContentEditor-DX1bTQKs.mjs} +27894 -26319
  3. package/dist/{Detail-Dk8E6_uF.mjs → Detail-B7pe808q.mjs} +15 -14
  4. package/dist/Detail-BESGmY7z.js +1 -0
  5. package/dist/{Detail-Cn9Bk0u0.mjs → Detail-B_Q7Qkuz.mjs} +26 -25
  6. package/dist/Detail-CNiLIEh9.js +1 -0
  7. package/dist/{Detail-B_scnidb.mjs → Detail-DNxAzeCs.mjs} +35 -34
  8. package/dist/Detail-t3tOcy3X.js +1 -0
  9. package/dist/Editor-D4evcdhv.mjs +768 -0
  10. package/dist/Editor-gLLtuJbY.js +1 -0
  11. package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-BjKpsqT9.js +1 -0
  12. package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-D5v5AhLe.mjs +76 -0
  13. package/dist/Knowledge-B66vxz--.js +1 -0
  14. package/dist/Knowledge-BnMTTuJ7.mjs +742 -0
  15. package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-bZidw6RT.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-8I_Z9cD_.mjs} +530 -530
  16. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BVE_uURZ.js +1 -0
  17. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BdFa-xNf.mjs +3566 -0
  18. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DzPOadcU.js +925 -0
  19. package/dist/Overview-BE4uYPx0.mjs +745 -0
  20. package/dist/Overview-CQRpFhbJ.mjs +286 -0
  21. package/dist/Overview-CTs7sX4d.js +1 -0
  22. package/dist/Overview-Cj89XXKN.js +1 -0
  23. package/dist/Overview-D_c18mbR.mjs +248 -0
  24. package/dist/Overview-g4Rcj245.js +1 -0
  25. package/dist/TableCalculationWidget-CkQPrVUd.js +59 -0
  26. package/dist/TableCalculationWidget-CrqcLGfU.mjs +254 -0
  27. package/dist/TableDataWidget-7qvC3Egd.js +1 -0
  28. package/dist/TableDataWidget-DMTSoGRO.mjs +121 -0
  29. package/dist/TableOverviewCard-AFq-puJs.js +1 -0
  30. package/dist/TableOverviewCard-Ci0d4o4w.mjs +391 -0
  31. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs +534 -0
  32. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js +1 -0
  33. package/dist/TableRowActionCard-BhdnnPaq.mjs +266 -0
  34. package/dist/TableRowActionCard-IzB6tNN-.js +1 -0
  35. package/dist/TableView-6mdrL3zx.js +4 -0
  36. package/dist/TableView-Du5nOE6R.mjs +8228 -0
  37. package/dist/Test-CzmOmi53.mjs +447 -0
  38. package/dist/Test-USDtNFY1.js +1 -0
  39. package/dist/UserDetail-DpUL3mhk.mjs +1483 -0
  40. package/dist/UserDetail-KRIfxaYd.js +1 -0
  41. package/dist/{agenda-BCKDYOeF.mjs → agenda-DWdbWUbb.mjs} +10 -9
  42. package/dist/agenda-r9Gl85GL.js +1 -0
  43. package/dist/cms-core-modules.css +1 -1
  44. package/dist/dateRangePresets-B-l5b_wR.mjs +48 -0
  45. package/dist/dateRangePresets-CPWqst_x.js +1 -0
  46. package/dist/fuse-Deb-Iq39.mjs +1473 -0
  47. package/dist/fuse-_CGUd5Zq.js +1 -0
  48. package/dist/{index-DU3Ib10Z.mjs → index-B_qaX29C.mjs} +7 -6
  49. package/dist/index-CQuN5rKx.js +1 -0
  50. package/dist/index-CnDGeInm.js +1 -0
  51. package/dist/index-CqDTc5Ig.mjs +20 -0
  52. package/dist/index-CyvvAdt4.js +1 -0
  53. package/dist/index-DIRD7t5_.mjs +20 -0
  54. package/dist/index-OJuBYR60.mjs +57 -0
  55. package/dist/{index-Bk3yLv_G.js → index-yHLT6gaZ.js} +3 -3
  56. package/dist/index.cjs.js +1 -1
  57. package/dist/index.mjs +671 -118
  58. package/dist/{orders-CElKNc1v.mjs → orders-BfTLIm7U.mjs} +10 -9
  59. package/dist/orders-DUa2PVoa.js +1 -0
  60. package/dist/reports-ChCsd1Gk.mjs +1107 -0
  61. package/dist/reports-DmJPm8uP.js +158 -0
  62. package/dist/row-item-C1dUyimV.mjs +204 -0
  63. package/dist/row-item-Cyo3m3MZ.js +1 -0
  64. package/dist/server-handlers.cjs.js +1 -1
  65. package/dist/server-handlers.mjs +1764 -605
  66. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +9 -3
  67. package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +2 -0
  68. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +4 -2
  69. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +9 -3
  70. package/dist/src/appointments/pages/edit/orders.vue.d.ts +9 -3
  71. package/dist/src/appointments/pages/edit/reports.vue.d.ts +229 -1
  72. package/dist/src/contentManager/components/content-editor/tiptap-extensions/Container.d.ts +1 -1
  73. package/dist/src/contentManager/components/content-editor/tiptap-extensions/Row.d.ts +7 -0
  74. package/dist/src/contentManager/components/content-editor/tiptap-extensions/Stack.d.ts +7 -0
  75. package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/resizeHistory.d.ts +9 -0
  76. package/dist/src/contentManager/components/content-editor/tiptap-menus/ElementEditorMenu.vue.d.ts +3 -1
  77. package/dist/src/firebaseAuthManager/components/DeleteUserDialog.vue.d.ts +25 -0
  78. package/dist/src/firebaseAuthManager/components/ReasonActionDialog.vue.d.ts +23 -0
  79. package/dist/src/firebaseAuthManager/components/UserStatusBadge.vue.d.ts +5 -0
  80. package/dist/src/firebaseAuthManager/config.d.ts +151 -0
  81. package/dist/src/firebaseAuthManager/index.d.ts +163 -0
  82. package/dist/src/firebaseAuthManager/index.vue.d.ts +14 -0
  83. package/dist/src/firebaseAuthManager/metadata.d.ts +2 -0
  84. package/dist/src/firebaseAuthManager/pages/Overview.vue.d.ts +2 -0
  85. package/dist/src/firebaseAuthManager/pages/UserDetail.vue.d.ts +2 -0
  86. package/dist/src/firebaseAuthManager/permissions.d.ts +5 -0
  87. package/dist/src/firebaseAuthManager/routes.d.ts +5 -0
  88. package/dist/src/firebaseAuthManager/server.d.ts +162 -0
  89. package/dist/src/firebaseAuthManager/types.d.ts +84 -0
  90. package/dist/src/formBuilder/components/FormPreviewDialog.vue.d.ts +12 -0
  91. package/dist/src/formBuilder/components/FormStatusBadge.vue.d.ts +9 -0
  92. package/dist/src/formBuilder/config.d.ts +31 -0
  93. package/dist/src/formBuilder/index.d.ts +44 -0
  94. package/dist/src/formBuilder/index.vue.d.ts +14 -0
  95. package/dist/src/formBuilder/lib/forms.d.ts +11 -0
  96. package/dist/src/formBuilder/metadata.d.ts +2 -0
  97. package/dist/src/formBuilder/pages/Editor.vue.d.ts +2 -0
  98. package/dist/src/formBuilder/pages/Overview.vue.d.ts +2 -0
  99. package/dist/src/formBuilder/permissions.d.ts +5 -0
  100. package/dist/src/formBuilder/routes.d.ts +5 -0
  101. package/dist/src/formBuilder/server.d.ts +87 -0
  102. package/dist/src/formBuilder/tools.d.ts +1 -0
  103. package/dist/src/formBuilder/types.d.ts +46 -0
  104. package/dist/src/helpbot/composables/useHelpbotApi.d.ts +18 -0
  105. package/dist/src/helpbot/config.d.ts +17 -0
  106. package/dist/src/helpbot/index.d.ts +29 -0
  107. package/dist/src/helpbot/index.vue.d.ts +2 -0
  108. package/dist/src/helpbot/metadata.d.ts +2 -0
  109. package/dist/src/helpbot/pages/Knowledge.vue.d.ts +4 -0
  110. package/dist/src/helpbot/pages/Overview.vue.d.ts +2 -0
  111. package/dist/src/helpbot/pages/Test.vue.d.ts +4 -0
  112. package/dist/src/helpbot/permissions.d.ts +5 -0
  113. package/dist/src/helpbot/routes.d.ts +5 -0
  114. package/dist/src/helpbot/types.d.ts +42 -0
  115. package/dist/src/index.d.ts +3 -0
  116. package/dist/src/server-handlers.d.ts +2 -0
  117. package/dist/src/table/chat-components/TableCalculationWidget.vue.d.ts +15 -0
  118. package/dist/src/table/chat-components/TableDataWidget.vue.d.ts +15 -0
  119. package/dist/src/table/chat-components/TableOverviewCard.vue.d.ts +61 -0
  120. package/dist/src/table/chat-components/TableResultView.vue.d.ts +48 -0
  121. package/dist/src/table/chat-components/TableRowActionCard.vue.d.ts +15 -0
  122. package/dist/src/table/components/filters/DialogTableFilterOptionItem.vue.d.ts +16 -0
  123. package/dist/src/table/components/filters/NumberComparisonFilter.vue.d.ts +12 -0
  124. package/dist/src/table/components/filters/NumberComparisonFilterSettings.vue.d.ts +12 -0
  125. package/dist/src/table/components/filters/NumberRangeFilter.vue.d.ts +12 -0
  126. package/dist/src/table/components/filters/NumberRangeFilterSettings.vue.d.ts +12 -0
  127. package/dist/src/table/components/filters/filter-utils.d.ts +14 -0
  128. package/dist/src/table/composables/useTableAgentTools.d.ts +33 -0
  129. package/dist/src/table/index.d.ts +339 -0
  130. package/dist/src/table/tool-sandbox.d.ts +13 -0
  131. package/dist/src/table/tool-utils.d.ts +11 -0
  132. package/dist/src/table/tools.d.ts +333 -1
  133. package/dist/src/table/types.d.ts +79 -0
  134. package/dist/tool-sandbox-DdkMLkDK.mjs +182 -0
  135. package/dist/tool-sandbox-DoF1PsyS.js +115 -0
  136. package/dist/types-9N-DKxNj.mjs +250 -0
  137. package/dist/types-BMraG1kN.js +1 -0
  138. package/dist/types-Cem0vPo_.js +1 -0
  139. package/dist/types-ibC3-e1N.mjs +2630 -0
  140. package/dist/useHelpbotApi-BIIungOh.js +1 -0
  141. package/dist/useHelpbotApi-HC9JSiSn.mjs +229 -0
  142. package/dist/useTableAgentTools-D5mzGf3A.js +1 -0
  143. package/dist/useTableAgentTools-DcN3kYRL.mjs +131 -0
  144. package/dist/vee-validate-zod-BQElPD0m.js +1 -0
  145. package/dist/vee-validate-zod-CN16K2x9.mjs +1780 -0
  146. package/package.json +17 -17
  147. package/src/formBuilder/tools.ts +1 -0
  148. package/src/table/tools.ts +304 -1
  149. package/dist/Detail-BCUUNWvp.js +0 -1
  150. package/dist/Detail-DGg_xXZc.js +0 -1
  151. package/dist/Detail-Sc2qZdxj.js +0 -1
  152. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BdZbcubW.js +0 -1
  153. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BYSeUW_V.js +0 -925
  154. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DwAUYR8p.mjs +0 -5021
  155. package/dist/TableView-Ctnep-Qu.mjs +0 -6247
  156. package/dist/TableView-DJqyJL9L.js +0 -4
  157. package/dist/agenda-B54F8cEr.js +0 -1
  158. package/dist/orders-BMosTk6r.js +0 -1
  159. package/dist/reports-BQT_GZzU.js +0 -158
  160. package/dist/reports-DksZCTOw.mjs +0 -837
  161. package/dist/vee-validate-zod-SjDT8X35.mjs +0 -4404
  162. package/dist/vee-validate-zod-VCmLnrtQ.js +0 -1
@@ -1,9 +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, o as ie, p as J, c as q, s as F, b as ae, f as de } from "./vee-validate-zod-SjDT8X35.mjs";
3
- import { r as j } from "./countries-BTPvmrsb.mjs";
4
- import { ChevronsUpDown as re, Search as ce, Check as ue, X as pe, Tag as me, ChevronRight as fe, Trash as _e, Loader2 as K } from "lucide-vue-next";
5
- import { useModulePermissions as xe, useModuleRoute as ve, useConfirmation as be, useFirebaseIntegration as ge, useModuleBreadcrumbs as he } from "@oneclick.dev/cms-kit";
6
- import { t as E } from "./index-RLz1QPrf.mjs";
2
+ import { u as W, a as S, t as le, b as ie } from "./vee-validate-zod-CN16K2x9.mjs";
3
+ import { r as F } from "./countries-BTPvmrsb.mjs";
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
+ import { useModulePermissions as fe, useModuleRoute as _e, useConfirmation as xe, useFirebaseIntegration as ve, useModuleBreadcrumbs as be } from "@oneclick.dev/cms-kit";
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
8
  const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2" }, ye = {
8
9
  key: 0,
9
10
  class: "text-red-500 text-sm mt-1"
@@ -103,7 +104,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
103
104
  setup(P) {
104
105
  const { errors: x } = W(), { value: l } = S("countries");
105
106
  return ee(l, (u) => {
106
- let a = u?.sort((g, t) => !g || !t ? 0 : j.find((m) => m.cca2 === g)?.name.common.localeCompare(j.find((m) => m.cca2 === t)?.name.common)), r = !0;
107
+ let a = u?.sort((g, t) => !g || !t ? 0 : F.find((m) => m.cca2 === g)?.name.common.localeCompare(F.find((m) => m.cca2 === t)?.name.common)), r = !0;
107
108
  for (let g = 0; g < u.length; g++)
108
109
  if (u[g] !== l.value[g]) {
109
110
  r = !1;
@@ -140,8 +141,8 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
140
141
  class: "justify-between"
141
142
  }, {
142
143
  default: s(() => [
143
- o("span", Te, _(e(l)?.length > 0 ? e(l).slice(0, 4).map((y) => e(j).find((L) => L.cca2 === y)?.name.common).join(", ") : "Select countries"), 1),
144
- n(e(re), { class: "ml-2 size-4 shrink-0 opacity-50" })
144
+ o("span", Te, _(e(l)?.length > 0 ? e(l).slice(0, 4).map((y) => e(F).find((L) => L.cca2 === y)?.name.common).join(", ") : "Select countries"), 1),
145
+ n(e(ae), { class: "ml-2 size-4 shrink-0 opacity-50" })
145
146
  ]),
146
147
  _: 1
147
148
  })
@@ -159,7 +160,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
159
160
  placeholder: "Find country..."
160
161
  }),
161
162
  o("span", Ue, [
162
- n(e(ce), { class: "size-4 text-muted-foreground" })
163
+ n(e(de), { class: "size-4 text-muted-foreground" })
163
164
  ])
164
165
  ]),
165
166
  n(C, null, {
@@ -170,7 +171,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
170
171
  }),
171
172
  n(M, { class: "max-h-72 overflow-y-scroll" }, {
172
173
  default: s(() => [
173
- (d(!0), b(X, null, H(e(j), (y) => (d(), O(T, {
174
+ (d(!0), b(X, null, H(e(F), (y) => (d(), O(T, {
174
175
  key: y.cca2,
175
176
  value: y.cca2
176
177
  }, {
@@ -179,7 +180,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
179
180
  o("span", Fe, _(y.name.common), 1),
180
181
  n(I, null, {
181
182
  default: s(() => [
182
- n(e(ue), { class: "size-4" })
183
+ n(e(re), { class: "size-4" })
183
184
  ]),
184
185
  _: 1
185
186
  })
@@ -200,8 +201,8 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
200
201
  ]),
201
202
  e(l)?.length > 0 ? (d(), b("div", Ee, [
202
203
  (d(!0), b(X, null, H(e(l), (y) => (d(), b("div", Pe, [
203
- o("div", Be, _(e(j).find((L) => L.cca2 === y)?.flag), 1),
204
- o("p", De, _(e(j).find((L) => L.cca2 === y)?.name.common), 1),
204
+ o("div", Be, _(e(F).find((L) => L.cca2 === y)?.flag), 1),
205
+ o("p", De, _(e(F).find((L) => L.cca2 === y)?.name.common), 1),
205
206
  n(g, {
206
207
  variant: "ghost",
207
208
  size: "icon",
@@ -209,7 +210,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
209
210
  class: "hidden group-hover:flex ml-auto size-6"
210
211
  }, {
211
212
  default: s(() => [
212
- n(e(pe), { class: "size-3" })
213
+ n(e(ce), { class: "size-3" })
213
214
  ]),
214
215
  _: 1
215
216
  }, 8, ["onClick"])
@@ -453,7 +454,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
453
454
  }), bt = { class: "relative @container" }, gt = { class: "flex flex-row gap-4 justify-between max-w-5xl mx-auto mt-4 mb-6" }, ht = { class: "flex items-center" }, Ct = { class: "text-lg font-semibold mx-2" }, wt = { class: "flex flex-col @3xl:flex-row gap-4 max-w-5xl mx-auto pb-24" }, yt = { class: "flex flex-col gap-4 w-full @3xl:w-2/3" }, kt = { class: "flex flex-col gap-4 w-full @3xl:w-1/3" }, $t = {
454
455
  key: 0,
455
456
  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)]"
456
- }, Ot = { class: "w-full max-w-5xl flex items-center justify-end mx-auto" }, zt = /* @__PURE__ */ B({
457
+ }, Ot = { class: "w-full max-w-5xl flex items-center justify-end mx-auto" }, Ut = /* @__PURE__ */ B({
457
458
  __name: "Detail",
458
459
  props: {
459
460
  config: {
@@ -462,17 +463,17 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
462
463
  }
463
464
  },
464
465
  setup(P) {
465
- const x = P, { hasPermission: l, hasAnyPermission: u } = xe(), { params: a, navigateTo: r } = ve(), { confirm: g } = be(), t = ge(x.config.project), m = oe(() => !a.value.optionId || a.value.optionId === "new"), h = R(!1), C = R(!1), I = le(ie({
466
- id: F().optional(),
467
- status: F().optional(),
468
- title: F().min(1, "Title is required"),
469
- description: F().optional(),
466
+ const x = P, { hasPermission: l, hasAnyPermission: u } = fe(), { params: a, navigateTo: r } = _e(), { confirm: g } = xe(), t = ve(x.config.project), m = oe(() => !a.value.optionId || a.value.optionId === "new"), h = R(!1), C = R(!1), I = le(ge({
467
+ id: E().optional(),
468
+ status: E().optional(),
469
+ title: E().min(1, "Title is required"),
470
+ description: E().optional(),
470
471
  price: J(
471
472
  (p) => p === "" ? void 0 : p,
472
473
  q.number().positive("Must be positive").optional()
473
474
  ),
474
- countries: ae(F()).optional(),
475
- condition: F(),
475
+ countries: he(E()).optional(),
476
+ condition: E(),
476
477
  condition_min: J(
477
478
  (p) => p === "" ? void 0 : p,
478
479
  q.number().positive("Must be positive").optional()
@@ -481,7 +482,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
481
482
  (p) => p === "" ? void 0 : p,
482
483
  q.number().positive("Must be positive").optional()
483
484
  )
484
- })), { handleSubmit: T, errors: M, values: w, setValues: G } = de({
485
+ })), { handleSubmit: T, errors: M, values: w, setValues: G } = ie({
485
486
  validationSchema: I,
486
487
  initialValues: {
487
488
  status: "published",
@@ -489,7 +490,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
489
490
  condition: "always"
490
491
  }
491
492
  });
492
- he(() => [
493
+ be(() => [
493
494
  { text: w.title ?? "New Option" }
494
495
  ]);
495
496
  const D = T(async (p) => {
@@ -499,11 +500,11 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
499
500
  let k = JSON.parse(JSON.stringify(p));
500
501
  k.id = crypto.randomUUID();
501
502
  const V = [...c, k], $ = x.config.shippingOptionsCollection.split(":");
502
- await t.update($[0], null, { [$[1]]: V }), r(k.id), E.success("Shipping option created");
503
+ await t.update($[0], null, { [$[1]]: V }), r(k.id), j.success("Shipping option created");
503
504
  } else {
504
505
  let k = JSON.parse(JSON.stringify(p));
505
506
  const V = c.map((U) => U.id === a.value.optionId ? k : U), $ = x.config.shippingOptionsCollection.split(":");
506
- await t.update($[0], null, { [$[1]]: V }), r(`${a.value.optionId}`), E.success("Shipping option updated");
507
+ await t.update($[0], null, { [$[1]]: V }), r(`${a.value.optionId}`), j.success("Shipping option updated");
507
508
  }
508
509
  C.value = !1;
509
510
  }), z = async () => {
@@ -518,9 +519,9 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
518
519
  let c = { ...[...await z() || []].find((U) => U.id === a.value.optionId) };
519
520
  c.id = crypto.randomUUID(), c.status = "published", c.title = c.title + " (copy)";
520
521
  const V = [...await z() || [], c], $ = x.config.shippingOptionsCollection.split(":");
521
- await t.update($[0], null, { [$[1]]: V }), r(c.id), E.success("Option duplicated");
522
+ await t.update($[0], null, { [$[1]]: V }), r(c.id), j.success("Option duplicated");
522
523
  } catch {
523
- E.error("Failed to duplicate option");
524
+ j.error("Failed to duplicate option");
524
525
  }
525
526
  }, A = async () => {
526
527
  if (await g("Are you sure you want to delete this option?"))
@@ -528,9 +529,9 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
528
529
  const c = await z() || [];
529
530
  if (c.length === 0 || !a.value.optionId) throw new Error("Error loading values");
530
531
  const k = c.filter(($) => $.id !== a.value.optionId), V = x.config.shippingOptionsCollection.split(":");
531
- await t.update(V[0], null, { [V[1]]: k }), r(""), E.success("Option deleted");
532
+ await t.update(V[0], null, { [V[1]]: k }), r(""), j.success("Option deleted");
532
533
  } catch {
533
- E.error("Failed to delete option");
534
+ j.error("Failed to delete option");
534
535
  }
535
536
  };
536
537
  return ne(() => {
@@ -545,11 +546,11 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
545
546
  onClick: c[0] || (c[0] = (Vt) => e(r)(""))
546
547
  }, {
547
548
  default: s(() => [
548
- n(e(me), { class: "size-4" })
549
+ n(e(ue), { class: "size-4" })
549
550
  ]),
550
551
  _: 1
551
552
  }),
552
- n(e(fe), { class: "size-3" }),
553
+ n(e(pe), { class: "size-3" }),
553
554
  o("h1", Ct, _(m.value ? "New Option" : e(w).title), 1)
554
555
  ]),
555
556
  m.value ? f("", !0) : (d(), O(Z, {
@@ -584,7 +585,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
584
585
  onClick: A
585
586
  }, {
586
587
  default: s(() => [
587
- n(e(_e), { class: "size-4" }),
588
+ n(e(me), { class: "size-4" }),
588
589
  c[3] || (c[3] = v(" Delete option ", -1))
589
590
  ]),
590
591
  _: 1
@@ -645,5 +646,5 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
645
646
  }
646
647
  });
647
648
  export {
648
- zt as default
649
+ Ut as default
649
650
  };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),S=require("./vee-validate-zod-BQElPD0m.js"),_=require("lucide-vue-next"),M=require("@oneclick.dev/cms-kit"),z=require("./index-ijdf0d9-.js"),v=require("./types-BMraG1kN.js"),K={class:"flex flex-col gap-4"},Z={class:"flex flex-col gap-2"},H={key:0,class:"text-red-500 text-sm mt-1"},Q={class:"flex flex-col gap-4"},W={class:"flex flex-col gap-2"},Y={key:0,class:"text-red-500 text-sm mt-1"},ee={class:"flex flex-col gap-4"},te={class:"flex flex-col gap-2"},oe={key:0,class:"text-red-500 text-sm mt-1"},le={class:"flex flex-col gap-4"},ne={class:"flex flex-col gap-2"},se={class:"flex items-center gap-2 mb-2"},ae={class:"flex items-center gap-2"},re=["src"],ce={key:0,class:"text-red-500 text-sm mt-1"},ie=e.defineComponent({__name:"Main",setup(A){const V=e.inject("sources"),{errors:p}=S.useFormContext(),{value:C}=S.useField("title"),{value:c}=S.useField("description"),{value:f}=S.useField("thumbnail"),{value:k}=S.useField("slug"),N=i=>{f.value=Array.isArray(i)?i[0]||"":i};function h(i){return i?i.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").trim().replace(/[-\s]+/g,"-"):""}return e.watch(C,(i,r)=>{(!k.value||h(r)===k.value)&&(k.value=h(i))}),(i,r)=>{const b=e.resolveComponent("Label"),B=e.resolveComponent("Input"),T=e.resolveComponent("Textarea"),$=e.resolveComponent("Button"),y=e.resolveComponent("MediaPickerDialog"),U=e.resolveComponent("CardContent"),D=e.resolveComponent("Card");return e.openBlock(),e.createBlock(D,null,{default:e.withCtx(()=>[e.createVNode(U,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[e.createElementVNode("div",K,[e.createElementVNode("div",Z,[e.createVNode(b,{for:"title",class:"text-sm mb-2"},{default:e.withCtx(()=>[...r[6]||(r[6]=[e.createTextVNode("Title",-1)])]),_:1}),e.createVNode(B,{type:"text",id:"title",placeholder:"Summer collection",modelValue:e.unref(C),"onUpdate:modelValue":r[0]||(r[0]=x=>e.isRef(C)?C.value=x:null)},null,8,["modelValue"]),e.unref(p).title?(e.openBlock(),e.createElementBlock("p",H,e.toDisplayString(e.unref(p).title),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Q,[e.createElementVNode("div",W,[e.createVNode(b,{for:"slug",class:"text-sm mb-2"},{default:e.withCtx(()=>[...r[7]||(r[7]=[e.createTextVNode("Slug",-1)])]),_:1}),e.createVNode(B,{id:"slug",placeholder:"summer-collection",modelValue:e.unref(k),"onUpdate:modelValue":r[1]||(r[1]=x=>e.isRef(k)?k.value=x:null)},null,8,["modelValue"]),e.unref(p).slug?(e.openBlock(),e.createElementBlock("p",Y,e.toDisplayString(e.unref(p).slug),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",ee,[e.createElementVNode("div",te,[e.createVNode(b,{for:"description",class:"text-sm mb-2"},{default:e.withCtx(()=>[...r[8]||(r[8]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(T,{id:"description",placeholder:"Fresh, vibrant, and bold. The perfect collection for the summer season.",modelValue:e.unref(c),"onUpdate:modelValue":r[2]||(r[2]=x=>e.isRef(c)?c.value=x:null)},null,8,["modelValue"]),e.unref(p).description?(e.openBlock(),e.createElementBlock("p",oe,e.toDisplayString(e.unref(p).description),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",le,[e.createElementVNode("div",ne,[e.createElementVNode("div",se,[e.createVNode(b,{for:"media",class:"text-sm"},{default:e.withCtx(()=>[...r[9]||(r[9]=[e.createTextVNode("Thumbnail",-1)])]),_:1}),e.unref(f)?(e.openBlock(),e.createBlock($,{key:0,variant:"ghost",size:"icon",onClick:r[3]||(r[3]=x=>f.value="")},{default:e.withCtx(()=>[e.createVNode(e.unref(_.X),{class:"size-4"})]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",ae,[e.createVNode(y,{sources:e.unref(V),maxFiles:1,"initial-value":e.unref(f)?[e.unref(f)]:[],onSubmit:r[5]||(r[5]=x=>N(x))},{default:e.withCtx(()=>[e.createElementVNode("button",{onClick:r[4]||(r[4]=e.withModifiers(()=>{},["stop"])),tabindex:"-1",class:"cursor-pointer block"},[e.unref(f)?(e.openBlock(),e.createElementBlock("img",{key:1,src:e.unref(f),class:"size-42 rounded-md object-cover",draggable:"false"},null,8,re)):(e.openBlock(),e.createBlock($,{key:0,variant:"outline",class:"size-42 border-dashed cursor-pointer"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.ImagePlus))]),_:1}))])]),_:1},8,["sources","initial-value"]),e.unref(p).thumbnail?(e.openBlock(),e.createElementBlock("p",ce,e.toDisplayString(e.unref(p).thumbnail),1)):e.createCommentVNode("",!0)])])])]),_:1})]),_:1})}}}),de={class:"flex items-center gap-2"},ue={key:0,class:"size-3 rounded-full bg-green-500"},me={key:1,class:"size-3 rounded-full bg-blue-500"},pe=e.defineComponent({__name:"Status",setup(A){const{errors:V}=S.useFormContext(),{value:p}=S.useField("status");return(C,c)=>{const f=e.resolveComponent("SelectValue"),k=e.resolveComponent("SelectTrigger"),N=e.resolveComponent("SelectItem"),h=e.resolveComponent("SelectGroup"),i=e.resolveComponent("SelectContent"),r=e.resolveComponent("Select"),b=e.resolveComponent("CardContent"),B=e.resolveComponent("Card");return e.openBlock(),e.createBlock(B,null,{default:e.withCtx(()=>[e.createVNode(b,null,{default:e.withCtx(()=>[c[3]||(c[3]=e.createElementVNode("p",{class:"text-md font-semibold mb-2"},"Status",-1)),e.createVNode(r,{modelValue:e.unref(p),"onUpdate:modelValue":c[0]||(c[0]=T=>e.isRef(p)?p.value=T:null),class:"w-full"},{default:e.withCtx(()=>[e.createVNode(k,{class:"w-full"},{default:e.withCtx(()=>[e.createElementVNode("div",de,[e.unref(p)==="published"?(e.openBlock(),e.createElementBlock("span",ue)):e.unref(p)==="draft"?(e.openBlock(),e.createElementBlock("span",me)):e.createCommentVNode("",!0),e.createVNode(f,{placeholder:"Status"})])]),_:1}),e.createVNode(i,null,{default:e.withCtx(()=>[e.createVNode(h,null,{default:e.withCtx(()=>[e.createVNode(N,{value:"published"},{default:e.withCtx(()=>[...c[1]||(c[1]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-green-500"},null,-1),e.createTextVNode(" Published ",-1)])]),_:1}),e.createVNode(N,{value:"draft"},{default:e.withCtx(()=>[...c[2]||(c[2]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-blue-500"},null,-1),e.createTextVNode(" Draft ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})}}}),fe={class:"flex items-center justify-between gap-4"},xe={class:"text-sm text-muted-foreground"},ge={key:0,class:"border border-dashed rounded-lg p-6 text-center text-sm text-muted-foreground"},_e={key:1,class:"flex flex-col gap-3"},Ce={class:"flex items-center gap-3 p-3"},ve=["onClick"],Ve={key:1,class:"size-10 rounded-md border border-dashed flex items-center justify-center text-muted-foreground"},ke={class:"min-w-0"},Ne={class:"flex items-center gap-2"},he={class:"font-medium truncate"},be={key:0,class:"bg-green-500 text-green-950 px-2 py-1 rounded-lg text-xs"},ye={key:1,class:"bg-blue-500 text-blue-950 px-2 py-1 rounded-lg text-xs"},we={class:"flex items-center gap-1"},Se={key:0,class:"border-t p-4 flex flex-col gap-4"},Be={class:"grid grid-cols-1 @md:grid-cols-2 gap-4"},Ee={class:"flex flex-col gap-2"},Te={key:0,class:"text-red-500 text-sm mt-1"},$e={class:"flex flex-col gap-2"},ze={key:0,class:"text-red-500 text-sm mt-1"},De={class:"flex flex-col gap-2"},Ie={class:"flex items-center gap-2"},Ue={key:0,class:"size-3 rounded-full bg-green-500"},Me={key:1,class:"size-3 rounded-full bg-blue-500"},Ae={class:"flex flex-col gap-2"},Fe={class:"flex flex-col gap-2"},Pe={class:"flex items-center gap-2"},je=["src"],qe=e.defineComponent({__name:"Subcollections",setup(A){const V=e.inject("sources"),{errors:p}=S.useFormContext(),{value:C}=S.useField("subcollections"),c=e.ref([]),f=e.computed(()=>(Array.isArray(C.value)||(C.value=[]),C.value.map(N)));function k(l){return l?l.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").trim().replace(/[-\s]+/g,"-"):""}function N(l){const t=l;return t.id||(t.id=crypto.randomUUID()),t.type="manual",t.status||(t.status="draft"),t.slug||(t.slug=k(t.title)),delete t.seo,t}function h(){return{id:crypto.randomUUID(),title:"",type:"manual",description:"",thumbnail:"",slug:"",status:"draft"}}function i(){return Array.isArray(C.value)?C.value.map(N):[]}function r(l){C.value=l}function b(){const l=h();r([...i(),l]),c.value=[l.id]}function B(l){const t=i(),u=t.findIndex(n=>n.id===l.id),o=JSON.parse(JSON.stringify(l));o.id=crypto.randomUUID(),o.type="manual",o.title=`${o.title||"Untitled subcollection"} (copy)`,o.slug=x(o.slug?`${o.slug}-copy`:o.title,o.id),delete o.seo;const a=[...t];a.splice(u+1,0,o),r(a),c.value=[o.id]}function T(l){r(i().filter(t=>t.id!==l)),c.value=c.value.filter(t=>t!==l)}function $(l,t){const u=i(),o=u.findIndex(m=>m.id===l),a=t==="up"?o-1:o+1;if(o<0||a<0||a>=u.length)return;const n=[...u],[d]=n.splice(o,1);n.splice(a,0,d),r(n)}function y(l){c.value=c.value.includes(l)?c.value.filter(t=>t!==l):[...c.value,l]}function U(l,t){const u=l.title;l.title=t,(!l.slug||k(u)===l.slug)&&(l.slug=x(t,l.id))}function D(l,t){l.thumbnail=Array.isArray(t)?t[0]||"":t}function x(l,t){const u=k(l)||"subcollection",o=new Set(i().filter(d=>d.id!==t).map(d=>d.slug).filter(Boolean));if(!o.has(u))return u;let a=2,n=`${u}-${a}`;for(;o.has(n);)a++,n=`${u}-${a}`;return n}function P(l){l.slug=x(l.slug||l.title,l.id)}function E(l){return p.value?.[l]}return(l,t)=>{const u=e.resolveComponent("Button"),o=e.resolveComponent("AvatarImage"),a=e.resolveComponent("AvatarFallback"),n=e.resolveComponent("Avatar"),d=e.resolveComponent("Label"),m=e.resolveComponent("Input"),w=e.resolveComponent("SelectValue"),j=e.resolveComponent("SelectTrigger"),F=e.resolveComponent("SelectItem"),q=e.resolveComponent("SelectGroup"),L=e.resolveComponent("SelectContent"),O=e.resolveComponent("Select"),R=e.resolveComponent("Textarea"),G=e.resolveComponent("MediaPickerDialog"),J=e.resolveComponent("CardContent"),X=e.resolveComponent("Card");return e.openBlock(),e.createBlock(X,null,{default:e.withCtx(()=>[e.createVNode(J,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[e.createElementVNode("div",fe,[e.createElementVNode("div",null,[t[1]||(t[1]=e.createElementVNode("h3",{class:"text-lg font-semibold"},"Subcollections",-1)),e.createElementVNode("p",xe,e.toDisplayString(f.value.length)+" subcollections",1)]),e.createVNode(u,{variant:"outline",onClick:b},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Plus),{class:"size-4"}),t[2]||(t[2]=e.createTextVNode(" Add ",-1))]),_:1})]),f.value.length===0?(e.openBlock(),e.createElementBlock("div",ge," No subcollections yet. ")):(e.openBlock(),e.createElementBlock("div",_e,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(s,I)=>(e.openBlock(),e.createElementBlock("div",{key:s.id,class:"border rounded-lg overflow-hidden"},[e.createElementVNode("div",Ce,[e.createElementVNode("button",{class:"flex items-center gap-3 min-w-0 flex-1 text-left cursor-pointer",onClick:g=>y(s.id)},[s.thumbnail?(e.openBlock(),e.createBlock(n,{key:0,class:"size-10 rounded-md"},{default:e.withCtx(()=>[e.createVNode(o,{src:s.thumbnail,class:"object-cover"},null,8,["src"]),e.createVNode(a,{class:"rounded-md"})]),_:2},1024)):(e.openBlock(),e.createElementBlock("div",Ve,[e.createVNode(e.unref(_.ImagePlus),{class:"size-4"})])),e.createElementVNode("div",ke,[e.createElementVNode("div",Ne,[e.createElementVNode("p",he,e.toDisplayString(s.title||"Untitled subcollection"),1),s.status==="published"?(e.openBlock(),e.createElementBlock("span",be,"Published")):(e.openBlock(),e.createElementBlock("span",ye,"Draft"))])])],8,ve),e.createElementVNode("div",we,[e.createVNode(u,{size:"icon",variant:"ghost",onClick:g=>$(s.id,"up"),disabled:I===0},{default:e.withCtx(()=>[e.createVNode(e.unref(_.ArrowUp),{class:"size-4"})]),_:1},8,["onClick","disabled"]),e.createVNode(u,{size:"icon",variant:"ghost",onClick:g=>$(s.id,"down"),disabled:I===f.value.length-1},{default:e.withCtx(()=>[e.createVNode(e.unref(_.ArrowDown),{class:"size-4"})]),_:1},8,["onClick","disabled"]),e.createVNode(u,{size:"icon",variant:"ghost",onClick:g=>B(s)},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Copy),{class:"size-4"})]),_:1},8,["onClick"]),e.createVNode(u,{size:"icon",variant:"ghost",onClick:g=>T(s.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Trash),{class:"size-4"})]),_:1},8,["onClick"]),e.createVNode(u,{size:"icon",variant:"ghost",onClick:g=>y(s.id)},{default:e.withCtx(()=>[c.value.includes(s.id)?(e.openBlock(),e.createBlock(e.unref(_.ChevronUp),{key:0,class:"size-4"})):(e.openBlock(),e.createBlock(e.unref(_.ChevronDown),{key:1,class:"size-4"}))]),_:2},1032,["onClick"])])]),c.value.includes(s.id)?(e.openBlock(),e.createElementBlock("div",Se,[e.createElementVNode("div",Be,[e.createElementVNode("div",Ee,[e.createVNode(d,{for:`subcollection-${s.id}-title`,class:"text-sm"},{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode("Title",-1)])]),_:1},8,["for"]),e.createVNode(m,{type:"text",id:`subcollection-${s.id}-title`,placeholder:"Summer dresses","model-value":s.title,"onUpdate:modelValue":g=>U(s,String(g||""))},null,8,["id","model-value","onUpdate:modelValue"]),E(`subcollections[${I}].title`)?(e.openBlock(),e.createElementBlock("p",Te,e.toDisplayString(E(`subcollections[${I}].title`)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",$e,[e.createVNode(d,{for:`subcollection-${s.id}-slug`,class:"text-sm"},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode("Slug",-1)])]),_:1},8,["for"]),e.createVNode(m,{id:`subcollection-${s.id}-slug`,placeholder:"summer-dresses",modelValue:s.slug,"onUpdate:modelValue":g=>s.slug=g,onBlur:g=>P(s)},null,8,["id","modelValue","onUpdate:modelValue","onBlur"]),E(`subcollections[${I}].slug`)?(e.openBlock(),e.createElementBlock("p",ze,e.toDisplayString(E(`subcollections[${I}].slug`)),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",De,[e.createVNode(d,{for:`subcollection-${s.id}-status`,class:"text-sm"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("Status",-1)])]),_:1},8,["for"]),e.createVNode(O,{modelValue:s.status,"onUpdate:modelValue":g=>s.status=g},{default:e.withCtx(()=>[e.createVNode(j,{id:`subcollection-${s.id}-status`,class:"w-full"},{default:e.withCtx(()=>[e.createElementVNode("div",Ie,[s.status==="published"?(e.openBlock(),e.createElementBlock("span",Ue)):(e.openBlock(),e.createElementBlock("span",Me)),e.createVNode(w,{placeholder:"Status"})])]),_:2},1032,["id"]),e.createVNode(L,null,{default:e.withCtx(()=>[e.createVNode(q,null,{default:e.withCtx(()=>[e.createVNode(F,{value:"published"},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-green-500"},null,-1),e.createTextVNode(" Published ",-1)])]),_:1}),e.createVNode(F,{value:"draft"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-blue-500"},null,-1),e.createTextVNode(" Draft ",-1)])]),_:1})]),_:1})]),_:1})]),_:2},1032,["modelValue","onUpdate:modelValue"])]),e.createElementVNode("div",Ae,[e.createVNode(d,{for:`subcollection-${s.id}-description`,class:"text-sm"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Description",-1)])]),_:1},8,["for"]),e.createVNode(R,{id:`subcollection-${s.id}-description`,placeholder:"Fresh, vibrant, and bold. The perfect collection for the summer season.",modelValue:s.description,"onUpdate:modelValue":g=>s.description=g},null,8,["id","modelValue","onUpdate:modelValue"])]),e.createElementVNode("div",Fe,[e.createElementVNode("div",Pe,[e.createVNode(d,{for:`subcollection-${s.id}-media`,class:"text-sm"},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode("Thumbnail",-1)])]),_:1},8,["for"]),s.thumbnail?(e.openBlock(),e.createBlock(u,{key:0,variant:"ghost",size:"icon",onClick:g=>s.thumbnail=""},{default:e.withCtx(()=>[e.createVNode(e.unref(_.X),{class:"size-4"})]),_:1},8,["onClick"])):e.createCommentVNode("",!0)]),e.createVNode(G,{sources:e.unref(V),maxFiles:1,"initial-value":s.thumbnail?[s.thumbnail]:[],onSubmit:g=>D(s,g)},{default:e.withCtx(()=>[e.createElementVNode("button",{onClick:t[0]||(t[0]=e.withModifiers(()=>{},["stop"])),tabindex:"-1",class:"cursor-pointer block"},[s.thumbnail?(e.openBlock(),e.createElementBlock("img",{key:1,src:s.thumbnail,class:"size-32 rounded-md object-cover",draggable:"false"},null,8,je)):(e.openBlock(),e.createBlock(u,{key:0,variant:"outline",class:"size-32 border-dashed cursor-pointer"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.ImagePlus))]),_:1}))])]),_:2},1032,["sources","initial-value","onSubmit"])])])):e.createCommentVNode("",!0)]))),128))]))]),_:1})]),_:1})}}}),Le={class:"relative @container"},Oe={class:"flex flex-row gap-4 justify-between max-w-5xl mx-auto mt-4 mb-6"},Re={class:"flex items-center"},Ge={class:"text-lg font-semibold mx-2"},Je={key:0,class:"bg-green-500 text-green-950 px-2 py-1 rounded-lg text-xs"},Xe={key:1,class:"bg-blue-500 text-blue-950 px-2 py-1 rounded-lg text-xs"},Ke={class:"flex flex-col @3xl:flex-row gap-4 max-w-5xl mx-auto pb-24"},Ze={class:"flex flex-col gap-4 w-full @3xl:w-2/3"},He={class:"flex flex-col gap-4 w-full @3xl:w-1/3"},Qe={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)]"},We={class:"w-full max-w-5xl flex items-center justify-end mx-auto"},Ye=e.defineComponent({__name:"Detail",props:{config:{type:Object,required:!0}},setup(A){const V=A,{hasPermission:p,hasAnyPermission:C}=M.useModulePermissions(),{params:c,navigateTo:f}=M.useModuleRoute(),{confirm:k}=M.useConfirmation(),N=M.useFirebaseIntegration(V.config.project);e.provide("sources",V.config.allowedMediaSources),e.provide("defaultSource",V.config.defaultUploadMediaSource);const h=e.computed(()=>!c.value.collectionId||c.value.collectionId==="new"),i=e.ref(!1),r=v.objectType({field:v.stringType(),operator:v.enumType(["==","!=","<",">","<=",">=","in","not-in","array-contains","array-contains-any"]),value:v.anyType()}),b=v.objectType({title:v.stringType().min(1,"Title is required"),type:v.stringType(),description:v.stringType().optional(),thumbnail:v.stringType().optional(),slug:v.stringType(),conditions:v.arrayType(r).optional(),status:v.stringType()}),B=b.extend({id:v.stringType().min(1,"ID is required")}),T=S.toTypedSchema(b.extend({id:v.stringType().optional(),subcollections:v.arrayType(B).optional()})),{handleSubmit:$,values:y,setValues:U}=S.useForm({validationSchema:T,initialValues:{status:"draft",type:"manual",subcollections:[]}});M.useModuleBreadcrumbs(()=>[{text:h.value?"New Collection":y.title||"Collection"}]);const D=$(async o=>{i.value=!0;let a=await x()||[];if(h.value){let n=E(o);if(n.id=crypto.randomUUID(),await u(n.slug)){z.toast.error("Collection with this slug already exists"),i.value=!1;return}const d=[...a,n],m=V.config.collectionsCollection.split(":");await N.update(m[0],null,{[m[1]]:d}),f("/"),z.toast.success("Collection created")}else{let n=E(o);const d=a.map(w=>w.id===c.value.collectionId?n:w),m=V.config.collectionsCollection.split(":");await N.update(m[0],null,{[m[1]]:d}),f("/"),z.toast.success("Collection updated")}i.value=!1}),x=async()=>{if(!V.config.collectionsCollection)return[];const o=V.config.collectionsCollection.split(":");return o.length!==2?[]:(await N.get(o[0]))?.[o[1]]||[]},P=async()=>{const a=(await x()).find(n=>n.id===c.value.collectionId);U(a)},E=(o,a=!1)=>{const n=JSON.parse(JSON.stringify(o));return n.type||="manual",n.status||="draft",delete n.seo,n.subcollections=(n.subcollections||[]).map(d=>{const m={...d,id:a||!d.id?crypto.randomUUID():d.id,type:"manual",status:d.status||"draft",slug:d.slug||""};return delete m.seo,delete m.subcollections,m}),n},l=async()=>{try{let o=E(y,!0),a=o.slug+"-copy",n=2;for(;await u(a);)a=o.slug+"-copy-"+n,n++;o.id=crypto.randomUUID(),o.slug=a,o.status="draft",o.title=o.title+" (copy)";const m=[...await x()||[],o],w=V.config.collectionsCollection.split(":");await N.update(w[0],null,{[w[1]]:m}),f(o.id),z.toast.success("Collection duplicated")}catch{z.toast.error("Failed to duplicate collection")}},t=async()=>{const o=Array.isArray(y.subcollections)&&y.subcollections.length>0;if(await k(o?"Are you sure you want to delete this collection? All subcollections will also be deleted.":"Are you sure you want to delete this collection?"))try{const n=await x()||[];if(n.length===0||!c.value.collectionId)throw new Error("Error loading values");const d=n.filter(w=>w.id!==c.value.collectionId),m=V.config.collectionsCollection.split(":");await N.update(m[0],null,{[m[1]]:d}),f(""),z.toast.success("Collection deleted")}catch{z.toast.error("Failed to delete collection")}},u=async o=>!!(await x()||[]).find(n=>n.slug===o);return e.onMounted(()=>{h.value||P()}),(o,a)=>{const n=e.resolveComponent("Button"),d=e.resolveComponent("MenubarTrigger"),m=e.resolveComponent("MenubarMenu"),w=e.resolveComponent("MenubarItem"),j=e.resolveComponent("MenubarContent"),F=e.resolveComponent("Menubar");return e.openBlock(),e.createElementBlock("div",Le,[e.createElementVNode("div",Oe,[e.createElementVNode("div",Re,[e.createVNode(n,{variant:"ghost",onClick:a[0]||(a[0]=q=>e.unref(f)(""))},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Tag),{class:"size-4"})]),_:1}),e.createVNode(e.unref(_.ChevronRight),{class:"size-3"}),e.createElementVNode("h1",Ge,e.toDisplayString(h.value?"New Collection":e.unref(y).title),1),e.unref(y).status==="published"?(e.openBlock(),e.createElementBlock("span",Je,"Published")):e.unref(y).status==="draft"?(e.openBlock(),e.createElementBlock("span",Xe,"Draft")):e.createCommentVNode("",!0)]),h.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(F,{key:0,class:"bg-sidebar"},{default:e.withCtx(()=>[e.unref(p)("create-collection")?(e.openBlock(),e.createBlock(m,{key:0},{default:e.withCtx(()=>[e.createVNode(d,{onClick:l},{default:e.withCtx(()=>[...a[1]||(a[1]=[e.createTextVNode("Duplicate",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.unref(C)("edit-collection","delete-collection")?(e.openBlock(),e.createBlock(m,{key:1},{default:e.withCtx(()=>[e.createVNode(d,null,{default:e.withCtx(()=>[...a[2]||(a[2]=[e.createTextVNode("More actions",-1)])]),_:1}),e.createVNode(j,null,{default:e.withCtx(()=>[e.unref(p)("delete-collection")?(e.openBlock(),e.createBlock(w,{key:0,variant:"destructive",onClick:t},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Trash),{class:"size-4"}),a[3]||(a[3]=e.createTextVNode(" Delete collection ",-1))]),_:1})):e.createCommentVNode("",!0)]),_:1})]),_:1})):e.createCommentVNode("",!0)]),_:1}))]),e.createElementVNode("div",Ke,[e.createElementVNode("div",Ze,[e.createVNode(ie),e.createVNode(qe)]),e.createElementVNode("div",He,[e.createVNode(pe)])]),e.unref(C)("create-collection","edit-collection")?(e.openBlock(),e.createElementBlock("div",Qe,[e.createElementVNode("div",We,[h.value&&e.unref(p)("create-collection")?(e.openBlock(),e.createBlock(n,{key:0,onClick:e.unref(D),disabled:i.value},{default:e.withCtx(()=>[i.value?(e.openBlock(),e.createBlock(e.unref(_.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(i.value?"Creating":"Create")+" New Collection ",1)]),_:1},8,["onClick","disabled"])):e.unref(p)("edit-collection")?(e.openBlock(),e.createBlock(n,{key:1,onClick:e.unref(D),disabled:i.value},{default:e.withCtx(()=>[i.value?(e.openBlock(),e.createBlock(e.unref(_.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(i.value?"Saving":"Save")+" Changes ",1)]),_:1},8,["onClick","disabled"])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)])}}});exports.default=Ye;