Graphical PDS migrator for AT Protocol

mobile

Changed files
+24 -18
components
islands
routes
+14 -14
islands/AirportSign.tsx components/AirportSign.tsx
···
export default function AirportSign() {
return (
-
<div class="relative inline-block mb-12">
+
<div class="relative inline-block mb-8 sm:mb-12">
{/* Left Pole */}
-
<div class="absolute left-8 -top-24 w-4 h-24 bg-gradient-to-r from-slate-800 via-slate-600 to-slate-800 rounded-t-lg">
+
<div class="absolute left-4 sm:left-8 -top-16 sm:-top-24 w-3 sm:w-4 h-16 sm:h-24 bg-gradient-to-r from-slate-800 via-slate-600 to-slate-800 rounded-t-lg">
</div>
{/* Right Pole */}
-
<div class="absolute right-8 -top-24 w-4 h-24 bg-gradient-to-r from-slate-800 via-slate-600 to-slate-800 rounded-t-lg">
+
<div class="absolute right-4 sm:right-8 -top-16 sm:-top-24 w-3 sm:w-4 h-16 sm:h-24 bg-gradient-to-r from-slate-800 via-slate-600 to-slate-800 rounded-t-lg">
</div>
{/* Display Board */}
-
<div class="relative bg-gradient-to-b from-slate-800 to-slate-900 p-1 rounded-lg shadow-[0_2px_10px_rgba(0,0,0,0.3)]">
+
<div class="relative bg-gradient-to-b from-slate-800 to-slate-900 p-0.5 sm:p-1 rounded-lg shadow-[0_2px_10px_rgba(0,0,0,0.3)]">
{/* Metallic Frame */}
-
<div class="bg-gradient-to-b from-slate-600 via-slate-700 to-slate-800 p-2 rounded-[6px]">
+
<div class="bg-gradient-to-b from-slate-600 via-slate-700 to-slate-800 p-1 sm:p-2 rounded-[6px]">
{/* Inner Frame */}
-
<div class="bg-black px-4 py-0.5 rounded-[4px] relative overflow-hidden">
+
<div class="bg-black px-2 sm:px-4 py-0.5 rounded-[4px] relative overflow-hidden">
{/* Screen Background with Effects */}
<div class="absolute inset-0 bg-[#0a0a2f]">
{/* Scan lines */}
···
</div>
{/* Display Board Text */}
-
<div className="relative flex justify-center items-center py-1 sm:py-2 pb-2 sm:pb-4 px-2 sm:px-4">
+
<div className="relative flex justify-center items-center py-0.5 sm:py-2 pb-1 sm:pb-4 px-1 sm:px-4">
<div className="relative text-center">
-
<span className="font-mono text-[2em] sm:text-[3em] font-semibold tracking-[0.12em] leading-[0.9] text-white
+
<span className="font-mono text-[1.5em] sm:text-[2em] md:text-[3em] font-semibold tracking-[0.12em] leading-[0.9] text-white
[text-shadow:0_0_20px_rgba(255,255,255,0.2),0_0_40px_rgba(255,255,255,0.1)]
relative z-10">
ATP INTERNECTIONAL AIRPORT
</span>
{/* Text glow effect */}
<div className="absolute inset-0 blur-[2px] opacity-50">
-
<span className="font-mono text-[2em] sm:text-[3em] font-semibold tracking-[0.12em] leading-[0.9] text-white">
+
<span className="font-mono text-[1.5em] sm:text-[2em] md:text-[3em] font-semibold tracking-[0.12em] leading-[0.9] text-white">
ATP INTERNECTIONAL AIRPORT
</span>
</div>
···
</div>
</div>
-
{/* Under Construction Extension BELOW the sign, perfectly matching main sign frame, no outline or padding on top */}
+
{/* Under Construction Extension */}
<div className="absolute left-1/2 top-full -translate-x-1/2">
-
<div className="bg-gradient-to-b from-slate-800 to-slate-900 pb-1 px-1 rounded-b-lg rounded-t-none shadow-[0_2px_10px_rgba(0,0,0,0.3)] border-t-0">
-
<div className="bg-gradient-to-b from-slate-600 via-slate-700 to-slate-800 pb-2 px-2 rounded-b-[6px] rounded-t-none border-t-0">
-
<div className="bg-black px-4 pt-0 pb-0.5 rounded-b-[4px] rounded-t-none border-t-0">
-
<span className="font-mono text-sm font-medium tracking-wider text-yellow-400 [text-shadow:0_0_10px_rgba(255,255,0,0.3)] animate-pulse">
+
<div className="bg-gradient-to-b from-slate-800 to-slate-900 pb-0.5 sm:pb-1 px-0.5 sm:px-1 rounded-b-lg rounded-t-none shadow-[0_2px_10px_rgba(0,0,0,0.3)] border-t-0">
+
<div className="bg-gradient-to-b from-slate-600 via-slate-700 to-slate-800 pb-1 sm:pb-2 px-1 sm:px-2 rounded-b-[6px] rounded-t-none border-t-0">
+
<div className="bg-black px-2 sm:px-4 pt-0 pb-0.5 rounded-b-[4px] rounded-t-none border-t-0">
+
<span className="font-mono text-xs sm:text-sm font-medium tracking-wider text-yellow-400 [text-shadow:0_0_10px_rgba(255,255,0,0.3)] animate-pulse">
UNDER CONSTRUCTION
</span>
</div>
+1 -1
islands/Header.tsx
···
};
return (
-
<header className="bg-white dark:bg-slate-900 text-slate-900 dark:text-white relative z-10 border-b border-slate-200 dark:border-slate-800">
+
<header className="hidden sm:block bg-white dark:bg-slate-900 text-slate-900 dark:text-white relative z-10 border-b border-slate-200 dark:border-slate-800">
<div className="max-w-7xl mx-auto px-4">
<div className="flex items-center justify-between py-4">
{/* Home Link */}
+9 -3
routes/index.tsx
···
import Ticket from "../islands/Ticket.tsx";
-
import AirportSign from "../islands/AirportSign.tsx";
+
import AirportSign from "../components/AirportSign.tsx";
import SocialLinks from "../islands/SocialLinks.tsx";
import { Button } from "../components/Button.tsx";
···
<Button
href="/login"
color="blue"
-
label="BEGIN YOUR JOURNEY"
+
label="MOBILE NOT SUPPORTED"
+
className="opacity-50 cursor-not-allowed sm:opacity-100 sm:cursor-pointer"
+
onClick={(e: MouseEvent) => {
+
if (window.innerWidth < 640) {
+
e.preventDefault();
+
}
+
}}
/>
</div>
-
<p class="font-mono text-lg sm:text-xl mb-4 mt-4 sm:mb-6 mt-0 text-center text-gray-600 dark:text-gray-300">
+
<p class="font-mono text-lg sm:text-xl mb-4 mt-4 sm:mb-6 text-center text-gray-600 dark:text-gray-300">
Airport is made with love by <a class="text-blue-500 hover:underline" href="https://bsky.app/profile/knotbin.com">Roscoe</a> for <a class="text-blue-500 hover:underline" href="https://sprk.so">Spark</a>, a new short-video platform for AT Protocol.
</p>
<SocialLinks />