diff --git a/client/app.vue b/client/app.vue index e9a2f33..cdbe80b 100644 --- a/client/app.vue +++ b/client/app.vue @@ -44,6 +44,17 @@ export default { components: {}, setup() { + useOpnSeoMeta({ + title: 'OpnForm', + description: 'Create beautiful forms for free. Unlimited fields, unlimited submissions. It\'s free and it takes less than 1 minute to create your first form.', + ogImage: '/img/social-preview.jpg', + }) + useHead({ + titleTemplate: (titleChunk) => { + return titleChunk ? `${titleChunk} - OpnForm` : 'OpnForm'; + } + }) + const appStore = useAppStore() return { @@ -57,8 +68,6 @@ export default { }, data: () => ({ - metaTitle: 'OpnForm', - metaDescription: 'Create beautiful forms for free. Unlimited fields, unlimited submissions. It\'s free and it takes less than 1 minute to create your first form.', announcement: false, alert: { type: null, diff --git a/client/components/global/Navbar.vue b/client/components/global/Navbar.vue index 4016b69..506cfcb 100644 --- a/client/components/global/Navbar.vue +++ b/client/components/global/Navbar.vue @@ -203,7 +203,7 @@ export default { return !this.appStore.navbarHidden }, userOnboarded() { - return this.user && this.user.workspaces_count > 0 + return this.user && this.user.has_forms === true }, hasCrisp() { return this.config.crispWebsiteId diff --git a/client/components/open/forms/components/CopyContent.vue b/client/components/open/forms/components/CopyContent.vue index 95643b3..9a1fc65 100644 --- a/client/components/open/forms/components/CopyContent.vue +++ b/client/components/open/forms/components/CopyContent.vue @@ -6,7 +6,7 @@

- + @@ -21,47 +21,28 @@
- diff --git a/client/components/open/forms/components/FormUrlPrefill.vue b/client/components/open/forms/components/FormUrlPrefill.vue index 46bcbab..18d2c16 100644 --- a/client/components/open/forms/components/FormUrlPrefill.vue +++ b/client/components/open/forms/components/FormUrlPrefill.vue @@ -17,72 +17,50 @@ - diff --git a/client/components/open/forms/components/templates/FormTemplateModal.vue b/client/components/open/forms/components/templates/FormTemplateModal.vue index c634bc7..b81ce46 100644 --- a/client/components/open/forms/components/templates/FormTemplateModal.vue +++ b/client/components/open/forms/components/templates/FormTemplateModal.vue @@ -1,5 +1,5 @@ - diff --git a/client/composables/useOpnSeoMeta.js b/client/composables/useOpnSeoMeta.js new file mode 100644 index 0000000..d07dd52 --- /dev/null +++ b/client/composables/useOpnSeoMeta.js @@ -0,0 +1,16 @@ +export const useOpnSeoMeta = (meta) => { + return useSeoMeta({ + ...meta.title ? { + ogTitle: meta.title, + twitterTitle: meta.title, + } : {}, + ...meta.description ? { + ogDescription: meta.description, + twitterDescription: meta.description, + } : {}, + ...meta.ogImage ? { + twitterImage: meta.ogImage, + } : {}, + ...meta, + }) +} diff --git a/client/error.vue b/client/error.vue new file mode 100644 index 0000000..d98b8fe --- /dev/null +++ b/client/error.vue @@ -0,0 +1,25 @@ + + + diff --git a/client/mixins/seo-meta.js b/client/mixins/seo-meta.js deleted file mode 100644 index 2d40447..0000000 --- a/client/mixins/seo-meta.js +++ /dev/null @@ -1,23 +0,0 @@ -export default { - metaInfo () { - const title = this.metaTitle ?? 'OpnForm' - const description = this.metaDescription ?? "Create beautiful forms for free. Unlimited fields, unlimited submissions. It's free and it takes less than 1 minute to create your first form." - const image = this.metaImage ?? this.asset('img/social-preview.jpg') - const metaTemplate = this.metaTemplate ?? '%s ยท OpnForm' - - return { - title: title, - titleTemplate: metaTemplate, - meta: [ - ...(this.metaTags ?? []), - { vmid: 'og:title', property: 'og:title', content: title }, - { vmid: 'twitter:title', property: 'twitter:title', content: title }, - { vmid: 'description', name: 'description', content: description }, - { vmid: 'og:description', property: 'og:description', content: description }, - { vmid: 'twitter:description', property: 'twitter:description', content: description }, - { vmid: 'twitter:image', property: 'twitter:image', content: image }, - { vmid: 'og:image', property: 'og:image', content: image } - ] - } - } -} diff --git a/client/pages/ai-form-builder.vue b/client/pages/ai-form-builder.vue index 94a1646..ef05cf6 100644 --- a/client/pages/ai-form-builder.vue +++ b/client/pages/ai-form-builder.vue @@ -493,39 +493,21 @@ -