Files
tootaio.com/app/layouts/default.vue
xiaomai ccfd268682 feat(webDev): add inquiry modal for pricing plans
This commit introduces a 'Contact Sales' modal on the web development page, allowing users to inquire about specific service plans.

- The pricing plan buttons now trigger this modal, pre-filled with the selected plan's details.
- Users can add custom remarks to their inquiry.
- On submission, a pre-formatted message is generated and opened in WhatsApp using a new `useWhatsAppMsgSender` composable.
- Adds `NUXT_PUBLIC_WHATSAPP_NUMBER` to the runtime configuration.
- Refactors content validation by introducing Zod schemas for `PricingPlan` and `Button` props to improve type safety.
- Adds new i18n keys for the modal interface and message templates.
2025-11-07 11:04:14 +08:00

59 lines
1.5 KiB
Vue

<template>
<UPage>
<UHeader
:ui="{
left: 'flex items-center gap-1.5',
center: 'hidden lg:flex lg:flex-4',
right: 'flex items-center justify-end gap-1.5',
}"
>
<template #title> Tootaio Studio </template>
<template #default>
<UNavigationMenu
:items="navLinks"
variant="link"
class="w-full justify-center"
/>
</template>
<template #body>
<UNavigationMenu :items="navLinks" orientation="vertical" />
</template>
<template #right>
<UColorModeButton />
<UButton
icon="twemoji:flag-china"
:variant="$i18n.locale == 'zh-CN' ? 'outline' : 'ghost'"
class="cursor-pointer"
color="neutral"
:disabled="$i18n.locale == 'zh-CN'"
@click="setLocale('zh-CN')"
/>
<UButton
icon="twemoji:flag-united-states"
:variant="$i18n.locale == 'en' ? 'outline' : 'ghost'"
class="cursor-pointer"
color="neutral"
:disabled="$i18n.locale == 'en'"
@click="setLocale('en')"
/>
</template>
</UHeader>
<UMain>
<slot />
</UMain>
<UFooter>
<template #left>
&copy; {{ new Date().getFullYear() }} Tootaio Studio. All rights
reserved.
</template>
</UFooter>
</UPage>
</template>
<script lang="ts" setup>
const { setLocale } = useI18n();
const navLinks = useNavLinks();
</script>
<style></style>