Skip to content

Commit b7a2d9a

Browse files
committed
Merge branch 'preview'
2 parents f7ec32e + 6e1f18a commit b7a2d9a

14 files changed

Lines changed: 407 additions & 24 deletions

File tree

app/components/home/Stats.vue

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<script setup lang="ts">
2-
const { stats } = useGithubStats()
2+
import NumberFlow from '@number-flow/vue'
3+
4+
const { rawStats } = useGithubStats()
35
</script>
46

57
<template>
@@ -42,9 +44,7 @@ const { stats } = useGithubStats()
4244
<template #fallback>
4345
<Skeleton class="mx-auto h-12 w-24" />
4446
</template>
45-
<div class="text-5xl font-bold tabular-nums">
46-
{{ stats.stars }}
47-
</div>
47+
<NumberFlow class="text-5xl font-bold tabular-nums" :value="rawStats.stars" />
4848
</ClientOnly>
4949
<p class="text-muted-foreground">
5050
{{ $t('home.stats.stars') }}
@@ -60,9 +60,7 @@ const { stats } = useGithubStats()
6060
<template #fallback>
6161
<Skeleton class="mx-auto h-12 w-24" />
6262
</template>
63-
<div class="text-5xl font-bold tabular-nums">
64-
{{ stats.forks }}
65-
</div>
63+
<NumberFlow class="text-5xl font-bold tabular-nums" :value="rawStats.forks" />
6664
</ClientOnly>
6765
<p class="text-muted-foreground">
6866
{{ $t('home.stats.forks') }}

app/composables/useGithubStats.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,15 @@ export function useGithubStats() {
2424
},
2525
)
2626

27+
const rawStats = computed(() => ({
28+
stars: data.value?.stars ?? 6000,
29+
forks: data.value?.forks ?? 4000,
30+
}))
31+
2732
const formattedStats = computed(() => ({
28-
stars: data.value?.stars?.toLocaleString() ?? '6,000',
29-
forks: data.value?.forks?.toLocaleString() ?? '4,000',
33+
stars: rawStats.value.stars.toLocaleString(),
34+
forks: rawStats.value.forks.toLocaleString(),
3035
}))
3136

32-
return { stats: formattedStats, status }
37+
return { stats: formattedStats, rawStats, status }
3338
}

app/layouts/default.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<script setup lang="ts">
2+
import NumberFlow from '@number-flow/vue'
23
import { Menu, Star, X } from 'lucide-vue-next'
34
import { GitHubIcon, TelegramIcon, XIcon } from 'vue3-simple-icons'
45
56
const showMenu = ref(false)
67
const { title, telegram, twitter, github } = useAppConfig()
7-
const { stats } = useGithubStats()
8+
const { rawStats } = useGithubStats()
89
</script>
910

1011
<template>
@@ -105,7 +106,7 @@ const { stats } = useGithubStats()
105106
>
106107
<GitHubIcon class="size-4" />
107108
<Star class="size-3" />
108-
<span class="tabular-nums">{{ stats.stars }}</span>
109+
<NumberFlow class="tabular-nums" :value="rawStats.stars" />
109110
</a>
110111
</Button>
111112

i18n/locales/de-DE.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,18 @@
257257
"image_upload_failed": "Bild konnte nicht hochgeladen werden",
258258
"image_upload_hint": "Klicken oder ziehen zum Hochladen",
259259
"image_ratio_hint": "Empfohlen: 1200×630",
260-
"slug_required": "Bitte zuerst einen Slug eingeben"
260+
"slug_required": "Bitte zuerst einen Slug eingeben",
261+
"utm_builder": "UTM-Builder",
262+
"utm_description": "Erstelle UTM-Parameter lokal und füge sie der Ziel-URL hinzu.",
263+
"utm_preview": "Vorschau",
264+
"utm_source": "UTM-Quelle",
265+
"utm_medium": "UTM-Medium",
266+
"utm_campaign": "UTM-Kampagne",
267+
"utm_term": "UTM-Begriff",
268+
"utm_content": "UTM-Inhalt",
269+
"utm_apply": "Anwenden",
270+
"utm_clear": "Löschen",
271+
"utm_invalid_url": "Gib eine gültige URL ein, um UTM-Parameter in der Vorschau zu sehen und anzuwenden."
261272
},
262273
"sort": {
263274
"newest": "Neueste zuerst",

i18n/locales/en-US.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,18 @@
257257
"image_upload_failed": "Failed to upload image",
258258
"image_upload_hint": "Click or drag to upload image",
259259
"image_ratio_hint": "Recommended: 1200×630",
260-
"slug_required": "Please enter a slug first"
260+
"slug_required": "Please enter a slug first",
261+
"utm_builder": "UTM Builder",
262+
"utm_description": "Build UTM parameters locally and append them to the destination URL.",
263+
"utm_preview": "Preview",
264+
"utm_source": "UTM Source",
265+
"utm_medium": "UTM Medium",
266+
"utm_campaign": "UTM Campaign",
267+
"utm_term": "UTM Term",
268+
"utm_content": "UTM Content",
269+
"utm_apply": "Apply",
270+
"utm_clear": "Clear",
271+
"utm_invalid_url": "Enter a valid URL to preview and apply UTM parameters."
261272
},
262273
"sort": {
263274
"newest": "Newest First",

i18n/locales/fr-FR.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,18 @@
257257
"image_upload_failed": "Échec du téléchargement de l'image",
258258
"image_upload_hint": "Cliquez ou glissez pour télécharger une image",
259259
"image_ratio_hint": "Recommandé : 1200×630",
260-
"slug_required": "Veuillez d'abord entrer un slug"
260+
"slug_required": "Veuillez d'abord entrer un slug",
261+
"utm_builder": "Générateur UTM",
262+
"utm_description": "Créez des paramètres UTM localement et ajoutez-les à l’URL de destination.",
263+
"utm_preview": "Aperçu",
264+
"utm_source": "Source UTM",
265+
"utm_medium": "Support UTM",
266+
"utm_campaign": "Campagne UTM",
267+
"utm_term": "Terme UTM",
268+
"utm_content": "Contenu UTM",
269+
"utm_apply": "Appliquer",
270+
"utm_clear": "Effacer",
271+
"utm_invalid_url": "Saisissez une URL valide pour prévisualiser et appliquer les paramètres UTM."
261272
},
262273
"sort": {
263274
"newest": "Les plus récents",

i18n/locales/it-IT.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,18 @@
257257
"image_upload_failed": "Caricamento immagine fallito",
258258
"image_upload_hint": "Clicca o trascina per caricare l'immagine",
259259
"image_ratio_hint": "Consigliato: 1200×630",
260-
"slug_required": "Inserisci prima uno slug"
260+
"slug_required": "Inserisci prima uno slug",
261+
"utm_builder": "Generatore UTM",
262+
"utm_description": "Crea parametri UTM localmente e aggiungili all'URL di destinazione.",
263+
"utm_preview": "Anteprima",
264+
"utm_source": "Sorgente UTM",
265+
"utm_medium": "Mezzo UTM",
266+
"utm_campaign": "Campagna UTM",
267+
"utm_term": "Termine UTM",
268+
"utm_content": "Contenuto UTM",
269+
"utm_apply": "Applica",
270+
"utm_clear": "Cancella",
271+
"utm_invalid_url": "Inserisci un URL valido per visualizzare l'anteprima e applicare i parametri UTM."
261272
},
262273
"sort": {
263274
"newest": "Più Recenti",

i18n/locales/pt-BR.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,18 @@
257257
"image_upload_failed": "Falha ao enviar imagem",
258258
"image_upload_hint": "Clique ou arraste para enviar a imagem",
259259
"image_ratio_hint": "Recomendado: 1200×630",
260-
"slug_required": "Por favor, insira um slug primeiro"
260+
"slug_required": "Por favor, insira um slug primeiro",
261+
"utm_builder": "Construtor UTM",
262+
"utm_description": "Crie parâmetros UTM localmente e anexe-os à URL de destino.",
263+
"utm_preview": "Pré-visualização",
264+
"utm_source": "Origem UTM",
265+
"utm_medium": "Mídia UTM",
266+
"utm_campaign": "Campanha UTM",
267+
"utm_term": "Termo UTM",
268+
"utm_content": "Conteúdo UTM",
269+
"utm_apply": "Aplicar",
270+
"utm_clear": "Limpar",
271+
"utm_invalid_url": "Insira uma URL válida para visualizar e aplicar os parâmetros UTM."
261272
},
262273
"sort": {
263274
"newest": "Mais recentes primeiro",

i18n/locales/pt-PT.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,18 @@
257257
"image_upload_failed": "Falha ao carregar imagem",
258258
"image_upload_hint": "Clica ou arrasta para carregar a imagem",
259259
"image_ratio_hint": "Recomendado: 1200×630",
260-
"slug_required": "Por favor, insere um slug primeiro"
260+
"slug_required": "Por favor, insere um slug primeiro",
261+
"utm_builder": "Construtor UTM",
262+
"utm_description": "Crie parâmetros UTM localmente e anexe-os ao URL de destino.",
263+
"utm_preview": "Pré-visualização",
264+
"utm_source": "Origem UTM",
265+
"utm_medium": "Meio UTM",
266+
"utm_campaign": "Campanha UTM",
267+
"utm_term": "Termo UTM",
268+
"utm_content": "Conteúdo UTM",
269+
"utm_apply": "Aplicar",
270+
"utm_clear": "Limpar",
271+
"utm_invalid_url": "Introduza um URL válido para pré-visualizar e aplicar os parâmetros UTM."
261272
},
262273
"sort": {
263274
"newest": "Mais recentes primeiro",

i18n/locales/vi-VN.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,18 @@
257257
"image_upload_failed": "Tải lên hình ảnh thất bại",
258258
"image_upload_hint": "Nhấp hoặc kéo thả để tải lên hình ảnh",
259259
"image_ratio_hint": "Khuyến nghị: 1200×630",
260-
"slug_required": "Vui lòng nhập slug trước"
260+
"slug_required": "Vui lòng nhập slug trước",
261+
"utm_builder": "Trình tạo UTM",
262+
"utm_description": "Tạo tham số UTM cục bộ và thêm vào URL đích.",
263+
"utm_preview": "Xem trước",
264+
"utm_source": "Nguồn UTM",
265+
"utm_medium": "Phương tiện UTM",
266+
"utm_campaign": "Chiến dịch UTM",
267+
"utm_term": "Từ khóa UTM",
268+
"utm_content": "Nội dung UTM",
269+
"utm_apply": "Áp dụng",
270+
"utm_clear": "Xóa",
271+
"utm_invalid_url": "Nhập URL hợp lệ để xem trước và áp dụng tham số UTM."
261272
},
262273
"sort": {
263274
"newest": "Mới nhất trước",

0 commit comments

Comments
 (0)