241 lines
14 KiB
JavaScript
241 lines
14 KiB
JavaScript
import { _ as __nuxt_component_0 } from './nuxt-link.mjs';
|
|
import { defineComponent, ref, computed, withCtx, createTextVNode, createVNode, toDisplayString, useSSRContext } from 'file://D:/doc/workspace/web3/node_modules/vue/index.mjs';
|
|
import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate, ssrRenderList, ssrRenderClass, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual } from 'file://D:/doc/workspace/web3/node_modules/vue/server-renderer/index.mjs';
|
|
import { useI18n } from 'file://D:/doc/workspace/web3/node_modules/vue-i18n/dist/vue-i18n.mjs';
|
|
import { _ as _sfc_main$1 } from './HeroBanner.vue2.mjs';
|
|
import 'file://D:/doc/workspace/web3/node_modules/ufo/dist/index.mjs';
|
|
import './server.mjs';
|
|
import 'file://D:/doc/workspace/web3/node_modules/hookable/dist/index.mjs';
|
|
import 'file://D:/doc/workspace/web3/node_modules/unctx/dist/index.mjs';
|
|
import 'file://D:/doc/workspace/web3/node_modules/h3/dist/index.mjs';
|
|
import 'file://D:/doc/workspace/web3/node_modules/vue-router/dist/vue-router.node.mjs';
|
|
import 'file://D:/doc/workspace/web3/node_modules/radix3/dist/index.mjs';
|
|
import 'file://D:/doc/workspace/web3/node_modules/defu/dist/defu.mjs';
|
|
|
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
__name: "cases",
|
|
__ssrInlineRender: true,
|
|
setup(__props) {
|
|
const { t } = useI18n();
|
|
const industries = [
|
|
t("cases.industries.finance"),
|
|
t("cases.industries.ecommerce"),
|
|
t("cases.industries.manufacturing"),
|
|
t("cases.industries.healthcare"),
|
|
t("cases.industries.education"),
|
|
t("cases.industries.government"),
|
|
t("cases.industries.media"),
|
|
t("cases.industries.logistics")
|
|
];
|
|
const selectedIndustries = ref([]);
|
|
const sortBy = ref("default");
|
|
const selectedCase = ref(null);
|
|
const caseStudies = [
|
|
{
|
|
titleKey: "cases.caseStudies.ecommerce.title",
|
|
industry: "cases.caseStudies.ecommerce.industry",
|
|
date: "2023-05-15",
|
|
summaryKey: "cases.caseStudies.ecommerce.summary",
|
|
backgroundKey: "cases.caseStudies.ecommerce.background",
|
|
challenges: [
|
|
"cases.caseStudies.ecommerce.challenges[0]",
|
|
"cases.caseStudies.ecommerce.challenges[1]",
|
|
"cases.caseStudies.ecommerce.challenges[2]",
|
|
"cases.caseStudies.ecommerce.challenges[3]"
|
|
],
|
|
solutionKey: "cases.caseStudies.ecommerce.solution",
|
|
results: [
|
|
"cases.caseStudies.ecommerce.results[0]",
|
|
"cases.caseStudies.ecommerce.results[1]",
|
|
"cases.caseStudies.ecommerce.results[2]",
|
|
"cases.caseStudies.ecommerce.results[3]",
|
|
"cases.caseStudies.ecommerce.results[4]"
|
|
]
|
|
},
|
|
{
|
|
titleKey: "cases.caseStudies.finance.title",
|
|
industry: "cases.caseStudies.finance.industry",
|
|
date: "2023-03-20",
|
|
summaryKey: "cases.caseStudies.finance.summary",
|
|
backgroundKey: "cases.caseStudies.finance.background",
|
|
challenges: [
|
|
"cases.caseStudies.finance.challenges[0]",
|
|
"cases.caseStudies.finance.challenges[1]",
|
|
"cases.caseStudies.finance.challenges[2]",
|
|
"cases.caseStudies.finance.challenges[3]"
|
|
],
|
|
solutionKey: "cases.caseStudies.finance.solution",
|
|
results: [
|
|
"cases.caseStudies.finance.results[0]",
|
|
"cases.caseStudies.finance.results[1]",
|
|
"cases.caseStudies.finance.results[2]",
|
|
"cases.caseStudies.finance.results[3]",
|
|
"cases.caseStudies.finance.results[4]"
|
|
]
|
|
},
|
|
{
|
|
titleKey: "cases.caseStudies.healthcare.title",
|
|
industry: "cases.caseStudies.healthcare.industry",
|
|
date: "2022-11-10",
|
|
summaryKey: "cases.caseStudies.healthcare.summary",
|
|
backgroundKey: "cases.caseStudies.healthcare.background",
|
|
challenges: [
|
|
"cases.caseStudies.healthcare.challenges[0]",
|
|
"cases.caseStudies.healthcare.challenges[1]",
|
|
"cases.caseStudies.healthcare.challenges[2]",
|
|
"cases.caseStudies.healthcare.challenges[3]"
|
|
],
|
|
solutionKey: "cases.caseStudies.healthcare.solution",
|
|
results: [
|
|
"cases.caseStudies.healthcare.results[0]",
|
|
"cases.caseStudies.healthcare.results[1]",
|
|
"cases.caseStudies.healthcare.results[2]",
|
|
"cases.caseStudies.healthcare.results[3]",
|
|
"cases.caseStudies.healthcare.results[4]"
|
|
]
|
|
},
|
|
{
|
|
titleKey: "cases.caseStudies.manufacturing.title",
|
|
industry: "cases.caseStudies.manufacturing.industry",
|
|
date: "2022-09-05",
|
|
summaryKey: "cases.caseStudies.manufacturing.summary",
|
|
backgroundKey: "cases.caseStudies.manufacturing.background",
|
|
challenges: [
|
|
"cases.caseStudies.manufacturing.challenges[0]",
|
|
"cases.caseStudies.manufacturing.challenges[1]",
|
|
"cases.caseStudies.manufacturing.challenges[2]",
|
|
"cases.caseStudies.manufacturing.challenges[3]"
|
|
],
|
|
solutionKey: "cases.caseStudies.manufacturing.solution",
|
|
results: [
|
|
"cases.caseStudies.manufacturing.results[0]",
|
|
"cases.caseStudies.manufacturing.results[1]",
|
|
"cases.caseStudies.manufacturing.results[2]",
|
|
"cases.caseStudies.manufacturing.results[3]",
|
|
"cases.caseStudies.manufacturing.results[4]"
|
|
]
|
|
},
|
|
{
|
|
titleKey: "cases.caseStudies.logistics.title",
|
|
industry: "cases.caseStudies.logistics.industry",
|
|
date: "2022-07-15",
|
|
summaryKey: "cases.caseStudies.logistics.summary",
|
|
backgroundKey: "cases.caseStudies.logistics.background",
|
|
challenges: [
|
|
"cases.caseStudies.logistics.challenges[0]",
|
|
"cases.caseStudies.logistics.challenges[1]",
|
|
"cases.caseStudies.logistics.challenges[2]",
|
|
"cases.caseStudies.logistics.challenges[3]"
|
|
],
|
|
solutionKey: "cases.caseStudies.logistics.solution",
|
|
results: [
|
|
"cases.caseStudies.logistics.results[0]",
|
|
"cases.caseStudies.logistics.results[1]",
|
|
"cases.caseStudies.logistics.results[2]",
|
|
"cases.caseStudies.logistics.results[3]",
|
|
"cases.caseStudies.logistics.results[4]"
|
|
]
|
|
},
|
|
{
|
|
titleKey: "cases.caseStudies.education.title",
|
|
industry: "cases.caseStudies.education.industry",
|
|
date: "2022-05-08",
|
|
summaryKey: "cases.caseStudies.education.summary",
|
|
backgroundKey: "cases.caseStudies.education.background",
|
|
challenges: [
|
|
"cases.caseStudies.education.challenges[0]",
|
|
"cases.caseStudies.education.challenges[1]",
|
|
"cases.caseStudies.education.challenges[2]",
|
|
"cases.caseStudies.education.challenges[3]"
|
|
],
|
|
solutionKey: "cases.caseStudies.education.solution",
|
|
results: [
|
|
"cases.caseStudies.education.results[0]",
|
|
"cases.caseStudies.education.results[1]",
|
|
"cases.caseStudies.education.results[2]",
|
|
"cases.caseStudies.education.results[3]",
|
|
"cases.caseStudies.education.results[4]"
|
|
]
|
|
}
|
|
];
|
|
const filteredCases = computed(() => {
|
|
let result = [...caseStudies];
|
|
if (selectedIndustries.value.length > 0) {
|
|
result = result.filter((item) => selectedIndustries.value.includes(item.industry));
|
|
}
|
|
if (sortBy.value === "latest") {
|
|
result.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
|
|
}
|
|
return result;
|
|
});
|
|
return (_ctx, _push, _parent, _attrs) => {
|
|
const _component_HeroBanner = _sfc_main$1;
|
|
const _component_NuxtLink = __nuxt_component_0;
|
|
_push(`<div${ssrRenderAttrs(_attrs)}>`);
|
|
_push(ssrRenderComponent(_component_HeroBanner, {
|
|
title: _ctx.$t("cases.hero.title"),
|
|
subtitle: _ctx.$t("cases.hero.subtitle")
|
|
}, null, _parent));
|
|
_push(`<section class="py-10"><div class="container"><div class="bg-white p-6 rounded-lg shadow-md"><div class="flex flex-wrap items-center justify-between gap-4"><div class="flex flex-wrap items-center gap-4"><span class="text-gray-700 font-medium">${ssrInterpolate(_ctx.$t("cases.filter.byIndustry"))}</span><div class="flex flex-wrap gap-2"><!--[-->`);
|
|
ssrRenderList(industries, (industry) => {
|
|
_push(`<button class="${ssrRenderClass([
|
|
"px-4 py-2 rounded-full text-sm",
|
|
selectedIndustries.value.includes(industry) ? "bg-secondary text-white" : "bg-gray-100 text-gray-700 hover:bg-gray-200"
|
|
])}">${ssrInterpolate(industry)}</button>`);
|
|
});
|
|
_push(`<!--]--><button class="px-4 py-2 rounded-full text-sm bg-gray-100 text-gray-700 hover:bg-gray-200">${ssrInterpolate(_ctx.$t("cases.filter.all"))}</button></div></div><div class="flex items-center"><span class="text-gray-700 font-medium mr-4">${ssrInterpolate(_ctx.$t("cases.filter.sortBy"))}</span><select class="px-4 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-secondary focus:border-transparent"><option value="latest"${ssrIncludeBooleanAttr(Array.isArray(sortBy.value) ? ssrLooseContain(sortBy.value, "latest") : ssrLooseEqual(sortBy.value, "latest")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("cases.filter.latest"))}</option><option value="default"${ssrIncludeBooleanAttr(Array.isArray(sortBy.value) ? ssrLooseContain(sortBy.value, "default") : ssrLooseEqual(sortBy.value, "default")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("cases.filter.default"))}</option></select></div></div></div></div></section><section class="py-12"><div class="container">`);
|
|
if (filteredCases.value.length === 0) {
|
|
_push(`<div class="text-center py-16"><i class="fas fa-search text-4xl text-gray-300 mb-4"></i><p class="text-xl text-gray-500">${ssrInterpolate(_ctx.$t("cases.noResults.text"))}</p><button class="mt-4 text-secondary hover:text-secondary/90">${ssrInterpolate(_ctx.$t("cases.noResults.clearFilters"))}</button></div>`);
|
|
} else {
|
|
_push(`<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8"><!--[-->`);
|
|
ssrRenderList(filteredCases.value, (case_item, index) => {
|
|
_push(`<div class="bg-white rounded-lg shadow-lg overflow-hidden hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1"><div class="h-48 bg-gray-200 relative overflow-hidden"><div class="absolute top-0 right-0 bg-secondary text-white px-3 py-1 text-sm">${ssrInterpolate(_ctx.$t(case_item.industry))}</div></div><div class="p-6"><h3 class="text-2xl font-semibold mb-4">${ssrInterpolate(_ctx.$t(case_item.titleKey))}</h3><p class="text-gray-600 mb-6">${ssrInterpolate(_ctx.$t(case_item.summaryKey))}</p><div class="flex justify-between items-center"><button class="text-secondary hover:text-secondary/90 flex items-center">${ssrInterpolate(_ctx.$t("cases.caseDetail.readDetails"))} <i class="fas fa-arrow-right ml-2"></i></button><span class="text-sm text-gray-500">${ssrInterpolate(case_item.date)}</span></div></div></div>`);
|
|
});
|
|
_push(`<!--]--></div>`);
|
|
}
|
|
_push(`</div></section>`);
|
|
if (selectedCase.value) {
|
|
_push(`<div class="fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4"><div class="bg-white rounded-lg max-w-4xl w-full max-h-[90vh] overflow-y-auto"><div class="p-6 border-b"><div class="flex justify-between items-center"><h3 class="text-2xl font-bold">${ssrInterpolate(_ctx.$t(selectedCase.value.titleKey))}</h3><button class="text-gray-500 hover:text-gray-700"><i class="fas fa-times text-xl"></i></button></div></div><div class="p-6"><div class="flex flex-wrap gap-2 mb-6"><span class="px-3 py-1 bg-secondary/10 text-secondary text-sm rounded-full">${ssrInterpolate(_ctx.$t(selectedCase.value.industry))}</span><span class="px-3 py-1 bg-gray-100 text-gray-700 text-sm rounded-full">${ssrInterpolate(selectedCase.value.date)}</span></div><h4 class="text-xl font-semibold mb-4">${ssrInterpolate(_ctx.$t("cases.caseDetail.background"))}</h4><p class="text-gray-600 mb-6">${ssrInterpolate(_ctx.$t(selectedCase.value.backgroundKey))}</p><h4 class="text-xl font-semibold mb-4">${ssrInterpolate(_ctx.$t("cases.caseDetail.challenges"))}</h4><ul class="list-disc pl-5 mb-6 space-y-2"><!--[-->`);
|
|
ssrRenderList(selectedCase.value.challenges, (challenge, idx) => {
|
|
_push(`<li class="text-gray-600">${ssrInterpolate(_ctx.$t(challenge))}</li>`);
|
|
});
|
|
_push(`<!--]--></ul><h4 class="text-xl font-semibold mb-4">${ssrInterpolate(_ctx.$t("cases.caseDetail.solution"))}</h4><p class="text-gray-600 mb-4">${ssrInterpolate(_ctx.$t(selectedCase.value.solutionKey))}</p><h4 class="text-xl font-semibold mb-4">${ssrInterpolate(_ctx.$t("cases.caseDetail.results"))}</h4><ul class="list-disc pl-5 mb-6 space-y-2"><!--[-->`);
|
|
ssrRenderList(selectedCase.value.results, (result, idx) => {
|
|
_push(`<li class="text-gray-600">${ssrInterpolate(_ctx.$t(result))}</li>`);
|
|
});
|
|
_push(`<!--]--></ul></div><div class="p-6 border-t bg-gray-50"><div class="flex justify-end"><button class="px-4 py-2 bg-gray-200 text-gray-700 rounded hover:bg-gray-300">${ssrInterpolate(_ctx.$t("cases.caseDetail.close"))}</button></div></div></div></div>`);
|
|
} else {
|
|
_push(`<!---->`);
|
|
}
|
|
_push(`<section class="py-16 bg-primary text-white"><div class="container text-center"><h2 class="text-4xl font-bold mb-6">${ssrInterpolate(_ctx.$t("cases.contact.title"))}</h2><p class="text-xl mb-8 max-w-2xl mx-auto leading-relaxed">${ssrInterpolate(_ctx.$t("cases.contact.subtitle"))}</p>`);
|
|
_push(ssrRenderComponent(_component_NuxtLink, {
|
|
to: "/contact",
|
|
class: "inline-flex items-center bg-white text-black px-8 py-4 rounded-lg hover:bg-gray-100 transition-colors duration-300 text-lg font-semibold"
|
|
}, {
|
|
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
if (_push2) {
|
|
_push2(`${ssrInterpolate(_ctx.$t("cases.contact.button"))} <i class="fas fa-arrow-right ml-2"${_scopeId}></i>`);
|
|
} else {
|
|
return [
|
|
createTextVNode(toDisplayString(_ctx.$t("cases.contact.button")) + " ", 1),
|
|
createVNode("i", { class: "fas fa-arrow-right ml-2" })
|
|
];
|
|
}
|
|
}),
|
|
_: 1
|
|
}, _parent));
|
|
_push(`</div></section></div>`);
|
|
};
|
|
}
|
|
});
|
|
|
|
const _sfc_setup = _sfc_main.setup;
|
|
_sfc_main.setup = (props, ctx) => {
|
|
const ssrContext = useSSRContext();
|
|
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/cases.vue");
|
|
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
|
};
|
|
|
|
export { _sfc_main as default };
|
|
//# sourceMappingURL=cases.vue.mjs.map
|