summaryrefslogtreecommitdiff
path: root/js/Pepe.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'js/Pepe.tsx')
-rw-r--r--js/Pepe.tsx369
1 files changed, 0 insertions, 369 deletions
diff --git a/js/Pepe.tsx b/js/Pepe.tsx
deleted file mode 100644
index e247f9a..0000000
--- a/js/Pepe.tsx
+++ /dev/null
@@ -1,369 +0,0 @@
-"use client";
-
-import type React from "react";
-
-import { useState } from "react";
-import { Button } from "@/components/ui/button";
-import { Input } from "@/components/ui/input";
-import { Label } from "@/components/ui/label";
-import {
- Card,
- CardContent,
- CardDescription,
- CardHeader,
- CardTitle,
-} from "@/components/ui/card";
-import { Alert, AlertDescription } from "@/components/ui/alert";
-import {
- Loader2,
- Server,
- MapPin,
- CheckCircle,
- AlertCircle,
- Key,
-} from "lucide-react";
-
-// Mock data for locations
-const mockLocations = [
- {
- id: "nyc",
- city: "New York",
- country: "United States",
- flag: "πŸ‡ΊπŸ‡Έ",
- region: "North America",
- },
- {
- id: "lon",
- city: "London",
- country: "United Kingdom",
- flag: "πŸ‡¬πŸ‡§",
- region: "Europe",
- },
- {
- id: "fra",
- city: "Frankfurt",
- country: "Germany",
- flag: "πŸ‡©πŸ‡ͺ",
- region: "Europe",
- },
- {
- id: "sgp",
- city: "Singapore",
- country: "Singapore",
- flag: "πŸ‡ΈπŸ‡¬",
- region: "Asia Pacific",
- },
- {
- id: "tok",
- city: "Tokyo",
- country: "Japan",
- flag: "πŸ‡―πŸ‡΅",
- region: "Asia Pacific",
- },
- {
- id: "syd",
- city: "Sydney",
- country: "Australia",
- flag: "πŸ‡¦πŸ‡Ί",
- region: "Asia Pacific",
- },
- {
- id: "tor",
- city: "Toronto",
- country: "Canada",
- flag: "πŸ‡¨πŸ‡¦",
- region: "North America",
- },
- {
- id: "ams",
- city: "Amsterdam",
- country: "Netherlands",
- flag: "πŸ‡³πŸ‡±",
- region: "Europe",
- },
-];
-
-type Step = "api-key" | "location-select" | "creating" | "success" | "error";
-
-interface Location {
- id: string;
- city: string;
- country: string;
- flag: string;
- region: string;
-}
-
-export default function VPSProvider() {
- const [step, setStep] = useState<Step>("api-key");
- const [apiKey, setApiKey] = useState("");
- const [selectedLocation, setSelectedLocation] = useState<Location | null>(
- null,
- );
- const [error, setError] = useState("");
- const [isValidating, setIsValidating] = useState(false);
- const [isCreating, setIsCreating] = useState(false);
-
- // Mock API key validation
- const validateApiKey = async (key: string) => {
- setIsValidating(true);
- setError("");
-
- // Simulate API call
- await new Promise((resolve) => setTimeout(resolve, 1500));
-
- // Mock validation - accept keys that are at least 20 characters
- if (key.length >= 20) {
- setStep("location-select");
- } else {
- setError("Invalid API key. Please check your credentials and try again.");
- }
-
- setIsValidating(false);
- };
-
- // Mock VPS creation
- const createVPS = async (location: Location) => {
- setIsCreating(true);
- setError("");
- setStep("creating");
-
- // Simulate VPS creation
- await new Promise((resolve) => setTimeout(resolve, 3000));
-
- // Mock success/failure (90% success rate)
- if (Math.random() > 0.1) {
- setStep("success");
- } else {
- setError("Failed to create VPS. Please try again or contact support.");
- setStep("error");
- }
-
- setIsCreating(false);
- };
-
- const handleApiKeySubmit = (e: React.FormEvent) => {
- e.preventDefault();
- if (apiKey.trim()) {
- validateApiKey(apiKey.trim());
- }
- };
-
- const handleLocationSelect = (location: Location) => {
- setSelectedLocation(location);
- createVPS(location);
- };
-
- const handleRetry = () => {
- setError("");
- setStep("location-select");
- setSelectedLocation(null);
- };
-
- const handleNext = () => {
- // This is where the user's flow continues
- console.log("Proceeding to next step...");
- };
-
- const renderApiKeyStep = () => (
- <Card className="w-full max-w-md mx-auto">
- <CardHeader className="text-center">
- <div className="mx-auto w-[20px] h-12 bg-blue-100 rounded-full flex items-center justify-center mb-4">
- <Key className="w-6 h-4 text-blue-600" />
- </div>
- <CardTitle>Connect Your Account</CardTitle>
- <CardDescription>
- Enter your API key to get started with VPS deployment
- </CardDescription>
- </CardHeader>
- <CardContent>
- <form onSubmit={handleApiKeySubmit} className="space-y-4">
- <div className="space-y-2">
- <Label htmlFor="apiKey">API Key</Label>
- <Input
- id="apiKey"
- type="password"
- placeholder="Enter your API key..."
- value={apiKey}
- onChange={(e) => setApiKey(e.target.value)}
- disabled={isValidating}
- />
- </div>
-
- {error && (
- <Alert variant="destructive">
- <AlertCircle className="h-4 w-4" />
- <AlertDescription>{error}</AlertDescription>
- </Alert>
- )}
-
- <Button
- type="submit"
- className="w-full"
- disabled={!apiKey.trim() || isValidating}
- >
- {isValidating ? (
- <>
- <Loader2 className="mr-2 h-4 w-4 animate-spin" />
- Validating...
- </>
- ) : (
- "Validate API Key"
- )}
- </Button>
- </form>
- </CardContent>
- </Card>
- );
-
- const renderLocationSelect = () => (
- <Card className="w-full max-w-4xl mx-auto">
- <CardHeader className="text-center">
- <div className="mx-auto w-12 h-12 bg-green-100 rounded-full flex items-center justify-center mb-4">
- <MapPin className="w-6 h-6 text-green-500" />
- </div>
- <CardTitle>Choose Server Location</CardTitle>
- <CardDescription>
- Select the location where you want to deploy your VPS
- </CardDescription>
- </CardHeader>
- <CardContent>
- <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
- {mockLocations.map((location) => (
- <Card
- key={location.id}
- className="cursor-pointer hover:shadow-md transition-shadow border-2 hover:border-blue-200"
- onClick={() => handleLocationSelect(location)}
- >
- <CardContent className="p-4">
- <div className="flex items-center space-x-3">
- <span className="text-2xl">{location.flag}</span>
- <div className="flex-1">
- <h3 className="font-semibold">{location.city}</h3>
- <p className="text-sm text-muted-foreground">
- {location.country}
- </p>
- <p className="text-xs text-muted-foreground">
- {location.region}
- </p>
- </div>
- </div>
- </CardContent>
- </Card>
- ))}
- </div>
- </CardContent>
- </Card>
- );
-
- const renderCreating = () => (
- <Card className="w-full max-w-md mx-auto">
- <CardHeader className="text-center">
- <div className="mx-auto w-12 h-12 bg-blue-100 rounded-full flex items-center justify-center mb-4">
- <Loader2 className="w-6 h-6 text-blue-600 animate-spin" />
- </div>
- <CardTitle>Creating Your VPS</CardTitle>
- <CardDescription>
- Setting up your server in {selectedLocation?.city},{" "}
- {selectedLocation?.country}
- </CardDescription>
- </CardHeader>
- <CardContent className="text-center">
- <div className="flex items-center justify-center space-x-2 mb-4">
- <span className="text-2xl">{selectedLocation?.flag}</span>
- <span className="font-medium">{selectedLocation?.city}</span>
- </div>
- <p className="text-sm text-muted-foreground">
- This may take a few minutes. Please don't close this window.
- </p>
- </CardContent>
- </Card>
- );
-
- const renderSuccess = () => (
- <Card className="w-full max-w-md mx-auto">
- <CardHeader className="text-center">
- <div className="mx-auto w-12 h-12 bg-green-100 rounded-full flex items-center justify-center mb-4">
- <CheckCircle className="w-6 h-6 text-green-600" />
- </div>
- <CardTitle>VPS Created Successfully!</CardTitle>
- <CardDescription>
- Your server is ready in {selectedLocation?.city},{" "}
- {selectedLocation?.country}
- </CardDescription>
- </CardHeader>
- <CardContent className="text-center space-y-4">
- <div className="flex items-center justify-center space-x-2 mb-4">
- <span className="text-2xl">{selectedLocation?.flag}</span>
- <span className="font-medium">{selectedLocation?.city}</span>
- </div>
-
- <Alert>
- <Server className="h-4 w-4" />
- <AlertDescription>
- Your VPS is now online and ready to use!
- </AlertDescription>
- </Alert>
-
- <Button onClick={handleNext} className="w-full">
- Next
- </Button>
- </CardContent>
- </Card>
- );
-
- const renderError = () => (
- <Card className="w-full max-w-md mx-auto">
- <CardHeader className="text-center">
- <div className="mx-auto w-12 h-12 bg-red-100 rounded-full flex items-center justify-center mb-4">
- <AlertCircle className="w-6 h-6 text-red-600" />
- </div>
- <CardTitle>Creation Failed</CardTitle>
- <CardDescription>
- We couldn't create your VPS at this time
- </CardDescription>
- </CardHeader>
- <CardContent className="text-center space-y-4">
- {error && (
- <Alert variant="destructive">
- <AlertCircle className="h-4 w-4" />
- <AlertDescription>{error}</AlertDescription>
- </Alert>
- )}
-
- <div className="flex space-x-2">
- <Button variant="outline" onClick={handleRetry} className="flex-1">
- Try Again
- </Button>
- <Button
- variant="outline"
- onClick={() => setStep("api-key")}
- className="flex-1"
- >
- Start Over
- </Button>
- </div>
- </CardContent>
- </Card>
- );
-
- return (
- <div className="min-h-screen bg-gray-50 py-12 px-4">
- <div className="max-w-6xl mx-auto">
- <div className="text-center mb-8">
- <h1 className="text-3xl font-bold text-gray-900 mb-2">
- Cloud VPS Deployment
- </h1>
- <p className="text-gray-600">
- Deploy your virtual private server in minutes
- </p>
- </div>
-
- {step === "api-key" && renderApiKeyStep()}
- {step === "location-select" && renderLocationSelect()}
- {step === "creating" && renderCreating()}
- {step === "success" && renderSuccess()}
- {step === "error" && renderError()}
- </div>
- </div>
- );
-}