diff --git a/assets/css/lnbits.css b/assets/css/lnbits.css index c2e4807..091752c 100644 --- a/assets/css/lnbits.css +++ b/assets/css/lnbits.css @@ -233,25 +233,14 @@ body.body--dark { .ud-hero { position: relative; overflow: hidden; + background: #000; + animation: none; padding: 118px 0 8px; flex: 1 0 auto; display: flex; align-items: center; } -.ud-hero::before { - content: ""; - position: absolute; - inset: 0; - background: - radial-gradient(700px 280px at 20% 0%, rgba(255, 30, 230, 0.25), transparent 60%), - radial-gradient(700px 300px at 80% 10%, rgba(39, 215, 255, 0.24), transparent 62%), - radial-gradient(520px 240px at 55% 20%, rgba(76, 126, 255, 0.22), transparent 60%); - pointer-events: none; - background-size: 200% 200%; - animation: heroFlow 14s ease-in-out infinite alternate; -} - .ud-hero > .container { position: relative; z-index: 1; @@ -271,7 +260,7 @@ body.body--dark { } .ln-hero-intro .ud-hero-title { - font-size: var(--ln-hero-title-size, 3.6rem); + font-size: var(--ln-hero-title-size, 4rem); line-height: 1.05; white-space: nowrap; } @@ -279,117 +268,273 @@ body.body--dark { .ln-hero-intro .ud-hero-desc { display: block; margin: 0 auto; - font-size: var(--ln-hero-desc-size, 3rem); + font-size: var(--ln-hero-desc-size, 2.5rem); line-height: 1.08; white-space: nowrap; } -.ln-landing-product, -.ln-landing-product:hover, -.ln-landing-product:focus { - min-height: 100%; +.ln-download { + max-width: 400px; + margin: 0 auto; + padding: 24px 0; + text-align: center; +} + +.ln-download__title { + margin: 0 0 28px; + color: var(--ln-text); + font-size: clamp(1.8rem, 3vw, 2.6rem); + font-weight: 400; + line-height: 1.15; + letter-spacing: -0.03em; +} + +.ln-download__control { + display: flex; + width: fit-content; + max-width: 100%; + margin-inline: auto; + direction: ltr; + border-radius: 16px; + background: linear-gradient(135deg, var(--ln-pink), var(--ln-purple)); + box-shadow: 0 12px 30px rgba(255, 30, 230, 0.25); +} + +.ln-download__button, +.ln-download__toggle { + display: flex; + align-items: center; + justify-content: center; + min-height: 48px; + color: #0b0c11; + background: transparent; + border: 0; + font: inherit; + font-weight: 700; + text-decoration: none; +} + +.ln-download__button { + flex: 1; + gap: 8px; + padding: 10px 16px; + border-radius: 16px 0 0 16px; +} + +.ln-download__button svg { + flex-shrink: 0; +} + +.ln-download__toggle { + flex: 0 0 40px; + border-left: 1px solid rgba(11, 12, 17, 0.25); + border-radius: 0 16px 16px 0; +} + +.ln-download__toggle::after { + margin: 0; +} + +.ln-download__button:hover, +.ln-download__toggle:hover { + color: #0b0c11; + background: rgba(255, 255, 255, 0.15); +} + +.ln-download__button:focus-visible, +.ln-download__toggle:focus-visible { + outline: 2px solid white; + outline-offset: 3px; +} + +.ln-download__menu { + width: 100%; + padding: 8px; + border: 1px solid rgba(255, 30, 230, 0.3); + border-radius: 16px; + background: #1c1b2a; + box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4); +} + +.ln-download__menu .dropdown-item { + padding: 12px; + border-radius: 8px; + color: var(--ln-text); + white-space: normal; +} + +.ln-download__menu .dropdown-item:hover, +.ln-download__menu .dropdown-item:focus, +.ln-download__menu .dropdown-item.active { color: var(--ln-pink); + background: rgba(255, 30, 230, 0.1); +} + +.ln-download__menu .dropdown-divider { + border-color: rgba(255, 255, 255, 0.15); +} + +.ln-download__status { + margin: 14px 0 0; + color: var(--ln-muted); + font-size: 0.85rem; + line-height: 1.5; +} + +.ln-download__status:empty { + display: none; +} + +.ln-landing-products { + display: grid; + grid-auto-rows: 1fr; + gap: 16px; +} + +.ln-landing-product { + display: grid; + grid-template-columns: minmax(0, 1fr) clamp(160px, 16vw, 220px) 32px; + grid-template-areas: "title image action" "bullets image action"; + grid-template-rows: 1fr 1fr; + gap: 12px 18px; + padding: 18px 24px; + color: var(--ln-text); text-decoration: none; - border: 1.5px solid rgba(255, 30, 230, 0.3); - border-radius: 28px; - padding: 26px 24px 30px; - background: linear-gradient(180deg, rgba(28, 27, 42, 0.94), rgba(16, 17, 27, 0.88)); - box-shadow: 0 24px 50px rgba(0, 0, 0, 0.28); - transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease; + border: 1px solid var(--ln-pink); + border-radius: 22px; + background: #000; + box-shadow: 0 12px 30px rgba(0, 0, 0, 0.2); + transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease; } .ln-landing-product:hover, -.ln-landing-product:focus { - transform: translateY(-6px); - border-color: rgba(255, 30, 230, 0.48); - box-shadow: - 0 28px 60px rgba(0, 0, 0, 0.34), - 0 0 28px rgba(255, 30, 230, 0.12); +.ln-landing-product:focus-visible { + color: var(--ln-text); + transform: translateY(-3px); + box-shadow: 0 16px 32px rgba(0, 0, 0, 0.3); +} + +.ln-landing-product:focus-visible { + outline: 2px solid var(--ln-pink); + outline-offset: 4px; +} + +.ln-landing-product__visual { + grid-area: image; + position: relative; + min-width: 0; + min-height: 130px; } .ln-landing-product__image { + position: absolute; + inset: 0; display: block; - width: auto; - max-width: 100%; - height: auto; - max-height: 250px; - margin: 0 auto 18px; + width: 100%; + height: 100%; object-fit: contain; - filter: drop-shadow(0 24px 42px rgba(0, 0, 0, 0.45)); - transition: filter 0.25s ease, transform 0.25s ease; + filter: drop-shadow(0 12px 16px rgba(0, 0, 0, 0.4)); + transition: transform 0.2s ease; } .ln-landing-product:hover .ln-landing-product__image, -.ln-landing-product:focus .ln-landing-product__image { - transform: translateY(-4px); - filter: - drop-shadow(0 24px 42px rgba(0, 0, 0, 0.45)) - drop-shadow(0 0 24px rgba(255, 30, 230, 0.22)); -} - -.ln-landing-product__body { - margin-top: auto; +.ln-landing-product:focus-visible .ln-landing-product__image { + transform: scale(1.05); } .ln-landing-product__title { + grid-area: title; + align-self: end; margin: 0; color: var(--ln-pink); - font-size: clamp(1.9rem, 3vw, 2.45rem); - line-height: 1.05; + font-size: clamp(1.5rem, 2.2vw, 1.9rem); + font-weight: 650; + line-height: 1.15; letter-spacing: -0.03em; + text-align: start; } .ln-landing-product__bullets { + grid-area: bullets; + align-self: start; + display: flex; + flex-wrap: wrap; + gap: 8px 12px; list-style: none; - margin: 18px 0 0; - padding-left: 0; - text-align: left; - color: rgba(255, 255, 255, 0.92); - font-size: 1rem; - line-height: 1.55; + margin: 0; + padding: 0; + text-align: start; + color: var(--ln-muted); + font-size: 1.1rem; + line-height: 1.5; } .ln-landing-product__bullets li { - position: relative; - padding-left: 1.6rem; + display: flex; + align-items: baseline; + gap: 6px; } .ln-landing-product__bullets li::before { content: "✓"; - position: absolute; - left: 0; - top: 0; + flex-shrink: 0; color: var(--ln-pink); font-weight: 700; } -.ln-landing-product__bullets li + li { - margin-top: 8px; +.ln-landing-product__action { + grid-area: action; + align-self: center; + display: grid; + place-items: center; + width: 32px; + height: 32px; + border: 1px solid rgba(255, 30, 230, 0.25); + border-radius: 50%; + color: var(--ln-pink); + background: rgba(255, 30, 230, 0.06); + transition: background 0.2s ease, color 0.2s ease; } -@media (max-width: 991px) { +.ln-landing-product:hover .ln-landing-product__action, +.ln-landing-product:focus-visible .ln-landing-product__action { + color: #0b0c11; + background: var(--ln-pink); +} + +@media (max-width: 575px) { .ln-landing-product { - padding: 20px 18px 22px; - border-radius: 22px; + grid-template-columns: minmax(0, 1fr) 86px 28px; + grid-template-areas: "title image action" "bullets bullets bullets"; + grid-template-rows: auto auto; + gap: 14px 8px; + padding: 16px; + border-radius: 18px; } - .ln-landing-product__image { - max-height: 150px; - margin-bottom: 14px; + .ln-landing-product__title { + align-self: center; } - .ln-landing-product__title { - font-size: 1.6rem; + .ln-landing-product__visual { + min-height: 76px; + } + + .ln-landing-product__action { + width: 28px; + height: 28px; } .ln-landing-product__bullets { - margin-top: 14px; - font-size: 0.9rem; - line-height: 1.45; + gap: 6px 12px; } +} - .ln-landing-product__bullets li { - padding-left: 1.35rem; +@media (prefers-reduced-motion: reduce) { + .ln-landing-product, + .ln-landing-product__image, + .ln-landing-product__action { + transition: none; } } @@ -1086,6 +1231,10 @@ body.body--dark { text-transform: uppercase; color: rgba(255, 255, 255, 0.6); margin-bottom: 12px; +} + +.ln-contrib-label, +.ln-contrib-metrics { display: flex; align-items: center; gap: 10px; @@ -1203,23 +1352,11 @@ body.body--dark { } .ln-hero-intro .ud-hero-desc { - font-size: clamp(1.4rem, 5.4vw, 2rem); + font-size: clamp(1.125rem, 4vw, 1.5rem); line-height: 1.15; white-space: normal; } - .ln-landing-product__image { - max-height: 190px; - } - - .ln-landing-product__title { - font-size: 1.8rem; - } - - .ln-landing-product__bullets { - font-size: 0.95rem; - } - .ln-bootstrap-showcase { margin-top: 16px; max-width: 100%; @@ -1286,15 +1423,6 @@ body.body--dark { } } -@keyframes heroFlow { - 0% { - background-position: 20% 0%, 80% 20%, 50% 10%; - } - 100% { - background-position: 40% 20%, 60% 0%, 70% 30%; - } -} - @-moz-document url-prefix() { .ud-header, .ln-btn-outline, @@ -1302,11 +1430,6 @@ body.body--dark { backdrop-filter: none; } - .ud-hero, - .ud-hero::before { - animation: none; - } - .ln-section::before { mix-blend-mode: normal; opacity: 0.35; diff --git a/assets/i18n/ar.json b/assets/i18n/ar.json index 1cd2d6b..cc243c7 100644 --- a/assets/i18n/ar.json +++ b/assets/i18n/ar.json @@ -22,8 +22,8 @@ "tooltip.extensions": "اطّلع على إضافات LNbits", "tooltip.store": "زر متجر LNbits الإلكتروني", "tooltip.github": "عرض المستودع", - "hero.title": "أقوى مجموعة أدوات بيتكوين في العالم.", - "hero.subtitle": "شغّلها لنفسك أو للآخرين أو كجزء من حزمة.", + "hero.title": "أقوى حزمة أدوات للدفع في العالم.", + "hero.subtitle": "اقبل المدفوعات. استخدم/طوّر الإضافات. ادمجها في منظومتك التقنية.", "hero.slide1.title": "نظام المستخدم/المحفظة", "hero.slide1.subtitle": "محفظة ويب متجاوبة بالكامل
", "hero.slide1.time": "(43 ثانية)", @@ -40,14 +40,22 @@ "products.saas.bullet1": "سهل", "products.saas.bullet2": "مُدار بالكامل", "products.saas.bullet3": "جهوزية 99.9%", + "products.saas.bullet4": "نسخ احتياطية", "products.box.title": "LNbits Box", "products.box.bullet1": "سهل", "products.box.bullet2": "يعمل محليًا", "products.box.bullet3": "عتاد جاهز للتشغيل", - "products.selfhost.title": "شغّله بنفسك", - "products.selfhost.bullet1": "متقدم", - "products.selfhost.bullet2": "شغّله في أي مكان", - "products.selfhost.bullet3": "تحكم كامل", + "products.box.bullet4": "مبني على NixOS", + "download.title": "ابدأ بقبول المدفوعات خلال دقائق.", + "download.button": "تنزيل {format}", + "download.choose": "اختر التنزيل", + "download.select": "اختر نظام التشغيل", + "download.source": "البناء من الشيفرة المصدرية", + "download.releases": "عرض الإصدارات", + "download.fallback": "ابحث عن ملفات التثبيت المتاحة في إصدارات GitHub.", + "download.unavailable": "ملف التثبيت هذا غير متاح بعد. تصفح الإصدارات أو ابنِ التطبيق من الشيفرة المصدرية.", + "download.preview": "إصدار تجريبي", + "contributors.open_source": "مجاني بالكامل ومفتوح المصدر", "contributors.label": "المساهمون", "features.title": "تطبيقك الشامل للمدفوعات.", "features.lead": "
LNbits منصة مدفوعات معيارية — محفظة ومتجر تطبيقات ومحرك أتمتة في منصة واحدة.", diff --git a/assets/i18n/de.json b/assets/i18n/de.json index 0de1e8a..f4e4ae0 100644 --- a/assets/i18n/de.json +++ b/assets/i18n/de.json @@ -22,8 +22,8 @@ "tooltip.extensions": "Schau dir die Erweiterungen in LNbits an", "tooltip.store": "Besuche den LNbits Webshop", "tooltip.github": "Zum Repository", - "hero.title": "Die weltweit leistungsstärkste Suite an Bitcoin-Tools.", - "hero.subtitle": "Betreibe es für dich, für andere oder als Teil eines Stacks.", + "hero.title": "Die leistungsstärkste Zahlungssuite der Welt.", + "hero.subtitle": "Nimm Zahlungen an. Nutze/entwickle Erweiterungen. Integriere sie in deinen Stack.", "hero.slide1.title": "Benutzer-/Wallet-System", "hero.slide1.subtitle": "Voll responsives Web-Wallet
", "hero.slide1.time": "(43 s)", @@ -40,14 +40,22 @@ "products.saas.bullet1": "Einfach", "products.saas.bullet2": "Voll verwaltet", "products.saas.bullet3": "99,9 % Verfügbarkeit", + "products.saas.bullet4": "Backups", "products.box.title": "LNbits Box", "products.box.bullet1": "Einfach", "products.box.bullet2": "Läuft lokal", "products.box.bullet3": "Plug-and-Play-Hardware", - "products.selfhost.title": "Selbst betreiben", - "products.selfhost.bullet1": "Fortgeschritten", - "products.selfhost.bullet2": "Überall betreiben", - "products.selfhost.bullet3": "Volle Kontrolle", + "products.box.bullet4": "Basiert auf NixOS", + "download.title": "Akzeptiere Zahlungen in wenigen Minuten.", + "download.button": "{format} herunterladen", + "download.choose": "Download auswählen", + "download.select": "Wähle dein Betriebssystem", + "download.source": "Aus dem Quellcode erstellen", + "download.releases": "Versionen ansehen", + "download.fallback": "Verfügbare Installationsdateien findest du in den GitHub-Releases.", + "download.unavailable": "Diese Installationsdatei ist noch nicht verfügbar. Sieh dir die Releases an oder erstelle LNbits aus dem Quellcode.", + "download.preview": "Vorabversion", + "contributors.open_source": "Völlig kostenlos und quelloffen", "contributors.label": "Mitwirkende", "features.title": "Deine All-in-One-App für Zahlungen.", "features.lead": "
LNbits ist eine modulare Zahlungsplattform - Wallet, App-Store und Automatisierungs-Engine in einem.", diff --git a/assets/i18n/en.json b/assets/i18n/en.json index a11c826..e62c0c5 100644 --- a/assets/i18n/en.json +++ b/assets/i18n/en.json @@ -22,8 +22,8 @@ "tooltip.extensions": "Checkout the extensions in LNbits", "tooltip.store": "Visit the LNbits web store", "tooltip.github": "Checkout the repo", - "hero.title": "The world's most powerful suite of bitcoin tools.", - "hero.subtitle": "Run for yourself, for others, or as part of a stack.", + "hero.title": "The world's most powerful payment suite.", + "hero.subtitle": "Take payments. Use/build extensions. Integrate into your stack.", "hero.slide1.title": "User/Wallet System", "hero.slide1.subtitle": "Fully responsive web wallet
", "hero.slide1.time": "(43 secs)", @@ -40,14 +40,22 @@ "products.saas.bullet1": "Easy", "products.saas.bullet2": "Fully managed", "products.saas.bullet3": "99.9% uptime", + "products.saas.bullet4": "Backups", "products.box.title": "LNbits Box", "products.box.bullet1": "Easy", "products.box.bullet2": "Runs locally", "products.box.bullet3": "Plug & play hardware", - "products.selfhost.title": "Run Yourself", - "products.selfhost.bullet1": "Advanced", - "products.selfhost.bullet2": "Run anywhere", - "products.selfhost.bullet3": "Complete control", + "products.box.bullet4": "NixOS based", + "download.title": "Start accepting payments in minutes.", + "download.button": "Download {format}", + "download.choose": "Choose download", + "download.select": "Choose your operating system", + "download.source": "Build from source", + "download.releases": "View releases", + "download.fallback": "Find available installers on GitHub releases.", + "download.unavailable": "This installer is not available yet. Check releases or build from source.", + "download.preview": "Pre-release", + "contributors.open_source": "Completely free and open-source", "contributors.label": "Contributors", "features.title": "Your Everything App for Payments.", "features.lead": "
LNbits is a modular payments platform — a wallet, app store, and automation engine in one.", diff --git a/assets/i18n/es.json b/assets/i18n/es.json index 8fff5b7..0a9c5a2 100644 --- a/assets/i18n/es.json +++ b/assets/i18n/es.json @@ -22,8 +22,8 @@ "tooltip.extensions": "Explora las extensiones en LNbits", "tooltip.store": "Visita la tienda web de LNbits", "tooltip.github": "Ver el repositorio", - "hero.title": "La suite de herramientas de bitcoin más poderosa del mundo.", - "hero.subtitle": "Ejecuta para ti, para otros, o como parte de un stack.", + "hero.title": "La suite de pagos más potente del mundo.", + "hero.subtitle": "Acepta pagos. Usa/crea extensiones. Integra en tu stack.", "hero.slide1.title": "Sistema de usuarios/carteras", "hero.slide1.subtitle": "Billetera web totalmente responsive
", "hero.slide1.time": "(43 s)", @@ -40,14 +40,22 @@ "products.saas.bullet1": "Fácil", "products.saas.bullet2": "Totalmente gestionado", "products.saas.bullet3": "99,9 % de uptime", + "products.saas.bullet4": "Copias de seguridad", "products.box.title": "LNbits Box", "products.box.bullet1": "Fácil", "products.box.bullet2": "Funciona localmente", "products.box.bullet3": "Hardware plug & play", - "products.selfhost.title": "Ejecútalo tú mismo", - "products.selfhost.bullet1": "Avanzado", - "products.selfhost.bullet2": "Ejecútalo en cualquier lugar", - "products.selfhost.bullet3": "Control total", + "products.box.bullet4": "Basado en NixOS", + "download.title": "Empieza a aceptar pagos en minutos.", + "download.button": "Descargar {format}", + "download.choose": "Elegir descarga", + "download.select": "Elige tu sistema operativo", + "download.source": "Compilar desde el código fuente", + "download.releases": "Ver versiones", + "download.fallback": "Encuentra los instaladores disponibles en las versiones de GitHub.", + "download.unavailable": "Este instalador aún no está disponible. Consulta las versiones o compila desde el código fuente.", + "download.preview": "Versión preliminar", + "contributors.open_source": "Completamente gratis y de código abierto", "contributors.label": "Colaboradores", "features.title": "Tu app integral para pagos.", "features.lead": "
LNbits es una plataforma modular de pagos — una billetera, tienda de apps y motor de automatización en uno.", diff --git a/assets/i18n/fr.json b/assets/i18n/fr.json index e9f6a0c..081fd31 100644 --- a/assets/i18n/fr.json +++ b/assets/i18n/fr.json @@ -22,8 +22,8 @@ "tooltip.extensions": "Voir les extensions dans LNbits", "tooltip.store": "Visitez la boutique web LNbits", "tooltip.github": "Voir le dépôt", - "hero.title": "La suite d'outils bitcoin la plus puissante au monde.", - "hero.subtitle": "Exécutez-la pour vous, pour d'autres, ou comme partie d'une stack.", + "hero.title": "La suite de paiement la plus puissante au monde.", + "hero.subtitle": "Acceptez des paiements. Utilisez/créez des extensions. Intégrez à votre stack.", "hero.slide1.title": "Système utilisateur/portefeuille", "hero.slide1.subtitle": "Portefeuille web totalement responsive
", "hero.slide1.time": "(43 s)", @@ -40,14 +40,22 @@ "products.saas.bullet1": "Facile", "products.saas.bullet2": "Entièrement géré", "products.saas.bullet3": "99,9 % de disponibilité", + "products.saas.bullet4": "Sauvegardes", "products.box.title": "LNbits Box", "products.box.bullet1": "Facile", "products.box.bullet2": "Fonctionne en local", "products.box.bullet3": "Matériel plug & play", - "products.selfhost.title": "Hébergez-le vous-même", - "products.selfhost.bullet1": "Avancé", - "products.selfhost.bullet2": "Exécutez-le partout", - "products.selfhost.bullet3": "Contrôle total", + "products.box.bullet4": "Basé sur NixOS", + "download.title": "Commencez à accepter des paiements en quelques minutes.", + "download.button": "Télécharger {format}", + "download.choose": "Choisir un téléchargement", + "download.select": "Choisissez votre système d’exploitation", + "download.source": "Compiler depuis les sources", + "download.releases": "Voir les versions", + "download.fallback": "Retrouvez les programmes d’installation disponibles dans les versions GitHub.", + "download.unavailable": "Ce programme d’installation n’est pas encore disponible. Consultez les versions ou compilez depuis les sources.", + "download.preview": "Préversion", + "contributors.open_source": "Entièrement gratuit et open source", "contributors.label": "Contributeurs", "features.title": "Votre application tout-en-un pour les paiements.", "features.lead": "
LNbits est une plateforme de paiement modulaire — un portefeuille, une boutique d'apps et un moteur d'automatisation en un.", diff --git a/assets/i18n/it.json b/assets/i18n/it.json index 8330502..89db1b9 100644 --- a/assets/i18n/it.json +++ b/assets/i18n/it.json @@ -22,8 +22,8 @@ "tooltip.extensions": "Scopri le estensioni in LNbits", "tooltip.store": "Visita lo store web di LNbits", "tooltip.github": "Vai al repository", - "hero.title": "La suite di strumenti bitcoin più potente al mondo.", - "hero.subtitle": "Esegui per te, per altri, o come parte di uno stack.", + "hero.title": "La suite di pagamento più potente al mondo.", + "hero.subtitle": "Accetta pagamenti. Usa/crea estensioni. Integra nel tuo stack.", "hero.slide1.title": "Sistema utenti/wallet", "hero.slide1.subtitle": "Wallet web completamente responsive
", "hero.slide1.time": "(43 s)", @@ -40,14 +40,22 @@ "products.saas.bullet1": "Facile", "products.saas.bullet2": "Completamente gestito", "products.saas.bullet3": "Uptime al 99,9%", + "products.saas.bullet4": "Backup", "products.box.title": "LNbits Box", "products.box.bullet1": "Facile", "products.box.bullet2": "Funziona in locale", "products.box.bullet3": "Hardware plug & play", - "products.selfhost.title": "Eseguilo da solo", - "products.selfhost.bullet1": "Avanzato", - "products.selfhost.bullet2": "Eseguilo ovunque", - "products.selfhost.bullet3": "Controllo completo", + "products.box.bullet4": "Basato su NixOS", + "download.title": "Inizia ad accettare pagamenti in pochi minuti.", + "download.button": "Scarica {format}", + "download.choose": "Scegli il download", + "download.select": "Scegli il tuo sistema operativo", + "download.source": "Compila dal codice sorgente", + "download.releases": "Vedi le versioni", + "download.fallback": "Trova i programmi di installazione disponibili nelle release di GitHub.", + "download.unavailable": "Questo programma di installazione non è ancora disponibile. Consulta le release o compila dal codice sorgente.", + "download.preview": "Versione preliminare", + "contributors.open_source": "Completamente gratuito e open source", "contributors.label": "Contributori", "features.title": "La tua app tutto-in-uno per i pagamenti.", "features.lead": "
LNbits è una piattaforma di pagamenti modulare — un wallet, un app store e un motore di automazione in uno.", diff --git a/assets/i18n/ja.json b/assets/i18n/ja.json index 0f2c8d4..40cf626 100644 --- a/assets/i18n/ja.json +++ b/assets/i18n/ja.json @@ -22,8 +22,8 @@ "tooltip.extensions": "LNbits の拡張をチェック", "tooltip.store": "LNbits のウェブストアを見る", "tooltip.github": "リポジトリを見る", - "hero.title": "世界で最も強力なビットコインツール群。", - "hero.subtitle": "自分のため、他者のため、またはスタックの一部として運用。", + "hero.title": "世界で最もパワフルな決済スイート。", + "hero.subtitle": "決済を受け付ける。拡張機能を使う・開発する。スタックに統合する。", "hero.slide1.title": "ユーザー/ウォレットシステム", "hero.slide1.subtitle": "完全レスポンシブなWebウォレット
", "hero.slide1.time": "(43 秒)", @@ -40,14 +40,22 @@ "products.saas.bullet1": "簡単", "products.saas.bullet2": "フルマネージド", "products.saas.bullet3": "99.9% 稼働率", + "products.saas.bullet4": "バックアップ", "products.box.title": "LNbits Box", "products.box.bullet1": "簡単", "products.box.bullet2": "ローカルで動作", "products.box.bullet3": "プラグアンドプレイのハードウェア", - "products.selfhost.title": "自分で運用", - "products.selfhost.bullet1": "上級者向け", - "products.selfhost.bullet2": "どこでも運用可能", - "products.selfhost.bullet3": "完全なコントロール", + "products.box.bullet4": "NixOS ベース", + "download.title": "わずか数分で支払いの受け付けを開始。", + "download.button": "{format} をダウンロード", + "download.choose": "ダウンロードを選択", + "download.select": "お使いの OS を選択", + "download.source": "ソースからビルド", + "download.releases": "リリースを見る", + "download.fallback": "利用可能なインストーラーは GitHub のリリースページで確認できます。", + "download.unavailable": "このインストーラーはまだ利用できません。リリースを確認するか、ソースからビルドしてください。", + "download.preview": "プレリリース", + "contributors.open_source": "完全無料・オープンソース", "contributors.label": "貢献者", "features.title": "支払いのためのオールインワンアプリ。", "features.lead": "
LNbits はモジュール型の決済プラットフォーム — ウォレット、アプリストア、自動化エンジンが一体。", diff --git a/assets/i18n/ko.json b/assets/i18n/ko.json index a44bbe0..528e50f 100644 --- a/assets/i18n/ko.json +++ b/assets/i18n/ko.json @@ -22,8 +22,8 @@ "tooltip.extensions": "LNbits 확장 보기", "tooltip.store": "LNbits 웹 스토어 방문", "tooltip.github": "레포지토리 보기", - "hero.title": "세계에서 가장 강력한 비트코인 도구 모음.", - "hero.subtitle": "나를 위해, 다른 사람을 위해, 혹은 스택의 일부로 운영하세요.", + "hero.title": "세계에서 가장 강력한 결제 도구 모음.", + "hero.subtitle": "결제를 받으세요. 확장 기능을 사용/개발하세요. 스택에 통합하세요.", "hero.slide1.title": "사용자/지갑 시스템", "hero.slide1.subtitle": "완전 반응형 웹 지갑
", "hero.slide1.time": "(43초)", @@ -40,14 +40,22 @@ "products.saas.bullet1": "쉬움", "products.saas.bullet2": "완전 관리형", "products.saas.bullet3": "99.9% 가동 시간", + "products.saas.bullet4": "백업", "products.box.title": "LNbits Box", "products.box.bullet1": "쉬움", "products.box.bullet2": "로컬에서 실행", "products.box.bullet3": "플러그 앤 플레이 하드웨어", - "products.selfhost.title": "직접 실행", - "products.selfhost.bullet1": "고급", - "products.selfhost.bullet2": "어디서나 실행", - "products.selfhost.bullet3": "완전한 제어", + "products.box.bullet4": "NixOS 기반", + "download.title": "몇 분 만에 결제 수락을 시작하세요.", + "download.button": "{format} 다운로드", + "download.choose": "다운로드 선택", + "download.select": "운영체제를 선택하세요", + "download.source": "소스에서 빌드", + "download.releases": "릴리스 보기", + "download.fallback": "GitHub 릴리스에서 사용 가능한 설치 파일을 확인하세요.", + "download.unavailable": "이 설치 파일은 아직 제공되지 않습니다. 릴리스를 확인하거나 소스에서 빌드하세요.", + "download.preview": "사전 릴리스", + "contributors.open_source": "완전 무료 및 오픈 소스", "contributors.label": "기여자", "features.title": "결제를 위한 올인원 앱.", "features.lead": "
LNbits는 모듈형 결제 플랫폼입니다 — 지갑, 앱스토어, 자동화 엔진을 하나로.", diff --git a/assets/i18n/nl.json b/assets/i18n/nl.json index 4b950bb..1ef9dc9 100644 --- a/assets/i18n/nl.json +++ b/assets/i18n/nl.json @@ -22,8 +22,8 @@ "tooltip.extensions": "Bekijk de extensies in LNbits", "tooltip.store": "Bezoek de LNbits webwinkel", "tooltip.github": "Bekijk de repo", - "hero.title": "De krachtigste suite van bitcoin-tools ter wereld.", - "hero.subtitle": "Draai het voor jezelf, voor anderen, of als onderdeel van een stack.", + "hero.title": "De krachtigste betaalsuite ter wereld.", + "hero.subtitle": "Ontvang betalingen. Gebruik/bouw extensies. Integreer in je stack.", "hero.slide1.title": "Gebruikers-/walletsysteem", "hero.slide1.subtitle": "Volledig responsieve webwallet
", "hero.slide1.time": "(43 s)", @@ -40,14 +40,22 @@ "products.saas.bullet1": "Eenvoudig", "products.saas.bullet2": "Volledig beheerd", "products.saas.bullet3": "99,9% uptime", + "products.saas.bullet4": "Back-ups", "products.box.title": "LNbits Box", "products.box.bullet1": "Eenvoudig", "products.box.bullet2": "Draait lokaal", "products.box.bullet3": "Plug & play-hardware", - "products.selfhost.title": "Zelf draaien", - "products.selfhost.bullet1": "Geavanceerd", - "products.selfhost.bullet2": "Draai overal", - "products.selfhost.bullet3": "Volledige controle", + "products.box.bullet4": "Gebaseerd op NixOS", + "download.title": "Accepteer binnen enkele minuten betalingen.", + "download.button": "{format} downloaden", + "download.choose": "Download kiezen", + "download.select": "Kies je besturingssysteem", + "download.source": "Bouwen vanuit broncode", + "download.releases": "Releases bekijken", + "download.fallback": "Vind beschikbare installatiebestanden bij de GitHub-releases.", + "download.unavailable": "Dit installatiebestand is nog niet beschikbaar. Bekijk de releases of bouw vanuit de broncode.", + "download.preview": "Voorlopige versie", + "contributors.open_source": "Volledig gratis en open source", "contributors.label": "Bijdragers", "features.title": "Jouw alles-in-één app voor betalingen.", "features.lead": "
LNbits is een modulair betalingsplatform — een wallet, app store en automatiseringsengine in één.", diff --git a/assets/i18n/pt.json b/assets/i18n/pt.json index 0a4e79f..0c86a0e 100644 --- a/assets/i18n/pt.json +++ b/assets/i18n/pt.json @@ -22,8 +22,8 @@ "tooltip.extensions": "Confira as extensões no LNbits", "tooltip.store": "Visite a loja web do LNbits", "tooltip.github": "Ver o repositório", - "hero.title": "O conjunto de ferramentas de bitcoin mais poderoso do mundo.", - "hero.subtitle": "Execute para você, para outros, ou como parte de uma stack.", + "hero.title": "A suíte de pagamentos mais poderosa do mundo.", + "hero.subtitle": "Receba pagamentos. Use/crie extensões. Integre à sua stack.", "hero.slide1.title": "Sistema de usuários/carteiras", "hero.slide1.subtitle": "Carteira web totalmente responsiva
", "hero.slide1.time": "(43 s)", @@ -40,14 +40,22 @@ "products.saas.bullet1": "Fácil", "products.saas.bullet2": "Totalmente gerido", "products.saas.bullet3": "99,9% de uptime", + "products.saas.bullet4": "Backups", "products.box.title": "LNbits Box", "products.box.bullet1": "Fácil", "products.box.bullet2": "Roda localmente", "products.box.bullet3": "Hardware plug & play", - "products.selfhost.title": "Execute Você Mesmo", - "products.selfhost.bullet1": "Avançado", - "products.selfhost.bullet2": "Rode em qualquer lugar", - "products.selfhost.bullet3": "Controle total", + "products.box.bullet4": "Baseado em NixOS", + "download.title": "Comece a aceitar pagamentos em minutos.", + "download.button": "Baixar {format}", + "download.choose": "Escolher download", + "download.select": "Escolha seu sistema operacional", + "download.source": "Compilar a partir do código-fonte", + "download.releases": "Ver versões", + "download.fallback": "Encontre os instaladores disponíveis nas versões do GitHub.", + "download.unavailable": "Este instalador ainda não está disponível. Confira as versões ou compile a partir do código-fonte.", + "download.preview": "Versão de pré-lançamento", + "contributors.open_source": "Totalmente gratuito e de código aberto", "contributors.label": "Contribuidores", "features.title": "Seu app completo para pagamentos.", "features.lead": "
LNbits é uma plataforma modular de pagamentos — uma carteira, app store e motor de automação em um só lugar.", diff --git a/assets/i18n/ru.json b/assets/i18n/ru.json index 577730b..dedc8e1 100644 --- a/assets/i18n/ru.json +++ b/assets/i18n/ru.json @@ -22,8 +22,8 @@ "tooltip.extensions": "Посмотрите расширения в LNbits", "tooltip.store": "Посетите веб‑магазин LNbits", "tooltip.github": "Открыть репозиторий", - "hero.title": "Самый мощный набор инструментов для биткоина в мире.", - "hero.subtitle": "Запускайте для себя, для других или как часть стека.", + "hero.title": "Самый мощный в мире набор платёжных инструментов.", + "hero.subtitle": "Принимайте платежи. Используйте/создавайте расширения. Интегрируйте в свой стек.", "hero.slide1.title": "Система пользователей/кошельков", "hero.slide1.subtitle": "Полностью адаптивный веб‑кошелек
", "hero.slide1.time": "(43 сек)", @@ -40,14 +40,22 @@ "products.saas.bullet1": "Просто", "products.saas.bullet2": "Полностью управляется", "products.saas.bullet3": "99,9% доступности", + "products.saas.bullet4": "Резервные копии", "products.box.title": "LNbits Box", "products.box.bullet1": "Просто", "products.box.bullet2": "Работает локально", "products.box.bullet3": "Оборудование plug & play", - "products.selfhost.title": "Запустите сами", - "products.selfhost.bullet1": "Для продвинутых", - "products.selfhost.bullet2": "Запускайте где угодно", - "products.selfhost.bullet3": "Полный контроль", + "products.box.bullet4": "На базе NixOS", + "download.title": "Начните принимать платежи за считанные минуты.", + "download.button": "Скачать {format}", + "download.choose": "Выбрать загрузку", + "download.select": "Выберите операционную систему", + "download.source": "Собрать из исходного кода", + "download.releases": "Посмотреть релизы", + "download.fallback": "Доступные установщики можно найти в релизах на GitHub.", + "download.unavailable": "Этот установщик пока недоступен. Посмотрите релизы или соберите из исходного кода.", + "download.preview": "Предварительная версия", + "contributors.open_source": "Полностью бесплатно и с открытым исходным кодом", "contributors.label": "Участники", "features.title": "Ваше приложение «всё‑в‑одном» для платежей.", "features.lead": "
LNbits — модульная платформа платежей: кошелек, магазин приложений и движок автоматизации в одном.", diff --git a/assets/i18n/zh.json b/assets/i18n/zh.json index 98087c4..4a69c07 100644 --- a/assets/i18n/zh.json +++ b/assets/i18n/zh.json @@ -22,8 +22,8 @@ "tooltip.extensions": "查看 LNbits 的扩展", "tooltip.store": "访问 LNbits 网店", "tooltip.github": "查看仓库", - "hero.title": "全球最强大的比特币工具套件。", - "hero.subtitle": "为你自己、为他人,或作为技术栈的一部分运行。", + "hero.title": "全球最强大的支付套件。", + "hero.subtitle": "接受付款。使用/构建扩展。集成到你的技术栈。", "hero.slide1.title": "用户/钱包系统", "hero.slide1.subtitle": "完全响应式网页钱包
", "hero.slide1.time": "(43 秒)", @@ -40,14 +40,22 @@ "products.saas.bullet1": "简单", "products.saas.bullet2": "全托管", "products.saas.bullet3": "99.9% 在线率", + "products.saas.bullet4": "备份", "products.box.title": "LNbits Box", "products.box.bullet1": "简单", "products.box.bullet2": "本地运行", "products.box.bullet3": "即插即用硬件", - "products.selfhost.title": "自行运行", - "products.selfhost.bullet1": "高级", - "products.selfhost.bullet2": "可在任何地方运行", - "products.selfhost.bullet3": "完全控制", + "products.box.bullet4": "基于 NixOS", + "download.title": "几分钟内即可开始收款。", + "download.button": "下载 {format}", + "download.choose": "选择下载", + "download.select": "选择你的操作系统", + "download.source": "从源码构建", + "download.releases": "查看发布版本", + "download.fallback": "在 GitHub 发布页面查找可用的安装程序。", + "download.unavailable": "此安装程序暂不可用。请查看发布版本或从源码构建。", + "download.preview": "预发布版本", + "contributors.open_source": "完全免费且开源", "contributors.label": "贡献者", "features.title": "你的全能支付应用。", "features.lead": "
LNbits 是一个模块化支付平台——钱包、应用商店和自动化引擎三合一。", diff --git a/assets/js/download.js b/assets/js/download.js new file mode 100644 index 0000000..aa939f5 --- /dev/null +++ b/assets/js/download.js @@ -0,0 +1,114 @@ +window.addEventListener("DOMContentLoaded", () => { + const link = document.getElementById("ln-download-link"); + const label = document.getElementById("ln-download-label"); + const status = document.getElementById("ln-download-status"); + const options = Array.from(document.querySelectorAll("[data-download]")); + if (!link || !label || !status) return; + + const releasesUrl = "https://github.com/lnbits/lnbits/releases"; + const formats = { linux: "AppImage", windows: "EXE", mac: "DMG" }; + const assets = {}; + const platform = navigator.userAgentData?.platform || navigator.platform || ""; + const mobile = + /Android|iPhone|iPad|iPod/i.test(navigator.userAgent) || + (/Mac/i.test(platform) && navigator.maxTouchPoints > 1); + let selected = null; + if (!mobile) { + if (/Win/i.test(platform)) selected = "windows"; + else if (/Mac/i.test(platform)) selected = "mac"; + else if (/Linux/i.test(platform)) selected = "linux"; + } + let state = "loading"; + + // The label depends on the selection as well as the current language. + label.removeAttribute("data-i18n"); + + function t(key, fallback) { + return window.LNbitsI18n?.t(key) || fallback; + } + + function render() { + const asset = assets[selected]; + link.href = asset?.browser_download_url || releasesUrl; + const unavailable = selected && state === "ready" && !asset; + + if (!selected) { + label.textContent = t("download.choose", "Choose download"); + } else if (unavailable) { + label.textContent = t("download.releases", "View releases"); + } else { + label.textContent = t("download.button", "Download {format}").replace( + "{format}", formats[selected] + ); + } + + status.textContent = ""; + if (state === "error") { + status.textContent = t("download.fallback", "Find available installers on GitHub releases."); + } else if (unavailable) { + status.textContent = t( + "download.unavailable", + "This installer is not available yet. Check releases or build from source." + ); + } else if (asset?.prerelease) { + status.textContent = t("download.preview", "Pre-release"); + } + + options.forEach((option) => { + const key = option.dataset.download; + option.href = assets[key]?.browser_download_url || releasesUrl; + option.classList.toggle("active", key === selected); + if (key === selected) option.setAttribute("aria-current", "true"); + else option.removeAttribute("aria-current"); + }); + } + + options.forEach((option) => { + option.addEventListener("click", (event) => { + if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return; + event.preventDefault(); + selected = option.dataset.download; + render(); + link.focus(); + }); + }); + window.LNbitsI18n?.onChange(render); + render(); + + // Resolve versioned filenames from published releases, preferring stable builds. + // Some releases have no installers, so inspect recent releases per format. + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), 8000); + fetch("https://api.github.com/repos/lnbits/lnbits/releases?per_page=10", { + signal: controller.signal, + headers: { Accept: "application/vnd.github+json" } + }) + .then((response) => { + if (!response.ok) throw new Error("Could not load releases"); + return response.json(); + }) + .then((releases) => { + if (!Array.isArray(releases)) throw new Error("Invalid releases"); + const published = releases.filter((release) => !release.draft); + const ordered = published.filter((release) => !release.prerelease) + .concat(published.filter((release) => release.prerelease)); + Object.entries(formats).forEach(([key, format]) => { + for (const release of ordered) { + const asset = (release.assets || []).find((candidate) => + candidate.name?.toLowerCase().endsWith("." + format.toLowerCase()) && + candidate.browser_download_url?.startsWith(releasesUrl + "/download/") + ); + if (asset) { + assets[key] = { ...asset, prerelease: release.prerelease }; + break; + } + } + }); + state = "ready"; + }) + .catch(() => { state = "error"; }) + .finally(() => { + clearTimeout(timeout); + render(); + }); +}); diff --git a/assets/js/landing.js b/assets/js/landing.js index a8aa8f2..d1b696d 100644 --- a/assets/js/landing.js +++ b/assets/js/landing.js @@ -23,8 +23,8 @@ window.addEventListener("DOMContentLoaded", () => { } function fitHeroText() { - fitElement(title, "--ln-hero-title-size", 57.6, 36); - fitElement(desc, "--ln-hero-desc-size", 48, 28); + fitElement(title, "--ln-hero-title-size", 64, 36); + fitElement(desc, "--ln-hero-desc-size", 40, 20); } fitHeroText(); diff --git a/index.html b/index.html index 4c47a39..67af01a 100644 --- a/index.html +++ b/index.html @@ -28,7 +28,6 @@ - @@ -218,94 +217,112 @@

- The world's most powerful suite of bitcoin tools. + The world's most powerful payment suite.

- Run for yourself, for others, or as part of a stack. + Take payments. Use/build extensions. Integrate into your stack.

-
@@ -316,7 +333,11 @@

-
Contributors
+
+ Completely free and open-source + + Contributors +
@@ -677,6 +698,7 @@

+