import { defineComponent, ref, computed, onMounted, nextTick, watch, onUnmounted, resolveComponent, unref, mergeProps, withCtx, createVNode, createTextVNode, resolveDynamicComponent, openBlock, createBlock, withDirectives, vModelCheckbox, toDisplayString, createCommentVNode, Fragment, renderList, Teleport, withModifiers, useSSRContext } from "vue";
import { ssrRenderComponent, ssrIncludeBooleanAttr, ssrRenderClass, ssrRenderVNode, ssrLooseContain, ssrRenderStyle, ssrInterpolate, ssrRenderList, ssrRenderTeleport, ssrRenderAttrs } from "vue/server-renderer";
import { useRoute } from "vue-router";
import { t as takeover, g as getApiBase, w as ws, b as auth, s as scrollbarOptions, T as THEME_ICONS, f as useTheme, h as useDevFlags, _ as _export_sfc } from "../main.mjs";
import { OverlayScrollbarsComponent } from "overlayscrollbars-vue";
import { HomeIcon, BoltIcon, SignalSlashIcon, LinkIcon, XMarkIcon, CameraIcon, LockClosedIcon } from "@heroicons/vue/20/solid";
import "@unhead/vue/server";
import "pinia";
import "@heroicons/vue/24/outline";
import "overlayscrollbars";
const SESSION_KEY = "nyx_session";
const _sfc_main = /* @__PURE__ */ defineComponent({
...{ name: "DevView" },
__name: "DevView",
__ssrInlineRender: true,
setup(__props) {
const route = useRoute();
const { isLoggedIn } = auth;
const { connected, send: wsSend, onMessage } = ws;
const { theme, setTheme } = useTheme();
const devFlags = useDevFlags();
const takeoverToken = takeover.token;
const captureActive = takeover.capture.isActive;
const breakoutReq = takeover.breakout.pendingRequest;
function handleInitTakeover() {
takeover.init();
}
function handleRevoke() {
takeover.revoke();
}
function confirmBreakout() {
breakoutReq.value?.resolve(true);
}
function denyBreakout() {
breakoutReq.value?.resolve(false);
}
async function handleToggleCapture() {
if (captureActive.value) {
takeover.capture.disable();
} else {
await takeover.capture.enable();
}
}
const SESSION_TOKEN = () => localStorage.getItem(SESSION_KEY) ?? "";
const systemRequests = ref([]);
const systemGranted = ref(null);
async function fetchPendingSystemRequests() {
try {
const res = await fetch(`${getApiBase()}/api/system/pending`, {
headers: { Authorization: `Bearer ${SESSION_TOKEN()}` }
});
if (res.ok) {
const { pending } = await res.json();
systemRequests.value = pending ?? [];
}
} catch {
}
}
async function approveSystemRequest(requestId) {
const res = await fetch(`${getApiBase()}/api/system/approve`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ sessionToken: SESSION_TOKEN(), requestId })
});
if (res.ok) systemRequests.value = systemRequests.value.filter((r) => r.requestId !== requestId);
}
async function denySystemRequest(requestId) {
await fetch(`${getApiBase()}/api/system/deny`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ sessionToken: SESSION_TOKEN(), requestId })
});
systemRequests.value = systemRequests.value.filter((r) => r.requestId !== requestId);
}
const counterValue = ref(Math.floor(Math.random() * 11));
const counterBusy = ref(false);
const counterMuted = ref(true);
const challengeMessage = ref("");
const challengeTimer = ref(0);
let challengeInterval = null;
let challengeGen = 0;
const actionPicker = ref({ title: "", options: [] });
const actionPickerBusy = ref(false);
async function pickAction(id) {
actionPickerBusy.value = true;
actionPicker.value = { title: "", options: [] };
try {
await fetch(`${getApiBase()}/api/dev/counter`, {
method: "POST",
headers: { "Content-Type": "application/json", Authorization: `Bearer ${SESSION_TOKEN()}` },
body: JSON.stringify({ action: "pick", pick: id })
});
} catch {
}
actionPickerBusy.value = false;
}
async function counterAction(action) {
counterMuted.value = true;
challengeGen++;
if (challengeInterval) {
clearInterval(challengeInterval);
challengeInterval = null;
}
challengeMessage.value = "";
challengeTimer.value = 0;
counterBusy.value = true;
try {
await fetch(`${getApiBase()}/api/dev/counter`, {
method: "POST",
headers: { "Content-Type": "application/json", Authorization: `Bearer ${SESSION_TOKEN()}` },
body: JSON.stringify({ action })
});
} catch {
}
counterBusy.value = false;
}
const loading = ref(false);
const statsError = ref("");
const stats = ref(null);
function fmt(v) {
if (v === null || v === void 0) return "—";
return v.toFixed(2);
}
const usedPct = computed(() => {
const t = stats.value?.credits?.total;
const u = stats.value?.credits?.used;
if (!t) return 0;
return Math.min(100, u / t * 100);
});
function load() {
if (!connected.value) return;
loading.value = true;
statsError.value = "";
wsSend({ type: "stats_request" });
}
const discoing = ref(false);
const discoChatting = ref(false);
function disco() {
if (!connected.value) return;
discoing.value = true;
wsSend({ type: "disco_request" });
setTimeout(() => {
discoing.value = false;
}, 2e3);
}
function discoChat() {
if (!connected.value) return;
discoChatting.value = true;
wsSend({ type: "disco_chat_request" });
setTimeout(() => {
discoChatting.value = false;
}, 3e3);
}
let unsubscribeWs = null;
let refreshInterval;
onMounted(() => {
fetchPendingSystemRequests();
unsubscribeWs = onMessage((data) => {
if (data.type === "system_access_request") {
if (!systemRequests.value.find((r) => r.requestId === data.requestId))
systemRequests.value.push(data);
return;
}
if (data.type === "counter_update") {
counterValue.value = data.value ?? counterValue.value;
return;
}
if (data.type === "counter_challenge") {
challengeMessage.value = data.message || "DECIDE NOW!";
challengeTimer.value = data.timeout || 30;
counterMuted.value = false;
nextTick(() => {
const el = document.querySelector(".counter-widget");
if (el) {
el.classList.remove("flash");
void el.offsetWidth;
el.classList.add("flash");
el.scrollIntoView({ behavior: "smooth", block: "center" });
}
});
if (challengeInterval) clearInterval(challengeInterval);
const cid = ++challengeGen;
challengeInterval = setInterval(() => {
if (cid !== challengeGen) {
clearInterval(challengeInterval);
return;
}
challengeTimer.value--;
if (challengeTimer.value <= 0) {
if (challengeInterval) {
clearInterval(challengeInterval);
challengeInterval = null;
}
counterMuted.value = true;
challengeMessage.value = "";
fetch(`${getApiBase()}/api/dev/counter`, {
method: "POST",
headers: { "Content-Type": "application/json", Authorization: `Bearer ${SESSION_TOKEN()}` },
body: JSON.stringify({ action: "timeout" })
});
}
}, 1e3);
return;
}
if (data.type === "confetti") {
const container = document.createElement("div");
container.className = "confetti-container";
const colors = ["#ff6b6b", "#ffd93d", "#6bcb77", "#4d96ff", "#ff922b", "#cc5de8"];
for (let i = 0; i < 60; i++) {
const piece = document.createElement("div");
piece.className = "confetti-piece";
piece.style.left = Math.random() * 100 + "%";
piece.style.background = colors[Math.floor(Math.random() * colors.length)];
piece.style.animationDelay = Math.random() * 2 + "s";
piece.style.borderRadius = Math.random() > 0.5 ? "50%" : "0";
container.appendChild(piece);
}
document.body.appendChild(container);
setTimeout(() => container.remove(), 5e3);
return;
}
if (data.type === "action_picker") {
actionPicker.value = { title: data.title || "Next?", options: data.options || [] };
actionPickerBusy.value = false;
return;
}
if (data.type === "counter_mute") {
counterMuted.value = true;
challengeMessage.value = data.message || "";
if (challengeInterval) {
clearInterval(challengeInterval);
challengeInterval = null;
}
challengeTimer.value = 0;
return;
}
if (data.type === "stats") {
loading.value = false;
if (data.error) {
statsError.value = data.error;
} else {
stats.value = data;
}
}
});
const startRefresh = () => {
load();
refreshInterval = setInterval(load, 15e3);
};
if (connected.value) {
startRefresh();
} else {
const stop = watch(connected, (val) => {
if (val) {
stop();
startRefresh();
}
});
}
});
watch(() => route.name, (name, prev) => {
if (name === "dev" && !refreshInterval && connected.value) {
load();
refreshInterval = setInterval(load, 15e3);
} else if (prev === "dev" && name !== "dev" && refreshInterval) {
clearInterval(refreshInterval);
refreshInterval = void 0;
}
});
onUnmounted(() => {
if (unsubscribeWs) unsubscribeWs();
if (refreshInterval) clearInterval(refreshInterval);
});
return (_ctx, _push, _parent, _attrs) => {
const _component_RouterLink = resolveComponent("RouterLink");
if (unref(isLoggedIn)) {
_push(ssrRenderComponent(unref(OverlayScrollbarsComponent), mergeProps({
class: "dev-view",
options: unref(scrollbarOptions),
element: "div"
}, _attrs), {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`
Theme
Takeover
`);
if (!unref(takeoverToken)) {
_push2(`
`);
} else {
_push2(`
${ssrInterpolate(unref(takeoverToken))}
`);
}
_push2(`
`);
if (systemRequests.value.length > 0 || systemGranted.value) {
_push2(`
System Access
`);
if (systemGranted.value) {
_push2(`
Access granted to ${ssrInterpolate(systemGranted.value.user)} — active until session end.
`);
} else {
_push2(``);
}
_push2(``);
ssrRenderList(systemRequests.value, (req) => {
_push2(`
${ssrInterpolate(req.userCode)}
${ssrInterpolate(req.description)}
expires in ${ssrInterpolate(Math.max(0, Math.ceil((req.expiresAt - Date.now()) / 1e3)))}s
`);
});
_push2(`
`);
} else {
_push2(``);
}
_push2(`
MCP Counter
${ssrInterpolate(counterValue.value)}
`);
if (challengeMessage.value) {
_push2(`
${ssrInterpolate(challengeMessage.value)}`);
if (challengeTimer.value > 0) {
_push2(`${ssrInterpolate(challengeTimer.value)}s`);
} else {
_push2(``);
}
_push2(`
`);
} else {
_push2(`
Waiting for Claude...
`);
}
_push2(`
`);
if (actionPicker.value.title) {
_push2(`
${ssrInterpolate(actionPicker.value.title)}
`);
ssrRenderList(actionPicker.value.options, (opt, i) => {
_push2(``);
});
_push2(`
`);
} else {
_push2(``);
}
_push2(`
OpenRouter Credits
`);
if (loading.value && !stats.value) {
_push2(`
Loading…
`);
} else if (statsError.value) {
_push2(`
${ssrInterpolate(statsError.value)}
`);
} else if (stats.value) {
_push2(`
`);
} else {
_push2(``);
}
_push2(`
`);
if (stats.value) {
_push2(`
Agents
| Agent | Model | Context | Prompt / 1M | Completion / 1M |
`);
ssrRenderList(stats.value.agents, (a) => {
_push2(`| ${ssrInterpolate(a.id)} | ${ssrInterpolate(a.modelId || a.model)} | ${ssrInterpolate(a.contextLength ? (a.contextLength / 1e3).toFixed(0) + "k" : "—")} | ${ssrInterpolate(a.promptPrice !== null ? "$" + a.promptPrice.toFixed(3) : "—")} | ${ssrInterpolate(a.completionPrice !== null ? "$" + a.completionPrice.toFixed(3) : "—")} |
`);
});
_push2(`
`);
} else {
_push2(``);
}
_push2(`
`);
ssrRenderTeleport(_push2, (_push3) => {
if (unref(breakoutReq)) {
_push3(`Open Breakout
Name: ${ssrInterpolate(unref(breakoutReq).name)}
Size: ${ssrInterpolate(unref(breakoutReq).preset)}
${ssrInterpolate(unref(breakoutReq).nonce)}
`);
} else {
_push3(``);
}
}, "body", false, _parent2);
} else {
return [
createVNode("div", { class: "page" }, [
createVNode("div", { class: "dev-header" }, [
createVNode("h2", null, "/dev"),
createVNode("div", { class: "dev-actions" }, [
createVNode(_component_RouterLink, {
to: "/agents",
class: "dev-disco-btn"
}, {
default: withCtx(() => [
createVNode(unref(HomeIcon), { class: "w-4 h-4 inline" }),
createTextVNode(" Home")
]),
_: 1
}),
createVNode("button", {
class: "dev-disco-btn",
onClick: disco,
disabled: discoing.value
}, [
createVNode(unref(BoltIcon), { class: "w-4 h-4 inline" }),
createTextVNode(" Disconnect Gateway")
], 8, ["disabled"]),
createVNode("button", {
class: "dev-disco-btn",
onClick: discoChat,
disabled: discoChatting.value
}, [
createVNode(unref(SignalSlashIcon), { class: "w-4 h-4 inline" }),
createTextVNode(" Disconnect Chat")
], 8, ["disabled"])
])
]),
createVNode("div", { class: "content" }, [
createVNode("div", { class: "dev-section" }, [
createVNode("h3", null, "Theme"),
createVNode("div", { class: "dev-actions" }, [
createVNode("button", {
class: ["dev-theme-btn", { active: unref(theme) === "loop42" }],
onClick: ($event) => unref(setTheme)("loop42")
}, [
(openBlock(), createBlock(resolveDynamicComponent(unref(THEME_ICONS).loop42), { class: "w-4 h-4 inline" })),
createTextVNode(" loop42")
], 10, ["onClick"]),
createVNode("button", {
class: ["dev-theme-btn", { active: unref(theme) === "titan" }],
onClick: ($event) => unref(setTheme)("titan")
}, [
(openBlock(), createBlock(resolveDynamicComponent(unref(THEME_ICONS).titan), { class: "w-4 h-4 inline" })),
createTextVNode(" Titan")
], 10, ["onClick"]),
createVNode("button", {
class: ["dev-theme-btn", { active: unref(theme) === "eras" }],
onClick: ($event) => unref(setTheme)("eras")
}, [
(openBlock(), createBlock(resolveDynamicComponent(unref(THEME_ICONS).eras), { class: "w-4 h-4 inline" })),
createTextVNode(" ERAS")
], 10, ["onClick"])
])
]),
createVNode("div", { class: "dev-section" }, [
createVNode("h3", null, "Dev Flags"),
createVNode("div", { class: "dev-flags" }, [
createVNode("label", { class: "dev-flag" }, [
withDirectives(createVNode("input", {
type: "checkbox",
"onUpdate:modelValue": ($event) => unref(devFlags).showGrid = $event
}, null, 8, ["onUpdate:modelValue"]), [
[vModelCheckbox, unref(devFlags).showGrid]
]),
createVNode("span", null, "showGrid")
]),
createVNode("label", { class: "dev-flag" }, [
withDirectives(createVNode("input", {
type: "checkbox",
"onUpdate:modelValue": ($event) => unref(devFlags).showDebugInfo = $event
}, null, 8, ["onUpdate:modelValue"]), [
[vModelCheckbox, unref(devFlags).showDebugInfo]
]),
createVNode("span", null, "showDebugInfo")
]),
createVNode("label", { class: "dev-flag" }, [
withDirectives(createVNode("input", {
type: "checkbox",
"onUpdate:modelValue": ($event) => unref(devFlags).showHud = $event
}, null, 8, ["onUpdate:modelValue"]), [
[vModelCheckbox, unref(devFlags).showHud]
]),
createVNode("span", null, "showHud")
])
])
]),
createVNode("div", { class: "dev-section" }, [
createVNode("h3", null, "Takeover"),
!unref(takeoverToken) ? (openBlock(), createBlock("div", {
key: 0,
class: "dev-actions"
}, [
createVNode("button", {
class: "dev-theme-btn",
onClick: handleInitTakeover
}, [
createVNode(unref(LinkIcon), { class: "w-4 h-4 inline" }),
createTextVNode(" Enable Takeover")
])
])) : (openBlock(), createBlock("div", {
key: 1,
class: "dev-actions",
style: { "gap": "var(--space-page)", "align-items": "center", "flex-wrap": "wrap" }
}, [
createVNode("code", { class: "takeover-token" }, toDisplayString(unref(takeoverToken)), 1),
createVNode("button", {
class: "dev-theme-btn active",
onClick: handleRevoke
}, [
createVNode(unref(XMarkIcon), { class: "w-4 h-4 inline" }),
createTextVNode(" Revoke")
]),
createVNode("button", {
class: ["dev-theme-btn", { active: unref(captureActive) }],
onClick: handleToggleCapture
}, [
createVNode(unref(CameraIcon), { class: "w-4 h-4 inline" }),
createTextVNode(" " + toDisplayString(unref(captureActive) ? "Capture ON" : "Enable Capture"), 1)
], 2)
]))
]),
systemRequests.value.length > 0 || systemGranted.value ? (openBlock(), createBlock("div", {
key: 0,
class: "dev-section"
}, [
createVNode("h3", null, "System Access"),
systemGranted.value ? (openBlock(), createBlock("div", {
key: 0,
class: "dev-system-granted"
}, " Access granted to " + toDisplayString(systemGranted.value.user) + " — active until session end. ", 1)) : createCommentVNode("", true),
(openBlock(true), createBlock(Fragment, null, renderList(systemRequests.value, (req) => {
return openBlock(), createBlock("div", {
key: req.requestId,
class: "dev-system-request"
}, [
createVNode("div", { class: "dev-system-code" }, toDisplayString(req.userCode), 1),
createVNode("div", { class: "dev-system-desc" }, toDisplayString(req.description), 1),
createVNode("div", { class: "dev-system-expiry" }, "expires in " + toDisplayString(Math.max(0, Math.ceil((req.expiresAt - Date.now()) / 1e3))) + "s", 1),
createVNode("div", {
class: "dev-actions",
style: { "margin-top": "8px" }
}, [
createVNode("button", {
class: "dev-theme-btn",
onClick: ($event) => denySystemRequest(req.requestId)
}, "Deny", 8, ["onClick"]),
createVNode("button", {
class: "dev-theme-btn active",
onClick: ($event) => approveSystemRequest(req.requestId)
}, "Approve", 8, ["onClick"])
])
]);
}), 128))
])) : createCommentVNode("", true),
createVNode("div", { class: "dev-section" }, [
createVNode("h3", null, "MCP Counter"),
createVNode("div", {
class: ["counter-widget", { muted: counterMuted.value }]
}, [
createVNode("div", { class: "counter-controls" }, [
createVNode("button", {
class: "counter-btn",
onClick: ($event) => counterAction("decrement"),
disabled: counterMuted.value || counterBusy.value
}, "−", 8, ["onClick", "disabled"]),
createVNode("span", {
class: "counter-value",
id: "mcp-counter-value"
}, toDisplayString(counterValue.value), 1),
createVNode("button", {
class: "counter-btn",
onClick: ($event) => counterAction("increment"),
disabled: counterMuted.value || counterBusy.value
}, "+", 8, ["onClick", "disabled"])
]),
challengeMessage.value ? (openBlock(), createBlock("div", {
key: 0,
class: "counter-challenge"
}, [
createVNode("span", { class: "counter-message" }, toDisplayString(challengeMessage.value), 1),
challengeTimer.value > 0 ? (openBlock(), createBlock("span", {
key: 0,
class: "counter-timer"
}, toDisplayString(challengeTimer.value) + "s", 1)) : createCommentVNode("", true)
])) : (openBlock(), createBlock("div", {
key: 1,
class: "counter-hint"
}, "Waiting for Claude..."))
], 2)
]),
actionPicker.value.title ? (openBlock(), createBlock("div", {
key: 1,
class: "dev-section"
}, [
createVNode("h3", null, toDisplayString(actionPicker.value.title), 1),
createVNode("div", { class: "action-picker" }, [
(openBlock(true), createBlock(Fragment, null, renderList(actionPicker.value.options, (opt, i) => {
return openBlock(), createBlock("button", {
key: i,
class: "action-pick-btn",
disabled: actionPickerBusy.value,
onClick: ($event) => pickAction(opt.id)
}, toDisplayString(opt.label), 9, ["disabled", "onClick"]);
}), 128))
])
])) : createCommentVNode("", true),
createVNode("div", { class: "dev-section" }, [
createVNode("h3", null, "OpenRouter Credits"),
loading.value && !stats.value ? (openBlock(), createBlock("div", {
key: 0,
class: "dev-loading"
}, "Loading…")) : statsError.value ? (openBlock(), createBlock("div", {
key: 1,
class: "dev-error"
}, toDisplayString(statsError.value), 1)) : stats.value ? (openBlock(), createBlock("div", {
key: 2,
class: "credits-widget"
}, [
createVNode("div", { class: "credits-bar-track" }, [
createVNode("div", {
class: "credits-bar-fill",
style: { width: usedPct.value + "%" }
}, null, 4)
]),
createVNode("div", { class: "credits-row" }, [
createVNode("div", { class: "credits-stat" }, [
createVNode("span", { class: "credits-label" }, "Used"),
createVNode("span", { class: "credits-amount credits-used" }, "$" + toDisplayString(fmt(stats.value.credits.used)), 1)
]),
createVNode("div", { class: "credits-stat" }, [
createVNode("span", { class: "credits-label" }, "Remaining"),
createVNode("span", { class: "credits-amount credits-remaining" }, "$" + toDisplayString(fmt(stats.value.credits.remaining)), 1)
]),
createVNode("div", { class: "credits-stat" }, [
createVNode("span", { class: "credits-label" }, "Total"),
createVNode("span", { class: "credits-amount" }, "$" + toDisplayString(fmt(stats.value.credits.total)), 1)
])
])
])) : createCommentVNode("", true)
]),
stats.value ? (openBlock(), createBlock("div", {
key: 2,
class: "dev-section"
}, [
createVNode("h3", null, "Agents"),
createVNode("div", { class: "dev-table-wrap" }, [
createVNode("table", { class: "dev-table" }, [
createVNode("thead", null, [
createVNode("tr", null, [
createVNode("th", null, "Agent"),
createVNode("th", null, "Model"),
createVNode("th", null, "Context"),
createVNode("th", null, "Prompt / 1M"),
createVNode("th", null, "Completion / 1M")
])
]),
createVNode("tbody", null, [
(openBlock(true), createBlock(Fragment, null, renderList(stats.value.agents, (a) => {
return openBlock(), createBlock("tr", {
key: a.id
}, [
createVNode("td", { class: "agent-id" }, toDisplayString(a.id), 1),
createVNode("td", null, [
createVNode("code", null, toDisplayString(a.modelId || a.model), 1)
]),
createVNode("td", null, toDisplayString(a.contextLength ? (a.contextLength / 1e3).toFixed(0) + "k" : "—"), 1),
createVNode("td", null, toDisplayString(a.promptPrice !== null ? "$" + a.promptPrice.toFixed(3) : "—"), 1),
createVNode("td", null, toDisplayString(a.completionPrice !== null ? "$" + a.completionPrice.toFixed(3) : "—"), 1)
]);
}), 128))
])
])
])
])) : createCommentVNode("", true)
])
]),
(openBlock(), createBlock(Teleport, { to: "body" }, [
unref(breakoutReq) ? (openBlock(), createBlock("div", {
key: 0,
class: "breakout-modal-overlay",
onClick: withModifiers(denyBreakout, ["self"])
}, [
createVNode("div", { class: "breakout-modal" }, [
createVNode("h3", null, "Open Breakout"),
createVNode("p", null, [
createTextVNode("Name: "),
createVNode("strong", null, toDisplayString(unref(breakoutReq).name), 1)
]),
createVNode("p", null, [
createTextVNode("Size: "),
createVNode("strong", null, toDisplayString(unref(breakoutReq).preset), 1)
]),
createVNode("p", { class: "breakout-nonce" }, toDisplayString(unref(breakoutReq).nonce), 1),
createVNode("div", { class: "breakout-modal-actions" }, [
createVNode("button", {
class: "dev-theme-btn",
onClick: denyBreakout
}, "Cancel"),
createVNode("button", {
class: "dev-theme-btn active",
onClick: confirmBreakout
}, "Confirm")
])
])
])) : createCommentVNode("", true)
]))
];
}
}),
_: 1
}, _parent));
} else {
_push(``);
_push(ssrRenderComponent(unref(LockClosedIcon), { class: "w-5 h-5 inline" }, null, _parent));
_push(` Not logged in
`);
_push(ssrRenderComponent(_component_RouterLink, { to: "/login" }, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`Sign in →`);
} else {
return [
createTextVNode("Sign in →")
];
}
}),
_: 1
}, _parent));
_push(`
`);
}
};
}
});
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/views/DevView.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
const DevView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6fcff79f"]]);
export {
DevView as default
};