Skip to content

Commit 99001ca

Browse files
committed
chore: add vacations page
1 parent 01ecd65 commit 99001ca

3 files changed

Lines changed: 97 additions & 0 deletions

File tree

app/pages/vacations.vue

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
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>

nuxt.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ export default defineNuxtConfig({
142142
'/privacy': { prerender: true },
143143
'/search': { isr: false, cache: false }, // never cache
144144
'/settings': { prerender: true },
145+
'/vacations': { prerender: true },
145146
// proxy for insights
146147
'/_v/script.js': { proxy: 'https://npmx.dev/_vercel/insights/script.js' },
147148
'/_v/view': { proxy: 'https://npmx.dev/_vercel/insights/view' },

server/middleware/canonical-redirects.global.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const pages = [
2525
'/privacy',
2626
'/search',
2727
'/settings',
28+
'/vacations',
2829
]
2930

3031
const cacheControl = 's-maxage=3600, stale-while-revalidate=36000'

0 commit comments

Comments
 (0)