@@ -25,7 +25,7 @@ const types = [
2525 ' popularity' ,
2626 ' maintenance' ,
2727 ' score' ,
28- ' name'
28+ ' name' ,
2929]
3030
3131watch (pkg, () => {
@@ -44,10 +44,13 @@ const copyToClipboard = async () => {
4444 </script >
4545
4646<template >
47- <div class =" my-8 p-5 rounded-xl border border-gray-200/60 dark:border-white/5 bg-gray-50/50 dark:bg-white/[0.02] flex flex-col sm:flex-row items-end gap-4" >
48-
47+ <div
48+ class =" my-8 p-5 rounded-xl border border-gray-200/60 dark:border-white/5 bg-gray-50/50 dark:bg-white/[0.02] flex flex-col sm:flex-row items-end gap-4"
49+ >
4950 <div class =" flex flex-col gap-1.5 flex-1 w-full" >
50- <label class =" text-[11px] font-bold uppercase tracking-wider text-gray-400 ml-1" >Package Name</label >
51+ <label class =" text-[11px] font-bold uppercase tracking-wider text-gray-400 ml-1"
52+ >Package Name</label
53+ >
5154 <input
5255 v-model =" pkg"
5356 type =" text"
@@ -59,43 +62,57 @@ const copyToClipboard = async () => {
5962 </div >
6063
6164 <div class =" flex flex-col gap-1.5 flex-1 w-full" >
62- <label class =" text-[11px] font-bold uppercase tracking-wider text-gray-400 ml-1" >Badge Type</label >
65+ <label class =" text-[11px] font-bold uppercase tracking-wider text-gray-400 ml-1"
66+ >Badge Type</label
67+ >
6368 <div class =" relative" >
6469 <select
6570 v-model =" type"
6671 class =" w-full h-[42px] px-4 py-2 rounded-lg border border-gray-200 dark:border-white/10 bg-white dark:bg-black/20 focus:ring-2 focus:ring-emerald-500/20 focus:border-emerald-500 outline-none text-sm transition-all appearance-none cursor-pointer"
6772 >
6873 <option v-for =" t in types" :key =" t" :value =" t" class =" dark:bg-gray-900" >{{ t }}</option >
6974 </select >
70- <span class =" absolute right-3 top-1/2 -translate-y-1/2 i-lucide-chevron-down w-4 h-4 text-gray-400 pointer-events-none" />
75+ <span
76+ class =" absolute right-3 top-1/2 -translate-y-1/2 i-lucide-chevron-down w-4 h-4 text-gray-400 pointer-events-none"
77+ />
7178 </div >
7279 </div >
7380
7481 <div class =" flex flex-col gap-1.5 flex-2 w-full" >
75- <label class =" text-[11px] font-bold uppercase tracking-wider text-gray-400 ml-1" >Preview & Action</label >
76- <div class =" flex items-center bg-white dark:bg-black/20 border border-gray-200 dark:border-white/10 rounded-lg h-[42px] overflow-hidden" >
77-
78- <div class =" flex-1 flex items-center justify-center px-3 border-r border-gray-200 dark:border-white/10 h-full bg-gray-50/50 dark:bg-transparent" >
82+ <label class =" text-[11px] font-bold uppercase tracking-wider text-gray-400 ml-1"
83+ >Preview & Action</label
84+ >
85+ <div
86+ class =" flex items-center bg-white dark:bg-black/20 border border-gray-200 dark:border-white/10 rounded-lg h-[42px] overflow-hidden"
87+ >
88+ <div
89+ class =" flex-1 flex items-center justify-center px-3 border-r border-gray-200 dark:border-white/10 h-full bg-gray-50/50 dark:bg-transparent"
90+ >
7991 <img
8092 v-if =" isValid"
8193 :src =" `https://npmx.dev/api/registry/badge/${type}/${pkg}`"
8294 class =" h-[20px]"
8395 alt =" Badge Preview"
8496 @error =" isValid = false"
8597 />
86- <span v-else class =" text-[10px] font-bold text-red-500 uppercase tracking-tighter" >Invalid</span >
98+ <span v-else class =" text-[10px] font-bold text-red-500 uppercase tracking-tighter"
99+ >Invalid</span
100+ >
87101 </div >
88102
89103 <button
90104 @click =" copyToClipboard"
91105 :disabled =" !isValid"
92106 class =" px-4 h-full text-[11px] font-bold uppercase tracking-widest transition-all disabled:opacity-20 disabled:cursor-not-allowed min-w-[85px] hover:bg-gray-50 dark:hover:bg-white/5"
93- :class =" copied ? 'text-emerald-500 bg-emerald-50/50 dark:bg-emerald-500/10' : 'text-gray-500 dark:text-gray-400'"
107+ :class ="
108+ copied
109+ ? 'text-emerald-500 bg-emerald-50/50 dark:bg-emerald-500/10'
110+ : 'text-gray-500 dark:text-gray-400'
111+ "
94112 >
95113 {{ copied ? 'Done!' : 'Copy' }}
96114 </button >
97115 </div >
98116 </div >
99-
100117 </div >
101118</template >
0 commit comments