feat: rewrite all dashboard views with editorial design
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 1m29s

Translate page: editorial dropzone (rounded-[40px]), config panel,
progress stepper, download button, Momento promo banner.
Profile page: pill tabs, dark subscription card, usage bars, language grid.
Context page: preset grid (rounded-[32px]), instruction/glossary textareas.
API keys page: editorial-card with production key display.
Glossaries page: editorial-card grid with hover lift.
Pricing page: 5-column grid, colored headers, plan badges.

All pages use editorial design system: accent-pill, editorial-card,
premium-button, brand colors, dark mode support.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-16 12:54:29 +02:00
parent c2e9617045
commit 3938adf10c
7 changed files with 1506 additions and 993 deletions

View File

@@ -154,6 +154,12 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.pricing.business.f5": "Webhooks & automation",
"landing.pricing.business.f6": "5 team seats",
"landing.pricing.business.cta": "Contact Us",
"landing.pricing.free.name": "Free",
"landing.pricing.free.desc": "Perfect to discover the app",
"landing.pricing.free.cta": "Choose this plan",
"landing.pricing.enterprise.name": "Enterprise",
"landing.pricing.enterprise.desc": "Custom solutions for large organizations",
"landing.pricing.enterprise.cta": "Contact us",
"landing.cta.title": "Start translating in 30 seconds",
"landing.cta.subtitle": "No credit card required. Try for free now and bring your multilingual documents back to life.",
"landing.cta.button": "Create Free Account",
@@ -746,6 +752,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "Live Analysis",
"landing.hero.termsDetected": "terms detected",
"landing.steps.process": "PROCESS",
"landing.translate.newProject": "New Project",
"landing.translate.title": "Translate a document",
"landing.translate.subtitle": "Import a file and choose the target language",
"landing.translate.sourceDocument": "Source Document",
"landing.translate.configuration": "Configuration",
"landing.translate.sourceLang": "Source Language",
"landing.translate.targetLang": "Target Language",
"landing.translate.provider": "Provider",
"landing.translate.startTranslation": "Start Translation",
"landing.translate.zeroRetention": "Zero retention",
"landing.translate.filesDeleted": "Files deleted after processing",
"landing.translate.dropHere": "Drag & drop here",
"landing.translate.supportedFormats": "DOCX, XLSX, PPTX or PDF files supported",
"landing.translate.aiAnalysis": "Active AI Analysis",
"landing.translate.processing": "Processing",
"landing.translate.preservingLayout": "Your layout is being preserved",
},
fr: {
@@ -1483,6 +1505,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "Analyse en direct",
"landing.hero.termsDetected": "termes détectés",
"landing.steps.process": "PROCESSUS",
"landing.translate.newProject": "Nouveau projet",
"landing.translate.title": "Traduire un document",
"landing.translate.subtitle": "Importez un fichier et choisissez la langue cible",
"landing.translate.sourceDocument": "Document source",
"landing.translate.configuration": "Configuration",
"landing.translate.sourceLang": "Langue source",
"landing.translate.targetLang": "Langue cible",
"landing.translate.provider": "Fournisseur",
"landing.translate.startTranslation": "Lancer la traduction",
"landing.translate.zeroRetention": "Rétention zéro",
"landing.translate.filesDeleted": "Fichiers supprimés après traitement",
"landing.translate.dropHere": "Glissez-déposez ici",
"landing.translate.supportedFormats": "Fichiers DOCX, XLSX, PPTX ou PDF supportés",
"landing.translate.aiAnalysis": "Analyse IA Active",
"landing.translate.processing": "Traitement en cours",
"landing.translate.preservingLayout": "Votre mise en page est en cours de préservation",
},
// ═══════════════════════════════════════════════════════════════
// SPANISH (es)
@@ -2164,6 +2202,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "Análisis en vivo",
"landing.hero.termsDetected": "términos detectados",
"landing.steps.process": "PROCESO",
"landing.translate.newProject": "Nuevo proyecto",
"landing.translate.title": "Traducir un documento",
"landing.translate.subtitle": "Importa un archivo y elige el idioma de destino",
"landing.translate.sourceDocument": "Documento fuente",
"landing.translate.configuration": "Configuración",
"landing.translate.sourceLang": "Idioma de origen",
"landing.translate.targetLang": "Idioma de destino",
"landing.translate.provider": "Proveedor",
"landing.translate.startTranslation": "Iniciar traducción",
"landing.translate.zeroRetention": "Retención cero",
"landing.translate.filesDeleted": "Archivos eliminados tras el procesamiento",
"landing.translate.dropHere": "Arrastra y suelta aquí",
"landing.translate.supportedFormats": "Archivos DOCX, XLSX, PPTX o PDF compatibles",
"landing.translate.aiAnalysis": "Análisis IA Activo",
"landing.translate.processing": "Procesando",
"landing.translate.preservingLayout": "Tu diseño se está preservando",
},
// ═══════════════════════════════════════════════════════════════
// GERMAN (de)
@@ -2845,6 +2899,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "Live-Analyse",
"landing.hero.termsDetected": "Begriffe erkannt",
"landing.steps.process": "PROZESS",
"landing.translate.newProject": "Neues Projekt",
"landing.translate.title": "Dokument übersetzen",
"landing.translate.subtitle": "Datei importieren und Zielsprache wählen",
"landing.translate.sourceDocument": "Quelldokument",
"landing.translate.configuration": "Konfiguration",
"landing.translate.sourceLang": "Quellsprache",
"landing.translate.targetLang": "Zielsprache",
"landing.translate.provider": "Anbieter",
"landing.translate.startTranslation": "Übersetzung starten",
"landing.translate.zeroRetention": "Keine Speicherung",
"landing.translate.filesDeleted": "Dateien nach Verarbeitung gelöscht",
"landing.translate.dropHere": "Hier ablegen",
"landing.translate.supportedFormats": "DOCX, XLSX, PPTX oder PDF Dateien unterstützt",
"landing.translate.aiAnalysis": "KI-Analyse aktiv",
"landing.translate.processing": "Verarbeitung läuft",
"landing.translate.preservingLayout": "Ihr Layout wird beibehalten",
},
// ═══════════════════════════════════════════════════════════════
// PORTUGUESE BRAZILIAN (pt)
@@ -3526,6 +3596,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "Análise em tempo real",
"landing.hero.termsDetected": "termos detectados",
"landing.steps.process": "PROCESSO",
"landing.translate.newProject": "Novo projeto",
"landing.translate.title": "Traduzir um documento",
"landing.translate.subtitle": "Importe um arquivo e escolha o idioma de destino",
"landing.translate.sourceDocument": "Documento fonte",
"landing.translate.configuration": "Configuração",
"landing.translate.sourceLang": "Idioma de origem",
"landing.translate.targetLang": "Idioma de destino",
"landing.translate.provider": "Fornecedor",
"landing.translate.startTranslation": "Iniciar tradução",
"landing.translate.zeroRetention": "Retenção zero",
"landing.translate.filesDeleted": "Ficheiros eliminados após processamento",
"landing.translate.dropHere": "Arraste e solte aqui",
"landing.translate.supportedFormats": "Ficheiros DOCX, XLSX, PPTX ou PDF suportados",
"landing.translate.aiAnalysis": "Análise IA Ativa",
"landing.translate.processing": "Em processamento",
"landing.translate.preservingLayout": "O seu layout está a ser preservado",
},
// ═══════════════════════════════════════════════════════════════
// ITALIAN (it)
@@ -4207,6 +4293,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "Analisi in tempo reale",
"landing.hero.termsDetected": "termini rilevati",
"landing.steps.process": "PROCESSO",
"landing.translate.newProject": "Nuovo progetto",
"landing.translate.title": "Traduci un documento",
"landing.translate.subtitle": "Importa un file e scegli la lingua di destinazione",
"landing.translate.sourceDocument": "Documento sorgente",
"landing.translate.configuration": "Configurazione",
"landing.translate.sourceLang": "Lingua sorgente",
"landing.translate.targetLang": "Lingua di destinazione",
"landing.translate.provider": "Fornitore",
"landing.translate.startTranslation": "Avvia traduzione",
"landing.translate.zeroRetention": "Zero conservazione",
"landing.translate.filesDeleted": "File eliminati dopo l'elaborazione",
"landing.translate.dropHere": "Trascina e rilascia qui",
"landing.translate.supportedFormats": "File DOCX, XLSX, PPTX o PDF supportati",
"landing.translate.aiAnalysis": "Analisi IA Attiva",
"landing.translate.processing": "Elaborazione in corso",
"landing.translate.preservingLayout": "Il tuo layout viene preservato",
},
// ═══════════════════════════════════════════════════════════════
// DUTCH (nl)
@@ -4888,6 +4990,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "Live-analyse",
"landing.hero.termsDetected": "termen gedetecteerd",
"landing.steps.process": "PROCES",
"landing.translate.newProject": "Nieuw project",
"landing.translate.title": "Vertaal een document",
"landing.translate.subtitle": "Importeer een bestand en kies de doeltaal",
"landing.translate.sourceDocument": "Brondocument",
"landing.translate.configuration": "Configuratie",
"landing.translate.sourceLang": "Brontaal",
"landing.translate.targetLang": "Doeltaal",
"landing.translate.provider": "Provider",
"landing.translate.startTranslation": "Vertaling starten",
"landing.translate.zeroRetention": "Nul retentie",
"landing.translate.filesDeleted": "Bestanden verwijderd na verwerking",
"landing.translate.dropHere": "Sleep en zet hier neer",
"landing.translate.supportedFormats": "DOCX, XLSX, PPTX of PDF bestanden ondersteund",
"landing.translate.aiAnalysis": "Actieve AI-analyse",
"landing.translate.processing": "Verwerking bezig",
"landing.translate.preservingLayout": "Uw opmaak wordt behouden",
},
// ═══════════════════════════════════════════════════════════════
// RUSSIAN (ru)
@@ -5571,6 +5689,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "Анализ в реальном времени",
"landing.hero.termsDetected": "терминов обнаружено",
"landing.steps.process": "ПРОЦЕСС",
"landing.translate.newProject": "Новый проект",
"landing.translate.title": "Перевести документ",
"landing.translate.subtitle": "Импортируйте файл и выберите целевой язык",
"landing.translate.sourceDocument": "Исходный документ",
"landing.translate.configuration": "Настройки",
"landing.translate.sourceLang": "Исходный язык",
"landing.translate.targetLang": "Целевой язык",
"landing.translate.provider": "Провайдер",
"landing.translate.startTranslation": "Начать перевод",
"landing.translate.zeroRetention": "Нулевое хранение",
"landing.translate.filesDeleted": "Файлы удаляются после обработки",
"landing.translate.dropHere": "Перетащите сюда",
"landing.translate.supportedFormats": "Поддерживаются файлы DOCX, XLSX, PPTX или PDF",
"landing.translate.aiAnalysis": "Активный ИИ-анализ",
"landing.translate.processing": "Обработка",
"landing.translate.preservingLayout": "Ваше форматирование сохраняется",
},
// ═══════════════════════════════════════════════════════════════
// JAPANESE (ja)
@@ -6251,6 +6385,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "リアルタイム分析",
"landing.hero.termsDetected": "件の用語を検出",
"landing.steps.process": "プロセス",
"landing.translate.newProject": "新規プロジェクト",
"landing.translate.title": "ドキュメントを翻訳",
"landing.translate.subtitle": "ファイルをインポートして翻訳先言語を選択",
"landing.translate.sourceDocument": "ソースドキュメント",
"landing.translate.configuration": "設定",
"landing.translate.sourceLang": "翻訳元言語",
"landing.translate.targetLang": "翻訳先言語",
"landing.translate.provider": "プロバイダー",
"landing.translate.startTranslation": "翻訳を開始",
"landing.translate.zeroRetention": "ゼロ保持",
"landing.translate.filesDeleted": "処理後にファイルを削除",
"landing.translate.dropHere": "ここにドラッグ&ドロップ",
"landing.translate.supportedFormats": "DOCX, XLSX, PPTX, PDFファイル対応",
"landing.translate.aiAnalysis": "AI分析アクティブ",
"landing.translate.processing": "処理中",
"landing.translate.preservingLayout": "レイアウトを保持しています",
},
// ═══════════════════════════════════════════════════════════════
// KOREAN (ko)
@@ -6931,6 +7081,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "실시간 분석",
"landing.hero.termsDetected": "개 용어 감지됨",
"landing.steps.process": "프로세스",
"landing.translate.newProject": "새 프로젝트",
"landing.translate.title": "문서 번역",
"landing.translate.subtitle": "파일을 가져오고 대상 언어를 선택하세요",
"landing.translate.sourceDocument": "원본 문서",
"landing.translate.configuration": "설정",
"landing.translate.sourceLang": "원본 언어",
"landing.translate.targetLang": "대상 언어",
"landing.translate.provider": "제공자",
"landing.translate.startTranslation": "번역 시작",
"landing.translate.zeroRetention": "제로 보관",
"landing.translate.filesDeleted": "처리 후 파일 삭제됨",
"landing.translate.dropHere": "여기에 드래그 앤 드롭",
"landing.translate.supportedFormats": "DOCX, XLSX, PPTX 또는 PDF 파일 지원",
"landing.translate.aiAnalysis": "AI 분석 활성",
"landing.translate.processing": "처리 중",
"landing.translate.preservingLayout": "레이아웃이 보존되고 있습니다",
},
// ═══════════════════════════════════════════════════════════════
// CHINESE SIMPLIFIED (zh)
@@ -7569,6 +7735,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "实时分析",
"landing.hero.termsDetected": "个术语已检测",
"landing.steps.process": "流程",
"landing.translate.newProject": "新项目",
"landing.translate.title": "翻译文档",
"landing.translate.subtitle": "导入文件并选择目标语言",
"landing.translate.sourceDocument": "源文档",
"landing.translate.configuration": "配置",
"landing.translate.sourceLang": "源语言",
"landing.translate.targetLang": "目标语言",
"landing.translate.provider": "提供商",
"landing.translate.startTranslation": "开始翻译",
"landing.translate.zeroRetention": "零保留",
"landing.translate.filesDeleted": "处理后删除文件",
"landing.translate.dropHere": "拖放到此处",
"landing.translate.supportedFormats": "支持 DOCX, XLSX, PPTX 或 PDF 文件",
"landing.translate.aiAnalysis": "AI 分析中",
"landing.translate.processing": "正在处理",
"landing.translate.preservingLayout": "正在保留您的排版",
},
// ARABIC (ar)
@@ -8207,6 +8389,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "تحليل مباشر",
"landing.hero.termsDetected": "مصطلحات مكتشفة",
"landing.steps.process": "العملية",
"landing.translate.newProject": "مشروع جديد",
"landing.translate.title": "ترجمة مستند",
"landing.translate.subtitle": "استورد ملفًا واختر اللغة المستهدفة",
"landing.translate.sourceDocument": "المستند المصدر",
"landing.translate.configuration": "الإعدادات",
"landing.translate.sourceLang": "لغة المصدر",
"landing.translate.targetLang": "اللغة المستهدفة",
"landing.translate.provider": "المزود",
"landing.translate.startTranslation": "بدء الترجمة",
"landing.translate.zeroRetention": "صفر احتفاظ",
"landing.translate.filesDeleted": "الملفات محذوفة بعد المعالجة",
"landing.translate.dropHere": "اسحب وأفلت هنا",
"landing.translate.supportedFormats": "ملفات DOCX, XLSX, PPTX أو PDF مدعومة",
"landing.translate.aiAnalysis": "تحليل AI نشط",
"landing.translate.processing": "جاري المعالجة",
"landing.translate.preservingLayout": "جاري الحفاظ على التنسيق",
},
// PERSIAN (fa)
@@ -8881,6 +9079,22 @@ const messages: Record<Locale, Record<string, string>> = {
"landing.hero.liveAnalysis": "تحلیل زنده",
"landing.hero.termsDetected": "اصطلاح شناسایی شد",
"landing.steps.process": "فرآیند",
"landing.translate.newProject": "پروژه جدید",
"landing.translate.title": "ترجمه سند",
"landing.translate.subtitle": "فایل را وارد کنید و زبان مقصد را انتخاب کنید",
"landing.translate.sourceDocument": "سند منبع",
"landing.translate.configuration": "پیکربندی",
"landing.translate.sourceLang": "زبان منبع",
"landing.translate.targetLang": "زبان مقصد",
"landing.translate.provider": "ارائه‌دهنده",
"landing.translate.startTranslation": "شروع ترجمه",
"landing.translate.zeroRetention": "صفر نگهداری",
"landing.translate.filesDeleted": "فایل‌ها پس از پردازش حذف می‌شوند",
"landing.translate.dropHere": "اینجا بکشید و رها کنید",
"landing.translate.supportedFormats": "فایل‌های DOCX, XLSX, PPTX یا PDF پشتیبانی می‌شوند",
"landing.translate.aiAnalysis": "تحلیل AI فعال",
"landing.translate.processing": "در حال پردازش",
"landing.translate.preservingLayout": "طرح‌بندی شما حفظ می‌شود",
},
};