feat(landing): Add landing Nuxt page
This commit is contained in:
43
landing/app/composables/useNewsletterSignup.ts
Normal file
43
landing/app/composables/useNewsletterSignup.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
export function useNewsletterSignup() {
|
||||
const isLoading = ref(false)
|
||||
const isSuccess = ref(false)
|
||||
const error = ref<string | null>(null)
|
||||
|
||||
const submitEmail = async (_email: string) => {
|
||||
isLoading.value = true
|
||||
error.value = null
|
||||
|
||||
try {
|
||||
// Simulate API call - replace with actual newsletter service integration
|
||||
await new Promise((resolve) => setTimeout(resolve, 1500))
|
||||
|
||||
// TODO: Integrate with external newsletter service (e.g., Mailchimp, ConvertKit, etc.)
|
||||
// Example:
|
||||
// await $fetch('/api/newsletter/subscribe', {
|
||||
// method: 'POST',
|
||||
// body: { email }
|
||||
// })
|
||||
|
||||
isSuccess.value = true
|
||||
} catch (e: unknown) {
|
||||
error.value = e instanceof Error ? e.message : 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.'
|
||||
throw e
|
||||
} finally {
|
||||
isLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
const reset = () => {
|
||||
isLoading.value = false
|
||||
isSuccess.value = false
|
||||
error.value = null
|
||||
}
|
||||
|
||||
return {
|
||||
isLoading,
|
||||
isSuccess,
|
||||
error,
|
||||
submitEmail,
|
||||
reset
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user