|
| 1 | +<script setup lang="ts"> |
| 2 | +definePageMeta({ |
| 3 | + name: 'vacations', |
| 4 | + layout: 'default', |
| 5 | +}) |
| 6 | +
|
| 7 | +useSeoMeta({ |
| 8 | + title: 'Vacations - npmx', |
| 9 | + description: 'The npmx team is taking a well-deserved break after an incredible sprint!', |
| 10 | +}) |
| 11 | +
|
| 12 | +const stats = [ |
| 13 | + { label: 'Contributors', value: '150+' }, |
| 14 | + { label: 'Commits', value: '1.1k+' }, |
| 15 | + { label: 'PRs Merged', value: '944' }, |
| 16 | +] |
| 17 | +</script> |
| 18 | + |
| 19 | +<template> |
| 20 | + <main |
| 21 | + class="container flex-1 flex flex-col items-center justify-center py-20 sm:py-32 text-center" |
| 22 | + > |
| 23 | + <div class="max-w-2xl mx-auto space-y-8"> |
| 24 | + <!-- Icon / Illustration --> |
| 25 | + <div class="relative inline-block"> |
| 26 | + <div class="absolute inset-0 bg-accent/20 blur-3xl rounded-full" aria-hidden="true" /> |
| 27 | + <span class="relative text-8xl sm:text-9xl animate-bounce-slow inline-block">🏖️</span> |
| 28 | + </div> |
| 29 | + |
| 30 | + <!-- Title --> |
| 31 | + <div class="space-y-4"> |
| 32 | + <h1 class="font-mono text-4xl sm:text-5xl font-bold text-fg"> |
| 33 | + We are <span class="text-accent">recharging</span> |
| 34 | + </h1> |
| 35 | + <p class="text-lg sm:text-xl text-fg-muted max-w-lg mx-auto leading-relaxed"> |
| 36 | + After 3 weeks of intense coding, 150+ contributors, and over 1,100 commits, the npmx team |
| 37 | + is taking a short break. |
| 38 | + </p> |
| 39 | + </div> |
| 40 | + |
| 41 | + <!-- Stats Grid --> |
| 42 | + <div class="grid grid-cols-3 gap-4 sm:gap-8 py-8 border-y border-border/50"> |
| 43 | + <div v-for="stat in stats" :key="stat.label" class="space-y-1"> |
| 44 | + <div class="font-mono text-2xl sm:text-3xl font-bold text-fg">{{ stat.value }}</div> |
| 45 | + <div class="text-xs sm:text-sm text-fg-subtle uppercase tracking-wider"> |
| 46 | + {{ stat.label }} |
| 47 | + </div> |
| 48 | + </div> |
| 49 | + </div> |
| 50 | + |
| 51 | + <!-- Message --> |
| 52 | + <div class="space-y-6"> |
| 53 | + <p class="text-fg-muted"> |
| 54 | + We'll be back soon to continue building the best package explorer for the community. |
| 55 | + <br class="hidden sm:block" /> |
| 56 | + Thank you for being part of this incredible journey! |
| 57 | + </p> |
| 58 | + |
| 59 | + <div class="flex items-center justify-center gap-4"> |
| 60 | + <ButtonBase to="/" variant="primary" size="medium" classicon="i-carbon:home"> |
| 61 | + Back to Home |
| 62 | + </ButtonBase> |
| 63 | + <ButtonBase |
| 64 | + href="https://github.com/npmx-dev/npmx.dev" |
| 65 | + target="_blank" |
| 66 | + rel="noopener noreferrer" |
| 67 | + variant="secondary" |
| 68 | + size="medium" |
| 69 | + classicon="i-carbon:logo-github" |
| 70 | + > |
| 71 | + Star on GitHub |
| 72 | + </ButtonBase> |
| 73 | + </div> |
| 74 | + </div> |
| 75 | + </div> |
| 76 | + </main> |
| 77 | +</template> |
| 78 | + |
| 79 | +<style scoped> |
| 80 | +.animate-bounce-slow { |
| 81 | + animation: bounce 3s infinite; |
| 82 | +} |
| 83 | +
|
| 84 | +@keyframes bounce { |
| 85 | + 0%, |
| 86 | + 100% { |
| 87 | + transform: translateY(-5%); |
| 88 | + animation-timing-function: cubic-bezier(0.8, 0, 1, 1); |
| 89 | + } |
| 90 | + 50% { |
| 91 | + transform: translateY(0); |
| 92 | + animation-timing-function: cubic-bezier(0, 0, 0.2, 1); |
| 93 | + } |
| 94 | +} |
| 95 | +</style> |
0 commit comments