<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>


    <NuxtLoadingIndicator color="#2563eb"/>
    <NuxtLayout>
      <NuxtPage/>
    </NuxtLayout>
    <ToolsStopImpersonation/>

    <Notifications />
  </div>
</template>

<script>
import {computed} from 'vue'
import {useAppStore} from '~/stores/app'

export default {
  el: '#app',

  name: 'OpnForm',

  components: {},

  setup() {
    const config = useRuntimeConfig()
    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',
      robots: () => {
        return config.public.env === 'production' ? null : 'noindex, nofollow'
      }
    })
    useHead({
      titleTemplate: (titleChunk) => {
        return titleChunk ? `${titleChunk} - OpnForm` : 'OpnForm';
      }
    })

    const appStore = useAppStore()

    return {
      layout: computed(() => appStore.layout),
      isIframe: useIsIframe()
    }
  },

  mounted() {
    useCrisp().showChat()
  },

  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>