diff --git a/website/src/app/playground/page.tsx b/website/src/app/playground/page.tsx index 342efe5c..9d3d751f 100644 --- a/website/src/app/playground/page.tsx +++ b/website/src/app/playground/page.tsx @@ -2,7 +2,7 @@ import dynamic from "next/dynamic"; import React, { useEffect, useState } from "react"; -import { Scroll, Info, Save } from "lucide-react"; +import { Scroll, Info, Save, Monitor, AlertCircle } from "lucide-react"; import { Button } from "@/components/ui/button"; import { ResizableHandle, @@ -166,7 +166,47 @@ const RightPanelIcon: React.FC<{ isActive: boolean }> = ({ isActive }) => ( ); +const MobileWarning: React.FC = () => ( +
+
+
+
+ +
+ +
+
+
+

+ Desktop Required +

+

+ DocETL requires a larger screen for the best experience. Please switch + to a desktop or laptop computer to access all features. +

+
+ Recommended minimum screen width: 768px +
+ +
+
+); + +const LoadingScreen: React.FC = () => ( +
+
Loading...
+
+); + const CodeEditorPipelineApp: React.FC = () => { + const [isLoading, setIsLoading] = useState(true); + const [isMobileView, setIsMobileView] = useState(false); const [isMounted, setIsMounted] = useState(false); const [showFileExplorer, setShowFileExplorer] = useState(true); const [showOutput, setShowOutput] = useState(true); @@ -176,10 +216,6 @@ const CodeEditorPipelineApp: React.FC = () => { const [showAPIKeysDialog, setShowAPIKeysDialog] = useState(false); const { theme, setTheme } = useTheme(); - useEffect(() => { - setIsMounted(true); - }, []); - const { currentFile, setCurrentFile, @@ -194,12 +230,27 @@ const CodeEditorPipelineApp: React.FC = () => { } = usePipelineContext(); useEffect(() => { - const savedNamespace = localStorage.getItem(localStorageKeys.NAMESPACE_KEY); - if (!savedNamespace) { - setShowNamespaceDialog(true); - } + const checkScreenSize = () => { + const isMobile = window.innerWidth < 768; + setIsMobileView(isMobile); + setIsLoading(false); + }; + + checkScreenSize(); + setIsMounted(true); + window.addEventListener("resize", checkScreenSize); + + return () => window.removeEventListener("resize", checkScreenSize); }, []); + if (isLoading) { + return ; + } + + if (isMobileView) { + return ; + } + const handleSaveAs = async () => { try { // Collect all localStorage data