website: file transfer page (#6644)

* add implementation plan

* website: remove unnecessary libsodium direct dependency from file page plan

* website: update file page plan for async encryption, tailwind, no worker

* add product plan

* update product plan based on the feedback

* remove implementation details from product plan

* update product plan

* add updated implementation plan

* website: add build infrastructure for /file route

* website: fix card click and overlay hash handling for /file page

* website: add /file page with XFTP file transfer and protocol overlay

* website: redesign /file page layout and styling

* fix(website): scope hero h1/h2 font overrides to .hero-section-1

* fix(website): fix /file overlay diagram scaling on short viewports

* style(website): match /file page top padding with /directory

* website: remove file page in navbar

* website: switch xftp-web to official one

* website: fix web.sh

* update texts

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
This commit is contained in:
sh
2026-03-09 16:22:39 +00:00
committed by GitHub
co-authored by Evgeny Poberezkin
parent 2475a2163a
commit ac62ba4892
16 changed files with 1445 additions and 9 deletions
+2 -2
View File
@@ -130,7 +130,7 @@ if (isMobile.iOS) {
}
function clickHandler(e) {
if (e.target.closest('.card')) {
if (e.target.closest('.card') && !e.target.closest('[data-xftp-app]')) {
e.target.closest('.card').classList.toggle('card-active');
e.target.closest('.card').classList.toggle('no-hover');
}
@@ -182,7 +182,7 @@ function openOverlay() {
if (hash) {
const id = hash.split('#')[1];
const el = document.getElementById(id)
if (el.classList.contains('overlay')) {
if (el && el.classList.contains('overlay')) {
const scrollTo = el.getAttribute('data-scroll-to')
if (scrollTo) {
const scrollToEl = document.getElementById(scrollTo)