Files
service-finder/frontend_admin/.output/server/chunks/build/edit-DI1cu9GQ.mjs
2026-07-08 08:03:57 +00:00

437 lines
41 KiB
JavaScript

import { defineComponent, computed, ref, reactive, createVNode, resolveDynamicComponent, unref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrInterpolate, ssrRenderList, ssrRenderClass, ssrRenderVNode, ssrRenderAttr, ssrIncludeBooleanAttr, ssrRenderComponent, ssrLooseContain, ssrRenderTeleport, ssrRenderStyle } from 'vue/server-renderer';
import { a as useI18n } from './server.mjs';
import { _ as _sfc_main$2 } from './SharedAddressForm-rsg7wrlQ.mjs';
import { u as useCategories, _ as _sfc_main$3 } from './useCategories-CDBFMe6d.mjs';
import { useRoute, useRouter } from 'vue-router';
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
import '../nitro/nitro.mjs';
import 'node:http';
import 'node:https';
import 'node:events';
import 'node:buffer';
import 'node:fs';
import 'node:path';
import 'node:crypto';
import 'node:url';
import 'pinia';
import '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'unhead/plugins';
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
__name: "TreeNode",
__ssrInlineRender: true,
props: {
node: {},
selectedIds: {},
expandedIds: {}
},
emits: ["toggle", "toggle-expand"],
setup(__props) {
var _a;
let currentLocale = "hu";
try {
const i18n = useI18n();
currentLocale = ((_a = i18n.locale) == null ? void 0 : _a.value) || i18n.locale || "hu";
} catch {
}
function resolveNodeLabel(node) {
var _a2, _b;
if ((_a2 = node.name_i18n) == null ? void 0 : _a2[currentLocale]) {
return node.name_i18n[currentLocale];
}
if ((_b = node.name_i18n) == null ? void 0 : _b.hu) {
return node.name_i18n.hu;
}
if (node.name_hu) {
return node.name_hu;
}
return node.key;
}
return (_ctx, _push, _parent, _attrs) => {
var _a2;
const _component_TreeNode = _sfc_main$1;
_push(`<div${ssrRenderAttrs(_attrs)}><div class="flex items-center gap-2 py-1"><button class="text-slate-500 hover:text-slate-300 transition w-4 h-4 flex items-center justify-center"><svg class="${ssrRenderClass([__props.expandedIds.has(__props.node.id) ? "rotate-90" : "", "w-3 h-3 transition-transform"])}" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></button><label class="flex items-center gap-2 cursor-pointer flex-1"><input type="checkbox"${ssrIncludeBooleanAttr(__props.selectedIds.includes(__props.node.id)) ? " checked" : ""} class="w-4 h-4 rounded border-slate-500 bg-slate-700 text-indigo-500 focus:ring-indigo-500/50"><span class="text-sm text-slate-300">${ssrInterpolate(resolveNodeLabel(__props.node))}</span><span class="text-xs text-slate-500">(Szint ${ssrInterpolate(__props.node.level)})</span></label></div>`);
if (__props.expandedIds.has(__props.node.id) && ((_a2 = __props.node.children) == null ? void 0 : _a2.length)) {
_push(`<div class="ml-6 border-l border-slate-700 pl-3"><!--[-->`);
ssrRenderList(__props.node.children, (child) => {
_push(`<div>`);
_push(ssrRenderComponent(_component_TreeNode, {
node: child,
"selected-ids": __props.selectedIds,
"expanded-ids": __props.expandedIds,
onToggle: (id) => _ctx.$emit("toggle", id),
onToggleExpand: (id) => _ctx.$emit("toggle-expand", id)
}, null, _parent));
_push(`</div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
};
}
});
const _sfc_setup$1 = _sfc_main$1.setup;
_sfc_main$1.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/TreeNode.vue");
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
};
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "edit",
__ssrInlineRender: true,
setup(__props) {
var _a;
const { t } = useI18n();
let currentLocale = "hu";
try {
const i18n = useI18n();
currentLocale = ((_a = i18n.locale) == null ? void 0 : _a.value) || i18n.locale || "hu";
} catch {
}
function resolveNodeLabel(node) {
var _a2, _b;
if ((_a2 = node.name_i18n) == null ? void 0 : _a2[currentLocale]) {
return node.name_i18n[currentLocale];
}
if ((_b = node.name_i18n) == null ? void 0 : _b.hu) {
return node.name_i18n.hu;
}
if (node.name_hu) {
return node.name_hu;
}
return node.key;
}
const VEHICLE_CLASSES = [
{ key: "car", label: t("providers.detail_vehicle_class_car") },
{ key: "motorcycle", label: t("providers.detail_vehicle_class_motorcycle") },
{ key: "truck", label: t("providers.detail_vehicle_class_truck") },
{ key: "hgv", label: t("providers.detail_vehicle_class_hgv") },
{ key: "light_commercial", label: t("providers.detail_vehicle_class_light_commercial") },
{ key: "personal", label: t("providers.detail_vehicle_class_personal") },
{ key: "boat", label: t("providers.detail_vehicle_class_boat") },
{ key: "other", label: t("providers.detail_vehicle_class_other") }
];
const route = useRoute();
useRouter();
const providerId = computed(() => Number(route.params.id));
const { getCategoryName, getCategoryParentId } = useCategories();
const loading = ref(true);
const error = ref(false);
const provider = ref(null);
const saveLoading = ref(false);
const toast = ref(null);
const isRawDataDrawerOpen = ref(false);
const drawerWidth = ref(512);
ref(false);
const activeTab = ref("basic");
const tabs = [
{ key: "basic", label: t("providers.edit_tab_basic"), icon: "svg" },
{ key: "matrix", label: t("providers.edit_tab_matrix"), icon: "svg" },
{ key: "location", label: t("providers.edit_tab_location"), icon: "svg" },
{ key: "hours", label: t("providers.edit_tab_hours"), icon: "svg" }
];
const categoryTree = ref([]);
const treeLoading = ref(false);
const expandedNodes = ref(/* @__PURE__ */ new Set());
const brandInput = ref("");
const propulsionInput = ref("");
const form = reactive({
name: "",
category: "",
contact_phone: "",
contact_email: "",
website: "",
plus_code: "",
status: "active",
supported_vehicle_classes: [],
category_ids: [],
/** CRITICAL: specializations MUST be an object with brands and propulsion arrays */
specializations: {
brands: [],
propulsion: []
},
/** CRITICAL: opening_hours MUST be an object (not null) */
opening_hours: {},
/** CRITICAL: address MUST be a fully initialized object */
address: {
zip: null,
city: null,
street_name: null,
street_type: null,
house_number: null,
stairwell: null,
floor: null,
door: null,
parcel_id: null,
full_address_text: null,
latitude: null,
longitude: null
},
is_always_open: false
});
const DAYS = [
{ key: "monday", label: t("providers.detail_day_monday") },
{ key: "tuesday", label: t("providers.detail_day_tuesday") },
{ key: "wednesday", label: t("providers.detail_day_wednesday") },
{ key: "thursday", label: t("providers.detail_day_thursday") },
{ key: "friday", label: t("providers.detail_day_friday") },
{ key: "saturday", label: t("providers.detail_day_saturday") },
{ key: "sunday", label: t("providers.detail_day_sunday") }
];
const trustScoreBadgeClass = computed(() => {
var _a2;
const score = (_a2 = provider.value) == null ? void 0 : _a2.trust_score;
if (score === null || score === void 0) return "bg-slate-700 text-slate-400";
if (score > 80) return "bg-emerald-500/20 text-emerald-400 border border-emerald-500/30";
if (score > 50) return "bg-amber-500/20 text-amber-400 border border-amber-500/30";
return "bg-rose-500/20 text-rose-400 border border-rose-500/30";
});
const hasChanges = computed(() => {
var _a2, _b;
if (!provider.value) return false;
const p = provider.value;
if (form.name !== p.name) return true;
if (form.category !== (p.category || "")) return true;
if (form.contact_phone !== (p.contact_phone || "")) return true;
if (form.contact_email !== (p.contact_email || "")) return true;
if (form.website !== (p.website || "")) return true;
if (form.plus_code !== (p.plus_code || "")) return true;
const origClasses = p.supported_vehicle_classes || [];
if (JSON.stringify(form.supported_vehicle_classes.slice().sort()) !== JSON.stringify([...origClasses].sort())) return true;
const origCats = p.category_ids || [];
if (JSON.stringify(form.category_ids.slice().sort()) !== JSON.stringify([...origCats].sort())) return true;
const origSpec = p.specializations || {};
const formSpec = form.specializations || {};
if (JSON.stringify(formSpec.brands || []) !== JSON.stringify(origSpec.brands || [])) return true;
if (JSON.stringify(formSpec.propulsion || []) !== JSON.stringify(origSpec.propulsion || [])) return true;
const origHours = p.opening_hours || {};
const formHours = form.opening_hours || {};
const allDays = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
for (const day of allDays) {
const o = origHours[day];
const f = formHours[day];
if (!o && !f) continue;
if (!o || !f) return true;
if (o.open !== f.open || o.close !== f.close) return true;
}
const addr = p.address_detail || {};
const fAddr = form.address;
if (fAddr.zip !== (addr.zip || addr.address_zip || null)) return true;
if (fAddr.city !== (addr.city || null)) return true;
if (fAddr.street_name !== (addr.street_name || addr.address_street_name || null)) return true;
if (fAddr.street_type !== (addr.street_type || addr.address_street_type || null)) return true;
if (fAddr.house_number !== (addr.house_number || addr.address_house_number || null)) return true;
if (fAddr.stairwell !== (addr.stairwell || null)) return true;
if (fAddr.floor !== (addr.floor || null)) return true;
if (fAddr.door !== (addr.door || null)) return true;
if (fAddr.parcel_id !== (addr.parcel_id || null)) return true;
if (fAddr.full_address_text !== (addr.full_address_text || null)) return true;
if (fAddr.latitude !== ((_a2 = addr.latitude) != null ? _a2 : null)) return true;
if (fAddr.longitude !== ((_b = addr.longitude) != null ? _b : null)) return true;
return false;
});
function isCategorySelected(id) {
return form.category_ids.includes(id);
}
function toggleCategory(id) {
const idx = form.category_ids.indexOf(id);
if (idx === -1) {
form.category_ids.push(id);
const parentId = getCategoryParentId(id);
if (parentId !== null && parentId !== void 0 && !form.category_ids.includes(parentId)) {
form.category_ids.push(parentId);
console.log(
"P0 AUTO-PARENT: Child category #" + id + " selected, auto-added parent #" + parentId
);
}
} else {
form.category_ids.splice(idx, 1);
}
}
function toggleTreeNode(id) {
const newSet = new Set(expandedNodes.value);
if (newSet.has(id)) {
newSet.delete(id);
} else {
newSet.add(id);
}
expandedNodes.value = newSet;
}
return (_ctx, _push, _parent, _attrs) => {
var _a2, _b, _c;
const _component_TreeNode = _sfc_main$1;
const _component_SharedAddressForm = _sfc_main$2;
const _component_RawDataViewer = _sfc_main$3;
_push(`<div${ssrRenderAttrs(_attrs)} data-v-1a169f11><div class="mb-8" data-v-1a169f11><button class="inline-flex items-center gap-1.5 text-sm text-slate-400 hover:text-white transition mb-4" data-v-1a169f11><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7" data-v-1a169f11></path></svg> ${ssrInterpolate(_ctx.$t("providers.edit_back"))}</button><h1 class="text-2xl font-bold text-white" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_title"))}</h1><p class="text-slate-400 mt-1" data-v-1a169f11>${ssrInterpolate(((_a2 = provider.value) == null ? void 0 : _a2.name) || _ctx.$t("providers.detail_provider_number", { id: providerId.value }))}</p></div>`);
if (loading.value) {
_push(`<div class="flex items-center justify-center py-20" data-v-1a169f11><div class="text-slate-400 flex items-center gap-3" data-v-1a169f11><svg class="w-5 h-5 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" data-v-1a169f11></path></svg><span data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_loading"))}</span></div></div>`);
} else if (error.value) {
_push(`<div class="bg-rose-500/10 border border-rose-500/30 rounded-xl p-6 mb-8" data-v-1a169f11><p class="text-rose-400" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_error"))}</p><button class="mt-3 text-sm text-rose-300 hover:text-rose-200 underline" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.retry"))}</button></div>`);
} else if (!provider.value) {
_push(`<div class="bg-slate-800 rounded-xl border border-slate-700 p-6" data-v-1a169f11><p class="text-slate-400 text-center py-12" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_not_found"))}</p></div>`);
} else {
_push(`<!--[--><div class="border-b border-slate-700 mb-6 flex items-center justify-between" data-v-1a169f11><nav class="flex gap-6 -mb-px" data-v-1a169f11><!--[-->`);
ssrRenderList(tabs, (tab) => {
_push(`<button class="${ssrRenderClass([activeTab.value === tab.key ? "text-indigo-400 border-indigo-400" : "text-slate-400 border-transparent hover:text-slate-300", "pb-3 text-sm font-medium border-b-2 transition flex items-center gap-2"])}" data-v-1a169f11>`);
ssrRenderVNode(_push, createVNode(resolveDynamicComponent(tab.icon), { class: "w-4 h-4" }, null), _parent);
_push(` ${ssrInterpolate(tab.label)}</button>`);
});
_push(`<!--]--></nav><button class="${ssrRenderClass([isRawDataDrawerOpen.value ? "bg-indigo-600 text-white shadow-lg shadow-indigo-500/25" : "bg-slate-700 text-slate-300 hover:bg-slate-600 hover:text-white", "flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-lg transition"])}" data-v-1a169f11><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" data-v-1a169f11></path></svg> \u{1F916} ${ssrInterpolate(_ctx.$t("providers.edit_raw_data"))}</button></div>`);
if (activeTab.value === "basic") {
_push(`<div class="max-w-3xl" data-v-1a169f11><form data-v-1a169f11><div class="bg-slate-800 rounded-xl border border-slate-700 p-6 mb-6" data-v-1a169f11><h2 class="text-lg font-semibold text-white mb-4" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_section_basic"))}</h2><div class="grid grid-cols-1 md:grid-cols-2 gap-4" data-v-1a169f11><div class="md:col-span-2" data-v-1a169f11><label class="block text-sm font-medium text-slate-300 mb-1" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_field_name"))}</label><input${ssrRenderAttr("value", form.name)} required class="w-full px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-1a169f11></div><div data-v-1a169f11><label class="block text-sm font-medium text-slate-300 mb-1" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_field_category"))}</label><input${ssrRenderAttr("value", form.category)}${ssrRenderAttr("placeholder", _ctx.$t("providers.edit_field_category_placeholder"))} class="w-full px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-1a169f11></div><div data-v-1a169f11><label class="block text-sm font-medium text-slate-300 mb-1" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_field_source"))}</label><div class="w-full px-3 py-2 bg-slate-700/50 border border-slate-600 rounded-lg text-slate-400 text-sm" data-v-1a169f11>${ssrInterpolate(provider.value.source)}</div></div></div></div><div class="bg-slate-800 rounded-xl border border-slate-700 p-6 mb-6" data-v-1a169f11><h2 class="text-lg font-semibold text-white mb-4" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_section_contact"))}</h2><div class="grid grid-cols-1 md:grid-cols-2 gap-4" data-v-1a169f11><div data-v-1a169f11><label class="block text-sm font-medium text-slate-300 mb-1" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_field_phone"))}</label><input${ssrRenderAttr("value", form.contact_phone)}${ssrRenderAttr("placeholder", _ctx.$t("providers.edit_field_phone_placeholder"))} class="w-full px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-1a169f11></div><div data-v-1a169f11><label class="block text-sm font-medium text-slate-300 mb-1" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_field_email"))}</label><input${ssrRenderAttr("value", form.contact_email)} type="email"${ssrRenderAttr("placeholder", _ctx.$t("providers.edit_field_email_placeholder"))} class="w-full px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-1a169f11></div><div class="md:col-span-2" data-v-1a169f11><label class="block text-sm font-medium text-slate-300 mb-1" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_field_website"))}</label><input${ssrRenderAttr("value", form.website)}${ssrRenderAttr("placeholder", _ctx.$t("providers.edit_field_website_placeholder"))} class="w-full px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-1a169f11></div></div></div></form></div>`);
} else {
_push(`<!---->`);
}
if (activeTab.value === "matrix") {
_push(`<div class="max-w-4xl" data-v-1a169f11><div class="bg-slate-800 rounded-xl border border-slate-700 p-6 mb-6" data-v-1a169f11><h2 class="text-lg font-semibold text-white mb-2" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_section_matrix"))}</h2><p class="text-sm text-slate-400 mb-6" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_section_matrix_desc"))}</p><div class="mb-8" data-v-1a169f11><h3 class="text-md font-medium text-white mb-3 flex items-center gap-2" data-v-1a169f11><span class="w-6 h-6 rounded-full bg-indigo-500/20 text-indigo-400 flex items-center justify-center text-xs font-bold" data-v-1a169f11>A</span> ${ssrInterpolate(_ctx.$t("providers.edit_section_vehicle_classes"))}</h3><p class="text-xs text-slate-500 mb-3" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_section_vehicle_classes_desc"))}</p><div class="grid grid-cols-2 md:grid-cols-4 gap-3" data-v-1a169f11><!--[-->`);
ssrRenderList(VEHICLE_CLASSES, (vc) => {
_push(`<label class="${ssrRenderClass([form.supported_vehicle_classes.includes(vc.key) ? "bg-indigo-500/10 border-indigo-500/40 text-indigo-300" : "bg-slate-700/50 border-slate-600 hover:border-slate-500 text-slate-300", "flex items-center gap-3 p-3 rounded-lg border cursor-pointer transition"])}" data-v-1a169f11><input type="checkbox"${ssrRenderAttr("value", vc.key)}${ssrIncludeBooleanAttr(form.supported_vehicle_classes.includes(vc.key)) ? " checked" : ""} class="w-4 h-4 rounded border-slate-500 bg-slate-700 text-indigo-500 focus:ring-indigo-500/50" data-v-1a169f11><span class="text-sm" data-v-1a169f11>${ssrInterpolate(vc.label)}</span></label>`);
});
_push(`<!--]--></div></div><div class="mb-8" data-v-1a169f11><h3 class="text-md font-medium text-white mb-3 flex items-center gap-2" data-v-1a169f11><span class="w-6 h-6 rounded-full bg-emerald-500/20 text-emerald-400 flex items-center justify-center text-xs font-bold" data-v-1a169f11>B</span> ${ssrInterpolate(_ctx.$t("providers.edit_section_expertise_tags"))}</h3><p class="text-xs text-slate-500 mb-3" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_section_expertise_tags_desc"))}</p>`);
if (treeLoading.value) {
_push(`<div class="flex items-center gap-2 text-sm text-slate-400 py-4" data-v-1a169f11><svg class="w-4 h-4 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" data-v-1a169f11></path></svg><span data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_categories_loading"))}</span></div>`);
} else {
_push(`<div class="space-y-1 max-h-96 overflow-y-auto pr-2" data-v-1a169f11><!--[-->`);
ssrRenderList(categoryTree.value, (node) => {
var _a3;
_push(`<div class="ml-0" data-v-1a169f11><div class="flex items-center gap-2 py-1" data-v-1a169f11><button class="text-slate-500 hover:text-slate-300 transition w-4 h-4 flex items-center justify-center" data-v-1a169f11><svg class="${ssrRenderClass([expandedNodes.value.has(node.id) ? "rotate-90" : "", "w-3 h-3 transition-transform"])}" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" data-v-1a169f11></path></svg></button><label class="flex items-center gap-2 cursor-pointer flex-1" data-v-1a169f11><input type="checkbox"${ssrIncludeBooleanAttr(isCategorySelected(node.id)) ? " checked" : ""} class="w-4 h-4 rounded border-slate-500 bg-slate-700 text-indigo-500 focus:ring-indigo-500/50" data-v-1a169f11><span class="text-sm font-medium text-white" data-v-1a169f11>${ssrInterpolate(resolveNodeLabel(node))}</span><span class="text-xs text-slate-500" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_level_label", { level: node.level }))}</span></label></div>`);
if (expandedNodes.value.has(node.id) && ((_a3 = node.children) == null ? void 0 : _a3.length)) {
_push(`<div class="ml-6 border-l border-slate-700 pl-3" data-v-1a169f11><!--[-->`);
ssrRenderList(node.children, (child) => {
_push(`<div data-v-1a169f11>`);
_push(ssrRenderComponent(_component_TreeNode, {
node: child,
"selected-ids": form.category_ids,
"expanded-ids": expandedNodes.value,
onToggle: toggleCategory,
onToggleExpand: toggleTreeNode
}, null, _parent));
_push(`</div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
});
_push(`<!--]--></div>`);
}
if (form.category_ids.length > 0) {
_push(`<div class="mt-4 flex flex-wrap gap-2" data-v-1a169f11><!--[-->`);
ssrRenderList(form.category_ids, (id) => {
_push(`<span class="inline-flex items-center gap-1 px-2 py-1 bg-indigo-500/10 text-indigo-300 rounded-full text-xs" data-v-1a169f11>${ssrInterpolate(unref(getCategoryName)(id))} <button class="hover:text-white transition" data-v-1a169f11><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-v-1a169f11></path></svg></button></span>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<!---->`);
}
_push(`</div><div class="mb-4" data-v-1a169f11><h3 class="text-md font-medium text-white mb-3 flex items-center gap-2" data-v-1a169f11><span class="w-6 h-6 rounded-full bg-amber-500/20 text-amber-400 flex items-center justify-center text-xs font-bold" data-v-1a169f11>C</span> ${ssrInterpolate(_ctx.$t("providers.edit_section_specializations"))}</h3><p class="text-xs text-slate-500 mb-3" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_section_specializations_desc"))}</p><div class="grid grid-cols-1 md:grid-cols-2 gap-6" data-v-1a169f11><div data-v-1a169f11><label class="block text-sm font-medium text-slate-300 mb-1" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_field_brands"))}</label><div class="flex flex-wrap gap-2 mb-2" data-v-1a169f11><!--[-->`);
ssrRenderList(((_b = form.specializations) == null ? void 0 : _b.brands) || [], (brand, idx) => {
_push(`<span class="inline-flex items-center gap-1 px-2 py-1 bg-amber-500/10 text-amber-300 rounded-full text-xs" data-v-1a169f11>${ssrInterpolate(brand)} <button class="hover:text-white transition" data-v-1a169f11><svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-v-1a169f11></path></svg></button></span>`);
});
_push(`<!--]--></div><div class="flex gap-2" data-v-1a169f11><input${ssrRenderAttr("value", brandInput.value)}${ssrRenderAttr("placeholder", _ctx.$t("providers.edit_field_brands_placeholder"))} class="flex-1 px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-1a169f11><button${ssrIncludeBooleanAttr(!brandInput.value.trim()) ? " disabled" : ""} class="px-3 py-2 bg-indigo-600 hover:bg-indigo-500 disabled:bg-indigo-600/50 text-white rounded-lg text-sm transition" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_field_add"))}</button></div></div><div data-v-1a169f11><label class="block text-sm font-medium text-slate-300 mb-1" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_field_propulsion"))}</label><div class="flex flex-wrap gap-2 mb-2" data-v-1a169f11><!--[-->`);
ssrRenderList(((_c = form.specializations) == null ? void 0 : _c.propulsion) || [], (prop, idx) => {
_push(`<span class="inline-flex items-center gap-1 px-2 py-1 bg-emerald-500/10 text-emerald-300 rounded-full text-xs" data-v-1a169f11>${ssrInterpolate(prop)} <button class="hover:text-white transition" data-v-1a169f11><svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-v-1a169f11></path></svg></button></span>`);
});
_push(`<!--]--></div><div class="flex gap-2" data-v-1a169f11><input${ssrRenderAttr("value", propulsionInput.value)}${ssrRenderAttr("placeholder", _ctx.$t("providers.edit_field_propulsion_placeholder"))} class="flex-1 px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-1a169f11><button${ssrIncludeBooleanAttr(!propulsionInput.value.trim()) ? " disabled" : ""} class="px-3 py-2 bg-indigo-600 hover:bg-indigo-500 disabled:bg-indigo-600/50 text-white rounded-lg text-sm transition" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_field_add"))}</button></div></div></div></div></div></div>`);
} else {
_push(`<!---->`);
}
if (activeTab.value === "location") {
_push(`<div class="max-w-3xl" data-v-1a169f11><form data-v-1a169f11>`);
if (form.address) {
_push(ssrRenderComponent(_component_SharedAddressForm, {
modelValue: form.address,
"onUpdate:modelValue": ($event) => form.address = $event
}, null, _parent));
} else {
_push(`<!---->`);
}
_push(`<div class="bg-slate-800 rounded-xl border border-slate-700 p-6 mb-6" data-v-1a169f11><h2 class="text-lg font-semibold text-white mb-4" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_section_location_extra"))}</h2><div class="grid grid-cols-1 md:grid-cols-2 gap-4" data-v-1a169f11><div class="md:col-span-2" data-v-1a169f11><label class="block text-sm font-medium text-slate-300 mb-1" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_field_full_address"))}</label><input${ssrRenderAttr("value", form.address.full_address_text)}${ssrRenderAttr("placeholder", _ctx.$t("providers.edit_field_full_address_placeholder"))} class="w-full px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-1a169f11></div><div class="md:col-span-2" data-v-1a169f11><label class="block text-sm font-medium text-slate-300 mb-1" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_field_plus_code"))}</label><input${ssrRenderAttr("value", form.plus_code)}${ssrRenderAttr("placeholder", _ctx.$t("providers.edit_field_plus_code_placeholder"))} class="w-full px-3 py-2 bg-slate-700 border border-slate-600 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 text-sm" data-v-1a169f11></div></div></div></form></div>`);
} else {
_push(`<!---->`);
}
if (activeTab.value === "hours") {
_push(`<div class="max-w-3xl" data-v-1a169f11><div class="bg-slate-800 rounded-xl border border-slate-700 p-6 mb-6" data-v-1a169f11><h2 class="text-lg font-semibold text-white mb-2" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_section_opening_hours"))}</h2><p class="text-sm text-slate-400 mb-6" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_section_opening_hours_desc"))}</p><div class="mb-6 p-4 rounded-lg border bg-indigo-500/5 border-indigo-500/20" data-v-1a169f11><label class="flex items-center gap-3 cursor-pointer" data-v-1a169f11><input type="checkbox"${ssrIncludeBooleanAttr(Array.isArray(form.is_always_open) ? ssrLooseContain(form.is_always_open, null) : form.is_always_open) ? " checked" : ""} class="w-5 h-5 rounded border-slate-500 bg-slate-700 text-indigo-500 focus:ring-indigo-500/50" data-v-1a169f11><div data-v-1a169f11><span class="text-sm font-medium text-white" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_always_open"))}</span><p class="text-xs text-slate-400 mt-0.5" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_always_open_desc"))}</p></div></label></div><div class="${ssrRenderClass([{ "opacity-50 pointer-events-none": form.is_always_open }, "flex flex-wrap gap-2 mb-6"])}" data-v-1a169f11><button class="px-3 py-1.5 text-xs font-medium rounded-lg border border-emerald-600/30 text-emerald-400 hover:bg-emerald-600/10 transition" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_btn_24_7"))}</button><button class="px-3 py-1.5 text-xs font-medium rounded-lg border border-indigo-600/30 text-indigo-400 hover:bg-indigo-600/10" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_btn_copy_weekdays"))}</button><button class="px-3 py-1.5 text-xs font-medium rounded-lg border border-rose-600/30 text-rose-400 hover:bg-rose-600/10" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_btn_clear_all"))}</button></div><div class="${ssrRenderClass([{ "opacity-50 pointer-events-none": form.is_always_open }, "space-y-3"])}" data-v-1a169f11><!--[-->`);
ssrRenderList(DAYS, (day) => {
var _a3, _b2, _c2, _d, _e, _f, _g;
_push(`<div class="${ssrRenderClass([((_a3 = form.opening_hours) == null ? void 0 : _a3[day.key]) ? "bg-indigo-500/5 border-indigo-500/20" : "bg-slate-700/30 border-slate-600", "flex items-center gap-4 p-4 rounded-lg border"])}" data-v-1a169f11><label class="flex items-center gap-2 w-36 flex-shrink-0 cursor-pointer" data-v-1a169f11><input type="checkbox"${ssrIncludeBooleanAttr(!!((_b2 = form.opening_hours) == null ? void 0 : _b2[day.key])) ? " checked" : ""}${ssrIncludeBooleanAttr(form.is_always_open) ? " disabled" : ""} class="w-4 h-4 rounded border-slate-500 bg-slate-700 text-indigo-500 focus:ring-indigo-500/50" data-v-1a169f11><span class="text-sm font-medium text-white" data-v-1a169f11>${ssrInterpolate(day.label)}</span></label>`);
if ((_c2 = form.opening_hours) == null ? void 0 : _c2[day.key]) {
_push(`<div class="flex items-center gap-2" data-v-1a169f11><input type="time"${ssrRenderAttr("value", ((_e = (_d = form.opening_hours) == null ? void 0 : _d[day.key]) == null ? void 0 : _e.open) || "08:00")}${ssrIncludeBooleanAttr(form.is_always_open) ? " disabled" : ""} class="w-28 px-2 py-1.5 bg-slate-700 border border-slate-600 rounded-lg text-white text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 disabled:opacity-50" data-v-1a169f11><span class="text-slate-500 text-sm" data-v-1a169f11>\u2013</span><input type="time"${ssrRenderAttr("value", ((_g = (_f = form.opening_hours) == null ? void 0 : _f[day.key]) == null ? void 0 : _g.close) || "17:00")}${ssrIncludeBooleanAttr(form.is_always_open) ? " disabled" : ""} class="w-28 px-2 py-1.5 bg-slate-700 border border-slate-600 rounded-lg text-white text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500/50 focus:border-indigo-500 disabled:opacity-50" data-v-1a169f11></div>`);
} else {
_push(`<span class="text-sm text-slate-500 italic" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_closed"))}</span>`);
}
_push(`</div>`);
});
_push(`<!--]--></div></div></div>`);
} else {
_push(`<!---->`);
}
_push(`<div class="sticky bottom-0 bg-slate-900/90 backdrop-blur-sm border-t border-slate-700 -mx-6 px-6 py-4 mt-8" data-v-1a169f11><div class="flex items-center justify-between max-w-4xl" data-v-1a169f11><div class="text-sm text-slate-400" data-v-1a169f11>`);
if (hasChanges.value) {
_push(`<span class="text-amber-400" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_has_changes"))}</span>`);
} else {
_push(`<span class="text-slate-500" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_no_changes"))}</span>`);
}
_push(`</div><div class="flex gap-3" data-v-1a169f11><button class="px-4 py-2 text-sm text-slate-400 hover:text-white transition" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_cancel"))}</button><button${ssrIncludeBooleanAttr(saveLoading.value || !hasChanges.value) ? " disabled" : ""} class="px-6 py-2 bg-indigo-600 hover:bg-indigo-500 disabled:bg-indigo-600/50 text-white rounded-lg text-sm font-medium transition flex items-center gap-2" data-v-1a169f11>`);
if (saveLoading.value) {
_push(`<svg class="w-4 h-4 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" data-v-1a169f11></path></svg>`);
} else {
_push(`<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" data-v-1a169f11></path></svg>`);
}
_push(` ${ssrInterpolate(_ctx.$t("providers.edit_save"))}</button></div></div></div><!--]-->`);
}
if (toast.value) {
_push(`<div class="${ssrRenderClass([toast.value.type === "success" ? "bg-emerald-600 text-white" : "bg-rose-600 text-white", "fixed top-4 right-4 z-50 px-4 py-3 rounded-lg shadow-xl text-sm font-medium transition-all duration-300"])}" data-v-1a169f11>${ssrInterpolate(toast.value.message)}</div>`);
} else {
_push(`<!---->`);
}
ssrRenderTeleport(_push, (_push2) => {
var _a3, _b2, _c2, _d, _e, _f, _g;
if (isRawDataDrawerOpen.value) {
_push2(`<div class="fixed inset-y-0 right-0 bg-slate-900 border-l border-slate-700 shadow-2xl z-40 overflow-y-auto" style="${ssrRenderStyle({ width: drawerWidth.value + "px", minWidth: "320px", maxWidth: "80vw" })}" data-v-1a169f11><div class="absolute left-0 top-0 bottom-0 w-2 cursor-col-resize hover:bg-primary-500/50 active:bg-primary-500/70 transition-colors z-50 group" data-v-1a169f11><div class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 w-0.5 h-8 rounded-full bg-slate-600 group-hover:bg-primary-400 transition-colors" data-v-1a169f11></div></div><div class="sticky top-0 z-10 bg-slate-900/95 backdrop-blur-sm border-b border-slate-700 px-6 py-4 flex items-center justify-between" data-v-1a169f11><div class="flex items-center gap-2" data-v-1a169f11><svg class="w-5 h-5 text-indigo-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" data-v-1a169f11></path></svg><h2 class="text-lg font-semibold text-white" data-v-1a169f11>\u{1F916} ${ssrInterpolate(_ctx.$t("providers.edit_raw_data"))}</h2></div><button class="p-1.5 rounded-lg text-slate-400 hover:text-white hover:bg-slate-700 transition" data-v-1a169f11><svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-v-1a169f11></path></svg></button></div><div class="p-6 space-y-6" data-v-1a169f11><div class="flex flex-wrap gap-3" data-v-1a169f11><div class="inline-flex items-center gap-1.5 px-3 py-1.5 bg-slate-800 rounded-lg text-xs font-medium" data-v-1a169f11><span class="text-slate-400" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_source_label"))}</span><code class="text-cyan-300 font-mono" data-v-1a169f11>${ssrInterpolate(((_a3 = provider.value) == null ? void 0 : _a3.source) || "\u2014")}</code></div><div class="${ssrRenderClass([trustScoreBadgeClass.value, "inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium"])}" data-v-1a169f11><span class="text-slate-400" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_trust_score_label"))}</span><span class="font-semibold" data-v-1a169f11>${ssrInterpolate((_c2 = (_b2 = provider.value) == null ? void 0 : _b2.trust_score) != null ? _c2 : "\u2014")}</span></div></div><div data-v-1a169f11><h3 class="text-sm font-medium text-slate-300 mb-3" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_raw_data_title"))}</h3><div class="bg-slate-800/50 rounded-lg border border-slate-700 p-4 overflow-x-auto" data-v-1a169f11>`);
_push2(ssrRenderComponent(_component_RawDataViewer, {
data: (_d = provider.value) == null ? void 0 : _d.raw_data
}, null, _parent));
_push2(`</div></div>`);
if (((_e = provider.value) == null ? void 0 : _e.audit_trail) && Object.keys(provider.value.audit_trail).length > 0) {
_push2(`<div data-v-1a169f11><h3 class="text-sm font-medium text-slate-300 mb-3" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_audit_trail_title"))}</h3><div class="bg-slate-800/50 rounded-lg border border-slate-700 p-4 overflow-x-auto" data-v-1a169f11>`);
_push2(ssrRenderComponent(_component_RawDataViewer, {
data: (_f = provider.value) == null ? void 0 : _f.audit_trail
}, null, _parent));
_push2(`</div></div>`);
} else {
_push2(`<!---->`);
}
if ((_g = provider.value) == null ? void 0 : _g.rejection_reason) {
_push2(`<div class="flex items-start gap-3 p-4 bg-rose-500/10 border border-rose-500/30 rounded-lg" data-v-1a169f11><svg class="w-5 h-5 text-rose-400 flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1a169f11><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z" data-v-1a169f11></path></svg><div data-v-1a169f11><p class="text-sm font-medium text-rose-300" data-v-1a169f11>${ssrInterpolate(_ctx.$t("providers.edit_rejection_reason_title"))}</p><p class="text-sm text-rose-200/70 mt-0.5" data-v-1a169f11>${ssrInterpolate(provider.value.rejection_reason)}</p></div></div>`);
} else {
_push2(`<!---->`);
}
_push2(`</div></div>`);
} else {
_push2(`<!---->`);
}
}, "body", false, _parent);
_push(`</div>`);
};
}
});
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/providers/[id]/edit.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
const edit = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1a169f11"]]);
export { edit as default };
//# sourceMappingURL=edit-DI1cu9GQ.mjs.map