2023-12-09 14:47:03 +00:00
< template >
< div id = "app" class = "bg-white dark:bg-notion-dark" >
< transition enter -active -class = " linear duration -200 overflow -hidden "
enter - from - class = "max-h-0"
enter - to - class = "max-h-screen"
leave - active - class = "linear duration-200 overflow-hidden"
leave - from - class = "max-h-screen"
leave - to - class = "max-h-0"
>
< div v-if ="announcement && !isIframe" class="bg-nt-blue text-white text-center p-3 relative" >
< a class = "text-white font-semibold" href = "" target = "_blank" > 🚨
OpnForm beta is over 🚨 < / a >
< div role = "button" class = "text-white absolute right-0 top-0 p-3 cursor-pointer" @click ="announcement=false" >
< svg xmlns = "http://www.w3.org/2000/svg" class = "h-6 w-6" viewBox = "0 0 20 20" fill = "currentColor" >
< path fill -rule = " evenodd "
d = "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z"
clip - rule = "evenodd"
/ >
< / svg >
< / div >
< / div >
< / transition >
2023-12-19 15:45:23 +00:00
2024-01-04 11:14:40 +00:00
< NuxtLoadingIndicator color = "#2563eb" / >
2023-12-19 15:45:23 +00:00
< NuxtLayout >
< NuxtPage / >
< / NuxtLayout >
2023-12-09 14:47:03 +00:00
< ToolsStopImpersonation / >
2023-12-31 11:39:01 +00:00
< Notifications / >
2023-12-09 14:47:03 +00:00
< / div >
< / template >
< script >
import { computed } from 'vue'
import { useAppStore } from '~/stores/app'
export default {
el : '#app' ,
name : 'OpnForm' ,
components : { } ,
setup ( ) {
2024-01-12 14:59:01 +00:00
const config = useRuntimeConfig ( )
2024-01-04 17:38:50 +00:00
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.' ,
2024-03-09 20:55:01 +00:00
ogImage : ` ${ useRuntimeConfig ( ) . public . appUrl } /img/social-preview.jpg ` ,
2024-01-12 14:59:01 +00:00
robots : ( ) => {
return config . public . env === 'production' ? null : 'noindex, nofollow'
}
2024-01-04 17:38:50 +00:00
} )
useHead ( {
titleTemplate : ( titleChunk ) => {
return titleChunk ? ` ${ titleChunk } - OpnForm ` : 'OpnForm' ;
}
} )
2023-12-09 14:47:03 +00:00
const appStore = useAppStore ( )
2023-12-09 15:33:56 +00:00
2023-12-09 14:47:03 +00:00
return {
layout : computed ( ( ) => appStore . layout ) ,
isIframe : useIsIframe ( )
}
} ,
2023-12-09 15:33:56 +00:00
mounted ( ) {
useCrisp ( ) . showChat ( )
} ,
2023-12-09 14:47:03 +00:00
data : ( ) => ( {
announcement : false ,
alert : {
type : null ,
autoClose : 0 ,
message : '' ,
confirmationProceed : null ,
confirmationCancel : null
} ,
navbarHidden : false
} ) ,
computed : {
isOnboardingPage ( ) {
return this . $route . name === 'onboarding'
} ,
} ,
methods : {
workspaceAdded ( ) {
this . $router . push ( { name : 'home' } )
} ,
hideNavbar ( hidden = true ) {
this . navbarHidden = hidden
}
}
}
< / script >