diff --git a/apps/mana/apps/web/src/lib/i18n/locales/news/de.json b/apps/mana/apps/web/src/lib/i18n/locales/news/de.json new file mode 100644 index 000000000..badd44176 --- /dev/null +++ b/apps/mana/apps/web/src/lib/i18n/locales/news/de.json @@ -0,0 +1,130 @@ +{ + "app": { + "name": "News", + "tagline": "Dein kuratierter Newsfeed" + }, + "feed": { + "title": "News", + "articles": "{count} Artikel", + "refresh": "Neu laden", + "loading": "Lade Artikel…", + "empty": "Keine neuen Artikel zu deinen Themen.", + "emptyHint": "Probiere ↻ oder erweitere deine Themen.", + "loadError": "Fehler beim Laden", + "savedLink": "Gespeichert", + "settingsLink": "Einstellungen" + }, + "reactions": { + "interested": "Interessiert", + "interestedTitle": "Speichern + mehr davon", + "notInterested": "Nicht für mich", + "notInterestedTitle": "Weniger davon", + "blockSource": "Quelle ausblenden", + "blockSourceLabel": "{source} ausblenden" + }, + "onboarding": { + "welcome": "Willkommen beim News Hub", + "intro": "In drei Schritten baust du dir deinen persönlichen Newsfeed.", + "stepTopics": "1. Themen", + "stepLanguage": "2. Sprache", + "stepSources": "3. Quellen", + "topicsTitle": "Was interessiert dich?", + "topicsHint": "Wähle mindestens zwei Themen.", + "languageTitle": "In welchen Sprachen liest du?", + "sourcesTitle": "Quellen aus deinen Themen", + "sourcesHint": "Tippe eine Quelle an um sie auszublenden. Du kannst das jederzeit ändern.", + "back": "Zurück", + "next": "Weiter", + "finish": "Fertig" + }, + "reader": { + "back": "Zurück", + "smaller": "Kleiner", + "larger": "Größer", + "save": "Speichern", + "loading": "Lade…", + "notFound": "Artikel nicht gefunden.", + "backToFeed": "Zurück zum Feed", + "openOriginal": "Original öffnen" + }, + "saved": { + "title": "Gespeichert", + "backToFeed": "Feed", + "addUrl": "URL hinzufügen", + "tabUnread": "Ungelesen", + "tabFavorites": "Favoriten", + "tabArchive": "Archiv", + "emptyUnread": "Keine ungelesenen Artikel.", + "emptyUnreadHint": "Reagiere im Feed mit „Interessiert\" um Artikel hier zu sammeln.", + "emptyFavorites": "Noch keine Favoriten.", + "emptyArchive": "Archiv ist leer.", + "badgeOwn": "eigen", + "actionFavorite": "Favorit", + "actionArchive": "Archivieren", + "actionUnarchive": "Wiederherstellen", + "actionDelete": "Löschen", + "actionCategory": "Kategorie", + "categoryNone": "— Keine —" + }, + "categories": { + "all": "Alle", + "manage": "Kategorien verwalten", + "placeholder": "Neue Kategorie…", + "add": "Hinzufügen", + "empty": "Noch keine Kategorien. Erstelle eine oben.", + "rename": "umbenennen", + "delete": "löschen", + "deleteConfirm": "Kategorie löschen? Artikel bleiben erhalten." + }, + "add": { + "title": "Artikel speichern", + "hint": "Füge eine URL ein. Wir extrahieren den Volltext (Mozilla Readability) und legen ihn in deine verschlüsselte Leseliste.", + "backLink": "Gespeichert", + "placeholder": "https://…", + "submit": "Speichern", + "loading": "Lade…", + "errorGeneric": "Speichern fehlgeschlagen" + }, + "preferences": { + "title": "News-Einstellungen", + "backToFeed": "Feed", + "topicsHeading": "Themen", + "topicsHint": "Welche Themen sollen im Feed auftauchen?", + "languagesHeading": "Sprachen", + "sourcesHeading": "Quellen", + "sourcesHint": "Du blockst aktuell {count} Quellen.", + "sourcesLink": "Quellen verwalten", + "weightsHeading": "Gelernte Gewichtungen", + "weightsHint": "Über Reaktionen lernt der Feed deine Vorlieben: {topics} Themen-Gewichte, {sources} Quellen-Gewichte.", + "weightsReset": "Zurücksetzen", + "weightsResetConfirm": "Alle gelernten Gewichtungen zurücksetzen?", + "onboardingHeading": "Onboarding", + "onboardingHint": "Themen, Sprachen und Quellen neu wählen.", + "onboardingRerun": "Onboarding neu starten" + }, + "sources": { + "title": "Quellen", + "backToPreferences": "Einstellungen", + "hint": "{count} blockiert. Tippe auf eine Quelle um sie ein- oder auszublenden.", + "blocked": "blockiert", + "weightTooltip": "Gewicht: {weight}" + }, + "topics": { + "tech": "Tech", + "wissenschaft": "Wissenschaft", + "weltgeschehen": "Weltgeschehen", + "wirtschaft": "Wirtschaft", + "kultur": "Kultur", + "gesundheit": "Gesundheit", + "politik": "Politik" + }, + "languages": { + "de": "Deutsch", + "en": "English" + }, + "widget": { + "title": "News", + "empty": "Keine ungelesenen News.", + "viewAll": "Alle ansehen" + } +} diff --git a/apps/mana/apps/web/src/lib/i18n/locales/news/en.json b/apps/mana/apps/web/src/lib/i18n/locales/news/en.json new file mode 100644 index 000000000..db80e0303 --- /dev/null +++ b/apps/mana/apps/web/src/lib/i18n/locales/news/en.json @@ -0,0 +1,130 @@ +{ + "app": { + "name": "News", + "tagline": "Your curated news feed" + }, + "feed": { + "title": "News", + "articles": "{count} articles", + "refresh": "Refresh", + "loading": "Loading articles…", + "empty": "No new articles for your topics.", + "emptyHint": "Try ↻ or pick more topics.", + "loadError": "Loading failed", + "savedLink": "Saved", + "settingsLink": "Settings" + }, + "reactions": { + "interested": "Interested", + "interestedTitle": "Save and see more like this", + "notInterested": "Not for me", + "notInterestedTitle": "Show less of this", + "blockSource": "Hide source", + "blockSourceLabel": "Hide {source}" + }, + "onboarding": { + "welcome": "Welcome to the News Hub", + "intro": "Three steps and you'll have your personal news feed.", + "stepTopics": "1. Topics", + "stepLanguage": "2. Language", + "stepSources": "3. Sources", + "topicsTitle": "What are you interested in?", + "topicsHint": "Pick at least two topics.", + "languageTitle": "Which languages do you read?", + "sourcesTitle": "Sources for your topics", + "sourcesHint": "Tap a source to hide it. You can change this any time.", + "back": "Back", + "next": "Next", + "finish": "Done" + }, + "reader": { + "back": "Back", + "smaller": "Smaller", + "larger": "Larger", + "save": "Save", + "loading": "Loading…", + "notFound": "Article not found.", + "backToFeed": "Back to feed", + "openOriginal": "Open original" + }, + "saved": { + "title": "Saved", + "backToFeed": "Feed", + "addUrl": "Add URL", + "tabUnread": "Unread", + "tabFavorites": "Favorites", + "tabArchive": "Archive", + "emptyUnread": "No unread articles.", + "emptyUnreadHint": "Tap \"Interested\" in the feed to collect articles here.", + "emptyFavorites": "No favorites yet.", + "emptyArchive": "Archive is empty.", + "badgeOwn": "own", + "actionFavorite": "Favorite", + "actionArchive": "Archive", + "actionUnarchive": "Restore", + "actionDelete": "Delete", + "actionCategory": "Category", + "categoryNone": "— None —" + }, + "categories": { + "all": "All", + "manage": "Manage categories", + "placeholder": "New category…", + "add": "Add", + "empty": "No categories yet. Create one above.", + "rename": "rename", + "delete": "delete", + "deleteConfirm": "Delete category? Articles are kept." + }, + "add": { + "title": "Save article", + "hint": "Paste a URL. We'll extract the full text (Mozilla Readability) and store it in your encrypted reading list.", + "backLink": "Saved", + "placeholder": "https://…", + "submit": "Save", + "loading": "Loading…", + "errorGeneric": "Save failed" + }, + "preferences": { + "title": "News settings", + "backToFeed": "Feed", + "topicsHeading": "Topics", + "topicsHint": "Which topics should appear in the feed?", + "languagesHeading": "Languages", + "sourcesHeading": "Sources", + "sourcesHint": "You're currently blocking {count} sources.", + "sourcesLink": "Manage sources", + "weightsHeading": "Learned weights", + "weightsHint": "From your reactions the feed learns your preferences: {topics} topic weights, {sources} source weights.", + "weightsReset": "Reset", + "weightsResetConfirm": "Reset all learned weights?", + "onboardingHeading": "Onboarding", + "onboardingHint": "Pick topics, languages and sources from scratch.", + "onboardingRerun": "Restart onboarding" + }, + "sources": { + "title": "Sources", + "backToPreferences": "Settings", + "hint": "{count} blocked. Tap a source to toggle.", + "blocked": "blocked", + "weightTooltip": "Weight: {weight}" + }, + "topics": { + "tech": "Tech", + "wissenschaft": "Science", + "weltgeschehen": "World", + "wirtschaft": "Business", + "kultur": "Culture", + "gesundheit": "Health", + "politik": "Politics" + }, + "languages": { + "de": "German", + "en": "English" + }, + "widget": { + "title": "News", + "empty": "No unread news.", + "viewAll": "View all" + } +} diff --git a/apps/mana/apps/web/src/lib/i18n/locales/news/es.json b/apps/mana/apps/web/src/lib/i18n/locales/news/es.json new file mode 100644 index 000000000..d50af57de --- /dev/null +++ b/apps/mana/apps/web/src/lib/i18n/locales/news/es.json @@ -0,0 +1,130 @@ +{ + "app": { + "name": "News", + "tagline": "Tu feed de noticias curado" + }, + "feed": { + "title": "Noticias", + "articles": "{count} artículos", + "refresh": "Recargar", + "loading": "Cargando artículos…", + "empty": "No hay artículos nuevos para tus temas.", + "emptyHint": "Prueba ↻ o añade más temas.", + "loadError": "Error al cargar", + "savedLink": "Guardados", + "settingsLink": "Ajustes" + }, + "reactions": { + "interested": "Me interesa", + "interestedTitle": "Guardar y ver más como esto", + "notInterested": "No es para mí", + "notInterestedTitle": "Mostrar menos de esto", + "blockSource": "Ocultar fuente", + "blockSourceLabel": "Ocultar {source}" + }, + "onboarding": { + "welcome": "Bienvenido al News Hub", + "intro": "En tres pasos crearás tu feed personal.", + "stepTopics": "1. Temas", + "stepLanguage": "2. Idioma", + "stepSources": "3. Fuentes", + "topicsTitle": "¿Qué te interesa?", + "topicsHint": "Elige al menos dos temas.", + "languageTitle": "¿En qué idiomas lees?", + "sourcesTitle": "Fuentes de tus temas", + "sourcesHint": "Toca una fuente para ocultarla. Puedes cambiarlo cuando quieras.", + "back": "Atrás", + "next": "Siguiente", + "finish": "Listo" + }, + "reader": { + "back": "Atrás", + "smaller": "Menor", + "larger": "Mayor", + "save": "Guardar", + "loading": "Cargando…", + "notFound": "Artículo no encontrado.", + "backToFeed": "Volver al feed", + "openOriginal": "Abrir original" + }, + "saved": { + "title": "Guardados", + "backToFeed": "Feed", + "addUrl": "Añadir URL", + "tabUnread": "No leídos", + "tabFavorites": "Favoritos", + "tabArchive": "Archivo", + "emptyUnread": "No hay artículos sin leer.", + "emptyUnreadHint": "Toca \"Me interesa\" en el feed para coleccionarlos aquí.", + "emptyFavorites": "Aún no hay favoritos.", + "emptyArchive": "El archivo está vacío.", + "badgeOwn": "propio", + "actionFavorite": "Favorito", + "actionArchive": "Archivar", + "actionUnarchive": "Restaurar", + "actionDelete": "Eliminar", + "actionCategory": "Categoría", + "categoryNone": "— Ninguna —" + }, + "categories": { + "all": "Todos", + "manage": "Gestionar categorías", + "placeholder": "Nueva categoría…", + "add": "Añadir", + "empty": "Aún no hay categorías. Crea una arriba.", + "rename": "renombrar", + "delete": "eliminar", + "deleteConfirm": "¿Eliminar la categoría? Los artículos se mantienen." + }, + "add": { + "title": "Guardar artículo", + "hint": "Pega una URL. Extraemos el texto completo (Mozilla Readability) y lo guardamos en tu lista de lectura cifrada.", + "backLink": "Guardados", + "placeholder": "https://…", + "submit": "Guardar", + "loading": "Cargando…", + "errorGeneric": "Error al guardar" + }, + "preferences": { + "title": "Ajustes de noticias", + "backToFeed": "Feed", + "topicsHeading": "Temas", + "topicsHint": "¿Qué temas deben aparecer en el feed?", + "languagesHeading": "Idiomas", + "sourcesHeading": "Fuentes", + "sourcesHint": "Estás bloqueando {count} fuentes.", + "sourcesLink": "Gestionar fuentes", + "weightsHeading": "Pesos aprendidos", + "weightsHint": "El feed aprende tus preferencias a partir de tus reacciones: {topics} pesos de temas, {sources} pesos de fuentes.", + "weightsReset": "Restablecer", + "weightsResetConfirm": "¿Restablecer todos los pesos aprendidos?", + "onboardingHeading": "Onboarding", + "onboardingHint": "Vuelve a elegir temas, idiomas y fuentes.", + "onboardingRerun": "Reiniciar onboarding" + }, + "sources": { + "title": "Fuentes", + "backToPreferences": "Ajustes", + "hint": "{count} bloqueadas. Toca una fuente para alternar.", + "blocked": "bloqueada", + "weightTooltip": "Peso: {weight}" + }, + "topics": { + "tech": "Tecnología", + "wissenschaft": "Ciencia", + "weltgeschehen": "Mundo", + "wirtschaft": "Economía", + "kultur": "Cultura", + "gesundheit": "Salud", + "politik": "Política" + }, + "languages": { + "de": "Alemán", + "en": "Inglés" + }, + "widget": { + "title": "Noticias", + "empty": "Sin noticias por leer.", + "viewAll": "Ver todo" + } +} diff --git a/apps/mana/apps/web/src/lib/i18n/locales/news/fr.json b/apps/mana/apps/web/src/lib/i18n/locales/news/fr.json new file mode 100644 index 000000000..4ed832b81 --- /dev/null +++ b/apps/mana/apps/web/src/lib/i18n/locales/news/fr.json @@ -0,0 +1,130 @@ +{ + "app": { + "name": "News", + "tagline": "Ton fil d'actualité personnalisé" + }, + "feed": { + "title": "Actualités", + "articles": "{count} articles", + "refresh": "Recharger", + "loading": "Chargement des articles…", + "empty": "Aucun nouvel article pour tes thèmes.", + "emptyHint": "Essaie ↻ ou ajoute des thèmes.", + "loadError": "Échec du chargement", + "savedLink": "Enregistrés", + "settingsLink": "Réglages" + }, + "reactions": { + "interested": "Intéressant", + "interestedTitle": "Enregistrer et en voir plus", + "notInterested": "Pas pour moi", + "notInterestedTitle": "Moins de ce genre", + "blockSource": "Masquer la source", + "blockSourceLabel": "Masquer {source}" + }, + "onboarding": { + "welcome": "Bienvenue dans le News Hub", + "intro": "Trois étapes pour bâtir ton fil personnel.", + "stepTopics": "1. Thèmes", + "stepLanguage": "2. Langue", + "stepSources": "3. Sources", + "topicsTitle": "Qu'est-ce qui t'intéresse ?", + "topicsHint": "Choisis au moins deux thèmes.", + "languageTitle": "Dans quelles langues lis-tu ?", + "sourcesTitle": "Sources de tes thèmes", + "sourcesHint": "Touche une source pour la masquer. Tu peux changer à tout moment.", + "back": "Retour", + "next": "Suivant", + "finish": "Terminé" + }, + "reader": { + "back": "Retour", + "smaller": "Plus petit", + "larger": "Plus grand", + "save": "Enregistrer", + "loading": "Chargement…", + "notFound": "Article introuvable.", + "backToFeed": "Retour au fil", + "openOriginal": "Ouvrir l'original" + }, + "saved": { + "title": "Enregistrés", + "backToFeed": "Fil", + "addUrl": "Ajouter une URL", + "tabUnread": "Non lus", + "tabFavorites": "Favoris", + "tabArchive": "Archives", + "emptyUnread": "Aucun article non lu.", + "emptyUnreadHint": "Touche « Intéressant » dans le fil pour collecter les articles ici.", + "emptyFavorites": "Aucun favori pour l'instant.", + "emptyArchive": "Les archives sont vides.", + "badgeOwn": "perso", + "actionFavorite": "Favori", + "actionArchive": "Archiver", + "actionUnarchive": "Restaurer", + "actionDelete": "Supprimer", + "actionCategory": "Catégorie", + "categoryNone": "— Aucune —" + }, + "categories": { + "all": "Tous", + "manage": "Gérer les catégories", + "placeholder": "Nouvelle catégorie…", + "add": "Ajouter", + "empty": "Aucune catégorie. Crées-en une au-dessus.", + "rename": "renommer", + "delete": "supprimer", + "deleteConfirm": "Supprimer la catégorie ? Les articles sont conservés." + }, + "add": { + "title": "Enregistrer un article", + "hint": "Colle une URL. Nous extrayons le texte complet (Mozilla Readability) et l'ajoutons à ta liste de lecture chiffrée.", + "backLink": "Enregistrés", + "placeholder": "https://…", + "submit": "Enregistrer", + "loading": "Chargement…", + "errorGeneric": "Échec de l'enregistrement" + }, + "preferences": { + "title": "Réglages des actualités", + "backToFeed": "Fil", + "topicsHeading": "Thèmes", + "topicsHint": "Quels thèmes doivent apparaître dans le fil ?", + "languagesHeading": "Langues", + "sourcesHeading": "Sources", + "sourcesHint": "Tu bloques actuellement {count} sources.", + "sourcesLink": "Gérer les sources", + "weightsHeading": "Pondérations apprises", + "weightsHint": "Le fil apprend tes préférences via tes réactions : {topics} pondérations de thèmes, {sources} pondérations de sources.", + "weightsReset": "Réinitialiser", + "weightsResetConfirm": "Réinitialiser toutes les pondérations apprises ?", + "onboardingHeading": "Onboarding", + "onboardingHint": "Re-choisis thèmes, langues et sources.", + "onboardingRerun": "Recommencer l'onboarding" + }, + "sources": { + "title": "Sources", + "backToPreferences": "Réglages", + "hint": "{count} bloquées. Touche une source pour basculer.", + "blocked": "bloquée", + "weightTooltip": "Poids : {weight}" + }, + "topics": { + "tech": "Tech", + "wissenschaft": "Sciences", + "weltgeschehen": "Monde", + "wirtschaft": "Économie", + "kultur": "Culture", + "gesundheit": "Santé", + "politik": "Politique" + }, + "languages": { + "de": "Allemand", + "en": "Anglais" + }, + "widget": { + "title": "Actualités", + "empty": "Aucune actualité non lue.", + "viewAll": "Tout voir" + } +} diff --git a/apps/mana/apps/web/src/lib/i18n/locales/news/it.json b/apps/mana/apps/web/src/lib/i18n/locales/news/it.json new file mode 100644 index 000000000..46db04cde --- /dev/null +++ b/apps/mana/apps/web/src/lib/i18n/locales/news/it.json @@ -0,0 +1,130 @@ +{ + "app": { + "name": "News", + "tagline": "Il tuo feed di notizie curato" + }, + "feed": { + "title": "Notizie", + "articles": "{count} articoli", + "refresh": "Ricarica", + "loading": "Caricamento articoli…", + "empty": "Nessun nuovo articolo per i tuoi temi.", + "emptyHint": "Prova ↻ o aggiungi temi.", + "loadError": "Errore di caricamento", + "savedLink": "Salvati", + "settingsLink": "Impostazioni" + }, + "reactions": { + "interested": "Mi interessa", + "interestedTitle": "Salva e mostra di più di questo", + "notInterested": "Non per me", + "notInterestedTitle": "Mostra di meno", + "blockSource": "Nascondi fonte", + "blockSourceLabel": "Nascondi {source}" + }, + "onboarding": { + "welcome": "Benvenuto nel News Hub", + "intro": "In tre passi crei il tuo feed personale.", + "stepTopics": "1. Temi", + "stepLanguage": "2. Lingua", + "stepSources": "3. Fonti", + "topicsTitle": "Cosa ti interessa?", + "topicsHint": "Scegli almeno due temi.", + "languageTitle": "In quali lingue leggi?", + "sourcesTitle": "Fonti dei tuoi temi", + "sourcesHint": "Tocca una fonte per nasconderla. Puoi cambiare in qualsiasi momento.", + "back": "Indietro", + "next": "Avanti", + "finish": "Fatto" + }, + "reader": { + "back": "Indietro", + "smaller": "Più piccolo", + "larger": "Più grande", + "save": "Salva", + "loading": "Caricamento…", + "notFound": "Articolo non trovato.", + "backToFeed": "Torna al feed", + "openOriginal": "Apri originale" + }, + "saved": { + "title": "Salvati", + "backToFeed": "Feed", + "addUrl": "Aggiungi URL", + "tabUnread": "Da leggere", + "tabFavorites": "Preferiti", + "tabArchive": "Archivio", + "emptyUnread": "Nessun articolo da leggere.", + "emptyUnreadHint": "Tocca \"Mi interessa\" nel feed per raccogliere articoli qui.", + "emptyFavorites": "Ancora nessun preferito.", + "emptyArchive": "L'archivio è vuoto.", + "badgeOwn": "personale", + "actionFavorite": "Preferito", + "actionArchive": "Archivia", + "actionUnarchive": "Ripristina", + "actionDelete": "Elimina", + "actionCategory": "Categoria", + "categoryNone": "— Nessuna —" + }, + "categories": { + "all": "Tutti", + "manage": "Gestisci categorie", + "placeholder": "Nuova categoria…", + "add": "Aggiungi", + "empty": "Nessuna categoria. Creane una sopra.", + "rename": "rinomina", + "delete": "elimina", + "deleteConfirm": "Eliminare la categoria? Gli articoli vengono mantenuti." + }, + "add": { + "title": "Salva articolo", + "hint": "Incolla un URL. Estraiamo il testo completo (Mozilla Readability) e lo salviamo nella tua lista di lettura cifrata.", + "backLink": "Salvati", + "placeholder": "https://…", + "submit": "Salva", + "loading": "Caricamento…", + "errorGeneric": "Salvataggio fallito" + }, + "preferences": { + "title": "Impostazioni notizie", + "backToFeed": "Feed", + "topicsHeading": "Temi", + "topicsHint": "Quali temi devono apparire nel feed?", + "languagesHeading": "Lingue", + "sourcesHeading": "Fonti", + "sourcesHint": "Stai bloccando {count} fonti.", + "sourcesLink": "Gestisci fonti", + "weightsHeading": "Pesi appresi", + "weightsHint": "Dalle tue reazioni il feed impara le tue preferenze: {topics} pesi tema, {sources} pesi fonte.", + "weightsReset": "Reimposta", + "weightsResetConfirm": "Reimpostare tutti i pesi appresi?", + "onboardingHeading": "Onboarding", + "onboardingHint": "Riscegli temi, lingue e fonti.", + "onboardingRerun": "Riavvia onboarding" + }, + "sources": { + "title": "Fonti", + "backToPreferences": "Impostazioni", + "hint": "{count} bloccate. Tocca una fonte per cambiare stato.", + "blocked": "bloccata", + "weightTooltip": "Peso: {weight}" + }, + "topics": { + "tech": "Tech", + "wissenschaft": "Scienza", + "weltgeschehen": "Mondo", + "wirtschaft": "Economia", + "kultur": "Cultura", + "gesundheit": "Salute", + "politik": "Politica" + }, + "languages": { + "de": "Tedesco", + "en": "Inglese" + }, + "widget": { + "title": "Notizie", + "empty": "Nessuna notizia da leggere.", + "viewAll": "Vedi tutte" + } +} diff --git a/apps/mana/apps/web/src/routes/(app)/news/+layout.svelte b/apps/mana/apps/web/src/routes/(app)/news/+layout.svelte new file mode 100644 index 000000000..4f5649c08 --- /dev/null +++ b/apps/mana/apps/web/src/routes/(app)/news/+layout.svelte @@ -0,0 +1,39 @@ + + + +{@render children()} diff --git a/apps/mana/apps/web/src/routes/(app)/news/+page.svelte b/apps/mana/apps/web/src/routes/(app)/news/+page.svelte new file mode 100644 index 000000000..82ca73885 --- /dev/null +++ b/apps/mana/apps/web/src/routes/(app)/news/+page.svelte @@ -0,0 +1,672 @@ + + + + + News — Mana + + +
+ {#if !prefs.onboardingCompleted} + +
+

Willkommen beim News Hub

+

In drei Schritten baust du dir deinen persönlichen Newsfeed.

+
+ +
+ 1. Themen + 2. Sprache + 3. Quellen +
+ + {#if onboardingStep === 1} +
+

Was interessiert dich?

+

Wähle mindestens zwei Themen.

+
+ {#each ALL_TOPICS as topic} + + {/each} +
+
+ +
+
+ {:else if onboardingStep === 2} +
+

In welchen Sprachen liest du?

+
+ + +
+
+ + +
+
+ {:else} +
+

Quellen aus deinen Themen

+

+ Tippe eine Quelle an um sie auszublenden. Du kannst das jederzeit ändern. +

+
+ {#each pickedTopics as topic} +
+

+ {TOPIC_LABELS[topic].emoji} + {TOPIC_LABELS[topic].de} +

+
+ {#each sourcesForTopic(topic) as src} + + {/each} +
+
+ {/each} +
+
+ + +
+
+ {/if} + {:else} + +
+
+

News

+
+ {ranked.length} Artikel + {#if feedCacheStore.lastError} + · Fehler beim Laden + {/if} +
+
+
+ + 📑 + +
+
+ + +
+ {#each prefs.selectedTopics as topic} + + {TOPIC_LABELS[topic].emoji} + {TOPIC_LABELS[topic].de} + + {/each} +
+ + {#if ranked.length === 0} +
+ {#if pool.length === 0} +

Lade Artikel…

+ {:else} +

Keine neuen Artikel zu deinen Themen.

+

Probiere "↻" oder erweitere deine Themen.

+ {/if} +
+ {:else} +
+ {#each ranked as { article } (article.id)} +
+ {#if article.imageUrl} + + {/if} +
+
+ {article.siteName} + · + {formatRelativeTime(article.publishedAt)} + {#if article.readingTimeMinutes} + · + {article.readingTimeMinutes} min + {/if} +
+ + {#if article.excerpt} +

{article.excerpt}

+ {/if} +
+ + + +
+
+
+ {/each} +
+ {/if} + {/if} +
+ + diff --git a/apps/mana/apps/web/src/routes/(app)/news/[id]/+page.svelte b/apps/mana/apps/web/src/routes/(app)/news/[id]/+page.svelte new file mode 100644 index 000000000..a966a5b79 --- /dev/null +++ b/apps/mana/apps/web/src/routes/(app)/news/[id]/+page.svelte @@ -0,0 +1,331 @@ + + + + + {title || 'Lese-Ansicht'} — Mana + + +
+
+ +
+ + + {#if loaded?.kind === 'curated'} + + {/if} +
+ + {#if !loaded} +
Lade…
+ {:else if loaded.kind === 'missing'} +
+

Artikel nicht gefunden.

+ +
+ {:else} +
+ {#if meta?.imageUrl} + + {/if} +

{title}

+
+ {#if meta?.siteName} + {meta.siteName} + {/if} + {#if meta?.author} + · + {meta.author} + {/if} + {#if meta?.publishedAt} + · + {formatRelativeTime(meta.publishedAt)} + {/if} + {#if meta?.readingTimeMinutes} + · + {meta.readingTimeMinutes} min + {/if} +
+ + {#if html} + +
{@html html}
+ {:else if plain} +
+ {#each plain.split('\n\n') as para} +

{para}

+ {/each} +
+ {/if} + + {#if meta?.originalUrl} + + {/if} +
+ {/if} +
+ + diff --git a/apps/mana/apps/web/src/routes/(app)/news/add/+page.svelte b/apps/mana/apps/web/src/routes/(app)/news/add/+page.svelte new file mode 100644 index 000000000..4a99364ef --- /dev/null +++ b/apps/mana/apps/web/src/routes/(app)/news/add/+page.svelte @@ -0,0 +1,137 @@ + + + + + URL hinzufügen — News — Mana + + +
+
+ +

Artikel speichern

+

+ Füge eine URL ein. Wir extrahieren den Volltext (Mozilla Readability) und legen ihn in deine + verschlüsselte Leseliste. +

+
+ +
+ + + +
+ + {#if error} +
{error}
+ {/if} +
+ + diff --git a/apps/mana/apps/web/src/routes/(app)/news/preferences/+page.svelte b/apps/mana/apps/web/src/routes/(app)/news/preferences/+page.svelte new file mode 100644 index 000000000..4b4623d9c --- /dev/null +++ b/apps/mana/apps/web/src/routes/(app)/news/preferences/+page.svelte @@ -0,0 +1,217 @@ + + + + + Einstellungen — News — Mana + + +
+
+ +

News-Einstellungen

+
+ +
+

Themen

+

Welche Themen sollen im Feed auftauchen?

+
+ {#each ALL_TOPICS as topic} + + {/each} +
+
+ +
+

Sprachen

+
+ + +
+
+ +
+

Quellen

+

+ Du blockst aktuell {prefs.blockedSources.length} Quellen. +

+ Quellen verwalten → +
+ +
+

Gelernte Gewichtungen

+

+ Über Reaktionen lernt der Feed deine Vorlieben: + {topicWeightCount} Themen-Gewichte, {sourceWeightCount} Quellen-Gewichte. +

+ +
+ +
+

Onboarding

+

Themen, Sprachen und Quellen neu wählen.

+ +
+
+ + diff --git a/apps/mana/apps/web/src/routes/(app)/news/saved/+page.svelte b/apps/mana/apps/web/src/routes/(app)/news/saved/+page.svelte new file mode 100644 index 000000000..adcbcbb7b --- /dev/null +++ b/apps/mana/apps/web/src/routes/(app)/news/saved/+page.svelte @@ -0,0 +1,709 @@ + + + + + Gespeichert — News — Mana + + +
+
+
+ +

Gespeichert

+
+ + URL hinzufügen +
+ + + + +
+
+ + {#each categories as cat (cat.id)} + + {/each} + +
+ {#if showCategoryEditor} +
+
{ + e.preventDefault(); + void createCategory(); + }} + > + + +
+ {#if categories.length > 0} +
    + {#each categories as cat (cat.id)} +
  • + + {cat.name} + + +
  • + {/each} +
+ {:else} +

Noch keine Kategorien. Erstelle eine oben.

+ {/if} +
+ {/if} +
+ + {#if visible.length === 0} +
+ {#if tab === 'unread'} +

Keine ungelesenen Artikel.

+

Reagiere im Feed mit „❤️ Interessiert" um Artikel hier zu sammeln.

+ {:else if tab === 'favorites'} +

Noch keine Favoriten.

+ {:else} +

Archiv ist leer.

+ {/if} +
+ {:else} +
+ {#each visible as article (article.id)} +
+ {#if article.imageUrl} + + {/if} +
+
+ {article.siteName ?? 'Eigener Link'} + {#if article.publishedAt} + · + {formatRelativeTime(article.publishedAt)} + {/if} + {#if article.readingTimeMinutes} + · + {article.readingTimeMinutes} min + {/if} + {#if article.type === 'saved'} + eigen + {/if} +
+ + {#if article.excerpt} +

{article.excerpt}

+ {/if} +
+
+ + + {#if tab === 'archive'} + + {:else} + + {/if} + +
+
+ {/each} +
+ {/if} +
+ + diff --git a/apps/mana/apps/web/src/routes/(app)/news/sources/+page.svelte b/apps/mana/apps/web/src/routes/(app)/news/sources/+page.svelte new file mode 100644 index 000000000..e05c2b76c --- /dev/null +++ b/apps/mana/apps/web/src/routes/(app)/news/sources/+page.svelte @@ -0,0 +1,163 @@ + + + + + Quellen — News — Mana + + +
+
+ +

Quellen

+

+ {prefs.blockedSources.length} blockiert. Tippe auf eine Quelle um sie ein- oder auszublenden. +

+
+ + {#each visibleTopics as topic} +
+

+ {TOPIC_LABELS[topic].emoji} + {TOPIC_LABELS[topic].de} +

+
+ {#each sourcesForTopic(topic) as src} + {@const blocked = isBlocked(src.slug)} + {@const weight = weightOf(src.slug)} + + {/each} +
+
+ {/each} +
+ +