Migrate to sveltekit #26

Merged
leomurca merged 36 commits from migrate-to-sveltekit into development 2025-06-04 21:41:44 +00:00
5 changed files with 93 additions and 2 deletions
Showing only changes of commit 638f6059e5 - Show all commits

View file

@ -0,0 +1,61 @@
<script>
import { t } from '$lib/translations';
/** @type {string} Title of the page */
export let title;
/** @type {string} Description of the page */
export let description;
/** @type {string} SEO keywords */
export let keywords;
/** @type {string} Canonical URL of the page */
export let url;
/** @type {string} Main image URL for sharing */
export let image;
/** @type {string} Open Graph type (e.g., 'website', 'article') */
export let ogType = 'website';
/** @type {string} Open Graph title (defaults to title) */
export let ogTitle = title;
/** @type {string} Open Graph description (defaults to description) */
export let ogDescription = description;
/** @type {string} Open Graph image (defaults to image) */
export let ogImage = image;
/** @type {string} Twitter card type (e.g., 'summary_large_image') */
export let twitterCard = 'summary_large_image';
/** @type {string} Twitter title (defaults to title) */
export let twitterTitle = title;
/** @type {string} Twitter description (defaults to description) */
export let twitterDescription = description;
/** @type {string} Twitter image (defaults to image) */
export let twitterImage = image;
</script>
<svelte:head>
<title>{$t(title)}</title>
<meta name="description" content={$t(description)} />
<meta name="keywords" content={$t(keywords)} />
<!-- Open Graph -->
<meta property="og:type" content={ogType} />
<meta property="og:title" content={$t(ogTitle)} />
<meta property="og:description" content={$t(ogDescription)} />
<meta property="og:image" content={ogImage} />
<meta property="og:url" content={url} />
<!-- Twitter -->
<meta name="twitter:card" content={twitterCard} />
<meta name="twitter:title" content={twitterTitle} />
<meta name="twitter:description" content={$t(twitterDescription)} />
<meta name="twitter:image" content={twitterImage} />
</svelte:head>

View file

@ -13,5 +13,10 @@
"donation.cta.description": "every little bit helps!",
"cta.title": "🚀 Try It Now",
"cta.cta": "🧵 Open Viewer",
"cta.cta.description": "the fastest <strong>Free Online Embroidery File Viewer</strong>."
"cta.cta.description": "the fastest <strong>Free Online Embroidery File Viewer</strong>.",
"seo.title": "🧵 Free Online Embroidery File Viewer - Fast, Private & No Signup",
"seo.description": "Upload and preview embroidery files instantly with Embroidery Viewer. Supports DST, PES, JEF, EXP, VP3 and more. No installs, no uploads 100% browser-based and free.",
"seo.keywords": "embroidery viewer, online embroidery viewer, embroidery file preview, DST viewer, PES viewer, free embroidery tool, JEF viewer, EXP embroidery, VP3 embroidery viewer, embroidery preview tool, browser embroidery renderer, convert embroidery to PNG",
"seo.url": "https://embroideryviewer.xyz",
"seo.image": "https://embroideryviewer.xyz/og/"
}

View file

@ -13,5 +13,10 @@
"donation.cta.description": "cada pequena ajuda é bem-vinda!",
"cta.title": "🚀 Experimente agora",
"cta.cta": "🧵 Abrir visualizador",
"cta.cta.description": "o <strong>visualizador de arquivos de bordado online gratuito</strong> mais rápido."
"cta.cta.description": "o <strong>visualizador de arquivos de bordado online gratuito</strong> mais rápido.",
"seo.title": "🧵 Visualizador de Bordado Online Grátis - Rápido, Privado e Sem Cadastro",
"seo.description": "Envie e visualize arquivos de bordado instantaneamente com o Embroidery Viewer. Compatível com DST, PES, JEF, EXP, VP3 e mais. Sem instalações, sem uploads 100% no navegador e gratuito.",
"seo.keywords": "visualizador de bordado, visualizador online de bordado, visualizar arquivos de bordado, visualizar DST, visualizar PES, ferramenta gratuita de bordado, visualizador JEF, bordado EXP, visualizador VP3, pré-visualização de bordado, renderizador de bordado no navegador, converter bordado em PNG",
"seo.url": "https://embroideryviewer.xyz",
"seo.image": "https://embroideryviewer.xyz/og/"
}

12
src/routes/+page.js Normal file
View file

@ -0,0 +1,12 @@
/** @type {import('./$types').PageLoad} */
export function load() {
return {
metadata: {
title: 'home.seo.title',
description: 'home.seo.description',
keywords: 'home.seo.keywords',
url: 'https://embroideryviewer.xyz/about',
image: 'https://embroideryviewer.xyz/og/about.jpg',
},
};
}

View file

@ -1,7 +1,15 @@
<script>
import Seo from '$lib/components/Seo.svelte';
import { t } from '$lib/translations';
/** @type {import('./$types').PageProps} */
let { data } = $props();
const metadata = data.metadata;
</script>
<Seo {...metadata} />
<div class="home-container">
<section aria-labelledby="main-title">
<h1 id="main-title">{$t('home.main.title')}</h1>