Skip to content

Commit e326bb0

Browse files
committed
feat: add tkawaii logo on april first
1 parent 7926464 commit e326bb0

File tree

3 files changed

+199
-46
lines changed

3 files changed

+199
-46
lines changed

app/components/LandingLogo.vue

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<script setup lang="ts">
2+
defineProps<{
3+
class?: string
4+
}>()
5+
6+
const { env } = useAppConfig().buildInfo
7+
8+
onPrehydrate(el => {
9+
const isKawaii = new URLSearchParams(window.location.search).has('kawaii')
10+
const date = new Intl.DateTimeFormat('en-US', {
11+
timeZone: 'America/Los_Angeles',
12+
month: '2-digit',
13+
day: '2-digit',
14+
}).format(new Date())
15+
const isAprilFirst = date === '04/01'
16+
17+
if (!isKawaii && !isAprilFirst) return
18+
19+
const normalLogo = el.querySelector<HTMLElement>('#npmx-index-h1-logo-normal')
20+
const kawaiiLogo = el.querySelector<HTMLElement>('#npmx-index-h1-logo-kawaii')
21+
const tkawaiiLogo = el.querySelector<HTMLElement>('#npmx-index-h1-logo-tkawaii')
22+
const logoEnv = el.querySelector<HTMLElement>('#npmx-index-h1-logo-env')
23+
const logoTagline = el.querySelector<HTMLElement>('#npmx-index-tagline')
24+
25+
if (!normalLogo || !kawaiiLogo || !tkawaiiLogo || !logoEnv || !logoTagline) return
26+
27+
if (isAprilFirst) {
28+
tkawaiiLogo.style.display = 'block'
29+
} else {
30+
kawaiiLogo.style.display = 'block'
31+
}
32+
normalLogo.style.display = 'none'
33+
logoEnv.style.display = 'none'
34+
logoTagline.style.display = 'none'
35+
})
36+
</script>
37+
38+
<template>
39+
<div class="flex flex-col items-center justify-center">
40+
<h1
41+
dir="ltr"
42+
class="relative flex items-center justify-center gap-2 header-logo font-mono text-5xl sm:text-7xl md:text-8xl font-medium tracking-tight mb-6 motion-safe:animate-fade-in motion-safe:animate-fill-both"
43+
>
44+
<img
45+
id="npmx-index-h1-logo-kawaii"
46+
width="400"
47+
class="hidden mb-8 motion-safe:animate-fade-in motion-safe:animate-scale-in motion-safe:hover:scale-105 motion-safe:transition w-80 sm:w-100"
48+
src="/extra/npmx-cute.svg"
49+
:alt="$t('alt_logo_kawaii')"
50+
:class="class"
51+
/>
52+
<img
53+
id="npmx-index-h1-logo-tkawaii"
54+
width="400"
55+
class="hidden mb-8 motion-safe:animate-fade-in motion-safe:animate-scale-in motion-safe:hover:scale-105 motion-safe:transition w-80 sm:w-100"
56+
src="/extra/npmx-cute-transgender.svg"
57+
:alt="$t('alt_logo_kawaii')"
58+
:class="class"
59+
/>
60+
<AppLogo id="npmx-index-h1-logo-normal" :class="class" />
61+
<span
62+
id="npmx-index-h1-logo-env"
63+
aria-hidden="true"
64+
class="text-sm sm:text-base md:text-lg transform-origin-br font-mono tracking-widest text-accent absolute -bottom-4 -inset-ie-1.5"
65+
>
66+
{{ env === 'release' ? 'alpha' : env }}
67+
</span>
68+
</h1>
69+
<p
70+
id="npmx-index-tagline"
71+
class="text-fg-muted text-lg sm:text-xl max-w-xl mb-12 lg:mb-14 motion-safe:animate-slide-up motion-safe:animate-fill-both delay-100"
72+
>
73+
{{ $t('tagline') }}
74+
</p>
75+
</div>
76+
</template>

app/pages/index.vue

Lines changed: 1 addition & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ async function search() {
88
startSearch()
99
}
1010
11-
const { env } = useAppConfig().buildInfo
12-
1311
useSeoMeta({
1412
title: () => $t('seo.home.title'),
1513
ogTitle: () => $t('seo.home.title'),
@@ -24,22 +22,6 @@ defineOgImageComponent('Default', {
2422
title: 'npmx',
2523
description: 'a fast, modern browser for the **npm registry**',
2624
})
27-
28-
// const route = useRoute()
29-
// const isKawaii = computed(() => route.query.kawaii === 'true')
30-
onPrehydrate(el => {
31-
const isKawaii = new URLSearchParams(window.location.search).has('kawaii')
32-
if (!isKawaii) return
33-
const normalLogo = el.querySelector<HTMLElement>('#npmx-index-h1-logo-normal')
34-
const kawaiiLogo = el.querySelector<HTMLElement>('#npmx-index-h1-logo-kawaii')
35-
const logoEnv = el.querySelector<HTMLElement>('#npmx-index-h1-logo-env')
36-
const logoTagline = el.querySelector<HTMLElement>('#npmx-index-tagline')
37-
if (!normalLogo || !kawaiiLogo || !logoEnv || !logoTagline) return
38-
normalLogo.style.display = 'none'
39-
kawaiiLogo.style.display = 'block'
40-
logoEnv.style.display = 'none'
41-
logoTagline.style.display = 'none'
42-
})
4325
</script>
4426

4527
<template>
@@ -48,34 +30,7 @@ onPrehydrate(el => {
4830
<header
4931
class="flex-1 flex flex-col items-center justify-center text-center pt-20 pb-4 md:pb-8 lg:pb-20"
5032
>
51-
<h1
52-
dir="ltr"
53-
class="relative flex items-center justify-center gap-2 header-logo font-mono text-5xl sm:text-7xl md:text-8xl font-medium tracking-tight mb-6 motion-safe:animate-fade-in motion-safe:animate-fill-both"
54-
>
55-
<img
56-
id="npmx-index-h1-logo-kawaii"
57-
width="400"
58-
class="hidden pb-8 motion-safe:animate-fade-in motion-safe:animate-scale-in motion-safe:hover:scale-105 motion-safe:transition w-80 sm:w-100"
59-
src="/extra/npmx-cute.svg"
60-
:alt="$t('alt_logo_kawaii')"
61-
/>
62-
<AppLogo id="npmx-index-h1-logo-normal" class="w-42 h-auto sm:w-58 md:w-70" />
63-
<span
64-
id="npmx-index-h1-logo-env"
65-
aria-hidden="true"
66-
class="text-sm sm:text-base md:text-lg transform-origin-br font-mono tracking-widest text-accent absolute -bottom-4 -inset-ie-1.5"
67-
>
68-
{{ env === 'release' ? 'alpha' : env }}
69-
</span>
70-
</h1>
71-
72-
<p
73-
id="npmx-index-tagline"
74-
class="text-fg-muted text-lg sm:text-xl max-w-xl mb-12 lg:mb-14 motion-safe:animate-slide-up motion-safe:animate-fill-both"
75-
style="animation-delay: 0.1s"
76-
>
77-
{{ $t('tagline') }}
78-
</p>
33+
<LandingLogo class="w-42 h-auto sm:w-58 md:w-70" />
7934
<search
8035
class="w-full max-w-2xl motion-safe:animate-slide-up motion-safe:animate-fill-both"
8136
style="animation-delay: 0.2s"

0 commit comments

Comments
 (0)