Template · Marketing pages
Pricing Page
Full Vue 3 pricing page: four tiers with a monthly/yearly toggle, a responsive feature comparison table, FAQ and an enterprise CTA. Tailwind CSS.
Vue 3 coming-soon and waitlist page with a live countdown, validated email capture and social links, drawn sky backdrop. Tailwind CSS, dark mode.
by Vueplayv1.0.0Updated 2 hours ago
A pre-launch page that does one job well: tell people what's coming and collect their email. It has a live countdown to your launch date, a waitlist form with validation and a friendly confirmation state, a row of teaser features and social links.
The countdown is its own component: pass a Date as target and it ticks every second, cleans up its interval on unmount and emits done when time runs out. Screen readers get one readable summary instead of a number changing every second. The waitlist form emits join with the email; wire it to your mailing list provider or backend.
The backdrop is drawn with SVG and gradients: soft clouds in light mode, a field of stars in dark mode. Social icons are generic, so swap in your networks' official marks when you publish.
<script setup lang="ts">
import { ref } from 'vue'
import CountdownTimer from './components/CountdownTimer.vue'
import WaitlistForm from './components/WaitlistForm.vue'
import SocialLinks from './components/SocialLinks.vue'
// Set your real launch date here, e.g. new Date('2026-11-03T09:00:00Z').
// The demo counts down to a date 23 days and 7 hours from when the page loads.
const launch = new Date(Date.now() + (23 * 24 + 7) * 3600 * 1000 + 42 * 60 * 1000)
const launched = ref(false)
const teasers = ['Offline-first notes', 'End-to-end encrypted', 'Handwriting search', 'Shared notebooks']
</script>
<template>
<div class="relative isolate flex min-h-screen flex-col overflow-hidden bg-gradient-to-b from-sky-50 via-white to-white text-gray-900 dark:from-slate-950 dark:via-gray-950 dark:to-gray-950 dark:text-white">
<!-- drawn sky: clouds in light mode, stars in dark mode -->
<div aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10">
<div class="absolute -top-40 left-1/2 size-[44rem] -translate-x-1/2 rounded-full bg-sky-300/30 blur-3xl dark:bg-sky-500/15" />
<div class="hidden sm:block dark:!hidden">
<svg class="absolute left-[6%] top-28 w-56 text-white drop-shadow-sm" viewBox="0 0 200 80" fill="currentColor"><path d="M40 70a30 30 0 0 1 4-59 36 36 0 0 1 66-2 26 26 0 0 1 44 12 24 24 0 0 1 6 49z" /></svg>
<svg class="absolute right-[4%] top-64 w-72 text-white/90 drop-shadow-sm" viewBox="0 0 200 80" fill="currentColor"><path d="M40 70a30 30 0 0 1 4-59 36 36 0 0 1 66-2 26 26 0 0 1 44 12 24 24 0 0 1 6 49z" /></svg>
</div>
<svg class="absolute inset-0 hidden size-full dark:block" preserveAspectRatio="none">
<circle v-for="n in 60" :key="n" :cx="`${(n * 37) % 100}%`" :cy="`${(n * 53) % 70}%`" :r="n % 7 === 0 ? 1.6 : 0.9" class="fill-white" :opacity="0.2 + ((n * 13) % 10) / 16" />
</svg>
</div>
<header class="mx-auto flex w-full max-w-5xl items-center justify-between px-5 py-6">
<span class="flex items-center gap-2.5 text-lg font-semibold">
<span class="grid size-9 place-items-center rounded-xl bg-sky-600 text-white shadow-md shadow-sky-600/30" aria-hidden="true">
<svg viewBox="0 0 24 24" class="size-5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 18a4 4 0 0 1-.5-8A6 6 0 0 1 18 9a4.5 4.5 0 0 1-.5 9z" /></svg>
</span>
Cirrus
</span>
<SocialLinks class="hidden sm:flex" />
</header>
<main class="mx-auto flex w-full max-w-2xl flex-1 flex-col items-center justify-center px-5 pb-16 pt-6 text-center sm:pt-10">
<p class="inline-flex items-center gap-2 rounded-full border border-sky-200 bg-white/70 px-3 py-1 text-xs font-semibold text-sky-700 dark:border-sky-400/30 dark:bg-sky-400/10 dark:text-sky-300">
<span class="relative flex size-2"><span class="absolute inline-flex size-full animate-ping rounded-full bg-sky-400 opacity-75 motion-reduce:hidden" /><span class="relative inline-flex size-2 rounded-full bg-sky-500" /></span>
Private beta · opening soon
</p>
<h1 class="mt-6 text-4xl font-bold tracking-tight text-balance sm:text-6xl">
Notes that feel as light as <span class="text-sky-600 dark:text-sky-400">thinking</span>
</h1>
<p class="mt-5 max-w-lg text-lg text-pretty text-gray-600 dark:text-gray-300">
Cirrus is a fast, private notebook that works offline and syncs everywhere. Join the waitlist to get early access and founder pricing.
</p>
<div class="mt-10 w-full">
<p v-if="launched" class="text-2xl font-bold text-sky-600 dark:text-sky-400" role="status">We're live! Check your inbox.</p>
<CountdownTimer v-else :target="launch" @done="launched = true" />
</div>
<div class="mt-10 w-full max-w-lg">
<WaitlistForm />
</div>
<ul class="mt-10 flex flex-wrap justify-center gap-2" aria-label="Coming at launch">
<li v-for="t in teasers" :key="t" class="rounded-full bg-white/70 px-3 py-1.5 text-xs font-medium text-gray-700 ring-1 ring-gray-200 dark:bg-white/5 dark:text-gray-300 dark:ring-white/10">{{ t }}</li>
</ul>
</main>
<footer class="mx-auto flex w-full max-w-5xl flex-col items-center gap-4 border-t border-gray-200/70 px-5 py-6 sm:flex-row sm:justify-between dark:border-white/10">
<p class="text-sm text-gray-500 dark:text-gray-400">© {{ new Date().getFullYear() }} Cirrus Labs · a fictional company</p>
<SocialLinks class="sm:hidden" />
<a href="#" class="text-sm text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white">Press & partnerships</a>
</footer>
</div>
</template>
Template · Marketing pages
Full Vue 3 pricing page: four tiers with a monthly/yearly toggle, a responsive feature comparison table, FAQ and an enterprise CTA. Tailwind CSS.
Template · Error pages
Friendly Vue 3 404 page with a drawn compass illustration, live search suggestions and helpful links, plus a compact 500 error variant. Tailwind CSS.
Template · Dashboards
A complete Vue 3 admin dashboard template with a collapsible sidebar, hand-drawn SVG charts, a sortable customers table and settings. Tailwind CSS, dark mode.
Template · Dashboards
Web analytics dashboard template for Vue 3 and Tailwind CSS: SVG area chart, metric tabs, top pages, sources, a devices donut and a date range picker.