50 lines
1.8 KiB
Vue
50 lines
1.8 KiB
Vue
<script setup lang="ts">
|
|
import Hero from "~/components/sections/Hero.vue";
|
|
import TapeMarquee from "~/components/sections/TapeMarquee.vue";
|
|
import Stats from "~/components/sections/Stats.vue";
|
|
import Products from "~/components/sections/Products.vue";
|
|
import About from "~/components/sections/About.vue";
|
|
import Services from "~/components/sections/Services.vue";
|
|
import Standards from "~/components/sections/Standards.vue";
|
|
import Industries from "~/components/sections/Industries.vue";
|
|
import Testimonials from "~/components/sections/Testimonials.vue";
|
|
import Contact from "~/components/sections/Contact.vue";
|
|
|
|
const canonical = useAbsUrl()("/");
|
|
const siteStore = useSiteStore();
|
|
const sections = computed(() => siteStore.sections);
|
|
const hero = computed(() => sections.value.hero);
|
|
|
|
useHead({
|
|
link: [
|
|
{ rel: "canonical", href: canonical },
|
|
...(hero.value?.image?.url && hero.value.enabled !== false
|
|
? [{ rel: "preload" as const, as: "image" as const, href: hero.value.image.url, fetchpriority: "high" as const }]
|
|
: []),
|
|
],
|
|
});
|
|
useSeoMeta({
|
|
robots: "index, follow",
|
|
ogUrl: canonical,
|
|
});
|
|
|
|
onMounted(() => {
|
|
void siteStore.load();
|
|
});
|
|
</script>
|
|
|
|
<template>
|
|
<main>
|
|
<Hero v-if="sections.hero?.enabled !== false" />
|
|
<TapeMarquee v-if="sections.tape?.enabled !== false" />
|
|
<Stats v-if="sections.stats?.enabled !== false" />
|
|
<Products v-if="sections.productsIntro?.enabled !== false" />
|
|
<About v-if="sections.about?.enabled !== false" />
|
|
<Services v-if="sections.services?.enabled !== false" />
|
|
<Standards v-if="sections.standards?.enabled !== false" />
|
|
<Industries v-if="sections.industries?.enabled !== false" />
|
|
<Testimonials v-if="sections.testimonials?.enabled !== false" />
|
|
<Contact v-if="sections.contact?.enabled !== false" />
|
|
</main>
|
|
</template>
|